@seniorsistemas/data-seniorx-core 2.1.0 → 2.2.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/constants/chips.const.d.ts +1 -0
- package/core/constants/combobox.const.d.ts +1 -1
- package/core/constants/fileupload.const.d.ts +9 -0
- package/core/constants/icon-picker.const.d.ts +1 -0
- package/core/constants/picklist.const.d.ts +1 -0
- package/core/constants/table.const.d.ts +43 -0
- package/core/types/button.type.d.ts +18 -2
- package/core/types/fileupload.type.d.ts +17 -0
- package/core/types/filters.type.d.ts +4 -0
- package/core/types/table-column.type.d.ts +31 -0
- package/core/types/table-options.type.d.ts +90 -0
- package/core/types/table-shared.type.d.ts +13 -0
- package/core/types/table-visual.type.d.ts +23 -0
- package/core/types/table.type.d.ts +4 -113
- package/core/utils/layout.util.d.ts +4 -0
- package/esm2022/core/constants/chips.const.mjs +2 -1
- package/esm2022/core/constants/combobox.const.mjs +2 -2
- package/esm2022/core/constants/fileupload.const.mjs +10 -0
- package/esm2022/core/constants/icon-picker.const.mjs +76 -1
- package/esm2022/core/constants/picklist.const.mjs +2 -1
- package/esm2022/core/constants/table.const.mjs +53 -6
- package/esm2022/core/types/button.type.mjs +1 -1
- package/esm2022/core/types/fileupload.type.mjs +2 -0
- package/esm2022/core/types/filters.type.mjs +1 -1
- package/esm2022/core/types/table-column.type.mjs +2 -0
- package/esm2022/core/types/table-options.type.mjs +2 -0
- package/esm2022/core/types/table-shared.type.mjs +2 -0
- package/esm2022/core/types/table-visual.type.mjs +2 -0
- package/esm2022/core/types/table.type.mjs +1 -1
- package/esm2022/core/utils/combobox.util.mjs +2 -2
- package/esm2022/core/utils/layout.util.mjs +21 -5
- package/esm2022/features/accordion/accordion-item.component.mjs +1 -1
- package/esm2022/features/badge/badge.component.mjs +1 -1
- package/esm2022/features/button/button.component.mjs +76 -11
- package/esm2022/features/button/components/button-menu.component.mjs +81 -0
- package/esm2022/features/card-list/card/card.component.mjs +3 -3
- package/esm2022/features/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/features/chips/chips.component.mjs +8 -5
- package/esm2022/features/color-picker/color-picker.component.mjs +1 -1
- package/esm2022/features/combobox/combobox.component.mjs +17 -4
- package/esm2022/features/fileupload/fileupload.component.mjs +311 -0
- package/esm2022/features/filters/filters.component.mjs +3 -3
- package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
- package/esm2022/features/icon-picker/icon-picker.component.mjs +34 -7
- package/esm2022/features/info-sign/info-sign.component.mjs +1 -1
- package/esm2022/features/mask/mask.component.mjs +1 -1
- package/esm2022/features/modal/modal.component.mjs +1 -1
- package/esm2022/features/number-input/number-input.component.mjs +1 -1
- package/esm2022/features/paginator/paginator.component.mjs +3 -3
- package/esm2022/features/picklist/picklist.component.mjs +33 -6
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
- package/esm2022/features/searchbox/searchbox.component.mjs +3 -3
- package/esm2022/features/stats-card/stats-card.component.mjs +1 -1
- package/esm2022/features/switch/switch.component.mjs +3 -2
- package/esm2022/features/table/components/table-actions-menu.component.mjs +86 -0
- package/esm2022/features/table/components/table-cell-content.component.mjs +124 -0
- package/esm2022/features/table/components/table-sort-indicator.component.mjs +65 -0
- package/esm2022/features/table/table.component.mjs +116 -319
- package/esm2022/features/table/utils/table-config.util.mjs +35 -0
- package/esm2022/features/table/utils/table-data.util.mjs +96 -0
- package/esm2022/features/table/utils/table-layout.util.mjs +25 -0
- package/esm2022/features/table/utils/table-truncate.pipe.mjs +19 -0
- package/esm2022/features/table/utils/table-visual.util.mjs +221 -0
- package/esm2022/features/textarea/textarea.component.mjs +1 -1
- package/esm2022/features/textbox/textbox.component.mjs +1 -1
- package/esm2022/features/tooltip/tooltip.component.mjs +12 -3
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2 -2
- package/esm2022/locales/en.json +194 -0
- package/esm2022/locales/es-CO.json +187 -1
- package/esm2022/locales/pt.json +194 -0
- package/esm2022/providers/features.provider.mjs +3 -1
- package/esm2022/public-api.mjs +3 -1
- package/features/button/button.component.d.ts +14 -7
- package/features/button/components/button-menu.component.d.ts +25 -0
- package/features/chips/chips.component.d.ts +1 -0
- package/features/combobox/combobox.component.d.ts +4 -1
- package/features/fileupload/fileupload.component.d.ts +66 -0
- package/features/icon-picker/icon-picker.component.d.ts +3 -0
- package/features/modal/modal.component.d.ts +1 -1
- package/features/picklist/picklist.component.d.ts +6 -1
- package/features/table/components/table-actions-menu.component.d.ts +12 -0
- package/features/table/components/table-cell-content.component.d.ts +41 -0
- package/features/table/components/table-sort-indicator.component.d.ts +11 -0
- package/features/table/table.component.d.ts +28 -44
- package/features/table/utils/table-config.util.d.ts +3 -0
- package/features/table/utils/table-data.util.d.ts +10 -0
- package/features/table/utils/table-layout.util.d.ts +4 -0
- package/features/table/utils/table-truncate.pipe.d.ts +12 -0
- package/features/table/utils/table-visual.util.d.ts +21 -0
- package/features/tooltip/tooltip.component.d.ts +3 -1
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +3525 -1848
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +5 -2
- package/src/locales/en.json +194 -0
- package/src/locales/es-CO.json +187 -1
- package/src/locales/pt.json +194 -0
|
@@ -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_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';
|
|
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_ICON_CLASS, 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';
|
|
@@ -25,6 +25,7 @@ export class PicklistComponent {
|
|
|
25
25
|
placeholder = DEFAULT_PICKLIST_PLACEHOLDER;
|
|
26
26
|
emptyTitle = DEFAULT_PICKLIST_EMPTY_TITLE;
|
|
27
27
|
emptyText = DEFAULT_PICKLIST_EMPTY_TEXT;
|
|
28
|
+
emptyIconClass = DEFAULT_PICKLIST_EMPTY_ICON_CLASS;
|
|
28
29
|
resultsCounterSingularLabel = DEFAULT_PICKLIST_RESULTS_COUNTER_SINGULAR_LABEL;
|
|
29
30
|
resultsCounterPluralLabel = DEFAULT_PICKLIST_RESULTS_COUNTER_PLURAL_LABEL;
|
|
30
31
|
filterFields = [];
|
|
@@ -42,6 +43,9 @@ export class PicklistComponent {
|
|
|
42
43
|
autoResizeMaxRows = DEFAULT_PICKLIST_AUTO_RESIZE_MAX_ROWS;
|
|
43
44
|
autoResizeItemHeight = DEFAULT_PICKLIST_AUTO_RESIZE_ITEM_HEIGHT;
|
|
44
45
|
autoResizeViewportOffset = DEFAULT_PICKLIST_AUTO_RESIZE_VIEWPORT_OFFSET;
|
|
46
|
+
maxTitleLength = 0;
|
|
47
|
+
maxSubtitleLength = 0;
|
|
48
|
+
autofocusSearch = false;
|
|
45
49
|
set loading(value) {
|
|
46
50
|
this.loadingState.set(!!value);
|
|
47
51
|
}
|
|
@@ -50,6 +54,7 @@ export class PicklistComponent {
|
|
|
50
54
|
searchSectionRef;
|
|
51
55
|
selectedSectionRef;
|
|
52
56
|
footerSectionRef;
|
|
57
|
+
searchboxRef;
|
|
53
58
|
cdr = inject(ChangeDetectorRef);
|
|
54
59
|
zone = inject(NgZone);
|
|
55
60
|
loadingState = signal(false);
|
|
@@ -76,6 +81,11 @@ export class PicklistComponent {
|
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
83
|
ngAfterViewInit() {
|
|
84
|
+
if (this.autofocusSearch) {
|
|
85
|
+
this.zone.runOutsideAngular(() => {
|
|
86
|
+
setTimeout(() => this.searchboxRef?.focusInput());
|
|
87
|
+
});
|
|
88
|
+
}
|
|
79
89
|
if (!this.autoResize || typeof ResizeObserver === 'undefined') {
|
|
80
90
|
return;
|
|
81
91
|
}
|
|
@@ -183,10 +193,16 @@ export class PicklistComponent {
|
|
|
183
193
|
}
|
|
184
194
|
trackById = (_index, item) => item?.[this.idKey];
|
|
185
195
|
getTitle(item) {
|
|
186
|
-
|
|
196
|
+
const value = String(item?.[this.titleKey] ?? '');
|
|
197
|
+
return this.maxTitleLength > 0 && value.length > this.maxTitleLength
|
|
198
|
+
? `${value.slice(0, this.maxTitleLength)}…`
|
|
199
|
+
: value;
|
|
187
200
|
}
|
|
188
201
|
getSubtitle(item) {
|
|
189
|
-
|
|
202
|
+
const value = String(item?.[this.subtitleKey] ?? '');
|
|
203
|
+
return this.maxSubtitleLength > 0 && value.length > this.maxSubtitleLength
|
|
204
|
+
? `${value.slice(0, this.maxSubtitleLength)}…`
|
|
205
|
+
: value;
|
|
190
206
|
}
|
|
191
207
|
isSelected(item) {
|
|
192
208
|
const id = toInteger(item?.[this.idKey]);
|
|
@@ -266,7 +282,7 @@ export class PicklistComponent {
|
|
|
266
282
|
}
|
|
267
283
|
}
|
|
268
284
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PicklistComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
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 });
|
|
285
|
+
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", emptyIconClass: "emptyIconClass", 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", maxTitleLength: "maxTitleLength", maxSubtitleLength: "maxSubtitleLength", autofocusSearch: "autofocusSearch", 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 }, { propertyName: "searchboxRef", first: true, predicate: SearchboxComponent, 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]=\"emptyIconClass + ' 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) {\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 });
|
|
270
286
|
}
|
|
271
287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PicklistComponent, decorators: [{
|
|
272
288
|
type: Component,
|
|
@@ -278,7 +294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
278
294
|
SearchboxComponent,
|
|
279
295
|
LoadingStateComponent,
|
|
280
296
|
TranslateModule
|
|
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"] }]
|
|
297
|
+
], 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]=\"emptyIconClass + ' 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) {\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"] }]
|
|
282
298
|
}], propDecorators: { items: [{
|
|
283
299
|
type: Input,
|
|
284
300
|
args: [{ required: true }]
|
|
@@ -300,6 +316,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
300
316
|
type: Input
|
|
301
317
|
}], emptyText: [{
|
|
302
318
|
type: Input
|
|
319
|
+
}], emptyIconClass: [{
|
|
320
|
+
type: Input
|
|
303
321
|
}], resultsCounterSingularLabel: [{
|
|
304
322
|
type: Input
|
|
305
323
|
}], resultsCounterPluralLabel: [{
|
|
@@ -334,6 +352,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
334
352
|
type: Input
|
|
335
353
|
}], autoResizeViewportOffset: [{
|
|
336
354
|
type: Input
|
|
355
|
+
}], maxTitleLength: [{
|
|
356
|
+
type: Input
|
|
357
|
+
}], maxSubtitleLength: [{
|
|
358
|
+
type: Input
|
|
359
|
+
}], autofocusSearch: [{
|
|
360
|
+
type: Input
|
|
337
361
|
}], loading: [{
|
|
338
362
|
type: Input
|
|
339
363
|
}], pageChange: [{
|
|
@@ -349,5 +373,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
349
373
|
}], footerSectionRef: [{
|
|
350
374
|
type: ViewChild,
|
|
351
375
|
args: ['footerSection']
|
|
376
|
+
}], searchboxRef: [{
|
|
377
|
+
type: ViewChild,
|
|
378
|
+
args: [SearchboxComponent]
|
|
352
379
|
}] } });
|
|
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
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9waWNrbGlzdC9waWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BpY2tsaXN0L3BpY2tsaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1QyxpQ0FBaUMsRUFDakMsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1QixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QiwyQ0FBMkMsRUFDM0MsNEJBQTRCLEVBQzVCLDZDQUE2QyxFQUM3QywrQ0FBK0MsRUFDL0MscUJBQXFCLEVBQ3JCLHNDQUFzQyxFQUN0QyxxQ0FBcUMsRUFDckMsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQixxQ0FBcUMsRUFDckMsMkNBQTJDLEVBQzNDLHVDQUF1QyxFQUN2Qyw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QiwrQkFBK0IsRUFDL0IsNkJBQTZCLEVBQzdCLDBCQUEw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S0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFc0MsZ0JBQWdCO3NCQUE1RCxTQUFTO3VCQUFDLGVBQWU7Z0JBQ3FCLGtCQUFrQjtzQkFBaEUsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ2lCLGdCQUFnQjtzQkFBNUQsU0FBUzt1QkFBQyxlQUFlO2dCQUNzQixZQUFZO3NCQUEzRCxTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFLFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX0lURU1fSEVJR0hULFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX01BWF9ST1dTLFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX01JTl9ST1dTLFxuICBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX1ZJRVdQT1JUX09GRlNFVCxcbiAgREVGQVVMVF9QSUNLTElTVF9FTVBUWV9JQ09OX0NMQVNTLFxuICBERUZBVUxUX1BJQ0tMSVNUX0VNUFRZX1RFWFQsXG4gIERFRkFVTFRfUElDS0xJU1RfRU1QVFlfVElUTEUsXG4gIERFRkFVTFRfUElDS0xJU1RfRklSU1QsXG4gIERFRkFVTFRfUElDS0xJU1RfSUNPTl9DTEFTUyxcbiAgREVGQVVMVF9QSUNLTElTVF9JRF9LRVksXG4gIERFRkFVTFRfUElDS0xJU1RfTUFYX1ZJU0lCTEVfU0VMRUNURURfSVRFTVMsXG4gIERFRkFVTFRfUElDS0xJU1RfUExBQ0VIT0xERVIsXG4gIERFRkFVTFRfUElDS0xJU1RfUkVTVUxUU19DT1VOVEVSX1BMVVJBTF9MQUJFTCxcbiAgREVGQVVMVF9QSUNLTElTVF9SRVNVTFRTX0NPVU5URVJfU0lOR1VMQVJfTEFCRUwsXG4gIERFRkFVTFRfUElDS0xJU1RfUk9XUyxcbiAgREVGQVVMVF9QSUNLTElTVF9ST1dTX1BFUl9QQUdFX09QVElPTlMsXG4gIERFRkFVTFRfUElDS0xJU1RfU0VMRUNUSU9OX0lDT05fQ0xBU1MsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19JVEVNX0lDT04sXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19QQUdJTkFUT1IsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19SRVNVTFRTX0NPVU5URVIsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19ST1dTX1BFUl9QQUdFX09QVElPTlMsXG4gIERFRkFVTFRfUElDS0xJU1RfU0hPV19TRUxFQ1RJT05fQ09VTlRFUixcbiAgREVGQVVMVF9QSUNLTElTVF9TVUJUSVRMRV9LRVksXG4gIERFRkFVTFRfUElDS0xJU1RfVElUTEVfS0VZLFxuICBQSUNLTElTVF9ESVZJU09SX0ZBTExCQUNLLFxuICBQSUNLTElTVF9MT0FESU5HX0JMT0NLX0RFTEFZX01TLFxuICBQSUNLTElTVF9MT0FESU5HX0JMT0NLX1dJTkRPVyxcbiAgUElDS0xJU1RfTE9BRElOR19JTkRJQ0FUT1IsXG4gIFBJQ0tMSVNUX01JTl9TS0VMRVRPTl9ST1dTLFxuICBQSUNLTElTVF9QQUdFX0lOREVYXG59IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL3BpY2tsaXN0LmNvbnN0JztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3BhZ2luYXRvci50eXBlJztcbmltcG9ydCB0eXBlIHsgUGlja2xpc3RSZWNvcmQgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3BpY2tsaXN0LnR5cGUnO1xuaW1wb3J0IHsgdG9JbnRlZ2VyIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9udW1iZXIudXRpbCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nLXN0YXRlL2xvYWRpbmctc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJveC9zZWFyY2hib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXBpY2tsaXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgU2VhcmNoYm94Q29tcG9uZW50LFxuICAgIExvYWRpbmdTdGF0ZUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BpY2tsaXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tsaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZ0Jsb2NrV2luZG93ID0gUElDS0xJU1RfTE9BRElOR19CTE9DS19XSU5ET1c7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nSW5kaWNhdG9yID0gUElDS0xJU1RfTE9BRElOR19JTkRJQ0FUT1I7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nQmxvY2tEZWxheU1zID0gUElDS0xJU1RfTE9BRElOR19CTE9DS19ERUxBWV9NUztcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBpdGVtczogUGlja2xpc3RSZWNvcmRbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZElkczogbnVtYmVyW10gfCBTZXQ8bnVtYmVyPiA9IFtdO1xuXG4gIEBJbnB1dCgpIGlkS2V5ID0gREVGQVVMVF9QSUNLTElTVF9JRF9LRVk7XG4gIEBJbnB1dCgpIHRpdGxlS2V5ID0gREVGQVVMVF9QSUNLTElTVF9USVRMRV9LRVk7XG4gIEBJbnB1dCgpIHN1YnRpdGxlS2V5ID0gREVGQVVMVF9QSUNLTElTVF9TVUJUSVRMRV9LRVk7XG4gIEBJbnB1dCgpIGljb25DbGFzcyA9IERFRkFVTFRfUElDS0xJU1RfSUNPTl9DTEFTUztcbiAgQElucHV0KCkgc2VsZWN0aW9uSWNvbkNsYXNzID0gREVGQVVMVF9QSUNLTElTVF9TRUxFQ1RJT05fSUNPTl9DTEFTUztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBERUZBVUxUX1BJQ0tMSVNUX1BMQUNFSE9MREVSO1xuICBASW5wdXQoKSBlbXB0eVRpdGxlID0gREVGQVVMVF9QSUNLTElTVF9FTVBUWV9USVRMRTtcbiAgQElucHV0KCkgZW1wdHlUZXh0ID0gREVGQVVMVF9QSUNLTElTVF9FTVBUWV9URVhUO1xuICBASW5wdXQoKSBlbXB0eUljb25DbGFzcyA9IERFRkFVTFRfUElDS0xJU1RfRU1QVFlfSUNPTl9DTEFTUztcbiAgQElucHV0KCkgcmVzdWx0c0NvdW50ZXJTaW5ndWxhckxhYmVsID0gREVGQVVMVF9QSUNLTElTVF9SRVNVTFRTX0NPVU5URVJfU0lOR1VMQVJfTEFCRUw7XG4gIEBJbnB1dCgpIHJlc3VsdHNDb3VudGVyUGx1cmFsTGFiZWwgPSBERUZBVUxUX1BJQ0tMSVNUX1JFU1VMVFNfQ09VTlRFUl9QTFVSQUxfTEFCRUw7XG4gIEBJbnB1dCgpIGZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKSBmaXJzdCA9IERFRkFVTFRfUElDS0xJU1RfRklSU1Q7XG4gIEBJbnB1dCgpIHJvd3MgPSBERUZBVUxUX1BJQ0tMSVNUX1JPV1M7XG4gIEBJbnB1dCgpIHJvd3NQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gPSBbLi4uREVGQVVMVF9QSUNLTElTVF9ST1dTX1BFUl9QQUdFX09QVElPTlNdO1xuICBASW5wdXQoKSBtYXhWaXNpYmxlU2VsZWN0ZWRJdGVtcyA9IERFRkFVTFRfUElDS0xJU1RfTUFYX1ZJU0lCTEVfU0VMRUNURURfSVRFTVM7XG5cbiAgQElucHV0KCkgc2hvd1BhZ2luYXRvciA9IERFRkFVTFRfUElDS0xJU1RfU0hPV19QQUdJTkFUT1I7XG4gIEBJbnB1dCgpIHNob3dSb3dzUGVyUGFnZU9wdGlvbnMgPSBERUZBVUxUX1BJQ0tMSVNUX1NIT1dfUk9XU19QRVJfUEFHRV9PUFRJT05TO1xuICBASW5wdXQoKSBzaG93U2VsZWN0aW9uQ291bnRlciA9IERFRkFVTFRfUElDS0xJU1RfU0hPV19TRUxFQ1RJT05fQ09VTlRFUjtcbiAgQElucHV0KCkgc2hvd1Jlc3VsdHNDb3VudGVyID0gREVGQVVMVF9QSUNLTElTVF9TSE9XX1JFU1VMVFNfQ09VTlRFUjtcbiAgQElucHV0KCkgc2hvd0l0ZW1JY29uID0gREVGQVVMVF9QSUNLTElTVF9TSE9XX0lURU1fSUNPTjtcblxuICBASW5wdXQoKSBhdXRvUmVzaXplID0gREVGQVVMVF9QSUNLTElTVF9BVVRPX1JFU0laRTtcbiAgQElucHV0KCkgYXV0b1Jlc2l6ZU1pblJvd3MgPSBERUZBVUxUX1BJQ0tMSVNUX0FVVE9fUkVTSVpFX01JTl9ST1dTO1xuICBASW5wdXQoKSBhdXRvUmVzaXplTWF4Um93cyA9IERFRkFVTFRfUElDS0xJU1RfQVVUT19SRVNJWkVfTUFYX1JPV1M7XG4gIEBJbnB1dCgpIGF1dG9SZXNpemVJdGVtSGVpZ2h0ID0gREVGQVVMVF9QSUNLTElTVF9BVVRPX1JFU0laRV9JVEVNX0hFSUdIVDtcbiAgQElucHV0KCkgYXV0b1Jlc2l6ZVZpZXdwb3J0T2Zmc2V0ID0gREVGQVVMVF9QSUNLTElTVF9BVVRPX1JFU0laRV9WSUVXUE9SVF9PRkZTRVQ7XG5cbiAgQElucHV0KCkgbWF4VGl0bGVMZW5ndGggPSAwO1xuICBASW5wdXQoKSBtYXhTdWJ0aXRsZUxlbmd0aCA9IDA7XG4gIEBJbnB1dCgpIGF1dG9mb2N1c1NlYXJjaCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkaW5nU3RhdGUuc2V0KCEhdmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRvclN0YXRlPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaFNlY3Rpb24nKSBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaFNlY3Rpb25SZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0ZWRTZWN0aW9uJykgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZFNlY3Rpb25SZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZm9vdGVyU2VjdGlvbicpIHByaXZhdGUgcmVhZG9ubHkgZm9vdGVyU2VjdGlvblJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKFNlYXJjaGJveENvbXBvbmVudCkgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hib3hSZWY/OiBTZWFyY2hib3hDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0xvYWRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvYWRpbmdTdGF0ZSgpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWRRdWVyeSA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwYWdlU3RhdGUgPSBzaWduYWw8UGFnaW5hdG9yU3RhdGU+KHsgZmlyc3Q6IHRoaXMuZmlyc3QsIHJvd3M6IHRoaXMucm93cywgcGFnZTogUElDS0xJU1RfUEFHRV9JTkRFWCwgcGFnZUNvdW50OiAwIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkRXhwYW5kZWRTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBzZWwgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRJZHMnXSkge1xuICAgICAgY29uc3QgbmV4dFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRJZHMgaW5zdGFuY2VvZiBTZXQgPyBbLi4udGhpcy5zZWxlY3RlZElkc10gOiB0aGlzLnNlbGVjdGVkSWRzID8/IFtdO1xuICAgICAgdGhpcy5zZWwgPSBuZXcgU2V0KChuZXh0VmFsdWVzIGFzIHVua25vd25bXSkubWFwKChpdGVtKSA9PiB0b0ludGVnZXIoaXRlbSkpLmZpbHRlcigoaXRlbSkgPT4gIU51bWJlci5pc05hTihpdGVtKSkpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydmaXJzdCddIHx8IGNoYW5nZXNbJ3Jvd3MnXSkge1xuICAgICAgdGhpcy5wYWdlU3RhdGUuc2V0KHtcbiAgICAgICAgLi4udGhpcy5wYWdlU3RhdGUoKSxcbiAgICAgICAgZmlyc3Q6IHRoaXMuZmlyc3QsXG4gICAgICAgIHJvd3M6IHRoaXMucm93c1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgdGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLnVwZGF0ZVJvd3NGcm9tVmlld3BvcnQoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9mb2N1c1NlYXJjaCkge1xuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaGJveFJlZj8uZm9jdXNJbnB1dCgpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hdXRvUmVzaXplIHx8IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy51cGRhdGVSb3dzRnJvbVZpZXdwb3J0KCkpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc2VhcmNoU2VjdGlvblJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuc2VhcmNoU2VjdGlvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZFNlY3Rpb25SZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnNlbGVjdGVkU2VjdGlvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb290ZXJTZWN0aW9uUmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5mb290ZXJTZWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlUm93c0Zyb21WaWV3cG9ydCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgb25TZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRRdWVyeS5zZXQodmFsdWUgPz8gJycpO1xuICAgIHRoaXMucGFnZVN0YXRlLnNldCh7IC4uLnRoaXMucGFnZVN0YXRlKCksIGZpcnN0OiBERUZBVUxUX1BJQ0tMSVNUX0ZJUlNUIH0pO1xuICB9XG5cbiAgb25TZWFyY2hUZXJtKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VhcmNoKHZhbHVlKTtcbiAgfVxuXG4gIG9uQ2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZFF1ZXJ5LnNldCgnJyk7XG4gICAgdGhpcy5wYWdlU3RhdGUuc2V0KHsgLi4udGhpcy5wYWdlU3RhdGUoKSwgZmlyc3Q6IERFRkFVTFRfUElDS0xJU1RfRklSU1QgfSk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IFBhZ2luYXRvclN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlU3RhdGUuc2V0KGV2ZW50KTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBnZXQgZmlsdGVyZWQoKTogUGlja2xpc3RSZWNvcmRbXSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmZpbHRlcmVkUXVlcnkoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpbHRlcmFibGVWYWx1ZXMoaXRlbSkuc29tZSgodmFsdWUpID0+IHZhbHVlLmluY2x1ZGVzKHF1ZXJ5KSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgdG90YWxSZXN1bHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWQubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IHJvd3NWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2VTdGF0ZSgpLnJvd3MgPz8gdGhpcy5yb3dzO1xuICB9XG5cbiAgZ2V0IGZpcnN0VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU3RhdGUoKS5maXJzdCA/PyB0aGlzLmZpcnN0O1xuICB9XG5cbiAgZ2V0IHBhZ2VJdGVtcygpOiBQaWNrbGlzdFJlY29yZFtdIHtcbiAgICBpZiAoIXRoaXMuc2hvd1BhZ2luYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWQuc2xpY2UodGhpcy5maXJzdFZhbHVlLCB0aGlzLmZpcnN0VmFsdWUgKyB0aGlzLnJvd3NWYWx1ZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBQaWNrbGlzdFJlY29yZFtdIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5pdGVtcyA/PyBbXTtcbiAgICByZXR1cm4gYmFzZS5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuc2VsLmhhcyh0b0ludGVnZXIoaXRlbT8uW3RoaXMuaWRLZXldKSkpO1xuICB9XG5cbiAgZ2V0IHZpc2libGVTZWxlY3RlZEl0ZW1zKCk6IFBpY2tsaXN0UmVjb3JkW10ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCB0aGlzLm1heFZpc2libGVTZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gIGdldCBoaWRkZW5TZWxlY3RlZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSB0aGlzLnZpc2libGVTZWxlY3RlZEl0ZW1zLmxlbmd0aCk7XG4gIH1cblxuICBnZXQgc2tlbGV0b25Sb3dzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCByb3dzID0gTWF0aC5tYXgodGhpcy5yb3dzVmFsdWUsIFBJQ0tMSVNUX01JTl9TS0VMRVRPTl9ST1dTKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogcm93cyB9LCAoXywgaW5kZXgpID0+IGluZGV4KTtcbiAgfVxuXG4gIGdldCBzZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRRdWVyeSgpO1xuICB9XG5cbiAgc2V0IHNlYXJjaFRlcm0odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZmlsdGVyZWRRdWVyeS5zZXQodmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkRXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFeHBhbmRlZFN0YXRlKCk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IHNob3dTa2VsZXRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcoKSAmJiB0aGlzLnRvdGFsUmVzdWx0cyA9PT0gMDtcbiAgfVxuXG4gIGdldCB0b3RhbFJlY29yZHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbFJlc3VsdHM7XG4gIH1cblxuICBnZXQgYWN0aXZlUm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJvd3NWYWx1ZTtcbiAgfVxuXG4gIGdldCByZXN1bHRzQ291bnRlckxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxSZWNvcmRzID09PSAxXG4gICAgICA/IHRoaXMucmVzdWx0c0NvdW50ZXJTaW5ndWxhckxhYmVsXG4gICAgICA6IHRoaXMucmVzdWx0c0NvdW50ZXJQbHVyYWxMYWJlbDtcbiAgfVxuXG4gIGdldCBwYWdpbmF0b3JSb3dzUGVyUGFnZU9wdGlvbnMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnNob3dSb3dzUGVyUGFnZU9wdGlvbnMgPyB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucyA6IFtdO1xuICB9XG5cbiAgdHJhY2tCeUlkID0gKF9pbmRleDogbnVtYmVyLCBpdGVtOiBQaWNrbGlzdFJlY29yZCkgPT4gaXRlbT8uW3RoaXMuaWRLZXldO1xuXG4gIGdldFRpdGxlKGl0ZW06IFBpY2tsaXN0UmVjb3JkKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IFN0cmluZyhpdGVtPy5bdGhpcy50aXRsZUtleV0gPz8gJycpO1xuICAgIHJldHVybiB0aGlzLm1heFRpdGxlTGVuZ3RoID4gMCAmJiB2YWx1ZS5sZW5ndGggPiB0aGlzLm1heFRpdGxlTGVuZ3RoXG4gICAgICA/IGAke3ZhbHVlLnNsaWNlKDAsIHRoaXMubWF4VGl0bGVMZW5ndGgpfeKApmBcbiAgICAgIDogdmFsdWU7XG4gIH1cblxuICBnZXRTdWJ0aXRsZShpdGVtOiBQaWNrbGlzdFJlY29yZCk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBTdHJpbmcoaXRlbT8uW3RoaXMuc3VidGl0bGVLZXldID8/ICcnKTtcbiAgICByZXR1cm4gdGhpcy5tYXhTdWJ0aXRsZUxlbmd0aCA+IDAgJiYgdmFsdWUubGVuZ3RoID4gdGhpcy5tYXhTdWJ0aXRsZUxlbmd0aFxuICAgICAgPyBgJHt2YWx1ZS5zbGljZSgwLCB0aGlzLm1heFN1YnRpdGxlTGVuZ3RoKX3igKZgXG4gICAgICA6IHZhbHVlO1xuICB9XG5cbiAgaXNTZWxlY3RlZChpdGVtOiBQaWNrbGlzdFJlY29yZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlkID0gdG9JbnRlZ2VyKGl0ZW0/Llt0aGlzLmlkS2V5XSk7XG4gICAgcmV0dXJuICFOdW1iZXIuaXNOYU4oaWQpICYmIHRoaXMuc2VsLmhhcyhpZCk7XG4gIH1cblxuICB0b2dnbGUoaXRlbTogUGlja2xpc3RSZWNvcmQsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHRvSW50ZWdlcihpdGVtPy5bdGhpcy5pZEtleV0pO1xuICAgIGlmIChOdW1iZXIuaXNOYU4oaWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsLmFkZChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsLmRlbGV0ZShpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKCk7XG4gIH1cblxuICByb3dDbGljayhpdGVtOiBQaWNrbGlzdFJlY29yZCk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdG9JbnRlZ2VyKGl0ZW0/Llt0aGlzLmlkS2V5XSk7XG4gICAgaWYgKE51bWJlci5pc05hTihpZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZShpdGVtLCAhdGhpcy5zZWwuaGFzKGlkKSk7XG4gIH1cblxuICByZW1vdmUoaXRlbTogUGlja2xpc3RSZWNvcmQpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZShpdGVtLCBmYWxzZSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RlZEV4cGFuZGVkKGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEV4cGFuZGVkU3RhdGUuc2V0KGV4cGFuZGVkKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc2VsXSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmFibGVWYWx1ZXMoaXRlbTogUGlja2xpc3RSZWNvcmQpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUZpbHRlckZpZWxkUGF0aHMoKS5tYXAoKHBhdGgpID0+IHRoaXMuZ2V0SXRlbVZhbHVlQnlQYXRoKGl0ZW0sIHBhdGgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUZpbHRlckZpZWxkUGF0aHMoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLmZpbHRlckZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQudHJpbSgpLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHJldHVybiBbdGhpcy50aXRsZUtleSwgdGhpcy5zdWJ0aXRsZUtleV0uZmlsdGVyKChmaWVsZCkgPT4gZmllbGQudHJpbSgpLmxlbmd0aCA+IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtVmFsdWVCeVBhdGgoaXRlbTogUGlja2xpc3RSZWNvcmQsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC50cmltKCkpXG4gICAgICAuZmlsdGVyKChzZWdtZW50KSA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xuXG4gICAgbGV0IGN1cnJlbnQ6IHVua25vd24gPSBpdGVtO1xuXG4gICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgICBpZiAoY3VycmVudCA9PT0gbnVsbCB8fCBjdXJyZW50ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgY3VycmVudCA9IChjdXJyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtzZWdtZW50XTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKGN1cnJlbnQgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJvd3NGcm9tVmlld3BvcnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF1dG9SZXNpemUgfHwgdHlwZW9mIGdsb2JhbFRoaXMud2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gZ2xvYmFsVGhpcy53aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgY29uc3Qgc2VhcmNoSGVpZ2h0ID0gdGhpcy5zZWFyY2hTZWN0aW9uUmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA/PyAwO1xuICAgIGNvbnN0IHNlbGVjdGVkSGVpZ2h0ID0gdGhpcy5zZWxlY3RlZFNlY3Rpb25SZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8/IDA7XG4gICAgY29uc3QgZm9vdGVySGVpZ2h0ID0gdGhpcy5mb290ZXJTZWN0aW9uUmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA/PyAwO1xuICAgIGNvbnN0IGF2YWlsYWJsZSA9IE1hdGgubWF4KFxuICAgICAgdGhpcy5hdXRvUmVzaXplTWluUm93cyAqIHRoaXMuYXV0b1Jlc2l6ZUl0ZW1IZWlnaHQsXG4gICAgICB2aWV3cG9ydEhlaWdodCAtIHNlYXJjaEhlaWdodCAtIHNlbGVjdGVkSGVpZ2h0IC0gZm9vdGVySGVpZ2h0IC0gdGhpcy5hdXRvUmVzaXplVmlld3BvcnRPZmZzZXRcbiAgICApO1xuXG4gICAgY29uc3QgbmV4dFJvd3MgPSBNYXRoLm1heChcbiAgICAgIHRoaXMuYXV0b1Jlc2l6ZU1pblJvd3MsXG4gICAgICBNYXRoLm1pbih0aGlzLmF1dG9SZXNpemVNYXhSb3dzLCBNYXRoLmZsb29yKGF2YWlsYWJsZSAvIE1hdGgubWF4KHRoaXMuYXV0b1Jlc2l6ZUl0ZW1IZWlnaHQsIFBJQ0tMSVNUX0RJVklTT1JfRkFMTEJBQ0spKSlcbiAgICApO1xuXG4gICAgaWYgKG5leHRSb3dzICE9PSB0aGlzLnBhZ2VTdGF0ZSgpLnJvd3MpIHtcbiAgICAgIHRoaXMucGFnZVN0YXRlLnNldCh7XG4gICAgICAgIC4uLnRoaXMucGFnZVN0YXRlKCksXG4gICAgICAgIHJvd3M6IG5leHRSb3dzLFxuICAgICAgICBmaXJzdDogREVGQVVMVF9QSUNLTElTVF9GSVJTVFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RcIj5cbiAgPHNkYy1sb2FkaW5nLXN0YXRlXG4gICAgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2xvYWRpbmctc3RhdGVcIlxuICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICBbYmxvY2tXaW5kb3ddPVwibG9hZGluZ0Jsb2NrV2luZG93XCJcbiAgICBbaW5kaWNhdG9yXT1cImxvYWRpbmdJbmRpY2F0b3JcIlxuICAgIFtibG9ja0RlbGF5TXNdPVwibG9hZGluZ0Jsb2NrRGVsYXlNc1wiXG4gID5cbiAgICA8ZGl2ICNzZWFyY2hTZWN0aW9uIGNsYXNzPVwic2RjLXBpY2tsaXN0X19zZWFyY2hcIj5cbiAgICAgIDxzZGMtc2VhcmNoYm94XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoVGVybSgkZXZlbnQpXCJcbiAgICAgID48L3NkYy1zZWFyY2hib3g+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAjc2VsZWN0ZWRTZWN0aW9uXG4gICAgICBjbGFzcz1cInNkYy1waWNrbGlzdF9fc2VsZWN0ZWRcIlxuICAgICAgW2NsYXNzLnNkYy1waWNrbGlzdF9fc2VsZWN0ZWQtLWhhcy1pdGVtc109XCJzZWxlY3RlZENvdW50ID4gMFwiXG4gICAgPlxuICAgICAgQGlmIChzZWxlY3RlZENvdW50ID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGlwc1wiIFtjbGFzcy5zZGMtcGlja2xpc3RfX2NoaXBzLS1leHBhbmRlZF09XCJzZWxlY3RlZEV4cGFuZGVkXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiB2aXNpYmxlU2VsZWN0ZWRJdGVtczsgdHJhY2sgdHJhY2tCeUlkKCRpbmRleCwgaXRlbSkpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGlwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShpdGVtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X19jaGlwLXRleHRcIj57eyBnZXRUaXRsZShpdGVtKSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoaXAteFwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICghc2VsZWN0ZWRFeHBhbmRlZCAmJiBoaWRkZW5TZWxlY3RlZENvdW50ID4gMCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2NoaXAgc2RjLXBpY2tsaXN0X19jaGlwLS1tb3JlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkRXhwYW5kZWQodHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgaGlkZGVuU2VsZWN0ZWRDb3VudCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzZWxlY3RlZEV4cGFuZGVkICYmIGhpZGRlblNlbGVjdGVkQ291bnQgPiAwKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hpcCBzZGMtcGlja2xpc3RfX2NoaXAtLWxlc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0ZWRFeHBhbmRlZChmYWxzZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAncGxhdGZvcm0uZGF0YWNvcmUubGVzcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19jb250ZW50XCI+XG4gICAgICBAaWYgKHNob3dTa2VsZXRvbikge1xuICAgICAgICA8dWwgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2xpc3RcIj5cbiAgICAgICAgICBAZm9yIChyb3cgb2Ygc2tlbGV0b25Sb3dzOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInNkYy1waWNrbGlzdF9fbGlzdC1pdGVtIHNkYy1waWNrbGlzdF9fbGlzdC1pdGVtLS1za2VsZXRvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19pdGVtIHNkYy1waWNrbGlzdF9faXRlbS0tc2tlbGV0b25cIj48L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgfSBAZWxzZSBpZiAocGFnZUl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHVsIGNsYXNzPVwic2RjLXBpY2tsaXN0X19saXN0XCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBwYWdlSXRlbXM7IHRyYWNrIHRyYWNrQnlJZCgkaW5kZXgsIGl0ZW0pKSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2xpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2l0ZW1cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zZGMtcGlja2xpc3RfX2l0ZW0tLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3dDbGljayhpdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fY2hlY2tcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICA8c2RjLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGUoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9zZGMtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgQGlmIChzaG93SXRlbUljb24pIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBpY2tsaXN0X19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpY29uQ2xhc3NcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX3RleHRzXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1waWNrbGlzdF9fdGl0bGVcIj57eyBnZXRUaXRsZShpdGVtKSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0U3VidGl0bGUoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGlja2xpc3RfX3N1YnRpdGxlXCI+e3sgZ2V0U3VidGl0bGUoaXRlbSkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2VtcHR5XCI+XG4gICAgICAgICAgPGkgW2NsYXNzXT1cImVtcHR5SWNvbkNsYXNzICsgJyBzZGMtcGlja2xpc3RfX2VtcHR5LWljb24nXCI+PC9pPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGlja2xpc3RfX2VtcHR5LXRpdGxlXCI+XG4gICAgICAgICAgICB7eyBlbXB0eVRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZW1wdHktdGV4dFwiPlxuICAgICAgICAgICAge3sgZW1wdHlUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChzaG93UGFnaW5hdG9yKSB7XG4gICAgICA8ZGl2ICNmb290ZXJTZWN0aW9uIGNsYXNzPVwic2RjLXBpY2tsaXN0X19mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1waWNrbGlzdF9fZm9vdGVyLWxlZnRcIj5cbiAgICAgICAgICBAaWYgKHNob3dTZWxlY3Rpb25Db3VudGVyKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19zZWxlY3Rpb24tY291bnRlci13cmFwXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2RjLXBpY2tsaXN0X19zZWxlY3Rpb24tY291bnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJzZWxlY3Rpb25JY29uQ2xhc3NcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgc2VsZWN0ZWRDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19mb290ZXItcGFnaW5hdG9yXCI+XG4gICAgICAgICAgICA8c2RjLXBhZ2luYXRvclxuICAgICAgICAgICAgICBbZmlyc3RdPVwiZmlyc3RWYWx1ZVwiXG4gICAgICAgICAgICAgIFtyb3dzXT1cImFjdGl2ZVJvd3NcIlxuICAgICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgICAgICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicGFnaW5hdG9yUm93c1BlclBhZ2VPcHRpb25zXCJcbiAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvc2RjLXBhZ2luYXRvcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChzaG93UmVzdWx0c0NvdW50ZXIpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXBpY2tsaXN0X19yZXN1bHRzXCI+XG4gICAgICAgICAgICB7eyB0b3RhbFJlY29yZHMgfX0ge3sgcmVzdWx0c0NvdW50ZXJMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvc2RjLWxvYWRpbmctc3RhdGU+XG48L2Rpdj5cbiJdfQ==
|