@dotglitch/ngx-common 1.1.28 → 1.1.30

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.
@@ -1,5 +1,4 @@
1
1
  import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, ViewChildren } from '@angular/core';
2
- import { NgForOf, NgIf } from '@angular/common';
3
2
  import { MatTabsModule } from '@angular/material/tabs';
4
3
  import { MatIconModule } from '@angular/material/icon';
5
4
  import { MatDrawerContainer, MatSidenavModule } from '@angular/material/sidenav';
@@ -242,13 +241,11 @@ export class FilemanagerComponent {
242
241
  this.fileDownload.next(file);
243
242
  }
244
243
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FilemanagerComponent, deps: [{ token: NGX_WEB_COMPONENTS_CONFIG, optional: true }, { token: i1.LazyLoaderService }, { token: i0.ViewContainerRef }, { token: i2.Fetch }], target: i0.ɵɵFactoryTarget.Component }); }
245
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: FilemanagerComponent, isStandalone: true, selector: "app-filemanager", inputs: { config: "config", gridSize: "gridSize", mode: "mode", contextTags: "contextTags", value: "value" }, outputs: { valueChange: "valueChange", focusedFilesChange: "focusedFilesChange", fileUpload: "fileUpload", fileDownload: "fileDownload", fileRename: "fileRename", fileDelete: "fileDelete", fileCopy: "fileCopy", filePaste: "filePaste", fileSelect: "fileSelect", fileDblClick: "fileDblClick", folderSelect: "folderSelect", folderDblClick: "folderDblClick", filesSelect: "filesSelect" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }, { propertyName: "treeView", first: true, predicate: TreeViewComponent, descendants: true }, { propertyName: "toolbar", first: true, predicate: ToolbarComponent, descendants: true }, { propertyName: "drawer", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "fileGrids", predicate: FileGridComponent, descendants: true }], ngImport: i0, template: "<app-toolbar\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [showBareMinimum]=\"width < 500 && config.showBreadcrumb != false\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n/>\n\n<mat-drawer-container>\n <mat-drawer #drawer mode=\"over\">\n <app-toolbar\n *ngIf=\"width < 500 && config.showBreadcrumb != false\"\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [drawerMode]=\"true\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n />\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </mat-drawer>\n <mat-drawer-content>\n <as-split direction=\"horizontal\" [gutterSize]=\"sidebarOverlay ? 0 : 2\" [unit]=\"'pixel'\" (dragEnd)=\"onResizeEnd()\">\n <as-split-area\n style=\"background-color: var(--filemanager-sidebar-background-color, #2c2c2c)\"\n [size]=\"215\"\n [minSize]=\"215\"\n [maxSize]=\"width/4\"\n [visible]=\"!sidebarOverlay && config.showTreeview != false\"\n >\n <div class=\"sidebar\"\n *ngIf=\"!sidebarOverlay && config.showTreeview != false\"\n (click)=\"currentTab.selection = []\"\n >\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </div>\n </as-split-area>\n <as-split-area style=\"background-color: var(--filemanager-background-color, #272727);\">\n <div class=\"content\"\n [style.--tab-height]=\"tabs.length > 1 ? '36px' : '0'\"\n >\n <mat-tab-group #tabGroup (selectedTabChange)=\"currentTab = tabs[$event.index]\" [(selectedIndex)]=\"tabIndex\">\n <mat-tab *ngFor=\"let tab of tabs; let i = index\">\n <ng-template mat-tab-label>\n {{tab.label}}\n <mat-icon\n class=\"close\"\n (click)=\"closeTab(tab)\">\n close\n </mat-icon>\n </ng-template>\n\n <ng-template matTabContent>\n <app-file-grid\n [viewMode]=\"tab.viewMode\"\n [tab]=\"tab\"\n [config]=\"config\"\n [gridSize]=\"gridSize\"\n [sortOrder]=\"tab.sortOrder\"\n [(selection)]=\"tab.selection\"\n [(path)]=\"tab.path\"\n (pathChange)=\"onTabPathChange(tab)\"\n [(value)]=\"gridValues[i]\"\n (valueChange)=\"onGridValueChange()\"\n (loadFiles)=\"onTabLoadFiles(tab, $event)\"\n\n (fileSelect)=\"fileSelect.next($event)\"\n (fileDblClick)=\"fileDblClick.next($event)\"\n (folderSelect)=\"folderSelect.next($event)\"\n (folderDblClick)=\"folderDblClick.next($event)\"\n />\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </as-split-area>\n </as-split>\n </mat-drawer-content>\n</mat-drawer-container>\n\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}:host .content{display:flex;height:100%;overflow:hidden}:host ::ng-deep .as-split-gutter{background-color:var(--gutter-color, #121212)!important}:host ::ng-deep .mat-mdc-tab-header{height:var(--tab-height, 0);transition:height .25s ease}:host ::ng-deep .mat-mdc-tab-header .mdc-tab{height:var(--tab-height, 0);background-color:var(--filemanager-tab-background-color, #303030)}:host ::ng-deep .mat-mdc-tab .mdc-tab__content{position:static}:host ::ng-deep .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,:host ::ng-deep .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--text-subdued-color)}.sidebar{border-right:1px solid transparent;transition:background-color .2s cubic-bezier(0,0,.2,1),border-color .2s ease}.sidebar ul{list-style-type:none;text-align:left;margin:0;padding:0;display:flex;flex-direction:column}.sidebar ul li{display:flex;align-items:center;transition:all .2s ease;font-size:14px;padding:6px 6px 6px 24px}.sidebar ul li mat-icon{margin-right:8px}.sidebar ul li:hover{background-color:#343434}.sidebar ul .tooltip{background-color:#101010cc;border:1px solid #414141;opacity:0;pointer-events:none;transition:all .2s ease}.active .sidebar{background-color:#2c2c2c;border-right-color:#1c1c1c}.active .sidebar li:hover{background-color:#343434}.close{position:absolute;right:12px;color:#666;transition:color .25s ease}.close:hover{color:#ccc}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i3.SplitComponent, selector: "as-split", inputs: ["direction", "unit", "gutterSize", "gutterStep", "restrictMove", "useTransition", "disabled", "dir", "gutterDblClickDuration", "gutterClickDeltaPx", "gutterAriaLabel"], outputs: ["transitionEnd", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"], exportAs: ["asSplit"] }, { kind: "directive", type: i3.SplitAreaDirective, selector: "as-split-area, [as-split-area]", inputs: ["order", "size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: FileGridComponent, selector: "app-file-grid", inputs: ["path", "config", "showHiddenFiles", "viewMode", "gridSize", "tab", "selection", "value", "sortOrder"], outputs: ["pathChange", "fileSelect", "fileDblClick", "folderSelect", "folderDblClick", "newTab", "loadFiles", "selectionChange", "valueChange"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i4.MatTabContent, selector: "[matTabContent]" }, { kind: "directive", type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: ToolbarComponent, selector: "app-toolbar", inputs: ["config", "currentTab", "showHiddenFiles", "showSidebar", "drawerMode", "showBareMinimum"], outputs: ["onBreadcrumbClick", "showHiddenFilesChange", "showSidebarChange"] }, { kind: "component", type: TreeViewComponent, selector: "app-tree-view", inputs: ["rowTemplate", "data"], outputs: ["click", "loadChildren"] }] }); }
244
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: FilemanagerComponent, isStandalone: true, selector: "app-filemanager", inputs: { config: "config", gridSize: "gridSize", mode: "mode", contextTags: "contextTags", value: "value" }, outputs: { valueChange: "valueChange", focusedFilesChange: "focusedFilesChange", fileUpload: "fileUpload", fileDownload: "fileDownload", fileRename: "fileRename", fileDelete: "fileDelete", fileCopy: "fileCopy", filePaste: "filePaste", fileSelect: "fileSelect", fileDblClick: "fileDblClick", folderSelect: "folderSelect", folderDblClick: "folderDblClick", filesSelect: "filesSelect" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }, { propertyName: "treeView", first: true, predicate: TreeViewComponent, descendants: true }, { propertyName: "toolbar", first: true, predicate: ToolbarComponent, descendants: true }, { propertyName: "drawer", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "fileGrids", predicate: FileGridComponent, descendants: true }], ngImport: i0, template: "<app-toolbar\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [showBareMinimum]=\"width < 500 && config.showBreadcrumb != false\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n/>\n\n<mat-drawer-container style=\"flex: 1\">\n <mat-drawer #drawer mode=\"over\">\n @if (width < 500 && config.showBreadcrumb != false) {\n <app-toolbar\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [drawerMode]=\"true\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n />\n }\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </mat-drawer>\n <mat-drawer-content>\n <as-split direction=\"horizontal\" [gutterSize]=\"sidebarOverlay ? 0 : 2\" [unit]=\"'pixel'\" (dragEnd)=\"onResizeEnd()\">\n <as-split-area\n style=\"background-color: var(--filemanager-sidebar-background-color, #2c2c2c)\"\n [size]=\"215\"\n [minSize]=\"215\"\n [maxSize]=\"width/4\"\n [visible]=\"!sidebarOverlay && config.showTreeview != false\"\n >\n @if (!sidebarOverlay && config.showTreeview != false) {\n <div class=\"sidebar\"\n (click)=\"currentTab.selection = []\"\n >\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </div>\n }\n </as-split-area>\n <as-split-area style=\"background-color: var(--filemanager-background-color, #272727);\">\n <div class=\"content\"\n [style.--tab-height]=\"tabs.length > 1 ? '36px' : '0'\"\n >\n <mat-tab-group #tabGroup (selectedTabChange)=\"currentTab = tabs[$event.index]\" [(selectedIndex)]=\"tabIndex\">\n @for (tab of tabs; track tab; let i = $index) {\n <mat-tab>\n <ng-template mat-tab-label>\n {{tab.label}}\n <mat-icon\n class=\"close\"\n (click)=\"closeTab(tab)\">\n close\n </mat-icon>\n </ng-template>\n\n <ng-template matTabContent>\n <app-file-grid\n [viewMode]=\"tab.viewMode\"\n [tab]=\"tab\"\n [config]=\"config\"\n [gridSize]=\"gridSize\"\n [sortOrder]=\"tab.sortOrder\"\n [(selection)]=\"tab.selection\"\n [(path)]=\"tab.path\"\n (pathChange)=\"onTabPathChange(tab)\"\n [(value)]=\"gridValues[i]\"\n (valueChange)=\"onGridValueChange()\"\n (loadFiles)=\"onTabLoadFiles(tab, $event)\"\n\n (fileSelect)=\"fileSelect.next($event)\"\n (fileDblClick)=\"fileDblClick.next($event)\"\n (folderSelect)=\"folderSelect.next($event)\"\n (folderDblClick)=\"folderDblClick.next($event)\"\n />\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n </div>\n </as-split-area>\n </as-split>\n </mat-drawer-content>\n</mat-drawer-container>\n\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}:host .content{display:flex;height:100%;overflow:hidden}:host ::ng-deep .as-split-gutter{background-color:var(--gutter-color, #121212)!important}:host ::ng-deep .mat-mdc-tab-header{height:var(--tab-height, 0);transition:height .25s ease}:host ::ng-deep .mat-mdc-tab-header .mdc-tab{height:var(--tab-height, 0);background-color:var(--filemanager-tab-background-color, #303030)}:host ::ng-deep .mat-mdc-tab .mdc-tab__content{position:static}:host ::ng-deep .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,:host ::ng-deep .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--text-subdued-color)}.sidebar{border-right:1px solid transparent;transition:background-color .2s cubic-bezier(0,0,.2,1),border-color .2s ease}.sidebar ul{list-style-type:none;text-align:left;margin:0;padding:0;display:flex;flex-direction:column}.sidebar ul li{display:flex;align-items:center;transition:all .2s ease;font-size:14px;padding:6px 6px 6px 24px}.sidebar ul li mat-icon{margin-right:8px}.sidebar ul li:hover{background-color:#343434}.sidebar ul .tooltip{background-color:#101010cc;border:1px solid #414141;opacity:0;pointer-events:none;transition:all .2s ease}.active .sidebar{background-color:#2c2c2c;border-right-color:#1c1c1c}.active .sidebar li:hover{background-color:#343434}.close{position:absolute;right:12px;color:#666;transition:color .25s ease}.close:hover{color:#ccc}\n"], dependencies: [{ kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i3.SplitComponent, selector: "as-split", inputs: ["direction", "unit", "gutterSize", "gutterStep", "restrictMove", "useTransition", "disabled", "dir", "gutterDblClickDuration", "gutterClickDeltaPx", "gutterAriaLabel"], outputs: ["transitionEnd", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"], exportAs: ["asSplit"] }, { kind: "directive", type: i3.SplitAreaDirective, selector: "as-split-area, [as-split-area]", inputs: ["order", "size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: FileGridComponent, selector: "app-file-grid", inputs: ["path", "config", "showHiddenFiles", "viewMode", "gridSize", "tab", "selection", "value", "sortOrder"], outputs: ["pathChange", "fileSelect", "fileDblClick", "folderSelect", "folderDblClick", "newTab", "loadFiles", "selectionChange", "valueChange"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i4.MatTabContent, selector: "[matTabContent]" }, { kind: "directive", type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: ToolbarComponent, selector: "app-toolbar", inputs: ["config", "currentTab", "showHiddenFiles", "showSidebar", "drawerMode", "showBareMinimum"], outputs: ["onBreadcrumbClick", "showHiddenFilesChange", "showSidebarChange"] }, { kind: "component", type: TreeViewComponent, selector: "app-tree-view", inputs: ["rowTemplate", "data"], outputs: ["click", "loadChildren"] }] }); }
246
245
  }
247
246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FilemanagerComponent, decorators: [{
248
247
  type: Component,
249
248
  args: [{ selector: 'app-filemanager', imports: [
250
- NgIf,
251
- NgForOf,
252
249
  AngularSplitModule,
253
250
  FileGridComponent,
254
251
  MatTabsModule,
@@ -256,7 +253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
256
253
  MatSidenavModule,
257
254
  ToolbarComponent,
258
255
  TreeViewComponent
259
- ], standalone: true, template: "<app-toolbar\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [showBareMinimum]=\"width < 500 && config.showBreadcrumb != false\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n/>\n\n<mat-drawer-container>\n <mat-drawer #drawer mode=\"over\">\n <app-toolbar\n *ngIf=\"width < 500 && config.showBreadcrumb != false\"\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [drawerMode]=\"true\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n />\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </mat-drawer>\n <mat-drawer-content>\n <as-split direction=\"horizontal\" [gutterSize]=\"sidebarOverlay ? 0 : 2\" [unit]=\"'pixel'\" (dragEnd)=\"onResizeEnd()\">\n <as-split-area\n style=\"background-color: var(--filemanager-sidebar-background-color, #2c2c2c)\"\n [size]=\"215\"\n [minSize]=\"215\"\n [maxSize]=\"width/4\"\n [visible]=\"!sidebarOverlay && config.showTreeview != false\"\n >\n <div class=\"sidebar\"\n *ngIf=\"!sidebarOverlay && config.showTreeview != false\"\n (click)=\"currentTab.selection = []\"\n >\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </div>\n </as-split-area>\n <as-split-area style=\"background-color: var(--filemanager-background-color, #272727);\">\n <div class=\"content\"\n [style.--tab-height]=\"tabs.length > 1 ? '36px' : '0'\"\n >\n <mat-tab-group #tabGroup (selectedTabChange)=\"currentTab = tabs[$event.index]\" [(selectedIndex)]=\"tabIndex\">\n <mat-tab *ngFor=\"let tab of tabs; let i = index\">\n <ng-template mat-tab-label>\n {{tab.label}}\n <mat-icon\n class=\"close\"\n (click)=\"closeTab(tab)\">\n close\n </mat-icon>\n </ng-template>\n\n <ng-template matTabContent>\n <app-file-grid\n [viewMode]=\"tab.viewMode\"\n [tab]=\"tab\"\n [config]=\"config\"\n [gridSize]=\"gridSize\"\n [sortOrder]=\"tab.sortOrder\"\n [(selection)]=\"tab.selection\"\n [(path)]=\"tab.path\"\n (pathChange)=\"onTabPathChange(tab)\"\n [(value)]=\"gridValues[i]\"\n (valueChange)=\"onGridValueChange()\"\n (loadFiles)=\"onTabLoadFiles(tab, $event)\"\n\n (fileSelect)=\"fileSelect.next($event)\"\n (fileDblClick)=\"fileDblClick.next($event)\"\n (folderSelect)=\"folderSelect.next($event)\"\n (folderDblClick)=\"folderDblClick.next($event)\"\n />\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </as-split-area>\n </as-split>\n </mat-drawer-content>\n</mat-drawer-container>\n\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}:host .content{display:flex;height:100%;overflow:hidden}:host ::ng-deep .as-split-gutter{background-color:var(--gutter-color, #121212)!important}:host ::ng-deep .mat-mdc-tab-header{height:var(--tab-height, 0);transition:height .25s ease}:host ::ng-deep .mat-mdc-tab-header .mdc-tab{height:var(--tab-height, 0);background-color:var(--filemanager-tab-background-color, #303030)}:host ::ng-deep .mat-mdc-tab .mdc-tab__content{position:static}:host ::ng-deep .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,:host ::ng-deep .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--text-subdued-color)}.sidebar{border-right:1px solid transparent;transition:background-color .2s cubic-bezier(0,0,.2,1),border-color .2s ease}.sidebar ul{list-style-type:none;text-align:left;margin:0;padding:0;display:flex;flex-direction:column}.sidebar ul li{display:flex;align-items:center;transition:all .2s ease;font-size:14px;padding:6px 6px 6px 24px}.sidebar ul li mat-icon{margin-right:8px}.sidebar ul li:hover{background-color:#343434}.sidebar ul .tooltip{background-color:#101010cc;border:1px solid #414141;opacity:0;pointer-events:none;transition:all .2s ease}.active .sidebar{background-color:#2c2c2c;border-right-color:#1c1c1c}.active .sidebar li:hover{background-color:#343434}.close{position:absolute;right:12px;color:#666;transition:color .25s ease}.close:hover{color:#ccc}\n"] }]
256
+ ], standalone: true, template: "<app-toolbar\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [showBareMinimum]=\"width < 500 && config.showBreadcrumb != false\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n/>\n\n<mat-drawer-container style=\"flex: 1\">\n <mat-drawer #drawer mode=\"over\">\n @if (width < 500 && config.showBreadcrumb != false) {\n <app-toolbar\n [currentTab]=\"currentTab\"\n [(showHiddenFiles)]=\"showHiddenFiles\"\n [(showSidebar)]=\"showSidebar\"\n [config]=\"config\"\n [drawerMode]=\"true\"\n (onBreadcrumbClick)=\"onBreadcrumbClick($event)\"\n />\n }\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </mat-drawer>\n <mat-drawer-content>\n <as-split direction=\"horizontal\" [gutterSize]=\"sidebarOverlay ? 0 : 2\" [unit]=\"'pixel'\" (dragEnd)=\"onResizeEnd()\">\n <as-split-area\n style=\"background-color: var(--filemanager-sidebar-background-color, #2c2c2c)\"\n [size]=\"215\"\n [minSize]=\"215\"\n [maxSize]=\"width/4\"\n [visible]=\"!sidebarOverlay && config.showTreeview != false\"\n >\n @if (!sidebarOverlay && config.showTreeview != false) {\n <div class=\"sidebar\"\n (click)=\"currentTab.selection = []\"\n >\n <app-tree-view\n [data]=\"currentTab.sidebarItems\"\n (loadChildren)=\"onTreeViewLoadChildren($event)\"\n (click)=\"onTreeViewSelect($event)\"\n />\n </div>\n }\n </as-split-area>\n <as-split-area style=\"background-color: var(--filemanager-background-color, #272727);\">\n <div class=\"content\"\n [style.--tab-height]=\"tabs.length > 1 ? '36px' : '0'\"\n >\n <mat-tab-group #tabGroup (selectedTabChange)=\"currentTab = tabs[$event.index]\" [(selectedIndex)]=\"tabIndex\">\n @for (tab of tabs; track tab; let i = $index) {\n <mat-tab>\n <ng-template mat-tab-label>\n {{tab.label}}\n <mat-icon\n class=\"close\"\n (click)=\"closeTab(tab)\">\n close\n </mat-icon>\n </ng-template>\n\n <ng-template matTabContent>\n <app-file-grid\n [viewMode]=\"tab.viewMode\"\n [tab]=\"tab\"\n [config]=\"config\"\n [gridSize]=\"gridSize\"\n [sortOrder]=\"tab.sortOrder\"\n [(selection)]=\"tab.selection\"\n [(path)]=\"tab.path\"\n (pathChange)=\"onTabPathChange(tab)\"\n [(value)]=\"gridValues[i]\"\n (valueChange)=\"onGridValueChange()\"\n (loadFiles)=\"onTabLoadFiles(tab, $event)\"\n\n (fileSelect)=\"fileSelect.next($event)\"\n (fileDblClick)=\"fileDblClick.next($event)\"\n (folderSelect)=\"folderSelect.next($event)\"\n (folderDblClick)=\"folderDblClick.next($event)\"\n />\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n </div>\n </as-split-area>\n </as-split>\n </mat-drawer-content>\n</mat-drawer-container>\n\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}:host .content{display:flex;height:100%;overflow:hidden}:host ::ng-deep .as-split-gutter{background-color:var(--gutter-color, #121212)!important}:host ::ng-deep .mat-mdc-tab-header{height:var(--tab-height, 0);transition:height .25s ease}:host ::ng-deep .mat-mdc-tab-header .mdc-tab{height:var(--tab-height, 0);background-color:var(--filemanager-tab-background-color, #303030)}:host ::ng-deep .mat-mdc-tab .mdc-tab__content{position:static}:host ::ng-deep .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,:host ::ng-deep .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--text-subdued-color)}.sidebar{border-right:1px solid transparent;transition:background-color .2s cubic-bezier(0,0,.2,1),border-color .2s ease}.sidebar ul{list-style-type:none;text-align:left;margin:0;padding:0;display:flex;flex-direction:column}.sidebar ul li{display:flex;align-items:center;transition:all .2s ease;font-size:14px;padding:6px 6px 6px 24px}.sidebar ul li mat-icon{margin-right:8px}.sidebar ul li:hover{background-color:#343434}.sidebar ul .tooltip{background-color:#101010cc;border:1px solid #414141;opacity:0;pointer-events:none;transition:all .2s ease}.active .sidebar{background-color:#2c2c2c;border-right-color:#1c1c1c}.active .sidebar li:hover{background-color:#343434}.close{position:absolute;right:12px;color:#666;transition:color .25s ease}.close:hover{color:#ccc}\n"] }]
260
257
  }], ctorParameters: () => [{ type: undefined, decorators: [{
261
258
  type: Optional
262
259
  }, {
@@ -314,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
314
311
  }], filesSelect: [{
315
312
  type: Output
316
313
  }] } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL2ZpbGVtYW5hZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9maWxlbWFuYWdlci9maWxlbWFuYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQWUseUJBQXlCLEVBQTBCLE1BQU0sVUFBVSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDOzs7Ozs7OztBQTRKN0IsTUFB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Q29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvck9mLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRhYkdyb3VwLCBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXREcmF3ZXJDb250YWluZXIsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IEFuZ3VsYXJTcGxpdE1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3BsaXQnO1xuXG5pbXBvcnQgeyBGaWxlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1ncmlkL2ZpbGUtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZVNvcnRpbmcsIE5HWF9XRUJfQ09NUE9ORU5UU19DT05GSUcsIE5neFdlYkNvbXBvbmVudHNDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBJY29uUmVzb2x2ZXIgfSBmcm9tICcuL2ljb24tcmVzb2x2ZXInO1xuaW1wb3J0IHsgTGF6eUxvYWRlclNlcnZpY2UsIE5HWF9MQVpZX0xPQURFUl9DT05GSUcgfSBmcm9tICcuLi9sYXp5LWxvYWRlci9sYXp5LWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZldGNoIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyB1bGlkIH0gZnJvbSAndWxpZHgnO1xuXG4vLyBUT0RPOlxuLyoqXG4gKiBNdWx0aXBsZSBtdXNpYyAvIHZpZGVvIC8gaW1hZ2UgZmlsZXMgc2VsZWN0ZWQgdHVybnMgaW50byBhIHBsYXlsaXN0XG4gKiBEcmFnZ2luZyBtdXNpYyAvIHZpZGVvIC8gaW1hZ2UgcXVldWVzIHRoZSBmaWxlKHMpXG4gKiBDYW4gc2F2ZSBhbmQgZWRpdCBhIGxpc3Qgb2YgZmlsZXMgYXMgcGxheWxpc3RcbiAqIENhbiBcImxvb3BcIiBcInJhbmRvbWl6ZVwiXG4gKi9cblxuZXhwb3J0IHR5cGUgRGlyZWN0b3J5RGVzY3JpcHRvciA9IHtcbiAgICBraW5kOiBcImRpcmVjdG9yeVwiLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBjb250ZW50czoge1xuICAgICAgICBkaXJzOiBEaXJlY3RvcnlEZXNjcmlwdG9yW10sXG4gICAgICAgIGZpbGVzOiBGaWxlRGVzY3JpcHRvcltdXG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBGaWxlRGVzY3JpcHRvciA9IHtcbiAgICBraW5kOiBcImZpbGVcIixcbiAgICBzdGF0czoge1xuICAgICAgICBzaXplOiBudW1iZXI7XG4gICAgICAgIC8vIFNpemUgZm9yIHppcHBlZCBmaWxlXG4gICAgICAgIGNvbXByZXNzZWRTaXplPzogbnVtYmVyLFxuICAgICAgICBhdGltZU1zOiBudW1iZXI7XG4gICAgICAgIG10aW1lTXM6IG51bWJlcjtcbiAgICAgICAgY3RpbWVNczogbnVtYmVyO1xuICAgICAgICBiaXJ0aHRpbWVNczogbnVtYmVyO1xuICAgIH0sXG4gICAgcGF0aDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGV4dDogc3RyaW5nLFxuICAgIC8vIENvbW1lbnQgZm9yIGVudHJpZXMgaW4gYSB6aXAgZmlsZS5cbiAgICBjb21tZW50Pzogc3RyaW5nXG59O1xuXG5leHBvcnQgdHlwZSBGU0Rlc2NyaXB0b3IgPSBEaXJlY3RvcnlEZXNjcmlwdG9yIHwgRmlsZURlc2NyaXB0b3I7XG5cbmV4cG9ydCB0eXBlIEZpbGVWaWV3VGFiID0ge1xuICAgIGlkOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBicmVhZGNydW1iOiB7XG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGxhYmVsOiBzdHJpbmdcbiAgICB9W10sXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHNlbGVjdGlvbjogRlNEZXNjcmlwdG9yW10sXG4gICAgdmlld01vZGU6IFwiZ3JpZFwiIHwgXCJsaXN0XCIsXG4gICAgaGlzdG9yeUluZGV4OiBudW1iZXIsXG4gICAgaGlzdG9yeTogc3RyaW5nW10sXG4gICAgc2lkZWJhckl0ZW1zOiBGU0Rlc2NyaXB0b3JbXSxcbiAgICBzb3J0T3JkZXI6IEZpbGVTb3J0aW5nXG59XG5cbi8vIFRPRE86IHJlcGxhY2UgaHR0cCBjb25maWdzXG50eXBlIEh0dHBDb25maWd1cmF0aW9uID0gKFxuICAgIHsgdXJsOiBzdHJpbmcgfSB8XG4gICAgeyB1cmxUZW1wbGF0ZTogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nIH1cbikgJiB7XG4gICAgbWV0aG9kPzogXCJnZXRcIiB8IFwicHV0XCIgfCBcInBvc3RcIiB8IFwicGF0Y2hcIiB8IFwiZGVsZXRlXCIsXG4gICAgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbn1cblxuZXhwb3J0IHR5cGUgTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uID0gUGFydGlhbDx7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbCBwYXRoXG4gICAgICovXG4gICAgcGF0aDogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHJvb3QgcGF0aCAod2lsbCBhcHBlYXIgYXMgJy8nKS5cbiAgICAgKiBEZWZhdWx0cyB0byAnLycuXG4gICAgICpcbiAgICAgKiBVc2VyIGNhbm5vdCB2aWV3IG91dHNpZGUgb2YgdGhpcyBwYXRoLlxuICAgICAqICAgKE5vdCB0byBiZSB1c2VkIGFzIGEgc2VjdXJpdHkgbWVhc3VyZSEpXG4gICAgICovXG4gICAgY2hyb290UGF0aDogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogUmVzdHJpY3QgdXNlcnMgdG8gb25seSBuYXZpZ2F0ZSBhcm91bmQgdG8gc3VicGF0aHMgb2YgdGhlIHNwZWNpZmllZCBgcGF0aGBcbiAgICAgKi9cbiAgICBuYXZpZ2F0ZU9ubHlUb0Rlc2NlbmRhbnRzOiBib29sZWFuLFxuICAgIHNob3dCcmVhZGNydW1iOiBib29sZWFuLFxuICAgIHNob3dUcmVldmlldzogYm9vbGVhbixcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIFwicm9vdFwiIHBhdGggYC9gXG4gICAgICogRGVmYXVsdHMgdG8gXCJTdG9yYWdlXCJcbiAgICAgKi9cbiAgICByb290TmFtZTogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc3RvcmVkIGluIGhpc3RvcnkuXG4gICAgICovXG4gICAgbWF4SGlzdG9yeUxlbmd0aDogbnVtYmVyLFxuXG4gICAgYXBpU2V0dGluZ3M6IHtcbiAgICAgICAgbGlzdEVudHJpZXNVcmw/OiBzdHJpbmcsXG4gICAgICAgIGxpc3RFbnRyaWVzVXJsVGVtcGxhdGU/OiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICAgICAgIGRvd25sb2FkRW50cnlVcmw/OiBzdHJpbmcsXG4gICAgICAgIGRvd25sb2FkRW50cnlVcmxUZW1wbGF0ZT86IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgICAgICAgdXBsb2FkRW50cnlVcmw/OiBzdHJpbmcsXG4gICAgICAgIHVwbG9hZEVudHJ5VXJsVGVtcGxhdGU/OiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICAgICAgIGRlbGV0ZUVudHJ5VXJsPzogc3RyaW5nLFxuICAgICAgICBkZWxldGVFbnRyeVVybFRlbXBsYXRlPzogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nLFxuICAgICAgICByZW5hbWVFbnRyeVVybD86IHN0cmluZyxcbiAgICAgICAgcmVuYW1lRW50cnlVcmxUZW1wbGF0ZT86IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgICAgICAgY3JlYXRlRGlyZWN0b3J5VXJsPzogc3RyaW5nLFxuICAgICAgICBjcmVhdGVEaXJlY3RvcnlVcmxUZW1wbGF0ZT86IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZ1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB0aGF0IGltYWdlcyBhcmUgbG9hZGVkIGZyb20uXG4gICAgICogRGVmYXVsdCB2YWx1ZSBgL2Fzc2V0cy9kb3RnbGl0Y2gvd2ViY29tcG9uZW50cy9gXG4gICAgICovXG4gICAgYXNzZXRQYXRoOiBzdHJpbmcsXG4gICAgc2lkZWJhckxvY2F0aW9uU3RyYXRlZ3k6IFwia25vd25cIiB8IFwiY3VycmVudERpcmVjdG9yeVwiLFxuXG4gICAgaWNvblJlc29sdmVyOiAoZmlsZTogRlNEZXNjcmlwdG9yKSA9PiBzdHJpbmcsXG5cbiAgICBpbWFnZVNpemU6IFwibm9ybWFsXCIgfCBcInNtYWxsXCIgfCBcImh1Z2VcIixcblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgc2VsZWN0aW9uTW9kZTogXCJzaW5nbGVcIiB8IFwibXVsdGlwbGVcIixcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZGV0ZXJtaW5lcyBpZiB0aGUgZmlsZW1hbmFnZXIgc2hvd3Mgc2VsZWN0ZWQgZW50cmllc1xuICAgICAqXG4gICAgICogSWYgc2V0IHRvIGBmb2N1c0ZpbGVzYCwgZmlsZSBwYXRocyB0aGF0IG1hdGNoIGZyb20gdGhlIHByb3ZpZGVkIGBmb2N1c2VkRmlsZXNgXG4gICAgICogd2lsbCBiZSBoaWdobGlnaHRlZCwgYW5kIGNhbiBiZSBzZWxlY3RlZCAvIGRlc2VsZWN0ZWQuXG4gICAgICovXG4gICAgbW9kZTogXCJmb2N1c0ZpbGVzXCIgfCBcIm5vcm1hbFwiLFxuICAgIGZvY3VzZWRGaWxlczogc3RyaW5nW11cbn0+XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWZpbGVtYW5hZ2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGVtYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0Zvck9mLFxuICAgICAgICBBbmd1bGFyU3BsaXRNb2R1bGUsXG4gICAgICAgIEZpbGVHcmlkQ29tcG9uZW50LFxuICAgICAgICBNYXRUYWJzTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRTaWRlbmF2TW9kdWxlLFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBUcmVlVmlld0NvbXBvbmVudFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlbWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG4gICAgQFZpZXdDaGlsZHJlbihGaWxlR3JpZENvbXBvbmVudCkgZmlsZUdyaWRzOiBRdWVyeUxpc3Q8RmlsZUdyaWRDb21wb25lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoVHJlZVZpZXdDb21wb25lbnQpIHRyZWVWaWV3OiBUcmVlVmlld0NvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKFRvb2xiYXJDb21wb25lbnQpIHRvb2xiYXI6IFRvb2xiYXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZChNYXREcmF3ZXJDb250YWluZXIpIGRyYXdlcjogTWF0RHJhd2VyQ29udGFpbmVyO1xuXG4gICAgQElucHV0KCkgY29uZmlnOiBOZ3hGaWxlTWFuYWdlckNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIGFwaVNldHRpbmdzOiB7XG4gICAgICAgICAgICBsaXN0RW50cmllc1VybDogYC9hcGkvZmlsZXN5c3RlbS9gLFxuICAgICAgICAgICAgdXBsb2FkRW50cnlVcmw6IGAvYXBpL2ZpbGVzeXN0ZW0vYCxcbiAgICAgICAgICAgIGRvd25sb2FkRW50cnlVcmw6IGAvYXBpL2ZpbGVzeXN0ZW0vYCxcbiAgICAgICAgICAgIGRlbGV0ZUVudHJ5VXJsOiBgL2FwaS9maWxlc3lzdGVtL2AsXG4gICAgICAgICAgICBjcmVhdGVEaXJlY3RvcnlVcmw6IGAvYXBpL2ZpbGVzeXN0ZW0vZm9sZGVyYCxcbiAgICAgICAgICAgIHJlbmFtZUVudHJ5VXJsOiBgL2FwaS9maWxlc3lzdGVtL3JlbmFtZWBcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBASW5wdXQoKSBncmlkU2l6ZTogXCJzbWFsbFwiIHwgXCJub3JtYWxcIiB8IFwibGFyZ2VcIiA9IFwibm9ybWFsXCI7XG4gICAgQElucHV0KCkgbW9kZTogXCJncmlkXCIgfCBcImxpc3RcIjtcbiAgICBASW5wdXQoKSBjb250ZXh0VGFnczoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cblxuICAgIEBJbnB1dCgpIHZhbHVlOiBGU0Rlc2NyaXB0b3JbXSA9IFtdO1xuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RlNEZXNjcmlwdG9yW10+KCk7XG5cbiAgICBncmlkVmFsdWVzOiBGU0Rlc2NyaXB0b3JbXVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIGZvY3VzZWQgZmlsZXMgY2hhbmdlLlxuICAgICAqIE9ubHkgYXZhaWxhYmxlIGluIGBmb2N1c0ZpbGVzYCBtb2RlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBmb2N1c2VkRmlsZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBhIGZpbGUgaXMgdXBsb2FkZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIGZpbGVVcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBhIGZpbGUgaXMgZG93bmxvYWRlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmlsZURvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWxlUmVuYW1lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWxlRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWxlQ29weSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZmlsZVBhc3RlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIGZpbGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVEZXNjcmlwdG9yPigpO1xuICAgIEBPdXRwdXQoKSBmaWxlRGJsQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVEZXNjcmlwdG9yPigpO1xuICAgIEBPdXRwdXQoKSBmb2xkZXJTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERpcmVjdG9yeURlc2NyaXB0b3I+KCk7XG4gICAgQE91dHB1dCgpIGZvbGRlckRibENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxEaXJlY3RvcnlEZXNjcmlwdG9yPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBtdWx0aXBsZSBmaWxlIHNlbGVjdGlvbnMgY2hhbmdlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBmaWxlc1NlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RlNEZXNjcmlwdG9yW10+KCk7XG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBhbnkgc2VsZWN0aW9uIGNoYW5nZXMsIHNpbmdsZSBvciBtdWx0aXBsZSBmaWxlcy5cbiAgICAgKi9cbiAgICAvLyBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGU0Rlc2NyaXB0b3JbXT4oKTtcblxuICAgIHNob3dIaWRkZW5GaWxlcyA9IGZhbHNlO1xuICAgIHNob3dTaWRlYmFyID0gdHJ1ZTtcbiAgICBzaWRlYmFyT3ZlcmxheSA9IGZhbHNlO1xuICAgIHdpZHRoID0gMDtcblxuICAgIGlzSG9tZUFuY2VzdG9yID0gZmFsc2U7XG5cbiAgICBjdXJyZW50VGFiOiBGaWxlVmlld1RhYiA9IHt9IGFzIGFueTtcbiAgICBnZXQgY3VycmVudEZpbGVHcmlkKCkgeyByZXR1cm4gdGhpcy5maWxlR3JpZHMuZ2V0KHRoaXMudGFiSW5kZXgpIH1cbiAgICB0YWJJbmRleCA9IDA7XG4gICAgdGFiczogRmlsZVZpZXdUYWJbXSA9IFtdO1xuXG4gICAgaWNvblJlc29sdmVyOiBJY29uUmVzb2x2ZXI7XG5cbiAgICBjb25zdHJ1Y3RvciAoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkdYX1dFQl9DT01QT05FTlRTX0NPTkZJRykgcmVhZG9ubHkgbGliQ29uZmlnOiBOZ3hXZWJDb21wb25lbnRzQ29uZmlnID0ge30sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGF6eUxvYWRlcjogTGF6eUxvYWRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBmZXRjaDogRmV0Y2hcbiAgICApIHtcbiAgICAgICAgbGF6eUxvYWRlci5yZWdpc3RlckNvbXBvbmVudCh7XG4gICAgICAgICAgICBpZDogXCJmb2xkZXItcmVuYW1lXCIsXG4gICAgICAgICAgICBncm91cDogXCJAZG90Z2xpdGNoL25neC13ZWItY29tcG9uZW50c1wiLFxuICAgICAgICAgICAgbG9hZDogKCkgPT4gaW1wb3J0KCcuL2ZvbGRlci1yZW5hbWUvZm9sZGVyLXJlbmFtZS5jb21wb25lbnQnKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuaWNvblJlc29sdmVyID0gbmV3IEljb25SZXNvbHZlcihsaWJDb25maWcuYXNzZXRQYXRoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0VGFiKHRoaXMuY29uZmlnLnBhdGgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWIgPSB0aGlzLnRhYnNbMF07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm9uUmVzaXplKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uUmVzaXplKCksIDI1MCk7XG4gICAgfVxuXG4gICAgb25UcmVlVmlld0xvYWRDaGlsZHJlbih7aXRlbSwgY2J9KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLmxpc3RFbnRyaWVzVXJsVGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5jb25maWcuYXBpU2V0dGluZ3MubGlzdEVudHJpZXNVcmxUZW1wbGF0ZShpdGVtLnBhdGggKyBpdGVtLm5hbWUpXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLmxpc3RFbnRyaWVzVXJsXG5cbiAgICAgICAgdGhpcy5mZXRjaC5wb3N0KHVybCwgeyBwYXRoOiBpdGVtLnBhdGggKyBpdGVtLm5hbWUsIHNob3dIaWRkZW46IHRoaXMuc2hvd0hpZGRlbkZpbGVzIH0pXG4gICAgICAgICAgICAudGhlbigoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyczogRGlyZWN0b3J5RGVzY3JpcHRvcltdID0gZGF0YS5kaXJzO1xuICAgICAgICAgICAgICAgIGNiKGRpcnMpO1xuICAgICAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpbml0VGFiKHBhdGg6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRhYnMucHVzaCh0aGlzLmN1cnJlbnRUYWIgPSB7XG4gICAgICAgICAgICBpZDogdWxpZCgpLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0VGFiTGFiZWwocGF0aCksXG4gICAgICAgICAgICBicmVhZGNydW1iOiB0aGlzLmNhbGNCcmVhZGNydW1iKHBhdGgpLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIHNlbGVjdGlvbjogW10sXG4gICAgICAgICAgICB2aWV3TW9kZTogdGhpcy5tb2RlIHx8ICdncmlkJyxcbiAgICAgICAgICAgIGhpc3RvcnlJbmRleDogMCxcbiAgICAgICAgICAgIGhpc3Rvcnk6IFtdLFxuICAgICAgICAgICAgc2lkZWJhckl0ZW1zOiBbXSxcbiAgICAgICAgICAgIHNvcnRPcmRlcjogJ2EteidcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoO1xuICAgIH1cblxuICAgIGNsb3NlVGFiKHRhYjogRmlsZVZpZXdUYWIpIHtcbiAgICAgICAgdGhpcy50YWJzLnNwbGljZSh0aGlzLnRhYnMuZmluZEluZGV4KHQgPT4gdC5pZCA9PSB0YWIuaWQpLCAxKTtcbiAgICB9XG5cbiAgICBjYWxjQnJlYWRjcnVtYihwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFwYXRoKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKFwiIy9cIiwgJy8nKTtcblxuICAgICAgICAvLyBJZiB3ZSdyZSBhY3RpbmcgbGlrZSB3ZSdyZSBpbiBhIGNoYW5nZWQgcm9vdCwgd2Ugd2lwZSBvdXRcbiAgICAgICAgLy8gYnJlYWRjcnVtYnMgYmVsb3cgdGhlIHJvb3RcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNocm9vdFBhdGgpIHtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UodGhpcy5jb25maWcuY2hyb290UGF0aCwgJycpO1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC8vLCB0aGlzLmNvbmZpZy5jaHJvb3RQYXRoKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0cy5tYXAoKHAsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gcGFydHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy8nKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAodGhpcy5jb25maWcuY2hyb290UGF0aCArIChwYXRoIHx8ICcvJykpLnJlcGxhY2UoL1xcLysvZywgJy8nKSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHAgfHwgXCJcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICByZXR1cm4gcGFydHMubWFwKChwLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHBhcnRzLnNsaWNlKDAsIGkgKyAxKS5qb2luKCcvJyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogcGF0aCB8fCAnLycsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwIHx8IFwiXCJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkJyZWFkY3J1bWJDbGljayhjcnVtYikge1xuICAgICAgICBpZiAoY3J1bWIuaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRhYi5wYXRoID0gY3J1bWIuaWQ7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIuYnJlYWRjcnVtYiA9IHRoaXMuY2FsY0JyZWFkY3J1bWIoY3J1bWIuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25UYWJQYXRoQ2hhbmdlKHRhYjogRmlsZVZpZXdUYWIpIHtcbiAgICAgICAgdGFiLmxhYmVsID0gdGhpcy5nZXRUYWJMYWJlbCh0YWIucGF0aCk7XG4gICAgICAgIHRhYi5icmVhZGNydW1iID0gdGhpcy5jYWxjQnJlYWRjcnVtYih0YWIucGF0aCk7XG5cbiAgICAgICAgdGFiLmhpc3RvcnlJbmRleCsrO1xuICAgICAgICB0YWIuaGlzdG9yeS5wdXNoKHRhYi5wYXRoKTtcbiAgICAgICAgdGFiLmhpc3Rvcnkuc3BsaWNlKHR5cGVvZiB0aGlzLmNvbmZpZy5tYXhIaXN0b3J5TGVuZ3RoID09ICdudW1iZXInID8gdGhpcy5jb25maWcubWF4SGlzdG9yeUxlbmd0aCA6IDUwKTtcbiAgICB9XG5cbiAgICBvblRyZWVWaWV3U2VsZWN0KGl0ZW06IEZTRGVzY3JpcHRvcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWIucGF0aCA9IGl0ZW0ucGF0aCArIGl0ZW0ubmFtZTtcbiAgICB9XG5cbiAgICBvblRhYkxvYWRGaWxlcyh0YWI6IEZpbGVWaWV3VGFiLCBmaWxlczogRlNEZXNjcmlwdG9yW10pIHtcbiAgICAgICAgaWYgKHRhYi5zaWRlYmFySXRlbXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHRhYi5zaWRlYmFySXRlbXMgPSBmaWxlcy5maWx0ZXIoZiA9PiBmLmtpbmQgPT0gXCJkaXJlY3RvcnlcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSB0YWIuc2lkZWJhckl0ZW1zO1xuICAgICAgICBjb25zdCBkaXJJdGVtcyA9IGZpbGVzLmZpbHRlcihmID0+IGYua2luZCA9PSBcImRpcmVjdG9yeVwiKTtcblxuICAgICAgICBmdW5jdGlvbiByZWN1cnNlKGl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmluZChpID0+IHRhYi5wYXRoPy5zdGFydHNXaXRoKGkucGF0aCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHJlY3Vyc2UoY3VycmVudEl0ZW1zKTtcblxuICAgICAgICBpZiAodGFyZ2V0KVxuICAgICAgICAgICAgdGFyZ2V0WydfY2hpbGRyZW4nXSA9IGRpckl0ZW1zO1xuXG4gICAgICAgIHRhYi5zaWRlYmFySXRlbXMgPSBjdXJyZW50SXRlbXM7XG4gICAgfVxuXG4gICAgb25HcmlkVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmdyaWRWYWx1ZXMuZmxhdCgxKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpXG4gICAgfVxuXG4gICAgZ2V0VGFiTGFiZWwocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBwYXRoPy5zcGxpdCgnLycpLmZpbHRlcihwID0+IHApLnBvcCgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUmVzaXplKCkge1xuICAgICAgICAvLyBUcmlnZ2VyIHJlLWNhbGN1bGF0aW9uIG9mIHRoZSB2aWV3XG4gICAgICAgIHRoaXMuZmlsZUdyaWRzLmZvckVhY2goZyA9PiBnLnJlc2l6ZSgpKTtcblxuICAgICAgICBjb25zdCBlbCA9IHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLndpZHRoID0gYm91bmRzLndpZHRoO1xuXG4gICAgICAgIC8vIElmIHRoZSB2aWV3IGFyZWEgaXMgbGVzcyB0aGFuIDY1MHB4IHdpZGUsIHVzZSBvdmVybGF5IHRoZSBzaWRlYmFyIHBhbmVsXG4gICAgICAgIHRoaXMuc2lkZWJhck92ZXJsYXkgPSBib3VuZHMud2lkdGggPCA2NTA7XG4gICAgICAgIGlmICh0aGlzLnNpZGViYXJPdmVybGF5ID09IGZhbHNlICYmIFsuLi50aGlzLmRyYXdlci5fZHJhd2Vyc11bMF0ub3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmRyYXdlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25SZXNpemVFbmQoKSB7XG4gICAgICAgIHRoaXMub25SZXNpemUoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25SZXNpemUoKSwgMjUwKTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRUYWIudmlld01vZGUgPT0gXCJncmlkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRUYWIuc2VsZWN0aW9uXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgICAgICB0aGlzLmZpbGVHcmlkcy5mb3JFYWNoKGcgPT4gZy5jbGVhclNlbGVjdGlvbigpKTtcbiAgICB9XG5cbiAgICAvLyBUZWxsIHRoZSBjaGlsZCBncmlkIHRvIHJlZnJlc2ggaXQncyBzb3J0aW5nXG4gICAgcmVmcmVzaFNvcnRpbmcoKSB7XG4gICAgICAgIHRoaXMuZmlsZUdyaWRzLmZvckVhY2goZyA9PiBnLnNvcnQoKSk7XG4gICAgfVxuXG4gICAgcmVmcmVzaERhdGEoKSB7XG4gICAgICAgIHRoaXMuZmlsZUdyaWRzLmZvckVhY2goZyA9PiBnLmxvYWRGb2xkZXIoKSk7XG4gICAgfVxuXG4gICAgZ2V0RmlsZURhdGEoZmlsZTogRmlsZURlc2NyaXB0b3IpIHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLnJlbmFtZUVudHJ5VXJsVGVtcGxhdGVcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuYXBpU2V0dGluZ3MucmVuYW1lRW50cnlVcmxUZW1wbGF0ZShmaWxlLnBhdGggKyBmaWxlLm5hbWUpXG4gICAgICAgICAgICA6IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLnJlbmFtZUVudHJ5VXJsO1xuXG4gICAgICAgIHVybCA9ICh1cmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JykgKyBgZGlyPSR7ZmlsZS5wYXRofSZmaWxlPSR7ZmlsZS5uYW1lfWA7XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICBkb3dubG9hZEZpbGUoZmlsZTogRlNEZXNjcmlwdG9yKSB7XG4gICAgICAgIGxldCBwYXRoID0gZmlsZS5wYXRoICsgZmlsZS5uYW1lO1xuICAgICAgICBpZiAoZmlsZS5raW5kID09IFwiZGlyZWN0b3J5XCIgJiYgIXBhdGguZW5kc1dpdGgoJy8nKSlcbiAgICAgICAgICAgIHBhdGggKz0gXCIvXCI7XG5cbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5jb25maWcuYXBpU2V0dGluZ3MuZG93bmxvYWRFbnRyeVVybFRlbXBsYXRlXG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLmRvd25sb2FkRW50cnlVcmxUZW1wbGF0ZShwYXRoKVxuICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy5hcGlTZXR0aW5ncy5kb3dubG9hZEVudHJ5VXJsO1xuXG4gICAgICAgIC8vIHdpbmRvdy5vcGVuKHRhcmdldCk7XG4gICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlLm5hbWU7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICBsaW5rLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLmZpbGVEb3dubG9hZC5uZXh0KGZpbGUpO1xuICAgIH1cbn1cbiIsIjxhcHAtdG9vbGJhclxuICAgIFtjdXJyZW50VGFiXT1cImN1cnJlbnRUYWJcIlxuICAgIFsoc2hvd0hpZGRlbkZpbGVzKV09XCJzaG93SGlkZGVuRmlsZXNcIlxuICAgIFsoc2hvd1NpZGViYXIpXT1cInNob3dTaWRlYmFyXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW3Nob3dCYXJlTWluaW11bV09XCJ3aWR0aCA8IDUwMCAmJiBjb25maWcuc2hvd0JyZWFkY3J1bWIgIT0gZmFsc2VcIlxuICAgIChvbkJyZWFkY3J1bWJDbGljayk9XCJvbkJyZWFkY3J1bWJDbGljaygkZXZlbnQpXCJcbi8+XG5cbjxtYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiAgICA8bWF0LWRyYXdlciAjZHJhd2VyIG1vZGU9XCJvdmVyXCI+XG4gICAgICAgIDxhcHAtdG9vbGJhclxuICAgICAgICAgICAgKm5nSWY9XCJ3aWR0aCA8IDUwMCAmJiBjb25maWcuc2hvd0JyZWFkY3J1bWIgIT0gZmFsc2VcIlxuICAgICAgICAgICAgW2N1cnJlbnRUYWJdPVwiY3VycmVudFRhYlwiXG4gICAgICAgICAgICBbKHNob3dIaWRkZW5GaWxlcyldPVwic2hvd0hpZGRlbkZpbGVzXCJcbiAgICAgICAgICAgIFsoc2hvd1NpZGViYXIpXT1cInNob3dTaWRlYmFyXCJcbiAgICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICAgIFtkcmF3ZXJNb2RlXT1cInRydWVcIlxuICAgICAgICAgICAgKG9uQnJlYWRjcnVtYkNsaWNrKT1cIm9uQnJlYWRjcnVtYkNsaWNrKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8YXBwLXRyZWUtdmlld1xuICAgICAgICAgICAgW2RhdGFdPVwiY3VycmVudFRhYi5zaWRlYmFySXRlbXNcIlxuICAgICAgICAgICAgKGxvYWRDaGlsZHJlbik9XCJvblRyZWVWaWV3TG9hZENoaWxkcmVuKCRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVHJlZVZpZXdTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC9tYXQtZHJhd2VyPlxuICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQ+XG4gICAgICAgIDxhcy1zcGxpdCBkaXJlY3Rpb249XCJob3Jpem9udGFsXCIgW2d1dHRlclNpemVdPVwic2lkZWJhck92ZXJsYXkgPyAwIDogMlwiIFt1bml0XT1cIidwaXhlbCdcIiAoZHJhZ0VuZCk9XCJvblJlc2l6ZUVuZCgpXCI+XG4gICAgICAgICAgICA8YXMtc3BsaXQtYXJlYVxuICAgICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmlsZW1hbmFnZXItc2lkZWJhci1iYWNrZ3JvdW5kLWNvbG9yLCAjMmMyYzJjKVwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMjE1XCJcbiAgICAgICAgICAgICAgICBbbWluU2l6ZV09XCIyMTVcIlxuICAgICAgICAgICAgICAgIFttYXhTaXplXT1cIndpZHRoLzRcIlxuICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cIiFzaWRlYmFyT3ZlcmxheSAmJiBjb25maWcuc2hvd1RyZWV2aWV3ICE9IGZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNpZGViYXJPdmVybGF5ICYmIGNvbmZpZy5zaG93VHJlZXZpZXcgIT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudFRhYi5zZWxlY3Rpb24gPSBbXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLXRyZWUtdmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiY3VycmVudFRhYi5zaWRlYmFySXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRDaGlsZHJlbik9XCJvblRyZWVWaWV3TG9hZENoaWxkcmVuKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVHJlZVZpZXdTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FzLXNwbGl0LWFyZWE+XG4gICAgICAgICAgICA8YXMtc3BsaXQtYXJlYSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHZhcigtLWZpbGVtYW5hZ2VyLWJhY2tncm91bmQtY29sb3IsICMyNzI3MjcpO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdGFiLWhlaWdodF09XCJ0YWJzLmxlbmd0aCA+IDEgPyAnMzZweCcgOiAnMCdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJjdXJyZW50VGFiID0gdGFic1skZXZlbnQuaW5kZXhdXCIgWyhzZWxlY3RlZEluZGV4KV09XCJ0YWJJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGFiLmxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRhYih0YWIpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1maWxlLWdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3TW9kZV09XCJ0YWIudmlld01vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYl09XCJ0YWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyaWRTaXplXT1cImdyaWRTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0T3JkZXJdPVwidGFiLnNvcnRPcmRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGlvbildPVwidGFiLnNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHBhdGgpXT1cInRhYi5wYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXRoQ2hhbmdlKT1cIm9uVGFiUGF0aENoYW5nZSh0YWIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImdyaWRWYWx1ZXNbaV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uR3JpZFZhbHVlQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRGaWxlcyk9XCJvblRhYkxvYWRGaWxlcyh0YWIsICRldmVudClcIlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZVNlbGVjdCk9XCJmaWxlU2VsZWN0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZURibENsaWNrKT1cImZpbGVEYmxDbGljay5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvbGRlclNlbGVjdCk9XCJmb2xkZXJTZWxlY3QubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2xkZXJEYmxDbGljayk9XCJmb2xkZXJEYmxDbGljay5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXMtc3BsaXQtYXJlYT5cbiAgICAgICAgPC9hcy1zcGxpdD5cbiAgICA8L21hdC1kcmF3ZXItY29udGVudD5cbjwvbWF0LWRyYXdlci1jb250YWluZXI+XG5cbiJdfQ==
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL2ZpbGVtYW5hZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9maWxlbWFuYWdlci9maWxlbWFuYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFdkosT0FBTyxFQUFlLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFlLHlCQUF5QixFQUEwQixNQUFNLFVBQVUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQzs7Ozs7Ozs7QUEwSjdCLE1BQU0sT0FBTyxvQkFBb0I7SUFvRTdCLElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLFNB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LGlCQUFpQjs7MkZBSVosb0JBQW9CO2tCQWZoQyxTQUFTOytCQUNJLGlCQUFpQixXQUdsQjt3QkFDTCxrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ3BCLGNBQ1csSUFBSTs7MEJBNkVYLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCOzRIQTFFMUIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNZLFNBQVM7c0JBQXpDLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUNELFFBQVE7c0JBQXJDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNDLE9BQU87c0JBQW5DLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNJLE1BQU07c0JBQXBDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVwQixNQUFNO3NCQUFkLEtBQUs7Z0JBV0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFRRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBSUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFJRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRUYWJHcm91cCwgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0RHJhd2VyQ29udGFpbmVyLCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBBbmd1bGFyU3BsaXRNb2R1bGUgfSBmcm9tICdhbmd1bGFyLXNwbGl0JztcblxuaW1wb3J0IHsgRmlsZUdyaWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtZ3JpZC9maWxlLWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVTb3J0aW5nLCBOR1hfV0VCX0NPTVBPTkVOVFNfQ09ORklHLCBOZ3hXZWJDb21wb25lbnRzQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlc29sdmVyIH0gZnJvbSAnLi9pY29uLXJlc29sdmVyJztcbmltcG9ydCB7IExhenlMb2FkZXJTZXJ2aWNlLCBOR1hfTEFaWV9MT0FERVJfQ09ORklHIH0gZnJvbSAnLi4vbGF6eS1sb2FkZXIvbGF6eS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgdWxpZCB9IGZyb20gJ3VsaWR4JztcblxuLy8gVE9ETzpcbi8qKlxuICogTXVsdGlwbGUgbXVzaWMgLyB2aWRlbyAvIGltYWdlIGZpbGVzIHNlbGVjdGVkIHR1cm5zIGludG8gYSBwbGF5bGlzdFxuICogRHJhZ2dpbmcgbXVzaWMgLyB2aWRlbyAvIGltYWdlIHF1ZXVlcyB0aGUgZmlsZShzKVxuICogQ2FuIHNhdmUgYW5kIGVkaXQgYSBsaXN0IG9mIGZpbGVzIGFzIHBsYXlsaXN0XG4gKiBDYW4gXCJsb29wXCIgXCJyYW5kb21pemVcIlxuICovXG5cbmV4cG9ydCB0eXBlIERpcmVjdG9yeURlc2NyaXB0b3IgPSB7XG4gICAga2luZDogXCJkaXJlY3RvcnlcIixcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nXG4gICAgY29udGVudHM6IHtcbiAgICAgICAgZGlyczogRGlyZWN0b3J5RGVzY3JpcHRvcltdLFxuICAgICAgICBmaWxlczogRmlsZURlc2NyaXB0b3JbXVxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRmlsZURlc2NyaXB0b3IgPSB7XG4gICAga2luZDogXCJmaWxlXCIsXG4gICAgc3RhdHM6IHtcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgICAgICAvLyBTaXplIGZvciB6aXBwZWQgZmlsZVxuICAgICAgICBjb21wcmVzc2VkU2l6ZT86IG51bWJlcixcbiAgICAgICAgYXRpbWVNczogbnVtYmVyO1xuICAgICAgICBtdGltZU1zOiBudW1iZXI7XG4gICAgICAgIGN0aW1lTXM6IG51bWJlcjtcbiAgICAgICAgYmlydGh0aW1lTXM6IG51bWJlcjtcbiAgICB9LFxuICAgIHBhdGg6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZyxcbiAgICBleHQ6IHN0cmluZyxcbiAgICAvLyBDb21tZW50IGZvciBlbnRyaWVzIGluIGEgemlwIGZpbGUuXG4gICAgY29tbWVudD86IHN0cmluZ1xufTtcblxuZXhwb3J0IHR5cGUgRlNEZXNjcmlwdG9yID0gRGlyZWN0b3J5RGVzY3JpcHRvciB8IEZpbGVEZXNjcmlwdG9yO1xuXG5leHBvcnQgdHlwZSBGaWxlVmlld1RhYiA9IHtcbiAgICBpZDogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgYnJlYWRjcnVtYjoge1xuICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICBsYWJlbDogc3RyaW5nXG4gICAgfVtdLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBzZWxlY3Rpb246IEZTRGVzY3JpcHRvcltdLFxuICAgIHZpZXdNb2RlOiBcImdyaWRcIiB8IFwibGlzdFwiLFxuICAgIGhpc3RvcnlJbmRleDogbnVtYmVyLFxuICAgIGhpc3Rvcnk6IHN0cmluZ1tdLFxuICAgIHNpZGViYXJJdGVtczogRlNEZXNjcmlwdG9yW10sXG4gICAgc29ydE9yZGVyOiBGaWxlU29ydGluZ1xufVxuXG4vLyBUT0RPOiByZXBsYWNlIGh0dHAgY29uZmlnc1xudHlwZSBIdHRwQ29uZmlndXJhdGlvbiA9IChcbiAgICB7IHVybDogc3RyaW5nIH0gfFxuICAgIHsgdXJsVGVtcGxhdGU6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZyB9XG4pICYge1xuICAgIG1ldGhvZD86IFwiZ2V0XCIgfCBcInB1dFwiIHwgXCJwb3N0XCIgfCBcInBhdGNoXCIgfCBcImRlbGV0ZVwiLFxuICAgIGhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG59XG5cbmV4cG9ydCB0eXBlIE5neEZpbGVNYW5hZ2VyQ29uZmlndXJhdGlvbiA9IFBhcnRpYWw8e1xuICAgIC8qKlxuICAgICAqIEluaXRpYWwgcGF0aFxuICAgICAqL1xuICAgIHBhdGg6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSByb290IHBhdGggKHdpbGwgYXBwZWFyIGFzICcvJykuXG4gICAgICogRGVmYXVsdHMgdG8gJy8nLlxuICAgICAqXG4gICAgICogVXNlciBjYW5ub3QgdmlldyBvdXRzaWRlIG9mIHRoaXMgcGF0aC5cbiAgICAgKiAgIChOb3QgdG8gYmUgdXNlZCBhcyBhIHNlY3VyaXR5IG1lYXN1cmUhKVxuICAgICAqL1xuICAgIGNocm9vdFBhdGg6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFJlc3RyaWN0IHVzZXJzIHRvIG9ubHkgbmF2aWdhdGUgYXJvdW5kIHRvIHN1YnBhdGhzIG9mIHRoZSBzcGVjaWZpZWQgYHBhdGhgXG4gICAgICovXG4gICAgbmF2aWdhdGVPbmx5VG9EZXNjZW5kYW50czogYm9vbGVhbixcbiAgICBzaG93QnJlYWRjcnVtYjogYm9vbGVhbixcbiAgICBzaG93VHJlZXZpZXc6IGJvb2xlYW4sXG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBcInJvb3RcIiBwYXRoIGAvYFxuICAgICAqIERlZmF1bHRzIHRvIFwiU3RvcmFnZVwiXG4gICAgICovXG4gICAgcm9vdE5hbWU6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGJlIHN0b3JlZCBpbiBoaXN0b3J5LlxuICAgICAqL1xuICAgIG1heEhpc3RvcnlMZW5ndGg6IG51bWJlcixcblxuICAgIGFwaVNldHRpbmdzOiB7XG4gICAgICAgIGxpc3RFbnRyaWVzVXJsPzogc3RyaW5nLFxuICAgICAgICBsaXN0RW50cmllc1VybFRlbXBsYXRlPzogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nLFxuICAgICAgICBkb3dubG9hZEVudHJ5VXJsPzogc3RyaW5nLFxuICAgICAgICBkb3dubG9hZEVudHJ5VXJsVGVtcGxhdGU/OiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICAgICAgIHVwbG9hZEVudHJ5VXJsPzogc3RyaW5nLFxuICAgICAgICB1cGxvYWRFbnRyeVVybFRlbXBsYXRlPzogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nLFxuICAgICAgICBkZWxldGVFbnRyeVVybD86IHN0cmluZyxcbiAgICAgICAgZGVsZXRlRW50cnlVcmxUZW1wbGF0ZT86IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgICAgICAgcmVuYW1lRW50cnlVcmw/OiBzdHJpbmcsXG4gICAgICAgIHJlbmFtZUVudHJ5VXJsVGVtcGxhdGU/OiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICAgICAgIGNyZWF0ZURpcmVjdG9yeVVybD86IHN0cmluZyxcbiAgICAgICAgY3JlYXRlRGlyZWN0b3J5VXJsVGVtcGxhdGU/OiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmdcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggdGhhdCBpbWFnZXMgYXJlIGxvYWRlZCBmcm9tLlxuICAgICAqIERlZmF1bHQgdmFsdWUgYC9hc3NldHMvZG90Z2xpdGNoL3dlYmNvbXBvbmVudHMvYFxuICAgICAqL1xuICAgIGFzc2V0UGF0aDogc3RyaW5nLFxuICAgIHNpZGViYXJMb2NhdGlvblN0cmF0ZWd5OiBcImtub3duXCIgfCBcImN1cnJlbnREaXJlY3RvcnlcIixcblxuICAgIGljb25SZXNvbHZlcjogKGZpbGU6IEZTRGVzY3JpcHRvcikgPT4gc3RyaW5nLFxuXG4gICAgaW1hZ2VTaXplOiBcIm5vcm1hbFwiIHwgXCJzbWFsbFwiIHwgXCJodWdlXCIsXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIHNlbGVjdGlvbk1vZGU6IFwic2luZ2xlXCIgfCBcIm11bHRpcGxlXCIsXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGRldGVybWluZXMgaWYgdGhlIGZpbGVtYW5hZ2VyIHNob3dzIHNlbGVjdGVkIGVudHJpZXNcbiAgICAgKlxuICAgICAqIElmIHNldCB0byBgZm9jdXNGaWxlc2AsIGZpbGUgcGF0aHMgdGhhdCBtYXRjaCBmcm9tIHRoZSBwcm92aWRlZCBgZm9jdXNlZEZpbGVzYFxuICAgICAqIHdpbGwgYmUgaGlnaGxpZ2h0ZWQsIGFuZCBjYW4gYmUgc2VsZWN0ZWQgLyBkZXNlbGVjdGVkLlxuICAgICAqL1xuICAgIG1vZGU6IFwiZm9jdXNGaWxlc1wiIHwgXCJub3JtYWxcIixcbiAgICBmb2N1c2VkRmlsZXM6IHN0cmluZ1tdXG59PlxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1maWxlbWFuYWdlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVtYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlbWFuYWdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQW5ndWxhclNwbGl0TW9kdWxlLFxuICAgICAgICBGaWxlR3JpZENvbXBvbmVudCxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVHJlZVZpZXdDb21wb25lbnRcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRmlsZW1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJykgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuICAgIEBWaWV3Q2hpbGRyZW4oRmlsZUdyaWRDb21wb25lbnQpIGZpbGVHcmlkczogUXVlcnlMaXN0PEZpbGVHcmlkQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkKFRyZWVWaWV3Q29tcG9uZW50KSB0cmVlVmlldzogVHJlZVZpZXdDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZChUb29sYmFyQ29tcG9uZW50KSB0b29sYmFyOiBUb29sYmFyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoTWF0RHJhd2VyQ29udGFpbmVyKSBkcmF3ZXI6IE1hdERyYXdlckNvbnRhaW5lcjtcblxuICAgIEBJbnB1dCgpIGNvbmZpZzogTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uID0ge1xuICAgICAgICBhcGlTZXR0aW5nczoge1xuICAgICAgICAgICAgbGlzdEVudHJpZXNVcmw6IGAvYXBpL2ZpbGVzeXN0ZW0vYCxcbiAgICAgICAgICAgIHVwbG9hZEVudHJ5VXJsOiBgL2FwaS9maWxlc3lzdGVtL2AsXG4gICAgICAgICAgICBkb3dubG9hZEVudHJ5VXJsOiBgL2FwaS9maWxlc3lzdGVtL2AsXG4gICAgICAgICAgICBkZWxldGVFbnRyeVVybDogYC9hcGkvZmlsZXN5c3RlbS9gLFxuICAgICAgICAgICAgY3JlYXRlRGlyZWN0b3J5VXJsOiBgL2FwaS9maWxlc3lzdGVtL2ZvbGRlcmAsXG4gICAgICAgICAgICByZW5hbWVFbnRyeVVybDogYC9hcGkvZmlsZXN5c3RlbS9yZW5hbWVgXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgQElucHV0KCkgZ3JpZFNpemU6IFwic21hbGxcIiB8IFwibm9ybWFsXCIgfCBcImxhcmdlXCIgPSBcIm5vcm1hbFwiO1xuICAgIEBJbnB1dCgpIG1vZGU6IFwiZ3JpZFwiIHwgXCJsaXN0XCI7XG4gICAgQElucHV0KCkgY29udGV4dFRhZ3M6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuXG5cbiAgICBASW5wdXQoKSB2YWx1ZTogRlNEZXNjcmlwdG9yW10gPSBbXTtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZTRGVzY3JpcHRvcltdPigpO1xuXG4gICAgZ3JpZFZhbHVlczogRlNEZXNjcmlwdG9yW11bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBmb2N1c2VkIGZpbGVzIGNoYW5nZS5cbiAgICAgKiBPbmx5IGF2YWlsYWJsZSBpbiBgZm9jdXNGaWxlc2AgbW9kZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZm9jdXNlZEZpbGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gYSBmaWxlIGlzIHVwbG9hZGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBmaWxlVXBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gYSBmaWxlIGlzIGRvd25sb2FkZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIGZpbGVEb3dubG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZmlsZVJlbmFtZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZmlsZURlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZmlsZUNvcHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGZpbGVQYXN0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBmaWxlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlRGVzY3JpcHRvcj4oKTtcbiAgICBAT3V0cHV0KCkgZmlsZURibENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlRGVzY3JpcHRvcj4oKTtcbiAgICBAT3V0cHV0KCkgZm9sZGVyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEaXJlY3RvcnlEZXNjcmlwdG9yPigpO1xuICAgIEBPdXRwdXQoKSBmb2xkZXJEYmxDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RGlyZWN0b3J5RGVzY3JpcHRvcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gbXVsdGlwbGUgZmlsZSBzZWxlY3Rpb25zIGNoYW5nZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmlsZXNTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEZTRGVzY3JpcHRvcltdPigpO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gYW55IHNlbGVjdGlvbiBjaGFuZ2VzLCBzaW5nbGUgb3IgbXVsdGlwbGUgZmlsZXMuXG4gICAgICovXG4gICAgLy8gQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RlNEZXNjcmlwdG9yW10+KCk7XG5cbiAgICBzaG93SGlkZGVuRmlsZXMgPSBmYWxzZTtcbiAgICBzaG93U2lkZWJhciA9IHRydWU7XG4gICAgc2lkZWJhck92ZXJsYXkgPSBmYWxzZTtcbiAgICB3aWR0aCA9IDA7XG5cbiAgICBpc0hvbWVBbmNlc3RvciA9IGZhbHNlO1xuXG4gICAgY3VycmVudFRhYjogRmlsZVZpZXdUYWIgPSB7fSBhcyBhbnk7XG4gICAgZ2V0IGN1cnJlbnRGaWxlR3JpZCgpIHsgcmV0dXJuIHRoaXMuZmlsZUdyaWRzLmdldCh0aGlzLnRhYkluZGV4KSB9XG4gICAgdGFiSW5kZXggPSAwO1xuICAgIHRhYnM6IEZpbGVWaWV3VGFiW10gPSBbXTtcblxuICAgIGljb25SZXNvbHZlcjogSWNvblJlc29sdmVyO1xuXG4gICAgY29uc3RydWN0b3IgKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5HWF9XRUJfQ09NUE9ORU5UU19DT05GSUcpIHJlYWRvbmx5IGxpYkNvbmZpZzogTmd4V2ViQ29tcG9uZW50c0NvbmZpZyA9IHt9LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxhenlMb2FkZXI6IExhenlMb2FkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZmV0Y2g6IEZldGNoXG4gICAgKSB7XG4gICAgICAgIGxhenlMb2FkZXIucmVnaXN0ZXJDb21wb25lbnQoe1xuICAgICAgICAgICAgaWQ6IFwiZm9sZGVyLXJlbmFtZVwiLFxuICAgICAgICAgICAgZ3JvdXA6IFwiQGRvdGdsaXRjaC9uZ3gtd2ViLWNvbXBvbmVudHNcIixcbiAgICAgICAgICAgIGxvYWQ6ICgpID0+IGltcG9ydCgnLi9mb2xkZXItcmVuYW1lL2ZvbGRlci1yZW5hbWUuY29tcG9uZW50JylcbiAgICAgICAgfSlcblxuICAgICAgICB0aGlzLmljb25SZXNvbHZlciA9IG5ldyBJY29uUmVzb2x2ZXIobGliQ29uZmlnLmFzc2V0UGF0aCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFRhYih0aGlzLmNvbmZpZy5wYXRoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiID0gdGhpcy50YWJzWzBdO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5vblJlc2l6ZSgpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vblJlc2l6ZSgpLCAyNTApO1xuICAgIH1cblxuICAgIG9uVHJlZVZpZXdMb2FkQ2hpbGRyZW4oe2l0ZW0sIGNifSkge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5hcGlTZXR0aW5ncy5saXN0RW50cmllc1VybFRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLmxpc3RFbnRyaWVzVXJsVGVtcGxhdGUoaXRlbS5wYXRoICsgaXRlbS5uYW1lKVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy5hcGlTZXR0aW5ncy5saXN0RW50cmllc1VybFxuXG4gICAgICAgIHRoaXMuZmV0Y2gucG9zdCh1cmwsIHsgcGF0aDogaXRlbS5wYXRoICsgaXRlbS5uYW1lLCBzaG93SGlkZGVuOiB0aGlzLnNob3dIaWRkZW5GaWxlcyB9KVxuICAgICAgICAgICAgLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcnM6IERpcmVjdG9yeURlc2NyaXB0b3JbXSA9IGRhdGEuZGlycztcbiAgICAgICAgICAgICAgICBjYihkaXJzKTtcbiAgICAgICAgICAgIH0pXG4gICAgfVxuXG4gICAgaW5pdFRhYihwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50YWJzLnB1c2godGhpcy5jdXJyZW50VGFiID0ge1xuICAgICAgICAgICAgaWQ6IHVsaWQoKSxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldFRhYkxhYmVsKHBhdGgpLFxuICAgICAgICAgICAgYnJlYWRjcnVtYjogdGhpcy5jYWxjQnJlYWRjcnVtYihwYXRoKSxcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBzZWxlY3Rpb246IFtdLFxuICAgICAgICAgICAgdmlld01vZGU6IHRoaXMubW9kZSB8fCAnZ3JpZCcsXG4gICAgICAgICAgICBoaXN0b3J5SW5kZXg6IDAsXG4gICAgICAgICAgICBoaXN0b3J5OiBbXSxcbiAgICAgICAgICAgIHNpZGViYXJJdGVtczogW10sXG4gICAgICAgICAgICBzb3J0T3JkZXI6ICdhLXonXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy50YWJzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjbG9zZVRhYih0YWI6IEZpbGVWaWV3VGFiKSB7XG4gICAgICAgIHRoaXMudGFicy5zcGxpY2UodGhpcy50YWJzLmZpbmRJbmRleCh0ID0+IHQuaWQgPT0gdGFiLmlkKSwgMSk7XG4gICAgfVxuXG4gICAgY2FsY0JyZWFkY3J1bWIocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghcGF0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShcIiMvXCIsICcvJyk7XG5cbiAgICAgICAgLy8gSWYgd2UncmUgYWN0aW5nIGxpa2Ugd2UncmUgaW4gYSBjaGFuZ2VkIHJvb3QsIHdlIHdpcGUgb3V0XG4gICAgICAgIC8vIGJyZWFkY3J1bWJzIGJlbG93IHRoZSByb290XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jaHJvb3RQYXRoKSB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKHRoaXMuY29uZmlnLmNocm9vdFBhdGgsICcnKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9eXFwvLywgdGhpcy5jb25maWcuY2hyb290UGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gcGFydHMubWFwKChwLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHBhcnRzLnNsaWNlKDAsIGkgKyAxKS5qb2luKCcvJyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogKHRoaXMuY29uZmlnLmNocm9vdFBhdGggKyAocGF0aCB8fCAnLycpKS5yZXBsYWNlKC9cXC8rL2csICcvJyksXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwIHx8IFwiXCJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy8nKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBhcnRzLm1hcCgocCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBwYXJ0cy5zbGljZSgwLCBpICsgMSkuam9pbignLycpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHBhdGggfHwgJy8nLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcCB8fCBcIlwiXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CcmVhZGNydW1iQ2xpY2soY3J1bWIpIHtcbiAgICAgICAgaWYgKGNydW1iLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIucGF0aCA9IGNydW1iLmlkO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiLmJyZWFkY3J1bWIgPSB0aGlzLmNhbGNCcmVhZGNydW1iKGNydW1iLmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFiUGF0aENoYW5nZSh0YWI6IEZpbGVWaWV3VGFiKSB7XG4gICAgICAgIHRhYi5sYWJlbCA9IHRoaXMuZ2V0VGFiTGFiZWwodGFiLnBhdGgpO1xuICAgICAgICB0YWIuYnJlYWRjcnVtYiA9IHRoaXMuY2FsY0JyZWFkY3J1bWIodGFiLnBhdGgpO1xuXG4gICAgICAgIHRhYi5oaXN0b3J5SW5kZXgrKztcbiAgICAgICAgdGFiLmhpc3RvcnkucHVzaCh0YWIucGF0aCk7XG4gICAgICAgIHRhYi5oaXN0b3J5LnNwbGljZSh0eXBlb2YgdGhpcy5jb25maWcubWF4SGlzdG9yeUxlbmd0aCA9PSAnbnVtYmVyJyA/IHRoaXMuY29uZmlnLm1heEhpc3RvcnlMZW5ndGggOiA1MCk7XG4gICAgfVxuXG4gICAgb25UcmVlVmlld1NlbGVjdChpdGVtOiBGU0Rlc2NyaXB0b3IpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiLnBhdGggPSBpdGVtLnBhdGggKyBpdGVtLm5hbWU7XG4gICAgfVxuXG4gICAgb25UYWJMb2FkRmlsZXModGFiOiBGaWxlVmlld1RhYiwgZmlsZXM6IEZTRGVzY3JpcHRvcltdKSB7XG4gICAgICAgIGlmICh0YWIuc2lkZWJhckl0ZW1zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0YWIuc2lkZWJhckl0ZW1zID0gZmlsZXMuZmlsdGVyKGYgPT4gZi5raW5kID09IFwiZGlyZWN0b3J5XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gdGFiLnNpZGViYXJJdGVtcztcbiAgICAgICAgY29uc3QgZGlySXRlbXMgPSBmaWxlcy5maWx0ZXIoZiA9PiBmLmtpbmQgPT0gXCJkaXJlY3RvcnlcIik7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVjdXJzZShpdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiB0YWIucGF0aD8uc3RhcnRzV2l0aChpLnBhdGgpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YXJnZXQgPSByZWN1cnNlKGN1cnJlbnRJdGVtcyk7XG5cbiAgICAgICAgaWYgKHRhcmdldClcbiAgICAgICAgICAgIHRhcmdldFsnX2NoaWxkcmVuJ10gPSBkaXJJdGVtcztcblxuICAgICAgICB0YWIuc2lkZWJhckl0ZW1zID0gY3VycmVudEl0ZW1zO1xuICAgIH1cblxuICAgIG9uR3JpZFZhbHVlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5ncmlkVmFsdWVzLmZsYXQoMSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKVxuICAgIH1cblxuICAgIGdldFRhYkxhYmVsKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcGF0aD8uc3BsaXQoJy8nKS5maWx0ZXIocCA9PiBwKS5wb3AoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgLy8gVHJpZ2dlciByZS1jYWxjdWxhdGlvbiBvZiB0aGUgdmlld1xuICAgICAgICB0aGlzLmZpbGVHcmlkcy5mb3JFYWNoKGcgPT4gZy5yZXNpemUoKSk7XG5cbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBib3VuZHMgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy53aWR0aCA9IGJvdW5kcy53aWR0aDtcblxuICAgICAgICAvLyBJZiB0aGUgdmlldyBhcmVhIGlzIGxlc3MgdGhhbiA2NTBweCB3aWRlLCB1c2Ugb3ZlcmxheSB0aGUgc2lkZWJhciBwYW5lbFxuICAgICAgICB0aGlzLnNpZGViYXJPdmVybGF5ID0gYm91bmRzLndpZHRoIDwgNjUwO1xuICAgICAgICBpZiAodGhpcy5zaWRlYmFyT3ZlcmxheSA9PSBmYWxzZSAmJiBbLi4udGhpcy5kcmF3ZXIuX2RyYXdlcnNdWzBdLm9wZW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kcmF3ZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uUmVzaXplRW5kKCkge1xuICAgICAgICB0aGlzLm9uUmVzaXplKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uUmVzaXplKCksIDI1MCk7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VGFiLnZpZXdNb2RlID09IFwiZ3JpZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFiLnNlbGVjdGlvblxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5maWxlR3JpZHMuZm9yRWFjaChnID0+IGcuY2xlYXJTZWxlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgLy8gVGVsbCB0aGUgY2hpbGQgZ3JpZCB0byByZWZyZXNoIGl0J3Mgc29ydGluZ1xuICAgIHJlZnJlc2hTb3J0aW5nKCkge1xuICAgICAgICB0aGlzLmZpbGVHcmlkcy5mb3JFYWNoKGcgPT4gZy5zb3J0KCkpO1xuICAgIH1cblxuICAgIHJlZnJlc2hEYXRhKCkge1xuICAgICAgICB0aGlzLmZpbGVHcmlkcy5mb3JFYWNoKGcgPT4gZy5sb2FkRm9sZGVyKCkpO1xuICAgIH1cblxuICAgIGdldEZpbGVEYXRhKGZpbGU6IEZpbGVEZXNjcmlwdG9yKSB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmNvbmZpZy5hcGlTZXR0aW5ncy5yZW5hbWVFbnRyeVVybFRlbXBsYXRlXG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLnJlbmFtZUVudHJ5VXJsVGVtcGxhdGUoZmlsZS5wYXRoICsgZmlsZS5uYW1lKVxuICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy5hcGlTZXR0aW5ncy5yZW5hbWVFbnRyeVVybDtcblxuICAgICAgICB1cmwgPSAodXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPycpICsgYGRpcj0ke2ZpbGUucGF0aH0mZmlsZT0ke2ZpbGUubmFtZX1gO1xuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgZG93bmxvYWRGaWxlKGZpbGU6IEZTRGVzY3JpcHRvcikge1xuICAgICAgICBsZXQgcGF0aCA9IGZpbGUucGF0aCArIGZpbGUubmFtZTtcbiAgICAgICAgaWYgKGZpbGUua2luZCA9PSBcImRpcmVjdG9yeVwiICYmICFwYXRoLmVuZHNXaXRoKCcvJykpXG4gICAgICAgICAgICBwYXRoICs9IFwiL1wiO1xuXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29uZmlnLmFwaVNldHRpbmdzLmRvd25sb2FkRW50cnlVcmxUZW1wbGF0ZVxuICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy5hcGlTZXR0aW5ncy5kb3dubG9hZEVudHJ5VXJsVGVtcGxhdGUocGF0aClcbiAgICAgICAgICAgIDogdGhpcy5jb25maWcuYXBpU2V0dGluZ3MuZG93bmxvYWRFbnRyeVVybDtcblxuICAgICAgICAvLyB3aW5kb3cub3Blbih0YXJnZXQpO1xuICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZS5uYW1lO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgbGluay5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5maWxlRG93bmxvYWQubmV4dChmaWxlKTtcbiAgICB9XG59XG4iLCI8YXBwLXRvb2xiYXJcbiAgICBbY3VycmVudFRhYl09XCJjdXJyZW50VGFiXCJcbiAgICBbKHNob3dIaWRkZW5GaWxlcyldPVwic2hvd0hpZGRlbkZpbGVzXCJcbiAgICBbKHNob3dTaWRlYmFyKV09XCJzaG93U2lkZWJhclwiXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgIFtzaG93QmFyZU1pbmltdW1dPVwid2lkdGggPCA1MDAgJiYgY29uZmlnLnNob3dCcmVhZGNydW1iICE9IGZhbHNlXCJcbiAgICAob25CcmVhZGNydW1iQ2xpY2spPVwib25CcmVhZGNydW1iQ2xpY2soJGV2ZW50KVwiXG4vPlxuXG48bWF0LWRyYXdlci1jb250YWluZXIgc3R5bGU9XCJmbGV4OiAxXCI+XG4gICAgPG1hdC1kcmF3ZXIgI2RyYXdlciBtb2RlPVwib3ZlclwiPlxuICAgICAgICBAaWYgKHdpZHRoIDwgNTAwICYmIGNvbmZpZy5zaG93QnJlYWRjcnVtYiAhPSBmYWxzZSkge1xuICAgICAgICAgICAgPGFwcC10b29sYmFyXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRUYWJdPVwiY3VycmVudFRhYlwiXG4gICAgICAgICAgICAgICAgWyhzaG93SGlkZGVuRmlsZXMpXT1cInNob3dIaWRkZW5GaWxlc1wiXG4gICAgICAgICAgICAgICAgWyhzaG93U2lkZWJhcildPVwic2hvd1NpZGViYXJcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICAgICAgICBbZHJhd2VyTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAob25CcmVhZGNydW1iQ2xpY2spPVwib25CcmVhZGNydW1iQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIDxhcHAtdHJlZS12aWV3XG4gICAgICAgICAgICBbZGF0YV09XCJjdXJyZW50VGFiLnNpZGViYXJJdGVtc1wiXG4gICAgICAgICAgICAobG9hZENoaWxkcmVuKT1cIm9uVHJlZVZpZXdMb2FkQ2hpbGRyZW4oJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25UcmVlVmlld1NlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICA8L21hdC1kcmF3ZXI+XG4gICAgPG1hdC1kcmF3ZXItY29udGVudD5cbiAgICAgICAgPGFzLXNwbGl0IGRpcmVjdGlvbj1cImhvcml6b250YWxcIiBbZ3V0dGVyU2l6ZV09XCJzaWRlYmFyT3ZlcmxheSA/IDAgOiAyXCIgW3VuaXRdPVwiJ3BpeGVsJ1wiIChkcmFnRW5kKT1cIm9uUmVzaXplRW5kKClcIj5cbiAgICAgICAgICAgIDxhcy1zcGxpdC1hcmVhXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1maWxlbWFuYWdlci1zaWRlYmFyLWJhY2tncm91bmQtY29sb3IsICMyYzJjMmMpXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMTVcIlxuICAgICAgICAgICAgICAgIFttaW5TaXplXT1cIjIxNVwiXG4gICAgICAgICAgICAgICAgW21heFNpemVdPVwid2lkdGgvNFwiXG4gICAgICAgICAgICAgICAgW3Zpc2libGVdPVwiIXNpZGViYXJPdmVybGF5ICYmIGNvbmZpZy5zaG93VHJlZXZpZXcgIT0gZmFsc2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoIXNpZGViYXJPdmVybGF5ICYmIGNvbmZpZy5zaG93VHJlZXZpZXcgIT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRUYWIuc2VsZWN0aW9uID0gW11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyZWUtdmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImN1cnJlbnRUYWIuc2lkZWJhckl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZENoaWxkcmVuKT1cIm9uVHJlZVZpZXdMb2FkQ2hpbGRyZW4oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVHJlZVZpZXdTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2FzLXNwbGl0LWFyZWE+XG4gICAgICAgICAgICA8YXMtc3BsaXQtYXJlYSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHZhcigtLWZpbGVtYW5hZ2VyLWJhY2tncm91bmQtY29sb3IsICMyNzI3MjcpO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdGFiLWhlaWdodF09XCJ0YWJzLmxlbmd0aCA+IDEgPyAnMzZweCcgOiAnMCdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJjdXJyZW50VGFiID0gdGFic1skZXZlbnQuaW5kZXhdXCIgWyhzZWxlY3RlZEluZGV4KV09XCJ0YWJJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RhYi5sYWJlbH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VUYWIodGFiKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1maWxlLWdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlld01vZGVdPVwidGFiLnZpZXdNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiXT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkU2l6ZV09XCJncmlkU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRPcmRlcl09XCJ0YWIuc29ydE9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGlvbildPVwidGFiLnNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhwYXRoKV09XCJ0YWIucGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGhDaGFuZ2UpPVwib25UYWJQYXRoQ2hhbmdlKHRhYilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImdyaWRWYWx1ZXNbaV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkdyaWRWYWx1ZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZEZpbGVzKT1cIm9uVGFiTG9hZEZpbGVzKHRhYiwgJGV2ZW50KVwiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZVNlbGVjdCk9XCJmaWxlU2VsZWN0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVEYmxDbGljayk9XCJmaWxlRGJsQ2xpY2submV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9sZGVyU2VsZWN0KT1cImZvbGRlclNlbGVjdC5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2xkZXJEYmxDbGljayk9XCJmb2xkZXJEYmxDbGljay5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXMtc3BsaXQtYXJlYT5cbiAgICAgICAgPC9hcy1zcGxpdD5cbiAgICA8L21hdC1kcmF3ZXItY29udGVudD5cbjwvbWF0LWRyYXdlci1jb250YWluZXI+XG5cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  import { Component, Input, EventEmitter, Output } from '@angular/core';
2
- import { NgForOf, NgIf } from '@angular/common';
3
2
  import * as i0 from "@angular/core";
4
3
  export class GtkBreadcrumbComponent {
5
4
  constructor() {
@@ -8,14 +7,11 @@ export class GtkBreadcrumbComponent {
8
7
  ngOnInit() {
9
8
  }
10
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GtkBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: GtkBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", inputs: { crumbs: "crumbs", config: "config" }, outputs: { crumbClick: "crumbClick" }, ngImport: i0, template: "<button (click)=\"crumbClick.next({ id: config.chrootPath || '/', label: ''})\">{{config.rootName || 'Storage'}}</button>\n<ng-container *ngFor=\"let crumb of crumbs\">\n <button *ngIf=\"crumb.label.trim()\" (click)=\"crumbClick.next(crumb)\">{{crumb.label}}</button>\n</ng-container>\n", styles: [":host{border:1px solid var(--filemanager-breadcrumb-border-color, #171717);border-bottom-color:var(--filemanager-breadcrumb-border-bottom-color, #000);border-radius:6px;font-size:14px;display:flex;align-self:center;align-items:center;margin:0;gap:6px;height:30px;background:var(--filemanager-breadcrumb-background, #444)}button{position:relative;padding:0 6px;background-color:#0000;border:none;transition:color .2s ease;height:100%;color:var(--filemanager-breadcrumb-color, #bbb);border-radius:6px}button:hover{background-color:var(--filemanager-breadcrumb-button-hover-background-color, #4a4a4a);color:var(--filemanager-breadcrumb-button-hover-color, #fff)}button:after{content:\"/\";position:absolute;left:calc(100% + 1px);z-index:999}button:last-of-type{font-weight:700}button:last-of-type:after{content:\"\"}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: GtkBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", inputs: { crumbs: "crumbs", config: "config" }, outputs: { crumbClick: "crumbClick" }, ngImport: i0, template: "<button (click)=\"crumbClick.next({ id: config.chrootPath || '/', label: ''})\">\n {{config.rootName || 'Storage'}}\n</button>\n\n@for (crumb of crumbs; track crumb) {\n @if (crumb.label?.trim()?.length > 0) {\n <button (click)=\"crumbClick.next(crumb)\">{{crumb.label}}</button>\n }\n}\n", styles: [":host{border:1px solid var(--filemanager-breadcrumb-border-color, #171717);border-bottom-color:var(--filemanager-breadcrumb-border-bottom-color, #000);border-radius:6px;font-size:14px;display:flex;align-self:center;align-items:center;margin:0;gap:6px;height:30px;background:var(--filemanager-breadcrumb-background, #444)}button{position:relative;padding:0 6px;background-color:#0000;border:none;transition:color .2s ease;height:100%;color:var(--filemanager-breadcrumb-color, #bbb);border-radius:6px}button:hover{background-color:var(--filemanager-breadcrumb-button-hover-background-color, #4a4a4a);color:var(--filemanager-breadcrumb-button-hover-color, #fff)}button:after{content:\"/\";position:absolute;left:calc(100% + 1px);z-index:999}button:last-of-type{font-weight:700}button:last-of-type:after{content:\"\"}\n"] }); }
12
11
  }
13
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GtkBreadcrumbComponent, decorators: [{
14
13
  type: Component,
15
- args: [{ selector: 'app-breadcrumb', imports: [
16
- NgForOf,
17
- NgIf
18
- ], standalone: true, template: "<button (click)=\"crumbClick.next({ id: config.chrootPath || '/', label: ''})\">{{config.rootName || 'Storage'}}</button>\n<ng-container *ngFor=\"let crumb of crumbs\">\n <button *ngIf=\"crumb.label.trim()\" (click)=\"crumbClick.next(crumb)\">{{crumb.label}}</button>\n</ng-container>\n", styles: [":host{border:1px solid var(--filemanager-breadcrumb-border-color, #171717);border-bottom-color:var(--filemanager-breadcrumb-border-bottom-color, #000);border-radius:6px;font-size:14px;display:flex;align-self:center;align-items:center;margin:0;gap:6px;height:30px;background:var(--filemanager-breadcrumb-background, #444)}button{position:relative;padding:0 6px;background-color:#0000;border:none;transition:color .2s ease;height:100%;color:var(--filemanager-breadcrumb-color, #bbb);border-radius:6px}button:hover{background-color:var(--filemanager-breadcrumb-button-hover-background-color, #4a4a4a);color:var(--filemanager-breadcrumb-button-hover-color, #fff)}button:after{content:\"/\";position:absolute;left:calc(100% + 1px);z-index:999}button:last-of-type{font-weight:700}button:last-of-type:after{content:\"\"}\n"] }]
14
+ args: [{ selector: 'app-breadcrumb', standalone: true, template: "<button (click)=\"crumbClick.next({ id: config.chrootPath || '/', label: ''})\">\n {{config.rootName || 'Storage'}}\n</button>\n\n@for (crumb of crumbs; track crumb) {\n @if (crumb.label?.trim()?.length > 0) {\n <button (click)=\"crumbClick.next(crumb)\">{{crumb.label}}</button>\n }\n}\n", styles: [":host{border:1px solid var(--filemanager-breadcrumb-border-color, #171717);border-bottom-color:var(--filemanager-breadcrumb-border-bottom-color, #000);border-radius:6px;font-size:14px;display:flex;align-self:center;align-items:center;margin:0;gap:6px;height:30px;background:var(--filemanager-breadcrumb-background, #444)}button{position:relative;padding:0 6px;background-color:#0000;border:none;transition:color .2s ease;height:100%;color:var(--filemanager-breadcrumb-color, #bbb);border-radius:6px}button:hover{background-color:var(--filemanager-breadcrumb-button-hover-background-color, #4a4a4a);color:var(--filemanager-breadcrumb-button-hover-color, #fff)}button:after{content:\"/\";position:absolute;left:calc(100% + 1px);z-index:999}button:last-of-type{font-weight:700}button:last-of-type:after{content:\"\"}\n"] }]
19
15
  }], ctorParameters: () => [], propDecorators: { crumbs: [{
20
16
  type: Input
21
17
  }], crumbClick: [{
@@ -23,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
23
19
  }], config: [{
24
20
  type: Input
25
21
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvZmlsZW1hbmFnZXIvdG9vbGJhci9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL3Rvb2xiYXIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFnQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBa0I5RCxNQUFNLE9BQU8sc0JBQXNCO0lBUS9CO1FBSlUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFJdEMsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs4R0FYUSxzQkFBc0I7a0dBQXRCLHNCQUFzQixpS0NuQm5DLG1TQUlBLHkyQkRVUSxPQUFPLG1IQUNQLElBQUk7OzJGQUlDLHNCQUFzQjtrQkFWbEMsU0FBUzsrQkFDSSxnQkFBZ0IsV0FHakI7d0JBQ0wsT0FBTzt3QkFDUCxJQUFJO3FCQUNQLGNBQ1csSUFBSTt3REFLUCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vZmlsZW1hbmFnZXIuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQnJlYWRjcnVtYiA9IHtcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtYnJlYWRjcnVtYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nRm9yT2YsXG4gICAgICAgIE5nSWZcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgR3RrQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvLyBDb3VsZCBhbHNvIGRvIG9iamVjdCBhcnJheT9cbiAgICBASW5wdXQoKSBjcnVtYnM6IEJyZWFkY3J1bWJbXTtcbiAgICBAT3V0cHV0KCkgY3J1bWJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QnJlYWRjcnVtYj4oKTtcblxuICAgIEBJbnB1dCgpIGNvbmZpZzogTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cbn1cbiIsIjxidXR0b24gKGNsaWNrKT1cImNydW1iQ2xpY2submV4dCh7IGlkOiBjb25maWcuY2hyb290UGF0aCB8fCAnLycsIGxhYmVsOiAnJ30pXCI+e3tjb25maWcucm9vdE5hbWUgfHwgJ1N0b3JhZ2UnfX08L2J1dHRvbj5cbjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNydW1iIG9mIGNydW1ic1wiPlxuICAgIDxidXR0b24gKm5nSWY9XCJjcnVtYi5sYWJlbC50cmltKClcIiAoY2xpY2spPVwiY3J1bWJDbGljay5uZXh0KGNydW1iKVwiPnt7Y3J1bWIubGFiZWx9fTwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvZmlsZW1hbmFnZXIvdG9vbGJhci9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL3Rvb2xiYXIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYy9FLE1BQU0sT0FBTyxzQkFBc0I7SUFRL0I7UUFKVSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUl0QyxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzhHQVhRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlLQ2RuQyxrVEFTQTs7MkZES2Esc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLGdCQUFnQixjQUdkLElBQUk7d0RBS1AsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vZmlsZW1hbmFnZXIuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQnJlYWRjcnVtYiA9IHtcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtYnJlYWRjcnVtYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEd0a0JyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLy8gQ291bGQgYWxzbyBkbyBvYmplY3QgYXJyYXk/XG4gICAgQElucHV0KCkgY3J1bWJzOiBCcmVhZGNydW1iW107XG4gICAgQE91dHB1dCgpIGNydW1iQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEJyZWFkY3J1bWI+KCk7XG5cbiAgICBASW5wdXQoKSBjb25maWc6IE5neEZpbGVNYW5hZ2VyQ29uZmlndXJhdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICB9XG59XG4iLCI8YnV0dG9uIChjbGljayk9XCJjcnVtYkNsaWNrLm5leHQoeyBpZDogY29uZmlnLmNocm9vdFBhdGggfHwgJy8nLCBsYWJlbDogJyd9KVwiPlxuICAgIHt7Y29uZmlnLnJvb3ROYW1lIHx8ICdTdG9yYWdlJ319XG48L2J1dHRvbj5cblxuQGZvciAoY3J1bWIgb2YgY3J1bWJzOyB0cmFjayBjcnVtYikge1xuICAgIEBpZiAoY3J1bWIubGFiZWw/LnRyaW0oKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjcnVtYkNsaWNrLm5leHQoY3J1bWIpXCI+e3tjcnVtYi5sYWJlbH19PC9idXR0b24+XG4gICAgfVxufVxuIl19
@@ -1,5 +1,4 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
2
  import { MatIconModule } from '@angular/material/icon';
4
3
  import { MatButtonModule } from '@angular/material/button';
5
4
  import * as i0 from "@angular/core";
@@ -15,12 +14,11 @@ export class GtkIconButtonComponent {
15
14
  this.click.emit();
16
15
  }
17
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GtkIconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: GtkIconButtonComponent, isStandalone: true, selector: "gtk-icon-button", inputs: { fontIcon: "fontIcon", disabled: "disabled" }, outputs: { click: "click" }, ngImport: i0, template: "<button mat-flat-button [disabled]=\"disabled\">\n <mat-icon [fontIcon]=\"fontIcon\"></mat-icon>\n</button>\n", styles: [":host{position:relative}button{padding:0;min-width:36px;background-color:var(--gtk-button-background-color)!important;color:var(--gtk-button-text-color)!important;border:1px solid var(--gtk-button-border-color);border-bottom-color:var(--gtk-button-border-bottom-color);transition:.25s ease;transition-property:border-color,background-color,color}mat-icon{margin:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: GtkIconButtonComponent, isStandalone: true, selector: "gtk-icon-button", inputs: { fontIcon: "fontIcon", disabled: "disabled" }, outputs: { click: "click" }, ngImport: i0, template: "<button mat-flat-button [disabled]=\"disabled\">\n <mat-icon [fontIcon]=\"fontIcon\"></mat-icon>\n</button>\n", styles: [":host{position:relative}button{padding:0;min-width:36px;background-color:var(--gtk-button-background-color)!important;color:var(--gtk-button-text-color)!important;border:1px solid var(--gtk-button-border-color);border-bottom-color:var(--gtk-button-border-bottom-color);transition:.25s ease;transition-property:border-color,background-color,color}mat-icon{margin:0!important}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
19
18
  }
20
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GtkIconButtonComponent, decorators: [{
21
20
  type: Component,
22
21
  args: [{ selector: 'gtk-icon-button', imports: [
23
- CommonModule,
24
22
  MatIconModule,
25
23
  MatButtonModule
26
24
  ], standalone: true, template: "<button mat-flat-button [disabled]=\"disabled\">\n <mat-icon [fontIcon]=\"fontIcon\"></mat-icon>\n</button>\n", styles: [":host{position:relative}button{padding:0;min-width:36px;background-color:var(--gtk-button-background-color)!important;color:var(--gtk-button-text-color)!important;border:1px solid var(--gtk-button-border-color);border-bottom-color:var(--gtk-button-border-bottom-color);transition:.25s ease;transition-property:border-color,background-color,color}mat-icon{margin:0!important}\n"] }]
@@ -31,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
31
29
  }], disabled: [{
32
30
  type: Input
33
31
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL3Rvb2xiYXIvaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL3Rvb2xiYXIvaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQWEzRCxNQUFNLE9BQU8sc0JBQXNCO0lBWG5DO1FBZWMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQixlQUFVLEdBQUcsS0FBSyxDQUFDO0tBTXRCO0lBSkcsT0FBTztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FiUSxzQkFBc0I7a0dBQXRCLHNCQUFzQixnS0NoQm5DLGtIQUdBLGliRE9RLFlBQVksOEJBQ1osYUFBYSxtTEFDYixlQUFlOzsyRkFJVixzQkFBc0I7a0JBWGxDLFNBQVM7K0JBQ0ksaUJBQWlCLFdBR2xCO3dCQUNMLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixlQUFlO3FCQUNsQixjQUNXLElBQUk7OEJBSVAsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdndGstaWNvbi1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pY29uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaWNvbi1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEd0a0ljb25CdXR0b25Db21wb25lbnQge1xuXG4gICAgQElucHV0KCkgZm9udEljb246IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBjbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBzaG93RGlhbG9nID0gZmFsc2U7XG5cbiAgICBvbkNsaWNrKCkge1xuXG4gICAgICAgIHRoaXMuY2xpY2suZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxidXR0b24gbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtaWNvbiBbZm9udEljb25dPVwiZm9udEljb25cIj48L21hdC1pY29uPlxuPC9idXR0b24+XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL3Rvb2xiYXIvaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2ZpbGVtYW5hZ2VyL3Rvb2xiYXIvaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBWTNELE1BQU0sT0FBTyxzQkFBc0I7SUFWbkM7UUFjYyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGVBQVUsR0FBRyxLQUFLLENBQUM7S0FNdEI7SUFKRyxPQUFPO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOzhHQWJRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGdLQ2ZuQyxrSEFHQSxpYkRPUSxhQUFhLG1MQUNiLGVBQWU7OzJGQUlWLHNCQUFzQjtrQkFWbEMsU0FBUzsrQkFDSSxpQkFBaUIsV0FHbEI7d0JBQ0wsYUFBYTt3QkFDYixlQUFlO3FCQUNsQixjQUNXLElBQUk7OEJBSVAsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdndGstaWNvbi1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pY29uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaWNvbi1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHdGtJY29uQnV0dG9uQ29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpIGZvbnRJY29uOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgc2hvd0RpYWxvZyA9IGZhbHNlO1xuXG4gICAgb25DbGljaygpIHtcblxuICAgICAgICB0aGlzLmNsaWNrLmVtaXQoKTtcbiAgICB9XG59XG4iLCI8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LWljb24gW2ZvbnRJY29uXT1cImZvbnRJY29uXCI+PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuIl19
@@ -1,5 +1,4 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { NgIf } from '@angular/common';
3
2
  import { MatIconModule } from '@angular/material/icon';
4
3
  import { MatButtonModule } from '@angular/material/button';
5
4
  import { GtkIconButtonComponent } from './icon-button/icon-button.component';
@@ -127,18 +126,17 @@ export class ToolbarComponent {
127
126
  this.fileManager.fileGrids.forEach(g => g.loadFolder());
128
127
  }
129
128
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.FilemanagerComponent }, { token: i2.DialogService }, { token: i2.Fetch }], target: i0.ɵɵFactoryTarget.Component }); }
130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ToolbarComponent, isStandalone: true, selector: "app-toolbar", inputs: { config: "config", currentTab: "currentTab", showHiddenFiles: "showHiddenFiles", showSidebar: "showSidebar", drawerMode: "drawerMode", showBareMinimum: "showBareMinimum" }, outputs: { onBreadcrumbClick: "onBreadcrumbClick", showHiddenFilesChange: "showHiddenFilesChange", showSidebarChange: "showSidebarChange" }, viewQueries: [{ propertyName: "zoomTemplate", first: true, predicate: ["zoomTemplate"], descendants: true }, { propertyName: "actionTemplate", first: true, predicate: ["actionTemplate"], descendants: true }], ngImport: i0, template: "<button\n *ngIf=\"fileManager.sidebarOverlay && !drawerMode\"\n mat-icon-button\n (click)=\"toggleDrawer()\"\n>\n <mat-icon>list</mat-icon>\n</button>\n\n<ng-container *ngIf=\"!showBareMinimum\">\n <div class=\"buttongroup\">\n <gtk-icon-button\n fontIcon=\"arrow_back_ios_new\"\n (click)=\"historyBack(currentTab)\"\n [disabled]=\"currentTab.history?.length <= 1\"\n />\n <gtk-icon-button\n fontIcon=\"arrow_forward_ios\"\n (click)=\"historyForward(currentTab)\"\n [disabled]=\"currentTab.historyIndex >= (currentTab.history?.length-1)\"\n />\n </div>\n\n <div style=\"width: 40px\" *ngIf=\"!drawerMode\"></div>\n <gtk-icon-button\n fontIcon=\"sync\"\n (click)=\"onRefresh()\"\n />\n</ng-container>\n\n\n<app-breadcrumb\n *ngIf=\"currentTab\"\n style=\"flex: 1\"\n [crumbs]=\"currentTab.breadcrumb\"\n (crumbClick)=\"onBreadcrumbClick.next($event)\"\n [config]=\"config\"\n/>\n\n<ng-container *ngIf=\"!drawerMode\">\n <!-- <div style=\"flex: 1\"></div> -->\n\n <gtk-icon-button\n fontIcon=\"more_vert\"\n [ngx-menu]=\"fileOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n\n <div style=\"width: 8px\"></div>\n\n <!-- <gtk-icon-button\n fontIcon=\"search\"\n /> -->\n\n <div style=\"width: 100px\" *ngIf=\"fileManager.width > 800\"></div>\n\n <gtk-icon-button\n [fontIcon]=\"currentTab.viewMode == 'list' ? 'view_list' : 'grid_view'\"\n (click)=\"currentTab.viewMode = currentTab.viewMode == 'list' ? 'grid' : 'list'; fileManager.onResize()\"\n />\n\n <gtk-icon-button\n fontIcon=\"sort\"\n [ngx-menu]=\"sortOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n</ng-container>\n\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: GtkIconButtonComponent, selector: "gtk-icon-button", inputs: ["fontIcon", "disabled"], outputs: ["click"] }, { kind: "component", type: GtkBreadcrumbComponent, selector: "app-breadcrumb", inputs: ["crumbs", "config"], outputs: ["crumbClick"] }, { kind: "directive", type: MenuDirective, selector: "[ngx-contextmenu],[ngx-menu]", inputs: ["ngx-menu-context", "ngx-contextmenu", "ngx-menu", "ngx-menu-config"] }] }); }
129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ToolbarComponent, isStandalone: true, selector: "app-toolbar", inputs: { config: "config", currentTab: "currentTab", showHiddenFiles: "showHiddenFiles", showSidebar: "showSidebar", drawerMode: "drawerMode", showBareMinimum: "showBareMinimum" }, outputs: { onBreadcrumbClick: "onBreadcrumbClick", showHiddenFilesChange: "showHiddenFilesChange", showSidebarChange: "showSidebarChange" }, viewQueries: [{ propertyName: "zoomTemplate", first: true, predicate: ["zoomTemplate"], descendants: true }, { propertyName: "actionTemplate", first: true, predicate: ["actionTemplate"], descendants: true }], ngImport: i0, template: "<button\n *ngIf=\"fileManager.sidebarOverlay && !drawerMode\"\n mat-icon-button\n (click)=\"toggleDrawer()\"\n>\n <mat-icon>list</mat-icon>\n</button>\n\n@if (!showBareMinimum) {\n <div class=\"buttongroup\">\n <gtk-icon-button\n fontIcon=\"arrow_back_ios_new\"\n (click)=\"historyBack(currentTab)\"\n [disabled]=\"currentTab.history?.length <= 1\"\n />\n <gtk-icon-button\n fontIcon=\"arrow_forward_ios\"\n (click)=\"historyForward(currentTab)\"\n [disabled]=\"currentTab.historyIndex >= (currentTab.history?.length-1)\"\n />\n </div>\n\n @if (!drawerMode) {\n <div style=\"width: 40px\"></div>\n }\n <gtk-icon-button\n fontIcon=\"sync\"\n (click)=\"onRefresh()\"\n />\n}\n\n\n<app-breadcrumb\n *ngIf=\"currentTab\"\n style=\"flex: 1\"\n [crumbs]=\"currentTab.breadcrumb\"\n (crumbClick)=\"onBreadcrumbClick.next($event)\"\n [config]=\"config\"\n/>\n\n@if (!drawerMode) {\n <!-- <div style=\"flex: 1\"></div> -->\n\n <gtk-icon-button\n fontIcon=\"more_vert\"\n [ngx-menu]=\"fileOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n\n <div style=\"width: 8px\"></div>\n\n <!-- <gtk-icon-button\n fontIcon=\"search\"\n /> -->\n\n @if (fileManager.width > 800) {\n <div style=\"width: 100px\"></div>\n }\n\n <gtk-icon-button\n [fontIcon]=\"currentTab.viewMode == 'list' ? 'view_list' : 'grid_view'\"\n (click)=\"currentTab.viewMode = currentTab.viewMode == 'list' ? 'grid' : 'list'; fileManager.onResize()\"\n />\n\n <gtk-icon-button\n fontIcon=\"sort\"\n [ngx-menu]=\"sortOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n\n}\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: GtkIconButtonComponent, selector: "gtk-icon-button", inputs: ["fontIcon", "disabled"], outputs: ["click"] }, { kind: "component", type: GtkBreadcrumbComponent, selector: "app-breadcrumb", inputs: ["crumbs", "config"], outputs: ["crumbClick"] }, { kind: "directive", type: MenuDirective, selector: "[ngx-contextmenu],[ngx-menu]", inputs: ["ngx-menu-context", "ngx-contextmenu", "ngx-menu", "ngx-menu-config"] }] }); }
131
130
  }
132
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ToolbarComponent, decorators: [{
133
132
  type: Component,
134
133
  args: [{ selector: 'app-toolbar', imports: [
135
- NgIf,
136
134
  MatIconModule,
137
135
  MatButtonModule,
138
136
  GtkIconButtonComponent,
139
137
  GtkBreadcrumbComponent,
140
138
  MenuDirective
141
- ], standalone: true, template: "<button\n *ngIf=\"fileManager.sidebarOverlay && !drawerMode\"\n mat-icon-button\n (click)=\"toggleDrawer()\"\n>\n <mat-icon>list</mat-icon>\n</button>\n\n<ng-container *ngIf=\"!showBareMinimum\">\n <div class=\"buttongroup\">\n <gtk-icon-button\n fontIcon=\"arrow_back_ios_new\"\n (click)=\"historyBack(currentTab)\"\n [disabled]=\"currentTab.history?.length <= 1\"\n />\n <gtk-icon-button\n fontIcon=\"arrow_forward_ios\"\n (click)=\"historyForward(currentTab)\"\n [disabled]=\"currentTab.historyIndex >= (currentTab.history?.length-1)\"\n />\n </div>\n\n <div style=\"width: 40px\" *ngIf=\"!drawerMode\"></div>\n <gtk-icon-button\n fontIcon=\"sync\"\n (click)=\"onRefresh()\"\n />\n</ng-container>\n\n\n<app-breadcrumb\n *ngIf=\"currentTab\"\n style=\"flex: 1\"\n [crumbs]=\"currentTab.breadcrumb\"\n (crumbClick)=\"onBreadcrumbClick.next($event)\"\n [config]=\"config\"\n/>\n\n<ng-container *ngIf=\"!drawerMode\">\n <!-- <div style=\"flex: 1\"></div> -->\n\n <gtk-icon-button\n fontIcon=\"more_vert\"\n [ngx-menu]=\"fileOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n\n <div style=\"width: 8px\"></div>\n\n <!-- <gtk-icon-button\n fontIcon=\"search\"\n /> -->\n\n <div style=\"width: 100px\" *ngIf=\"fileManager.width > 800\"></div>\n\n <gtk-icon-button\n [fontIcon]=\"currentTab.viewMode == 'list' ? 'view_list' : 'grid_view'\"\n (click)=\"currentTab.viewMode = currentTab.viewMode == 'list' ? 'grid' : 'list'; fileManager.onResize()\"\n />\n\n <gtk-icon-button\n fontIcon=\"sort\"\n [ngx-menu]=\"sortOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n</ng-container>\n\n", styles: [":host{display:flex}\n"] }]
139
+ ], standalone: true, template: "<button\n *ngIf=\"fileManager.sidebarOverlay && !drawerMode\"\n mat-icon-button\n (click)=\"toggleDrawer()\"\n>\n <mat-icon>list</mat-icon>\n</button>\n\n@if (!showBareMinimum) {\n <div class=\"buttongroup\">\n <gtk-icon-button\n fontIcon=\"arrow_back_ios_new\"\n (click)=\"historyBack(currentTab)\"\n [disabled]=\"currentTab.history?.length <= 1\"\n />\n <gtk-icon-button\n fontIcon=\"arrow_forward_ios\"\n (click)=\"historyForward(currentTab)\"\n [disabled]=\"currentTab.historyIndex >= (currentTab.history?.length-1)\"\n />\n </div>\n\n @if (!drawerMode) {\n <div style=\"width: 40px\"></div>\n }\n <gtk-icon-button\n fontIcon=\"sync\"\n (click)=\"onRefresh()\"\n />\n}\n\n\n<app-breadcrumb\n *ngIf=\"currentTab\"\n style=\"flex: 1\"\n [crumbs]=\"currentTab.breadcrumb\"\n (crumbClick)=\"onBreadcrumbClick.next($event)\"\n [config]=\"config\"\n/>\n\n@if (!drawerMode) {\n <!-- <div style=\"flex: 1\"></div> -->\n\n <gtk-icon-button\n fontIcon=\"more_vert\"\n [ngx-menu]=\"fileOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n\n <div style=\"width: 8px\"></div>\n\n <!-- <gtk-icon-button\n fontIcon=\"search\"\n /> -->\n\n @if (fileManager.width > 800) {\n <div style=\"width: 100px\"></div>\n }\n\n <gtk-icon-button\n [fontIcon]=\"currentTab.viewMode == 'list' ? 'view_list' : 'grid_view'\"\n (click)=\"currentTab.viewMode = currentTab.viewMode == 'list' ? 'grid' : 'list'; fileManager.onResize()\"\n />\n\n <gtk-icon-button\n fontIcon=\"sort\"\n [ngx-menu]=\"sortOptions\"\n [ngx-menu-config]=\"{position: 'bottom'}\"\n />\n\n}\n", styles: [":host{display:flex}\n"] }]
142
140
  }], ctorParameters: () => [{ type: i1.FilemanagerComponent }, { type: i2.DialogService }, { type: i2.Fetch }], propDecorators: { zoomTemplate: [{
143
141
  type: ViewChild,
144
142
  args: ['zoomTemplate']
@@ -164,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
164
162
  }], showBareMinimum: [{
165
163
  type: Input
166
164
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvZmlsZW1hbmFnZXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9maWxlbWFuYWdlci90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQXdCLGFBQWEsRUFBWSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFnQnBGLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQnpCLFlBQ1csV0FBaUMsRUFDaEMsTUFBcUIsRUFDckIsS0FBWTtRQUZiLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFVBQUssR0FBTCxLQUFLLENBQU87UUFmZCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLGVBQVUsR0FBZ0IsRUFBUyxDQUFDO1FBR25DLDBCQUFxQixHQUFHLElBQUks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LGlDQUFpQztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDOzhHQXZJUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiwybEJDekI3Qix1ekRBbUVBLCtFRG5EUSxJQUFJLDRGQUNKLGFBQWEsbUxBQ2IsZUFBZSw0SUFDZixzQkFBc0Isa0hBQ3RCLHNCQUFzQixrSEFDdEIsYUFBYTs7MkZBSVIsZ0JBQWdCO2tCQWQ1QixTQUFTOytCQUNJLGFBQWEsV0FHZDt3QkFDTCxJQUFJO3dCQUNKLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsYUFBYTtxQkFDaEIsY0FDVyxJQUFJO3lJQUdXLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDSSxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUdJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUVFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBHdGtJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3RrQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4vYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlbWFuYWdlckNvbXBvbmVudCwgRmlsZVZpZXdUYWIsIEZTRGVzY3JpcHRvciwgTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vZmlsZW1hbmFnZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVTb3J0aW5nIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgdXBsb2FkRmlsZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRmV0Y2gsIE1lbnVEaXJlY3RpdmUsIE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vcHVibGljLWFwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIEd0a0ljb25CdXR0b25Db21wb25lbnQsXG4gICAgICAgIEd0a0JyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgICAgIE1lbnVEaXJlY3RpdmVcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZCgnem9vbVRlbXBsYXRlJykgem9vbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2FjdGlvblRlbXBsYXRlJykgYWN0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBjb25maWc6IE5neEZpbGVNYW5hZ2VyQ29uZmlndXJhdGlvbjtcblxuXG4gICAgQE91dHB1dCgpIG9uQnJlYWRjcnVtYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgY3VycmVudFRhYjogRmlsZVZpZXdUYWIgPSB7fSBhcyBhbnk7XG5cbiAgICBASW5wdXQoKSBzaG93SGlkZGVuRmlsZXM6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpIHNob3dIaWRkZW5GaWxlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBASW5wdXQoKSBzaG93U2lkZWJhcjogYm9vbGVhbjtcbiAgICBAT3V0cHV0KCkgc2hvd1NpZGViYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASW5wdXQoKSBkcmF3ZXJNb2RlID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2hvd0JhcmVNaW5pbXVtID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGZpbGVNYW5hZ2VyOiBGaWxlbWFuYWdlckNvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmV0Y2g6IEZldGNoXG4gICAgKSB7XG5cbiAgICB9XG5cbiAgICBmaWxlT3B0aW9uczogTWVudUl0ZW08RlNEZXNjcmlwdG9yPltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCJOZXcgRm9sZGVyXCIsXG4gICAgICAgICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKFwiZm9sZGVyLXJlbmFtZVwiLCBcIkBkb3RnbGl0Y2gvbmd4LXdlYi1jb21wb25lbnRzXCIsIHsgaW5wdXRzOiB7IHBhdGg6IHRoaXMuY3VycmVudFRhYi5wYXRoLCBuYW1lOiAnJywgY29uZmlnOiB0aGlzLmNvbmZpZyB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlVwbG9hZCBmaWxlXCIsXG4gICAgICAgICAgICBpY29uOiBcImZpbGVfdXBsb2FkXCIsXG4gICAgICAgICAgICBhY3Rpb246IChldnQpID0+IHVwbG9hZEZpbGUodGhpcy5mZXRjaCwgdGhpcy5jb25maWcsIHRoaXMuZmlsZU1hbmFnZXIuY3VycmVudFRhYi5wYXRoLCBudWxsLCB0aGlzLmZpbGVNYW5hZ2VyLmNvbnRleHRUYWdzKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVGVsbCB0aGUgY3VycmVudCB0YWIgdG8gcmVsb2FkIGl0J3MgZGF0YS5cbiAgICAgICAgICAgICAgICBjb25zdCB0YWIgPSAgdGhpcy5maWxlTWFuYWdlci5jdXJyZW50VGFiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmZpbGVNYW5hZ2VyLmZpbGVHcmlkcy5maW5kKHQgPT4gdC50YWIuaWQgPT0gdGFiLmlkKTtcbiAgICAgICAgICAgICAgICBncmlkLmxvYWRGb2xkZXIoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIC8vIHtcbiAgICAgICAgLy8gICAgIGxhYmVsOiBcIkFkZCB0byBCb29rbWFya3MgKFdJUClcIixcbiAgICAgICAgLy8gICAgIGFjdGlvbjogKGZvbGRlcikgPT4ge1xuICAgICAgICAvLyAgICAgICAgIC8vXG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIFwic2VwYXJhdG9yXCIsXG4gICAgICAgIC8vIHtcbiAgICAgICAgLy8gICAgIGxhYmVsOiBcIlBhc3RlXCIsXG4gICAgICAgIC8vICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvL1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBsYWJlbDogXCJTZWxlY3QgQWxsXCIsXG4gICAgICAgIC8vICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvL1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBcInNlcGFyYXRvclwiLFxuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBsYWJlbDogXCJQcm9wZXJ0aWVzXCIsXG4gICAgICAgIC8vICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvL1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgIF1cblxuICAgIHNvcnRPcHRpb25zOiBNZW51SXRlbTxGU0Rlc2NyaXB0b3I+W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlNvcnRcIixcbiAgICAgICAgICAgIHNlcGFyYXRvcjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCJBLVpcIixcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5zZXRTb3J0ZXIoJ2EteicpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlotQVwiLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnNldFNvcnRlcignei1hJylcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IFwiTGFzdCBNb2RpZmllZFwiLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnNldFNvcnRlcignbGFzdG1vZCcpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIkZpcnN0IE1vZGlmaWVkXCIsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc2V0U29ydGVyKCdmaXJzdG1vZCcpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlNpemVcIixcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5zZXRTb3J0ZXIoJ3NpemUnKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCJUeXBlXCIsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc2V0U29ydGVyKCd0eXBlJylcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXBhcmF0b3JcIixcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IFwiUmVmcmVzaFwiLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLmZpbGVNYW5hZ2VyLmN1cnJlbnRGaWxlR3JpZC5sb2FkRm9sZGVyKClcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBoaXN0b3J5QmFjayh0YWI6IEZpbGVWaWV3VGFiKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGlzdG9yeSAtPlwiLCB0YWIpXG4gICAgICAgIHRhYi5oaXN0b3J5SW5kZXgtLTtcbiAgICAgICAgdGFiLnBhdGggPSB0YWIuaGlzdG9yeVt0YWIuaGlzdG9yeUluZGV4IC0gMV07XG4gICAgfVxuXG4gICAgaGlzdG9yeUZvcndhcmQodGFiOiBGaWxlVmlld1RhYikge1xuICAgICAgICBjb25zb2xlLmxvZyhcImhpc3RvcnkgPC1cIiwgdGFiKVxuICAgICAgICB0YWIuaGlzdG9yeUluZGV4Kys7XG4gICAgICAgIHRhYi5wYXRoID0gdGFiLmhpc3RvcnlbdGFiLmhpc3RvcnlJbmRleCAtIDFdO1xuICAgIH1cblxuICAgIHRvZ2dsZURyYXdlcigpIHtcbiAgICAgICAgaWYgKFsuLi50aGlzLmZpbGVNYW5hZ2VyLmRyYXdlci5fZHJhd2Vyc11bMF0ub3BlbmVkKVxuICAgICAgICAgICAgdGhpcy5maWxlTWFuYWdlci5kcmF3ZXIuY2xvc2UoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5maWxlTWFuYWdlci5kcmF3ZXIub3BlbigpO1xuICAgIH1cblxuICAgIHNldFNvcnRlcihtb2RlOiBGaWxlU29ydGluZykge1xuICAgICAgICB0aGlzLmZpbGVNYW5hZ2VyLmN1cnJlbnRUYWIuc29ydE9yZGVyID0gbW9kZTtcbiAgICAgICAgdGhpcy5maWxlTWFuYWdlci5yZWZyZXNoU29ydGluZygpO1xuICAgIH1cblxuICAgIG9uUmVmcmVzaCgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5maWxlTWFuYWdlcik7XG4gICAgICAgIHRoaXMuZmlsZU1hbmFnZXIuZmlsZUdyaWRzLmZvckVhY2goZyA9PiBnLmxvYWRGb2xkZXIoKSk7XG4gICAgfVxufVxuIiwiPGJ1dHRvblxuICAgICpuZ0lmPVwiZmlsZU1hbmFnZXIuc2lkZWJhck92ZXJsYXkgJiYgIWRyYXdlck1vZGVcIlxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIChjbGljayk9XCJ0b2dnbGVEcmF3ZXIoKVwiXG4+XG4gICAgPG1hdC1pY29uPmxpc3Q8L21hdC1pY29uPlxuPC9idXR0b24+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0JhcmVNaW5pbXVtXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbmdyb3VwXCI+XG4gICAgICAgIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgICAgIGZvbnRJY29uPVwiYXJyb3dfYmFja19pb3NfbmV3XCJcbiAgICAgICAgICAgIChjbGljayk9XCJoaXN0b3J5QmFjayhjdXJyZW50VGFiKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFRhYi5oaXN0b3J5Py5sZW5ndGggPD0gMVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgICAgIGZvbnRJY29uPVwiYXJyb3dfZm9yd2FyZF9pb3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhpc3RvcnlGb3J3YXJkKGN1cnJlbnRUYWIpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50VGFiLmhpc3RvcnlJbmRleCA+PSAoY3VycmVudFRhYi5oaXN0b3J5Py5sZW5ndGgtMSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiA0MHB4XCIgKm5nSWY9XCIhZHJhd2VyTW9kZVwiPjwvZGl2PlxuICAgIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgZm9udEljb249XCJzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uUmVmcmVzaCgpXCJcbiAgICAvPlxuPC9uZy1jb250YWluZXI+XG5cblxuPGFwcC1icmVhZGNydW1iXG4gICAgKm5nSWY9XCJjdXJyZW50VGFiXCJcbiAgICBzdHlsZT1cImZsZXg6IDFcIlxuICAgIFtjcnVtYnNdPVwiY3VycmVudFRhYi5icmVhZGNydW1iXCJcbiAgICAoY3J1bWJDbGljayk9XCJvbkJyZWFkY3J1bWJDbGljay5uZXh0KCRldmVudClcIlxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbi8+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhZHJhd2VyTW9kZVwiPlxuICAgIDwhLS0gPGRpdiBzdHlsZT1cImZsZXg6IDFcIj48L2Rpdj4gLS0+XG5cbiAgICA8Z3RrLWljb24tYnV0dG9uXG4gICAgICAgIGZvbnRJY29uPVwibW9yZV92ZXJ0XCJcbiAgICAgICAgW25neC1tZW51XT1cImZpbGVPcHRpb25zXCJcbiAgICAgICAgW25neC1tZW51LWNvbmZpZ109XCJ7cG9zaXRpb246ICdib3R0b20nfVwiXG4gICAgLz5cblxuICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogOHB4XCI+PC9kaXY+XG5cbiAgICA8IS0tIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgZm9udEljb249XCJzZWFyY2hcIlxuICAgIC8+IC0tPlxuXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweFwiICpuZ0lmPVwiZmlsZU1hbmFnZXIud2lkdGggPiA4MDBcIj48L2Rpdj5cblxuICAgIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgW2ZvbnRJY29uXT1cImN1cnJlbnRUYWIudmlld01vZGUgPT0gJ2xpc3QnID8gJ3ZpZXdfbGlzdCcgOiAnZ3JpZF92aWV3J1wiXG4gICAgICAgIChjbGljayk9XCJjdXJyZW50VGFiLnZpZXdNb2RlID0gY3VycmVudFRhYi52aWV3TW9kZSA9PSAnbGlzdCcgPyAnZ3JpZCcgOiAnbGlzdCc7IGZpbGVNYW5hZ2VyLm9uUmVzaXplKClcIlxuICAgIC8+XG5cbiAgICA8Z3RrLWljb24tYnV0dG9uXG4gICAgICAgIGZvbnRJY29uPVwic29ydFwiXG4gICAgICAgIFtuZ3gtbWVudV09XCJzb3J0T3B0aW9uc1wiXG4gICAgICAgIFtuZ3gtbWVudS1jb25maWddPVwie3Bvc2l0aW9uOiAnYm90dG9tJ31cIlxuICAgIC8+XG48L25nLWNvbnRhaW5lcj5cblxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvZmlsZW1hbmFnZXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9maWxlbWFuYWdlci90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUczRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBd0IsYUFBYSxFQUFZLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQWVwRixNQUFNLE9BQU8sZ0JBQWdCO0lBbUJ6QixZQUNXLFdBQWlDLEVBQ2hDLE1BQXFCLEVBQ3JCLEtBQVk7UUFGYixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBZmQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4QyxlQUFVLEdBQWdCLEVBQVMsQ0FBQztRQUduQywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXBELHNCQUFpQixHQUFHLElBQUksWUFBWSxF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T0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0F2SVEsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsMmxCQ3hCN0IscXhEQXVFQSw4RUR2RFEsYUFBYSxtTEFDYixlQUFlLDRJQUNmLHNCQUFzQixrSEFDdEIsc0JBQXNCLGtIQUN0QixhQUFhOzsyRkFJUixnQkFBZ0I7a0JBYjVCLFNBQVM7K0JBQ0ksYUFBYSxXQUdkO3dCQUNMLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsYUFBYTtxQkFDaEIsY0FDVyxJQUFJO3lJQUdXLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDSSxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUdJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUVFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBHdGtJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3RrQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4vYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlbWFuYWdlckNvbXBvbmVudCwgRmlsZVZpZXdUYWIsIEZTRGVzY3JpcHRvciwgTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vZmlsZW1hbmFnZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVTb3J0aW5nIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgdXBsb2FkRmlsZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRmV0Y2gsIE1lbnVEaXJlY3RpdmUsIE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vcHVibGljLWFwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIEd0a0ljb25CdXR0b25Db21wb25lbnQsXG4gICAgICAgIEd0a0JyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgICAgIE1lbnVEaXJlY3RpdmVcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZCgnem9vbVRlbXBsYXRlJykgem9vbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2FjdGlvblRlbXBsYXRlJykgYWN0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBjb25maWc6IE5neEZpbGVNYW5hZ2VyQ29uZmlndXJhdGlvbjtcblxuXG4gICAgQE91dHB1dCgpIG9uQnJlYWRjcnVtYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgY3VycmVudFRhYjogRmlsZVZpZXdUYWIgPSB7fSBhcyBhbnk7XG5cbiAgICBASW5wdXQoKSBzaG93SGlkZGVuRmlsZXM6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpIHNob3dIaWRkZW5GaWxlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBASW5wdXQoKSBzaG93U2lkZWJhcjogYm9vbGVhbjtcbiAgICBAT3V0cHV0KCkgc2hvd1NpZGViYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASW5wdXQoKSBkcmF3ZXJNb2RlID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2hvd0JhcmVNaW5pbXVtID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGZpbGVNYW5hZ2VyOiBGaWxlbWFuYWdlckNvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmV0Y2g6IEZldGNoXG4gICAgKSB7XG5cbiAgICB9XG5cbiAgICBmaWxlT3B0aW9uczogTWVudUl0ZW08RlNEZXNjcmlwdG9yPltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCJOZXcgRm9sZGVyXCIsXG4gICAgICAgICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKFwiZm9sZGVyLXJlbmFtZVwiLCBcIkBkb3RnbGl0Y2gvbmd4LXdlYi1jb21wb25lbnRzXCIsIHsgaW5wdXRzOiB7IHBhdGg6IHRoaXMuY3VycmVudFRhYi5wYXRoLCBuYW1lOiAnJywgY29uZmlnOiB0aGlzLmNvbmZpZyB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlVwbG9hZCBmaWxlXCIsXG4gICAgICAgICAgICBpY29uOiBcImZpbGVfdXBsb2FkXCIsXG4gICAgICAgICAgICBhY3Rpb246IChldnQpID0+IHVwbG9hZEZpbGUodGhpcy5mZXRjaCwgdGhpcy5jb25maWcsIHRoaXMuZmlsZU1hbmFnZXIuY3VycmVudFRhYi5wYXRoLCBudWxsLCB0aGlzLmZpbGVNYW5hZ2VyLmNvbnRleHRUYWdzKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVGVsbCB0aGUgY3VycmVudCB0YWIgdG8gcmVsb2FkIGl0J3MgZGF0YS5cbiAgICAgICAgICAgICAgICBjb25zdCB0YWIgPSAgdGhpcy5maWxlTWFuYWdlci5jdXJyZW50VGFiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmZpbGVNYW5hZ2VyLmZpbGVHcmlkcy5maW5kKHQgPT4gdC50YWIuaWQgPT0gdGFiLmlkKTtcbiAgICAgICAgICAgICAgICBncmlkLmxvYWRGb2xkZXIoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIC8vIHtcbiAgICAgICAgLy8gICAgIGxhYmVsOiBcIkFkZCB0byBCb29rbWFya3MgKFdJUClcIixcbiAgICAgICAgLy8gICAgIGFjdGlvbjogKGZvbGRlcikgPT4ge1xuICAgICAgICAvLyAgICAgICAgIC8vXG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIFwic2VwYXJhdG9yXCIsXG4gICAgICAgIC8vIHtcbiAgICAgICAgLy8gICAgIGxhYmVsOiBcIlBhc3RlXCIsXG4gICAgICAgIC8vICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvL1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBsYWJlbDogXCJTZWxlY3QgQWxsXCIsXG4gICAgICAgIC8vICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvL1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBcInNlcGFyYXRvclwiLFxuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBsYWJlbDogXCJQcm9wZXJ0aWVzXCIsXG4gICAgICAgIC8vICAgICBhY3Rpb246IChmb2xkZXIpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvL1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LFxuICAgIF1cblxuICAgIHNvcnRPcHRpb25zOiBNZW51SXRlbTxGU0Rlc2NyaXB0b3I+W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlNvcnRcIixcbiAgICAgICAgICAgIHNlcGFyYXRvcjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCJBLVpcIixcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5zZXRTb3J0ZXIoJ2EteicpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlotQVwiLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnNldFNvcnRlcignei1hJylcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IFwiTGFzdCBNb2RpZmllZFwiLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnNldFNvcnRlcignbGFzdG1vZCcpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIkZpcnN0IE1vZGlmaWVkXCIsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc2V0U29ydGVyKCdmaXJzdG1vZCcpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIlNpemVcIixcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5zZXRTb3J0ZXIoJ3NpemUnKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCJUeXBlXCIsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc2V0U29ydGVyKCd0eXBlJylcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXBhcmF0b3JcIixcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IFwiUmVmcmVzaFwiLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLmZpbGVNYW5hZ2VyLmN1cnJlbnRGaWxlR3JpZC5sb2FkRm9sZGVyKClcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBoaXN0b3J5QmFjayh0YWI6IEZpbGVWaWV3VGFiKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGlzdG9yeSAtPlwiLCB0YWIpXG4gICAgICAgIHRhYi5oaXN0b3J5SW5kZXgtLTtcbiAgICAgICAgdGFiLnBhdGggPSB0YWIuaGlzdG9yeVt0YWIuaGlzdG9yeUluZGV4IC0gMV07XG4gICAgfVxuXG4gICAgaGlzdG9yeUZvcndhcmQodGFiOiBGaWxlVmlld1RhYikge1xuICAgICAgICBjb25zb2xlLmxvZyhcImhpc3RvcnkgPC1cIiwgdGFiKVxuICAgICAgICB0YWIuaGlzdG9yeUluZGV4Kys7XG4gICAgICAgIHRhYi5wYXRoID0gdGFiLmhpc3RvcnlbdGFiLmhpc3RvcnlJbmRleCAtIDFdO1xuICAgIH1cblxuICAgIHRvZ2dsZURyYXdlcigpIHtcbiAgICAgICAgaWYgKFsuLi50aGlzLmZpbGVNYW5hZ2VyLmRyYXdlci5fZHJhd2Vyc11bMF0ub3BlbmVkKVxuICAgICAgICAgICAgdGhpcy5maWxlTWFuYWdlci5kcmF3ZXIuY2xvc2UoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5maWxlTWFuYWdlci5kcmF3ZXIub3BlbigpO1xuICAgIH1cblxuICAgIHNldFNvcnRlcihtb2RlOiBGaWxlU29ydGluZykge1xuICAgICAgICB0aGlzLmZpbGVNYW5hZ2VyLmN1cnJlbnRUYWIuc29ydE9yZGVyID0gbW9kZTtcbiAgICAgICAgdGhpcy5maWxlTWFuYWdlci5yZWZyZXNoU29ydGluZygpO1xuICAgIH1cblxuICAgIG9uUmVmcmVzaCgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5maWxlTWFuYWdlcik7XG4gICAgICAgIHRoaXMuZmlsZU1hbmFnZXIuZmlsZUdyaWRzLmZvckVhY2goZyA9PiBnLmxvYWRGb2xkZXIoKSk7XG4gICAgfVxufVxuIiwiPGJ1dHRvblxuICAgICpuZ0lmPVwiZmlsZU1hbmFnZXIuc2lkZWJhck92ZXJsYXkgJiYgIWRyYXdlck1vZGVcIlxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIChjbGljayk9XCJ0b2dnbGVEcmF3ZXIoKVwiXG4+XG4gICAgPG1hdC1pY29uPmxpc3Q8L21hdC1pY29uPlxuPC9idXR0b24+XG5cbkBpZiAoIXNob3dCYXJlTWluaW11bSkge1xuICAgIDxkaXYgY2xhc3M9XCJidXR0b25ncm91cFwiPlxuICAgICAgICA8Z3RrLWljb24tYnV0dG9uXG4gICAgICAgICAgICBmb250SWNvbj1cImFycm93X2JhY2tfaW9zX25ld1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGlzdG9yeUJhY2soY3VycmVudFRhYilcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRUYWIuaGlzdG9yeT8ubGVuZ3RoIDw9IDFcIlxuICAgICAgICAvPlxuICAgICAgICA8Z3RrLWljb24tYnV0dG9uXG4gICAgICAgICAgICBmb250SWNvbj1cImFycm93X2ZvcndhcmRfaW9zXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoaXN0b3J5Rm9yd2FyZChjdXJyZW50VGFiKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFRhYi5oaXN0b3J5SW5kZXggPj0gKGN1cnJlbnRUYWIuaGlzdG9yeT8ubGVuZ3RoLTEpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoIWRyYXdlck1vZGUpIHtcbiAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA0MHB4XCI+PC9kaXY+XG4gICAgfVxuICAgIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgZm9udEljb249XCJzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uUmVmcmVzaCgpXCJcbiAgICAvPlxufVxuXG5cbjxhcHAtYnJlYWRjcnVtYlxuICAgICpuZ0lmPVwiY3VycmVudFRhYlwiXG4gICAgc3R5bGU9XCJmbGV4OiAxXCJcbiAgICBbY3J1bWJzXT1cImN1cnJlbnRUYWIuYnJlYWRjcnVtYlwiXG4gICAgKGNydW1iQ2xpY2spPVwib25CcmVhZGNydW1iQ2xpY2submV4dCgkZXZlbnQpXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4vPlxuXG5AaWYgKCFkcmF3ZXJNb2RlKSB7XG4gICAgPCEtLSA8ZGl2IHN0eWxlPVwiZmxleDogMVwiPjwvZGl2PiAtLT5cblxuICAgIDxndGstaWNvbi1idXR0b25cbiAgICAgICAgZm9udEljb249XCJtb3JlX3ZlcnRcIlxuICAgICAgICBbbmd4LW1lbnVdPVwiZmlsZU9wdGlvbnNcIlxuICAgICAgICBbbmd4LW1lbnUtY29uZmlnXT1cIntwb3NpdGlvbjogJ2JvdHRvbSd9XCJcbiAgICAvPlxuXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiA4cHhcIj48L2Rpdj5cblxuICAgIDwhLS0gPGd0ay1pY29uLWJ1dHRvblxuICAgICAgICBmb250SWNvbj1cInNlYXJjaFwiXG4gICAgLz4gLS0+XG5cbiAgICBAaWYgKGZpbGVNYW5hZ2VyLndpZHRoID4gODAwKSB7XG4gICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwcHhcIj48L2Rpdj5cbiAgICB9XG5cbiAgICA8Z3RrLWljb24tYnV0dG9uXG4gICAgICAgIFtmb250SWNvbl09XCJjdXJyZW50VGFiLnZpZXdNb2RlID09ICdsaXN0JyA/ICd2aWV3X2xpc3QnIDogJ2dyaWRfdmlldydcIlxuICAgICAgICAoY2xpY2spPVwiY3VycmVudFRhYi52aWV3TW9kZSA9IGN1cnJlbnRUYWIudmlld01vZGUgPT0gJ2xpc3QnID8gJ2dyaWQnIDogJ2xpc3QnOyBmaWxlTWFuYWdlci5vblJlc2l6ZSgpXCJcbiAgICAvPlxuXG4gICAgPGd0ay1pY29uLWJ1dHRvblxuICAgICAgICBmb250SWNvbj1cInNvcnRcIlxuICAgICAgICBbbmd4LW1lbnVdPVwic29ydE9wdGlvbnNcIlxuICAgICAgICBbbmd4LW1lbnUtY29uZmlnXT1cIntwb3NpdGlvbjogJ2JvdHRvbSd9XCJcbiAgICAvPlxuXG59XG4iXX0=