@eo-sdk/client 11.14.0-rc.2 → 11.14.0-rc.3

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.
Files changed (52) hide show
  1. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +2 -1
  2. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts.map +1 -1
  3. package/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.d.ts +2 -1
  4. package/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.d.ts.map +1 -1
  5. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +1 -1
  6. package/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.d.ts +1 -1
  7. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +1 -0
  8. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
  9. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +1 -0
  10. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  11. package/app/eo-framework/object-details/object-links/object-links.component.d.ts +1 -0
  12. package/app/eo-framework/object-details/object-links/object-links.component.d.ts.map +1 -1
  13. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  14. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +2 -1
  15. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  16. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts.map +1 -1
  17. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  18. package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +1 -1
  19. package/esm2022/app/eo-client/login/login.component.mjs +3 -3
  20. package/esm2022/app/eo-client/settings/settings.component.mjs +1 -1
  21. package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +8 -4
  22. package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +8 -4
  23. package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +1 -1
  24. package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +1 -1
  25. package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +1 -1
  26. package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +1 -1
  27. package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +3 -3
  28. package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +1 -1
  29. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +2 -2
  30. package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +3 -3
  31. package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +7 -3
  32. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +11 -7
  33. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +1 -1
  34. package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
  35. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +9 -8
  36. package/esm2022/app/eo-framework/grid/grid.component.mjs +2 -2
  37. package/esm2022/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +1 -1
  38. package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +1 -1
  39. package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +13 -6
  40. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +10 -2
  41. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +1 -1
  42. package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +1 -1
  43. package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +1 -1
  44. package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +1 -1
  45. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +3 -3
  46. package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +1 -1
  47. package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +11 -5
  48. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +1 -3
  49. package/fesm2022/eo-sdk-client.mjs +123 -90
  50. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  51. package/misc/scripts/mvn-deploy.js +3 -3
  52. package/package.json +2 -2
@@ -516,7 +516,7 @@ let StoredQueryDetailsComponent = class StoredQueryDetailsComponent {
516
516
  return index;
517
517
  }
518
518
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, deps: [{ token: i1.Router }, { token: i2.SearchService }, { token: i2.UserService }, { token: i2.SystemService }, { token: i3.SelectionService }, { token: i4.PendingChangesService }, { token: i2.StoredQueriesService }, { token: i5.ObjectFormHelperService }, { token: i0.ElementRef }, { token: i2.TranslateService }, { token: i2.EventService }, { token: i6.AppSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
519
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: StoredQueryDetailsComponent, selector: "eo-stored-query-details", inputs: { query: "query" }, outputs: { notifyList: "notifyList" }, viewQueries: [{ propertyName: "storedQueryForm", first: true, predicate: ["storedQueryForm"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n [iconTitle]=\"('eo.view.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{ storedQuery.name }}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\"\n [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\"\n [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{ storedQuery.contextFolderTypes[0]?.label }}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\" *ngIf=\"!isNewQuery\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" *ngIf=\"!isNewQuery\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{ restriction.label }}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{ item }}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"isStoredQueryUsed() ? showDeleteDialog = true : delete()\"\n [disabled]=\"!isOwnQuery\" translate>eo.cta.button.delete\n </button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>\n eo.storedquery.action.edit\n </button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>\n eo.storedquery.run\n </button>\n </ng-container>\n\n <eo-dialog [title]=\"'eo.storedquery.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'storedQuery-delete__dialog'\">\n <div>\n <span>{{'eo.storedquery.delete.dialog.message' | translate: {\n storedquery: this.storedQuery.name,\n name: this.info\n }\n }}\n </span>\n </div>\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel\n </button>\n <button type=\"button\" #confirmDelete (click)=\"delete(); showDeleteDialog = false\" class=\"button primary\"\n translate>eo.cta.button.delete\n </button>\n </div>\n </eo-dialog>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>\n eo.storedquery.action.save\n </button>\n </ng-template>\n </div>\n\n</ng-container>\n", styles: [":host{--stored-query-aside-width: 300px;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding) * 2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{width:var(--stored-query-aside-width);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{margin:0 2px;padding:4px;color:var(--text-color-hint)}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px 2px 0 0}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);color:var(--color-white);border-radius:2px}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2);border:1px solid rgba(var(--color-black-rgb),.1);padding:2px 2px 4px 4px;margin-bottom:calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding) / 8 * -1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding) / 8);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .label,:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field{display:none}:host .eo-body .aside .meta-data{order:1;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;display:table;border-collapse:collapse}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{display:table-cell;padding-right:calc(var(--app-pane-padding) / 2);color:var(--text-color-caption);font-style:italic}:host .eo-body .aside .meta-data .restriction .items{display:table-cell;border-left:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2)}:host .actions{display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px);background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .context h3{padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding) / 2) 0;margin:0;font-weight:var(--font-weight-light);font-size:var(--font-subhead);color:var(--color-white);display:flex;justify-content:flex-end}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{display:flex;flex-flow:row nowrap;align-items:center}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{max-width:500px;display:block}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{width:100%;font-size:var(--font-title);font-weight:var(--font-weight-light);border:0;background-color:transparent}::ng-deep .storedQuery-delete__dialog{padding:8px;min-height:unset!important}::ng-deep .storedQuery-delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}::ng-deep .storedQuery-delete__dialog .storedQuery-delete__dialog_warning{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "directive", type: i9.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i10.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i11.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i12.QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { kind: "directive", type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i13.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i13.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i15.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i16.StoredQueryComponent, selector: "eo-stored-query", inputs: ["query", "formOnly"], outputs: ["onQueryLoaded", "onQueryExecute"] }, { kind: "component", type: i17.DynamicPropertySwitchComponent, selector: "eo-dynamic-property-switch", inputs: ["parentFormControl"], outputs: ["onPropertyChanged"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
519
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: StoredQueryDetailsComponent, selector: "eo-stored-query-details", inputs: { query: "query" }, outputs: { notifyList: "notifyList" }, viewQueries: [{ propertyName: "storedQueryForm", first: true, predicate: ["storedQueryForm"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n [iconTitle]=\"('eo.view.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{ storedQuery.name }}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\"\n [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\"\n [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{ storedQuery.contextFolderTypes[0]?.label }}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\" *ngIf=\"!isNewQuery\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" *ngIf=\"!isNewQuery\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{ restriction.label }}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{ item }}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"isStoredQueryUsed() ? showDeleteDialog = true : delete()\"\n [disabled]=\"!isOwnQuery\" translate>eo.cta.button.delete\n </button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>\n eo.storedquery.action.edit\n </button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>\n eo.storedquery.run\n </button>\n </ng-container>\n\n <eo-dialog [title]=\"'eo.storedquery.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'storedQuery-delete__dialog'\">\n <div>\n <span>{{'eo.storedquery.delete.dialog.message' | translate: {\n storedquery: this.storedQuery.name,\n name: this.info\n }\n }}\n </span>\n </div>\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel\n </button>\n <button type=\"button\" #confirmDelete (click)=\"delete(); showDeleteDialog = false\" class=\"button primary\"\n translate>eo.cta.button.delete\n </button>\n </div>\n </eo-dialog>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>\n eo.storedquery.action.save\n </button>\n </ng-template>\n </div>\n\n</ng-container>\n", styles: [":host{--stored-query-aside-width: 300px;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding) * 2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{width:var(--stored-query-aside-width);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{margin:0 2px;padding:4px;color:var(--text-color-hint)}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px 2px 0 0}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);color:var(--color-white);border-radius:2px}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2);border:1px solid rgba(var(--color-black-rgb),.1);padding:2px 2px 4px 4px;margin-bottom:calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding) / 8 * -1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding) / 8);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .label,:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field{display:none}:host .eo-body .aside .meta-data{order:1;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;display:table;border-collapse:collapse}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{display:table-cell;padding-right:calc(var(--app-pane-padding) / 2);color:var(--text-color-caption);font-style:italic}:host .eo-body .aside .meta-data .restriction .items{display:table-cell;border-left:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2)}:host .actions{display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px);background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .context h3{padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding) / 2) 0;margin:0;font-weight:var(--font-weight-light);font-size:var(--font-subhead);color:var(--color-white);display:flex;justify-content:flex-end}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{display:flex;flex-flow:row nowrap;align-items:center}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{max-width:500px;display:block}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{width:100%;font-size:var(--font-title);font-weight:var(--font-weight-light);border:0;background-color:transparent}::ng-deep .storedQuery-delete__dialog{padding:8px;min-height:unset!important}::ng-deep .storedQuery-delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}::ng-deep .storedQuery-delete__dialog .storedQuery-delete__dialog_warning{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "directive", type: i9.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i10.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i11.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "closeOnCancelOnly", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i12.QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { kind: "directive", type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i13.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i13.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i15.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i16.StoredQueryComponent, selector: "eo-stored-query", inputs: ["query", "formOnly"], outputs: ["onQueryLoaded", "onQueryExecute"] }, { kind: "component", type: i17.DynamicPropertySwitchComponent, selector: "eo-dynamic-property-switch", inputs: ["parentFormControl"], outputs: ["onPropertyChanged"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
520
520
  };
521
521
  StoredQueryDetailsComponent = __decorate([
522
522
  UntilDestroy()
@@ -34,11 +34,13 @@ export class EoDialogComponent {
34
34
  this.align = 'center';
35
35
  this.isFormTable = false;
36
36
  this.showPreview = false;
37
+ this.closeOnCancelOnly = false;
37
38
  this.onTogglePreview = new EventEmitter();
38
39
  this.visibleChange = new EventEmitter();
39
40
  this.hide = new EventEmitter();
40
41
  this.show = new EventEmitter();
41
42
  this.canClose = () => {
43
+ !this._visible;
42
44
  if (this.dirtyCheck) {
43
45
  return !this.pendingChanges.checkForPendingTasks(this.dirtyCheck);
44
46
  }
@@ -53,6 +55,8 @@ export class EoDialogComponent {
53
55
  // We create the overlay
54
56
  this.overlayRef = this.overlay.open(this.dialogContent, null, {
55
57
  disposeOnNavigation: true,
58
+ lightDismiss: !this.closeOnCancelOnly,
59
+ closeOnEscape: !this.closeOnCancelOnly,
56
60
  minHeight: this.minHeight,
57
61
  minWidth: this.minWidth,
58
62
  height: this.height,
@@ -80,8 +84,8 @@ export class EoDialogComponent {
80
84
  }
81
85
  catchFocus() {
82
86
  setTimeout(() => {
83
- if (this.focusOnContent.last?.nativeElement?.lastChild?.children) {
84
- this.focusOnContent.last?.nativeElement?.lastChild?.children[1].focus();
87
+ if (this.focusOnContent?.last) {
88
+ this.focusOnContent.last.nativeElement?.querySelector('[class="button primary"]')?.focus();
85
89
  }
86
90
  }, 100);
87
91
  }
@@ -98,11 +102,11 @@ export class EoDialogComponent {
98
102
  this.closeDialog();
99
103
  }
100
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EoDialogComponent, deps: [{ token: i1.PendingChangesService }, { token: i2.YvcOverlayService }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: EoDialogComponent, selector: "eo-dialog", inputs: { hasPreviewFile: "hasPreviewFile", title: "title", subtitle: "subtitle", styleClass: "styleClass", dirtyCheck: "dirtyCheck", minWidth: "minWidth", minHeight: "minHeight", height: "height", width: "width", focusOnShow: "focusOnShow", align: "align", isFormTable: "isFormTable", showPreview: "showPreview", visible: "visible" }, outputs: { onTogglePreview: "onTogglePreview", visibleChange: "visibleChange", hide: "hide", show: "show" }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true }, { propertyName: "dialogContent", first: true, predicate: ["dialogContent"], descendants: true }, { propertyName: "focusOnContent", predicate: ["focusOnContent"], descendants: true }], ngImport: i0, template: "<ng-template #dialogContent>\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\n <div class=\"header-main\">\n <h5 class=\"headline\">{{title}}</h5>\n <div class=\"actions\">\n <a *ngIf=\"isFormTable && hasPreviewFile\" class=\"button\" (click)=\"togglePreview()\">\n <eo-icon\n [iconSrc]=\"showPreview ? 'assets/_default/svg/ic_preview_close.svg' : 'assets/_default/svg/ic_preview_show.svg'\">\n </eo-icon>\n <span>{{showPreview ? ('eo.form.table.dialog.preview.hide' | translate) :\n ('eo.form.table.dialog.preview.show' | translate)}}</span>\n </a>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\"\n class=\"button white\"></eo-icon>\n </div>\n </div>\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\n </header>\n <div class=\"eo-dialog-content\" #focusOnContent [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: [".eo-dialog{background-color:var(--panel-background);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;max-height:100%;max-width:100%;animation:none}.eo-dialog-header{background-color:var(--color-accent);color:var(--color-white);padding-block:16px;padding-inline:8px;font-weight:var(--font-weight-light);font-size:var(--font-headline);flex:0 0 auto}.eo-dialog-header .header-main{display:flex;justify-content:space-between;align-items:center;width:100%}.eo-dialog-header .headline{font-size:24px;margin:0;font-weight:400}.eo-dialog-header .actions{display:flex;align-items:center}.eo-dialog-header .actions .button{display:inline-flex;align-items:center;margin-right:8px;font-size:14px;color:var(--color-primary-1)}.eo-dialog-header .actions .button:hover{color:var(--color-primary-1)!important}.eo-dialog-header .actions .button.text{border:1px solid var(--color-primary-1)}.eo-dialog-header .actions .button span{margin-left:4px}.eo-dialog-header .subtitle{font-size:15px;margin:10px 0 0;font-weight:400;width:100%;text-align:left}.eo-dialog-content{position:relative;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:auto;height:100%;max-height:520px}.eo-dialog-content>eo-tree{margin:var(--app-pane-padding)}.eo-dialog-content .empty{padding:var(--app-pane-padding);color:var(--text-color-caption);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;align-items:center;justify-content:center}.eo-dialog-content .action-buttons{justify-content:flex-end;padding-top:32px}.eo-dialog-content button:not(:last-child):not(.accordion-btn){margin-right:5px}.object-form-table-dialog{background-color:var(--panel-background-grey)}.object-form-table-dialog .body{height:100%;padding:var(--app-pane-padding);box-sizing:border-box}.object-form-table-dialog .body yvc-split-view{height:83vh}.object-form-table-dialog .edit-body{display:flex;height:100%}.object-form-table-dialog .table-body{width:100%;height:100%;background-color:var(--panel-background-grey);display:flex}.object-form-table-dialog eo-row-edit{background-color:var(--color-white);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.object-form-table-dialog eo-row-edit .row-edit{height:100%;display:flex;flex-direction:column}.object-form-table-dialog eo-row-edit .row-edit .edit-header{display:flex;justify-content:space-between}.object-form-table-dialog eo-row-edit .row-edit .edit-header .new-indicator{margin:8px 16px 0;color:var(--text-color-caption);font-size:var(--font-title);width:fit-content}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon{margin:8px 8px 0;color:var(--text-color-caption)}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon:hover{background:rgba(var(--color-black-rgb),.1)}.object-form-table-dialog eo-row-edit .row-edit .form{height:100%;overflow:auto}.object-form-table-dialog eo-row-edit .row-edit .actions{display:flex;flex:0;flex-direction:row;min-height:0;min-width:0;justify-content:flex-end;padding-right:var(--app-pane-padding);min-height:5em;align-items:center;border-top:1px solid var(--panel-header-border-bottom-color)}.object-form-table-dialog eo-row-edit .row-edit .actions button{height:3em;margin:0 calc(var(--app-pane-padding) / 8);padding:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions eo-checkbox{margin:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions .add-label{font-size:var(--font-body);color:var(--text-color-caption);margin-right:var(--app-pane-padding)}.object-form-table-dialog .object-form-table{width:100%;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;background-color:#fff}.object-form-table-dialog .object-form-table .grid-body{width:100%;height:100%;position:relative}.object-form-table-dialog .object-form-table .grid-body .ag-theme-balham .ag-header{background-color:unset!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular{width:100%;height:100%;background-color:transparent}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .copy-cell,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .new-row{animation-name:new-row;animation-duration:4s}@keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell{display:flex;align-items:center;padding:0 calc(var(--app-pane-padding) / 4);font-size:var(--font-caption);line-height:var(--oft-row-height)}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.ag-cell-focus{background-color:var(--list-item-hover-background);outline:0!important;border-color:transparent!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell svg{pointer-events:none}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.res-ico,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-boolean{justify-content:center}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-number{justify-content:flex-end}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon{display:flex;cursor:pointer}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon svg{fill:var(--text-color-caption)}.object-form-table-dialog .object-form-table-header{display:flex;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);border-bottom:0}.object-form-table-dialog .object-form-table-header span{display:block;flex:1 1 auto}.object-form-table-dialog .object-form-table-header eo-icon.stf{width:20px;height:20px;margin:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption);cursor:pointer}.object-form-table-dialog .object-form-table-header eo-icon.stf.add-row{width:24px;height:24px;background-color:var(--color-accent);color:#fff;border-radius:2px}.object-form-table-dialog .object-form-table-header button.add{border-radius:2px;padding:calc(var(--app-pane-padding) / 2)}.object-form-table-dialog .object-form-table-header button.export{border-radius:2px;border:1px solid black;color:#000;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 4);font-size:var(--font-hint);margin:0 calc(var(--app-pane-padding) / 4)}.object-form-table-dialog .eo-dialog-content{max-height:initial;height:100%;overflow:hidden}.object-form-table-dialog .table-area{overflow:unset!important}.cdk-overlay-pane{position:absolute!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: EoDialogComponent, selector: "eo-dialog", inputs: { hasPreviewFile: "hasPreviewFile", title: "title", subtitle: "subtitle", styleClass: "styleClass", dirtyCheck: "dirtyCheck", minWidth: "minWidth", minHeight: "minHeight", height: "height", width: "width", focusOnShow: "focusOnShow", align: "align", isFormTable: "isFormTable", showPreview: "showPreview", closeOnCancelOnly: "closeOnCancelOnly", visible: "visible" }, outputs: { onTogglePreview: "onTogglePreview", visibleChange: "visibleChange", hide: "hide", show: "show" }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true }, { propertyName: "dialogContent", first: true, predicate: ["dialogContent"], descendants: true }, { propertyName: "focusOnContent", predicate: ["focusOnContent"], descendants: true }], ngImport: i0, template: "<ng-template #dialogContent>\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\n <div class=\"header-main\">\n <h5 class=\"headline\">{{title}}</h5>\n <div class=\"actions\">\n <a *ngIf=\"isFormTable && hasPreviewFile\" class=\"button\" (click)=\"togglePreview()\">\n <eo-icon\n [iconSrc]=\"showPreview ? 'assets/_default/svg/ic_preview_close.svg' : 'assets/_default/svg/ic_preview_show.svg'\">\n </eo-icon>\n <span>{{showPreview ? ('eo.form.table.dialog.preview.hide' | translate) :\n ('eo.form.table.dialog.preview.show' | translate)}}</span>\n </a>\n @if (!closeOnCancelOnly) {\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\" class=\"button white\"></eo-icon>\n }\n </div>\n </div>\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\n </header>\n <div class=\"eo-dialog-content\" #focusOnContent [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>", styles: [".eo-dialog{background-color:var(--panel-background);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;max-height:100%;max-width:100%;animation:none}.eo-dialog-header{background-color:var(--color-accent);color:var(--color-white);padding-block:16px;padding-inline:8px;font-weight:var(--font-weight-light);font-size:var(--font-headline);flex:0 0 auto}.eo-dialog-header .header-main{display:flex;justify-content:space-between;align-items:center;width:100%}.eo-dialog-header .headline{font-size:24px;margin:0;font-weight:400}.eo-dialog-header .actions{display:flex;align-items:center}.eo-dialog-header .actions .button{display:inline-flex;align-items:center;margin-right:8px;font-size:14px;color:var(--color-primary-1)}.eo-dialog-header .actions .button:hover{color:var(--color-primary-1)!important}.eo-dialog-header .actions .button.text{border:1px solid var(--color-primary-1)}.eo-dialog-header .actions .button span{margin-left:4px}.eo-dialog-header .subtitle{font-size:15px;margin:10px 0 0;font-weight:400;width:100%;text-align:left}.eo-dialog-content{position:relative;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:auto;height:100%;max-height:520px}.eo-dialog-content>eo-tree{margin:var(--app-pane-padding)}.eo-dialog-content .empty{padding:var(--app-pane-padding);color:var(--text-color-caption);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;align-items:center;justify-content:center}.eo-dialog-content .action-buttons{justify-content:flex-end;padding-top:32px}.eo-dialog-content button:not(:last-child):not(.accordion-btn){margin-right:5px}.object-form-table-dialog{background-color:var(--panel-background-grey)}.object-form-table-dialog .body{height:100%;padding:var(--app-pane-padding);box-sizing:border-box}.object-form-table-dialog .body yvc-split-view{height:83vh}.object-form-table-dialog .edit-body{display:flex;height:100%}.object-form-table-dialog .table-body{width:100%;height:100%;background-color:var(--panel-background-grey);display:flex}.object-form-table-dialog eo-row-edit{background-color:var(--color-white);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.object-form-table-dialog eo-row-edit .row-edit{height:100%;display:flex;flex-direction:column}.object-form-table-dialog eo-row-edit .row-edit .edit-header{display:flex;justify-content:space-between}.object-form-table-dialog eo-row-edit .row-edit .edit-header .new-indicator{margin:8px 16px 0;color:var(--text-color-caption);font-size:var(--font-title);width:fit-content}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon{margin:8px 8px 0;color:var(--text-color-caption)}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon:hover{background:rgba(var(--color-black-rgb),.1)}.object-form-table-dialog eo-row-edit .row-edit .form{height:100%;overflow:auto}.object-form-table-dialog eo-row-edit .row-edit .actions{display:flex;flex:0;flex-direction:row;min-height:0;min-width:0;justify-content:flex-end;padding-right:var(--app-pane-padding);min-height:5em;align-items:center;border-top:1px solid var(--panel-header-border-bottom-color)}.object-form-table-dialog eo-row-edit .row-edit .actions button{height:3em;margin:0 calc(var(--app-pane-padding) / 8);padding:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions eo-checkbox{margin:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions .add-label{font-size:var(--font-body);color:var(--text-color-caption);margin-right:var(--app-pane-padding)}.object-form-table-dialog .object-form-table{width:100%;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;background-color:#fff}.object-form-table-dialog .object-form-table .grid-body{width:100%;height:100%;position:relative}.object-form-table-dialog .object-form-table .grid-body .ag-theme-balham .ag-header{background-color:unset!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular{width:100%;height:100%;background-color:transparent}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .copy-cell,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .new-row{animation-name:new-row;animation-duration:4s}@keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell{display:flex;align-items:center;padding:0 calc(var(--app-pane-padding) / 4);font-size:var(--font-caption);line-height:var(--oft-row-height)}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.ag-cell-focus{background-color:var(--list-item-hover-background);outline:0!important;border-color:transparent!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell svg{pointer-events:none}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.res-ico,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-boolean{justify-content:center}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-number{justify-content:flex-end}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon{display:flex;cursor:pointer}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon svg{fill:var(--text-color-caption)}.object-form-table-dialog .object-form-table-header{display:flex;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);border-bottom:0}.object-form-table-dialog .object-form-table-header span{display:block;flex:1 1 auto}.object-form-table-dialog .object-form-table-header eo-icon.stf{width:20px;height:20px;margin:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption);cursor:pointer}.object-form-table-dialog .object-form-table-header eo-icon.stf.add-row{width:24px;height:24px;background-color:var(--color-accent);color:#fff;border-radius:2px}.object-form-table-dialog .object-form-table-header button.add{border-radius:2px;padding:calc(var(--app-pane-padding) / 2)}.object-form-table-dialog .object-form-table-header button.export{border-radius:2px;border:1px solid black;color:#000;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 4);font-size:var(--font-hint);margin:0 calc(var(--app-pane-padding) / 4)}.object-form-table-dialog .eo-dialog-content{max-height:initial;height:100%;overflow:hidden}.object-form-table-dialog .table-area{overflow:unset!important}.cdk-overlay-pane{position:absolute!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
102
106
  }
103
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EoDialogComponent, decorators: [{
104
108
  type: Component,
105
- args: [{ selector: 'eo-dialog', encapsulation: ViewEncapsulation.None, template: "<ng-template #dialogContent>\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\n <div class=\"header-main\">\n <h5 class=\"headline\">{{title}}</h5>\n <div class=\"actions\">\n <a *ngIf=\"isFormTable && hasPreviewFile\" class=\"button\" (click)=\"togglePreview()\">\n <eo-icon\n [iconSrc]=\"showPreview ? 'assets/_default/svg/ic_preview_close.svg' : 'assets/_default/svg/ic_preview_show.svg'\">\n </eo-icon>\n <span>{{showPreview ? ('eo.form.table.dialog.preview.hide' | translate) :\n ('eo.form.table.dialog.preview.show' | translate)}}</span>\n </a>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\"\n class=\"button white\"></eo-icon>\n </div>\n </div>\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\n </header>\n <div class=\"eo-dialog-content\" #focusOnContent [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: [".eo-dialog{background-color:var(--panel-background);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;max-height:100%;max-width:100%;animation:none}.eo-dialog-header{background-color:var(--color-accent);color:var(--color-white);padding-block:16px;padding-inline:8px;font-weight:var(--font-weight-light);font-size:var(--font-headline);flex:0 0 auto}.eo-dialog-header .header-main{display:flex;justify-content:space-between;align-items:center;width:100%}.eo-dialog-header .headline{font-size:24px;margin:0;font-weight:400}.eo-dialog-header .actions{display:flex;align-items:center}.eo-dialog-header .actions .button{display:inline-flex;align-items:center;margin-right:8px;font-size:14px;color:var(--color-primary-1)}.eo-dialog-header .actions .button:hover{color:var(--color-primary-1)!important}.eo-dialog-header .actions .button.text{border:1px solid var(--color-primary-1)}.eo-dialog-header .actions .button span{margin-left:4px}.eo-dialog-header .subtitle{font-size:15px;margin:10px 0 0;font-weight:400;width:100%;text-align:left}.eo-dialog-content{position:relative;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:auto;height:100%;max-height:520px}.eo-dialog-content>eo-tree{margin:var(--app-pane-padding)}.eo-dialog-content .empty{padding:var(--app-pane-padding);color:var(--text-color-caption);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;align-items:center;justify-content:center}.eo-dialog-content .action-buttons{justify-content:flex-end;padding-top:32px}.eo-dialog-content button:not(:last-child):not(.accordion-btn){margin-right:5px}.object-form-table-dialog{background-color:var(--panel-background-grey)}.object-form-table-dialog .body{height:100%;padding:var(--app-pane-padding);box-sizing:border-box}.object-form-table-dialog .body yvc-split-view{height:83vh}.object-form-table-dialog .edit-body{display:flex;height:100%}.object-form-table-dialog .table-body{width:100%;height:100%;background-color:var(--panel-background-grey);display:flex}.object-form-table-dialog eo-row-edit{background-color:var(--color-white);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.object-form-table-dialog eo-row-edit .row-edit{height:100%;display:flex;flex-direction:column}.object-form-table-dialog eo-row-edit .row-edit .edit-header{display:flex;justify-content:space-between}.object-form-table-dialog eo-row-edit .row-edit .edit-header .new-indicator{margin:8px 16px 0;color:var(--text-color-caption);font-size:var(--font-title);width:fit-content}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon{margin:8px 8px 0;color:var(--text-color-caption)}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon:hover{background:rgba(var(--color-black-rgb),.1)}.object-form-table-dialog eo-row-edit .row-edit .form{height:100%;overflow:auto}.object-form-table-dialog eo-row-edit .row-edit .actions{display:flex;flex:0;flex-direction:row;min-height:0;min-width:0;justify-content:flex-end;padding-right:var(--app-pane-padding);min-height:5em;align-items:center;border-top:1px solid var(--panel-header-border-bottom-color)}.object-form-table-dialog eo-row-edit .row-edit .actions button{height:3em;margin:0 calc(var(--app-pane-padding) / 8);padding:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions eo-checkbox{margin:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions .add-label{font-size:var(--font-body);color:var(--text-color-caption);margin-right:var(--app-pane-padding)}.object-form-table-dialog .object-form-table{width:100%;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;background-color:#fff}.object-form-table-dialog .object-form-table .grid-body{width:100%;height:100%;position:relative}.object-form-table-dialog .object-form-table .grid-body .ag-theme-balham .ag-header{background-color:unset!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular{width:100%;height:100%;background-color:transparent}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .copy-cell,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .new-row{animation-name:new-row;animation-duration:4s}@keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell{display:flex;align-items:center;padding:0 calc(var(--app-pane-padding) / 4);font-size:var(--font-caption);line-height:var(--oft-row-height)}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.ag-cell-focus{background-color:var(--list-item-hover-background);outline:0!important;border-color:transparent!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell svg{pointer-events:none}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.res-ico,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-boolean{justify-content:center}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-number{justify-content:flex-end}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon{display:flex;cursor:pointer}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon svg{fill:var(--text-color-caption)}.object-form-table-dialog .object-form-table-header{display:flex;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);border-bottom:0}.object-form-table-dialog .object-form-table-header span{display:block;flex:1 1 auto}.object-form-table-dialog .object-form-table-header eo-icon.stf{width:20px;height:20px;margin:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption);cursor:pointer}.object-form-table-dialog .object-form-table-header eo-icon.stf.add-row{width:24px;height:24px;background-color:var(--color-accent);color:#fff;border-radius:2px}.object-form-table-dialog .object-form-table-header button.add{border-radius:2px;padding:calc(var(--app-pane-padding) / 2)}.object-form-table-dialog .object-form-table-header button.export{border-radius:2px;border:1px solid black;color:#000;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 4);font-size:var(--font-hint);margin:0 calc(var(--app-pane-padding) / 4)}.object-form-table-dialog .eo-dialog-content{max-height:initial;height:100%;overflow:hidden}.object-form-table-dialog .table-area{overflow:unset!important}.cdk-overlay-pane{position:absolute!important}\n"] }]
109
+ args: [{ selector: 'eo-dialog', encapsulation: ViewEncapsulation.None, template: "<ng-template #dialogContent>\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\n <div class=\"header-main\">\n <h5 class=\"headline\">{{title}}</h5>\n <div class=\"actions\">\n <a *ngIf=\"isFormTable && hasPreviewFile\" class=\"button\" (click)=\"togglePreview()\">\n <eo-icon\n [iconSrc]=\"showPreview ? 'assets/_default/svg/ic_preview_close.svg' : 'assets/_default/svg/ic_preview_show.svg'\">\n </eo-icon>\n <span>{{showPreview ? ('eo.form.table.dialog.preview.hide' | translate) :\n ('eo.form.table.dialog.preview.show' | translate)}}</span>\n </a>\n @if (!closeOnCancelOnly) {\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\" class=\"button white\"></eo-icon>\n }\n </div>\n </div>\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\n </header>\n <div class=\"eo-dialog-content\" #focusOnContent [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>", styles: [".eo-dialog{background-color:var(--panel-background);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;max-height:100%;max-width:100%;animation:none}.eo-dialog-header{background-color:var(--color-accent);color:var(--color-white);padding-block:16px;padding-inline:8px;font-weight:var(--font-weight-light);font-size:var(--font-headline);flex:0 0 auto}.eo-dialog-header .header-main{display:flex;justify-content:space-between;align-items:center;width:100%}.eo-dialog-header .headline{font-size:24px;margin:0;font-weight:400}.eo-dialog-header .actions{display:flex;align-items:center}.eo-dialog-header .actions .button{display:inline-flex;align-items:center;margin-right:8px;font-size:14px;color:var(--color-primary-1)}.eo-dialog-header .actions .button:hover{color:var(--color-primary-1)!important}.eo-dialog-header .actions .button.text{border:1px solid var(--color-primary-1)}.eo-dialog-header .actions .button span{margin-left:4px}.eo-dialog-header .subtitle{font-size:15px;margin:10px 0 0;font-weight:400;width:100%;text-align:left}.eo-dialog-content{position:relative;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:auto;height:100%;max-height:520px}.eo-dialog-content>eo-tree{margin:var(--app-pane-padding)}.eo-dialog-content .empty{padding:var(--app-pane-padding);color:var(--text-color-caption);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;align-items:center;justify-content:center}.eo-dialog-content .action-buttons{justify-content:flex-end;padding-top:32px}.eo-dialog-content button:not(:last-child):not(.accordion-btn){margin-right:5px}.object-form-table-dialog{background-color:var(--panel-background-grey)}.object-form-table-dialog .body{height:100%;padding:var(--app-pane-padding);box-sizing:border-box}.object-form-table-dialog .body yvc-split-view{height:83vh}.object-form-table-dialog .edit-body{display:flex;height:100%}.object-form-table-dialog .table-body{width:100%;height:100%;background-color:var(--panel-background-grey);display:flex}.object-form-table-dialog eo-row-edit{background-color:var(--color-white);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.object-form-table-dialog eo-row-edit .row-edit{height:100%;display:flex;flex-direction:column}.object-form-table-dialog eo-row-edit .row-edit .edit-header{display:flex;justify-content:space-between}.object-form-table-dialog eo-row-edit .row-edit .edit-header .new-indicator{margin:8px 16px 0;color:var(--text-color-caption);font-size:var(--font-title);width:fit-content}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon{margin:8px 8px 0;color:var(--text-color-caption)}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon:hover{background:rgba(var(--color-black-rgb),.1)}.object-form-table-dialog eo-row-edit .row-edit .form{height:100%;overflow:auto}.object-form-table-dialog eo-row-edit .row-edit .actions{display:flex;flex:0;flex-direction:row;min-height:0;min-width:0;justify-content:flex-end;padding-right:var(--app-pane-padding);min-height:5em;align-items:center;border-top:1px solid var(--panel-header-border-bottom-color)}.object-form-table-dialog eo-row-edit .row-edit .actions button{height:3em;margin:0 calc(var(--app-pane-padding) / 8);padding:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions eo-checkbox{margin:0 calc(var(--app-pane-padding) / 2)}.object-form-table-dialog eo-row-edit .row-edit .actions .add-label{font-size:var(--font-body);color:var(--text-color-caption);margin-right:var(--app-pane-padding)}.object-form-table-dialog .object-form-table{width:100%;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;background-color:#fff}.object-form-table-dialog .object-form-table .grid-body{width:100%;height:100%;position:relative}.object-form-table-dialog .object-form-table .grid-body .ag-theme-balham .ag-header{background-color:unset!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular{width:100%;height:100%;background-color:transparent}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .copy-cell,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .new-row{animation-name:new-row;animation-duration:4s}@keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell{display:flex;align-items:center;padding:0 calc(var(--app-pane-padding) / 4);font-size:var(--font-caption);line-height:var(--oft-row-height)}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.ag-cell-focus{background-color:var(--list-item-hover-background);outline:0!important;border-color:transparent!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell svg{pointer-events:none}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.res-ico,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-boolean{justify-content:center}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-number{justify-content:flex-end}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon{display:flex;cursor:pointer}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon svg{fill:var(--text-color-caption)}.object-form-table-dialog .object-form-table-header{display:flex;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);border-bottom:0}.object-form-table-dialog .object-form-table-header span{display:block;flex:1 1 auto}.object-form-table-dialog .object-form-table-header eo-icon.stf{width:20px;height:20px;margin:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption);cursor:pointer}.object-form-table-dialog .object-form-table-header eo-icon.stf.add-row{width:24px;height:24px;background-color:var(--color-accent);color:#fff;border-radius:2px}.object-form-table-dialog .object-form-table-header button.add{border-radius:2px;padding:calc(var(--app-pane-padding) / 2)}.object-form-table-dialog .object-form-table-header button.export{border-radius:2px;border:1px solid black;color:#000;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 4);font-size:var(--font-hint);margin:0 calc(var(--app-pane-padding) / 4)}.object-form-table-dialog .eo-dialog-content{max-height:initial;height:100%;overflow:hidden}.object-form-table-dialog .table-area{overflow:unset!important}.cdk-overlay-pane{position:absolute!important}\n"] }]
106
110
  }], ctorParameters: () => [{ type: i1.PendingChangesService }, { type: i2.YvcOverlayService }], propDecorators: { portalOutlet: [{
107
111
  type: ViewChild,
108
112
  args: [CdkPortalOutlet]
@@ -138,6 +142,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
138
142
  type: Input
139
143
  }], showPreview: [{
140
144
  type: Input
145
+ }], closeOnCancelOnly: [{
146
+ type: Input
141
147
  }], onTogglePreview: [{
142
148
  type: Output
143
149
  }], visibleChange: [{
@@ -149,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
149
155
  }], visible: [{
150
156
  type: Input
151
157
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdWkvZW8tZGlhbG9nL2VvLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFXdkIsTUFBTSxPQUFPLGlCQUFpQjtJQWdDNUIsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHO1FBQ2IsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHO1lBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzdDLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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T3V0bGV0fSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuXG5pbXBvcnQge1l2Y092ZXJsYXlSZWYsIFl2Y092ZXJsYXlTZXJ2aWNlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvb3ZlcmxheSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lby1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lby1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBFb0RpYWxvZ0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQpIHBvcnRhbE91dGxldDogQ2RrUG9ydGFsT3V0bGV0O1xuICBAVmlld0NoaWxkKCdkaWFsb2dDb250ZW50JykgZGlhbG9nQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZHJlbignZm9jdXNPbkNvbnRlbnQnKSBmb2N1c09uQ29udGVudDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZjogWXZjT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBfdmlzaWJsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGhhc1ByZXZpZXdGaWxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0eWxlQ2xhc3MgPSAnJztcblxuICAvLyBhcnJheSBvZiBwZW5kaW5nVGFzayBJRHMgdG8gYmUgY2hlY2tlZCBiZWZvcmUgdGhlIGRpYWxvZyBjbG9zZXNcbiAgQElucHV0KCkgZGlydHlDaGVjazogc3RyaW5nIHwgc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKSBtaW5XaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gMjAwO1xuICBASW5wdXQoKSBtaW5IZWlnaHQgPSAnYXV0byc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nO1xuICBASW5wdXQoKSBmb2N1c09uU2hvdyA9IHRydWU7XG4gIEBJbnB1dCgpIGFsaWduOiAnY2VudGVyJyB8ICdzdGFydCcgPSAnY2VudGVyJztcbiAgQElucHV0KCkgaXNGb3JtVGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1ByZXZpZXcgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb25Ub2dnbGVQcmV2aWV3OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGlkZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKVxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIHNldCB2aXNpYmxlKHZhbCkge1xuICAgIGlmICh2YWwgIT09IHRoaXMuX3Zpc2libGUgJiYgdmFsKSB0aGlzLm9wZW4oKVxuICAgIGlmICh2YWwgIT09IHRoaXMuX3Zpc2libGUgJiYgdGhpcy5fdmlzaWJsZSkgdGhpcy5jbG9zZURpYWxvZygpXG4gICAgdGhpcy5fdmlzaWJsZSA9ICEhdmFsO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMuX3Zpc2libGUpO1xuICAgIHRoaXMuX3Zpc2libGUgPyB0aGlzLnNob3cuZW1pdCh2YWwpIDogdGhpcy5oaWRlLmVtaXQodmFsKTtcbiAgfVxuXG5cblxuICBjYW5DbG9zZSA9ICgpOiBib29sZWFuID0+IHtcbiAgICBpZiAodGhpcy5kaXJ0eUNoZWNrKSB7XG4gICAgICByZXR1cm4gIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2tGb3JQZW5kaW5nVGFza3ModGhpcy5kaXJ0eUNoZWNrKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBZdmNPdmVybGF5U2VydmljZSxcbiAgKSB7IH1cblxuICBwcml2YXRlIG9wZW4oKSB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ0NvbnRlbnQpIHJldHVybjtcbiAgICAvLyBXZSBjcmVhdGUgdGhlIG92ZXJsYXlcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkub3Blbih0aGlzLmRpYWxvZ0NvbnRlbnQsIG51bGwsIHtcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBtaW5IZWlnaHQ6IHRoaXMubWluSGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IHRoaXMubWluV2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICBjYW5DbG9zZTogdGhpcy5jYW5DbG9zZVxuICAgIH0pICAgIFxuICAgIHRoaXMuY2F0Y2hGb2N1cygpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZS5lbWl0KCkpXG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBkaWFsb2cgaWYgaXQgaXMgY3VycmVudGx5IHZpc2libGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGBfdmlzaWJsZWAgcHJvcGVydHkgdG8gYGZhbHNlYCBpZiB0aGUgZGlhbG9nIGlzIHZpc2libGUsXG4gICAqIGNsb3NlcyB0aGUgb3ZlcmxheSByZWZlcmVuY2UgaWYgaXQgZXhpc3RzLCBhbmQgZW1pdHMgdGhlIGB2aXNpYmxlQ2hhbmdlYCBldmVudFxuICAgKiB3aXRoIHRoZSB1cGRhdGVkIHZpc2liaWxpdHkgc3RhdHVzLlxuICAgKi9cbiAgY2xvc2VEaWFsb2coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Zpc2libGUpIHtcbiAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl92aXNpYmxlKTtcbiAgfVxuXG4gIGNhdGNoRm9jdXMoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5mb2N1c09uQ29udGVudC5sYXN0Py5uYXRpdmVFbGVtZW50Py5sYXN0Q2hpbGQ/LmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuZm9jdXNPbkNvbnRlbnQubGFzdD8ubmF0aXZlRWxlbWVudD8ubGFzdENoaWxkPy5jaGlsZHJlblsxXS5mb2N1cygpOyAgICAgIFxuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuICB0b2dnbGVQcmV2aWV3KCkge1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSAhdGhpcy5zaG93UHJldmlldztcbiAgICB0aGlzLm9uVG9nZ2xlUHJldmlldy5lbWl0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Zpc2libGUpIHt0aGlzLm9wZW4oKTt9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRGlhbG9nKClcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkaWFsb2dDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiZW8tZGlhbG9nXCIgW25nQ2xhc3NdPVwic3R5bGVDbGFzcyB8fCAnJ1wiIGVvUnRsQXdhcmU9XCJkaXJcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiZW8tZGlhbG9nLWhlYWRlclwiIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3MgPyBzdHlsZUNsYXNzICsgJy0taGVhZGVyICcgOiAnJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1tYWluXCI+XG4gICAgICAgIDxoNSBjbGFzcz1cImhlYWRsaW5lXCI+e3t0aXRsZX19PC9oNT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8YSAqbmdJZj1cImlzRm9ybVRhYmxlICYmIGhhc1ByZXZpZXdGaWxlXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwidG9nZ2xlUHJldmlldygpXCI+XG4gICAgICAgICAgICA8ZW8taWNvblxuICAgICAgICAgICAgICBbaWNvblNyY109XCJzaG93UHJldmlldyA/ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3ByZXZpZXdfY2xvc2Uuc3ZnJyA6ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3ByZXZpZXdfc2hvdy5zdmcnXCI+XG4gICAgICAgICAgICA8L2VvLWljb24+XG4gICAgICAgICAgICA8c3Bhbj57e3Nob3dQcmV2aWV3ID8gKCdlby5mb3JtLnRhYmxlLmRpYWxvZy5wcmV2aWV3LmhpZGUnIHwgdHJhbnNsYXRlKSA6XG4gICAgICAgICAgICAgICgnZW8uZm9ybS50YWJsZS5kaWFsb2cucHJldmlldy5zaG93JyB8IHRyYW5zbGF0ZSl9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIHdoaXRlXCI+PC9lby1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGg2ICpuZ0lmPVwic3VidGl0bGVcIiBjbGFzcz1cInN1YnRpdGxlXCI+e3tzdWJ0aXRsZX19PC9oNj5cbiAgICA8L2hlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiZW8tZGlhbG9nLWNvbnRlbnRcIiAjZm9jdXNPbkNvbnRlbnQgW25nQ2xhc3NdPVwic3R5bGVDbGFzcyA/IHN0eWxlQ2xhc3MgKyAnLS1jb250ZW50ICcgOiAnJ1wiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdWkvZW8tZGlhbG9nL2VvLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFXdkIsTUFBTSxPQUFPLGlCQUFpQjtJQWlDNUIsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHO1FBQ2IsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHO1lBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzdDLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQWFELFlBQ1UsY0FBcUMsRUFDckMsT0FBMEI7UUFEMUIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBbkQ1QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFekIsa0VBQWtFO1FBQ3pELGVBQVUsR0FBc0IsRUFBRSxDQUFDO1FBRW5DLGFBQVEsR0FBb0IsR0FBRyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFHbkIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUF1QixRQUFRLENBQUM7UUFDckMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsU0FBSSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBaUJ2RCxhQUFRLEdBQUcsR0FBWSxFQUFFO1lBQ3ZCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDbkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQTtJQUtHLENBQUM7SUFFRyxJQUFJO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUNoQyx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRTtZQUM1RCxtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDckMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVTtRQUNSLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsMEJBQTBCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQTtZQUM1RixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQSxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3BCLENBQUM7OEdBckhVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9rQkFHakIsZUFBZSx1T0M1QjVCLHN1Q0F3QmM7OzJGRENELGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUk7MEhBS1QsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxlQUFlO2dCQUNFLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDTSxjQUFjO3NCQUE3QyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFLckIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFHSCxPQUFPO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Nka1BvcnRhbE91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcblxuaW1wb3J0IHtZdmNPdmVybGF5UmVmLCBZdmNPdmVybGF5U2VydmljZX0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL292ZXJsYXknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW8tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW8tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRW9EaWFsb2dDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsT3V0bGV0KSBwb3J0YWxPdXRsZXQ6IENka1BvcnRhbE91dGxldDtcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGVudCcpIGRpYWxvZ0NvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2ZvY3VzT25Db250ZW50JykgZm9jdXNPbkNvbnRlbnQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBwcml2YXRlIG92ZXJsYXlSZWY6IFl2Y092ZXJsYXlSZWY7XG4gIHByaXZhdGUgX3Zpc2libGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBoYXNQcmV2aWV3RmlsZSA9IGZhbHNlO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XG5cbiAgLy8gYXJyYXkgb2YgcGVuZGluZ1Rhc2sgSURzIHRvIGJlIGNoZWNrZWQgYmVmb3JlIHRoZSBkaWFsb2cgY2xvc2VzXG4gIEBJbnB1dCgpIGRpcnR5Q2hlY2s6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KCkgbWluV2lkdGg6IG51bWJlciB8IHN0cmluZyA9IDIwMDtcbiAgQElucHV0KCkgbWluSGVpZ2h0ID0gJ2F1dG8nO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZztcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZztcbiAgQElucHV0KCkgZm9jdXNPblNob3cgPSB0cnVlO1xuICBASW5wdXQoKSBhbGlnbjogJ2NlbnRlcicgfCAnc3RhcnQnID0gJ2NlbnRlcic7XG4gIEBJbnB1dCgpIGlzRm9ybVRhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dQcmV2aWV3ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsb3NlT25DYW5jZWxPbmx5ID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uVG9nZ2xlUHJldmlldzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBzZXQgdmlzaWJsZSh2YWwpIHtcbiAgICBpZiAodmFsICE9PSB0aGlzLl92aXNpYmxlICYmIHZhbCkgdGhpcy5vcGVuKClcbiAgICBpZiAodmFsICE9PSB0aGlzLl92aXNpYmxlICYmIHRoaXMuX3Zpc2libGUpIHRoaXMuY2xvc2VEaWFsb2coKVxuICAgIHRoaXMuX3Zpc2libGUgPSAhIXZhbDtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl92aXNpYmxlKTtcbiAgICB0aGlzLl92aXNpYmxlID8gdGhpcy5zaG93LmVtaXQodmFsKSA6IHRoaXMuaGlkZS5lbWl0KHZhbCk7XG4gIH1cblxuXG5cbiAgY2FuQ2xvc2UgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgIXRoaXMuX3Zpc2libGU7XG4gICAgaWYgKHRoaXMuZGlydHlDaGVjaykge1xuICAgICAgcmV0dXJuICF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrRm9yUGVuZGluZ1Rhc2tzKHRoaXMuZGlydHlDaGVjaylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogWXZjT3ZlcmxheVNlcnZpY2UsXG4gICkgeyB9XG5cbiAgcHJpdmF0ZSBvcGVuKCkge1xuICAgIGlmICghdGhpcy5kaWFsb2dDb250ZW50KSByZXR1cm47XG4gICAgLy8gV2UgY3JlYXRlIHRoZSBvdmVybGF5XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5Lm9wZW4odGhpcy5kaWFsb2dDb250ZW50LCBudWxsLCB7XG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgbGlnaHREaXNtaXNzOiAhdGhpcy5jbG9zZU9uQ2FuY2VsT25seSxcbiAgICAgIGNsb3NlT25Fc2NhcGU6ICF0aGlzLmNsb3NlT25DYW5jZWxPbmx5LCBcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXG4gICAgICBtaW5XaWR0aDogdGhpcy5taW5XaWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICAgIGNhbkNsb3NlOiB0aGlzLmNhbkNsb3NlXG4gICAgfSlcbiAgICB0aGlzLmNhdGNoRm9jdXMoKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYWZ0ZXJDbG9zZWQkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUuZW1pdCgpKVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZGlhbG9nIGlmIGl0IGlzIGN1cnJlbnRseSB2aXNpYmxlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBgX3Zpc2libGVgIHByb3BlcnR5IHRvIGBmYWxzZWAgaWYgdGhlIGRpYWxvZyBpcyB2aXNpYmxlLFxuICAgKiBjbG9zZXMgdGhlIG92ZXJsYXkgcmVmZXJlbmNlIGlmIGl0IGV4aXN0cywgYW5kIGVtaXRzIHRoZSBgdmlzaWJsZUNoYW5nZWAgZXZlbnRcbiAgICogd2l0aCB0aGUgdXBkYXRlZCB2aXNpYmlsaXR5IHN0YXR1cy5cbiAgICovXG4gIGNsb3NlRGlhbG9nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92aXNpYmxlKSB7XG4gICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5fdmlzaWJsZSk7XG4gIH1cblxuICBjYXRjaEZvY3VzKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9jdXNPbkNvbnRlbnQ/Lmxhc3QpIHtcbiAgICAgICAgdGhpcy5mb2N1c09uQ29udGVudC5sYXN0Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJdJyk/LmZvY3VzKClcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG5cbiAgdG9nZ2xlUHJldmlldygpIHtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gIXRoaXMuc2hvd1ByZXZpZXc7XG4gICAgdGhpcy5vblRvZ2dsZVByZXZpZXcuZW1pdCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92aXNpYmxlKSB7dGhpcy5vcGVuKCk7fVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZURpYWxvZygpXG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGlhbG9nQ29udGVudD5cbiAgPGRpdiBjbGFzcz1cImVvLWRpYWxvZ1wiIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3MgfHwgJydcIiBlb1J0bEF3YXJlPVwiZGlyXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWRpYWxvZy1oZWFkZXJcIiBbbmdDbGFzc109XCJzdHlsZUNsYXNzID8gc3R5bGVDbGFzcyArICctLWhlYWRlciAnIDogJydcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItbWFpblwiPlxuICAgICAgICA8aDUgY2xhc3M9XCJoZWFkbGluZVwiPnt7dGl0bGV9fTwvaDU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPGEgKm5nSWY9XCJpc0Zvcm1UYWJsZSAmJiBoYXNQcmV2aWV3RmlsZVwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVByZXZpZXcoKVwiPlxuICAgICAgICAgICAgPGVvLWljb25cbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwic2hvd1ByZXZpZXcgPyAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19wcmV2aWV3X2Nsb3NlLnN2ZycgOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19wcmV2aWV3X3Nob3cuc3ZnJ1wiPlxuICAgICAgICAgICAgPC9lby1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3tzaG93UHJldmlldyA/ICgnZW8uZm9ybS50YWJsZS5kaWFsb2cucHJldmlldy5oaWRlJyB8IHRyYW5zbGF0ZSkgOlxuICAgICAgICAgICAgICAoJ2VvLmZvcm0udGFibGUuZGlhbG9nLnByZXZpZXcuc2hvdycgfCB0cmFuc2xhdGUpfX08L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIEBpZiAoIWNsb3NlT25DYW5jZWxPbmx5KSB7XG4gICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jbGVhci5zdmcnXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBjbGFzcz1cImJ1dHRvbiB3aGl0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aDYgKm5nSWY9XCJzdWJ0aXRsZVwiIGNsYXNzPVwic3VidGl0bGVcIj57e3N1YnRpdGxlfX08L2g2PlxuICAgIDwvaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJlby1kaWFsb2ctY29udGVudFwiICNmb2N1c09uQ29udGVudCBbbmdDbGFzc109XCJzdHlsZUNsYXNzID8gc3R5bGVDbGFzcyArICctLWNvbnRlbnQgJyA6ICcnXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -169,7 +169,6 @@ export class UploadOverlayComponent {
169
169
  this.invalidInput = false;
170
170
  }
171
171
  init() {
172
- this.getFolder();
173
172
  // global drag&drop upload will only be available on desktop (web or electron)
174
173
  if (EnvironmentEnaio.isMobileEnvironment()) {
175
174
  return false;
@@ -302,7 +301,6 @@ export class UploadOverlayComponent {
302
301
  */
303
302
  validateUploadTargets() {
304
303
  this.hasValidUploadTargets = true;
305
- this.getFolder();
306
304
  observableForkJoin(this.uploadTargets.map(t => this.validateUploadTarget(t)))
307
305
  .subscribe((res) => {
308
306
  this.validUploadTargets = res.filter(r => r.valid).map(filtered => filtered.target).reverse().sort((a, b) => {
@@ -471,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
471
469
  type: ViewChild,
472
470
  args: ['overlay']
473
471
  }] } });
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFHTCxVQUFVLEVBRVYsWUFBWSxFQUNaLGNBQWMsRUFFZCxLQUFLLEVBRUwsZ0JBQWdCLEVBR2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBZSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLHNCQUFzQjtJQThEakMsWUFBb0IsTUFBYyxFQUN4QixRQUFtQixFQUNuQixjQUE4QixFQUM5QixTQUEyQixFQUMzQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixjQUFtQyxFQUNuQyxjQUFxQztRQVQzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdB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QUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLEtBQWdCO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLEtBQXFCO1FBQzlDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzRixDQUFDOzhHQXRoQlUsc0JBQXNCO2tHQUF0QixzQkFBc0IsK0pDeEJuQyxtK05BK0pBOzsyRkR2SWEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQjtpVkFNUCxTQUFTO3NCQUE5QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBPYmplY3RUeXBlLFxuICBFdmVudFNlcnZpY2UsXG4gIEVuYWlvRXZlbnQsXG4gIFVwbG9hZFJlZ2lzdHJ5U2VydmljZSxcbiAgVXBsb2FkVGFyZ2V0LFxuICBVcGxvYWRGaWxlSXRlbSxcbiAgUHJlcGFyZVNlcnZpY2UsXG4gIFV0aWxzLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBFbnZpcm9ubWVudEVuYWlvLCBTeXN0ZW1TZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZVxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2UsIExvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXVwbG9hZC1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1vdmVybGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXknKSBvdmVybGF5RWw6IEVsZW1lbnRSZWY7XG5cbiAgcXVldWU6IFVwbG9hZEZpbGVJdGVtW10gPSBbXTtcbiAgZmlsZU92ZXI6IGJvb2xlYW47XG4gIGlzVXBsb2FkaW5nOiBib29sZWFuO1xuICBoYXNWYWxpZFVwbG9hZFRhcmdldHM6IGJvb2xlYW47XG4gIGludmFsaWRJbnB1dDogYm9vbGVhbjtcbiAgcXVldWVTaXplOiBudW1iZXI7XG4gIHZhbGlkVXBsb2FkVGFyZ2V0czogVXBsb2FkVGFyZ2V0W10gPSBbXTtcbiAgc2VsZWN0ZWRVcGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldDtcbiAgZm9sZGVyRmF2b3JpdGVzOiBVcGxvYWRUYXJnZXRbXSA9IFtdO1xuICBsYXN0T3BlbmVkRm9sZGVyOiBVcGxvYWRUYXJnZXRbXSA9IFtdO1xuICBkYXRlUGlwZTogTG9jYWxlRGF0ZVBpcGU7XG4gIGFnZW50QWNjU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGZhdm9yaXRlc0FjY1NlbGVjdGVkOiBib29sZWFuO1xuXG4gIHRhcmdldFR5cGVzID0gW1xuICAgIHtcbiAgICAgIHR5cGU6ICdyb290JyxcbiAgICAgIGljb25TcmM6ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NyZWF0ZV9kb2N1bWVudC5zdmcnLFxuICAgICAgdGFyZ2V0Q2xhc3M6ICd1cGxvYWQtdGFyZ2V0LWdlbmVyYWwnLFxuICAgICAgbmFtZTogJ2VvLnVwbG9hZC5nbG9iYWwucm9vdC50aXRsZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ2VvLnVwbG9hZC5nbG9iYWwucm9vdC5kZXNjcmlwdGlvbidcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgaWNvblNyYzogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZG9jdW1lbnRfZmlsZS5zdmcnLFxuICAgICAgdGFyZ2V0Q2xhc3M6ICd1cGxvYWQtdGFyZ2V0LXJlcGxhY2UnLFxuICAgICAgbmFtZTogJ2VvLnVwbG9hZC5nbG9iYWwub2JqZWN0LnRpdGxlJ1xuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2NvbnRleHQnLFxuICAgICAgaWNvblNyYzogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY3JlYXRlX2RvY3VtZW50X2luX2ZvbGRlci5zdmcnLFxuICAgICAgdGFyZ2V0Q2xhc3M6ICd1cGxvYWQtdGFyZ2V0LWNvbnRleHQnLFxuICAgICAgbmFtZTogJ2VvLnVwbG9hZC5nbG9iYWwuY29udGV4dC50aXRsZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnY29udGV4dHRyZWUnLFxuICAgICAgaWNvblNyYzogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY3JlYXRlX2RvY3VtZW50X2luX2ZvbGRlci5zdmcnLFxuICAgICAgdGFyZ2V0Q2xhc3M6ICd1cGxvYWQtdGFyZ2V0LWNvbnRleHR0cmVlJyxcbiAgICAgIG5hbWU6ICdlby5hZGQudGl0bGUubG9jYXRpb24uc3ViZm9sZGVyJ1xuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICBpY29uU3JjOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY191cGxvYWQuc3ZnJyxcbiAgICAgIHRhcmdldENsYXNzOiAndXBsb2FkLXRhcmdldC1jdXN0b20nLFxuICAgICAgbmFtZTogJycsXG4gICAgfVxuICBdO1xuXG4gIHByaXZhdGUgdXBsb2FkVGFyZ2V0czogVXBsb2FkVGFyZ2V0W10gPSBbXTtcbiAgcHJpdmF0ZSBkcmFnTGVhdmVMaXN0ZW5lcjogRnVuY3Rpb247XG4gIHByaXZhdGUgZHJvcExpc3RlbmVyOiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBkcmFnT3Zlckxpc3RlbmVyOiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBlc2NLZXlMaXN0ZW5lcjogRnVuY3Rpb247XG4gIHByaXZhdGUgZHJhZ0VudGVyTGlzdGVuZXI6IEZ1bmN0aW9uO1xuICBwcml2YXRlIHBhc3RlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuICBwcml2YXRlIGRyYWdFdmVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBjYWNoZUtleSA9ICdhY2NvcmRpb24uc3RhdGUtLSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXBsb2FkUmVnaXN0cnk6IFVwbG9hZFJlZ2lzdHJ5U2VydmljZSkge1xuICAgIHRoaXMuZGF0ZVBpcGUgPSBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VlZCB1cGxvYWQgd2l0aCBhIHNlbGVjdGVkIHVwbG9hZCB0YXJnZXQuXG4gICAqIEBwYXJhbSB1cGxvYWRUYXJnZXQgLSB0aGUgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xuICAgKi9cbiAgcHVibGljIHByb2NlZWRXaXRoVXBsb2FkKHVwbG9hZFRhcmdldDogVXBsb2FkVGFyZ2V0KTogdm9pZCB7XG5cbiAgICBpZiAodXBsb2FkVGFyZ2V0LnR5cGUgIT09IFVwbG9hZFRhcmdldC5DVVNUT00gJiYgdGhpcy5xdWV1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBGb3IgbW9yZSB0aGFuIG9uZSBmaWxlIHRvIGJlIHVwbG9hZGVkIHRvIGEgbm9uZSBjdXN0b20gdGFyZ2V0LCB3ZSBsZXQgdGhlIHVzZXIgZGVjaWRlIGlmXG4gICAgICAvLyBiYXRjaCB1cGxvYWQgc2hvdWxkIGJlIHVzZWQgb3Igbm90IC4uLlxuXG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQgPSB1cGxvYWRUYXJnZXQ7XG4gICAgfSBlbHNlIGlmICh1cGxvYWRUYXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0Lk9CSkVDVCkge1xuICAgICAgLy8gLi4uIG90aGVyd2lzZSB1cGxvYWQgaXMgc3RhcnRlZCBpbW1lZGlhdGVseVxuICAgICAgdGhpcy5zdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQsIFtudWxsLCB0aGlzLmdldFN0YXRlUm91dGUoKV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0VXBsb2FkKHVwbG9hZFRhcmdldCwgW251bGwsICcvcHJlcGFyZSddKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VlZCB1cGxvYWQgdXNpbmcgdGhlIHNlbGVjdGVkIHVwbG9hZCB0YXJnZXQuXG4gICAqIEBwYXJhbSB1c2VCYXRjaFVwbG9hZCAtIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byB1c2UgYmF0Y2ggdXBsb2FkXG4gICAqL1xuICBwdWJsaWMgcHJvY2VlZFdpdGhTZWxlY3RlZFRhcmdldCh1c2VCYXRjaFVwbG9hZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRVcGxvYWQodGhpcy5zZWxlY3RlZFVwbG9hZFRhcmdldCwgW3VzZUJhdGNoVXBsb2FkLCAnL3ByZXBhcmUnXSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxuICAgKi9cbiAgcHVibGljIHJlc2V0U2VsZWN0ZWRVcGxvYWRUYXJnZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFVwbG9hZFRhcmdldCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGZpbGUgZnJvbSB0aGUgbGlzdCBvZiBmaWxlcyB0byBiZSB1cGxvYWRlZC5cbiAgICogQHBhcmFtIGZpbGVJdGVtIC0gdGhlIGZpbGUgaXRlbSB0byBiZSByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRmlsZUl0ZW0oZmlsZUl0ZW06IFVwbG9hZEZpbGVJdGVtKTogdm9pZCB7XG5cbiAgICB0aGlzLnF1ZXVlID0gdGhpcy5xdWV1ZS5maWx0ZXIoKGYpID0+IGYuaWQgIT09IGZpbGVJdGVtLmlkKTtcbiAgICBpZiAoIXRoaXMucXVldWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVwZGF0ZSBhdmFpbGFibGUgdXBsb2FkIHRhcmdldHMgYmVjYXVzZSB0aGVpciB2YWxpZGl0eVxuICAgICAgLy8gbWF5IGJlIGJhc2VkIG9uIHRoZSBxdWV1ZSBzaXplXG4gICAgICB0aGlzLnZhbGlkYXRlVXBsb2FkVGFyZ2V0cygpO1xuICAgICAgdGhpcy5zZXRRdWV1ZVNpemUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0ZVJvdXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcbiAgfVxuXG4gIG9uQWdlbnRUb2dnbGUoaW5mbzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmNhY2hlS2V5ICsgJ2FnZW50LWZvbGRlcicsIEpTT04uc3RyaW5naWZ5KGluZm8pKTtcbiAgfVxuXG4gIG9uRmF2b3JpdGVUb2dnbGUoaW5mbzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmNhY2hlS2V5ICsgJ2Zhdm9yaXRlLWZvbGRlcicsIEpTT04uc3RyaW5naWZ5KGluZm8pKTtcbiAgfVxuXG4gIGdldEZvbGRlcigpOiB2b2lkIHtcbiAgICAvL2ZvbGRlciBmcm9tIGFnZW50XG4gICAgdGhpcy5hZ2VudFNlcnZpY2UuZ2V0TGFzdE9wZW5lZEZvbGRlcnNJbmZvKCkuc3Vic2NyaWJlKChyZXM6IFtdKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmxhc3RPcGVuZWRGb2xkZXIgPSByZXMubWFwKChpdGVtOiB7dGl0bGU6IHN0cmluZzsgZGF0YToge2Rlc2NyaXB0aW9uOiBzdHJpbmd9OyBpZDogc3RyaW5nOyB0eXBlOiBzdHJpbmd9KSA9PiB7XG4gICAgICAgIGxldCB0YXJnZXQgPSBuZXcgVXBsb2FkVGFyZ2V0KFxuICAgICAgICAgIGl0ZW0uaWQsXG4gICAgICAgICAgJ2FnZW50JyxcbiAgICAgICAgICBpdGVtPy50aXRsZSxcbiAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShpdGVtLnR5cGUpLmljb25JZCxcbiAgICAgICAgICBpdGVtLnR5cGVcbiAgICAgICAgKTtcbiAgICAgICAgdGFyZ2V0LmRlc2NyaXB0aW9uID0gaXRlbT8uZGF0YT8uZGVzY3JpcHRpb247XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubGFzdE9wZW5lZEZvbGRlci5mb3JFYWNoKHRhcmdldCA9PiB0YXJnZXQub25VcGxvYWRTdWNjZXNzID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJlcGFyZSddKSk7XG4gICAgfSk7XG5cbiAgICAvLyBGb2xkZXIgZnJvbSBmYXZvcml0ZVxuICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0RmF2b3JpdGVzKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGNvbnN0IGZhdm9yaXRlc0ZpbHRlcmVkID0gcmVzLmZpbHRlcigoaXRlbToge3RhcmdldDoge2ZvbGRlcjogYm9vbGVhbn19KSA9PiBpdGVtLnRhcmdldC5mb2xkZXIgPT09IHRydWUpO1xuICAgICAgdGhpcy5mb2xkZXJGYXZvcml0ZXMgPSBmYXZvcml0ZXNGaWx0ZXJlZC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGxldCB0YXJnZXQgPSBuZXcgVXBsb2FkVGFyZ2V0KFxuICAgICAgICAgIGl0ZW0udGFyZ2V0LmlkLFxuICAgICAgICAgICdmYXZvcml0ZScsXG4gICAgICAgICAgaXRlbS50aXRsZSxcbiAgICAgICAgICBpdGVtLnRhcmdldC5pY29uLmlkLFxuICAgICAgICAgIGl0ZW0udGFyZ2V0LnR5cGUsXG4gICAgICAgICk7XG4gICAgICAgIHRhcmdldC5kZXNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGl0ZW0uY3JlYXRlZCk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9sZGVyRmF2b3JpdGVzLmZvckVhY2godGFyZ2V0ID0+IHRhcmdldC5vblVwbG9hZFN1Y2Nlc3MgPSAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcmVwYXJlJ10pKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhdGNoRm9jdXMoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm92ZXJsYXlFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1t0YWJpbmRleD1cIjBcIl0nKS5mb2N1cygpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIHVwbG9hZCBvdmVybGF5IGFuZCByZWxlYXNlIGFsbCBib3VuZCByZXNvdXJjZXMuXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICAvLyB1bmJpbmQgYm91bmQgZXZlbnQgbGlzdGVuZXIsIHdoZW4gdGhleSBhcmUgbm90IG5lZWRlZCBhbnltb3JlXG4gICAgdGhpcy51bmJpbmRMaXN0ZW5lcnMoKTtcbiAgICAvLyBjbGVhciB1cGxvYWQgcXVldWVcbiAgICB0aGlzLnF1ZXVlID0gW107XG4gICAgLy8gaGlkZSB0aGUgb3ZlcmxheVxuICAgIHRoaXMuc2V0RmlsZU92ZXIoZmFsc2UpO1xuICAgIHRoaXMuaW52YWxpZElucHV0ID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgdGhpcy5nZXRGb2xkZXIoKTtcblxuICAgIC8vIGdsb2JhbCBkcmFnJmRyb3AgdXBsb2FkIHdpbGwgb25seSBiZSBhdmFpbGFibGUgb24gZGVza3RvcCAod2ViIG9yIGVsZWN0cm9uKVxuICAgIGlmIChFbnZpcm9ubWVudEVuYWlvLmlzTW9iaWxlRW52aXJvbm1lbnQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHN1YnNjcmliZSBmb3IgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCB1cGxvYWQgdGFyZ2V0c1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudXBsb2FkVGFyZ2V0cyQuc3Vic2NyaWJlKCh1cGxvYWRUYXJnZXRzOiBVcGxvYWRUYXJnZXRbXSkgPT4ge1xuICAgICAgdGhpcy51cGxvYWRUYXJnZXRzID0gdXBsb2FkVGFyZ2V0cztcbiAgICB9KTtcblxuICAgIHRoaXMucGFzdGVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdwYXN0ZScsIChlOiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgdGhpcy5vblBhc3RlKGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdkcmFnZW50ZXInLCAoZTogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICB0aGlzLm9uRHJhZ0VudGVyKGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvblBhc3RlKGU6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNVcGxvYWRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5oYXNWYWxpZFVwbG9hZFRhcmdldHMgPSB0cnVlO1xuICAgIHRoaXMuaW52YWxpZElucHV0ID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLmZpbGVPdmVyICYmIHRoaXMucGFzdGVDb250YWluc0ZpbGVzKGUpKSB7XG4gICAgICBsZXQgdHJhbnNmZXIgPSBlLmNsaXBib2FyZERhdGE7XG4gICAgICBpZiAoIXRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgZm9yIGRpcmVjdG9yaWVzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zZmVyLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0cmFuc2Zlci5pdGVtc1tpXS5raW5kID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRoaXMuaW52YWxpZElucHV0ID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmUgPSB0cmFuc2Zlci5pdGVtc1tpXS53ZWJraXRHZXRBc0VudHJ5KCk7XG4gICAgICAgIGlmIChmZSAmJiBmZS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgIHRoaXMuaW52YWxpZElucHV0ID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pbnZhbGlkSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcHJldmVudEFuZFN0b3AoZSk7XG4gICAgICAgIHRoaXMuc2V0RmlsZU92ZXIodHJ1ZSk7XG4gICAgICAgIHRoaXMub25GaWxlc0Ryb3BwZWQoQXJyYXkuZnJvbSh0cmFuc2Zlci5maWxlcykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25EcmFnRW50ZXIoZTogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNVcGxvYWRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5oYXNWYWxpZFVwbG9hZFRhcmdldHMgPSB0cnVlO1xuICAgIGlmICghdGhpcy5maWxlT3ZlciAmJiB0aGlzLmRyYWdDb250YWluc0ZpbGVzKGUpKSB7XG4gICAgICB0aGlzLmRyYWdFdmVudENvdW50ID0gMDtcbiAgICAgIHRoaXMuc2V0RmlsZU92ZXIodHJ1ZSk7XG5cbiAgICAgIC8vIHVzZSB0aW1lb3V0IGhlcmUgdG8gZm9yY2UgYW5ndWxhciBkaWdlc3QgY3ljbGUgYmVmb3JlIGNvbnRpbnVpbmcsIGJlY2F1c2Ugd2UgYXJlIGFjY2Vzc2luZyBkb20gZWxlbWVudHNcbiAgICAgIC8vIHRoYXQgYXJlIG5vdCB0aGVyZSAoKm5nSWYpIHVudGlsIGZpbGVPdmVyIGlzIHNldCB0byB0cnVlLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IHJlcGxhY2UgYnkgcmVuZGVyZXIgc29sdXRpb24gd2hlbiBhdmFpbGFibGUgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE1Njc0KVxuICAgICAgICB0aGlzLm92ZXJsYXlFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIC8vIGJpbmQgbGF0ZSAob25seSwgd2hlbiBuZWVkZWQpIHRvIGRyYWdsZWF2ZSBldmVudCB0byBhdm9pZCBoZWF2eSBwcm9jZXNzaW5nIG9uIGV2ZXJ5IGRyYWcgZXZlbnRcbiAgICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQsICdkcmFnbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kcmFnRXZlbnRDb3VudC0tO1xuICAgICAgICAgIGlmICh0aGlzLmRyYWdFdmVudENvdW50ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRyb3BMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQsICdkcm9wJywgKGV2dCkgPT4ge1xuICAgICAgICAgIGxldCB0cmFuc2ZlciA9IHRoaXMuX2dldFRyYW5zZmVyKGV2dCk7XG4gICAgICAgICAgaWYgKCF0cmFuc2Zlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChldnQpO1xuXG4gICAgICAgICAgLy8gY2hlY2sgZm9yIGRpcmVjdG9yaWVzXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmFuc2Zlci5pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZmUgPSB0cmFuc2Zlci5pdGVtc1tpXS53ZWJraXRHZXRBc0VudHJ5KCk7XG4gICAgICAgICAgICBpZiAoZmUgJiYgZmUuaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXRoaXMuaW52YWxpZElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLm9uRmlsZXNEcm9wcGVkKHRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQsICdkcmFnb3ZlcicsIChldnQpID0+IHtcbiAgICAgICAgICBsZXQgdHJhbnNmZXIgPSB0aGlzLl9nZXRUcmFuc2ZlcihldnQpO1xuICAgICAgICAgIGlmICghdHJhbnNmZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChldnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYWdFdmVudENvdW50Kys7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VHJhbnNmZXIoZXZlbnQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGV2ZW50LmRhdGFUcmFuc2ZlciA/IGV2ZW50LmRhdGFUcmFuc2ZlciA6IGV2ZW50Lm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyOyAvLyBqUXVlcnkgZml4O1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJldmVudEFuZFN0b3AoZXZlbnQ6IGFueSk6IGFueSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlc0Ryb3BwZWQoZmlsZUl0ZW1zOiBGaWxlW10pIHtcbiAgICB0aGlzLmdldEZvbGRlcigpO1xuICAgIHRoaXMuZ2V0Q2FjaGVkQWNjb3JkaW9uU3RhdGUoKTtcbiAgICB0aGlzLmNhdGNoRm9jdXMoKTtcbiAgICBcbiAgICAvLyBjbGVhciBxdWV1ZSB3aGVuIG5ldyBmaWxlcyBhcmUgYWRkZWRcbiAgICAvLyB0b2RvOiByZW1vdmUgaW4gZnV0dXJlIHJlbGVhc2VzIHRvIHN1cHBvcnQgY29sbGVjdGl2ZSBmaWxlIGFkZGluZ1xuICAgIHRoaXMucXVldWUgPSBbXTtcbiAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVJdGVtcykge1xuICAgICAgdGhpcy5xdWV1ZS5wdXNoKG5ldyBVcGxvYWRGaWxlSXRlbShmaWxlKSk7XG4gICAgfVxuXG4gICAgLy8gYmluZCBFU0Mga2V5IGxpc3RlbmVyIGZvciBjbG9zaW5nIHRoZSBkaWFsb2cgYXMgbGF0ZSBhcyBwb3NzaWJsZVxuICAgIGlmICghdGhpcy5lc2NLZXlMaXN0ZW5lcikge1xuICAgICAgdGhpcy5lc2NLZXlMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdrZXl1cCcsIChlKSA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIHNpemUgb2YgcXVldWVcbiAgICB0aGlzLnNldFF1ZXVlU2l6ZSgpO1xuICAgIC8vIGZpbHRlciBhdmFpbGFibGUgdGFyZ2V0c1xuICAgIHRoaXMudmFsaWRhdGVVcGxvYWRUYXJnZXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIGxpc3Qgb2YgcmVnaXN0ZXJlZCB1cGxvYWQgdGFyZ2V0cywgc28gb25seSB2YWxpZCB0YXJnZXRzIHdpbGwgYmUgc2hvd24uXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVXBsb2FkVGFyZ2V0cygpIHtcbiAgICB0aGlzLmhhc1ZhbGlkVXBsb2FkVGFyZ2V0cyA9IHRydWU7XG4gICAgdGhpcy5nZXRGb2xkZXIoKTtcbiAgICBvYnNlcnZhYmxlRm9ya0pvaW4odGhpcy51cGxvYWRUYXJnZXRzLm1hcCh0ID0+IHRoaXMudmFsaWRhdGVVcGxvYWRUYXJnZXQodCkpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlczoge3RhcmdldDogVXBsb2FkVGFyZ2V0OyB2YWxpZDogYm9vbGVhbn1bXSkgPT4ge1xuICAgICAgICAgIHRoaXMudmFsaWRVcGxvYWRUYXJnZXRzID0gcmVzLmZpbHRlcihyID0+IHIudmFsaWQpLm1hcChmaWx0ZXJlZCA9PiBmaWx0ZXJlZC50YXJnZXQpLnJldmVyc2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYS50eXBlID09PSAnY29udGV4dCcgPyAtMSA6IGIudHlwZSA9PT0gJ2NvbnRleHQnID8gMSA6IDA7IC8vIENvbnRleHQgc2hvdWxkIGJlIG9uIHRvcFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudmFsaWRVcGxvYWRUYXJnZXRzID0gWy4uLnRoaXMudmFsaWRVcGxvYWRUYXJnZXRzLCAuLi50aGlzLmZvbGRlckZhdm9yaXRlcywgLi4udGhpcy5sYXN0T3BlbmVkRm9sZGVyXTtcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMudmFsaWRVcGxvYWRUYXJnZXRzID0gW107XG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICB0aGlzLmhhc1ZhbGlkVXBsb2FkVGFyZ2V0cyA9IHRoaXMudmFsaWRVcGxvYWRUYXJnZXRzLmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVXBsb2FkVGFyZ2V0KHRhcmdldDogVXBsb2FkVGFyZ2V0KTogT2JzZXJ2YWJsZTx7dGFyZ2V0OiBVcGxvYWRUYXJnZXQ7IHZhbGlkOiBib29sZWFufT4ge1xuXG4gICAgaWYgKCF0aGlzLnF1ZXVlKSB7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xuICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LlJPT1QpIHtcblxuICAgICAgICAvLyB0b2RvOiBhcmUgdGhlcmUgb3RoZXIgcmVzdHJpY3Rpb25zIG9uIHJvb3QgdGFyZ2V0P1xuICAgICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFByZXBhcmVDaGlsZFR5cGVzKG51bGwsIHRydWUpXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIChyZXM6IHtwYXJlbnQ6IHN0cmluZzsgdHlwZXM6IE9iamVjdFR5cGVbXX0pID0+IHtcbiAgICAgICAgICAgICAgdmFsaWQgPSB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgcmVzLnR5cGVzLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiB2YWxpZH0pO1xuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5PQkpFQ1QpIHtcblxuICAgICAgICAvLyB0b2RvOiBjaGVjayBpZiB0aGUgcmVmZXJlbmNlIG9iamVjdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gZmlsZSB0eXBlXG4gICAgICAgIHZhbGlkID0gdGFyZ2V0LnJlZmVyZW5jZU9iamVjdCAmJlxuICAgICAgICAgIHRhcmdldC5yZWZlcmVuY2VPYmplY3QudHlwZS5tYXhGaWxlcyA+IDAgJiZcbiAgICAgICAgICAhdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5sb2NrICYmXG4gICAgICAgICAgIXRhcmdldC5yZWZlcmVuY2VPYmplY3QuaXNGaW5hbGl6ZWQgJiZcbiAgICAgICAgICAodGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5yaWdodHMgJiYgdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5yaWdodHMuZWRpdCkgJiZcbiAgICAgICAgICB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgIHRhcmdldC5yZWZlcmVuY2VPYmplY3QuZGF0YS55dXZzaWdzdGF0dXMgIT09ICdzaWduZWQnICYmXG4gICAgICAgICAgdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5kYXRhLnl1dnNpZ3N0YXR1cyAhPT0gJ2lucHJvY2Vzcyc7XG4gICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiB2YWxpZH0pO1xuICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVCB8fCB0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LkNPTlRFWFRfVFJFRSkge1xuXG4gICAgICAgIC8vIHRvZG86IGFkZCBjaGVja3MgcmVsYXRlZCB0byB0aGUgcmVmZXJlbmNlIG9iamVjdCAoZS5nLiBhbGxvd2VkIGZpbGUgdHlwZXMpXG4gICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJlcGFyZUNoaWxkVHlwZXModGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5pZCwgdHJ1ZSlcbiAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHJlczoge3BhcmVudDogc3RyaW5nOyB0eXBlczogT2JqZWN0VHlwZVtdfSkgPT4ge1xuICAgICAgICAgICAgICB2YWxpZCA9IHRhcmdldC5yZWZlcmVuY2VPYmplY3QgJiYgdGhpcy5xdWV1ZS5sZW5ndGggPiAwICYmIHJlcy50eXBlcy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAgIC8vIGZvciBDT05URVhUX1RSRUUgdGFyZ2V0cyBhbHNvIGNoZWNrIGlmIHRoZSBkZXNpcmVkIG5vZGVcbiAgICAgICAgICAgICAgLy8gdHlwZSBpcyBwYXJ0IG9mIHRoZSBwcmVwYXJlIGNoaWxkIHR5cGVzXG4gICAgICAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LkNPTlRFWFRfVFJFRSAmJiB0YXJnZXQuc3ViRm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViRm9sZGVyID0gdGFyZ2V0LnN1YkZvbGRlcjtcbiAgICAgICAgICAgICAgICB2YWxpZCA9ICEhcmVzLnR5cGVzLmZpbmQodCA9PiB0aGlzLnN5c3RlbVNlcnZpY2UuaW1wbGVtZW50c1R5cGUodCwgc3ViRm9sZGVyLmRhdGEudHlwZSkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IGZhbHNlfSk7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IGZhbHNlfSk7XG4gICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FjaGVkQWNjb3JkaW9uU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5hZ2VudEFjY1NlbGVjdGVkID0gSlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUtleSArICdhZ2VudC1mb2xkZXInKSk7XG4gICAgdGhpcy5mYXZvcml0ZXNBY2NTZWxlY3RlZCA9IEpTT04ucGFyc2UodGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVLZXkgKyAnZmF2b3JpdGUtZm9sZGVyJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWNjZXNzZnVsVXBsb2FkKHRhcmdldCwgdXBsb2FkVGFyZ2V0KTogdm9pZCB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRCwgdXBsb2FkVGFyZ2V0LnJlZmVyZW5jZU9iamVjdCk7XG4gICAgdXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2Vzcyh0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBhY3R1YWwgdXBsb2FkLlxuICAgKiBAcGFyYW0gdXBsb2FkVGFyZ2V0IC0gdGFyZ2V0IHRvIHVwbG9hZCB0aGUgZmlsZXMgdG9cbiAgICogQHBhcmFtIHVzZUJhdGNoVXBsb2FkIC0gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBiYXRjaCB1cGxvYWRcbiAgICovXG4gIHByaXZhdGUgc3RhcnRVcGxvYWQodXBsb2FkVGFyZ2V0OiBVcGxvYWRUYXJnZXQsIFsuLi5hcmdzXSk6IHZvaWQge1xuXG4gICAgY29uc3QgW3VzZUJhdGNoVXBsb2FkLCB0YXJnZXRdID0gYXJncztcblxuICAgIHRoaXMuaXNVcGxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudW5iaW5kTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgLnVwbG9hZFRvVGFyZ2V0KHVwbG9hZFRhcmdldCwgdGhpcy5xdWV1ZSwgdXNlQmF0Y2hVcGxvYWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAodXBsb2FkVGFyZ2V0LnN1YkZvbGRlciAmJiB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyLmRhdGEuZGF0YSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICAgIGxldCBvYnMgPSBbXTtcbiAgICAgICAgICAgIHJlcy5mb3JFYWNoKHIgPT4ge1xuICAgICAgICAgICAgICBvYnMucHVzaCh0aGlzLnByZXBhcmVTZXJ2aWNlLnVwZGF0ZVByZXBhcmVkSXRlbUluZGV4RGF0YShyLmlkLCB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyLmRhdGEuZGF0YSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvYnNlcnZhYmxlRm9ya0pvaW4ob2JzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdWNjZXNzZnVsVXBsb2FkKHRhcmdldCwgdXBsb2FkVGFyZ2V0KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgICAgICAgICAgLnVwZGF0ZVByZXBhcmVkSXRlbUluZGV4RGF0YShyZXMuaWQsIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS5kYXRhKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc3VjY2Vzc2Z1bFVwbG9hZCh0YXJnZXQsIHVwbG9hZFRhcmdldCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3NmdWxVcGxvYWQodGFyZ2V0LCB1cGxvYWRUYXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB1cGxvYWRUYXJnZXQub25VcGxvYWRGYWlsKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci5kZXNjcmlwdGlvbicpKVxuICAgICAgKTtcbiAgICB0aGlzLnJlc2V0U2VsZWN0ZWRVcGxvYWRUYXJnZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UXVldWVTaXplKCk6IHZvaWQge1xuICAgIGxldCBzID0gMDtcbiAgICBmb3IgKGxldCBmIG9mIHRoaXMucXVldWUpIHtcbiAgICAgIHMgKz0gZi5zaXplO1xuICAgIH1cbiAgICB0aGlzLnF1ZXVlU2l6ZSA9IHM7XG4gIH1cblxuICBwcml2YXRlIHNldEZpbGVPdmVyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5maWxlT3ZlciA9IHZhbHVlO1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkuc2V0T3ZlcmxheUFjdGl2ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVuYmluZExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kcmFnTGVhdmVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmRyYWdPdmVyTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHJvcExpc3RlbmVyKSB7XG4gICAgICB0aGlzLmRyb3BMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5kcm9wTGlzdGVuZXIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5lc2NLZXlMaXN0ZW5lcikge1xuICAgICAgdGhpcy5lc2NLZXlMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5lc2NLZXlMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCBkcmFnIGV2ZW50IGNvbnRhaW5zIG9uZSBvciBtb3JlIGZpbGVzLlxuICAgKiBAcGFyYW0gZXZlbnQgLSB0aGUgZHJhZyBldmVudCB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIG51bWJlciBvZiBmaWxlc1xuICAgKi9cbiAgcHJpdmF0ZSBkcmFnQ29udGFpbnNGaWxlcyhldmVudDogRHJhZ0V2ZW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMgfHwgW10pLmZpbHRlcihpID0+IGkua2luZCA9PT0gJ2ZpbGUnKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHBhc3RlIGV2ZW50IGNvbnRhaW5zIG9uZSBvciBtb3JlIGZpbGVzLlxuICAgKiBAcGFyYW0gZXZlbnQgLSB0aGUgcGFzdGUgZXZlbnQgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJucyBudW1iZXIgb2YgZmlsZXNcbiAgICovXG4gIHByaXZhdGUgcGFzdGVDb250YWluc0ZpbGVzKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcyB8fCBbXSkuZmlsdGVyKGkgPT4gaS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcbiAgfVxufVxuIiwiPGRpdiBpZD1cImVvLXVwbG9hZC1vdmVybGF5XCIgI292ZXJsYXkgY2xhc3M9XCJkYXJrXCIgKm5nSWY9XCJmaWxlT3ZlclwiIHRhYmluZGV4PVwiMVwiXG4gIFtuZ0NsYXNzXT1cIntmaWxlOiBxdWV1ZS5sZW5ndGgsIGludmFsaWQ6IGludmFsaWRJbnB1dCwgdXBsb2FkaW5nOiBpc1VwbG9hZGluZ31cIj5cblxuICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiB3aGl0ZSBjbG9zZVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvZW8taWNvbj5cblxuICA8ZGl2IGNsYXNzPVwiY291bnRcIj5cbiAgICA8ZGl2Pnt7cXVldWUubGVuZ3RofX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicXVldWVTaXplXCI+e3txdWV1ZVNpemUgfCBmaWxlU2l6ZX19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJoZWFkbGluZVwiPlxuICAgIDxoMSB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5oZWFkbGluZTwvaDE+XG4gIDwvZGl2PlxuICBcbiAgPGVvLWljb24gY2xhc3M9XCJ1cGxvYWR5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdXBsb2FkLnN2ZydcIj48L2VvLWljb24+XG5cbiAgPCEtLSBiYXRjaCB1cGxvYWQgZGlhbG9nIC0tPlxuICA8ZGl2IGNsYXNzPVwiYmF0Y2gtZGlhbG9nXCIgKm5nSWY9XCIhaW52YWxpZElucHV0ICYmIHNlbGVjdGVkVXBsb2FkVGFyZ2V0ICYmICFpc1VwbG9hZGluZ1wiPlxuXG4gICAgPGgyIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLmNob29zZS50aXRsZTwvaDI+XG4gICAgPHAgdHJhbnNsYXRlPmVvLnVwbG9hZC5nbG9iYWwuY2hvb3NlLm1lc3NhZ2U8L3A+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlc2V0U2VsZWN0ZWRVcGxvYWRUYXJnZXQoKVwiIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJvY2VlZFdpdGhTZWxlY3RlZFRhcmdldChmYWxzZSlcIiBjbGFzcz1cInByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5jaG9vc2Uuc2luZ2xlPC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9jZWVkV2l0aFNlbGVjdGVkVGFyZ2V0KHRydWUpXCIgY2xhc3M9XCJwcmltYXJ5XCIgdHJhbnNsYXRlPmVvLnVwbG9hZC5nbG9iYWwuY2hvb3NlLm11bHRpPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gaW52YWxpZCBpbnB1dCBkaWFsb2cgLS0+XG4gIDxkaXYgY2xhc3M9XCJiYXRjaC1kaWFsb2dcIiAqbmdJZj1cImhhc1ZhbGlkVXBsb2FkVGFyZ2V0cyAmJiBpbnZhbGlkSW5wdXRcIj5cblxuICAgIDxoMiB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5pbnZhbGlkLnRpdGxlPC9oMj5cbiAgICA8cCB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5pbnZhbGlkLm1lc3NhZ2U8L3A+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5jbG9zZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIG5vIHVwbG9hZCB0YXJnZXRzIGF2YWlsYWJsZSAtLT5cbiAgPGRpdiBjbGFzcz1cImJhdGNoLWRpYWxvZ1wiICpuZ0lmPVwiIWhhc1ZhbGlkVXBsb2FkVGFyZ2V0c1wiPlxuXG4gICAgPGgyIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLm5vdGFyZ2V0LnRpdGxlPC9oMj5cbiAgICA8cCB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5ub3RhcmdldC5tZXNzYWdlPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgdHJhbnNsYXRlPmVvLnVwbG9hZC5nbG9iYWwuY2xvc2U8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgKm5nSWY9XCJoYXNWYWxpZFVwbG9hZFRhcmdldHMgJiYgIWludmFsaWRJbnB1dCAmJiAhc2VsZWN0ZWRVcGxvYWRUYXJnZXQgJiYgIWlzVXBsb2FkaW5nXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPCEtLSBsaXN0IG9mIGF2YWlsYWJsZSB1cGxvYWQgdGFyZ2V0cyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YXJnZXRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YXJnZXQtbGlzdFwiPlxuICAgICAgICAgIEBmb3IgKHRhcmdldFR5cGUgb2YgdGFyZ2V0VHlwZXM7IHRyYWNrIHRhcmdldFR5cGUudHlwZSkge1xuICAgICAgICAgICAgQGZvciAodCBvZiB2YWxpZFVwbG9hZFRhcmdldHM7IHRyYWNrIHQuaWQpIHtcbiAgICAgICAgICAgICAgQGlmICh0LnR5cGUgPT09IHRhcmdldFR5cGUudHlwZSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRUYXJnZXRUZW1wbGF0ZTsgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3JjOiB0YXJnZXRUeXBlLmljb25TcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzOiB0YXJnZXRUeXBlLnRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0YXJnZXRUeXBlLnR5cGUgPT09ICdjdXN0b20nID8gdC5uYW1lIDogdGFyZ2V0VHlwZS50eXBlID09PSAnY29udGV4dHRyZWUnID8gKHRhcmdldFR5cGUubmFtZSB8IHRyYW5zbGF0ZSA6IHtmb2xkZXI6IHQuc3ViRm9sZGVyLm5hbWV9KSA6IHRhcmdldFR5cGUudHlwZSA9PT0gJ2NvbnRleHQnID8gKHRhcmdldFR5cGUubmFtZSB8IHRyYW5zbGF0ZSA6IHtjb250ZXh0OiB0LnJlZmVyZW5jZU9iamVjdC50eXBlLmxhYmVsfSkgOiAodGFyZ2V0VHlwZS5uYW1lIHwgdHJhbnNsYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRhcmdldFR5cGUudHlwZSA9PT0gJ2N1c3RvbScgfHwgdGFyZ2V0VHlwZS50eXBlID09PSAnb2JqZWN0JyB8fCB0YXJnZXRUeXBlLnR5cGUgPT09ICdjb250ZXh0JyA/IHQuZGVzY3JpcHRpb24gOiAodGFyZ2V0VHlwZS5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHM6IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSB1cGxvYWQgdG8gZmF2b3JpdGUgLS0+XG4gICAgICBAaWYgKGZvbGRlckZhdm9yaXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uIFtzZWxlY3RlZF09XCJmYXZvcml0ZXNBY2NTZWxlY3RlZFwiIFtoZWFkZXJdPVwiJ2VvLnVwbG9hZC5nbG9iYWwuY29udGV4dC5mYXZvcml0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0Q2hhbmdlKT1cIm9uRmF2b3JpdGVUb2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXJnZXRzXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhcmdldC1saXN0XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgICBAZm9yICh0IG9mIHZhbGlkVXBsb2FkVGFyZ2V0czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGlmICh0LnR5cGUgPT09ICdmYXZvcml0ZScpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtdGFyZ2V0XCIgdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwicHJvY2VlZFdpdGhVcGxvYWQodClcIiAoY2xpY2spPVwicHJvY2VlZFdpdGhVcGxvYWQodClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvbklkXT1cInQuaWNvbklkXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtdGFyZ2V0LWZhdm9yaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7dC50aXRsZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7dC5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZihsYXN0T3BlbmVkRm9sZGVyLmxlbmd0aCA+IDApe1xuICAgICAgICA8ZW8tc2ltcGxlLWFjY29yZGlvbiBbc2VsZWN0ZWRdPVwiYWdlbnRBY2NTZWxlY3RlZFwiIFtoZWFkZXJdPVwiJ2VvLnVwbG9hZC5nbG9iYWwuY29udGV4dC5hZ2VudCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0Q2hhbmdlKT1cIm9uQWdlbnRUb2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgIDwhLS0gdXBsb2FkIHRvIGxhc3Qgb3BlbmVkIGZvbGRlciAgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhcmdldHNcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFyZ2V0LWxpc3RcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgIEBmb3IgKHQgb2YgdmFsaWRVcGxvYWRUYXJnZXRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHQudHlwZSA9PT0gJ2FnZW50Jykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC10YXJnZXRcIiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcm9jZWVkV2l0aFVwbG9hZCh0KVwiIChjbGljayk9XCJwcm9jZWVkV2l0aFVwbG9hZCh0KVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uSWRdPVwidC5pY29uSWRcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC10YXJnZXQtYWdlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t0Py50aXRsZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7dD8uZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9lby1zaW1wbGUtYWNjb3JkaW9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDwhLS0gbGlzdCBvZiBmaWxlcyBkcmFnZ2VkIHRvIHRoZSBjb21wb25lbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZpbGVzXCIgW25nQ2xhc3NdPVwie2ZpbGU6IHF1ZXVlLmxlbmd0aCwgaW52YWxpZDogaW52YWxpZElucHV0LCB1cGxvYWRpbmc6IGlzVXBsb2FkaW5nfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICAgICAgQGZvciAoaSBvZiBxdWV1ZTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3tpLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCI+PHNwYW4gY2xhc3M9XCJzaXplXCI+e3tpLnNpemUgfCBmaWxlU2l6ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjLXRleHRcIj4mbmJzcDt7e2kudHlwZX19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gd2hpdGVcIiAoY2xpY2spPVwicmVtb3ZlRmlsZUl0ZW0oaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBAaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cbiAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ2xhcmdlJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN1cGxvYWRUYXJnZXRUZW1wbGF0ZSBsZXQtaWNvblNyYz1cImljb25TcmNcIiBsZXQtdGFyZ2V0Q2xhc3M9XCJ0YXJnZXRDbGFzc1wiIGxldC1uYW1lPVwibmFtZVwiXG4gIGxldC1kZXNjcmlwdGlvbj1cImRlc2NyaXB0aW9uXCIgbGV0LXRhcmdldHM9XCJ0YXJnZXRzXCI+XG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWQtdGFyZ2V0XCIgdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwicHJvY2VlZFdpdGhVcGxvYWQodGFyZ2V0cylcIiAoY2xpY2spPVwicHJvY2VlZFdpdGhVcGxvYWQodGFyZ2V0cylcIj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiaWNvblNyY1wiPjwvZW8taWNvbj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwidGFyZ2V0Q2xhc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57eyBuYW1lIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IGRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFHTCxVQUFVLEVBRVYsWUFBWSxFQUNaLGNBQWMsRUFFZCxLQUFLLEVBRUwsZ0JBQWdCLEVBR2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBZSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLHNCQUFzQjtJQThEakMsWUFBb0IsTUFBYyxFQUN4QixRQUFtQixFQUNuQixjQUE4QixFQUM5QixTQUEyQixFQUMzQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixjQUFtQyxFQUNuQyxjQUFxQztRQVQzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdB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QUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FBQyxLQUFnQjtRQUN4QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxLQUFxQjtRQUM5QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0YsQ0FBQzs4R0FwaEJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLCtKQ3hCbkMsbStOQStKQTs7MkZEdklhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUI7aVZBTVAsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvZiBhcyBvYnNlcnZhYmxlT2YsIGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgT2JqZWN0VHlwZSxcbiAgRXZlbnRTZXJ2aWNlLFxuICBFbmFpb0V2ZW50LFxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gIFVwbG9hZFRhcmdldCxcbiAgVXBsb2FkRmlsZUl0ZW0sXG4gIFByZXBhcmVTZXJ2aWNlLFxuICBVdGlscyxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgRW52aXJvbm1lbnRFbmFpbywgU3lzdGVtU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIExvY2FsU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QWdlbnRTZXJ2aWNlLCBMb2NhbGVEYXRlUGlwZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby11cGxvYWQtb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkT3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdvdmVybGF5Jykgb3ZlcmxheUVsOiBFbGVtZW50UmVmO1xuXG4gIHF1ZXVlOiBVcGxvYWRGaWxlSXRlbVtdID0gW107XG4gIGZpbGVPdmVyOiBib29sZWFuO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaGFzVmFsaWRVcGxvYWRUYXJnZXRzOiBib29sZWFuO1xuICBpbnZhbGlkSW5wdXQ6IGJvb2xlYW47XG4gIHF1ZXVlU2l6ZTogbnVtYmVyO1xuICB2YWxpZFVwbG9hZFRhcmdldHM6IFVwbG9hZFRhcmdldFtdID0gW107XG4gIHNlbGVjdGVkVXBsb2FkVGFyZ2V0OiBVcGxvYWRUYXJnZXQ7XG4gIGZvbGRlckZhdm9yaXRlczogVXBsb2FkVGFyZ2V0W10gPSBbXTtcbiAgbGFzdE9wZW5lZEZvbGRlcjogVXBsb2FkVGFyZ2V0W10gPSBbXTtcbiAgZGF0ZVBpcGU6IExvY2FsZURhdGVQaXBlO1xuICBhZ2VudEFjY1NlbGVjdGVkOiBib29sZWFuO1xuICBmYXZvcml0ZXNBY2NTZWxlY3RlZDogYm9vbGVhbjtcblxuICB0YXJnZXRUeXBlcyA9IFtcbiAgICB7XG4gICAgICB0eXBlOiAncm9vdCcsXG4gICAgICBpY29uU3JjOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jcmVhdGVfZG9jdW1lbnQuc3ZnJyxcbiAgICAgIHRhcmdldENsYXNzOiAndXBsb2FkLXRhcmdldC1nZW5lcmFsJyxcbiAgICAgIG5hbWU6ICdlby51cGxvYWQuZ2xvYmFsLnJvb3QudGl0bGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdlby51cGxvYWQuZ2xvYmFsLnJvb3QuZGVzY3JpcHRpb24nXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIGljb25TcmM6ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2RvY3VtZW50X2ZpbGUuc3ZnJyxcbiAgICAgIHRhcmdldENsYXNzOiAndXBsb2FkLXRhcmdldC1yZXBsYWNlJyxcbiAgICAgIG5hbWU6ICdlby51cGxvYWQuZ2xvYmFsLm9iamVjdC50aXRsZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdjb250ZXh0JyxcbiAgICAgIGljb25TcmM6ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NyZWF0ZV9kb2N1bWVudF9pbl9mb2xkZXIuc3ZnJyxcbiAgICAgIHRhcmdldENsYXNzOiAndXBsb2FkLXRhcmdldC1jb250ZXh0JyxcbiAgICAgIG5hbWU6ICdlby51cGxvYWQuZ2xvYmFsLmNvbnRleHQudGl0bGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2NvbnRleHR0cmVlJyxcbiAgICAgIGljb25TcmM6ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NyZWF0ZV9kb2N1bWVudF9pbl9mb2xkZXIuc3ZnJyxcbiAgICAgIHRhcmdldENsYXNzOiAndXBsb2FkLXRhcmdldC1jb250ZXh0dHJlZScsXG4gICAgICBuYW1lOiAnZW8uYWRkLnRpdGxlLmxvY2F0aW9uLnN1YmZvbGRlcidcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgaWNvblNyYzogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdXBsb2FkLnN2ZycsXG4gICAgICB0YXJnZXRDbGFzczogJ3VwbG9hZC10YXJnZXQtY3VzdG9tJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgIH1cbiAgXTtcblxuICBwcml2YXRlIHVwbG9hZFRhcmdldHM6IFVwbG9hZFRhcmdldFtdID0gW107XG4gIHByaXZhdGUgZHJhZ0xlYXZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuICBwcml2YXRlIGRyb3BMaXN0ZW5lcjogRnVuY3Rpb247XG4gIHByaXZhdGUgZHJhZ092ZXJMaXN0ZW5lcjogRnVuY3Rpb247XG4gIHByaXZhdGUgZXNjS2V5TGlzdGVuZXI6IEZ1bmN0aW9uO1xuICBwcml2YXRlIGRyYWdFbnRlckxpc3RlbmVyOiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBwYXN0ZUxpc3RlbmVyOiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBkcmFnRXZlbnRDb3VudCA9IDA7XG4gIHByaXZhdGUgY2FjaGVLZXkgPSAnYWNjb3JkaW9uLnN0YXRlLS0nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHVwbG9hZFJlZ2lzdHJ5OiBVcGxvYWRSZWdpc3RyeVNlcnZpY2UpIHtcbiAgICB0aGlzLmRhdGVQaXBlID0gbmV3IExvY2FsZURhdGVQaXBlKHRyYW5zbGF0ZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdFbnRlckxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmRyYWdFbnRlckxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2NlZWQgdXBsb2FkIHdpdGggYSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxuICAgKiBAcGFyYW0gdXBsb2FkVGFyZ2V0IC0gdGhlIHRhcmdldCB0byB1cGxvYWQgZmlsZXMgdG9cbiAgICovXG4gIHB1YmxpYyBwcm9jZWVkV2l0aFVwbG9hZCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCk6IHZvaWQge1xuXG4gICAgaWYgKHVwbG9hZFRhcmdldC50eXBlICE9PSBVcGxvYWRUYXJnZXQuQ1VTVE9NICYmIHRoaXMucXVldWUubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRm9yIG1vcmUgdGhhbiBvbmUgZmlsZSB0byBiZSB1cGxvYWRlZCB0byBhIG5vbmUgY3VzdG9tIHRhcmdldCwgd2UgbGV0IHRoZSB1c2VyIGRlY2lkZSBpZlxuICAgICAgLy8gYmF0Y2ggdXBsb2FkIHNob3VsZCBiZSB1c2VkIG9yIG5vdCAuLi5cblxuXG4gICAgICB0aGlzLnNlbGVjdGVkVXBsb2FkVGFyZ2V0ID0gdXBsb2FkVGFyZ2V0O1xuICAgIH0gZWxzZSBpZiAodXBsb2FkVGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5PQkpFQ1QpIHtcbiAgICAgIC8vIC4uLiBvdGhlcndpc2UgdXBsb2FkIGlzIHN0YXJ0ZWQgaW1tZWRpYXRlbHlcbiAgICAgIHRoaXMuc3RhcnRVcGxvYWQodXBsb2FkVGFyZ2V0LCBbbnVsbCwgdGhpcy5nZXRTdGF0ZVJvdXRlKCldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQsIFtudWxsLCAnL3ByZXBhcmUnXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2NlZWQgdXBsb2FkIHVzaW5nIHRoZSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxuICAgKiBAcGFyYW0gdXNlQmF0Y2hVcGxvYWQgLSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXNlIGJhdGNoIHVwbG9hZFxuICAgKi9cbiAgcHVibGljIHByb2NlZWRXaXRoU2VsZWN0ZWRUYXJnZXQodXNlQmF0Y2hVcGxvYWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VXBsb2FkKHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQsIFt1c2VCYXRjaFVwbG9hZCwgJy9wcmVwYXJlJ10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgc2VsZWN0ZWQgdXBsb2FkIHRhcmdldC5cbiAgICovXG4gIHB1YmxpYyByZXNldFNlbGVjdGVkVXBsb2FkVGFyZ2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBmaWxlIGZyb20gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gYmUgdXBsb2FkZWQuXG4gICAqIEBwYXJhbSBmaWxlSXRlbSAtIHRoZSBmaWxlIGl0ZW0gdG8gYmUgcmVtb3ZlZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbGVJdGVtKGZpbGVJdGVtOiBVcGxvYWRGaWxlSXRlbSk6IHZvaWQge1xuXG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuZmlsdGVyKChmKSA9PiBmLmlkICE9PSBmaWxlSXRlbS5pZCk7XG4gICAgaWYgKCF0aGlzLnF1ZXVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGUgYXZhaWxhYmxlIHVwbG9hZCB0YXJnZXRzIGJlY2F1c2UgdGhlaXIgdmFsaWRpdHlcbiAgICAgIC8vIG1heSBiZSBiYXNlZCBvbiB0aGUgcXVldWUgc2l6ZVxuICAgICAgdGhpcy52YWxpZGF0ZVVwbG9hZFRhcmdldHMoKTtcbiAgICAgIHRoaXMuc2V0UXVldWVTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGVSb3V0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci51cmw7XG4gIH1cblxuICBvbkFnZW50VG9nZ2xlKGluZm86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy5jYWNoZUtleSArICdhZ2VudC1mb2xkZXInLCBKU09OLnN0cmluZ2lmeShpbmZvKSk7XG4gIH1cblxuICBvbkZhdm9yaXRlVG9nZ2xlKGluZm86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy5jYWNoZUtleSArICdmYXZvcml0ZS1mb2xkZXInLCBKU09OLnN0cmluZ2lmeShpbmZvKSk7XG4gIH1cblxuICBnZXRGb2xkZXIoKTogdm9pZCB7XG4gICAgLy9mb2xkZXIgZnJvbSBhZ2VudFxuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmdldExhc3RPcGVuZWRGb2xkZXJzSW5mbygpLnN1YnNjcmliZSgocmVzOiBbXSk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5sYXN0T3BlbmVkRm9sZGVyID0gcmVzLm1hcCgoaXRlbToge3RpdGxlOiBzdHJpbmc7IGRhdGE6IHtkZXNjcmlwdGlvbjogc3RyaW5nfTsgaWQ6IHN0cmluZzsgdHlwZTogc3RyaW5nfSkgPT4ge1xuICAgICAgICBsZXQgdGFyZ2V0ID0gbmV3IFVwbG9hZFRhcmdldChcbiAgICAgICAgICBpdGVtLmlkLFxuICAgICAgICAgICdhZ2VudCcsXG4gICAgICAgICAgaXRlbT8udGl0bGUsXG4gICAgICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoaXRlbS50eXBlKS5pY29uSWQsXG4gICAgICAgICAgaXRlbS50eXBlXG4gICAgICAgICk7XG4gICAgICAgIHRhcmdldC5kZXNjcmlwdGlvbiA9IGl0ZW0/LmRhdGE/LmRlc2NyaXB0aW9uO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxhc3RPcGVuZWRGb2xkZXIuZm9yRWFjaCh0YXJnZXQgPT4gdGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3ByZXBhcmUnXSkpO1xuICAgIH0pO1xuXG4gICAgLy8gRm9sZGVyIGZyb20gZmF2b3JpdGVcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldEZhdm9yaXRlcygpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBjb25zdCBmYXZvcml0ZXNGaWx0ZXJlZCA9IHJlcy5maWx0ZXIoKGl0ZW06IHt0YXJnZXQ6IHtmb2xkZXI6IGJvb2xlYW59fSkgPT4gaXRlbS50YXJnZXQuZm9sZGVyID09PSB0cnVlKTtcbiAgICAgIHRoaXMuZm9sZGVyRmF2b3JpdGVzID0gZmF2b3JpdGVzRmlsdGVyZWQubWFwKGl0ZW0gPT4ge1xuICAgICAgICBsZXQgdGFyZ2V0ID0gbmV3IFVwbG9hZFRhcmdldChcbiAgICAgICAgICBpdGVtLnRhcmdldC5pZCxcbiAgICAgICAgICAnZmF2b3JpdGUnLFxuICAgICAgICAgIGl0ZW0udGl0bGUsXG4gICAgICAgICAgaXRlbS50YXJnZXQuaWNvbi5pZCxcbiAgICAgICAgICBpdGVtLnRhcmdldC50eXBlLFxuICAgICAgICApO1xuICAgICAgICB0YXJnZXQuZGVzY3JpcHRpb24gPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShpdGVtLmNyZWF0ZWQpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZvbGRlckZhdm9yaXRlcy5mb3JFYWNoKHRhcmdldCA9PiB0YXJnZXQub25VcGxvYWRTdWNjZXNzID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJlcGFyZSddKSk7XG4gICAgfSk7XG4gIH1cblxuICBjYXRjaEZvY3VzKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vdmVybGF5RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdGFiaW5kZXg9XCIwXCJdJykuZm9jdXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSB1cGxvYWQgb3ZlcmxheSBhbmQgcmVsZWFzZSBhbGwgYm91bmQgcmVzb3VyY2VzLlxuICAgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgLy8gdW5iaW5kIGJvdW5kIGV2ZW50IGxpc3RlbmVyLCB3aGVuIHRoZXkgYXJlIG5vdCBuZWVkZWQgYW55bW9yZVxuICAgIHRoaXMudW5iaW5kTGlzdGVuZXJzKCk7XG4gICAgLy8gY2xlYXIgdXBsb2FkIHF1ZXVlXG4gICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgIC8vIGhpZGUgdGhlIG92ZXJsYXlcbiAgICB0aGlzLnNldEZpbGVPdmVyKGZhbHNlKTtcbiAgICB0aGlzLmludmFsaWRJbnB1dCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuXG4gICAgLy8gZ2xvYmFsIGRyYWcmZHJvcCB1cGxvYWQgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBvbiBkZXNrdG9wICh3ZWIgb3IgZWxlY3Ryb24pXG4gICAgaWYgKEVudmlyb25tZW50RW5haW8uaXNNb2JpbGVFbnZpcm9ubWVudCgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gc3Vic2NyaWJlIGZvciB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIHVwbG9hZCB0YXJnZXRzXG4gICAgdGhpcy51cGxvYWRSZWdpc3RyeS51cGxvYWRUYXJnZXRzJC5zdWJzY3JpYmUoKHVwbG9hZFRhcmdldHM6IFVwbG9hZFRhcmdldFtdKSA9PiB7XG4gICAgICB0aGlzLnVwbG9hZFRhcmdldHMgPSB1cGxvYWRUYXJnZXRzO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXN0ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3Bhc3RlJywgKGU6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLm9uUGFzdGUoZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRyYWdFbnRlckxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2RyYWdlbnRlcicsIChlOiBEcmFnRXZlbnQpID0+IHtcbiAgICAgIHRoaXMub25EcmFnRW50ZXIoZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uUGFzdGUoZTogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1VwbG9hZGluZykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmhhc1ZhbGlkVXBsb2FkVGFyZ2V0cyA9IHRydWU7XG4gICAgdGhpcy5pbnZhbGlkSW5wdXQgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMuZmlsZU92ZXIgJiYgdGhpcy5wYXN0ZUNvbnRhaW5zRmlsZXMoZSkpIHtcbiAgICAgIGxldCB0cmFuc2ZlciA9IGUuY2xpcGJvYXJkRGF0YTtcbiAgICAgIGlmICghdHJhbnNmZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayBmb3IgZGlyZWN0b3JpZXNcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJhbnNmZXIuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRyYW5zZmVyLml0ZW1zW2ldLmtpbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmZSA9IHRyYW5zZmVyLml0ZW1zW2ldLndlYmtpdEdldEFzRW50cnkoKTtcbiAgICAgICAgaWYgKGZlICYmIGZlLmlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmludmFsaWRJbnB1dCkge1xuICAgICAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChlKTtcbiAgICAgICAgdGhpcy5zZXRGaWxlT3Zlcih0cnVlKTtcbiAgICAgICAgdGhpcy5vbkZpbGVzRHJvcHBlZChBcnJheS5mcm9tKHRyYW5zZmVyLmZpbGVzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkRyYWdFbnRlcihlOiBEcmFnRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1VwbG9hZGluZykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmhhc1ZhbGlkVXBsb2FkVGFyZ2V0cyA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmZpbGVPdmVyICYmIHRoaXMuZHJhZ0NvbnRhaW5zRmlsZXMoZSkpIHtcbiAgICAgIHRoaXMuZHJhZ0V2ZW50Q291bnQgPSAwO1xuICAgICAgdGhpcy5zZXRGaWxlT3Zlcih0cnVlKTtcblxuICAgICAgLy8gdXNlIHRpbWVvdXQgaGVyZSB0byBmb3JjZSBhbmd1bGFyIGRpZ2VzdCBjeWNsZSBiZWZvcmUgY29udGludWluZywgYmVjYXVzZSB3ZSBhcmUgYWNjZXNzaW5nIGRvbSBlbGVtZW50c1xuICAgICAgLy8gdGhhdCBhcmUgbm90IHRoZXJlICgqbmdJZikgdW50aWwgZmlsZU92ZXIgaXMgc2V0IHRvIHRydWUuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gdG9kbzogcmVwbGFjZSBieSByZW5kZXJlciBzb2x1dGlvbiB3aGVuIGF2YWlsYWJsZSAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTU2NzQpXG4gICAgICAgIHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgLy8gYmluZCBsYXRlIChvbmx5LCB3aGVuIG5lZWRlZCkgdG8gZHJhZ2xlYXZlIGV2ZW50IHRvIGF2b2lkIGhlYXZ5IHByb2Nlc3Npbmcgb24gZXZlcnkgZHJhZyBldmVudFxuICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5vdmVybGF5RWwubmF0aXZlRWxlbWVudCwgJ2RyYWdsZWF2ZScsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmRyYWdFdmVudENvdW50LS07XG4gICAgICAgICAgaWYgKHRoaXMuZHJhZ0V2ZW50Q291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZHJvcExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5vdmVybGF5RWwubmF0aXZlRWxlbWVudCwgJ2Ryb3AnLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgbGV0IHRyYW5zZmVyID0gdGhpcy5fZ2V0VHJhbnNmZXIoZXZ0KTtcbiAgICAgICAgICBpZiAoIXRyYW5zZmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3ByZXZlbnRBbmRTdG9wKGV2dCk7XG5cbiAgICAgICAgICAvLyBjaGVjayBmb3IgZGlyZWN0b3JpZXNcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zZmVyLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmZSA9IHRyYW5zZmVyLml0ZW1zW2ldLndlYmtpdEdldEFzRW50cnkoKTtcbiAgICAgICAgICAgIGlmIChmZSAmJiBmZS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgICAgICB0aGlzLmludmFsaWRJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdGhpcy5pbnZhbGlkSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMub25GaWxlc0Ryb3BwZWQodHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5vdmVybGF5RWwubmF0aXZlRWxlbWVudCwgJ2RyYWdvdmVyJywgKGV2dCkgPT4ge1xuICAgICAgICAgIGxldCB0cmFuc2ZlciA9IHRoaXMuX2dldFRyYW5zZmVyKGV2dCk7XG4gICAgICAgICAgaWYgKCF0cmFuc2Zlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0cmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgIHRoaXMuX3ByZXZlbnRBbmRTdG9wKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHJhZ0V2ZW50Q291bnQrKztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmFuc2ZlcihldmVudDogYW55KTogYW55IHtcbiAgICByZXR1cm4gZXZlbnQuZGF0YVRyYW5zZmVyID8gZXZlbnQuZGF0YVRyYW5zZmVyIDogZXZlbnQub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXI7IC8vIGpRdWVyeSBmaXg7XG4gIH1cblxuICBwcml2YXRlIF9wcmV2ZW50QW5kU3RvcChldmVudDogYW55KTogYW55IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVzRHJvcHBlZChmaWxlSXRlbXM6IEZpbGVbXSkge1xuICAgIHRoaXMuZ2V0Rm9sZGVyKCk7XG4gICAgdGhpcy5nZXRDYWNoZWRBY2NvcmRpb25TdGF0ZSgpO1xuICAgIHRoaXMuY2F0Y2hGb2N1cygpO1xuXG4gICAgLy8gY2xlYXIgcXVldWUgd2hlbiBuZXcgZmlsZXMgYXJlIGFkZGVkXG4gICAgLy8gdG9kbzogcmVtb3ZlIGluIGZ1dHVyZSByZWxlYXNlcyB0byBzdXBwb3J0IGNvbGxlY3RpdmUgZmlsZSBhZGRpbmdcbiAgICB0aGlzLnF1ZXVlID0gW107XG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlSXRlbXMpIHtcbiAgICAgIHRoaXMucXVldWUucHVzaChuZXcgVXBsb2FkRmlsZUl0ZW0oZmlsZSkpO1xuICAgIH1cblxuICAgIC8vIGJpbmQgRVNDIGtleSBsaXN0ZW5lciBmb3IgY2xvc2luZyB0aGUgZGlhbG9nIGFzIGxhdGUgYXMgcG9zc2libGVcbiAgICBpZiAoIXRoaXMuZXNjS2V5TGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZXNjS2V5TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAna2V5dXAnLCAoZSkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAyNykge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGNhbGN1bGF0ZSB0b3RhbCBzaXplIG9mIHF1ZXVlXG4gICAgdGhpcy5zZXRRdWV1ZVNpemUoKTtcbiAgICAvLyBmaWx0ZXIgYXZhaWxhYmxlIHRhcmdldHNcbiAgICB0aGlzLnZhbGlkYXRlVXBsb2FkVGFyZ2V0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBsaXN0IG9mIHJlZ2lzdGVyZWQgdXBsb2FkIHRhcmdldHMsIHNvIG9ubHkgdmFsaWQgdGFyZ2V0cyB3aWxsIGJlIHNob3duLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVVwbG9hZFRhcmdldHMoKSB7XG4gICAgdGhpcy5oYXNWYWxpZFVwbG9hZFRhcmdldHMgPSB0cnVlO1xuICAgIG9ic2VydmFibGVGb3JrSm9pbih0aGlzLnVwbG9hZFRhcmdldHMubWFwKHQgPT4gdGhpcy52YWxpZGF0ZVVwbG9hZFRhcmdldCh0KSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiB7dGFyZ2V0OiBVcGxvYWRUYXJnZXQ7IHZhbGlkOiBib29sZWFufVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZFVwbG9hZFRhcmdldHMgPSByZXMuZmlsdGVyKHIgPT4gci52YWxpZCkubWFwKGZpbHRlcmVkID0+IGZpbHRlcmVkLnRhcmdldCkucmV2ZXJzZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhLnR5cGUgPT09ICdjb250ZXh0JyA/IC0xIDogYi50eXBlID09PSAnY29udGV4dCcgPyAxIDogMDsgLy8gQ29udGV4dCBzaG91bGQgYmUgb24gdG9wXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy52YWxpZFVwbG9hZFRhcmdldHMgPSBbLi4udGhpcy52YWxpZFVwbG9hZFRhcmdldHMsIC4uLnRoaXMuZm9sZGVyRmF2b3JpdGVzLCAuLi50aGlzLmxhc3RPcGVuZWRGb2xkZXJdO1xuICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZFVwbG9hZFRhcmdldHMgPSBbXTtcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdGhpcy52YWxpZFVwbG9hZFRhcmdldHMubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVVcGxvYWRUYXJnZXQodGFyZ2V0OiBVcGxvYWRUYXJnZXQpOiBPYnNlcnZhYmxlPHt0YXJnZXQ6IFVwbG9hZFRhcmdldDsgdmFsaWQ6IGJvb2xlYW59PiB7XG5cbiAgICBpZiAoIXRoaXMucXVldWUpIHtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlT2Yoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XG4gICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcblxuICAgICAgaWYgKHRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuUk9PVCkge1xuXG4gICAgICAgIC8vIHRvZG86IGFyZSB0aGVyZSBvdGhlciByZXN0cmljdGlvbnMgb24gcm9vdCB0YXJnZXQ/XG4gICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJlcGFyZUNoaWxkVHlwZXMobnVsbCwgdHJ1ZSlcbiAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHJlczoge3BhcmVudDogc3RyaW5nOyB0eXBlczogT2JqZWN0VHlwZVtdfSkgPT4ge1xuICAgICAgICAgICAgICB2YWxpZCA9IHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiByZXMudHlwZXMubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IGZhbHNlfSk7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0Lk9CSkVDVCkge1xuXG4gICAgICAgIC8vIHRvZG86IGNoZWNrIGlmIHRoZSByZWZlcmVuY2Ugb2JqZWN0IHN1cHBvcnRzIHRoZSBnaXZlbiBmaWxlIHR5cGVcbiAgICAgICAgdmFsaWQgPSB0YXJnZXQucmVmZXJlbmNlT2JqZWN0ICYmXG4gICAgICAgICAgdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC50eXBlLm1heEZpbGVzID4gMCAmJlxuICAgICAgICAgICF0YXJnZXQucmVmZXJlbmNlT2JqZWN0LmxvY2sgJiZcbiAgICAgICAgICAhdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5pc0ZpbmFsaXplZCAmJlxuICAgICAgICAgICh0YXJnZXQucmVmZXJlbmNlT2JqZWN0LnJpZ2h0cyAmJiB0YXJnZXQucmVmZXJlbmNlT2JqZWN0LnJpZ2h0cy5lZGl0KSAmJlxuICAgICAgICAgIHRoaXMucXVldWUubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5kYXRhLnl1dnNpZ3N0YXR1cyAhPT0gJ3NpZ25lZCcgJiZcbiAgICAgICAgICB0YXJnZXQucmVmZXJlbmNlT2JqZWN0LmRhdGEueXV2c2lnc3RhdHVzICE9PSAnaW5wcm9jZXNzJztcbiAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XG4gICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5DT05URVhUIHx8IHRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVF9UUkVFKSB7XG5cbiAgICAgICAgLy8gdG9kbzogYWRkIGNoZWNrcyByZWxhdGVkIHRvIHRoZSByZWZlcmVuY2Ugb2JqZWN0IChlLmcuIGFsbG93ZWQgZmlsZSB0eXBlcylcbiAgICAgICAgdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmVwYXJlQ2hpbGRUeXBlcyh0YXJnZXQucmVmZXJlbmNlT2JqZWN0LmlkLCB0cnVlKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzOiB7cGFyZW50OiBzdHJpbmc7IHR5cGVzOiBPYmplY3RUeXBlW119KSA9PiB7XG4gICAgICAgICAgICAgIHZhbGlkID0gdGFyZ2V0LnJlZmVyZW5jZU9iamVjdCAmJiB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgcmVzLnR5cGVzLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgICAgLy8gZm9yIENPTlRFWFRfVFJFRSB0YXJnZXRzIGFsc28gY2hlY2sgaWYgdGhlIGRlc2lyZWQgbm9kZVxuICAgICAgICAgICAgICAvLyB0eXBlIGlzIHBhcnQgb2YgdGhlIHByZXBhcmUgY2hpbGQgdHlwZXNcbiAgICAgICAgICAgICAgaWYgKHRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVF9UUkVFICYmIHRhcmdldC5zdWJGb2xkZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJGb2xkZXIgPSB0YXJnZXQuc3ViRm9sZGVyO1xuICAgICAgICAgICAgICAgIHZhbGlkID0gISFyZXMudHlwZXMuZmluZCh0ID0+IHRoaXMuc3lzdGVtU2VydmljZS5pbXBsZW1lbnRzVHlwZSh0LCBzdWJGb2xkZXIuZGF0YS50eXBlKSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogdmFsaWR9KTtcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogZmFsc2V9KTtcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogZmFsc2V9KTtcbiAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWNoZWRBY2NvcmRpb25TdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFnZW50QWNjU2VsZWN0ZWQgPSBKU09OLnBhcnNlKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmNhY2hlS2V5ICsgJ2FnZW50LWZvbGRlcicpKTtcbiAgICB0aGlzLmZhdm9yaXRlc0FjY1NlbGVjdGVkID0gSlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUtleSArICdmYXZvcml0ZS1mb2xkZXInKSk7XG4gIH1cblxuICBwcml2YXRlIHN1Y2Nlc3NmdWxVcGxvYWQodGFyZ2V0LCB1cGxvYWRUYXJnZXQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCB1cGxvYWRUYXJnZXQucmVmZXJlbmNlT2JqZWN0KTtcbiAgICB1cGxvYWRUYXJnZXQub25VcGxvYWRTdWNjZXNzKHRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdGhlIGFjdHVhbCB1cGxvYWQuXG4gICAqIEBwYXJhbSB1cGxvYWRUYXJnZXQgLSB0YXJnZXQgdG8gdXBsb2FkIHRoZSBmaWxlcyB0b1xuICAgKiBAcGFyYW0gdXNlQmF0Y2hVcGxvYWQgLSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXNlIGJhdGNoIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBzdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCwgWy4uLmFyZ3NdKTogdm9pZCB7XG5cbiAgICBjb25zdCBbdXNlQmF0Y2hVcGxvYWQsIHRhcmdldF0gPSBhcmdzO1xuXG4gICAgdGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy51bmJpbmRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAudXBsb2FkVG9UYXJnZXQodXBsb2FkVGFyZ2V0LCB0aGlzLnF1ZXVlLCB1c2VCYXRjaFVwbG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh1cGxvYWRUYXJnZXQuc3ViRm9sZGVyICYmIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS5kYXRhKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgbGV0IG9icyA9IFtdO1xuICAgICAgICAgICAgcmVzLmZvckVhY2gociA9PiB7XG4gICAgICAgICAgICAgIG9icy5wdXNoKHRoaXMucHJlcGFyZVNlcnZpY2UudXBkYXRlUHJlcGFyZWRJdGVtSW5kZXhEYXRhKHIuaWQsIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS5kYXRhKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG9ic2VydmFibGVGb3JrSm9pbihvYnMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN1Y2Nlc3NmdWxVcGxvYWQodGFyZ2V0LCB1cGxvYWRUYXJnZXQpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgICAgICAgICAudXBkYXRlUHJlcGFyZWRJdGVtSW5kZXhEYXRhKHJlcy5pZCwgdXBsb2FkVGFyZ2V0LnN1YkZvbGRlci5kYXRhLmRhdGEpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdWNjZXNzZnVsVXBsb2FkKHRhcmdldCwgdXBsb2FkVGFyZ2V0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bFVwbG9hZCh0YXJnZXQsIHVwbG9hZFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xuICAgICAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHVwbG9hZFRhcmdldC5vblVwbG9hZEZhaWwoKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJykpXG4gICAgICApO1xuICAgIHRoaXMucmVzZXRTZWxlY3RlZFVwbG9hZFRhcmdldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRRdWV1ZVNpemUoKTogdm9pZCB7XG4gICAgbGV0IHMgPSAwO1xuICAgIGZvciAobGV0IGYgb2YgdGhpcy5xdWV1ZSkge1xuICAgICAgcyArPSBmLnNpemU7XG4gICAgfVxuICAgIHRoaXMucXVldWVTaXplID0gcztcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmlsZU92ZXIodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVPdmVyID0gdmFsdWU7XG4gICAgdGhpcy51cGxvYWRSZWdpc3RyeS5zZXRPdmVybGF5QWN0aXZlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5iaW5kTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKCk7XG4gICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHJhZ092ZXJMaXN0ZW5lcikge1xuICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKCk7XG4gICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5kcm9wTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZHJvcExpc3RlbmVyKCk7XG4gICAgICB0aGlzLmRyb3BMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY0tleUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmVzY0tleUxpc3RlbmVyKCk7XG4gICAgICB0aGlzLmVzY0tleUxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IGRyYWcgZXZlbnQgY29udGFpbnMgb25lIG9yIG1vcmUgZmlsZXMuXG4gICAqIEBwYXJhbSBldmVudCAtIHRoZSBkcmFnIGV2ZW50IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgbnVtYmVyIG9mIGZpbGVzXG4gICAqL1xuICBwcml2YXRlIGRyYWdDb250YWluc0ZpbGVzKGV2ZW50OiBEcmFnRXZlbnQpOiBudW1iZXIge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcyB8fCBbXSkuZmlsdGVyKGkgPT4gaS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFzdGUgZXZlbnQgY29udGFpbnMgb25lIG9yIG1vcmUgZmlsZXMuXG4gICAqIEBwYXJhbSBldmVudCAtIHRoZSBwYXN0ZSBldmVudCB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIG51bWJlciBvZiBmaWxlc1xuICAgKi9cbiAgcHJpdmF0ZSBwYXN0ZUNvbnRhaW5zRmlsZXMoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zIHx8IFtdKS5maWx0ZXIoaSA9PiBpLmtpbmQgPT09ICdmaWxlJykubGVuZ3RoO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwiZW8tdXBsb2FkLW92ZXJsYXlcIiAjb3ZlcmxheSBjbGFzcz1cImRhcmtcIiAqbmdJZj1cImZpbGVPdmVyXCIgdGFiaW5kZXg9XCIxXCJcbiAgW25nQ2xhc3NdPVwie2ZpbGU6IHF1ZXVlLmxlbmd0aCwgaW52YWxpZDogaW52YWxpZElucHV0LCB1cGxvYWRpbmc6IGlzVXBsb2FkaW5nfVwiPlxuXG4gIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHdoaXRlIGNsb3NlXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiIChjbGljayk9XCJjbG9zZSgpXCI+PC9lby1pY29uPlxuXG4gIDxkaXYgY2xhc3M9XCJjb3VudFwiPlxuICAgIDxkaXY+e3txdWV1ZS5sZW5ndGh9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxdWV1ZVNpemVcIj57e3F1ZXVlU2l6ZSB8IGZpbGVTaXplfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhlYWRsaW5lXCI+XG4gICAgPGgxIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLmhlYWRsaW5lPC9oMT5cbiAgPC9kaXY+XG4gIFxuICA8ZW8taWNvbiBjbGFzcz1cInVwbG9hZHlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY191cGxvYWQuc3ZnJ1wiPjwvZW8taWNvbj5cblxuICA8IS0tIGJhdGNoIHVwbG9hZCBkaWFsb2cgLS0+XG4gIDxkaXYgY2xhc3M9XCJiYXRjaC1kaWFsb2dcIiAqbmdJZj1cIiFpbnZhbGlkSW5wdXQgJiYgc2VsZWN0ZWRVcGxvYWRUYXJnZXQgJiYgIWlzVXBsb2FkaW5nXCI+XG5cbiAgICA8aDIgdHJhbnNsYXRlPmVvLnVwbG9hZC5nbG9iYWwuY2hvb3NlLnRpdGxlPC9oMj5cbiAgICA8cCB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5jaG9vc2UubWVzc2FnZTwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVzZXRTZWxlY3RlZFVwbG9hZFRhcmdldCgpXCIgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9jZWVkV2l0aFNlbGVjdGVkVGFyZ2V0KGZhbHNlKVwiIGNsYXNzPVwicHJpbWFyeVwiXG4gICAgICAgIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLmNob29zZS5zaW5nbGU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cInByb2NlZWRXaXRoU2VsZWN0ZWRUYXJnZXQodHJ1ZSlcIiBjbGFzcz1cInByaW1hcnlcIiB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5jaG9vc2UubXVsdGk8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBpbnZhbGlkIGlucHV0IGRpYWxvZyAtLT5cbiAgPGRpdiBjbGFzcz1cImJhdGNoLWRpYWxvZ1wiICpuZ0lmPVwiaGFzVmFsaWRVcGxvYWRUYXJnZXRzICYmIGludmFsaWRJbnB1dFwiPlxuXG4gICAgPGgyIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLmludmFsaWQudGl0bGU8L2gyPlxuICAgIDxwIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLmludmFsaWQubWVzc2FnZTwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLmNsb3NlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gbm8gdXBsb2FkIHRhcmdldHMgYXZhaWxhYmxlIC0tPlxuICA8ZGl2IGNsYXNzPVwiYmF0Y2gtZGlhbG9nXCIgKm5nSWY9XCIhaGFzVmFsaWRVcGxvYWRUYXJnZXRzXCI+XG5cbiAgICA8aDIgdHJhbnNsYXRlPmVvLnVwbG9hZC5nbG9iYWwubm90YXJnZXQudGl0bGU8L2gyPlxuICAgIDxwIHRyYW5zbGF0ZT5lby51cGxvYWQuZ2xvYmFsLm5vdGFyZ2V0Lm1lc3NhZ2U8L3A+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiB0cmFuc2xhdGU+ZW8udXBsb2FkLmdsb2JhbC5jbG9zZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiAqbmdJZj1cImhhc1ZhbGlkVXBsb2FkVGFyZ2V0cyAmJiAhaW52YWxpZElucHV0ICYmICFzZWxlY3RlZFVwbG9hZFRhcmdldCAmJiAhaXNVcGxvYWRpbmdcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8IS0tIGxpc3Qgb2YgYXZhaWxhYmxlIHVwbG9hZCB0YXJnZXRzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRhcmdldHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhcmdldC1saXN0XCI+XG4gICAgICAgICAgQGZvciAodGFyZ2V0VHlwZSBvZiB0YXJnZXRUeXBlczsgdHJhY2sgdGFyZ2V0VHlwZS50eXBlKSB7XG4gICAgICAgICAgICBAZm9yICh0IG9mIHZhbGlkVXBsb2FkVGFyZ2V0czsgdHJhY2sgdC5pZCkge1xuICAgICAgICAgICAgICBAaWYgKHQudHlwZSA9PT0gdGFyZ2V0VHlwZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZFRhcmdldFRlbXBsYXRlOyBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TcmM6IHRhcmdldFR5cGUuaWNvblNyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q2xhc3M6IHRhcmdldFR5cGUudGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRhcmdldFR5cGUudHlwZSA9PT0gJ2N1c3RvbScgPyB0Lm5hbWUgOiB0YXJnZXRUeXBlLnR5cGUgPT09ICdjb250ZXh0dHJlZScgPyAodGFyZ2V0VHlwZS5uYW1lIHwgdHJhbnNsYXRlIDoge2ZvbGRlcjogdC5zdWJGb2xkZXIubmFtZX0pIDogdGFyZ2V0VHlwZS50eXBlID09PSAnY29udGV4dCcgPyAodGFyZ2V0VHlwZS5uYW1lIHwgdHJhbnNsYXRlIDoge2NvbnRleHQ6IHQucmVmZXJlbmNlT2JqZWN0LnR5cGUubGFiZWx9KSA6ICh0YXJnZXRUeXBlLm5hbWUgfCB0cmFuc2xhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGFyZ2V0VHlwZS50eXBlID09PSAnY3VzdG9tJyB8fCB0YXJnZXRUeXBlLnR5cGUgPT09ICdvYmplY3QnIHx8IHRhcmdldFR5cGUudHlwZSA9PT0gJ2NvbnRleHQnID8gdC5kZXNjcmlwdGlvbiA6ICh0YXJnZXRUeXBlLmRlc2NyaXB0aW9uIHwgdHJhbnNsYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0czogdFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHVwbG9hZCB0byBmYXZvcml0ZSAtLT5cbiAgICAgIEBpZiAoZm9sZGVyRmF2b3JpdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPGVvLXNpbXBsZS1hY2NvcmRpb24gW3NlbGVjdGVkXT1cImZhdm9yaXRlc0FjY1NlbGVjdGVkXCIgW2hlYWRlcl09XCInZW8udXBsb2FkLmdsb2JhbC5jb250ZXh0LmZhdm9yaXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RDaGFuZ2UpPVwib25GYXZvcml0ZVRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhcmdldHNcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFyZ2V0LWxpc3RcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgIEBmb3IgKHQgb2YgdmFsaWRVcGxvYWRUYXJnZXRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHQudHlwZSA9PT0gJ2Zhdm9yaXRlJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC10YXJnZXRcIiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcm9jZWVkV2l0aFVwbG9hZCh0KVwiIChjbGljayk9XCJwcm9jZWVkV2l0aFVwbG9hZCh0KVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uSWRdPVwidC5pY29uSWRcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC10YXJnZXQtZmF2b3JpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t0LnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3t0LmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmKGxhc3RPcGVuZWRGb2xkZXIubGVuZ3RoID4gMCl7XG4gICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uIFtzZWxlY3RlZF09XCJhZ2VudEFjY1NlbGVjdGVkXCIgW2hlYWRlcl09XCInZW8udXBsb2FkLmdsb2JhbC5jb250ZXh0LmFnZW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RDaGFuZ2UpPVwib25BZ2VudFRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPCEtLSB1cGxvYWQgdG8gbGFzdCBvcGVuZWQgZm9sZGVyICAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFyZ2V0c1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXJnZXQtbGlzdFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgQGZvciAodCBvZiB2YWxpZFVwbG9hZFRhcmdldHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBpZiAodC50eXBlID09PSAnYWdlbnQnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXRhcmdldFwiIHRhYmluZGV4PVwiMFwiIChrZXlkb3duLmVudGVyKT1cInByb2NlZWRXaXRoVXBsb2FkKHQpXCIgKGNsaWNrKT1cInByb2NlZWRXaXRoVXBsb2FkKHQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25JZF09XCJ0Lmljb25JZFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXRhcmdldC1hZ2VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e3Q/LnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3t0Py5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPCEtLSBsaXN0IG9mIGZpbGVzIGRyYWdnZWQgdG8gdGhlIGNvbXBvbmVudCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZXNcIiBbbmdDbGFzc109XCJ7ZmlsZTogcXVldWUubGVuZ3RoLCBpbnZhbGlkOiBpbnZhbGlkSW5wdXQsIHVwbG9hZGluZzogaXNVcGxvYWRpbmd9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICAgICAgICBAZm9yIChpIG9mIHF1ZXVlOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e2kubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj48c3BhbiBjbGFzcz1cInNpemVcIj57e2kuc2l6ZSB8IGZpbGVTaXplfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2MtdGV4dFwiPiZuYnNwO3t7aS50eXBlfX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiB3aGl0ZVwiIChjbGljayk9XCJyZW1vdmVGaWxlSXRlbShpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIEBpZiAoaXNVcGxvYWRpbmcpIHtcbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZ1wiPlxuICAgICAgPGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInbGFyZ2UnXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZFRhcmdldFRlbXBsYXRlIGxldC1pY29uU3JjPVwiaWNvblNyY1wiIGxldC10YXJnZXRDbGFzcz1cInRhcmdldENsYXNzXCIgbGV0LW5hbWU9XCJuYW1lXCJcbiAgbGV0LWRlc2NyaXB0aW9uPVwiZGVzY3JpcHRpb25cIiBsZXQtdGFyZ2V0cz1cInRhcmdldHNcIj5cbiAgPGRpdiBjbGFzcz1cInVwbG9hZC10YXJnZXRcIiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJwcm9jZWVkV2l0aFVwbG9hZCh0YXJnZXRzKVwiIChjbGljayk9XCJwcm9jZWVkV2l0aFVwbG9hZCh0YXJnZXRzKVwiPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8ZW8taWNvbiBbaWNvblNyY109XCJpY29uU3JjXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBbbmdDbGFzc109XCJ0YXJnZXRDbGFzc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=