@seniorsistemas/data-seniorx-core 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/config/dynamic-view-builder.config.d.ts +3 -0
- package/core/constants/dynamic-view-builder.const.d.ts +15 -0
- package/core/constants/picklist.const.d.ts +4 -0
- package/core/constants/timeline.const.d.ts +6 -0
- package/core/types/confirm.type.d.ts +1 -0
- package/core/types/dynamic-view-builder.type.d.ts +130 -0
- package/core/types/row-card.type.d.ts +10 -0
- package/core/types/timeline.type.d.ts +22 -0
- package/esm2022/core/config/dynamic-view-builder.config.mjs +396 -0
- package/esm2022/core/config/row-card.type.config.mjs +2 -1
- package/esm2022/core/constants/dynamic-view-builder.const.mjs +24 -0
- package/esm2022/core/constants/picklist.const.mjs +5 -1
- package/esm2022/core/constants/timeline.const.mjs +6 -0
- package/esm2022/core/handlers/sqlFormatter.mjs +3 -2
- package/esm2022/core/types/confirm.type.mjs +1 -1
- package/esm2022/core/types/dynamic-view-builder.type.mjs +2 -0
- package/esm2022/core/types/row-card.type.mjs +1 -1
- package/esm2022/core/types/timeline.type.mjs +2 -0
- package/esm2022/core/utils/layout.util.mjs +4 -4
- package/esm2022/core/utils/number-input.util.mjs +2 -2
- package/esm2022/features/breadcrumb/breadcrumb.component.mjs +21 -3
- package/esm2022/features/button/button.component.mjs +5 -5
- package/esm2022/features/card-list/card/card.component.mjs +4 -6
- package/esm2022/features/card-list/card-list.component.mjs +4 -7
- package/esm2022/features/code-editor/code-editor.component.mjs +5 -5
- package/esm2022/features/color-picker/color-picker.component.mjs +4 -4
- package/esm2022/features/combobox/combobox.component.mjs +8 -8
- package/esm2022/features/confirm/confirm.component.mjs +8 -4
- package/esm2022/features/country-phone-picker/country-phone-picker.component.mjs +6 -8
- package/esm2022/features/empty-state/empty-state.component.mjs +3 -3
- package/esm2022/features/hyperlink/hyperlink.component.mjs +10 -12
- package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
- package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
- package/esm2022/features/list/list.component.mjs +1 -1
- package/esm2022/features/loading-state/loading-state.component.mjs +20 -25
- package/esm2022/features/localized-number-input/localized-number-input.component.mjs +4 -4
- package/esm2022/features/mask/mask.component.mjs +4 -4
- package/esm2022/features/modal/modal.component.mjs +5 -5
- package/esm2022/features/modalc/modalc.component.mjs +1 -1
- package/esm2022/features/number-input/number-input.component.mjs +4 -4
- package/esm2022/features/numeric/numeric.component.mjs +4 -6
- package/esm2022/features/paginator/paginator.component.mjs +2 -2
- package/esm2022/features/password-strength/password-strength.component.mjs +3 -3
- package/esm2022/features/picklist/picklist.component.mjs +50 -9
- package/esm2022/features/radio/radio.component.mjs +12 -12
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +32 -9
- package/esm2022/features/row-card-list/row-card-list.component.mjs +3 -3
- package/esm2022/features/searchbox/searchbox.component.mjs +1 -1
- package/esm2022/features/sidebar/sidebar.component.mjs +7 -3
- package/esm2022/features/switch/switch.component.mjs +3 -3
- package/esm2022/features/table/table.component.mjs +3 -3
- package/esm2022/features/textarea/textarea.component.mjs +4 -4
- package/esm2022/features/textbox/textbox.component.mjs +4 -4
- package/esm2022/features/timeline/timeline.component.mjs +90 -0
- package/esm2022/features/toast/toast.component.mjs +4 -6
- package/esm2022/features/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2810 -0
- package/esm2022/locales/en.json +202 -1
- package/esm2022/locales/es-CO.json +202 -1
- package/esm2022/locales/pt.json +202 -1
- package/esm2022/public-api.mjs +6 -1
- package/features/breadcrumb/breadcrumb.component.d.ts +2 -0
- package/features/button/button.component.d.ts +2 -2
- package/features/code-editor/code-editor.component.d.ts +2 -2
- package/features/hyperlink/hyperlink.component.d.ts +3 -3
- package/features/loading-state/loading-state.component.d.ts +3 -4
- package/features/modal/modal.component.d.ts +2 -2
- package/features/picklist/picklist.component.d.ts +10 -1
- package/features/radio/radio.component.d.ts +4 -4
- package/features/row-card-list/row-card/row-card.component.d.ts +8 -1
- package/features/sidebar/sidebar.component.d.ts +2 -1
- package/features/timeline/timeline.component.d.ts +27 -0
- package/features/visual-sql-editor/visual-sql-editor.component.d.ts +560 -0
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +4161 -176
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +7 -0
- package/src/locales/en.json +211 -1
- package/src/locales/es-CO.json +211 -1
- package/src/locales/pt.json +211 -1
- package/styles.css +1 -1
|
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
|
|
|
2
2
|
import { FormsModule } from '@angular/forms';
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, NgZone, Output, ViewChild, ViewEncapsulation, computed, inject, signal } from '@angular/core';
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
-
import { DEFAULT_PICKLIST_AUTO_RESIZE, DEFAULT_PICKLIST_AUTO_RESIZE_ITEM_HEIGHT, DEFAULT_PICKLIST_AUTO_RESIZE_MAX_ROWS, DEFAULT_PICKLIST_AUTO_RESIZE_MIN_ROWS, DEFAULT_PICKLIST_AUTO_RESIZE_VIEWPORT_OFFSET, DEFAULT_PICKLIST_FIRST, DEFAULT_PICKLIST_ICON_CLASS, DEFAULT_PICKLIST_ID_KEY, DEFAULT_PICKLIST_MAX_VISIBLE_SELECTED_ITEMS, DEFAULT_PICKLIST_PLACEHOLDER, DEFAULT_PICKLIST_ROWS, DEFAULT_PICKLIST_ROWS_PER_PAGE_OPTIONS, DEFAULT_PICKLIST_SELECTION_ICON_CLASS, DEFAULT_PICKLIST_SHOW_ITEM_ICON, DEFAULT_PICKLIST_SHOW_PAGINATOR, DEFAULT_PICKLIST_SHOW_RESULTS_COUNTER, DEFAULT_PICKLIST_SHOW_ROWS_PER_PAGE_OPTIONS, DEFAULT_PICKLIST_SHOW_SELECTION_COUNTER, DEFAULT_PICKLIST_SUBTITLE_KEY, DEFAULT_PICKLIST_TITLE_KEY, PICKLIST_DIVISOR_FALLBACK, PICKLIST_LOADING_BLOCK_DELAY_MS, PICKLIST_LOADING_BLOCK_WINDOW, PICKLIST_LOADING_INDICATOR, PICKLIST_MIN_SKELETON_ROWS, PICKLIST_PAGE_INDEX } from '../../core/constants/picklist.const';
|
|
5
|
+
import { DEFAULT_PICKLIST_AUTO_RESIZE, DEFAULT_PICKLIST_AUTO_RESIZE_ITEM_HEIGHT, DEFAULT_PICKLIST_AUTO_RESIZE_MAX_ROWS, DEFAULT_PICKLIST_AUTO_RESIZE_MIN_ROWS, DEFAULT_PICKLIST_AUTO_RESIZE_VIEWPORT_OFFSET, DEFAULT_PICKLIST_EMPTY_TEXT, DEFAULT_PICKLIST_EMPTY_TITLE, DEFAULT_PICKLIST_FIRST, DEFAULT_PICKLIST_ICON_CLASS, DEFAULT_PICKLIST_ID_KEY, DEFAULT_PICKLIST_MAX_VISIBLE_SELECTED_ITEMS, DEFAULT_PICKLIST_PLACEHOLDER, DEFAULT_PICKLIST_RESULTS_COUNTER_PLURAL_LABEL, DEFAULT_PICKLIST_RESULTS_COUNTER_SINGULAR_LABEL, DEFAULT_PICKLIST_ROWS, DEFAULT_PICKLIST_ROWS_PER_PAGE_OPTIONS, DEFAULT_PICKLIST_SELECTION_ICON_CLASS, DEFAULT_PICKLIST_SHOW_ITEM_ICON, DEFAULT_PICKLIST_SHOW_PAGINATOR, DEFAULT_PICKLIST_SHOW_RESULTS_COUNTER, DEFAULT_PICKLIST_SHOW_ROWS_PER_PAGE_OPTIONS, DEFAULT_PICKLIST_SHOW_SELECTION_COUNTER, DEFAULT_PICKLIST_SUBTITLE_KEY, DEFAULT_PICKLIST_TITLE_KEY, PICKLIST_DIVISOR_FALLBACK, PICKLIST_LOADING_BLOCK_DELAY_MS, PICKLIST_LOADING_BLOCK_WINDOW, PICKLIST_LOADING_INDICATOR, PICKLIST_MIN_SKELETON_ROWS, PICKLIST_PAGE_INDEX } from '../../core/constants/picklist.const';
|
|
6
6
|
import { toInteger } from '../../core/utils/number.util';
|
|
7
7
|
import { CheckboxComponent } from '../checkbox/checkbox.component';
|
|
8
8
|
import { LoadingStateComponent } from '../loading-state/loading-state.component';
|
|
@@ -23,6 +23,11 @@ export class PicklistComponent {
|
|
|
23
23
|
iconClass = DEFAULT_PICKLIST_ICON_CLASS;
|
|
24
24
|
selectionIconClass = DEFAULT_PICKLIST_SELECTION_ICON_CLASS;
|
|
25
25
|
placeholder = DEFAULT_PICKLIST_PLACEHOLDER;
|
|
26
|
+
emptyTitle = DEFAULT_PICKLIST_EMPTY_TITLE;
|
|
27
|
+
emptyText = DEFAULT_PICKLIST_EMPTY_TEXT;
|
|
28
|
+
resultsCounterSingularLabel = DEFAULT_PICKLIST_RESULTS_COUNTER_SINGULAR_LABEL;
|
|
29
|
+
resultsCounterPluralLabel = DEFAULT_PICKLIST_RESULTS_COUNTER_PLURAL_LABEL;
|
|
30
|
+
filterFields = [];
|
|
26
31
|
first = DEFAULT_PICKLIST_FIRST;
|
|
27
32
|
rows = DEFAULT_PICKLIST_ROWS;
|
|
28
33
|
rowsPerPageOptions = [...DEFAULT_PICKLIST_ROWS_PER_PAGE_OPTIONS];
|
|
@@ -112,9 +117,7 @@ export class PicklistComponent {
|
|
|
112
117
|
return this.items;
|
|
113
118
|
}
|
|
114
119
|
return this.items.filter((item) => {
|
|
115
|
-
|
|
116
|
-
const subtitle = String(item?.[this.subtitleKey] ?? '').toLowerCase();
|
|
117
|
-
return title.includes(query) || subtitle.includes(query);
|
|
120
|
+
return this.getFilterableValues(item).some((value) => value.includes(query));
|
|
118
121
|
});
|
|
119
122
|
}
|
|
120
123
|
get totalResults() {
|
|
@@ -170,6 +173,11 @@ export class PicklistComponent {
|
|
|
170
173
|
get activeRows() {
|
|
171
174
|
return this.rowsValue;
|
|
172
175
|
}
|
|
176
|
+
get resultsCounterLabel() {
|
|
177
|
+
return this.totalRecords === 1
|
|
178
|
+
? this.resultsCounterSingularLabel
|
|
179
|
+
: this.resultsCounterPluralLabel;
|
|
180
|
+
}
|
|
173
181
|
get paginatorRowsPerPageOptions() {
|
|
174
182
|
return this.showRowsPerPageOptions ? this.rowsPerPageOptions : [];
|
|
175
183
|
}
|
|
@@ -215,11 +223,34 @@ export class PicklistComponent {
|
|
|
215
223
|
this.selectedIdsChange.emit([...this.sel]);
|
|
216
224
|
this.cdr.markForCheck();
|
|
217
225
|
}
|
|
226
|
+
getFilterableValues(item) {
|
|
227
|
+
return this.resolveFilterFieldPaths().map((path) => this.getItemValueByPath(item, path));
|
|
228
|
+
}
|
|
229
|
+
resolveFilterFieldPaths() {
|
|
230
|
+
if (this.filterFields.length > 0) {
|
|
231
|
+
return this.filterFields.filter((field) => field.trim().length > 0);
|
|
232
|
+
}
|
|
233
|
+
return [this.titleKey, this.subtitleKey].filter((field) => field.trim().length > 0);
|
|
234
|
+
}
|
|
235
|
+
getItemValueByPath(item, path) {
|
|
236
|
+
const segments = path
|
|
237
|
+
.split('.')
|
|
238
|
+
.map((segment) => segment.trim())
|
|
239
|
+
.filter((segment) => segment.length > 0);
|
|
240
|
+
let current = item;
|
|
241
|
+
for (const segment of segments) {
|
|
242
|
+
if (current === null || current === undefined || typeof current !== 'object') {
|
|
243
|
+
return '';
|
|
244
|
+
}
|
|
245
|
+
current = current[segment];
|
|
246
|
+
}
|
|
247
|
+
return String(current ?? '').toLowerCase();
|
|
248
|
+
}
|
|
218
249
|
updateRowsFromViewport() {
|
|
219
|
-
if (!this.autoResize || typeof window === 'undefined') {
|
|
250
|
+
if (!this.autoResize || typeof globalThis.window === 'undefined') {
|
|
220
251
|
return;
|
|
221
252
|
}
|
|
222
|
-
const viewportHeight = window.innerHeight;
|
|
253
|
+
const viewportHeight = globalThis.window.innerHeight;
|
|
223
254
|
const searchHeight = this.searchSectionRef?.nativeElement.offsetHeight ?? 0;
|
|
224
255
|
const selectedHeight = this.selectedSectionRef?.nativeElement.offsetHeight ?? 0;
|
|
225
256
|
const footerHeight = this.footerSectionRef?.nativeElement.offsetHeight ?? 0;
|
|
@@ -235,7 +266,7 @@ export class PicklistComponent {
|
|
|
235
266
|
}
|
|
236
267
|
}
|
|
237
268
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PicklistComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
238
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PicklistComponent, isStandalone: true, selector: "sdc-picklist", inputs: { items: "items", selectedIds: "selectedIds", idKey: "idKey", titleKey: "titleKey", subtitleKey: "subtitleKey", iconClass: "iconClass", selectionIconClass: "selectionIconClass", placeholder: "placeholder", first: "first", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", maxVisibleSelectedItems: "maxVisibleSelectedItems", showPaginator: "showPaginator", showRowsPerPageOptions: "showRowsPerPageOptions", showSelectionCounter: "showSelectionCounter", showResultsCounter: "showResultsCounter", showItemIcon: "showItemIcon", autoResize: "autoResize", autoResizeMinRows: "autoResizeMinRows", autoResizeMaxRows: "autoResizeMaxRows", autoResizeItemHeight: "autoResizeItemHeight", autoResizeViewportOffset: "autoResizeViewportOffset", loading: "loading" }, outputs: { pageChange: "pageChange", selectedIdsChange: "selectedIdsChange" }, viewQueries: [{ propertyName: "searchSectionRef", first: true, predicate: ["searchSection"], descendants: true }, { propertyName: "selectedSectionRef", first: true, predicate: ["selectedSection"], descendants: true }, { propertyName: "footerSectionRef", first: true, predicate: ["footerSection"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sdc-picklist\">\n <sdc-loading-state\n class=\"sdc-picklist__loading-state\"\n [loading]=\"isLoading()\"\n [blockWindow]=\"loadingBlockWindow\"\n [indicator]=\"loadingIndicator\"\n [blockDelayMs]=\"loadingBlockDelayMs\"\n >\n <div #searchSection class=\"sdc-picklist__search\">\n <sdc-searchbox\n [placeholder]=\"placeholder | translate\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchTerm($event)\"\n ></sdc-searchbox>\n </div>\n\n <div\n #selectedSection\n class=\"sdc-picklist__selected\"\n [class.sdc-picklist__selected--has-items]=\"selectedCount > 0\"\n >\n @if (selectedCount > 0) {\n <div class=\"sdc-picklist__chips\" [class.sdc-picklist__chips--expanded]=\"selectedExpanded\">\n @for (item of visibleSelectedItems; track trackById($index, item)) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip\"\n (click)=\"remove(item)\"\n >\n <span class=\"sdc-picklist__chip-text\">{{ getTitle(item) | translate }}</span>\n <span class=\"sdc-picklist__chip-x\">\u00D7</span>\n </button>\n }\n\n @if (!selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--more\"\n (click)=\"toggleSelectedExpanded(true)\"\n >\n +{{ hiddenSelectedCount }}\n </button>\n }\n\n @if (selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--less\"\n (click)=\"toggleSelectedExpanded(false)\"\n >\n {{ 'platform.datacore.less' | translate }}\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"sdc-picklist__content\">\n @if (showSkeleton) {\n <ul class=\"sdc-picklist__list\">\n @for (row of skeletonRows; track row) {\n <li class=\"sdc-picklist__list-item sdc-picklist__list-item--skeleton\">\n <div class=\"sdc-picklist__item sdc-picklist__item--skeleton\"></div>\n </li>\n }\n </ul>\n } @else if (pageItems.length > 0) {\n <ul class=\"sdc-picklist__list\">\n @for (item of pageItems; track trackById($index, item)) {\n <li class=\"sdc-picklist__list-item\">\n <button\n type=\"button\"\n class=\"sdc-picklist__item\"\n [class.sdc-picklist__item--selected]=\"isSelected(item)\"\n (click)=\"rowClick(item)\"\n >\n <span class=\"sdc-picklist__check\" (click)=\"$event.stopPropagation()\">\n <sdc-checkbox\n [ngModel]=\"isSelected(item)\"\n (ngModelChange)=\"toggle(item, $event)\"\n ></sdc-checkbox>\n </span>\n\n @if (showItemIcon) {\n <span class=\"sdc-picklist__icon\">\n <i [class]=\"iconClass\"></i>\n </span>\n }\n\n <span class=\"sdc-picklist__texts\">\n <span class=\"sdc-picklist__title\">{{ getTitle(item) | translate }}</span>\n @if (getSubtitle(item)) {\n <span class=\"sdc-picklist__subtitle\">{{ getSubtitle(item) | translate }}</span>\n }\n </span>\n </button>\n </li>\n }\n </ul>\n } @else {\n <div class=\"sdc-picklist__empty\">\n <i class=\"fas fa-search sdc-picklist__empty-icon\"></i>\n <div class=\"sdc-picklist__empty-title\">\n {{ 'platform.datacore.no_results' | translate }}\n </div>\n <div class=\"sdc-picklist__empty-text\">\n {{ 'platform.datacore.try_other_filters' | translate }}\n </div>\n </div>\n }\n </div>\n\n @if (showPaginator && totalRecords > 0) {\n <div #footerSection class=\"sdc-picklist__footer\">\n <div class=\"sdc-picklist__footer-left\">\n @if (showSelectionCounter) {\n <div class=\"sdc-picklist__selection-counter-wrap\">\n <button type=\"button\" class=\"sdc-picklist__selection-counter\">\n <i [class]=\"selectionIconClass\"></i>\n <span>{{ selectedCount }}</span>\n </button>\n </div>\n }\n\n <div class=\"sdc-picklist__footer-paginator\">\n <sdc-paginator\n [first]=\"firstValue\"\n [rows]=\"activeRows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"paginatorRowsPerPageOptions\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n </div>\n\n @if (showResultsCounter) {\n <div class=\"sdc-picklist__results\">\n {{ totalRecords }}\n </div>\n }\n </div>\n }\n </sdc-loading-state>\n</div>\n", styles: [":host{display:block}.sdc-picklist{width:100%}.sdc-picklist__loading-state{display:block;width:100%}.sdc-picklist__search{padding-bottom:.75rem}.sdc-picklist__content{width:100%}.sdc-picklist__selected{padding:.25rem 0 .75rem}.sdc-picklist__chips{display:flex;gap:.5rem;align-items:center;flex-wrap:nowrap;overflow:hidden;min-width:0}.sdc-picklist__chips--expanded{flex-wrap:wrap;overflow:visible}.sdc-picklist__chip{display:inline-flex;align-items:center;gap:.5rem;border:1px solid transparent;background:var(--sdc-picklist-selected-bg, #eeebf2);border-radius:var(--sdc-picklist-chip-radius, 6px);padding:.25rem .5rem;cursor:pointer;transition:border-color .16s ease-out,background-color .16s ease-out;flex:0 1 auto;min-width:0}.sdc-picklist__chip:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__chip:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__chip-text{font-weight:500;color:var(--sdc-picklist-title-color, #111827);max-width:var(--sdc-picklist-chip-max-width, 220px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sdc-picklist__chip-x{font-size:.875rem;opacity:.8;flex:0 0 auto}.sdc-picklist__chip--more,.sdc-picklist__chip--less{background:var(--sdc-picklist-more-bg, #eeebf2);border-color:transparent;font-weight:600;margin-left:auto;flex:0 0 auto;white-space:nowrap}.sdc-picklist__chip--more:hover,.sdc-picklist__chip--less:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.sdc-picklist__list-item,.sdc-picklist__list-item--skeleton{margin:0}.sdc-picklist__item{width:100%;display:flex;align-items:center;gap:.875rem;padding:1rem;border-radius:var(--sdc-picklist-radius, 6px);text-align:left;cursor:pointer;border:1px solid transparent;background:var(--sdc-picklist-bg, #ffffff);transition:background-color .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out}.sdc-picklist__item:hover{background:var(--sdc-picklist-hover-bg, #f7f7f7)}.sdc-picklist__item:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__item--selected{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__item--selected:hover{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-focus, #428bca);box-shadow:inset 0 0 0 1px var(--sdc-picklist-focus, #428bca)}.sdc-picklist__item--skeleton{display:block;width:100%;height:72px;min-height:72px;border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-picklist-radius, 6px);background:var(--sdc-picklist-bg, #ffffff);box-sizing:border-box;pointer-events:none;cursor:default}.sdc-picklist__check{display:inline-flex;align-items:center}.sdc-picklist__icon{width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--sdc-picklist-icon-bg, #f3f4f6);color:var(--sdc-picklist-icon-color, #111827);flex:0 0 auto}.sdc-picklist__texts{display:flex;flex-direction:column;min-width:0}.sdc-picklist__title{font-weight:600;color:var(--sdc-picklist-title-color, #111827);line-height:1.2}.sdc-picklist__subtitle{margin-top:.125rem;color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem;line-height:1.2}.sdc-picklist__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}.sdc-picklist__footer-left{display:inline-flex;align-items:center;gap:.5rem;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator{display:inline-flex;align-items:center;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator{width:auto;padding:10px 10px 10px 0;display:flex;align-items:center;justify-content:space-between;gap:1rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-left{display:inline-flex;align-items:center;gap:.75rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-picklist__selection-counter-wrap{display:inline-flex;align-items:center;justify-content:center;height:calc(var(--sdc-paginator-page-size, 34px) + 20px);min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);max-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);box-sizing:border-box}.sdc-picklist__selection-counter{appearance:none;-webkit-appearance:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:var(--sdc-paginator-page-size, 34px);min-height:var(--sdc-paginator-page-size, 34px);max-height:var(--sdc-paginator-page-size, 34px);margin:0;padding:0 .75rem;border:1px solid var(--sdc-paginator-border, #cccccc);border-radius:4px;background:var(--sdc-table-white, #ffffff);color:var(--sdc-paginator-primary, #428bca);font-size:14px;font-weight:400;line-height:1;white-space:nowrap;vertical-align:middle;position:static}.sdc-picklist__selection-counter i,.sdc-picklist__selection-counter span{display:inline-flex;align-items:center;justify-content:center;line-height:1;position:static;top:auto}.sdc-picklist__selection-counter i{font-size:.875rem;color:var(--sdc-paginator-primary, #428bca)}.sdc-picklist__selection-counter span{font-size:14px}.sdc-picklist__selection-counter:focus-visible{outline:2px solid currentColor;outline-offset:2px;position:relative;z-index:1}.sdc-picklist__results{display:inline-flex;align-items:center;justify-content:flex-end;min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);margin-left:auto;color:var(--sdc-picklist-results-color, #6b7280);font-size:14px;font-weight:400;white-space:nowrap;flex:0 0 auto}.sdc-picklist__empty{min-height:12rem;border:1px solid var(--sdc-formfield-default-border, #dedce5);border-radius:var(--sdc-formfield-border-radius, 6px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;text-align:center}.sdc-picklist__empty-icon{font-size:1.5rem;color:var(--sdc-picklist-subtitle-color, #6b7280)}.sdc-picklist__empty-title{font-weight:600;color:var(--sdc-picklist-title-color, #111827)}.sdc-picklist__empty-text{color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem}@media (max-width: 768px){.sdc-picklist__footer{flex-wrap:wrap;align-items:flex-start}.sdc-picklist__footer-left{flex-wrap:wrap}.sdc-picklist__results{width:100%;min-height:auto;margin-left:0;justify-content:flex-start}.sdc-picklist__selection-counter-wrap{height:auto;min-height:auto;max-height:none}.sdc-picklist__selection-counter{position:static}.sdc-picklist__selection-counter span{position:static;top:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "sdc-checkbox", inputs: ["label", "disabled", "commonCheckbox", "labelPosition", "size", "checked"], outputs: ["checkedChange"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showRowsPerPageSelector", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: LoadingStateComponent, selector: "sdc-loading-state", inputs: ["indicator", "id", "blockWindow", "blockDelayMs", "unblockDelayMs", "loading"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
269
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PicklistComponent, isStandalone: true, selector: "sdc-picklist", inputs: { items: "items", selectedIds: "selectedIds", idKey: "idKey", titleKey: "titleKey", subtitleKey: "subtitleKey", iconClass: "iconClass", selectionIconClass: "selectionIconClass", placeholder: "placeholder", emptyTitle: "emptyTitle", emptyText: "emptyText", resultsCounterSingularLabel: "resultsCounterSingularLabel", resultsCounterPluralLabel: "resultsCounterPluralLabel", filterFields: "filterFields", first: "first", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", maxVisibleSelectedItems: "maxVisibleSelectedItems", showPaginator: "showPaginator", showRowsPerPageOptions: "showRowsPerPageOptions", showSelectionCounter: "showSelectionCounter", showResultsCounter: "showResultsCounter", showItemIcon: "showItemIcon", autoResize: "autoResize", autoResizeMinRows: "autoResizeMinRows", autoResizeMaxRows: "autoResizeMaxRows", autoResizeItemHeight: "autoResizeItemHeight", autoResizeViewportOffset: "autoResizeViewportOffset", loading: "loading" }, outputs: { pageChange: "pageChange", selectedIdsChange: "selectedIdsChange" }, viewQueries: [{ propertyName: "searchSectionRef", first: true, predicate: ["searchSection"], descendants: true }, { propertyName: "selectedSectionRef", first: true, predicate: ["selectedSection"], descendants: true }, { propertyName: "footerSectionRef", first: true, predicate: ["footerSection"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sdc-picklist\">\n <sdc-loading-state\n class=\"sdc-picklist__loading-state\"\n [loading]=\"isLoading()\"\n [blockWindow]=\"loadingBlockWindow\"\n [indicator]=\"loadingIndicator\"\n [blockDelayMs]=\"loadingBlockDelayMs\"\n >\n <div #searchSection class=\"sdc-picklist__search\">\n <sdc-searchbox\n [placeholder]=\"placeholder | translate\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchTerm($event)\"\n ></sdc-searchbox>\n </div>\n\n <div\n #selectedSection\n class=\"sdc-picklist__selected\"\n [class.sdc-picklist__selected--has-items]=\"selectedCount > 0\"\n >\n @if (selectedCount > 0) {\n <div class=\"sdc-picklist__chips\" [class.sdc-picklist__chips--expanded]=\"selectedExpanded\">\n @for (item of visibleSelectedItems; track trackById($index, item)) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip\"\n (click)=\"remove(item)\"\n >\n <span class=\"sdc-picklist__chip-text\">{{ getTitle(item) | translate }}</span>\n <span class=\"sdc-picklist__chip-x\">\u00D7</span>\n </button>\n }\n\n @if (!selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--more\"\n (click)=\"toggleSelectedExpanded(true)\"\n >\n +{{ hiddenSelectedCount }}\n </button>\n }\n\n @if (selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--less\"\n (click)=\"toggleSelectedExpanded(false)\"\n >\n {{ 'platform.datacore.less' | translate }}\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"sdc-picklist__content\">\n @if (showSkeleton) {\n <ul class=\"sdc-picklist__list\">\n @for (row of skeletonRows; track row) {\n <li class=\"sdc-picklist__list-item sdc-picklist__list-item--skeleton\">\n <div class=\"sdc-picklist__item sdc-picklist__item--skeleton\"></div>\n </li>\n }\n </ul>\n } @else if (pageItems.length > 0) {\n <ul class=\"sdc-picklist__list\">\n @for (item of pageItems; track trackById($index, item)) {\n <li class=\"sdc-picklist__list-item\">\n <button\n type=\"button\"\n class=\"sdc-picklist__item\"\n [class.sdc-picklist__item--selected]=\"isSelected(item)\"\n (click)=\"rowClick(item)\"\n >\n <span class=\"sdc-picklist__check\" (click)=\"$event.stopPropagation()\">\n <sdc-checkbox\n [ngModel]=\"isSelected(item)\"\n (ngModelChange)=\"toggle(item, $event)\"\n ></sdc-checkbox>\n </span>\n\n @if (showItemIcon) {\n <span class=\"sdc-picklist__icon\">\n <i [class]=\"iconClass\"></i>\n </span>\n }\n\n <span class=\"sdc-picklist__texts\">\n <span class=\"sdc-picklist__title\">{{ getTitle(item) | translate }}</span>\n @if (getSubtitle(item)) {\n <span class=\"sdc-picklist__subtitle\">{{ getSubtitle(item) | translate }}</span>\n }\n </span>\n </button>\n </li>\n }\n </ul>\n } @else {\n <div class=\"sdc-picklist__empty\">\n <i class=\"fas fa-search sdc-picklist__empty-icon\"></i>\n <div class=\"sdc-picklist__empty-title\">\n {{ emptyTitle | translate }}\n </div>\n <div class=\"sdc-picklist__empty-text\">\n {{ emptyText | translate }}\n </div>\n </div>\n }\n </div>\n\n @if (showPaginator && totalRecords > 0) {\n <div #footerSection class=\"sdc-picklist__footer\">\n <div class=\"sdc-picklist__footer-left\">\n @if (showSelectionCounter) {\n <div class=\"sdc-picklist__selection-counter-wrap\">\n <button type=\"button\" class=\"sdc-picklist__selection-counter\">\n <i [class]=\"selectionIconClass\"></i>\n <span>{{ selectedCount }}</span>\n </button>\n </div>\n }\n\n <div class=\"sdc-picklist__footer-paginator\">\n <sdc-paginator\n [first]=\"firstValue\"\n [rows]=\"activeRows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"paginatorRowsPerPageOptions\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n </div>\n\n @if (showResultsCounter) {\n <div class=\"sdc-picklist__results\">\n {{ totalRecords }} {{ resultsCounterLabel | translate }}\n </div>\n }\n </div>\n }\n </sdc-loading-state>\n</div>\n", styles: [":host{display:block}.sdc-picklist{width:100%}.sdc-picklist__loading-state{display:block;width:100%}.sdc-picklist__search{padding-bottom:.75rem}.sdc-picklist__content{width:100%}.sdc-picklist__selected{padding:.25rem 0 .75rem}.sdc-picklist__chips{display:flex;gap:.5rem;align-items:center;flex-wrap:nowrap;overflow:hidden;min-width:0}.sdc-picklist__chips--expanded{flex-wrap:wrap;overflow:visible}.sdc-picklist__chip{display:inline-flex;align-items:center;gap:.5rem;border:1px solid transparent;background:var(--sdc-picklist-selected-bg, #eeebf2);border-radius:var(--sdc-picklist-chip-radius, 6px);padding:.25rem .5rem;cursor:pointer;transition:border-color .16s ease-out,background-color .16s ease-out;flex:0 1 auto;min-width:0}.sdc-picklist__chip:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__chip:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__chip-text{font-weight:500;color:var(--sdc-picklist-title-color, #111827);max-width:var(--sdc-picklist-chip-max-width, 220px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sdc-picklist__chip-x{font-size:.875rem;opacity:.8;flex:0 0 auto}.sdc-picklist__chip--more,.sdc-picklist__chip--less{background:var(--sdc-picklist-more-bg, #eeebf2);border-color:transparent;font-weight:600;margin-left:auto;flex:0 0 auto;white-space:nowrap}.sdc-picklist__chip--more:hover,.sdc-picklist__chip--less:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.sdc-picklist__list-item,.sdc-picklist__list-item--skeleton{margin:0}.sdc-picklist__item{width:100%;display:flex;align-items:center;gap:.875rem;padding:1rem;border-radius:var(--sdc-picklist-radius, 6px);text-align:left;cursor:pointer;border:1px solid transparent;background:var(--sdc-picklist-bg, #ffffff);transition:background-color .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out}.sdc-picklist__item:hover{background:var(--sdc-picklist-hover-bg, #f7f7f7)}.sdc-picklist__item:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__item--selected{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__item--selected:hover{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-focus, #428bca);box-shadow:inset 0 0 0 1px var(--sdc-picklist-focus, #428bca)}.sdc-picklist__item--skeleton{display:block;width:100%;height:72px;min-height:72px;border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-picklist-radius, 6px);background:var(--sdc-picklist-bg, #ffffff);box-sizing:border-box;pointer-events:none;cursor:default}.sdc-picklist__check{display:inline-flex;align-items:center}.sdc-picklist__icon{width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--sdc-picklist-icon-bg, #f3f4f6);color:var(--sdc-picklist-icon-color, #111827);flex:0 0 auto}.sdc-picklist__texts{display:flex;flex-direction:column;min-width:0}.sdc-picklist__title{font-weight:600;color:var(--sdc-picklist-title-color, #111827);line-height:1.2}.sdc-picklist__subtitle{margin-top:.125rem;color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem;line-height:1.2}.sdc-picklist__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}.sdc-picklist__footer-left{display:inline-flex;align-items:center;gap:.5rem;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator{display:inline-flex;align-items:center;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator{width:auto;padding:10px 10px 10px 0;display:flex;align-items:center;justify-content:space-between;gap:1rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-left{display:inline-flex;align-items:center;gap:.75rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-picklist__selection-counter-wrap{display:inline-flex;align-items:center;justify-content:center;height:calc(var(--sdc-paginator-page-size, 34px) + 20px);min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);max-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);box-sizing:border-box}.sdc-picklist__selection-counter{appearance:none;-webkit-appearance:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:var(--sdc-paginator-page-size, 34px);min-height:var(--sdc-paginator-page-size, 34px);max-height:var(--sdc-paginator-page-size, 34px);margin:0;padding:0 .75rem;border:1px solid var(--sdc-paginator-border, #cccccc);border-radius:4px;background:var(--sdc-table-white, #ffffff);color:var(--sdc-paginator-primary, #428bca);font-size:14px;font-weight:400;line-height:1;white-space:nowrap;vertical-align:middle;position:static}.sdc-picklist__selection-counter i,.sdc-picklist__selection-counter span{display:inline-flex;align-items:center;justify-content:center;line-height:1;position:static;top:auto}.sdc-picklist__selection-counter i{font-size:.875rem;color:var(--sdc-paginator-primary, #428bca)}.sdc-picklist__selection-counter span{font-size:14px}.sdc-picklist__selection-counter:focus-visible{outline:2px solid currentColor;outline-offset:2px;position:relative;z-index:1}.sdc-picklist__results{display:inline-flex;align-items:center;justify-content:flex-end;min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);margin-left:auto;color:var(--sdc-picklist-results-color, #6b7280);font-size:14px;font-weight:400;white-space:nowrap;flex:0 0 auto}.sdc-picklist__empty{min-height:12rem;border:1px solid var(--sdc-formfield-default-border, #dedce5);border-radius:var(--sdc-formfield-border-radius, 6px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;text-align:center}.sdc-picklist__empty-icon{font-size:1.5rem;color:var(--sdc-picklist-subtitle-color, #6b7280)}.sdc-picklist__empty-title{font-weight:600;color:var(--sdc-picklist-title-color, #111827)}.sdc-picklist__empty-text{color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem}@media (max-width: 768px){.sdc-picklist__footer{flex-wrap:wrap;align-items:flex-start}.sdc-picklist__footer-left{flex-wrap:wrap}.sdc-picklist__results{width:100%;min-height:auto;margin-left:0;justify-content:flex-start}.sdc-picklist__selection-counter-wrap{height:auto;min-height:auto;max-height:none}.sdc-picklist__selection-counter{position:static}.sdc-picklist__selection-counter span{position:static;top:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "sdc-checkbox", inputs: ["label", "disabled", "commonCheckbox", "labelPosition", "size", "checked"], outputs: ["checkedChange"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showRowsPerPageSelector", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: LoadingStateComponent, selector: "sdc-loading-state", inputs: ["indicator", "id", "blockWindow", "blockDelayMs", "unblockDelayMs", "loading"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
239
270
|
}
|
|
240
271
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PicklistComponent, decorators: [{
|
|
241
272
|
type: Component,
|
|
@@ -247,7 +278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
247
278
|
SearchboxComponent,
|
|
248
279
|
LoadingStateComponent,
|
|
249
280
|
TranslateModule
|
|
250
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"sdc-picklist\">\n <sdc-loading-state\n class=\"sdc-picklist__loading-state\"\n [loading]=\"isLoading()\"\n [blockWindow]=\"loadingBlockWindow\"\n [indicator]=\"loadingIndicator\"\n [blockDelayMs]=\"loadingBlockDelayMs\"\n >\n <div #searchSection class=\"sdc-picklist__search\">\n <sdc-searchbox\n [placeholder]=\"placeholder | translate\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchTerm($event)\"\n ></sdc-searchbox>\n </div>\n\n <div\n #selectedSection\n class=\"sdc-picklist__selected\"\n [class.sdc-picklist__selected--has-items]=\"selectedCount > 0\"\n >\n @if (selectedCount > 0) {\n <div class=\"sdc-picklist__chips\" [class.sdc-picklist__chips--expanded]=\"selectedExpanded\">\n @for (item of visibleSelectedItems; track trackById($index, item)) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip\"\n (click)=\"remove(item)\"\n >\n <span class=\"sdc-picklist__chip-text\">{{ getTitle(item) | translate }}</span>\n <span class=\"sdc-picklist__chip-x\">\u00D7</span>\n </button>\n }\n\n @if (!selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--more\"\n (click)=\"toggleSelectedExpanded(true)\"\n >\n +{{ hiddenSelectedCount }}\n </button>\n }\n\n @if (selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--less\"\n (click)=\"toggleSelectedExpanded(false)\"\n >\n {{ 'platform.datacore.less' | translate }}\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"sdc-picklist__content\">\n @if (showSkeleton) {\n <ul class=\"sdc-picklist__list\">\n @for (row of skeletonRows; track row) {\n <li class=\"sdc-picklist__list-item sdc-picklist__list-item--skeleton\">\n <div class=\"sdc-picklist__item sdc-picklist__item--skeleton\"></div>\n </li>\n }\n </ul>\n } @else if (pageItems.length > 0) {\n <ul class=\"sdc-picklist__list\">\n @for (item of pageItems; track trackById($index, item)) {\n <li class=\"sdc-picklist__list-item\">\n <button\n type=\"button\"\n class=\"sdc-picklist__item\"\n [class.sdc-picklist__item--selected]=\"isSelected(item)\"\n (click)=\"rowClick(item)\"\n >\n <span class=\"sdc-picklist__check\" (click)=\"$event.stopPropagation()\">\n <sdc-checkbox\n [ngModel]=\"isSelected(item)\"\n (ngModelChange)=\"toggle(item, $event)\"\n ></sdc-checkbox>\n </span>\n\n @if (showItemIcon) {\n <span class=\"sdc-picklist__icon\">\n <i [class]=\"iconClass\"></i>\n </span>\n }\n\n <span class=\"sdc-picklist__texts\">\n <span class=\"sdc-picklist__title\">{{ getTitle(item) | translate }}</span>\n @if (getSubtitle(item)) {\n <span class=\"sdc-picklist__subtitle\">{{ getSubtitle(item) | translate }}</span>\n }\n </span>\n </button>\n </li>\n }\n </ul>\n } @else {\n <div class=\"sdc-picklist__empty\">\n <i class=\"fas fa-search sdc-picklist__empty-icon\"></i>\n <div class=\"sdc-picklist__empty-title\">\n {{ 'platform.datacore.no_results' | translate }}\n </div>\n <div class=\"sdc-picklist__empty-text\">\n {{ 'platform.datacore.try_other_filters' | translate }}\n </div>\n </div>\n }\n </div>\n\n @if (showPaginator && totalRecords > 0) {\n <div #footerSection class=\"sdc-picklist__footer\">\n <div class=\"sdc-picklist__footer-left\">\n @if (showSelectionCounter) {\n <div class=\"sdc-picklist__selection-counter-wrap\">\n <button type=\"button\" class=\"sdc-picklist__selection-counter\">\n <i [class]=\"selectionIconClass\"></i>\n <span>{{ selectedCount }}</span>\n </button>\n </div>\n }\n\n <div class=\"sdc-picklist__footer-paginator\">\n <sdc-paginator\n [first]=\"firstValue\"\n [rows]=\"activeRows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"paginatorRowsPerPageOptions\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n </div>\n\n @if (showResultsCounter) {\n <div class=\"sdc-picklist__results\">\n {{ totalRecords }}\n </div>\n }\n </div>\n }\n </sdc-loading-state>\n</div>\n", styles: [":host{display:block}.sdc-picklist{width:100%}.sdc-picklist__loading-state{display:block;width:100%}.sdc-picklist__search{padding-bottom:.75rem}.sdc-picklist__content{width:100%}.sdc-picklist__selected{padding:.25rem 0 .75rem}.sdc-picklist__chips{display:flex;gap:.5rem;align-items:center;flex-wrap:nowrap;overflow:hidden;min-width:0}.sdc-picklist__chips--expanded{flex-wrap:wrap;overflow:visible}.sdc-picklist__chip{display:inline-flex;align-items:center;gap:.5rem;border:1px solid transparent;background:var(--sdc-picklist-selected-bg, #eeebf2);border-radius:var(--sdc-picklist-chip-radius, 6px);padding:.25rem .5rem;cursor:pointer;transition:border-color .16s ease-out,background-color .16s ease-out;flex:0 1 auto;min-width:0}.sdc-picklist__chip:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__chip:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__chip-text{font-weight:500;color:var(--sdc-picklist-title-color, #111827);max-width:var(--sdc-picklist-chip-max-width, 220px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sdc-picklist__chip-x{font-size:.875rem;opacity:.8;flex:0 0 auto}.sdc-picklist__chip--more,.sdc-picklist__chip--less{background:var(--sdc-picklist-more-bg, #eeebf2);border-color:transparent;font-weight:600;margin-left:auto;flex:0 0 auto;white-space:nowrap}.sdc-picklist__chip--more:hover,.sdc-picklist__chip--less:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.sdc-picklist__list-item,.sdc-picklist__list-item--skeleton{margin:0}.sdc-picklist__item{width:100%;display:flex;align-items:center;gap:.875rem;padding:1rem;border-radius:var(--sdc-picklist-radius, 6px);text-align:left;cursor:pointer;border:1px solid transparent;background:var(--sdc-picklist-bg, #ffffff);transition:background-color .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out}.sdc-picklist__item:hover{background:var(--sdc-picklist-hover-bg, #f7f7f7)}.sdc-picklist__item:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__item--selected{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__item--selected:hover{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-focus, #428bca);box-shadow:inset 0 0 0 1px var(--sdc-picklist-focus, #428bca)}.sdc-picklist__item--skeleton{display:block;width:100%;height:72px;min-height:72px;border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-picklist-radius, 6px);background:var(--sdc-picklist-bg, #ffffff);box-sizing:border-box;pointer-events:none;cursor:default}.sdc-picklist__check{display:inline-flex;align-items:center}.sdc-picklist__icon{width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--sdc-picklist-icon-bg, #f3f4f6);color:var(--sdc-picklist-icon-color, #111827);flex:0 0 auto}.sdc-picklist__texts{display:flex;flex-direction:column;min-width:0}.sdc-picklist__title{font-weight:600;color:var(--sdc-picklist-title-color, #111827);line-height:1.2}.sdc-picklist__subtitle{margin-top:.125rem;color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem;line-height:1.2}.sdc-picklist__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}.sdc-picklist__footer-left{display:inline-flex;align-items:center;gap:.5rem;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator{display:inline-flex;align-items:center;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator{width:auto;padding:10px 10px 10px 0;display:flex;align-items:center;justify-content:space-between;gap:1rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-left{display:inline-flex;align-items:center;gap:.75rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-picklist__selection-counter-wrap{display:inline-flex;align-items:center;justify-content:center;height:calc(var(--sdc-paginator-page-size, 34px) + 20px);min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);max-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);box-sizing:border-box}.sdc-picklist__selection-counter{appearance:none;-webkit-appearance:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:var(--sdc-paginator-page-size, 34px);min-height:var(--sdc-paginator-page-size, 34px);max-height:var(--sdc-paginator-page-size, 34px);margin:0;padding:0 .75rem;border:1px solid var(--sdc-paginator-border, #cccccc);border-radius:4px;background:var(--sdc-table-white, #ffffff);color:var(--sdc-paginator-primary, #428bca);font-size:14px;font-weight:400;line-height:1;white-space:nowrap;vertical-align:middle;position:static}.sdc-picklist__selection-counter i,.sdc-picklist__selection-counter span{display:inline-flex;align-items:center;justify-content:center;line-height:1;position:static;top:auto}.sdc-picklist__selection-counter i{font-size:.875rem;color:var(--sdc-paginator-primary, #428bca)}.sdc-picklist__selection-counter span{font-size:14px}.sdc-picklist__selection-counter:focus-visible{outline:2px solid currentColor;outline-offset:2px;position:relative;z-index:1}.sdc-picklist__results{display:inline-flex;align-items:center;justify-content:flex-end;min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);margin-left:auto;color:var(--sdc-picklist-results-color, #6b7280);font-size:14px;font-weight:400;white-space:nowrap;flex:0 0 auto}.sdc-picklist__empty{min-height:12rem;border:1px solid var(--sdc-formfield-default-border, #dedce5);border-radius:var(--sdc-formfield-border-radius, 6px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;text-align:center}.sdc-picklist__empty-icon{font-size:1.5rem;color:var(--sdc-picklist-subtitle-color, #6b7280)}.sdc-picklist__empty-title{font-weight:600;color:var(--sdc-picklist-title-color, #111827)}.sdc-picklist__empty-text{color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem}@media (max-width: 768px){.sdc-picklist__footer{flex-wrap:wrap;align-items:flex-start}.sdc-picklist__footer-left{flex-wrap:wrap}.sdc-picklist__results{width:100%;min-height:auto;margin-left:0;justify-content:flex-start}.sdc-picklist__selection-counter-wrap{height:auto;min-height:auto;max-height:none}.sdc-picklist__selection-counter{position:static}.sdc-picklist__selection-counter span{position:static;top:auto}}\n"] }]
|
|
281
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"sdc-picklist\">\n <sdc-loading-state\n class=\"sdc-picklist__loading-state\"\n [loading]=\"isLoading()\"\n [blockWindow]=\"loadingBlockWindow\"\n [indicator]=\"loadingIndicator\"\n [blockDelayMs]=\"loadingBlockDelayMs\"\n >\n <div #searchSection class=\"sdc-picklist__search\">\n <sdc-searchbox\n [placeholder]=\"placeholder | translate\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchTerm($event)\"\n ></sdc-searchbox>\n </div>\n\n <div\n #selectedSection\n class=\"sdc-picklist__selected\"\n [class.sdc-picklist__selected--has-items]=\"selectedCount > 0\"\n >\n @if (selectedCount > 0) {\n <div class=\"sdc-picklist__chips\" [class.sdc-picklist__chips--expanded]=\"selectedExpanded\">\n @for (item of visibleSelectedItems; track trackById($index, item)) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip\"\n (click)=\"remove(item)\"\n >\n <span class=\"sdc-picklist__chip-text\">{{ getTitle(item) | translate }}</span>\n <span class=\"sdc-picklist__chip-x\">\u00D7</span>\n </button>\n }\n\n @if (!selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--more\"\n (click)=\"toggleSelectedExpanded(true)\"\n >\n +{{ hiddenSelectedCount }}\n </button>\n }\n\n @if (selectedExpanded && hiddenSelectedCount > 0) {\n <button\n type=\"button\"\n class=\"sdc-picklist__chip sdc-picklist__chip--less\"\n (click)=\"toggleSelectedExpanded(false)\"\n >\n {{ 'platform.datacore.less' | translate }}\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"sdc-picklist__content\">\n @if (showSkeleton) {\n <ul class=\"sdc-picklist__list\">\n @for (row of skeletonRows; track row) {\n <li class=\"sdc-picklist__list-item sdc-picklist__list-item--skeleton\">\n <div class=\"sdc-picklist__item sdc-picklist__item--skeleton\"></div>\n </li>\n }\n </ul>\n } @else if (pageItems.length > 0) {\n <ul class=\"sdc-picklist__list\">\n @for (item of pageItems; track trackById($index, item)) {\n <li class=\"sdc-picklist__list-item\">\n <button\n type=\"button\"\n class=\"sdc-picklist__item\"\n [class.sdc-picklist__item--selected]=\"isSelected(item)\"\n (click)=\"rowClick(item)\"\n >\n <span class=\"sdc-picklist__check\" (click)=\"$event.stopPropagation()\">\n <sdc-checkbox\n [ngModel]=\"isSelected(item)\"\n (ngModelChange)=\"toggle(item, $event)\"\n ></sdc-checkbox>\n </span>\n\n @if (showItemIcon) {\n <span class=\"sdc-picklist__icon\">\n <i [class]=\"iconClass\"></i>\n </span>\n }\n\n <span class=\"sdc-picklist__texts\">\n <span class=\"sdc-picklist__title\">{{ getTitle(item) | translate }}</span>\n @if (getSubtitle(item)) {\n <span class=\"sdc-picklist__subtitle\">{{ getSubtitle(item) | translate }}</span>\n }\n </span>\n </button>\n </li>\n }\n </ul>\n } @else {\n <div class=\"sdc-picklist__empty\">\n <i class=\"fas fa-search sdc-picklist__empty-icon\"></i>\n <div class=\"sdc-picklist__empty-title\">\n {{ emptyTitle | translate }}\n </div>\n <div class=\"sdc-picklist__empty-text\">\n {{ emptyText | translate }}\n </div>\n </div>\n }\n </div>\n\n @if (showPaginator && totalRecords > 0) {\n <div #footerSection class=\"sdc-picklist__footer\">\n <div class=\"sdc-picklist__footer-left\">\n @if (showSelectionCounter) {\n <div class=\"sdc-picklist__selection-counter-wrap\">\n <button type=\"button\" class=\"sdc-picklist__selection-counter\">\n <i [class]=\"selectionIconClass\"></i>\n <span>{{ selectedCount }}</span>\n </button>\n </div>\n }\n\n <div class=\"sdc-picklist__footer-paginator\">\n <sdc-paginator\n [first]=\"firstValue\"\n [rows]=\"activeRows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"paginatorRowsPerPageOptions\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n </div>\n\n @if (showResultsCounter) {\n <div class=\"sdc-picklist__results\">\n {{ totalRecords }} {{ resultsCounterLabel | translate }}\n </div>\n }\n </div>\n }\n </sdc-loading-state>\n</div>\n", styles: [":host{display:block}.sdc-picklist{width:100%}.sdc-picklist__loading-state{display:block;width:100%}.sdc-picklist__search{padding-bottom:.75rem}.sdc-picklist__content{width:100%}.sdc-picklist__selected{padding:.25rem 0 .75rem}.sdc-picklist__chips{display:flex;gap:.5rem;align-items:center;flex-wrap:nowrap;overflow:hidden;min-width:0}.sdc-picklist__chips--expanded{flex-wrap:wrap;overflow:visible}.sdc-picklist__chip{display:inline-flex;align-items:center;gap:.5rem;border:1px solid transparent;background:var(--sdc-picklist-selected-bg, #eeebf2);border-radius:var(--sdc-picklist-chip-radius, 6px);padding:.25rem .5rem;cursor:pointer;transition:border-color .16s ease-out,background-color .16s ease-out;flex:0 1 auto;min-width:0}.sdc-picklist__chip:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__chip:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__chip-text{font-weight:500;color:var(--sdc-picklist-title-color, #111827);max-width:var(--sdc-picklist-chip-max-width, 220px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sdc-picklist__chip-x{font-size:.875rem;opacity:.8;flex:0 0 auto}.sdc-picklist__chip--more,.sdc-picklist__chip--less{background:var(--sdc-picklist-more-bg, #eeebf2);border-color:transparent;font-weight:600;margin-left:auto;flex:0 0 auto;white-space:nowrap}.sdc-picklist__chip--more:hover,.sdc-picklist__chip--less:hover{border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.sdc-picklist__list-item,.sdc-picklist__list-item--skeleton{margin:0}.sdc-picklist__item{width:100%;display:flex;align-items:center;gap:.875rem;padding:1rem;border-radius:var(--sdc-picklist-radius, 6px);text-align:left;cursor:pointer;border:1px solid transparent;background:var(--sdc-picklist-bg, #ffffff);transition:background-color .16s ease-out,border-color .16s ease-out,box-shadow .16s ease-out}.sdc-picklist__item:hover{background:var(--sdc-picklist-hover-bg, #f7f7f7)}.sdc-picklist__item:focus-visible{outline:2px solid var(--sdc-picklist-focus, currentColor);outline-offset:2px}.sdc-picklist__item--selected{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-selected-border, #dedce5)}.sdc-picklist__item--selected:hover{background:var(--sdc-picklist-selected-bg, #eeebf2);border-color:var(--sdc-picklist-focus, #428bca);box-shadow:inset 0 0 0 1px var(--sdc-picklist-focus, #428bca)}.sdc-picklist__item--skeleton{display:block;width:100%;height:72px;min-height:72px;border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-picklist-radius, 6px);background:var(--sdc-picklist-bg, #ffffff);box-sizing:border-box;pointer-events:none;cursor:default}.sdc-picklist__check{display:inline-flex;align-items:center}.sdc-picklist__icon{width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--sdc-picklist-icon-bg, #f3f4f6);color:var(--sdc-picklist-icon-color, #111827);flex:0 0 auto}.sdc-picklist__texts{display:flex;flex-direction:column;min-width:0}.sdc-picklist__title{font-weight:600;color:var(--sdc-picklist-title-color, #111827);line-height:1.2}.sdc-picklist__subtitle{margin-top:.125rem;color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem;line-height:1.2}.sdc-picklist__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}.sdc-picklist__footer-left{display:inline-flex;align-items:center;gap:.5rem;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator{display:inline-flex;align-items:center;flex:0 0 auto;min-width:0}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator{width:auto;padding:10px 10px 10px 0;display:flex;align-items:center;justify-content:space-between;gap:1rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-left{display:inline-flex;align-items:center;gap:.75rem}.sdc-picklist__footer-paginator ::ng-deep .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-picklist__selection-counter-wrap{display:inline-flex;align-items:center;justify-content:center;height:calc(var(--sdc-paginator-page-size, 34px) + 20px);min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);max-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);box-sizing:border-box}.sdc-picklist__selection-counter{appearance:none;-webkit-appearance:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:var(--sdc-paginator-page-size, 34px);min-height:var(--sdc-paginator-page-size, 34px);max-height:var(--sdc-paginator-page-size, 34px);margin:0;padding:0 .75rem;border:1px solid var(--sdc-paginator-border, #cccccc);border-radius:4px;background:var(--sdc-table-white, #ffffff);color:var(--sdc-paginator-primary, #428bca);font-size:14px;font-weight:400;line-height:1;white-space:nowrap;vertical-align:middle;position:static}.sdc-picklist__selection-counter i,.sdc-picklist__selection-counter span{display:inline-flex;align-items:center;justify-content:center;line-height:1;position:static;top:auto}.sdc-picklist__selection-counter i{font-size:.875rem;color:var(--sdc-paginator-primary, #428bca)}.sdc-picklist__selection-counter span{font-size:14px}.sdc-picklist__selection-counter:focus-visible{outline:2px solid currentColor;outline-offset:2px;position:relative;z-index:1}.sdc-picklist__results{display:inline-flex;align-items:center;justify-content:flex-end;min-height:calc(var(--sdc-paginator-page-size, 34px) + 20px);margin-left:auto;color:var(--sdc-picklist-results-color, #6b7280);font-size:14px;font-weight:400;white-space:nowrap;flex:0 0 auto}.sdc-picklist__empty{min-height:12rem;border:1px solid var(--sdc-formfield-default-border, #dedce5);border-radius:var(--sdc-formfield-border-radius, 6px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;text-align:center}.sdc-picklist__empty-icon{font-size:1.5rem;color:var(--sdc-picklist-subtitle-color, #6b7280)}.sdc-picklist__empty-title{font-weight:600;color:var(--sdc-picklist-title-color, #111827)}.sdc-picklist__empty-text{color:var(--sdc-picklist-subtitle-color, #6b7280);font-size:.875rem}@media (max-width: 768px){.sdc-picklist__footer{flex-wrap:wrap;align-items:flex-start}.sdc-picklist__footer-left{flex-wrap:wrap}.sdc-picklist__results{width:100%;min-height:auto;margin-left:0;justify-content:flex-start}.sdc-picklist__selection-counter-wrap{height:auto;min-height:auto;max-height:none}.sdc-picklist__selection-counter{position:static}.sdc-picklist__selection-counter span{position:static;top:auto}}\n"] }]
|
|
251
282
|
}], propDecorators: { items: [{
|
|
252
283
|
type: Input,
|
|
253
284
|
args: [{ required: true }]
|
|
@@ -265,6 +296,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
265
296
|
type: Input
|
|
266
297
|
}], placeholder: [{
|
|
267
298
|
type: Input
|
|
299
|
+
}], emptyTitle: [{
|
|
300
|
+
type: Input
|
|
301
|
+
}], emptyText: [{
|
|
302
|
+
type: Input
|
|
303
|
+
}], resultsCounterSingularLabel: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], resultsCounterPluralLabel: [{
|
|
306
|
+
type: Input
|
|
307
|
+
}], filterFields: [{
|
|
308
|
+
type: Input
|
|
268
309
|
}], first: [{
|
|
269
310
|
type: Input
|
|
270
311
|
}], rows: [{
|
|
@@ -309,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
309
350
|
type: ViewChild,
|
|
310
351
|
args: ['footerSection']
|
|
311
352
|
}] } });
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9waWNrbGlzdC9waWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BpY2tsaXN0L3BpY2tsaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1QyxzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QiwyQ0FBMkMsRUFDM0MsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQixzQ0FBc0MsRUFDdEMscUNBQXFDLEVBQ3JDLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IscUNBQXFDLEVBQ3JDLDJDQUEyQyxFQUMzQyx1Q0FBdUMsRUFDdkMsNkJBQTZCLEVBQzdCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNwQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFB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USxFQUFFLElBQUksRUFBRTtnQkFDaEIsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFHRixPQUFPO3NCQURWLEtBQUs7Z0JBS0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRXNDLGdCQUFnQjtzQkFBNUQsU0FBUzt1QkFBQyxlQUFlO2dCQUNxQixrQkFBa0I7c0JBQWhFLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNpQixnQkFBZ0I7c0JBQTVELFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFLFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX0lURU1fSEVJR0hULFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX01BWF9ST1dTLFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX01JTl9ST1dTLFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX1ZJRVdQT1JUX09GRlNFVCxcbiAgREVGQVVMVF9QSUNLTElTVF9GSVJTVCxcbiAgREVGQVVMVF9QSUNLTElTVF9JQ09OX0NMQVNTLFxuICBERUZBVUxUX1BJQ0tMSVNUX0lEX0tFWSxcbiAgREVGQVVMVF9QSUNLTElTVF9NQVhfVklTSUJMRV9TRUxFQ1RFRF9JVEVNUyxcbiAgREVGQVVMVF9QSUNLTElTVF9QTEFDRUhPTERFUixcbiAgREVGQVVMVF9QSUNLTElTVF9ST1dTLFxuICBERUZBVUxUX1BJQ0tMSVNUX1JPV1NfUEVSX1BBR0VfT1BUSU9OUyxcbiAgREVGQVVMVF9QSUNLTElTVF9TRUxFQ1RJT05fSUNPTl9DTEFTUyxcbiAgREVGQVVMVF9QSUNLTElTVF9TSE9XX0lURU1fSUNPTixcbiAgREVGQVVMVF9QSUNLTElTVF9TSE9XX1BBR0lOQVRPUixcbiAgREVGQVVMVF9QSUNLTElTVF9TSE9XX1JFU1VMVFNfQ09VTlRFUixcbiAgREVGQVVMVF9QSUNLTElTVF9TSE9XX1JPV1NfUEVSX1BBR0VfT1BUSU9OUyxcbiAgREVGQVVMVF9QSUNLTElTVF9TSE9XX1NFTEVDVElPTl9DT1VOVEVSLFxuICBERUZBVUxUX1BJQ0tMSVNUX1NVQlRJVExFX0tFWSxcbiAgREVGQVVMVF9QSUNLTElTVF9USVRMRV9LRVksXG4gIFBJQ0tMSVNUX0RJVklTT1JfRkFMTEJBQ0ssXG4gIFBJQ0tMSVNUX0xPQURJTkdfQkxPQ0tfREVMQVlfTVMsXG4gIFBJQ0tMSVNUX0xPQURJTkdfQkxPQ0tfV0lORE9XLFxuICBQSUNLTElTVF9MT0FESU5HX0lORElDQVRPUixcbiAgUElDS0xJU1RfTUlOX1NLRUxFVE9OX1JPV1MsXG4gIFBJQ0tMSVNUX1BBR0VfSU5ERVhcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvcGlja2xpc3QuY29uc3QnO1xuaW1wb3J0IHR5cGUgeyBQYWdpbmF0b3JTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcGFnaW5hdG9yLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFJlY29yZCB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcGlja2xpc3QudHlwZSc7XG5pbXBvcnQgeyB0b0ludGVnZXIgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL251bWJlci51dGlsJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmctc3RhdGUvbG9hZGluZy1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtcGlja2xpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBTZWFyY2hib3hDb21wb25lbnQsXG4gICAgTG9hZGluZ1N0YXRlQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcGlja2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGlja2xpc3QuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgUGlja2xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nQmxvY2tXaW5kb3cgPSBQSUNLTElTVF9MT0FESU5HX0JMT0NLX1dJTkRPVztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmdJbmRpY2F0b3IgPSBQSUNLTElTVF9MT0FESU5HX0lORElDQVRPUjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmdCbG9ja0RlbGF5TXMgPSBQSUNLTElTVF9MT0FESU5HX0JMT0NLX0RFTEFZX01TO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGl0ZW1zOiBQaWNrbGlzdFJlY29yZFtdID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGVkSWRzOiBudW1iZXJbXSB8IFNldDxudW1iZXI+ID0gW107XG5cbiAgQElucHV0KCkgaWRLZXkgPSBERUZBVUxUX1BJQ0tMSVNUX0lEX0tFWTtcbiAgQElucHV0KCkgdGl0bGVLZXkgPSBERUZBVUxUX1BJQ0tMSVNUX1RJVExFX0tFWTtcbiAgQElucHV0KCkgc3VidGl0bGVLZXkgPSBERUZBVUxUX1BJQ0tMSVNUX1NVQlRJVExFX0tFWTtcbiAgQElucHV0KCkgaWNvbkNsYXNzID0gREVGQVVMVF9QSUNLTElTVF9JQ09OX0NMQVNTO1xuICBASW5wdXQoKSBzZWxlY3Rpb25JY29uQ2xhc3MgPSBERUZBVUxUX1BJQ0tMSVNUX1NFTEVDVElPTl9JQ09OX0NMQVNTO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IERFRkFVTFRfUElDS0xJU1RfUExBQ0VIT0xERVI7XG5cbiAgQElucHV0KCkgZmlyc3QgPSBERUZBVUxUX1BJQ0tMSVNUX0ZJUlNUO1xuICBASW5wdXQoKSByb3dzID0gREVGQVVMVF9QSUNLTElTVF9ST1dTO1xuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gWy4uLkRFRkFVTFRfUElDS0xJU1RfUk9XU19QRVJfUEFHRV9PUFRJT05TXTtcbiAgQElucHV0KCkgbWF4VmlzaWJsZVNlbGVjdGVkSXRlbXMgPSBERUZBVUxUX1BJQ0tMSVNUX01BWF9WSVNJQkxFX1NFTEVDVEVEX0lURU1TO1xuXG4gIEBJbnB1dCgpIHNob3dQYWdpbmF0b3IgPSBERUZBVUxUX1BJQ0tMSVNUX1NIT1dfUEFHSU5BVE9SO1xuICBASW5wdXQoKSBzaG93Um93c1BlclBhZ2VPcHRpb25zID0gREVGQVVMVF9QSUNLTElTVF9TSE9XX1JPV1NfUEVSX1BBR0VfT1BUSU9OUztcbiAgQElucHV0KCkgc2hvd1NlbGVjdGlvbkNvdW50ZXIgPSBERUZBVUxUX1BJQ0tMSVNUX1NIT1dfU0VMRUNUSU9OX0NPVU5URVI7XG4gIEBJbnB1dCgpIHNob3dSZXN1bHRzQ291bnRlciA9IERFRkFVTFRfUElDS0xJU1RfU0hPV19SRVNVTFRTX0NPVU5URVI7XG4gIEBJbnB1dCgpIHNob3dJdGVtSWNvbiA9IERFRkFVTFRfUElDS0xJU1RfU0hPV19JVEVNX0lDT047XG5cbiAgQElucHV0KCkgYXV0b1Jlc2l6ZSA9IERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkU7XG4gIEBJbnB1dCgpIGF1dG9SZXNpemVNaW5Sb3dzID0gREVGQVVMVF9QSUNLTElTVF9BVVRPX1JFU0laRV9NSU5fUk9XUztcbiAgQElucHV0KCkgYXV0b1Jlc2l6ZU1heFJvd3MgPSBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX01BWF9ST1dTO1xuICBASW5wdXQoKSBhdXRvUmVzaXplSXRlbUhlaWdodCA9IERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfSVRFTV9IRUlHSFQ7XG4gIEBJbnB1dCgpIGF1dG9SZXNpemVWaWV3cG9ydE9mZnNldCA9IERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfVklFV1BPUlRfT0ZGU0VUO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkaW5nU3RhdGUuc2V0KCEhdmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRvclN0YXRlPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaFNlY3Rpb24nKSBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaFNlY3Rpb25SZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0ZWRTZWN0aW9uJykgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZFNlY3Rpb25SZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZm9vdGVyU2VjdGlvbicpIHByaXZhdGUgcmVhZG9ubHkgZm9vdGVyU2VjdGlvblJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU3RhdGUgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nU3RhdGUoKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkUXVlcnkgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFnZVN0YXRlID0gc2lnbmFsPFBhZ2luYXRvclN0YXRlPih7IGZpcnN0OiB0aGlzLmZpcnN0LCByb3dzOiB0aGlzLnJvd3MsIHBhZ2U6IFBJQ0tMSVNUX1BBR0VfSU5ERVgsIHBhZ2VDb3VudDogMCB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEV4cGFuZGVkU3RhdGUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgc2VsID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkSWRzJ10pIHtcbiAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkSWRzIGluc3RhbmNlb2YgU2V0ID8gWy4uLnRoaXMuc2VsZWN0ZWRJZHNdIDogdGhpcy5zZWxlY3RlZElkcyA/PyBbXTtcbiAgICAgIHRoaXMuc2VsID0gbmV3IFNldCgobmV4dFZhbHVlcyBhcyB1bmtub3duW10pLm1hcCgoaXRlbSkgPT4gdG9JbnRlZ2VyKGl0ZW0pKS5maWx0ZXIoKGl0ZW0pID0+ICFOdW1iZXIuaXNOYU4oaXRlbSkpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snZmlyc3QnXSB8fCBjaGFuZ2VzWydyb3dzJ10pIHtcbiAgICAgIHRoaXMucGFnZVN0YXRlLnNldCh7XG4gICAgICAgIC4uLnRoaXMucGFnZVN0YXRlKCksXG4gICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgICByb3dzOiB0aGlzLnJvd3NcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuYXV0b1Jlc2l6ZSkge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy51cGRhdGVSb3dzRnJvbVZpZXdwb3J0KCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b1Jlc2l6ZSB8fCB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMudXBkYXRlUm93c0Zyb21WaWV3cG9ydCgpKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlYXJjaFNlY3Rpb25SZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnNlYXJjaFNlY3Rpb25SZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTZWN0aW9uUmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5zZWxlY3RlZFNlY3Rpb25SZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9vdGVyU2VjdGlvblJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZm9vdGVyU2VjdGlvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVJvd3NGcm9tVmlld3BvcnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIG9uU2VhcmNoKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkUXVlcnkuc2V0KHZhbHVlID8/ICcnKTtcbiAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoeyAuLi50aGlzLnBhZ2VTdGF0ZSgpLCBmaXJzdDogREVGQVVMVF9QSUNLTElTVF9GSVJTVCB9KTtcbiAgfVxuXG4gIG9uU2VhcmNoVGVybSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vblNlYXJjaCh2YWx1ZSk7XG4gIH1cblxuICBvbkNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRRdWVyeS5zZXQoJycpO1xuICAgIHRoaXMucGFnZVN0YXRlLnNldCh7IC4uLnRoaXMucGFnZVN0YXRlKCksIGZpcnN0OiBERUZBVUxUX1BJQ0tMSVNUX0ZJUlNUIH0pO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBQYWdpbmF0b3JTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0YXRlLnNldChldmVudCk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IGZpbHRlcmVkKCk6IFBpY2tsaXN0UmVjb3JkW10ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5maWx0ZXJlZFF1ZXJ5KCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB0aXRsZSA9IFN0cmluZyhpdGVtPy5bdGhpcy50aXRsZUtleV0gPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBzdWJ0aXRsZSA9IFN0cmluZyhpdGVtPy5bdGhpcy5zdWJ0aXRsZUtleV0gPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gdGl0bGUuaW5jbHVkZXMocXVlcnkpIHx8IHN1YnRpdGxlLmluY2x1ZGVzKHF1ZXJ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB0b3RhbFJlc3VsdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZC5sZW5ndGg7XG4gIH1cblxuICBnZXQgcm93c1ZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVN0YXRlKCkucm93cyA/PyB0aGlzLnJvd3M7XG4gIH1cblxuICBnZXQgZmlyc3RWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2VTdGF0ZSgpLmZpcnN0ID8/IHRoaXMuZmlyc3Q7XG4gIH1cblxuICBnZXQgcGFnZUl0ZW1zKCk6IFBpY2tsaXN0UmVjb3JkW10ge1xuICAgIGlmICghdGhpcy5zaG93UGFnaW5hdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZC5zbGljZSh0aGlzLmZpcnN0VmFsdWUsIHRoaXMuZmlyc3RWYWx1ZSArIHRoaXMucm93c1ZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEl0ZW1zKCk6IFBpY2tsaXN0UmVjb3JkW10ge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLml0ZW1zID8/IFtdO1xuICAgIHJldHVybiBiYXNlLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5zZWwuaGFzKHRvSW50ZWdlcihpdGVtPy5bdGhpcy5pZEtleV0pKSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZVNlbGVjdGVkSXRlbXMoKTogUGlja2xpc3RSZWNvcmRbXSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIHRoaXMubWF4VmlzaWJsZVNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgZ2V0IGhpZGRlblNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIHRoaXMudmlzaWJsZVNlbGVjdGVkSXRlbXMubGVuZ3RoKTtcbiAgfVxuXG4gIGdldCBza2VsZXRvblJvd3MoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHJvd3MgPSBNYXRoLm1heCh0aGlzLnJvd3NWYWx1ZSwgUElDS0xJU1RfTUlOX1NLRUxFVE9OX1JPV1MpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dzIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFF1ZXJ5KCk7XG4gIH1cblxuICBzZXQgc2VhcmNoVGVybSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJlZFF1ZXJ5LnNldCh2YWx1ZSA/PyAnJyk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEV4cGFuZGVkU3RhdGUoKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgc2hvd1NrZWxldG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZygpICYmIHRoaXMudG90YWxSZXN1bHRzID09PSAwO1xuICB9XG5cbiAgZ2V0IHRvdGFsUmVjb3JkcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvdGFsUmVzdWx0cztcbiAgfVxuXG4gIGdldCBhY3RpdmVSb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucm93c1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHBhZ2luYXRvclJvd3NQZXJQYWdlT3B0aW9ucygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1Jvd3NQZXJQYWdlT3B0aW9ucyA/IHRoaXMucm93c1BlclBhZ2VPcHRpb25zIDogW107XG4gIH1cblxuICB0cmFja0J5SWQgPSAoX2luZGV4OiBudW1iZXIsIGl0ZW06IFBpY2tsaXN0UmVjb3JkKSA9PiBpdGVtPy5bdGhpcy5pZEtleV07XG5cbiAgZ2V0VGl0bGUoaXRlbTogUGlja2xpc3RSZWNvcmQpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcoaXRlbT8uW3RoaXMudGl0bGVLZXldID8/ICcnKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKGl0ZW0/Llt0aGlzLnN1YnRpdGxlS2V5XSA/PyAnJyk7XG4gIH1cblxuICBpc1NlbGVjdGVkKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWQgPSB0b0ludGVnZXIoaXRlbT8uW3RoaXMuaWRLZXldKTtcbiAgICByZXR1cm4gIU51bWJlci5pc05hTihpZCkgJiYgdGhpcy5zZWwuaGFzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZShpdGVtOiBQaWNrbGlzdFJlY29yZCwgY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdG9JbnRlZ2VyKGl0ZW0/Llt0aGlzLmlkS2V5XSk7XG4gICAgaWYgKE51bWJlci5pc05hTihpZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWwuYWRkKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWwuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHJvd0NsaWNrKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0b0ludGVnZXIoaXRlbT8uW3RoaXMuaWRLZXldKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKGl0ZW0sICF0aGlzLnNlbC5oYXMoaWQpKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBQaWNrbGlzdFJlY29yZCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlKGl0ZW0sIGZhbHNlKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGVkRXhwYW5kZWQoZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRXhwYW5kZWRTdGF0ZS5zZXQoZXhwYW5kZWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zZWxdKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUm93c0Zyb21WaWV3cG9ydCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b1Jlc2l6ZSB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IHNlYXJjaEhlaWdodCA9IHRoaXMuc2VhcmNoU2VjdGlvblJlZj8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPz8gMDtcbiAgICBjb25zdCBzZWxlY3RlZEhlaWdodCA9IHRoaXMuc2VsZWN0ZWRTZWN0aW9uUmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA/PyAwO1xuICAgIGNvbnN0IGZvb3RlckhlaWdodCA9IHRoaXMuZm9vdGVyU2VjdGlvblJlZj8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPz8gMDtcbiAgICBjb25zdCBhdmFpbGFibGUgPSBNYXRoLm1heChcbiAgICAgIHRoaXMuYXV0b1Jlc2l6ZU1pblJvd3MgKiB0aGlzLmF1dG9SZXNpemVJdGVtSGVpZ2h0LFxuICAgICAgdmlld3BvcnRIZWlnaHQgLSBzZWFyY2hIZWlnaHQgLSBzZWxlY3RlZEhlaWdodCAtIGZvb3RlckhlaWdodCAtIHRoaXMuYXV0b1Jlc2l6ZVZpZXdwb3J0T2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IG5leHRSb3dzID0gTWF0aC5tYXgoXG4gICAgICB0aGlzLmF1dG9SZXNpemVNaW5Sb3dzLFxuICAgICAgTWF0aC5taW4odGhpcy5hdXRvUmVzaXplTWF4Um93cywgTWF0aC5mbG9vcihhdmFpbGFibGUgLyBNYXRoLm1heCh0aGlzLmF1dG9SZXNpemVJdGVtSGVpZ2h0LCBQSUNLTElTVF9ESVZJU09SX0ZBTExCQUNLKSkpXG4gICAgKTtcblxuICAgIGlmIChuZXh0Um93cyAhPT0gdGhpcy5wYWdlU3RhdGUoKS5yb3dzKSB7XG4gICAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoe1xuICAgICAgICAuLi50aGlzLnBhZ2VTdGF0ZSgpLFxuICAgICAgICByb3dzOiBuZXh0Um93cyxcbiAgICAgICAgZmlyc3Q6IERFRkFVTFRfUElDS0xJU1RfRklSU1RcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0XCI+XG4gIDxzZGMtbG9hZGluZy1zdGF0ZVxuICAgIGNsYXNzPVwic2RjLXBpY2tsaXN0X19sb2FkaW5nLXN0YXRlXCJcbiAgICBbbG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgW2Jsb2NrV2luZG93XT1cImxvYWRpbmdCbG9ja1dpbmRvd1wiXG4gICAgW2luZGljYXRvcl09XCJsb2FkaW5nSW5kaWNhdG9yXCJcbiAgICBbYmxvY2tEZWxheU1zXT1cImxvYWRpbmdCbG9ja0RlbGF5TXNcIlxuICA+XG4gICAgPGRpdiAjc2VhcmNoU2VjdGlvbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fc2VhcmNoXCI+XG4gICAgICA8c2RjLXNlYXJjaGJveFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaFRlcm0oJGV2ZW50KVwiXG4gICAgICA+PC9zZGMtc2VhcmNoYm94PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgI3NlbGVjdGVkU2VjdGlvblxuICAgICAgY2xhc3M9XCJzZGMtcGlja2xpc3RfX3NlbGVjdGVkXCJcbiAgICAgIFtjbGFzcy5zZGMtcGlja2xpc3RfX3NlbGVjdGVkLS1oYXMtaXRlbXNdPVwic2VsZWN0ZWRDb3VudCA+IDBcIlxuICAgID5cbiAgICAgIEBpZiAoc2VsZWN0ZWRDb3VudCA+IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hpcHNcIiBbY2xhc3Muc2RjLXBpY2tsaXN0X19jaGlwcy0tZXhwYW5kZWRdPVwic2VsZWN0ZWRFeHBhbmRlZFwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgdmlzaWJsZVNlbGVjdGVkSXRlbXM7IHRyYWNrIHRyYWNrQnlJZCgkaW5kZXgsIGl0ZW0pKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hpcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hpcC10ZXh0XCI+e3sgZ2V0VGl0bGUoaXRlbSkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGlwLXhcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoIXNlbGVjdGVkRXhwYW5kZWQgJiYgaGlkZGVuU2VsZWN0ZWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGlwIHNkYy1waWNrbGlzdF9fY2hpcC0tbW9yZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3RlZEV4cGFuZGVkKHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGhpZGRlblNlbGVjdGVkQ291bnQgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRFeHBhbmRlZCAmJiBoaWRkZW5TZWxlY3RlZENvdW50ID4gMCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoaXAgc2RjLXBpY2tsaXN0X19jaGlwLS1sZXNzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkRXhwYW5kZWQoZmFsc2UpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmxlc3MnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fY29udGVudFwiPlxuICAgICAgQGlmIChzaG93U2tlbGV0b24pIHtcbiAgICAgICAgPHVsIGNsYXNzPVwic2RjLXBpY2tsaXN0X19saXN0XCI+XG4gICAgICAgICAgQGZvciAocm93IG9mIHNrZWxldG9uUm93czsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2xpc3QtaXRlbSBzZGMtcGlja2xpc3RfX2xpc3QtaXRlbS0tc2tlbGV0b25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9faXRlbSBzZGMtcGlja2xpc3RfX2l0ZW0tLXNrZWxldG9uXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIH0gQGVsc2UgaWYgKHBhZ2VJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDx1bCBjbGFzcz1cInNkYy1waWNrbGlzdF9fbGlzdFwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcGFnZUl0ZW1zOyB0cmFjayB0cmFja0J5SWQoJGluZGV4LCBpdGVtKSkge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwic2RjLXBpY2tsaXN0X19saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RjLXBpY2tsaXN0X19pdGVtXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2RjLXBpY2tsaXN0X19pdGVtLS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoZWNrXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgPHNkYy1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvc2RjLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0l0ZW1JY29uKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9faWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X190ZXh0c1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX3RpdGxlXCI+e3sgZ2V0VGl0bGUoaXRlbSkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKGdldFN1YnRpdGxlKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X19zdWJ0aXRsZVwiPnt7IGdldFN1YnRpdGxlKGl0ZW0pIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19lbXB0eVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNlYXJjaCBzZGMtcGlja2xpc3RfX2VtcHR5LWljb25cIj48L2k+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZW1wdHktdGl0bGVcIj5cbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybS5kYXRhY29yZS5ub19yZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2VtcHR5LXRleHRcIj5cbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybS5kYXRhY29yZS50cnlfb3RoZXJfZmlsdGVycycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKHNob3dQYWdpbmF0b3IgJiYgdG90YWxSZWNvcmRzID4gMCkge1xuICAgICAgPGRpdiAjZm9vdGVyU2VjdGlvbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZm9vdGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2Zvb3Rlci1sZWZ0XCI+XG4gICAgICAgICAgQGlmIChzaG93U2VsZWN0aW9uQ291bnRlcikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fc2VsZWN0aW9uLWNvdW50ZXItd3JhcFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNkYy1waWNrbGlzdF9fc2VsZWN0aW9uLWNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwic2VsZWN0aW9uSWNvbkNsYXNzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNlbGVjdGVkQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZm9vdGVyLXBhZ2luYXRvclwiPlxuICAgICAgICAgICAgPHNkYy1wYWdpbmF0b3JcbiAgICAgICAgICAgICAgW2ZpcnN0XT1cImZpcnN0VmFsdWVcIlxuICAgICAgICAgICAgICBbcm93c109XCJhY3RpdmVSb3dzXCJcbiAgICAgICAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgICAgICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInBhZ2luYXRvclJvd3NQZXJQYWdlT3B0aW9uc1wiXG4gICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3NkYy1wYWdpbmF0b3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoc2hvd1Jlc3VsdHNDb3VudGVyKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fcmVzdWx0c1wiPlxuICAgICAgICAgICAge3sgdG90YWxSZWNvcmRzIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9zZGMtbG9hZGluZy1zdGF0ZT5cbjwvZGl2PlxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9waWNrbGlzdC9waWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BpY2tsaXN0L3BpY2tsaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1QywyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLDJDQUEyQyxFQUMzQyw0QkFBNEIsRUFDNUIsNkNBQTZDLEVBQzdDLCtDQUErQyxFQUMvQyxxQkFBcUIsRUFDckIsc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUNyQywrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHFDQUFxQyxFQUNyQywyQ0FBMkMsRUFDM0MsdUNBQXVDLEVBQ3ZDLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQiw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLDBCQUEw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LGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUdGLE9BQU87c0JBRFYsS0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFc0MsZ0JBQWdCO3NCQUE1RCxTQUFTO3VCQUFDLGVBQWU7Z0JBQ3FCLGtCQUFrQjtzQkFBaEUsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ2lCLGdCQUFnQjtzQkFBNUQsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkUsXG4gIERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfSVRFTV9IRUlHSFQsXG4gIERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfTUFYX1JPV1MsXG4gIERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfTUlOX1JPV1MsXG4gIERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfVklFV1BPUlRfT0ZGU0VULFxuICBERUZBVUxUX1BJQ0tMSVNUX0VNUFRZX1RFWFQsXG4gIERFRkFVTFRfUElDS0xJU1RfRU1QVFlfVElUTEUsXG4gIERFRkFVTFRfUElDS0xJU1RfRklSU1QsXG4gIERFRkFVTFRfUElDS0xJU1RfSUNPTl9DTEFTUyxcbiAgREVGQVVMVF9QSUNLTElTVF9JRF9LRVksXG4gIERFRkFVTFRfUElDS0xJU1RfTUFYX1ZJU0lCTEVfU0VMRUNURURfSVRFTVMsXG4gIERFRkFVTFRfUElDS0xJU1RfUExBQ0VIT0xERVIsXG4gIERFRkFVTFRfUElDS0xJU1RfUkVTVUxUU19DT1VOVEVSX1BMVVJBTF9MQUJFTCxcbiAgREVGQVVMVF9QSUNLTElTVF9SRVNVTFRTX0NPVU5URVJfU0lOR1VMQVJfTEFCRUwsXG4gIERFRkFVTFRfUElDS0xJU1RfUk9XUyxcbiAgREVGQVVMVF9QSUNLTElTVF9ST1dTX1BFUl9QQUdFX09QVElPTlMsXG4gIERFRkFVTFRfUElDS0xJU1RfU0VMRUNUSU9OX0lDT05fQ0xBU1MsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19JVEVNX0lDT04sXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19QQUdJTkFUT1IsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19SRVNVTFRTX0NPVU5URVIsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19ST1dTX1BFUl9QQUdFX09QVElPTlMsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19TRUxFQ1RJT05fQ09VTlRFUixcbiAgREVGQVVMVF9QSUNLTElTVF9TVUJUSVRMRV9LRVksXG4gIERFRkFVTFRfUElDS0xJU1RfVElUTEVfS0VZLFxuICBQSUNLTElTVF9ESVZJU09SX0ZBTExCQUNLLFxuICBQSUNLTElTVF9MT0FESU5HX0JMT0NLX0RFTEFZX01TLFxuICBQSUNLTElTVF9MT0FESU5HX0JMT0NLX1dJTkRPVyxcbiAgUElDS0xJU1RfTE9BRElOR19JTkRJQ0FUT1IsXG4gIFBJQ0tMSVNUX01JTl9TS0VMRVRPTl9ST1dTLFxuICBQSUNLTElTVF9QQUdFX0lOREVYXG59IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL3BpY2tsaXN0LmNvbnN0JztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3BhZ2luYXRvci50eXBlJztcbmltcG9ydCB0eXBlIHsgUGlja2xpc3RSZWNvcmQgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3BpY2tsaXN0LnR5cGUnO1xuaW1wb3J0IHsgdG9JbnRlZ2VyIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9udW1iZXIudXRpbCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nLXN0YXRlL2xvYWRpbmctc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJveC9zZWFyY2hib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXBpY2tsaXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgU2VhcmNoYm94Q29tcG9uZW50LFxuICAgIExvYWRpbmdTdGF0ZUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BpY2tsaXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tsaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZ0Jsb2NrV2luZG93ID0gUElDS0xJU1RfTE9BRElOR19CTE9DS19XSU5ET1c7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nSW5kaWNhdG9yID0gUElDS0xJU1RfTE9BRElOR19JTkRJQ0FUT1I7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nQmxvY2tEZWxheU1zID0gUElDS0xJU1RfTE9BRElOR19CTE9DS19ERUxBWV9NUztcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBpdGVtczogUGlja2xpc3RSZWNvcmRbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZElkczogbnVtYmVyW10gfCBTZXQ8bnVtYmVyPiA9IFtdO1xuXG4gIEBJbnB1dCgpIGlkS2V5ID0gREVGQVVMVF9QSUNLTElTVF9JRF9LRVk7XG4gIEBJbnB1dCgpIHRpdGxlS2V5ID0gREVGQVVMVF9QSUNLTElTVF9USVRMRV9LRVk7XG4gIEBJbnB1dCgpIHN1YnRpdGxlS2V5ID0gREVGQVVMVF9QSUNLTElTVF9TVUJUSVRMRV9LRVk7XG4gIEBJbnB1dCgpIGljb25DbGFzcyA9IERFRkFVTFRfUElDS0xJU1RfSUNPTl9DTEFTUztcbiAgQElucHV0KCkgc2VsZWN0aW9uSWNvbkNsYXNzID0gREVGQVVMVF9QSUNLTElTVF9TRUxFQ1RJT05fSUNPTl9DTEFTUztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBERUZBVUxUX1BJQ0tMSVNUX1BMQUNFSE9MREVSO1xuICBASW5wdXQoKSBlbXB0eVRpdGxlID0gREVGQVVMVF9QSUNLTElTVF9FTVBUWV9USVRMRTtcbiAgQElucHV0KCkgZW1wdHlUZXh0ID0gREVGQVVMVF9QSUNLTElTVF9FTVBUWV9URVhUO1xuICBASW5wdXQoKSByZXN1bHRzQ291bnRlclNpbmd1bGFyTGFiZWwgPSBERUZBVUxUX1BJQ0tMSVNUX1JFU1VMVFNfQ09VTlRFUl9TSU5HVUxBUl9MQUJFTDtcbiAgQElucHV0KCkgcmVzdWx0c0NvdW50ZXJQbHVyYWxMYWJlbCA9IERFRkFVTFRfUElDS0xJU1RfUkVTVUxUU19DT1VOVEVSX1BMVVJBTF9MQUJFTDtcbiAgQElucHV0KCkgZmlsdGVyRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGZpcnN0ID0gREVGQVVMVF9QSUNLTElTVF9GSVJTVDtcbiAgQElucHV0KCkgcm93cyA9IERFRkFVTFRfUElDS0xJU1RfUk9XUztcbiAgQElucHV0KCkgcm93c1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXSA9IFsuLi5ERUZBVUxUX1BJQ0tMSVNUX1JPV1NfUEVSX1BBR0VfT1BUSU9OU107XG4gIEBJbnB1dCgpIG1heFZpc2libGVTZWxlY3RlZEl0ZW1zID0gREVGQVVMVF9QSUNLTElTVF9NQVhfVklTSUJMRV9TRUxFQ1RFRF9JVEVNUztcblxuICBASW5wdXQoKSBzaG93UGFnaW5hdG9yID0gREVGQVVMVF9QSUNLTElTVF9TSE9XX1BBR0lOQVRPUjtcbiAgQElucHV0KCkgc2hvd1Jvd3NQZXJQYWdlT3B0aW9ucyA9IERFRkFVTFRfUElDS0xJU1RfU0hPV19ST1dTX1BFUl9QQUdFX09QVElPTlM7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3Rpb25Db3VudGVyID0gREVGQVVMVF9QSUNLTElTVF9TSE9XX1NFTEVDVElPTl9DT1VOVEVSO1xuICBASW5wdXQoKSBzaG93UmVzdWx0c0NvdW50ZXIgPSBERUZBVUxUX1BJQ0tMSVNUX1NIT1dfUkVTVUxUU19DT1VOVEVSO1xuICBASW5wdXQoKSBzaG93SXRlbUljb24gPSBERUZBVUxUX1BJQ0tMSVNUX1NIT1dfSVRFTV9JQ09OO1xuXG4gIEBJbnB1dCgpIGF1dG9SZXNpemUgPSBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFO1xuICBASW5wdXQoKSBhdXRvUmVzaXplTWluUm93cyA9IERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfTUlOX1JPV1M7XG4gIEBJbnB1dCgpIGF1dG9SZXNpemVNYXhSb3dzID0gREVGQVVMVF9QSUNLTElTVF9BVVRPX1JFU0laRV9NQVhfUk9XUztcbiAgQElucHV0KCkgYXV0b1Jlc2l6ZUl0ZW1IZWlnaHQgPSBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX0lURU1fSEVJR0hUO1xuICBASW5wdXQoKSBhdXRvUmVzaXplVmlld3BvcnRPZmZzZXQgPSBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX1ZJRVdQT1JUX09GRlNFVDtcblxuICBASW5wdXQoKVxuICBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubG9hZGluZ1N0YXRlLnNldCghIXZhbHVlKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0b3JTdGF0ZT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hTZWN0aW9uJykgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hTZWN0aW9uUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkU2VjdGlvbicpIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRTZWN0aW9uUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlclNlY3Rpb24nKSBwcml2YXRlIHJlYWRvbmx5IGZvb3RlclNlY3Rpb25SZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1N0YXRlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZGluZ1N0YXRlKCkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJlZFF1ZXJ5ID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VTdGF0ZSA9IHNpZ25hbDxQYWdpbmF0b3JTdGF0ZT4oeyBmaXJzdDogdGhpcy5maXJzdCwgcm93czogdGhpcy5yb3dzLCBwYWdlOiBQSUNLTElTVF9QQUdFX0lOREVYLCBwYWdlQ291bnQ6IDAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRFeHBhbmRlZFN0YXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIHNlbCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZElkcyddKSB7XG4gICAgICBjb25zdCBuZXh0VmFsdWVzID0gdGhpcy5zZWxlY3RlZElkcyBpbnN0YW5jZW9mIFNldCA/IFsuLi50aGlzLnNlbGVjdGVkSWRzXSA6IHRoaXMuc2VsZWN0ZWRJZHMgPz8gW107XG4gICAgICB0aGlzLnNlbCA9IG5ldyBTZXQoKG5leHRWYWx1ZXMgYXMgdW5rbm93bltdKS5tYXAoKGl0ZW0pID0+IHRvSW50ZWdlcihpdGVtKSkuZmlsdGVyKChpdGVtKSA9PiAhTnVtYmVyLmlzTmFOKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2ZpcnN0J10gfHwgY2hhbmdlc1sncm93cyddKSB7XG4gICAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoe1xuICAgICAgICAuLi50aGlzLnBhZ2VTdGF0ZSgpLFxuICAgICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgICAgcm93czogdGhpcy5yb3dzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMudXBkYXRlUm93c0Zyb21WaWV3cG9ydCgpKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF1dG9SZXNpemUgfHwgdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLnVwZGF0ZVJvd3NGcm9tVmlld3BvcnQoKSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hTZWN0aW9uUmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5zZWFyY2hTZWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2VjdGlvblJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuc2VsZWN0ZWRTZWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvb3RlclNlY3Rpb25SZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmZvb3RlclNlY3Rpb25SZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVSb3dzRnJvbVZpZXdwb3J0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBvblNlYXJjaCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZFF1ZXJ5LnNldCh2YWx1ZSA/PyAnJyk7XG4gICAgdGhpcy5wYWdlU3RhdGUuc2V0KHsgLi4udGhpcy5wYWdlU3RhdGUoKSwgZmlyc3Q6IERFRkFVTFRfUElDS0xJU1RfRklSU1QgfSk7XG4gIH1cblxuICBvblNlYXJjaFRlcm0odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25TZWFyY2godmFsdWUpO1xuICB9XG5cbiAgb25DbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkUXVlcnkuc2V0KCcnKTtcbiAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoeyAuLi50aGlzLnBhZ2VTdGF0ZSgpLCBmaXJzdDogREVGQVVMVF9QSUNLTElTVF9GSVJTVCB9KTtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogUGFnaW5hdG9yU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTdGF0ZS5zZXQoZXZlbnQpO1xuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZCgpOiBQaWNrbGlzdFJlY29yZFtdIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuZmlsdGVyZWRRdWVyeSgpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyYWJsZVZhbHVlcyhpdGVtKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUuaW5jbHVkZXMocXVlcnkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB0b3RhbFJlc3VsdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZC5sZW5ndGg7XG4gIH1cblxuICBnZXQgcm93c1ZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVN0YXRlKCkucm93cyA/PyB0aGlzLnJvd3M7XG4gIH1cblxuICBnZXQgZmlyc3RWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2VTdGF0ZSgpLmZpcnN0ID8/IHRoaXMuZmlyc3Q7XG4gIH1cblxuICBnZXQgcGFnZUl0ZW1zKCk6IFBpY2tsaXN0UmVjb3JkW10ge1xuICAgIGlmICghdGhpcy5zaG93UGFnaW5hdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZC5zbGljZSh0aGlzLmZpcnN0VmFsdWUsIHRoaXMuZmlyc3RWYWx1ZSArIHRoaXMucm93c1ZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEl0ZW1zKCk6IFBpY2tsaXN0UmVjb3JkW10ge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLml0ZW1zID8/IFtdO1xuICAgIHJldHVybiBiYXNlLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5zZWwuaGFzKHRvSW50ZWdlcihpdGVtPy5bdGhpcy5pZEtleV0pKSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZVNlbGVjdGVkSXRlbXMoKTogUGlja2xpc3RSZWNvcmRbXSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIHRoaXMubWF4VmlzaWJsZVNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgZ2V0IGhpZGRlblNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIHRoaXMudmlzaWJsZVNlbGVjdGVkSXRlbXMubGVuZ3RoKTtcbiAgfVxuXG4gIGdldCBza2VsZXRvblJvd3MoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHJvd3MgPSBNYXRoLm1heCh0aGlzLnJvd3NWYWx1ZSwgUElDS0xJU1RfTUlOX1NLRUxFVE9OX1JPV1MpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dzIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFF1ZXJ5KCk7XG4gIH1cblxuICBzZXQgc2VhcmNoVGVybSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJlZFF1ZXJ5LnNldCh2YWx1ZSA/PyAnJyk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEV4cGFuZGVkU3RhdGUoKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgc2hvd1NrZWxldG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZygpICYmIHRoaXMudG90YWxSZXN1bHRzID09PSAwO1xuICB9XG5cbiAgZ2V0IHRvdGFsUmVjb3JkcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvdGFsUmVzdWx0cztcbiAgfVxuXG4gIGdldCBhY3RpdmVSb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucm93c1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlc3VsdHNDb3VudGVyTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbFJlY29yZHMgPT09IDFcbiAgICAgID8gdGhpcy5yZXN1bHRzQ291bnRlclNpbmd1bGFyTGFiZWxcbiAgICAgIDogdGhpcy5yZXN1bHRzQ291bnRlclBsdXJhbExhYmVsO1xuICB9XG5cbiAgZ2V0IHBhZ2luYXRvclJvd3NQZXJQYWdlT3B0aW9ucygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1Jvd3NQZXJQYWdlT3B0aW9ucyA/IHRoaXMucm93c1BlclBhZ2VPcHRpb25zIDogW107XG4gIH1cblxuICB0cmFja0J5SWQgPSAoX2luZGV4OiBudW1iZXIsIGl0ZW06IFBpY2tsaXN0UmVjb3JkKSA9PiBpdGVtPy5bdGhpcy5pZEtleV07XG5cbiAgZ2V0VGl0bGUoaXRlbTogUGlja2xpc3RSZWNvcmQpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcoaXRlbT8uW3RoaXMudGl0bGVLZXldID8/ICcnKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKGl0ZW0/Llt0aGlzLnN1YnRpdGxlS2V5XSA/PyAnJyk7XG4gIH1cblxuICBpc1NlbGVjdGVkKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWQgPSB0b0ludGVnZXIoaXRlbT8uW3RoaXMuaWRLZXldKTtcbiAgICByZXR1cm4gIU51bWJlci5pc05hTihpZCkgJiYgdGhpcy5zZWwuaGFzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZShpdGVtOiBQaWNrbGlzdFJlY29yZCwgY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdG9JbnRlZ2VyKGl0ZW0/Llt0aGlzLmlkS2V5XSk7XG4gICAgaWYgKE51bWJlci5pc05hTihpZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWwuYWRkKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWwuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHJvd0NsaWNrKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0b0ludGVnZXIoaXRlbT8uW3RoaXMuaWRLZXldKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKGl0ZW0sICF0aGlzLnNlbC5oYXMoaWQpKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBQaWNrbGlzdFJlY29yZCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlKGl0ZW0sIGZhbHNlKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGVkRXhwYW5kZWQoZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRXhwYW5kZWRTdGF0ZS5zZXQoZXhwYW5kZWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zZWxdKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyYWJsZVZhbHVlcyhpdGVtOiBQaWNrbGlzdFJlY29yZCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRmlsdGVyRmllbGRQYXRocygpLm1hcCgocGF0aCkgPT4gdGhpcy5nZXRJdGVtVmFsdWVCeVBhdGgoaXRlbSwgcGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRmlsdGVyRmllbGRQYXRocygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlckZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC50cmltKCkubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFt0aGlzLnRpdGxlS2V5LCB0aGlzLnN1YnRpdGxlS2V5XS5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC50cmltKCkubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1WYWx1ZUJ5UGF0aChpdGVtOiBQaWNrbGlzdFJlY29yZCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHBhdGhcbiAgICAgIC5zcGxpdCgnLicpXG4gICAgICAubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKHNlZ21lbnQpID0+IHNlZ21lbnQubGVuZ3RoID4gMCk7XG5cbiAgICBsZXQgY3VycmVudDogdW5rbm93biA9IGl0ZW07XG5cbiAgICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHtcbiAgICAgIGlmIChjdXJyZW50ID09PSBudWxsIHx8IGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgY3VycmVudCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50ID0gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcoY3VycmVudCA/PyAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUm93c0Zyb21WaWV3cG9ydCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b1Jlc2l6ZSB8fCB0eXBlb2YgZ2xvYmFsVGhpcy53aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBnbG9iYWxUaGlzLndpbmRvdy5pbm5lckhlaWdodDtcbiAgICBjb25zdCBzZWFyY2hIZWlnaHQgPSB0aGlzLnNlYXJjaFNlY3Rpb25SZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8/IDA7XG4gICAgY29uc3Qgc2VsZWN0ZWRIZWlnaHQgPSB0aGlzLnNlbGVjdGVkU2VjdGlvblJlZj8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPz8gMDtcbiAgICBjb25zdCBmb290ZXJIZWlnaHQgPSB0aGlzLmZvb3RlclNlY3Rpb25SZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8/IDA7XG4gICAgY29uc3QgYXZhaWxhYmxlID0gTWF0aC5tYXgoXG4gICAgICB0aGlzLmF1dG9SZXNpemVNaW5Sb3dzICogdGhpcy5hdXRvUmVzaXplSXRlbUhlaWdodCxcbiAgICAgIHZpZXdwb3J0SGVpZ2h0IC0gc2VhcmNoSGVpZ2h0IC0gc2VsZWN0ZWRIZWlnaHQgLSBmb290ZXJIZWlnaHQgLSB0aGlzLmF1dG9SZXNpemVWaWV3cG9ydE9mZnNldFxuICAgICk7XG5cbiAgICBjb25zdCBuZXh0Um93cyA9IE1hdGgubWF4KFxuICAgICAgdGhpcy5hdXRvUmVzaXplTWluUm93cyxcbiAgICAgIE1hdGgubWluKHRoaXMuYXV0b1Jlc2l6ZU1heFJvd3MsIE1hdGguZmxvb3IoYXZhaWxhYmxlIC8gTWF0aC5tYXgodGhpcy5hdXRvUmVzaXplSXRlbUhlaWdodCwgUElDS0xJU1RfRElWSVNPUl9GQUxMQkFDSykpKVxuICAgICk7XG5cbiAgICBpZiAobmV4dFJvd3MgIT09IHRoaXMucGFnZVN0YXRlKCkucm93cykge1xuICAgICAgdGhpcy5wYWdlU3RhdGUuc2V0KHtcbiAgICAgICAgLi4udGhpcy5wYWdlU3RhdGUoKSxcbiAgICAgICAgcm93czogbmV4dFJvd3MsXG4gICAgICAgIGZpcnN0OiBERUZBVUxUX1BJQ0tMSVNUX0ZJUlNUXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdFwiPlxuICA8c2RjLWxvYWRpbmctc3RhdGVcbiAgICBjbGFzcz1cInNkYy1waWNrbGlzdF9fbG9hZGluZy1zdGF0ZVwiXG4gICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgIFtibG9ja1dpbmRvd109XCJsb2FkaW5nQmxvY2tXaW5kb3dcIlxuICAgIFtpbmRpY2F0b3JdPVwibG9hZGluZ0luZGljYXRvclwiXG4gICAgW2Jsb2NrRGVsYXlNc109XCJsb2FkaW5nQmxvY2tEZWxheU1zXCJcbiAgPlxuICAgIDxkaXYgI3NlYXJjaFNlY3Rpb24gY2xhc3M9XCJzZGMtcGlja2xpc3RfX3NlYXJjaFwiPlxuICAgICAgPHNkYy1zZWFyY2hib3hcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hUZXJtKCRldmVudClcIlxuICAgICAgPjwvc2RjLXNlYXJjaGJveD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICNzZWxlY3RlZFNlY3Rpb25cbiAgICAgIGNsYXNzPVwic2RjLXBpY2tsaXN0X19zZWxlY3RlZFwiXG4gICAgICBbY2xhc3Muc2RjLXBpY2tsaXN0X19zZWxlY3RlZC0taGFzLWl0ZW1zXT1cInNlbGVjdGVkQ291bnQgPiAwXCJcbiAgICA+XG4gICAgICBAaWYgKHNlbGVjdGVkQ291bnQgPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoaXBzXCIgW2NsYXNzLnNkYy1waWNrbGlzdF9fY2hpcHMtLWV4cGFuZGVkXT1cInNlbGVjdGVkRXhwYW5kZWRcIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHZpc2libGVTZWxlY3RlZEl0ZW1zOyB0cmFjayB0cmFja0J5SWQoJGluZGV4LCBpdGVtKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoaXBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoaXAtdGV4dFwiPnt7IGdldFRpdGxlKGl0ZW0pIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hpcC14XCI+w5c8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKCFzZWxlY3RlZEV4cGFuZGVkICYmIGhpZGRlblNlbGVjdGVkQ291bnQgPiAwKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hpcCBzZGMtcGlja2xpc3RfX2NoaXAtLW1vcmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0ZWRFeHBhbmRlZCh0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBoaWRkZW5TZWxlY3RlZENvdW50IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHNlbGVjdGVkRXhwYW5kZWQgJiYgaGlkZGVuU2VsZWN0ZWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGlwIHNkYy1waWNrbGlzdF9fY2hpcC0tbGVzc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3RlZEV4cGFuZGVkKGZhbHNlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybS5kYXRhY29yZS5sZXNzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NvbnRlbnRcIj5cbiAgICAgIEBpZiAoc2hvd1NrZWxldG9uKSB7XG4gICAgICAgIDx1bCBjbGFzcz1cInNkYy1waWNrbGlzdF9fbGlzdFwiPlxuICAgICAgICAgIEBmb3IgKHJvdyBvZiBza2VsZXRvblJvd3M7IHRyYWNrIHJvdykge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwic2RjLXBpY2tsaXN0X19saXN0LWl0ZW0gc2RjLXBpY2tsaXN0X19saXN0LWl0ZW0tLXNrZWxldG9uXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2l0ZW0gc2RjLXBpY2tsaXN0X19pdGVtLS1za2VsZXRvblwiPjwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9IEBlbHNlIGlmIChwYWdlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICA8dWwgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2xpc3RcIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHBhZ2VJdGVtczsgdHJhY2sgdHJhY2tCeUlkKCRpbmRleCwgaXRlbSkpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInNkYy1waWNrbGlzdF9fbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1waWNrbGlzdF9faXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNkYy1waWNrbGlzdF9faXRlbS0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGVja1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgIDxzZGMtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L3NkYy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dJdGVtSWNvbikge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fdGV4dHNcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X190aXRsZVwiPnt7IGdldFRpdGxlKGl0ZW0pIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRTdWJ0aXRsZShpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fc3VidGl0bGVcIj57eyBnZXRTdWJ0aXRsZShpdGVtKSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZW1wdHlcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zZWFyY2ggc2RjLXBpY2tsaXN0X19lbXB0eS1pY29uXCI+PC9pPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2VtcHR5LXRpdGxlXCI+XG4gICAgICAgICAgICB7eyBlbXB0eVRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZW1wdHktdGV4dFwiPlxuICAgICAgICAgICAge3sgZW1wdHlUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChzaG93UGFnaW5hdG9yICYmIHRvdGFsUmVjb3JkcyA+IDApIHtcbiAgICAgIDxkaXYgI2Zvb3RlclNlY3Rpb24gY2xhc3M9XCJzZGMtcGlja2xpc3RfX2Zvb3RlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19mb290ZXItbGVmdFwiPlxuICAgICAgICAgIEBpZiAoc2hvd1NlbGVjdGlvbkNvdW50ZXIpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX3NlbGVjdGlvbi1jb3VudGVyLXdyYXBcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZGMtcGlja2xpc3RfX3NlbGVjdGlvbi1jb3VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cInNlbGVjdGlvbkljb25DbGFzc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZENvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2Zvb3Rlci1wYWdpbmF0b3JcIj5cbiAgICAgICAgICAgIDxzZGMtcGFnaW5hdG9yXG4gICAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFZhbHVlXCJcbiAgICAgICAgICAgICAgW3Jvd3NdPVwiYWN0aXZlUm93c1wiXG4gICAgICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgICAgICAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJwYWdpbmF0b3JSb3dzUGVyUGFnZU9wdGlvbnNcIlxuICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9zZGMtcGFnaW5hdG9yPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHNob3dSZXN1bHRzQ291bnRlcikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX3Jlc3VsdHNcIj5cbiAgICAgICAgICAgIHt7IHRvdGFsUmVjb3JkcyB9fSB7eyByZXN1bHRzQ291bnRlckxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9zZGMtbG9hZGluZy1zdGF0ZT5cbjwvZGl2PlxuIl19
|