@eui/components 17.1.1-snapshot-1705631166669 → 17.1.1-snapshot-1705977245006
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/docs/components/EuiTableComponent.html +82 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-button/eui-button.component.mjs +2 -2
- package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +2 -2
- package/esm2022/eui-dropdown/eui-dropdown.component.mjs +3 -3
- package/esm2022/eui-table/eui-table.component.mjs +13 -3
- package/eui-table/eui-table.component.d.ts +4 -1
- package/eui-table/eui-table.component.d.ts.map +1 -1
- package/fesm2022/eui-components-directives.mjs +2 -2
- package/fesm2022/eui-components-eui-autocomplete.mjs +2 -2
- package/fesm2022/eui-components-eui-button.mjs +2 -2
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +5 -5
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-number.mjs +1 -1
- package/fesm2022/eui-components-eui-slide-toggle.mjs +1 -1
- package/fesm2022/eui-components-eui-table.mjs +13 -3
- package/fesm2022/eui-components-eui-table.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +2 -2
- package/fesm2022/eui-components-externals-eui-editor.mjs +1 -1
- package/fesm2022/eui-components-shared.mjs +1 -1
- package/package.json +1 -1
@@ -87,6 +87,12 @@ export class EuiTableComponent extends BaseDirective {
|
|
87
87
|
set isSelectOnlyVisibleRows(value) {
|
88
88
|
this._isSelectOnlyVisibleRows = coerceBooleanProperty(value);
|
89
89
|
}
|
90
|
+
get isColsOrderable() {
|
91
|
+
return this._isColsOrderable;
|
92
|
+
}
|
93
|
+
set isColsOrderable(value) {
|
94
|
+
this._isColsOrderable = coerceBooleanProperty(value);
|
95
|
+
}
|
90
96
|
get cssClasses() {
|
91
97
|
return [
|
92
98
|
this.euiTableResponsive ? 'eui-table--responsive' : '',
|
@@ -97,6 +103,7 @@ export class EuiTableComponent extends BaseDirective {
|
|
97
103
|
this.euiTableCards ? 'eui-table-cards' : '',
|
98
104
|
this.hasStickyHeader ? 'eui-table--sticky-header' : '',
|
99
105
|
this.hasStickyColumns ? 'eui-table--sticky-columns' : '',
|
106
|
+
this.isColsOrderable ? 'eui-table--cols-orderable' : '',
|
100
107
|
super.getCssClasses('eui-table'),
|
101
108
|
]
|
102
109
|
.join(' ')
|
@@ -140,6 +147,7 @@ export class EuiTableComponent extends BaseDirective {
|
|
140
147
|
this._hasStickyHeader = false;
|
141
148
|
this._hasStickyColumns = false;
|
142
149
|
this._isSelectOnlyVisibleRows = false;
|
150
|
+
this._isColsOrderable = false;
|
143
151
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
144
152
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
145
153
|
this.rowsSrc = null;
|
@@ -574,11 +582,11 @@ export class EuiTableComponent extends BaseDirective {
|
|
574
582
|
return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;
|
575
583
|
}
|
576
584
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiTableComponent, deps: [{ token: i1.EuiTableSortService }, { token: i0.ChangeDetectorRef }, { token: i2.EuiTableSelectableRowService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
577
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EuiTableComponent, selector: "eui-table, table[euiTable]", inputs: { rows: "rows", propId: "propId", paginator: "paginator", filter: "filter", preselectedRows: "preselectedRows", loading: "loading", asyncTable: "asyncTable", paginable: "paginable", euiTableResponsive: "euiTableResponsive", euiTableFixedLayout: "euiTableFixedLayout", euiTableDraggable: "euiTableDraggable", euiTableCards: "euiTableCards", euiTableBordered: "euiTableBordered", euiTableCompact: "euiTableCompact", hasStickyHeader: "hasStickyHeader", hasStickyColumns: "hasStickyColumns", isSelectOnlyVisibleRows: "isSelectOnlyVisibleRows" }, outputs: { selectedRows: "selectedRows", sortChange: "sortChange", multiSortChange: "multiSortChange" }, host: { properties: { "class": "this.cssClasses", "class.eui-table__loading": "this.hasLoading" } }, providers: [EuiTableSortService, EuiTableSelectableRowService], queries: [{ propertyName: "templates", predicate: EuiTemplateDirective }], viewQueries: [{ propertyName: "theadRef", first: true, predicate: ["theadRef"], descendants: true }, { propertyName: "tbodyRef", first: true, predicate: ["tbodyRef"], descendants: true }, { propertyName: "tfootRef", first: true, predicate: ["tfootRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead #theadRef *ngIf=\"headerTemplate\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n</thead>\n<tbody #tbodyRef *ngIf=\"bodyTemplate\">\n <ng-container *ngFor=\"let row of rowsRendered; let i = index; trackBy: trackByFn\">\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"emptyMessageTemplate && rowsRendered.length === 0\">\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n </ng-container>\n</tbody>\n<tfoot #tfootRef *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n</tfoot>\n", styles: [".eui-table__scrollable-wrapper{overflow:auto}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-base-color-grey-5)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-base-color-white);--eui-table-text-color: var(--eui-base-color-text);--eui-table-selected-row-background-color: var(--eui-base-color-primary-10);--eui-table-highlighted-background-color: var(--eui-base-color-accent-100);--eui-table-bordered-color: var(--eui-base-color-grey-15);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;overflow:auto;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-base-shadow-1)}.eui-table--bordered td,.eui-table--bordered th{border:1px solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-base-spacing-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-base-spacing-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-base-spacing-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table .actionsColumn,.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-base-spacing-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-base-disabled-opacity)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-base-color-grey-5);position:relative;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-table thead tr th{background-color:var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-m) var(--eui-base-spacing-s);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-base-spacing-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{display:inherit;position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-base-spacing-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-base-spacing-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-base-color-grey-15);height:calc(3 * var(--eui-base-spacing-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr td{padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-base-color-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-base-color-grey-5)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-base-color-grey-5)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-base-color-grey-15);border-top:1px solid var(--eui-base-color-grey-15)}.eui-table tfoot tr td{padding:var(--eui-base-spacing-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-xs);white-space:nowrap;width:45%;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-2xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-2xs);width:45%;overflow:hidden;text-overflow:ellipsis;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-base-spacing-2xl)!important}.eui-table__filter-search-icon{left:var(--eui-base-spacing-xs);position:absolute;top:calc(var(--eui-base-spacing-xs) + 2px)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-base-color-accent-5)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
585
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EuiTableComponent, selector: "eui-table, table[euiTable]", inputs: { rows: "rows", propId: "propId", paginator: "paginator", filter: "filter", preselectedRows: "preselectedRows", loading: "loading", asyncTable: "asyncTable", paginable: "paginable", euiTableResponsive: "euiTableResponsive", euiTableFixedLayout: "euiTableFixedLayout", euiTableDraggable: "euiTableDraggable", euiTableCards: "euiTableCards", euiTableBordered: "euiTableBordered", euiTableCompact: "euiTableCompact", hasStickyHeader: "hasStickyHeader", hasStickyColumns: "hasStickyColumns", isSelectOnlyVisibleRows: "isSelectOnlyVisibleRows", isColsOrderable: "isColsOrderable" }, outputs: { selectedRows: "selectedRows", sortChange: "sortChange", multiSortChange: "multiSortChange" }, host: { properties: { "class": "this.cssClasses", "class.eui-table__loading": "this.hasLoading" } }, providers: [EuiTableSortService, EuiTableSelectableRowService], queries: [{ propertyName: "templates", predicate: EuiTemplateDirective }], viewQueries: [{ propertyName: "theadRef", first: true, predicate: ["theadRef"], descendants: true }, { propertyName: "tbodyRef", first: true, predicate: ["tbodyRef"], descendants: true }, { propertyName: "tfootRef", first: true, predicate: ["tfootRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead #theadRef *ngIf=\"headerTemplate\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n</thead>\n<tbody #tbodyRef *ngIf=\"bodyTemplate\">\n <ng-container *ngFor=\"let row of rowsRendered; let i = index; trackBy: trackByFn\">\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"emptyMessageTemplate && rowsRendered.length === 0\">\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n </ng-container>\n</tbody>\n<tfoot #tfootRef *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n</tfoot>\n", styles: [".eui-table__scrollable-wrapper{overflow:auto}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-base-color-grey-5)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table__orderable-cols-preview{background-color:var(--eui-base-color-grey-25);border-color:transparent;padding:calc(var(--eui-base-spacing-m) - 2px) var(--eui-base-spacing-s);cursor:move;opacity:.7}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-base-color-white);--eui-table-text-color: var(--eui-base-color-text);--eui-table-selected-row-background-color: var(--eui-base-color-primary-10);--eui-table-highlighted-background-color: var(--eui-base-color-accent-100);--eui-table-bordered-color: var(--eui-base-color-grey-15);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;overflow:auto;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-base-shadow-1)}.eui-table--bordered td,.eui-table--bordered th{border:1px solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-base-spacing-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-base-spacing-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-base-spacing-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table--cols-orderable .cdk-drag-placeholder{background-color:var(--eui-base-color-white);color:var(--eui-base-color-info-100);cursor:move;opacity:1}.eui-table--cols-orderable tr{display:table-row}.eui-table--cols-orderable tr th{cursor:move}.eui-table .actionsColumn,.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-base-spacing-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-base-disabled-opacity)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-base-color-grey-5);position:relative;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-table thead tr th{background-color:var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-m) var(--eui-base-spacing-s);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-base-spacing-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-base-spacing-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-base-spacing-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-base-color-grey-15);height:calc(3 * var(--eui-base-spacing-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr td{padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-base-color-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-base-color-grey-5)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-base-color-grey-5)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-base-color-grey-15);border-top:1px solid var(--eui-base-color-grey-15)}.eui-table tfoot tr td{padding:var(--eui-base-spacing-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-xs);white-space:nowrap;width:45%;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-2xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-2xs);width:45%;overflow:hidden;text-overflow:ellipsis;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-base-spacing-2xl)!important}.eui-table__filter-search-icon{left:var(--eui-base-spacing-xs);position:absolute;top:calc(var(--eui-base-spacing-xs) + 2px)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-base-color-accent-5)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
578
586
|
}
|
579
587
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiTableComponent, decorators: [{
|
580
588
|
type: Component,
|
581
|
-
args: [{ selector: 'eui-table, table[euiTable]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [EuiTableSortService, EuiTableSelectableRowService], template: "<thead #theadRef *ngIf=\"headerTemplate\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n</thead>\n<tbody #tbodyRef *ngIf=\"bodyTemplate\">\n <ng-container *ngFor=\"let row of rowsRendered; let i = index; trackBy: trackByFn\">\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"emptyMessageTemplate && rowsRendered.length === 0\">\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n </ng-container>\n</tbody>\n<tfoot #tfootRef *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n</tfoot>\n", styles: [".eui-table__scrollable-wrapper{overflow:auto}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-base-color-grey-5)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-base-color-white);--eui-table-text-color: var(--eui-base-color-text);--eui-table-selected-row-background-color: var(--eui-base-color-primary-10);--eui-table-highlighted-background-color: var(--eui-base-color-accent-100);--eui-table-bordered-color: var(--eui-base-color-grey-15);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;overflow:auto;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-base-shadow-1)}.eui-table--bordered td,.eui-table--bordered th{border:1px solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-base-spacing-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-base-spacing-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-base-spacing-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table .actionsColumn,.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-base-spacing-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-base-disabled-opacity)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-base-color-grey-5);position:relative;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-table thead tr th{background-color:var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-m) var(--eui-base-spacing-s);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-base-spacing-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{display:inherit;position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-base-spacing-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-base-spacing-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-base-color-grey-15);height:calc(3 * var(--eui-base-spacing-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr td{padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-base-color-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-base-color-grey-5)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-base-color-grey-5)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-base-color-grey-15);border-top:1px solid var(--eui-base-color-grey-15)}.eui-table tfoot tr td{padding:var(--eui-base-spacing-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-xs);white-space:nowrap;width:45%;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-2xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-2xs);width:45%;overflow:hidden;text-overflow:ellipsis;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-base-spacing-2xl)!important}.eui-table__filter-search-icon{left:var(--eui-base-spacing-xs);position:absolute;top:calc(var(--eui-base-spacing-xs) + 2px)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-base-color-accent-5)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"] }]
|
589
|
+
args: [{ selector: 'eui-table, table[euiTable]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [EuiTableSortService, EuiTableSelectableRowService], template: "<thead #theadRef *ngIf=\"headerTemplate\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n</thead>\n<tbody #tbodyRef *ngIf=\"bodyTemplate\">\n <ng-container *ngFor=\"let row of rowsRendered; let i = index; trackBy: trackByFn\">\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"emptyMessageTemplate && rowsRendered.length === 0\">\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n </ng-container>\n</tbody>\n<tfoot #tfootRef *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n</tfoot>\n", styles: [".eui-table__scrollable-wrapper{overflow:auto}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-base-color-grey-5)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table__orderable-cols-preview{background-color:var(--eui-base-color-grey-25);border-color:transparent;padding:calc(var(--eui-base-spacing-m) - 2px) var(--eui-base-spacing-s);cursor:move;opacity:.7}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-base-color-white);--eui-table-text-color: var(--eui-base-color-text);--eui-table-selected-row-background-color: var(--eui-base-color-primary-10);--eui-table-highlighted-background-color: var(--eui-base-color-accent-100);--eui-table-bordered-color: var(--eui-base-color-grey-15);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;overflow:auto;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-base-shadow-1)}.eui-table--bordered td,.eui-table--bordered th{border:1px solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-base-spacing-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-base-spacing-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-base-font-size) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-base-spacing-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table--cols-orderable .cdk-drag-placeholder{background-color:var(--eui-base-color-white);color:var(--eui-base-color-info-100);cursor:move;opacity:1}.eui-table--cols-orderable tr{display:table-row}.eui-table--cols-orderable tr th{cursor:move}.eui-table .actionsColumn,.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-base-spacing-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-base-disabled-opacity)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-base-color-grey-5);position:relative;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-table thead tr th{background-color:var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-m) var(--eui-base-spacing-s);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-base-spacing-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-base-spacing-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-base-spacing-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-base-color-grey-15);height:calc(3 * var(--eui-base-spacing-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-base-color-grey-2)}.eui-table tbody tr td{padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-base-color-grey-75);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-base-color-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-base-color-grey-5)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-base-color-grey-5)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-base-color-grey-15);border-top:1px solid var(--eui-base-color-grey-15)}.eui-table tfoot tr td{padding:var(--eui-base-spacing-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-xs);white-space:nowrap;width:45%;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:none;border-bottom:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-2xs);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-base-color-grey-80);content:attr(data-col-label);left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs);position:absolute;top:var(--eui-base-spacing-2xs);width:45%;overflow:hidden;text-overflow:ellipsis;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-weight:700}.eui-table:not(.eui-table-cards) .actionsColumn{text-align:left;width:100%}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-base-spacing-2xl)!important}.eui-table__filter-search-icon{left:var(--eui-base-spacing-xs);position:absolute;top:calc(var(--eui-base-spacing-xs) + 2px)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-base-color-accent-5)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"] }]
|
582
590
|
}], ctorParameters: () => [{ type: i1.EuiTableSortService }, { type: i0.ChangeDetectorRef }, { type: i2.EuiTableSelectableRowService }, { type: i0.ElementRef }], propDecorators: { rows: [{
|
583
591
|
type: Input
|
584
592
|
}], propId: [{
|
@@ -637,8 +645,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
637
645
|
type: Input
|
638
646
|
}], isSelectOnlyVisibleRows: [{
|
639
647
|
type: Input
|
648
|
+
}], isColsOrderable: [{
|
649
|
+
type: Input
|
640
650
|
}], cssClasses: [{
|
641
651
|
type: HostBinding,
|
642
652
|
args: ['class']
|
643
653
|
}] } });
|
644
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS9ldWktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBVTNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBWWhELElBQTZDLFVBQVU7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFtQ0QsSUFBYSxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxx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U0FBUzsrQkFDSSw0QkFBNEIsaUJBR3ZCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxtQkFBbUIsRUFBRSw0QkFBNEIsQ0FBQzs0TEFLckQsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVnQixNQUFNO3NCQUEzQixXQUFXO3VCQUFDLE9BQU87Z0JBQ3lCLFVBQVU7c0JBQXRELFdBQVc7dUJBQUMsMEJBQTBCO2dCQU03QixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkF1QmdDLFNBQVM7c0JBQS9DLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVSLE9BQU87c0JBQW5CLEtBQUs7Z0JBUUYsVUFBVTtzQkFEYixLQUFLO2dCQVNGLFNBQVM7c0JBRFosS0FBSztnQkFTRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBU0YsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVNGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFTRixhQUFhO3NCQURoQixLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTRixlQUFlO3NCQURsQixLQUFLO2dCQVNGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBU0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFrQkYsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgRXVpVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBFdWlQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLXBhZ2luYXRvcic7XG5cbmltcG9ydCB7IEV1aVRhYmxlU29ydFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V1aS10YWJsZS1zb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvcGFnaW5hdGlvbi1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBFdWlUYWJsZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyL2V1aS10YWJsZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V1aS10YWJsZS1zZWxlY3RhYmxlLXJvdy5zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4vbW9kZWxzL3NvcnQtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgTXVsdGlzb3J0UGFyYW0gfSBmcm9tICcuL21vZGVscy9tdWx0aS1zb3J0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktdGFibGUsIHRhYmxlW2V1aVRhYmxlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtFdWlUYWJsZVNvcnRTZXJ2aWNlLCBFdWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFibGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcm93czogYW55W10gPSBbXTtcbiAgICBASW5wdXQoKSBwcm9wSWQgPSAnaWQnO1xuICAgIEBJbnB1dCgpIHBhZ2luYXRvcjogRXVpUGFnaW5hdG9yQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGZpbHRlcjogRXVpVGFibGVGaWx0ZXJDb21wb25lbnQ7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcHJlc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHN0cmluZyA9ICdldWktdGFibGUnO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZXVpLXRhYmxlX19sb2FkaW5nJykgZ2V0IGhhc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gICAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbXVsdGlTb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aXNvcnRQYXJhbVtdPigpO1xuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBlbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgcm93c1JlbmRlcmVkOiBhbnlbXSA9IFtdO1xuXG4gICAgcHVibGljIHBhZ2UgPSAwO1xuICAgIHB1YmxpYyBwYWdlU2l6ZSA9IDA7XG4gICAgcHVibGljIHNob3dTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgZmlsdGVyZWRSb3dzID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEV1aVRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxFdWlUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicpIHRoZWFkUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Ym9keVJlZicpIHRib2R5UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Zm9vdFJlZicpIHRmb290UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgICB9XG4gICAgc2V0IGxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9sb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbG9hZGluZyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFzeW5jVGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hc3luY1RhYmxlO1xuICAgIH1cbiAgICBzZXQgYXN5bmNUYWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2FzeW5jVGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hc3luY1RhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcGFnaW5hYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnaW5hYmxlO1xuICAgIH1cbiAgICBzZXQgcGFnaW5hYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcGFnaW5hYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVSZXNwb25zaXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXVpVGFibGVSZXNwb25zaXZlO1xuICAgIH1cbiAgICBzZXQgZXVpVGFibGVSZXNwb25zaXZlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXVpVGFibGVSZXNwb25zaXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVSZXNwb25zaXZlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVGaXhlZExheW91dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlRml4ZWRMYXlvdXQ7XG4gICAgfVxuICAgIHNldCBldWlUYWJsZUZpeGVkTGF5b3V0KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXVpVGFibGVGaXhlZExheW91dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlRml4ZWRMYXlvdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZURyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlRHJhZ2dhYmxlO1xuICAgIH1cbiAgICBzZXQgZXVpVGFibGVEcmFnZ2FibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9ldWlUYWJsZURyYWdnYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlRHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVDYXJkcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQ2FyZHM7XG4gICAgfVxuICAgIHNldCBldWlUYWJsZUNhcmRzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXVpVGFibGVDYXJkcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlQ2FyZHMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZUJvcmRlcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXVpVGFibGVCb3JkZXJlZDtcbiAgICB9XG4gICAgc2V0IGV1aVRhYmxlQm9yZGVyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9ldWlUYWJsZUJvcmRlcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVCb3JkZXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV1aVRhYmxlQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQ29tcGFjdDtcbiAgICB9XG4gICAgc2V0IGV1aVRhYmxlQ29tcGFjdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2V1aVRhYmxlQ29tcGFjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlQ29tcGFjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc1N0aWNreUhlYWRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1N0aWNreUhlYWRlcjtcbiAgICB9XG4gICAgc2V0IGhhc1N0aWNreUhlYWRlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc1N0aWNreUhlYWRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc1N0aWNreUhlYWRlciA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc1N0aWNreUNvbHVtbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNTdGlja3lDb2x1bW5zO1xuICAgIH1cbiAgICBzZXQgaGFzU3RpY2t5Q29sdW1ucyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc1N0aWNreUNvbHVtbnMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNTdGlja3lDb2x1bW5zID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgO1xuICAgIH1cbiAgICBzZXQgaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgID0gZmFsc2U7XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHJvd3NTcmM6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSB0YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXggPSAwO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVSZXNwb25zaXZlID8gJ2V1aS10YWJsZS0tcmVzcG9uc2l2ZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVGaXhlZExheW91dCA/ICdldWktdGFibGUtLWZpeGVkLWxheW91dCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVCb3JkZXJlZCA/ICdldWktdGFibGUtLWJvcmRlcmVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUNvbXBhY3QgPyAnZXVpLXRhYmxlLS1jb21wYWN0JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZURyYWdnYWJsZSA/ICdldWktdGFibGUtLWRyYWdnYWJsZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVDYXJkcyA/ICdldWktdGFibGUtY2FyZHMnIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUhlYWRlciA/ICdldWktdGFibGUtLXN0aWNreS1oZWFkZXInIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUNvbHVtbnMgPyAnZXVpLXRhYmxlLS1zdGlja3ktY29sdW1ucycgOiAnJyxcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2V1aS10YWJsZScpLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGV1aVRhYmxlU29ydFNlcnZpY2U6IEV1aVRhYmxlU29ydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2U6IEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZXRQcm9wSWQodGhpcy5wcm9wSWQpO1xuICAgICAgICBpZiAoYyAmJiBjLnJvd3MgJiYgYy5yb3dzLmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAvLyBHbyB0byBmaXJzdCBwYWdlIG9ubHkgaWYgbGVuZ3RoIG9mIGRhdGEgaGFzIGNoYW5nZWQuIFRvIGF2b2lkIHVzZXIgdG8gYmUgb24gYSBwYWdlIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGluIGNhc2Ugb2YgZmlsdGVyaW5nLlxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoQ2hhbmdlZCA9IHRoaXMucm93c1NyYy5sZW5ndGggIT09IGMucm93cy5jdXJyZW50VmFsdWUubGVuZ3RoO1xuXG4gICAgICAgICAgICB0aGlzLnJvd3NTcmMgPSBbLi4uYy5yb3dzLmN1cnJlbnRWYWx1ZV07XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgbGVuZ3RoQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmdvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXN5bmNUYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhjLnJvd3MuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhjLnJvd3MuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjICYmIGMucHJlc2VsZWN0ZWRSb3dzICYmIGMucHJlc2VsZWN0ZWRSb3dzLmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvd3ModGhpcy5wcmVzZWxlY3RlZFJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgJiYgYy5wYWdpbmF0b3I/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3Iuc2V0TGVuZ3RoKHRoaXMucm93cy5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKCFjLnBhZ2luYXRvcj8uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IuZ29GaXJzdFBhZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMucm93cyBjYW4gYmUgY2hhbmdlZCBhbnl0aW1lLCB0aGVuIHRoaXMgZWxzZSBjYW4gYmUgZXhlY3V0ZWQgYXQgdGhhdCB0aW1lLCB0ZXN0aW5nIHRoaXMucGFnaW5hdG9yIGFsbG93cyB0byBtYWtlIHN1cmVcbiAgICAgICAgICAgIC8vIHRoZSB1c2VyIHdoYW50cyB0byBkaXNhYmxlIHBhZ2luYXRpb24gb3IgY2hhbmdlIHRoZSBkYXRhc291cmNlXG4gICAgICAgICAgICBpZiAoIXRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzUmVuZGVyZWQgPSB0aGlzLnJvd3NTcmMgPyB0aGlzLnJvd3NTcmMgOiBbLi4udGhpcy5yb3dzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm93c1NyYyA9IFsuLi50aGlzLnJvd3NdO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmUyZUF0dHIpIHtcbiAgICAgICAgICAgIHRoaXMuZTJlQXR0ciA9ICdldWktdGFibGUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2hlYWRlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2JvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZm9vdGVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZW1wdHlNZXNzYWdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hc3luY1RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc29ydGluZ1BhcmFtcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNvcnRpbmdQYXJhbXM6IHsgc29ydDogc3RyaW5nIHwgbnVsbDsgb3JkZXI6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHsgc29ydDogc29ydGluZ1BhcmFtcy5zb3J0LCBvcmRlcjogc29ydGluZ1BhcmFtcy5vcmRlciB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5tdWx0aXNvcnRQYXJhbXNTb3J0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtdWx0aVNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10pID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTb3J0Q2hhbmdlLmVtaXQobXVsdGlTb3J0UGFyYW1zLmZpbHRlcigoZWwpID0+IGVsLnBvc2l0aW9uID4gMCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RBbGxSb3dzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVuc2VsZWN0QWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnVuc2VsZWN0QWxsUm93cygpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBzZWxlY3RSb3dzKHJvd3M6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHJvd3MpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBmaWx0ZXJSb3dzKGZpbHRlcjogc3RyaW5nLCByOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IGZpbHRlclxuICAgICAgICAgICAgPyByLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IHRoaXMuZ2V0UHJvcHMocm93LCBmaWx0ZXIpLmZpbHRlcigocCkgPT4gcC5tYXRjaCA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmc/Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IHI7XG5cbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlc2V0Um93cygpO1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhyb3dzKTtcblxuICAgICAgICB0aGlzLmZpbHRlcmVkUm93cyA9IHJvd3M7XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNvcnQoc29ydDogc3RyaW5nIHwgbnVsbCwgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc2V0U29ydChzb3J0LCBvcmRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGlja3lGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCA9PT0gMCA/IDI1MCA6IDA7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib2R5VHJJdGVtcyA9IEFycmF5LmZyb20odGhpcy50Ym9keVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8uY2xpZW50V2lkdGggfHwgMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlYWRSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0aGlzLnRoZWFkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBsZWZ0ICYgcmlnaHQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICB0aEl0ZW1zLmZvckVhY2goKHRoOiBIVE1MVGFibGVDZWxsRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHMgJiBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0aEl0ZW1zLmZpbHRlcigodGgpID0+IHRoLm9mZnNldExlZnQgKyB0aC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRoSXRlbXMuZmlsdGVyKCh0aCkgPT4gdGgub2Zmc2V0TGVmdCArIHRoLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGhJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRoLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbCA9IHBhcnNlSW50KHRoSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LnN0eWxlLmxlZnQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUubGVmdCA9IChpID09PSAwID8gMCA6IHcgKyBsKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0aCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gdGhJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHBhcnNlSW50KHRoSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXT8uc3R5bGUucmlnaHQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSAoaSA9PT0gMCA/IDAgOiB3ICsgcikgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGhJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBib2R5VHJJdGVtcy5mb3JFYWNoKCh0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdGFibGVfX2NvbC0tc3RpY2t5JykpO1xuICAgICAgICAgICAgICAgIHRkSXRlbXMuZm9yRWFjaCgodGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUubGVmdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLnJpZ2h0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBib2R5VHJJdGVtcy5mb3JFYWNoKCh0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdGFibGVfX2NvbC0tc3RpY2t5JykpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0ZEl0ZW1zLmZpbHRlcigodGQpID0+IHRkLm9mZnNldExlZnQgKyB0ZC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRkSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uc3R5bGUubGVmdCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gKGkgPT09IDAgPyAwIDogdyArIGwpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRkSXRlbXNTdGlja3lGaXJzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IExhc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lMYXN0Q29sID0gdGRJdGVtcy5maWx0ZXIoKHRkKSA9PiB0ZC5vZmZzZXRMZWZ0ICsgdGQuY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUxhc3RDb2wucmV2ZXJzZSgpLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0ZEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5zdHlsZS5yaWdodCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHcgKyByKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5TGFzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtbGFzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGZvb3RSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0aGlzLnRmb290UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBsZWZ0ICYgcmlnaHQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICB0ZEl0ZW1zLmZvckVhY2goKHRoOiBIVE1MVGFibGVDZWxsRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHMgJiBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0ZEl0ZW1zLmZpbHRlcigodGQpID0+IHRkLm9mZnNldExlZnQgKyB0ZC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbCA9IHBhcnNlSW50KHRkSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LnN0eWxlLmxlZnQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUubGVmdCA9IChpID09PSAwID8gMCA6IHcgKyBsKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRkSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0ZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gdGRJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHBhcnNlSW50KHRkSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXT8uc3R5bGUucmlnaHQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucmlnaHQgPSAoaSA9PT0gMCA/IDAgOiB3ICsgcikgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGRJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0aW1lb3V0KTtcblxuICAgICAgICB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXgrKztcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhYmxlRmVhdHVyZXNIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc29ydGluZ1BhcmFtcyQsXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvciA/IHRoaXMucGFnaW5hdG9yLnBhZ2UkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyID8gdGhpcy5maWx0ZXIuZmlsdGVyJCA6IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCksXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2UubXVsdGlzb3J0UGFyYW1zU29ydCQsXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbc29ydGluZ1BhcmFtcywgcGFnaW5hdGlvbiwgZmlsdGVyLCBtdWx0aXNvcnRQYXJhbXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHIgPSBbLi4udGhpcy5yb3dzU3JjXTtcbiAgICAgICAgICAgICAgICBpZiAoc29ydGluZ1BhcmFtcy5vcmRlciAhPT0gbnVsbCAmJiBzb3J0aW5nUGFyYW1zLnNvcnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlzb3J0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIG11bHRpc29ydC5wdXNoKG5ldyBNdWx0aXNvcnRQYXJhbShzb3J0aW5nUGFyYW1zLnNvcnQsIHNvcnRpbmdQYXJhbXMub3JkZXIsIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZG9NdWx0aVNvcnQobXVsdGlzb3J0LCByKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobXVsdGlzb3J0UGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydGFibGVDb2x1bW5zID0gbXVsdGlzb3J0UGFyYW1zLmZpbHRlcigoY29sKSA9PiBjb2wub3JkZXIgIT09IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc29ydGFibGVDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmRvTXVsdGlTb3J0KHNvcnRhYmxlQ29sdW1ucywgcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuZmlsdGVyUm93cyhmaWx0ZXIsIHIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5zZXRMZW5ndGgoci5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5wYWdpbmF0ZVJvd3MocGFnaW5hdGlvbiwgcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzUmVuZGVyZWQgPSByO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdE9ubHlWaXNpYmxlUm93cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdEFsbFJvd3MoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3ModGhpcy5yb3dzUmVuZGVyZWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBkb011bHRpU29ydChtdWx0aXNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10sIHI6IGFueSk6IGFueVtdIHtcbiAgICAgICAgciA9IHRoaXMubXVsdGlTb3J0Um93cyhtdWx0aXNvcnRQYXJhbXMsIDEsIHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIG11bHRpU29ydFJvd3MobXVsdGlzb3J0UGFyYW1zOiBNdWx0aXNvcnRQYXJhbVtdLCBjdXJyZW50UG9zaXRpb246IG51bWJlciwgcjogYW55KTogYW55W10ge1xuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGxldCByb3dzOiBhbnlbXSA9IG51bGw7XG4gICAgICAgIGNvbnN0IGNvbFBhcmFtcyA9IG11bHRpc29ydFBhcmFtcy5maW5kKChjb2wpID0+IGNvbC5wb3NpdGlvbiA9PT0gY3VycmVudFBvc2l0aW9uKTtcbiAgICAgICAgaWYgKGNvbFBhcmFtcy5vcmRlciA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcm93cyA9IHIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbHVtblNvcnRhYmxlKGEsIGIsIG11bHRpc29ydFBhcmFtcywgY3VycmVudFBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0VHdvUm93c0Rlc2MoYSwgYiwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIHJvd3MgPSByLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb2x1bW5Tb3J0YWJsZShhLCBiLCBtdWx0aXNvcnRQYXJhbXMsIGN1cnJlbnRQb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydFR3b1Jvd3NBc2MoYSwgYiwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdWx0aXNvcnRQYXJhbXMubGVuZ3RoID09PSBjdXJyZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlTb3J0Um93cyhtdWx0aXNvcnRQYXJhbXMsICsrY3VycmVudFBvc2l0aW9uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgaXNDb2x1bW5Tb3J0YWJsZShhOiBhbnksIGI6IGFueSwgbXVsdGlzb3J0UGFyYW1zOiBNdWx0aXNvcnRQYXJhbVtdLCBjdXJyZW50UG9zaXRpb246IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uID09PSAxKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29sUGFyYW1zID0gbXVsdGlzb3J0UGFyYW1zLmZpbmQoKGNvbCkgPT4gY29sLnBvc2l0aW9uID09PSBjdXJyZW50UG9zaXRpb24gLSAxKTtcbiAgICAgICAgY29uc3QgYUNvbCA9IHRoaXMuZ2V0T2JqUHJvcFZhbHVlKGEsIGNvbFBhcmFtcy5uYW1lKTtcbiAgICAgICAgLy8gdHlwZW9mIHRoaXMuZ2V0T2JqUHJvcChhLCBjb2xQYXJhbXMubmFtZSkgPT09ICdzdHJpbmcnXG4gICAgICAgIC8vICAgICA/IHRoaXMuZ2V0T2JqUHJvcChhLCBjb2xQYXJhbXMubmFtZSkudG9Mb3dlckNhc2UoKVxuICAgICAgICAvLyAgICAgOiB0aGlzLmdldE9ialByb3AoYSwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICBjb25zdCBiQ29sID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYiwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAvLyB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGIsIGNvbFBhcmFtcy5uYW1lKSA9PT0gJ3N0cmluZydcbiAgICAgICAgLy8gICAgID8gdGhpcy5nZXRPYmpQcm9wKGIsIGNvbFBhcmFtcy5uYW1lKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC8vICAgICA6IHRoaXMuZ2V0T2JqUHJvcChiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgIGlmIChhQ29sICE9PSBiQ29sKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uIC0gMSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0NvbHVtblNvcnRhYmxlKGEsIGIsIG11bHRpc29ydFBhcmFtcywgLS1jdXJyZW50UG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UaGlzIGZ1bmN0aW9uIGlzIHRvIGRvIHRoZSBzb3J0aW5nIHRoZSB0YWJsZSB3aXRoIHRoZSBjb21iaW5hdGlvbiBvZiAwLG51bGwgYW5kIHRleHQgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAvL2dldE9ialByb3BWYWx1ZSBpcyB0byBnZXQgdGhlIG9iamVjdCBwcm9wZXJ0eSB2YWx1ZVxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgc29ydFR3b1Jvd3NEZXNjKGE6IGFueSwgYjogYW55LCBjb2xOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhU29ydE9uID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYSwgY29sTmFtZSk7XG4gICAgICAgIGNvbnN0IGJTb3J0T24gPSB0aGlzLmdldE9ialByb3BWYWx1ZShiLCBjb2xOYW1lKTtcbiAgICAgICAgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgYlNvcnRPbikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVNvcnRPbiAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIGJTb3J0T24gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKGFTb3J0T24gPT09IDAgJiYgKGJTb3J0T24gPT09IG51bGwgfHwgYlNvcnRPbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFTb3J0T24gPCBiU29ydE9uID8gMSA6IGFTb3J0T24gPiBiU29ydE9uID8gLTEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UaGlzIGZ1bmN0aW9uIGlzIHRvIGRvIHRoZSBzb3J0aW5nIHRoZSB0YWJsZSB3aXRoIHRoZSBjb21iaW5hdGlvbiBvZiAwLG51bGwgYW5kIHRleHQgaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgIC8vZ2V0T2JqUHJvcFZhbHVlIGlzIHRvIGdldCB0aGUgb2JqZWN0IHByb3BlcnR5IHZhbHVlXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzb3J0VHdvUm93c0FzYyhhOiBhbnksIGI6IGFueSwgY29sTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYVNvcnRPbiA9IHRoaXMuZ2V0T2JqUHJvcFZhbHVlKGEsIGNvbE5hbWUpO1xuICAgICAgICBjb25zdCBiU29ydE9uID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYiwgY29sTmFtZSk7XG4gICAgICAgIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIGJTb3J0T24pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmIChhU29ydE9uICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgKGJTb3J0T24gPT09IG51bGwgfHwgYlNvcnRPbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiBiU29ydE9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVNvcnRPbiA9PT0gMCAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhU29ydE9uIDwgYlNvcnRPbiA/IC0xIDogYVNvcnRPbiA+IGJTb3J0T24gPyAxIDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgZ2V0T2JqUHJvcFZhbHVlKG9iajogYW55LCBwcm9wOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0T2JqUHJvcChvYmosIHByb3ApO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXJTdWJzY3JpcHRpb24gPSB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0ZWRSb3dzJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZXRQcm9wcyhvYmo6IGFueVtdLCBmaWx0ZXI6IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IG1hdGNoOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXSB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3QgaXNPYmplY3QgPSAodmFsOiBhbnkpOiBib29sZWFuID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcbiAgICAgICAgY29uc3QgYWRkRGVsaW1pdGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogc3RyaW5nID0+IChhICYmIGEgIT09ICcwJyA/IGAke2F9LiR7Yn1gIDogYik7XG4gICAgICAgIGNvbnN0IHByb3BzID0gW107XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3QgcGF0aHMgPSAocGF0aE9iaiA9IHt9LCBoZWFkID0gJycpOiBhbnlbXSA9PlxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocGF0aE9iaikucmVkdWNlKChwcm9kdWN0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmdWxsUGF0aCA9IGFkZERlbGltaXRlcihoZWFkLCBrZXkpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gKHY6IGFueSk6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgICAgICAgICAgdiAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdiAhPT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgICAgICAgICAgICAgPy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoZmlsdGVyPy50cmltKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuXG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJzAnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucHVzaCh7IGtleTogYWRkRGVsaW1pdGVyKGhlYWQsIGtleSksIG1hdGNoOiBtYXRjaCh2YWx1ZSksIHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBpc09iamVjdCh2YWx1ZSkgPyBwcm9kdWN0LmNvbmNhdChwYXRocyh2YWx1ZSwgZnVsbFBhdGgpKSA6IHByb2R1Y3QuY29uY2F0KGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICBwYXRocyhvYmopO1xuXG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHBhZ2luYXRlUm93cyhwYWdpbmF0aW9uOiBQYWdpbmF0aW9uRXZlbnQsIHI6IGFueVtdKTogYW55W10ge1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdpbmF0aW9uLnBhZ2U7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuXG4gICAgICAgIHJldHVybiByLnNsaWNlKHRoaXMucGFnZSAqIHRoaXMucGFnZVNpemUsIHRoaXMucGFnZSAqIHRoaXMucGFnZVNpemUgKyB0aGlzLnBhZ2VTaXplKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGdldE9ialByb3Aob2JqOiBhbnksIHByb3A6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwcm9wID8gcHJvcC5zcGxpdCgnLicpLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHByZXYgPyBwcmV2W2N1cnJdIDogbnVsbCksIG9iaiB8fCBzZWxmKSA6IG51bGw7XG4gICAgfVxufVxuIiwiPHRoZWFkICN0aGVhZFJlZiAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbjwvdGhlYWQ+XG48dGJvZHkgI3Rib2R5UmVmICpuZ0lmPVwiYm9keVRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NSZW5kZXJlZDsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm9keVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSArIHBhZ2UgKiBwYWdlU2l6ZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1wdHlNZXNzYWdlVGVtcGxhdGUgJiYgcm93c1JlbmRlcmVkLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlNZXNzYWdlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC90Ym9keT5cbjx0Zm9vdCAjdGZvb3RSZWYgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG48L3Rmb290PlxuIl19
|
654
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS9ldWktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBVTNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBWWhELElBQTZDLFVBQVU7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFtQ0QsSUFBYSxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxx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SztnQkFTRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBU0YsZUFBZTtzQkFEbEIsS0FBSztnQkFTRixlQUFlO3NCQURsQixLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTRix1QkFBdUI7c0JBRDFCLEtBQUs7Z0JBU0YsZUFBZTtzQkFEbEIsS0FBSztnQkFrQkYsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgRXVpVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBFdWlQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLXBhZ2luYXRvcic7XG5cbmltcG9ydCB7IEV1aVRhYmxlU29ydFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V1aS10YWJsZS1zb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvcGFnaW5hdGlvbi1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBFdWlUYWJsZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyL2V1aS10YWJsZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V1aS10YWJsZS1zZWxlY3RhYmxlLXJvdy5zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4vbW9kZWxzL3NvcnQtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgTXVsdGlzb3J0UGFyYW0gfSBmcm9tICcuL21vZGVscy9tdWx0aS1zb3J0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktdGFibGUsIHRhYmxlW2V1aVRhYmxlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtFdWlUYWJsZVNvcnRTZXJ2aWNlLCBFdWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFibGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcm93czogYW55W10gPSBbXTtcbiAgICBASW5wdXQoKSBwcm9wSWQgPSAnaWQnO1xuICAgIEBJbnB1dCgpIHBhZ2luYXRvcjogRXVpUGFnaW5hdG9yQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGZpbHRlcjogRXVpVGFibGVGaWx0ZXJDb21wb25lbnQ7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcHJlc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHN0cmluZyA9ICdldWktdGFibGUnO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZXVpLXRhYmxlX19sb2FkaW5nJykgZ2V0IGhhc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gICAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbXVsdGlTb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aXNvcnRQYXJhbVtdPigpO1xuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBlbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgcm93c1JlbmRlcmVkOiBhbnlbXSA9IFtdO1xuXG4gICAgcHVibGljIHBhZ2UgPSAwO1xuICAgIHB1YmxpYyBwYWdlU2l6ZSA9IDA7XG4gICAgcHVibGljIHNob3dTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgZmlsdGVyZWRSb3dzID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEV1aVRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxFdWlUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicpIHRoZWFkUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Ym9keVJlZicpIHRib2R5UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Zm9vdFJlZicpIHRmb290UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgICB9XG4gICAgc2V0IGxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9sb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbG9hZGluZyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFzeW5jVGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hc3luY1RhYmxlO1xuICAgIH1cbiAgICBzZXQgYXN5bmNUYWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2FzeW5jVGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hc3luY1RhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcGFnaW5hYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnaW5hYmxlO1xuICAgIH1cbiAgICBzZXQgcGFnaW5hYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcGFnaW5hYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVSZXNwb25zaXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXVpVGFibGVSZXNwb25zaXZlO1xuICAgIH1cbiAgICBzZXQgZXVpVGFibGVSZXNwb25zaXZlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXVpVGFibGVSZXNwb25zaXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVSZXNwb25zaXZlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVGaXhlZExheW91dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlRml4ZWRMYXlvdXQ7XG4gICAgfVxuICAgIHNldCBldWlUYWJsZUZpeGVkTGF5b3V0KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXVpVGFibGVGaXhlZExheW91dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlRml4ZWRMYXlvdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZURyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlRHJhZ2dhYmxlO1xuICAgIH1cbiAgICBzZXQgZXVpVGFibGVEcmFnZ2FibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9ldWlUYWJsZURyYWdnYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlRHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZXVpVGFibGVDYXJkcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQ2FyZHM7XG4gICAgfVxuICAgIHNldCBldWlUYWJsZUNhcmRzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXVpVGFibGVDYXJkcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlQ2FyZHMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBldWlUYWJsZUJvcmRlcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXVpVGFibGVCb3JkZXJlZDtcbiAgICB9XG4gICAgc2V0IGV1aVRhYmxlQm9yZGVyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9ldWlUYWJsZUJvcmRlcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZXVpVGFibGVCb3JkZXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV1aVRhYmxlQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V1aVRhYmxlQ29tcGFjdDtcbiAgICB9XG4gICAgc2V0IGV1aVRhYmxlQ29tcGFjdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2V1aVRhYmxlQ29tcGFjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2V1aVRhYmxlQ29tcGFjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc1N0aWNreUhlYWRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1N0aWNreUhlYWRlcjtcbiAgICB9XG4gICAgc2V0IGhhc1N0aWNreUhlYWRlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc1N0aWNreUhlYWRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc1N0aWNreUhlYWRlciA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc1N0aWNreUNvbHVtbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNTdGlja3lDb2x1bW5zO1xuICAgIH1cbiAgICBzZXQgaGFzU3RpY2t5Q29sdW1ucyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc1N0aWNreUNvbHVtbnMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNTdGlja3lDb2x1bW5zID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgO1xuICAgIH1cbiAgICBzZXQgaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MgID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDb2xzT3JkZXJhYmxlICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29sc09yZGVyYWJsZSA7XG4gICAgfVxuICAgIHNldCBpc0NvbHNPcmRlcmFibGUgKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDb2xzT3JkZXJhYmxlICA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ29sc09yZGVyYWJsZSAgPSBmYWxzZTtcblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgcm93c1NyYzogYW55ID0gbnVsbDtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIHRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCA9IDA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVJlc3BvbnNpdmUgPyAnZXVpLXRhYmxlLS1yZXNwb25zaXZlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUZpeGVkTGF5b3V0ID8gJ2V1aS10YWJsZS0tZml4ZWQtbGF5b3V0JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUJvcmRlcmVkID8gJ2V1aS10YWJsZS0tYm9yZGVyZWQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQ29tcGFjdCA/ICdldWktdGFibGUtLWNvbXBhY3QnIDogJycsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlRHJhZ2dhYmxlID8gJ2V1aS10YWJsZS0tZHJhZ2dhYmxlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUNhcmRzID8gJ2V1aS10YWJsZS1jYXJkcycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaGFzU3RpY2t5SGVhZGVyID8gJ2V1aS10YWJsZS0tc3RpY2t5LWhlYWRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaGFzU3RpY2t5Q29sdW1ucyA/ICdldWktdGFibGUtLXN0aWNreS1jb2x1bW5zJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0NvbHNPcmRlcmFibGUgPyAnZXVpLXRhYmxlLS1jb2xzLW9yZGVyYWJsZScgOiAnJyxcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2V1aS10YWJsZScpLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGV1aVRhYmxlU29ydFNlcnZpY2U6IEV1aVRhYmxlU29ydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2U6IEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZXRQcm9wSWQodGhpcy5wcm9wSWQpO1xuICAgICAgICBpZiAoYyAmJiBjLnJvd3MgJiYgYy5yb3dzLmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAvLyBHbyB0byBmaXJzdCBwYWdlIG9ubHkgaWYgbGVuZ3RoIG9mIGRhdGEgaGFzIGNoYW5nZWQuIFRvIGF2b2lkIHVzZXIgdG8gYmUgb24gYSBwYWdlIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGluIGNhc2Ugb2YgZmlsdGVyaW5nLlxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoQ2hhbmdlZCA9IHRoaXMucm93c1NyYy5sZW5ndGggIT09IGMucm93cy5jdXJyZW50VmFsdWUubGVuZ3RoO1xuXG4gICAgICAgICAgICB0aGlzLnJvd3NTcmMgPSBbLi4uYy5yb3dzLmN1cnJlbnRWYWx1ZV07XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgbGVuZ3RoQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmdvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXN5bmNUYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhjLnJvd3MuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhjLnJvd3MuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjICYmIGMucHJlc2VsZWN0ZWRSb3dzICYmIGMucHJlc2VsZWN0ZWRSb3dzLmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvd3ModGhpcy5wcmVzZWxlY3RlZFJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgJiYgYy5wYWdpbmF0b3I/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3Iuc2V0TGVuZ3RoKHRoaXMucm93cy5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKCFjLnBhZ2luYXRvcj8uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IuZ29GaXJzdFBhZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMucm93cyBjYW4gYmUgY2hhbmdlZCBhbnl0aW1lLCB0aGVuIHRoaXMgZWxzZSBjYW4gYmUgZXhlY3V0ZWQgYXQgdGhhdCB0aW1lLCB0ZXN0aW5nIHRoaXMucGFnaW5hdG9yIGFsbG93cyB0byBtYWtlIHN1cmVcbiAgICAgICAgICAgIC8vIHRoZSB1c2VyIHdoYW50cyB0byBkaXNhYmxlIHBhZ2luYXRpb24gb3IgY2hhbmdlIHRoZSBkYXRhc291cmNlXG4gICAgICAgICAgICBpZiAoIXRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzUmVuZGVyZWQgPSB0aGlzLnJvd3NTcmMgPyB0aGlzLnJvd3NTcmMgOiBbLi4udGhpcy5yb3dzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm93c1NyYyA9IFsuLi50aGlzLnJvd3NdO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmUyZUF0dHIpIHtcbiAgICAgICAgICAgIHRoaXMuZTJlQXR0ciA9ICdldWktdGFibGUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2hlYWRlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2JvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZm9vdGVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZW1wdHlNZXNzYWdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hc3luY1RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc29ydGluZ1BhcmFtcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNvcnRpbmdQYXJhbXM6IHsgc29ydDogc3RyaW5nIHwgbnVsbDsgb3JkZXI6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHsgc29ydDogc29ydGluZ1BhcmFtcy5zb3J0LCBvcmRlcjogc29ydGluZ1BhcmFtcy5vcmRlciB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5tdWx0aXNvcnRQYXJhbXNTb3J0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtdWx0aVNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10pID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTb3J0Q2hhbmdlLmVtaXQobXVsdGlTb3J0UGFyYW1zLmZpbHRlcigoZWwpID0+IGVsLnBvc2l0aW9uID4gMCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RBbGxSb3dzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVuc2VsZWN0QWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnVuc2VsZWN0QWxsUm93cygpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBzZWxlY3RSb3dzKHJvd3M6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHJvd3MpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBmaWx0ZXJSb3dzKGZpbHRlcjogc3RyaW5nLCByOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IGZpbHRlclxuICAgICAgICAgICAgPyByLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IHRoaXMuZ2V0UHJvcHMocm93LCBmaWx0ZXIpLmZpbHRlcigocCkgPT4gcC5tYXRjaCA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmc/Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IHI7XG5cbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlc2V0Um93cygpO1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyhyb3dzKTtcblxuICAgICAgICB0aGlzLmZpbHRlcmVkUm93cyA9IHJvd3M7XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNvcnQoc29ydDogc3RyaW5nIHwgbnVsbCwgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc2V0U29ydChzb3J0LCBvcmRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGlja3lGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCA9PT0gMCA/IDI1MCA6IDA7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib2R5VHJJdGVtcyA9IEFycmF5LmZyb20odGhpcy50Ym9keVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8uY2xpZW50V2lkdGggfHwgMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlYWRSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0aGlzLnRoZWFkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBsZWZ0ICYgcmlnaHQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICB0aEl0ZW1zLmZvckVhY2goKHRoOiBIVE1MVGFibGVDZWxsRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHMgJiBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0aEl0ZW1zLmZpbHRlcigodGgpID0+IHRoLm9mZnNldExlZnQgKyB0aC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRoSXRlbXMuZmlsdGVyKCh0aCkgPT4gdGgub2Zmc2V0TGVmdCArIHRoLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGhJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRoLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbCA9IHBhcnNlSW50KHRoSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LnN0eWxlLmxlZnQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUubGVmdCA9IChpID09PSAwID8gMCA6IHcgKyBsKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0aCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gdGhJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHBhcnNlSW50KHRoSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXT8uc3R5bGUucmlnaHQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSAoaSA9PT0gMCA/IDAgOiB3ICsgcikgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGhJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBib2R5VHJJdGVtcy5mb3JFYWNoKCh0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdGFibGVfX2NvbC0tc3RpY2t5JykpO1xuICAgICAgICAgICAgICAgIHRkSXRlbXMuZm9yRWFjaCgodGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUubGVmdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLnJpZ2h0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBib2R5VHJJdGVtcy5mb3JFYWNoKCh0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdGFibGVfX2NvbC0tc3RpY2t5JykpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0ZEl0ZW1zLmZpbHRlcigodGQpID0+IHRkLm9mZnNldExlZnQgKyB0ZC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRkSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uc3R5bGUubGVmdCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gKGkgPT09IDAgPyAwIDogdyArIGwpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRkSXRlbXNTdGlja3lGaXJzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IExhc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lMYXN0Q29sID0gdGRJdGVtcy5maWx0ZXIoKHRkKSA9PiB0ZC5vZmZzZXRMZWZ0ICsgdGQuY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUxhc3RDb2wucmV2ZXJzZSgpLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0ZEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5zdHlsZS5yaWdodCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHcgKyByKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5TGFzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtbGFzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGZvb3RSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0aGlzLnRmb290UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBsZWZ0ICYgcmlnaHQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICB0ZEl0ZW1zLmZvckVhY2goKHRoOiBIVE1MVGFibGVDZWxsRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGguc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RpY2t5IEZpcnN0IENvbHMgJiBMYXN0IENvbHNcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wgPSB0ZEl0ZW1zLmZpbHRlcigodGQpID0+IHRkLm9mZnNldExlZnQgKyB0ZC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zU3RpY2t5TGFzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUZpcnN0Q29sLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbCA9IHBhcnNlSW50KHRkSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LnN0eWxlLmxlZnQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUubGVmdCA9IChpID09PSAwID8gMCA6IHcgKyBsKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRkSXRlbXNTdGlja3lMYXN0Q29sLnJldmVyc2UoKS5mb3JFYWNoKCh0ZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gdGRJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHBhcnNlSW50KHRkSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXT8uc3R5bGUucmlnaHQsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucmlnaHQgPSAoaSA9PT0gMCA/IDAgOiB3ICsgcikgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGRJdGVtc1N0aWNreUxhc3RDb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZC5jbGFzc0xpc3QuYWRkKCdldWktdGFibGVfX2NvbC0tc3RpY2t5LXNoYWRvd2VkLWxhc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0aW1lb3V0KTtcblxuICAgICAgICB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXgrKztcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhYmxlRmVhdHVyZXNIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc29ydGluZ1BhcmFtcyQsXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvciA/IHRoaXMucGFnaW5hdG9yLnBhZ2UkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyID8gdGhpcy5maWx0ZXIuZmlsdGVyJCA6IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCksXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2UubXVsdGlzb3J0UGFyYW1zU29ydCQsXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbc29ydGluZ1BhcmFtcywgcGFnaW5hdGlvbiwgZmlsdGVyLCBtdWx0aXNvcnRQYXJhbXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHIgPSBbLi4udGhpcy5yb3dzU3JjXTtcbiAgICAgICAgICAgICAgICBpZiAoc29ydGluZ1BhcmFtcy5vcmRlciAhPT0gbnVsbCAmJiBzb3J0aW5nUGFyYW1zLnNvcnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlzb3J0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIG11bHRpc29ydC5wdXNoKG5ldyBNdWx0aXNvcnRQYXJhbShzb3J0aW5nUGFyYW1zLnNvcnQsIHNvcnRpbmdQYXJhbXMub3JkZXIsIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZG9NdWx0aVNvcnQobXVsdGlzb3J0LCByKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobXVsdGlzb3J0UGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydGFibGVDb2x1bW5zID0gbXVsdGlzb3J0UGFyYW1zLmZpbHRlcigoY29sKSA9PiBjb2wub3JkZXIgIT09IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc29ydGFibGVDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmRvTXVsdGlTb3J0KHNvcnRhYmxlQ29sdW1ucywgcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuZmlsdGVyUm93cyhmaWx0ZXIsIHIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5zZXRMZW5ndGgoci5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5wYWdpbmF0ZVJvd3MocGFnaW5hdGlvbiwgcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzUmVuZGVyZWQgPSByO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdE9ubHlWaXNpYmxlUm93cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdEFsbFJvd3MoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3ModGhpcy5yb3dzUmVuZGVyZWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBkb011bHRpU29ydChtdWx0aXNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10sIHI6IGFueSk6IGFueVtdIHtcbiAgICAgICAgciA9IHRoaXMubXVsdGlTb3J0Um93cyhtdWx0aXNvcnRQYXJhbXMsIDEsIHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIG11bHRpU29ydFJvd3MobXVsdGlzb3J0UGFyYW1zOiBNdWx0aXNvcnRQYXJhbVtdLCBjdXJyZW50UG9zaXRpb246IG51bWJlciwgcjogYW55KTogYW55W10ge1xuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGxldCByb3dzOiBhbnlbXSA9IG51bGw7XG4gICAgICAgIGNvbnN0IGNvbFBhcmFtcyA9IG11bHRpc29ydFBhcmFtcy5maW5kKChjb2wpID0+IGNvbC5wb3NpdGlvbiA9PT0gY3VycmVudFBvc2l0aW9uKTtcbiAgICAgICAgaWYgKGNvbFBhcmFtcy5vcmRlciA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcm93cyA9IHIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbHVtblNvcnRhYmxlKGEsIGIsIG11bHRpc29ydFBhcmFtcywgY3VycmVudFBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0VHdvUm93c0Rlc2MoYSwgYiwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIHJvd3MgPSByLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb2x1bW5Tb3J0YWJsZShhLCBiLCBtdWx0aXNvcnRQYXJhbXMsIGN1cnJlbnRQb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydFR3b1Jvd3NBc2MoYSwgYiwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdWx0aXNvcnRQYXJhbXMubGVuZ3RoID09PSBjdXJyZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlTb3J0Um93cyhtdWx0aXNvcnRQYXJhbXMsICsrY3VycmVudFBvc2l0aW9uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgaXNDb2x1bW5Tb3J0YWJsZShhOiBhbnksIGI6IGFueSwgbXVsdGlzb3J0UGFyYW1zOiBNdWx0aXNvcnRQYXJhbVtdLCBjdXJyZW50UG9zaXRpb246IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uID09PSAxKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29sUGFyYW1zID0gbXVsdGlzb3J0UGFyYW1zLmZpbmQoKGNvbCkgPT4gY29sLnBvc2l0aW9uID09PSBjdXJyZW50UG9zaXRpb24gLSAxKTtcbiAgICAgICAgY29uc3QgYUNvbCA9IHRoaXMuZ2V0T2JqUHJvcFZhbHVlKGEsIGNvbFBhcmFtcy5uYW1lKTtcbiAgICAgICAgLy8gdHlwZW9mIHRoaXMuZ2V0T2JqUHJvcChhLCBjb2xQYXJhbXMubmFtZSkgPT09ICdzdHJpbmcnXG4gICAgICAgIC8vICAgICA/IHRoaXMuZ2V0T2JqUHJvcChhLCBjb2xQYXJhbXMubmFtZSkudG9Mb3dlckNhc2UoKVxuICAgICAgICAvLyAgICAgOiB0aGlzLmdldE9ialByb3AoYSwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICBjb25zdCBiQ29sID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYiwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAvLyB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGIsIGNvbFBhcmFtcy5uYW1lKSA9PT0gJ3N0cmluZydcbiAgICAgICAgLy8gICAgID8gdGhpcy5nZXRPYmpQcm9wKGIsIGNvbFBhcmFtcy5uYW1lKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC8vICAgICA6IHRoaXMuZ2V0T2JqUHJvcChiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgIGlmIChhQ29sICE9PSBiQ29sKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uIC0gMSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0NvbHVtblNvcnRhYmxlKGEsIGIsIG11bHRpc29ydFBhcmFtcywgLS1jdXJyZW50UG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UaGlzIGZ1bmN0aW9uIGlzIHRvIGRvIHRoZSBzb3J0aW5nIHRoZSB0YWJsZSB3aXRoIHRoZSBjb21iaW5hdGlvbiBvZiAwLG51bGwgYW5kIHRleHQgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAvL2dldE9ialByb3BWYWx1ZSBpcyB0byBnZXQgdGhlIG9iamVjdCBwcm9wZXJ0eSB2YWx1ZVxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgc29ydFR3b1Jvd3NEZXNjKGE6IGFueSwgYjogYW55LCBjb2xOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhU29ydE9uID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYSwgY29sTmFtZSk7XG4gICAgICAgIGNvbnN0IGJTb3J0T24gPSB0aGlzLmdldE9ialByb3BWYWx1ZShiLCBjb2xOYW1lKTtcbiAgICAgICAgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgYlNvcnRPbikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVNvcnRPbiAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIGJTb3J0T24gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKGFTb3J0T24gPT09IDAgJiYgKGJTb3J0T24gPT09IG51bGwgfHwgYlNvcnRPbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFTb3J0T24gPCBiU29ydE9uID8gMSA6IGFTb3J0T24gPiBiU29ydE9uID8gLTEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UaGlzIGZ1bmN0aW9uIGlzIHRvIGRvIHRoZSBzb3J0aW5nIHRoZSB0YWJsZSB3aXRoIHRoZSBjb21iaW5hdGlvbiBvZiAwLG51bGwgYW5kIHRleHQgaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgIC8vZ2V0T2JqUHJvcFZhbHVlIGlzIHRvIGdldCB0aGUgb2JqZWN0IHByb3BlcnR5IHZhbHVlXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzb3J0VHdvUm93c0FzYyhhOiBhbnksIGI6IGFueSwgY29sTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYVNvcnRPbiA9IHRoaXMuZ2V0T2JqUHJvcFZhbHVlKGEsIGNvbE5hbWUpO1xuICAgICAgICBjb25zdCBiU29ydE9uID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYiwgY29sTmFtZSk7XG4gICAgICAgIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIGJTb3J0T24pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmIChhU29ydE9uICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgKGJTb3J0T24gPT09IG51bGwgfHwgYlNvcnRPbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiBiU29ydE9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVNvcnRPbiA9PT0gMCAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhU29ydE9uIDwgYlNvcnRPbiA/IC0xIDogYVNvcnRPbiA+IGJTb3J0T24gPyAxIDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgZ2V0T2JqUHJvcFZhbHVlKG9iajogYW55LCBwcm9wOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0T2JqUHJvcChvYmosIHByb3ApO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXJTdWJzY3JpcHRpb24gPSB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0ZWRSb3dzJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZXRQcm9wcyhvYmo6IGFueVtdLCBmaWx0ZXI6IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IG1hdGNoOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXSB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3QgaXNPYmplY3QgPSAodmFsOiBhbnkpOiBib29sZWFuID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcbiAgICAgICAgY29uc3QgYWRkRGVsaW1pdGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogc3RyaW5nID0+IChhICYmIGEgIT09ICcwJyA/IGAke2F9LiR7Yn1gIDogYik7XG4gICAgICAgIGNvbnN0IHByb3BzID0gW107XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3QgcGF0aHMgPSAocGF0aE9iaiA9IHt9LCBoZWFkID0gJycpOiBhbnlbXSA9PlxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocGF0aE9iaikucmVkdWNlKChwcm9kdWN0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmdWxsUGF0aCA9IGFkZERlbGltaXRlcihoZWFkLCBrZXkpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gKHY6IGFueSk6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgICAgICAgICAgdiAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdiAhPT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgICAgICAgICAgICAgPy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoZmlsdGVyPy50cmltKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuXG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJzAnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucHVzaCh7IGtleTogYWRkRGVsaW1pdGVyKGhlYWQsIGtleSksIG1hdGNoOiBtYXRjaCh2YWx1ZSksIHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBpc09iamVjdCh2YWx1ZSkgPyBwcm9kdWN0LmNvbmNhdChwYXRocyh2YWx1ZSwgZnVsbFBhdGgpKSA6IHByb2R1Y3QuY29uY2F0KGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICBwYXRocyhvYmopO1xuXG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHBhZ2luYXRlUm93cyhwYWdpbmF0aW9uOiBQYWdpbmF0aW9uRXZlbnQsIHI6IGFueVtdKTogYW55W10ge1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdpbmF0aW9uLnBhZ2U7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuXG4gICAgICAgIHJldHVybiByLnNsaWNlKHRoaXMucGFnZSAqIHRoaXMucGFnZVNpemUsIHRoaXMucGFnZSAqIHRoaXMucGFnZVNpemUgKyB0aGlzLnBhZ2VTaXplKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGdldE9ialByb3Aob2JqOiBhbnksIHByb3A6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwcm9wID8gcHJvcC5zcGxpdCgnLicpLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHByZXYgPyBwcmV2W2N1cnJdIDogbnVsbCksIG9iaiB8fCBzZWxmKSA6IG51bGw7XG4gICAgfVxufVxuIiwiPHRoZWFkICN0aGVhZFJlZiAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbjwvdGhlYWQ+XG48dGJvZHkgI3Rib2R5UmVmICpuZ0lmPVwiYm9keVRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NSZW5kZXJlZDsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm9keVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSArIHBhZ2UgKiBwYWdlU2l6ZSB9XCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5TWVzc2FnZVRlbXBsYXRlICYmIHJvd3NSZW5kZXJlZC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5TWVzc2FnZVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvdGJvZHk+XG48dGZvb3QgI3Rmb290UmVmICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuPC90Zm9vdD5cbiJdfQ==
|
@@ -73,6 +73,9 @@ export declare class EuiTableComponent extends BaseDirective implements AfterCon
|
|
73
73
|
get isSelectOnlyVisibleRows(): boolean;
|
74
74
|
set isSelectOnlyVisibleRows(value: BooleanInput);
|
75
75
|
private _isSelectOnlyVisibleRows;
|
76
|
+
get isColsOrderable(): boolean;
|
77
|
+
set isColsOrderable(value: BooleanInput);
|
78
|
+
private _isColsOrderable;
|
76
79
|
private rowsSrc;
|
77
80
|
private destroy$;
|
78
81
|
private tableFeaturesHandlerSubscription;
|
@@ -104,6 +107,6 @@ export declare class EuiTableComponent extends BaseDirective implements AfterCon
|
|
104
107
|
private paginateRows;
|
105
108
|
private getObjProp;
|
106
109
|
static ɵfac: i0.ɵɵFactoryDeclaration<EuiTableComponent, never>;
|
107
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EuiTableComponent, "eui-table, table[euiTable]", never, { "rows": { "alias": "rows"; "required": false; }; "propId": { "alias": "propId"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "preselectedRows": { "alias": "preselectedRows"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "asyncTable": { "alias": "asyncTable"; "required": false; }; "paginable": { "alias": "paginable"; "required": false; }; "euiTableResponsive": { "alias": "euiTableResponsive"; "required": false; }; "euiTableFixedLayout": { "alias": "euiTableFixedLayout"; "required": false; }; "euiTableDraggable": { "alias": "euiTableDraggable"; "required": false; }; "euiTableCards": { "alias": "euiTableCards"; "required": false; }; "euiTableBordered": { "alias": "euiTableBordered"; "required": false; }; "euiTableCompact": { "alias": "euiTableCompact"; "required": false; }; "hasStickyHeader": { "alias": "hasStickyHeader"; "required": false; }; "hasStickyColumns": { "alias": "hasStickyColumns"; "required": false; }; "isSelectOnlyVisibleRows": { "alias": "isSelectOnlyVisibleRows"; "required": false; }; }, { "selectedRows": "selectedRows"; "sortChange": "sortChange"; "multiSortChange": "multiSortChange"; }, ["templates"], never, false, never>;
|
110
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EuiTableComponent, "eui-table, table[euiTable]", never, { "rows": { "alias": "rows"; "required": false; }; "propId": { "alias": "propId"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "preselectedRows": { "alias": "preselectedRows"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "asyncTable": { "alias": "asyncTable"; "required": false; }; "paginable": { "alias": "paginable"; "required": false; }; "euiTableResponsive": { "alias": "euiTableResponsive"; "required": false; }; "euiTableFixedLayout": { "alias": "euiTableFixedLayout"; "required": false; }; "euiTableDraggable": { "alias": "euiTableDraggable"; "required": false; }; "euiTableCards": { "alias": "euiTableCards"; "required": false; }; "euiTableBordered": { "alias": "euiTableBordered"; "required": false; }; "euiTableCompact": { "alias": "euiTableCompact"; "required": false; }; "hasStickyHeader": { "alias": "hasStickyHeader"; "required": false; }; "hasStickyColumns": { "alias": "hasStickyColumns"; "required": false; }; "isSelectOnlyVisibleRows": { "alias": "isSelectOnlyVisibleRows"; "required": false; }; "isColsOrderable": { "alias": "isColsOrderable"; "required": false; }; }, { "selectedRows": "selectedRows"; "sortChange": "sortChange"; "multiSortChange": "multiSortChange"; }, ["templates"], never, false, never>;
|
108
111
|
}
|
109
112
|
//# sourceMappingURL=eui-table.component.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-table.component.d.ts","sourceRoot":"","sources":["../../eui-table/eui-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,aAAa,EAEb,iBAAiB,EAGjB,UAAU,EACV,YAAY,EAGZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,SAAS,EACT,aAAa,EACb,WAAW,EAGd,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAyB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;;AAE3D,qBAQa,iBAAkB,SAAQ,aAAc,YAAW,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS;
|
1
|
+
{"version":3,"file":"eui-table.component.d.ts","sourceRoot":"","sources":["../../eui-table/eui-table.component.ts"],"names":[],"mappings":"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"}
|
@@ -6,12 +6,12 @@ import * as i1 from '@angular/cdk/overlay';
|
|
6
6
|
import { ConnectionPositionPair } from '@angular/cdk/overlay';
|
7
7
|
import { Subject, BehaviorSubject, Subscription, timer, fromEvent, take } from 'rxjs';
|
8
8
|
import { ComponentPortal } from '@angular/cdk/portal';
|
9
|
-
import {
|
9
|
+
import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';
|
10
10
|
import * as i1$1 from '@angular/forms';
|
11
11
|
import { NgControl, NgModel } from '@angular/forms';
|
12
12
|
import * as i1$2 from '@eui/core';
|
13
13
|
import { EuiIconSvgComponent, EuiIconComponent } from '@eui/components/eui-icon';
|
14
|
-
import {
|
14
|
+
import { tap, takeUntil, map, distinctUntilChanged } from 'rxjs/operators';
|
15
15
|
|
16
16
|
class EuiTemplateDirective {
|
17
17
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
@@ -7,11 +7,11 @@ import { TemplatePortal } from '@angular/cdk/portal';
|
|
7
7
|
import * as i1$1 from '@angular/cdk/overlay';
|
8
8
|
import { ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
|
9
9
|
import * as uuid from 'uuid';
|
10
|
-
import {
|
10
|
+
import { EuiChip, EuiChipTooltip, EuiChipModule } from '@eui/components/eui-chip';
|
11
11
|
import { EuiTemplateDirective } from '@eui/components/directives';
|
12
12
|
import * as i1 from '@eui/components/shared';
|
13
13
|
import { BaseStatesDirective } from '@eui/components/shared';
|
14
|
-
import {
|
14
|
+
import { trigger, state, style, transition, group, animate } from '@angular/animations';
|
15
15
|
import * as i2 from '@angular/cdk/a11y';
|
16
16
|
import { A11yModule } from '@angular/cdk/a11y';
|
17
17
|
import * as i3 from '@angular/cdk/scrolling';
|