@elderbyte/ngx-starter 18.13.0-beta.0 → 18.13.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +7 -0
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +3 -3
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +3 -3
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +3 -3
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +3 -3
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -5
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +3 -3
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +3 -3
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +3 -3
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +2 -2
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +6 -6
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
- package/fesm2022/elderbyte-ngx-starter.mjs +52 -52
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/components/badge/elder-badge/elder-badge.component.scss +2 -2
- package/src/lib/components/button-group/elder-button-group/elder-button-group.component.scss +3 -3
- package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +9 -25
- package/src/lib/components/cards/elder-card/elder-card.component.scss +7 -8
- package/src/lib/components/chips/_elder-chip-theme.scss +3 -3
- package/src/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.scss +1 -1
- package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +3 -6
- package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +8 -10
- package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -2
- package/src/lib/components/expand-toggle-button/elder-expand-toggle-button.component.scss +1 -1
- package/src/lib/components/files/blob-viewer/elder-blob-viewer.component.scss +4 -10
- package/src/lib/components/graph/elder-progress-bar/elder-progress-bar.component.scss +0 -1
- package/src/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.scss +2 -0
- package/src/lib/components/navigation/nav/_elder-nav-theme.scss +8 -4
- package/src/lib/components/navigation/nav/nav-group/elder-nav-group.component.scss +1 -1
- package/src/lib/components/navigation/nav/nav-link/elder-nav-link.component.scss +4 -4
- package/src/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.scss +2 -2
- package/src/lib/components/panels/card-panel/elder-card-panel.component.scss +2 -2
- package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +3 -3
- package/src/lib/components/panels/flat/_elder-panel-theme.scss +8 -41
- package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +2 -3
- package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +1 -2
- package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +2 -2
- package/src/lib/components/shell/shell/elder-shell.component.scss +8 -0
- package/src/lib/components/toasts/standard-toast/standard-toast.component.scss +31 -2
- package/theming/_elder-badge-sizing.scss +21 -0
- package/theming/_elder-color-helpers.scss +74 -0
- package/theming/_elder-common.scss +15 -3
- package/theming/_elder-design-token-overwrites.scss +33 -0
- package/theming/_elder-flex-layout.scss +0 -11
- package/theming/_elder-layout-system.scss +225 -0
- package/theming/_elder-m3-theme.scss +208 -4
- package/theming/_elder-scrollbar-theme.scss +1 -1
- package/theming/_elder-style-fixes.scss +214 -20
- package/theming/_mixins.scss +0 -1
|
@@ -240,7 +240,7 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
|
|
|
240
240
|
provide: ELDER_DATA_VIEW,
|
|
241
241
|
useExisting: forwardRef(() => ElderTableComponent),
|
|
242
242
|
},
|
|
243
|
-
], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<
|
|
243
|
+
], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"legacy-layout-card full\"\n [class.embedded]=\"embedded\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n @for (toolbarRowTemplate of toolbarRowTemplates$ | async; track toolbarRowTemplate) {\n <ng-template\n *ngTemplateOutlet=\"toolbarRowTemplate; context: { $implicit: this }\"\n ></ng-template>\n }\n\n <!-- Scrollable Table -->\n <div\n class=\"layout-col {{\n isDataValid(dataContext?.data | async) ? 'flex' : ''\n }} scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\"\n #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"\n (dataSelection.selectionState$ | async).anySelected\n \"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (tableModel.displayedColumnsInner$ | async; as displayedColumnsInner) {\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr\n mat-row\n class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"\n interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\n \"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n ></tr>\n @if (showFooter) {\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n }\n }\n </table>\n </div>\n\n @if (!isDataValid(dataContext?.data | async)) {\n <elder-data-context-state-indicator class=\"flex\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n }\n\n <mat-progress-bar\n class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(dataContext?.status | async)?.hasError ? 'warn' : 'primary'\"\n >\n </mat-progress-bar>\n\n @if (isActivePaged) {\n @if (dataActivePaged.page | async; as page) {\n <!-- Optional Paginator Toolbar -->\n <mat-paginator\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\"\n >\n </mat-paginator>\n }\n }\n\n <!-- Optional Continuation Footer -->\n @if (isContinuable) {\n <div class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{ (dataContext?.data | async)?.length }} / {{ total$ | async }}\n </span>\n\n <button\n mat-icon-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\"\n >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n }\n </div>\n</div>\n", styles: [".elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:var(--elder-border-radius-sm);overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;-webkit-transition:opacity .5s ease-in-out;-moz-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "directive", type: MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "component", type: MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
244
244
|
}
|
|
245
245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderTableComponent, decorators: [{
|
|
246
246
|
type: Component,
|
|
@@ -280,7 +280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
280
280
|
MatIconButton,
|
|
281
281
|
MatIcon,
|
|
282
282
|
AsyncPipe,
|
|
283
|
-
], template: "<
|
|
283
|
+
], template: "<div\n class=\"legacy-layout-card full\"\n [class.embedded]=\"embedded\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n @for (toolbarRowTemplate of toolbarRowTemplates$ | async; track toolbarRowTemplate) {\n <ng-template\n *ngTemplateOutlet=\"toolbarRowTemplate; context: { $implicit: this }\"\n ></ng-template>\n }\n\n <!-- Scrollable Table -->\n <div\n class=\"layout-col {{\n isDataValid(dataContext?.data | async) ? 'flex' : ''\n }} scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\"\n #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"\n (dataSelection.selectionState$ | async).anySelected\n \"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (tableModel.displayedColumnsInner$ | async; as displayedColumnsInner) {\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr\n mat-row\n class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"\n interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\n \"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n ></tr>\n @if (showFooter) {\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n }\n }\n </table>\n </div>\n\n @if (!isDataValid(dataContext?.data | async)) {\n <elder-data-context-state-indicator class=\"flex\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n }\n\n <mat-progress-bar\n class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(dataContext?.status | async)?.hasError ? 'warn' : 'primary'\"\n >\n </mat-progress-bar>\n\n @if (isActivePaged) {\n @if (dataActivePaged.page | async; as page) {\n <!-- Optional Paginator Toolbar -->\n <mat-paginator\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\"\n >\n </mat-paginator>\n }\n }\n\n <!-- Optional Continuation Footer -->\n @if (isContinuable) {\n <div class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{ (dataContext?.data | async)?.length }} / {{ total$ | async }}\n </span>\n\n <button\n mat-icon-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\"\n >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n }\n </div>\n</div>\n", styles: [".elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:var(--elder-border-radius-sm);overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;-webkit-transition:opacity .5s ease-in-out;-moz-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"] }]
|
|
284
284
|
}], ctorParameters: () => [{ type: i1.ElderTableModel }, { type: i2.SelectionModel, decorators: [{
|
|
285
285
|
type: Optional
|
|
286
286
|
}] }, { type: i3.ElderDataViewOptionsProvider, decorators: [{
|
|
@@ -335,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
335
335
|
}], selectionVisible: [{
|
|
336
336
|
type: Input
|
|
337
337
|
}] } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUVSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQTtBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFFMUQsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBQ1QsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsVUFBVSxFQUNWLE9BQU8sRUFDUCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLGVBQWUsRUFDZixZQUFZLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBRS9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUE7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFT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QUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQVVDLHVCQUF1QjtzQkFEN0IsZUFBZTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBVTFELFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQW1GekIsZUFBZTtzQkFEekIsS0FBSztnQkFNSyxJQUFJO3NCQURkLEtBQUs7Z0JBeUNLLGdCQUFnQjtzQkFEMUIsS0FBSztnQkFXSyxnQkFBZ0I7c0JBRDFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdFRhYmxlRGF0YUNvbnRleHRCaW5kaW5nQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9tYXQtdGFibGUtZGF0YS1jb250ZXh0LWJpbmRpbmcnXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InXG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCdcbmltcG9ydCB7XG4gIE1hdENvbHVtbkRlZixcbiAgTWF0Um93RGVmLFxuICBNYXRUYWJsZSxcbiAgTWF0SGVhZGVyQ2VsbERlZixcbiAgTWF0SGVhZGVyQ2VsbCxcbiAgTWF0Q2VsbERlZixcbiAgTWF0Q2VsbCxcbiAgTWF0Rm9vdGVyQ2VsbERlZixcbiAgTWF0Rm9vdGVyQ2VsbCxcbiAgTWF0SGVhZGVyUm93RGVmLFxuICBNYXRIZWFkZXJSb3csXG4gIE1hdFJvdyxcbiAgTWF0Rm9vdGVyUm93RGVmLFxuICBNYXRGb290ZXJSb3csXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJ1xuaW1wb3J0IHsgSURhdGFDb250ZXh0LCBpc0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCdcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IENka0NvbHVtbkRlZiwgQ2RrUm93RGVmLCBDZGtUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSdcbmltcG9ydCB7IERhdGFDb250ZXh0QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQtYnVpbGRlcidcbmltcG9ydCB7IEVMREVSX0RBVEFfVklFVyB9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3J1xuaW1wb3J0IHsgRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZSB9IGZyb20gJy4uL2VsZGVyLXRhYmxlLXJvdy5kaXJlY3RpdmUnXG5pbXBvcnQgeyBJRGF0YVNvdXJjZSwgaXNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YXNvdXJjZS9kYXRhLXNvdXJjZSdcbmltcG9ydCB7IEVsZGVyRGF0YVZpZXdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9lbGRlci1kYXRhLXZpZXctYmFzZSdcbmltcG9ydCB7IEVsZGVyVGFibGVNb2RlbCB9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsJ1xuaW1wb3J0IHsgRWxkZXJUYWJsZVByb3ZpZGVycyB9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsLXByb3ZpZGVyJ1xuaW1wb3J0IHsgUXVlcnlMaXN0QmluZGluZyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGlscy9xdWVyeS1saXN0LWJpbmRpbmcnXG5pbXBvcnQgeyBFbGRlclRhYmxlTW9kZWxDZGtUYWJsZUJpbmRpbmcgfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1jZGstdGFibGUtYmluZGluZydcbmltcG9ydCB7IEVsZGVyVGFibGVNb2RlbFF1ZXJ5R3JvdXAgfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1xdWVyeS1ncm91cCdcbmltcG9ydCB7IEVsZGVyVGFibGVFeHRlbnNpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9lbGRlci10YWJsZS1leHRlbnNpb24uZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRWxkZXJUYWJsZUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2VsZGVyLXRhYmxlLWNvbHVtbi5kaXJlY3RpdmUnXG5pbXBvcnQgeyBDb2x1bW5Qb3NpdGlvblNwZWMgfSBmcm9tICcuLi9tb2RlbC9lbGRlci1jb2x1bW4tbGF5b3V0J1xuaW1wb3J0IHsgRWxkZXJUYWJsZVRvb2xiYXJEaXJlY3RpdmUgfSBmcm9tICcuL2VsZGVyLXRhYmxlLXRvb2xiYXIuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlciB9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3LW9wdGlvbnMtcHJvdmlkZXInXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcidcbmltcG9ydCB7IERhdGFDb250ZXh0U3RhdGVJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvci9kYXRhLWNvbnRleHQtc3RhdGUtaW5kaWNhdG9yLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnXG5pbXBvcnQgeyBFbGRlclNlbGVjdGlvbk1hc3RlckNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94L2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3guY29tcG9uZW50J1xuaW1wb3J0IHsgRGF0YUNvbnRleHRTZWxlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9jb21tb24vc2VsZWN0aW9uL2RhdGEtY29udGV4dC1zZWxlY3Rpb24uZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2luZmluaXRlc2Nyb2xsL2VsZGVyLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUnXG5pbXBvcnQgeyBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTWF0Q2FyZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIEVsZGVyVGFibGVQcm92aWRlcnMuRXhpc3RpbmdPck5ld1RhYmxlTW9kZWwsXG4gICAge1xuICAgICAgcHJvdmlkZTogRUxERVJfREFUQV9WSUVXLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWxkZXJUYWJsZUNvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdENhcmQsXG4gICAgTmdGb3IsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIE1hdFRhYmxlLFxuICAgIERhdGFDb250ZXh0U2VsZWN0aW9uRGlyZWN0aXZlLFxuICAgIE1hdENvbHVtbkRlZixcbiAgICBNYXRIZWFkZXJDZWxsRGVmLFxuICAgIE1hdEhlYWRlckNlbGwsXG4gICAgRWxkZXJTZWxlY3Rpb25NYXN0ZXJDaGVja2JveENvbXBvbmVudCxcbiAgICBNYXRDZWxsRGVmLFxuICAgIE1hdENlbGwsXG4gICAgTWF0Q2hlY2tib3gsXG4gICAgTWF0Rm9vdGVyQ2VsbERlZixcbiAgICBNYXRGb290ZXJDZWxsLFxuICAgIE5nSWYsXG4gICAgTWF0SGVhZGVyUm93RGVmLFxuICAgIE1hdEhlYWRlclJvdyxcbiAgICBNYXRSb3dEZWYsXG4gICAgTWF0Um93LFxuICAgIEVsZGVyVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgTWF0Rm9vdGVyUm93RGVmLFxuICAgIE1hdEZvb3RlclJvdyxcbiAgICBEYXRhQ29udGV4dFN0YXRlSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIE1hdFByb2dyZXNzQmFyLFxuICAgIE1hdFBhZ2luYXRvcixcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIE1hdEljb24sXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclRhYmxlQ29tcG9uZW50XG4gIGV4dGVuZHMgRWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXRcbntcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgLyoqXG4gICAqIExvYWQgbmV4dCBjaHVuayBhZnRlciBjdXJyZW50IGlzIGRvbmVcbiAgICovXG4gIHByaXZhdGUgbG9hZE5leHRRdWV1ZWQgPSBmYWxzZVxuXG4gIC8vLyBUYWJsZVxuICBAVmlld0NoaWxkKE1hdFRhYmxlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbWF0VGFibGU6IENka1RhYmxlPGFueT5cblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcilcbiAgcHVibGljIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbWF0U29ydDogTWF0U29ydFxuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKVxuICBwdWJsaWMgY29sdW1uRGVmczogUXVlcnlMaXN0PENka0NvbHVtbkRlZj5cblxuICBAQ29udGVudENoaWxkcmVuKEVsZGVyVGFibGVDb2x1bW5EaXJlY3RpdmUpXG4gIHB1YmxpYyBlbGRlckNvbHVtbnM6IFF1ZXJ5TGlzdDxFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlPlxuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKVxuICBwdWJsaWMgcm93RGVmczogUXVlcnlMaXN0PENka1Jvd0RlZjxhbnk+PlxuXG4gIC8qKlxuICAgKiBGaWVsZCB0byBpZGVudGlmeSB0aGUgZGF0YSByZWNvcmRzIChJRCBmaWVsZCkuXG4gICAqIE5vdGU6IFRoaXMgcHJvcGVydHkgaXMgb25seSBjb25zaWRlcmVkIGluIGNhc2UgdGhlXG4gICAqIHVuZGVybHlpbmcgZGF0YSBpcyBhbiBBcnJheS5cbiAgICogSW4gY2FzZSBvZiBEYXRhQ29udGV4dCwgdGhlIElEIGZpZWxkIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIGNvbnRleHQuXG4gICAqIEluIGNhc2Ugb2YgRGF0YVNvdXJjZSwgdGhlIElEIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgcGlja2VkIGZyb20gdGhlIERhdGFTb3VyY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRGaWVsZDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBmaWVsZCBpcyBwcmVzZW50IGFuZCB0cnVlLFxuICAgKiB0aGUgY29yZXNwb25kaW5nIHJvdyBpcyBtYXJrZWQgdG8gYmUgaW4gdGhlIHByb2Nlc3NlZCBvZiBiZWluZyByZW1vdmVkLlxuICAgKlxuICAgKiBJLmUuICdyZW1vdmluZydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1vdmluZ0ZpZWxkOiBzdHJpbmcgPSBudWxsXG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBmaWVsZCBpcyBwcmVzZW50IGFuZCB0cnVlLFxuICAgKiB0aGUgY29ycmVzcG9uZGluZyByb3cgaXMgaGlkZGVuLlxuICAgKlxuICAgKiBJLmUuICdkZWxldGVkJ1xuICAgKlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGRlbkZpZWxkOiBzdHJpbmcgPSBudWxsXG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VTaXplT3B0aW9ucyA9IFszMCwgNTAsIDEwMCwgMTUwLCAyMDBdXG5cbiAgQElucHV0KClcbiAgcHVibGljIGtlZXBTZWxlY3Rpb24gPSB0cnVlXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dGb290ZXIgPSBmYWxzZVxuXG4gIHB1YmxpYyBjYW5Mb2FkTW9yZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgcHVibGljIHRvdGFsJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0b29sYmFyXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEVsZGVyVGFibGVUb29sYmFyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHB1YmxpYyB0b29sYmFyUm93VGVtcGxhdGVRdWVyeTogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+XG4gIHB1YmxpYyByZWFkb25seSB0b29sYmFyUm93VGVtcGxhdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55PltdPihbXSlcblxuICAvKipcbiAgICogU2VsZWN0aW9uIG1vZGVsIGxpZmUgY3ljbGVcbiAgICovXG4gIHByaXZhdGUgc2VsZWN0aW9uTGlmZUN5Y2xlOiBTdWJzY3JpcHRpb25cblxuICBAVmlld0NoaWxkcmVuKEVsZGVyVGFibGVSb3dEaXJlY3RpdmUpXG4gIHByaXZhdGUgcm93c1F1ZXJ5OiBRdWVyeUxpc3Q8RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxhbnk+PlxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHJvd3Mgb2YgdGhpcyB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3dzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxhbnk+W10+KFtdKVxuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhpcyB0YWJsZSBncm91cCBleHRlbnNpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbkdyb3VwSW5kZXg6IG51bWJlclxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0YWJsZU1vZGVsOiBFbGRlclRhYmxlTW9kZWwsXG4gICAgQE9wdGlvbmFsKCkgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgZGF0YVZpZXdPcHRpb25zUHJvdmlkZXI6IEVsZGVyRGF0YVZpZXdPcHRpb25zUHJvdmlkZXIsXG4gICAgQE9wdGlvbmFsKCkgbWF0U29ydDogTWF0U29ydCxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IHBhcmVudEV4dGVuc2lvbjogRWxkZXJUYWJsZUV4dGVuc2lvbkRpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoc2VsZWN0aW9uTW9kZWwsIGRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyKVxuICAgIHRoaXMuX21hdFNvcnQgPSBtYXRTb3J0XG4gICAgdGhpcy5fZXh0ZW5zaW9uR3JvdXBJbmRleCA9IChwYXJlbnRFeHRlbnNpb24/LmV4dGVuc2lvbkdyb3VwSW5kZXggPz8gMCkgKyAxXG4gICAgaWYgKHRoaXMuX21hdFNvcnQpIHtcbiAgICAgIHRoaXMuX21hdFNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpXG5cbiAgICBFbGRlclRhYmxlTW9kZWxDZGtUYWJsZUJpbmRpbmcub2YodGhpcy50YWJsZU1vZGVsKS50YWJsZSh0aGlzLm1hdFRhYmxlKS5iaW5kVW50aWwodGhpcy5kZXN0cm95JClcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgRWxkZXJUYWJsZU1vZGVsUXVlcnlHcm91cC5zdGFydCh0aGlzLnRhYmxlTW9kZWwsIHRoaXMuX2V4dGVuc2lvbkdyb3VwSW5kZXgpXG4gICAgICAud2l0aENvbHVtbnNQb3NpdGlvbihDb2x1bW5Qb3NpdGlvblNwZWMucmVsYXRpdmVUb1ByZXZHcm91cCgnc3RhcnQnKSlcbiAgICAgIC53aXRoQ29sdW1uRGVmcyh0aGlzLmNvbHVtbkRlZnMsIHRoaXMuZWxkZXJDb2x1bW5zKVxuICAgICAgLndpdGhSb3dEZWZzKHRoaXMucm93RGVmcylcbiAgICAgIC53aXRoU29ydCh0aGlzLl9tYXRTb3J0KVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuXG4gICAgUXVlcnlMaXN0QmluZGluZy5vZih0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZVF1ZXJ5KVxuICAgICAgLnVwZGF0ZWQoKHRvb2xiYXJSb3dzKSA9PiB0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZXMkLm5leHQodG9vbGJhclJvd3MpKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBNYXRUYWJsZURhdGFDb250ZXh0QmluZGluZ0J1aWxkZXIuc3RhcnQodGhpcy5kYXRhQ29udGV4dCQpXG4gICAgICAud2l0aFNvcnRzKHRoaXMudGFibGVNb2RlbC5zb3J0cyQpXG4gICAgICAud2l0aFBhZ2luYXRvcihvZih0aGlzLm1hdFBhZ2luYXRvcikpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpXG5cbiAgICBRdWVyeUxpc3RCaW5kaW5nLm9mKHRoaXMucm93c1F1ZXJ5KVxuICAgICAgLnVwZGF0ZWQoKHJvd3MpID0+IHRoaXMucm93cyQubmV4dChyb3dzKSlcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0b29sYmFyVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZXMkLm5leHQoW3RlbXBsYXRlXSlcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YShkYXRhOiBBcnJheTxhbnk+IHwgSURhdGFTb3VyY2U8YW55PiB8IElEYXRhQ29udGV4dDxhbnk+KSB7XG4gICAgdGhpcy5hdXRvQ2xlYW5VcCgpXG5cbiAgICBsZXQgZGM6IElEYXRhQ29udGV4dDxhbnk+XG5cbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBkYyA9IERhdGFDb250ZXh0QnVpbGRlci5zdGFydCgpLmxvY2FsU29ydCgpLmJ1aWxkTG9jYWwoZGF0YSwgdGhpcy5pZEZpZWxkKSAvLyBQb3RlbnRpYWwgTWVtb3J5IGxlYWsgKFNlZSBhdXRvQ2xlYW5VcClcbiAgICAgIGRjLnN0YXJ0KClcbiAgICB9IGVsc2UgaWYgKGlzRGF0YVNvdXJjZShkYXRhKSkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKS5sb2NhbFNvcnQoKS5yZWxvYWRPbkxvY2FsQ2hhbmdlcygpLmJ1aWxkKGRhdGEpIC8vIFBvdGVudGlhbCBNZW1vcnkgbGVhayAoU2VlIGF1dG9DbGVhblVwKVxuICAgICAgZGMuc3RhcnQoKVxuICAgIH0gZWxzZSBpZiAoaXNEYXRhQ29udGV4dChkYXRhKSkge1xuICAgICAgZGMgPSBkYXRhXG4gICAgfSBlbHNlIGlmIChkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKS5idWlsZEVtcHR5KClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIGRhdGEgbXVzdCBlaXRoZXIgYmUgYW4gQXJyYXksIElEYXRhU291cmNlIG9yIElEYXRhQ29udGV4dCwgYnV0IHdhczogJyArIHR5cGVvZiBkYXRhXG4gICAgICApXG4gICAgfVxuICAgIHRoaXMuZGF0YUNvbnRleHQgPSBkY1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGF0YUNvbnRleHRTZXQoZGF0YTogSURhdGFDb250ZXh0PGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnRvdGFsJCA9IGRhdGEudG90YWwucGlwZShtYXAoKHRvdGFsKSA9PiAodG90YWwgPyB0b3RhbCArICcnIDogJ+KInicpKSlcblxuICAgIHRoaXMuc2V0dXBTZWxlY3Rpb25MaWZlQ3ljbGUoZGF0YSlcblxuICAgIC8vIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTsgLy8gVE9ETyBTdXBwb3J0IGNoYW5nZWFibGUgZGF0YS1jb250ZXh0IGZvciBzdGF0aWMgYXJyYXkgdXNlIGNhc2VcblxuICAgIGlmICh0aGlzLmlzQ29udGludWFibGUpIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gY29tYmluZUxhdGVzdChbZGF0YS5sb2FkaW5nLCB0aGlzLmRhdGFDb250aW51YWJsZS5oYXNNb3JlRGF0YV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2xvYWRpbmcsIGhhc01vcmVEYXRhXSkgPT4gIWxvYWRpbmcgJiYgaGFzTW9yZURhdGEpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gb2YoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5ZWRDb2x1bW5zKGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLmRpc3BsYXllZENvbHVtbnMgPSBkaXNwbGF5ZWRDb2x1bW5zXG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXllZENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwuZGlzcGxheWVkQ29sdW1uc1xuICB9XG5cbiAgLyoqIEluZGljYXRlcyBpZiBzZWxlY3Rpb24gY29sdW1uIGlzIHNob3duLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGlvblZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMudGFibGVNb2RlbC5zZWxlY3Rpb25WaXNpYmxlID0gdmlzaWJsZVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb25WaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwuc2VsZWN0aW9uVmlzaWJsZVxuICB9XG5cbiAgLypcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmVsZGVyVGFibGVBY3RpdmF0aW9uLmFjdGl2ZUl0ZW0kO1xuICB9Ki9cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgcmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQ6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhQ29udGludWFibGUuaGFzTW9yZURhdGFTbmFwc2hvdCkge1xuICAgICAgaWYgKHRoaXMuZGF0YUNvbnRpbnVhYmxlLnNuYXBzaG90LmlzTG9hZGluZykge1xuICAgICAgICB0aGlzLmxvYWROZXh0UXVldWVkID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhQ29udGludWFibGUubG9hZE1vcmUoKS5zdWJzY3JpYmUoKGxvYWRlZCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9hZE5leHRRdWV1ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlXG4gICAgICAgICAgICAgIHRoaXMucmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0cmFja0J5Rm4oKTogVHJhY2tCeUZ1bmN0aW9uPGFueT4ge1xuICAgIHJldHVybiAoaW5kZXg6IG51bWJlciwgZW50aXR5OiBhbnkpID0+IHRoaXMuZ2V0SWQoZW50aXR5KVxuICB9XG5cbiAgcHVibGljIGlzRGF0YVZhbGlkKGRhdGE6IGFueSkge1xuICAgIHJldHVybiBkYXRhPy5sZW5ndGggPiAwXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHNldHVwU2VsZWN0aW9uTGlmZUN5Y2xlKGRhdGE6IElEYXRhQ29udGV4dDxhbnk+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGlmZUN5Y2xlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZS51bnN1YnNjcmliZSgpIC8vIENsZWFuIHVwIHByZXZpb3VzIHN1YlxuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uTGlmZUN5Y2xlID0gZGF0YS5kYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKG5ld0RhdGEpID0+IHtcbiAgICAgIGlmICh0aGlzLmtlZXBTZWxlY3Rpb24pIHtcbiAgICAgICAgLy8gSWYga2VlcCBzZWxlY3Rpb24gZW5hYmxlZFxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSkge1xuICAgICAgICAgIC8vIENoZWNrIHRoYXQgYWxsIHNlbGVjdGVkIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VudCBvciByZW1vdmUgdGhlbVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldDxhbnk+KG5ld0RhdGEubWFwKChkKSA9PiB0aGlzLmdldElkKGQpKSlcblxuICAgICAgICAgIGNvbnN0IG5vTG9uZ2VyQXZhaWxhYmxlSWRzID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Rpb25TbmFwc2hvdFxuICAgICAgICAgICAgLm1hcCgoc2VsZWN0ZWQpID0+IHRoaXMuZ2V0SWQoc2VsZWN0ZWQpKVxuICAgICAgICAgICAgLmZpbHRlcigoc2VsZWN0ZWRJZCkgPT4gIWV4aXN0aW5nSWRzLmhhcyhzZWxlY3RlZElkKSlcblxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3RJZHMobm9Mb25nZXJBdmFpbGFibGVJZHMpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cbiIsIjxtYXQtY2FyZFxuICBjbGFzcz1cImZ1bGxcIlxuICBbY2xhc3MuZW1iZWRkZWRdPVwiZW1iZWRkZWRcIlxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCJcbj5cbiAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZWxkZXItdGFibGUgZnVsbFwiPlxuICAgIDwhLS0gVG9vbGJhciBSb3dzIC0tPlxuICAgIEBmb3IgKHRvb2xiYXJSb3dUZW1wbGF0ZSBvZiB0b29sYmFyUm93VGVtcGxhdGVzJCB8IGFzeW5jOyB0cmFjayB0b29sYmFyUm93VGVtcGxhdGUpIHtcbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJSb3dUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHRoaXMgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICB9XG5cbiAgICA8IS0tIFNjcm9sbGFibGUgVGFibGUgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsYXlvdXQtY29sIHt7XG4gICAgICAgIGlzRGF0YVZhbGlkKGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpID8gJ2ZsZXgnIDogJydcbiAgICAgIH19IHNjcm9sbGFibGUgZWxkZXItdGFibGUtc2Nyb2xsXCJcbiAgICAgIGVsZGVySW5maW5pdGVTY3JvbGxcbiAgICAgIFtldmVudFRocm90dGxlXT1cIjE1MFwiXG4gICAgICBbb2Zmc2V0RmFjdG9yXT1cIjJcIlxuICAgICAgW2lnbm9yZVNjcm9sbEV2ZW50XT1cIiFpc0NvbnRpbnVhYmxlIHx8ICEoY2FuTG9hZE1vcmUkIHwgYXN5bmMpXCJcbiAgICAgIChjbG9zZVRvRW5kKT1cInJlcXVlc3RNb3JlRGF0YVpvbmVkKCRldmVudClcIlxuICAgID5cbiAgICAgIDx0YWJsZVxuICAgICAgICBtYXQtdGFibGVcbiAgICAgICAgY2xhc3M9XCJlbGRlci1tYXQtaW5uZXItdGFibGVcIlxuICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5Rm5cIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCIkYW55KGRhdGFDb250ZXh0JCB8IGFzeW5jKVwiXG4gICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXT1cImRhdGFDb250ZXh0JCB8IGFzeW5jXCJcbiAgICAgICAgI2RhdGFTZWxlY3Rpb249XCJlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXCJcbiAgICAgICAgW2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25Nb2RlbF09XCJzZWxlY3Rpb25Nb2RlbFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gc2VsZWN0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgPGVsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+PC9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVudGl0eVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbk1vZGVsLnRvZ2dsZShlbnRpdHkpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uTW9kZWwub2JzZXJ2ZVNlbGVjdGlvbihlbnRpdHkpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RhYmxlKGVudGl0eSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItdGFibGUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci10YWJsZS1jaGVja2JveC12aXNpYmxlXT1cIlxuICAgICAgICAgICAgICAgICAgKGRhdGFTZWxlY3Rpb24uc2VsZWN0aW9uU3RhdGUkIHwgYXN5bmMpLmFueVNlbGVjdGVkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICBAaWYgKHRhYmxlTW9kZWwuZGlzcGxheWVkQ29sdW1uc0lubmVyJCB8IGFzeW5jOyBhcyBkaXNwbGF5ZWRDb2x1bW5zSW5uZXIpIHtcbiAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNJbm5lcjsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIG1hdC1yb3dcbiAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItdGFibGUtcm93XCJcbiAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgZW50aXR5OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zSW5uZXJcIlxuICAgICAgICAgICAgW2VsZGVyVGFibGVSb3ddPVwiZW50aXR5XCJcbiAgICAgICAgICAgIFtjbGFzcy5kZW5zZV09XCJkZW5zZVwiXG4gICAgICAgICAgICBbY2xhc3MuZWxkZXItcm93LWhpZGRlbl09XCJoaWRkZW5GaWVsZCAmJiBlbnRpdHlbaGlkZGVuRmllbGRdXCJcbiAgICAgICAgICAgIFtjbGFzcy5lbGRlci1yb3ctcmVtb3ZpbmddPVwicmVtb3ZpbmdGaWVsZCAmJiBlbnRpdHlbcmVtb3ZpbmdGaWVsZF1cIlxuICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXRhYmxlLXJvdy1zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Nb2RlID09PSAnc2VsZWN0aW9uJyAmJiBzZWxlY3Rpb25Nb2RlbC5vYnNlcnZlU2VsZWN0aW9uKGVudGl0eSkgfCBhc3luY1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhlbnRpdHkpXCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkl0ZW1Eb3VibGVDbGljayhlbnRpdHkpXCJcbiAgICAgICAgICA+PC90cj5cbiAgICAgICAgICBAaWYgKHNob3dGb290ZXIpIHtcbiAgICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc0lubmVyOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoIWlzRGF0YVZhbGlkKGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpKSB7XG4gICAgICA8ZWxkZXItZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvciBjbGFzcz1cImZsZXhcIiBbZGF0YUNvbnRleHRdPVwiZGF0YUNvbnRleHRcIj5cbiAgICAgIDwvZWxkZXItZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvcj5cbiAgICB9XG5cbiAgICA8bWF0LXByb2dyZXNzLWJhclxuICAgICAgY2xhc3M9XCJmbGV4LW5vbmVcIlxuICAgICAgW21vZGVdPVwiKGRhdGFDb250ZXh0Py5sb2FkaW5nIHwgYXN5bmMpID8gJ2luZGV0ZXJtaW5hdGUnIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICBbY29sb3JdPVwiKGRhdGFDb250ZXh0Py5zdGF0dXMgfCBhc3luYyk/Lmhhc0Vycm9yID8gJ3dhcm4nIDogJ3ByaW1hcnknXCJcbiAgICA+XG4gICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgQGlmIChpc0FjdGl2ZVBhZ2VkKSB7XG4gICAgICBAaWYgKGRhdGFBY3RpdmVQYWdlZC5wYWdlIHwgYXN5bmM7IGFzIHBhZ2UpIHtcbiAgICAgICAgPCEtLSBPcHRpb25hbCBQYWdpbmF0b3IgVG9vbGJhciAtLT5cbiAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgW2xlbmd0aF09XCJkYXRhQ29udGV4dD8udG90YWwgfCBhc3luY1wiXG4gICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlPy5pbmRleFwiXG4gICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2U/LnNpemVcIlxuICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1wYWdpbmF0b3I+XG4gICAgICB9XG4gICAgfVxuXG4gICAgPCEtLSBPcHRpb25hbCBDb250aW51YXRpb24gRm9vdGVyIC0tPlxuICAgIEBpZiAoaXNDb250aW51YWJsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgZmxleC1ub25lIHBsYWNlLWVuZC1jZW50ZXIgZ2FwLW1kIGVsZGVyLXRhYmxlLWZvb3RlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uIG5vc2VsZWN0XCIgc3R5bGU9XCJjb2xvcjogZ3JheVwiPlxuICAgICAgICAgIHt7IChkYXRhQ29udGV4dD8uZGF0YSB8IGFzeW5jKT8ubGVuZ3RoIH19IC8ge3sgdG90YWwkIHwgYXN5bmMgfX1cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkxvYWRNb3JlJCB8IGFzeW5jKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRhdGFDb250aW51YWJsZS5sb2FkTW9yZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9tYXQtY2FyZD5cbiJdfQ==
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUVSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQTtBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFFMUQsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBQ1QsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsVUFBVSxFQUNWLE9BQU8sRUFDUCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLGVBQWUsRUFDZixZQUFZLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBRS9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUE7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFT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QWE7c0JBRG5CLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFVQyx1QkFBdUI7c0JBRDdCLGVBQWU7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQVUxRCxTQUFTO3NCQURoQixZQUFZO3VCQUFDLHNCQUFzQjtnQkFtRnpCLGVBQWU7c0JBRHpCLEtBQUs7Z0JBTUssSUFBSTtzQkFEZCxLQUFLO2dCQXlDSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBV0ssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFDb250ZXh0QmluZGluZ0J1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvbWF0LXRhYmxlLWRhdGEtY29udGV4dC1iaW5kaW5nJ1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJ1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnXG5pbXBvcnQge1xuICBNYXRDb2x1bW5EZWYsXG4gIE1hdFJvd0RlZixcbiAgTWF0VGFibGUsXG4gIE1hdEhlYWRlckNlbGxEZWYsXG4gIE1hdEhlYWRlckNlbGwsXG4gIE1hdENlbGxEZWYsXG4gIE1hdENlbGwsXG4gIE1hdEZvb3RlckNlbGxEZWYsXG4gIE1hdEZvb3RlckNlbGwsXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0SGVhZGVyUm93LFxuICBNYXRSb3csXG4gIE1hdEZvb3RlclJvd0RlZixcbiAgTWF0Rm9vdGVyUm93LFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSdcbmltcG9ydCB7IElEYXRhQ29udGV4dCwgaXNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBDZGtDb2x1bW5EZWYsIENka1Jvd0RlZiwgQ2RrVGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnXG5pbXBvcnQgeyBEYXRhQ29udGV4dEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJ1aWxkZXInXG5pbXBvcnQgeyBFTERFUl9EQVRBX1ZJRVcgfSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldydcbmltcG9ydCB7IEVsZGVyVGFibGVSb3dEaXJlY3RpdmUgfSBmcm9tICcuLi9lbGRlci10YWJsZS1yb3cuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgSURhdGFTb3VyY2UsIGlzRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3LWJhc2UnXG5pbXBvcnQgeyBFbGRlclRhYmxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbCdcbmltcG9ydCB7IEVsZGVyVGFibGVQcm92aWRlcnMgfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1wcm92aWRlcidcbmltcG9ydCB7IFF1ZXJ5TGlzdEJpbmRpbmcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdXRpbHMvcXVlcnktbGlzdC1iaW5kaW5nJ1xuaW1wb3J0IHsgRWxkZXJUYWJsZU1vZGVsQ2RrVGFibGVCaW5kaW5nIH0gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwtY2RrLXRhYmxlLWJpbmRpbmcnXG5pbXBvcnQgeyBFbGRlclRhYmxlTW9kZWxRdWVyeUdyb3VwIH0gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwtcXVlcnktZ3JvdXAnXG5pbXBvcnQgeyBFbGRlclRhYmxlRXh0ZW5zaW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWxkZXItdGFibGUtZXh0ZW5zaW9uLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyVGFibGVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi9lbGRlci10YWJsZS1jb2x1bW4uZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQ29sdW1uUG9zaXRpb25TcGVjIH0gZnJvbSAnLi4vbW9kZWwvZWxkZXItY29sdW1uLWxheW91dCdcbmltcG9ydCB7IEVsZGVyVGFibGVUb29sYmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9lbGRlci10YWJsZS10b29sYmFyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyRGF0YVZpZXdPcHRpb25zUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldy1vcHRpb25zLXByb3ZpZGVyJ1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJ1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInXG5pbXBvcnQgeyBEYXRhQ29udGV4dFN0YXRlSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2RhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3IvZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvci5jb21wb25lbnQnXG5pbXBvcnQgeyBNYXRDaGVja2JveCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94J1xuaW1wb3J0IHsgRWxkZXJTZWxlY3Rpb25NYXN0ZXJDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZWxlY3Rpb24vZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94LmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGFDb250ZXh0U2VsZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9kYXRhLWNvbnRleHQtc2VsZWN0aW9uLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVySW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9pbmZpbml0ZXNjcm9sbC9lbGRlci1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE1hdENhcmQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBFbGRlclRhYmxlUHJvdmlkZXJzLkV4aXN0aW5nT3JOZXdUYWJsZU1vZGVsLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVMREVSX0RBVEFfVklFVyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyVGFibGVDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRDYXJkLFxuICAgIE5nRm9yLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSxcbiAgICBNYXRUYWJsZSxcbiAgICBEYXRhQ29udGV4dFNlbGVjdGlvbkRpcmVjdGl2ZSxcbiAgICBNYXRDb2x1bW5EZWYsXG4gICAgTWF0SGVhZGVyQ2VsbERlZixcbiAgICBNYXRIZWFkZXJDZWxsLFxuICAgIEVsZGVyU2VsZWN0aW9uTWFzdGVyQ2hlY2tib3hDb21wb25lbnQsXG4gICAgTWF0Q2VsbERlZixcbiAgICBNYXRDZWxsLFxuICAgIE1hdENoZWNrYm94LFxuICAgIE1hdEZvb3RlckNlbGxEZWYsXG4gICAgTWF0Rm9vdGVyQ2VsbCxcbiAgICBOZ0lmLFxuICAgIE1hdEhlYWRlclJvd0RlZixcbiAgICBNYXRIZWFkZXJSb3csXG4gICAgTWF0Um93RGVmLFxuICAgIE1hdFJvdyxcbiAgICBFbGRlclRhYmxlUm93RGlyZWN0aXZlLFxuICAgIE1hdEZvb3RlclJvd0RlZixcbiAgICBNYXRGb290ZXJSb3csXG4gICAgRGF0YUNvbnRleHRTdGF0ZUluZGljYXRvckNvbXBvbmVudCxcbiAgICBNYXRQcm9ncmVzc0JhcixcbiAgICBNYXRQYWdpbmF0b3IsXG4gICAgTWF0SWNvbkJ1dHRvbixcbiAgICBNYXRJY29uLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJUYWJsZUNvbXBvbmVudFxuICBleHRlbmRzIEVsZGVyRGF0YVZpZXdCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIC8qKlxuICAgKiBMb2FkIG5leHQgY2h1bmsgYWZ0ZXIgY3VycmVudCBpcyBkb25lXG4gICAqL1xuICBwcml2YXRlIGxvYWROZXh0UXVldWVkID0gZmFsc2VcblxuICAvLy8gVGFibGVcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG1hdFRhYmxlOiBDZGtUYWJsZTxhbnk+XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpXG4gIHB1YmxpYyBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvclxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21hdFNvcnQ6IE1hdFNvcnRcblxuICBAQ29udGVudENoaWxkcmVuKE1hdENvbHVtbkRlZilcbiAgcHVibGljIGNvbHVtbkRlZnM6IFF1ZXJ5TGlzdDxDZGtDb2x1bW5EZWY+XG5cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlKVxuICBwdWJsaWMgZWxkZXJDb2x1bW5zOiBRdWVyeUxpc3Q8RWxkZXJUYWJsZUNvbHVtbkRpcmVjdGl2ZT5cblxuICBAQ29udGVudENoaWxkcmVuKE1hdFJvd0RlZilcbiAgcHVibGljIHJvd0RlZnM6IFF1ZXJ5TGlzdDxDZGtSb3dEZWY8YW55Pj5cblxuICAvKipcbiAgICogRmllbGQgdG8gaWRlbnRpZnkgdGhlIGRhdGEgcmVjb3JkcyAoSUQgZmllbGQpLlxuICAgKiBOb3RlOiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgY29uc2lkZXJlZCBpbiBjYXNlIHRoZVxuICAgKiB1bmRlcmx5aW5nIGRhdGEgaXMgYW4gQXJyYXkuXG4gICAqIEluIGNhc2Ugb2YgRGF0YUNvbnRleHQsIHRoZSBJRCBmaWVsZCBuZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoZSBjb250ZXh0LlxuICAgKiBJbiBjYXNlIG9mIERhdGFTb3VyY2UsIHRoZSBJRCBmaWVsZCBpcyBhdXRvbWF0aWNhbGx5IHBpY2tlZCBmcm9tIHRoZSBEYXRhU291cmNlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkRmllbGQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZmllbGQgaXMgcHJlc2VudCBhbmQgdHJ1ZSxcbiAgICogdGhlIGNvcmVzcG9uZGluZyByb3cgaXMgbWFya2VkIHRvIGJlIGluIHRoZSBwcm9jZXNzZWQgb2YgYmVpbmcgcmVtb3ZlZC5cbiAgICpcbiAgICogSS5lLiAncmVtb3ZpbmcnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVtb3ZpbmdGaWVsZDogc3RyaW5nID0gbnVsbFxuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZmllbGQgaXMgcHJlc2VudCBhbmQgdHJ1ZSxcbiAgICogdGhlIGNvcnJlc3BvbmRpbmcgcm93IGlzIGhpZGRlbi5cbiAgICpcbiAgICogSS5lLiAnZGVsZXRlZCdcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5GaWVsZDogc3RyaW5nID0gbnVsbFxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnMgPSBbMzAsIDUwLCAxMDAsIDE1MCwgMjAwXVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZWVwU2VsZWN0aW9uID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93Rm9vdGVyID0gZmFsc2VcblxuICBwdWJsaWMgY2FuTG9hZE1vcmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIHB1YmxpYyB0b3RhbCQ6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUgdG9vbGJhclxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclRhYmxlVG9vbGJhckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgdG9vbGJhclJvd1RlbXBsYXRlUXVlcnk6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PlxuICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhclJvd1RlbXBsYXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT5bXT4oW10pXG5cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiBtb2RlbCBsaWZlIGN5Y2xlXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdGlvbkxpZmVDeWNsZTogU3Vic2NyaXB0aW9uXG5cbiAgQFZpZXdDaGlsZHJlbihFbGRlclRhYmxlUm93RGlyZWN0aXZlKVxuICBwcml2YXRlIHJvd3NRdWVyeTogUXVlcnlMaXN0PEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8YW55Pj5cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCByb3dzIG9mIHRoaXMgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm93cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8YW55PltdPihbXSlcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoaXMgdGFibGUgZ3JvdXAgZXh0ZW5zaW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHRlbnNpb25Hcm91cEluZGV4OiBudW1iZXJcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVNb2RlbDogRWxkZXJUYWJsZU1vZGVsLFxuICAgIEBPcHRpb25hbCgpIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxhbnk+LFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyOiBFbGRlckRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyLFxuICAgIEBPcHRpb25hbCgpIG1hdFNvcnQ6IE1hdFNvcnQsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRFeHRlbnNpb246IEVsZGVyVGFibGVFeHRlbnNpb25EaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICAgIHN1cGVyKHNlbGVjdGlvbk1vZGVsLCBkYXRhVmlld09wdGlvbnNQcm92aWRlcilcbiAgICB0aGlzLl9tYXRTb3J0ID0gbWF0U29ydFxuICAgIHRoaXMuX2V4dGVuc2lvbkdyb3VwSW5kZXggPSAocGFyZW50RXh0ZW5zaW9uPy5leHRlbnNpb25Hcm91cEluZGV4ID8/IDApICsgMVxuICAgIGlmICh0aGlzLl9tYXRTb3J0KSB7XG4gICAgICB0aGlzLl9tYXRTb3J0LmRpc2FibGVDbGVhciA9IHRydWVcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKVxuXG4gICAgRWxkZXJUYWJsZU1vZGVsQ2RrVGFibGVCaW5kaW5nLm9mKHRoaXMudGFibGVNb2RlbCkudGFibGUodGhpcy5tYXRUYWJsZSkuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpXG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIEVsZGVyVGFibGVNb2RlbFF1ZXJ5R3JvdXAuc3RhcnQodGhpcy50YWJsZU1vZGVsLCB0aGlzLl9leHRlbnNpb25Hcm91cEluZGV4KVxuICAgICAgLndpdGhDb2x1bW5zUG9zaXRpb24oQ29sdW1uUG9zaXRpb25TcGVjLnJlbGF0aXZlVG9QcmV2R3JvdXAoJ3N0YXJ0JykpXG4gICAgICAud2l0aENvbHVtbkRlZnModGhpcy5jb2x1bW5EZWZzLCB0aGlzLmVsZGVyQ29sdW1ucylcbiAgICAgIC53aXRoUm93RGVmcyh0aGlzLnJvd0RlZnMpXG4gICAgICAud2l0aFNvcnQodGhpcy5fbWF0U29ydClcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JClcblxuICAgIFF1ZXJ5TGlzdEJpbmRpbmcub2YodGhpcy50b29sYmFyUm93VGVtcGxhdGVRdWVyeSlcbiAgICAgIC51cGRhdGVkKCh0b29sYmFyUm93cykgPT4gdGhpcy50b29sYmFyUm93VGVtcGxhdGVzJC5uZXh0KHRvb2xiYXJSb3dzKSlcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JClcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgTWF0VGFibGVEYXRhQ29udGV4dEJpbmRpbmdCdWlsZGVyLnN0YXJ0KHRoaXMuZGF0YUNvbnRleHQkKVxuICAgICAgLndpdGhTb3J0cyh0aGlzLnRhYmxlTW9kZWwuc29ydHMkKVxuICAgICAgLndpdGhQYWdpbmF0b3Iob2YodGhpcy5tYXRQYWdpbmF0b3IpKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuXG4gICAgUXVlcnlMaXN0QmluZGluZy5vZih0aGlzLnJvd3NRdWVyeSlcbiAgICAgIC51cGRhdGVkKChyb3dzKSA9PiB0aGlzLnJvd3MkLm5leHQocm93cykpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9vbGJhclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy50b29sYmFyUm93VGVtcGxhdGVzJC5uZXh0KFt0ZW1wbGF0ZV0pXG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogQXJyYXk8YW55PiB8IElEYXRhU291cmNlPGFueT4gfCBJRGF0YUNvbnRleHQ8YW55Pikge1xuICAgIHRoaXMuYXV0b0NsZWFuVXAoKVxuXG4gICAgbGV0IGRjOiBJRGF0YUNvbnRleHQ8YW55PlxuXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKS5sb2NhbFNvcnQoKS5idWlsZExvY2FsKGRhdGEsIHRoaXMuaWRGaWVsZCkgLy8gUG90ZW50aWFsIE1lbW9yeSBsZWFrIChTZWUgYXV0b0NsZWFuVXApXG4gICAgICBkYy5zdGFydCgpXG4gICAgfSBlbHNlIGlmIChpc0RhdGFTb3VyY2UoZGF0YSkpIHtcbiAgICAgIGRjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0KCkubG9jYWxTb3J0KCkucmVsb2FkT25Mb2NhbENoYW5nZXMoKS5idWlsZChkYXRhKSAvLyBQb3RlbnRpYWwgTWVtb3J5IGxlYWsgKFNlZSBhdXRvQ2xlYW5VcClcbiAgICAgIGRjLnN0YXJ0KClcbiAgICB9IGVsc2UgaWYgKGlzRGF0YUNvbnRleHQoZGF0YSkpIHtcbiAgICAgIGRjID0gZGF0YVxuICAgIH0gZWxzZSBpZiAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0KCkuYnVpbGRFbXB0eSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSBkYXRhIG11c3QgZWl0aGVyIGJlIGFuIEFycmF5LCBJRGF0YVNvdXJjZSBvciBJRGF0YUNvbnRleHQsIGJ1dCB3YXM6ICcgKyB0eXBlb2YgZGF0YVxuICAgICAgKVxuICAgIH1cbiAgICB0aGlzLmRhdGFDb250ZXh0ID0gZGNcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRhdGFDb250ZXh0U2V0KGRhdGE6IElEYXRhQ29udGV4dDxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy50b3RhbCQgPSBkYXRhLnRvdGFsLnBpcGUobWFwKCh0b3RhbCkgPT4gKHRvdGFsID8gdG90YWwgKyAnJyA6ICfiiJ4nKSkpXG5cbiAgICB0aGlzLnNldHVwU2VsZWN0aW9uTGlmZUN5Y2xlKGRhdGEpXG5cbiAgICAvLyB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7IC8vIFRPRE8gU3VwcG9ydCBjaGFuZ2VhYmxlIGRhdGEtY29udGV4dCBmb3Igc3RhdGljIGFycmF5IHVzZSBjYXNlXG5cbiAgICBpZiAodGhpcy5pc0NvbnRpbnVhYmxlKSB7XG4gICAgICB0aGlzLmNhbkxvYWRNb3JlJCA9IGNvbWJpbmVMYXRlc3QoW2RhdGEubG9hZGluZywgdGhpcy5kYXRhQ29udGludWFibGUuaGFzTW9yZURhdGFdKS5waXBlKFxuICAgICAgICBtYXAoKFtsb2FkaW5nLCBoYXNNb3JlRGF0YV0pID0+ICFsb2FkaW5nICYmIGhhc01vcmVEYXRhKVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbkxvYWRNb3JlJCA9IG9mKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheWVkQ29sdW1ucyhkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zID0gZGlzcGxheWVkQ29sdW1uc1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5ZWRDb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmRpc3BsYXllZENvbHVtbnNcbiAgfVxuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgc2VsZWN0aW9uIGNvbHVtbiBpcyBzaG93bi4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3Rpb25WaXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRhYmxlTW9kZWwuc2VsZWN0aW9uVmlzaWJsZSA9IHZpc2libGVcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLnNlbGVjdGlvblZpc2libGVcbiAgfVxuXG4gIC8qXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGFjdGl2ZUl0ZW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5lbGRlclRhYmxlQWN0aXZhdGlvbi5hY3RpdmVJdGVtJDtcbiAgfSovXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHJlcXVlc3RNb3JlRGF0YVpvbmVkKGV2ZW50OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YUNvbnRpbnVhYmxlLmhhc01vcmVEYXRhU25hcHNob3QpIHtcbiAgICAgIGlmICh0aGlzLmRhdGFDb250aW51YWJsZS5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUNvbnRpbnVhYmxlLmxvYWRNb3JlKCkuc3Vic2NyaWJlKChsb2FkZWQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWROZXh0UXVldWVkKSB7XG4gICAgICAgICAgICAgIHRoaXMubG9hZE5leHRRdWV1ZWQgPSBmYWxzZVxuICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RNb3JlRGF0YVpvbmVkKGV2ZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZE5leHRRdWV1ZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gKGluZGV4OiBudW1iZXIsIGVudGl0eTogYW55KSA9PiB0aGlzLmdldElkKGVudGl0eSlcbiAgfVxuXG4gIHB1YmxpYyBpc0RhdGFWYWxpZChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gZGF0YT8ubGVuZ3RoID4gMFxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzZXR1cFNlbGVjdGlvbkxpZmVDeWNsZShkYXRhOiBJRGF0YUNvbnRleHQ8YW55Pik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaWZlQ3ljbGUudW5zdWJzY3JpYmUoKSAvLyBDbGVhbiB1cCBwcmV2aW91cyBzdWJcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZSA9IGRhdGEuZGF0YS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChuZXdEYXRhKSA9PiB7XG4gICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgIC8vIElmIGtlZXAgc2VsZWN0aW9uIGVuYWJsZWRcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwuaGFzVmFsdWUpIHtcbiAgICAgICAgICAvLyBDaGVjayB0aGF0IGFsbCBzZWxlY3RlZCB2YWx1ZXMgYXJlIHN0aWxsIHByZXNlbnQgb3IgcmVtb3ZlIHRoZW1cbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQ8YW55PihuZXdEYXRhLm1hcCgoZCkgPT4gdGhpcy5nZXRJZChkKSkpXG5cbiAgICAgICAgICBjb25zdCBub0xvbmdlckF2YWlsYWJsZUlkcyA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uU25hcHNob3RcbiAgICAgICAgICAgIC5tYXAoKHNlbGVjdGVkKSA9PiB0aGlzLmdldElkKHNlbGVjdGVkKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHNlbGVjdGVkSWQpID0+ICFleGlzdGluZ0lkcy5oYXMoc2VsZWN0ZWRJZCkpXG5cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0SWRzKG5vTG9uZ2VyQXZhaWxhYmxlSWRzKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibGVnYWN5LWxheW91dC1jYXJkIGZ1bGxcIlxuICBbY2xhc3MuZW1iZWRkZWRdPVwiZW1iZWRkZWRcIlxuICBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIlxuPlxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBlbGRlci10YWJsZSBmdWxsXCI+XG4gICAgPCEtLSBUb29sYmFyIFJvd3MgLS0+XG4gICAgQGZvciAodG9vbGJhclJvd1RlbXBsYXRlIG9mIHRvb2xiYXJSb3dUZW1wbGF0ZXMkIHwgYXN5bmM7IHRyYWNrIHRvb2xiYXJSb3dUZW1wbGF0ZSkge1xuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdGhpcyB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIH1cblxuICAgIDwhLS0gU2Nyb2xsYWJsZSBUYWJsZSAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxheW91dC1jb2wge3tcbiAgICAgICAgaXNEYXRhVmFsaWQoZGF0YUNvbnRleHQ/LmRhdGEgfCBhc3luYykgPyAnZmxleCcgOiAnJ1xuICAgICAgfX0gc2Nyb2xsYWJsZSBlbGRlci10YWJsZS1zY3JvbGxcIlxuICAgICAgZWxkZXJJbmZpbml0ZVNjcm9sbFxuICAgICAgW2V2ZW50VGhyb3R0bGVdPVwiMTUwXCJcbiAgICAgIFtvZmZzZXRGYWN0b3JdPVwiMlwiXG4gICAgICBbaWdub3JlU2Nyb2xsRXZlbnRdPVwiIWlzQ29udGludWFibGUgfHwgIShjYW5Mb2FkTW9yZSQgfCBhc3luYylcIlxuICAgICAgKGNsb3NlVG9FbmQpPVwicmVxdWVzdE1vcmVEYXRhWm9uZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPHRhYmxlXG4gICAgICAgIG1hdC10YWJsZVxuICAgICAgICBjbGFzcz1cImVsZGVyLW1hdC1pbm5lci10YWJsZVwiXG4gICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlGblwiXG4gICAgICAgIFtkYXRhU291cmNlXT1cIiRhbnkoZGF0YUNvbnRleHQkIHwgYXN5bmMpXCJcbiAgICAgICAgW2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25dPVwiZGF0YUNvbnRleHQkIHwgYXN5bmNcIlxuICAgICAgICAjZGF0YVNlbGVjdGlvbj1cImVsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25cIlxuICAgICAgICBbZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvbk1vZGVsXT1cInNlbGVjdGlvbk1vZGVsXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBzZWxlY3Rpb24gQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICA8ZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveD48L2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uTW9kZWwudG9nZ2xlKGVudGl0eSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Nb2RlbC5vYnNlcnZlU2VsZWN0aW9uKGVudGl0eSkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGFibGUoZW50aXR5KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlbGRlci10YWJsZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXRhYmxlLWNoZWNrYm94LXZpc2libGVdPVwiXG4gICAgICAgICAgICAgICAgICAoZGF0YVNlbGVjdGlvbi5zZWxlY3Rpb25TdGF0ZSQgfCBhc3luYykuYW55U2VsZWN0ZWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIEBpZiAodGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zSW5uZXIkIHwgYXN5bmM7IGFzIGRpc3BsYXllZENvbHVtbnNJbm5lcikge1xuICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc0lubmVyOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgbWF0LXJvd1xuICAgICAgICAgICAgY2xhc3M9XCJlbGRlci10YWJsZS1yb3dcIlxuICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCBlbnRpdHk7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNJbm5lclwiXG4gICAgICAgICAgICBbZWxkZXJUYWJsZVJvd109XCJlbnRpdHlcIlxuICAgICAgICAgICAgW2NsYXNzLmRlbnNlXT1cImRlbnNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5lbGRlci1yb3ctaGlkZGVuXT1cImhpZGRlbkZpZWxkICYmIGVudGl0eVtoaWRkZW5GaWVsZF1cIlxuICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXJvdy1yZW1vdmluZ109XCJyZW1vdmluZ0ZpZWxkICYmIGVudGl0eVtyZW1vdmluZ0ZpZWxkXVwiXG4gICAgICAgICAgICBbY2xhc3MuZWxkZXItdGFibGUtcm93LXNlbGVjdGVkXT1cIlxuICAgICAgICAgICAgICBpbnRlcmFjdGlvbk1vZGUgPT09ICdzZWxlY3Rpb24nICYmIHNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24oZW50aXR5KSB8IGFzeW5jXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGVudGl0eSlcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uSXRlbURvdWJsZUNsaWNrKGVudGl0eSlcIlxuICAgICAgICAgID48L3RyPlxuICAgICAgICAgIEBpZiAoc2hvd0Zvb3Rlcikge1xuICAgICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zSW5uZXI7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgQGlmICghaXNEYXRhVmFsaWQoZGF0YUNvbnRleHQ/LmRhdGEgfCBhc3luYykpIHtcbiAgICAgIDxlbGRlci1kYXRhLWNvbnRleHQtc3RhdGUtaW5kaWNhdG9yIGNsYXNzPVwiZmxleFwiIFtkYXRhQ29udGV4dF09XCJkYXRhQ29udGV4dFwiPlxuICAgICAgPC9lbGRlci1kYXRhLWNvbnRleHQtc3RhdGUtaW5kaWNhdG9yPlxuICAgIH1cblxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyXG4gICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICBbbW9kZV09XCIoZGF0YUNvbnRleHQ/LmxvYWRpbmcgfCBhc3luYykgPyAnaW5kZXRlcm1pbmF0ZScgOiAnZGV0ZXJtaW5hdGUnXCJcbiAgICAgIFtjb2xvcl09XCIoZGF0YUNvbnRleHQ/LnN0YXR1cyB8IGFzeW5jKT8uaGFzRXJyb3IgPyAnd2FybicgOiAncHJpbWFyeSdcIlxuICAgID5cbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XG5cbiAgICBAaWYgKGlzQWN0aXZlUGFnZWQpIHtcbiAgICAgIEBpZiAoZGF0YUFjdGl2ZVBhZ2VkLnBhZ2UgfCBhc3luYzsgYXMgcGFnZSkge1xuICAgICAgICA8IS0tIE9wdGlvbmFsIFBhZ2luYXRvciBUb29sYmFyIC0tPlxuICAgICAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAgIGNsYXNzPVwiZmxleC1ub25lXCJcbiAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFDb250ZXh0Py50b3RhbCB8IGFzeW5jXCJcbiAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2U/LmluZGV4XCJcbiAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZT8uc2l6ZVwiXG4gICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICA+XG4gICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cbiAgICAgIH1cbiAgICB9XG5cbiAgICA8IS0tIE9wdGlvbmFsIENvbnRpbnVhdGlvbiBGb290ZXIgLS0+XG4gICAgQGlmIChpc0NvbnRpbnVhYmxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBmbGV4LW5vbmUgcGxhY2UtZW5kLWNlbnRlciBnYXAtbWQgZWxkZXItdGFibGUtZm9vdGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIiBzdHlsZT1cImNvbG9yOiBncmF5XCI+XG4gICAgICAgICAge3sgKGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpPy5sZW5ndGggfX0gLyB7eyB0b3RhbCQgfCBhc3luYyB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuTG9hZE1vcmUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGF0YUNvbnRpbnVhYmxlLmxvYWRNb3JlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -18,7 +18,7 @@ export class ElderConfirmDialogComponent {
|
|
|
18
18
|
this.yesNo = false;
|
|
19
19
|
}
|
|
20
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ElderConfirmDialogComponent, isStandalone: true, selector: "elder-confirm-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md\">\n <div class=\"flex\">\n <p translate>{{ message }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ElderConfirmDialogComponent, isStandalone: true, selector: "elder-confirm-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md\">\n <div class=\"flex\">\n <p translate>{{ message }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-flat-button cdkFocusInitial (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? 'actions.yes' : 'actions.ok') | translate }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderConfirmDialogComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
@@ -32,6 +32,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
32
32
|
TranslateModule,
|
|
33
33
|
CdkTrapFocus,
|
|
34
34
|
MatButton,
|
|
35
|
-
], template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md\">\n <div class=\"flex\">\n <p translate>{{ message }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-
|
|
35
|
+
], template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md\">\n <div class=\"flex\">\n <p translate>{{ message }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-flat-button cdkFocusInitial (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? 'actions.yes' : 'actions.ok') | translate }}\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
36
36
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nL2VsZGVyLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGlhbG9ncy9jb25maXJtLWRpYWxvZy9lbGRlci1jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFBOzs7O0FBRXJFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxpQkFBaUI7Q0FVekQ7QUFtQkQsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QyxZQUFtQixTQUFvRDtRQUFwRCxjQUFTLEdBQVQsU0FBUyxDQUEyQztRQUZoRSxVQUFLLEdBQUcsS0FBSyxDQUFBO0lBRXNELENBQUM7OEdBTGhFLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGdGQ3ZDeEMsMjJCQXdCQSwwRERJSSxVQUFVLHFHQUNWLG1CQUFtQix5REFDbkIsYUFBYSx5RkFDYixhQUFhLDZGQUNiLGNBQWMscUxBQ2QsT0FBTywwSUFDUCxlQUFlLG1PQUNmLFlBQVksNElBQ1osU0FBUzs7MkZBR0EsMkJBQTJCO2tCQWpCdkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FHcEIsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixTQUFTO3FCQUNWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBFbGRlckRpYWxvZ0NvbmZpZyB9IGZyb20gJy4uL2VsZGVyLWRpYWxvZy1jb25maWcnXG5pbXBvcnQgeyBDZGtUcmFwRm9jdXMgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdEljb25CdXR0b24sIE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbidcbmltcG9ydCB7IEVsZGVyVGhlbWVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90aGVtZS9lbGRlci10aGVtZS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBNYXRUb29sYmFyLCBNYXRUb29sYmFyUm93IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcidcblxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dDb25maWcgZXh0ZW5kcyBFbGRlckRpYWxvZ0NvbmZpZyB7XG4gIC8qKlxuICAgKiBTdHJpbmcgYXBwZWFyaW5nIGFzIG1lc3NhZ2UgaW4gdGhlIGRpYWxvZy5cbiAgICovXG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmdcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgZGlhbG9nIHdpbGwgc2hvdyAneWVzJyBhbmQgJ25vJyBpbnN0ZWFkIG9mICdvaycgYW5kICdjYW5jZWwnIGFzIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgeWVzTm8/OiBib29sZWFuXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWNvbmZpcm0tZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRvb2xiYXIsXG4gICAgRWxkZXJUaGVtZURpcmVjdGl2ZSxcbiAgICBNYXRUb29sYmFyUm93LFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0RGlhbG9nQ2xvc2UsXG4gICAgTWF0SWNvbixcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQ2RrVHJhcEZvY3VzLFxuICAgIE1hdEJ1dHRvbixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJDb25maXJtRGlhbG9nQ29tcG9uZW50IHtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmdcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZ1xuICBwdWJsaWMgeWVzTm8gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxFbGRlckNvbmZpcm1EaWFsb2dDb21wb25lbnQ+KSB7fVxufVxuIiwiPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZnVsbFwiPlxuICA8bWF0LXRvb2xiYXIgZWxkZXJUaGVtZSBjbGFzcz1cImZsZXgtbm9uZVwiPlxuICAgIDxtYXQtdG9vbGJhci1yb3cgY2xhc3M9XCJnYXAtc21cIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXREaWFsb2dDbG9zZV09XCJmYWxzZVwiPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XG4gICAgICA8aDM+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2gzPlxuICAgIDwvbWF0LXRvb2xiYXItcm93PlxuICA8L21hdC10b29sYmFyPlxuXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZsZXggcC1tZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICA8cCB0cmFuc2xhdGU+e3sgbWVzc2FnZSB9fTwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLWVuZC1jZW50ZXIgZ2FwLW1kIGZsZXgtbm9uZVwiIGNka1RyYXBGb2N1cz5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZShmYWxzZSlcIj5cbiAgICAgICAge3sgKHllc05vID8gJ2FjdGlvbnMubm8nIDogJ2FjdGlvbnMuY2FuY2VsJykgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY2RrRm9jdXNJbml0aWFsIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UodHJ1ZSlcIj5cbiAgICAgICAge3sgKHllc05vID8gJ2FjdGlvbnMueWVzJyA6ICdhY3Rpb25zLm9rJykgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -29,15 +29,15 @@ export class ElderSelectionDialogComponent {
|
|
|
29
29
|
// this.dialogRef.updateSize('20vw', '20vh');
|
|
30
30
|
}
|
|
31
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderSelectionDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ElderSelectionDialogComponent, isStandalone: true, selector: "elder-selection-dialog", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n <h2 *ngIf=\"title\">{{ title | translate }}</h2>\n </div>\n\n <div class=\"layout-col flex\">\n <ng-template [ngTemplateOutlet]=\"data.template\"></ng-template>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ElderSelectionDialogComponent, isStandalone: true, selector: "elder-selection-dialog", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n <h2 *ngIf=\"title\">{{ title | translate }}</h2>\n </div>\n\n <div class=\"layout-col flex\">\n <ng-template [ngTemplateOutlet]=\"data.template\"></ng-template>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\"\n >\n {{ 'actions.select' | translate }}\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderSelectionDialogComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
|
-
args: [{ selector: 'elder-selection-dialog', standalone: true, imports: [NgIf, NgTemplateOutlet, MatButton, MatDialogClose, TranslateModule], template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n <h2 *ngIf=\"title\">{{ title | translate }}</h2>\n </div>\n\n <div class=\"layout-col flex\">\n <ng-template [ngTemplateOutlet]=\"data.template\"></ng-template>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-
|
|
36
|
+
args: [{ selector: 'elder-selection-dialog', standalone: true, imports: [NgIf, NgTemplateOutlet, MatButton, MatDialogClose, TranslateModule], template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n <h2 *ngIf=\"title\">{{ title | translate }}</h2>\n </div>\n\n <div class=\"layout-col flex\">\n <ng-template [ngTemplateOutlet]=\"data.template\"></ng-template>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\"\n >\n {{ 'actions.select' | translate }}\n </button>\n </div>\n</div>\n" }]
|
|
37
37
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
38
38
|
type: Inject,
|
|
39
39
|
args: [MAT_DIALOG_DATA]
|
|
40
40
|
}] }], propDecorators: { title: [{
|
|
41
41
|
type: Input
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RpYWxvZ3Mvc2VsZWN0aW9uLWRpYWxvZy9lbGRlci1zZWxlY3Rpb24tZGlhbG9nL2VsZGVyLXNlbGVjdGlvbi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2dzL3NlbGVjdGlvbi1kaWFsb2cvZWxkZXItc2VsZWN0aW9uLWRpYWxvZy9lbGRlci1zZWxlY3Rpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUE7Ozs7QUFTeEQsTUFBTSxPQUFPLDZCQUE2QjtJQVV4Qzs7OztnRkFJNEU7SUFFNUUsWUFDUyxTQUFzRCxFQUV0RCxJQUFTO1FBRlQsY0FBUyxHQUFULFNBQVMsQ0FBNkM7UUFFdEQsU0FBSSxHQUFKLElBQUksQ0FBSztJQUNmLENBQUM7SUFFSixRQUFRLEtBQUksQ0FBQztJQUViOzs7O2dGQUk0RTtJQUVyRSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLDZDQUE2QztJQUMvQyxDQUFDOzhHQXBDVSw2QkFBNkIsOENBa0I5QixlQUFlO2tHQWxCZCw2QkFBNkIsOEdDYjFDLDZvQkF3QkEsMEREYlksSUFBSSw2RkFBRSxnQkFBZ0Isb0pBQUUsU0FBUyxpTEFBRSxjQUFjLG9MQUFFLGVBQWU7OzJGQUVqRSw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQzs7MEJBb0IxRSxNQUFNOzJCQUFDLGVBQWU7eUNBVmxCLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1zZWxlY3Rpb24tZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXNlbGVjdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1zZWxlY3Rpb24tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBNYXRCdXR0b24sIE1hdERpYWxvZ0Nsb3NlLCBUcmFuc2xhdGVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlbGVjdGlvbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEVsZGVyU2VsZWN0aW9uRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICBwdWJsaWMgZGF0YTogYW55XG4gICkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNvbmZpcm1TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUoJzIwdncnLCAnMjB2aCcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBmdWxsXCI+XG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZsZXgtbm9uZVwiPlxuICAgIDxoMiAqbmdJZj1cInRpdGxlXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2gyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBmbGV4XCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGEudGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1lbmQtY2VudGVyXCI+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZGlhbG9nLWNsb3NlPlxuICAgICAge3sgJ2FjdGlvbnMuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkYXRhLnNlbGVjdGlvbk1vZGVsLmlzRW1wdHkoKVwiXG4gICAgICAoY2xpY2spPVwiY29uZmlybVNlbGVjdGlvbigpXCJcbiAgICA+XG4gICAgICB7eyAnYWN0aW9ucy5zZWxlY3QnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -207,11 +207,11 @@ export class ElderBlobViewerComponent {
|
|
|
207
207
|
});
|
|
208
208
|
}
|
|
209
209
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderBlobViewerComponent, deps: [{ token: i1.HttpClientPristine }, { token: i2.DomSanitizer }, { token: i3.ElderToastService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
210
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.5", type: ElderBlobViewerComponent, isStandalone: true, selector: "elder-blob-viewer", inputs: { displayUnknownAsText: { classPropertyName: "displayUnknownAsText", publicName: "displayUnknownAsText", isSignal: true, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: false, isRequired: false, transformFunction: null }, blobUrl: { classPropertyName: "blobUrl", publicName: "blobUrl", isSignal: false, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: false, isRequired: false, transformFunction: null }, mimeType: { classPropertyName: "mimeType", publicName: "mimeType", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"layout-col full place-center-center document-viewer\">\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n <!-- Video -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isVideo\">\n <video class=\"video\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isAudio\">\n <audio class=\"audio\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\">\n <img class=\"cover flex\" [src]=\"blobContext.safeUrl\" alt=\"blob image\" />\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayEmbedded\">\n <div class=\"full\">\n <embed\n class=\"embedded\"\n [src]=\"blobContext.safeUrl\"\n [type]=\"blobContext.mimeType.value\"\n width=\"100%\"\n height=\"100%\"\n />\n </div>\n </div>\n\n <!-- Plain Text -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayAsText\">\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\"\n wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.cantDisplay\">\n <p>Cant display {{ blobContext.mimeType.value }}!</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div class=\"layout-col place-center-center full\">\n <p>No Document.</p>\n </div>\n </ng-container>\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color
|
|
210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.5", type: ElderBlobViewerComponent, isStandalone: true, selector: "elder-blob-viewer", inputs: { displayUnknownAsText: { classPropertyName: "displayUnknownAsText", publicName: "displayUnknownAsText", isSignal: true, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: false, isRequired: false, transformFunction: null }, blobUrl: { classPropertyName: "blobUrl", publicName: "blobUrl", isSignal: false, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: false, isRequired: false, transformFunction: null }, mimeType: { classPropertyName: "mimeType", publicName: "mimeType", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"layout-col full place-center-center document-viewer\">\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n <!-- Video -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isVideo\">\n <video class=\"video\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isAudio\">\n <audio class=\"audio\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\">\n <img class=\"cover flex\" [src]=\"blobContext.safeUrl\" alt=\"blob image\" />\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayEmbedded\">\n <div class=\"full\">\n <embed\n class=\"embedded\"\n [src]=\"blobContext.safeUrl\"\n [type]=\"blobContext.mimeType.value\"\n width=\"100%\"\n height=\"100%\"\n />\n </div>\n </div>\n\n <!-- Plain Text -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayAsText\">\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\"\n wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.cantDisplay\">\n <p>Cant display {{ blobContext.mimeType.value }}!</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div class=\"layout-col place-center-center full\">\n <p>No Document.</p>\n </div>\n </ng-container>\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color:var(--md-sys-color-surface-dim);color:var(--md-sys-color-on-surface)}.video,.audio{width:100%;height:auto}.embedded{width:100%;height:100%}.cover{object-fit:scale-down;width:100%;height:auto;overflow:hidden}.document-content{font-family:Courier,monospace;font-size:14px;background-color:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);outline:none;resize:none;width:100%;height:100%;border-radius:0;box-shadow:0 2px 14px #000;border-top:1px solid #fff;border-bottom:1px solid #fff}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
211
211
|
}
|
|
212
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderBlobViewerComponent, decorators: [{
|
|
213
213
|
type: Component,
|
|
214
|
-
args: [{ selector: 'elder-blob-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, AsyncPipe], template: "<div class=\"layout-col full place-center-center document-viewer\">\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n <!-- Video -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isVideo\">\n <video class=\"video\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isAudio\">\n <audio class=\"audio\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\">\n <img class=\"cover flex\" [src]=\"blobContext.safeUrl\" alt=\"blob image\" />\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayEmbedded\">\n <div class=\"full\">\n <embed\n class=\"embedded\"\n [src]=\"blobContext.safeUrl\"\n [type]=\"blobContext.mimeType.value\"\n width=\"100%\"\n height=\"100%\"\n />\n </div>\n </div>\n\n <!-- Plain Text -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayAsText\">\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\"\n wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.cantDisplay\">\n <p>Cant display {{ blobContext.mimeType.value }}!</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div class=\"layout-col place-center-center full\">\n <p>No Document.</p>\n </div>\n </ng-container>\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color
|
|
214
|
+
args: [{ selector: 'elder-blob-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, AsyncPipe], template: "<div class=\"layout-col full place-center-center document-viewer\">\n <ng-container *ngIf=\"blobContext$ | async as blobContext\">\n <!-- Video -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isVideo\">\n <video class=\"video\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 video.\n </video>\n </div>\n\n <!-- Audio -->\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.mimeType.isAudio\">\n <audio class=\"audio\" controls autoplay loop>\n <source [src]=\"blobContext.safeUrl\" [type]=\"blobContext.mimeType.value\" />\n Your browser does not support HTML5 audio.\n </audio>\n </div>\n\n <!-- Image -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.mimeType.isImage\" style=\"overflow: hidden\">\n <img class=\"cover flex\" [src]=\"blobContext.safeUrl\" alt=\"blob image\" />\n </div>\n\n <!-- Embedded (PDFs etc) -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayEmbedded\">\n <div class=\"full\">\n <embed\n class=\"embedded\"\n [src]=\"blobContext.safeUrl\"\n [type]=\"blobContext.mimeType.value\"\n width=\"100%\"\n height=\"100%\"\n />\n </div>\n </div>\n\n <!-- Plain Text -->\n <div class=\"layout-col full\" *ngIf=\"blobContext.displayAsText\">\n <textarea\n class=\"document-content\"\n placeholder=\"Content\"\n [value]=\"blobContext.text\"\n wrap=\"off\"\n readonly\n ></textarea>\n </div>\n\n <div class=\"layout-col place-center-center full\" *ngIf=\"blobContext.cantDisplay\">\n <p>Cant display {{ blobContext.mimeType.value }}!</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(blobContext$ | async)\">\n <div class=\"layout-col place-center-center full\">\n <p>No Document.</p>\n </div>\n </ng-container>\n</div>\n", styles: [":host{overflow:hidden}.document-viewer{background-color:var(--md-sys-color-surface-dim);color:var(--md-sys-color-on-surface)}.video,.audio{width:100%;height:auto}.embedded{width:100%;height:100%}.cover{object-fit:scale-down;width:100%;height:auto;overflow:hidden}.document-content{font-family:Courier,monospace;font-size:14px;background-color:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);outline:none;resize:none;width:100%;height:100%;border-radius:0;box-shadow:0 2px 14px #000;border-top:1px solid #fff;border-bottom:1px solid #fff}\n"] }]
|
|
215
215
|
}], ctorParameters: () => [{ type: i1.HttpClientPristine }, { type: i2.DomSanitizer }, { type: i3.ElderToastService }], propDecorators: { blob: [{
|
|
216
216
|
type: Input
|
|
217
217
|
}], blobUrl: [{
|
|
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
221
221
|
}], mimeType: [{
|
|
222
222
|
type: Input
|
|
223
223
|
}] } });
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9ibG9iLXZpZXdlci9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2Jsb2Itdmlld2VyL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFFbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBR3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7OztBQUVqRCxNQUFNLFdBQVc7SUFDUixNQUFNLENBQUMsUUFBUSxDQUFDLElBQVksRUFBRSxRQUFzQjtRQUN6RCxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBZ0Is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QUFHLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQzVFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzVELENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQXNCO1FBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFdEYsOEVBQThFO1FBQzlFLG9FQUFvRTtRQUNwRSx3RkFBd0Y7UUFFeEYsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3hDLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBN0tVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHd1QkMvRnJDLDJnRUEwREEsd3BCRG1DWSxJQUFJLHdGQUFFLFNBQVM7OzJGQUVkLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO2tKQXFFZixJQUFJO3NCQURkLEtBQUs7Z0JBVUssT0FBTztzQkFEakIsS0FBSztnQkFVSyxHQUFHO3NCQURiLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcidcbmltcG9ydCB7IEJsb2JVcmwgfSBmcm9tICcuLi9ibG9iLXVybCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBIdHRwQ2xpZW50UHJpc3RpbmUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vaHR0cC9odHRwLWNsaWVudC1wcmlzdGluZSdcbmltcG9ydCB7IEVsZGVyVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9hc3RzL2VsZGVyLXRvYXN0LnNlcnZpY2UnXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IE5nSWYsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuY2xhc3MgQmxvYkNvbnRleHQge1xuICBwdWJsaWMgc3RhdGljIHRleHRCbG9iKHRleHQ6IHN0cmluZywgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSkge1xuICAgIHJldHVybiBuZXcgQmxvYkNvbnRleHQobnVsbCwgbWltZVR5cGUsIHRleHQpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNhZmVVcmwoc2FmZVVybDogU2FmZVVybCwgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSk6IEJsb2JDb250ZXh0IHtcbiAgICByZXR1cm4gbmV3IEJsb2JDb250ZXh0KHNhZmVVcmwsIG1pbWVUeXBlLCBudWxsKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHNhZmVVcmw6IFNhZmVVcmwsXG4gICAgcHVibGljIHJlYWRvbmx5IG1pbWVUeXBlOiBCbG9iTWltZVR5cGUsXG4gICAgcHVibGljIHJlYWRvbmx5IHRleHQ6IHN0cmluZyA9IG51bGxcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUFzVGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRleHRcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2FudERpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmRpc3BsYXlBc1RleHQgJiZcbiAgICAgICF0aGlzLmRpc3BsYXlFbWJlZGRlZCAmJlxuICAgICAgIXRoaXMubWltZVR5cGUuaXNBdWRpbyAmJlxuICAgICAgIXRoaXMubWltZVR5cGUuaXNJbWFnZSAmJlxuICAgICAgIXRoaXMubWltZVR5cGUuaXNWaWRlb1xuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUVtYmVkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1pbWVUeXBlLmlzUGRmXG4gIH1cbn1cblxuY2xhc3MgQmxvYk1pbWVUeXBlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPQ1RFVF9TVFJFQU0gPSBuZXcgQmxvYk1pbWVUeXBlKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2UobWltZVR5cGU6IHN0cmluZyk6IEJsb2JNaW1lVHlwZSB7XG4gICAgaWYgKG1pbWVUeXBlKSB7XG4gICAgICByZXR1cm4gbmV3IEJsb2JNaW1lVHlwZShtaW1lVHlwZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEJsb2JNaW1lVHlwZS5PQ1RFVF9TVFJFQU1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZykge31cblxuICBwdWJsaWMgZ2V0IGlzT2N0ZXRTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJylcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNWaWRlbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCd2aWRlby8nKVxuICB9XG5cbiAgcHVibGljIGdldCBpc0ltYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXVkaW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXVkaW8vJylcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNKc29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL2pzb24nKVxuICB9XG5cbiAgcHVibGljIGdldCBpc1BkZigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9wZGYnKVxuICB9XG5cbiAgcHVibGljIGdldCBpc1RleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCB0aGlzLmlzSnNvblxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWJsb2Itdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBBc3luY1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckJsb2JWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHB1YmxpYyByZWFkb25seSBibG9iQ29udGV4dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJsb2JDb250ZXh0PihudWxsKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VybCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbClcbiAgcHJpdmF0ZSByZWFkb25seSBfbWltZVR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwUHJpc3RpbmU6IEh0dHBDbGllbnRQcmlzdGluZSxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBFbGRlclRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3VybCQsIHRoaXMuX21pbWVUeXBlJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKFt1cmwsIG1pbWVUeXBlXSkgPT4gISF1cmwpLFxuICAgICAgICBtYXAoKFt1cmwsIG1pbWVUeXBlXSkgPT4gQmxvYlVybC5mcm9tKHVybCwgbWltZVR5cGUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYmxvYlVybCkgPT4gKHRoaXMuYmxvYlVybCA9IGJsb2JVcmwpKVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byBkaXNwbGF5IHVua25vd24gYmxvYnMgYXMgdGV4dC4gKGkuZS4gbWltZS10eXBlIGlzIG9jdGV0LXN0cmVhbSlcbiAgICogQHBhcmFtIHVua25vd25Bc1RleHRcbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5VW5rbm93bkFzVGV4dCA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiAoaW5wdXQ6IEJvb2xlYW5JbnB1dCkgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KGlucHV0KSxcbiAgfSlcblxuICAvKipcbiAgICogU2V0IGEgaW4gbWVtb3J5IGJsb2IgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYihibG9iOiBCbG9iKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iKGJsb2IpXG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgYmxvYi11cmwgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JVcmxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYlVybChibG9iVXJsOiBCbG9iVXJsKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iVXJsKGJsb2JVcmwpXG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgdXJsIHRvIGRpc3BsYXkuIFJlcXVpcmVzIHRoZSBtaW1lVHlwZSB0byBiZSBzZXQgYXN3ZWxsLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3VybCQubmV4dCh1cmwpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBtaW1lLXR5cGUgZm9yIHRoZSB1cmwgdG8gZGlzcGxheS4gT25seSBjb25zaWRlcmVkIGlmIHVybCBpcyBzZXQuXG4gICAqIEBwYXJhbSBtaW1lVHlwZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW1lVHlwZShtaW1lVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbWltZVR5cGUkLm5leHQobWltZVR5cGUpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGhhbmRsZUJsb2IoYmxvYjogQmxvYik6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tQmxvYihibG9iKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gQmxvYk1pbWVUeXBlLnBhcnNlKGJsb2IudHlwZSlcblxuICAgIGlmICh0aGlzLmNhbkRpc3BsYXlBc1RleHQobWltZVR5cGUpKSB7XG4gICAgICB0aGlzLnRleHRDb250ZXh0KGJsb2IsIG1pbWVUeXBlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKEJsb2JDb250ZXh0LnNhZmVVcmwoc2FmZVVybCwgbWltZVR5cGUpKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdGV4dENvbnRleHQoYmxvYjogQmxvYiwgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSk6IHZvaWQge1xuICAgIGJsb2IudGV4dCgpLnRoZW4oKHRleHQpID0+IHtcbiAgICAgIHRoaXMubmV4dEJsb2IoQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJsb2JVcmwoYmxvYlVybDogQmxvYlVybCk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tRGF0YVVybChibG9iVXJsLnVybClcbiAgICBjb25zdCBtaW1lVHlwZSA9IEJsb2JNaW1lVHlwZS5wYXJzZShibG9iVXJsLm1pbWVUeXBlKVxuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMubG9hZEFzVGV4dChibG9iVXJsLnVybCwgbWltZVR5cGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV4dEJsb2IoQmxvYkNvbnRleHQuc2FmZVVybChzYWZlVXJsLCBtaW1lVHlwZSkpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0QmxvYihibG9iQ29udGV4dDogQmxvYkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmJsb2JDb250ZXh0JC5uZXh0KGJsb2JDb250ZXh0KVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbUJsb2IoYmxvYjogQmxvYik6IFNhZmVVcmwge1xuICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChibG9iVXJsKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbURhdGFVcmwodXJsOiBzdHJpbmcpOiBTYWZlVXJsIHtcbiAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybClcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nLCBtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5uZXh0QmxvYihCbG9iQ29udGV4dC50ZXh0QmxvYignTG9hZGluZy4uLicsIG1pbWVUeXBlKSlcblxuICAgIHRoaXMuZG93bmxvYWRBc1RleHQocHJpc3RpbmVVcmwpLnN1YnNjcmliZShcbiAgICAgICh0ZXh0KSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpKVxuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5uZXh0QmxvYihCbG9iQ29udGV4dC50ZXh0QmxvYignRmFpbGVkIHRvIGRvd25sb2FkIGNvbnRlbnQhJywgbWltZVR5cGUpKVxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS53YXJuKCdGYWlsZWQgdG8gZG93bmxvYWQgY29udGVudCEnLCBlcnIpXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBjYW5EaXNwbGF5QXNUZXh0KG1pbWVUeXBlOiBCbG9iTWltZVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBjYW4gPSBtaW1lVHlwZS5pc1RleHQgfHwgKHRoaXMuZGlzcGxheVVua25vd25Bc1RleHQoKSAmJiBtaW1lVHlwZS5pc09jdGV0U3RyZWFtKVxuXG4gICAgLy8gVE9ETyBfZGlzcGxheVVua25vd25Bc1RleHQgbWlnaHQgYmUgbnVsbCBkdWUgcmFjZSBjb25kaXRpb24gc2VlIHRvZG8gYWJvdmUuXG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ2NhbkRpc3BsYXlBc1RleHQoJyArIG1pbWVUeXBlLnZhbHVlICsgJykgLS0+ICdcbiAgICAvLyAgKyBjYW4gKyAnIC0tLT4gdGhpcy5fZGlzcGxheVVua25vd25Bc1RleHQ6JyArIHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0LCBtaW1lVHlwZSk7XG5cbiAgICByZXR1cm4gY2FuXG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkQXNUZXh0KHByaXN0aW5lVXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBQcmlzdGluZS5nZXQocHJpc3RpbmVVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZ1bGwgcGxhY2UtY2VudGVyLWNlbnRlciBkb2N1bWVudC12aWV3ZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJsb2JDb250ZXh0JCB8IGFzeW5jIGFzIGJsb2JDb250ZXh0XCI+XG4gICAgPCEtLSBWaWRlbyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBwbGFjZS1jZW50ZXItY2VudGVyIGZ1bGxcIiAqbmdJZj1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLmlzVmlkZW9cIj5cbiAgICAgIDx2aWRlbyBjbGFzcz1cInZpZGVvXCIgY29udHJvbHMgYXV0b3BsYXkgbG9vcD5cbiAgICAgICAgPHNvdXJjZSBbc3JjXT1cImJsb2JDb250ZXh0LnNhZmVVcmxcIiBbdHlwZV09XCJibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZVwiIC8+XG4gICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUw1IHZpZGVvLlxuICAgICAgPC92aWRlbz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQXVkaW8gLS0+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgcGxhY2UtY2VudGVyLWNlbnRlciBmdWxsXCIgKm5nSWY9XCJibG9iQ29udGV4dC5taW1lVHlwZS5pc0F1ZGlvXCI+XG4gICAgICA8YXVkaW8gY2xhc3M9XCJhdWRpb1wiIGNvbnRyb2xzIGF1dG9wbGF5IGxvb3A+XG4gICAgICAgIDxzb3VyY2UgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgW3R5cGVdPVwiYmxvYkNvbnRleHQubWltZVR5cGUudmFsdWVcIiAvPlxuICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBhdWRpby5cbiAgICAgIDwvYXVkaW8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEltYWdlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZ1bGxcIiAqbmdJZj1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLmlzSW1hZ2VcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cbiAgICAgIDxpbWcgY2xhc3M9XCJjb3ZlciBmbGV4XCIgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgYWx0PVwiYmxvYiBpbWFnZVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVtYmVkZGVkIChQREZzIGV0YykgLS0+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZnVsbFwiICpuZ0lmPVwiYmxvYkNvbnRleHQuZGlzcGxheUVtYmVkZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnVsbFwiPlxuICAgICAgICA8ZW1iZWRcbiAgICAgICAgICBjbGFzcz1cImVtYmVkZGVkXCJcbiAgICAgICAgICBbc3JjXT1cImJsb2JDb250ZXh0LnNhZmVVcmxcIlxuICAgICAgICAgIFt0eXBlXT1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLnZhbHVlXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFBsYWluIFRleHQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZnVsbFwiICpuZ0lmPVwiYmxvYkNvbnRleHQuZGlzcGxheUFzVGV4dFwiPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzPVwiZG9jdW1lbnQtY29udGVudFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQ29udGVudFwiXG4gICAgICAgIFt2YWx1ZV09XCJibG9iQ29udGV4dC50ZXh0XCJcbiAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZnVsbFwiICpuZ0lmPVwiYmxvYkNvbnRleHQuY2FudERpc3BsYXlcIj5cbiAgICAgIDxwPkNhbnQgZGlzcGxheSB7eyBibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZSB9fSE8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGJsb2JDb250ZXh0JCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZnVsbFwiPlxuICAgICAgPHA+Tm8gRG9jdW1lbnQuPC9wPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9ibG9iLXZpZXdlci9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2Jsb2Itdmlld2VyL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFFbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBR3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7OztBQUVqRCxNQUFNLFdBQVc7SUFDUixNQUFNLENBQUMsUUFBUSxDQUFDLElBQVksRUFBRSxRQUFzQjtRQUN6RCxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBZ0Is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QUFHLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQzVFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzVELENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQXNCO1FBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFdEYsOEVBQThFO1FBQzlFLG9FQUFvRTtRQUNwRSx3RkFBd0Y7UUFFeEYsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3hDLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBN0tVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHd1QkMvRnJDLDJnRUEwREEsc25CRG1DWSxJQUFJLHdGQUFFLFNBQVM7OzJGQUVkLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO2tKQXFFZixJQUFJO3NCQURkLEtBQUs7Z0JBVUssT0FBTztzQkFEakIsS0FBSztnQkFVSyxHQUFHO3NCQURiLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcidcbmltcG9ydCB7IEJsb2JVcmwgfSBmcm9tICcuLi9ibG9iLXVybCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBIdHRwQ2xpZW50UHJpc3RpbmUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vaHR0cC9odHRwLWNsaWVudC1wcmlzdGluZSdcbmltcG9ydCB7IEVsZGVyVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9hc3RzL2VsZGVyLXRvYXN0LnNlcnZpY2UnXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IE5nSWYsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuY2xhc3MgQmxvYkNvbnRleHQge1xuICBwdWJsaWMgc3RhdGljIHRleHRCbG9iKHRleHQ6IHN0cmluZywgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSkge1xuICAgIHJldHVybiBuZXcgQmxvYkNvbnRleHQobnVsbCwgbWltZVR5cGUsIHRleHQpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNhZmVVcmwoc2FmZVVybDogU2FmZVVybCwgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSk6IEJsb2JDb250ZXh0IHtcbiAgICByZXR1cm4gbmV3IEJsb2JDb250ZXh0KHNhZmVVcmwsIG1pbWVUeXBlLCBudWxsKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHNhZmVVcmw6IFNhZmVVcmwsXG4gICAgcHVibGljIHJlYWRvbmx5IG1pbWVUeXBlOiBCbG9iTWltZVR5cGUsXG4gICAgcHVibGljIHJlYWRvbmx5IHRleHQ6IHN0cmluZyA9IG51bGxcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUFzVGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRleHRcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2FudERpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmRpc3BsYXlBc1RleHQgJiZcbiAgICAgICF0aGlzLmRpc3BsYXlFbWJlZGRlZCAmJlxuICAgICAgIXRoaXMubWltZVR5cGUuaXNBdWRpbyAmJlxuICAgICAgIXRoaXMubWltZVR5cGUuaXNJbWFnZSAmJlxuICAgICAgIXRoaXMubWltZVR5cGUuaXNWaWRlb1xuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUVtYmVkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1pbWVUeXBlLmlzUGRmXG4gIH1cbn1cblxuY2xhc3MgQmxvYk1pbWVUeXBlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPQ1RFVF9TVFJFQU0gPSBuZXcgQmxvYk1pbWVUeXBlKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2UobWltZVR5cGU6IHN0cmluZyk6IEJsb2JNaW1lVHlwZSB7XG4gICAgaWYgKG1pbWVUeXBlKSB7XG4gICAgICByZXR1cm4gbmV3IEJsb2JNaW1lVHlwZShtaW1lVHlwZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEJsb2JNaW1lVHlwZS5PQ1RFVF9TVFJFQU1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZykge31cblxuICBwdWJsaWMgZ2V0IGlzT2N0ZXRTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJylcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNWaWRlbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCd2aWRlby8nKVxuICB9XG5cbiAgcHVibGljIGdldCBpc0ltYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXVkaW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXVkaW8vJylcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNKc29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL2pzb24nKVxuICB9XG5cbiAgcHVibGljIGdldCBpc1BkZigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9wZGYnKVxuICB9XG5cbiAgcHVibGljIGdldCBpc1RleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCB0aGlzLmlzSnNvblxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWJsb2Itdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBBc3luY1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckJsb2JWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHB1YmxpYyByZWFkb25seSBibG9iQ29udGV4dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJsb2JDb250ZXh0PihudWxsKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VybCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbClcbiAgcHJpdmF0ZSByZWFkb25seSBfbWltZVR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwUHJpc3RpbmU6IEh0dHBDbGllbnRQcmlzdGluZSxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBFbGRlclRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3VybCQsIHRoaXMuX21pbWVUeXBlJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKFt1cmwsIG1pbWVUeXBlXSkgPT4gISF1cmwpLFxuICAgICAgICBtYXAoKFt1cmwsIG1pbWVUeXBlXSkgPT4gQmxvYlVybC5mcm9tKHVybCwgbWltZVR5cGUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYmxvYlVybCkgPT4gKHRoaXMuYmxvYlVybCA9IGJsb2JVcmwpKVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byBkaXNwbGF5IHVua25vd24gYmxvYnMgYXMgdGV4dC4gKGkuZS4gbWltZS10eXBlIGlzIG9jdGV0LXN0cmVhbSlcbiAgICogQHBhcmFtIHVua25vd25Bc1RleHRcbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5VW5rbm93bkFzVGV4dCA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiAoaW5wdXQ6IEJvb2xlYW5JbnB1dCkgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KGlucHV0KSxcbiAgfSlcblxuICAvKipcbiAgICogU2V0IGEgaW4gbWVtb3J5IGJsb2IgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYihibG9iOiBCbG9iKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iKGJsb2IpXG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgYmxvYi11cmwgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JVcmxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYlVybChibG9iVXJsOiBCbG9iVXJsKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iVXJsKGJsb2JVcmwpXG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgdXJsIHRvIGRpc3BsYXkuIFJlcXVpcmVzIHRoZSBtaW1lVHlwZSB0byBiZSBzZXQgYXN3ZWxsLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3VybCQubmV4dCh1cmwpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBtaW1lLXR5cGUgZm9yIHRoZSB1cmwgdG8gZGlzcGxheS4gT25seSBjb25zaWRlcmVkIGlmIHVybCBpcyBzZXQuXG4gICAqIEBwYXJhbSBtaW1lVHlwZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW1lVHlwZShtaW1lVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbWltZVR5cGUkLm5leHQobWltZVR5cGUpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGhhbmRsZUJsb2IoYmxvYjogQmxvYik6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tQmxvYihibG9iKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gQmxvYk1pbWVUeXBlLnBhcnNlKGJsb2IudHlwZSlcblxuICAgIGlmICh0aGlzLmNhbkRpc3BsYXlBc1RleHQobWltZVR5cGUpKSB7XG4gICAgICB0aGlzLnRleHRDb250ZXh0KGJsb2IsIG1pbWVUeXBlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKEJsb2JDb250ZXh0LnNhZmVVcmwoc2FmZVVybCwgbWltZVR5cGUpKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdGV4dENvbnRleHQoYmxvYjogQmxvYiwgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSk6IHZvaWQge1xuICAgIGJsb2IudGV4dCgpLnRoZW4oKHRleHQpID0+IHtcbiAgICAgIHRoaXMubmV4dEJsb2IoQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJsb2JVcmwoYmxvYlVybDogQmxvYlVybCk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tRGF0YVVybChibG9iVXJsLnVybClcbiAgICBjb25zdCBtaW1lVHlwZSA9IEJsb2JNaW1lVHlwZS5wYXJzZShibG9iVXJsLm1pbWVUeXBlKVxuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMubG9hZEFzVGV4dChibG9iVXJsLnVybCwgbWltZVR5cGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV4dEJsb2IoQmxvYkNvbnRleHQuc2FmZVVybChzYWZlVXJsLCBtaW1lVHlwZSkpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0QmxvYihibG9iQ29udGV4dDogQmxvYkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmJsb2JDb250ZXh0JC5uZXh0KGJsb2JDb250ZXh0KVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbUJsb2IoYmxvYjogQmxvYik6IFNhZmVVcmwge1xuICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChibG9iVXJsKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbURhdGFVcmwodXJsOiBzdHJpbmcpOiBTYWZlVXJsIHtcbiAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybClcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nLCBtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5uZXh0QmxvYihCbG9iQ29udGV4dC50ZXh0QmxvYignTG9hZGluZy4uLicsIG1pbWVUeXBlKSlcblxuICAgIHRoaXMuZG93bmxvYWRBc1RleHQocHJpc3RpbmVVcmwpLnN1YnNjcmliZShcbiAgICAgICh0ZXh0KSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpKVxuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5uZXh0QmxvYihCbG9iQ29udGV4dC50ZXh0QmxvYignRmFpbGVkIHRvIGRvd25sb2FkIGNvbnRlbnQhJywgbWltZVR5cGUpKVxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS53YXJuKCdGYWlsZWQgdG8gZG93bmxvYWQgY29udGVudCEnLCBlcnIpXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBjYW5EaXNwbGF5QXNUZXh0KG1pbWVUeXBlOiBCbG9iTWltZVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBjYW4gPSBtaW1lVHlwZS5pc1RleHQgfHwgKHRoaXMuZGlzcGxheVVua25vd25Bc1RleHQoKSAmJiBtaW1lVHlwZS5pc09jdGV0U3RyZWFtKVxuXG4gICAgLy8gVE9ETyBfZGlzcGxheVVua25vd25Bc1RleHQgbWlnaHQgYmUgbnVsbCBkdWUgcmFjZSBjb25kaXRpb24gc2VlIHRvZG8gYWJvdmUuXG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ2NhbkRpc3BsYXlBc1RleHQoJyArIG1pbWVUeXBlLnZhbHVlICsgJykgLS0+ICdcbiAgICAvLyAgKyBjYW4gKyAnIC0tLT4gdGhpcy5fZGlzcGxheVVua25vd25Bc1RleHQ6JyArIHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0LCBtaW1lVHlwZSk7XG5cbiAgICByZXR1cm4gY2FuXG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkQXNUZXh0KHByaXN0aW5lVXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBQcmlzdGluZS5nZXQocHJpc3RpbmVVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZ1bGwgcGxhY2UtY2VudGVyLWNlbnRlciBkb2N1bWVudC12aWV3ZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJsb2JDb250ZXh0JCB8IGFzeW5jIGFzIGJsb2JDb250ZXh0XCI+XG4gICAgPCEtLSBWaWRlbyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBwbGFjZS1jZW50ZXItY2VudGVyIGZ1bGxcIiAqbmdJZj1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLmlzVmlkZW9cIj5cbiAgICAgIDx2aWRlbyBjbGFzcz1cInZpZGVvXCIgY29udHJvbHMgYXV0b3BsYXkgbG9vcD5cbiAgICAgICAgPHNvdXJjZSBbc3JjXT1cImJsb2JDb250ZXh0LnNhZmVVcmxcIiBbdHlwZV09XCJibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZVwiIC8+XG4gICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUw1IHZpZGVvLlxuICAgICAgPC92aWRlbz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQXVkaW8gLS0+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgcGxhY2UtY2VudGVyLWNlbnRlciBmdWxsXCIgKm5nSWY9XCJibG9iQ29udGV4dC5taW1lVHlwZS5pc0F1ZGlvXCI+XG4gICAgICA8YXVkaW8gY2xhc3M9XCJhdWRpb1wiIGNvbnRyb2xzIGF1dG9wbGF5IGxvb3A+XG4gICAgICAgIDxzb3VyY2UgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgW3R5cGVdPVwiYmxvYkNvbnRleHQubWltZVR5cGUudmFsdWVcIiAvPlxuICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBhdWRpby5cbiAgICAgIDwvYXVkaW8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEltYWdlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZ1bGxcIiAqbmdJZj1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLmlzSW1hZ2VcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cbiAgICAgIDxpbWcgY2xhc3M9XCJjb3ZlciBmbGV4XCIgW3NyY109XCJibG9iQ29udGV4dC5zYWZlVXJsXCIgYWx0PVwiYmxvYiBpbWFnZVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVtYmVkZGVkIChQREZzIGV0YykgLS0+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZnVsbFwiICpuZ0lmPVwiYmxvYkNvbnRleHQuZGlzcGxheUVtYmVkZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnVsbFwiPlxuICAgICAgICA8ZW1iZWRcbiAgICAgICAgICBjbGFzcz1cImVtYmVkZGVkXCJcbiAgICAgICAgICBbc3JjXT1cImJsb2JDb250ZXh0LnNhZmVVcmxcIlxuICAgICAgICAgIFt0eXBlXT1cImJsb2JDb250ZXh0Lm1pbWVUeXBlLnZhbHVlXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFBsYWluIFRleHQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZnVsbFwiICpuZ0lmPVwiYmxvYkNvbnRleHQuZGlzcGxheUFzVGV4dFwiPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzPVwiZG9jdW1lbnQtY29udGVudFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQ29udGVudFwiXG4gICAgICAgIFt2YWx1ZV09XCJibG9iQ29udGV4dC50ZXh0XCJcbiAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZnVsbFwiICpuZ0lmPVwiYmxvYkNvbnRleHQuY2FudERpc3BsYXlcIj5cbiAgICAgIDxwPkNhbnQgZGlzcGxheSB7eyBibG9iQ29udGV4dC5taW1lVHlwZS52YWx1ZSB9fSE8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGJsb2JDb250ZXh0JCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHBsYWNlLWNlbnRlci1jZW50ZXIgZnVsbFwiPlxuICAgICAgPHA+Tm8gRG9jdW1lbnQuPC9wPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|