@yuuvis/app-drive 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/add-button/add-button-overlay/add-button-overlay.component.mjs +2 -2
- package/esm2022/lib/components/drive-search/drive-search-overlay/drive-search-overlay.component.mjs +343 -0
- package/esm2022/lib/components/drive-search/drive-search.component.mjs +83 -0
- package/esm2022/lib/components/index.mjs +2 -2
- package/esm2022/lib/components/search-filter/search-filter.component.mjs +14 -330
- package/esm2022/lib/drive.icons.mjs +5 -2
- package/esm2022/lib/pages/files/files.component.mjs +24 -24
- package/esm2022/lib/services/drive/drive.interface.mjs +1 -1
- package/esm2022/lib/services/drive/drive.service.mjs +9 -4
- package/fesm2022/yuuvis-app-drive.mjs +490 -438
- package/fesm2022/yuuvis-app-drive.mjs.map +1 -1
- package/lib/components/drive-search/drive-search-overlay/drive-search-overlay.component.d.ts +52 -0
- package/lib/components/drive-search/drive-search.component.d.ts +21 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/search-filter/search-filter.component.d.ts +0 -2
- package/lib/container/drive/drive.component.d.ts +3 -0
- package/lib/drive.icons.d.ts +3 -0
- package/lib/pages/files/files.component.d.ts +10 -7
- package/lib/services/drive/drive.interface.d.ts +1 -0
- package/lib/services/drive/drive.service.d.ts +1 -1
- package/package.json +2 -2
- package/esm2022/lib/components/search-filter/date-range-picker/date-range-picker.component.mjs +0 -38
- package/lib/components/search-filter/date-range-picker/date-range-picker.component.d.ts +0 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AsyncPipe, NgClass } from '@angular/common';
|
|
2
|
-
import { Component, computed, effect,
|
|
2
|
+
import { Component, computed, effect, inject, input, signal, untracked, viewChild } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
|
|
5
5
|
import { AppCacheService, BaseObjectTypeField, ClipboardService, DeviceService, DmsService, EventService, ObjectConfigService, Operator, SystemType, TranslateModule, TranslateService, YuvEventType } from '@yuuvis/client-core';
|
|
@@ -13,17 +13,17 @@ import { ShellService } from '@yuuvis/client-shell-core';
|
|
|
13
13
|
import { ICONS, YvcIconModule } from '@yuuvis/components/icon';
|
|
14
14
|
import { SplitViewComponent, YvcSplitViewModule } from '@yuuvis/components/split-view';
|
|
15
15
|
import { finalize, map, tap } from 'rxjs';
|
|
16
|
-
import { BreadcrumbComponent, SortComponent } from '../../components';
|
|
16
|
+
import { BreadcrumbComponent, DriveSearchComponent, SortComponent } from '../../components';
|
|
17
17
|
import { AddButtonComponent } from '../../components/add-button/add-button.component';
|
|
18
18
|
import { FolderTreeComponent } from '../../components/folder-tree/folder-tree.component';
|
|
19
19
|
import { RibbonComponent } from '../../components/ribbon/ribbon.component';
|
|
20
|
+
import { SearchFilterComponent } from '../../components/search-filter/search-filter.component';
|
|
20
21
|
import { APP_DRIVE_ICONS } from '../../drive.icons';
|
|
21
22
|
import { ACTION_CONTEXT, APP_ID, APP_SCHEMA } from '../../drive.schema';
|
|
22
23
|
import { DRIVE_EVENT, DRIVE_QUERY_FOLDER_ID, DRIVE_ROOT_FOLDER_ID } from '../../services/drive/drive.interface';
|
|
23
24
|
import { DriveService } from '../../services/drive/drive.service';
|
|
24
25
|
import { STORED_QUERY_ID_PREFIX } from '../../services/stored-query/stored-query.data';
|
|
25
26
|
import { StoredQueryService } from '../../services/stored-query/stored-query.service';
|
|
26
|
-
import { SearchFilterComponent } from '../../components/search-filter/search-filter.component';
|
|
27
27
|
import * as i0 from "@angular/core";
|
|
28
28
|
import * as i1 from "@yuuvis/components/icon";
|
|
29
29
|
import * as i2 from "@yuuvis/client-core";
|
|
@@ -39,7 +39,8 @@ const components = [
|
|
|
39
39
|
SimpleSearchComponent,
|
|
40
40
|
MultiObjectSummaryComponent,
|
|
41
41
|
SortComponent,
|
|
42
|
-
SearchFilterComponent
|
|
42
|
+
SearchFilterComponent,
|
|
43
|
+
DriveSearchComponent
|
|
43
44
|
];
|
|
44
45
|
const module = [YvcIconModule, TranslateModule, RouterModule, YvcSplitViewModule];
|
|
45
46
|
export class FilesPageComponent {
|
|
@@ -78,6 +79,7 @@ export class FilesPageComponent {
|
|
|
78
79
|
this.disableCreate = false;
|
|
79
80
|
this.actions = this.drive.state$.actions;
|
|
80
81
|
this.selection = this.drive.state$.selection;
|
|
82
|
+
this.extendedQuery = this.drive.state$.extendedQuery;
|
|
81
83
|
this.busy = this.drive.state$.busy;
|
|
82
84
|
this.flavorChips = this.shellService.getObjectFlavors();
|
|
83
85
|
this.selectionActions = computed(() => ({ selection: this.selection(), actions: this.actions() }));
|
|
@@ -89,12 +91,12 @@ export class FilesPageComponent {
|
|
|
89
91
|
folder: { bucket: APP_ID, type: APP_SCHEMA.types['folder'] },
|
|
90
92
|
file: { bucket: APP_ID, type: APP_SCHEMA.types['file'] }
|
|
91
93
|
};
|
|
92
|
-
this.searchFocused = false;
|
|
93
94
|
this.enableDetails = signal(true);
|
|
94
95
|
this.enableTree = signal(true);
|
|
95
96
|
this.tileConfigBucketLabel = this.translate.instant('yuv.app.drive.tile-config.bucket');
|
|
96
97
|
this.smallScreenLayout = signal(false);
|
|
97
98
|
this.sortOptionsAvailable = signal(true);
|
|
99
|
+
this.extendedSearch = signal(false);
|
|
98
100
|
this.id = input(null);
|
|
99
101
|
this.highlightStyles$ = this.clipboard.clipboard$(APP_ID).pipe(takeUntilDestroyed(), map((c) => {
|
|
100
102
|
return c && c.mode && c.objects?.length
|
|
@@ -185,8 +187,8 @@ export class FilesPageComponent {
|
|
|
185
187
|
if (this.route.snapshot.params['id'] === DRIVE_QUERY_FOLDER_ID) {
|
|
186
188
|
const q = p.get('q');
|
|
187
189
|
this.disableCreate = true;
|
|
188
|
-
// check if the query is a stored query
|
|
189
190
|
if (q?.startsWith(STORED_QUERY_ID_PREFIX)) {
|
|
191
|
+
// stored query
|
|
190
192
|
const sq = this.storedQueryService.getStoredQuery(q);
|
|
191
193
|
if (sq) {
|
|
192
194
|
this.drive.updateQuery(sq.query, sq.label);
|
|
@@ -195,11 +197,12 @@ export class FilesPageComponent {
|
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
else if (q) {
|
|
200
|
+
// search query
|
|
198
201
|
this.sortOptionsAvailable.set(true);
|
|
199
202
|
try {
|
|
200
203
|
const sq = JSON.parse(decodeURIComponent(q));
|
|
201
204
|
sq.filters = (sq.filters || []).filter((f) => f.f !== BaseObjectTypeField.PARENT_ID);
|
|
202
|
-
this.drive.updateQuery(sq, this.translate.instant('yuv.app.drive.files.search.result.title'));
|
|
205
|
+
this.drive.updateQuery(sq, this.translate.instant('yuv.app.drive.files.search.result.title'), p.get('ext') === 'true');
|
|
203
206
|
return;
|
|
204
207
|
}
|
|
205
208
|
catch (e) {
|
|
@@ -274,16 +277,16 @@ export class FilesPageComponent {
|
|
|
274
277
|
onCut(tiles) {
|
|
275
278
|
this.clipboard.addObjects(tiles.map((t) => t.dmsObject), 'cut', APP_ID);
|
|
276
279
|
}
|
|
277
|
-
onQuerySubmit(q) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
280
|
+
// onQuerySubmit(q: SearchQuery) {
|
|
281
|
+
// // in order to keep the query in the url as short as
|
|
282
|
+
// // possible we'll get rid of the fields because they could be
|
|
283
|
+
// // re-applied later on
|
|
284
|
+
// q.fields = undefined;
|
|
285
|
+
// this.router.navigate(['..', 'query'], {
|
|
286
|
+
// queryParams: { q: encodeURIComponent(JSON.stringify(q)) },
|
|
287
|
+
// relativeTo: this.route
|
|
288
|
+
// });
|
|
289
|
+
// }
|
|
287
290
|
selectionChanged(tiles) {
|
|
288
291
|
if (tiles.length === 1)
|
|
289
292
|
this.loadDetails(tiles[0].id);
|
|
@@ -363,15 +366,12 @@ export class FilesPageComponent {
|
|
|
363
366
|
this.clipboard.clear(APP_ID);
|
|
364
367
|
}
|
|
365
368
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
366
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FilesPageComponent, isStandalone: true, selector: "ymd-files", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.smallScreen": "smallScreenLayout()", "class.searchFocused": "this.searchFocused" } }, viewQueries: [{ propertyName: "tileList", first: true, predicate: ["tileList"], descendants: true, isSignal: true }, { propertyName: "splitViewCmp", first: true, predicate: SplitViewComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button class=\"back\" [disabled]=\"!currentFolder\" title=\"{{ 'yuv.app.drive.files.nav.back.tooltip' | translate }}\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.files.nav.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <yuv-simple-search [query]=\"query()\" (querySubmit)=\"onQuerySubmit($event)\"></yuv-simple-search>\n <!-- TODO: enable again once drive search needs to be a little bit more sophisticated -->\n <!-- <ymd-drive-search (focused)=\"searchFocused = $event\"></ymd-drive-search> -->\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n title=\"{{ 'yuv.app.drive.files.toggletree.tooltip' | translate }}\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <yvc-icon [svg]=\"icons.toggleLeft\"></yvc-icon>\n </button>\n <button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n title=\"{{ 'yuv.app.drive.files.toggledetails.tooltip' | translate }}\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <yvc-icon [svg]=\"icons.toggleRight\"></yvc-icon>\n </button>\n }\n <yuv-tile-config-trigger\n [icon]=\"icons.settings\"\n [bucket]=\"objectConfigBucket\"\n [bucketLabel]=\"tileConfigBucketLabel\"\n [options]=\"tileListOptions\"\n ></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\">\n <!-- folder tree -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree yuvFocusable=\"Tree\"></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yvcSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <yvc-icon [svg]=\"icons.attention\"></yvc-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (query()?.term) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <div class=\"flavors\">\n <!-- TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }-->\n </div>\n </header>\n\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (copy)=\"onCopy($event)\"\n (cut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n (ctxMenu)=\"onContextmenu($event)\"\n [highlights]=\"highlightStyles$ | async\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yvc-split-view>\n", styles: [":host{--files-button-padding: calc(var(--app-pane-padding) / 4);--files-button-border-radius: 2px;--files-button-gap: calc(var(--app-pane-padding) / 4);--files-icon-size: 20px;height:100%;overflow:hidden;display:flex;flex-flow:column}:host.searchFocused header>nav .search{grid-column:-1/-3}:host header{flex:0 0 auto}:host header>nav{background-color:var(--app-drive-header-background);border-block-end:1px solid var(--panel-divider-color);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;align-items:center;gap:var(--files-button-gap)}:host header>nav .nav button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host header>nav .nav button yvc-icon{--icon-size: var(--files-icon-size)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;align-self:stretch;display:flex;align-items:center;border-radius:var(--files-button-border-radius);padding:0 .5em;border:1px solid var(--panel-divider-color)}:host header>nav .search{grid-column:-1/-2;grid-row:1;z-index:1}:host yvc-split-view{flex:1;animation:fade-in .3s ease-in-out}:host ymd-ribbon{--ribbon-button-padding: var(--files-button-padding);--ribbon-button-border-radius: var(--files-button-border-radius);--ribbon-button-gap: var(--files-button-gap);--ribbon-icon-size: var(--files-icon-size)}:host ymd-ribbon .options{grid-area:options;display:flex;gap:var(--files-button-gap);align-items:center}:host ymd-ribbon .options yuv-tile-config-trigger{--icon-size: var(--files-icon-size);--button-padding: var(--files-button-padding)}:host ymd-ribbon .options button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host ymd-ribbon .options button yvc-icon{--icon-size: var(--files-icon-size)}:host ymd-ribbon .options button.toggle.enabled{background-color:var(--item-focus-background-color)}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host main yvc-master-details{flex:1;overflow:hidden;box-sizing:border-box}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p yvc-icon{--icon-size: 48px;display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--app-pane-padding);display:grid;grid-template-columns:2fr max-content;grid-template-rows:auto auto 1fr;gap:0;grid-auto-flow:row;grid-template-areas:\"title sort\" \"searchfilter searchfilter\" \"flavours flavours\"}:host .files header h1{grid-area:title;margin:0;padding:0;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 4)}:host .files header .flavors yuv-flavor-chip{font-size:var(--font-hint);cursor:pointer;--flavor-background: var(--panel-background);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--color-accent)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{flex:1;overflow:hidden}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .message p{max-width:31ch;line-height:1.5em}:host yvc-split-view{height:100%;box-sizing:border-box}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;box-sizing:border-box}:host yuv-tile-list{--tile-border: 1px solid var(--panel-divider-color);--tile-border-width: 0 0 1px 0;--tile-padding: calc(var(--app-pane-padding) / 2);--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--panel-background-lightgrey)}:host p.empty{color:var(--text-color-caption)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--app-pane-padding) !important}@keyframes fade-in{0%{opacity:0}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YvcSplitViewModule }, { kind: "component", type: i3.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i3.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: TileListComponent, selector: "yuv-tile-list", inputs: ["bucket", "multiselect", "options", "flavor", "query", "preselect", "highlights"], outputs: ["itemSelect", "copy", "cut", "busy", "queryResult", "selectionChange", "itemDblClick", "ctxMenu"] }, { kind: "component", type: BreadcrumbComponent, selector: "ymd-breadcrumb" }, { kind: "component", type: FolderTreeComponent, selector: "ymd-folder-tree" }, { kind: "component", type: ObjectSummaryComponent, selector: "yuv-object-summary", inputs: ["actions", "dmsObject", "objectId", "configType"] }, { kind: "component", type: TileConfigTriggerComponent, selector: "yuv-tile-config-trigger", inputs: ["icon", "bucket", "bucketLabel", "options"] }, { kind: "component", type: RibbonComponent, selector: "ymd-ribbon", inputs: ["busy", "enableClipboard", "objects", "excludeActions"] }, { kind: "component", type: AddButtonComponent, selector: "ymd-add-button", inputs: ["disabled"] }, { kind: "component", type: SimpleSearchComponent, selector: "yuv-simple-search", inputs: ["targets", "query"], outputs: ["querySubmit", "targetSelectionChanged", "queryChange", "typeAggregation"] }, { kind: "component", type: MultiObjectSummaryComponent, selector: "yuv-multi-object-summary", inputs: ["headline"] }, { kind: "component", type: SortComponent, selector: "ymd-sort", outputs: ["sortChanged"] }, { kind: "component", type: SearchFilterComponent, selector: "ymd-search-filter", inputs: ["query"], outputs: ["queryChange"] }, { kind: "directive", type: FileDropZoneDirective, selector: "[yuvFileDropZone]", inputs: ["yuvFileDropZone", "fileDropDisabled"], outputs: ["fileDrop", "fileDropOver"] }] }); }
|
|
369
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FilesPageComponent, isStandalone: true, selector: "ymd-files", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.smallScreen": "smallScreenLayout()" } }, viewQueries: [{ propertyName: "tileList", first: true, predicate: ["tileList"], descendants: true, isSignal: true }, { propertyName: "splitViewCmp", first: true, predicate: SplitViewComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button class=\"back\" [disabled]=\"!currentFolder\" title=\"{{ 'yuv.app.drive.files.nav.back.tooltip' | translate }}\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.files.nav.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <ymd-drive-search></ymd-drive-search>\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n title=\"{{ 'yuv.app.drive.files.toggletree.tooltip' | translate }}\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <yvc-icon [svg]=\"icons.toggleLeft\"></yvc-icon>\n </button>\n <button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n title=\"{{ 'yuv.app.drive.files.toggledetails.tooltip' | translate }}\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <yvc-icon [svg]=\"icons.toggleRight\"></yvc-icon>\n </button>\n }\n <yuv-tile-config-trigger\n [icon]=\"icons.settings\"\n [bucket]=\"objectConfigBucket\"\n [bucketLabel]=\"tileConfigBucketLabel\"\n [options]=\"tileListOptions\"\n ></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\">\n <!-- folder tree -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree yuvFocusable=\"Tree\"></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yvcSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <yvc-icon [svg]=\"icons.attention\"></yvc-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (query()?.term && !extendedQuery()) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <div class=\"flavors\">\n <!-- TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }-->\n </div>\n </header>\n\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (copy)=\"onCopy($event)\"\n (cut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n (ctxMenu)=\"onContextmenu($event)\"\n [highlights]=\"highlightStyles$ | async\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yvc-split-view>\n", styles: [":host{--files-button-padding: calc(var(--app-pane-padding) / 4);--files-button-border-radius: 2px;--files-button-gap: calc(var(--app-pane-padding) / 4);--files-icon-size: 20px;height:100%;overflow:hidden;display:flex;flex-flow:column}:host header{flex:0 0 auto}:host header>nav{background-color:var(--app-drive-header-background);border-block-end:1px solid var(--panel-divider-color);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;align-items:center;gap:var(--files-button-gap)}:host header>nav .nav button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host header>nav .nav button yvc-icon{--icon-size: var(--files-icon-size)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;align-self:stretch;display:flex;align-items:center;border-radius:var(--files-button-border-radius);padding:0 .5em;border:1px solid var(--panel-divider-color)}:host header>nav .search{grid-column:-1/-2;grid-row:1;z-index:1}:host yvc-split-view{flex:1;animation:fade-in .3s ease-in-out}:host ymd-ribbon{--ribbon-button-padding: var(--files-button-padding);--ribbon-button-border-radius: var(--files-button-border-radius);--ribbon-button-gap: var(--files-button-gap);--ribbon-icon-size: var(--files-icon-size)}:host ymd-ribbon .options{grid-area:options;display:flex;gap:var(--files-button-gap);align-items:center}:host ymd-ribbon .options yuv-tile-config-trigger{--icon-size: var(--files-icon-size);--button-padding: var(--files-button-padding)}:host ymd-ribbon .options button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host ymd-ribbon .options button yvc-icon{--icon-size: var(--files-icon-size)}:host ymd-ribbon .options button.toggle.enabled{background-color:var(--item-focus-background-color)}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host main yvc-master-details{flex:1;overflow:hidden;box-sizing:border-box}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p yvc-icon{--icon-size: 48px;display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--app-pane-padding);display:grid;grid-template-columns:2fr max-content;grid-template-rows:auto auto 1fr;gap:0;grid-auto-flow:row;grid-template-areas:\"title sort\" \"searchfilter searchfilter\" \"flavours flavours\"}:host .files header h1{grid-area:title;margin:0;padding:0;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 4)}:host .files header .flavors yuv-flavor-chip{font-size:var(--font-hint);cursor:pointer;--flavor-background: var(--panel-background);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--color-accent)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{flex:1;overflow:hidden}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .message p{max-width:31ch;line-height:1.5em}:host yvc-split-view{height:100%;box-sizing:border-box}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;box-sizing:border-box}:host yuv-tile-list{--tile-border: 1px solid var(--panel-divider-color);--tile-border-width: 0 0 1px 0;--tile-padding: calc(var(--app-pane-padding) / 2);--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--panel-background-lightgrey)}:host p.empty{color:var(--text-color-caption)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--app-pane-padding) !important}@keyframes fade-in{0%{opacity:0}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YvcSplitViewModule }, { kind: "component", type: i3.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i3.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: TileListComponent, selector: "yuv-tile-list", inputs: ["bucket", "multiselect", "options", "flavor", "query", "preselect", "highlights"], outputs: ["itemSelect", "copy", "cut", "busy", "queryResult", "selectionChange", "itemDblClick", "ctxMenu"] }, { kind: "component", type: BreadcrumbComponent, selector: "ymd-breadcrumb" }, { kind: "component", type: FolderTreeComponent, selector: "ymd-folder-tree" }, { kind: "component", type: ObjectSummaryComponent, selector: "yuv-object-summary", inputs: ["actions", "dmsObject", "objectId", "configType"] }, { kind: "component", type: TileConfigTriggerComponent, selector: "yuv-tile-config-trigger", inputs: ["icon", "bucket", "bucketLabel", "options"] }, { kind: "component", type: RibbonComponent, selector: "ymd-ribbon", inputs: ["busy", "enableClipboard", "objects", "excludeActions"] }, { kind: "component", type: AddButtonComponent, selector: "ymd-add-button", inputs: ["disabled"] }, { kind: "component", type: MultiObjectSummaryComponent, selector: "yuv-multi-object-summary", inputs: ["headline"] }, { kind: "component", type: SortComponent, selector: "ymd-sort", outputs: ["sortChanged"] }, { kind: "component", type: SearchFilterComponent, selector: "ymd-search-filter", inputs: ["query"], outputs: ["queryChange"] }, { kind: "component", type: DriveSearchComponent, selector: "ymd-drive-search" }, { kind: "directive", type: FileDropZoneDirective, selector: "[yuvFileDropZone]", inputs: ["yuvFileDropZone", "fileDropDisabled"], outputs: ["fileDrop", "fileDropOver"] }] }); }
|
|
367
370
|
}
|
|
368
371
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilesPageComponent, decorators: [{
|
|
369
372
|
type: Component,
|
|
370
373
|
args: [{ selector: 'ymd-files', standalone: true, imports: [NgClass, AsyncPipe, ...module, ...components, FileDropZoneDirective], host: {
|
|
371
374
|
'[class.smallScreen]': 'smallScreenLayout()'
|
|
372
|
-
}, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button class=\"back\" [disabled]=\"!currentFolder\" title=\"{{ 'yuv.app.drive.files.nav.back.tooltip' | translate }}\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.files.nav.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <yuv-simple-search [query]=\"query()\" (querySubmit)=\"onQuerySubmit($event)\"></yuv-simple-search>\n <!-- TODO: enable again once drive search needs to be a little bit more sophisticated -->\n <!-- <ymd-drive-search (focused)=\"searchFocused = $event\"></ymd-drive-search> -->\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n title=\"{{ 'yuv.app.drive.files.toggletree.tooltip' | translate }}\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <yvc-icon [svg]=\"icons.toggleLeft\"></yvc-icon>\n </button>\n <button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n title=\"{{ 'yuv.app.drive.files.toggledetails.tooltip' | translate }}\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <yvc-icon [svg]=\"icons.toggleRight\"></yvc-icon>\n </button>\n }\n <yuv-tile-config-trigger\n [icon]=\"icons.settings\"\n [bucket]=\"objectConfigBucket\"\n [bucketLabel]=\"tileConfigBucketLabel\"\n [options]=\"tileListOptions\"\n ></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\">\n <!-- folder tree -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree yuvFocusable=\"Tree\"></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yvcSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <yvc-icon [svg]=\"icons.attention\"></yvc-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (query()?.term) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <div class=\"flavors\">\n <!-- TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }-->\n </div>\n </header>\n\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (copy)=\"onCopy($event)\"\n (cut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n (ctxMenu)=\"onContextmenu($event)\"\n [highlights]=\"highlightStyles$ | async\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yvc-split-view>\n", styles: [":host{--files-button-padding: calc(var(--app-pane-padding) / 4);--files-button-border-radius: 2px;--files-button-gap: calc(var(--app-pane-padding) / 4);--files-icon-size: 20px;height:100%;overflow:hidden;display:flex;flex-flow:column}:host.searchFocused header>nav .search{grid-column:-1/-3}:host header{flex:0 0 auto}:host header>nav{background-color:var(--app-drive-header-background);border-block-end:1px solid var(--panel-divider-color);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;align-items:center;gap:var(--files-button-gap)}:host header>nav .nav button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host header>nav .nav button yvc-icon{--icon-size: var(--files-icon-size)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;align-self:stretch;display:flex;align-items:center;border-radius:var(--files-button-border-radius);padding:0 .5em;border:1px solid var(--panel-divider-color)}:host header>nav .search{grid-column:-1/-2;grid-row:1;z-index:1}:host yvc-split-view{flex:1;animation:fade-in .3s ease-in-out}:host ymd-ribbon{--ribbon-button-padding: var(--files-button-padding);--ribbon-button-border-radius: var(--files-button-border-radius);--ribbon-button-gap: var(--files-button-gap);--ribbon-icon-size: var(--files-icon-size)}:host ymd-ribbon .options{grid-area:options;display:flex;gap:var(--files-button-gap);align-items:center}:host ymd-ribbon .options yuv-tile-config-trigger{--icon-size: var(--files-icon-size);--button-padding: var(--files-button-padding)}:host ymd-ribbon .options button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host ymd-ribbon .options button yvc-icon{--icon-size: var(--files-icon-size)}:host ymd-ribbon .options button.toggle.enabled{background-color:var(--item-focus-background-color)}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host main yvc-master-details{flex:1;overflow:hidden;box-sizing:border-box}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p yvc-icon{--icon-size: 48px;display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--app-pane-padding);display:grid;grid-template-columns:2fr max-content;grid-template-rows:auto auto 1fr;gap:0;grid-auto-flow:row;grid-template-areas:\"title sort\" \"searchfilter searchfilter\" \"flavours flavours\"}:host .files header h1{grid-area:title;margin:0;padding:0;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 4)}:host .files header .flavors yuv-flavor-chip{font-size:var(--font-hint);cursor:pointer;--flavor-background: var(--panel-background);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--color-accent)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{flex:1;overflow:hidden}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .message p{max-width:31ch;line-height:1.5em}:host yvc-split-view{height:100%;box-sizing:border-box}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;box-sizing:border-box}:host yuv-tile-list{--tile-border: 1px solid var(--panel-divider-color);--tile-border-width: 0 0 1px 0;--tile-padding: calc(var(--app-pane-padding) / 2);--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--panel-background-lightgrey)}:host p.empty{color:var(--text-color-caption)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--app-pane-padding) !important}@keyframes fade-in{0%{opacity:0}}\n"] }]
|
|
373
|
-
}], ctorParameters: () => []
|
|
374
|
-
type: HostBinding,
|
|
375
|
-
args: ['class.searchFocused']
|
|
376
|
-
}] } });
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvcGFnZXMvZmlsZXMvZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvcGFnZXMvZmlsZXMvZmlsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUNMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBR2hCLGFBQWEsRUFFYixVQUFVLEVBQ1YsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixRQUFRLEVBR1IsVUFBVSxFQUNWLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFVLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLE1BQU0s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LEVBQUUscUJBQXFCO3FCQUM3Qzt3REF1RG1DLGFBQWE7c0JBQWhELFdBQVc7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBIb3N0QmluZGluZywgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBTaWduYWwsIHNpZ25hbCwgdW50cmFja2VkLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtTWFwLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBDYWNoZVNlcnZpY2UsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQsXG4gIENsaXBib2FyZFNlcnZpY2UsXG4gIENvbmZpZ1R5cGVPcHRpb24sXG4gIERldmljZVNjcmVlbixcbiAgRGV2aWNlU2VydmljZSxcbiAgRG1zT2JqZWN0LFxuICBEbXNTZXJ2aWNlLFxuICBFdmVudFNlcnZpY2UsXG4gIE9iamVjdENvbmZpZ1NlcnZpY2UsXG4gIE9wZXJhdG9yLFxuICBSZXNvbHZlZE9iamVjdENvbmZpZyxcbiAgU2VhcmNoUXVlcnksXG4gIFN5c3RlbVR5cGUsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgWXV2RXZlbnRUeXBlXG59IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBBY3Rpb25zU2VydmljZSwgQkFTRV9BQ1RJT04gfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWxlRHJvcFpvbmVEaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvY29tbW9uJztcbmltcG9ydCB7IFlVVl9JQ09OUyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9pY29ucyc7XG5pbXBvcnQgeyBNdWx0aU9iamVjdFN1bW1hcnlDb21wb25lbnQsIE9iamVjdFN1bW1hcnlDb21wb25lbnQgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LXN1bW1hcnknO1xuaW1wb3J0IHsgU2ltcGxlU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL3NpbXBsZS1zZWFyY2gnO1xuaW1wb3J0IHsgVGlsZUNvbmZpZ1RyaWdnZXJDb21wb25lbnQsIFRpbGVEYXRhLCBUaWxlTGlzdENvbXBvbmVudCwgVGlsZUxpc3RDb25maWdPcHRpb25zLCBUaWxlTGlzdEhpZ2hsaWdodCB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay90aWxlLWxpc3QnO1xuaW1wb3J0IHsgT2JqZWN0Rmxhdm9yLCBTaGVsbFNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1zaGVsbC1jb3JlJztcbmltcG9ydCB7IElDT05TLCBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvb3ZlcmZsb3ctbWVudSc7XG5pbXBvcnQgeyBTcGxpdFZpZXdDb21wb25lbnQsIFNwbGl0Vmlld0xheW91dFNldHRpbmdzLCBZdmNTcGxpdFZpZXdNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvc3BsaXQtdmlldyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkNvbXBvbmVudCwgU29ydENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQWRkQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hZGQtYnV0dG9uL2FkZC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEZvbGRlclRyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZvbGRlci10cmVlL2ZvbGRlci10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaWJib25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3JpYmJvbi9yaWJib24uY29tcG9uZW50JztcbmltcG9ydCB7IEFQUF9EUklWRV9JQ09OUyB9IGZyb20gJy4uLy4uL2RyaXZlLmljb25zJztcbmltcG9ydCB7IEFDVElPTl9DT05URVhULCBBUFBfSUQsIEFQUF9TQ0hFTUEgfSBmcm9tICcuLi8uLi9kcml2ZS5zY2hlbWEnO1xuaW1wb3J0IHsgRFJJVkVfRVZFTlQsIERSSVZFX1FVRVJZX0ZPTERFUl9JRCwgRFJJVkVfUk9PVF9GT0xERVJfSUQsIERyaXZlRm9sZGVySWQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kcml2ZS9kcml2ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHJpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJpdmUvZHJpdmUuc2VydmljZSc7XG5pbXBvcnQgeyBTVE9SRURfUVVFUllfSURfUFJFRklYIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5kYXRhJztcbmltcG9ydCB7IFN0b3JlZFF1ZXJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3RvcmVkUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudCc7XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gIFRpbGVMaXN0Q29tcG9uZW50LFxuICBCcmVhZGNydW1iQ29tcG9uZW50LFxuICBGb2xkZXJUcmVlQ29tcG9uZW50LFxuICBPYmplY3RTdW1tYXJ5Q29tcG9uZW50LFxuICBUaWxlQ29uZmlnVHJpZ2dlckNvbXBvbmVudCxcbiAgUmliYm9uQ29tcG9uZW50LFxuICBBZGRCdXR0b25Db21wb25lbnQsXG4gIFNpbXBsZVNlYXJjaENvbXBvbmVudCxcbiAgTXVsdGlPYmplY3RTdW1tYXJ5Q29tcG9uZW50LFxuICBTb3J0Q29tcG9uZW50LFxuICBTZWFyY2hGaWx0ZXJDb21wb25lbnRcbl07XG5cbmNvbnN0IG1vZHVsZSA9IFtZdmNJY29uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIFJvdXRlck1vZHVsZSwgWXZjU3BsaXRWaWV3TW9kdWxlXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneW1kLWZpbGVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIEFzeW5jUGlwZSwgLi4ubW9kdWxlLCAuLi5jb21wb25lbnRzLCBGaWxlRHJvcFpvbmVEaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsZXMuY29tcG9uZW50LnNjc3MnLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zbWFsbFNjcmVlbl0nOiAnc21hbGxTY3JlZW5MYXlvdXQoKSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlc1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICB0aWxlTGlzdCA9IHZpZXdDaGlsZDxUaWxlTGlzdENvbXBvbmVudD4oJ3RpbGVMaXN0Jyk7XG5cbiAgI0xBWU9VVF9TRVRUSU5HU19TVE9SQUdFX0tFWSA9ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmxheW91dCc7XG5cbiAgcHJpdmF0ZSBzaGVsbFNlcnZpY2UgPSBpbmplY3QoU2hlbGxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkbXNTZXJ2aWNlID0gaW5qZWN0KERtc1NlcnZpY2UpO1xuICBwcml2YXRlIGRyaXZlID0gaW5qZWN0KERyaXZlU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzdG9yZWRRdWVyeVNlcnZpY2UgPSBpbmplY3QoU3RvcmVkUXVlcnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjbGlwYm9hcmQgPSBpbmplY3QoQ2xpcGJvYXJkU2VydmljZSk7XG4gIHByaXZhdGUgYWN0aW9uc1NlcnZpY2UgPSBpbmplY3QoQWN0aW9uc1NlcnZpY2UpO1xuICByZWFkb25seSAjb2JqZWN0Q29uZmlnU2VydmljZSA9IGluamVjdChPYmplY3RDb25maWdTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2RldmljZSA9IGluamVjdChEZXZpY2VTZXJ2aWNlKTtcblxuICByZWFkb25seSAjZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEV2ZW50U2VydmljZSk7XG5cbiAgcmVhZG9ubHkgRVJST1JfQ09ERSA9IHtcbiAgICBOT1RfRk9VTkQ6ICc0MDQnLFxuICAgIC8vIHBhdHRlcm46IHtIVFRQX1NUQVRVU19DT0RFfS17U0VSVklDRV9FUlJPUl9DT0RFfVxuICAgIElOVkFMSURfSUQ6ICc0MjItMjkxMidcbiAgfTtcblxuICAjYXBwQ2FjaGUgPSBpbmplY3QoQXBwQ2FjaGVTZXJ2aWNlKTtcblxuICBvYmplY3RDb25maWdCdWNrZXQ6IHN0cmluZyA9IEFQUF9TQ0hFTUEuaWQ7XG5cbiAgc3BsaXRWaWV3Q21wID0gdmlld0NoaWxkLnJlcXVpcmVkKFNwbGl0Vmlld0NvbXBvbmVudCk7XG4gIHNlbGVjdGVkID0gc2lnbmFsPERtc09iamVjdCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgZmlsZURyb3BTdW1tYXJ5RGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5zZWxlY3RlZCgpPy5wZXJtaXNzaW9ucz8ud3JpdGVDb250ZW50KTtcbiAgZGlzYWJsZUNyZWF0ZSA9IGZhbHNlO1xuXG4gIGFjdGlvbnMgPSB0aGlzLmRyaXZlLnN0YXRlJC5hY3Rpb25zO1xuICBzZWxlY3Rpb24gPSB0aGlzLmRyaXZlLnN0YXRlJC5zZWxlY3Rpb247XG5cbiAgYnVzeSA9IHRoaXMuZHJpdmUuc3RhdGUkLmJ1c3k7XG4gIGZsYXZvckNoaXBzOiBPYmplY3RGbGF2b3JbXSA9IHRoaXMuc2hlbGxTZXJ2aWNlLmdldE9iamVjdEZsYXZvcnMoKTtcbiAgYXBwbGllZEZsYXZvcj86IE9iamVjdEZsYXZvcjtcblxuICBzZWxlY3Rpb25BY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gKHsgc2VsZWN0aW9uOiB0aGlzLnNlbGVjdGlvbigpLCBhY3Rpb25zOiB0aGlzLmFjdGlvbnMoKSB9KSk7XG5cbiAgZW1wdHlNb2RlID0gc2lnbmFsPERyaXZlRm9sZGVySWQgfCBudWxsPihudWxsKTtcbiAgLy8gZXJyb3IgY29kZSB3aGVuIGxvYWRpbmcgdGhlIG9iamVjdCBmYWlsZWQuIFRoaXMgd2lsbCBiZSB1c2VkXG4gIC8vIHRvIGRldGVybWluZSBhIHByb3BlciBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXlcbiAgZXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbmZpZ1R5cGVPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBDb25maWdUeXBlT3B0aW9uPiA9IHtcbiAgICBmb2xkZXI6IHsgYnVja2V0OiBBUFBfSUQsIHR5cGU6IEFQUF9TQ0hFTUEudHlwZXNbJ2ZvbGRlciddIH0sXG4gICAgZmlsZTogeyBidWNrZXQ6IEFQUF9JRCwgdHlwZTogQVBQX1NDSEVNQS50eXBlc1snZmlsZSddIH1cbiAgfTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYXJjaEZvY3VzZWQnKSBzZWFyY2hGb2N1c2VkID0gZmFsc2U7XG5cbiAgY3VycmVudEZvbGRlcklEPzogc3RyaW5nO1xuICBjdXJyZW50Rm9sZGVyPzogRG1zT2JqZWN0O1xuICBlbmFibGVEZXRhaWxzID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBlbmFibGVUcmVlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICB0aWxlQ29uZmlnQnVja2V0TGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLnRpbGUtY29uZmlnLmJ1Y2tldCcpO1xuXG4gIHNtYWxsU2NyZWVuTGF5b3V0ID0gc2lnbmFsKGZhbHNlKTtcbiAgc29ydE9wdGlvbnNBdmFpbGFibGUgPSBzaWduYWwodHJ1ZSk7XG5cbiAgaWQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBoaWdobGlnaHRTdHlsZXMkOiBPYnNlcnZhYmxlPFRpbGVMaXN0SGlnaGxpZ2h0W10+ID0gdGhpcy5jbGlwYm9hcmQuY2xpcGJvYXJkJChBUFBfSUQpLnBpcGUoXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgbWFwKChjKSA9PiB7XG4gICAgICByZXR1cm4gYyAmJiBjLm1vZGUgJiYgYy5vYmplY3RzPy5sZW5ndGhcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNzc1N0eWxlczogdGhpcy4jaGlnaGxpZ2h0U3R5bGVzW2M/Lm1vZGVdLFxuICAgICAgICAgICAgICBpZHM6IGMub2JqZWN0cy5tYXAoKG8pID0+IG8uaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgI2hpZ2hsaWdodFN0eWxlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0ge1xuICAgIGN1dDogeyBvcGFjaXR5OiAwLjUgfVxuICB9O1xuXG4gICNyb3V0ZUlkRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwYXJhbSA9IHRoaXMuaWQoKSB8fCB1bmRlZmluZWQ7XG5cbiAgICB1bnRyYWNrZWQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHBhcmFtID09PSBEUklWRV9RVUVSWV9GT0xERVJfSUQpIHtcbiAgICAgICAgdGhpcy5lbXB0eU1vZGUuc2V0KERSSVZFX1FVRVJZX0ZPTERFUl9JRCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbXB0eU1vZGUuc2V0KHBhcmFtID09PSBEUklWRV9ST09UX0ZPTERFUl9JRCA/IERSSVZFX1JPT1RfRk9MREVSX0lEIDogbnVsbCk7XG4gICAgICB0aGlzLmVycm9yLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kaXNhYmxlQ3JlYXRlID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJRCA9IHBhcmFtO1xuICAgICAgdGhpcy5kcml2ZS51cGRhdGVDdXJyZW50Rm9sZGVyKHRoaXMuY3VycmVudEZvbGRlcklEKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmN1cnJlbnRGb2xkZXIgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySUQgPT09IERSSVZFX1JPT1RfRk9MREVSX0lEKSB0aGlzLmN1cnJlbnRGb2xkZXJJRCA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHRoaXMuY3VycmVudEZvbGRlcklEKSB7XG4gICAgICAgIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QodGhpcy5jdXJyZW50Rm9sZGVySUQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKG86IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVyID0gbztcbiAgICAgICAgICAgIHRoaXMuX3NldEZvbGRlclF1ZXJ5KHRoaXMuI2dldFRpdGxlKG8pKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBmb2xkZXInLCBlKTtcbiAgICAgICAgICAgIHRoaXMuI3Byb2Nlc3NMb2FkRXJyb3IoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB0aGlzLl9zZXRGb2xkZXJRdWVyeSh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLmZvbGRlci10cmVlLm15ZHJpdmUnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRpbGVMaXN0T3B0aW9uczogVGlsZUxpc3RDb25maWdPcHRpb25zID0ge1xuICAgIGFjdGlvbkNvbnRleHQ6IEFDVElPTl9DT05URVhULFxuICAgIGNvbmZpZ1R5cGVzOiBPYmplY3QudmFsdWVzKEFQUF9TQ0hFTUEudHlwZXMpLFxuICAgIGNvbmZpZ0ZsYXZvcnM6IFsuLi50aGlzLnNoZWxsU2VydmljZS5nZXRPYmplY3RGbGF2b3JzKCksIC4uLkFQUF9TQ0hFTUEuZmxhdm9ycy5maWx0ZXIoKGYpID0+ICFmLmFwcGxpY2FibGVUbykubWFwKChmKSA9PiAoeyAuLi5mLCBhcHA6IEFQUF9JRCB9KSldXG4gIH07XG5cbiAgcXVlcnkgPSB0aGlzLmRyaXZlLnN0YXRlJC5xdWVyeTtcbiAgcXVlcnlUaXRsZSA9IHRoaXMuZHJpdmUuc3RhdGUkLnF1ZXJ5VGl0bGU7XG5cbiAgaWNvbnMgPSB7XG4gICAgLi4uQVBQX0RSSVZFX0lDT05TLFxuICAgIHNvcnQ6IEFQUF9EUklWRV9JQ09OUy5zb3J0LFxuICAgIGJhY2s6IFlVVl9JQ09OUy5iYWNrLFxuICAgIGF0dGVudGlvbjogWVVWX0lDT05TLmF0dGVudGlvbixcbiAgICByZWZyZXNoOiBZVVZfSUNPTlMucmVmcmVzaCxcbiAgICBjbGVhcjogSUNPTlMuY2xlYXJcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRyaXZlLmV2ZW50cyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChlKSA9PiB7XG4gICAgICAgIGlmIChlID09PSBEUklWRV9FVkVOVC5yZWZyZXNoKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuI2RldmljZS5zY3JlZW5DaGFuZ2UkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoczogRGV2aWNlU2NyZWVuKSA9PiB7XG4gICAgICAgIHRoaXMuc21hbGxTY3JlZW5MYXlvdXQuc2V0KHMuc2l6ZSA9PT0gJ3MnICYmIHMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcpO1xuICAgICAgICB0aGlzLmVuYWJsZURldGFpbHMuc2V0KCF0aGlzLnNtYWxsU2NyZWVuTGF5b3V0KCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZHJpdmUuc3RhdGUkLnNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChzZWw6IERtc09iamVjdFtdKSA9PiB7XG4gICAgICAgICAgaWYgKHNlbD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnRpbGVMaXN0KCk/LmNsZWFyU2VsZWN0aW9uKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocDogUGFyYW1NYXApID0+IHtcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9uc0F2YWlsYWJsZS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXSA9PT0gRFJJVkVfUVVFUllfRk9MREVSX0lEKSB7XG4gICAgICAgICAgY29uc3QgcSA9IHAuZ2V0KCdxJyk7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ3JlYXRlID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgcXVlcnkgaXMgYSBzdG9yZWQgcXVlcnlcbiAgICAgICAgICBpZiAocT8uc3RhcnRzV2l0aChTVE9SRURfUVVFUllfSURfUFJFRklYKSkge1xuICAgICAgICAgICAgY29uc3Qgc3E6IFN0b3JlZFF1ZXJ5IHwgdW5kZWZpbmVkID0gdGhpcy5zdG9yZWRRdWVyeVNlcnZpY2UuZ2V0U3RvcmVkUXVlcnkocSk7XG4gICAgICAgICAgICBpZiAoc3EpIHtcbiAgICAgICAgICAgICAgdGhpcy5kcml2ZS51cGRhdGVRdWVyeShzcS5xdWVyeSwgc3EubGFiZWwpO1xuICAgICAgICAgICAgICB0aGlzLnNvcnRPcHRpb25zQXZhaWxhYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHEpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnNBdmFpbGFibGUuc2V0KHRydWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3E6IFNlYXJjaFF1ZXJ5ID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQocSkpO1xuICAgICAgICAgICAgICBzcS5maWx0ZXJzID0gKHNxLmZpbHRlcnMgfHwgW10pLmZpbHRlcigoZikgPT4gZi5mICE9PSBCYXNlT2JqZWN0VHlwZUZpZWxkLlBBUkVOVF9JRCk7XG4gICAgICAgICAgICAgIHRoaXMuZHJpdmUudXBkYXRlUXVlcnkoc3EsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hcHAuZHJpdmUuZmlsZXMuc2VhcmNoLnJlc3VsdC50aXRsZScpKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIHF1ZXJ5JywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLiNldmVudFNlcnZpY2VcbiAgICAgIC5vbihZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICB0YXAoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnRpbGVMaXN0KCk/LnVwZGF0ZVRpbGVMaXN0KFtlLmRhdGFdKTtcbiAgICAgICAgICBlLmRhdGEuaWQgPT09IHRoaXMuc2VsZWN0ZWQoKT8uaWQgJiYgdGhpcy5zZWxlY3RlZC5zZXQoZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9uRmlsdGVyUXVlcnlDaGFuZ2UocTogU2VhcmNoUXVlcnkpIHtcbiAgICB0aGlzLmRyaXZlLnVwZGF0ZVF1ZXJ5KHEsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hcHAuZHJpdmUuZmlsZXMuc2VhcmNoLnJlc3VsdC50aXRsZScpKTtcbiAgICB0aGlzLmRyaXZlLnNldFNlbGVjdGlvbihbXSk7XG4gIH1cblxuICAjcHJvY2Vzc0xvYWRFcnJvcihlOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIGlmIChgJHtlLnN0YXR1c31gICE9PSB0aGlzLkVSUk9SX0NPREUuTk9UX0ZPVU5EKSB7XG4gICAgICB0aGlzLmVycm9yLnNldChgJHtlLnN0YXR1c30tJHtlLmVycm9yPy5zZXJ2aWNlRXJyb3JDb2RlIHx8ICcnfWApO1xuICAgIH0gZWxzZSB0aGlzLmVycm9yLnNldCh0aGlzLkVSUk9SX0NPREUuTk9UX0ZPVU5EKTtcbiAgfVxuXG4gICNnZXRUaXRsZShvOiBEbXNPYmplY3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNmZ1R5cGU6IENvbmZpZ1R5cGVPcHRpb24gPSBvLmlzRm9sZGVyID8gdGhpcy5jb25maWdUeXBlT3B0aW9uc1snZm9sZGVyJ10gOiB0aGlzLmNvbmZpZ1R5cGVPcHRpb25zWydmaWxlJ107XG4gICAgY29uc3Qgb2M6IFJlc29sdmVkT2JqZWN0Q29uZmlnID0gdGhpcy4jb2JqZWN0Q29uZmlnU2VydmljZS5nZXRSZXNvbHZlZE9iamVjdENvbmZpZyhvLmRhdGEsIGNmZ1R5cGUudHlwZSwgY2ZnVHlwZS5idWNrZXQsIHRydWUpO1xuICAgIHJldHVybiBvYy50aXRsZS52YWx1ZTtcbiAgfVxuXG4gIG9uRGVsZXRlKCkge1xuICAgIGNvbnN0IGRlbGV0ZUFjdGlvbiA9IHRoaXMuYWN0aW9ucygpLmZpbmQoKGEpID0+IGEuaWQgPT09IEJBU0VfQUNUSU9OLmRlbGV0ZSk7XG4gICAgaWYgKGRlbGV0ZUFjdGlvbikgZGVsZXRlQWN0aW9uLnJ1bih0aGlzLmRyaXZlLnN0YXRlJC5zZWxlY3Rpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRGb2xkZXJRdWVyeShxdWVyeVRpdGxlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kcml2ZS51cGRhdGVRdWVyeShcbiAgICAgIHtcbiAgICAgICAgZmlsdGVyczogW3sgZjogQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfSUQsIG86IE9wZXJhdG9yLkVRVUFMLCB2MTogdGhpcy5jdXJyZW50Rm9sZGVySUQgfHwgbnVsbCB9XVxuICAgICAgfSxcbiAgICAgIHF1ZXJ5VGl0bGVcbiAgICApO1xuICB9XG5cbiAgb25Db250ZXh0bWVudSh7IGV2ZW50IH06IHsgZXZlbnQ6IE1vdXNlRXZlbnQgfCBQb2ludGVyRXZlbnQgfSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5hY3Rpb25zU2VydmljZS5vcGVuQ29udGV4dE1lbnUodGhpcy5hY3Rpb25zLCAoYTogQWN0aW9uKSA9PiBhLnJ1bih0aGlzLnNlbGVjdGlvbigpKSwgeyB4OiBldmVudC54LCB5OiBldmVudC55IH0pO1xuICB9XG5cbiAgb25GaWxlRHJvcChmaWxlczogRmlsZVtdKSB7XG4gICAgdGhpcy5kcml2ZS5zZXRCdXN5KHRydWUpO1xuICAgIHRoaXMuZHJpdmUuY2hlY2tOYW1lc0FuZFVwbG9hZChmaWxlcykuc3Vic2NyaWJlKHsgY29tcGxldGU6ICgpID0+IHRoaXMuZHJpdmUuc2V0QnVzeShmYWxzZSkgfSk7XG4gIH1cblxuICBvbkZpbGVVcGRhdGVEcm9wKGZpbGU6IEZpbGVbXSkge1xuICAgIGNvbnN0IGRtc09iamVjdCA9IHRoaXMuc2VsZWN0ZWQoKTtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICB0aGlzLmRyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgICB0aGlzLmRyaXZlXG4gICAgICAgIC51cGxvYWRDb250ZW50KGRtc09iamVjdC5pZCwgZmlsZVswXSlcbiAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5kcml2ZS5zZXRCdXN5KGZhbHNlKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpdGVtRm9jdXNlZCh0aWxlOiBUaWxlRGF0YSkge1xuICAgIC8vIGNvbnNvbGUubG9nKHRpbGUpO1xuICB9XG5cbiAgaXRlbUNsaWNrZWQodGlsZTogVGlsZURhdGEpIHtcbiAgICBpZiAodGhpcy5zbWFsbFNjcmVlbkxheW91dCgpKSB0aGlzLml0ZW1Eb3VibGVDbGlja2VkKHRpbGUpO1xuICB9XG5cbiAgb25Db3B5KHRpbGVzOiBUaWxlRGF0YVtdKSB7XG4gICAgdGhpcy5jbGlwYm9hcmQuYWRkT2JqZWN0cyhcbiAgICAgIHRpbGVzLm1hcCgodCkgPT4gdC5kbXNPYmplY3QpLFxuICAgICAgJ2NvcHknLFxuICAgICAgQVBQX0lEXG4gICAgKTtcbiAgfVxuXG4gIG9uQ3V0KHRpbGVzOiBUaWxlRGF0YVtdKSB7XG4gICAgdGhpcy5jbGlwYm9hcmQuYWRkT2JqZWN0cyhcbiAgICAgIHRpbGVzLm1hcCgodCkgPT4gdC5kbXNPYmplY3QpLFxuICAgICAgJ2N1dCcsXG4gICAgICBBUFBfSURcbiAgICApO1xuICB9XG5cbiAgb25RdWVyeVN1Ym1pdChxOiBTZWFyY2hRdWVyeSkge1xuICAgIC8vIGluIG9yZGVyIHRvIGtlZXAgdGhlIHF1ZXJ5IGluIHRoZSB1cmwgYXMgc2hvcnQgYXNcbiAgICAvLyBwb3NzaWJsZSB3ZSdsbCBnZXQgcmlkIG9mIHRoZSBmaWVsZHMgYmVjYXVzZSB0aGV5IGNvdWxkIGJlXG4gICAgLy8gcmUtYXBwbGllZCBsYXRlciBvblxuICAgIHEuZmllbGRzID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLicsICdxdWVyeSddLCB7XG4gICAgICBxdWVyeVBhcmFtczogeyBxOiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocSkpIH0sXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKHRpbGVzOiBUaWxlRGF0YVtdKSB7XG4gICAgaWYgKHRpbGVzLmxlbmd0aCA9PT0gMSkgdGhpcy5sb2FkRGV0YWlscyh0aWxlc1swXS5pZCk7XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLnNldCh1bmRlZmluZWQpO1xuICAgICAgaWYgKHRpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmRyaXZlLnNldFNlbGVjdGlvbihbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgICAgIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3RzKHRpbGVzLm1hcCgoaSkgPT4gaS5pZCkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKG86IERtc09iamVjdFtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyaXZlLnNldEJ1c3koZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5kcml2ZS5zZXRTZWxlY3Rpb24obyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpdGVtRG91YmxlQ2xpY2tlZCh0aWxlOiBUaWxlRGF0YSkge1xuICAgIGlmICh0aWxlLmluc3RhbmNlRGF0YSkge1xuICAgICAgdGhpcy5kcml2ZS5zZXRCdXN5KHRydWUpO1xuICAgICAgY29uc3QgbmF2ID0gKHRpbGUuaW5zdGFuY2VEYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuQkFTRV9UWVBFX0lEXSBhcyBzdHJpbmcpID09PSBTeXN0ZW1UeXBlLkZPTERFUiA/IFsnLi4nXSA6IFsnLi4vLi4nLCAnb2JqZWN0J107XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbLi4ubmF2LCB0aWxlLmluc3RhbmNlRGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9JRF1dLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSkudGhlbigoKSA9PiB0aGlzLmRyaXZlLnNldEJ1c3koZmFsc2UpKTtcbiAgICB9XG4gIH1cblxuICBsb2FkRGV0YWlscyhpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zaGVsbFNlcnZpY2UuYWRkQnVzeSgpO1xuICAgIC8vIGxvYWQgdGhlIGRtcyBvYmplY3RcbiAgICB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0KGlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKG86IERtc09iamVjdCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLnNldChvKTtcbiAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2UucmVtb3ZlQnVzeSgpO1xuICAgICAgICB0aGlzLmRyaXZlLnNldFNlbGVjdGlvbihbb10pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5kcml2ZS5zZXRTZWxlY3Rpb24oW10pO1xuICB9XG5cbiAgb3BlblBhcmVudCgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVyKSB7XG4gICAgICB0aGlzLmRyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgICB0aGlzLnJvdXRlclxuICAgICAgICAubmF2aWdhdGUoWycuLicsIHRoaXMuY3VycmVudEZvbGRlci5kYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuUEFSRU5UX0lEXSB8fCBEUklWRV9ST09UX0ZPTERFUl9JRF0sIHtcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5kcml2ZS5zZXRCdXN5KGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0QnVzeShidXN5OiBib29sZWFuKSB7XG4gICAgdGhpcy5kcml2ZS5zZXRCdXN5KGJ1c3kpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnRpbGVMaXN0KCk/LnJlZnJlc2goKTtcbiAgICB0aGlzLmRyaXZlLnNldFNlbGVjdGlvbihbXSk7XG4gIH1cblxuICBvbkxheW91dFNldHRpbmdzQ2hhbmdlKGU6IGFueSkge1xuICAgIHRoaXMuI2FwcENhY2hlLnNldEl0ZW0odGhpcy4jTEFZT1VUX1NFVFRJTkdTX1NUT1JBR0VfS0VZLCBlKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gICNhcHBseUxheW91dFNldHRpbmdzKHNldHRpbmdzOiBTcGxpdFZpZXdMYXlvdXRTZXR0aW5ncykge1xuICAgIHRoaXMuc3BsaXRWaWV3Q21wKCkuYXBwbHlMYXlvdXRTZXR0aW5ncyhzZXR0aW5ncyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jYXBwQ2FjaGUuZ2V0SXRlbSh0aGlzLiNMQVlPVVRfU0VUVElOR1NfU1RPUkFHRV9LRVkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAobHM6IFNwbGl0Vmlld0xheW91dFNldHRpbmdzKSA9PiB7XG4gICAgICAgIGlmIChscykge1xuICAgICAgICAgIHRoaXMuZW5hYmxlRGV0YWlscy5zZXQobHMuYXJlYXNbMl0/LnZpc2libGUpO1xuICAgICAgICAgIHRoaXMuZW5hYmxlVHJlZS5zZXQobHMuYXJlYXNbMF0/LnZpc2libGUpO1xuICAgICAgICAgIHRoaXMuI2FwcGx5TGF5b3V0U2V0dGluZ3MobHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsaXBib2FyZC5jbGVhcihBUFBfSUQpO1xuICB9XG59XG4iLCI8aGVhZGVyPlxuICA8IS0tIG5hdmlnYXRpb24gYmFyIC0tPlxuICA8bmF2IFthdHRyLmFyaWEtbGFiZWxdPVwiJ3l1di5hcHAuZHJpdmUuZmlsZXMubmF2aWFndGlvbi5hcmlhLmxhYmVsJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJuYXZcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJiYWNrXCIgW2Rpc2FibGVkXT1cIiFjdXJyZW50Rm9sZGVyXCIgdGl0bGU9XCJ7eyAneXV2LmFwcC5kcml2ZS5maWxlcy5uYXYuYmFjay50b29sdGlwJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJvcGVuUGFyZW50KClcIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaWNvbnMuYmFja1wiPjwveXZjLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJyZWZyZXNoXCIgdGl0bGU9XCJ7eyAneXV2LmFwcC5kcml2ZS5maWxlcy5uYXYucmVmcmVzaC50b29sdGlwJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJyZWZyZXNoKClcIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaWNvbnMucmVmcmVzaFwiPjwveXZjLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoIXF1ZXJ5KCk/LnRlcm0pIHtcbiAgICAgIDx5bWQtYnJlYWRjcnVtYj48L3ltZC1icmVhZGNydW1iPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImJyZWFkY3J1bWJcIj48L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaFwiPlxuICAgICAgPHl1di1zaW1wbGUtc2VhcmNoIFtxdWVyeV09XCJxdWVyeSgpXCIgKHF1ZXJ5U3VibWl0KT1cIm9uUXVlcnlTdWJtaXQoJGV2ZW50KVwiPjwveXV2LXNpbXBsZS1zZWFyY2g+XG4gICAgICA8IS0tIFRPRE86IGVuYWJsZSBhZ2FpbiBvbmNlIGRyaXZlIHNlYXJjaCBuZWVkcyB0byBiZSBhIGxpdHRsZSBiaXQgbW9yZSBzb3BoaXN0aWNhdGVkIC0tPlxuICAgICAgPCEtLSA8eW1kLWRyaXZlLXNlYXJjaCAoZm9jdXNlZCk9XCJzZWFyY2hGb2N1c2VkID0gJGV2ZW50XCI+PC95bWQtZHJpdmUtc2VhcmNoPiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9uYXY+XG5cbiAgPCEtLSByaWJib24gd2l0aCBhY3Rpb25zIGFuZCBvcHRpb25zIC0tPlxuICA8eW1kLXJpYmJvbiBbb2JqZWN0c109XCJzZWxlY3Rpb24oKVwiIFtidXN5XT1cImJ1c3koKVwiIFtlbmFibGVDbGlwYm9hcmRdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjcHJpbWFyeUFjdGlvbnM+XG4gICAgICA8eW1kLWFkZC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVDcmVhdGVcIj48L3ltZC1hZGQtYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3NlY29uZGFyeUFjdGlvbnM+XG4gICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uc1wiPlxuICAgICAgICBAaWYgKCFzbWFsbFNjcmVlbkxheW91dCgpKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtdHJlZSB0b2dnbGVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBlbmFibGVkOiBlbmFibGVUcmVlKCkgfVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLnRvZ2dsZXRyZWUudG9vbHRpcCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVuYWJsZVRyZWUuc2V0KCFlbmFibGVUcmVlKCkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy50b2dnbGVMZWZ0XCI+PC95dmMtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1kZXRhaWxzIHRvZ2dsZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGVuYWJsZWQ6IGVuYWJsZURldGFpbHMoKSB9XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMudG9nZ2xlZGV0YWlscy50b29sdGlwJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZW5hYmxlRGV0YWlscy5zZXQoIWVuYWJsZURldGFpbHMoKSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx5dmMtaWNvbiBbc3ZnXT1cImljb25zLnRvZ2dsZVJpZ2h0XCI+PC95dmMtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICA8eXV2LXRpbGUtY29uZmlnLXRyaWdnZXJcbiAgICAgICAgICBbaWNvbl09XCJpY29ucy5zZXR0aW5nc1wiXG4gICAgICAgICAgW2J1Y2tldF09XCJvYmplY3RDb25maWdCdWNrZXRcIlxuICAgICAgICAgIFtidWNrZXRMYWJlbF09XCJ0aWxlQ29uZmlnQnVja2V0TGFiZWxcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInRpbGVMaXN0T3B0aW9uc1wiXG4gICAgICAgID48L3l1di10aWxlLWNvbmZpZy10cmlnZ2VyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC95bWQtcmliYm9uPlxuPC9oZWFkZXI+XG5cbjx5dmMtc3BsaXQtdmlldyBbZ3V0dGVyU2l6ZV09XCIxXCIgKGxheW91dFNldHRpbmdzQ2hhbmdlKT1cIm9uTGF5b3V0U2V0dGluZ3NDaGFuZ2UoJGV2ZW50KVwiPlxuICA8IS0tIGZvbGRlciB0cmVlIC0tPlxuICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjIwXCIgW3Zpc2libGVdPVwiZW5hYmxlVHJlZSgpICYmICFzbWFsbFNjcmVlbkxheW91dCgpXCI+XG4gICAgPHltZC1mb2xkZXItdHJlZSB5dXZGb2N1c2FibGU9XCJUcmVlXCI+PC95bWQtZm9sZGVyLXRyZWU+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBmaWxlcyAtLT5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI2MFwiPlxuICAgIEBsZXQgZXJyID0gZXJyb3IoKTtcbiAgICBAaWYgKGVycikge1xuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCI+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDx5dmMtaWNvbiBbc3ZnXT1cImljb25zLmF0dGVudGlvblwiPjwveXZjLWljb24+XG4gICAgICAgICAgQHN3aXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBAY2FzZSAoRVJST1JfQ09ERS5OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAge3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMuZXJyb3IubG9hZC5ub3QtZm91bmQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoRVJST1JfQ09ERS5JTlZBTElEX0lEKSB7XG4gICAgICAgICAgICAgIHt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmVycm9yLmxvYWQuaW52YWxpZC1pZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAge3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMuZXJyb3IubG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImZpbGVzXCIgW3l1dkZpbGVEcm9wWm9uZV09XCJ7IGxhYmVsOiAneXV2LmFwcC5kcml2ZS5maWxlcy5kcm9wem9uZS5sYWJlbCcgfCB0cmFuc2xhdGUgfVwiIChmaWxlRHJvcCk9XCJvbkZpbGVEcm9wKCRldmVudClcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cImZpbGVzLWhlYWRlclwiPlxuICAgICAgICAgIDxoMT57eyBxdWVyeVRpdGxlKCkgfX08L2gxPlxuICAgICAgICAgIEBpZiAocXVlcnkoKT8udGVybSkge1xuICAgICAgICAgICAgPHltZC1zZWFyY2gtZmlsdGVyIFtxdWVyeV09XCJxdWVyeSgpXCIgKHF1ZXJ5Q2hhbmdlKT1cIm9uRmlsdGVyUXVlcnlDaGFuZ2UoJGV2ZW50KVwiPjwveW1kLXNlYXJjaC1maWx0ZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc29ydE9wdGlvbnNBdmFpbGFibGUoKSkge1xuICAgICAgICAgICAgPHltZC1zb3J0IC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGF2b3JzXCI+XG4gICAgICAgICAgICA8IS0tIFRPRE86IGVuYWJsZSBhZ2FpbiBvbmNlIGZsYXZvcnMvYXNwZWN0cyBhcmUgc3VwcG9ydGVkIC0tPlxuICAgICAgICAgICAgPCEtLSAgQGZvciAoZiBvZiBmbGF2b3JDaGlwczsgdHJhY2sgZi5pZCkge1xuICAgICAgICAgICAgPHl1di1mbGF2b3ItY2hpcCBbbmdDbGFzc109XCJ7IGFjdGl2ZTogZi5pZCA9PT0gYXBwbGllZEZsYXZvcj8uaWQgfVwiIFtmbGF2b3JdPVwiZlwiIChjbGljayk9XCJhcHBsaWVkRmxhdm9yID0gZlwiPjwveXV2LWZsYXZvci1jaGlwPlxuICAgICAgICAgIH0tLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPHl1di10aWxlLWxpc3RcbiAgICAgICAgICAjdGlsZUxpc3RcbiAgICAgICAgICBjbGFzcz1cInN0YWdnZXJlZFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIneXV2LmFwcC5kcml2ZS5maWxlcy5jb250ZW50LmFyaWEubGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwiYnVzeSgpXCJcbiAgICAgICAgICBbYXR0ci5yb2xlXT1cIidsaXN0Ym94J1wiXG4gICAgICAgICAgKGtleWRvd24uZGVsZXRlKT1cIm9uRGVsZXRlKClcIlxuICAgICAgICAgIFtidWNrZXRdPVwib2JqZWN0Q29uZmlnQnVja2V0XCJcbiAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgW3F1ZXJ5XT1cInF1ZXJ5KClcIlxuICAgICAgICAgIFtmbGF2b3JdPVwiYXBwbGllZEZsYXZvclwiXG4gICAgICAgICAgW29wdGlvbnNdPVwidGlsZUxpc3RPcHRpb25zXCJcbiAgICAgICAgICAoaXRlbURibENsaWNrKT1cIml0ZW1Eb3VibGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgIChpdGVtU2VsZWN0KT1cIml0ZW1DbGlja2VkKCRldmVudClcIlxuICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoY29weSk9XCJvbkNvcHkoJGV2ZW50KVwiXG4gICAgICAgICAgKGN1dCk9XCJvbkN1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoYnVzeSk9XCJzZXRCdXN5KCRldmVudClcIlxuICAgICAgICAgIChjdHhNZW51KT1cIm9uQ29udGV4dG1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgW2hpZ2hsaWdodHNdPVwiaGlnaGxpZ2h0U3R5bGVzJCB8IGFzeW5jXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgI2VtcHR5PlxuICAgICAgICAgICAgQGlmIChlbXB0eU1vZGUoKSA9PT0gJ3Jvb3QnKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1wdHlcIj57eyAneXV2LmFwcC5kcml2ZS5maWxlcy5jb250ZW50LmVtcHR5LnJvb3QubGlzdCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChlbXB0eU1vZGUoKSA9PT0gJ3F1ZXJ5Jykge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5XCI+e3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMuY29udGVudC5lbXB0eS5xdWVyeS5saXN0JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5XCI+e3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMuY29udGVudC5lbXB0eS5saXN0JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC95dXYtdGlsZS1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gZGV0YWlscyAtLT5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCIyMFwiIFt2aXNpYmxlXT1cImVuYWJsZURldGFpbHMoKVwiPlxuICAgIEBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWQoKTtcbiAgICBAaWYgKGVuYWJsZURldGFpbHMoKSAmJiBzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtPy5pc0ZvbGRlcikge1xuICAgICAgICA8eXV2LW9iamVjdC1zdW1tYXJ5IFtjb25maWdUeXBlXT1cImNvbmZpZ1R5cGVPcHRpb25zWydmb2xkZXInXVwiIFtkbXNPYmplY3RdPVwic2VsZWN0ZWRJdGVtXCI+PC95dXYtb2JqZWN0LXN1bW1hcnk+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHl1di1vYmplY3Qtc3VtbWFyeVxuICAgICAgICAgIFtjb25maWdUeXBlXT1cImNvbmZpZ1R5cGVPcHRpb25zWydmaWxlJ11cIlxuICAgICAgICAgIFtkbXNPYmplY3RdPVwic2VsZWN0ZWRJdGVtXCJcbiAgICAgICAgICBbeXV2RmlsZURyb3Bab25lXT1cInsgbGFiZWw6ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmRyb3B6b25lLmNvbnRlbnQucmVwbGFjZS5sYWJlbCcgfCB0cmFuc2xhdGUgfVwiXG4gICAgICAgICAgW2ZpbGVEcm9wRGlzYWJsZWRdPVwiZmlsZURyb3BTdW1tYXJ5RGlzYWJsZWQoKVwiXG4gICAgICAgICAgKGZpbGVEcm9wKT1cIm9uRmlsZVVwZGF0ZURyb3AoJGV2ZW50KVwiXG4gICAgICAgID48L3l1di1vYmplY3Qtc3VtbWFyeT5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBsZXQgc2VsID0gc2VsZWN0aW9uKCk7XG4gICAgICBAaWYgKHNlbCAmJiBzZWwubGVuZ3RoID4gMCkge1xuICAgICAgICA8eXV2LW11bHRpLW9iamVjdC1zdW1tYXJ5IFtoZWFkbGluZV09XCIneXV2LmFwcC5kcml2ZS5tdWx0aXNlbGVjdGVkLmRldGFpbHMnIHwgdHJhbnNsYXRlOiB7IGNvdW50OiBzZWxlY3Rpb24oKS5sZW5ndGggfVwiPjwveXV2LW11bHRpLW9iamVjdC1zdW1tYXJ5PlxuICAgICAgfSBAZWxzZSBpZiAodGlsZUxpc3QoKT8uaXRlbXM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8IS0tIFRPRE86IENIT1VMRCBIQVZFIEEgRElGRkVSRU5UIE1FU1NBR0UgRk9SIEVNUFRZIFJFU1VMVFMgRU1QVFkgRk9SIE5PVyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj57eyAneXV2LmFwcC5kcml2ZS5lbXB0eS5yZXN1bHRzLmRldGFpbHMubWVzc2FnZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPnt7ICd5dXYuYXBwLmRyaXZlLnVuc2VsZWN0ZWQuZGV0YWlscycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvbmctdGVtcGxhdGU+XG48L3l2Yy1zcGxpdC12aWV3PlxuIl19
|
|
375
|
+
}, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button class=\"back\" [disabled]=\"!currentFolder\" title=\"{{ 'yuv.app.drive.files.nav.back.tooltip' | translate }}\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.files.nav.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <ymd-drive-search></ymd-drive-search>\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n title=\"{{ 'yuv.app.drive.files.toggletree.tooltip' | translate }}\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <yvc-icon [svg]=\"icons.toggleLeft\"></yvc-icon>\n </button>\n <button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n title=\"{{ 'yuv.app.drive.files.toggledetails.tooltip' | translate }}\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <yvc-icon [svg]=\"icons.toggleRight\"></yvc-icon>\n </button>\n }\n <yuv-tile-config-trigger\n [icon]=\"icons.settings\"\n [bucket]=\"objectConfigBucket\"\n [bucketLabel]=\"tileConfigBucketLabel\"\n [options]=\"tileListOptions\"\n ></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\">\n <!-- folder tree -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree yuvFocusable=\"Tree\"></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yvcSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <yvc-icon [svg]=\"icons.attention\"></yvc-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (query()?.term && !extendedQuery()) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <div class=\"flavors\">\n <!-- TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }-->\n </div>\n </header>\n\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (copy)=\"onCopy($event)\"\n (cut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n (ctxMenu)=\"onContextmenu($event)\"\n [highlights]=\"highlightStyles$ | async\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yvc-split-view>\n", styles: [":host{--files-button-padding: calc(var(--app-pane-padding) / 4);--files-button-border-radius: 2px;--files-button-gap: calc(var(--app-pane-padding) / 4);--files-icon-size: 20px;height:100%;overflow:hidden;display:flex;flex-flow:column}:host header{flex:0 0 auto}:host header>nav{background-color:var(--app-drive-header-background);border-block-end:1px solid var(--panel-divider-color);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;align-items:center;gap:var(--files-button-gap)}:host header>nav .nav button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host header>nav .nav button yvc-icon{--icon-size: var(--files-icon-size)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;align-self:stretch;display:flex;align-items:center;border-radius:var(--files-button-border-radius);padding:0 .5em;border:1px solid var(--panel-divider-color)}:host header>nav .search{grid-column:-1/-2;grid-row:1;z-index:1}:host yvc-split-view{flex:1;animation:fade-in .3s ease-in-out}:host ymd-ribbon{--ribbon-button-padding: var(--files-button-padding);--ribbon-button-border-radius: var(--files-button-border-radius);--ribbon-button-gap: var(--files-button-gap);--ribbon-icon-size: var(--files-icon-size)}:host ymd-ribbon .options{grid-area:options;display:flex;gap:var(--files-button-gap);align-items:center}:host ymd-ribbon .options yuv-tile-config-trigger{--icon-size: var(--files-icon-size);--button-padding: var(--files-button-padding)}:host ymd-ribbon .options button{padding:var(--files-button-padding);border-radius:var(--files-button-border-radius)}:host ymd-ribbon .options button yvc-icon{--icon-size: var(--files-icon-size)}:host ymd-ribbon .options button.toggle.enabled{background-color:var(--item-focus-background-color)}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host main yvc-master-details{flex:1;overflow:hidden;box-sizing:border-box}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p yvc-icon{--icon-size: 48px;display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--app-pane-padding);display:grid;grid-template-columns:2fr max-content;grid-template-rows:auto auto 1fr;gap:0;grid-auto-flow:row;grid-template-areas:\"title sort\" \"searchfilter searchfilter\" \"flavours flavours\"}:host .files header h1{grid-area:title;margin:0;padding:0;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 4)}:host .files header .flavors yuv-flavor-chip{font-size:var(--font-hint);cursor:pointer;--flavor-background: var(--panel-background);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--color-accent)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{flex:1;overflow:hidden}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--text-color-caption)}:host .message p{max-width:31ch;line-height:1.5em}:host yvc-split-view{height:100%;box-sizing:border-box}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;box-sizing:border-box}:host yuv-tile-list{--tile-border: 1px solid var(--panel-divider-color);--tile-border-width: 0 0 1px 0;--tile-padding: calc(var(--app-pane-padding) / 2);--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--panel-background-lightgrey)}:host p.empty{color:var(--text-color-caption)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--app-pane-padding) !important}@keyframes fade-in{0%{opacity:0}}\n"] }]
|
|
376
|
+
}], ctorParameters: () => [] });
|
|
377
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvcGFnZXMvZmlsZXMvZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvcGFnZXMvZmlsZXMvZmlsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFlLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsVUFBVSxFQUNWLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsUUFBUSxFQUdSLFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBVSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFD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WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEhvc3RCaW5kaW5nLCBpbmplY3QsIGlucHV0LCBPbkRlc3Ryb3ksIHNpZ25hbCwgdW50cmFja2VkLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtTWFwLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBDYWNoZVNlcnZpY2UsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQsXG4gIENsaXBib2FyZFNlcnZpY2UsXG4gIENvbmZpZ1R5cGVPcHRpb24sXG4gIERldmljZVNjcmVlbixcbiAgRGV2aWNlU2VydmljZSxcbiAgRG1zT2JqZWN0LFxuICBEbXNTZXJ2aWNlLFxuICBFdmVudFNlcnZpY2UsXG4gIE9iamVjdENvbmZpZ1NlcnZpY2UsXG4gIE9wZXJhdG9yLFxuICBSZXNvbHZlZE9iamVjdENvbmZpZyxcbiAgU2VhcmNoUXVlcnksXG4gIFN5c3RlbVR5cGUsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgWXV2RXZlbnRUeXBlXG59IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBBY3Rpb25zU2VydmljZSwgQkFTRV9BQ1RJT04gfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWxlRHJvcFpvbmVEaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvY29tbW9uJztcbmltcG9ydCB7IFlVVl9JQ09OUyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9pY29ucyc7XG5pbXBvcnQgeyBNdWx0aU9iamVjdFN1bW1hcnlDb21wb25lbnQsIE9iamVjdFN1bW1hcnlDb21wb25lbnQgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LXN1bW1hcnknO1xuaW1wb3J0IHsgU2ltcGxlU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL3NpbXBsZS1zZWFyY2gnO1xuaW1wb3J0IHsgVGlsZUNvbmZpZ1RyaWdnZXJDb21wb25lbnQsIFRpbGVEYXRhLCBUaWxlTGlzdENvbXBvbmVudCwgVGlsZUxpc3RDb25maWdPcHRpb25zLCBUaWxlTGlzdEhpZ2hsaWdodCB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay90aWxlLWxpc3QnO1xuaW1wb3J0IHsgT2JqZWN0Rmxhdm9yLCBTaGVsbFNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1zaGVsbC1jb3JlJztcbmltcG9ydCB7IElDT05TLCBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgU3BsaXRWaWV3Q29tcG9uZW50LCBTcGxpdFZpZXdMYXlvdXRTZXR0aW5ncywgWXZjU3BsaXRWaWV3TW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL3NwbGl0LXZpZXcnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCcmVhZGNydW1iQ29tcG9uZW50LCBEcml2ZVNlYXJjaENvbXBvbmVudCwgU29ydENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQWRkQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hZGQtYnV0dG9uL2FkZC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEZvbGRlclRyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZvbGRlci10cmVlL2ZvbGRlci10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaWJib25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3JpYmJvbi9yaWJib24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBUFBfRFJJVkVfSUNPTlMgfSBmcm9tICcuLi8uLi9kcml2ZS5pY29ucyc7XG5pbXBvcnQgeyBBQ1RJT05fQ09OVEVYVCwgQVBQX0lELCBBUFBfU0NIRU1BIH0gZnJvbSAnLi4vLi4vZHJpdmUuc2NoZW1hJztcbmltcG9ydCB7IERSSVZFX0VWRU5ULCBEUklWRV9RVUVSWV9GT0xERVJfSUQsIERSSVZFX1JPT1RfRk9MREVSX0lELCBEcml2ZUZvbGRlcklkIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJpdmUvZHJpdmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERyaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RyaXZlL2RyaXZlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU1RPUkVEX1FVRVJZX0lEX1BSRUZJWCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkuZGF0YSc7XG5pbXBvcnQgeyBTdG9yZWRRdWVyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN0b3JlZFF1ZXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkuc2VydmljZSc7XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gIFRpbGVMaXN0Q29tcG9uZW50LFxuICBCcmVhZGNydW1iQ29tcG9uZW50LFxuICBGb2xkZXJUcmVlQ29tcG9uZW50LFxuICBPYmplY3RTdW1tYXJ5Q29tcG9uZW50LFxuICBUaWxlQ29uZmlnVHJpZ2dlckNvbXBvbmVudCxcbiAgUmliYm9uQ29tcG9uZW50LFxuICBBZGRCdXR0b25Db21wb25lbnQsXG4gIFNpbXBsZVNlYXJjaENvbXBvbmVudCxcbiAgTXVsdGlPYmplY3RTdW1tYXJ5Q29tcG9uZW50LFxuICBTb3J0Q29tcG9uZW50LFxuICBTZWFyY2hGaWx0ZXJDb21wb25lbnQsXG4gIERyaXZlU2VhcmNoQ29tcG9uZW50XG5dO1xuXG5jb25zdCBtb2R1bGUgPSBbWXZjSWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFl2Y1NwbGl0Vmlld01vZHVsZV07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ltZC1maWxlcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBBc3luY1BpcGUsIC4uLm1vZHVsZSwgLi4uY29tcG9uZW50cywgRmlsZURyb3Bab25lRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ZpbGVzLmNvbXBvbmVudC5zY3NzJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc21hbGxTY3JlZW5dJzogJ3NtYWxsU2NyZWVuTGF5b3V0KCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgdGlsZUxpc3QgPSB2aWV3Q2hpbGQ8VGlsZUxpc3RDb21wb25lbnQ+KCd0aWxlTGlzdCcpO1xuXG4gICNMQVlPVVRfU0VUVElOR1NfU1RPUkFHRV9LRVkgPSAneXV2LmFwcC5kcml2ZS5maWxlcy5sYXlvdXQnO1xuXG4gIHByaXZhdGUgc2hlbGxTZXJ2aWNlID0gaW5qZWN0KFNoZWxsU2VydmljZSk7XG4gIHByaXZhdGUgZG1zU2VydmljZSA9IGluamVjdChEbXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkcml2ZSA9IGluamVjdChEcml2ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmVkUXVlcnlTZXJ2aWNlID0gaW5qZWN0KFN0b3JlZFF1ZXJ5U2VydmljZSk7XG4gIHByaXZhdGUgY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZFNlcnZpY2UpO1xuICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlID0gaW5qZWN0KEFjdGlvbnNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI29iamVjdENvbmZpZ1NlcnZpY2UgPSBpbmplY3QoT2JqZWN0Q29uZmlnU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkZXZpY2UgPSBpbmplY3QoRGV2aWNlU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgI2V2ZW50U2VydmljZSA9IGluamVjdChFdmVudFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IEVSUk9SX0NPREUgPSB7XG4gICAgTk9UX0ZPVU5EOiAnNDA0JyxcbiAgICAvLyBwYXR0ZXJuOiB7SFRUUF9TVEFUVVNfQ09ERX0te1NFUlZJQ0VfRVJST1JfQ09ERX1cbiAgICBJTlZBTElEX0lEOiAnNDIyLTI5MTInXG4gIH07XG5cbiAgI2FwcENhY2hlID0gaW5qZWN0KEFwcENhY2hlU2VydmljZSk7XG5cbiAgb2JqZWN0Q29uZmlnQnVja2V0OiBzdHJpbmcgPSBBUFBfU0NIRU1BLmlkO1xuXG4gIHNwbGl0Vmlld0NtcCA9IHZpZXdDaGlsZC5yZXF1aXJlZChTcGxpdFZpZXdDb21wb25lbnQpO1xuICBzZWxlY3RlZCA9IHNpZ25hbDxEbXNPYmplY3QgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGZpbGVEcm9wU3VtbWFyeURpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuc2VsZWN0ZWQoKT8ucGVybWlzc2lvbnM/LndyaXRlQ29udGVudCk7XG4gIGRpc2FibGVDcmVhdGUgPSBmYWxzZTtcblxuICBhY3Rpb25zID0gdGhpcy5kcml2ZS5zdGF0ZSQuYWN0aW9ucztcbiAgc2VsZWN0aW9uID0gdGhpcy5kcml2ZS5zdGF0ZSQuc2VsZWN0aW9uO1xuICBleHRlbmRlZFF1ZXJ5ID0gdGhpcy5kcml2ZS5zdGF0ZSQuZXh0ZW5kZWRRdWVyeTtcblxuICBidXN5ID0gdGhpcy5kcml2ZS5zdGF0ZSQuYnVzeTtcbiAgZmxhdm9yQ2hpcHM6IE9iamVjdEZsYXZvcltdID0gdGhpcy5zaGVsbFNlcnZpY2UuZ2V0T2JqZWN0Rmxhdm9ycygpO1xuICBhcHBsaWVkRmxhdm9yPzogT2JqZWN0Rmxhdm9yO1xuXG4gIHNlbGVjdGlvbkFjdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAoeyBzZWxlY3Rpb246IHRoaXMuc2VsZWN0aW9uKCksIGFjdGlvbnM6IHRoaXMuYWN0aW9ucygpIH0pKTtcblxuICBlbXB0eU1vZGUgPSBzaWduYWw8RHJpdmVGb2xkZXJJZCB8IG51bGw+KG51bGwpO1xuICAvLyBlcnJvciBjb2RlIHdoZW4gbG9hZGluZyB0aGUgb2JqZWN0IGZhaWxlZC4gVGhpcyB3aWxsIGJlIHVzZWRcbiAgLy8gdG8gZGV0ZXJtaW5lIGEgcHJvcGVyIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheVxuICBlcnJvciA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uZmlnVHlwZU9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbmZpZ1R5cGVPcHRpb24+ID0ge1xuICAgIGZvbGRlcjogeyBidWNrZXQ6IEFQUF9JRCwgdHlwZTogQVBQX1NDSEVNQS50eXBlc1snZm9sZGVyJ10gfSxcbiAgICBmaWxlOiB7IGJ1Y2tldDogQVBQX0lELCB0eXBlOiBBUFBfU0NIRU1BLnR5cGVzWydmaWxlJ10gfVxuICB9O1xuXG4gIGN1cnJlbnRGb2xkZXJJRD86IHN0cmluZztcbiAgY3VycmVudEZvbGRlcj86IERtc09iamVjdDtcbiAgZW5hYmxlRGV0YWlscyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgZW5hYmxlVHJlZSA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgdGlsZUNvbmZpZ0J1Y2tldExhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmFwcC5kcml2ZS50aWxlLWNvbmZpZy5idWNrZXQnKTtcblxuICBzbWFsbFNjcmVlbkxheW91dCA9IHNpZ25hbChmYWxzZSk7XG4gIHNvcnRPcHRpb25zQXZhaWxhYmxlID0gc2lnbmFsKHRydWUpO1xuICBleHRlbmRlZFNlYXJjaCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgaWQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBoaWdobGlnaHRTdHlsZXMkOiBPYnNlcnZhYmxlPFRpbGVMaXN0SGlnaGxpZ2h0W10+ID0gdGhpcy5jbGlwYm9hcmQuY2xpcGJvYXJkJChBUFBfSUQpLnBpcGUoXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgbWFwKChjKSA9PiB7XG4gICAgICByZXR1cm4gYyAmJiBjLm1vZGUgJiYgYy5vYmplY3RzPy5sZW5ndGhcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNzc1N0eWxlczogdGhpcy4jaGlnaGxpZ2h0U3R5bGVzW2M/Lm1vZGVdLFxuICAgICAgICAgICAgICBpZHM6IGMub2JqZWN0cy5tYXAoKG8pID0+IG8uaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgI2hpZ2hsaWdodFN0eWxlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0ge1xuICAgIGN1dDogeyBvcGFjaXR5OiAwLjUgfVxuICB9O1xuXG4gICNyb3V0ZUlkRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwYXJhbSA9IHRoaXMuaWQoKSB8fCB1bmRlZmluZWQ7XG5cbiAgICB1bnRyYWNrZWQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHBhcmFtID09PSBEUklWRV9RVUVSWV9GT0xERVJfSUQpIHtcbiAgICAgICAgdGhpcy5lbXB0eU1vZGUuc2V0KERSSVZFX1FVRVJZX0ZPTERFUl9JRCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbXB0eU1vZGUuc2V0KHBhcmFtID09PSBEUklWRV9ST09UX0ZPTERFUl9JRCA/IERSSVZFX1JPT1RfRk9MREVSX0lEIDogbnVsbCk7XG4gICAgICB0aGlzLmVycm9yLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kaXNhYmxlQ3JlYXRlID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJRCA9IHBhcmFtO1xuICAgICAgdGhpcy5kcml2ZS51cGRhdGVDdXJyZW50Rm9sZGVyKHRoaXMuY3VycmVudEZvbGRlcklEKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmN1cnJlbnRGb2xkZXIgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySUQgPT09IERSSVZFX1JPT1RfRk9MREVSX0lEKSB0aGlzLmN1cnJlbnRGb2xkZXJJRCA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHRoaXMuY3VycmVudEZvbGRlcklEKSB7XG4gICAgICAgIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QodGhpcy5jdXJyZW50Rm9sZGVySUQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKG86IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVyID0gbztcbiAgICAgICAgICAgIHRoaXMuX3NldEZvbGRlclF1ZXJ5KHRoaXMuI2dldFRpdGxlKG8pKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBmb2xkZXInLCBlKTtcbiAgICAgICAgICAgIHRoaXMuI3Byb2Nlc3NMb2FkRXJyb3IoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB0aGlzLl9zZXRGb2xkZXJRdWVyeSh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLmZvbGRlci10cmVlLm15ZHJpdmUnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRpbGVMaXN0T3B0aW9uczogVGlsZUxpc3RDb25maWdPcHRpb25zID0ge1xuICAgIGFjdGlvbkNvbnRleHQ6IEFDVElPTl9DT05URVhULFxuICAgIGNvbmZpZ1R5cGVzOiBPYmplY3QudmFsdWVzKEFQUF9TQ0hFTUEudHlwZXMpLFxuICAgIGNvbmZpZ0ZsYXZvcnM6IFsuLi50aGlzLnNoZWxsU2VydmljZS5nZXRPYmplY3RGbGF2b3JzKCksIC4uLkFQUF9TQ0hFTUEuZmxhdm9ycy5maWx0ZXIoKGYpID0+ICFmLmFwcGxpY2FibGVUbykubWFwKChmKSA9PiAoeyAuLi5mLCBhcHA6IEFQUF9JRCB9KSldXG4gIH07XG5cbiAgcXVlcnkgPSB0aGlzLmRyaXZlLnN0YXRlJC5xdWVyeTtcbiAgcXVlcnlUaXRsZSA9IHRoaXMuZHJpdmUuc3RhdGUkLnF1ZXJ5VGl0bGU7XG5cbiAgaWNvbnMgPSB7XG4gICAgLi4uQVBQX0RSSVZFX0lDT05TLFxuICAgIHNvcnQ6IEFQUF9EUklWRV9JQ09OUy5zb3J0LFxuICAgIGJhY2s6IFlVVl9JQ09OUy5iYWNrLFxuICAgIGF0dGVudGlvbjogWVVWX0lDT05TLmF0dGVudGlvbixcbiAgICByZWZyZXNoOiBZVVZfSUNPTlMucmVmcmVzaCxcbiAgICBjbGVhcjogSUNPTlMuY2xlYXJcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRyaXZlLmV2ZW50cyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChlKSA9PiB7XG4gICAgICAgIGlmIChlID09PSBEUklWRV9FVkVOVC5yZWZyZXNoKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuI2RldmljZS5zY3JlZW5DaGFuZ2UkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoczogRGV2aWNlU2NyZWVuKSA9PiB7XG4gICAgICAgIHRoaXMuc21hbGxTY3JlZW5MYXlvdXQuc2V0KHMuc2l6ZSA9PT0gJ3MnICYmIHMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcpO1xuICAgICAgICB0aGlzLmVuYWJsZURldGFpbHMuc2V0KCF0aGlzLnNtYWxsU2NyZWVuTGF5b3V0KCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZHJpdmUuc3RhdGUkLnNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChzZWw6IERtc09iamVjdFtdKSA9PiB7XG4gICAgICAgICAgaWYgKHNlbD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnRpbGVMaXN0KCk/LmNsZWFyU2VsZWN0aW9uKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocDogUGFyYW1NYXApID0+IHtcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9uc0F2YWlsYWJsZS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXSA9PT0gRFJJVkVfUVVFUllfRk9MREVSX0lEKSB7XG4gICAgICAgICAgY29uc3QgcSA9IHAuZ2V0KCdxJyk7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ3JlYXRlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocT8uc3RhcnRzV2l0aChTVE9SRURfUVVFUllfSURfUFJFRklYKSkge1xuICAgICAgICAgICAgLy8gc3RvcmVkIHF1ZXJ5XG4gICAgICAgICAgICBjb25zdCBzcTogU3RvcmVkUXVlcnkgfCB1bmRlZmluZWQgPSB0aGlzLnN0b3JlZFF1ZXJ5U2VydmljZS5nZXRTdG9yZWRRdWVyeShxKTtcbiAgICAgICAgICAgIGlmIChzcSkge1xuICAgICAgICAgICAgICB0aGlzLmRyaXZlLnVwZGF0ZVF1ZXJ5KHNxLnF1ZXJ5LCBzcS5sYWJlbCk7XG4gICAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnNBdmFpbGFibGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAocSkge1xuICAgICAgICAgICAgLy8gc2VhcmNoIHF1ZXJ5XG4gICAgICAgICAgICB0aGlzLnNvcnRPcHRpb25zQXZhaWxhYmxlLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNxOiBTZWFyY2hRdWVyeSA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHEpKTtcbiAgICAgICAgICAgICAgc3EuZmlsdGVycyA9IChzcS5maWx0ZXJzIHx8IFtdKS5maWx0ZXIoKGYpID0+IGYuZiAhPT0gQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfSUQpO1xuICAgICAgICAgICAgICB0aGlzLmRyaXZlLnVwZGF0ZVF1ZXJ5KFxuICAgICAgICAgICAgICAgIHNxLCBcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLmZpbGVzLnNlYXJjaC5yZXN1bHQudGl0bGUnKSwgXG4gICAgICAgICAgICAgICAgcC5nZXQoJ2V4dCcpID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgcXVlcnknLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuI2V2ZW50U2VydmljZVxuICAgICAgLm9uKFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUX1VQREFURUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgIHRhcCgoZSkgPT4ge1xuICAgICAgICAgIHRoaXMudGlsZUxpc3QoKT8udXBkYXRlVGlsZUxpc3QoW2UuZGF0YV0pO1xuICAgICAgICAgIGUuZGF0YS5pZCA9PT0gdGhpcy5zZWxlY3RlZCgpPy5pZCAmJiB0aGlzLnNlbGVjdGVkLnNldChlLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25GaWx0ZXJRdWVyeUNoYW5nZShxOiBTZWFyY2hRdWVyeSkge1xuICAgIHRoaXMuZHJpdmUudXBkYXRlUXVlcnkocSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmFwcC5kcml2ZS5maWxlcy5zZWFyY2gucmVzdWx0LnRpdGxlJykpO1xuICAgIHRoaXMuZHJpdmUuc2V0U2VsZWN0aW9uKFtdKTtcbiAgfVxuXG4gICNwcm9jZXNzTG9hZEVycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgaWYgKGAke2Uuc3RhdHVzfWAgIT09IHRoaXMuRVJST1JfQ09ERS5OT1RfRk9VTkQpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KGAke2Uuc3RhdHVzfS0ke2UuZXJyb3I/LnNlcnZpY2VFcnJvckNvZGUgfHwgJyd9YCk7XG4gICAgfSBlbHNlIHRoaXMuZXJyb3Iuc2V0KHRoaXMuRVJST1JfQ09ERS5OT1RfRk9VTkQpO1xuICB9XG5cbiAgI2dldFRpdGxlKG86IERtc09iamVjdCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2ZnVHlwZTogQ29uZmlnVHlwZU9wdGlvbiA9IG8uaXNGb2xkZXIgPyB0aGlzLmNvbmZpZ1R5cGVPcHRpb25zWydmb2xkZXInXSA6IHRoaXMuY29uZmlnVHlwZU9wdGlvbnNbJ2ZpbGUnXTtcbiAgICBjb25zdCBvYzogUmVzb2x2ZWRPYmplY3RDb25maWcgPSB0aGlzLiNvYmplY3RDb25maWdTZXJ2aWNlLmdldFJlc29sdmVkT2JqZWN0Q29uZmlnKG8uZGF0YSwgY2ZnVHlwZS50eXBlLCBjZmdUeXBlLmJ1Y2tldCwgdHJ1ZSk7XG4gICAgcmV0dXJuIG9jLnRpdGxlLnZhbHVlO1xuICB9XG5cbiAgb25EZWxldGUoKSB7XG4gICAgY29uc3QgZGVsZXRlQWN0aW9uID0gdGhpcy5hY3Rpb25zKCkuZmluZCgoYSkgPT4gYS5pZCA9PT0gQkFTRV9BQ1RJT04uZGVsZXRlKTtcbiAgICBpZiAoZGVsZXRlQWN0aW9uKSBkZWxldGVBY3Rpb24ucnVuKHRoaXMuZHJpdmUuc3RhdGUkLnNlbGVjdGlvbigpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEZvbGRlclF1ZXJ5KHF1ZXJ5VGl0bGU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRyaXZlLnVwZGF0ZVF1ZXJ5KFxuICAgICAge1xuICAgICAgICBmaWx0ZXJzOiBbeyBmOiBCYXNlT2JqZWN0VHlwZUZpZWxkLlBBUkVOVF9JRCwgbzogT3BlcmF0b3IuRVFVQUwsIHYxOiB0aGlzLmN1cnJlbnRGb2xkZXJJRCB8fCBudWxsIH1dXG4gICAgICB9LFxuICAgICAgcXVlcnlUaXRsZVxuICAgICk7XG4gIH1cblxuICBvbkNvbnRleHRtZW51KHsgZXZlbnQgfTogeyBldmVudDogTW91c2VFdmVudCB8IFBvaW50ZXJFdmVudCB9KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLm9wZW5Db250ZXh0TWVudSh0aGlzLmFjdGlvbnMsIChhOiBBY3Rpb24pID0+IGEucnVuKHRoaXMuc2VsZWN0aW9uKCkpLCB7IHg6IGV2ZW50LngsIHk6IGV2ZW50LnkgfSk7XG4gIH1cblxuICBvbkZpbGVEcm9wKGZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLmRyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgdGhpcy5kcml2ZS5jaGVja05hbWVzQW5kVXBsb2FkKGZpbGVzKS5zdWJzY3JpYmUoeyBjb21wbGV0ZTogKCkgPT4gdGhpcy5kcml2ZS5zZXRCdXN5KGZhbHNlKSB9KTtcbiAgfVxuXG4gIG9uRmlsZVVwZGF0ZURyb3AoZmlsZTogRmlsZVtdKSB7XG4gICAgY29uc3QgZG1zT2JqZWN0ID0gdGhpcy5zZWxlY3RlZCgpO1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIHRoaXMuZHJpdmUuc2V0QnVzeSh0cnVlKTtcbiAgICAgIHRoaXMuZHJpdmVcbiAgICAgICAgLnVwbG9hZENvbnRlbnQoZG1zT2JqZWN0LmlkLCBmaWxlWzBdKVxuICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmRyaXZlLnNldEJ1c3koZmFsc2UpKSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGl0ZW1Gb2N1c2VkKHRpbGU6IFRpbGVEYXRhKSB7XG4gICAgLy8gY29uc29sZS5sb2codGlsZSk7XG4gIH1cblxuICBpdGVtQ2xpY2tlZCh0aWxlOiBUaWxlRGF0YSkge1xuICAgIGlmICh0aGlzLnNtYWxsU2NyZWVuTGF5b3V0KCkpIHRoaXMuaXRlbURvdWJsZUNsaWNrZWQodGlsZSk7XG4gIH1cblxuICBvbkNvcHkodGlsZXM6IFRpbGVEYXRhW10pIHtcbiAgICB0aGlzLmNsaXBib2FyZC5hZGRPYmplY3RzKFxuICAgICAgdGlsZXMubWFwKCh0KSA9PiB0LmRtc09iamVjdCksXG4gICAgICAnY29weScsXG4gICAgICBBUFBfSURcbiAgICApO1xuICB9XG5cbiAgb25DdXQodGlsZXM6IFRpbGVEYXRhW10pIHtcbiAgICB0aGlzLmNsaXBib2FyZC5hZGRPYmplY3RzKFxuICAgICAgdGlsZXMubWFwKCh0KSA9PiB0LmRtc09iamVjdCksXG4gICAgICAnY3V0JyxcbiAgICAgIEFQUF9JRFxuICAgICk7XG4gIH1cblxuICAvLyBvblF1ZXJ5U3VibWl0KHE6IFNlYXJjaFF1ZXJ5KSB7XG4gIC8vICAgLy8gaW4gb3JkZXIgdG8ga2VlcCB0aGUgcXVlcnkgaW4gdGhlIHVybCBhcyBzaG9ydCBhc1xuICAvLyAgIC8vIHBvc3NpYmxlIHdlJ2xsIGdldCByaWQgb2YgdGhlIGZpZWxkcyBiZWNhdXNlIHRoZXkgY291bGQgYmVcbiAgLy8gICAvLyByZS1hcHBsaWVkIGxhdGVyIG9uXG4gIC8vICAgcS5maWVsZHMgPSB1bmRlZmluZWQ7XG5cbiAgLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgJ3F1ZXJ5J10sIHtcbiAgLy8gICAgIHF1ZXJ5UGFyYW1zOiB7IHE6IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShxKSkgfSxcbiAgLy8gICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGVcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHNlbGVjdGlvbkNoYW5nZWQodGlsZXM6IFRpbGVEYXRhW10pIHtcbiAgICBpZiAodGlsZXMubGVuZ3RoID09PSAxKSB0aGlzLmxvYWREZXRhaWxzKHRpbGVzWzBdLmlkKTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICBpZiAodGlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZHJpdmUuc2V0U2VsZWN0aW9uKFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZHJpdmUuc2V0QnVzeSh0cnVlKTtcbiAgICAgICAgdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdHModGlsZXMubWFwKChpKSA9PiBpLmlkKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAobzogRG1zT2JqZWN0W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJpdmUuc2V0QnVzeShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmRyaXZlLnNldFNlbGVjdGlvbihvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGl0ZW1Eb3VibGVDbGlja2VkKHRpbGU6IFRpbGVEYXRhKSB7XG4gICAgaWYgKHRpbGUuaW5zdGFuY2VEYXRhKSB7XG4gICAgICB0aGlzLmRyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgICBjb25zdCBuYXYgPSAodGlsZS5pbnN0YW5jZURhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5CQVNFX1RZUEVfSURdIGFzIHN0cmluZykgPT09IFN5c3RlbVR5cGUuRk9MREVSID8gWycuLiddIDogWycuLi8uLicsICdvYmplY3QnXTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi5uYXYsIHRpbGUuaW5zdGFuY2VEYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lEXV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KS50aGVuKCgpID0+IHRoaXMuZHJpdmUuc2V0QnVzeShmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWREZXRhaWxzKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNoZWxsU2VydmljZS5hZGRCdXN5KCk7XG4gICAgLy8gbG9hZCB0aGUgZG1zIG9iamVjdFxuICAgIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAobzogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuc2V0KG8pO1xuICAgICAgICB0aGlzLnNoZWxsU2VydmljZS5yZW1vdmVCdXN5KCk7XG4gICAgICAgIHRoaXMuZHJpdmUuc2V0U2VsZWN0aW9uKFtvXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmRyaXZlLnNldFNlbGVjdGlvbihbXSk7XG4gIH1cblxuICBvcGVuUGFyZW50KCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRGb2xkZXIpIHtcbiAgICAgIHRoaXMuZHJpdmUuc2V0QnVzeSh0cnVlKTtcbiAgICAgIHRoaXMucm91dGVyXG4gICAgICAgIC5uYXZpZ2F0ZShbJy4uJywgdGhpcy5jdXJyZW50Rm9sZGVyLmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfSURdIHx8IERSSVZFX1JPT1RfRk9MREVSX0lEXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLmRyaXZlLnNldEJ1c3koZmFsc2UpKTtcbiAgICB9XG4gIH1cblxuICBzZXRCdXN5KGJ1c3k6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRyaXZlLnNldEJ1c3koYnVzeSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMudGlsZUxpc3QoKT8ucmVmcmVzaCgpO1xuICAgIHRoaXMuZHJpdmUuc2V0U2VsZWN0aW9uKFtdKTtcbiAgfVxuXG4gIG9uTGF5b3V0U2V0dGluZ3NDaGFuZ2UoZTogYW55KSB7XG4gICAgdGhpcy4jYXBwQ2FjaGUuc2V0SXRlbSh0aGlzLiNMQVlPVVRfU0VUVElOR1NfU1RPUkFHRV9LRVksIGUpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgI2FwcGx5TGF5b3V0U2V0dGluZ3Moc2V0dGluZ3M6IFNwbGl0Vmlld0xheW91dFNldHRpbmdzKSB7XG4gICAgdGhpcy5zcGxpdFZpZXdDbXAoKS5hcHBseUxheW91dFNldHRpbmdzKHNldHRpbmdzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNhcHBDYWNoZS5nZXRJdGVtKHRoaXMuI0xBWU9VVF9TRVRUSU5HU19TVE9SQUdFX0tFWSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChsczogU3BsaXRWaWV3TGF5b3V0U2V0dGluZ3MpID0+IHtcbiAgICAgICAgaWYgKGxzKSB7XG4gICAgICAgICAgdGhpcy5lbmFibGVEZXRhaWxzLnNldChscy5hcmVhc1syXT8udmlzaWJsZSk7XG4gICAgICAgICAgdGhpcy5lbmFibGVUcmVlLnNldChscy5hcmVhc1swXT8udmlzaWJsZSk7XG4gICAgICAgICAgdGhpcy4jYXBwbHlMYXlvdXRTZXR0aW5ncyhscyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xpcGJvYXJkLmNsZWFyKEFQUF9JRCk7XG4gIH1cbn1cbiIsIjxoZWFkZXI+XG4gIDwhLS0gbmF2aWdhdGlvbiBiYXIgLS0+XG4gIDxuYXYgW2F0dHIuYXJpYS1sYWJlbF09XCIneXV2LmFwcC5kcml2ZS5maWxlcy5uYXZpYWd0aW9uLmFyaWEubGFiZWwnIHwgdHJhbnNsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hdlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJhY2tcIiBbZGlzYWJsZWRdPVwiIWN1cnJlbnRGb2xkZXJcIiB0aXRsZT1cInt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLm5hdi5iYWNrLnRvb2x0aXAnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cIm9wZW5QYXJlbnQoKVwiPlxuICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5iYWNrXCI+PC95dmMtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlZnJlc2hcIiB0aXRsZT1cInt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLm5hdi5yZWZyZXNoLnRvb2x0aXAnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5yZWZyZXNoXCI+PC95dmMtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgQGlmICghcXVlcnkoKT8udGVybSkge1xuICAgICAgPHltZC1icmVhZGNydW1iPjwveW1kLWJyZWFkY3J1bWI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYnJlYWRjcnVtYlwiPjwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICA8eW1kLWRyaXZlLXNlYXJjaD48L3ltZC1kcml2ZS1zZWFyY2g+XG4gICAgPC9kaXY+XG4gIDwvbmF2PlxuXG4gIDwhLS0gcmliYm9uIHdpdGggYWN0aW9ucyBhbmQgb3B0aW9ucyAtLT5cbiAgPHltZC1yaWJib24gW29iamVjdHNdPVwic2VsZWN0aW9uKClcIiBbYnVzeV09XCJidXN5KClcIiBbZW5hYmxlQ2xpcGJvYXJkXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgI3ByaW1hcnlBY3Rpb25zPlxuICAgICAgPHltZC1hZGQtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlQ3JlYXRlXCI+PC95bWQtYWRkLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNzZWNvbmRhcnlBY3Rpb25zPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIj5cbiAgICAgICAgQGlmICghc21hbGxTY3JlZW5MYXlvdXQoKSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLXRyZWUgdG9nZ2xlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZW5hYmxlZDogZW5hYmxlVHJlZSgpIH1cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAneXV2LmFwcC5kcml2ZS5maWxlcy50b2dnbGV0cmVlLnRvb2x0aXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJlbmFibGVUcmVlLnNldCghZW5hYmxlVHJlZSgpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaWNvbnMudG9nZ2xlTGVmdFwiPjwveXZjLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtZGV0YWlscyB0b2dnbGVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBlbmFibGVkOiBlbmFibGVEZXRhaWxzKCkgfVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLnRvZ2dsZWRldGFpbHMudG9vbHRpcCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVuYWJsZURldGFpbHMuc2V0KCFlbmFibGVEZXRhaWxzKCkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy50b2dnbGVSaWdodFwiPjwveXZjLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPHl1di10aWxlLWNvbmZpZy10cmlnZ2VyXG4gICAgICAgICAgW2ljb25dPVwiaWNvbnMuc2V0dGluZ3NcIlxuICAgICAgICAgIFtidWNrZXRdPVwib2JqZWN0Q29uZmlnQnVja2V0XCJcbiAgICAgICAgICBbYnVja2V0TGFiZWxdPVwidGlsZUNvbmZpZ0J1Y2tldExhYmVsXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJ0aWxlTGlzdE9wdGlvbnNcIlxuICAgICAgICA+PC95dXYtdGlsZS1jb25maWctdHJpZ2dlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveW1kLXJpYmJvbj5cbjwvaGVhZGVyPlxuXG48eXZjLXNwbGl0LXZpZXcgW2d1dHRlclNpemVdPVwiMVwiIChsYXlvdXRTZXR0aW5nc0NoYW5nZSk9XCJvbkxheW91dFNldHRpbmdzQ2hhbmdlKCRldmVudClcIj5cbiAgPCEtLSBmb2xkZXIgdHJlZSAtLT5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCIyMFwiIFt2aXNpYmxlXT1cImVuYWJsZVRyZWUoKSAmJiAhc21hbGxTY3JlZW5MYXlvdXQoKVwiPlxuICAgIDx5bWQtZm9sZGVyLXRyZWUgeXV2Rm9jdXNhYmxlPVwiVHJlZVwiPjwveW1kLWZvbGRlci10cmVlPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gZmlsZXMgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNjBcIj5cbiAgICBAbGV0IGVyciA9IGVycm9yKCk7XG4gICAgQGlmIChlcnIpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5hdHRlbnRpb25cIj48L3l2Yy1pY29uPlxuICAgICAgICAgIEBzd2l0Y2ggKGVycikge1xuICAgICAgICAgICAgQGNhc2UgKEVSUk9SX0NPREUuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgICAgIHt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmVycm9yLmxvYWQubm90LWZvdW5kJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKEVSUk9SX0NPREUuSU5WQUxJRF9JRCkge1xuICAgICAgICAgICAgICB7eyAneXV2LmFwcC5kcml2ZS5maWxlcy5lcnJvci5sb2FkLmludmFsaWQtaWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIHt7ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmVycm9yLmxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiIFt5dXZGaWxlRHJvcFpvbmVdPVwieyBsYWJlbDogJ3l1di5hcHAuZHJpdmUuZmlsZXMuZHJvcHpvbmUubGFiZWwnIHwgdHJhbnNsYXRlIH1cIiAoZmlsZURyb3ApPVwib25GaWxlRHJvcCgkZXZlbnQpXCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJmaWxlcy1oZWFkZXJcIj5cbiAgICAgICAgICA8aDE+e3sgcXVlcnlUaXRsZSgpIH19PC9oMT5cbiAgICAgICAgICBAaWYgKHF1ZXJ5KCk/LnRlcm0gJiYgIWV4dGVuZGVkUXVlcnkoKSkge1xuICAgICAgICAgICAgPHltZC1zZWFyY2gtZmlsdGVyIFtxdWVyeV09XCJxdWVyeSgpXCIgKHF1ZXJ5Q2hhbmdlKT1cIm9uRmlsdGVyUXVlcnlDaGFuZ2UoJGV2ZW50KVwiPjwveW1kLXNlYXJjaC1maWx0ZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc29ydE9wdGlvbnNBdmFpbGFibGUoKSkge1xuICAgICAgICAgICAgPHltZC1zb3J0IC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGF2b3JzXCI+XG4gICAgICAgICAgICA8IS0tIFRPRE86IGVuYWJsZSBhZ2FpbiBvbmNlIGZsYXZvcnMvYXNwZWN0cyBhcmUgc3VwcG9ydGVkIC0tPlxuICAgICAgICAgICAgPCEtLSAgQGZvciAoZiBvZiBmbGF2b3JDaGlwczsgdHJhY2sgZi5pZCkge1xuICAgICAgICAgICAgPHl1di1mbGF2b3ItY2hpcCBbbmdDbGFzc109XCJ7IGFjdGl2ZTogZi5pZCA9PT0gYXBwbGllZEZsYXZvcj8uaWQgfVwiIFtmbGF2b3JdPVwiZlwiIChjbGljayk9XCJhcHBsaWVkRmxhdm9yID0gZlwiPjwveXV2LWZsYXZvci1jaGlwPlxuICAgICAgICAgIH0tLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPHl1di10aWxlLWxpc3RcbiAgICAgICAgICAjdGlsZUxpc3RcbiAgICAgICAgICBjbGFzcz1cInN0YWdnZXJlZFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIneXV2LmFwcC5kcml2ZS5maWxlcy5jb250ZW50LmFyaWEubGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwiYnVzeSgpXCJcbiAgICAgICAgICBbYXR0ci5yb2xlXT1cIidsaXN0Ym94J1wiXG4gICAgICAgICAgKGtleWRvd24uZGVsZXRlKT1cIm9uRGVsZXRlKClcIlxuICAgICAgICAgIFtidWNrZXRdPVwib2JqZWN0Q29uZmlnQnVja2V0XCJcbiAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgW3F1ZXJ5XT1cInF1ZXJ5KClcIlxuICAgICAgICAgIFtmbGF2b3JdPVwiYXBwbGllZEZsYXZvclwiXG4gICAgICAgICAgW29wdGlvbnNdPVwidGlsZUxpc3RPcHRpb25zXCJcbiAgICAgICAgICAoaXRlbURibENsaWNrKT1cIml0ZW1Eb3VibGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgIChpdGVtU2VsZWN0KT1cIml0ZW1DbGlja2VkKCRldmVudClcIlxuICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoY29weSk9XCJvbkNvcHkoJGV2ZW50KVwiXG4gICAgICAgICAgKGN1dCk9XCJvbkN1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoYnVzeSk9XCJzZXRCdXN5KCRldmVudClcIlxuICAgICAgICAgIChjdHhNZW51KT1cIm9uQ29udGV4dG1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgW2hpZ2hsaWdodHNdPVwiaGlnaGxpZ2h0U3R5bGVzJCB8IGFzeW5jXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgI2VtcHR5PlxuICAgICAgICAgICAgQGlmIChlbXB0eU1vZGUoKSA9PT0gJ3Jvb3QnKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1wdHlcIj57eyAneXV2LmFwcC5kcml2ZS5maWxlcy5jb250ZW50LmVtcHR5LnJvb3QubGlzdCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChlbXB0eU1vZGUoKSA9PT0gJ3F1ZXJ5Jykge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5XCI+e3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMuY29udGVudC5lbXB0eS5xdWVyeS5saXN0JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5XCI+e3sgJ3l1di5hcHAuZHJpdmUuZmlsZXMuY29udGVudC5lbXB0eS5saXN0JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC95dXYtdGlsZS1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gZGV0YWlscyAtLT5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCIyMFwiIFt2aXNpYmxlXT1cImVuYWJsZURldGFpbHMoKVwiPlxuICAgIEBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWQoKTtcbiAgICBAaWYgKGVuYWJsZURldGFpbHMoKSAmJiBzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtPy5pc0ZvbGRlcikge1xuICAgICAgICA8eXV2LW9iamVjdC1zdW1tYXJ5IFtjb25maWdUeXBlXT1cImNvbmZpZ1R5cGVPcHRpb25zWydmb2xkZXInXVwiIFtkbXNPYmplY3RdPVwic2VsZWN0ZWRJdGVtXCI+PC95dXYtb2JqZWN0LXN1bW1hcnk+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHl1di1vYmplY3Qtc3VtbWFyeVxuICAgICAgICAgIFtjb25maWdUeXBlXT1cImNvbmZpZ1R5cGVPcHRpb25zWydmaWxlJ11cIlxuICAgICAgICAgIFtkbXNPYmplY3RdPVwic2VsZWN0ZWRJdGVtXCJcbiAgICAgICAgICBbeXV2RmlsZURyb3Bab25lXT1cInsgbGFiZWw6ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmRyb3B6b25lLmNvbnRlbnQucmVwbGFjZS5sYWJlbCcgfCB0cmFuc2xhdGUgfVwiXG4gICAgICAgICAgW2ZpbGVEcm9wRGlzYWJsZWRdPVwiZmlsZURyb3BTdW1tYXJ5RGlzYWJsZWQoKVwiXG4gICAgICAgICAgKGZpbGVEcm9wKT1cIm9uRmlsZVVwZGF0ZURyb3AoJGV2ZW50KVwiXG4gICAgICAgID48L3l1di1vYmplY3Qtc3VtbWFyeT5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBsZXQgc2VsID0gc2VsZWN0aW9uKCk7XG4gICAgICBAaWYgKHNlbCAmJiBzZWwubGVuZ3RoID4gMCkge1xuICAgICAgICA8eXV2LW11bHRpLW9iamVjdC1zdW1tYXJ5IFtoZWFkbGluZV09XCIneXV2LmFwcC5kcml2ZS5tdWx0aXNlbGVjdGVkLmRldGFpbHMnIHwgdHJhbnNsYXRlOiB7IGNvdW50OiBzZWxlY3Rpb24oKS5sZW5ndGggfVwiPjwveXV2LW11bHRpLW9iamVjdC1zdW1tYXJ5PlxuICAgICAgfSBAZWxzZSBpZiAodGlsZUxpc3QoKT8uaXRlbXM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8IS0tIFRPRE86IENIT1VMRCBIQVZFIEEgRElGRkVSRU5UIE1FU1NBR0UgRk9SIEVNUFRZIFJFU1VMVFMgRU1QVFkgRk9SIE5PVyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj57eyAneXV2LmFwcC5kcml2ZS5lbXB0eS5yZXN1bHRzLmRldGFpbHMubWVzc2FnZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPnt7ICd5dXYuYXBwLmRyaXZlLnVuc2VsZWN0ZWQuZGV0YWlscycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvbmctdGVtcGxhdGU+XG48L3l2Yy1zcGxpdC12aWV3PlxuIl19
|
|
@@ -11,4 +11,4 @@ export var DRIVE_ACTION_MODE;
|
|
|
11
11
|
DRIVE_ACTION_MODE["CUT"] = "cut";
|
|
12
12
|
DRIVE_ACTION_MODE["COPY"] = "copy";
|
|
13
13
|
})(DRIVE_ACTION_MODE || (DRIVE_ACTION_MODE = {}));
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvc2VydmljZXMvZHJpdmUvZHJpdmUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZDQSxrQ0FBa0M7QUFDbEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0FBQzNDLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUM7QUFJN0MsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsV0FBVyxLQUFYLFdBQVcsUUFFdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLGdDQUFXLENBQUE7SUFDWCxrQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEbXNPYmplY3QsIFNlYXJjaFF1ZXJ5IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvYWN0aW9ucyc7XG5pbXBvcnQgeyBUaWxlRGF0YSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay90aWxlLWxpc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkQ3J1bWIge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIERyaXZlU3RhdGUge1xuICBjdXJyZW50Rm9sZGVyOiBzdHJpbmcgfCBudWxsO1xuICBxdWVyeTogU2VhcmNoUXVlcnkgfCBudWxsO1xuICBxdWVyeVRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICBleHRlbmRlZFF1ZXJ5OiBib29sZWFuO1xuICBzZWxlY3Rpb246IERtc09iamVjdFtdO1xuICBhY3Rpb25zOiBBY3Rpb25bXTtcbiAgYnVzeTogYm9vbGVhbjtcbiAgc29ydDoge1xuICAgIHByb3BlcnR5OiBzdHJpbmc7XG4gICAgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnO1xuICB9IHwgbnVsbDtcbiAgYnJlYWRjcnVtYjoge1xuICAgIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcGFydGlhbDogYm9vbGVhbjtcbiAgICBpdGVtczogQnJlYWRDcnVtYltdO1xuICAgIGZvbGRlcjogeyBmb2xkZXJJZDogc3RyaW5nIHwgbnVsbDsgZW50cnk6IEJyZWFkQ3J1bWJbXTsgbG9hZGluZzogYm9vbGVhbiB9IHwgbnVsbDtcbiAgfTtcbiAgdmVyc2lvbnM6IHtcbiAgICB2ZXJzaW9uc0xpc3Q6IFRpbGVEYXRhW107XG4gICAgc2VsZWN0ZWRWZXJzaW9uOiBEbXNPYmplY3RbXSB8IG51bGw7XG4gIH07XG4gIHNlbGVjdGVkRG1zT2JqZWN0OiBEbXNPYmplY3QgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyaXZlVmFsaWRhdGVQYXlsb2FkIHtcbiAgYXBwOiBzdHJpbmc7XG4gIGZpbGVOYW1lczogc3RyaW5nW107XG4gIHRhcmdldEZvbGRlcklkPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBEcml2ZVZhbGlkYXRlUmVzcG9uc2Uge1xuICBlcnJvcnM6IFt7IG1lc3NhZ2U6IHN0cmluZ1tdIH1dO1xuICBleGlzdGluZ0ZpbGVOYW1lczogc3RyaW5nW107XG4gIGludmFsaWRGaWxlTmFtZXM6IHN0cmluZ1tdO1xuICB2YWxpZDogYm9vbGVhbjtcbn1cblxuLy8gSUQgcmVwcmVzZW50aW5nIHRoZSByb290IGZvbGRlclxuZXhwb3J0IGNvbnN0IERSSVZFX1JPT1RfRk9MREVSX0lEID0gJ3Jvb3QnO1xuLy8gSUQgcmVwcmVzZW50aW5nIGEgY3VzdG9tIHZpZXcgbGlrZSAncmVjZW50bHkgZWRpdGVkIGRvY3VtZW50cydcbmV4cG9ydCBjb25zdCBEUklWRV9RVUVSWV9GT0xERVJfSUQgPSAncXVlcnknO1xuXG5leHBvcnQgdHlwZSBEcml2ZUZvbGRlcklkID0gdHlwZW9mIERSSVZFX1JPT1RfRk9MREVSX0lEIHwgdHlwZW9mIERSSVZFX1FVRVJZX0ZPTERFUl9JRDtcblxuZXhwb3J0IGVudW0gRFJJVkVfRVZFTlQge1xuICByZWZyZXNoID0gJ3JlZnJlc2gnXG59XG5cbmV4cG9ydCBlbnVtIERSSVZFX0FDVElPTl9NT0RFIHtcbiAgQ1VUID0gJ2N1dCcsXG4gIENPUFkgPSAnY29weSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVSZXN1bHQge1xuICBpZD86IHN0cmluZztcbiAgZXJyb3I/OiBDcmVhdGVFcnJvcjtcbn1cbmV4cG9ydCB0eXBlIENyZWF0ZUVycm9yID0gJ2RlZmF1bHQnIHwgJ25hbWVFeGlzdHMnO1xuIl19
|