@syncfusion/ej2-filemanager 20.3.47 → 20.3.56
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/CHANGELOG.md +10 -0
- 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 +20 -2
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +20 -2
- 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 +16 -16
- package/src/file-manager/layout/details-view.d.ts +2 -0
- package/src/file-manager/layout/details-view.js +20 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../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/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/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } 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 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 */\n// eslint-disable-next-line\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 = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 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 = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], 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 (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.items });\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\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 + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + 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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\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 * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), 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);\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 }\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 * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\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 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 */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 srcData = 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 ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return 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 */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\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 * 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 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 }\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 }\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 /* 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\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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","import { Ajax, createElement, select, extend } 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, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\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, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\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 parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\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 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 // eslint-disable-next-line\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 if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\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')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\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 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(\n// eslint-disable-next-line\nparent, 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 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 (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 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 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/* 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 if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\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/* 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 * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\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 = result.files[0];\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, getParentPath(parent.path));\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/* 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 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/**\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 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/**\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 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/**\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(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\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 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/* 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 // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\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 });\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, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\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 * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\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// eslint:disable-next-line\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 */\n// eslint-disable-next-line\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/* istanbul ignore next */\n// eslint:disable-next-line\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 * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\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 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 (e) {\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 (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).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 (e) {\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/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\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') ? getParentPath(parent.path) : 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 || (parent.currentItemText.lastIndexOf('.') === -1))) {\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","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 toolbarItems = ['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(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\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 } 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>', 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', template: '<span class=\"e-fe-size\">${size}</span>'\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, \"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 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 { 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 } 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.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 this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\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.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\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.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\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.parent.isMobile && 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: true,\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 // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\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 // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\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.adjustHeight = function () {\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 this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\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 textEle.innerHTML = txt.substr(0, txt.length - type.length);\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.allowMultiSelection) {\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 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 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 // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\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 };\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 this.parent.renamedItem = null;\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 this.adjustHeight();\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 // eslint-disable-next-line\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 || this.parent.path === getDirectoryPath(this.parent, args)) {\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 'height':\n this.adjustHeight();\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 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 };\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 if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.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.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 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 this.clearSelection();\n }\n if (!isNOU(item)) {\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 // eslint-disable-next-line\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 // eslint:disable-next-line\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 // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\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 this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\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 }\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 (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 // eslint-disable-next-line\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.allowMultiSelection) {\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 if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\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 // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, 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 // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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') + ' ' + args.cwd.name;\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.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 () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\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 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 // eslint:disable-next-line\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 // eslint:disable-next-line\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 // eslint:disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 /* istanbul ignore next */\n // eslint:disable-next-line\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 this.disabledItems.push('Paste');\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 this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\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 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 if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\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 // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint:disable-next-line\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 === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\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) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\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 }\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 /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\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 // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\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 };\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.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\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 } 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 { 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 } 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 // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\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 // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\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 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\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 uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\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 EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\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 // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\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 '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 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\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 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 refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\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 }\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 _super.prototype.destroy.call(this);\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 // eslint-disable-next-line\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)) {\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)) {\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 * 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 // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(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(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", 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('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 Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", 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, \"destroyed\", 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, \"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","import { 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.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 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 // eslint-disable-next-line\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 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 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + 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 });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\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 items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\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 itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\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 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 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 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 getLocaleText(this.parent, 'View') + '></button>'\n };\n break;\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 };\n break;\n }\n items.push(item);\n }\n return items;\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 if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\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) {\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 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 { 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 } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } 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.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 // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\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) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\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: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\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 // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !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 // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;\n this.previousSelected = this.treeObj.selectedNodes;\n if (!isNOU(this.parent) && !isNOU(this.parent.contextmenuModule)) {\n this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);\n }\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 // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\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.selectedNodes = [node.getAttribute('data-uid')];\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 }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\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 updatePath(args.node, this.parent.itemData[0], this.parent);\n if (previousPath !== this.parent.path) {\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\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 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 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 };\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.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 };\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 // eslint-disable-next-line\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)\n this.updateTree(args);\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.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.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 this.isRenameParent = true;\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 // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\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 // eslint-disable-next-line\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, '/');\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.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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 (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 // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? 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 // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 } 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/**\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.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 };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\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 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 beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\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.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 if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${_fm_modified}</div>' +\n '<span class=\"e-fe-size\">${size}</span>'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '<span class=\"e-fe-icon ${_fm_iconClass}\"></span>',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: '<span class=\"e-fe-icon e-fe-folder\"></span>'\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\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 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 textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\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 value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\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 // eslint-disable-next-line\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 }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\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 }\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 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 if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\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 }\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\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 }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\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 (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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling) {\n name = 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 // eslint-disable-next-line\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.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\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: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\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 || this.parent.path === getDirectoryPath(this.parent, args)) {\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 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 };\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 (len > 0) {\n // eslint-disable-next-line\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.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\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 // eslint-disable-next-line\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 };\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 };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\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 proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.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 = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.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.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\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 // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\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) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\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.addFocus(0);\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 }\n };\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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.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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","matched","getParents","ids","i","length","push","getPathId","pathNames","element","names","getPathNames","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","removeActive","parent","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","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","items","read","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","feParent","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","key","currFiles","feFiles","where","createEmptyElement","top","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","emptyEle","CLS.EMPTY_CONTENT","dragFile","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","eDiv","style","marginTop","getDirectories","events.isFile","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","substring","lastIndexOf","field","openSearchFolder","events.clearPathInit","selectedNode","originalPath","events.initialEnd","events.finalizeEnd","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","len","tempTarget","oldPath","newPath","getDirectoryPath","cwd","doPasteUpdate","operation","result","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","dropData","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","createVirtualDragElement","dragData","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dropHandler","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","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","setValue","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","root","generatePath","setDateObject","rootId","dirs","setNodeId","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","pop","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","events.renameEndParent","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","formattedString","intl","strArr","location","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","focusInput","bind","this","events.deleteInit","onDeleteSubmit","onReSubmit","inputEle","txt","showFileExtension","index","onFocusRenameInput","Internationalization","formatDate","modified","format","CLS.VALUE","str","keys","Object","objectToString","size","index_1","undefined","map","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","getOptions","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","changeOptions","extOptions","duplicateContent","extDialogObj","renameText","records","getDuplicateData","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","getExtOptions","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","_loop_1","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","toolbarItems","ToolbarSettings","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_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","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","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","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","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","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","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","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","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","CLS.DISPLAY_NONE","emptyList","CLS.LIST_PARENT","selectItems","activeEle","CLS.ACTIVE","adjustHeight","maxHeight","getItemCount","wireEvents","hideSpinner","checkItem","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","allowMultiSelection","checkElement","createCheckBox","firstElementChild","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","doSelection","ctrlKey","shiftKey","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.pathChanged","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","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","CLS.MULTI_SELECT","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","isVisible","liParent","liScrPos","scrollTop","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","getBoundingClientRect","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","isNullOrUndefined","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","getPropertyValue","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.TREE_ID","getRowObjectFromUID","selectRows","parseInt","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","layout","nameEle","menuClickArgs","sItems","events.downloadInit","openFileOnContextMenuClick","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","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","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","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","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","clientHeight","splitterAdjust","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","clearAll","fileData","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","currfolders","folders","setNextPath","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","disableToolbarItems","toolbarModule","enableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Event","NotifyPropertyChanges","Component","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","updateSortByButton","itemCount","itemTooltip","spanElement","tooltipText","prefixIcon","showTextOn","suffixIcon","CLS.ICON_CLEAR","overflow","align","onSelectionChanged","reRenderToolbar","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","parentID","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","_fm_icon","addNodes","expandNodeTarget","onPathDrag","selectResultNode","events.nodeExpand","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","obj","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","columns","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","detailsViewSettings","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","beforeCopy","load","focusModule","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","iWidth","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","selectedRowIndex","rData","onSortColumn","sortModule","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","firstChild","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","lastItemIndex","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","crtSrlPos","crtFocusIndex","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","check","getRecords","hasFilter","name_4","dRecords"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../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/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/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } 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 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 */\n// eslint-disable-next-line\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 = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 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 = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], 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 (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.items });\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\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 + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + 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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\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 * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), 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);\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 }\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 * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\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 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 */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 srcData = 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 ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return 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 */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\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 * 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 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 }\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 }\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 /* 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\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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","import { Ajax, createElement, select, extend } 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, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\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, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\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 parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\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 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 // eslint-disable-next-line\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 if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\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')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\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 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(\n// eslint-disable-next-line\nparent, 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 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 (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 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 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/* 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 if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\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/* 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 * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\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 = result.files[0];\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, getParentPath(parent.path));\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/* 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 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/**\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 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/**\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 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/**\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(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\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 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/* 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 // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\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 });\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, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\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 * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\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// eslint:disable-next-line\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 */\n// eslint-disable-next-line\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/* istanbul ignore next */\n// eslint:disable-next-line\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 * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\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 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 (e) {\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 (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).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 (e) {\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/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\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') ? getParentPath(parent.path) : 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 || (parent.currentItemText.lastIndexOf('.') === -1))) {\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","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 toolbarItems = ['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(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\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 } 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>', 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', template: '<span class=\"e-fe-size\">${size}</span>'\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, \"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 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 { 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 } 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.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 this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\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.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\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.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\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.parent.isMobile && 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: true,\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 // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\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 // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\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.adjustHeight = function () {\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 this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\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 textEle.innerHTML = txt.substr(0, txt.length - type.length);\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.allowMultiSelection) {\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 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 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 // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\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 };\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 this.parent.renamedItem = null;\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 this.adjustHeight();\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 // eslint-disable-next-line\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 || this.parent.path === getDirectoryPath(this.parent, args)) {\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 'height':\n this.adjustHeight();\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 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 };\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 if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.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.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 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 this.clearSelection();\n }\n if (!isNOU(item)) {\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 // eslint-disable-next-line\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 // eslint:disable-next-line\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 // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\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 this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\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 }\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 (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 // eslint-disable-next-line\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.allowMultiSelection) {\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 if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\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 // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, 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 // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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') + ' ' + args.cwd.name;\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.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 () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\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 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 // eslint:disable-next-line\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 // eslint:disable-next-line\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 // eslint:disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 /* istanbul ignore next */\n // eslint:disable-next-line\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 this.disabledItems.push('Paste');\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 this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\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 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 if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\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 // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint:disable-next-line\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 === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\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) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\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 }\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 /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\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 // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\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 };\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.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\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 } 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 { 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 } 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 // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\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 // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\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 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\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 uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\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 EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\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 // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\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 '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 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\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 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 refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\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 }\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 _super.prototype.destroy.call(this);\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 // eslint-disable-next-line\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)) {\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)) {\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 * 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 // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(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(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", 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('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 Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", 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, \"destroyed\", 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, \"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","import { 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.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 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 // eslint-disable-next-line\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 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 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + 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 });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\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 items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\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 itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\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 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 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 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 getLocaleText(this.parent, 'View') + '></button>'\n };\n break;\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 };\n break;\n }\n items.push(item);\n }\n return items;\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 if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\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) {\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 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 { 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 } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } 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.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 // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\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) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\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: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\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 // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !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 // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;\n this.previousSelected = this.treeObj.selectedNodes;\n if (!isNOU(this.parent) && !isNOU(this.parent.contextmenuModule)) {\n this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);\n }\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 // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\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.selectedNodes = [node.getAttribute('data-uid')];\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 }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\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 updatePath(args.node, this.parent.itemData[0], this.parent);\n if (previousPath !== this.parent.path) {\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\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 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 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 };\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.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 };\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 // eslint-disable-next-line\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)\n this.updateTree(args);\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.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.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 this.isRenameParent = true;\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 // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\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 // eslint-disable-next-line\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, '/');\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.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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 (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 // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? 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 // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 } 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/**\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.pasteOperation = false;\n this.uploadOperation = false;\n /* istanbul ignore next */\n // eslint:disable-next-line\n this.actionDivert = 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 };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\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 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 beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\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.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 if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${_fm_modified}</div>' +\n '<span class=\"e-fe-size\">${size}</span>'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '<span class=\"e-fe-icon ${_fm_iconClass}\"></span>',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: '<span class=\"e-fe-icon e-fe-folder\"></span>'\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\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 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 textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\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 value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\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 // eslint-disable-next-line\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 }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\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 }\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 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 if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\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 }\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\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 }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\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 (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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling) {\n name = 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 // eslint-disable-next-line\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.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\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: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\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 || this.parent.path === getDirectoryPath(this.parent, args)) {\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 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 };\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 (len > 0) {\n // eslint-disable-next-line\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.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\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 // eslint-disable-next-line\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 };\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 };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\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 proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.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 = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.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.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\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 DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\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) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\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 if (!this.actionDivert) {\n this.addHeaderFocus();\n this.actionDivert = true;\n }\n else {\n this.addFocus(0);\n this.actionDivert = false;\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 }\n };\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 () {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus = select('th.e-fe-grid-name', this.element);\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 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","matched","getParents","ids","i","length","push","getPathId","pathNames","element","names","getPathNames","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","removeActive","parent","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","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","items","read","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","feParent","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","key","currFiles","feFiles","where","createEmptyElement","top","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","emptyEle","CLS.EMPTY_CONTENT","dragFile","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","eDiv","style","marginTop","getDirectories","events.isFile","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","substring","lastIndexOf","field","openSearchFolder","events.clearPathInit","selectedNode","originalPath","events.initialEnd","events.finalizeEnd","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","len","tempTarget","oldPath","newPath","getDirectoryPath","cwd","doPasteUpdate","operation","result","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","dropData","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","createVirtualDragElement","dragData","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dropHandler","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","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","setValue","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","root","generatePath","setDateObject","rootId","dirs","setNodeId","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","pop","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","events.renameEndParent","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","formattedString","intl","strArr","location","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","focusInput","bind","this","events.deleteInit","onDeleteSubmit","onReSubmit","inputEle","txt","showFileExtension","index","onFocusRenameInput","Internationalization","formatDate","modified","format","CLS.VALUE","str","keys","Object","objectToString","size","index_1","undefined","map","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","getOptions","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","changeOptions","extOptions","duplicateContent","extDialogObj","renameText","records","getDuplicateData","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","getExtOptions","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","_loop_1","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","toolbarItems","ToolbarSettings","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_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","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","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","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","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","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","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","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","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","CLS.DISPLAY_NONE","emptyList","CLS.LIST_PARENT","selectItems","activeEle","CLS.ACTIVE","adjustHeight","maxHeight","getItemCount","wireEvents","hideSpinner","checkItem","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","allowMultiSelection","checkElement","createCheckBox","firstElementChild","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","doSelection","ctrlKey","shiftKey","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.pathChanged","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","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","CLS.MULTI_SELECT","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","isVisible","liParent","liScrPos","scrollTop","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","getBoundingClientRect","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","isNullOrUndefined","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","getPropertyValue","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.TREE_ID","getRowObjectFromUID","selectRows","parseInt","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","layout","nameEle","menuClickArgs","sItems","events.downloadInit","openFileOnContextMenuClick","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","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","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","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","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","clientHeight","splitterAdjust","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","clearAll","fileData","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","currfolders","folders","setNextPath","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","disableToolbarItems","toolbarModule","enableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Event","NotifyPropertyChanges","Component","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","updateSortByButton","itemCount","itemTooltip","spanElement","tooltipText","prefixIcon","showTextOn","suffixIcon","CLS.ICON_CLEAR","overflow","align","onSelectionChanged","reRenderToolbar","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","parentID","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","_fm_icon","addNodes","expandNodeTarget","onPathDrag","selectResultNode","events.nodeExpand","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","obj","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","actionDivert","Grid","Resize","Sort","VirtualScroll","checkNameWidth","columns","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","detailsViewSettings","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","beforeCopy","load","focusModule","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","iWidth","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","selectedRowIndex","rData","onSortColumn","sortModule","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","firstChild","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","lastItemIndex","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","crtSrlPos","crtFocusIndex","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","treeFocus","nameFocus","tabIndex","check","getRecords","hasFilter","name_4","dRecords"],"mappings":"o6BAiBA,SAAgBA,EAAWC,EAAMC,EAAMC,GACnC,IAAIC,EAAOC,WAAS,OAAQH,GACxBI,EAAKL,EAAKM,aAAa,WACvBC,EAAUC,oBAAMH,GAAMF,EAAOE,EACjCH,EAASO,eAAgBC,KAAMC,EAAQX,EAAMO,EAASL,EAASU,SAAU,GACzEV,EAASW,OA4Bb,SAA0Bb,GAGtB,IAAK,IAFDc,EAAUC,EAAWf,EAAMA,EAAKM,aAAa,aAAa,GAC1DU,KACKC,EAAIH,EAAQI,OAAS,EAAGD,GAAK,EAAGA,IACrCD,EAAIG,KAAKL,EAAQG,IAErB,OAAOD,EAlCWI,CAAUpB,GAC5BE,EAASmB,UA2Cb,SAA6BC,EAASnB,GAGlC,IAAK,IAFDW,EAAUC,EAAWO,EAASnB,GAAM,GACpCoB,KACKN,EAAIH,EAAQI,OAAS,EAAGD,GAAK,EAAGA,IACrCM,EAAMJ,KAAKL,EAAQG,IAEvB,OAAOM,EAjDcC,CAAaxB,EAAMG,GAW5C,SAAgBQ,EAAQW,EAASnB,EAAMS,GAInC,IAAK,IAHDE,EAAUC,EAAWO,EAASnB,GAAM,EAAOS,GAC3CF,EAAOE,EAAQ,GAAK,IAEfK,EADCH,EAAQI,QAAUN,EAAQ,EAAI,GACtBK,GAAK,EAAGA,IACtBP,GAAQI,EAAQG,GAAK,IAEzB,OAAOP,EA2CX,SAAgBK,EAAWO,EAASnB,EAAMsB,EAAMb,GAG5C,IAFA,IAAIE,GAAWX,GACXuB,EAAKJ,EAAQK,YACTnB,oBAAMkB,IAAK,CACf,GAAIE,UAAQF,EAAI,IAAMG,IAAgB,CAClC,IAAIC,EAAaL,EAAOC,EAAGpB,aAAa,YAAeM,EAAQc,EAAGpB,aAAa,WAC3EyB,SAAO,IAAMC,GAAeN,GAAIO,YACpCnB,EAAQK,KAAKW,GAGjB,IADAJ,EAAKA,EAAGC,YACDO,UAAUC,SAASC,IACtB,MAGR,OAAOtB,EA2BX,SAAgBuB,EAAaC,GACrBA,EAAOC,QACPC,EAAWF,GACXA,EAAOG,iBACPH,EAAOI,iBACPJ,EAAOK,aAAc,EACrBL,EAAOM,OAAOC,QAWtB,SAAgBC,EAAcC,EAAQT,GAKlC,GAJAA,EAAOU,aAAc,EACrBV,EAAOI,iBACPJ,EAAOW,kBACPX,EAAOM,OAAOM,OACuB,IAAjCZ,EAAOW,eAAe/B,OACtB,OAAO,EAEXsB,EAAWF,GACX,IAAIa,EAAUb,EAAOW,eACO,mBAAxBX,EAAOc,aACPd,EAAOe,WAAaf,EAAO5B,KAG3B4B,EAAOe,WAAaC,EAAchB,EAAO5B,MAE7C,IAAIO,EAAI,EACR,GAAIkC,IACAI,EAAUjB,EAAQa,EAAQ,IACX,QAAXJ,GACA,KAAO9B,EAAIkC,EAAQjC,QACfsC,EAAQL,EAAQlC,IAChBA,IAQZ,IAJAA,EAAI,EACJqB,EAAOG,iBACPH,EAAOK,aAAc,EACrBL,EAAOM,OAAOa,OACPxC,EAAIqB,EAAOoB,cAAcxC,QAC5BoB,EAAOI,cAAcvB,KAAKmB,EAAOoB,cAAczC,IAC/CqB,EAAOG,cAActB,KAAKf,WAAS,OAAQkC,EAAOoB,cAAczC,KAChEA,IAEJ,IAA4D,KAAvDqB,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAgBvB,EAAOwB,aAC7C,mBAAxBxB,EAAOc,aAAmC,CAC1Cd,EAAOG,iBACPH,EAAOU,aAAc,EAErB,IADA,IAAIe,EAAM,EACHA,EAAMzB,EAAO0B,cAAc9C,QAC9BoB,EAAOG,cAActB,KAAKmB,EAAO0B,cAAcD,IAC/CA,IAGR,OAAO,EASX,SAAgBP,EAAQS,GACpBA,EAAM/B,UAAUgC,IAAIC,IAUxB,SAAgB3B,EAAWF,EAAQ8B,GAI/B,IAHA,IAAIjB,EAAYiB,EACZ9B,EAAOhB,QAAQ+C,iBAAiB,IAAMC,IADjBhC,EAAOhB,QAAQ+C,iBAAiB,IAAMF,IAE3DlD,EAAI,EACDA,EAAIkC,EAAQjC,QACfiC,EAAQlC,GAAGiB,UAAUqC,OAASH,EAAoBE,GAAXH,IACvClD,IAWR,SAAgBsC,EAAUjB,EAAQhB,GAC1BA,IACIA,EAAQY,UAAUC,SAASqC,IAC3BlC,EAAOc,aAAe,cAEjBqB,UAAQnD,EAAS,IAAMoD,IAC5BpC,EAAOc,aAAe,iBAGtBd,EAAOc,aAAe,kBAalC,SAAgBuB,EAAkBrC,EAAQuB,EAAOe,GAC7C,IAAIC,EAeJ,GAdqB,IAAjBhB,EAAM3C,QAAiBoB,EAAOwB,YAC9BxB,EAAOM,OAAOkC,IAAqBC,KAAMzC,IAGzCuC,EADqC,eAArCvC,EAAO0C,eAAeC,WACTpB,EAAQ,IAEqB,aAArCvB,EAAO0C,eAAeC,WACd,IAAMpB,EAGN,IAAMA,EAAQ,IAE/BvB,EAAOuC,WAAaA,EACpBvC,EAAO4C,UAAYC,EAAc7C,IAC7BuB,EAAM3C,OAAS,EAAG,CAClB,IAAIkE,EAAgB9C,EAAO0C,eAAeK,WACtCC,EAAchD,EAAOiD,gBACzBC,GAAOlD,EAAQsC,EAAiBa,GAAsBC,GAAepD,EAAO5B,KAAMmE,EAAYS,GAAcF,QAGvG9C,EAAOwB,WAUR6B,GAAOrD,EAAQmD,IATXnD,EAAOsD,iBACPtD,EAAOM,OAAO6C,IAAuBI,MAA2B,YAAnBvD,EAAOwD,QAAyBxD,EAAOyD,kBAAkBC,QAAQC,WAAa3D,EAAO4D,qBAAqBC,QACvJ7D,EAAOsD,iBAAkB,GAGzBQ,GAAK9D,EAAQsC,EAAiBa,GAAsBC,GAAepD,EAAO5B,MAgB1F,SAAgB2F,EAAa/D,EAAQgE,GACjChE,EAAOwD,QAAUxD,EAAOgE,KACxBhE,EAAO7B,eAAgB6F,KAAMA,IAAQ,IACsB,KAAvDhE,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAgBvB,EAAOwB,cACpExB,EAAOiE,oBAAsBjE,EAAO0B,eAExC,IAAIa,EAAa,GACbvC,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,QAC7CgB,EAAavC,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAE9DvB,EAAOsC,gBAAiB,EACxBD,EAAkBrC,EAAQuC,GAAY,GAW1C,SAAgB2B,EAAgBlE,EAAQhB,GACpC,IAAImF,EAAgB,GAChBnF,IAEImF,EADAhC,UAAQnD,EAAS,IAAMoF,GAAW,IAAMC,GAAc,KAAOC,IAC7C,cAEXnC,UAAQnD,EAAS,IAAMuF,IACZ,iBAEXvF,EAAQY,UAAUC,SAAS,cAChCb,EAAQY,UAAUC,SAAS,qBACX,iBAEXsC,UAAQnD,EAAS,wBACN,gBAGA,IAGxBgB,EAAOwE,aAAeL,EAU1B,SAAgBM,EAAQzE,GACpBA,EAAO4C,UAAYC,EAAc7C,IAC5B0E,GAAc1E,EAAO4C,SAAS,IAI/BkB,GAAK9D,EAAQ2E,GAAmB3E,EAAO5B,MAHvCwG,GAAmB5E,EAAQA,EAAO4C,SAAS,GAAIiC,IAavD,SAAgBC,EAAW9E,GACvB8D,GAAK9D,EAAQ+E,GAAgB/E,EAAO5B,MAUxC,SAAgByE,EAAc7C,GAC1B,OAAOlC,WAASkC,EAAOzB,OAAOyB,EAAOzB,OAAOK,OAAS,GAAIoB,EAAOgF,UASpE,SAAgBC,EAAUjF,GACjBQ,EAAc,OAAQR,KAIvBA,EAAOkF,WAAa,QAU5B,SAAgBC,EAASnF,GAChBQ,EAAc,MAAOR,KAItBA,EAAOC,OAAQ,EACfD,EAAOkF,WAAa,QAW5B,SAAgBE,EAASC,GAErB,IADavH,WAAS,SAAUuH,GAE5B,OAAOC,GAEX,IAKIC,EAAWzH,WAAS,OAAQuH,IAED,KAD/BE,EAAWA,EAASC,eACPC,QAAQ,OACjBF,EAAWA,EAASG,MAAM,KAAKC,KAAK,KAkBxC,OAfuC,KAXpB,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAW5EF,QAAQF,GACTK,IAE6B,KAbzB,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAa/CH,QAAQF,GACdM,IAE6B,KAfzB,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAe9DJ,QAAQF,GACdO,IAE6B,KAjBzB,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,MACrG,OAAQ,MAAO,MAAO,MAAO,OAgBZL,QAAQF,GACd,QAAUA,EAGV,qBAAuBA,EAc1C,SAAgBQ,EAAY/F,EAAQgG,GAChC,IACIC,EADAC,EAAUlG,EAAOmG,aAAaJ,YAAc/F,EAAOmG,aAAaJ,YAAc/F,EAAOmG,aAAaC,IAElGC,EAAWC,mBAAmBxI,WAAS,OAAQkI,IAC/CO,EAAQzI,WAAS,aAAckI,GACnC,GAAIhG,EAAO1B,MAAO,CACd,IAAIkI,EAAQ1I,WAAS,KAAMkI,GAC3BC,EAASC,EAAU,SAAWlG,EAAO5B,KAAO,OAASoI,OAMrDP,EAJM/H,oBAAMqI,GAIHL,EAAU,SAAWlG,EAAO5B,KAAOiI,EAHnCH,EAAU,SAAWI,mBAAmBC,EAAME,QAAQ,MAAO,MAAQJ,EAMlF,IAAIK,GACAC,aAAcX,GACdY,SAHJX,EAASA,EAAS,UAAY,IAAIY,MAAOC,UAAWC,YAMpD,OADA/G,EAAOgH,QAAQ,kBAAmBN,GAC3BA,EAAUE,SAarB,SAAgBK,EAAYjH,EAAQrC,EAAMS,GACtC,IAAI8I,EAAWpJ,WAASkC,EAAO1B,MAAQ,KAAO,OAAQX,GAAQ,IAC1D4I,EAAQzI,WAASkC,EAAO1B,MAAQ,WAAa,aAAcX,GAC/D,OAAKO,oBAAMqI,GAIAnI,EAAO8I,EAHPX,EAAME,QAAQ,MAAO,KAAOS,EAe3C,SAAgBC,EAAQnH,EAAQrC,GAC5B,IAAIyJ,EAAOtJ,WAAS,OAAQH,GACxB4I,EAAQzI,WAAS,aAAcH,GAKnC,MAJ4D,KAAvDqC,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,QAAgBvB,EAAOwB,YAAgBtD,oBAAMqI,KAE3Fa,GADAb,EAAQA,EAAME,QAAQ,MAAO,MAChBA,QAAQzG,EAAO5B,KAAM,IAAMgJ,GAErCA,EAWX,SAAgBC,EAAcrH,EAAQ6D,GAClC,GAAqB,IAAjBA,EAAMjF,OACN,OAAOiF,EAEX,IAAIyD,EAEAA,EADqB,SAArBtH,EAAOuH,WACC,IAAIC,SAAQC,OAAOzH,EAAOyH,OAAQzH,EAAOuH,UAAU/B,eAAe,GAAMkC,MAAM,WAG9E,IAAIF,SAAQE,MAAM,UAG9B,IAAIC,EAAQ,IAAIC,cAAY/D,GAAOgE,aAAaP,GAChD,OAAOxJ,WAAS,UAAW6J,GAY/B,SAAgBG,EAAU9H,EAAQ+H,EAAKxG,GAEnC,IAAIyG,EAAYlK,WAASkC,EAAOzB,OAAOyB,EAAOzB,OAAOK,OAAS,GAAIoB,EAAOiI,SACrEX,GAAQ,IAAIE,SAAQU,MAAMH,EAAK,QAASxG,GAG5C,OADY,IAAIqG,cAAYI,GAAWH,aAAaP,GACvC,GAWjB,SAAgBa,EAAmBnI,EAAQhB,EAASyD,GAChD,IAAI2F,EACAC,EAAgB5I,SAAO,IAAMO,EAAOhB,QAAQjB,GAAKuK,GAAetI,EAAOhB,SACvEuJ,EAAmB9I,SAAO,IAAMO,EAAOhB,QAAQjB,GAAKyK,GAAsBH,GAAeI,aAK7F,GAJAL,EAAMC,EAAcI,aAAeF,EACf,YAAhBvI,EAAOgE,OACPoE,GAAY3I,SAAO,IAAMiJ,GAAiBL,GAAeI,cAEzDvK,oBAAMc,EAAQ2J,cAAc,IAAMC,KAAa,CAC/C,IAAIC,EAAWC,gBAAc,OAASC,UAAWH,KAC7CI,EAAcF,gBAAc,OAASC,UAAWE,KAChDC,EAAWJ,gBAAc,OAASC,UAAWI,KAC7CC,EAAWN,gBAAc,OAASC,UAAWM,KAC7B,YAAhBrJ,EAAOgE,KACPhF,EAAQ2J,cAAc,IAAMW,IAAeC,YAAYV,GAGvD7J,EAAQuK,YAAYV,GAExBA,EAASU,YAAYP,GACrBH,EAASU,YAAYL,GACrBL,EAASU,YAAYH,GAErBpK,EAAQ2J,cAAc,IAAMC,MACvB1K,oBAAMuE,EAAK+G,OAIPxJ,EAAOwB,YACZxC,EAAQ2J,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc1J,EAAQ,gBACjFhB,EAAQ2J,cAAc,IAAMU,IAAyBI,UAAYC,EAAc1J,EAAQ,eAE3B,KAAvDA,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAClDvC,EAAQ2J,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc1J,EAAQ,gBACjFhB,EAAQ2J,cAAc,IAAMU,IAAyBI,UAAYC,EAAc1J,EAAQ,gBAGvFhB,EAAQ2J,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc1J,EAAQ,gBACjFhB,EAAQ2J,cAAc,IAAMU,IAAyBI,UAAYC,EAAc1J,EAAQ,iBAbvFhB,EAAQ2J,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc1J,EAAQ,iBACjFhB,EAAQ2J,cAAc,IAAMU,IAAyBI,UAAYC,EAAc1J,EAAQ,oBAe/F,IAAI2J,EAAOlK,SAAO,IAAMmJ,GAAW5J,GACnCoJ,GAAOA,EAAMuB,EAAKlB,cAAgB,EAClCkB,EAAKC,MAAMC,UAAYzB,EAAM,KAUjC,SAAgB0B,EAAevG,GAC3B,OAAO,IAAIqE,cAAYrE,GAAOsE,cAAa,IAAIL,SAAQU,MAAM6B,GAAe,SAAS,GAAO,IAuChG,SAAgBL,EAAc1J,EAAQnC,GAClC,IAAImM,EAAShK,EAAOiK,UAAUC,YAAYrM,GAC1C,MAAmB,KAAXmM,EAAiBnM,EAAOmM,EAUpC,SAAgBG,EAAYnK,EAAQoK,GAChC,IAAIC,EAAWrK,EAAOqK,SAEtB,OADAA,EAAYnM,oBAAMmM,IAA0B,KAAbA,EAAmBD,EAAOC,EAAW,IAAMD,EAW9E,SAAgBE,EAAmBtK,EAAQyC,GAEvCzC,EAAOsD,iBAAkB,GACkB,IAAvCb,EAAKuD,KAAKjI,GAAG0H,QAAQ,eAA+D,IAAxChD,EAAKuD,KAAKjI,GAAG0H,QAAQ,gBAA0D,IAAlChD,EAAKuD,KAAKjI,GAAG0H,QAAQ,QAU9GzF,EAAOuH,UAAYgD,EAAa9H,EAAKuD,KAAKjI,IAH1CiC,EAAOyH,OAAS8C,EAAa9H,EAAKuD,KAAKjI,IAK3CiC,EAAO4C,UAAYC,EAAc7C,IACb,YAAhBA,EAAOgE,OACHhE,EAAOwK,SACPzG,EAAa/D,EAAQ,WAGrBA,EAAOM,OAAOmK,IAAqBC,OAAQ,iBAG/B,eAAhB1K,EAAOgE,MACPD,EAAa/D,EAAQ,cAEzBA,EAAOM,OAAOqK,OASlB,SAAgBJ,EAAaxM,GACzB,IAAIF,EAAOE,EAAG6M,UAAU7M,EAAG8M,YAAY,KAAO,GAC1CC,EAAQjN,EACZ,OAAQA,GACJ,IAAK,OACDiN,EAAQ,eACR,MACJ,IAAK,YACDA,EAAQ,YACR,MACJ,IAAK,aACDA,EAAQ,aACR,MACJ,IAAK,OACDA,EAAQ,OAGhB,OAAOA,EAuCX,SAAgBC,EAAiB/K,EAAQrC,GACrCqC,EAAOM,OAAO0K,IAAwBC,aAAcjL,EAAOzB,OAAOyB,EAAOzB,OAAOK,OAAS,KACzFoB,EAAOkL,aAAejE,EAAYjH,EAAQrC,EAAMqC,EAAO5B,MACvD0F,GAAK9D,EAASA,EAAO5B,OAAS4B,EAAOkL,aAAgBC,GAAoBC,GAAoBpL,EAAO5B,MASxG,SAAgBiN,EAAarL,GAEzB,GADAA,EAAOsL,YAAa,EACgB,IAAhCtL,EAAOG,cAAcvB,QAAgBoB,EAAOK,YAAa,CACzD,IAAIjC,EAA8B,KAAtB4B,EAAOuL,WAAqBvL,EAAO5B,KAAO4B,EAAOuL,WAG7D,IADgBC,EAAkBxL,EAAQA,EAAOI,cAAehC,EAAM4B,EAAO5B,MAEzE,GAA2B,SAAtB4B,EAAOkF,YAAyBlF,EAAOe,aAAe3C,GAA+B,SAAtB4B,EAAOkF,WACvElF,EAAOM,OAAOmL,OACdC,GAAM1L,EAAQA,EAAOe,WAAYf,EAAOG,cAAe/B,EAAM4B,EAAOkF,cAAgBlF,EAAOI,mBAE1F,CACDJ,EAAOK,aAAc,EACrBL,EAAOM,OAAOC,OACdL,EAAWF,GASX2L,GAAa3L,EAAQ,SAPjBuD,MAAO,KACPiG,OACIoC,KAAM,MACNC,QAASnC,EAAc1J,EAAQ,qBAC/B8L,WAAY,UAmBpC,SAAgBN,EAAkBxL,EAAQrC,EAAMoO,EAAUC,GAEtD,IAAK,IADDC,GAAY,EACPtN,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IAC7B,GAAKb,WAAS,SAAUH,EAAKgB,IAgBxB,CACD,IAAIuN,EAAUlM,EAAOmM,UAAUxN,GAC3ByN,EAAM,EACNF,IACAE,EAAMF,EAAQrB,YAAY,MAE9B,IAAIzM,EAAO,GAIX,GAHIgO,EAAM,IACNhO,EAAO4N,EAAWE,EAAQtB,UAAU,EAAGwB,EAAM,IAE7ChO,IAAS2N,EAAU,CASnBJ,GAAa3L,EAAQ,SAPjBuD,MAAO,KACPiG,OACIoC,KAAM,MACNC,QAASnC,EAAc1J,EAAQ,qBAC/B8L,WAAY,QAIpBG,GAAY,EACZ,WArC0B,CAC9B,IAAII,EAAapF,EAAYjH,EAAQrC,EAAKgB,GAAIqN,GAC9C,GAAqC,IAAjCD,EAAStG,QAAQ4G,GAAmB,CASpCV,GAAa3L,EAAQ,SAPjBuD,MAAO,KACPiG,OACIoC,KAAM,MACNC,QAASnC,EAAc1J,EAAQ,oBAC/B8L,WAAY,QAIpBG,GAAY,EACZ,OA4BZ,OAAOA,EA6BX,SAAgBjL,EAAcsL,GAG1B,IAAK,IAFDlO,EAAOkO,EAAQ5G,MAAM,KACrB6G,EAAUnO,EAAK,GAAK,IACfO,EAAI,EAAGA,EAAIP,EAAKQ,OAAS,EAAGD,IACjC4N,GAAWnO,EAAKO,GAAK,IAEzB,OAAO4N,EAUX,SAAgBC,EAAiBxM,EAAQyC,GACrC,IAAIyE,EAAWpJ,WAASkC,EAAO1B,MAAQ,KAAO,OAAQmE,EAAKgK,KAAO,IAC9DlG,EAAQzI,WAASkC,EAAO1B,MAAQ,WAAa,aAAcmE,EAAKgK,KACpE,OAAKvO,oBAAMqI,GAOAvG,EAAO5B,KAAO8I,EANP,KAAVX,EACOvG,EAAO1B,MAAQ4I,EAAW,IAE9BX,EAAME,QAAQ,MAAO,KAAOS,EAe3C,SAAgBwF,EAAc1M,EAAQ2M,EAAWC,GAC3B,SAAdD,IACK3M,EAAOsL,WAMRtL,EAAOM,OAAOuM,GAAgBD,IAL9B5M,EAAOK,aAAc,EACrBL,EAAOM,OAAOC,OACdP,EAAOM,OAAOwM,GAAeF,KAMA,IAAjC5M,EAAO+M,eAAenO,SACtBoB,EAAOgN,eAGX,IAAK,IAAIC,EAAQ,EAAIA,EAAQL,EAAOrJ,MAAM3E,OAAkBqO,IACxDjN,EAAOgN,WAAWnO,KAAK+N,EAAOrJ,MAAM0J,GAAOjN,EAAO1B,MAAQ,KAAO,SAC7D0B,EAAOsL,YACPtL,EAAOkN,eAAerO,KAAK+N,EAAOrJ,MAAM0J,IAGhDjN,EAAO+M,kBACP/M,EAAOmN,oBACHnN,EAAOsL,aAAetL,EAAOoN,aAC7BpN,EAAOqN,WAAY,EAGnBrN,EAAOqN,WAAY,GAElBrN,EAAOsL,YAAetL,EAAO5B,OAAS4B,EAAOgM,UAAchM,EAAO5B,OAAS4B,EAAO+L,UAChF/L,EAAOsN,cACVtN,EAAOuN,YAAa,EACpBzJ,GAAK9D,EAAQwN,GAAiBxN,EAAO5B,OAGrCqP,EAAazN,GAEjBA,EAAOgH,QAAQ,WAAavG,OAAQkM,EAAWC,OAAQA,IAS3D,SAAgBa,EAAazN,GACzB,IAAIzB,EAAST,WAAS,SAAUkC,EAAO0N,UAGvC,GAFA1N,EAAO2N,WAAapP,EACpByB,EAAO4C,UAAY5C,EAAO0N,UACtB1N,EAAOuN,WACPvN,EAAOM,OAAOsN,GAAiB5N,EAAO4C,cAErC,CACD,GAAI5C,EAAO6N,qBAAsB,CAC7B,IAAInQ,EAAO+B,SAAO,cAAgBlB,EAAS,KAAMyB,EAAO6N,qBAAqBC,QAAQ9O,SACrF,IAAKtB,EAAM,CAEPa,EADgBwP,SAASpF,cAAc,eAAiB7K,WAAS,KAAMkC,EAAO0N,UAAY,MACvE1P,aAAa,YAChCN,EAAO+B,SAAO,cAAgBlB,EAAS,KAAMyB,EAAO6N,qBAAqBC,QAAQ9O,SAErFvB,EAAWC,EAAMsC,EAAO0N,SAAU1N,GAEtC8D,GAAK9D,EAAQgO,GAAiBhO,EAAO+L,WAgC7C,SAAgBkC,EAAyBjO,GAKrC,GAJAA,EAAOsN,cAAe,EACqC,KAAvDtN,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,QAC7CvB,EAAOsN,cAAe,GAEE,mBAAxBtN,EAAOc,aAAmC,CAC1Cd,EAAOmM,aAEP,IADA,IAAIxN,EAAI,EACDA,EAAIqB,EAAO0B,cAAc9C,QAC5BoB,EAAOmM,UAAUtN,KAAKmB,EAAO0B,cAAc/C,IAC3CA,IAEgC,IAAhCqB,EAAO0B,cAAc9C,QAAgBoB,EAAOkO,UAAuC,IAA3BlO,EAAOkO,SAAStP,QACxEoB,EAAOmM,UAAUtN,KAAKsP,EAAYnO,EAAQA,EAAOkO,SAAS,KAGlE,IAAIE,EAAYpO,EAAO8I,cAAc,OACjCC,UAAW,aAAe3D,EAASpF,EAAOkO,SAAS,MAEnDG,EAAYrO,EAAO8I,cAAc,OACjCC,UAAW,YACXU,UAAWzJ,EAAOkO,SAAS,GAAG9G,OAE9BkH,EAAatO,EAAO8I,cAAc,OAClCC,UAAW,iBAEfuF,EAAW/E,YAAY6E,GACvBE,EAAW/E,YAAY8E,GACvB,IAAIE,EAAMvO,EAAO8I,cAAc,OAC3BC,UAAWyF,KAGf,GADAD,EAAIhF,YAAY+E,GACZtO,EAAOmM,UAAUvN,OAAS,EAAG,CAC7B,IAAI6P,EAAQzO,EAAO8I,cAAc,QAC7BC,UAAW,aACXU,UAAYzJ,EAAOmM,UAAgB,OAAEpF,SAAS,MAElDwH,EAAIhF,YAAYkF,GAEpBzO,EAAO0O,mBAAqBH,EAC5BvO,EAAOhB,QAAQuK,YAAYvJ,EAAO0O,oBAUtC,SAAgBC,EAAgB3O,EAAQyC,GACpC,IAAImM,EAAWnM,EACfmM,EAASC,QAAS,EACY,MAA1B7O,EAAO8O,kBACPC,OAAOC,aAAahP,EAAO8O,iBAC3B9O,EAAO8O,gBAAkB,MAE7BG,EAAiBjP,GACjBA,EAAOhB,QAAQY,UAAUqC,OAAO,YAAa,aAC7C/B,EAAWF,GACXA,EAAOkP,UAAUC,SAAW1P,SAAO,IAAMO,EAAOhB,QAAQjB,GAAKqR,GAAgBpP,EAAOhB,SACpF,IAAIsP,EAAa7O,SAAO,IAAM+O,GAAWxO,EAAOhB,SAC5CsP,GACAe,SAAOf,GAEXpK,EAAgBlE,EAAQyC,EAAK6M,QAC7BtP,EAAOM,OAAOiP,GAAiB9M,GAC/BvC,EAAWF,EAAQ,SACnB4O,EAASjI,YAAc3G,EAAOkO,SAC9BlO,EAAOgH,QAAQ,eAAgB4H,EAAU,SAAUA,IAC1CA,EAASC,SAAW3Q,oBAAM8B,EAAOwE,eAAyC,KAAxBxE,EAAOwE,cAAuBxE,EAAOwP,UAAY,GA/NhH,SAA4BxP,GACxBA,EAAOsL,YAAa,EACW,IAA3BtL,EAAOkO,SAAStP,SAChBoB,EAAOgM,SAAWhM,EAAOgM,SAASvF,QAAQ,MAAO,KACjDzG,EAAO+L,SAAW/L,EAAO+L,SAAStF,QAAQ,MAAO,KACjC+E,EAAkBxL,EAAQA,EAAOkO,SAAUlO,EAAO+L,SAAU/L,EAAOgM,WAChEhM,EAAOgM,WAAahM,EAAO+L,WAC1C/L,EAAO4C,UAAY5C,EAAO0N,UAC1BhC,GAAM1L,EAAQA,EAAOgM,SAAUhM,EAAOmM,UAAWnM,EAAO+L,SAAU,UAAY/L,EAAOkO,UACrFlO,EAAOM,OAAOmL,SAuNdgE,CAAYzP,GAEhBA,EAAOwP,UAAY,IAY3B,SAAgBE,EAAiB1P,EAAQyC,EAAMkN,GAC3C,IAAIf,EAAWnM,EAiBf,GAhBAmM,EAASC,QAAS,EAClBD,EAASjI,YAAc3G,EAAOkO,SAC9BlO,EAAOwP,UAAY,EACnBxP,EAAOkN,oBACFlN,EAAO4P,kBAA8C,mBAAxB5P,EAAOc,cACpCqB,UAAQM,EAAKzD,QAAS,MAAMhB,aAAa,cAAgBgC,EAAOzB,OAAO,MACxEqQ,EAASC,QAAS,GAEO,mBAAxB7O,EAAOc,eAC0E,IAAjFd,EAAOzB,OAAOkH,QAAQtD,UAAQM,EAAKzD,QAAS,MAAMhB,aAAa,aAChEgC,EAAOuN,YAAa,EAGpBvN,EAAOuN,YAAa,EAExBrN,EAAWF,GACP4O,EAASC,OACTc,EAAQE,WAAWpN,EAAKqN,OACxBC,EAAW/P,QAEV,IAAK4O,EAASC,OAAQ,CAEvB,IADA,IAAIlQ,EAAI,EACDA,EAAIqB,EAAOW,eAAe/B,QAC7BsC,EAAQlB,EAAOW,eAAehC,IAC9BA,IAEJqB,EAAOgH,QAAQ,gBAAiB4H,EAAU,SAAUA,GAC5CA,EAASC,QACTc,EAAQE,WAAWpN,EAAKqN,OACxBC,EAAW/P,IAGXA,EAAOkP,UAAUC,SAAW,QAY5C,SAAgBY,EAAW/P,GACvBE,EAAWF,GACX,IAAIsO,EAAa7O,SAAO,IAAM+O,GAAWxO,EAAOhB,SAC5CsP,GACAe,SAAOf,GAUf,SAAgBW,EAAiBjP,GAC7BgQ,EAAgBhQ,EAAQiQ,IACxBD,EAAgBhQ,EAAQkQ,IAU5B,SAAgBF,EAAgBhQ,EAAQuB,GAEpC,IAAK,IADDgN,EAAMvO,EAAOhB,QAAQ+C,iBAAiB,IAAMR,GACvC5C,EAAI,EAAGA,EAAI4P,EAAI3P,OAAQD,IAC5B4P,EAAI5P,GAAGiB,UAAUqC,OAAOV,GAWhC,SAAgB4O,EAAgBnQ,EAAQyC,GACpC,IAAImM,EAAWnM,EACfmM,EAASjI,YAAc3G,EAAOkO,SAC9B,IAAIkC,GAAU,EACdlM,EAAgBlE,EAAQyC,EAAK6M,QAC7BL,EAAiBjP,GACa,MAA1BA,EAAO8O,kBACPC,OAAOC,aAAahP,EAAO8O,iBAC3B9O,EAAO8O,gBAAkB,MAE7B5O,EAAWF,EAAQ,SACnB,IAAItC,EAAO,KACiB,mBAAxBsC,EAAOwE,eACP9G,EAAOyE,UAAQM,EAAK6M,OAAQ,OACvB1P,UAAUgC,IAAII,GAAWiO,IAC9BG,GAAU,EAEVpQ,EAAO8O,gBAAkBC,OAAOsB,WAAW,WAAcrQ,EAAOM,OAAOgQ,GAAiB7N,IAAU,MAErE,gBAAxBzC,EAAOwE,eACZ9G,EAAOyE,UAAQM,EAAK6M,OAAQ,QAChB5R,EAAKiL,cAAc,IAAMrD,MAAgB5H,EAAKkC,UAAUC,SAASgC,IACzEnE,EAAKkC,UAAUgC,IAAIqO,KAEdvS,GAASA,EAAKiL,cAAc,IAAMrD,KAAgB5H,EAAKkC,UAAUC,SAASgC,KAC/EnE,EAAKkC,UAAUgC,IAAIsO,IAEvBE,GAAU,GAEmB,mBAAxBpQ,EAAOwE,eACZ9G,EAAOyE,UAAQM,EAAK6M,OAAQ,QAChB5R,EAAKiL,cAAc,IAAMrD,MAAgB5H,EAAKkC,UAAUC,SAASgC,KACzEnE,EAAKkC,UAAUgC,IAAII,GAAWiO,IAElCG,GAAU,GAGmB,kBAAxBpQ,EAAOwE,eACZ4L,GAAU,GAEdpQ,EAAOhB,QAAQY,UAAUqC,OAAO,YAAa,aAC7CjC,EAAOhB,QAAQY,UAAUgC,IAAIwO,EAAU,YAAc,aACrDpQ,EAAOwP,UAAYxP,EAAOwP,UAAY,EACtCxP,EAAOgH,QAAQ,eAAgB4H,GA8BnC,SAAgBT,EAAYnO,EAAQrC,GAChC,OAAIqC,EAAO1B,MACAR,WAAS,KAAMH,GAEnBwJ,EAAQnH,EAAQrC,GAW3B,SAAgB4S,GAAmBvQ,EAAQrC,GACvCqC,EAAO4C,UAAYjF,GACnBqC,EAAOwQ,gBAAkB1S,WAAS,OAAQH,GAC1CqC,EAAOyQ,OAAS3S,WAAS,SAAUH,GACnCqC,EAAO0Q,WAAa5S,WAAS,aAAcH,GAS/C,SAAgBgT,GAAS3Q,GAChB4Q,GAAc5Q,EAAO4C,SAAS,IAI/B+I,GAAa3L,EAAQ,UAHrB4E,GAAmB5E,EAAQA,EAAO4C,SAAS,GAAIiO,IAcvD,SAAgBC,GAAW9Q,GAGvB,IAAK,IADD6D,EAAQ7D,EAAO4C,SACVjE,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,IAC9B,IAAKoS,GAAkBlN,EAAMlF,IAEzB,YADAiG,GAAmB5E,EAAQ6D,EAAMlF,GAAIqS,IAIzChR,EAAO0B,cAAc9C,OAAS,GAC9BqS,GAASjR,EAAQA,EAAO5B,KAAM4B,EAAO0B,eAa7C,SAAgBwP,GAAclR,EAAQrC,EAAMwT,GACxC,IAAK,IAAIxS,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IAC7B,IAAKiS,GAAcjT,EAAKgB,IAEpB,YADAiG,GAAmB5E,EAAQrC,EAAKgB,GAAIkS,IAI5C7Q,EAAO4C,SAAWjF,EAClByT,GAAOpR,EAAQmR,EAAQnR,EAAO5B,KAAM,UAaxC,SAAgBiT,GAAgBrR,EAAQrC,EAAMwT,GAC1C,IAAK,IAAIxS,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IAC7B,IAAKoS,GAAkBpT,EAAKgB,IAExB,YADAiG,GAAmB5E,EAAQrC,EAAKgB,GAAIqS,IAI5ChR,EAAO4C,SAAWjF,EACdwT,EAAOvS,OAAS,GAChBqS,GAASjR,EAAQA,EAAO5B,KAAM+S,GAatC,SAAgBvM,GAAmB5E,EAAQrC,EAAM8C,GAC7C,IAAIoL,EAAU/N,WAAS,UAAWA,WAAS,aAAcH,IACzC,KAAZkO,IACAA,EAAUnC,EAAc1J,EAAQ,kBAAkByG,QAAQ,MAAO3I,WAAS,OAAQH,IAAO8I,QAAQ,MAAOhG,IAS5GkL,GAAa3L,EAAQ,SANjBwJ,OACIoC,KAAM,MACNE,WAAY,KACZD,QAASA,KAarB,SAAgByF,GAAe3T,GAC3B,OAAQ+G,GAAc/G,GAAoC,cAA5B,0BAUlC,SAAgB+G,GAAc/G,GAE1B,IAAI4T,EAAazT,WAAS,aAAcH,GACxC,QAAQ4T,IAAezT,WAAS,OAAQyT,IAU5C,SAAgBX,GAAcjT,GAE1B,IAAI4T,EAAazT,WAAS,aAAcH,GACxC,OAAO4T,GAAezT,WAAS,OAAQyT,IAAezT,WAAS,QAASyT,GAU5E,SAAgBC,GAAiB7T,GAE7B,IAAI4T,EAAazT,WAAS,aAAcH,GACxC,OAAO4T,GAAezT,WAAS,OAAQyT,IAAezT,WAAS,gBAAiByT,GAUpF,SAAgBE,GAAgB9T,GAE5B,IAAI4T,EAAazT,WAAS,aAAcH,GACxC,OAAO4T,GAAezT,WAAS,OAAQyT,IAAezT,WAAS,SAAUyT,GAU7E,SAAgBR,GAAkBpT,GAE9B,IAAI4T,EAAazT,WAAS,aAAcH,GACxC,OAAO4T,GAAezT,WAAS,OAAQyT,IAAezT,WAAS,WAAYyT,GAS/E,SAAgBG,GAAgB1R,GAE5B,IAAI2R,EAAU3R,EAAO4C,SAAS,GACzB4O,GAAiBG,GAIlBhG,GAAa3L,EAAQ,aAHrB4E,GAAmB5E,EAAQ2R,EAASC,IAa5C,SAAgBC,GAAW7R,GAEvB,IAAI2R,EAAU3R,EAAO4C,SAAS,GAC9B,GAAK6O,GAAgBE,GAGhB,CACD,IAAIG,EAAQ,IAAM9R,EAAOhB,QAAQjB,GAAKgU,GACtBhE,SAASpF,cAAcmJ,GAC7BE,aALVpN,GAAmB5E,EAAQ2R,EAASM,ICn9C5C,SAAgBnO,GAAK9D,EAAQ8P,EAAO1R,GAGhC,IAAK,IADDwE,EAAW5C,EAAO4C,SACbjE,EAAI,EAAGA,EAAIiE,EAAShE,OAAQD,IAC7BT,oBAAMJ,WAAS,WAAY8E,EAASjE,MACpCuT,WAAS,YAAY,EAAOtP,EAASjE,IAK7CwT,GAAWnS,GADES,OAAQ,OAAQrC,KAAMA,EAAM6E,gBAAiBjD,EAAOiD,gBAAiBtF,KAAMiF,GAC/DwP,GAAatC,GAU1C,SAAgBuC,GAAarS,EAAQsS,GAGjCH,GAAWnS,GADES,OAAQ,SAAUrC,KAAM4B,EAAO5B,KAAMgJ,KAAMkL,EAAU3U,KAAMqC,EAAO4C,UACtD2P,GAAeD,GAU5C,SAAgBjP,GAAOrD,EAAQ8P,GAE3B,IAAInS,GAAS8C,OAAQ,SAAUrC,KAAM4B,EAAO5B,KAAM6E,gBAAiBjD,EAAOiD,gBAAiBtF,MAAOkF,EAAc7C,KAI5GwS,EAAgBxS,EAAOyS,WAAaC,cAFpCD,EAEuD9U,EAAMqC,EAAOyS,YAAc9U,EACtFwU,GAAWnS,EAAQwS,EAAeG,GAAe7C,EAAOhS,WAAS,SAAU0U,IAW/E,SAAgBI,GAAO5S,EAAQ5B,EAAMyU,GACjC,IAAIzL,EACA0L,EACJ,GAA2D,KAAvD9S,EAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAiBvB,EAAOwB,WAIpE,CACD,IAAI+E,EAAQvG,EAAO0Q,WACf1Q,EAAO1B,OACP8I,EAAOpH,EAAOwQ,gBACdsC,EAAUD,IAIVzL,GADAb,EAAQA,EAAME,QAAQ,MAAO,MAChBA,QAAQrI,EAAM,IAAM4B,EAAOwQ,gBACxCsC,EAAUvM,EAAME,QAAQrI,EAAM,IAAMyU,QAZxCzL,EAAOpH,EAAOwQ,gBACdsC,EAAUD,EAkBdV,GAAWnS,GAFPS,OAAQ,SAAUrC,KAAMA,EAAMgJ,KAAMA,EAAM0L,QAASA,EAASnV,KAAMqC,EAAO4C,UAEpDmQ,GAAe3U,GAe5C,SAAgBsN,GAAM1L,EAAQ5B,EAAMa,EAAO8B,EAAYiS,EAEvDC,EAAa7S,GAET,IAAIzC,GACA8C,OAAQuS,EAAgB5U,KAAMA,EAAM8U,WAAYlT,EAAO4C,SAAS,GAChE7B,WAAYA,EAAY9B,MAAOA,EAAOkU,YAAaF,EAAatV,KAAMyC,GAE1EJ,EAAOoT,gBAAkBrS,EACzBoR,GAAWnS,EAAQrC,EAAM0V,GAAcjV,EAAM4U,EAAgBjS,GAYjE,SAAgBqQ,GAAOpR,EAAQ6D,EAAOzF,EAAMuO,GAGxCwF,GAAWnS,GADES,OAAQkM,EAAWvO,KAAMA,EAAMa,MAAO4E,EAAOlG,KAAMqC,EAAO4C,UAC9C0Q,GAAelV,GAa5C,SAAgBmV,GAAWvT,EAAQf,EAAOb,EAAMuO,GAG5CwF,GAAWnS,GADES,OAAQkM,EAAWvO,KAAMA,EAAMa,MAAOA,EAAOtB,KAAMqC,EAAO4C,UAC9C4Q,GAAgBpV,EAAMuO,GAcnD,SAASwF,GAETnS,EAAQrC,EAAM8V,EAAI3D,EAAOnD,EAAW5L,GAEhC,IAAIoF,GACAC,IAAKpG,EAAOmG,aAAaC,IACzBsN,KAAM,OACNC,MAAM,EACNC,SAAU,OACVC,YAAa,mBACblW,KAAMmW,KAAKC,UAAUpW,GACrBqW,UAAW,KACXC,UAAW,KACXC,WAAY,MAEZxN,GAAcjG,OAAQ3C,WAAS,SAAUH,GAAOwI,aAAcA,EAAc0I,QAAQ,GACxF7O,EAAOgH,QAAQ,aAAcN,EAAW,SAAUyN,GAC9C,IAAKA,EAAetF,OAAQ,CACxB7O,EAAOM,OAAO8T,OACH,IAAIC,QACXjO,IAAKtI,WAAS,MAAOqW,EAAehO,cACpCuN,KAAM5V,WAAS,OAAQqW,EAAehO,cACtCwN,KAAM7V,WAAS,OAAQqW,EAAehO,cACtCyN,SAAU9V,WAAS,WAAYqW,EAAehO,cAC9C0N,YAAa/V,WAAS,cAAeqW,EAAehO,cACpDxI,KAAMG,WAAS,OAAQqW,EAAehO,cACtC+N,WAAYpW,WAAS,aAAcqW,EAAehO,cAClD6N,UAAW,SAAUpH,GACjB,GAAI1O,oBAAM0O,GAAV,CACI,IAAI0H,GACA9K,OACIsC,WAAY,KACZD,QAASnC,EAAc1J,EAAQ,gBAAkB,IAAMA,EAAOmG,aAAaC,IAC3EwF,KAAM,OAEVrI,MAAO,MAEXgR,GAAmBvU,EAAQmU,EAAgBV,EAAIa,EAAUxE,EAAOnD,EAAW5L,OAT/E,CAYwB,qBACpB6L,EAASkH,KAAKU,MAAM5H,IAExB5M,EAAOM,OAAOmU,IAAuBhU,OAAQ,YAC7C,IAAI1C,EAAKiC,EAAO2N,WAAa3N,EAAO2N,WAAa3N,EAAOzB,OAAOyB,EAAOzB,OAAOK,OAAS,GACtF,IAAKV,oBAAM0O,EAAOH,MAAsC,SAA7B3O,WAAS,SAAUH,KAC1CiP,EAAOH,IAAIrF,KAAiC,IAAzBpH,EAAOzB,OAAOK,OAAiBoB,EAAO0U,eAAiB9H,EAAOH,IAAIrF,KAAQwF,EAAOH,IAAIrF,KACxG8K,WAAS,SAAUnU,EAAI6O,EAAOH,KAC9ByF,WAASnU,EAAI6O,EAAOH,IAAKzM,EAAOgF,WAC3B9G,oBAAM0O,EAAOrJ,QAAgC,QAAtBqJ,EAAOpD,MAAMoC,MAAgB,CACrD,IAAe,iBAAVkE,GAAsC,gBAAVA,IAAwD,IAA5B9P,EAAOjB,UAAUH,OAAc,CAExF,IAAI+V,EAAO7W,WAASkC,EAAOzB,OAAO,GAAIyB,EAAOgF,UAC7ChF,EAAOjB,UAAU,GAAKjB,WAAS,OAAQ6W,GACvC3U,EAAO1B,OAASJ,oBAAMJ,WAAS,KAAM6W,IAE3B,iBAAV7E,GD3GhC,SAA6B9P,GAIzB,IAHA,IAAI+H,EAAM/H,EAAO1B,MAAQ,KAAO,OAC5BiO,EAAUvM,EAAO1B,MAAQ,GAAK,IAC9BK,EAAIqB,EAAO1B,MAAQ,EAAI,EACnBK,EAAIqB,EAAOzB,OAAOK,OAAQD,IAAK,CAEnC,IAAIhB,EAAOG,WAASkC,EAAOzB,OAAOI,GAAIqB,EAAOgF,UAC7CuH,GAAWzO,WAASiK,EAAKpK,GAAQ,IAErCqC,EAAO7B,eAAgBC,KAAMmO,IAAW,GCmGZqI,CAAa5U,GAIzB,IAAK9B,oBAAM0O,EAAOrJ,OAAQ,ED2a9C,SAA8Bd,GAC1B,IAAK,IAAI9D,EAAI,EAAGA,EAAI8D,EAAK7D,OAAQD,IAC7BuT,WAAS,cAAe,IAAIrL,KAAK/I,WAAS,cAAe2E,EAAK9D,KAAM8D,EAAK9D,IACzEuT,WAAS,eAAgB,IAAIrL,KAAK/I,WAAS,eAAgB2E,EAAK9D,KAAM8D,EAAK9D,IC7a3DkW,CAAcjI,EAAOrJ,OACrB,IAAK,IAAI5E,EAAI,EAAGyN,EAAMQ,EAAOrJ,MAAM3E,OAAQD,EAAIyN,EAAKzN,IAAK,CAErD,IAAIqH,EAAO4G,EAAOrJ,MAAM5E,GACxBuT,WAAS,gBAAiB9M,EAASY,GAAOA,GAEb,SAA7BlI,WAAS,SAAUH,MDqZ/C,SAA0BiP,EAAQkI,GAG9B,IAAK,IADDC,EAAOjL,EAAe8C,EAAOrJ,OACxB5E,EAAI,EAAGyN,EAAM2I,EAAKnW,OAAQD,EAAIyN,EAAKzN,IACxCuT,WAAS,SAAU4C,EAAS,IAAMnW,EAAGoW,EAAKpW,ICxZtBqW,CAAUpI,EAAQ7O,GAClBmU,WAASnU,EAAI6O,EAAOrJ,MAAOvD,EAAOiI,UAG1C,IAAK/J,oBAAM0O,EAAO+E,WAAazT,oBAAM8B,EAAO0U,eAAgB,CACxD,IAAIO,EAAWjV,EAAO0U,eAAiB5W,WAAS,OAAQ8O,EAAO+E,SAC3DuD,EAAapX,WAAS,WAAY8O,EAAO+E,SAASlL,QAAQ,IAAI0O,OAAO,IAAK,KAAM,OACpD,MAA3BrX,WAAS,OAAQH,IAAmBqC,EAAO1B,OAAyD,IAAhDR,WAAS,OAAQH,GAAMyX,MAAM,QAAQxW,SACnD,IAAnCd,WAAS,QAASH,GAAMiB,QACxBsT,WAAS,OAAQ+C,EAAUrI,EAAO+E,SAClCuD,EAAaD,GAOjBC,EAAaA,EAAWzO,QAAQyO,EAAWtK,UAAU,EAAGsK,EAAWzP,QAAQ,OAAQwP,GAEvF/C,WAAS,WAAYgD,EAAYtI,EAAO+E,SAE5C8B,EAAGzT,EAAQ4M,EAAQkD,EAAOnD,EAAW5L,GAChC7C,oBAAM0O,EAAOrJ,QAAqB,iBAAVuM,GAAsC,iBAAVA,GAAsC,aAAVA,GACjF9P,EAAOM,OAAO+U,GAAyBzI,GAEuB,mBAAvD9O,WAAS,YAAaqW,EAAehO,eAC5CrI,WAAS,YAAaqW,EAAehO,aAArCrI,KAGRmW,UAAW,WACP,IAAIrH,GACArJ,MAAO,KACPiG,OACIoC,KAAM,MACNC,QAASnC,EAAc1J,EAAQ,iBAAmB,IAAMA,EAAOmG,aAAaC,IAC5E0F,WAAY,OAGpByI,GAAmBvU,EAAQmU,EAAgBV,EAAI7G,EAAQkD,EAAOnD,EAAW5L,MAG5EuU,UAiBjB,SAASf,GAETvU,EAAQmU,EAAgBV,EAAI7G,EAAQkD,EAAOnD,EAAW5L,GAClDf,EAAOM,OAAOmU,IAAuBhU,OAAQ,YAC7CgT,EAAGzT,EAAQ4M,EAAQkD,EAAOnD,EAAW5L,GAC6B,mBAAvDjD,WAAS,YAAaqW,EAAehO,eAC5CrI,WAAS,YAAaqW,EAAehO,aAArCrI,GAYR,SAASsU,GAAYpS,EAAQ4M,EAAQkD,GACjC,GAAK5R,oBAAM0O,EAAOrJ,OAOY,QAAtBqJ,EAAOpD,MAAMoC,OACbgB,EAAOrJ,SACPvD,EAAOM,OAAOwP,EAAOlD,GACrB5M,EAAOM,OAAOiV,QAElBtB,GAAUjU,EAAQ4M,EAAQ,QAC1B5M,EAAO7B,eAAgBC,KAAM4B,EAAOsM,UAAW,GAC/CtM,EAAOjB,UAAUyW,UAdK,CACtBxV,EAAOM,OAAOwP,EAAOlD,GACrB5M,EAAOM,OAAOiV,OACd,IAAI9S,GAAShC,OAAQ,OAAQmM,OAAQA,GACrC5M,EAAOgH,QAAQ,UAAWvE,GAY9B,GAAIzC,EAAOsL,YAActL,EAAOqN,UAAW,CACvC,GAAqC,IAAjCrN,EAAOkN,eAAetO,OAAc,CAChC6D,GAASkE,YAAa3G,EAAOkN,gBACjClN,EAAOgH,QAAQ,cAAevE,GAElCzC,EAAOqN,UAAYrN,EAAOsL,YAAa,GAa/C,SAASqH,GAAc3S,EAAQ4M,EAAQkD,EAAOrP,GAC1C,GAAKvC,oBAAM0O,EAAOrJ,OAMd0Q,GAAUjU,EAAQ4M,EAAQnM,OANJ,CACtBT,EAAOM,OAAOwP,EAAOlD,GACrB,IAAInK,GAAShC,OAAQA,EAAQmM,OAAQA,GACrC5M,EAAOgH,QAAQ,UAAWvE,IAgBlC,SAAS8P,GAAcvS,EAAQ4M,EAAQ0F,GACnC,GAAKpU,oBAAM0O,EAAOrJ,OAYd,GAA0B,QAAtBqJ,EAAOpD,MAAMoC,KAAgB,CAC7B,GAAI5L,EAAOyV,WAAazV,EAAOyV,UAAUC,QAAS,CAC9C,IAAInH,EAAM9O,SAAO,WAAYO,EAAOyV,UAAUzW,SAC1CwK,EAAQE,EAAc1J,EAAQ,+BAA+ByG,QAAQ,MAAO,IAAM8H,EAAIhN,MAAQ,KAClGgN,EAAIoH,cAAcC,mBAAmBnM,UAAYD,MAEhD,CASDmC,GAAa3L,EAAQ,SAPjBuD,MAAO,KACPiG,OACIoC,KAAM,MACNC,QAASnC,EAAc1J,EAAQ,+BAA+ByG,QAAQ,MAAO,IAAM6L,EAAW,KAC9FxG,WAAY,QAKpBrJ,GAAShC,OAAQ,SAAU+I,MAAOoD,EAAOpD,OAC7CxJ,EAAOgH,QAAQ,UAAWvE,QAGtBzC,EAAOyV,WAAazV,EAAOyV,UAAUC,SACrC1V,EAAOyV,UAAUI,OAErB5B,GAAUjU,EAAQ4M,EAAQ,cApCR,CAClB5M,EAAOyV,WAAazV,EAAOyV,UAAUC,SACrC1V,EAAOyV,UAAUI,OAErB7V,EAAO8V,YAAclJ,EAAOrJ,MAAM,GAClCvD,EAAOqB,oBAAoBC,UAAUC,MAAQ,GAC7C,IAAIkB,GAAShC,OAAQ,SAAUmM,OAAQA,GACvC5M,EAAOgH,QAAQ,UAAWvE,GAC1BzC,EAAO4C,UAAYC,EAAc7C,IACjC8D,GAAK9D,EAAQ+V,GAAkB/V,EAAO5B,OAyC9C,SAAS2U,GAAc/S,EAAQ4M,EAAQxO,GACnC,GAAKF,oBAAM0O,EAAOrJ,OA4Bd,GAA0B,QAAtBqJ,EAAOpD,MAAMoC,MAAkB5L,EAAOyV,WAAazV,EAAOyV,UAAUC,QAAS,CAC7E,IAAInH,EAAM9O,SAAO,UAAWO,EAAOyV,UAAUzW,SACzCwK,EAAQE,EAAc1J,EAAQ,4BAA4ByG,QAAQ,MAAO,IAAMzG,EAAOwQ,gBAAkB,KAC5GhH,EAAQA,EAAM/C,QAAQ,MAAO,IAAM8H,EAAIhN,MAAQ,KAC/CgN,EAAIoH,cAAcC,mBAAmBnM,UAAYD,EAC7C/G,GAAShC,OAAQ,SAAU+I,MAAOoD,EAAOpD,OAC7CxJ,EAAOgH,QAAQ,UAAWvE,QAGrBvE,oBAAM8B,EAAOyV,YACdzV,EAAOyV,UAAUI,OAErB5B,GAAUjU,EAAQ4M,EAAQ,cAxCR,CACjB1O,oBAAM8B,EAAOyV,YACdzV,EAAOyV,UAAUI,OAErB,IAAIpT,GAAShC,OAAQ,SAAUmM,OAAQA,GACvC5M,EAAOgH,QAAQ,UAAWvE,GAC1BzC,EAAOgW,YAAcpJ,EAAOrJ,MAAM,GACN,mBAAxBvD,EAAOc,cACPd,EAAOzB,OAAOiX,MACdxV,EAAO4C,UAAY9E,WAASkC,EAAOzB,OAAOyB,EAAOzB,OAAOK,OAAS,GAAIoB,EAAOgF,WAC5ElB,GAAK9D,EAAQiW,GAAwBjV,EAAchB,EAAO5B,SAG1D4B,EAAO4C,UAAYC,EAAc7C,IACkB,KAA/CA,EAAOqB,oBAAoBC,UAAUC,MACrC2B,GAAOlD,EAAQkW,GAAkBlW,EAAO5B,KAAM4B,EAAOuC,WAAYvC,EAAOiD,iBAAkBjD,EAAO0C,eAAeK,YAG5G/C,EAAOwB,WACP6B,GAAOrD,EAAQkW,IAGfpS,GAAK9D,EAAQkW,GAAkBlW,EAAO5B,QAiC1D,SAASiV,GAAarT,EAAQ4M,EAAQxO,EAAMuO,GACpCC,EAAOpD,OAASoD,EAAOpD,MAAMsC,YAC7B9L,EAAOmW,WAAa,EACfjY,oBAAM0O,EAAOrJ,SACdvD,EAAOoN,cAAe,EACtBV,EAAc1M,EAAQ2M,EAAWC,IAErCwJ,GAAgBpW,EAAQ,iBAAkB4M,EAAOpD,MAAMsC,YAC7B,QAAtBc,EAAOpD,MAAMoC,MACbD,GAAa3L,EAAQ,QAAS4M,IAG5BA,EAAOpD,OAAUtL,oBAAM0O,EAAOrJ,OAI/BqJ,EAAOpD,QAAUtL,oBAAM0O,EAAOrJ,QACnCvD,EAAOoN,cAAe,EACtBV,EAAc1M,EAAQ2M,EAAWC,GACjCjB,GAAa3L,EAAQ,QAAS4M,IAG9BqH,GAAUjU,EAAQ4M,EAAQD,IAT1B3M,EAAOoN,cAAe,EACtBV,EAAc1M,EAAQ2M,EAAWC,IAoBzC,SAAS0G,GAActT,EAAQ4M,EAAQxO,GACnC,GAAKF,oBAAM0O,EAAOrJ,OAad0Q,GAAUjU,EAAQ4M,EAAQ,eAT1B,GAHA5M,EAAO7B,eAAgBC,KAAMA,IAAQ,GACrC4B,EAAO4C,UAAYC,EAAc7C,IACjC8D,GAAK9D,EAAQqW,GAAkBrW,EAAO5B,MAClCwO,EAAOpD,MACPyK,GAAUjU,EAAQ4M,EAAQ,cAEzB,CACD,IAAInK,GAAShC,OAAQ,SAAUmM,OAAQA,GACvC5M,EAAOgH,QAAQ,UAAWvE,IAiBtC,SAAS+Q,GAETxT,EAAQ4M,EAAQxO,EAAMuO,GAClB,GAAKzO,oBAAM0O,EAAO+E,SAMdsC,GAAUjU,EAAQ4M,EAAQ,eANF,CACxBjB,GAAa3L,EAAQ2M,EAAW,KAAMC,EAAO+E,SAC7C,IAAIlP,GAAShC,OAAQ,UAAWmM,OAAQA,GACxC5M,EAAOgH,QAAQ,UAAWvE,IAelC,SAASwR,GAAUjU,EAAQ4M,EAAQnM,GAC/BkL,GAAa3L,EAAQ,QAAS4M,GAC9B,IAAInK,GAAShC,OAAQA,EAAQ+I,MAAOoD,EAAOpD,OAC3CxJ,EAAOgH,QAAQ,UAAWvE,GAc9B,SAAgBS,GAEhBlD,EAAQ8P,EAAO1R,EAAMkY,EAAcrT,EAAiBH,GAMhDqP,GAAWnS,GAHPS,OAAQ,SAAUrC,KAAMA,EAAMkY,aAAcA,EAAcrT,gBAAiBA,EAAiBH,cAAeA,EAC3GnF,KAAMqC,EAAO4C,UAEQ2T,GAAezG,GAY5C,SAASyG,GAAcvW,EAAQ4M,EAAQkD,GACnC,GAAK5R,oBAAM0O,EAAOrJ,OAMd0Q,GAAUjU,EAAQ4M,EAAQ,cANJ,CACtB5M,EAAOM,OAAOwP,EAAOlD,GACrB,IAAInK,GAAShC,OAAQ,SAAUmM,OAAQA,GACvC5M,EAAOgH,QAAQ,UAAWvE,IAgBlC,SAAgBwO,GAASjR,EAAQ5B,EAAMyF,GACnC,IAAI2S,EAAcxW,EAAOmG,aAAaqQ,YAAcxW,EAAOmG,aAAaqQ,YAAcxW,EAAOmG,aAAaC,IAGtGM,GAAc/I,MADL8C,OAAU,WAAYrC,KAAQA,EAAMa,MAAS4E,EAAOlG,KAAQqC,EAAO4C,UAClDiM,QAAQ,GACtC7O,EAAOgH,QAAQ,iBAAkBN,EAAW,SAAU+P,GAClD,IAAKA,EAAa5H,OAAQ,CACtB,IAAI6H,EAAO5N,gBAAc,QACrB/K,GAAIiC,EAAOhB,QAAQjB,GAAK,gBACxB4Y,OAASlW,OAAQ+V,EAAaI,OAAQ,OAAQxP,KAAM,eAAgByP,SAAY,MAEhFC,EAAQhO,gBAAc,SACtB/K,GAAIiC,EAAOhB,QAAQjB,GAAK,cACxB4Y,OAASvP,KAAM,gBAAiB7F,MAAOuS,KAAKC,UAAU0C,EAAa9Y,MAAO+V,KAAM,YAEpFgD,EAAKnN,YAAYuN,GACjB9W,EAAOhB,QAAQuK,YAAYmN,GAC3B3I,SAASgJ,MAAMC,UAAU,gBAAgBC,SACzCjX,EAAOhB,QAAQkY,YAAYR,MCzlBvC,SAAgB/K,GAAa3L,EAAQnC,EAAMsZ,EAAGxF,EAASyF,GACnD,IAAIC,EAihBR,SAAoBrX,EAAQnC,EAAMsZ,EAAGxF,EAASyF,GAC1C,IAGI7F,EACA+F,EACAC,EACAC,EACApS,EACAqS,EARAJ,GACAK,OAAQ,GAAIC,QAAS,GAAIC,WAAaC,WAAY,IAWtD,OAHAR,EAAQS,KAAO,WAAcC,GAAiB/X,EAAQA,EAAOyV,UAAW4B,EAAQQ,aAChFR,EAAQW,MAAQ,WAAcC,GAAkBjY,EAAQA,EAAOyV,UAAW4B,EAAQQ,aAClFha,EAAQ8T,IAAqC,IAA1BA,EAAQuG,cAA0B,sBAAwBra,GAEzE,IAAK,YACDwZ,EAAQQ,WAAa,gBACrBR,EAAQK,OAAShO,EAAc1J,EAAQ,oBACvCqX,EAAQM,QAAU,oFAClBN,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,kBAC/DgS,MAAO,SAAUmF,GACE,YAAXA,EAAEzD,MAGN2E,GAASrY,MAIrBqX,EAAQS,KA3HpB,SAA4B9X,GACxB,IAAIuO,EAAM9O,SAAO,WAAYO,EAAOyV,UAAUzW,SACzCuP,EAAIoH,cAAc/V,UAAUC,SAAS,sBACtCyY,GAAY/J,EAAK7E,EAAc1J,EAAQ,sBAE3CuO,EAAIoH,cAAcC,mBAAmBnM,UAAY,GACjD8E,EAAIgK,QAAU,WACVC,GAAWxY,EAAQuO,IAEvBA,EAAIkK,QAAU,SAAUtB,GACpB,IAAIvL,EAAO8M,GAAWvB,GACT,KAATvL,GACAyM,GAASrY,IAzBrB,SAAoBA,GAChB,IAAIuO,EAAM9O,SAAO,WAAYO,EAAOyV,UAAUzW,SAC9CuP,EAAIoK,QACJpK,EAAIhN,MAAQ,GACZ,IAAI6K,EAAMmC,EAAIhN,MAAM3C,OACpB2P,EAAIqK,kBAAkB,EAAGxM,GAuBzByM,CAAW7Y,GACX+X,GAAiB/X,EAAQA,EAAOyV,UAAW,kBA2GDqD,KAAKC,KAAM/Y,GAC7C,MACJ,IAAK,SACDqX,EAAQQ,WAAa,SACjB7X,EAAO0B,cAAc9C,OAAS,GAC9ByY,EAAQM,SAAW,QAAUjO,EAAc1J,EAAQ,2BAA6B,UAC3EyG,QAAQ,MAAOzG,EAAO0B,cAAc9C,OAAOmI,YAChDsQ,EAAQK,OAAShO,EAAc1J,EAAQ,4BAGvCqX,EAAQM,QAAU,QAAUjO,EAAc1J,EAAQA,EAAOyQ,OAAS,iBAAmB,yBAA2B,SAChH4G,EAAQK,OAAShO,EAAc1J,EAAQA,EAAOyQ,OAAS,gBAAkB,yBAE7E4G,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,eAC/DgS,MAAO,SAAUmF,IA6QrC,SAAwBnX,GACpBA,EAAOyV,UAAUI,OACjB7V,EAAOM,OAAO0Y,OA9QMC,CAAejZ,MAInBmY,aAAeR,QAASjO,EAAc1J,EAAQ,cAC9CgS,MAAO,WACHhS,EAAOyV,UAAUI,UAI7B,MACJ,IAAK,SACDwB,EAAQQ,WAAa,SACrBR,EAAQK,OAAShO,EAAc1J,EAAQ,iBACvCqX,EAAQM,QAAU,gFAClBN,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,gBAC/DgS,MAAO,SAAUmF,GACE,YAAXA,EAAEzD,MAGNwF,GAAWlZ,MAIvBqX,EAAQS,KA9IpB,SAA4B9X,GACxB,IAAImZ,EAAW1Z,SAAO,UAAWO,EAAOyV,UAAUzW,SAC7Cma,EAASxD,cAAc/V,UAAUC,SAAS,sBAC3CyY,GAAYa,EAAUzP,EAAc1J,EAAQ,mBAEhDmZ,EAASxD,cAAcC,mBAAmBnM,UAAY,GACtD0P,EAASZ,QAAU,WACfC,GAAWxY,EAAQmZ,IAEvBA,EAASV,QAAU,SAAUtB,GACzB,IAAIvL,EAAO8M,GAAWvB,GACT,KAATvL,GACAsN,GAAWlZ,IAavB,SAA4BA,EAAQmZ,GAChCA,EAASR,QACT,IAAIS,EAAM,GACV,GAAIpZ,EAAOyQ,SAAWzQ,EAAOqZ,kBAAmB,CAC5C,IAAIC,EAAQtZ,EAAOwQ,gBAAgB3F,YAAY,KAC/CuO,GAAkB,IAAXE,EAAgBtZ,EAAOwQ,gBAAkBxQ,EAAOwQ,gBAAgB5F,UAAU,EAAG0O,QAGpFF,EAAMpZ,EAAOwQ,gBAEjB2I,EAAS5X,MAAQ6X,EACbpZ,EAAOyQ,QAAUzQ,EAAOqZ,oBAAuD,IAAjCF,EAAS5X,MAAMkE,QAAQ,KACrE0T,EAASP,kBAAkB,EAAGO,EAAS5X,MAAMsJ,YAAY,MAGzDsO,EAASP,kBAAkB,EAAGO,EAAS5X,MAAM3C,QAzBjD2a,CAAmBvZ,EAAQmZ,GAC3BpB,GAAiB/X,EAAQA,EAAOyV,UAAW,WA8HDqD,KAAKC,KAAM/Y,GAC7C,MACJ,IAAK,UACDqX,EAAQQ,WAAa,eACrBN,EAAO,IAAIiC,uBAAqBxZ,EAAOgK,QACvCsN,EAAkBC,EAAKkC,WAAW,IAAI5S,KAAK8K,EAAQ+H,WAAaC,OAAQ,2BACxEpI,EAAa,GACRrT,oBAAMyT,EAAQJ,cACfA,EAAa,WAAa7H,EAAc1J,EAAQ,cAAgB,mBAAqB4Z,GAAY,MFonBjH,SAA+Bjc,GAG3B,IAAK,IAFDkc,EAAM,GACNC,EAAOC,OAAOD,KAAKnc,GACdgB,EAAI,EAAGA,EAAImb,EAAKlb,OAAQD,IACb,YAAZmb,EAAKnb,KACLkb,IAAc,IAANlb,EAAU,GAAK,MAAQmb,EAAKnb,GAAK,KAAOb,WAASgc,EAAKnb,GAAIhB,IAG1E,OAAOkc,EE3nBWG,CAAerI,EAAQJ,YAAc,cAE/C8F,EAAQK,OAAS/F,EAAQvK,KACzBiQ,EAAQM,QAAU,kBACDjO,EAAc1J,EAAQ,QAAU,mBAAqB4Z,GAAY,aAC7EjI,EAAQlB,OAAS,OAAS,UAAY,MAAQkB,EAAQlB,OAAS,OAAS,UAAY,qBACxE/G,EAAc1J,EAAQ,QAAU,yBAA2B4Z,GAAY,aACpFjI,EAAQsI,KAAO,KAAOtI,EAAQsI,KAAO,4BACxBvQ,EAAc1J,EAAQ,YAAc,mBAAqB4Z,GAAY,YAClFjI,EAAQ8F,SAAW,KAAO9F,EAAQ8F,SAAW,qBAChC/N,EAAc1J,EAAQ,YAAc,mBAAqB4Z,GAAY,MAChFtC,EAAkB,aAClB/F,EAAa,WACnB8F,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,cAC/DgS,MAAO,SAAUmF,GACbnX,EAAOyV,UAAUI,UAI7B,MACJ,IAAK,sBACD,IAAIqE,EACJ7C,EAAQQ,WAAa,oBAKJsC,IAJjB3C,EAASxX,EAAO4C,SAASwX,IAAI,SAAUC,GAEnC,OAAoB,KADpBH,EAAUG,EAAIjT,KAAK3B,QAAQ,KAAO,IACP4U,EAAI5J,OAAoC,IAAZyJ,EAAiBG,EAAIjT,KAAKkT,OAAOJ,GAASzT,QAAQ,IAAK,IAAM,eAA1E,YAEnC,KACP+Q,EAAS7F,EAAQvK,KAAK1B,MAAM,KAAK0U,IAAI,SAAUC,GAE3C,OAAoB,KADpBH,EAAUG,EAAI5U,QAAQ,KAAO,GACJ,SAAW4U,EAAIC,OAAOJ,GAASzT,QAAQ,IAAK,OAG7ErB,EAAWoS,EAAO+C,MAAM,SAAUF,EAAK1b,EAAG6b,GAAO,OAAOH,IAAQG,EAAI,KAChD,WAAdhD,EAAO,GAAmB,SAAWA,EAAO,GAAGiD,oBAAsB,QAAW,iBACtFhD,EAAW9F,EAAQ8F,SACnBJ,EAAQK,OAAS/F,EAAQvK,KACzBiQ,EAAQM,QAAU,kBAAoBjO,EAAc1J,EAAQ,QACtD,oBAAsB4Z,GAAY,KAAOxU,EAAW,qBACzCsE,EAAc1J,EAAQ,QAAU,aAC7C2R,EAAQsI,KAAO,gBAAkBL,GAAY,aAAejI,EAAQsI,KAClE,8BAAqCvQ,EAAc1J,EAAQ,YAC7D,oBAAsB4Z,GAAY,YAAcnC,EAAW,KACzDA,EAAW,qBACjBJ,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,cAC/DgS,MAAO,SAAUmF,GACE,YAAXA,EAAEzD,MAGN1T,EAAOyV,UAAUI,UAI7B,MACJ,IAAK,QACD7V,EAAOM,OAAOoa,OACdrD,EAAQQ,WAAa,QACA,QAAjBV,EAAE3N,MAAMoC,KACRyL,EAAQK,OAAS,oFACbhO,EAAc1J,EAAQ,iBAAmB,SAG7CqX,EAAQK,OAAShO,EAAc1J,EAAQ,SAE3CqX,EAAQM,QAAU,eAAiBgD,GAAoB,KAAOxD,EAAE3N,MAAMqC,QAAU,SAChFwL,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,cAC/DgS,MAAO,SAAUmF,GACbnX,EAAOyV,UAAUI,UAMrC,OAAOwB,EAjrBOuD,CAAW5a,EAAQnC,EAAMsZ,EAAGxF,GACtCzT,oBAAM8B,EAAOyV,YACbzV,EAAOyV,UAAY,IAAIoF,UACnBC,WAAYC,GAAcjC,KAAKC,KAAM/Y,EAAQqX,EAAQQ,YACrDmD,YAAa,SAAUvY,GACnBwY,GAAwBjb,EAAQA,EAAOyV,UAAWhT,EAAM4U,EAAQQ,aAEpEH,OAAQL,EAAQK,OAChBC,QAASN,EAAQM,QACjBC,QAASP,EAAQO,QACjBsD,mBAAqBC,OAAQ,QAC7BC,eAAe,EACfC,eAAe,EACf3F,SAAS,EACT4F,eAAe,EACfC,SAAS,EACTjM,OAAQtP,EAAOwb,YAAcxb,EAAOwb,YAAc,IAAMxb,EAAOhB,QAAQjB,GACvEsM,SAAUF,EAAYnK,EAAQA,EAAOwK,SAAWiR,GAAgBC,IAChEC,MAAO,QACP7D,KAAMT,EAAQS,KACdE,MAAOX,EAAQW,MACf4D,UAAW5b,EAAO4b,UAClBC,oBAAqB7b,EAAO6b,oBAC5B7R,OAAQhK,EAAOgK,SAEnBhK,EAAOyV,UAAUqG,kBAAmB,EACpC9b,EAAOyV,UAAUsG,SAAS,IAAM/b,EAAOhB,QAAQjB,GAAKie,KAsuB5D,SAAuBhc,EAAQqX,GAC3BrX,EAAOyV,UAAUiC,OAASL,EAAQK,OAClC1X,EAAOyV,UAAUkC,QAAUN,EAAQM,QACnC3X,EAAOyV,UAAUmC,QAAUP,EAAQO,QACnC5X,EAAOyV,UAAUmG,UAAY5b,EAAO4b,UACpC5b,EAAOyV,UAAUqC,KAAOT,EAAQS,KAChC9X,EAAOyV,UAAUuC,MAAQX,EAAQW,MACjChY,EAAOyV,UAAUqF,WAAaC,GAAcjC,KAAKC,KAAM/Y,EAAQqX,EAAQQ,YACvE7X,EAAOyV,UAAUuF,YAAc,SAAUvY,GACrCwY,GAAwBjb,EAAQA,EAAOyV,UAAWhT,EAAM4U,EAAQQ,aAEpE7X,EAAOyV,UAAUwG,WACjBjc,EAAOyV,UAAUyG,OA/uBbC,CAAcnc,EAAQqX,GAY9B,SAAgBjB,GAAgBpW,EAAQnC,EAAMuZ,EAAc7K,GACxD,IAAI6P,EAoHR,SAAuBpc,EAAQnC,EAAMuZ,EAAc7K,GAC/C,IAGI8P,EACArW,EACAsT,EALAjC,GACAK,OAAQ,GAAIC,QAAS,GAAIC,WAAaC,WAAY,IAOtD,OAFAR,EAAQS,KAAO,WAAcC,GAAiB/X,EAAQA,EAAOsc,aAAcjF,EAAQQ,aACnFR,EAAQW,MAAQ,WAAcC,GAAkBjY,EAAQA,EAAOsc,aAAcjF,EAAQQ,aAC7Eha,GACJ,IAAK,YACDwZ,EAAQK,OAAShO,EAAc1J,EAAQ,8BACvCqX,EAAQM,QAAU,QAAUjO,EAAc1J,EAAQ,+BAAiC,SACnFqX,EAAQO,UACAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,eAC/DgS,MAAO,WACHhS,EAAOsc,aAAazG,OACpBjD,GAAO5S,EAAQuM,EAASvM,EAAOuc,eAInCpE,aAAeR,QAASjO,EAAc1J,EAAQ,cAC9CgS,MAAO,WACHhS,EAAOsc,aAAazG,OACpB7V,EAAOyV,UAAUI,UAG7BwB,EAAQQ,WAAa,mBACrB,MACJ,IAAK,iBACDR,EAAQQ,WAAa,kBACrB7X,EAAOoX,aAAeA,EACtBpR,EAAOhG,EAAOoX,aAAapX,EAAOmW,YAClCmD,EAAQtT,EAAK6E,YAAY,KACzB7E,GAAkB,IAAXsT,EAAetT,EAAOA,EAAK4E,UAAU0O,GAC5CjC,EAAQK,OAAShO,EAAc1J,EAAQ,oBACvCqc,EAAmB,QAAU3S,EAAc1J,EAAQ,qBAAuB,SAC1EqX,EAAQM,QAAU,EAAmBlR,QAAQ,MAAOT,GACpDqR,EAAQW,MAAQ,WACZ,IAAKhY,EAAOqN,WAA8C,IAAjCrN,EAAO+M,eAAenO,OAAc,CACzD,IAAI6D,GAASkE,YAAa3G,EAAOkN,gBACjClN,EAAOgH,QAAQ,cAAevE,GAC9BzC,EAAOqN,UAAYrN,EAAOsL,YAAa,EAE3C2M,GAAkBjY,EAAQA,EAAOsc,aAAcjF,EAAQQ,aAE3DR,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,eAC/DgS,MAAO,WAIH,GAHAhS,EAAO+M,eAAelO,KAAKmB,EAAOoX,aAAapX,EAAOmW,aACtDnW,EAAOmN,iBAAiBtO,KF+wBhD,SAAiCmB,EAAQoH,GAKrC,IAAK,IAHDzJ,EAAO,KAEP6e,EAAUxc,EAAOsL,WAAatL,EAAOkO,SAAWlO,EAAOI,cAClDzB,EAAI,EAAGA,EAAI6d,EAAQ5d,OAAQD,IAChC,GAAIb,WAAS,OAAQ0e,EAAQ7d,MAAQyI,EAAM,CACvCzJ,EAAO6e,EAAQ7d,GACf,MAGR,OAAOhB,EE1xB0C8e,CAAiBzc,EAAQA,EAAOoX,aAAapX,EAAOmW,cACjFnW,EAAOmW,aACHiB,EAAapX,EAAOmW,YAAa,CACjC,IAAIuG,EAAS1c,EAAOoX,aAAapX,EAAOmW,YACpCwG,EAAWD,EAAO7R,YAAY,KAClC6R,GAAuB,IAAdC,EAAkBD,EAASA,EAAO9R,UAAU+R,GACrD3c,EAAOsc,aAAa3E,QAAU,EAAmBlR,QAAQ,MAAOiW,GAChE1c,EAAOsc,aAAaJ,WAEnB,CACDlc,EAAOsc,aAAazG,OACpB,IAAI9U,EAAaf,EAAOsL,WAAatL,EAAOgM,SAAWhM,EAAOe,WAC1D3C,EAAO4B,EAAOsL,WAAatL,EAAO+L,SAAmC,KAAtB/L,EAAOuL,WAAqBvL,EAAO5B,KAClF4B,EAAOuL,WACP9K,EAAST,EAAOsL,WAAa,OAAStL,EAAOkF,WACjDwG,GAAM1L,EAAQe,EAAYf,EAAO+M,eAAgB3O,EAAMqC,EAAQT,EAAO+M,eAAgB/M,EAAOmN,sBAKrGgL,aAAeR,QAASjO,EAAc1J,EAAQ,cAC9CgS,MAAO,WAEH,GADAhS,EAAOmW,aACHiB,EAAapX,EAAOmW,YAAa,CACjC,IAAIyG,EAAS5c,EAAOoX,aAAapX,EAAOmW,YACpC0G,EAAMD,EAAO/R,YAAY,KAC7B+R,GAAkB,IAATC,EAAaD,EAASA,EAAOhS,UAAUiS,GAChD7c,EAAOsc,aAAa3E,QAAU,EAAmBlR,QAAQ,MAAOmW,GAChE5c,EAAOsc,aAAaJ,YAIpB,GADAlc,EAAOsc,aAAazG,OACiB,IAAjC7V,EAAO+M,eAAenO,OAAc,CACpC,IAAI6B,EAAST,EAAOsL,WAAa,OAAStL,EAAOkF,WAC7CnE,EAAaf,EAAOsL,WAAatL,EAAOgM,SAAWhM,EAAOe,WAC1D3C,EAAO4B,EAAOsL,WAAatL,EAAO+L,SAAmC,KAAtB/L,EAAOuL,WAAqBvL,EAAO5B,KAClF4B,EAAOuL,WACXG,GAAM1L,EAAQe,EAAYf,EAAO+M,eAAgB3O,EAAMqC,EAAQT,EAAO+M,eAAgB/M,EAAOmN,sBAMjH,MACJ,IAAK,cACDkK,EAAQQ,WAAa,eACrBR,EAAQK,OAAShO,EAAc1J,EAAQ,gBACvCqX,EAAQM,QAAU3X,EAAO8c,WAAW,GAAG1V,KAAO,kCACzCsC,EAAc1J,EAAQ,iBAAoB,SAC/CqX,EAAQS,KA+GpB,SAAqB9X,EAAQyC,GACzBzC,EAAO+c,eAAgB,EACvB,IAAIC,EAAYlf,WAAS,UAAW2E,GAChCwa,EAAYxd,SAAO,iBAAkBud,GACrCE,EAAiBld,EAAO8I,cAAc,OACtCC,UAAW,mBAEXoU,EAAWnd,EAAO8I,cAAc,SAChC/K,GAAIiC,EAAOhB,QAAQjB,GAAK,cAE5Bmf,EAAe3T,YAAY4T,GAC3BF,EAAU1T,YAAY2T,GACJ,IAAIE,YAClBC,MAAO3T,EAAc1J,EAAQ,kBAC7Bsd,OAAQ,SAAU7a,GACdzC,EAAOud,YAAc9a,EAAK+a,WAGtBzB,SAAS,IAAM/b,EAAOhB,QAAQjB,GAAK,aAC/Cga,GAAiB/X,EAAQA,EAAOsc,aAAc,iBAlIXxD,KAAKC,KAAM/Y,GACtCqX,EAAQW,MAAQ,WACZhY,EAAO+c,eAAgB,EACvBU,GAAczd,GACdiY,GAAkBjY,EAAQA,EAAOsc,aAAcjF,EAAQQ,aAE3DR,EAAQO,UAEAO,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,qBAC/DgS,MAAO,WACH0L,GAAe1d,GAAQ,MAI3BmY,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,mBAC/DgS,MAAO,WACH0L,GAAe1d,GAAQ,MAI3BmY,aAAeC,WAAW,EAAMT,QAASjO,EAAc1J,EAAQ,gBAC/DgS,MAAO,WACH,IAAI/E,EAAQ,EACRjN,EAAOud,aACPtQ,EAAQjN,EAAO8c,WAAWle,OAC1BoB,EAAO8c,cACPW,GAAczd,KAGdiN,EAAQ,EACRjN,EAAO8c,WAAWa,OAAO,EAAG,GACK,IAA7B3d,EAAO8c,WAAWle,OAClBwX,GAAgBpW,EAAQ,eAGxByd,GAAczd,IAGtBA,EAAOM,OAAOsd,IAAqB3Q,MAAOA,OAM9D,OAAOoK,EApQUwG,CAAc7d,EAAQnC,EAAMuZ,EAAc7K,GAC3DvM,EAAOud,aAAc,EACjBrf,oBAAM8B,EAAOsc,eACbtc,EAAOsc,aAAe,IAAIzB,UACtBC,WAAYgD,GAAchF,KAAKC,KAAM/Y,EAAQoc,EAAWvE,YACxDmD,YAAa,SAAUvY,GACnBwY,GAAwBjb,EAAQA,EAAOsc,aAAc7Z,EAAM2Z,EAAWvE,aAE1EF,QAASyE,EAAWzE,QACpBD,OAAQ0E,EAAW1E,OACnB2D,eAAe,EACfC,eAAe,EACfJ,mBAAqBC,OAAQ,QAC7B7L,OAAQtP,EAAOwb,YAAcxb,EAAOwb,YAAc,IAAMxb,EAAOhB,QAAQjB,GACvEsM,SAAUF,EAAYnK,EAAQA,EAAOwK,SAAWiR,GAAgBC,IAChEE,UAAW5b,EAAO4b,UAClBR,eAAe,EACfG,SAAS,EACTI,MAAO,IACP/D,QAASwE,EAAWxE,QACpBE,KAAMsE,EAAWtE,KACjBE,MAAOoE,EAAWpE,MAClB6D,oBAAqB7b,EAAO6b,oBAC5B7R,OAAQhK,EAAOgK,SAEnBhK,EAAOsc,aAAaR,kBAAmB,EACvC9b,EAAOsc,aAAaP,SAAS,IAAM/b,EAAOhB,QAAQjB,GAAKggB,MAGvD/d,EAAOsc,aAAa5E,OAAS0E,EAAW1E,OACxC1X,EAAOsc,aAAatE,MAAQoE,EAAWpE,MACvChY,EAAOsc,aAAaxE,KAAOsE,EAAWtE,KACtC9X,EAAOsc,aAAatE,MAAQoE,EAAWpE,MACvChY,EAAOsc,aAAa3E,QAAUyE,EAAWzE,QACzC3X,EAAOsc,aAAa1E,QAAUwE,EAAWxE,QACzC5X,EAAOsc,aAAaV,UAAY5b,EAAO4b,UACvC5b,EAAOsc,aAAatS,OAAShK,EAAOgK,OACpChK,EAAOsc,aAAaxB,WAAagD,GAAchF,KAAKC,KAAM/Y,EAAQoc,EAAWvE,YAC7E7X,EAAOsc,aAAatB,YAAc,SAAUvY,GACxCwY,GAAwBjb,EAAQA,EAAOsc,aAAc7Z,EAAM2Z,EAAWvE,aAE1E7X,EAAOsc,aAAaL,WACpBjc,EAAOsc,aAAaJ,QAY5B,SAAS8B,GAAuBhe,EAAQie,EAAWxb,EAAMoV,GACrD,IAAInR,GACAmI,OAAQpM,EAAKoM,OAAQqP,UAAWrG,EAAYsG,YAAaF,GAE7Dje,EAAOgH,QAAQ,kBAAmBN,EAAW,SAAU0X,GACnD3b,EAAKoM,OAASuP,EAAUvP,SAYhC,SAASoM,GAAwBjb,EAAQie,EAAWxb,EAAMoV,GACtD,IAAInR,GACAmI,OAAQpM,EAAKoM,OAAQsP,YAAaF,EAAWC,UAAWrG,GAE5D7X,EAAOgH,QAAQ,mBAAoBN,EAAW,SAAU0X,GACpD3b,EAAKoM,OAASuP,EAAUvP,OACnBpM,EAAKoM,SAAUpM,EAAK4b,cAAiC,WAAfxG,GAA4C,kBAAfA,GACpE7X,EAAOgH,QAAQ0T,SAY3B,SAAS3C,GAAiB/X,EAAQie,EAAWpG,GACzC,IAAIpV,GAAS0b,YAAaF,EAAWjf,QAASif,EAAUjf,QAASkf,UAAWrG,GAC5E7X,EAAOgH,QAAQ,YAAavE,GAUhC,SAASwV,GAAkBjY,EAAQie,EAAWpG,GAC1C,IAAIpV,GAAS0b,YAAaF,EAAWjf,QAASif,EAAUjf,QAASkf,UAAWrG,GAC5E7X,EAAOgH,QAAQ,aAAcvE,GAqKjC,SAASib,GAAe1d,EAAQse,GACxBte,EAAOud,aACHe,EAmFZ,SAAuBte,GACnB,KAAoC,IAA7BA,EAAO8c,WAAWle,QACrBoB,EAAOue,UAAU1f,MAAO4B,OAAQ,WAAY4E,KAAMrF,EAAO8c,WAAW,KACpE9c,EAAOkP,UAAUsP,MAAMxe,EAAO8c,WAAW,IACzC9c,EAAO8c,WAAWa,OAAO,EAAG,GAtFxBc,CAAcze,GA+F1B,SAAsBA,GAClB,KAAoC,IAA7BA,EAAO8c,WAAWle,QACrBoB,EAAOue,UAAU1f,MAAO4B,OAAQ,UAAW4E,KAAMrF,EAAO8c,WAAW,KACnE9c,EAAOkP,UAAUsP,MAAMxe,EAAO8c,WAAW,IACzC9c,EAAO8c,WAAWa,OAAO,EAAG,GAhGxBe,CAAa1e,GAEjByd,GAAczd,KAGdA,EAAOue,UAAU1f,MACb4B,OAAQ6d,EAAa,WAAa,UAClCjZ,KAAMrF,EAAO8c,WAAW,KAE5B9c,EAAOkP,UAAUsP,MAAMxe,EAAO8c,WAAW,IACzC9c,EAAO8c,WAAWa,OAAO,EAAG,GACK,IAA7B3d,EAAO8c,WAAWle,OAClBwX,GAAgBpW,EAAQ,eAGxByd,GAAczd,IAU1B,SAASyd,GAAczd,GACnB,IAAI2e,GAAO,EACP3e,EAAO+c,cACP/c,EAAO+c,eAAgB,EAGvB4B,GAAO,EAEX,IAAIpQ,EAAM9O,SAAO,kBAAmBO,EAAOsc,aAAatd,SACpDuP,GACAtM,SAAOsM,GAEPoQ,EACA3e,EAAOsc,aAAazG,OAGpB7V,EAAO8c,cAuJf,SAASxE,GAAY/J,EAAKqQ,GACtBC,QAAMvG,aACFtZ,QAASuP,EACTuQ,YACIF,YAAaA,KA0LzB,SAAS7D,GAAc/a,EAAQ6X,EAAYpV,GAEvCsc,GADiBC,YAAU,SAAUhf,EAAOyV,UAAUzW,UAEtDgf,GAAuBhe,EAAQA,EAAOyV,UAAWhT,EAAMoV,GAU3D,SAASiG,GAAc9d,EAAQif,EAASxc,GAEpCsc,GADiBC,YAAU,SAAUhf,EAAOsc,aAAatd,UAEzDgf,GAAuBhe,EAAQA,EAAOsc,aAAc7Z,EAAMwc,GAQ9D,SAASF,GAAeG,GAapB,IAAK,IAZDC,EAAU,SAAUC,GACpBF,EAAWE,GAAUC,UAAY,SAAUlI,GACrB,KAAdA,EAAEmI,SACFnI,EAAEoI,kBAGVL,EAAWE,GAAU3G,QAAU,SAAUtB,GACnB,KAAdA,EAAEmI,SACFJ,EAAWE,GAAUpN,UAIxBoN,EAAW,EAAGA,EAAWF,EAAWtgB,OAAQwgB,IACjDD,EAAQC,GAmDhB,SAAS/G,GAASrY,GACd,IAAIuO,EAAM9O,SAAO,WAAYO,EAAOyV,UAAUzW,SAC9CwgB,GAAiBxf,EAAQuO,GAC8B,KAAnDA,EAAIoH,cAAcC,mBAAmBnM,WAGzC4I,GAAarS,EAAQuO,EAAIhN,OAS7B,SAAS2X,GAAWlZ,GAChB,IAAIuO,EAAM9O,SAAO,UAAWO,EAAOyV,UAAUzW,SAE7C,GADAwgB,GAAiBxf,EAAQuO,GAC8B,KAAnDA,EAAIoH,cAAcC,mBAAmBnM,UAAzC,CAGA,IAAI5L,EAAO0Q,EAAIhN,MACXke,EAASzf,EAAOwQ,gBAAgB3F,YAAY,KAChD,GAAI7K,EAAOyQ,SAAWzQ,EAAOqZ,kBAAmB,CAE5Cxb,IADwB,IAAZ4hB,EAAiB,GAAKzf,EAAOwQ,gBAAgB8J,OAAOmF,GAIpE,GADAzf,EAAOuc,WAAa1e,EAChBmC,EAAOwQ,kBAAoB3S,EAA/B,CAIA,IAAI0O,EAAmC,mBAAxBvM,EAAOc,aAAqCE,EAAchB,EAAO5B,MAAQ4B,EAAO5B,KAE/F,GADA4B,EAAO0f,UAAY5hB,WAAS,KAAMkC,EAAO4C,SAAS,IAC9C5C,EAAOyQ,OAAQ,CACf,IAAIkP,GAA4B,IAAZF,EAAiB,GAAKzf,EAAOwQ,gBAAgB8J,OAAOmF,GACpEG,EAAS/hB,EAAKgN,YAAY,KAC1BgV,GAA4B,IAAZD,EAAiB,GAAK/hB,EAAKyc,OAAOsF,GAClD5f,EAAOqZ,mBAAqBsG,IAAiBE,EAC7CzJ,GAAgBpW,EAAQ,YAAa,KAAMuM,GAG3CqG,GAAO5S,EAAQuM,EAAS1O,QAI5B+U,GAAO5S,EAAQuM,EAAS1O,QAjBxBmC,EAAOyV,UAAUI,QAqCzB,SAAS2C,GAAWxY,EAAQuO,GACpB,eAAeuR,KAAKvR,EAAIhN,OACxBwe,GAAW/f,EAAQuO,GAEA,KAAdA,EAAIhN,MACTgN,EAAIoH,cAAcC,mBAAmBnM,UAAYC,EAAc1J,EAAQ,oBAGvEuO,EAAIoH,cAAcC,mBAAmBnM,UAAY,GAUzD,SAAS+V,GAAiBxf,EAAQuO,GAC9BiK,GAAWxY,EAAQuO,GACnB,IAAInC,EAAMmC,EAAIhN,MAAM3C,OAAS,EACX,KAAd2P,EAAIhN,OAAkBgN,EAAIhN,MAAMsJ,YAAY,OAASuB,GAASmC,EAAIhN,MAAMsJ,YAAY,OAASuB,IAC5FpM,EAAOqZ,oBAAmE,IAA7CrZ,EAAOwQ,gBAAgB3F,YAAY,MACjEkV,GAAW/f,EAAQuO,GAU3B,SAASwR,GAAW/f,EAAQuO,GACxB,IAAI/E,EAAQE,EAAc1J,EAAQ,sBAAsByG,QAAQ,MAAO,IAAM8H,EAAIhN,MAAQ,KACrFvB,EAAO6b,oBACPtN,EAAIoH,cAAcC,mBAAmBjW,YAAc6J,EAGnD+E,EAAIoH,cAAcC,mBAAmBnM,UAAYD,EASzD,SAASkP,GAAWvB,GAWhB,OATIA,EAAEmI,QACKnI,EAAEmI,QAEJnI,EAAE6I,MACA7I,EAAE6I,MAGF7I,EAAE8I,SAYjB,SAAgBC,GAAkBlgB,EAAQ0X,EAAQ9Q,GAC9C,IAAI+Q,EAAU7O,gBAAc,OAASC,UAAW,iBAC5CoX,EAAQrX,gBAAc,OAASC,UAAW,UAAW4N,OAASyJ,IAAKxZ,EAAUyZ,IAAK3I,KACtFC,EAAQpO,YAAY4W,GAChBjiB,oBAAM8B,EAAOsgB,YACbtgB,EAAOsgB,UAAY,IAAIzF,UACnBnD,OAAQA,EACRC,QAASA,EACTuD,mBAAqBC,OAAQ,QAC7BC,eAAe,EACfC,eAAe,EACf3F,SAAS,EACT6F,SAAS,EACTI,MAAO,QACP4E,OAAQ,QACRjR,OAAQtP,EAAOwb,YAAcxb,EAAOwb,YAAc,IAAMxb,EAAOhB,QAAQjB,GACvEsM,SAAUF,EAAYnK,EAAQA,EAAOwK,SAAWiR,GAAgBC,IAChE1R,OAAQhK,EAAOgK,OACfwW,cAAc,EACdlF,eAAe,EACfO,oBAAqB7b,EAAO6b,oBAC5B4E,UAAYC,EAAG,SAAUC,EAAG,UAC5B/E,UAAW5b,EAAO4b,UAClB9D,KA6BZ,SAAmB9X,GACfqQ,WAAW,WACHrQ,EAAOsgB,WACPtgB,EAAOsgB,UAAUthB,QAAQ2Z,UAGjCiI,GAAY5gB,GACZ+X,GAAiB/X,EAAQA,EAAOsgB,UAAW,kBApCnBxH,KAAKC,KAAM/Y,GAC3BgY,MAAO,WAAcC,GAAkBjY,EAAQA,EAAOsgB,UAAW,kBACjExF,WAAY,SAAUrY,GAClBub,GAAuBhe,EAAQA,EAAOsgB,UAAW7d,EAAM,kBAE3DuY,YAAa,SAAUvY,GACnBwY,GAAwBjb,EAAQA,EAAOsgB,UAAW7d,EAAM,kBAE5Doe,SAAUD,GAAY9H,KAAKC,KAAM/Y,GACjC8gB,WAAYF,GAAY9H,KAAKC,KAAM/Y,KAEvCA,EAAOsgB,UAAUxE,kBAAmB,EACpC9b,EAAOsgB,UAAUvE,SAAS,IAAM/b,EAAOhB,QAAQjB,GAAKgjB,MAGpD/gB,EAAOsgB,UAAU7b,UACjBzE,EAAOsgB,UAAU5I,OAASA,EAC1B1X,EAAOsgB,UAAU3I,QAAUA,EAC3B3X,EAAOsgB,UAAU1E,UAAY5b,EAAO4b,UACpC5b,EAAOsgB,UAAUrE,WACjBjc,EAAOsgB,UAAUpE,QAwBzB,SAAS0E,GAAY5gB,GACjB,IAAI2X,EAAUlY,SAAO,iBAAkBO,EAAOsgB,UAAUthB,SACpDgiB,EAAUvhB,SAAO,gBAAiBO,EAAOsgB,UAAUthB,SACnDiiB,EAASlS,OAAOmS,iBAAiBvJ,EAAS,MAC1CwJ,EAAeF,EAAU,EAAIG,WAAWH,EAAOI,cAAiB,GAChEC,EAAgBL,EAAU,EAAIG,WAAWH,EAAOM,eAAkB,GACtEP,EAAQpX,MAAM+R,MAAShE,EAAQ6J,YAAcL,EAAgB,KAC7DH,EAAQpX,MAAM2W,OAAU5I,EAAQlP,aAAe6Y,EAAiB,KC3/BpE,IAAIG,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAM5DK,GAA8B,SAAUC,GAExC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAc/D,OAhBA0I,GAAUuB,EAAcC,GAIxBX,IACIa,WAAS,OACVH,EAAaZ,UAAW,mBAAe,GAC1CE,IACIa,WAAS,OACVH,EAAaZ,UAAW,mBAAe,GAC1CE,IACIa,WAAS,OACVH,EAAaZ,UAAW,iBAAa,GACxCE,IACIa,WAAS,OACVH,EAAaZ,UAAW,WAAO,GAC3BY,GACTI,iBCzCE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAGrDU,IAAgB,YAAa,SAAU,MAAO,OAAQ,QAAS,SAAU,WAAY,SAC5F,SAAU,UAAW,YAAa,OAAQ,WAI1CC,GAAiC,SAAUL,GAE3C,SAASK,IACL,OAAkB,OAAXL,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAQ/D,OAVA0I,GAAU6B,EAAiBL,GAI3BX,IACIa,WAASE,KACVC,EAAgBlB,UAAW,aAAS,GACvCE,IACIa,YAAS,IACVG,EAAgBlB,UAAW,eAAW,GAClCkB,GACTF,iBCrCE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAM5DY,GAAgC,SAAUN,GAE1C,SAASM,IACL,OAAkB,OAAXN,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAc/D,OAhBA0I,GAAU8B,EAAgBN,GAI1BX,IACIa,YAAS,IACVI,EAAenB,UAAW,2BAAuB,GACpDE,IACIa,WAAS,aACVI,EAAenB,UAAW,kBAAc,GAC3CE,IACIa,YAAS,IACVI,EAAenB,UAAW,kBAAc,GAC3CE,IACIa,WAAS,OACVI,EAAenB,UAAW,mBAAe,GACrCmB,GACTH,iBCzCE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAMrDa,KAEH1Y,MAAO,OAAQ2Y,WAAY,OAAQC,SAAU,IAC7CC,SAAU,yCAA0CC,kBAAoBC,MAAO,oBAG/E/Y,MAAO,eAAgB2Y,WAAY,eAAgB/P,KAAM,WACzDiG,OAAQ,sBAAuB+J,SAAU,IAAK/H,MAAO,QAGrD7Q,MAAO,OAAQ2Y,WAAY,OAAQC,SAAU,GAAI/H,MAAO,MAAOgI,SAAU,2CAM7EG,GAAqC,SAAUb,GAE/C,SAASa,IACL,OAAkB,OAAXb,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAQ/D,OAVA0I,GAAUqC,EAAqBb,GAI/BX,IACIa,YAAS,IACVW,EAAoB1B,UAAW,sBAAkB,GACpDE,IACIa,WAASK,KACVM,EAAoB1B,UAAW,eAAW,GACtC0B,GACTV,iBCnDE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAGrDoB,IAAa,OAAQ,IAAK,MAAO,OAAQ,IAAK,SAAU,WAAY,SAAU,IAAK,WACnFC,IAAe,OAAQ,IAAK,MAAO,OAAQ,QAAS,IAAK,SAAU,SAAU,WAAY,IAAK,WAC9FC,IACP,SAAU,OAAQ,UAAW,IAAK,QAAS,IAAK,YAAa,SAAU,IAAK,UAAW,IAAK,aAK5FC,GAAqC,SAAUjB,GAE/C,SAASiB,IACL,OAAkB,OAAXjB,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAc/D,OAhBA0I,GAAUyC,EAAqBjB,GAI/BX,IACIa,WAASY,KACVG,EAAoB9B,UAAW,YAAQ,GAC1CE,IACIa,WAASa,KACVE,EAAoB9B,UAAW,cAAU,GAC5CE,IACIa,WAASc,KACVC,EAAoB9B,UAAW,cAAU,GAC5CE,IACIa,YAAS,IACVe,EAAoB9B,UAAW,eAAW,GACtC8B,GACTd,iBC9CE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAM5DwB,GAAwC,SAAUlB,GAElD,SAASkB,IACL,OAAkB,OAAXlB,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAc/D,OAhBA0I,GAAU0C,EAAwBlB,GAIlCX,IACIa,WAAS,UACVgB,EAAuB/B,UAAW,gBAAY,GACjDE,IACIa,WAAS,UACVgB,EAAuB/B,UAAW,gBAAY,GACjDE,IACIa,YAAS,IACVgB,EAAuB/B,UAAW,eAAW,GAChDE,IACIa,WAAS,SACVgB,EAAuB/B,UAAW,iBAAa,GAC3C+B,GACTf,iBCzCE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAM5DyB,GAAgC,SAAUnB,GAE1C,SAASmB,IACL,OAAkB,OAAXnB,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAoB/D,OAtBA0I,GAAU2C,EAAgBnB,GAI1BX,IACIa,WAAS,KACViB,EAAehC,UAAW,yBAAqB,GAClDE,IACIa,YAAS,IACViB,EAAehC,UAAW,kBAAc,GAC3CE,IACIa,YAAS,IACViB,EAAehC,UAAW,iBAAa,GAC1CE,IACIa,YAAS,IACViB,EAAehC,UAAW,uBAAmB,GAChDE,IACIa,WAAS,IACViB,EAAehC,UAAW,mBAAe,GAC5CE,IACIa,WAAS,MACViB,EAAehC,UAAW,mBAAe,GACrCgC,GACThB,iBC/CE3B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAO5D0B,GAAwB,SAAUpB,GAElC,SAASoB,IACL,OAAkB,OAAXpB,GAAmBA,EAAOC,MAAMnK,KAAM2J,YAAc3J,KAkD/D,OApDA0I,GAAU4C,EAAQpB,GAIlBX,IACIa,WAAS,KACVkB,EAAOjC,UAAW,aAAS,GAC9BE,IACIa,WAAS,KACVkB,EAAOjC,UAAW,kBAAc,GACnCE,IACIa,WAAS,KACVkB,EAAOjC,UAAW,aAAS,GAC9BE,IACIa,WAAS,KACVkB,EAAOjC,UAAW,gBAAY,GACjCE,IACIa,WAAS,KACVkB,EAAOjC,UAAW,gBAAY,GACjCE,IACIa,WAAS,SACVkB,EAAOjC,UAAW,iBAAa,GAClCE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,uBAAmB,GACxCE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,YAAQ,GAC7BE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,cAAU,GAC/BE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,gBAAY,GACjCE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,sBAAkB,GACvCE,IACIa,YAAS,IACVkB,EAAOjC,UAAW,oBAAgB,GACrCE,IACIa,YAAS,IACVkB,EAAOjC,UAAW,qBAAiB,GACtCE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,wBAAoB,GACzCE,IACIa,WAAS,KACVkB,EAAOjC,UAAW,mBAAe,GACpCE,IACIa,WAAS,OACVkB,EAAOjC,UAAW,oBAAgB,GAC9BiC,GACTjB,iBC1ESkB,GAAa,WAEbC,GAAY,UAIZC,GAAU,QAEVC,GAAU,QAEVC,GAAe,cAEfC,GAAY,UAIZC,GAAgB,cAEhBC,GAAiB,eAEjBC,GAAmB,iBAInBC,GAAkB,eAQlBC,GAAa,WAEbC,GAAmB,iBAEnBC,GAAY,UASZC,GAAO,gBAEPC,GAAU,YAEVC,GAAe,iBAEfC,GAAa,aAEbC,GAAS,cAETC,GAAY,yBAEZC,GAAe,gBAEfC,GAAS,gBAMTC,GAAiB,mBAEjBC,GAAc,gBAEdC,GAAU,iBAEVC,GAAY,cAEZC,GAAY,cAEZC,GAAc,gBAEdC,GAAiB,oBAEjBC,GAAgB,mBAEhBC,GAAO,SAEPC,GAAS,WAETC,GAAQ,UAERC,GAAQ,UAERC,GAAU,YAEVC,GAAQ,UAIRC,GAAU,qBAEVC,GAAM,QAINC,GAAQ,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,cAIZC,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,oBAQhBC,GAAe,iBAIfC,GAAU,YAIVC,GAAY,cAEZC,GAAe,gBAIfC,GAAQ,aC3NR5Y,GAAS,SAKT6Y,GAAe,gBAEfC,GAAa,cAEbC,GAAc,eAEdC,GAAY,aAEZC,GAAY,aAIZC,GAAW,YAEXC,GAAa,cAEbC,GAAY,aAEZC,GAAa,cAEbC,GAAY,aAEZC,GAAiB,kBAEjBC,GAAc,eAEdC,GAAU,UAEVC,GAAgB,iBAIhBC,GAAa,cAEbC,GAAe,gBAIfC,GAAgB,iBAEhBC,GAAgB,gBAEhBC,GAAS,SAETC,GAAW,YAEXC,GAAU,WAEVC,GAAmB,oBAEnBC,GAAgB,kBAEhBC,GAAe,iBAEfC,GAAgB,kBAEhBC,GAAe,gBAEfC,GAAe,iBAEfC,GAAa,cAEbC,GAAc,eAEdC,GAAe,iBAEfC,GAAa,cAEbC,GAAkB,oBAElBC,GAAY,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,WAEVtgB,GAAW,YAIXugB,GAAW,WAEXC,GAAsB,wBAEtBC,GAAa,cAEbC,GAAiB,OAEjBC,GAAiB,QAEjBC,GAAyB,gBAIzBC,GAAmB,SAEnBC,GAAqB,WCnH5BC,GAAgC,WAOhC,SAASA,EAAe9sB,GACpB+Y,KAAKgU,eAAgB,EACrBhU,KAAKiU,iBAAkB,EACvBjU,KAAK9L,MAAQ,EACb8L,KAAKkU,YAAa,EAClBlU,KAAKmU,SAAW,EAChBnU,KAAKoU,kBAAmB,EACxBpU,KAAKsF,cAAe,EACpBtF,KAAK/Y,OAASA,EACd+Y,KAAK/Z,QAAUS,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKqvB,GAAkBrU,KAAK/Y,OAAOhB,SACnFquB,YAAUtU,KAAK/Z,SAAUuF,IACzBwU,KAAKuU,mBACLvU,KAAKwU,YACDC,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,MAAO3W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCC,MAAO7W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCE,MAAO9W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCG,GAAI,KACJC,SAAU,eACVC,KAAM,YACNC,MAAO,UAg8Cf,OA77CAnD,EAAe1K,UAAU8N,OAAS,SAAUztB,GAIxC,GAHAsW,KAAK/Y,OAAOmwB,YAAc,KAC1BpX,KAAKqX,UAAY,KACjBC,cAAYtX,KAAK/Y,OAAOhB,SACC,eAArB+Z,KAAK/Y,OAAOgE,KAAuB,CACnC+U,KAAKuX,mBACLvX,KAAK/Z,QAAQuxB,aAAa,WAAY,KAClCxX,KAAKyX,UACLzX,KAAK0X,eACL1X,KAAK2X,uBAET3X,KAAK/Y,OAAOM,OAAOqwB,OACnB,IAAIC,EAAYnxB,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKqvB,GAAkBrU,KAAK/Y,OAAOhB,SAChF6xB,EAAKpxB,SAAO,KAAMmxB,GAyBtB,GAxBIC,GACA5uB,SAAO4uB,GAEX9X,KAAKyX,SACDM,gBACIC,SAAU,SAAUC,SAAU,UAAWC,SAAU,GACnDC,cAAe,QAASC,YAAa,IAEzCC,UAAU,EACVC,QAAUxzB,KAAM,OAAQyzB,QAAS,WAAY1qB,SAAU,eAAgB2qB,eAAgB,gBACvFhqB,UAAWwR,KAAK/Y,OAAOuH,UACvBiqB,YAAazY,KAAK0Y,cAAc3Y,KAAKC,MACrC8C,oBAAqB9C,KAAK/Y,OAAO6b,qBAErC9C,KAAKlV,SACLkV,KAAKlV,MAAQkV,KAAK2Y,WAAWjvB,GAC7BsW,KAAKlV,MAAQwD,EAAc0R,KAAK/Y,OAAQ+Y,KAAKlV,OAE7CkV,KAAK4Y,aAAeC,WAASC,mBAAmB/oB,gBAAeiQ,KAAKlV,MAAOkV,KAAKyX,SAChFzX,KAAK+Y,SAAW/P,MAAMK,UAAU2P,MAAMC,KAAKhT,YAAU,IAAMzf,GAAewZ,KAAK4Y,eAC/E5Y,KAAK/Z,QAAQuK,YAAYwP,KAAK4Y,cAC9B5Y,KAAKkZ,iBACLlZ,KAAKmZ,gBACLtB,EAAUhxB,UAAUqC,OAAOkwB,IACE,IAAzBpZ,KAAK+Y,SAASlzB,OAAc,CAC5B,IAAIwzB,EAAYrZ,KAAK/Z,QAAQ2J,cAAc,IAAM0pB,IACjDtZ,KAAK/Z,QAAQkY,YAAYkb,GACzBjqB,EAAmB4Q,KAAK/Y,OAAQ+Y,KAAK/Z,QAASyD,QAEhB,IAAzBsW,KAAK+Y,SAASlzB,QAAgBma,KAAK/Z,QAAQ2J,cAAc,IAAMC,KACpEmQ,KAAK/Z,QAAQkY,YAAY6B,KAAK/Z,QAAQ2J,cAAc,IAAMC,MAEhC,IAA1BmQ,KAAKoU,mBACLpU,KAAKuZ,YAAYvZ,KAAK/Y,OAAOgN,YAC7B+L,KAAKoU,kBAAmB,IAGC,IAAzBpU,KAAKiU,kBACLjU,KAAKuZ,YAAYvZ,KAAK/Y,OAAO6R,YAC7BkH,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAK9L,QACD8L,KAAK9L,QAAU8L,KAAK/Y,OAAO6R,WAAWjT,SACtCma,KAAKiU,iBAAkB,EACvBjU,KAAK/Y,OAAO6R,gBAGpB,IAAI0gB,EAAYxZ,KAAK/Z,QAAQ+C,iBAAiB,IAAMywB,IAC3B,IAArBD,EAAU3zB,SACVma,KAAK/Y,OAAOc,aAAe,kBAE/B,IAAK,IAAInC,EAAI,EAAGA,EAAI4zB,EAAU3zB,OAAQD,IAClC4zB,EAAU5zB,GAAG4xB,aAAa,gBAAiB,QAE/CxX,KAAK0Z,eACL1Z,KAAK/Z,QAAQ4K,MAAM8oB,UAAY,OAC/B3Z,KAAK4Z,eACL5Z,KAAKuU,mBACLvU,KAAK6Z,aACL7Z,KAAKkU,YAAa,EAClB4F,cAAY9Z,KAAK/Y,OAAOhB,SACpB+Z,KAAK/Y,OAAO0B,cAAc9C,QAC1Bma,KAAK+Z,cAIjBhG,EAAe1K,UAAU6P,eAAiB,WAEtC,IADA,IAAItzB,EAAI,EACDA,EAAIoa,KAAK+Y,SAASlzB,QACjBma,KAAK+Y,SAASnzB,GAAGgK,cAAc,SAE/BoQ,KAAK+Y,SAASnzB,GAAGo0B,YAAc,WAAc,OAAO,IAExDp0B,KAGRmuB,EAAe1K,UAAU8P,cAAgB,WACrC,IAAIc,EAAQja,MACPA,KAAK/Y,OAAOwK,UAAYuO,KAAKyX,UAC1BzX,KAAK/Y,OAAO4P,kBACRmJ,KAAKpJ,SACLoJ,KAAKpJ,QAAQua,UAEjBnR,KAAKpJ,QAAU,IAAIsjB,YAAUla,KAAK4Y,cAC9BuB,gBAAgB,EAChBC,SAAU,EACVC,kBAAkB,EAClBC,WAAY,IAAMjxB,GAClBkxB,OAAQva,KAAKwa,WAAWza,KAAKC,MAC7Bya,SAAUza,KAAK/Y,OAAOyzB,mBACtBC,SAAU3a,KAAK/Y,OAAOhB,QACtB20B,SAAUhlB,EAAgBmK,KAAKC,KAAMA,KAAK/Y,QAC1C4zB,KAAMzjB,EAAgB2I,KAAKC,KAAMA,KAAK/Y,QACtC6zB,OAAO,EACPC,UAAW,SAAUrxB,GACjBiN,EAAiBsjB,EAAMhzB,OAAQyC,EAAMuwB,EAAMrjB,aAI9CoJ,KAAKpJ,UAAYoJ,KAAK/Y,OAAO4P,kBAClCmJ,KAAKpJ,QAAQua,YAIzB4C,EAAe1K,UAAUmR,WAAa,SAAU9wB,GAC5C,IAAI4wB,EAAa5wB,EAAKsxB,OAAOzkB,OACzB0kB,EAAS7xB,UAAQkxB,EAAY,gBACjC,IAAKW,EACD,OAAO,KAEPA,IAAWA,EAAOp0B,UAAUC,SAAS,aACrCkZ,KAAKkb,SAASD,GAElB,IAAIzB,EAAYxZ,KAAK/Z,QAAQ+C,iBAAiB,IAAMywB,IACpDzZ,KAAK/Y,OAAOW,kBACZoY,KAAK/Y,OAAOkO,YACZ,IAAK,IAAIvP,EAAI,EAAGA,EAAI4zB,EAAU3zB,OAAQD,IAElCoa,KAAK/Y,OAAOkO,SAASrP,KAAKka,KAAKmb,cAAc3B,EAAU5zB,KACvDoa,KAAK/Y,OAAOW,eAAe9B,KAAK0zB,EAAU5zB,IAK9C,OAHAsC,EAAU8X,KAAK/Y,OAAQg0B,GACvBjb,KAAK/Y,OAAOgM,SAAW+M,KAAK/Y,OAAO5B,KACnC6P,EAAyB8K,KAAK/Y,QACvB+Y,KAAK/Y,OAAO0O,oBAEvBoe,EAAe1K,UAAU+R,WAAa,SAAU1xB,GAC5C,GAAIsW,KAAK/Y,OAAOwE,eAAiBuU,KAAKqb,gBAAiB,CACnD,IAAIC,EAASlyB,UAAQM,EAAK6M,OAAQ,gBAE9BglB,EAAUx2B,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOgF,UACtF,GAAIqvB,EAAQ,CAER,IAAIE,EAAOxb,KAAKmb,cAAcG,GAC9Btb,KAAK/Y,OAAO+L,SAAWwoB,EAAK9jB,OAASsI,KAAK/Y,OAAO5B,KAAO6I,EAAY8R,KAAK/Y,OAAQu0B,EAAMxb,KAAK/Y,OAAO5B,MACnG2a,KAAK/Y,OAAO0N,SAAW6mB,EAAK9jB,OAAS6jB,EAAUC,OAG/Cxb,KAAK/Y,OAAO+L,SAAWgN,KAAK/Y,OAAO5B,KACnC2a,KAAK/Y,OAAO0N,SAAW4mB,IAUnCxH,EAAe1K,UAAUgS,cAAgB,WACrC,MAAO,kBAEXtH,EAAe1K,UAAUqQ,aAAe,WACpC,IAAI+B,EAAO/0B,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKqR,GAAgB2J,KAAK/Y,OAAOhB,SACzEy1B,EAAMh1B,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKyK,GAAsBuQ,KAAK/Y,OAAOhB,SAClF+Z,KAAK/Z,QAAQ4K,MAAM2W,OAAUiU,EAAK/rB,aAAegsB,EAAIhsB,aAAgB,MAEzEqkB,EAAe1K,UAAUqP,cAAgB,SAAUhvB,GAE/C,GADAA,EAAKuD,KAAK0uB,gBAAgB,eACrB3b,KAAK/Y,OAAOqZ,mBAAqBvb,WAAS,SAAU2E,EAAKkyB,SAAU,CACpE,IAAIC,EAAUnyB,EAAKuD,KAAK2C,cAAc,IAAMjJ,IACxC0Z,EAAMtb,WAAS,OAAQ2E,EAAKkyB,SAC5BjhB,EAAO5V,WAAS,OAAQ2E,EAAKkyB,SACjCC,EAAQnrB,UAAY2P,EAAIkB,OAAO,EAAGlB,EAAIxa,OAAS8U,EAAK9U,QAExDma,KAAK8b,eAAepyB,GACpB,IAAIiE,GACA1H,QAASyD,EAAKuD,KACdW,YAAalE,EAAKkyB,QAClBjqB,OAAQ,kBAEZqO,KAAK/Y,OAAOgH,QAAQ,WAAYN,IAEpComB,EAAe1K,UAAUyS,eAAiB,SAAUpyB,GAChD,GAAKsW,KAAK/Y,OAAO80B,oBAAjB,CAGA,IAAIC,EAAeC,iBAAelsB,iBAAe,GAC7C0U,SAAS,EACTnT,SAAU,YAEd0qB,EAAaxE,aAAa,OAAQ,YAClCwE,EAAaxE,aAAa,eAAgB,SAC1C9tB,EAAKuD,KAAKivB,kBAAkBC,aAAaH,EAActyB,EAAKuD,KAAKivB,kBAAkBE,WAAW,MAElGrI,EAAe1K,UAAUgT,eAAiB,SAAU3yB,GAChD,GAAyB,eAArBsW,KAAK/Y,OAAOgE,KAAuB,CAInC,GAHA+U,KAAKmR,UACLnR,KAAKmX,OAAOztB,GAEmB,kBAA3B3E,WAAS,OAAQ2E,IAAwD,SAA3BsW,KAAK/Y,OAAOkF,YAC1D6T,KAAK/Y,OAAOC,OAAS8Y,KAAK/Y,OAAOG,eAAsD,IAArC4Y,KAAK/Y,OAAOG,cAAcvB,OAG5E,IAFA,IAAIy2B,EAAUtc,KAAKuc,WAAWvc,KAAK/Y,OAAOG,eACtCo1B,EAAW,EACRA,EAAWF,EAAQz2B,QACtBsC,EAAQ6X,KAAK+Y,SAASuD,EAAQE,KAC9BA,IAIiB,IADTxc,KAAK/Z,QAAQ+C,iBAAiB,IAAMywB,IACtC5zB,QACVma,KAAK/Z,QAAQ2Z,QAEjBI,KAAK+Z,YACL/Z,KAAK/Y,OAAOsC,gBAAiB,OAG7ByW,KAAK/Z,QAAQuxB,aAAa,WAAY,OAG9CzD,EAAe1K,UAAU0Q,UAAY,WACjC,IAAI0C,EAAWzc,KAAK/Z,QAAQ+C,iBAAiB,IAAMywB,IACnD,GAAIgD,EAEA,IADA,IAAIC,EAAc,EACXA,EAAcD,EAAS52B,QAC1Bma,KAAK2c,WAAWF,EAASC,IAAc,GACvCA,KAKZ3I,EAAe1K,UAAUsP,WAAa,SAAUjvB,GAI5C,IAHA,IAAI9D,EAAI,EAEJkF,EAAQiQ,KAAKU,MAAMV,KAAKC,UAAUtR,EAAKc,QACpC5E,EAAIkF,EAAMjF,QAAQ,CACrB,IAAI+2B,EAAOvwB,EAASvB,EAAMlF,IACtBi3B,EAAS93B,WAAS,OAAQ+F,EAAMlF,IAChCk3B,EAAW1nB,EAAY4K,KAAK/Y,OAAQ6D,EAAMlF,IAC1CoK,EAAcgQ,KAAK/Y,OAAO0B,gBACuB,IAAjDqX,KAAK/Y,OAAO0B,cAAc+D,QAAQowB,GAClCzzB,GAAiB,YAAcA,GAInC,GAHKwO,GAAc/M,EAAMlF,MACrBoK,GAAa,IAAMuI,GAAezN,EAAMlF,KAExCg3B,IAAS/vB,IAAkBmT,KAAK/Y,OAAO81B,eAAiBpxB,GAAcb,EAAMlF,IAAK,CACjF,IAAIsH,EAASF,EAAYgT,KAAK/Y,OAAQ6D,EAAMlF,IAC5CuT,WAAS,eAAgBjM,EAAQpC,EAAMlF,IACvCuT,WAAS,iBAAmBmO,IAAKuV,GAAU/xB,EAAMlF,SAGjDuT,WAAS,WAAYyjB,EAAM9xB,EAAMlF,IAErCuT,WAAS,gBAAkB2R,MAAO9a,EAAWgtB,MAAOH,GAAU/xB,EAAMlF,IACpEA,IAEJ,OAAOkF,GAEXipB,EAAe1K,UAAU4T,cAAgB,SAAUvzB,GAC/CsW,KAAKmX,OAAOztB,IAEhBqqB,EAAe1K,UAAU6T,YAAc,SAAUxzB,GACpB,eAArBsW,KAAK/Y,OAAOgE,OAGhB+U,KAAKqc,eAAe3yB,GACpBsW,KAAKmd,cACLnd,KAAKuZ,aAAax0B,WAASib,KAAK/Y,OAAO1B,MAAQ,KAAO,OAAQya,KAAK/Y,OAAO8V,eAC1EiD,KAAK/Y,OAAO8V,YAAc,KAC1BiD,KAAK/Y,OAAO4D,qBAAqB5E,QAAQ2Z,UAE7CmU,EAAe1K,UAAU+T,eAAiB,WACL,mBAA7Bpd,KAAK/Y,OAAOc,cACZiY,KAAKqd,sBAGbtJ,EAAe1K,UAAUiU,aAAe,WACH,mBAA7Btd,KAAK/Y,OAAOc,cACZsQ,GAAO2H,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO0B,cAAeqX,KAAK/Y,OAAO5B,KAAM,WAIzE0uB,EAAe1K,UAAUkU,YAAc,SAAU7zB,GACpB,eAArBsW,KAAK/Y,OAAOgE,OAGhB+U,KAAKqc,eAAe3yB,GACpBsW,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAKmd,gBAETpJ,EAAe1K,UAAUmU,aAAe,SAAU9zB,GACrB,eAArBsW,KAAK/Y,OAAOgE,MAGhB+U,KAAKqc,eAAe3yB,IAExBqqB,EAAe1K,UAAUoU,aAAe,WACH,mBAA7Bzd,KAAK/Y,OAAOc,cAA0E,IAArCiY,KAAK/Y,OAAO0B,cAAc9C,QAC3Ema,KAAK0d,oBAGb3J,EAAe1K,UAAUsU,cAAgB,SAAUj0B,GAC/CsW,KAAK/Y,OAAOC,OAAQ,EAE4C,KAA5D8Y,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,QAClDwX,KAAK/Y,OAAO22B,kBAES,eAArB5d,KAAK/Y,OAAOgE,OACZ9D,EAAW6Y,KAAK/Y,QAChB+Y,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAKqc,eAAe3yB,GAChBsW,KAAK/Y,OAAOgW,cACZ+C,KAAKmd,cACLnd,KAAK6d,aAAa7d,KAAK/Y,OAAOgW,aAC9B+C,KAAK/Y,OAAOgW,YAAc,QAItC8W,EAAe1K,UAAUyU,WAAa,SAAUp0B,GACX,mBAA7BsW,KAAK/Y,OAAOc,cACZiY,KAAK+d,aAAar0B,EAAK6M,SAG/Bwd,EAAe1K,UAAU2U,aAAe,WACX,eAArBhe,KAAK/Y,OAAOgE,MAAyB+U,KAAK/Z,SAC1C+Z,KAAK/Z,QAAQY,UAAUgC,IAAIuwB,KAGnCrF,EAAe1K,UAAU4U,gBAAkB,WACvC,GAAyB,eAArBje,KAAK/Y,OAAOgE,KAAuB,CACnC+U,KAAKqX,UAAYrX,KAAKke,eACtB,IAAIC,EAAWne,KAAKoe,cAEpBpe,KAAKqe,YAAYF,GADDG,SAAS,EAAMC,UAAU,IAEzCve,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,IAG5ByO,EAAe1K,UAAUmV,eAAiB,WACb,eAArBxe,KAAK/Y,OAAOgE,OACZ+U,KAAKye,iBACLze,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,IAG5ByO,EAAe1K,UAAUqV,gBAAkB,WACvC1e,KAAKkU,YAAa,GAEtBH,EAAe1K,UAAUsV,eAAiB,WACtC3e,KAAKkU,YAAa,GAGtBH,EAAe1K,UAAUuV,SAAW,SAAUl1B,GACjB,eAArBsW,KAAK/Y,OAAOgE,OACZ+U,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAK/Y,OAAOM,OAAOiV,OACnBwD,KAAK/Y,OAAO22B,cAAgBl0B,EAAKc,MACjCwV,KAAKqc,eAAe3yB,KAG5BqqB,EAAe1K,UAAUwV,gBAAkB,WACd,eAArB7e,KAAK/Y,OAAOgE,MAGhB+U,KAAK0Z,gBAET3F,EAAe1K,UAAUyV,sBAAwB,WACpB,eAArB9e,KAAK/Y,OAAOgE,MAGhB+U,KAAKqd,sBAETtJ,EAAe1K,UAAU0V,aAAe,WACX,eAArB/e,KAAK/Y,OAAOgE,MAA0B9F,oBAAM6a,KAAKyX,UACW,KAA5DzX,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAiBwX,KAAK/Y,OAAOwB,YACrD,eAAvBuX,KAAK/Y,OAAOyH,SACfsR,KAAK/Y,OAAOyH,OAAS,OACrBsR,KAAK/Y,OAAOM,OAAOqK,SAG3BmiB,EAAe1K,UAAUsO,oBAAsB,WACvC3X,KAAK/Y,OAAO+3B,cAGhBhf,KAAK/Y,OAAOg4B,IAAIx1B,GAAmBuW,KAAK+e,cACxC/e,KAAK/Y,OAAOg4B,IAAI5sB,GAAoB2N,KAAKid,eACzCjd,KAAK/Y,OAAOg4B,IAAIjiB,GAAkBgD,KAAKkd,aACvCld,KAAK/Y,OAAOg4B,IAAIC,GAAqBlf,KAAKod,gBAC1Cpd,KAAK/Y,OAAOg4B,IAAIhf,GAAmBD,KAAKsd,cACxCtd,KAAK/Y,OAAOg4B,IAAI3hB,GAAkB0C,KAAKud,aACvCvd,KAAK/Y,OAAOg4B,IAAIrzB,GAAmBoU,KAAKwd,cACxCxd,KAAK/Y,OAAOg4B,IAAIE,GAAoBnf,KAAK2d,eACzC3d,KAAK/Y,OAAOg4B,IAAI70B,GAAqB4V,KAAKqc,gBAC1Crc,KAAK/Y,OAAOg4B,IAAI50B,GAAe2V,KAAK4e,UACpC5e,KAAK/Y,OAAOg4B,IAAIG,GAAiBpf,KAAK8d,YACtC9d,KAAK/Y,OAAOg4B,IAAIjzB,GAAgBgU,KAAK2d,eACrC3d,KAAK/Y,OAAOg4B,IAAII,GAAqBrf,KAAKsf,mBAC1Ctf,KAAK/Y,OAAOg4B,IAAIM,GAAmBvf,KAAKwf,cACxCxf,KAAK/Y,OAAOg4B,IAAItd,GAAsB3B,KAAKyf,iBAC3Czf,KAAK/Y,OAAOg4B,IAAIS,GAAmB1f,KAAKyd,cACxCzd,KAAK/Y,OAAOg4B,IAAI9hB,GAAkB6C,KAAK2d,eACvC3d,KAAK/Y,OAAOg4B,IAAIrH,GAAmB5X,KAAKge,cACxChe,KAAK/Y,OAAOg4B,IAAIU,GAAsB3f,KAAKie,iBAC3Cje,KAAK/Y,OAAOg4B,IAAIW,GAAqB5f,KAAKwe,gBAC1Cxe,KAAK/Y,OAAOg4B,IAAIY,GAAqB7f,KAAK8f,gBAC1C9f,KAAK/Y,OAAOg4B,IAAI5jB,GAAsB2E,KAAK0e,iBAC3C1e,KAAK/Y,OAAOg4B,IAAIvjB,GAAqBsE,KAAK2e,gBAC1C3e,KAAK/Y,OAAOg4B,IAAIc,GAAuB/f,KAAKggB,uBAC5ChgB,KAAK/Y,OAAOg4B,IAAIgB,GAAkBjgB,KAAKkgB,eACvClgB,KAAK/Y,OAAOg4B,IAAIvsB,GAAkBsN,KAAKmgB,aACvCngB,KAAK/Y,OAAOg4B,IAAIxqB,GAAiBuL,KAAKogB,YACtCpgB,KAAK/Y,OAAOg4B,IAAIp3B,GAAoBmY,KAAKqgB,eACzCrgB,KAAK/Y,OAAOg4B,IAAIzoB,GAAiBwJ,KAAKob,YACtCpb,KAAK/Y,OAAOg4B,IAAIqB,GAAoBtgB,KAAKugB,eACzCvgB,KAAK/Y,OAAOg4B,IAAIuB,GAAsBxgB,KAAK6e,iBAC3C7e,KAAK/Y,OAAOg4B,IAAIhqB,GAAiB+K,KAAKygB,YACtCzgB,KAAK/Y,OAAOg4B,IAAIyB,GAA4B1gB,KAAK8e,uBACjD9e,KAAK/Y,OAAOg4B,IAAI0B,GAAkB3gB,KAAK2d,iBAE3C5J,EAAe1K,UAAUkL,iBAAmB,WACxCvU,KAAK/Y,OAAO25B,GAAGn3B,GAAmBuW,KAAK+e,aAAc/e,MACrDA,KAAK/Y,OAAO25B,GAAGvuB,GAAoB2N,KAAKid,cAAejd,MACvDA,KAAK/Y,OAAO25B,GAAG5jB,GAAkBgD,KAAKkd,YAAald,MACnDA,KAAK/Y,OAAO25B,GAAGh1B,GAAmBoU,KAAKwd,aAAcxd,MACrDA,KAAK/Y,OAAO25B,GAAG1B,GAAqBlf,KAAKod,eAAgBpd,MACzDA,KAAK/Y,OAAO25B,GAAGzB,GAAoBnf,KAAK2d,cAAe3d,MACvDA,KAAK/Y,OAAO25B,GAAG3gB,GAAmBD,KAAKsd,aAActd,MACrDA,KAAK/Y,OAAO25B,GAAGluB,GAAkBsN,KAAKmgB,YAAangB,MACnDA,KAAK/Y,OAAO25B,GAAGtjB,GAAkB0C,KAAKud,YAAavd,MACnDA,KAAK/Y,OAAO25B,GAAGx2B,GAAqB4V,KAAKqc,eAAgBrc,MACzDA,KAAK/Y,OAAO25B,GAAGv2B,GAAe2V,KAAK4e,SAAU5e,MAC7CA,KAAK/Y,OAAO25B,GAAGxB,GAAiBpf,KAAK8d,WAAY9d,MACjDA,KAAK/Y,OAAO25B,GAAGlB,GAAmB1f,KAAKyd,aAAczd,MACrDA,KAAK/Y,OAAO25B,GAAGzjB,GAAkB6C,KAAK2d,cAAe3d,MACrDA,KAAK/Y,OAAO25B,GAAG50B,GAAgBgU,KAAK2d,cAAe3d,MACnDA,KAAK/Y,OAAO25B,GAAGvB,GAAqBrf,KAAKsf,kBAAmBtf,MAC5DA,KAAK/Y,OAAO25B,GAAGrB,GAAmBvf,KAAKwf,aAAcxf,MACrDA,KAAK/Y,OAAO25B,GAAGjf,GAAsB3B,KAAKyf,gBAAiBzf,MAC3DA,KAAK/Y,OAAO25B,GAAGhJ,GAAmB5X,KAAKge,aAAche,MACrDA,KAAK/Y,OAAO25B,GAAGjB,GAAsB3f,KAAKie,gBAAiBje,MAC3DA,KAAK/Y,OAAO25B,GAAGhB,GAAqB5f,KAAKwe,eAAgBxe,MACzDA,KAAK/Y,OAAO25B,GAAGf,GAAqB7f,KAAK8f,eAAgB9f,MACzDA,KAAK/Y,OAAO25B,GAAGvlB,GAAsB2E,KAAK0e,gBAAiB1e,MAC3DA,KAAK/Y,OAAO25B,GAAGllB,GAAqBsE,KAAK2e,eAAgB3e,MACzDA,KAAK/Y,OAAO25B,GAAGpqB,GAAiBwJ,KAAKob,WAAYpb,MACjDA,KAAK/Y,OAAO25B,GAAGN,GAAoBtgB,KAAKugB,cAAevgB,MACvDA,KAAK/Y,OAAO25B,GAAGb,GAAuB/f,KAAKggB,sBAAuBhgB,MAClEA,KAAK/Y,OAAO25B,GAAGX,GAAkBjgB,KAAKkgB,cAAelgB,MACrDA,KAAK/Y,OAAO25B,GAAGnsB,GAAiBuL,KAAKogB,WAAYpgB,MACjDA,KAAK/Y,OAAO25B,GAAG/4B,GAAoBmY,KAAKqgB,cAAergB,MACvDA,KAAK/Y,OAAO25B,GAAGJ,GAAsBxgB,KAAK6e,gBAAiB7e,MAC3DA,KAAK/Y,OAAO25B,GAAG3rB,GAAiB+K,KAAKygB,WAAYzgB,MACjDA,KAAK/Y,OAAO25B,GAAGF,GAA4B1gB,KAAK8e,sBAAuB9e,MACvEA,KAAK/Y,OAAO25B,GAAGD,GAAkB3gB,KAAK2d,cAAe3d,OAEzD+T,EAAe1K,UAAUoW,gBAAkB,WAAczf,KAAKgU,eAAgB,EAAMhU,KAAKsF,cAAe,GAExGyO,EAAe1K,UAAUyW,eAAiB,SAAUp2B,GAChD,GAAIsW,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,gBAAiB,CACnD,IAAI7lB,EAAMpM,UAAQM,EAAK6M,OAAQ,MAC/ByJ,KAAK/Y,OAAO4C,UAAYmW,KAAKmb,cAAc3lB,MAGnDue,EAAe1K,UAAUkX,cAAgB,WACjCvgB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBACO,IAArCrb,KAAK/Y,OAAO0B,cAAc9C,OAC1Bma,KAAKqd,qBAGLrd,KAAK/Y,OAAO4C,UAAY9E,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOgF,aAI5G8nB,EAAe1K,UAAU8W,YAAc,WAC/BngB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBAClCrb,KAAK/Y,OAAO4C,SAAuC,KAA3BmW,KAAK/Y,OAAOuL,YAAsB1I,EAAckW,KAAK/Y,UACxE+Y,KAAKmb,cAAcz0B,SAAO,YAAasZ,KAAK/Z,aAGzD8tB,EAAe1K,UAAUgX,cAAgB,WACrC,GAAIrgB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,gBAAiB,CACnD,IAAI7B,EAAYxZ,KAAK/Z,QAAQ+C,iBAAiB,IAAMywB,IACpDzZ,KAAK/Y,OAAOoB,iBACZ2X,KAAK/Y,OAAOW,kBACZ,IAAK,IAAIhC,EAAI,EAAGA,EAAI4zB,EAAU3zB,OAAQD,IAClCoa,KAAK/Y,OAAOW,eAAe9B,KAAK0zB,EAAU5zB,IAC1Coa,KAAK/Y,OAAOoB,cAAcvC,KAAKka,KAAKmb,cAAc3B,EAAU5zB,OAIxEmuB,EAAe1K,UAAU+W,WAAa,SAAU12B,GACnB,eAArBsW,KAAK/Y,OAAOgE,OACZ+U,KAAKoU,kBAAmB,EACpBpU,KAAK/Y,OAAO5B,OAAS2a,KAAK/Y,OAAOoT,iBAAmB2F,KAAK/Y,OAAO5B,OAASoO,EAAiBuM,KAAK/Y,OAAQyC,IACvGsW,KAAK2d,cAAcj0B,KAI/BqqB,EAAe1K,UAAUoX,WAAa,SAAU/2B,GACnB,eAArBsW,KAAK/Y,OAAOgE,OACZ+U,KAAKoU,kBAAmB,EACxBpU,KAAK2d,cAAcj0B,KAG3BqqB,EAAe1K,UAAUiW,kBAAoB,SAAUlhB,GACnD,IAAIyiB,EACJ,GAAIziB,EAAEzM,SAAWqO,KAAKqb,iBAAgC,WAAbjd,EAAEzM,OAG3C,IAAK,IAAImvB,EAAK,EAAGC,EAAK/f,OAAOD,KAAK3C,EAAE4iB,SAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,mBACD9gB,KAAKmZ,gBACL,MACJ,IAAK,SACDnZ,KAAK0Z,eACL,MACJ,IAAK,gBACD1Z,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,EACpBub,EAAkB17B,oBAAM6a,KAAK/Y,OAAO0B,kBAAsBqX,KAAK/Y,OAAO0B,cAAcqwB,MAAM,GAC1F6H,EAAkB7gB,KAAK/Y,OAAO80B,oBAAsB8E,EAChDA,EAAgB7H,MAAM6H,EAAgBh7B,OAAS,GACnDma,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAKwe,iBACDqC,EAAgBh7B,QAChBma,KAAKuZ,YAAYsH,GAErB7gB,KAAK/Y,OAAO7B,eAAgBuD,cAAeqX,KAAK/Y,OAAO0B,gBAAiB,GACxEqX,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,EACpB,MACJ,IAAK,gBACD5Z,EAAQsU,KAAK/Y,QACb,MACJ,IAAK,oBAGL,IAAK,kBACD8D,GAAKiV,KAAK/Y,OAAQk4B,GAAoBnf,KAAK/Y,OAAO5B,MAClD,MACJ,IAAK,sBACD,GAAyB,eAArB2a,KAAK/Y,OAAOgE,KACZ,MAEJS,EAAQsU,KAAK/Y,QACb,MACJ,IAAK,OACD+D,EAAagV,KAAK/Y,OAAQ,iBAK1C8sB,EAAe1K,UAAU8H,QAAU,WAC3BnR,KAAK/Y,OAAO+3B,cAGhBhf,KAAK2X,sBACD3X,KAAKyX,SACLzX,KAAK0X,iBAGb3D,EAAe1K,UAAUwQ,WAAa,WAClC7Z,KAAKihB,gBAAe,GACpBjhB,KAAKkhB,eAAiB,IAAIC,iBAAenhB,KAAK/Z,SAC1Cm7B,UAAWphB,KAAKqhB,iBAAiBthB,KAAKC,MACtCwU,WAAYxU,KAAKwU,WACjB8M,UAAW,UAEfthB,KAAKuhB,mBAAqB,IAAIJ,iBAAenhB,KAAK/Z,SAC9Cm7B,UAAWphB,KAAKwhB,qBAAqBzhB,KAAKC,MAC1CwU,WAAYxU,KAAKwU,WACjB8M,UAAW,YAEfG,eAAa54B,IAAImX,KAAK/Z,QAAS,YAAa+Z,KAAK0hB,YAAa1hB,OAElE+T,EAAe1K,UAAUqO,aAAe,WACpC1X,KAAKihB,gBAAe,GACpBQ,eAAav4B,OAAO8W,KAAK/Z,QAAS,YAAa+Z,KAAK0hB,aACpD1hB,KAAKkhB,eAAe/P,UACpBnR,KAAKuhB,mBAAmBpQ,WAG5B4C,EAAe1K,UAAUqY,YAAc,SAAUtjB,GAC7C,IAAIujB,EAAYv4B,UAAQgV,EAAE7H,OAAQ,gBAClCpP,EAAW6Y,KAAK/Y,OAAQ,SACN,OAAd06B,GACAA,EAAU96B,UAAUgC,IAAII,KAGhC8qB,EAAe1K,UAAU4X,eAAiB,SAAUW,GAChD,GAAIA,EAAQ,CAER,IAAIC,EAAU7hB,KACdA,KAAK8hB,SAAW,IAAIC,QAAM/hB,KAAK/Z,SAC3B+7B,IAAK,SAAUC,GACXA,EAAIC,cAAc1b,iBACdqb,EAAQ56B,OAAOk7B,UACfN,EAAQ1N,SAAW8N,EAAI9N,SACvB0N,EAAQO,SAAWH,EACnB3qB,WAAW,WACHuqB,EAAQ1N,SAAW,GACnB0N,EAAQQ,YAAYR,EAAQO,UAEhCP,EAAQ1N,SAAW,GACpB,MAGkB,IAAjB8N,EAAI9N,UAA8C,IAA5B8N,EAAIC,cAAcjb,MACxC4a,EAAQS,gBAAgBL,GAGxBJ,EAAQU,aAAaN,IAIjCO,QAAS,SAAUpkB,GACXyjB,EAAQ56B,OAAOk7B,WACfN,EAAQY,cAAcZ,EAAQ56B,OAAO80B,oBACjC8F,EAAQ56B,OAAO80B,qBACfzH,YAAUuN,EAAQ56B,OAAOhB,SAAUy8B,IAEvCb,EAAQU,aAAankB,YAM7B4B,KAAK8hB,UACL9hB,KAAK8hB,SAAS3Q,WAI1B4C,EAAe1K,UAAUgZ,YAAc,SAAUJ,GAC7C,IAAI1rB,EAAS0rB,EAAIC,cAAc3rB,OAC3BtJ,EAAO7D,UAAQmN,EAAQ,IAAM/P,IAC7BwZ,KAAKyiB,aAAelsB,EAAO1P,UAAUC,SAASwyB,KAAoBn0B,oBAAM8H,GACxE+S,KAAKuiB,aAAaN,IAGlBjiB,KAAK/Y,OAAOyQ,QAAS,EACrBsI,KAAK2iB,WAAW11B,GACX+S,KAAK/Y,OAAOyQ,OAGS,IAAjBuqB,EAAI9N,UACTnU,KAAKuiB,aAAaN,GAClBjiB,KAAKsiB,gBAAgBL,IAGrBjiB,KAAKuiB,aAAaN,GAPlBjiB,KAAKsiB,gBAAgBL,KAWjClO,EAAe1K,UAAUkZ,aAAe,SAAUnkB,GAC9C,IAAI7H,EAAS6H,EAAE8jB,cAAc3rB,OAC7BpP,EAAW6Y,KAAK/Y,OAAQ,SACxB+Y,KAAKqe,YAAY9nB,EAAQ6H,EAAE8jB,eAC3BliB,KAAK/Y,OAAOc,aAAe,kBAS/BgsB,EAAe1K,UAAUgV,YAAc,SAAU9nB,EAAQ6H,GACrD,IAAInR,EAAO7D,UAAQmN,EAAQ,IAAM/P,IAC7Bo8B,EAAQrsB,EAAO1P,UACnBmZ,KAAK/Y,OAAOyQ,QAAS,EACrB,IAAIhQ,EAAS,SACb,GAAgB,IAAZ0W,EAAE6I,OAAgB9hB,oBAAM8H,KAASA,EAAKpG,UAAUC,SAAS2yB,IAA7D,CAIK,GAAKt0B,oBAAM8H,GAmDZ+S,KAAKye,qBAnDc,CACfze,KAAK/Y,OAAO80B,qBAAuB9uB,EAAKpG,UAAUC,SAAS2yB,MACvDrb,EAAEkgB,SAAW/nB,EAAO1P,UAAUC,SAAS+7B,OAC3Cn7B,EAAS,YAGb,IAAiC,IADTsY,KAAK8iB,iBAAiBp7B,EAAQuF,GAChC6I,OAAiB,CAMnC,GALMkK,KAAK/Y,OAAO80B,sBAAyB/b,KAAKyiB,cAAgBrkB,GAAMA,EAAEkgB,UAChEsE,EAAM97B,SFlqBX,aEmqBCkZ,KAAK2iB,WAAW11B,GAChB+S,KAAKmd,eAELnd,KAAK/Y,OAAO80B,qBAAuB3d,EAAEmgB,SAAU,CACzCngB,GAAKA,EAAEkgB,SACTte,KAAKmd,cAEJnd,KAAKqX,YACNrX,KAAKqX,UAAYpqB,GAErB,IAAI81B,EAAa/iB,KAAK+Y,SAASrsB,QAAQsT,KAAKqX,WACxC2L,EAAWhjB,KAAK+Y,SAASrsB,QAAQO,GACrC,GAAI81B,EAAaC,EACb,IAAK,IAAIp9B,EAAIm9B,EAAYn9B,GAAKo9B,EAAUp9B,IACpCoa,KAAKijB,UAAUjjB,KAAK+Y,SAASnzB,SAIjC,IAASA,EAAIm9B,EAAYn9B,GAAKo9B,EAAUp9B,IACpCoa,KAAKijB,UAAUjjB,KAAK+Y,SAASnzB,IAGrCoa,KAAKkjB,SAASljB,KAAK+Y,SAASiK,SAG5BhjB,KAAKqX,UAAYpqB,EACb+S,KAAK/Y,OAAO80B,qBAAuB9uB,EAAKpG,UAAUC,SAAS2yB,IAC3DzZ,KAAKhZ,aAAaiG,GAGlB+S,KAAKijB,UAAUh2B,GAEnB+S,KAAKkjB,SAASj2B,GAEuB,IAArC+S,KAAK/Y,OAAO0B,cAAc9C,QAC1Bma,KAAKuX,mBAETvX,KAAK/Y,OAAOM,OAAOiV,OACnBwD,KAAKmjB,cAAcz7B,EAAQuF,IAM9B9H,oBAAM8H,IACP+S,KAAK2iB,WAAW11B,QAzDhB+S,KAAK2iB,WAAW11B,IA4DxB8mB,EAAe1K,UAAUiZ,gBAAkB,SAAUlkB,GACjD4B,KAAK/Y,OAAOc,aAAe,iBAC3B,IAAIwO,EAAS6H,EAAE8jB,cAAc3rB,OAC7ByJ,KAAK+d,aAAaxnB,IAEtBwd,EAAe1K,UAAUoV,eAAiB,WACtCze,KAAKmd,cACLnd,KAAKuX,mBACLvX,KAAK/Y,OAAOM,OAAOiV,QAEvBuX,EAAe1K,UAAUkO,iBAAmB,WACxCvX,KAAKyiB,aAAc,EACnBW,eAAapjB,KAAK/Y,OAAOhB,SAAUy8B,KAEvC3O,EAAe1K,UAAU0U,aAAe,SAAUxnB,GAC9C,IAAI0jB,EAAQja,KACZ,IAAI7a,oBAAMoR,GAAV,CAGA,IAAItJ,EAAO7D,UAAQmN,EAAQ,IAAM/P,IAEjC,GADAwZ,KAAK/Y,OAAOyQ,QAAS,GAChBvS,oBAAM8H,GAAO,CACd+S,KAAK2iB,WAAW11B,GAEhB,IAAIo2B,EAAYrjB,KAAKmb,cAAcluB,GACnC,IAAKtB,GAAc03B,GAEf,YADAx3B,GAAmBmU,KAAK/Y,OAAQo8B,EAAWv3B,IAG/C,IAAI6B,GAAcmI,QAAQ,EAAOlI,YAAay1B,EAAW1xB,OAAQ,kBACjEqO,KAAK/Y,OAAOgH,QAAQ,WAAYN,EAAW,SAAU21B,GACjD,IAAKA,EAAaxtB,OAAQ,CACtB,IAAIhR,EAAOC,WAAS,OAAQs+B,GAC5B,GAAKpJ,EAAMhzB,OAAOyQ,OAkBb,CAED,GADWrL,EAASg3B,KACPx2B,GAAgB,CACzB,IAAIK,EAASF,EAAYitB,EAAMhzB,OAAQo8B,GACvClc,GAAkB8S,EAAMhzB,OAAQnC,EAAMoI,QAtBpB,CAEtB,GAAY,KADF+sB,EAAMhzB,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAC1CyxB,EAAMhzB,OAAOwB,WAW5BuJ,EAAiBioB,EAAMhzB,OAAQo8B,OAXS,CACxC,IAAIr+B,EAAKD,WAAS,KAAMs+B,GACxBpJ,EAAMhzB,OAAOsM,QAAU0mB,EAAMhzB,OAAO5B,KACpC,IAAImO,EAAUymB,EAAMhzB,OAAO5B,MAAQF,oBAAMH,GAAMF,EAAOE,GAAM,IAC5Di1B,EAAMhzB,OAAO7B,eAAgBC,KAAMmO,IAAW,GAC9CymB,EAAMhzB,OAAOjB,UAAUF,KAAKhB,GAC5Bm1B,EAAMhzB,OAAOzB,OAAOM,KAAKf,WAAS,SAAUs+B,IAC5CpJ,EAAMhzB,OAAO4C,UAAYw5B,GACzBt3B,EAAWkuB,EAAMhzB,QAKrBgzB,EAAMhzB,OAAOwB,YAAa,EAC1BwxB,EAAMhzB,OAAO7B,eAAgBuD,mBAAqB,UAatEorB,EAAe1K,UAAUsZ,WAAa,SAAU11B,GAC5C,IAAIs2B,EAAS78B,SAAO,IAAM6F,GAAYU,GACtC+S,KAAK/Y,OAAOyQ,SAASvS,oBAAMo+B,IAI/BxP,EAAe1K,UAAUmY,qBAAuB,SAAUpjB,GACtD,GAAK4B,KAAKkU,WAGV,OAAQ9V,EAAE1W,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,QACD0W,EAAEoI,mBAQduN,EAAe1K,UAAUgY,iBAAmB,SAAUjjB,GAClD,GAAK4B,KAAKkU,WAAV,CAGA,IAAIsP,EAAQxjB,KAAKyjB,iBACbC,EAAY1jB,KAAKke,eACjBC,EAAWne,KAAKoe,cACpB,OAAQhgB,EAAE1W,QACN,IAAK,MACDsY,KAAK2jB,aAAaxF,GAClB,MACJ,IAAK,OACDne,KAAK2jB,aAAaD,GAClB,MACJ,IAAK,MACIv+B,oBAAMq+B,GAGDr+B,oBAAMu+B,IACZ1jB,KAAKkjB,SAASQ,GAHd1jB,KAAKkjB,SAASM,GAKlB,MACJ,IAAK,WACDxjB,KAAK4jB,aAAaJ,GAAO,GACzB,MACJ,IAAK,WACDxjB,KAAK6jB,cAAcL,GAAO,GAC1B,MACJ,IAAK,YACDxjB,KAAK6jB,cAAcL,GAAO,GAC1B,MACJ,IAAK,SACDxjB,KAAK4jB,aAAaJ,GAAO,GACzB,MACJ,IAAK,UACL,IAAK,WACL,IAAK,QACDxjB,KAAK8jB,SAAS3F,EAAU/f,GACxB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACD4B,KAAK+jB,UAAUL,EAAWtlB,GAC1B,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACD4B,KAAKgkB,UAAUR,EAAOplB,GACtB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACD4B,KAAKikB,UAAUT,EAAOplB,GACtB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACD4B,KAAKkkB,WAAWV,EAAOplB,GACvB,MACJ,IAAK,SACL,IAAK,UACL,IAAK,OACD4B,KAAKmkB,QAAQX,EAAOplB,GACpB,MACJ,IAAK,QACD4B,KAAKokB,SAASZ,GACd,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACIr+B,oBAAMq+B,IACPxjB,KAAKqe,YAAYmF,EAAOplB,GAE5B,MACJ,IAAK,QACD4B,KAAKqkB,SAASX,EAAWvF,GACzB,MACJ,IAAK,QACDne,KAAK+d,aAAa/d,KAAK/Y,OAAOmwB,YAAcpX,KAAK/Y,OAAOmwB,YAAcpX,KAAKskB,kBAC3E,MACJ,IAAK,WACDtkB,KAAK/Y,OAAOM,OAAO+4B,OACnB9lB,GAAWwF,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO0B,cAAeqX,KAAK/Y,OAAO5B,KAAM,WACrE,MACJ,IAAK,MACD2B,EAAagZ,KAAK/Y,QAClB,MACJ,IAAK,MACL,IAAK,WACD+Y,KAAKukB,gBACL,MACJ,IAAK,QACDr4B,EAAU8T,KAAK/Y,QACf,MACJ,IAAK,QACD+Y,KAAK/Y,OAAOuL,WAAa,GACzBF,EAAa0N,KAAK/Y,QAClB,MACJ,IAAK,QACDmF,EAAS4T,KAAK/Y,QACd,MACJ,IAAK,KACD+Y,KAAKwkB,gBACL,MACJ,IAAK,QACDxkB,KAAKjI,gBAIjBgc,EAAe1K,UAAUtR,WAAa,WAClCiI,KAAKqd,qBACLtlB,GAAWiI,KAAK/Y,SAEpB8sB,EAAe1K,UAAUkb,cAAgB,WACrC,GAAIvkB,KAAK/Y,OAAO0B,eAAiBqX,KAAK/Y,OAAO0B,cAAc9C,OAAS,EAAG,CACnEma,KAAKqd,qBAGL,IAAK,IADDz4B,EAAOob,KAAK/Y,OAAO4C,SACdjE,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IAC7B,IAAKiS,GAAcjT,EAAKgB,IAEpB,YADAiG,GAAmBmU,KAAK/Y,OAAQrC,EAAKgB,GAAIkS,IAIjDlF,GAAaoN,KAAK/Y,OAAQ,YAGlC8sB,EAAe1K,UAAUmb,cAAgB,WACI,IAArCxkB,KAAK/Y,OAAO0B,cAAc9C,SAC1Bma,KAAK0d,mBACL9lB,GAASoI,KAAK/Y,UAGtB8sB,EAAe1K,UAAUqU,iBAAmB,WACxC,IAAIzwB,EAAOvG,SAAO,IAAMF,GAAgB,IAAMizB,GAAYzZ,KAAK/Z,SAE3DrB,EAAOob,KAAKmb,cAAcluB,GAC9BuK,GAAmBwI,KAAK/Y,OAAQrC,IAEpCmvB,EAAe1K,UAAUib,eAAiB,WACtC,IAAIr3B,EAAO+S,KAAK/Y,OAAO0B,cAAcqX,KAAK/Y,OAAO0B,cAAc9C,OAAS,GACpEy2B,EAAUtc,KAAKuc,YAAYtvB,GAAO+S,KAAK/Y,OAAO1B,OAClD,OAAOya,KAAK+Y,SAASuD,EAAQ,KAEjCvI,EAAe1K,UAAUoa,eAAiB,WACtC,OAAO/8B,SAAO,IAAMF,GAAgB,IAAMi+B,GAAWzkB,KAAK/Z,UAE9D8tB,EAAe1K,UAAUqb,cAAgB,WACrC,OAAOh+B,SAAO,IAAMF,GAAgB,IAAMizB,GAAYzZ,KAAK/Z,UAE/D8tB,EAAe1K,UAAU6U,aAAe,WACpC,OAAOle,KAAK+Y,SAAS,IAEzBhF,EAAe1K,UAAU+U,YAAc,WACnC,OAAOpe,KAAK+Y,SAAS/Y,KAAK+Y,SAASlzB,OAAS,IAEhDkuB,EAAe1K,UAAUsa,aAAe,SAAU12B,GAC9C+S,KAAKkb,SAASjuB,IAElB8mB,EAAe1K,UAAUua,aAAe,SAAUJ,EAAOmB,GACrD,IAAIC,EAAQ5kB,KAAK6kB,YAAYrB,EAAOmB,EAAW3kB,KAAK8kB,QACpD9kB,KAAKkb,SAAS0J,IAElB7Q,EAAe1K,UAAUwa,cAAgB,SAAUL,EAAOmB,GACtD,IAAIC,EAAQ5kB,KAAK6kB,YAAYrB,EAAOmB,GACpC3kB,KAAKkb,SAAS0J,IAElB7Q,EAAe1K,UAAUwb,YAAc,SAAUE,EAAIJ,EAAWG,GAC5D,GAAI3/B,oBAAM4/B,GACN,OAAO/kB,KAAKyjB,kBAAoBzjB,KAAK0kB,iBAAmB1kB,KAAKke,eAEjE,IACI8G,EADAzkB,EAAQP,KAAK+Y,SAASrsB,QAAQq4B,GAElC,GAQI,GANIxkB,EADAokB,EACQG,EAASvkB,EAAQukB,EAASvkB,EAAQ,EAGlCukB,EAASvkB,EAAQukB,EAASvkB,EAAQ,EAE9CykB,EAAWhlB,KAAK+Y,SAASxY,GACrBpb,oBAAM6/B,GACN,OAAOD,SAELE,YAAUD,IACpB,OAAOA,GAEXjR,EAAe1K,UAAU6R,SAAW,SAAU8J,GAC1C,IAAK7/B,oBAAM6/B,GAAW,EAEe,IADThlB,KAAK8iB,iBAAiB,SAAUkC,GAClClvB,SAClBkK,KAAKqX,UAAY2N,EACjBhlB,KAAKmd,cACLnd,KAAKijB,UAAU+B,GACfhlB,KAAKkjB,SAAS8B,GACdhlB,KAAK/Y,OAAOM,OAAOiV,OACnBwD,KAAKmjB,cAAc,SAAU6B,MAIzCjR,EAAe1K,UAAU+a,SAAW,SAAUZ,GAC1C,IAAKr+B,oBAAMq+B,KAAWA,EAAM38B,UAAUC,SAAS2yB,IAAa,EAEvB,IADTzZ,KAAK8iB,iBAAiB,SAAUU,GAClC1tB,SAClBkK,KAAKijB,UAAUO,GACfxjB,KAAK/Y,OAAOM,OAAOiV,OACnBwD,KAAKmjB,cAAc,SAAUK,MAIzCzP,EAAe1K,UAAUgb,SAAW,SAAUX,EAAWvF,GACrD,GAAIne,KAAK/Y,OAAO80B,sBAAwB52B,oBAAMu+B,GAAY,CACtD1jB,KAAKqX,UAAYqM,EACjB,IACIwB,EAAWllB,KAAK/Z,QAAQ2J,cAAc,IAAM0pB,IAC5C6L,EAAWD,EAASE,UACpBC,EAAoBrlB,KAAKyjB,iBAC7BzjB,KAAKqe,YAAYF,GAJDG,SAAS,EAAMC,UAAU,IAKzC2G,EAASE,UAAYD,EAChBhgC,oBAAMkgC,IACPrlB,KAAKkjB,SAASmC,KAI1BtR,EAAe1K,UAAUya,SAAW,SAAU3F,EAAU/f,GAC/C4B,KAAK/Y,OAAO80B,oBAGP52B,oBAAMg5B,KACK,YAAb/f,EAAE1W,OACFsY,KAAKkjB,SAAS/E,GAGdne,KAAKqe,YAAYF,EAAU/f,IAP/B4B,KAAK2jB,aAAaxF,IAW1BpK,EAAe1K,UAAU0a,UAAY,SAAUL,EAAWtlB,GACjD4B,KAAK/Y,OAAO80B,oBAGP52B,oBAAMu+B,KACK,aAAbtlB,EAAE1W,OACFsY,KAAKkjB,SAASQ,GAGd1jB,KAAKqe,YAAYqF,EAAWtlB,IAPhC4B,KAAK2jB,aAAaD,IAW1B3P,EAAe1K,UAAU2a,UAAY,SAAUR,EAAOplB,GAClD,GAAK4B,KAAK/Y,OAAO80B,oBAGZ,CACD,IAAIuJ,EAAQtlB,KAAK6kB,YAAYrB,GAAO,EAAMxjB,KAAK8kB,QAC1C3/B,oBAAMmgC,KACU,aAAblnB,EAAE1W,OACFsY,KAAKkjB,SAASoC,GAGdtlB,KAAKqe,YAAYiH,EAAOlnB,SAThC4B,KAAK4jB,aAAaJ,GAAO,IAcjCzP,EAAe1K,UAAU4a,UAAY,SAAUT,EAAOplB,GAClD,GAAK4B,KAAK/Y,OAAO80B,oBAGZ,CACD,IAAIwJ,EAAQvlB,KAAK6kB,YAAYrB,GAAO,GAC/Br+B,oBAAMogC,KACU,aAAbnnB,EAAE1W,OACFsY,KAAKkjB,SAASqC,GAGdvlB,KAAKqe,YAAYkH,EAAOnnB,SAThC4B,KAAK6jB,cAAcL,GAAO,IAclCzP,EAAe1K,UAAU6a,WAAa,SAAUV,EAAOplB,GACnD,GAAK4B,KAAK/Y,OAAO80B,oBAGZ,CACD,IAAIyJ,EAAQxlB,KAAK6kB,YAAYrB,GAAO,GAC/Br+B,oBAAMqgC,KACU,cAAbpnB,EAAE1W,OACFsY,KAAKkjB,SAASsC,GAGdxlB,KAAKqe,YAAYmH,EAAOpnB,SAThC4B,KAAK6jB,cAAcL,GAAO,IAclCzP,EAAe1K,UAAU8a,QAAU,SAAUX,EAAOplB,GAChD,GAAK4B,KAAK/Y,OAAO80B,oBAGZ,CACD,IAAI0J,EAAQzlB,KAAK6kB,YAAYrB,GAAO,EAAOxjB,KAAK8kB,QAC3C3/B,oBAAMsgC,KACU,WAAbrnB,EAAE1W,OACFsY,KAAKkjB,SAASuC,GAGdzlB,KAAKqe,YAAYoH,EAAOrnB,SAThC4B,KAAK4jB,aAAaJ,GAAO,IAcjCzP,EAAe1K,UAAU4Z,UAAY,SAAU+B,GACtC7/B,oBAAM6/B,KACFA,EAASn+B,UAAUC,SAAS2yB,MAC7BzZ,KAAK/Y,OAAO0B,cAAc7C,KAAKka,KAAK0lB,YAAYV,IAChDhlB,KAAK/Y,OAAO7B,eAAgBuD,cAAeqX,KAAK/Y,OAAO0B,gBAAiB,GACxE2rB,YAAU0Q,IAAYvL,KACtBuL,EAASxN,aAAa,gBAAiB,QACvCxX,KAAK2c,WAAWqI,GAAU,IAE9BhlB,KAAK/Y,OAAOmwB,YAAc4N,IAGlCjR,EAAe1K,UAAUriB,aAAe,SAAU2+B,GAC9C,IAAKxgC,oBAAMwgC,GAAU,CACjBvC,eAAauC,IAAWlM,KACpBzZ,KAAK/Y,OAAO80B,oBACZ4J,EAAQnO,aAAa,gBAAiB,SAGtCmO,EAAQhK,gBAAgB,iBAE5B3b,KAAK2c,WAAWgJ,GAAS,GACzB,IAAIplB,EAAQP,KAAK/Y,OAAO0B,cAAc+D,QAAQsT,KAAK0lB,YAAYC,IAC3DplB,GAAS,IACTP,KAAK/Y,OAAO0B,cAAcic,OAAOrE,EAAO,GACxCP,KAAK/Y,OAAO7B,eAAgBuD,cAAeqX,KAAK/Y,OAAO0B,gBAAiB,IAE5EqX,KAAK/Y,OAAOmwB,YAAc,OAGlCrD,EAAe1K,UAAUqc,YAAc,SAAUz4B,GAE7C,IAAIrI,EAAOob,KAAKmb,cAAcluB,GAC9B,OAAOmI,EAAY4K,KAAK/Y,OAAQrC,IAEpCmvB,EAAe1K,UAAU6Z,SAAW,SAAUj2B,GAC1C+S,KAAK/Z,QAAQuxB,aAAa,WAAY,MACtC,IAAIgM,EAAQxjB,KAAKyjB,iBACbD,IACAA,EAAM7H,gBAAgB,YACtByH,eAAaI,IAASiB,MAE1BnQ,YAAUrnB,IAAQw3B,KAClBx3B,EAAKuqB,aAAa,WAAY,KAC9BvqB,EAAK2S,SAETmU,EAAe1K,UAAUsT,WAAa,SAAU1vB,EAAM24B,GAClD,GAAK5lB,KAAK/Y,OAAO80B,oBAAjB,CAGA,IAAIU,EAAW/1B,SAAO,WAAiBuG,GACnC9H,oBAAMs3B,KAGNmJ,EACKnJ,EAAS51B,UAAUC,SAAS+7B,MAC7BvO,YAAUmI,GAAWoG,IACrBz5B,UAAQqzB,EAAU,IAAMoJ,IAAarO,aAAa,eAAgB,SAIlEiF,EAAS51B,UAAUC,SAAS+7B,MAC5BO,eAAa3G,GAAWoG,IACxBz5B,UAAQqzB,EAAU,IAAMoJ,IAAarO,aAAa,eAAgB,aAI9EzD,EAAe1K,UAAU8T,YAAc,WACnC,IAAI2I,EAAO9c,MAAMK,UAAU2P,MAAMC,KAAKhT,YAAU,IAAMwT,GAAYzZ,KAAK4Y,eAEvE,GAAoB,IAAhBkN,EAAKjgC,OAAc,CAEnB,IAAiC,IADbma,KAAK8iB,iBAAiB,WAAYgD,EAAK,IACrChwB,OAClB,IAAK,IAAIlQ,EAAI,EAAGyN,EAAMyyB,EAAKjgC,OAAQD,EAAIyN,EAAKzN,IACxCoa,KAAKhZ,aAAa8+B,EAAKlgC,IAG/Boa,KAAKmjB,cAAc,WAAY2C,EAAK,MAG5C/R,EAAe1K,UAAU6W,cAAgB,WACrClgB,KAAK4Z,eACAz0B,oBAAM6a,KAAKyX,UACZzX,KAAK0Z,gBAGb3F,EAAe1K,UAAU2W,sBAAwB,WAC7ChgB,KAAK4Z,gBAET7F,EAAe1K,UAAUuQ,aAAe,WACpC,IAAIkL,EAAS,EACb,GAAI9kB,KAAK+Y,SACL,IAAK,IAAInzB,EAAI,EAAGyN,EAAM2M,KAAK+Y,SAASlzB,OAAS,EAAGD,EAAIyN,GAC5C2M,KAAK+Y,SAASnzB,GAAGmgC,wBAAwB12B,MAAQ2Q,KAAK+Y,SAASnzB,EAAI,GAAGmgC,wBAAwB12B,IAD7CzJ,IAEjDk/B,IAOZ9kB,KAAK8kB,OAASA,GAElB/Q,EAAe1K,UAAUyZ,iBAAmB,SAAUp7B,EAAQuF,GAE1D,IACIU,GACAjG,OAAQA,EAAQkG,YAFToS,KAAKmb,cAAcluB,GAESqY,aAActF,KAAKgU,cAAele,QAAQ,EAAOS,OAAQtJ,GAIhG,OAFA+S,KAAK/Y,OAAOgH,QAAQ,gBAAiBN,GACrCqS,KAAKgU,eAAgB,EACdrmB,GAEXomB,EAAe1K,UAAU8Z,cAAgB,SAAUz7B,EAAQuF,GAEvD,IAAIrI,EAAOob,KAAKmb,cAAcluB,GAC9B+S,KAAK/Y,OAAO++B,YAAcphC,EAC1B,IAAI+I,GAAcjG,OAAQA,EAAQkG,YAAahJ,EAAM0gB,aAActF,KAAKsF,cACxEtF,KAAK/Y,OAAOgH,QAAQ,aAAcN,GAClCqS,KAAKsF,cAAe,GAExByO,EAAe1K,UAAUkQ,YAAc,SAAUzuB,GAE7C,IAAK,IADDwxB,EAAUtc,KAAKuc,WAAWzxB,EAAOkV,KAAK/Y,OAAO1B,OACxC0gC,EAAI,EAAG5yB,EAAMipB,EAAQz2B,OAAQogC,EAAI5yB,EAAK4yB,IAAK,CAEhDjmB,KAAKqe,YAAYre,KAAK+Y,SAASuD,EAAQ2J,KADvB3H,SAAS,EAAMC,UAAU,MAIjDxK,EAAe1K,UAAUkT,WAAa,SAAUzxB,EAAOo7B,GAGnD,IAAK,IAFD5J,KACAhyB,EAAS47B,EAAO,KAAO,OAClBtgC,EAAI,EAAGyN,EAAM2M,KAAKlV,MAAMjF,OAAQD,EAAIyN,EAAKzN,KACU,IAApDkF,EAAM4B,QAAQ3H,WAASuF,EAAQ0V,KAAKlV,MAAMlF,MAC1C02B,EAAQx2B,KAAKF,GAGrB,OAAO02B,GAGXvI,EAAe1K,UAAU8R,cAAgB,SAAUluB,GAC/C,IAAIsT,EAAQP,KAAK+Y,SAASrsB,QAAQO,GAClC,OAAO+S,KAAKlV,MAAMyV,IAGtBwT,EAAe1K,UAAUwU,aAAe,SAAUj5B,GAE9C,IAAIuhC,KACJ,GAAInmB,KAAK/Y,OAAO1B,MACZ4gC,EAAa,IAAIt3B,cAAYmR,KAAKlV,OAC9BgE,cAAa,IAAIL,SAAQU,MAAM,KAAM,QAAS6Q,KAAK/Y,OAAO0f,WAAW,QAExE,CAED,IAAIyf,EAAU,IAAIv3B,cAAYmR,KAAKlV,OAC/BgE,cAAa,IAAIL,SAAQU,MAAM,OAAQ,QAASpK,WAAS,OAAQH,IAAO,IACxEwhC,EAAQvgC,OAAS,IACjBsgC,EAAa,IAAIt3B,cAAYu3B,GACzBt3B,cAAa,IAAIL,SAAQU,MAAM,aAAc,QAAS6Q,KAAK/Y,OAAO0Q,YAAY,KAG1F,GAAIwuB,EAAWtgC,OAAS,EAAG,CACvB,IAAI0a,EAAQP,KAAKlV,MAAM4B,QAAQy5B,EAAW,IAE1CnmB,KAAKqe,YAAYre,KAAK+Y,SAASxY,IADf+d,SAAS,EAAMC,UAAU,MAIjDxK,EAAe1K,UAAUgU,mBAAqB,WAI1C,IAAK,IAFDz4B,KACAkG,EAAQmb,YAAU,IAAMzf,GAAgB,IAAMizB,GAAYzZ,KAAK/Z,SAC1DL,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,IAC9BhB,EAAKgB,GAAKoa,KAAKmb,cAAcrwB,EAAMlF,IAEvCoa,KAAK/Y,OAAO4C,SAAWjF,GAG3BmvB,EAAe1K,UAAUmW,aAAe,SAAU91B,GAC9C,GAAyB,eAArBsW,KAAK/Y,OAAOgE,KAAhB,CAIA,OADalG,WAAS,SAAU2E,IAE5B,IAAK,cACDsW,KAAKqmB,YAAYthC,WAAS,MAAO2E,IACjC,MACJ,IAAK,gBACDsW,KAAKsmB,cAAcvhC,WAAS,MAAO2E,IACnC,MACJ,IAAK,WACDsW,KAAKumB,SAASxhC,WAAS,KAAM2E,IAC7B,MACJ,IAAK,aACDsW,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,EACpBtF,KAAKwmB,WAAWzhC,WAAS,KAAM2E,GAAO3E,WAAS,UAAW2E,IAC1D,MACJ,IAAK,eACDsW,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,EACpB,MACJ,IAAK,iBACDtF,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,EACpBtF,KAAKwe,iBACL,MACJ,IAAK,YACDxe,KAAKgU,eAAgB,EACrBhU,KAAKsF,cAAe,EACpBtF,KAAKie,qBAIjBlK,EAAe1K,UAAUod,cAAgB,SAAU37B,GAC/C,IAAIwxB,KACAoK,IAAwE,KAA5D1mB,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,QAAgBwX,KAAK/Y,OAAOwB,YAC1Fk+B,EAAa3mB,KAAK/Y,OAAO1B,MAAQ,KAAO,OAC5C,GAAIya,KAAK/Y,OAAO1B,QAAUmhC,EACtB,IAAK,IAAI9gC,EAAI,EAAGyN,EAAM2M,KAAKlV,MAAMjF,OAAQD,EAAIyN,EAAKzN,KACc,IAAxDkF,EAAM4B,QAAQ3H,WAAS4hC,EAAY3mB,KAAKlV,MAAMlF,MAC9C02B,EAAQx2B,KAAKF,QAKrB,IAASA,EAAI,EAAGyN,EAAM2M,KAAKlV,MAAMjF,OAAQD,EAAIyN,EAAKzN,IAAK,CACnD,IAAIghC,EAAS7hC,WAAS,aAAcib,KAAKlV,MAAMlF,IAAMb,WAAS,OAAQib,KAAKlV,MAAMlF,KACjD,IAA3BkF,EAAM4B,QAAQk6B,KAA4E,IAAxD97B,EAAM4B,QAAQ3H,WAAS4hC,EAAY3mB,KAAKlV,MAAMlF,MACjF02B,EAAQx2B,KAAKF,GAIzB,OAAO02B,GAEXvI,EAAe1K,UAAUgd,YAAc,SAAU1gC,GAE7C,GADAqa,KAAK/Y,OAAOc,aAAe,iBACvB5C,oBAAMQ,GACNqa,KAAKukB,oBADT,CAIA,IAAIjI,EAAUtc,KAAKymB,cAAc9gC,GACjC,GAAuB,IAAnB22B,EAAQz2B,OAAZ,CAMA,IAAK,IAFDjB,KACAwT,KACKxS,EAAI,EAAGA,EAAI02B,EAAQz2B,OAAQD,IAChChB,EAAKgB,GAAKoa,KAAKlV,MAAMwxB,EAAQ12B,IAC7BwS,EAAOxS,GAAKwP,EAAY4K,KAAK/Y,OAAQrC,EAAKgB,IAE9CuS,GAAc6H,KAAK/Y,OAAQrC,EAAMwT,MAErC2b,EAAe1K,UAAUid,cAAgB,SAAU3gC,GAC/C,GAAIR,oBAAMQ,GACNqa,KAAKjI,iBADT,CAIA,IAAIwI,EAAQP,KAAKymB,cAAc9gC,GAC/B,GAAqB,IAAjB4a,EAAM1a,OAAV,CAMA,IAAK,IAFDjB,KACAwT,KACKxS,EAAI,EAAGA,EAAI2a,EAAM1a,OAAQD,IAC9BhB,EAAKgB,GAAKoa,KAAKlV,MAAMyV,EAAM3a,IAC3BwS,EAAOxS,GAAKwP,EAAY4K,KAAK/Y,OAAQrC,EAAKgB,IAE9C0S,GAAgB0H,KAAK/Y,OAAQrC,EAAMwT,MAEvC2b,EAAe1K,UAAUkd,SAAW,SAAUvhC,GAC1C,IAAIG,oBAAMH,GAAV,CAGA,IAAIs3B,EAAUtc,KAAKymB,eAAezhC,IAC9Bs3B,EAAQz2B,OAAS,GACjBma,KAAK+d,aAAa/d,KAAK+Y,SAASuD,EAAQ,OAGhDvI,EAAe1K,UAAUmd,WAAa,SAAUxhC,EAAIqJ,GAEhD,GADA2R,KAAK/Y,OAAOc,aAAe,iBACvB5C,oBAAMH,GACNgb,KAAKwkB,oBADT,CAIA,IAAIlI,EAAUtc,KAAKymB,eAAezhC,IAC9Bs3B,EAAQz2B,OAAS,IACjB2R,GAAmBwI,KAAK/Y,OAAQ+Y,KAAKlV,MAAMwxB,EAAQ,KAC/Cn3B,oBAAMkJ,GACNuJ,GAASoI,KAAK/Y,QAGT4Q,GAAcmI,KAAK/Y,OAAO4C,SAAS,IAIpCgQ,GAAOmG,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO5B,KAAMgJ,GAHtCxC,GAAmBmU,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO4C,SAAS,GAAIiO,OAQlEic,KCrgDP8S,GAA+B,WAS/B,SAASA,EAAc5/B,GACnB+Y,KAAK8mB,YAAc,GACnB9mB,KAAK+mB,eAAiB,GACtB/mB,KAAKgnB,YAAc,KACnBhnB,KAAKinB,gBAAkB,KACvBjnB,KAAK/Y,OAASA,EACd+Y,KAAKwU,YACD+B,MAAO,SAEXvW,KAAKmX,SA4XT,OA1XA0P,EAAcxd,UAAUiW,kBAAoB,SAAUlhB,GAClD,GAAIA,EAAEzM,SAAWqO,KAAKqb,iBAAgC,WAAbjd,EAAEzM,OAG3C,IAAK,IAAImvB,EAAK,EAAGC,EAAK/f,OAAOD,KAAK3C,EAAE4iB,SAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAChE,IAAIoG,EAAOnG,EAAGD,GACVt4B,EAAQ4V,EAAE4iB,QAAQr3B,eACtB,OAAQu9B,GACJ,IAAK,iBACIC,oBAAkB3+B,EAAM4+B,sBACzBpnB,KAAKqnB,gBAAgB7+B,EAAM4+B,sBAE3BpnB,KAAK/Y,OAAOqB,oBAAoBC,UAAUC,OAA6D,KAApDwX,KAAK/Y,OAAOqB,oBAAoBC,UAAUC,QAC1F2+B,oBAAkB3+B,EAAM4+B,sBAAwBD,oBAAkB3+B,EAAMoB,aACvEu9B,oBAAkB3+B,EAAMwB,aAC5BV,EAAkB0W,KAAK/Y,OAAQ+Y,KAAK/Y,OAAOqB,oBAAoBC,UAAUC,OAAO,MAMpGq+B,EAAcxd,UAAU8N,OAAS,WAC7BnX,KAAKuU,oBAETsS,EAAcxd,UAAUie,aAAe,WACnC,IAAIthC,EAAYga,KAAK/Y,OAAOjB,UACxBuhC,EAAQvnB,KAAK/Y,OAAO5B,KAAKsH,MAAM,KAC/B66B,EAAexnB,KAAK/Y,OAAO8I,cAAc,MAAQC,UAAW,oBAC5Dy3B,EAAe,KACfC,EAAe1hC,EAAUH,OAC7B,GAAIG,EAAUH,OAAS,EAAG,CAEtB,IAAK,IADDb,EAAK,GACAY,EAAI,EAAGA,EAAI8hC,EAAc9hC,IAAK,CACnC,IAAI+hC,EAAc,KAClBF,EAAeznB,KAAK/Y,OAAO8I,cAAc,MAAQC,UAAW,wBAC5D,IAAK,IAAIi2B,EAAI,EAAGA,GAAKrgC,EAAGqgC,IACpBjhC,EAAKA,EAAKuiC,EAAMtB,GAAK,IAGzB,GADAwB,EAAajQ,aAAa,aAAcxyB,GAC9B,IAANY,EAAS,CACT,IAAIg3B,EAAO7sB,gBAAc,QAAUC,UAAW43B,KAC9CH,EAAaj3B,YAAYosB,GAEzB8K,EAAe9hC,GAAM,GACrB+hC,EAAc53B,gBAAc,KAAOC,UAAWrJ,KAC9C8gC,EAAajQ,aAAa,WAAY,MAGtCmQ,EAAc53B,gBAAc,QAAUC,UAAWrJ,KAErD3B,EAAK,GACL2iC,EAAYE,UAAY7hC,EAAUJ,GAClC6hC,EAAaj3B,YAAYm3B,GACzBH,EAAah3B,YAAYi3B,GAE7B,IAAIK,EAAY9nB,KAAK/Y,OAAO8gC,wBAAwBn4B,cAAc,oBAC7Du3B,oBAAkBW,KACdX,oBAAkBnnB,KAAKgoB,aACxBhoB,KAAKgoB,WAAW7W,UAEpBjoB,SAAO4+B,IAEX,IAAIG,EAAajoB,KAAK/Y,OAAO8gC,wBAAwBn4B,cAAc,kBAC9Dq4B,EAIDjoB,KAAK/Y,OAAO8gC,wBAAwBv3B,YAAYg3B,GAHhDxnB,KAAK/Y,OAAO8gC,wBAAwB5L,aAAaqL,EAAcS,GAKnEjoB,KAAKkoB,oBAAoBV,KAIjCX,EAAcxd,UAAU6e,oBAAsB,SAAUC,GAUpD,IAAK,IATDC,EAAaD,EAAYn/B,iBAAiB,MAC1C8+B,EAAY9nB,KAAK/Y,OAAO8gC,wBAAwBn4B,cAAc,oBAC9DiB,EAAQmF,OAAOmS,iBAAiB2f,EAAW,MAC3CO,EAAShgB,WAAWxX,EAAMy3B,iBAAiB,kBAC3CC,EAAQlgB,WAAWxX,EAAMy3B,iBAAiB,iBAC1CE,EAAqBV,EAAUrf,YAAc4f,EAASE,EACtDf,EAAexnB,KAAK/Y,OAAO8I,cAAc,MAAQC,UAAW,oBAC5Dy4B,EAAkB,EAClBC,KACK9iC,EAAI,EAAGA,EAAIwiC,EAAWviC,OAAQD,IAAK,CACxC,IAAIgd,EAAQwlB,EAAWxiC,GAAG+iC,YAC1BD,EAAiB5iC,KAAK8c,GACtB6lB,GAAoC7lB,EAEnCukB,oBAAkBW,IACnB5+B,SAAO4+B,GAEX,IAAIc,EAAkB5oB,KAAK/Y,OAAO8I,cAAc,OAChD64B,EAAgBpR,aAAa,QAAS,iBACtC,IAAIxyB,EAAKgb,KAAK/Y,OAAOhB,QAAQjB,GHhFd,UGiFX6jC,EAAc94B,gBAAc,SAAW/K,GAAIA,EAC3C4Y,OAASkrB,aAAc,MAAOC,aAAcp4B,EAAcqP,KAAK/Y,OAAQ,aAC3E2hC,EAAgBp4B,YAAYq4B,GAC5B,IAAIG,EAAYhpB,KAAK/Y,OAAO8gC,wBAAwBn4B,cAAc,2BAClE,GAAIu3B,oBAAkB6B,GAAY,CAC9BhpB,KAAK/Y,OAAO8gC,wBAAwBv3B,YAAYo4B,GAChD,IAAIK,EAAOl5B,gBAAc,QAAUC,UAAW,wBAC9CyxB,eAAa54B,IAAIogC,EAAM,QAASjpB,KAAKkpB,YAAalpB,MAClD6oB,EAAYjsB,cAAcuf,aAAa8M,EAAMJ,GAC7C7oB,KAAKzX,UAAY,IAAI4gC,WACjB3gC,MAAO,GACP4gC,iBAAiB,EACjBvjB,YAAalV,EAAcqP,KAAK/Y,OAAQ,UACxC2Y,MAAOI,KAAKqpB,QAAQtpB,KAAKC,MACzBspB,KAAMtpB,KAAKupB,OAAOxpB,KAAKC,QAE3BA,KAAKzX,UAAUya,SAAS,IAAMhD,KAAK/Y,OAAOhB,QAAQjB,GHjGvC,WGkGXgb,KAAKqnB,gBAAgBrnB,KAAK/Y,OAAO0C,eAAey9B,qBAChD,IAAI3V,EAASzR,KAAKzX,UAAUtC,QAAQ4W,mBACpC4kB,eAAa54B,IAAI4oB,EAAQ,YAAazR,KAAKwpB,oBAAoBzpB,KAAKC,MAAOA,MAC3EyhB,eAAa54B,IAAImX,KAAKzX,UAAUtC,QAAS,QAAS+Z,KAAKypB,QAAQ1pB,KAAKC,MAAOA,MAE/E,IAAIioB,EAAajoB,KAAK/Y,OAAO8gC,wBAAwBn4B,cAAc,kBAEnE,GADA44B,GAA2CxoB,KAAKinB,gBAAkBjnB,KAAKinB,gBAAkBgB,EAAWxf,YAChGggB,EAAkBD,EAAoB,CAEtC,IADI5iC,EAAIwiC,EAAWviC,OACZD,KAAK,CACR,IAAI8jC,EAAOlB,EAAqBE,EAAiB9iC,GACjD,KAAI8jC,EAAO,IAIN,CAGD,IAAK,IADD5+B,KACKm7B,EAAI,EAAGA,GAAKrgC,EAAGqgC,IAAK,CACzB,IAAI0D,EAAYvB,EAAWnC,GAC3Bn7B,EAAMhF,MACFhB,KAAM6kC,EAAU9B,UAChB+B,MAAOD,EAAU1kC,aAAa,gBAGtC,IAAI4kC,EAAY7pB,KAAK/Y,OAAO8I,cAAc,MAAQC,UAAW,sBAGzD85B,EAAc9pB,KAAK/Y,OAAO8I,cAAc,UADzBC,UAAW,yBAE9B65B,EAAUr5B,YAAYs5B,GACtBtC,EAAarL,aAAa0N,EAAWrC,EAAa53B,cAAc,OAChEoQ,KAAKgoB,WAAa,IAAI+B,kBAClBj/B,MAAOA,EACPwG,SAAU,yBACVinB,QAASyR,GACTC,aAAc,MACdnnB,oBAAqB9C,KAAK/Y,OAAO6b,oBACjConB,iBAAkBlqB,KAAKmqB,qBAAqBpqB,KAAKC,MACjDtZ,OAAQsZ,KAAKoqB,wBAAwBrqB,KAAKC,QAE9CA,KAAKgoB,WAAWjlB,kBAAmB,EACnC/C,KAAKgoB,WAAWhlB,SAAS8mB,GACzB,MA9BAtC,EAAarL,aAAaiM,EAAWxiC,GAAI4hC,EAAa53B,cAAc,OACpE44B,EAAqBkB,EAgC7B1pB,KAAK/Y,OAAO8gC,wBAAwB5L,aAAaqL,EAAcS,QAG/DjoB,KAAK/Y,OAAO8gC,wBAAwB5L,aAAagM,EAAaF,IAItEpB,EAAcxd,UAAUggB,QAAU,WACnBjgC,UAAQ4W,KAAKzX,UAAUtC,QAAS,kBACtCY,UAAUgC,IAAI,YAGvBg+B,EAAcxd,UAAUogB,QAAU,WAC9BzpB,KAAK/Y,OAAOM,OAAOkC,IAAqBC,KAAMsW,KAAK/Y,UAGvD4/B,EAAcxd,UAAUkgB,OAAS,WAClBngC,UAAQ4W,KAAKzX,UAAUtC,QAAS,kBACtCY,UAAUqC,OAAO,YAG1B29B,EAAcxd,UAAU+gB,wBAA0B,SAAUrzB,GAExD,IAAIrN,GAAS6M,OAAQQ,EAAM9Q,SAC3B+Z,KAAKqqB,wBAAwB3gC,IAGjCm9B,EAAcxd,UAAU8gB,qBAAuB,SAAUzgC,GACrDA,EAAKzD,QAAQuxB,aAAa,aAAczyB,WAAS,QAAS2E,EAAKuD,OAC/D,IAAIq9B,EAAStqB,KAAK/Y,OAAO8I,cAAc,KAAOC,UAAW,gBACzDtG,EAAKzD,QAAQuK,YAAY85B,IAE7BzD,EAAcxd,UAAUge,gBAAkB,SAAUkD,GAC5CA,GACAvqB,KAAKzX,UAAUwV,MAAQiC,KAAKwpB,oBAAoBzpB,KAAKC,MACrDA,KAAKzX,UAAUgc,OAAS,OAGxBvE,KAAKzX,UAAUgc,OAASvE,KAAKwpB,oBAAoBzpB,KAAKC,MACtDA,KAAKzX,UAAUwV,MAAQ,OAG/B8oB,EAAcxd,UAAUmgB,oBAAsB,SAAU9/B,GACpD,IAAIuwB,EAAQja,KACPmnB,oBAAkBz9B,EAAKlB,SACxBwX,KAAK/Y,OAAOwB,YAAa,EACrBuX,KAAK/Y,OAAO0C,eAAey9B,qBAC3BpxB,OAAOC,aAAa+J,KAAKgnB,aACzBhnB,KAAKgnB,YAAchxB,OAAOsB,WAAW,WAAchO,EAAkB2wB,EAAMhzB,OAAQyC,EAAKlB,OAAO,IAAW,MAG1Gc,EAAkB0W,KAAK/Y,OAAQyC,EAAKlB,OAAO,KAIvDq+B,EAAcxd,UAAUghB,wBAA0B,SAAUjsB,GACxD,IAAI2mB,EAAK3mB,EAAE7H,OACX,GAAoB,OAAhBwuB,EAAGyF,UAAqC,MAAhBzF,EAAGyF,SAAkB,CAC7C,IAAI7lC,EAAuB,OAAhBogC,EAAGyF,SAAoBzF,EAAG0F,SAAS,GAAK1F,EACnD,IAAKoC,oBAAkBxiC,GAAO,CAC1Bqb,KAAK/Y,OAAOwB,YAAa,EACzB,IAAIiiC,EAAc1qB,KAAKtb,WAAWC,GAClCqb,KAAK/Y,OAAO4C,UAAY9E,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOgF,WAChG+T,KAAK2qB,gBAAgB3qB,KAAK/Y,OAAO4C,SAAS,IAC1CkB,GAAKiV,KAAK/Y,OAAQk4B,GAAoBuL,GACtC,IAAIE,EAAa5qB,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAChEma,KAAK/Y,OAAOM,OAAOsjC,IAA8Bl5B,OAAQ,WAAYO,aAAc04B,OAK/F/D,EAAcxd,UAAUshB,gBAAkB,SAAU/lC,GAChD,IAAI+I,GAAcmI,QAAQ,EAAOlI,YAAahJ,EAAM+M,OAAQ,wBACrDhE,EAAUmI,OACjBkK,KAAK/Y,OAAOgH,QAAQ,WAAYN,IAGpCk5B,EAAcxd,UAAU6f,YAAc,WAClC,GAAIlpB,KAAK/Y,OAAOwK,SACZ,GAAIuO,KAAK/Y,OAAOhB,QAAQY,UAAUC,SAASgkC,IACvC1H,eAAapjB,KAAK/Y,OAAOhB,SAAU6kC,IACnC9qB,KAAKinB,gBAAkB,SAEtB,CACD,IAAIgB,EAAajoB,KAAK/Y,OAAO8gC,wBAAwBn4B,cAAc,kBACnEoQ,KAAKinB,gBAAkBgB,EAAWxf,YAClC6L,YAAUtU,KAAK/Y,OAAOhB,SAAU6kC,IAChC9qB,KAAKzX,UAAUtC,QAAQ2Z,UAInCinB,EAAcxd,UAAU3kB,WAAa,SAAUqmC,GAC3C,IACIC,EADK5hC,UAAQ2hC,EAAM,MACF9lC,aAAa,cAClC+a,KAAK+mB,eAAiBiE,EACtB,IAAIC,EAAOjrB,KAAK+mB,eAAep6B,MAAM,KACjChH,EAAMqa,KAAK/Y,OAAOzB,OAClBU,EAAQ8Z,KAAK/Y,OAAOjB,UACxBga,KAAK/Y,OAAOzB,UACZwa,KAAK/Y,OAAOjB,aAEZ,IAAK,IADDklC,EAAU,GACLtlC,EAAI,EAAGyN,EAAM43B,EAAKplC,OAAS,EAAGD,EAAIyN,EAAKzN,IAC5Coa,KAAK/Y,OAAOzB,OAAOM,KAAKH,EAAIC,IAC5Boa,KAAK/Y,OAAOjB,UAAUF,KAAKI,EAAMN,IACjCslC,GAAWD,EAAKrlC,GAAK,IAGzB,OADAoa,KAAK/Y,OAAO7B,eAAgBC,KAAM6lC,IAAW,GACtCA,GAEXrE,EAAcxd,UAAU8hB,aAAe,WACnCnrB,KAAKsnB,eACLtnB,KAAKorB,qBAETvE,EAAcxd,UAAU6T,YAAc,WAClCld,KAAKsnB,gBAETT,EAAcxd,UAAUgiB,YAAc,WAClCrrB,KAAKsnB,gBAGTT,EAAcxd,UAAUkU,YAAc,WAClCvd,KAAKmrB,gBAGTtE,EAAcxd,UAAU+hB,kBAAoB,WACxCprB,KAAK/Y,OAAOwB,YAAa,GACrBuX,KAAKzX,WAAuC,KAAzByX,KAAKzX,UAAUC,OAAiD,KAAjCwX,KAAKzX,UAAUtC,QAAQuC,QACzEwX,KAAKzX,UAAUC,MAAQ,GACvBwX,KAAKzX,UAAUtC,QAAQuC,MAAQ,GAC/BwX,KAAKzX,UAAU2a,aAGvB2jB,EAAcxd,UAAUiiB,SAAW,WAC/BtrB,KAAKsnB,gBAETT,EAAcxd,UAAUkiB,WAAa,WACjCvrB,KAAKsnB,gBAETT,EAAcxd,UAAUkL,iBAAmB,WACvCvU,KAAKkhB,eAAiB,IAAIC,iBAAenhB,KAAK/Y,OAAO8gC,yBACjD3G,UAAWphB,KAAKqhB,iBAAiBthB,KAAKC,MACtCwU,WAAYxU,KAAKwU,WACjB8M,UAAW,YAEfthB,KAAK/Y,OAAO25B,GAAGvB,GAAqBrf,KAAKsf,kBAAmBtf,MAC5DyhB,eAAa54B,IAAImX,KAAK/Y,OAAO8gC,wBAAyB,QAAS/nB,KAAKqqB,wBAAyBrqB,MAC7FA,KAAK/Y,OAAO25B,GAAG4K,GAAgBxrB,KAAKmR,QAASnR,MAC7CA,KAAK/Y,OAAO25B,GAAGzB,GAAoBnf,KAAKmrB,aAAcnrB,MACtDA,KAAK/Y,OAAO25B,GAAGvuB,GAAoB2N,KAAKmrB,aAAcnrB,MACtDA,KAAK/Y,OAAO25B,GAAGh1B,GAAmBoU,KAAKmrB,aAAcnrB,MACrDA,KAAK/Y,OAAO25B,GAAG50B,GAAgBgU,KAAKmrB,aAAcnrB,MAClDA,KAAK/Y,OAAO25B,GAAG5jB,GAAkBgD,KAAKkd,YAAald,MACnDA,KAAK/Y,OAAO25B,GAAGzjB,GAAkB6C,KAAKqrB,YAAarrB,MACnDA,KAAK/Y,OAAO25B,GAAGtjB,GAAkB0C,KAAKud,YAAavd,MACnDA,KAAK/Y,OAAO25B,GAAGb,GAAuB/f,KAAKsrB,SAAUtrB,MACrDA,KAAK/Y,OAAO25B,GAAGnsB,GAAiBuL,KAAKurB,WAAYvrB,MACjDA,KAAK/Y,OAAO25B,GAAGX,GAAkBjgB,KAAKsrB,SAAUtrB,MAChDA,KAAK/Y,OAAO25B,GAAGtkB,GAAyB0D,KAAKyrB,mBAAoBzrB,MACjEA,KAAK/Y,OAAO25B,GAAGpqB,GAAiBwJ,KAAKob,WAAYpb,MACjDA,KAAK/Y,OAAO25B,GAAGJ,GAAsBxgB,KAAKsrB,SAAUtrB,MACpDA,KAAK/Y,OAAO25B,GAAG3rB,GAAiB+K,KAAKsnB,aAActnB,OAEvD6mB,EAAcxd,UAAUgY,iBAAmB,SAAUjjB,GACjD,OAAQA,EAAE1W,QACN,IAAK,QACDsY,KAAKqqB,wBAAwBjsB,KAIzCyoB,EAAcxd,UAAUsO,oBAAsB,WAC1C3X,KAAKkhB,eAAe/P,UACpBnR,KAAK/Y,OAAOg4B,IAAIE,GAAoBnf,KAAKmrB,cACzCnrB,KAAK/Y,OAAOg4B,IAAI5sB,GAAoB2N,KAAKmrB,cACzCnrB,KAAK/Y,OAAOg4B,IAAIrzB,GAAmBoU,KAAKmrB,cACxCnrB,KAAK/Y,OAAOg4B,IAAIjzB,GAAgBgU,KAAKmrB,cACrCnrB,KAAK/Y,OAAOg4B,IAAIxqB,GAAiBuL,KAAKurB,YACtCvrB,KAAK/Y,OAAOg4B,IAAIjiB,GAAkBgD,KAAKkd,aACvCld,KAAK/Y,OAAOg4B,IAAI9hB,GAAkB6C,KAAKqrB,aACvCrrB,KAAK/Y,OAAOg4B,IAAI3hB,GAAkB0C,KAAKud,aACvCvd,KAAK/Y,OAAOg4B,IAAIc,GAAuB/f,KAAKsrB,UAC5CtrB,KAAK/Y,OAAOg4B,IAAIgB,GAAkBjgB,KAAKsrB,UACvCtrB,KAAK/Y,OAAOg4B,IAAI3iB,GAAyB0D,KAAKyrB,oBAC9CzrB,KAAK/Y,OAAOg4B,IAAIzoB,GAAiBwJ,KAAKob,YACtCpb,KAAK/Y,OAAOg4B,IAAIuB,GAAsBxgB,KAAKsrB,UAC3CtrB,KAAK/Y,OAAOg4B,IAAIhqB,GAAiB+K,KAAKsnB,eAG1CT,EAAcxd,UAAU+R,WAAa,SAAU1xB,GAC3C,GAAIsW,KAAK/Y,OAAOwE,eAAiBuU,KAAKqb,gBAAiB,CACnD,IAAIqQ,EAAQhiC,EAAK6M,OAAOnN,QAAQ,MAChC4W,KAAK/Y,OAAO+L,SAAWgN,KAAKtb,WAAYgnC,EAAMjB,SAAS,IACvDzqB,KAAK/Y,OAAO0N,SAAW5P,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOgF,UAC/F+T,KAAK2qB,gBAAgB3qB,KAAK/Y,OAAO0N,UACjC,IAAIi2B,EAAa5qB,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAChEma,KAAK/Y,OAAOM,OAAOsjC,IAA8Bl5B,OAAQ,WAAYO,aAAc04B,MAS3F/D,EAAcxd,UAAUgS,cAAgB,WACpC,MAAO,iBAEXwL,EAAcxd,UAAU8H,QAAU,WAC1BnR,KAAK/Y,OAAO+3B,cAGhBhf,KAAK2X,sBAEAwP,oBAAkBnnB,KAAKgoB,aACxBhoB,KAAKgoB,WAAW7W,UAEfgW,oBAAkBnnB,KAAKzX,YACxByX,KAAKzX,UAAU4oB,YAGvB0V,EAAcxd,UAAUoiB,mBAAqB,SAAU/hC,GACnDsW,KAAKzX,UAAUtC,QAAQ4f,YAAyD,MAA1C7F,KAAK/Y,OAAO0C,eAAekc,YAAuB7F,KAAK/Y,OAAO0C,eAAekc,YAAclV,EAAcqP,KAAK/Y,OAAQ,UAAY,IAAMyC,EAAKgK,IAAIrF,MAEpLw4B,KC5YP8E,GAA6B,WAO7B,SAASA,EAAY1kC,GACjB+Y,KAAK4rB,gBACL5rB,KAAK6rB,eAAiB,KACtB7rB,KAAK8rB,iBACL9rB,KAAK/Y,OAASA,EACd+Y,KAAKmX,SAokBT,OAlkBAwU,EAAYtiB,UAAU8N,OAAS,WAC3BnX,KAAKwU,YACDuX,UAAW,YACXC,QAAS,YAEbhsB,KAAKisB,YAAc,IAAIC,eACnBrpB,UAAW7C,KAAK/Y,OAAO4b,UACvB5R,OAAQ+O,KAAK/Y,OAAOgK,OACpBsF,OAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAClC8d,oBAAqB9C,KAAK/Y,OAAO6b,oBACjConB,iBAAkBlqB,KAAKmsB,mBAAmBpsB,KAAKC,MAC/CtZ,OAAQsZ,KAAKosB,SAASrsB,KAAKC,MAC3B+B,WAAY/B,KAAKqsB,aAAatsB,KAAKC,MACnCiC,YAAajC,KAAKssB,cAAcvsB,KAAKC,MACrC1O,SAAUF,EAAY4O,KAAK/Y,OAAQ0b,MAEvC3C,KAAKisB,YAAYlpB,kBAAmB,EACpC/C,KAAKisB,YAAYjpB,SAAS,IAAMhD,KAAK/Y,OAAOhB,QAAQjB,GAAKunC,IACzDvsB,KAAKuU,oBAGToX,EAAYtiB,UAAU8iB,mBAAqB,SAAUziC,GACjD,GAAIA,EAAKuD,KAAKjI,KAAOgb,KAAKwsB,UAAU,kBAAmB,CACnD,IAAIC,EAAW18B,gBAAc,SACzB9J,EAAUyD,EAAKzD,SACXk2B,aAAasQ,EAA+B,eAArBzsB,KAAK/Y,OAAOgE,KAAwBhF,EAAQm2B,WAAW,GAAKn2B,EAAQm2B,WAAW,IAC9GqQ,EAASjV,aAAa,QAASkV,GAAiB,IAAMC,IAE1D,GAAIjjC,EAAKuD,KAAKjI,KAAOgb,KAAKwsB,UAAU,eAAgB,CAChD,IACIvmC,EADAwmC,EAAW18B,gBAAc,SACzB9J,EAAUyD,EAAKzD,SACXk2B,aAAasQ,EAA+B,YAArBzsB,KAAK/Y,OAAOgE,KAAqBhF,EAAQm2B,WAAW,GAAKn2B,EAAQm2B,WAAW,IAC3GqQ,EAASjV,aAAa,QAASoV,GAAgB,IAAMD,MAG7DhB,EAAYtiB,UAAUijB,cAAgB,WAClCtsB,KAAK6sB,WAAa,MAGtBlB,EAAYtiB,UAAUgjB,aAAe,SAAU3iC,GAC3C,IAAIuwB,EAAQja,KACZA,KAAK8rB,iBACL,IACIgB,EAEAloC,EAHAk4B,GAAW,EAIXiQ,GAAa,EACbx2B,EAAS7M,EAAKqN,MAAMR,OACxByJ,KAAK6sB,WAAa7sB,KAAKgtB,kBAAoBz2B,EAC3CyJ,KAAK6rB,eAAiBniC,EAAKzD,QACvBsQ,EAAO1P,UAAUC,SAAS,oBAC1ByP,EAASyJ,KAAK/Y,OAAO6N,qBAAqBm4B,WAAWC,uBAAuBC,IAAa,GACzFntB,KAAK6sB,WAAa7sB,KAAKgtB,kBAAoBz2B,GAE/CyJ,KAAKotB,cAAqC,YAArBptB,KAAK/Y,OAAOgE,KAAqB7B,UAAQmN,EAAQ,YAAcA,EACpF,IAAItL,EAAO+U,KAAKqtB,cAAc92B,GAG9B,GAFAyJ,KAAKstB,qBAED/2B,EAAO1P,UAAUC,SAASC,KAAkBqC,UAAQmN,EAAQ,OAC3DnN,UAAQmN,EAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAAKyK,KAC/CrG,UAAQmN,EAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAAKuoC,IAChD7jC,EAAKoM,QAAS,OAGb,GAA2B,eAArBkK,KAAK/Y,OAAOgE,MAA0B+U,KAAKotB,eAClDptB,KAAKotB,cAAcvmC,UAAUC,SAAS,cACtCkZ,KAAKwtB,cAAcj3B,QAGlB,GAAInN,UAAQmN,EAAQ,IAAM1G,IAC3BmQ,KAAKwtB,cAAcj3B,QAGlB,IAAKA,EAAO1P,UAAUC,SAAS2mC,MAC/Bl3B,EAAO1P,UAAUC,SAAS6lC,MAAmBp2B,EAAO1P,UAAUC,SJ8CjD,WI9C6E,CAG3F,GAAyB,eAArBkZ,KAAK/Y,OAAOgE,MAA0B9F,oBAAMiE,UAAQmN,EAAQ,QAAWnN,UAAQmN,EAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAAK0oC,IAShHvoC,oBAAMiE,UAAQmN,EAAQ,aAWvBnN,UAAQmN,EAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAAK0oC,MACpDZ,EAAM1jC,UAAQmN,EAAQ,MAAMtR,aAAa,YACzC8nC,GAAa,IAZbD,EAAM9sB,KAAKotB,cAAcnoC,aAAa,YAEtCL,EAAOob,KAAK/Y,OAAOyD,kBAAkBC,QAAQgjC,oBAAoBb,GAAKloC,KAClEO,oBAAM6a,KAAKotB,cAAcnoC,aAAa,mBAEtC+a,KAAK/Y,OAAOyD,kBAAkBC,QAAQijC,YAAYC,SAAS7tB,KAAKotB,cAAcnoC,aAAa,iBAAkB,MAEjH63B,GAAW,OAjByH,CAE/H1zB,UAAQmN,EAAQ,MAAM1P,UAAUC,SAAS,aAC1CkZ,KAAK/Y,OAAO4D,qBAAqBwzB,YAAY9nB,GAFjC+nB,SAAS,EAAMC,UAAU,IAKzC35B,EAAOob,KAAK/Y,OAAO++B,YACnBlJ,GAAW,EAkBXA,GACiC,IAA7B/3B,WAAS,SAAUH,GACnBob,KAAK8tB,cAGL9tB,KAAK+tB,eAAc,GAIlBhB,GACL/sB,KAAK+tB,eAAc,GACfjB,IAAQ9sB,KAAK/Y,OAAOzB,OAAO,IAC3Bwa,KAAK8rB,cAAchmC,KAAK,SAAU,SAAU,MAAO,SAKzC,aAATmF,GAAgC,aAATA,GAAgC,cAATA,EACnD+U,KAAKwtB,cAAcj3B,GAInB7M,EAAKoM,QAAS,EAGtB,IAAIk4B,EAAWtnC,SAAO,IAAMsZ,KAAKwsB,UAAU,SAAUxsB,KAAKisB,YAAYhmC,SAKtE,GAJKyD,EAAKoM,QAAWkK,KAAK/Y,OAAOK,cAC7B0mC,GAAaA,EAASnnC,UAAUC,SAAS,eACzCkZ,KAAK8rB,cAAchmC,KAAK,SAExB4D,EAAKoM,OACLkK,KAAK6sB,WAAa7sB,KAAK6rB,eAAiB,SAD5C,CAIA7rB,KAAKisB,YAAY/oB,WACjB,IAAI+qB,GAAY,GACZ13B,EAAO1P,UAAUC,SAAS2mC,KAC1Bl3B,EAAO1P,UAAUC,SAAS6lC,KAAkBp2B,EAAO1P,UAAUC,SJnB/C,cIoBdmnC,GAAY,GAEhBjuB,KAAKoS,aAAe6b,EAAYjuB,KAAKoS,aAAepS,KAAKkuB,kBACzD,IAAIvgC,GACAC,aAAcoS,KAAKoS,cACnBnsB,QAASyD,EAAKzD,QACdsQ,OAAQA,EACRzL,MAAOmjC,EAAYvkC,EAAKoB,MAAQkV,KAAKisB,YAAYnhC,MACjDqjC,WAAYnuB,KAAKisB,YACjBn2B,QAAQ,EACRs4B,SAAUpuB,KAAKouB,SACfH,UAAWA,GAEfjuB,KAAK4rB,aAAej+B,EAAU7C,MAC9BkV,KAAK/Y,OAAOgH,QAAQ,WAAYN,EAAW,SAAU0gC,GAC5CJ,IACDhU,EAAMgS,YAAY/oB,WAClB+W,EAAMgS,YAAYnhC,MAAQujC,EAAavjC,MACvCmvB,EAAMgS,YAAY/oB,YAEtB+W,EAAMqU,YAAYrU,EAAM6R,eAAe,GAAO,GAC9CpiC,EAAKoM,OAASu4B,EAAav4B,OACvBu4B,EAAav4B,SACbmkB,EAAM4S,WAAa5S,EAAM+S,kBAAoB/S,EAAM4R,eAAiB,UAIhFF,EAAYtiB,UAAUikB,mBAAqB,WACvCttB,KAAK/Y,OAAOc,aAAeqB,UAAQ4W,KAAK6sB,WAAY,IAAM7sB,KAAK/Y,OAAOhB,QAAQjB,GAAK0oC,IAC/E,iBAAmBtkC,UAAQ4W,KAAK6sB,WAAY,IAAM7sB,KAAK/Y,OAAOhB,QAAQjB,GAAKupC,IAC3E,cAAgBnlC,UAAQ4W,KAAK6sB,WAAY,IAAM7sB,KAAK/Y,OAAOhB,QAAQjB,GAAKqvB,IACxE,iBAAmBrU,KAAK/Y,OAAOc,cASvC4jC,EAAYtiB,UAAUgkB,cAAgB,SAAU92B,GAC5C,OAAOA,EAAO1P,UAAUC,SAASC,IAC7B,WAAawP,EAAO1P,UAAUC,SAASyJ,IACvC,WAAagG,EAAO1P,UAAUC,SAAS0nC,IACvC,YAAcj4B,EAAO1P,UAAUC,SAAS0E,IACxC,YAAc,IAEtBmgC,EAAYtiB,UAAUolB,aAAe,SAAUxhC,GAE3C,IAAK,IADDyhC,EAAS1uB,KAAKwsB,UAAUv/B,GACnBrH,EAAI,EAAGA,EAAIoa,KAAK4rB,aAAa/lC,OAAQD,IAC1C,GAAKoa,KAAK4rB,aAAahmC,GAAGZ,KAAO0pC,GAAY1uB,KAAK4rB,aAAahmC,GAAGZ,KAAOiI,EACrE,OAAOrH,EAGf,OAAQ,GAEZ+lC,EAAYtiB,UAAUslB,YAAc,SAAU7jC,GACrB,IAAjBA,EAAMjF,SACNma,KAAK8rB,cAAgB9rB,KAAK8rB,cAAc8C,OAAO9jC,KAGvD6gC,EAAYtiB,UAAUilB,YAAc,SAAUxjC,EAAO+jC,EAAQC,GACzD,IAAK,IAAIlpC,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,IACQ,IAAlCoa,KAAK+uB,eAAejkC,EAAMlF,IAC1Boa,KAAKisB,YAAYqC,aAAatuB,KAAKwsB,UAAU1hC,EAAMlF,KAAMipC,EAAQC,GAE1B,IAAlC9uB,KAAK+uB,eAAejkC,EAAMlF,KAC/Boa,KAAKisB,YAAYqC,aAAaxjC,EAAMlF,IAAKipC,EAAQC,IAI7DnD,EAAYtiB,UAAU0kB,cAAgB,SAAUiB,GAC5ChvB,KAAKouB,SAAW,SAChBpuB,KAAKisB,YAAYnhC,MAAQkV,KAAKivB,YAAYjvB,KAAK/Y,OAAOioC,oBAAoB3L,OAAOliB,IAAI,SAAUpU,GAAQ,OAAOA,EAAKkiC,UACnHnvB,KAAKisB,YAAY/oB,WACb8rB,EACAhvB,KAAK8rB,cAAchmC,KAAK,QAEkB,IAArCka,KAAK/Y,OAAO0B,cAAc9C,QAC/Bma,KAAK8rB,cAAchmC,KAAK,SAAU,UAG1C6lC,EAAYtiB,UAAUykB,YAAc,WAChC9tB,KAAKouB,SAAW,OAChBpuB,KAAKisB,YAAYnhC,MAAQkV,KAAKivB,YAAYjvB,KAAK/Y,OAAOioC,oBAAoB5iC,KAAK+U,IAAI,SAAUpU,GAAQ,OAAOA,EAAKkiC,UACjHnvB,KAAKisB,YAAY/oB,WACwB,IAArClD,KAAK/Y,OAAO0B,cAAc9C,QAC1Bma,KAAK8rB,cAAchmC,KAAK,WAGhC6lC,EAAYtiB,UAAUmkB,cAAgB,SAAUj3B,GAC5CyJ,KAAKouB,SAAW,SAChBpuB,KAAKisB,YAAYnhC,MAAQkV,KAAKivB,YAAYjvB,KAAK/Y,OAAOioC,oBAAoBE,OAAO/tB,IAAI,SAAUpU,GAAQ,OAAOA,EAAKkiC,UACnHnvB,KAAKisB,YAAY/oB,aACZlD,KAAK/Y,OAAO80B,qBAA8C,eAArB/b,KAAK/Y,OAAOgE,MAC6D,IAA9G7B,UAAQmN,EAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAAKqvB,IAAkB6Y,uBAAuBr9B,IAAWhK,QAC3E,YAArBma,KAAK/Y,OAAOgE,MAC8F,IAAzG7B,UAAQmN,EAAQ,IAAMyJ,KAAK/Y,OAAOhB,QAAQjB,GAAKupC,IAAarB,uBAAuBr9B,IAAWhK,SACnGma,KAAK8rB,cAAchmC,KAAK,aAEa,IAArCka,KAAK/Y,OAAOG,cAAcvB,QAC1Bma,KAAK8rB,cAAchmC,KAAK,SAE5Bka,KAAKisB,YAAY/oB,YAErByoB,EAAYtiB,UAAU0lB,eAAiB,SAAUM,GAC7C,OAAKlqC,oBAAMuB,SAAO,IAAMsZ,KAAKwsB,UAAU6C,GAAUrvB,KAAK6rB,iBAG5C1mC,oBAAMuB,SAAO,IAAM2oC,EAASrvB,KAAK6rB,kBAI/B,EAHD,EAHA,GAUfF,EAAYtiB,UAAU6kB,gBAAkB,WACpC,GAAsB,WAAlBluB,KAAKouB,SACL,OAAOtkC,EAAckW,KAAK/Y,QAI1B,IAAIyC,GAAS6M,OAAQyJ,KAAK6sB,YAE1B,OADA7sB,KAAK/Y,OAAOM,OAAOs4B,GAAqBn2B,GACjCsW,KAAK/Y,OAAO4C,SAAS,IAIpC8hC,EAAYtiB,UAAU+iB,SAAW,SAAU1iC,GACvC,IAAIuwB,EAAQja,KACZ,IAAI7a,oBAAMuE,EAAKuD,OAAUvD,EAAKuD,KAAKjI,GAAnC,CAGA,IAEI4T,EAFAsf,EAAWxuB,EAAKuD,KAAKjI,GAAGuc,QAAQvB,KAAK/Y,OAAOhB,QAAQjB,GAAK,QAAQa,QAGpD,YAAbqyB,GAAuC,cAAbA,GAAyC,WAAbA,GACtDtf,GAAW9O,EAAckW,KAAK/Y,SAC9B+Y,KAAK/Y,OAAO4C,SAAW+O,IAGvBoH,KAAK/Y,OAAOM,OAAO23B,OAEftmB,EAD6B,mBAA7BoH,KAAK/Y,OAAOc,cAAkD,SAAbmwB,GACtClY,KAAKoS,cAGNpS,KAAK/Y,OAAO4C,UAG9B,IAAI8D,GACAmI,QAAQ,EACR7P,QAASyD,EAAKzD,QACd2H,YAAagL,EACb3L,KAAMvD,EAAKuD,MAEf+S,KAAK/Y,OAAOgH,QAAQ,YAAaN,EAAW,SAAU2hC,GAClD,IAAIC,EACJ,IAAKD,EAAcx5B,OAEf,OAAQoiB,GACJ,IAAK,MACD9rB,EAAS6tB,EAAMhzB,QACf,MACJ,IAAK,OACDiF,EAAU+tB,EAAMhzB,QAChB,MACJ,IAAK,QACsB,WAAnBgzB,EAAMmU,WAC6B,mBAA9BnU,EAAMhzB,OAAOc,cAAqE,gBAA9BkyB,EAAMhzB,OAAOc,cAClEkyB,EAAMhzB,OAAOuL,WAAatE,EAAY+rB,EAAMhzB,OAAQgzB,EAAM7H,aAAc6H,EAAMhzB,OAAO5B,MAOzF40B,EAAMhzB,OAAOuL,WAAa,GAE9BF,EAAa2nB,EAAMhzB,QACnB,MACJ,IAAK,SACD,IAAK,IAAIg/B,EAAI,EAAGA,EAAIrtB,EAAQ/S,OAAQogC,IAChC,IAAKpuB,GAAce,EAAQqtB,IAEvB,YADAp6B,GAAmBouB,EAAMhzB,OAAQ2R,EAAQqtB,GAAInuB,IAIrDlF,GAAaqnB,EAAMhzB,OAAQ,UAC3B,MAEJ,IAAK,WACD,IAAK,IAAIrB,EAAI,EAAGA,EAAIgT,EAAQ/S,OAAQD,IAChC,IAAKoS,GAAkBY,EAAQhT,IAE3B,YADAiG,GAAmBouB,EAAMhzB,OAAQ2R,EAAQhT,GAAIqS,IAInB,mBAA9BgiB,EAAMhzB,OAAOc,aACbkyB,EAAMhzB,OAAOM,OAAOioC,OAEfvV,EAAMhzB,OAAO0B,cAAc9C,OAAS,GACzCqS,GAAS+hB,EAAMhzB,OAAQgzB,EAAMhzB,OAAO5B,KAAM40B,EAAMhzB,OAAO0B,eAE3D,MACJ,IAAK,SACIkP,GAAce,EAAQ,KAIvBqhB,EAAMhzB,OAAOM,OAAOm4B,OACpB9sB,GAAaqnB,EAAMhzB,OAAQ,WAJ3B4E,GAAmBouB,EAAMhzB,OAAQ2R,EAAQ,GAAId,IAMjD,MACJ,IAAK,YAEDmiB,EAAMhzB,OAAOM,OAAOo4B,OACpB,MACJ,IAAK,UACDj0B,EAAQuuB,EAAMhzB,QACd,MACJ,IAAK,OACGgzB,EAAMhzB,OAAOmwB,YACb6C,EAAMhzB,OAAOM,OAAO63B,IAAmB7oB,OAAQ0jB,EAAMhzB,OAAOmwB,cAEzB,mBAA9B6C,EAAMhzB,OAAOc,cAClBkyB,EAAMhzB,OAAO6N,qBAAqB26B,2BAA2BrmC,UAAQ6wB,EAAM+S,kBAAmB,OAElG,MACJ,IAAK,UACD/S,EAAMhzB,OAAOM,OAAO+4B,OACpBiP,EAAStV,EAAMhzB,OAAO0B,cACY,mBAA9BsxB,EAAMhzB,OAAOc,eACbwnC,MAEJ/0B,GAAWyf,EAAMhzB,OAAQsoC,EAAQtV,EAAMhzB,OAAO5B,KAAM,WACpD,MACJ,IAAK,YACDsT,GAAgBshB,EAAMhzB,QACtB,MACJ,IAAK,SACD6R,GAAWmhB,EAAMhzB,QACjB,MAEJ,IAAK,OAGL,IAAK,OAGL,IAAK,OAGL,IAAK,YAGL,IAAK,aAKL,IAAK,OAEDsK,EAAmB0oB,EAAMhzB,OAAQyC,GACjC,MAGJ,IAAK,iBACDsB,EAAaivB,EAAMhzB,OAAQ,cAC3B,MAGJ,IAAK,cACD+D,EAAaivB,EAAMhzB,OAAQ,gBAM/C0kC,EAAYtiB,UAAUiW,kBAAoB,SAAUlhB,GAChD,GAAIA,EAAEzM,SAAWqO,KAAKqb,iBAAgC,WAAbjd,EAAEzM,OAI3C,IAAK,IAAImvB,EAAK,EAAGC,EAAK/f,OAAOD,KAAK3C,EAAE4iB,SAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,WACD9gB,KAAKisB,YAAY36B,SAAWF,EAAY4O,KAAK/Y,OAAQ0b,OAKrEgpB,EAAYtiB,UAAUkL,iBAAmB,WACrCvU,KAAK/Y,OAAO25B,GAAG4K,GAAgBxrB,KAAKmR,QAASnR,MAC7CA,KAAK/Y,OAAO25B,GAAGvB,GAAqBrf,KAAKsf,kBAAmBtf,MAC5DA,KAAKkhB,eAAiB,IAAIC,iBAAenhB,KAAKisB,YAAYhmC,SACtDm7B,UAAWphB,KAAKqhB,iBAAiBthB,KAAKC,MACtCwU,WAAYxU,KAAKwU,WACjB8M,UAAW,aAGnBqK,EAAYtiB,UAAUsO,oBAAsB,WACxC3X,KAAK/Y,OAAOg4B,IAAIuM,GAAgBxrB,KAAKmR,SACrCnR,KAAK/Y,OAAOg4B,IAAII,GAAqBrf,KAAKsf,mBAC1Ctf,KAAKkhB,eAAe/P,WAExBwa,EAAYtiB,UAAUgY,iBAAmB,SAAUjjB,GAC/C,OAAQA,EAAE1W,QACN,IAAK,UACL,IAAK,YACD0W,EAAEoI,mBASdmlB,EAAYtiB,UAAUgS,cAAgB,WAClC,MAAO,eAEXsQ,EAAYtiB,UAAU8H,QAAU,WACxBnR,KAAK/Y,OAAO+3B,cAGhBhf,KAAK2X,sBACL3X,KAAKisB,YAAY9a,YAGrBwa,EAAYtiB,UAAU4lB,YAAc,SAAUrqC,GAE1C,IAAK,IADDkG,KACKlF,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IAAK,CAClC,IAAIqH,OAAO,EACPyhC,EAAS1uB,KAAKwsB,UAAU5nC,EAAKgB,IAC7BsyB,EAAWvnB,EAAcqP,KAAK/Y,OAAQrC,EAAKgB,IAC/C,OAAQhB,EAAKgB,IACT,IAAK,IACDqH,GAASyiC,WAAW,GACpB,MACJ,IAAK,OACDziC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASoX,IAC9C,MACJ,IAAK,SACD1iC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASqX,IAC9C,MACJ,IAAK,MACD3iC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASsX,IAC9C,MACJ,IAAK,OACD5iC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASuX,IAC9C,MACJ,IAAK,QACD7iC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASwX,IAC9C,MACJ,IAAK,SACD9iC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASyX,IAC9C,MACJ,IAAK,SACD/iC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAAS0X,IAC9C,MACJ,IAAK,YACDhjC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAAS2X,IAC9C,MACJ,IAAK,UACDjjC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAAS4X,IAC9C,MACJ,IAAK,SACDljC,GACIjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAAS6X,GACrCtlC,QAEQ9F,GAAIgb,KAAKwsB,UAAU,QAAS1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,QAC7DsxB,QAAgC,SAAvBvY,KAAK/Y,OAAOyH,OAAoB2hC,GAAoB,OAG7DrrC,GAAIgb,KAAKwsB,UAAU,QAAS1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,QAC7DsxB,QAAgC,SAAvBvY,KAAK/Y,OAAOyH,OAAoB2hC,GAAoB,OAG7DrrC,GAAIgb,KAAKwsB,UAAU,QAAS1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,gBAC7DsxB,QAAgC,iBAAvBvY,KAAK/Y,OAAOyH,OAA4B2hC,GAAoB,OAEvEX,WAAW,IAET1qC,GAAIgb,KAAKwsB,UAAU,aAAc1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,aAClEsxB,QAAmC,cAA1BvY,KAAK/Y,OAAOuH,UAA4B8hC,GAAqB,OAGtEtrC,GAAIgb,KAAKwsB,UAAU,cAAe1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,cACnEsxB,QAAmC,eAA1BvY,KAAK/Y,OAAOuH,UAA6B8hC,GAAqB,OAGvEtrC,GAAIgb,KAAKwsB,UAAU,QAAS1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,QAC7DsxB,QAAmC,SAA1BvY,KAAK/Y,OAAOuH,UAAuB8hC,GAAqB,QAI7E,MAEJ,IAAK,OACDrjC,GACIjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAA8B,YAArBvY,KAAK/Y,OAAOgE,KAAqB2hC,GAAgBF,GACtF5hC,QAEQ9F,GAAIgb,KAAKwsB,UAAU,kBAAmB1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,mBACvEsxB,QAA8B,YAArBvY,KAAK/Y,OAAOgE,KAAqB,KAAOqlC,KAGjDtrC,GAAIgb,KAAKwsB,UAAU,eAAgB1nC,KAAM6L,EAAcqP,KAAK/Y,OAAQ,gBACpEsxB,QAA8B,YAArBvY,KAAK/Y,OAAOgE,KAAqBqlC,GAAqB,QAI3E,MACJ,IAAK,UACDrjC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASgY,IAC9C,MACJ,IAAK,YACDtjC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASiY,IAC9C,MAEJ,IAAK,WACDvjC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUK,QAASkY,IAC9C,MAEJ,QACIxjC,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,GAGnCptB,EAAMhF,KAAKmH,GAEf,OAAOnC,GAEX6gC,EAAYtiB,UAAUmjB,UAAY,SAAUxnC,GACxC,OAAOgb,KAAK/Y,OAAOhB,QAAQjB,GAAK,OAASA,EAAGyH,eAEzCk/B,KCzlBA+E,IACPC,UAAa,aACbC,OAAU,SACVv4B,OAAU,SACVw4B,OAAU,SACV34B,SAAY,WACZ44B,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,UAChBlpC,OAAU,SACVmpC,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,sCCnGhBztB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgB3H,OAAO8H,iBAChBC,wBAA2BC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOA,EAAEK,eAAeD,KAAIL,EAAEK,GAAKJ,EAAEI,MACpDL,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASM,IAAOnJ,KAAKoJ,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAES,UAAkB,OAANR,EAAa7H,OAAOsI,OAAOT,IAAMM,EAAGE,UAAYR,EAAEQ,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYjT,EAAQvH,EAAKya,GAC7E,IAA2Hb,EAAvHc,EAAIC,UAAU9jB,OAAQ+jB,EAAIF,EAAI,EAAInT,EAAkB,OAATkT,EAAgBA,EAAOzI,OAAO6I,yBAAyBtT,EAAQvH,GAAOya,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYjT,EAAQvH,EAAKya,QACpH,IAAK,IAAI7jB,EAAI4jB,EAAW3jB,OAAS,EAAGD,GAAK,EAAGA,KAASgjB,EAAIY,EAAW5jB,MAAIgkB,GAAKF,EAAI,EAAId,EAAEgB,GAAKF,EAAI,EAAId,EAAErS,EAAQvH,EAAK4a,GAAKhB,EAAErS,EAAQvH,KAAS4a,GAChJ,OAAOF,EAAI,GAAKE,GAAK5I,OAAOgJ,eAAezT,EAAQvH,EAAK4a,GAAIA,GAoC5DwsB,GAA6B,SAAUlsB,GAEvC,SAASksB,EAAY93B,EAASrY,GAC1B,IAAIg0B,EAAQ/P,EAAO+O,KAAKjZ,KAAM1B,EAASrY,IAAY+Z,KAmDnD,OAjDAia,EAAMvgB,WAAa,KACnBugB,EAAM7yB,iBACN6yB,EAAMjmB,kBAENimB,EAAM7lB,oBACN6lB,EAAMoc,gBACNpc,EAAMqc,YACNrc,EAAM1wB,gBAAiB,EACvB0wB,EAAM/uB,uBACN+uB,EAAMtT,UAAY,KAClBsT,EAAMnhB,cACNmhB,EAAMsc,iBACNtc,EAAMviB,QAAS,EACfuiB,EAAM/yB,OAAQ,EACd+yB,EAAMtyB,aAAc,EACpBsyB,EAAM1lB,cAAe,EACrB0lB,EAAM5lB,cAAe,EACrB4lB,EAAMznB,WAAa,GACnBynB,EAAMuc,cAAe,EACrBvc,EAAMxxB,YAAa,EAEnBwxB,EAAM1vB,iBAAkB,EACxB0vB,EAAM3yB,aAAc,EACpB2yB,EAAMwc,aAAc,EACpBxc,EAAMzU,aACNyU,EAAMyc,UAAW,EACjBzc,EAAMjW,eAAgB,EACtBiW,EAAMzlB,YAAa,EAEnBylB,EAAM2D,iBACN3D,EAAMlW,cACNkW,EAAMzV,aAAc,EAEpByV,EAAM9kB,YACN8kB,EAAM7mB,aACN6mB,EAAMhnB,SAAW,GACjBgnB,EAAMjnB,SAAW,GACjBinB,EAAM1nB,YAAa,EACnB0nB,EAAMlkB,gBAAkB,KACxBkkB,EAAMS,oBAAuBic,KAAM,GAAItnC,IAAK,IAC5C4qB,EAAM3lB,WAAY,EAClB2lB,EAAMxjB,UAAY,EAElBwjB,EAAM9lB,kBACN8lB,EAAM2c,eAAiB,EACvB3c,EAAM4c,cAAgB,EAEtB5c,EAAMrD,OAAQ,EACdkgB,EAAcC,OAAOlQ,GAAe9S,GAAgB4X,IAC7C1R,EArDXvR,GAAU0tB,EAAalsB,GAuDvB4sB,EAAgBV,EAOhBA,EAAY/sB,UAAUgS,cAAgB,WAClC,MAAO,eAOX+a,EAAY/sB,UAAU2tB,UAAY,YAC1B7xC,oBAAM6a,KAAK/Z,QAAQjB,KAA2B,KAApBgb,KAAK/Z,QAAQjB,KACvCgb,KAAK/Z,QAAQuxB,aAAa,KAAMyf,cAAY,gBAEhDj3B,KAAKk3B,aACLl3B,KAAK/T,YACL+T,KAAK9Q,WACLioC,oBAAQn3B,KAAK/Z,SAAW2c,MAASw0B,aAAWp3B,KAAK4C,OAAQ4E,OAAU4vB,aAAWp3B,KAAKwH,UACnFxH,KAAKmiB,SAAWkV,UAAQlV,SACxBniB,KAAKvO,SAAWuO,KAAKs3B,cACjBt3B,KAAKvO,UACLuO,KAAK5a,eAAgBmyC,wBAA0B56B,SAAS,KAAW,GAEvE,IAAInH,EAAMpM,UAAQ4W,KAAK/Z,QAAS,aAChC+Z,KAAKw3B,WAAWhiC,EAChBwK,KAAKjY,aAA8B,eAAdiY,KAAK/U,KAAyB,iBAAmB,cACtEwsC,iBAAgBlhC,OAAQyJ,KAAK/Z,SAAW8J,iBACxCiQ,KAAK03B,aACL13B,KAAKwU,YACDmjB,KAAM,QACNC,GAAI,KACJC,WAAY,eACZC,WAAY,eACZC,MAAO,UAEX/3B,KAAK9O,UAAY,IAAI8mC,OAAKh4B,KAAKqb,gBAAiBqV,GAAe1wB,KAAK/O,SAQxEmlC,EAAY/sB,UAAU4uB,eAAiB,WAEnC,OAAOj4B,KAAKk4B,cADK,OAAQ,OAAQ,mBASrC9B,EAAY/sB,UAAU8uB,gBAAkB,WACpC,IAAIC,KAiCJ,OAhCAA,EAAQtyC,MACJuyC,OAAQ,gBACR3uC,MAAOsW,QAEXo4B,EAAQtyC,MACJuyC,OAAQ,iBACR3uC,MAAOsW,QAEPA,KAAKs4B,gBAAgB37B,SACrBy7B,EAAQtyC,MACJuyC,OAAQ,UACR3uC,MAAOsW,QAGXA,KAAKu3B,uBAAuB56B,SAC5By7B,EAAQtyC,MACJuyC,OAAQ,iBACR3uC,MAAOsW,QAGXA,KAAK/U,MACLmtC,EAAQtyC,MACJuyC,OAAQ,cACR3uC,MAAOsW,QAGXA,KAAKkvB,oBAAoBvyB,UAAYqD,KAAKmiB,UAC1CiW,EAAQtyC,MACJuyC,OAAQ,cACR3uC,MAAOsW,QAGRo4B,GAQXhC,EAAY/sB,UAAU8N,OAAS,WAC3BnX,KAAKu4B,aACL,IAAIC,EAAUrzC,oBAAM6a,KAAKrX,kBACrBqX,KAAK+b,oBAAsB/b,KAAKrX,cAAgBqX,KAAKrX,cAAcqwB,MAAMhZ,KAAKrX,cAAc9C,OAAS,GAQzG,GAPAma,KAAK5a,eAAgBuD,cAAe6vC,IAAW,GAC/Cx4B,KAAKy4B,SAAWz4B,KAAK/U,KACrB+U,KAAK4W,MAAQ8hB,UAAUC,SAASC,cAAclsC,QAAQ,QAAU,EAChEsT,KAAK64B,OAAO74B,KAAK6C,WACjB7C,KAAK84B,oBACL/tC,GAAKiV,KAAOA,KAAK3a,OAAS2a,KAAK7N,aAAgBC,GAAoBC,GAAoB2N,KAAK3a,MAC5F2a,KAAK0Z,eACDv0B,oBAAM6a,KAAKlL,sBAAuB,CAClCkL,KAAK+4B,YAAYC,SAASh5B,KAAK6C,UAAY,EAAI,GACrCnc,SAAO,IAAMuyC,GAAej5B,KAAK/Z,SACvCY,UAAUgC,IAAIuwB,IAEtBpZ,KAAK6Z,aACL7Z,KAAKk5B,kBAET9C,EAAY/sB,UAAU6tB,WAAa,WAC/B,IAAIxM,EAAc1qB,KAAK3a,KACnBF,oBAAMulC,KACNA,EAAc,KAEdA,EAAY54B,YAAY,OAAU44B,EAAY7kC,OAAS,IACvD6kC,GAA4B,KAEhC1qB,KAAK7N,aAAeu4B,EACpB,IAAInD,EAAQmD,EAAY/9B,MAAM,KAC9BqT,KAAK5a,eAAgBC,KAAMkiC,EAAM,GAAK,MAAO,GAC7CvnB,KAAKha,aACLga,KAAKxa,QAAU,WACfwa,KAAKnW,aAETusC,EAAY/sB,UAAUkvB,WAAa,WAC3Bv4B,KAAKvO,UACL6iB,YAAUtU,KAAK/Z,SAAUkzC,IAEzBn5B,KAAK+b,qBACLzH,YAAUtU,KAAK/Z,SAAUmzC,IAE7Bp5B,KAAKq5B,YAAY,KAAMr5B,KAAK1O,UAC5B0O,KAAKs5B,oBAETlD,EAAY/sB,UAAUquB,WAAa,WAC/B,IAAI6B,EAAav5B,KAAKjQ,cAAc,OAAS/K,GAAIgb,KAAK/Z,QAAQjB,GAAKuoC,KACnEvtB,KAAK/Z,QAAQuK,YAAY+oC,GACzB,IAAIC,EAAax5B,KAAKjQ,cAAc,OAChC/K,GAAIgb,KAAK/Z,QAAQjB,GAAKuK,GAAeS,UNhM7B,aMkMZgQ,KAAK/Z,QAAQuK,YAAYgpC,GACzB,IAAIC,EAAiBz5B,KAAKjQ,cAAc,OACpC/K,GAAIgb,KAAK/Z,QAAQjB,GN7PF,cM6P0BgL,UNlM7B,iBMoMZ0pC,EAAW15B,KAAKjQ,cAAc,OAC9B/K,GAAIgb,KAAK/Z,QAAQjB,GAAK0oC,KAE1B+L,EAAejpC,YAAYkpC,GAC3B,IAAIC,EAAc35B,KAAKjQ,cAAc,OACjC/K,GAAIgb,KAAK/Z,QAAQjB,GAAKqR,GAAgBrG,UAAW4pC,KAErD55B,KAAK+nB,wBAA0B/nB,KAAKjQ,cAAc,OAC9C/K,GAAIgb,KAAK/Z,QAAQjB,GAAKyK,GACtBO,UNnEa,cMqEjB2pC,EAAYnpC,YAAYwP,KAAK+nB,yBAC7B,IAAI8R,EAAW75B,KAAKjQ,cAAc,OAC9B/K,GAAIgb,KAAK/Z,QAAQjB,GAAKupC,KAE1BoL,EAAYnpC,YAAYqpC,GACxB,IAAIC,EAAgB95B,KAAKjQ,cAAc,OACnC/K,GAAIgb,KAAK/Z,QAAQjB,GAAKqvB,GACtBrkB,UAAWxE,GAAiBoS,OAASm8B,KAAQ,WAEjDJ,EAAYnpC,YAAYspC,GACxB,IAAIE,EAAUh6B,KAAKjQ,cAAc,QAAUC,UN/D9B,iBMgEb2pC,EAAYnpC,YAAYwpC,GACxB,IAAIC,EACCj6B,KAAK6C,WAYN22B,EAAWhpC,YAAYmpC,GACvBH,EAAWhpC,YAAYipC,GACvBQ,IACM/4B,KAAM,MAAOg5B,IAAK,UAEhBh5B,KAAM,MAAOg5B,IAAKl6B,KAAKu3B,uBAAuB5sB,SAAS3c,WACvDmsC,IAAKn6B,KAAKu3B,uBAAuB6C,SAASpsC,eAjBlDwrC,EAAWhpC,YAAYipC,GACvBD,EAAWhpC,YAAYmpC,GACvBM,IAEQ/4B,KAAM,MAAOg5B,IAAKl6B,KAAKu3B,uBAAuB5sB,SAAS3c,WACvDmsC,IAAKn6B,KAAKu3B,uBAAuB6C,SAASpsC,aAE5CkT,KAAM,MAAOg5B,IAAK,WAc5Bl6B,KAAK+4B,YAAc,IAAIsB,YACnBJ,aAAcA,EACdr3B,MAAO,OACPC,WAAW,EACXC,oBAAqB9C,KAAK8C,oBAC1BgF,SAAU9H,KAAKiR,eAAelR,KAAKC,QAEvCA,KAAK+4B,YAAYh2B,kBAAmB,EACpC/C,KAAK+4B,YAAY/1B,SAASw2B,GAC1B,IAAIc,EAAat6B,KAAKjQ,cAAc,OAAS/K,GAAIgb,KAAK/Z,QAAQjB,GAAKie,KACnEjD,KAAK/Z,QAAQuK,YAAY8pC,GACzB,IAAIC,EAAWv6B,KAAKjQ,cAAc,MAAQ/K,GAAIgb,KAAK/Z,QAAQjB,GAAKunC,KAChEvsB,KAAK/Z,QAAQuK,YAAY+pC,GACzB,IAAIC,EAAgBx6B,KAAKjQ,cAAc,OAAS/K,GAAIgb,KAAK/Z,QAAQjB,GAAKgjB,KACtEhI,KAAK/Z,QAAQuK,YAAYgqC,GACzB,IAAIC,EAAiBz6B,KAAKjQ,cAAc,OAAS/K,GAAIgb,KAAK/Z,QAAQjB,GAAKggB,KACvEhF,KAAK/Z,QAAQuK,YAAYiqC,GACzB,IAAIC,EAAmB16B,KAAKjQ,cAAc,OAAS/K,GAAIgb,KAAK/Z,QAAQjB,GAAK21C,KACzE36B,KAAK/Z,QAAQuK,YAAYkqC,IAE7BtE,EAAY/sB,UAAUqQ,aAAe,WACjC,IAAIkhB,EAAUl0C,SAAO,IAAMsZ,KAAK/Z,QAAQjB,GAAKuoC,GAAgBvtB,KAAK/Z,SAC9D40C,EAAgBD,EAAUA,EAAQlrC,aAAe,EACjDsQ,KAAK+4B,cACL/4B,KAAK+4B,YAAYvxB,QAAUxH,KAAK/Z,QAAQ60C,aAAeD,GAAe7sC,WACtEgS,KAAK+4B,YAAY71B,aAIzBkzB,EAAY/sB,UAAU4H,eAAiB,WACnCjR,KAAKzY,OAAOw4B,QAEhBqW,EAAY/sB,UAAU0xB,eAAiB,WACnC,IAAIrf,EAAMh1B,SAAO,IAAMuyC,GAAej5B,KAAK/Z,SACvC+Z,KAAKu3B,uBAAuB56B,SAC5BqD,KAAK+4B,YAAYiC,OAAOh7B,KAAK6C,UAAY,EAAI,GAC7C6Y,EAAI70B,UAAUqC,OAAOkwB,MAGrBpZ,KAAK+4B,YAAYC,SAASh5B,KAAK6C,UAAY,EAAI,GAC/C6Y,EAAI70B,UAAUgC,IAAIuwB,MAG1Bgd,EAAY/sB,UAAUgwB,YAAc,SAAU4B,EAAQC,GAC7C/1C,oBAAM81C,IAAsB,KAAXA,GAClB7X,eAAapjB,KAAK/Z,SAAUg1C,EAAOtuC,MAAM,MAExCxH,oBAAM+1C,IAAsB,KAAXA,GAClB5mB,YAAUtU,KAAK/Z,SAAUi1C,EAAOvuC,MAAM,OAG9CypC,EAAY/sB,UAAUiO,YAAc,WAChCA,cAAYtX,KAAK/Z,UAErBmwC,EAAY/sB,UAAUyQ,YAAc,WAChCA,cAAY9Z,KAAK/Z,UAErBmwC,EAAY/sB,UAAU8xB,cAAgB,SAAU/8B,GAC5CA,EAAEoI,kBAEN4vB,EAAY/sB,UAAUiuB,YAAc,WAChC,MAAQ,kFAAkFvwB,KAAKswB,UAAQ+D,UAAU3uC,gBAC1G,UAAUsa,KAAKswB,UAAQ+D,UAAU3uC,gBAE5C2pC,EAAY/sB,UAAUiwB,iBAAmB,WACrC,IAAIt0C,EAAKgb,KAAK/Z,QAAQjB,GAAKgU,GACvBqiC,EAAYr7B,KAAKjQ,cAAc,SAAW/K,GAAIA,EAAI4Y,OAASvP,KAAM,cAAesM,KAAM,UAC1FqF,KAAK/Z,QAAQuK,YAAY6qC,GACzBr7B,KAAKs7B,gBAAkB,IAAIx5B,UACvBnD,OAAQhO,EAAcqP,KAAM,iBAC5BpB,QAASy8B,EACTl5B,mBAAqBC,OAAQ,QAC7BC,eAAe,EACfC,eAAe,EACf3F,SAAS,EACT6F,SAAS,EACTI,MAAO,QACPrM,OAAQyJ,KAAKyC,YAAczC,KAAKyC,YAAc,IAAMzC,KAAK/Z,QAAQjB,GACjEsM,SAAUF,EAAY4O,KAAMA,KAAKvO,SAAWiR,GAAgBC,IAC5D1R,OAAQ+O,KAAK/O,OACbsR,eAAe,EACfmF,UAAYC,EAAG,SAAUC,EAAG,UAC5B/E,UAAW7C,KAAK6C,UAChBC,oBAAqB9C,KAAK8C,oBAC1B/D,KAAMiB,KAAKu7B,OAAOx7B,KAAKC,MACvBf,MAAOe,KAAKw7B,QAAQz7B,KAAKC,MACzB+B,WAAY/B,KAAKqsB,aAAatsB,KAAKC,MACnCiC,YAAajC,KAAKssB,cAAcvsB,KAAKC,QAEzCA,KAAKs7B,gBAAgBt4B,SAAS,IAAMhD,KAAK/Z,QAAQjB,GAAK21C,IACtD36B,KAAKy7B,mBAETrF,EAAY/sB,UAAUoyB,gBAAkB,WACpC,IAAIC,EAAY17B,KAAK5S,aAAasuC,UAAY17B,KAAK5S,aAAasuC,UAAY17B,KAAK5S,aAAaC,IAC9F2S,KAAK7J,UAAY,IAAIwlC,YACjBvlC,SAAU1P,SAAO,IAAMsZ,KAAK/Z,QAAQjB,GAAKqR,GAAgB2J,KAAK/Z,SAC9D21C,eACIC,QAASH,EACTI,UAAWJ,GAEfzqC,OAAQ+O,KAAK/O,OACb4R,UAAW7C,KAAK6C,UAChBk5B,UAAW/7B,KAAKg8B,YAAYj8B,KAAKC,MACjCi8B,SAAUj8B,KAAKk8B,WAAWn8B,KAAKC,MAC/Bm8B,UAAWn8B,KAAKo8B,SAASr8B,KAAKC,MAC9Bq8B,SAAUr8B,KAAKs8B,WAAWv8B,KAAKC,MAC/B8c,SAAU9c,KAAKu8B,WAAWx8B,KAAKC,MAC/Bw8B,QAASx8B,KAAKy8B,gBAAgB18B,KAAKC,MACnC08B,QAAS18B,KAAK28B,gBAAgB58B,KAAKC,MACnC48B,WAAY58B,KAAK68B,eAAeD,WAChCE,YAAa98B,KAAK68B,eAAeC,YACjCC,YAAa/8B,KAAK68B,eAAeE,YACjCC,kBAAmBh9B,KAAK68B,eAAeG,kBACvCC,gBAAiBj9B,KAAK68B,eAAeI,gBACrCC,kBAAmBl9B,KAAKm9B,iBAAiBp9B,KAAKC,QAElDA,KAAK7J,UAAU6M,SAAS,IAAMhD,KAAK/Z,QAAQjB,GAAKgU,KAEpDo9B,EAAY/sB,UAAU8zB,iBAAmB,SAAUzzC,GAC/CsW,KAAK/R,QAAQ,mBAAoBvE,IAErC0sC,EAAY/sB,UAAU+zB,eAAiB,WACnCp9B,KAAK7J,UAAUymC,WAAa58B,KAAK68B,eAAeD,WAChD58B,KAAK7J,UAAU2mC,YAAc98B,KAAK68B,eAAeC,YACjD98B,KAAK7J,UAAU4mC,YAAc/8B,KAAK68B,eAAeE,YACjD/8B,KAAK7J,UAAU6mC,kBAAoBh9B,KAAK68B,eAAeG,kBACvDh9B,KAAK7J,UAAU8mC,gBAAkBj9B,KAAK68B,eAAeI,gBACrDj9B,KAAK7J,UAAU+M,YAEnBkzB,EAAY/sB,UAAUgjB,aAAe,SAAU3iC,GAC3C,IAAIiE,GACAmI,OAAQpM,EAAKoM,OAAQqP,UAAW,SAAUC,YAAapF,KAAKs7B,iBAEhEt7B,KAAK/R,QAAQ,kBAAmBN,EAAW,SAAU0X,GACjD3b,EAAKoM,OAASuP,EAAUvP,UAGhCsgC,EAAY/sB,UAAUijB,cAAgB,SAAU5iC,GAC5C,IAAIiE,GACAmI,OAAQpM,EAAKoM,OAAQqP,UAAW,SAAUC,YAAapF,KAAKs7B,iBAEhEt7B,KAAK/R,QAAQ,mBAAoBN,EAAW,SAAU0X,GAClD3b,EAAKoM,OAASuP,EAAUvP,UAGhCsgC,EAAY/sB,UAAUkyB,OAAS,WAC3Bv7B,KAAK02B,UAAW,EAChB12B,KAAKs7B,gBAAgBr1C,QAAQ2Z,QAC7B,IAAIlW,GACA0b,YAAapF,KAAKs7B,gBAAiBn2B,UAAW,SAC9Clf,QAAS+Z,KAAKs7B,gBAAgBr1C,SAElC+Z,KAAK/R,QAAQ,YAAavE,IAE9B0sC,EAAY/sB,UAAUmyB,QAAU,WAC5Bx7B,KAAK02B,UAAW,EAChB12B,KAAK7J,UAAUknC,WACf,IAAI3zC,GACA0b,YAAapF,KAAKs7B,gBAAiBn2B,UAAW,SAC9Clf,QAAS+Z,KAAKs7B,gBAAgBr1C,SAElC+Z,KAAK/R,QAAQ,aAAcvE,IAG/B0sC,EAAY/sB,UAAU2yB,YAAc,SAAUtyC,GAC1C,IAAIhC,EAAS,OACb,GAA+B,IAA1BsY,KAAKwF,UAAU3f,OAChB,IAAK,IAAID,EAAI,EAAGA,EAAIoa,KAAKwF,UAAU3f,OAAQD,IACnC8D,EAAK4zC,SAASjvC,OAAS2R,KAAKwF,UAAU5f,GAAG0G,KAAK+B,OAC9C3G,EAASsY,KAAKwF,UAAU5f,GAAG8B,OAC3BsY,KAAKwF,UAAUZ,OAAOhf,EAAG,GACzBA,EAAIoa,KAAKwF,UAAU3f,QAI/B,IAAIjB,EAAOmW,KAAKC,UAAUjW,WAASib,KAAKxa,OAAOwa,KAAKxa,OAAOK,OAAS,GAAIma,KAAK/T,WAC7EvC,EAAK6zC,iBAAoBl4C,KAAQ2a,KAAK3a,OAAUqC,OAAUA,IAAY9C,KAAQA,IAAU44C,SAAY9zC,EAAK4zC,SAASjvC,OAClH,IAEIjB,GACAC,IAHY2S,KAAK5S,aAAasuC,UAAY17B,KAAK5S,aAAasuC,UAAY17B,KAAK5S,aAAaC,IAI1FsN,KAAM,OACNC,MAAM,EACNC,SAAU,KACVC,YAAa,KACblW,KAAMmW,KAAKC,UAAUtR,EAAK6zC,gBAC1BtiC,UAAW,KACXC,UAAW,KACXC,WAAY,MAEhB6E,KAAKy9B,iBAAoB/1C,OAAQ,SAAU0F,aAAcA,EAAc0I,QAAQ,GAC/EkK,KAAK/R,QAAQ,aAAc+R,KAAKy9B,gBAAiB,SAAUA,GACvD/zC,EAAK6zC,eAAiBxiC,KAAKU,MAAM1W,WAAS,OAAQ04C,EAAgBrwC,eAClE1D,EAAKoM,OAAS2nC,EAAgB3nC,OAE9B,IAAInI,GACAmI,QAAQ,EACR4nC,YAAah0C,EAAKi0C,gBAE8C,mBAAzD54C,WAAS,aAAc04C,EAAgBrwC,gBAC9CrI,WAAS,aAAc04C,EAAgBrwC,aAAvCrI,CAAqD4I,GACjD5I,WAAS,SAAU4I,KACnBjE,EAAKoM,OAAS/Q,WAAS,SAAU4I,QAKjDyoC,EAAY/sB,UAAU6yB,WAAa,WAC/Bl8B,KAAK49B,qBAAsB1pC,MAAO,IACW,IAAzC8L,KAAK7J,UAAU0nC,eAAeh4C,QAC9Bma,KAAKs7B,gBAAgBx+B,QAI7Bs5B,EAAY/sB,UAAU+yB,SAAW,SAAU1yC,GACvC,IAAI9E,EAAOmW,KAAKC,UAAUjW,WAASib,KAAKxa,OAAOwa,KAAKxa,OAAOK,OAAS,GAAIma,KAAK/T,WAC7EvC,EAAK6zC,iBAAoBl4C,KAAQ2a,KAAK3a,OAAUqC,OAAU,WAAc9C,KAAQA,KAGpFwxC,EAAY/sB,UAAUizB,WAAa,WAC3Bt8B,KAAK02B,UACL12B,KAAKs7B,gBAAgBx+B,QAI7Bs5B,EAAY/sB,UAAUkzB,WAAa,SAAU7yC,GACzC,GAA8B,IAA1BA,EAAKo0C,UAAUj4C,OAAnB,CAGAma,KAAK42B,eAAiBltC,EAAKo0C,UAAUj4C,OACrCma,KAAK62B,cAAgB,EAErB,IAAIj+B,EAAU9O,EAAckW,MAC5B,IAAKtH,GAAgBE,GAGjB,OAFAlP,EAAKoM,QAAS,OACdjK,GAAmBmU,KAAMpH,EAASM,IAGtC8G,KAAKs7B,gBAAgBn4B,SAGzBizB,EAAY/sB,UAAUu0B,oBAAsB,SAAUl0C,GAClDsW,KAAK62B,cAAgB72B,KAAK62B,cAAgBntC,EAAKwK,MAC3C8L,KAAK68B,eAAekB,WAAc/9B,KAAK42B,iBAAmB52B,KAAK62B,eAC/D72B,KAAKs7B,gBAAgBx+B,QAK7Bs5B,EAAY/sB,UAAUozB,gBAAkB,SAAUjyC,GAC9C,IAAId,GAAShC,OAAQ,SAAUmM,OAAQrJ,GACvCwV,KAAK/R,QAAQ,UAAWvE,GACxBsW,KAAKnW,UAAY9E,WAASib,KAAKxa,OAAOwa,KAAKxa,OAAOK,OAAS,GAAIma,KAAK/T,WACpElB,GAAKiV,KAAMmf,GAAoBnf,KAAK3a,MACpC2a,KAAK49B,qBAAsB1pC,MAAO,IACsC,mBAA7DnP,WAAS,YAAaib,KAAKy9B,gBAAgBrwC,eAClDrI,WAAS,YAAaib,KAAKy9B,gBAAgBrwC,aAA3CrI,IAKRqxC,EAAY/sB,UAAUszB,gBAAkB,SAAUnyC,GAE9C,IAAIwzC,EAAWj5C,WAAS,WAAYyF,GAChCyzC,EAAal5C,WAAS,aAAci5C,GACrB,KAAfC,GACA9kC,WAAS,aAAc8kC,EAAYzzC,GAEvC,IAAId,GAAShC,OAAQ,SAAU+I,MAAOjG,GACtCwV,KAAK/R,QAAQ,UAAWvE,GACiB,MAArC3E,WAAS,aAAci5C,KACvBh+B,KAAK+D,WAAWje,KAAKf,WAAS,OAAQyF,IACjCwV,KAAKgE,eACN3G,GAAgB2C,KAAM,gBAG0C,mBAA7Djb,WAAS,YAAaib,KAAKy9B,gBAAgBrwC,eAClDrI,WAAS,YAAaib,KAAKy9B,gBAAgBrwC,aAA3CrI,IAGRqxC,EAAY/sB,UAAU60B,aAAe,YjB+JzC,SAA4Bj3C,EAAQ5B,GAMhC,IAAK,IALD84C,EAAc94C,EAAKsH,MAAM,KACzByxC,EAAUn3C,EAAOkL,aAAaxF,MAAM,KAEpCiP,EAAO7W,WAASkC,EAAOzB,OAAO,GAAIyB,EAAOgF,UACzC+C,EAAM7J,oBAAMJ,WAAS,KAAM6W,IAAS,OAAS,KACxChW,EAAIu4C,EAAYt4C,OAAS,EAAGwN,EAAM+qC,EAAQv4C,OAAS,EAAGD,EAAIyN,EAAKzN,IAAK,CACzE,IAAI07B,EAAgC,KAAnB8c,EAAQx4C,EAAI,GAAayM,GAAqBD,GAC3DoB,EAA0B,KAAf4qC,EAAQx4C,GAAa,IAAOqB,EAAO5B,KAAO+4C,EAAQx4C,GAAK,IAElEhB,EAAOmK,EAAU9H,EAAQ+H,EAAKovC,EAAQx4C,IACtCZ,EAAKD,WAAS,SAAUH,GAC5BqC,EAAO7B,eAAgBC,KAAMmO,IAAW,GACxCvM,EAAOzB,OAAOM,KAAKd,GACnBiC,EAAO4C,UAAYjF,GACnBqC,EAAOjB,UAAUF,KAAKf,WAAS,OAAQH,IACvCmG,GAAK9D,EAAQq6B,EAAWr6B,EAAO5B,MAC/B,OiB/KAg5C,CAAYr+B,KAAMA,KAAK3a,OAE3B+wC,EAAY/sB,UAAUyvB,kBAAoB,WACtC94B,KAAK4gB,GAAGvlB,GAAsB2E,KAAKsX,YAAatX,MAChDA,KAAK4gB,GAAGllB,GAAqBsE,KAAK8Z,YAAa9Z,MAC/CA,KAAK4gB,GAAGxuB,GAAmB4N,KAAKk+B,aAAcl+B,MAC9CA,KAAK4gB,GAAGN,GAAoBtgB,KAAKugB,cAAevgB,MAChDA,KAAK4gB,GAAG/b,GAAmB7E,KAAK49B,oBAAqB59B,MACrDyhB,eAAa54B,IAAImX,KAAK/Z,QAAS,cAAe+Z,KAAKm7B,cAAen7B,OAEtEo2B,EAAY/sB,UAAUi1B,qBAAuB,WACrCt+B,KAAKgf,cAGThf,KAAKif,IAAI5jB,GAAsB2E,KAAKsX,aACpCtX,KAAKif,IAAIvjB,GAAqBsE,KAAK8Z,aACnC9Z,KAAKif,IAAI7sB,GAAmB4N,KAAKk+B,cACjCl+B,KAAKif,IAAIqB,GAAoBtgB,KAAKugB,eAClCvgB,KAAKif,IAAIpa,GAAmB7E,KAAK49B,qBACjCnc,eAAav4B,OAAO8W,KAAK/Z,QAAS,cAAe+Z,KAAKm7B,iBAE1D/E,EAAY/sB,UAAUkX,cAAgB,WAC9Bp7B,oBAAM6a,KAAKjY,gBACXiY,KAAKnW,UAAY9E,WAASib,KAAKxa,OAAOwa,KAAKxa,OAAOK,OAAS,GAAIma,KAAK/T,aAG5EmqC,EAAY/sB,UAAU6W,cAAgB,WAClClgB,KAAK0Z,eACL1Z,KAAKzY,OAAO04B,QAEhBmW,EAAY/sB,UAAUgY,iBAAmB,SAAUjjB,GAE/C,OAAQA,EAAE1W,QACN,IAAK,OACD0W,EAAEoI,iBACFxG,KAAKnW,UAAYC,EAAckW,OAC1BvH,GAAiBuH,KAAKnW,SAAS,IAIhC+I,GAAaoN,KAAM,aAHnBnU,GAAmBmU,KAAMA,KAAKnW,SAAS,GAAIgP,IAK/C,MACJ,IAAK,KACDuF,EAAEoI,iBACF9a,EAAQsU,MACR,MAEJ,IAAK,aACD5B,EAAEoI,iBACFxG,KAAKy4B,SAAW,UAChBz4B,KAAK5a,eAAgB6F,KAAM,YAAa,GACxCqsB,cAAYtX,KAAK/Z,SACjB+E,EAAagV,KAAM,WACnB,MAEJ,IAAK,aACD5B,EAAEoI,iBACFxG,KAAKy4B,SAAW,aAChBz4B,KAAK5a,eAAgB6F,KAAM,eAAgB,GAC3CqsB,cAAYtX,KAAK/Z,SACjB+E,EAAagV,KAAM,cACnB,MACJ,IAAK,QACD5B,EAAEoI,iBACU9f,SAAO,IAAMsZ,KAAK/Z,QAAQjB,GAAKgU,GAAegH,KAAK/Z,SACrDgT,UAItBm9B,EAAY/sB,UAAUwQ,WAAa,WAC/B4H,eAAa54B,IAAImN,OAAQ,SAAUgK,KAAKkgB,cAAelgB,MACvDA,KAAKkhB,eAAiB,IAAIC,iBAAenhB,KAAK/Z,SAC1Cm7B,UAAWphB,KAAKqhB,iBAAiBthB,KAAKC,MACtCwU,WAAYxU,KAAKwU,WACjB8M,UAAW,aAGnB8U,EAAY/sB,UAAUqO,aAAe,WACjC+J,eAAav4B,OAAO8M,OAAQ,SAAUgK,KAAKkgB,eAC3ClgB,KAAKkhB,eAAe/P,WAExBilB,EAAY/sB,UAAUk1B,QAAU,WAC5Bv+B,KAAK5a,eAAgBuD,mBAAqB,GAC1CqX,KAAKk3B,aACLl3B,KAAKzY,OAAO0K,IAAwBC,aAAc8N,KAAKxa,OAAO,KAC9DuF,GAAKiV,KAAOA,KAAK3a,OAAS2a,KAAK7N,aAAgBC,GAAoBC,GAAoB2N,KAAK3a,OAYhG+wC,EAAY/sB,UAAUiW,kBAAoB,SAAU0B,EAASwd,GAEzD,IAAK,IADDh3B,EACKsZ,EAAK,EAAGC,EAAK/f,OAAOD,KAAKigB,GAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAE9D,OADWC,EAAGD,IAEV,IAAK,eACD9gB,KAAKy+B,oBAAoBzd,GACzB,MACJ,IAAK,mBACDhhB,KAAKnJ,iBAAmBmqB,EAAQnqB,iBAChCmJ,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,SAAUqvB,QAASA,EAASwd,QAASA,IAChF,MACJ,IAAK,sBACGx+B,KAAK+b,oBACLzH,YAAUtU,KAAK/Z,SAAUmzC,KAGrBp5B,KAAKrX,cAAc9C,OAAS,GAC5Bma,KAAK5a,eAAgBuD,cAAeqX,KAAKrX,cAAcqwB,MAAMhZ,KAAKrX,cAAc9C,OAAS,KAAM,GAEnGu9B,eAAapjB,KAAK/Z,SAAUmzC,KAEhCp5B,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,SAAUqvB,QAASA,EAASwd,QAASA,IAChF,MACJ,IAAK,WACDx+B,KAAKq5B,YAAYmF,EAAQltC,SAAU0vB,EAAQ1vB,UAC3C0O,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,SAAUqvB,QAASA,EAASwd,QAASA,IAChF,MACJ,IAAK,sBACDx+B,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,cAAeqvB,QAASA,EAASwd,QAASA,IACrF,MACJ,IAAK,YACDx+B,KAAK6C,UAAYme,EAAQne,UACzB7C,KAAKtU,UACL,MACJ,IAAK,gBACDsU,KAAKrE,cAAgBqlB,EAAQrlB,cAC7BqE,KAAKtU,UACL,MACJ,IAAK,SACD8b,EAAUriB,oBAAM67B,EAAQxZ,QAAuCwZ,EAAQxZ,OAArC4vB,aAAWpW,EAAQxZ,QACrD2vB,oBAAQn3B,KAAK/Z,SAAWuhB,OAAUA,IAClCxH,KAAK0Z,eACL1Z,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,SAAUqvB,QAASA,EAASwd,QAASA,IAChF,MACJ,IAAK,SACIr5C,oBAAM67B,EAAQne,YACf7C,KAAK5a,eAAgByd,UAAWme,EAAQne,YAAa,GAEzD7C,KAAK0+B,qBAAqB1d,GAC1B,MACJ,IAAK,yBACDhhB,KAAK+6B,iBACL/6B,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,iBAAkBqvB,QAASA,EAASwd,QAASA,IACxF,MACJ,IAAK,OACDx+B,KAAKu+B,UACL,MACJ,IAAK,iBACIpX,oBAAkBnG,EAAQr3B,eAAey9B,sBAC1CpnB,KAAK5a,eAAgBuE,gBAAkBy9B,oBAAqBpG,EAAQr3B,eAAey9B,uBAAyB,GAE5GD,oBAAkBnG,EAAQr3B,eAAeK,aACzCgW,KAAK5a,eAAgBuE,gBAAkBK,WAAYg3B,EAAQr3B,eAAeK,cAAgB,GAE1Fm9B,oBAAkBnG,EAAQr3B,eAAeC,aACzCoW,KAAK5a,eAAgBuE,gBAAkBC,WAAYo3B,EAAQr3B,eAAeC,cAAgB,GAE9FoW,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,gBAAiBqvB,QAASA,EAASwd,QAASA,IACvF,MACJ,IAAK,gBACiB,YAAdx+B,KAAK/U,KACL+U,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,cAAeqvB,QAASA,EAASwd,QAASA,IAElE,eAAdx+B,KAAK/U,MACV+U,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,iBAAkBqvB,QAASA,EAASwd,QAASA,IAE5F,MACJ,IAAK,oBAGL,IAAK,kBACDx+B,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,SAAUqvB,QAASA,EAASwd,QAASA,IAChF,MACJ,IAAK,gBACDx+B,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,iBAAkBqvB,QAASA,EAASwd,QAASA,IACxF,MACJ,IAAK,kBACDx+B,KAAK0Z,eACL1Z,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,UAAWqvB,QAASA,EAASwd,QAASA,IACjF,MACJ,IAAK,iBACDx+B,KAAKo9B,iBACL,MACJ,IAAK,OACoB,YAAjBpc,EAAQ/1B,KACR+U,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,cAAeqvB,QAASA,EAASwd,QAASA,IAE/D,eAAjBxd,EAAQ/1B,MACb+U,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,iBAAkBqvB,QAASA,EAASwd,QAASA,IAE5F,MACJ,IAAK,QACDrH,oBAAQn3B,KAAK/Z,SAAW2c,MAAUzd,oBAAM67B,EAAQpe,OAAqCoe,EAAQpe,MAApCw0B,aAAWpW,EAAQpe,SAC5E5C,KAAKzY,OAAO83B,IAAuB1tB,OAAQ,SAAUqvB,QAASA,EAASwd,QAASA,IAChF,MACJ,IAAK,YACD9yC,EAAQsU,MACRA,KAAKzY,OAAOqK,OACZ,MACJ,IAAK,SACDlG,EAAQsU,MACRA,KAAKzY,OAAOqK,OACM,YAAdoO,KAAK/U,MACL+U,KAAKzY,OAAOmK,OAEhB,MACJ,IAAK,cACGsO,KAAKs7B,kBACLt7B,KAAKs7B,gBAAgB/kC,OAASyqB,EAAQve,aAEtCzC,KAAKtD,YACLsD,KAAKtD,UAAUnG,OAASyqB,EAAQve,aAEhCzC,KAAKuD,eACLvD,KAAKuD,aAAahN,OAASyqB,EAAQve,aAEnCzC,KAAKuH,YACLvH,KAAKuH,UAAUhR,OAASyqB,EAAQve,gBAOpD2zB,EAAY/sB,UAAUo1B,oBAAsB,SAAUzd,GAC7CmG,oBAAkBnG,EAAQ5zB,aAAaC,MACxC2S,KAAK5a,eAAgBgI,cAAgBC,IAAK2zB,EAAQ5zB,aAAaC,OAAS,GAEvE85B,oBAAkBnG,EAAQ5zB,aAAasuC,YACxC17B,KAAK5a,eAAgBgI,cAAgBsuC,UAAW1a,EAAQ5zB,aAAasuC,aAAe,GAEnFvU,oBAAkBnG,EAAQ5zB,aAAaqQ,cACxCuC,KAAK5a,eAAgBgI,cAAgBqQ,YAAaujB,EAAQ5zB,aAAaqQ,eAAiB,GAEvF0pB,oBAAkBnG,EAAQ5zB,aAAaJ,cACxCgT,KAAK5a,eAAgBgI,cAAgBJ,YAAag0B,EAAQ5zB,aAAaJ,eAAiB,GAE5FgT,KAAK5a,eAAgBC,KAAM,MAAO,GAClC2a,KAAK5a,eAAgBuD,mBAAqB,GAC1CuhB,EAAOb,UAAU3d,QAAQutB,KAAKjZ,OAGlCo2B,EAAY/sB,UAAUq1B,qBAAuB,SAAU1d,GACnDhhB,KAAK7J,UAAUlF,OAAS+vB,EAAQ/vB,OAChCiZ,EAAOb,UAAU3d,QAAQutB,KAAKjZ,OAOlCo2B,EAAY/sB,UAAU8H,QAAU,WACxBnR,KAAKgf,cAGJhf,KAAK2+B,YACN3+B,KAAKzY,OAAOikC,OAEhBxrB,KAAK7J,UAAUgb,UACfnR,KAAK7J,UAAY,KACjB6J,KAAKs7B,gBAAgBnqB,UACrBnR,KAAKs7B,gBAAkB,KACvBt7B,KAAK+4B,YAAY5nB,UACjBnR,KAAK+4B,YAAc,KACf/4B,KAAKtD,YACLsD,KAAKtD,UAAUyU,UACfnR,KAAKtD,UAAY,MAEjBsD,KAAKuH,YACLvH,KAAKuH,UAAU4J,UACfnR,KAAKuH,UAAY,MAEjBvH,KAAKuD,eACLvD,KAAKuD,aAAa4N,UAClBnR,KAAKuD,aAAe,MAExBvD,KAAK/Z,QAAQ01B,gBAAgB,SAC7B3b,KAAK/Z,QAAQ01B,gBAAgB,YAC7B3b,KAAKs+B,uBACLt+B,KAAK0X,eACL1X,KAAKq5B,YAAYr5B,KAAK1O,SAAU,MAChC8xB,eAAapjB,KAAK/Z,UNjqBT,QMiqB6BkzC,GAAYC,KAClDp5B,KAAK/Z,QAAQyK,UAAY,GACzBwZ,EAAOb,UAAU8H,QAAQ8H,KAAKjZ,QASlCo2B,EAAY/sB,UAAU/P,aAAe,SAAUjL,GAC3C2R,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,iBAEzC,IAAIkR,GAAW9O,EAAckW,OAE7B,GADAA,KAAKnW,SAAW+O,EACZvK,EACA,GAAI,eAAe0Y,KAAK1Y,GAAO,CAS3BuE,GAAaoN,KAAM,SAPfxV,MAAO,KACPiG,OACIoC,KAAM,MACNC,QAASnC,EAAcqP,KAAM,sBAAsBtS,QAAQ,MAAO,IAAMW,EAAO,KAC/E0E,WAAY,aAMf0F,GAAiBG,EAAQ,IAI1BU,GAAa0G,KAAM3R,GAHnBxC,GAAmBmU,KAAMpH,EAAQ,GAAIC,SAQ7CF,GAAgBqH,OAaxBo2B,EAAY/sB,UAAUgd,YAAc,SAAU1gC,GAC1Cqa,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,cAAe/B,IAAKA,KAQjEywC,EAAY/sB,UAAUu1B,oBAAsB,SAAU9zC,GAC7C3F,oBAAM2F,IACPkV,KAAK6+B,cAAcvQ,YAAYxjC,GAAO,IAa9CsrC,EAAY/sB,UAAUid,cAAgB,SAAU3gC,GAC5Cqa,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,gBAAiB/B,IAAKA,KAQnEywC,EAAY/sB,UAAUy1B,mBAAqB,SAAUh0C,GAC5C3F,oBAAM2F,IACPkV,KAAK6+B,cAAcvQ,YAAYxjC,GAAO,IAS9CsrC,EAAY/sB,UAAU01B,iBAAmB,SAAUj0C,GAC1C3F,oBAAM2F,IAAW3F,oBAAM6a,KAAKg/B,kBAAkB/S,cAC/CjsB,KAAKg/B,kBAAkBrQ,YAAY7jC,IAS3CsrC,EAAY/sB,UAAU41B,iBAAmB,SAAUhyC,GAC/C,OAAI+S,KAAKg/B,kBACEh/B,KAAKg/B,kBAAkBvQ,aAAaxhC,IAGnC,GAShBmpC,EAAY/sB,UAAU61B,oBAAsB,SAAUjyC,GAClD,OAAI+S,KAAK6+B,cACE7+B,KAAK6+B,cAAcpQ,aAAaxhC,IAG/B,GAYhBmpC,EAAY/sB,UAAU81B,YAAc,SAAUzlC,GAC1CsG,KAAKtG,WAAaA,GAA0B,KAC5CsG,KAAK5a,eAAgBuD,mBAAqB,GAC1CqX,KAAKzY,OAAOiV,OACZwD,KAAKvX,YAAa,EACuC,KAArDuX,KAAK1X,oBAAoBC,UAAUtC,QAAQuC,QAC3CwX,KAAK1X,oBAAoBC,UAAUtC,QAAQuC,MAAQ,IAEvD8B,GAAO0V,KAAM2gB,KAQjByV,EAAY/sB,UAAU+1B,iBAAmB,WAErC,OADAp/B,KAAKzY,OAAOm5B,OACL1gB,KAAKnW,UAWhBusC,EAAY/sB,UAAUkd,SAAW,SAAUvhC,GACvCgb,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,WAAY1C,GAAIA,KAO7DoxC,EAAY/sB,UAAUg2B,aAAe,WACjC3zC,EAAQsU,OAOZo2B,EAAY/sB,UAAUi2B,cAAgB,WAClCt/B,KAAK0Z,eACL1Z,KAAKzY,OAAOi5B,QAOhB4V,EAAY/sB,UAAUpD,UAAY,WAC9BjG,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,eAO7C0uC,EAAY/sB,UAAUoV,eAAiB,WACnCze,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,oBAe7C0uC,EAAY/sB,UAAUmd,WAAa,SAAUxhC,EAAIqJ,GAC7C2R,KAAKzY,OAAOg4B,IAAqB73B,OAAQ,aAAc1C,GAAIA,EAAI+U,QAAS1L,KAO5E+nC,EAAY/sB,UAAUk2B,YAAc,WAEhC,IAAI3mC,GAAW9O,EAAckW,OAC7BA,KAAKnW,SAAW+O,EAChBE,GAAWkH,OAQfo2B,EAAY/sB,UAAUwvB,OAAS,SAAU2G,GACjCA,EACAx/B,KAAKq5B,YAAY,KN94BZ,SMi5BLr5B,KAAKq5B,YNj5BA,QMi5BqB,MAE1Br5B,KAAK7J,YACL6J,KAAKs7B,gBAAgBz4B,UAAY28B,EACjCx/B,KAAK7J,UAAU0M,UAAY28B,IAGnC,IAAI1I,EAoJJ,OAnJAvtB,IACIk2B,aAAYx1B,KACbmsB,EAAY/sB,UAAW,oBAAgB,GAC1CE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,wBAAoB,GAC9CE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,2BAAuB,GACjDE,IACIk2B,aAAYt0B,KACbirB,EAAY/sB,UAAW,2BAAuB,GACjDE,IACIa,WAAS,KACVgsB,EAAY/sB,UAAW,gBAAY,GACtCE,IACIk2B,aAAY10B,KACbqrB,EAAY/sB,UAAW,2BAAuB,GACjDE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,2BAAuB,GACjDE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,yBAAqB,GAC/CE,IACIa,WAAS,UACVgsB,EAAY/sB,UAAW,cAAU,GACpCE,IACIa,WAAS,eACVgsB,EAAY/sB,UAAW,YAAQ,GAClCE,IACIk2B,aAAYr0B,KACbgrB,EAAY/sB,UAAW,8BAA0B,GACpDE,IACIa,WAAS,MACVgsB,EAAY/sB,UAAW,YAAQ,GAClCE,IACIa,WAAS,OACVgsB,EAAY/sB,UAAW,mBAAe,GACzCE,IACIk2B,aAAYj1B,KACb4rB,EAAY/sB,UAAW,sBAAkB,GAC5CE,IACIa,cACDgsB,EAAY/sB,UAAW,qBAAiB,GAC3CE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,yBAAqB,GAC/CE,IACIa,WAAS,OACVgsB,EAAY/sB,UAAW,qBAAiB,GAC3CE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,uBAAmB,GAC7CE,IACIa,YAAS,IACVgsB,EAAY/sB,UAAW,qBAAiB,GAC3CE,IACIa,WAAS,cACVgsB,EAAY/sB,UAAW,iBAAa,GACvCE,IACIa,WAAS,SACVgsB,EAAY/sB,UAAW,cAAU,GACpCE,IACIk2B,aAAYl1B,KACb6rB,EAAY/sB,UAAW,uBAAmB,GAC7CE,IACIk2B,aAAYp0B,KACb+qB,EAAY/sB,UAAW,sBAAkB,GAC5CE,IACIa,WAAS,SACVgsB,EAAY/sB,UAAW,aAAS,GACnCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,gBAAY,GACtCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,gBAAY,GACtCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,sBAAkB,GAC5CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,uBAAmB,GAC7CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,wBAAoB,GAC9CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,uBAAmB,GAC7CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,kBAAc,GACxCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,eAAW,GACrCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,iBAAa,GACvCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,qBAAiB,GAC3CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,oBAAgB,GAC1CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,oBAAgB,GAC1CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,mBAAe,GACzCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,qBAAiB,GAC3CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,kBAAc,GACxCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,iBAAa,GACvCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,gBAAY,GACtCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,eAAW,GACrCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,kBAAc,GACxCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,iBAAa,GACvCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,eAAW,GACrCE,IACIm2B,WACDtJ,EAAY/sB,UAAW,oBAAgB,GAC1CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,qBAAiB,GAC3CE,IACIm2B,WACDtJ,EAAY/sB,UAAW,wBAAoB,GAC9C+sB,EAAcU,EAAgBvtB,IAC1Bo2B,yBACDvJ,IAELwJ,aC9uCEC,GAAyB,WAQzB,SAASA,EAAQ54C,GACb+Y,KAAK8/B,SAAW,SAAU,SAAU,WAAY,MAAO,OAAQ,SAC/D9/B,KAAK+/B,QAAU,SAAU,SAAU,WAAY,MAAO,QACtD//B,KAAKggC,UAAY,SAAU,WAAY,MAAO,OAAQ,WACtDhgC,KAAKigC,WAAa,YAAa,SAAU,SAAU,WACnDjgC,KAAK/Y,OAASA,EACd+Y,KAAKmX,SACLnX,KAAKuU,mBAqdT,OAndAsrB,EAAQx2B,UAAU8N,OAAS,WACvB,IAAI8C,EAAQja,KACZA,KAAKlV,MAAQkV,KAAKkgC,gBAAgBlgC,KAAKmgC,SAASngC,KAAK/Y,OAAOqxC,gBAAgBxtC,MAAMuW,IAAI,SAAUpU,GAAQ,OAAOA,EAAKkiC,WACpH,IAAIxhC,GAAc7C,MAAOkV,KAAKlV,OAC9BkV,KAAK/Y,OAAOgH,QAAQ,gBAAiBN,EAAW,SAAUyyC,GACtDnmB,EAAMnvB,MAAQs1C,EAAkBt1C,MAChCmvB,EAAMomB,WAAa,IAAIC,WACnBx1C,MAAOmvB,EAAMnvB,MACby1C,QAAStmB,EAAMumB,qBAAqBzgC,KAAKka,GACzCwmB,aAAc,QACdC,QAASzmB,EAAM0mB,UAAU5gC,KAAKka,GAC9BnX,oBAAqBmX,EAAMhzB,OAAO6b,oBAClCD,UAAWoX,EAAMhzB,OAAO4b,YAE5BoX,EAAMomB,WAAWt9B,kBAAmB,EACpCkX,EAAMomB,WAAWr9B,SAAS,IAAMiX,EAAMhzB,OAAOhB,QAAQjB,GAAKuoC,OAGlEsS,EAAQx2B,UAAUolB,aAAe,SAAUxhC,GAEvC,IAAK,IADDyhC,EAAS1uB,KAAK4gC,MAAM3zC,GACfrH,EAAI,EAAGA,EAAIoa,KAAKlV,MAAMjF,OAAQD,IACnC,GAAIoa,KAAKlV,MAAMlF,GAAGZ,KAAO0pC,EACrB,OAAO9oC,EAGf,OAAQ,GAEZi6C,EAAQx2B,UAAU82B,SAAW,SAAUr1C,GACnC,IAAI+1C,EAAY/1C,EAAMkuB,QAItB,OAHIhZ,KAAK/Y,OAAOk7B,UAAYniB,KAAK/Y,OAAO80B,qBACpC8kB,EAAU/6C,KAAK,aAEZ+6C,GAGXhB,EAAQx2B,UAAUs3B,UAAY,SAAUj3C,GACpC,IAAIuwB,EAAQja,KACZ,IAAI7a,oBAAMuE,EAAKuD,OAAUvD,EAAKuD,KAAKjI,GAAnC,CAGA,IAEI4T,EAFAkoC,EAAOp3C,EAAKuD,KAAKjI,GAAGuc,QAAQvB,KAAK/Y,OAAOhB,QAAQjB,GAAK,QAAQa,QAGpD,YAATi7C,GAA+B,cAATA,GAAiC,WAATA,GAC9CloC,GAAW9O,EAAckW,KAAK/Y,SAC9B+Y,KAAK/Y,OAAO4C,SAAW+O,IAGvBoH,KAAK/Y,OAAOM,OAAO23B,OACnBtmB,EAAUoH,KAAK/Y,OAAO4C,UAE1B,IAAI8D,GAAcmI,QAAQ,EAAOlI,YAAagL,EAAS3L,KAAMvD,EAAKuD,MAClE+S,KAAK/Y,OAAOgH,QAAQ,eAAgBN,EAAW,SAAUozC,GACrD,IAAIxR,EACAh5B,EACJ,IAAKwqC,EAAiBjrC,OAClB,OAAQgrC,GACJ,IAAK,UACDvqC,EAASnN,UAAQM,EAAKw4B,cAAc3rB,OAAQ,IAAMyqC,MACpCzqC,EAAO1P,UAAUC,SAAS,qBACpC4C,EAAKoM,QAAS,GAElB,MACJ,IAAK,YACD6C,GAAgBshB,EAAMhzB,QACtB,MACJ,IAAK,MACDmF,EAAS6tB,EAAMhzB,QACf,MACJ,IAAK,OACDiF,EAAU+tB,EAAMhzB,QAChB,MACJ,IAAK,SACD,IAAK,IAAIrB,EAAI,EAAGA,EAAIgT,EAAQ/S,OAAQD,IAChC,IAAKiS,GAAce,EAAQhT,IAEvB,YADAiG,GAAmBouB,EAAMhzB,OAAQ2R,EAAQhT,GAAIkS,IAIrDlF,GAAaqnB,EAAMhzB,OAAQ,UAC3B,MACJ,IAAK,UACDgzB,EAAMhzB,OAAOM,OAAO+4B,OACpBiP,EAAStV,EAAMhzB,OAAO0B,cACY,mBAA9BsxB,EAAMhzB,OAAOc,eACbwnC,MAEJ/0B,GAAWyf,EAAMhzB,OAAQsoC,EAAQtV,EAAMhzB,OAAO5B,KAAM,WACpD,MACJ,IAAK,QACD40B,EAAMhzB,OAAOuL,WAAa,GAC1BF,EAAa2nB,EAAMhzB,QACnB,MACJ,IAAK,UACDyE,EAAQuuB,EAAMhzB,QACd,MACJ,IAAK,WACD8Q,GAAWkiB,EAAMhzB,QACjB,MACJ,IAAK,SACI4Q,GAAce,EAAQ,KAIvBqhB,EAAMhzB,OAAOM,OAAOm4B,OACpB9sB,GAAaqnB,EAAMhzB,OAAQ,WAJ3B4E,GAAmBouB,EAAMhzB,OAAQ2R,EAAQ,GAAId,IAMjD,MACJ,IAAK,SACDgB,GAAWmhB,EAAMhzB,QACjB,MACJ,IAAK,YACDgzB,EAAMhzB,OAAOM,OAAOo4B,OACpB,MACJ,IAAK,YACD1F,EAAMhzB,OAAOM,OAAOq4B,YAMxCigB,EAAQx2B,UAAUm3B,qBAAuB,WACrC,IAAKr7C,oBAAMuB,SAAO,IAAMsZ,KAAK4gC,MAAM,UAAW5gC,KAAK/Y,OAAOhB,UAAW,CACjE,IAAI6E,IACE9F,GAAIgb,KAAKihC,WAAW,QAASn8C,KAAM6L,EAAcqP,KAAK/Y,OAAQ,QAC5DsxB,QAAgC,SAAvBvY,KAAK/Y,OAAOyH,OAAoB2hC,GAAoB,KAC/DrrC,GAAIgb,KAAKihC,WAAW,QAASn8C,KAAM6L,EAAcqP,KAAK/Y,OAAQ,QAC5DsxB,QAAgC,SAAvBvY,KAAK/Y,OAAOyH,OAAoB2hC,GAAoB,KAC/DrrC,GAAIgb,KAAKihC,WAAW,QAASn8C,KAAM6L,EAAcqP,KAAK/Y,OAAQ,gBAC5DsxB,QAAgC,iBAAvBvY,KAAK/Y,OAAOyH,OAA4B2hC,GAAoB,KACvEX,WAAW,IACX1qC,GAAIgb,KAAKihC,WAAW,aAAcn8C,KAAM6L,EAAcqP,KAAK/Y,OAAQ,aACjEsxB,QAAmC,cAA1BvY,KAAK/Y,OAAOuH,UAA4B8hC,GAAqB,KACxEtrC,GAAIgb,KAAKihC,WAAW,cAAen8C,KAAM6L,EAAcqP,KAAK/Y,OAAQ,cAClEsxB,QAAmC,eAA1BvY,KAAK/Y,OAAOuH,UAA6B8hC,GAAqB,KACzEtrC,GAAIgb,KAAKihC,WAAW,QAASn8C,KAAM6L,EAAcqP,KAAK/Y,OAAQ,QAC5DsxB,QAAmC,SAA1BvY,KAAK/Y,OAAOuH,UAAuB8hC,GAAqB,KAEzEtwB,KAAKkhC,UAAY,IAAInX,kBACjBj/B,MAAOA,EAAOwG,SAAUF,EAAY4O,KAAK/Y,OAAQ0b,IACjDjc,OAAQ6K,EAAmBwO,KAAKC,KAAMA,KAAK/Y,QAC3C6b,oBAAqB9C,KAAK/Y,OAAO6b,oBACjCD,UAAW7C,KAAK/Y,OAAO4b,UAAW0V,QAAS6X,KAE/CpwB,KAAKkhC,UAAUn+B,kBAAmB,EAClC/C,KAAKkhC,UAAUl+B,SAAS,IAAMhD,KAAK4gC,MAAM,WAE7C,IAAKz7C,oBAAMuB,SAAO,IAAMsZ,KAAK4gC,MAAM,QAAS5gC,KAAK/Y,OAAOhB,UAAW,CAC/D,IAEIilB,IAEIlmB,GAAIgb,KAAKihC,WAAW,SAAUn8C,KAHlB,uDAGwC6L,EAAcqP,KAAK/Y,OAAQ,mBAC/EsxB,QAA8B,YAArBvY,KAAK/Y,OAAOgE,KAAqB,GAAKqlC,KAG/CtrC,GAAIgb,KAAKihC,WAAW,WAAYn8C,KARzB,sDAQ0C6L,EAAcqP,KAAK/Y,OAAQ,gBAC5EsxB,QAA8B,YAArBvY,KAAK/Y,OAAOgE,KAAqBqlC,GAAqB,KAGvEtwB,KAAKmhC,aAAe,IAAIpX,kBACpBxR,QAA8B,YAArBvY,KAAK/Y,OAAOgE,KAAqB2hC,GAAgBF,GAC1Dp7B,SAAUF,EAAY4O,KAAK/Y,OAAQ,gBAAkB0b,IACrD7X,MAAOogB,EAAaxkB,OAAQsZ,KAAKgS,aAAajS,KAAKC,MACnD6C,UAAW7C,KAAK/Y,OAAO4b,UACvBjE,QAAS,iCAAmCjO,EAAcqP,KAAK/Y,OAAQ,QAAU,YAErF+Y,KAAKmhC,aAAap+B,kBAAmB,EACrC/C,KAAKmhC,aAAan+B,SAAS,IAAMhD,KAAK4gC,MAAM,SAEhD5gC,KAAKohC,UAAUphC,KAAK8/B,SAAS,GAC7B9/B,KAAKqhC,aAeL,IAAK,IAdDl7B,EAAaF,YAAU,SAAUjG,KAAKqgC,WAAWp6C,SACjDmgB,EAAU,SAAUC,GAEpBF,EAAWE,GAAUC,UAAY,SAAUlI,GACrB,KAAdA,EAAEmI,SAAmBnI,EAAE7H,OAAO1P,UAAUC,SAAS,eACjDsX,EAAEoI,kBAGVL,EAAWE,GAAU3G,QAAU,SAAUtB,GACnB,KAAdA,EAAEmI,SAAmBnI,EAAE7H,OAAO1P,UAAUC,SAAS,eACjDqf,EAAWE,GAAUpN,UAIxBoN,EAAW,EAAGA,EAAWF,EAAWtgB,OAAQwgB,IACjDD,EAAQC,GAEZrG,KAAK/Y,OAAOq4C,iBAEhBO,EAAQx2B,UAAUi4B,mBAAqB,WACnC,GAAIthC,KAAKkhC,UAEL,IAAK,IADDp2C,EAAQkV,KAAKkhC,UAAUp2C,MAClBy2C,EAAY,EAAGA,EAAYz2C,EAAMjF,OAAQ07C,IAC1Cz2C,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,QACxCn2C,EAAMy2C,GAAWhpB,QAAiC,SAAvBvY,KAAK/Y,OAAOyH,OAAoB2hC,GAAoB,GAE1EvlC,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,QAC7Cn2C,EAAMy2C,GAAWhpB,QAAiC,SAAvBvY,KAAK/Y,OAAOyH,OAAoB2hC,GAAoB,GAE1EvlC,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,QAC7Cn2C,EAAMy2C,GAAWhpB,QAAiC,iBAAvBvY,KAAK/Y,OAAOyH,OAA4B2hC,GAAoB,GAElFvlC,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,aAC7Cn2C,EAAMy2C,GAAWhpB,QAAoC,cAA1BvY,KAAK/Y,OAAOuH,UAA4B8hC,GAAqB,GAEnFxlC,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,cAC7Cn2C,EAAMy2C,GAAWhpB,QAAoC,eAA1BvY,KAAK/Y,OAAOuH,UAA6B8hC,GAAqB,GAEpFxlC,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,UAC7Cn2C,EAAMy2C,GAAWhpB,QAAoC,SAA1BvY,KAAK/Y,OAAOuH,UAAuB8hC,GAAqB,KAKnGuP,EAAQx2B,UAAU43B,WAAa,SAAUj8C,GACrC,OAAOgb,KAAK/Y,OAAOhB,QAAQjB,GAAK,QAAUA,EAAGyH,eAEjDozC,EAAQx2B,UAAU2I,aAAe,SAAUtoB,GACd,YAArBsW,KAAK/Y,OAAOgE,KACRvB,EAAKuD,KAAKjI,KAAOgb,KAAKihC,WAAW,UACjCj2C,EAAagV,KAAK/Y,OAAQ,cAI1ByC,EAAKuD,KAAKjI,KAAOgb,KAAKihC,WAAW,YACjCj2C,EAAagV,KAAK/Y,OAAQ,YAItC44C,EAAQx2B,UAAU62B,gBAAkB,SAAUt7C,GAC1C,IAAIkG,KACA8P,EAAO,OACPoF,KAAK/Y,OAAOwK,WACZmJ,EAAO,YAEX,IAAK,IAAIhV,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IAAK,CAClC,IAAIqH,OAAO,EACPyhC,EAAS1uB,KAAK4gC,MAAMh8C,EAAKgB,IACzBsyB,EAAWvnB,EAAcqP,KAAK/Y,OAAQrC,EAAKgB,IAC3C47C,EAAc7wC,EAAcqP,KAAK/Y,OAAQ,WAAarC,EAAKgB,IAC3D67C,EAAc,iDAAmDvpB,EAAW,UAChF,OAAQtzB,EAAKgB,IACT,IAAK,IACDqH,GAAS0N,KAAM,aACf,MACJ,IAAK,SACD1N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAY/R,GAAiBgS,WAAYhnC,GACxG,MACJ,IAAK,SACD3N,GACIjI,GAAI0pC,EAAQgT,YAAaF,EACzB52B,SAAU,eAAiB8jB,EAAS,iDAAmD+S,EAAc,aAEzG,MACJ,IAAK,UACDx0C,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAYpR,GAAkBqR,WAAYhnC,GACzG,MACJ,IAAK,YACD3N,GACIjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaK,WAAYC,GAAgBC,SAAU,OAC5FC,MAAO,SAEX,MACJ,IAAK,OACD/0C,GACIjI,GAAI0pC,EAAQgT,YAAaF,EAAaG,WAAiC,YAArB3hC,KAAK/Y,OAAOgE,KAAqB2hC,GAAgBF,GACnGqV,SAAU,OAAQC,MAAO,QAASl9C,KAAMozB,EAAU0pB,WAAY,WAC9Dh3B,SAAU,eAAiB8jB,EAAS,4DAChC/9B,EAAcqP,KAAK/Y,OAAQ,QAAU,cAE7C,MACJ,IAAK,UACDgG,GACIjI,GAAI0pC,EAAQgT,YAAaF,EAAaG,WAAYxR,GAAkB4R,SAAU,OAAQC,MAAO,QAC7Fl9C,KAAMozB,EAAU0pB,WAAY,YAEhC,MACJ,IAAK,YACD30C,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAYzR,GAAoB0R,WAAYhnC,GAC3G,MACJ,IAAK,MACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAY9R,GAAc+R,WAAYhnC,GACrG,MACJ,IAAK,OACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAY7R,GAAe8R,WAAYhnC,GACtG,MACJ,IAAK,QACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAY5R,GAAgB6R,WAAYhnC,GACvG,MACJ,IAAK,SACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAY3R,GAAiB4R,WAAYhnC,GACxG,MACJ,IAAK,SACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAY1R,GAAiB2R,WAAYhnC,GACxG,MACJ,IAAK,WACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAYlR,GAAmBmR,WAAYhnC,GAC1G,MACJ,IAAK,YACD3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,EAAaG,WAAYnR,GAAoBoR,WAAYhnC,GAC3G,MACJ,QACI3N,GAASjI,GAAI0pC,EAAQ5pC,KAAMozB,EAAUwpB,YAAaF,GAG1D12C,EAAMhF,KAAKmH,GAEf,OAAOnC,GAEX+0C,EAAQx2B,UAAUu3B,MAAQ,SAAU57C,GAChC,OAAOgb,KAAK/Y,OAAOhB,QAAQjB,GAAK,OAASA,EAAGyH,eAEhDozC,EAAQx2B,UAAUkL,iBAAmB,WACjCvU,KAAK/Y,OAAO25B,GAAGvB,GAAqBrf,KAAKsf,kBAAmBtf,MAC5DA,KAAK/Y,OAAO25B,GAAGpkB,GAAyBwD,KAAKiiC,mBAAoBjiC,MACjEA,KAAK/Y,OAAO25B,GAAGx2B,GAAqB4V,KAAKqc,eAAgBrc,MACzDA,KAAK/Y,OAAO25B,GAAGx4B,GAAkB4X,KAAKwS,UAAWxS,MACjDA,KAAK/Y,OAAO25B,GAAGp5B,GAAkBwY,KAAKyS,UAAWzS,MACjDA,KAAK/Y,OAAO25B,GAAG4K,GAAgBxrB,KAAKmR,QAASnR,MAC7CA,KAAK/Y,OAAO25B,GAAGhvB,GAAqBoO,KAAKshC,mBAAoBthC,OAEjE6/B,EAAQx2B,UAAU64B,gBAAkB,SAAU9jC,GAC1C,IAAI6b,EAAQja,KACZ,QAAwCoB,IAApChD,EAAE4iB,QAAQsX,gBAAgBxtC,MAAqB,CAC/CkV,KAAKlV,MAAQkV,KAAKkgC,gBAAgBlgC,KAAKmgC,SAAS/hC,EAAE4iB,QAAQsX,gBAAgBxtC,MAAMuW,IAAI,SAAUpU,GAAQ,OAAOA,EAAKkiC,WAClH,IAAIxhC,GAAc7C,MAAOkV,KAAKlV,OAC9BkV,KAAK/Y,OAAOgH,QAAQ,gBAAiBN,EAAW,SAAUyyC,GAClDnmB,EAAMinB,WACNjnB,EAAMinB,UAAU/vB,UAEhB8I,EAAMknB,cACNlnB,EAAMknB,aAAahwB,UAEvB8I,EAAMnvB,MAAQs1C,EAAkBt1C,MAChCmvB,EAAMomB,WAAWv1C,MAAQmvB,EAAMnvB,MAC/BmvB,EAAMomB,WAAWn9B,WACjB+W,EAAMumB,2BAIlBX,EAAQx2B,UAAU44B,mBAAqB,WACnCjiC,KAAKqhC,aACLrhC,KAAKohC,UAAUphC,KAAK+/B,QAAQ,GAC5B//B,KAAKohC,UAAUphC,KAAKigC,WAAW,GACU,IAArCjgC,KAAK/Y,OAAO0B,cAAc9C,QAC1Bma,KAAKohC,UAAUphC,KAAK+/B,QAAQ,GAC5B//B,KAAKohC,UAAUphC,KAAKigC,WAAW,IAE1BjgC,KAAK/Y,OAAO0B,cAAc9C,OAAS,IACxCma,KAAKohC,UAAUphC,KAAKggC,UAAU,GAC9BhgC,KAAKohC,UAAUphC,KAAKigC,WAAW,IAEnC,IAAIzqC,EAAM9O,SAAO,IAAMsZ,KAAK4gC,MAAM,aAAc5gC,KAAKqgC,WAAWp6C,SAChE,GAAI+Z,KAAK/Y,OAAO0B,cAAc9C,OAAS,GAAK2P,EAAK,CAC7C,IAAI6K,OAAM,EAENA,EADqC,IAArCL,KAAK/Y,OAAO0B,cAAc9C,OACpBma,KAAK/Y,OAAO0B,cAAc9C,OAAS,IAAM8K,EAAcqP,KAAK/Y,OAAQ,kBAGpE+Y,KAAK/Y,OAAO0B,cAAc9C,OAAS,IAAM8K,EAAcqP,KAAK/Y,OAAQ,mBAE9EP,SAAO,mBAAoB8O,GAAK5O,YAAcyZ,EAC9CL,KAAKqgC,WAAW8B,SAAS3sC,EAAIoH,eAAe,KAGpDijC,EAAQx2B,UAAU+3B,UAAY,SAAUgB,EAAOC,GAC3C,IAAK,IAAIz8C,EAAI,EAAGA,EAAIw8C,EAAMv8C,OAAQD,IAAK,CACnC,IAAI4P,EAAM9O,SAAO,IAAMsZ,KAAK4gC,MAAMwB,EAAMx8C,IAAKoa,KAAK/Y,OAAOhB,SACrDuP,GACAwK,KAAKqgC,WAAW8B,SAAS3sC,EAAIoH,cAAeylC,KAIxDxC,EAAQx2B,UAAUg4B,WAAa,WAC3B,IAAI7rC,EAAM9O,SAAO,IAAMsZ,KAAK4gC,MAAM,aAAc5gC,KAAKqgC,WAAWp6C,SAC5DuP,GACAwK,KAAKqgC,WAAW8B,SAAS3sC,EAAIoH,eAAe,IAGpDijC,EAAQx2B,UAAUmJ,UAAY,WAC1BxS,KAAKohC,WAAW,UAAU,IAE9BvB,EAAQx2B,UAAUoJ,UAAY,WAC1BzS,KAAKohC,WAAW,UAAU,IAE9BvB,EAAQx2B,UAAUgT,eAAiB,WAC/B,GAAIrc,KAAKmhC,aAAc,CACnBnhC,KAAKmhC,aAAa5oB,QAA+B,YAArBvY,KAAK/Y,OAAOgE,KAAqB2hC,GAAgBF,GAE7E,IAAK,IADD5hC,EAAQkV,KAAKmhC,aAAar2C,MACrBy2C,EAAY,EAAGA,EAAYz2C,EAAMjF,OAAQ07C,IAC1Cz2C,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,SACxCn2C,EAAMy2C,GAAWhpB,QAA+B,eAArBvY,KAAK/Y,OAAOgE,KAAwBqlC,GAAqB,GAE/ExlC,EAAMy2C,GAAWv8C,KAAOgb,KAAKihC,WAAW,aAC7Cn2C,EAAMy2C,GAAWhpB,QAA+B,YAArBvY,KAAK/Y,OAAOgE,KAAqBqlC,GAAqB,MAKjGuP,EAAQx2B,UAAUsO,oBAAsB,WACpC3X,KAAK/Y,OAAOg4B,IAAII,GAAqBrf,KAAKsf,mBAC1Ctf,KAAK/Y,OAAOg4B,IAAIziB,GAAyBwD,KAAKiiC,oBAC9CjiC,KAAK/Y,OAAOg4B,IAAI70B,GAAqB4V,KAAKqc,gBAC1Crc,KAAK/Y,OAAOg4B,IAAI72B,GAAkB4X,KAAKwS,WACvCxS,KAAK/Y,OAAOg4B,IAAIz3B,GAAkBwY,KAAKyS,WACvCzS,KAAK/Y,OAAOg4B,IAAIuM,GAAgBxrB,KAAKmR,SACrCnR,KAAK/Y,OAAOg4B,IAAIrtB,GAAqBoO,KAAKshC,qBAQ9CzB,EAAQx2B,UAAUgS,cAAgB,WAC9B,MAAO,WAEXwkB,EAAQx2B,UAAUiW,kBAAoB,SAAUlhB,GAC5C,GAAIA,EAAEzM,SAAWqO,KAAKqb,iBAAgC,WAAbjd,EAAEzM,OAI3C,IAAK,IAAImvB,EAAK,EAAGC,EAAK/f,OAAOD,KAAK3C,EAAE4iB,SAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,WACG9gB,KAAKkhC,YACLlhC,KAAKkhC,UAAU5vC,SAAWF,EAAY4O,KAAK/Y,OAAQ0b,KAEnD3C,KAAKmhC,eACLnhC,KAAKmhC,aAAa7vC,SAAWF,EAAY4O,KAAK/Y,OAAQ,gBAAkB0b,KAE5E,MACJ,IAAK,SACL,IAAK,QACD3C,KAAKqgC,WAAWiC,kBAChB,MACJ,IAAK,kBACDtiC,KAAKkiC,gBAAgB9jC,MAKrCyhC,EAAQx2B,UAAU8H,QAAU,WACpBnR,KAAK/Y,OAAO+3B,cAGhBhf,KAAK2X,sBACD3X,KAAKkhC,WACLlhC,KAAKkhC,UAAU/vB,UAEfnR,KAAKmhC,cACLnhC,KAAKmhC,aAAahwB,UAEtBnR,KAAKqgC,WAAWlvB,UAChBnR,KAAK/Y,OAAOq4C,kBAEhBO,EAAQx2B,UAAUilB,YAAc,SAAUxjC,EAAOy3C,GAC7C,IAAK,IAAI38C,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,IAAK,CACnC,IAAI4P,EAAM9O,SAAO,IAAMsZ,KAAK4gC,MAAM91C,EAAMlF,IAAKoa,KAAK/Y,OAAOhB,SACrDuP,GACAwK,KAAKqgC,WAAW/R,YAAY94B,EAAIoH,cAAe2lC,KAIpD1C,KCneP2C,GAAgC,WAQhC,SAASA,EAAev7C,GACpB+Y,KAAKyiC,eACLziC,KAAK0iC,aACL1iC,KAAK2iC,YAAa,EAClB3iC,KAAK4iC,QAAS,EACd5iC,KAAK6iC,eAAgB,EACrB7iC,KAAK8iC,gBAAiB,EACtB9iC,KAAK+iC,cAAe,EACpB/iC,KAAKgjC,aAAe,KAEpBhjC,KAAKijC,iBAAmB,KAExBjjC,KAAKkjC,mBAAoB,EAEzBljC,KAAKmjC,mBAAoB,EACzBnjC,KAAK/Y,OAASA,EACd+Y,KAAKuU,mBACLvU,KAAKwU,YACDgC,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAO3W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCC,MAAO7W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCE,MAAO9W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCwsB,WAAY,eACZC,SAAU,YACVtsB,GAAI,MA+xBZ,OA5xBAyrB,EAAen5B,UAAUi6B,OAAS,WAC9B,GAAKn+C,oBAAM6a,KAAKjL,SAAhB,CAIA,IAAIwuC,EAAWx+C,WAASib,KAAK/Y,OAAOzB,OAAO,GAAIwa,KAAK/Y,OAAOgF,UAC3DkN,WAAS,WAAY,cAAeoqC,GAEpC,IAAIC,KACAx+C,EAAKD,WAAS,KAAMw+C,GACnBp+C,oBAAMH,IACPmU,WAAS,UAAWnU,EAAIw+C,GAEvB3rC,GAAc0rC,IACfpqC,WAAS,QAASZ,GAAegrC,GAAWC,GAE3Cr+C,oBAAMq+C,IACPrqC,WAAS,eAAgBqqC,EAAMD,GAEnCvjC,KAAKjL,QAAU,IAAI0uC,YACfnrB,QACI1tB,YAAa24C,GAAWv+C,GAAI,SAAU0+C,SAAU,UAAWC,SAAU,eAAgB7mB,SAAU,eAAgBh4B,KAAM,OACrH8+C,YAAa,WAAYrrB,QAAS,WAAYC,eAAgB,eAAgBqrB,QAAS,QAE3F/gC,oBAAqB9C,KAAK/Y,OAAO6b,oBACjCtU,UAAWwR,KAAK/Y,OAAOswC,uBAAuB/oC,UAC9Cs1C,cAAe9jC,KAAK+jC,gBAAgBhkC,KAAKC,MACzCgkC,aAAchkC,KAAKikC,eAAelkC,KAAKC,MACvCkkC,cAAelkC,KAAKmkC,aAAapkC,KAAKC,MACtCokC,YAAapkC,KAAKqkC,cAActkC,KAAKC,MACrCskC,cAAc,EACdC,YAAavkC,KAAKwkC,cAAczkC,KAAKC,MACrCykC,SAAUzkC,KAAK0kC,WAAW3kC,KAAKC,MAC/B6C,UAAW7C,KAAK/Y,OAAO4b,UACvB8hC,UAAW3kC,KAAK4kC,YAAY7kC,KAAKC,QAErCA,KAAKjL,QAAQgO,kBAAmB,EAChC/C,KAAKjL,QAAQiO,SAAS,IAAMhD,KAAK/Y,OAAOhB,QAAQjB,GAAK0oC,IACrD1tB,KAAK6Z,eAET2oB,EAAen5B,UAAUu7B,YAAc,WACnC,IAAI3qB,EAAQja,MACPA,KAAK/Y,OAAOwK,UAAYuO,KAAKjL,UAC1BiL,KAAK/Y,OAAO4P,kBACRmJ,KAAKpJ,SACLoJ,KAAKpJ,QAAQua,UAEjBnR,KAAKpJ,QAAU,IAAIsjB,YAAUla,KAAKjL,QAAQ9O,SACtCw0B,SAAUza,KAAK/Y,OAAOyzB,mBACtBJ,WAAY,IAAM6S,GAClB/S,SAAU,EACVO,SAAU3a,KAAK/Y,OAAOhB,QACtB40B,KAAMzjB,EAAgB2I,KAAKC,KAAMA,KAAK/Y,QACtC8zB,UAAW,SAAUrxB,GACjBiN,EAAiBsjB,EAAMhzB,OAAQyC,EAAMuwB,EAAMrjB,UAE/CgkB,SAAUhlB,EAAgBmK,KAAKC,KAAMA,KAAK/Y,QAC1CkzB,gBAAgB,EAChBE,kBAAkB,EAClBE,OAAQva,KAAKwa,WAAWza,KAAKC,UAG3BA,KAAK/Y,OAAO4P,kBAAoBmJ,KAAKpJ,SAC3CoJ,KAAKpJ,QAAQua,YAIzBqxB,EAAen5B,UAAUmR,WAAa,SAAU9wB,GAC5C,IAAI4wB,EAAa5wB,EAAKsxB,OAAOzkB,OAC7B,IAAK+jB,EAAWzzB,UAAUC,SAASqmC,IAC/B,OAAO,KAEX,IAAIlS,EAAS7xB,UAAQkxB,EAAY,MAYjC,OAXAta,KAAK/Y,OAAOgM,SAAW,GACvB+M,KAAK/Y,OAAOkO,YACZ6K,KAAK/Y,OAAOW,kBACZoY,KAAK/Y,OAAOW,gBAAkBqzB,GAC9Bjb,KAAK/Y,OAAOmM,aACZlL,EAAU8X,KAAK/Y,OAAQg0B,GAEvBjb,KAAK/Y,OAAOkO,SAAW6K,KAAK6kC,YAAY5pB,GACxCjb,KAAK/Y,OAAOgM,SAAW+M,KAAK8kC,YAAY7pB,EAAQjb,KAAK/Y,OAAOkO,SAAS,GAAG9G,MACxE2R,KAAK/Y,OAAOmM,UAAUtN,KAAKka,KAAK/Y,OAAOkO,SAAS,GAAG9G,MACnD6G,EAAyB8K,KAAK/Y,QACvB+Y,KAAK/Y,OAAO0O,oBAEvB6sC,EAAen5B,UAAUy7B,YAAc,SAAU7pB,EAAQn2B,GAErD,OAAOmD,EADI+X,KAAK+kC,YAAY9pB,EAAQn2B,KAGxC09C,EAAen5B,UAAU07B,YAAc,SAAUpgD,EAAMG,GACnD,IAAIE,EAAKL,EAAKM,aAAa,WAE3B,OAAOK,EAAQX,EADDqb,KAAK/Y,OAAO1B,MAAQP,EAAKF,EACTkb,KAAK/Y,OAAO1B,QAE9Ci9C,EAAen5B,UAAUq7B,WAAa,SAAUh7C,GAC5C,IAAIiE,GACA1H,QAASyD,EAAK/E,KACdiJ,YAAalE,EAAKs7C,SAClBrzC,OAAQ,kBAEZqO,KAAK/Y,OAAOgH,QAAQ,WAAYN,IAGpC60C,EAAen5B,UAAU47B,SAAW,SAAUz6C,EAAO+L,EAAQ2uC,GAEzD,IAAIC,EAAcp0C,EAAevG,GACjC,GAAI26C,EAAYt/C,OAAS,EAAG,CAIxB,IAHA,IAAI22B,EAAW,EAEX4hB,EAAU+G,EACP3oB,EAAW2oB,EAAYt/C,QAAQ,CAElCu4C,EAAQ5hB,GAAU4oB,SAAW,cAE7B,IAAI5B,KACAx+C,EAAKD,WAAS,KAAMq5C,EAAQ5hB,IAC3Br3B,oBAAMH,IACPmU,WAAS,UAAWnU,EAAIw+C,GAEvB3rC,GAAcumC,EAAQ5hB,KACvBrjB,WAAS,QAASZ,GAAe6lC,EAAQ5hB,IAAYgnB,GAEpDr+C,oBAAMq+C,IACPrqC,WAAS,eAAgBqqC,EAAMpF,EAAQ5hB,IAE3CA,IAGJxc,KAAKjL,QAAQswC,SAASF,EAAa5uC,EAAQ,KAAM2uC,KAIzD1C,EAAen5B,UAAU06B,gBAAkB,SAAUr6C,GACjD,IAAKA,EAAK4b,eAAiBtF,KAAK+iC,eAAiB/iC,KAAK6iC,gBAAkB7iC,KAAK8iC,gBAAkB9iC,KAAKmjC,kBAGhG,OAFAnjC,KAAKmjC,mBAAoB,OACzBnjC,KAAKkjC,mBAAoB,GAG7B,IAAKljC,KAAKgjC,aAAc,CACpBhjC,KAAK/Y,OAAOc,aAAe,iBAE3B,IACI4F,GAAcmI,QAAQ,EAAOlI,YADlBoS,KAAK6kC,YAAY9/C,WAAS,KAAM2E,EAAKs7C,WACG,GAAIrzC,OAAQ,kBACnEqO,KAAK/Y,OAAOgH,QAAQ,WAAYN,GAChCjE,EAAKoM,OAASnI,EAAUmI,OACpBpM,EAAKoM,SACLkK,KAAKmjC,oBAAoBnjC,KAAKkjC,mBAAoBljC,KAAKijC,iBAAiB,KAAOv5C,EAAK/E,KAAKM,aAAa,YACtG+a,KAAKjL,QAAQ3N,cAAgB4Y,KAAKkjC,kBAAoBljC,KAAKijC,iBAAmBjjC,KAAKjL,QAAQ3N,cAC3F4Y,KAAKijC,iBAAmBjjC,KAAKjL,QAAQ3N,cAChCjC,oBAAM6a,KAAK/Y,SAAY9B,oBAAM6a,KAAK/Y,OAAO+3C,oBAC1Ch/B,KAAK/Y,OAAO+3C,kBAAkB/S,YAAYqC,aAAa,SAAS,MAMhFkU,EAAen5B,UAAUomB,2BAA6B,SAAU9qC,GAC5D,IAAIC,EAAOob,KAAKjL,QAAQ8vC,YAAYlgD,GAEpCqb,KAAK/Y,OAAO0B,iBACZqX,KAAK/Y,OAAO4C,SAAWjF,EACvBob,KAAKitB,WAAatoC,EAClBqb,KAAK/Y,OAAOc,aAAe,iBAC3BrD,EAAWC,EAAMqb,KAAK/Y,OAAO4C,SAAS,GAAImW,KAAK/Y,QAC/C8D,GAAKiV,KAAK/Y,OAAQ+Y,KAAK6iC,cAAgBpuC,GAAkB0qB,GAAoBnf,KAAK/Y,OAAO5B,MACzF2a,KAAK/Y,OAAOmwB,YAAczyB,EAC1Bqb,KAAK6iC,cAAgB7iC,KAAK8iC,eAAiB9iC,KAAK+iC,cAAe,EAC/D/iC,KAAKjL,QAAQ3N,eAAiBzC,EAAKM,aAAa,cAEpDu9C,EAAen5B,UAAU46B,eAAiB,SAAUv6C,GAMhD,GALIsW,KAAK/Y,OAAOqB,qBAAuB0X,KAAK/Y,OAAOqB,oBAAoBC,YAAcyX,KAAKgjC,eACtFhjC,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,MAAQ,GAC1DwX,KAAK/Y,OAAOwB,YAAa,GAE7BuX,KAAK/Y,OAAO22B,iBACPl0B,EAAK4b,cAAiBtF,KAAK+iC,cAAiB/iC,KAAK6iC,eAAkB7iC,KAAK8iC,eAA7E,CAGA9iC,KAAKitB,WAAavjC,EAAK/E,KACvBqb,KAAK/Y,OAAOc,aAAe,iBAE3B,IAAIi9C,EAAWhlC,KAAK6kC,YAAY9/C,WAAS,KAAM2E,EAAKs7C,WACpDhlC,KAAK/Y,OAAO0B,iBACZqX,KAAK/Y,OAAO4C,SAAWm7C,EACvB,IAAI3O,EAAer2B,KAAK/Y,OAAO5B,KAC/BX,EAAWgF,EAAK/E,KAAMqb,KAAK/Y,OAAO4C,SAAS,GAAImW,KAAK/Y,QAChDovC,IAAiBr2B,KAAK/Y,OAAO5B,OAC7B2a,KAAKslC,iBAAmB,KACpB57C,EAAK/E,KAAKiL,cAAc,IAAMg4B,KAA+D,OAAjDl+B,EAAK/E,KAAKiL,cAAc,IAAMpJ,MAC1EwZ,KAAKslC,iBAAmB,OAE5Bv6C,GAAKiV,KAAK/Y,OAAQ+Y,KAAK6iC,cAAgBpuC,GAAkB0qB,GAAoBnf,KAAK/Y,OAAO5B,MACzF2a,KAAK/Y,OAAOmwB,YAAc1tB,EAAK/E,MAEnCqb,KAAK6iC,cAAgB7iC,KAAK8iC,eAAiB9iC,KAAK+iC,cAAe,IAInEP,EAAen5B,UAAUk8B,WAAa,SAAU77C,GAC5CsW,KAAK6iC,eAAgB,EACrB7iC,KAAKwlC,iBAAiB97C,EAAK,KAG/B84C,EAAen5B,UAAU86B,aAAe,SAAUz6C,GAC9C,IAAKA,EAAK4b,cAAiBtF,KAAK4iC,SAGqB,OAAjDl5C,EAAK/E,KAAKiL,cAAc,IAAMpJ,IAAyB,CACvD,IAAI1B,EAAOC,WAAS,OAAQ2E,EAAKs7C,UAC7BhgD,EAAK0E,EAAK/E,KAAKM,aAAa,WAC5BmB,GAAOjB,oBAAMH,GACbE,EAAUC,oBAAMH,GAAMF,EAAOE,EAC7BK,EAAOC,EAAQoE,EAAK/E,KAAMO,EAASkB,GACvC4Z,KAAKslC,iBAAmB57C,EAAK/E,KAAKM,aAAa,YAC/C+a,KAAK/Y,OAAO2N,WAAaoL,KAAKslC,iBAC9BtlC,KAAK/Y,OAAO4C,SAAWmW,KAAK6kC,YAAY9/C,WAAS,KAAM2E,EAAKs7C,WAC5Dj6C,GAAKiV,KAAK/Y,OAAQw+C,GAAmBpgD,KAI7Cm9C,EAAen5B,UAAUq8B,eAAiB,SAAUh8C,GAChDsW,KAAKilC,SAASv7C,EAAKc,MAAOwV,KAAKslC,kBAAkB,GACjDtlC,KAAK/Y,OAAO2N,WAAa,MAE7B4tC,EAAen5B,UAAUg7B,cAAgB,SAAU36C,GAI/C,GAHAsW,KAAK/Y,OAAOc,aAAe,iBAC3BiY,KAAKijC,iBAAmBjjC,KAAKjL,QAAQ3N,cACrC4Y,KAAKitB,WAAavjC,EAAK/E,KACG,IAArB+E,EAAKqN,MAAMkQ,OAAiBvd,EAAK/E,KAAKM,aAAa,cAAgB+a,KAAKjL,QAAQ3N,cAAc,GAC/F4Y,KAAK+iC,cAAe,EACpB/iC,KAAKkjC,mBAAoB,EACzBljC,KAAKjL,QAAQ3N,eAAiBsC,EAAK/E,KAAKM,aAAa,kBAEpD,GAAIyE,EAAK/E,KAAKM,aAAa,cAAgB+a,KAAKjL,QAAQ3N,cAAc,IAA2C,IAArC4Y,KAAK/Y,OAAO0B,cAAc9C,OAAc,CACrHma,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjD,IAAIymC,EAA+B,eAArBpvB,KAAK/Y,OAAOgE,KAAyB,iBAAmB,cACtE+U,KAAK/Y,OAAOM,OAAO83B,IAAuB1tB,OAAQy9B,EAAQpO,SAAWr4B,sBAI7E65C,EAAen5B,UAAUm7B,cAAgB,SAAU96C,GAC1CvE,oBAAMuE,EAAKi8C,aACZj8C,EAAKoM,QAAS,IAGtB0sC,EAAen5B,UAAUsU,cAAgB,SAAUj0B,GAC/CsW,KAAK/Y,OAAOC,OAAQ,EAEpB,IAAI+H,EAAYlK,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOiI,SACxF,GAA8B,QAA1B8Q,KAAKslC,iBAA4B,CACjC,IAAIM,EAAQl/C,SAAO,cAAgBsZ,KAAKjL,QAAQ3N,cAAc,GAAK,KAAM4Y,KAAKjL,QAAQ9O,SAClF6xB,EAAO3yB,oBAAMygD,GAAiD,KAAvCl/C,SAAO,IAAM4yB,GAAiBssB,GACrDzgD,oBAAM2yB,IACN9X,KAAKilC,SAASv7C,EAAKc,MAAOwV,KAAKjL,QAAQ3N,cAAc,IAAK4Y,KAAK2iC,YAEnE3iC,KAAKslC,iBAAmB,GAE5BtlC,KAAK2iC,YAAa,EACdx9C,oBAAM8J,IACNkK,WAAS6G,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAI6D,EAAKc,MAAOwV,KAAK/Y,OAAOiI,SAEpF8Q,KAAK/Y,OAAOkP,UAAU8mC,iBACtBj9B,KAAK6lC,WAAWn8C,IAExB84C,EAAen5B,UAAUw8B,WAAa,SAAUn8C,GAC5C,GAAIsW,KAAKjL,QAAS,CACd,IAAI/P,EAAKgb,KAAKjL,QAAQ3N,cAAc,GACpC4Y,KAAK8lC,eAAep8C,EAAM1E,KAGlCw9C,EAAen5B,UAAUy8B,eAAiB,SAAUp8C,EAAM1E,GACtD,IAAI+gD,GAAuD,IAA5C/lC,KAAKjL,QAAQixC,cAAct5C,QAAQ1H,GAClDgb,KAAKimC,iBAAiBjhD,GACtBgb,KAAKilC,SAASv7C,EAAKc,MAAOxF,GAAK+gD,IAEnCvD,EAAen5B,UAAU48B,iBAAmB,SAAUjhD,GAClD,IAAI4gD,EAAQl/C,SAAO,cAAgB1B,EAAK,KAAMgb,KAAKjL,QAAQ9O,SACvDgB,EAASP,SAAO,IAAM4yB,GAAiBssB,GACvCM,EAASj/C,EAAS+hB,MAAMK,UAAU2P,MAAMC,KAAKhyB,EAAOwjC,UAAY,KAChEyb,GACAlmC,KAAKjL,QAAQ0tC,YAAYyD,IAGjC1D,EAAen5B,UAAU88B,UAAY,SAAUz8C,GAC3C,IAAI08C,EAAQpmC,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAC3Dma,KAAKjL,QAAQsxC,UAAUrmC,KAAKjL,QAAQ3N,eACpC4Y,KAAKjL,QAAQ3N,eAAiBg/C,GAC9BpmC,KAAKslC,iBAAmB,MACxBtlC,KAAK2d,cAAcj0B,IAEvB84C,EAAen5B,UAAUyU,WAAa,SAAUp0B,GACX,mBAA7BsW,KAAK/Y,OAAOc,cACR2B,EAAK6M,OAAO3G,cAAc,IAAMg4B,KAChC5nB,KAAKjL,QAAQsxC,UAAUrmC,KAAKjL,QAAQ3N,gBAIhDo7C,EAAen5B,UAAU60B,aAAe,SAAUx0C,GAC9CsW,KAAKsjC,SACLtjC,KAAKilC,SAASv7C,EAAKc,MAAOzF,WAAS,SAAU2E,EAAKgK,MAAM,IAE5D8uC,EAAen5B,UAAU4T,cAAgB,SAAUvzB,GAC/CsW,KAAKsjC,SACL,IAAIt+C,EAAKD,WAAS,SAAU2E,EAAKgK,KACjCsM,KAAKimC,iBAAiBjhD,GACtBgb,KAAKilC,SAASv7C,EAAKc,MAAOxF,GAAI,GAC9Bgb,KAAKjL,QAAQ3N,eAAiB4Y,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,KAEjF28C,EAAen5B,UAAU6T,YAAc,SAAUxzB,GAC7CsW,KAAK6lC,WAAWn8C,IAEpB84C,EAAen5B,UAAU+T,eAAiB,WACL,mBAA7Bpd,KAAK/Y,OAAOc,cACZiY,KAAKsmC,kBAGb9D,EAAen5B,UAAUiU,aAAe,WACpC,GAAiC,mBAA7Btd,KAAK/Y,OAAOc,aAAmC,CAC/CiY,KAAKumC,mBACL,IAAI1pB,EAAS93B,WAAS,OAAQib,KAAK/Y,OAAO4C,SAAS,IACnDwO,GAAO2H,KAAK/Y,QAAS41B,GAAS7c,KAAK/Y,OAAO5B,KAAM,YAIxDm9C,EAAen5B,UAAUkU,YAAc,SAAU7zB,GAC7C,GAAiC,mBAA7BsW,KAAK/Y,OAAOc,aAAmC,CAC/C,IAAImK,EAAe8N,KAAKjL,QAAQ3N,cAAc,GAC1Co/C,EAAc9/C,SAAO,cAAgBwL,EAAe,KAAM8N,KAAKjL,QAAQ9O,SACvEwgD,EAAkBr9C,UAAQo9C,EAAa,IAAMltB,IAAiB1c,cAClEoD,KAAKjL,QAAQ3N,eAAiBq/C,EAAgBxhD,aAAa,aAC3D+a,KAAKjL,QAAQmO,WAEjBlD,KAAK6lC,WAAWn8C,IAEpB84C,EAAen5B,UAAUmU,aAAe,SAAU9zB,GAC9CsW,KAAK6lC,WAAWn8C,IAEpB84C,EAAen5B,UAAUoU,aAAe,WACH,mBAA7Bzd,KAAK/Y,OAAOc,cACZiY,KAAK0d,oBAIb8kB,EAAen5B,UAAUq9B,kBAAoB,SAAUh9C,GACnD,IAAI1E,EAAKgb,KAAKgjC,aAAehjC,KAAKgjC,aAAehjC,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAIhG,GAHAma,KAAK2iC,YAAoF,IAAvE3iC,KAAKjL,QAAQixC,cAAct5C,QAAQsT,KAAKjL,QAAQ3N,cAAc,IAChF4Y,KAAK8lC,eAAep8C,EAAM1E,GAC1Bgb,KAAK/Y,OAAO2N,WAAa,KACrBoL,KAAKgjC,aACLhjC,KAAKgjC,aAAe,SAEnB,CAED,IAAI7c,KACJ,GAAInmB,KAAK/Y,OAAO1B,MACZ4gC,EAAa,IAAIt3B,cAAYmR,KAAKjL,QAAQ8vC,eACtC/1C,cAAa,IAAIL,SAAQU,MAAM,KAAM,QAAS6Q,KAAK/Y,OAAO0f,WAAW,QAExE,CAED,IAAIggC,EAAQ,IAAI93C,cAAYmR,KAAKjL,QAAQ8vC,eACrC/1C,cAAa,IAAIL,SAAQU,MAAM6Q,KAAKjL,QAAQujB,OAAOxzB,KAAM,QAASkb,KAAK/Y,OAAOuc,YAAY,IAC1FmjC,EAAM9gD,OAAS,IACfsgC,EAAa,IAAIt3B,cAAY83C,GACzB73C,cAAa,IAAIL,SAAQU,MAAM,UAAW,QAASnK,GAAI,KAGnE,GAAImhC,EAAWtgC,OAAS,EAAG,CACvBma,KAAK8iC,gBAAiB,EACtB,IAAI8D,EAAO7hD,WAASib,KAAKjL,QAAQujB,OAAOtzB,GAAImhC,EAAW,IACvDnmB,KAAKjL,QAAQ3N,eAAiBw/C,GAC9B5mC,KAAKjL,QAAQmO,cAKzBs/B,EAAen5B,UAAUgiB,YAAc,SAAU3hC,GAC7C,GAAgE,KAA5DsW,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAiBwX,KAAK/Y,OAAOwB,WAG9E,CAED,IAAI7D,EAAOob,KAAKjL,QAAQ8vC,cAEpB1e,KACJ,GAAInmB,KAAK/Y,OAAO1B,MACZ4gC,EAAa,IAAIt3B,cAAYjK,GACzBkK,cAAa,IAAIL,SAAQU,MAAM,KAAM,QAAS6Q,KAAK/Y,OAAO0f,WAAW,QAExE,CAED,IAAIggC,EAAQ,IAAI93C,cAAYjK,GACxBkK,cAAa,IAAIL,SAAQU,MAAM6Q,KAAKjL,QAAQujB,OAAOxzB,KAAM,QAASkb,KAAK/Y,OAAOwQ,iBAAiB,IAC/FkvC,EAAM9gD,OAAS,IACfsgC,EAAa,IAAIt3B,cAAY83C,GACzB73C,cAAa,IAAIL,SAAQU,MAAM,aAAc,QAAS6Q,KAAK/Y,OAAO0Q,YAAY,KAGtFwuB,EAAWtgC,OAAS,IACpBma,KAAKgjC,aAAej+C,WAASib,KAAKjL,QAAQujB,OAAOorB,SAAUvd,EAAW,IACtEnmB,KAAK/Y,OAAO2N,WAAaoL,KAAKgjC,aAC9BhjC,KAAK/Y,OAAO4C,SAAWmW,KAAK6kC,YAAY7kC,KAAKgjC,cAC7Cj4C,GAAKiV,KAAK/Y,OAAQiW,GAAwB8C,KAAK/Y,OAAO0Q,WAAWjK,QAAQ,MAAO,YAxBpFsS,KAAK6lC,WAAWn8C,IA4BxB84C,EAAen5B,UAAUiW,kBAAoB,SAAUlhB,GACnD,GAAIA,EAAEzM,SAAWqO,KAAKqb,iBAAgC,WAAbjd,EAAEzM,OAI3C,IAAK,IAAImvB,EAAK,EAAGC,EAAK/f,OAAOD,KAAK3C,EAAE4iB,SAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,mBACD9gB,KAAK4kC,cACL,MACJ,IAAK,yBACD75C,GAAKiV,KAAK/Y,OAAQoL,GAAoB,KAClC+L,EAAEogC,QAAQjH,uBAAuB/oC,YAAc4P,EAAE4iB,QAAQuW,uBAAuB/oC,YAChFwR,KAAKjL,QAAQvG,UAAY4P,EAAE4iB,QAAQuW,uBAAuB/oC,cAO9Eg0C,EAAen5B,UAAUw9B,eAAiB,WACtC7mC,KAAKjI,cAETyqC,EAAen5B,UAAU44B,mBAAqB,SAAU7jC,GACpD4B,KAAKjL,QAAQ3N,eAAiBgX,EAAElM,eAEpCswC,EAAen5B,UAAUy9B,gBAAkB,SAAU1oC,GACjD4B,KAAKimC,iBAAiB7nC,EAAElM,eAE5BswC,EAAen5B,UAAU09B,UAAY,SAAUr9C,GAC3C,IAAIg5C,KAEAA,EADA1iC,KAAK/Y,OAAOoN,cAAgB2L,KAAK/Y,OAAOsN,aAC5ByL,KAAKgnC,aAAat9C,EAAKc,MAAOwV,KAAK/Y,OAAOsN,aAAcyL,KAAK/Y,OAAOgM,UAGpE+M,KAAK0iC,UAErB1iC,KAAKjL,QAAQ0tC,YAAYC,IAG7BF,EAAen5B,UAAU29B,aAAe,SAAUx8C,EAAOob,EAAMvgB,GAE3D,IAAK,IADDq9C,KACK98C,EAAI,EAAGA,EAAI4E,EAAM3E,OAAQD,IAC9B,IAAK4E,EAAM5E,GAAG8R,SACLsI,KAAK/Y,OAAO1B,MAAO,CACpB,IAAIqhC,EAAUp8B,EAAM5E,GAAe,aACnC,GAAIggB,EAAM,CAEN,IAAIrF,GADJlb,GAAcmF,EAAM5E,GAAGqhD,cACNn1C,YAAY,KAC7B80B,EAASvhC,EAAKwM,UAAU0O,EAAQ,GAChClb,EAAOA,EAAKwM,UAAU,EAAG0O,EAAQ,GAKrC,IAAK,IAFD4lB,EAAa,IAAIt3B,cAAYmR,KAAKjL,QAAQ8vC,eAC1C/1C,cAAa,IAAIL,SAAQU,MAAM6Q,KAAKjL,QAAQujB,OAAOxzB,KAAM,QAAS8hC,GAAQ,IACrEX,EAAI,EAAGA,EAAIE,EAAWtgC,OAAQogC,IAAK,CACxC,IAAIz4B,EAAQzI,WAAS,aAAcohC,EAAWF,IAE9C,IADAz4B,EAAQA,EAAME,QAAQ,MAAO,QACfrI,EAAM,CAChBq9C,EAAU58C,KAAKf,WAASib,KAAKjL,QAAQujB,OAAOtzB,GAAImhC,EAAWF,KAC3D,QAMpB,OAAOyc,GAEXF,EAAen5B,UAAU69B,SAAW,SAAUx9C,GAC1C,IAAIg5C,KACA1iC,KAAK/Y,OAAOoN,cAAgB2L,KAAK/Y,OAAOU,YACxCqY,KAAK0iC,UAAY1iC,KAAKgnC,aAAat9C,EAAKc,MAAOwV,KAAK/Y,OAAOU,YAAaqY,KAAK/Y,OAAOe,YAGpF06C,EAAY1iC,KAAK0iC,UAErB1iC,KAAKjL,QAAQ0tC,YAAYC,IAI7BF,EAAen5B,UAAUm8B,iBAAmB,SAAU2B,GAClD,GAAKnnC,KAAK/Y,OAAO1B,MAkBbya,KAAKjL,QAAQ3N,eAAiBrC,WAAS,SAAUoiD,IACjDnnC,KAAKjL,QAAQmO,eAnBO,CACpB,IAAI7d,EAAON,WAAS,aAAcoiD,GAC9BC,EAAWriD,WAAS,OAAQoiD,GAE5BviD,EAAO,IAAIiK,cAAYmR,KAAKjL,QAAQ8vC,eACpC/1C,cAAa,IAAIL,SAAQU,MAAM6Q,KAAKjL,QAAQujB,OAAOxzB,KAAM,QAASsiD,GAAU,IAChF,GAAIxiD,EAAKiB,OAAS,EAAG,CAEjB,IAAIsgC,EAAa,IAAIt3B,cAAYjK,GAC7BkK,cAAa,IAAIL,SAAQU,MAAM,aAAc,QAAS9J,GAAM,IAChE,GAAI8gC,EAAWtgC,OAAS,EAAG,CACvB,IAAIb,EAAKD,WAASib,KAAKjL,QAAQujB,OAAOtzB,GAAImhC,EAAW,IACrDnmB,KAAKjL,QAAQ3N,eAAiBpC,GAC9Bgb,KAAKjL,QAAQmO,eAS7Bs/B,EAAen5B,UAAUoX,WAAa,SAAU/2B,GAC5CsW,KAAKogB,WAAW12B,GAChBsW,KAAKwlC,iBAAiBxlC,KAAK/Y,OAAO0N,UAClCqL,KAAK/Y,OAAOqN,WAAa0L,KAAK/Y,OAAOoN,cAEzCmuC,EAAen5B,UAAU+W,WAAa,SAAU12B,GAE5C,IAAIy8B,KACJ,GAAInmB,KAAK/Y,OAAO1B,MACZ4gC,EAAa,IAAIt3B,cAAYmR,KAAKjL,QAAQ8vC,eACtC/1C,cAAa,IAAIL,SAAQU,MAAM,KAAM,QAASpK,WAAS,KAAM2E,EAAKgK,MAAM,QAE3E,CAED,IAAIizC,EAAQ,IAAI93C,cAAYmR,KAAKjL,QAAQ8vC,eACrC/1C,cAAa,IAAIL,SAAQU,MAAM6Q,KAAKjL,QAAQujB,OAAOxzB,KAAM,QAASC,WAAS,OAAQ2E,EAAKgK,MAAM,IAC9FizC,EAAM9gD,OAAS,IACfsgC,EAAa,IAAIt3B,cAAY83C,GACzB73C,cAAa,IAAIL,SAAQU,MAAM,aAAc,QAASpK,WAAS,aAAc2E,EAAKgK,MAAM,KAGpG,GAAIyyB,EAAWtgC,OAAS,EAAG,CACvB,IAAIb,EAAKD,WAASib,KAAKjL,QAAQujB,OAAOtzB,GAAImhC,EAAW,IACjD4f,GAAuD,IAA5C/lC,KAAKjL,QAAQixC,cAAct5C,QAAQ1H,GAClDgb,KAAKimC,iBAAiBjhD,GACtBgb,KAAKilC,SAASv7C,EAAKc,MAAOxF,EAAI+gD,GAElC/lC,KAAK/Y,OAAO2N,WAAa,KACzBoL,KAAK2d,cAAcj0B,GACfsW,KAAK/Y,OAAOsL,YACZyN,KAAKqnC,cAAc39C,IAI3B84C,EAAen5B,UAAUg+B,cAAgB,SAAU39C,GAC/C,GAAIsW,KAAK/Y,OAAO1B,MAGZ,OAFAya,KAAK/Y,OAAOqN,WAAa0L,KAAK/Y,OAAOoN,kBACrCK,EAAasL,KAAK/Y,SAGsD,IAAvE+Y,KAAK/Y,OAAO+L,SAAStG,QAAQ+G,EAAiBuM,KAAK/Y,OAAQyC,KAC5DsW,KAAK/Y,OAAOqN,WAAY,EACxBI,EAAasL,KAAK/Y,SAGlB+Y,KAAK/Y,OAAOqN,WAAa0L,KAAK/Y,OAAOoN,cAG7CmuC,EAAen5B,UAAU8W,YAAc,WAC/BngB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,iBAClCrb,KAAKsmC,iBAETtmC,KAAK0iC,aAGL,IAAK,IADD4E,EAAMtnC,KAAK/Y,OAAOsL,WAAayN,KAAK/Y,OAAOkO,SAAW6K,KAAK/Y,OAAOI,cAC7DzB,EAAI,EAAGA,EAAI0hD,EAAIzhD,OAAQD,KACO,IAA/Bb,WAAS,SAAUuiD,EAAI1hD,KACvBoa,KAAK0iC,UAAU58C,KAAKf,WAAS,SAAUuiD,EAAI1hD,MAIvD48C,EAAen5B,UAAUgX,cAAgB,WACjCrgB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBAClCrb,KAAK/Y,OAAOoB,cAAgB2X,KAAK6kC,YAAY7kC,KAAKjL,QAAQ3N,cAAc,IACxE4Y,KAAK/Y,OAAOW,gBAAkBoY,KAAKitB,cAG3CuV,EAAen5B,UAAUkL,iBAAmB,WACxCvU,KAAK/Y,OAAO25B,GAAGvB,GAAqBrf,KAAKsf,kBAAmBtf,MAC5DA,KAAK/Y,OAAO25B,GAAG4O,GAAqBxvB,KAAK6mC,eAAgB7mC,MACzDA,KAAK/Y,OAAO25B,GAAGxuB,GAAmB4N,KAAKk+B,aAAcl+B,MACrDA,KAAK/Y,OAAO25B,GAAGvuB,GAAoB2N,KAAKid,cAAejd,MACvDA,KAAK/Y,OAAO25B,GAAGzB,GAAoBnf,KAAK2d,cAAe3d,MACvDA,KAAK/Y,OAAO25B,GAAGnsB,GAAiBuL,KAAKogB,WAAYpgB,MACjDA,KAAK/Y,OAAO25B,GAAG7sB,GAAeiM,KAAKknC,SAAUlnC,MAC7CA,KAAK/Y,OAAO25B,GAAGluB,GAAkBsN,KAAKmgB,YAAangB,MACnDA,KAAK/Y,OAAO25B,GAAG6kB,GAAmBzlC,KAAK0lC,eAAgB1lC,MACvDA,KAAK/Y,OAAO25B,GAAG5jB,GAAkBgD,KAAKkd,YAAald,MACnDA,KAAK/Y,OAAO25B,GAAG1B,GAAqBlf,KAAKod,eAAgBpd,MACzDA,KAAK/Y,OAAO25B,GAAG3gB,GAAmBD,KAAKsd,aAActd,MACrDA,KAAK/Y,OAAO25B,GAAGtjB,GAAkB0C,KAAKud,YAAavd,MACnDA,KAAK/Y,OAAO25B,GAAGh1B,GAAmBoU,KAAKwd,aAAcxd,MACrDA,KAAK/Y,OAAO25B,GAAGiK,GAA4B7qB,KAAKiiC,mBAAoBjiC,MACpEA,KAAK/Y,OAAO25B,GAAGxB,GAAiBpf,KAAK8d,WAAY9d,MACjDA,KAAK/Y,OAAO25B,GAAG50B,GAAgBgU,KAAKmmC,UAAWnmC,MAC/CA,KAAK/Y,OAAO25B,GAAG4K,GAAgBxrB,KAAKmR,QAASnR,MAC7CA,KAAK/Y,OAAO25B,GAAGlB,GAAmB1f,KAAKyd,aAAczd,MACrDA,KAAK/Y,OAAO25B,GAAGzjB,GAAkB6C,KAAKqrB,YAAarrB,MACnDA,KAAK/Y,OAAO25B,GAAG1jB,GAAwB8C,KAAK0mC,kBAAmB1mC,MAC/DA,KAAK/Y,OAAO25B,GAAG3uB,GAAsB+N,KAAK8mC,gBAAiB9mC,MAC3DA,KAAK/Y,OAAO25B,GAAG/4B,GAAoBmY,KAAKqgB,cAAergB,MACvDA,KAAK/Y,OAAO25B,GAAGpqB,GAAiBwJ,KAAKob,WAAYpb,MACjDA,KAAK/Y,OAAO25B,GAAGf,GAAqB7f,KAAK8f,eAAgB9f,MACzDA,KAAK/Y,OAAO25B,GAAG9sB,GAAgBkM,KAAK+mC,UAAW/mC,MAC/CA,KAAK/Y,OAAO25B,GAAGrpB,GAAiByI,KAAKunC,WAAYvnC,MACjDA,KAAK/Y,OAAO25B,GAAG3rB,GAAiB+K,KAAKygB,WAAYzgB,MACjDA,KAAK/Y,OAAO25B,GAAGN,GAAoBtgB,KAAKugB,cAAevgB,MACvDA,KAAK/Y,OAAO25B,GAAG/rB,GAAiBmL,KAAKulC,WAAYvlC,OAErDwiC,EAAen5B,UAAUsO,oBAAsB,WAC3C3X,KAAK/Y,OAAOg4B,IAAI7sB,GAAmB4N,KAAKk+B,cACxCl+B,KAAK/Y,OAAOg4B,IAAIuQ,GAAqBxvB,KAAK6mC,gBAC1C7mC,KAAK/Y,OAAOg4B,IAAI5sB,GAAoB2N,KAAKid,eACzCjd,KAAK/Y,OAAOg4B,IAAIC,GAAqBlf,KAAKod,gBAC1Cpd,KAAK/Y,OAAOg4B,IAAII,GAAqBrf,KAAKsf,mBAC1Ctf,KAAK/Y,OAAOg4B,IAAIE,GAAoBnf,KAAK2d,eACzC3d,KAAK/Y,OAAOg4B,IAAIxqB,GAAiBuL,KAAKogB,YACtCpgB,KAAK/Y,OAAOg4B,IAAIlrB,GAAeiM,KAAKknC,UACpClnC,KAAK/Y,OAAOg4B,IAAIvsB,GAAkBsN,KAAKmgB,aACvCngB,KAAK/Y,OAAOg4B,IAAI4L,GAA4B7qB,KAAKiiC,oBACjDjiC,KAAK/Y,OAAOg4B,IAAIwmB,GAAmBzlC,KAAK0lC,gBACxC1lC,KAAK/Y,OAAOg4B,IAAIjiB,GAAkBgD,KAAKkd,aACvCld,KAAK/Y,OAAOg4B,IAAIrzB,GAAmBoU,KAAKwd,cACxCxd,KAAK/Y,OAAOg4B,IAAIG,GAAiBpf,KAAK8d,YACtC9d,KAAK/Y,OAAOg4B,IAAIjzB,GAAgBgU,KAAKmmC,WACrCnmC,KAAK/Y,OAAOg4B,IAAIuM,GAAgBxrB,KAAKmR,SACrCnR,KAAK/Y,OAAOg4B,IAAIS,GAAmB1f,KAAKyd,cACxCzd,KAAK/Y,OAAOg4B,IAAI9hB,GAAkB6C,KAAKqrB,aACvCrrB,KAAK/Y,OAAOg4B,IAAI/hB,GAAwB8C,KAAK0mC,mBAC7C1mC,KAAK/Y,OAAOg4B,IAAIhtB,GAAsB+N,KAAK8mC,iBAC3C9mC,KAAK/Y,OAAOg4B,IAAIhf,GAAmBD,KAAKsd,cACxCtd,KAAK/Y,OAAOg4B,IAAI3hB,GAAkB0C,KAAKud,aACvCvd,KAAK/Y,OAAOg4B,IAAIp3B,GAAoBmY,KAAKqgB,eACzCrgB,KAAK/Y,OAAOg4B,IAAIzoB,GAAiBwJ,KAAKob,YACtCpb,KAAK/Y,OAAOg4B,IAAInrB,GAAgBkM,KAAK+mC,WACrC/mC,KAAK/Y,OAAOg4B,IAAI1nB,GAAiByI,KAAKunC,YACtCvnC,KAAK/Y,OAAOg4B,IAAIhqB,GAAiB+K,KAAKygB,YACtCzgB,KAAK/Y,OAAOg4B,IAAIqB,GAAoBtgB,KAAKugB,eACzCvgB,KAAK/Y,OAAOg4B,IAAIY,GAAqB7f,KAAK8f,gBAC1C9f,KAAK/Y,OAAOg4B,IAAIpqB,GAAiBmL,KAAKulC,aAG1C/C,EAAen5B,UAAUkX,cAAgB,WACrC,GAAIvgB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,gBAAiB,CAEnD,IAAImsB,EAAUxnC,KAAK6kC,YAAY7kC,KAAKjL,QAAQ3N,cAAc,IAC1D4Y,KAAK/Y,OAAO4C,SAAW29C,IAI/BhF,EAAen5B,UAAUyW,eAAiB,SAAUp2B,GAChD,GAAIsW,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,gBAAiB,CACnD,IAAIqQ,EAAQtiC,UAAQM,EAAK6M,OAAQ,MACjCyJ,KAAK/Y,OAAO4C,SAAWmW,KAAK6kC,YAAYnZ,EAAMzmC,aAAa,eAInEu9C,EAAen5B,UAAUk+B,WAAa,SAAU79C,GAC5C,IAAI8L,EAAMpM,UAAQM,EAAK6M,OAAQ,MAC/B,GAAIf,EAAI3O,UAAUC,SAAS,oBAAqB,CAC5CkZ,KAAK4iC,QAAS,EACd,IAAI6E,EAAQ5Z,SAASr4B,EAAIvQ,aAAa,cAAe,IACrD+a,KAAKjL,QAAQsxC,WAAW7wC,EAAIvQ,aAAa,aAAcwiD,EAAQ,GAC/DznC,KAAK4iC,QAAS,IAGtBJ,EAAen5B,UAAU+R,WAAa,SAAU1xB,GAC5C,GAAIsW,KAAK/Y,OAAOwE,eAAiBuU,KAAKqb,gBAAiB,CACnD,IAAIC,EAASlyB,UAAQM,EAAK6M,OAAQ,MAClCyJ,KAAK/Y,OAAO0N,SAAWqL,KAAK6kC,YAAYvpB,GAAQ,GAChDtb,KAAK/Y,OAAO+L,SAAWgN,KAAK+kC,YAAYzpB,EAAQv2B,WAAS,OAAQib,KAAK/Y,OAAO0N,aASrF6tC,EAAen5B,UAAUgS,cAAgB,WACrC,MAAO,kBAEXmnB,EAAen5B,UAAU8H,QAAU,WAC3BnR,KAAK/Y,OAAO+3B,cAGhBhf,KAAK2X,sBACD3X,KAAKjL,UACLiL,KAAK0X,eACL1X,KAAKjL,QAAQoc,aAGrBqxB,EAAen5B,UAAUwQ,WAAa,WAClC7Z,KAAKkhB,eAAiB,IAAIC,iBAAenhB,KAAKjL,QAAQ9O,SAClDm7B,UAAWphB,KAAK0nC,QAAQ3nC,KAAKC,MAC7BwU,WAAYxU,KAAKwU,WACjB8M,UAAW,aAGnBkhB,EAAen5B,UAAUqO,aAAe,WACpC1X,KAAKkhB,eAAe/P,WAGxBqxB,EAAen5B,UAAUq+B,QAAU,SAAUtpC,GAEzC,OADaA,EAAE1W,QAEX,IAAK,WACDsY,KAAK/Y,OAAOM,OAAO+4B,OACnB9lB,GAAWwF,KAAK/Y,UAAY+Y,KAAK/Y,OAAO5B,KAAM,WAC9C,MACJ,IAAK,MACD2B,EAAagZ,KAAK/Y,QAClB,MACJ,IAAK,MACG+Y,KAAK/Y,OAAOzB,OAAO,KAAOwa,KAAKitB,WAAWhoC,aAAa,cACvD+a,KAAKsmC,iBACAzuC,GAAcmI,KAAK/Y,OAAO4C,SAAS,KAIpCmW,KAAKyiC,eACL7vC,GAAaoN,KAAK/Y,OAAQ,WAJ1B4E,GAAmBmU,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO4C,SAAS,GAAIiO,KAOjE,MACJ,IAAK,QACD5L,EAAU8T,KAAK/Y,QACf,MACJ,IAAK,QACD+Y,KAAK/Y,OAAOuL,WAAa,GACzBF,EAAa0N,KAAK/Y,QAClB,MACJ,IAAK,QACDmF,EAAS4T,KAAK/Y,QACd,MACJ,IAAK,WAED,GADA+Y,KAAKsmC,kBACAtuC,GAAkBgI,KAAK/Y,OAAO4C,SAAS,IAExC,YADAgC,GAAmBmU,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO4C,SAAS,GAAIoO,IAGpB,IAArC+H,KAAK/Y,OAAO0B,cAAc9C,QAC1Bma,KAAKjI,aAET,MACJ,IAAK,KACD,GAAyC,IAArCiI,KAAK/Y,OAAO0B,cAAc9C,OAAc,CAExC,IAAIjB,EAAOob,KAAK6kC,YAAY7kC,KAAKjL,QAAQ3N,cAAc,IAAI,GACtDyQ,GAAcjT,IAIfob,KAAK0d,mBACL9qB,GAAaoN,KAAK/Y,OAAQ,WAJ1B4E,GAAmBmU,KAAK/Y,OAAQrC,EAAMkT,OAW1D0qC,EAAen5B,UAAUw7B,YAAc,SAAUn7C,GAG7C,IAAK,IADD9E,EAAOob,KAAKjL,QAAQ8vC,YAAYn7C,GAC3B9D,EAAI,EAAGA,EAAIhB,EAAKiB,OAAQD,IACzBT,oBAAMJ,WAAS,WAAYH,EAAKgB,MAChCuT,WAAS,YAAY,EAAOvU,EAAKgB,IAGzC,OAAOhB,GAEX49C,EAAen5B,UAAUqU,iBAAmB,WACxC1d,KAAKsmC,iBACLtmC,KAAK/Y,OAAOwQ,gBAAkB1S,WAAS,OAAQib,KAAK/Y,OAAO4C,SAAS,KAExE24C,EAAen5B,UAAUi9B,eAAiB,WAEtC,IAAI1hD,EAAOob,KAAK6kC,YAAY7kC,KAAKjL,QAAQ3N,cAAc,IAAI,GAC3D4Y,KAAK/Y,OAAO4C,UAAYjF,GACxBob,KAAK/Y,OAAOyQ,QAAS,GAEzB8qC,EAAen5B,UAAUk9B,iBAAmB,WACxCvmC,KAAKsmC,iBACL,IAAI9yC,EAAUvL,EAAc+X,KAAK/Y,OAAO5B,MACxC2a,KAAK/Y,OAAO7B,eAAgBC,KAAMmO,IAAW,GAC7CwM,KAAK/Y,OAAOzB,OAAOiX,MACnBuD,KAAK/Y,OAAOjB,UAAUyW,OAG1B+lC,EAAen5B,UAAUtR,WAAa,WAClC,IAAIvE,EAAUvL,EAAc+X,KAAK/Y,OAAO5B,MAEpCgJ,EADS2R,KAAKjL,QAAQ3N,cAAc,KACjB4Y,KAAK/Y,OAAOzB,OAAO,GAAM,GAAKT,WAAS,OAAQib,KAAK/Y,OAAO4C,SAAS,IAC3FqO,GAAS8H,KAAK/Y,OAAQuM,GAAUnF,KAE7Bm0C,KC7zBPmF,GAA6B,WAO7B,SAASA,EAAY1gD,GACjB+Y,KAAKsF,cAAe,EACpBtF,KAAK4nC,aAAc,EACnB5nC,KAAKoU,kBAAmB,EACxBpU,KAAK6nC,iBAAkB,EACvB7nC,KAAKpJ,QAAU,KACfoJ,KAAK+iB,WAAa,KAClB/iB,KAAK8nC,eAAiB,KACtB9nC,KAAK+nC,mBAAoB,EACzB/nC,KAAKgoC,uBACLhoC,KAAK9L,MAAQ,EACb8L,KAAKkU,YAAa,EAClBlU,KAAKioC,UAAW,EAChBjoC,KAAKkoC,aAAc,EACnBloC,KAAK/F,gBAAiB,EACtB+F,KAAKiU,iBAAkB,EAGvBjU,KAAKmoC,cAAe,EACpBC,OAAKrR,OAAOsR,SAAQ1c,cAAa2c,OAAMC,iBACvCvoC,KAAK/Y,OAASA,EACd+Y,KAAK/Z,QAAUS,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKupC,GAAavuB,KAAK/Y,OAAOhB,SAC9E+Z,KAAKuU,mBACLvU,KAAKwU,YACDgC,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,MAAO3W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCC,MAAO7W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCE,MAAO9W,KAAK/Y,OAAO2vB,MAAQ,QAAU,SACrCwsB,WAAY,eACZpsB,SAAU,eACVE,MAAO,SACPH,GAAI,KACJT,MAAO,SACPC,MAAO,SA+uDf,OA3uDAoxB,EAAYt+B,UAAU8N,OAAS,SAAUztB,GAErC,GADA4tB,cAAYtX,KAAK/Y,OAAOhB,SACC,YAArB+Z,KAAK/Y,OAAOgE,KAAoB,CAChCm4B,eAAapjB,KAAK/Y,OAAOhB,SAAUy8B,IAEnC,IAAI53B,EAAQwD,EAAc0R,KAAK/Y,OAAQyC,EAAKc,OAC5CwV,KAAKwoC,iBACL,IAAIC,EAAUzoC,KAAK0oC,aACfC,OAAe,EACf3oC,KAAK/Y,OAAOwK,SACZk3C,KAG8B,SAA1B3oC,KAAK/Y,OAAOuH,YACZm6C,IAAkBC,UAAW5oC,KAAK/Y,OAAOuH,UAAWuD,MAAOiO,KAAK/Y,OAAOyH,UAG/EsR,KAAKrV,QAAU,IAAIy9C,QACfx9C,WAAYE,EACZ+9C,cAAc,EACdC,aAAc9oC,KAAK+oC,YAAYhpC,KAAKC,KAAM,UAC1CgpC,eAAgBhpC,KAAK+oC,YAAYhpC,KAAKC,KAAM,YAC5CipC,YAAajpC,KAAKu8B,WAAWx8B,KAAKC,MAClCkpC,cAAelpC,KAAKmpC,cAAcppC,KAAKC,MACvCopC,cAAeppC,KAAK/Y,OAAOoiD,oBAAoBC,eAC/CC,mBACI5uC,KAAMqF,KAAK/Y,OAAO80B,oBAAsB,WAAa,SACrDytB,aAAc,mBAElB3mC,UAAW7C,KAAK/Y,OAAO4b,UACvB4mC,cAAgBC,SAAU,IAC1Bf,cAAgBgB,aAAa,EAAOlB,QAASE,GAC7CF,QAASA,EACTmB,kBAAmB5pC,KAAK6pC,eAAe9pC,KAAKC,MAC5C8pC,gBAAiB9pC,KAAK+pC,kBAAkBhqC,KAAKC,MAC7C2kC,UAAW3kC,KAAKgqC,YAAYjqC,KAAKC,MACjCiqC,aAAcjqC,KAAKkqC,eAAenqC,KAAKC,MACvCmqC,YAAanqC,KAAKoqC,cAAcrqC,KAAKC,MACrCqqC,eAAgBrqC,KAAKsqC,iBAAiBvqC,KAAKC,MAC3C4C,MAAO,OACP2nC,WAAY,SAAU7gD,GAAQA,EAAKoM,QAAS,GAE5C00C,KAAM,SAAU9gD,GACZsW,KAAKyqC,YAAYt5B,WAErBlgB,OAAQ+O,KAAK/Y,OAAOgK,SAExB+O,KAAKrV,QAAQoY,kBAAmB,EAChC/C,KAAKrV,QAAQqY,SAAS,IAAMhD,KAAK/Y,OAAOhB,QAAQjB,GAAKupC,IACrDvuB,KAAK6Z,aACL7Z,KAAK0Z,eACL1Z,KAAK0qC,UAAYhhD,IAGzBi+C,EAAYt+B,UAAUm/B,eAAiB,WACnC,IAAImC,EAAgB3qC,KAAK/Y,OAAOoiD,oBAAoBZ,QACpDzoC,KAAKkoC,aAAc,EACnB,IAAK,IAAItiD,EAAI,EAAGA,EAAI+kD,EAAc9kD,OAAQD,IACtC,GAA+B,SAA3B+kD,EAAc/kD,GAAGmM,MAEjB,YADAiO,KAAKkoC,aAAe/iD,oBAAMwlD,EAAc/kD,GAAGgd,SAKvD+kC,EAAYt+B,UAAUuhC,YAAc,SAAUnC,EAASoC,GACnD,IAAI7qC,KAAKkoC,aAA8B,SAAd2C,EAGzB,IAAK,IAAIjlD,EAAI,EAAGA,EAAI6iD,EAAQ5iD,OAAQD,IAChC,GAAI6iD,EAAQ7iD,GAAGmM,QAAU84C,EAAW,CAChC,IAAIC,OAAY,EAKZA,EAJ4D,KAA5D9qC,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAiBwX,KAAK/Y,OAAOwB,WAIlEuX,KAAK/Z,QAAQ0iC,aAAe,IAAuB,SAAdkiB,EAAwB,QAAU,QAAW,OAHlF7qC,KAAK/Z,QAAQ0iC,aAAe,IAAO,QAAU,OAK9D8f,EAAQ7iD,GAAGgd,MAAQkoC,IAI/BnD,EAAYt+B,UAAUq/B,WAAa,WAC/B,IAAID,EACJ,GAAIzoC,KAAK/Y,OAAOwK,SACZg3C,IAEQ12C,MAAO,OAAQ2Y,WAAY/Z,EAAcqP,KAAK/Y,OAAQ,QAAS2b,MAAO,OAAQ+H,SAAU,IAAKogC,gBAAiB,OAC9GngC,SAAU,+HAKjB,CACD69B,EAAU1tC,KAAKU,MAAMV,KAAKC,UAAUgF,KAAK/Y,OAAOoiD,oBAAoBZ,UACpEzoC,KAAK4qC,YAAYnC,EAAS,QAC1B,IAAK,IAAI7iD,EAAI,EAAGyN,EAAMo1C,EAAQ5iD,OAAQD,EAAIyN,EAAKzN,IAC3C6iD,EAAQ7iD,GAAG8kB,WAAa/Z,EAAcqP,KAAK/Y,OAAQwhD,EAAQ7iD,GAAG8kB,YAGtE,IAAIsgC,EAAWhrC,KAAK/Y,OAAOwK,UAAYuO,KAAK/Y,OAAOuwC,SAAY,KAAO,KAClE5a,GACA7qB,MAAO,OAAQ6Q,MAAOooC,EAAQrgC,SAAUqgC,EAAQpgC,SAAU,mDAC1Dw+B,eAAe,EAAOP,cAAc,EAAMh+B,kBAAoBC,MAAO,kBACrEmgC,eAAgB,+CAGpB,GADAxC,EAAQyC,QAAQtuB,GACZ5c,KAAK/Y,OAAO80B,oBAAqB,CACjC,IAAIovB,EAAUnrC,KAAK/Y,OAAOuwC,SAAW,KAAO,KACxC4T,GACAzwC,KAAM,WAAYiI,MAAOuoC,EAAQxgC,SAAUwgC,EAAQtgC,kBAAoBC,MAAO,iBAC9Es+B,eAAe,EAAOP,cAAc,GAEpC7oC,KAAK/Y,OAAOwK,SACZg3C,EAAQ3iD,KAAKslD,GAGb3C,EAAQyC,QAAQE,GAGxB,IAASxlD,EAAI,EAAGyN,EAAMo1C,EAAQ5iD,OAAQD,EAAIyN,EAAKzN,IAC3C6iD,EAAQ7iD,GAAGylD,mBAAqBrrC,KAAK/Y,OAAO6b,oBAEhD,OAAO2lC,GAEXd,EAAYt+B,UAAUqQ,aAAe,WACjC,GAAK1Z,KAAKrV,QAAV,CAGA,IAAI8wB,EAAO/0B,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKqR,GAAgB2J,KAAK/Y,OAAOhB,SACzEy1B,EAAMh1B,SAAO,IAAMsZ,KAAK/Y,OAAOhB,QAAQjB,GAAKyK,GAAsBuQ,KAAK/Y,OAAOhB,SAC9EqlD,EAAa5kD,SAAO,IAAMiJ,GAAiBqQ,KAAK/Y,OAAOhB,SACvDuhB,EAAUiU,EAAK/rB,aAAegsB,EAAIhsB,aAAe47C,EAAW57C,aAChEsQ,KAAKrV,QAAQ6c,OAASA,EACtBxH,KAAKrV,QAAQuY,aAEjBykC,EAAYt+B,UAAUkiC,eAAiB,WACnCvrC,KAAKrV,QAAQ89C,QAAUzoC,KAAK0oC,aAC5B1oC,KAAK6nC,iBAAkB,EACvB7nC,KAAKrV,QAAQ6gD,kBAEjB7D,EAAYt+B,UAAU6gC,eAAiB,SAAUxgD,GAC7C,IAAI+hD,EAAK/kD,SAAO,kBAAmBgD,EAAKgiD,KACxC,IAAKD,EAED,IAAK,IADDhD,EAAUzoC,KAAK/Y,OAAOoiD,oBAAoBZ,QACrC7iD,EAAI,EAAGA,EAAI6iD,EAAQ5iD,OAAQD,IAChC,GAAyB,SAArB6iD,EAAQ7iD,GAAGmM,MAAkB,CAC7B05C,EAAK/hD,EAAKgiD,IAAIjhB,SAASzqB,KAAK/Y,OAAO80B,oBAAuBn2B,EAAI,EAAMA,EAAI,GACxE,MAaZ,GATI6lD,GACAA,EAAGj0B,aAAa,QAASzyB,WAAS,OAAQ2E,EAAK9E,OAE/Cob,KAAK/Y,OAAOsC,gBAAkByW,KAAK/Y,OAAOC,OAAoC,SAA3B8Y,KAAK/Y,OAAOkF,YAC/D6T,KAAK/Y,OAAOG,eAAsD,IAArC4Y,KAAK/Y,OAAOG,cAAcvB,SACiB,IAApEma,KAAK/Y,OAAOG,cAAcsF,QAAQ3H,WAAS,OAAQ2E,EAAK9E,QACxDuD,EAAQuB,EAAKgiD,MAGhB1rC,KAAK/Y,OAAOqZ,mBAAqBvb,WAAS,SAAU2E,EAAK9E,MAAO,CACjE,IAAIi3B,EAAUnyB,EAAKgiD,IAAI97C,cAAc,cACrC,GAAIisB,EAAS,CACT,IAAIgB,EAAS93B,WAAS,OAAQ2E,EAAK9E,MAC/B+V,EAAO5V,WAAS,OAAQ2E,EAAK9E,MACjCi3B,EAAQnrB,UAAYmsB,EAAOtb,OAAO,EAAGsb,EAAOh3B,OAAS8U,EAAK9U,SAGlE,QAAoCub,IAAhCrc,WAAS,OAAQ2E,EAAK9E,OAAuB8E,EAAKgiD,IAAI97C,cAAc,cAAe,CACnF,IAAI+7C,EAAUjiD,EAAKgiD,IAAI97C,cAAc,cACjCg8C,OAAe,EACnB,GAAK7mD,WAAS,SAAU2E,EAAK9E,MAGxB,CACD,IAAIinD,EAAY9mD,WAAS,OAAQ2E,EAAK9E,MAGtCgnD,GAFIptC,EAAO,IAAIiC,uBAAqBT,KAAK/Y,OAAOgK,SAC/B66C,aAAcD,EAAY,MAASjrC,OAAQ,MACrC,IAAMjQ,EAAcqP,KAAK/Y,OAAQ,WANxD2kD,EAAe,GAQnBD,EAAQj7C,UAAYk7C,EAExB,GAAI5rC,KAAK/Y,OAAOwK,eACgC2P,IAAxCrc,WAAS,eAAgB2E,EAAK9E,OAAuB8E,EAAKgiD,IAAI97C,cAAc,cAAe,CAMtF,IALDm8C,EAAUriD,EAAKgiD,IAAI97C,cAAc,cACjC4O,EAAO,IAAIiC,uBAAqBT,KAAK/Y,OAAOgK,QAG5C2P,GAFA6nC,EAAUzoC,KAAK/Y,OAAOoiD,oBAAoBZ,aAEjC,GACb,IAAS7iD,EAAI,EAAGA,EAAI6iD,EAAQ5iD,OAAQD,IAChC,GAAyB,iBAArB6iD,EAAQ7iD,GAAGmM,MAA0B,CACrC6O,EAAS6nC,EAAQ7iD,GAAGgb,OACpB,MAGR,IAAIrC,EAAkBC,EAAKkC,WAAW,IAAI5S,KAAK/I,WAAS,eAAgB2E,EAAK9E,OAAQgc,GACrFmrC,EAAQr7C,UAAY6N,EAG5B,IAAIytC,EAAYtiD,EAAKgiD,IAAI97C,cAAc,IAAMi2B,IACzCmmB,GACAA,EAAUnlD,UAAUgC,IAAI,WAEvBgP,GAAcnO,EAAK9E,QACpB8E,EAAKgiD,IAAI17C,WAAa,IAAMuI,GAAe7O,EAAK9E,OAEpD,IAAI+I,GACA1H,QAASyD,EAAKgiD,IACd99C,YAAalE,EAAK9E,KAClB+M,OAAQ,eAEZqO,KAAK/Y,OAAOgH,QAAQ,WAAYN,IAEpCg6C,EAAYt+B,UAAU+gC,cAAgB,SAAU1gD,GAC5C,GAAyB,YAArBA,EAAKuiD,YAA2B,CAGhC,GAFAjsC,KAAK/Y,OAAO7B,eAAgBoJ,UAAW9E,EAAKk/C,YAAa,GACzD5oC,KAAK/Y,OAAO7B,eAAgBsJ,OAAQhF,EAAKwiD,aAAc,GACd,IAArClsC,KAAK/Y,OAAO0B,cAAc9C,OAAc,CACxCma,KAAKmsC,UAAW,EAChB,IAAIC,EAAOpsC,KAAKrV,QAAQ0hD,wBACpBh5C,EAAM+4C,EAAKvmD,OAEf,IADAma,KAAKssC,qBACEj5C,EAAM,GAAG,CAEZ,IAAIzO,EAAOob,KAAKrV,QAAQ4hD,gBAAgBH,EAAK/4C,EAAM,IAAIzO,KACvDob,KAAKssC,kBAAkBxmD,KAAKf,WAASib,KAAK/Y,OAAO1B,MAAQ,KAAO,OAAQX,IACxEyO,KAGR2M,KAAK/Y,OAAOM,OAAOqK,SAG3B+1C,EAAYt+B,UAAUihC,iBAAmB,SAAU5gD,GAC/C,IAAIsiD,EAAYtiD,EAAK/E,KAAKiL,cAAc,IAAMi2B,IAC1CmmB,GACAA,EAAUnlD,UAAUgC,IAAI,YAGhC8+C,EAAYt+B,UAAU0gC,kBAAoB,SAAUrgD,GAChD4tB,cAAYtX,KAAK/Y,OAAOhB,SAExB,IAAI6E,EAAQwD,EAAc0R,KAAK/Y,OAAQ+Y,KAAKrV,QAAQC,YACpDlB,EAAKmK,OAAS/I,GAGlB68C,EAAYt+B,UAAU2gC,YAAc,WA8ChC,GA7CAhqC,KAAKmZ,gBACoC,IAArCnZ,KAAK/Y,OAAO0B,cAAc9C,QAC1Bma,KAAKwsC,cAAcxsC,KAAK/Y,OAAO0B,gBAEL,IAA1BqX,KAAKoU,mBACApU,KAAK6nC,gBAKN7nC,KAAK6nC,iBAAkB,GAJvB7nC,KAAKwsC,cAAcxsC,KAAK/Y,OAAOgN,YAC/B+L,KAAKoU,kBAAmB,IAM5BpU,KAAK/Y,OAAO8V,cACZiD,KAAKwsC,eAAeznD,WAASib,KAAK/Y,OAAO1B,MAAQ,KAAO,OAAQya,KAAK/Y,OAAO8V,eAC5EiD,KAAK/Y,OAAO8V,YAAc,MAE1BiD,KAAK/Y,OAAOiE,oBAAoBrF,QAChCma,KAAKwsC,cAAcxsC,KAAK/Y,OAAOiE,qBAE/B8U,KAAK/Y,OAAOgW,cACZ+C,KAAK6d,aAAa7d,KAAK/Y,OAAOgW,aAC9B+C,KAAK/Y,OAAOgW,YAAc,OAER,IAAlB+C,KAAKmsC,WACLnsC,KAAKwsC,cAAcxsC,KAAKssC,mBACxBtsC,KAAKmsC,UAAW,GAEhBnsC,KAAK+nC,oBACA/nC,KAAK6nC,gBAKN7nC,KAAK6nC,iBAAkB,GAJvB7nC,KAAKwsC,cAAcxsC,KAAKgoC,qBACxBhoC,KAAK+nC,mBAAoB,KAMJ,IAAzB/nC,KAAKiU,kBACLjU,KAAK9L,QACL8L,KAAKwsC,cAAcxsC,KAAK/Y,OAAO6R,YAC3BkH,KAAK9L,QAAU8L,KAAK/Y,OAAO6R,WAAWjT,SACtCma,KAAKiU,iBAAkB,EACvBjU,KAAK/Y,OAAO6R,gBAGhBkH,KAAKrV,QAAQ8hD,gBAAgB5mD,OAASma,KAAKrV,QAAQ+hD,eAAiB1sC,KAAKrV,QAAQ6c,OAAQ,EACrFmlC,EAAU3sC,KAAKrV,QAAQiiD,oBACnB/7C,MAAMyX,aAAe,GAC7BqkC,EAAQ97C,MAAMg8C,YAAc,GACZnmD,SAAO,mBAAoBimD,GACjC97C,MAAMi8C,iBAAmB,KAC/BC,EAAU/sC,KAAKrV,QAAQqiD,aAAap9C,cAAc,eAC9CiB,MAAMo8C,UAAY,GAC1BF,EAAQlmD,UAAUgC,IAAI,oBAErB,CACD,IAAI8jD,EAAU3sC,KAAKrV,QAAQiiD,mBACtB5sC,KAAK/Y,OAAO4b,UAIb8pC,EAAQ97C,MAAMg8C,YAAc,OAH5BF,EAAQ97C,MAAMyX,aAAe,OAKjC,IAAIykC,GAAAA,EAAU/sC,KAAKrV,QAAQqiD,aAAap9C,cAAc,eAC9C/I,UAAUqC,OAAO,gBAE7B8W,KAAKkU,YAAa,EAClBlU,KAAK/Y,OAAOsC,gBAAiB,EAC7BuwB,cAAY9Z,KAAK/Y,OAAOhB,SACxB+Z,KAAKktC,cAAcltC,KAAK0qC,WACxB1qC,KAAKsF,eAAetF,KAAKioC,UAAkBjoC,KAAKsF,aAChDtF,KAAKioC,UAAW,GAEpBN,EAAYt+B,UAAUmjC,cAAgB,SAAU5jD,GAI5C,IAAK,IAFDukD,EAAcntC,KAAKrV,QAAQyiD,wBAC3BC,KACKznD,EAAI,EAAGyN,EAAM85C,EAAYtnD,OAAQD,EAAIyN,EAAKzN,IAAK,CACpD,IAAIjB,EAAOqb,KAAK/Y,OAAO1B,MAAQR,WAAS,KAAMooD,EAAYvnD,IAAMwI,EAAQ4R,KAAK/Y,OAAQkmD,EAAYvnD,KACpE,IAAzBgD,EAAM8D,QAAQ/H,IACd0oD,EAASvnD,KAAKF,GAGE,IAApBynD,EAASxnD,SACTma,KAAKrV,QAAQijC,WAAWyf,GACxBrtC,KAAKkjB,SAASljB,KAAKrV,QAAQ2iD,oBAInC3F,EAAYt+B,UAAUwU,aAAe,SAAUj5B,GAE3C,IAAIkG,EAAQkV,KAAKrV,QAAQyiD,wBAErBG,KACJ,GAAIvtC,KAAK/Y,OAAO1B,MACZgoD,EAAQ,IAAI1+C,cAAY/D,GACpBgE,cAAa,IAAIL,SAAQU,MAAM,KAAM,QAAS6Q,KAAK/Y,OAAO0f,WAAW,QAExE,CAED,IAAIggC,EAAQ,IAAI93C,cAAY/D,GACxBgE,cAAa,IAAIL,SAAQU,MAAM,OAAQ,QAASpK,WAAS,OAAQH,IAAO,IACxE+hD,EAAM9gD,OAAS,IACf0nD,EAAQ,IAAI1+C,cAAY83C,GACpB73C,cAAa,IAAIL,SAAQU,MAAM,aAAc,QAAS6Q,KAAK/Y,OAAO0Q,YAAY,KAG1F,GAAI41C,EAAM1nD,OAAS,EAAG,CAClB,IAAI0a,EAAQzV,EAAM4B,QAAQ6gD,EAAM,IAChCvtC,KAAKrV,QAAQijC,YAAYrtB,MAGjConC,EAAYt+B,UAAUmkC,aAAe,WACH,SAA1BxtC,KAAK/Y,OAAOuH,UACZwR,KAAKrV,QAAQ8iD,WAAWx6B,WAAWjT,KAAK/Y,OAAOyH,OAAQsR,KAAK/Y,OAAOuH,WAInEwR,KAAKrV,QAAQC,WAAa0D,EAAc0R,KAAK/Y,OAAQ+Y,KAAKrV,QAAQC,aAG1E+8C,EAAYt+B,UAAUiW,kBAAoB,SAAUlhB,GAChD,GAAIA,EAAEzM,SAAWqO,KAAKqb,iBAAgC,WAAbjd,EAAEzM,OAI3C,IAAK,IAAImvB,EAAK,EAAGC,EAAK/f,OAAOD,KAAK3C,EAAE4iB,SAAUF,EAAKC,EAAGl7B,OAAQi7B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,mBACD9gB,KAAKmZ,gBACL,MACJ,IAAK,SACDnZ,KAAK0Z,eACL,MACJ,IAAK,sBACD,IAAKyN,oBAAkBnnB,KAAKrV,SAAU,CAClCqV,KAAKwoC,iBACL,IAAIC,EAAUzoC,KAAK0oC,aACnB1oC,KAAKrV,QAAQ89C,QAAUA,EACvBzoC,KAAKrV,QAAQy+C,cAAgBppC,KAAK/Y,OAAOoiD,oBAAoBC,eAC7DtpC,KAAKrV,QAAQuY,WACblD,KAAKrV,QAAQ6gD,iBAEjB,MACJ,IAAK,gBAED,GADAxrC,KAAK4nC,aAAc,EACsB,IAArC5nC,KAAK/Y,OAAO0B,cAAc9C,OAAc,CACxC,IAAKma,KAAK/Y,OAAO80B,oBAAqB,CAClC,IAAIyc,EAAUx4B,KAAK/Y,OAAO0B,cAAcqwB,MAAMhZ,KAAK/Y,OAAO0B,cAAc9C,OAAS,GACjFma,KAAK/Y,OAAO7B,eAAgBuD,cAAe6vC,IAAW,GAE1Dx4B,KAAKwsC,cAAcxsC,KAAK/Y,OAAO0B,eAC/BqX,KAAK/Y,OAAO7B,eAAgBuD,cAAeqX,KAAK/Y,OAAO0B,gBAAiB,QAElExD,oBAAM6a,KAAKrV,UACjBqV,KAAKrV,QAAQ8zB,iBAEjB,MACJ,IAAK,oBAGL,IAAK,kBACD1zB,GAAKiV,KAAK/Y,OAAQk4B,GAAoBnf,KAAK/Y,OAAO5B,MAClD,MACJ,IAAK,sBACI8hC,oBAAkBnnB,KAAKrV,WACxBqV,KAAKgoC,oBAAsBhoC,KAAK/Y,OAAO0B,cACvCqX,KAAKrV,QAAQ4+C,kBAAkB5uC,KAAOyD,EAAE4iB,QAAQjF,oBAAsB,WAAa,SACnF/b,KAAK+nC,mBAAoB,EACzB/nC,KAAKurC,kBAET,MACJ,IAAK,OACDvgD,EAAagV,KAAK/Y,OAAQ,WAC1B,MACJ,IAAK,QACD+Y,KAAK0tC,qBAIrB/F,EAAYt+B,UAAUsU,cAAgB,SAAUj0B,GAC5CsW,KAAK/Y,OAAOC,OAAQ,EACmD,KAAnE8Y,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,MAAM2mC,QAAiBnvB,KAAKrV,UAC9EqV,KAAK/Y,OAAO22B,iBACP5d,KAAK/Y,OAAOwB,WAIbuX,KAAK2tC,mBAHL3tC,KAAK4tC,kBAAiB,IAM9BzmD,EAAW6Y,KAAK/Y,QACS,YAArB+Y,KAAK/Y,OAAOgE,OAEZ+U,KAAKsF,cAAe,EACpBgS,cAAYtX,KAAK/Y,OAAOhB,SACxB+Z,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAKrV,QAAQC,WAAa0D,EAAc0R,KAAK/Y,OAAQyC,EAAKc,QAE9DwV,KAAK0qC,UAAYhhD,GAErBi+C,EAAYt+B,UAAUskC,iBAAmB,WACrC,IAAIt6C,EAAM2M,KAAKrV,QAAQ89C,QAAQ5iD,OAC3BgoD,EAAa9yC,KAAKU,MAAMV,KAAKC,UAAUgF,KAAKrV,QAAQ89C,UACxD,GAAIoF,EAAWx6C,EAAM,GAAGtB,OAAuC,eAA9B87C,EAAWx6C,EAAM,GAAGtB,QAA2BiO,KAAK/Y,OAAOwK,SAAU,CAClG,IAAIyhB,GACAnhB,MAAO,aAAc2Y,WAAY/Z,EAAcqP,KAAK/Y,OAAQ,QAAS0jB,SAAU,IAAK/H,MAAO,QAE/F5C,KAAKrV,QAAQ89C,QAAQ3iD,KAAKotB,GAC1BlT,KAAK4qC,YAAY5qC,KAAKrV,QAAQ89C,QAAS,cACvCzoC,KAAK4qC,YAAY5qC,KAAKrV,QAAQ89C,QAAS,QACvCzoC,KAAK6nC,iBAAkB,EACvB7nC,KAAKrV,QAAQ6gD,mBAGrB7D,EAAYt+B,UAAU6jC,cAAgB,SAAUxjD,GAE5C,IAAIoB,EAAQwD,EAAc0R,KAAK/Y,OAAQyC,EAAKc,OAC5C,GAAqB,IAAjBM,EAAMjF,QAAiBV,oBAAM6a,KAAK/Z,QAAQ2J,cAAc,IAAMW,MAG7D,GAAqB,IAAjBzF,EAAMjF,QAAgBma,KAAK/Z,QAAQ2J,cAAc,IAAMC,IAC5D,GAAImQ,KAAK/Z,QAAQ2J,cAAc,IAAMW,IAAeX,cAAc,IAAMC,IAAY,CAChF,IAAIC,EAAWkQ,KAAK/Z,QAAQ2J,cAAc,IAAMW,IAAeX,cAAc,IAAMC,IACnFmQ,KAAK/Z,QAAQ2J,cAAc,IAAMW,IAAe4N,YAAYrO,QAG5DkQ,KAAK/Z,QAAQkY,YAAY6B,KAAK/Z,QAAQ2J,cAAc,IAAMC,UAR9DT,EAAmB4Q,KAAK/Y,OAAQ+Y,KAAK/Z,QAASyD,IAYtDi+C,EAAYt+B,UAAUyU,WAAa,WAC/B,GAAiC,gBAA7B9d,KAAK/Y,OAAOc,aAAgC,CAE5C,IAAInD,EAAOob,KAAKrV,QAAQmjD,qBAAqB,GAC7C9tC,KAAK+tC,YAAYnpD,KAGzB+iD,EAAYt+B,UAAUwgC,eAAiB,SAAUngD,GAC7CsW,KAAKrV,QAAQijC,YAAYlkC,EAAKskD,WAE9B,IAAIppD,EACA8E,EAAKukD,UACLrpD,EAAOmW,KAAKU,MAAMV,KAAKC,UAAUtR,EAAKukD,UACtCjuC,KAAK+tC,YAAYnpD,KAIzB+iD,EAAYt+B,UAAU0kC,YAAc,SAAUnpD,GAC1C,IAAIq1B,EAAQja,KACZ,GAAKrU,GAAc/G,GAAnB,CAIA,IAAI+I,GAAcmI,QAAQ,EAAOlI,YAAahJ,EAAM+M,OAAQ,eAC5DqO,KAAK/Y,OAAOgH,QAAQ,WAAYN,EAAW,SAAU21B,GACjD,IAAKA,EAAaxtB,OAAQ,CACtB,IAAI8wB,EAAS7hC,WAAS,OAAQH,GAC9B,GAAIG,WAAS,SAAUH,GAAO,CAE1B,GADWyH,EAASzH,KACPiI,GAAgB,CACzB,IAAIK,EAASF,EAAYitB,EAAMhzB,OAAQrC,GACvCuiB,GAAkB8S,EAAMhzB,OAAQ2/B,EAAQ15B,QAG3C,CAED,GAAY,KADF+sB,EAAMhzB,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAC1CyxB,EAAMhzB,OAAOwB,WAW5BuJ,EAAiBioB,EAAMhzB,OAAQrC,OAXS,CACxC,IAAII,EAAKD,WAAS,KAAMH,GACxBq1B,EAAMhzB,OAAOsM,QAAU0mB,EAAMhzB,OAAO5B,KACpC,IAAImO,EAAUymB,EAAMhzB,OAAO5B,MAAQF,oBAAMH,GAAM4hC,EAAS5hC,GAAM,IAC9Di1B,EAAMhzB,OAAO7B,eAAgBC,KAAMmO,IAAW,GAC9CymB,EAAMhzB,OAAOjB,UAAUF,KAAK8gC,GAC5B3M,EAAMhzB,OAAOzB,OAAOM,KAAKf,WAAS,SAAUH,IAC5Cq1B,EAAMhzB,OAAO4C,UAAYjF,GACzBmH,EAAWkuB,EAAMhzB,QAKrBgzB,EAAMhzB,OAAOwB,YAAa,EAE9BwxB,EAAMh0B,QAAQ2Z,gBA/BlB/T,GAAmBmU,KAAK/Y,OAAQrC,EAAMkH,KAoC9C67C,EAAYt+B,UAAUgT,eAAiB,SAAU3yB,GACpB,YAArBsW,KAAK/Y,OAAOgE,OACP+U,KAAKrV,QAINqV,KAAKioC,UAAW,EAHhBjoC,KAAKmX,OAAOztB,GAKZsW,KAAK/Y,OAAOwB,aACZuX,KAAK2tC,mBACL3tC,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,IAErDqX,KAAKrV,QAAQC,WAAa0D,EAAc0R,KAAK/Y,OAAQyC,EAAKc,OAC1DwV,KAAK/Y,OAAOM,OAAOqwB,OACnB5X,KAAKrV,QAAQ1E,QAAQY,UAAUqC,OAAOkwB,IACtCpZ,KAAKsF,cAAe,EACpBtF,KAAKrV,QAAQ8zB,iBAC0D,KAAnEze,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,MAAM2mC,QACxDnvB,KAAKkuC,cAAcxkD,GAEvBsW,KAAK0Z,eACD1Z,KAAKrV,QAAQg+C,aAAaF,QAAQ5iD,OAAS,GAAKma,KAAKrV,QAAQg+C,aAAaF,QAAQ,GAAG12C,QAAUiO,KAAK/Y,OAAOyH,QAC7E,SAA1BsR,KAAK/Y,OAAOuH,WACZwR,KAAKrV,QAAQsoB,WAAWjT,KAAK/Y,OAAOyH,OAAQsR,KAAK/Y,OAAOuH,aAMxEm5C,EAAYt+B,UAAU6kC,cAAgB,SAAUxkD,GACnB,YAArBsW,KAAK/Y,OAAOgE,OACZ+U,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAK/Y,OAAOM,OAAOiV,OACdwD,KAAK/Y,OAAOsC,iBACbyW,KAAK/Y,OAAOiE,wBAEhB8U,KAAK2tC,mBACL3tC,KAAK/Y,OAAO22B,cAAgBl0B,EAAKc,MACjCwV,KAAK2d,cAAcj0B,KAG3Bi+C,EAAYt+B,UAAUukC,iBAAmB,SAAUO,GAC/C,IAAI96C,EAAM2M,KAAKrV,QAAQ89C,QAAQ5iD,OAC3BgoD,EAAa9yC,KAAKU,MAAMV,KAAKC,UAAUgF,KAAKrV,QAAQ89C,UACpDoF,EAAWx6C,EAAM,GAAGtB,OAAwC,eAA9B87C,EAAWx6C,EAAM,GAAGtB,QAEC,eAA/CiO,KAAKrV,QAAQg+C,aAAaF,QAAQ,GAAG12C,QACP,SAA1BiO,KAAK/Y,OAAOuH,UACZwR,KAAKrV,QAAQsoB,WAAW,OAAQjT,KAAK/Y,OAAOuH,WAI5CwR,KAAKrV,QAAQC,WAAa0D,EAAc0R,KAAK/Y,OAAQ+Y,KAAKrV,QAAQC,YAEtEoV,KAAK/Y,OAAOM,OAAOqK,QAEvBoO,KAAKrV,QAAQ89C,QAAQhsC,MAChB0xC,IACDnuC,KAAK6nC,iBAAkB,EACvB7nC,KAAKrV,QAAQ6gD,oBAIzB7D,EAAYt+B,UAAU4T,cAAgB,SAAUvzB,GACnB,YAArBsW,KAAK/Y,OAAOgE,OAGX+U,KAAKrV,QAINqV,KAAK2d,cAAcj0B,GAHnBsW,KAAKmX,OAAOztB,KAMpBi+C,EAAYt+B,UAAU6T,YAAc,SAAUxzB,GACjB,YAArBsW,KAAK/Y,OAAOgE,MAGhB+U,KAAK2d,cAAcj0B,IAEvBi+C,EAAYt+B,UAAUoU,aAAe,WACA,gBAA7Bzd,KAAK/Y,OAAOc,cAAuE,IAArCiY,KAAK/Y,OAAO0B,cAAc9C,QACxEma,KAAK0d,oBAGbiqB,EAAYt+B,UAAU+T,eAAiB,WACF,gBAA7Bpd,KAAK/Y,OAAOc,eACZiY,KAAK/Y,OAAO4C,SAAWmW,KAAKrV,QAAQmjD,uBAG5CnG,EAAYt+B,UAAUiU,aAAe,WACA,gBAA7Btd,KAAK/Y,OAAOc,cACZsQ,GAAO2H,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO0B,cAAeqX,KAAK/Y,OAAO5B,KAAM,WAIzEsiD,EAAYt+B,UAAUkU,YAAc,SAAU7zB,GACjB,YAArBsW,KAAK/Y,OAAOgE,OAGhB+U,KAAK2d,cAAcj0B,GACnBsW,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,KAErDg/C,EAAYt+B,UAAUmU,aAAe,SAAU9zB,GAClB,YAArBsW,KAAK/Y,OAAOgE,OAGhB+U,KAAKsF,cAAe,EACpBtF,KAAK4tC,kBAAiB,GACtB5tC,KAAKrV,QAAQC,WAAa0D,EAAc0R,KAAK/Y,OAAQyC,EAAKc,OAC1DwV,KAAK0qC,UAAYhhD,IAErBi+C,EAAYt+B,UAAU2U,aAAe,WACR,YAArBhe,KAAK/Y,OAAOgE,MAAsB+U,KAAKrV,SACvCqV,KAAKrV,QAAQ1E,QAAQY,UAAUgC,IAAIuwB,KAG3CuuB,EAAYt+B,UAAU4U,gBAAkB,WACX,YAArBje,KAAK/Y,OAAOgE,OACZ+U,KAAKsF,cAAe,EAChBtF,KAAK/Y,OAAO80B,oBACZ/b,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB,EAAGruC,KAAKrV,QAAQ2jD,UAAUzoD,QAGzEma,KAAKrV,QAAQ4jD,UAAUvuC,KAAKrV,QAAQ2jD,UAAUzoD,OAAS,GAE3Dma,KAAKsF,cAAe,EACpBtF,KAAK4nC,aAAc,IAG3BD,EAAYt+B,UAAUmV,eAAiB,WACV,YAArBxe,KAAK/Y,OAAOgE,OACZ+U,KAAKwuC,kBACLxuC,KAAK4nC,aAAc,IAI3BD,EAAYt+B,UAAU44B,mBAAqB,WACvC7e,eAAapjB,KAAK/Z,SAAUwoD,IACxBzuC,KAAK/Y,OAAO0B,cAAc9C,OAAS,GACnCyuB,YAAUtU,KAAK/Z,SAAUwoD,KAGjC9G,EAAYt+B,UAAUwV,gBAAkB,WACX,YAArB7e,KAAK/Y,OAAOgE,MAGhB+U,KAAK0Z,gBAETiuB,EAAYt+B,UAAUqV,gBAAkB,WACpC1e,KAAKkU,YAAa,GAEtByzB,EAAYt+B,UAAUsV,eAAiB,WACnC3e,KAAKkU,YAAa,GAEtByzB,EAAYt+B,UAAUyV,sBAAwB,WACjB,YAArB9e,KAAK/Y,OAAOgE,OAGhB+U,KAAK/Y,OAAO4C,SAAWmW,KAAKrV,QAAQmjD,uBAExCnG,EAAYt+B,UAAUkL,iBAAmB,WACrCvU,KAAK/Y,OAAO25B,GAAGvuB,GAAoB2N,KAAKid,cAAejd,MACvDA,KAAK/Y,OAAO25B,GAAG4K,GAAgBxrB,KAAKmR,QAASnR,MAC7CA,KAAK/Y,OAAO25B,GAAGx2B,GAAqB4V,KAAKqc,eAAgBrc,MACzDA,KAAK/Y,OAAO25B,GAAGzB,GAAoBnf,KAAK2d,cAAe3d,MACvDA,KAAK/Y,OAAO25B,GAAG5jB,GAAkBgD,KAAKkd,YAAald,MACnDA,KAAK/Y,OAAO25B,GAAGpqB,GAAiBwJ,KAAKob,WAAYpb,MACjDA,KAAK/Y,OAAO25B,GAAGN,GAAoBtgB,KAAKugB,cAAevgB,MACvDA,KAAK/Y,OAAO25B,GAAGh1B,GAAmBoU,KAAKwd,aAAcxd,MACrDA,KAAK/Y,OAAO25B,GAAGv2B,GAAe2V,KAAKkuC,cAAeluC,MAClDA,KAAK/Y,OAAO25B,GAAGrB,GAAmBvf,KAAKwf,aAAcxf,MACrDA,KAAK/Y,OAAO25B,GAAGjf,GAAsB3B,KAAKyf,gBAAiBzf,MAC3DA,KAAK/Y,OAAO25B,GAAGvB,GAAqBrf,KAAKsf,kBAAmBtf,MAC5DA,KAAK/Y,OAAO25B,GAAG3gB,GAAmBD,KAAKsd,aAActd,MACrDA,KAAK/Y,OAAO25B,GAAGtjB,GAAkB0C,KAAKud,YAAavd,MACnDA,KAAK/Y,OAAO25B,GAAG1B,GAAqBlf,KAAKod,eAAgBpd,MACzDA,KAAK/Y,OAAO25B,GAAGlB,GAAmB1f,KAAKyd,aAAczd,MACrDA,KAAK/Y,OAAO25B,GAAGzjB,GAAkB6C,KAAK2d,cAAe3d,MACrDA,KAAK/Y,OAAO25B,GAAGxB,GAAiBpf,KAAK8d,WAAY9d,MACjDA,KAAK/Y,OAAO25B,GAAGlvB,GAAmBsO,KAAKwtC,aAAcxtC,MACrDA,KAAK/Y,OAAO25B,GAAG50B,GAAgBgU,KAAK2d,cAAe3d,MACnDA,KAAK/Y,OAAO25B,GAAGD,GAAkB3gB,KAAK2d,cAAe3d,MACrDA,KAAK/Y,OAAO25B,GAAGluB,GAAkBsN,KAAK0uC,YAAa1uC,MACnDA,KAAK/Y,OAAO25B,GAAGhJ,GAAmB5X,KAAKge,aAAche,MACrDA,KAAK/Y,OAAO25B,GAAGjB,GAAsB3f,KAAKie,gBAAiBje,MAC3DA,KAAK/Y,OAAO25B,GAAGhB,GAAqB5f,KAAKwe,eAAgBxe,MACzDA,KAAK/Y,OAAO25B,GAAGn3B,GAAmBuW,KAAK+e,aAAc/e,MACrDA,KAAK/Y,OAAO25B,GAAGpkB,GAAyBwD,KAAKiiC,mBAAoBjiC,MACjEA,KAAK/Y,OAAO25B,GAAGvlB,GAAsB2E,KAAK0e,gBAAiB1e,MAC3DA,KAAK/Y,OAAO25B,GAAGllB,GAAqBsE,KAAK2e,eAAgB3e,MACzDA,KAAK/Y,OAAO25B,GAAGnsB,GAAiBuL,KAAKogB,WAAYpgB,MACjDA,KAAK/Y,OAAO25B,GAAG/4B,GAAoBmY,KAAKqgB,cAAergB,MACvDA,KAAK/Y,OAAO25B,GAAGf,GAAqB7f,KAAK8f,eAAgB9f,MACzDA,KAAK/Y,OAAO25B,GAAGX,GAAkBjgB,KAAK2uC,uBAAwB3uC,MAC9DA,KAAK/Y,OAAO25B,GAAGb,GAAuB/f,KAAK0tC,gBAAiB1tC,MAC5DA,KAAK/Y,OAAO25B,GAAGJ,GAAsBxgB,KAAK6e,gBAAiB7e,MAC3DA,KAAK/Y,OAAO25B,GAAG3rB,GAAiB+K,KAAKygB,WAAYzgB,MACjDA,KAAK/Y,OAAO25B,GAAGF,GAA4B1gB,KAAK8e,sBAAuB9e,OAE3E2nC,EAAYt+B,UAAUsO,oBAAsB,WACxC3X,KAAK/Y,OAAOg4B,IAAI5sB,GAAoB2N,KAAKid,eACzCjd,KAAK/Y,OAAOg4B,IAAIuM,GAAgBxrB,KAAKmR,SACrCnR,KAAK/Y,OAAOg4B,IAAI70B,GAAqB4V,KAAKqc,gBAC1Crc,KAAK/Y,OAAOg4B,IAAIE,GAAoBnf,KAAK2d,eACzC3d,KAAK/Y,OAAOg4B,IAAIvsB,GAAkBsN,KAAK0uC,aACvC1uC,KAAK/Y,OAAOg4B,IAAIjiB,GAAkBgD,KAAKkd,aACvCld,KAAK/Y,OAAOg4B,IAAIrzB,GAAmBoU,KAAKwd,cACxCxd,KAAK/Y,OAAOg4B,IAAI50B,GAAe2V,KAAKkuC,eACpCluC,KAAK/Y,OAAOg4B,IAAIM,GAAmBvf,KAAKwf,cACxCxf,KAAK/Y,OAAOg4B,IAAItd,GAAsB3B,KAAKyf,iBAC3Czf,KAAK/Y,OAAOg4B,IAAII,GAAqBrf,KAAKsf,mBAC1Ctf,KAAK/Y,OAAOg4B,IAAIS,GAAmB1f,KAAKyd,cACxCzd,KAAK/Y,OAAOg4B,IAAI9hB,GAAkB6C,KAAK2d,eACvC3d,KAAK/Y,OAAOg4B,IAAI0B,GAAkB3gB,KAAK2d,eACvC3d,KAAK/Y,OAAOg4B,IAAIG,GAAiBpf,KAAK8d,YACtC9d,KAAK/Y,OAAOg4B,IAAIvtB,GAAmBsO,KAAKwtC,cACxCxtC,KAAK/Y,OAAOg4B,IAAIjzB,GAAgBgU,KAAK2d,eACrC3d,KAAK/Y,OAAOg4B,IAAIrH,GAAmB5X,KAAKge,cACxChe,KAAK/Y,OAAOg4B,IAAIU,GAAsB3f,KAAKie,iBAC3Cje,KAAK/Y,OAAOg4B,IAAIW,GAAqB5f,KAAKwe,gBAC1Cxe,KAAK/Y,OAAOg4B,IAAIhf,GAAmBD,KAAKsd,cACxCtd,KAAK/Y,OAAOg4B,IAAI3hB,GAAkB0C,KAAKud,aACvCvd,KAAK/Y,OAAOg4B,IAAIx1B,GAAmBuW,KAAK+e,cACxC/e,KAAK/Y,OAAOg4B,IAAIziB,GAAyBwD,KAAKiiC,oBAC9CjiC,KAAK/Y,OAAOg4B,IAAI5jB,GAAsB2E,KAAK0e,iBAC3C1e,KAAK/Y,OAAOg4B,IAAIvjB,GAAqBsE,KAAK2e,gBAC1C3e,KAAK/Y,OAAOg4B,IAAIxqB,GAAiBuL,KAAKogB,YACtCpgB,KAAK/Y,OAAOg4B,IAAIp3B,GAAoBmY,KAAKqgB,eACzCrgB,KAAK/Y,OAAOg4B,IAAIzoB,GAAiBwJ,KAAKob,YACtCpb,KAAK/Y,OAAOg4B,IAAIC,GAAqBlf,KAAKod,gBAC1Cpd,KAAK/Y,OAAOg4B,IAAIqB,GAAoBtgB,KAAKugB,eACzCvgB,KAAK/Y,OAAOg4B,IAAIY,GAAqB7f,KAAK8f,gBAC1C9f,KAAK/Y,OAAOg4B,IAAIgB,GAAkBjgB,KAAK2uC,wBACvC3uC,KAAK/Y,OAAOg4B,IAAIc,GAAuB/f,KAAK0tC,iBAC5C1tC,KAAK/Y,OAAOg4B,IAAIuB,GAAsBxgB,KAAK6e,iBAC3C7e,KAAK/Y,OAAOg4B,IAAIhqB,GAAiB+K,KAAKygB,YACtCzgB,KAAK/Y,OAAOg4B,IAAIyB,GAA4B1gB,KAAK8e,wBAErD6oB,EAAYt+B,UAAUoW,gBAAkB,WAAczf,KAAK4nC,aAAc,GAEzED,EAAYt+B,UAAUyW,eAAiB,SAAUp2B,GACzCsW,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBAClCrb,KAAK/Y,OAAO4C,UAAYmW,KAAKrV,QAAQikD,WAAWllD,EAAK6M,QAAQ03C,WAGrEtG,EAAYt+B,UAAUqlC,YAAc,WAC5B1uC,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBAClCrb,KAAK/Y,OAAO4C,SAAuC,KAA3BmW,KAAK/Y,OAAOuL,WAAqBwN,KAAKrV,QAAQmjD,sBACjEhkD,EAAckW,KAAK/Y,WAGhC0gD,EAAYt+B,UAAUkX,cAAgB,WAC9BvgB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBACO,IAArCrb,KAAK/Y,OAAO0B,cAAc9C,OAC1Bma,KAAK/Y,OAAO4C,SAAWmW,KAAKrV,QAAQmjD,qBAGpC9tC,KAAK/Y,OAAO4C,UAAY9E,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOgF,aAI5G07C,EAAYt+B,UAAUmR,WAAa,SAAU9wB,GACzC,IACIuxB,EADavxB,EAAKsxB,OAAOzkB,OACLnN,QAAQ,YAChC,IAAK6xB,EACD,OAAO,KAEX,IAAI5sB,EACA4sB,EAAOiS,uBAAuB,aAAa,GAC3C7+B,EAAO4sB,EAAOiS,uBAAuB,aAAa,GAAGrF,UAEhD5M,EAAOiS,uBAAuB,4BAA4B,GAAGrwB,qBAClExO,EAAO4sB,EAAOiS,uBAAuB,4BAA4B,GAAGrwB,mBAAmBgrB,WAEvF5M,IAAWA,EAAOrrB,cAAc,cAChCoQ,KAAKwsC,eAAen+C,IAExBnG,EAAU8X,KAAK/Y,OAAQg0B,GACvBjb,KAAK/Y,OAAOW,kBACZoY,KAAK/Y,OAAOkO,YAEZ6K,KAAK/Y,OAAOkO,SAAW6K,KAAKrV,QAAQmjD,qBACpC,IAAIe,EAUJ,OAToC,IAAhC7uC,KAAK/Y,OAAOkO,SAAStP,QAAgBo1B,IACrC4zB,EAAU7uC,KAAKrV,QAAQikD,WAAW3zB,IAElC4zB,GACA7uC,KAAK/Y,OAAOkO,SAASrP,KAAK+oD,EAAQZ,SAEtCjuC,KAAK/Y,OAAOgM,SAAW+M,KAAK/Y,OAAO5B,KACnC2a,KAAK/Y,OAAOW,eAAiBoY,KAAKrV,QAAQmkD,kBAC1C55C,EAAyB8K,KAAK/Y,QACvB+Y,KAAK/Y,OAAO0O,oBAGvBgyC,EAAYt+B,UAAUqkC,gBAAkB,WACpC,GAAyB,YAArB1tC,KAAK/Y,OAAOgE,OAAuB+U,KAAK/Y,OAAOwK,WAAatM,oBAAM6a,KAAKrV,SAKvE,IAAK,IAHDokD,EADa/uC,KAAKrV,QAAQiiD,mBAAmBh9C,cAAc,oBAC3Bo/C,WAAW5yB,WAAW,GACtD6yB,EAAsBjvC,KAAKrV,QAAQqiD,aAAap9C,cAAc,uBAAuB66B,SAAS,GAC9FykB,EAAqBlvC,KAAKrV,QAAQ+9C,aAC7B9iD,EAAI,EAAGA,EAAIspD,EAAmBrpD,OAAQD,MACrCoa,KAAKkoC,aAA+C,SAAhCgH,EAAmBtpD,GAAGmM,OAAqD,eAAhCm9C,EAAmBtpD,GAAGmM,SACvB,KAA5DiO,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAiBwX,KAAK/Y,OAAOwB,WAW3EuX,KAAK/Z,QAAQ0iC,aAAe,IACQ,SAAhCumB,EAAmBtpD,GAAGmM,OACtBg9C,EAAmBtkB,SAAS7kC,GAAG4xB,aAAa,QAAS,gBACrDy3B,EAAoBxkB,SAAS7kC,GAAG4xB,aAAa,QAAS,kBAGtDu3B,EAAmBtkB,SAAS7kC,GAAG4xB,aAAa,QAAS,gBACrDy3B,EAAoBxkB,SAAS7kC,GAAG4xB,aAAa,QAAS,iBAGrDxX,KAAK/Z,QAAQ0iC,YAAc,MAChComB,EAAmBtkB,SAAS7kC,GAAG4xB,aAAa,QAAS,eACrDy3B,EAAoBxkB,SAAS7kC,GAAG4xB,aAAa,QAAS,gBAtBtDxX,KAAK/Z,QAAQ0iC,aAAe,KAC5BomB,EAAmBtkB,SAAS7kC,GAAG4xB,aAAa,QAAS,gBACrDy3B,EAAoBxkB,SAAS7kC,GAAG4xB,aAAa,QAAS,iBAEjDxX,KAAK/Z,QAAQ0iC,YAAc,MAChComB,EAAmBtkB,SAAS7kC,GAAG4xB,aAAa,QAAS,eACrDy3B,EAAoBxkB,SAAS7kC,GAAG4xB,aAAa,QAAS,kBAuB9EmwB,EAAYt+B,UAAUslC,uBAAyB,WAC3C3uC,KAAK0tC,kBACoB,YAArB1tC,KAAK/Y,OAAOgE,MAAuB+U,KAAK/Y,OAAOwK,UAAatM,oBAAM6a,KAAKrV,UACvEqV,KAAK0Z,gBAGbiuB,EAAYt+B,UAAU8P,cAAgB,WAClC,IAAIc,EAAQja,MACPA,KAAK/Y,OAAOwK,UAAYuO,KAAKrV,UAC1BqV,KAAK/Y,OAAO4P,kBACRmJ,KAAKpJ,SACLoJ,KAAKpJ,QAAQua,UAEjBnR,KAAKpJ,QAAU,IAAIsjB,YAAUla,KAAKrV,QAAQ1E,SACtCw0B,SAAUza,KAAK/Y,OAAOyzB,mBACtBN,SAAU,EACVD,gBAAgB,EAChBQ,SAAU3a,KAAK/Y,OAAOhB,QACtBq0B,WAAY,IAAMnxB,GAClB0xB,KAAMzjB,EAAgB2I,KAAKC,KAAMA,KAAK/Y,QACtC8zB,UAAW,SAAUrxB,GACjBiN,EAAiBsjB,EAAMhzB,OAAQyC,EAAMuwB,EAAMrjB,UAE/CgkB,SAAUhlB,EAAgBmK,KAAKC,KAAMA,KAAK/Y,QAC1CozB,kBAAkB,EAClBE,OAAQva,KAAKwa,WAAWza,KAAKC,UAG3BA,KAAK/Y,OAAO4P,kBAAoBmJ,KAAKpJ,SAC3CoJ,KAAKpJ,QAAQua,YAIzBw2B,EAAYt+B,UAAU+R,WAAa,SAAU1xB,GACzC,GAAIsW,KAAK/Y,OAAOwE,eAAiBuU,KAAKqb,gBAAiB,CAGnD,IAAIE,EAAUx2B,WAASib,KAAK/Y,OAAOzB,OAAOwa,KAAK/Y,OAAOzB,OAAOK,OAAS,GAAIma,KAAK/Y,OAAOgF,UACtF,GAAKvC,EAAK6M,OAAOnN,QAAQ,MAIpB,CAED,IAAIoyB,EAAO,KAEXA,EAAOxb,KAAKrV,QAAQikD,WAAWllD,EAAK6M,QAAQ03C,QAC5CjuC,KAAK/Y,OAAO+L,SAAWwoB,EAAK9jB,OAASsI,KAAK/Y,OAAO5B,KAAO6I,EAAY8R,KAAK/Y,OAAQu0B,EAAMxb,KAAK/Y,OAAO5B,MACnG2a,KAAK/Y,OAAO0N,SAAW6mB,EAAK9jB,OAAS6jB,EAAUC,OAT/Cxb,KAAK/Y,OAAO+L,SAAWgN,KAAK/Y,OAAO5B,KACnC2a,KAAK/Y,OAAO0N,SAAW4mB,IAYnCosB,EAAYt+B,UAAUgX,cAAgB,WAC9BrgB,KAAK/Y,OAAOc,eAAiBiY,KAAKqb,kBAClCrb,KAAK/Y,OAAOoB,cAAgB2X,KAAKrV,QAAQmjD,qBACzC9tC,KAAK/Y,OAAOW,eAAiBoY,KAAKrV,QAAQmkD,oBAGlDnH,EAAYt+B,UAAU+W,WAAa,SAAU12B,GAChB,YAArBsW,KAAK/Y,OAAOgE,OACZ+U,KAAKoU,kBAAmB,EACpBpU,KAAK/Y,OAAO5B,OAAS2a,KAAK/Y,OAAOoT,iBAAmB2F,KAAK/Y,OAAO5B,OAASoO,EAAiBuM,KAAK/Y,OAAQyC,IACvGsW,KAAK2d,cAAcj0B,KAI/Bi+C,EAAYt+B,UAAUoX,WAAa,SAAU/2B,GAChB,YAArBsW,KAAK/Y,OAAOgE,OACZ+U,KAAKoU,kBAAmB,EACxBpU,KAAK2d,cAAcj0B,KAS3Bi+C,EAAYt+B,UAAUgS,cAAgB,WAClC,MAAO,eAEXssB,EAAYt+B,UAAU8H,QAAU,WACxBnR,KAAK/Y,OAAO+3B,cAGhBhf,KAAK2X,sBACD3X,KAAKrV,UACLqV,KAAK0X,eACL1X,KAAKrV,QAAQwmB,aAGrBw2B,EAAYt+B,UAAUsZ,WAAa,SAAU11B,GACzC,IAAIs2B,EAAS78B,SAAO,IAAM6F,GAAYU,GACtC+S,KAAK/Y,OAAOyQ,SAASvS,oBAAMo+B,IAG/BokB,EAAYt+B,UAAU0/B,YAAc,SAAUrhD,EAAQgC,GAClD,IAAIiE,GACAjG,OAAQA,EAAQkG,YAAalE,EAAK9E,KAAM0gB,aAActF,KAAK4nC,YAAa9xC,QAAQ,EAAOS,OAAQ7M,EAAK6M,QAExGyJ,KAAK/Y,OAAOgH,QAAQ,gBAAiBN,GACrCjE,EAAKoM,OAASnI,EAAUmI,QAG5B6xC,EAAYt+B,UAAUkzB,WAAa,SAAU7yC,GACzCsW,KAAK/Y,OAAOc,aAAe,cACtBiY,KAAK/Y,OAAOsC,iBAAkByW,KAAK/Y,OAAOwB,YAC3CuX,KAAKmvC,kBAETnvC,KAAK/Y,OAAOM,OAAOiV,OACiC,IAAhDwD,KAAKrV,QAAQ0hD,wBAAwBxmD,SACrCma,KAAK8nC,eAAiB9nC,KAAKrV,QAAQ2iD,kBAEvCttC,KAAKrV,QAAQ1E,QAAQuxB,aAAa,WAAY,MAC9CxX,KAAKmjB,cAAc,SAAUz5B,GAC7B,IAAIuD,EAAO+S,KAAKrV,QAAQykD,cAAcpvC,KAAKrV,QAAQ2iD,kBAEnD,GADAttC,KAAK2iB,WAAW11B,IACX9H,oBAAM8H,KAAU9H,oBAAM8H,EAAK2C,cAAc,mBAAoB,CAC9D,GAAoD,IAAhDoQ,KAAKrV,QAAQ0hD,wBAAwBxmD,OAAc,CACnD,IAAIwpD,EAAgBrvC,KAAKrV,QAAQ0hD,wBAAwBrsC,KAAKrV,QAAQ0hD,wBAAwBxmD,OAAS,GACxFma,KAAKrV,QAAQykD,cAAcC,GACjCz/C,cAAc,kBAAkB4nB,aAAa,WAAY,MAEtEvqB,EAAK2C,cAAc,4BAA4B+rB,gBAAgB,YAE9Dx2B,oBAAM6a,KAAKrV,UAAaxF,oBAAM6a,KAAKrV,QAAQ1E,QAAQ2J,cAAc,uBAClEoQ,KAAKrV,QAAQ1E,QAAQ2J,cAAc,qBAAqB4nB,aAAa,WAAY,MAErF,IAAI40B,EAAOpsC,KAAKrV,QAAQ0hD,wBACxB,IAAKrsC,KAAK/Y,OAAO80B,oBACb,IAAK,IAAIn2B,EAAI,EAAGA,EAAIwmD,EAAKvmD,OAAQD,IACzBwmD,EAAKxmD,KAAOoa,KAAKrV,QAAQ2iD,iBACzBttC,KAAKrV,QAAQykD,cAAchD,EAAKxmD,IAAI4xB,aAAa,WAAY,KAG7DxX,KAAKrV,QAAQykD,cAAchD,EAAKxmD,IAAI+1B,gBAAgB,YAIhE,IAAItoB,EAAM+4C,EAAKvmD,OACf,GAAIwN,EAAM,EAAG,CAET,IAAIzO,EAAOob,KAAKrV,QAAQ4hD,gBAAgBH,EAAK/4C,EAAM,IAAIzO,KACvDob,KAAK/Y,OAAOwQ,gBAAkB1S,WAAS,OAAQH,GAEnD,IAAI03B,EAAUv3B,WAAS,aAAc2E,GACjC+4B,EAAc19B,WAAS,yBAA0Bib,KAAKrV,QAAQyjD,iBAQlE,GAPIpuC,KAAK/Y,OAAOk7B,UAAYh9B,oBAAMm3B,IAAY5yB,EAAK6M,SAAWksB,IAAgB/4B,EAAK6M,OAAOnN,QAAQ,mBAC9F4W,KAAK/Y,OAAOyQ,OAAS3S,WAAS,SAAU2E,EAAK9E,MACxCob,KAAK/Y,OAAOyQ,QACbsI,KAAK+tC,YAAYrkD,EAAK9E,OAG9Bob,KAAK/Y,OAAOmwB,YAAc1tB,EAAKgiD,IAC3B1rC,KAAK/Y,OAAO80B,sBAAwB52B,oBAAM8H,KAAU9H,oBAAM8H,EAAK2C,cAAc,mBAAoB,CACjF3C,EAAK2C,cAAc,kBACzBgQ,QAEdI,KAAKkjB,SAASljB,KAAKrV,QAAQ2iD,kBACtBttC,KAAK/Y,OAAOsC,iBACbyW,KAAKsF,cAAe,IAI5BqiC,EAAYt+B,UAAU0V,aAAe,WACR,YAArB/e,KAAK/Y,OAAOgE,MAAuB9F,oBAAM6a,KAAKrV,UACkB,KAA5DqV,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,OAAiBwX,KAAK/Y,OAAOwB,YAC/EuX,KAAK4tC,kBAAiB,IAIlCjG,EAAYt+B,UAAU8lC,gBAAkB,WACpCnvC,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GAIjD,IAFA,IAAIwmD,EAAkBnvC,KAAKsvC,kBACvBC,EAAa,EACVA,EAAaJ,EAAgBtpD,QAAQ,CACxC,IAAI2pD,EAASL,EAAgBI,GACzBE,EAASr6C,EAAY4K,KAAK/Y,OAAQuoD,GACtCxvC,KAAK/Y,OAAO0B,cAAc7C,KAAK2pD,GAC/BF,IAEJvvC,KAAK/Y,OAAO7B,eAAgBuD,cAAeqX,KAAK/Y,OAAO0B,gBAAiB,IAE5Eg/C,EAAYt+B,UAAU8/B,cAAgB,SAAUz/C,GAE5C,IAAKsW,KAAK/Y,OAAO80B,qBAAuB52B,oBAAMuE,EAAK9E,MAC/Cob,KAAKrV,QAAQykD,cAAc1lD,EAAKskD,UAAUryB,gBAAgB,iBAEzD,GAAI3b,KAAKrV,QAAQ0hD,wBAAwBxmD,OAAS,EAAG,CACtD,IAAIwpD,EAAgBrvC,KAAKrV,QAAQ0hD,wBAAwBrsC,KAAKrV,QAAQ0hD,wBAAwBxmD,OAAS,GACvGma,KAAKrV,QAAQykD,cAAcC,GAAez/C,cAAc,kBAAkB+rB,gBAAgB,aAEvD,IAAnC3b,KAAKrV,QAAQ2iD,kBACbttC,KAAKrV,QAAQ1E,QAAQuxB,aAAa,WAAY,KAE7CxX,KAAKsF,cAIVtF,KAAKmvC,kBACoC,IAArCnvC,KAAK/Y,OAAO0B,cAAc9C,SAC1BsT,WAAS,0BAA0B,EAAO6G,KAAKrV,QAAQyjD,iBACvDhrB,eAAapjB,KAAK/Y,OAAOhB,SAAUy8B,KAEvC1iB,KAAK/Y,OAAOM,OAAOiV,OACnBwD,KAAKmjB,cAAc,WAAYz5B,GAC/BsW,KAAK/Y,OAAOmwB,YAAc,MAVtBpX,KAAKsF,cAAe,GAY5BqiC,EAAYt+B,UAAU8Z,cAAgB,SAAUz7B,EAAQgC,GACpD,IAAIiE,GAAcjG,OAAQA,EAAQkG,YAAalE,EAAK9E,KAAM0gB,aAActF,KAAK4nC,aAC7E5nC,KAAK/Y,OAAOgH,QAAQ,aAAcN,GAClCqS,KAAK4nC,aAAc,GAEvBD,EAAYt+B,UAAUwQ,WAAa,WAC/B7Z,KAAKihB,gBAAe,GACpBjhB,KAAKkhB,eAAiB,IAAIC,iBAAenhB,KAAKrV,QAAQ1E,SAClDm7B,UAAWphB,KAAK0vC,aAAa3vC,KAAKC,MAClCwU,WAAYxU,KAAKwU,WACjB8M,UAAW,UAEfthB,KAAKuhB,mBAAqB,IAAIJ,iBAAenhB,KAAK/Z,SAC9Cm7B,UAAWphB,KAAK2vC,eAAe5vC,KAAKC,MACpCwU,WAAYxU,KAAKwU,WACjB8M,UAAW,YAEfG,eAAa54B,IAAImX,KAAKrV,QAAQ1E,QAAS,OAAQ+Z,KAAK4vC,YAAa5vC,OAErE2nC,EAAYt+B,UAAUqO,aAAe,WACjC1X,KAAKihB,gBAAe,GACpBjhB,KAAKkhB,eAAe/P,UACpBnR,KAAKuhB,mBAAmBpQ,UACxBsQ,eAAav4B,OAAO8W,KAAKrV,QAAQ1E,QAAS,OAAQ+Z,KAAK4vC,cAE3DjI,EAAYt+B,UAAU4X,eAAiB,SAAUW,GAC7C,GAAIA,EAAQ,CAER,IAAIC,EAAU7hB,KACVxK,EAAMwK,KAAKrV,QAAQqiD,aACvBhtC,KAAK8hB,SAAW,IAAIC,QAAMvsB,GACtBwsB,IAAK,SAAUC,GACU,IAAjBA,EAAI9N,UAAkB8N,EAAIC,cAAc3rB,OAAO1P,UAAUC,SAAS,cAClE+6B,EAAQrD,kBAGhBgE,QAAS,SAAUpkB,GACf,GAAIyjB,EAAQ56B,OAAOk7B,SAAU,CACzB/jB,EAAE8jB,cAAc1b,iBACZqb,EAAQ56B,OAAO80B,sBACf5iB,WAAS,yBAA0B0oB,EAAQ56B,OAAO80B,oBAAqB8F,EAAQl3B,QAAQyjD,iBACvF95B,YAAUuN,EAAQ56B,OAAOhB,SAAUy8B,KAEvC,IAAInsB,EAAS6H,EAAE8jB,cAAc3rB,OAC7B,GAAIA,EAAQ,CACR,IAAIm1C,EAAMtiD,UAAQmN,EAAQ,IAAMpN,IAC5BoX,EAAQshB,EAAQl3B,QAAQ2jD,UAAU5hD,QAAQg/C,GAC9C7pB,EAAQl3B,QAAQ4jD,UAAUhuC,aAOtCP,KAAK8hB,UACL9hB,KAAK8hB,SAAS3Q,WAK1Bw2B,EAAYt+B,UAAUmlC,gBAAkB,WACpCprB,eAAapjB,KAAK/Y,OAAOhB,SAAUy8B,IACnC1iB,KAAKrV,QAAQ8zB,iBACbze,KAAK/Y,OAAO7B,eAAgBuD,mBAAqB,GACjDqX,KAAK/Y,OAAOM,OAAOiV,QACoB,IAAnCwD,KAAKrV,QAAQ2iD,mBACbttC,KAAK+iB,WAAa,MAEtB/iB,KAAKsF,cAAe,GAExBqiC,EAAYt+B,UAAUumC,YAAc,WAChC5vC,KAAKkjB,SAAS,OAElBykB,EAAYt+B,UAAUwmC,oBAAsB,WACxC,OAAS1qD,oBAAM6a,KAAKyjB,kBACoD,KAApEoK,SAAS7tB,KAAKyjB,iBAAiBx+B,aAAa,iBAAkB,KAItE0iD,EAAYt+B,UAAUsmC,eAAiB,SAAUvxC,GAC7C,GAAK4B,KAAKkU,WAGV,OAAQ9V,EAAE1W,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,QACD0W,EAAEoI,mBAMdmhC,EAAYt+B,UAAUqmC,aAAe,SAAUtxC,GAC3C,GAAK4B,KAAKkU,WAAV,CAGA9V,EAAEoI,iBACF,IASIynC,EACAvqB,EACAvF,EAXAz2B,EAAS0W,EAAE1W,OAEXooD,EAAYxhD,EAAc0R,KAAK/Y,OAAQ+Y,KAAKrV,QAAQC,YACpDmlD,EAAaD,EAAUjqD,OAEvBmqD,GADUhwC,KAAKyjB,iBACJzjB,KAAK6vC,uBAChBI,EAAWjwC,KAAKrV,QAAQ2iD,iBACxB4C,EAAgBlwC,KAAKrV,QAAQ0hD,wBAKjC,OAAQ3kD,GACJ,IAAK,WACD8S,GAAWwF,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO0B,cAAeqX,KAAK/Y,OAAO5B,KAAM,WACrE,MACJ,IAAK,MACD2B,EAAagZ,KAAK/Y,QAClB,MACJ,IAAK,MACL,IAAK,WACD+Y,KAAKukB,gBACL,MACJ,IAAK,QACD,IAAuC,IAAnCvkB,KAAKrV,QAAQ2iD,iBACb,MAGJ,GADAW,EAAUjuC,KAAKrV,QAAQ4hD,gBAAgBvsC,KAAKrV,QAAQ2iD,kBAAkB1oD,KACzD,CAET,IAAIA,EAAOmW,KAAKU,MAAMV,KAAKC,UAAUizC,IACrCjuC,KAAK+tC,YAAYnpD,GAErB,MACJ,IAAK,QACDsH,EAAU8T,KAAK/Y,QACf,MACJ,IAAK,QACD+Y,KAAK/Y,OAAOuL,WAAa,GACzBF,EAAa0N,KAAK/Y,QAClB,MACJ,IAAK,QACDmF,EAAS4T,KAAK/Y,QACd,MACJ,IAAK,QACD+Y,KAAKjI,aACL,MACJ,IAAK,KACDiI,KAAKwkB,gBACL,MACJ,IAAK,QACD,IAAKr/B,oBAAM2qD,EAAU,KAAO9vC,KAAK/Y,OAAO80B,oBAAqB,CACzD,IAAIgxB,EAAU/sC,KAAKrV,QAAQqiD,aAAap9C,cAAc,cAClDugD,EAAYpD,EAAQ3nB,UACpBgrB,EAAgBpwC,KAAKrV,QAAQ2iD,iBACjCttC,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB,EAAGyB,EAAUjqD,OAAS,GACrEknD,EAAQ3nB,UAAY+qB,GACG,IAAnBC,GACApwC,KAAKkjB,SAASktB,GAGtB,MACJ,IAAK,WACL,IAAK,MACD,IAAKjrD,oBAAM2qD,EAAU,IACjB,GAAK9vC,KAAK/Y,OAAO80B,qBAAoC,aAAb3d,EAAE1W,OAGrC,CAAA,IAAuC,IAAnCsY,KAAKrV,QAAQ2iD,kBAAwC,QAAblvC,EAAE1W,OAC/C,OAEMsY,KAAKmoC,cAKXnoC,KAAKkjB,SAAS,GACdljB,KAAKmoC,cAAe,IALpBnoC,KAAKqwC,iBACLrwC,KAAKmoC,cAAe,QAPpBnoC,KAAKrV,QAAQ4jD,UAAU,GAc/B,MACJ,IAAK,UACIppD,oBAAM2qD,EAAU,MACZ9vC,KAAK/Y,OAAO80B,oBAIb/b,KAAKkjB,SAAS6sB,EAAa,GAH3B/vC,KAAKrV,QAAQ4jD,UAAUwB,EAAa,IAM5C,MACJ,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,QACI/vC,KAAK/Y,OAAO80B,oBAIR52B,oBAAM2qD,EAAU,MACZ3qD,oBAAM8qD,KAA2B,IAAdA,EAIH,WAAb7xC,EAAE1W,QAAoC,cAAb0W,EAAE1W,OAC3BsY,KAAKrV,QAAQ4jD,UAAU,GAGvBvuC,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB,EAAGyB,EAAUjqD,OAAS,GAPzEma,KAAKswC,aAAaR,EAAWG,EAAU,KAAM7xC,IALrD4B,KAAKrV,QAAQ4jD,UAAwB,cAAbnwC,EAAE1W,QAAuC,WAAb0W,EAAE1W,OAAuB,EAAIooD,EAAUjqD,OAAS,GAiBxG,MACJ,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,YACDma,KAAKuwC,eAAeL,EAAeF,EAAUC,EAAU7xC,GACvD,MACJ,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,YACD4B,KAAKwwC,gBAAgBV,EAAWG,EAAUD,EAAUE,EAAe9xC,GACnE,MACJ,IAAK,SACL,IAAK,WACI4B,KAAK/Y,OAAO80B,oBAIb/b,KAAKywC,iBAAiBX,EAAW1xC,EAAG6xC,GAHpCjwC,KAAK0wC,aAAaZ,EAAW1xC,EAAG6xC,GAKpC,MACJ,IAAK,OACDvsB,GAAa3+B,WAASib,KAAK/Y,OAAO1B,MAAQ,KAAO,OAAQuqD,EAAU,KACnE9vC,KAAK/Y,OAAO7B,eAAgBuD,cAAe+6B,IAAa,GACxD1jB,KAAKwsC,cAAc9oB,GACnB,MACJ,IAAK,SACL,IAAK,WACD1jB,KAAK0wC,aAAaZ,EAAW1xC,EAAG6xC,GAChC,MACJ,IAAK,MACD9xB,GAAYp5B,WAASib,KAAK/Y,OAAO1B,MAAQ,KAAO,OAAQuqD,EAAUC,EAAa,KAC/E/vC,KAAK/Y,OAAO7B,eAAgBuD,cAAew1B,IAAY,GACvDne,KAAKwsC,cAAcruB,MAK/BwpB,EAAYt+B,UAAUimC,gBAAkB,WACpC,OAAOtvC,KAAKrV,QAAQmjD,sBAExBnG,EAAYt+B,UAAUtR,WAAa,WAC/B,GAAyC,IAArCiI,KAAK/Y,OAAO0B,cAAc9C,OAAc,CACxCma,KAAK/Y,OAAO4C,SAAWmW,KAAKrV,QAAQmjD,qBAGpC,IAAK,IADDhjD,EAAQkV,KAAK/Y,OAAO4C,SACfjE,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,IAC9B,IAAKoS,GAAkBlN,EAAMlF,IAEzB,YADAiG,GAAmBmU,KAAK/Y,OAAQ6D,EAAMlF,GAAIqS,IAIlDC,GAAS8H,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO5B,KAAM2a,KAAK/Y,OAAO0B,iBAG5Dg/C,EAAYt+B,UAAUkb,cAAgB,WAClC,GAAIvkB,KAAK/Y,OAAO0B,eAAiBqX,KAAK/Y,OAAO0B,cAAc9C,OAAS,EAAG,CACnEma,KAAK/Y,OAAO4C,SAAWmW,KAAKrV,QAAQmjD,qBAGpC,IAAK,IADDhjD,EAAQkV,KAAK/Y,OAAO4C,SACfjE,EAAI,EAAGA,EAAIkF,EAAMjF,OAAQD,IAC9B,IAAKiS,GAAc/M,EAAMlF,IAErB,YADAiG,GAAmBmU,KAAK/Y,OAAQ6D,EAAMlF,GAAIkS,IAIlDlF,GAAaoN,KAAK/Y,OAAQ,YAGlC0gD,EAAYt+B,UAAUmb,cAAgB,WACO,IAArCxkB,KAAK/Y,OAAO0B,cAAc9C,SAC1Bma,KAAK0d,mBACL9lB,GAASoI,KAAK/Y,UAGtB0gD,EAAYt+B,UAAUqU,iBAAmB,WAErC,IAAI94B,EAAOob,KAAKsvC,kBAAkB,GAClC93C,GAAmBwI,KAAK/Y,OAAQrC,IAGpC+iD,EAAYt+B,UAAUmnC,gBAAkB,SAAUV,EAAWG,EAAUD,EAAUE,EAAe9xC,GACvF4B,KAAK/Y,OAAO80B,qBAIK,IAAdk0B,GAAiC,SAAb7xC,EAAE1W,QAAkC,WAAb0W,EAAE1W,QAG1B,IAAduoD,GAAmBD,IAAaC,IACrB,SAAb7xC,EAAE1W,QAAkC,WAAb0W,EAAE1W,SAAwBsY,KAAK2wC,WAAWT,EAAeF,GAInFhwC,KAAK4wC,kBAAkBX,EAAUC,EAAeJ,EAAW1xC,GAH3D4B,KAAK6wC,qBAAqBZ,EAAUD,EAAUE,EAAe9xC,GAJ7D4B,KAAKywC,iBAAiBX,EAAW1xC,EAAG6xC,GAJxCjwC,KAAK0wC,aAAaZ,EAAW1xC,EAAG6xC,IAgBxCtI,EAAYt+B,UAAUqnC,aAAe,SAAU/nD,EAAeyV,EAAG4vC,IACxD7oD,oBAAM6a,KAAKyjB,mBAAqBzjB,KAAK/Y,OAAO80B,oBAC5B,aAAb3d,EAAE1W,OACFsY,KAAKrV,QAAQ4jD,UAAUvuC,KAAK6vC,sBAAwB,GAGpD7vC,KAAKrV,QAAQ4jD,UAAUvuC,KAAK6vC,sBAAwB,GAGlD1qD,oBAAM6oD,KAA2B,IAAdA,EASpB7oD,oBAAMwD,EAAc,KACrBqX,KAAKrV,QAAQ4jD,UAAU,GATV,aAAbnwC,EAAE1W,QAAsC,aAAb0W,EAAE1W,QAAsC,cAAb0W,EAAE1W,QAAuC,WAAb0W,EAAE1W,OACpFsY,KAAKrV,QAAQ4jD,UAAUP,GAAaA,IAAarlD,EAAc9C,OAAS,EAAK,EAAI,IAGjFma,KAAKrV,QAAQ4jD,UAAUP,GAA0B,IAAbA,EAAkB,EAAI,KAStErG,EAAYt+B,UAAUknC,eAAiB,SAAUL,EAAeF,EAAUC,EAAU7xC,GAChF,GAAK4B,KAAK2wC,WAAWT,EAAeF,KAA2B,IAAdC,GAAiC,eAAb7xC,EAAE1W,QAAwC,YAAb0W,EAAE1W,OAQ/F,GAAKvC,oBAAM6a,KAAKyjB,mBAAqBusB,IAAaC,EAIlD,IAAkB,IAAdA,GAAgC,cAAb7xC,EAAE1W,QAA0BsY,KAAK/Y,OAAO80B,oBAAqB,CACrF,IAAIwJ,EAAQ0qB,EACZC,EAAczzC,MACduD,KAAKrV,QAAQijC,WAAWsiB,GACxBlwC,KAAKkjB,SAASqC,OAEI,eAAbnnB,EAAE1W,QACPsY,KAAKrV,QAAQ4jD,UAAU0B,QAVvBC,EAAcpqD,KAAKka,KAAK6vC,uBACxB7vC,KAAKrV,QAAQijC,WAAWsiB,QATpBF,EAAWC,EACXjwC,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB2B,EAAUC,GAGzDjwC,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB4B,EAAUD,IAkBrErI,EAAYt+B,UAAUonC,iBAAmB,SAAU3lD,EAAOsT,EAAG4vC,GACzD,IAAIhpB,EACJ,GAAK7/B,oBAAM6a,KAAKyjB,kBAKNt+B,oBAAM6oD,KAA2B,IAAdA,EAKpB7oD,oBAAM2F,EAAM,MACbk6B,EAAW,GALfA,EAAyB,aAAb5mB,EAAE1W,QAAsC,WAAb0W,EAAE1W,OACrCsmD,GAAaA,EAAWljD,EAAMjF,OAAU,EAAI,GAAKmoD,GAAaA,EAAW,EAAK,EAAI,OAPvD,CAC/B,IAAI8C,EAAY9wC,KAAK6vC,sBACrB7qB,EAAyB,aAAb5mB,EAAE1W,QAAsC,WAAb0W,EAAE1W,OACrCopD,GAAcA,EAAYhmD,EAAMjF,OAAS,EAAK,EAAI,GAAKirD,GAAcA,EAAY,EAAK,EAAI,GAWlG9wC,KAAKkjB,SAAS8B,IAGlB2iB,EAAYt+B,UAAUinC,aAAe,SAAUxlD,EAAOimD,EAAYf,EAAU5xC,GACtC,YAA9B4B,KAAKrV,QAAQqmD,cAA4D,iBAA9BhxC,KAAKrV,QAAQqmD,aACvC,WAAb5yC,EAAE1W,QAAoC,UAAb0W,EAAE1W,QACvBvC,oBAAM6a,KAAK+iB,aAAe/iB,KAAK8nC,iBAAmBiJ,IAClD/wC,KAAK8nC,eAAiBiJ,GAET,aAAb3yC,EAAE1W,OACFsY,KAAKrV,QAAQyjD,gBAAgBC,kBAAkBruC,KAAK8nC,eAAgBh9C,EAAMjF,OAAS,GAGnFma,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB,EAAGruC,KAAK8nC,gBAE3D9nC,KAAK+iB,WAAaguB,GAGD,UAAb3yC,EAAE1W,OACFsY,KAAKrV,QACDijC,WAAW5tB,KAAKixC,WAAW9rD,oBAAM4rD,GAAc,EAAIA,EAAY5rD,oBAAM6qD,GAAYllD,EAAMjF,OAAS,EAAImqD,EAAU5xC,IAG9GjZ,oBAAM4rD,GACN/wC,KAAKrV,QAAQ4jD,UAAU,GAGvBvuC,KAAKrV,QAAQijC,WAAW5tB,KAAKixC,WAAW9rD,oBAAM6qD,GAAY,EAAIA,EAAUe,EAAY3yC,IAMhG4B,KAAKrV,QAAQyjD,gBAAgBG,UAAyB,cAAbnwC,EAAE1W,QAAuC,WAAb0W,EAAE1W,OAAuB,EAAIoD,EAAMjF,OAAS,IAGzH8hD,EAAYt+B,UAAU4nC,WAAa,SAAUztB,EAAO+B,EAAOnnB,GACvD,IAAI8yC,EAAUlxC,KAAKrV,QAAQ0hD,wBAC3B,GAAiB,UAAbjuC,EAAE1W,OACF,IAAK,IAAI9B,EAAI49B,EAAQ,EAAG59B,GAAK2/B,EAAO3/B,IAChCsrD,EAAQprD,KAAKF,QAIjB,IAASA,EAAI2/B,EAAQ,EAAG/B,GAAS59B,EAAGA,IAChCsrD,EAAQprD,KAAKF,GAGrB,OAAOsrD,GAEXvJ,EAAYt+B,UAAUwnC,qBAAuB,SAAUZ,EAAUkB,EAAQC,EAAehzC,GACpF,IAAImnB,EAAQ4rB,GAAwB,cAAb/yC,EAAE1W,QAAuC,WAAb0W,EAAE1W,OAAuB,GAAK,GAC7E87B,EAAQr+B,oBAAM6a,KAAK+iB,YAAcktB,EAAWmB,EAAc,GAC1D5tB,IAAU+B,EACVvlB,KAAKrV,QAAQ4jD,UAAU/qB,GAGnBA,EAAQ+B,EACS,cAAbnnB,EAAE1W,QAAuC,WAAb0W,EAAE1W,OAC9BsY,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB7qB,EAAO+B,GAGtDvlB,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB9oB,EAAO/B,GAGxC,cAAbplB,EAAE1W,QAAuC,WAAb0W,EAAE1W,OACnCsY,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB9oB,EAAO/B,GAGtDxjB,KAAKrV,QAAQyjD,gBAAgBC,kBAAkB7qB,EAAO+B,GAG9DvlB,KAAK+iB,WAAa/iB,KAAKrV,QAAQ2iD,kBAEnC3F,EAAYt+B,UAAU6Z,SAAW,SAAUj2B,GACvC,IAAIu2B,EAAQxjB,KAAKyjB,iBACb4tB,EAAcrxC,KAAKrV,QAAQykD,cAAcniD,GACzCu2B,IACAA,EAAM7H,gBAAgB,YACtByH,eAAaI,IAASiB,GAAW6sB,MAEhCnsD,oBAAMksD,KACPrxC,KAAKrV,QAAQ1E,QAAQuxB,aAAa,WAAY,MAC9C65B,EAAY75B,aAAa,WAAY,KACrC65B,EAAYzxC,QACZ0U,YAAU+8B,IAAe5sB,GAAW6sB,OAG5C3J,EAAYt+B,UAAUgnC,eAAiB,WACnC,IAAIkB,EAAY7qD,SAAO,SAAUsZ,KAAK/Z,SACtC+Z,KAAKrV,QAAQ1E,QAAQuxB,aAAa,WAAY,MAC9C,IAAIg6B,EAAY9qD,SAAO,oBAAqBsZ,KAAK/Z,SACjDurD,EAAUh6B,aAAa,WAAY,KACnCg6B,EAAU5xC,QACV0U,YAAUk9B,IAAa/sB,GAAW6sB,KAClCC,EAAU/5B,aAAa,WAAY,KACR,IAAvB+5B,EAAUE,UAAyC,IAAvBD,EAAUC,UACtCruB,eAAamuB,IAAa9sB,GAAW6sB,MAG7C3J,EAAYt+B,UAAUoa,eAAiB,WACnC,OAAO/8B,SAAO,IAAM4qD,GAAatxC,KAAK/Z,UAE1C0hD,EAAYt+B,UAAUsnC,WAAa,SAAUS,EAAepB,GAExD,IAAK,IADD0B,GAAQ,EACH9rD,EAAI,EAAGA,GAAKwrD,EAAcvrD,OAAS,EAAGD,IAC3C,GAAIwrD,EAAcxrD,KAAOoqD,EAAU,CAC/B0B,GAAQ,EACR,MAGR,OAAOA,GAGX/J,EAAYt+B,UAAUunC,kBAAoB,SAAUX,EAAUmB,EAAetB,EAAW1xC,IAClE,IAAd6xC,EACAjwC,KAAKrV,QAAQ4jD,UAAU,GAGnBppD,oBAAM6a,KAAK+iB,aAAe3kB,EAAEmgB,UAC5Bve,KAAK+iB,WAAa/iB,KAAKrV,QAAQ2iD,iBAC/BttC,KAAKrV,QAAQijC,YAAYqiB,EAAwB,cAAb7xC,EAAE1W,QAAuC,WAAb0W,EAAE1W,OACzDuoD,GAAaA,IAAaH,EAAUjqD,OAAS,EAAK,EAAI,GAAOoqD,GAA0B,IAAbA,EAAkB,EAAI,MAGxF,cAAb7xC,EAAE1W,QAAuC,YAAb0W,EAAE1W,QACb,cAAb0W,EAAE1W,SAAmE,IAAzC0pD,EAAc1kD,QAAQujD,EAAW,GACzDA,IAAaH,EAAUjqD,OAAS,GAChCurD,EAActrD,KAAKmqD,EAAW,GAGhB,YAAb7xC,EAAE1W,SAAiE,IAAzC0pD,EAAc1kD,QAAQujD,EAAW,GAC/C,IAAbA,GACAmB,EAActrD,KAAKmqD,EAAW,GAIlCmB,EAAc30C,MAElBuD,KAAKrV,QAAQijC,WAAWwjB,IAGP,WAAbhzC,EAAE1W,OACGsY,KAAK2wC,WAAWS,EAAepxC,KAAK6vC,sBAAwB,GAK7D7vC,KAAKkjB,SAASljB,KAAK6vC,sBAAwB,IAJ3CuB,EAActrD,KAAMka,KAAK6vC,sBAAwB,GACjD7vC,KAAKrV,QAAQijC,WAAWwjB,IAMtBpxC,KAAK2wC,WAAWS,EAAepxC,KAAK6vC,sBAAwB,GAKlE7vC,KAAKkjB,SAASljB,KAAK6vC,sBAAwB,IAJ3CuB,EAActrD,KAAMka,KAAK6vC,sBAAwB,GACjD7vC,KAAKrV,QAAQijC,WAAWwjB,KAU5CzJ,EAAYt+B,UAAUmW,aAAe,SAAUphB,GAC3C,GAAyB,YAArB4B,KAAK/Y,OAAOgE,KAAhB,CAIA,OADalG,WAAS,SAAUqZ,IAE5B,IAAK,cACD4B,KAAKqmB,YAAYthC,WAAS,MAAOqZ,IACjC,MACJ,IAAK,gBACD4B,KAAKsmB,cAAcvhC,WAAS,MAAOqZ,IACnC,MACJ,IAAK,WACD4B,KAAKumB,SAASxhC,WAAS,KAAMqZ,IAC7B,MACJ,IAAK,eACD4B,KAAK4nC,aAAc,EACnB,MACJ,IAAK,aACD5nC,KAAK4nC,aAAc,EACnB5nC,KAAKwmB,WAAWzhC,WAAS,KAAMqZ,GAAIrZ,WAAS,UAAWqZ,IACvD,MACJ,IAAK,YACD4B,KAAK4nC,aAAc,EACnB5nC,KAAKie,kBACL,MACJ,IAAK,iBACDje,KAAK4nC,aAAc,EACnB5nC,KAAKwe,oBAKjBmpB,EAAYt+B,UAAUsoC,WAAa,SAAU/oD,GAEzC,IAAIukD,EAAcntC,KAAKrV,QAAQyiD,wBAE3B3pC,KACAmuC,IAAyE,KAA5D5xC,KAAK/Y,OAAOqB,oBAAoBC,UAAUtC,QAAQuC,QAAgBwX,KAAK/Y,OAAOwB,YAC3F6B,EAAS0V,KAAK/Y,OAAO1B,MAAQ,KAAO,OACxC,GAAIya,KAAK/Y,OAAO1B,QAAUqsD,EACtB,IAAK,IAAIhsD,EAAI,EAAGyN,EAAM85C,EAAYtnD,OAAQD,EAAIyN,EAAKzN,KACU,IAArDgD,EAAM8D,QAAQ3H,WAASuF,EAAQ6iD,EAAYvnD,MAC3C6d,EAAQ3d,KAAKqnD,EAAYvnD,SAKjC,IAASA,EAAI,EAAGyN,EAAM85C,EAAYtnD,OAAQD,EAAIyN,EAAKzN,IAAK,CACpD,IAAIisD,EAAS9sD,WAAS,aAAcooD,EAAYvnD,IAAMb,WAAS,OAAQooD,EAAYvnD,KACpD,IAA3BgD,EAAM8D,QAAQmlD,IACdpuC,EAAQ3d,KAAKqnD,EAAYvnD,IAIrC,OAAO6d,GAEXkkC,EAAYt+B,UAAUgd,YAAc,SAAU1gC,GAE1C,GADAqa,KAAK/Y,OAAOc,aAAe,cACvB5C,oBAAMQ,GACNqa,KAAKukB,oBADT,CAKA,IAAI9gB,EAAUzD,KAAK2xC,WAAWhsD,GAC9B,GAAuB,IAAnB8d,EAAQ5d,OAAZ,CAMA,IAAK,IAFDjB,KACAwT,KACKxS,EAAI,EAAGA,EAAI6d,EAAQ5d,OAAQD,IAChChB,EAAKgB,GAAK6d,EAAQ7d,GAClBwS,EAAOxS,GAAKwP,EAAY4K,KAAK/Y,OAAQrC,EAAKgB,IAE9CuS,GAAc6H,KAAK/Y,OAAQrC,EAAMwT,MAErCuvC,EAAYt+B,UAAUid,cAAgB,SAAU3gC,GAC5C,GAAIR,oBAAMQ,GACNqa,KAAKjI,iBADT,CAKA,IAAI+5C,EAAW9xC,KAAK2xC,WAAWhsD,GAC/B,GAAwB,IAApBmsD,EAASjsD,OAAb,CAMA,IAAK,IAFDjB,KACAwT,KACKxS,EAAI,EAAGA,EAAIksD,EAASjsD,OAAQD,IACjChB,EAAKgB,GAAKksD,EAASlsD,GACnBwS,EAAOxS,GAAKwP,EAAY4K,KAAK/Y,OAAQrC,EAAKgB,IAE9C0S,GAAgB0H,KAAK/Y,OAAQrC,EAAMwT,MAEvCuvC,EAAYt+B,UAAUkd,SAAW,SAAUvhC,GACvC,IAAIG,oBAAMH,GAAV,CAIA,IAAIye,EAAUzD,KAAK2xC,YAAY3sD,IAC3Bye,EAAQ5d,OAAS,GACjBma,KAAK+tC,YAAYtqC,EAAQ,MAGjCkkC,EAAYt+B,UAAUmd,WAAa,SAAUxhC,EAAIqJ,GAE7C,GADA2R,KAAK/Y,OAAOc,aAAe,cACvB5C,oBAAMH,GACNgb,KAAKwkB,oBADT,CAKA,IAAI/gB,EAAUzD,KAAK2xC,YAAY3sD,IAC3Bye,EAAQ5d,OAAS,IACjB2R,GAAmBwI,KAAK/Y,OAAQwc,EAAQ,IACnCte,oBAAMkJ,GASPuJ,GAASoI,KAAK/Y,QARV4Q,GAAcmI,KAAK/Y,OAAO4C,SAAS,IACnCgQ,GAAOmG,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO5B,KAAMgJ,GAGtCxC,GAAmBmU,KAAK/Y,OAAQ+Y,KAAK/Y,OAAO4C,SAAS,GAAIiO,OAQlE6vC,iTT3zDgB,yFAUA,6FAQE,iDAIN,oBAEF,sBAEI,4EAQH,qBAEC,qIAqBH,wBAEI,mOA8BL,0CAME,2OA0Be,+CAEL,+BAEH,yBAEF,kDAIC,6EAQD,ySAkCA,0GAUA,uCAEC,uCAED,kDAIC,6CAIP,yBAEK,kBAER,sCAIM,mDAIO,gEAMT,sIC1MK,0KAoBN,sDAME,idAsDE,qFAQI,0FAUJ,0JAcI"}
|