@indice/ng-components 0.3.9 → 0.3.10
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/_styles.scss +131 -137
- package/esm2022/lib/controls/content-tile/content-tile.component.mjs +34 -6
- package/esm2022/lib/controls/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/lib/controls/drop-down-menu/drop-down-menu.component.mjs +3 -3
- package/esm2022/lib/controls/list-view/list-view.component.mjs +3 -3
- package/esm2022/lib/controls/nav-links-list/nav-links-list.component.mjs +3 -3
- package/esm2022/lib/controls/notifications-indicator/notifications-indicator.component.mjs +3 -3
- package/esm2022/lib/controls/side-pane/side-pane.component.mjs +48 -29
- package/esm2022/lib/controls/skeleton-loader/skeleton-loader.component.mjs +3 -3
- package/esm2022/lib/controls/user-profile-menu/user-profile-menu.component.mjs +11 -7
- package/esm2022/lib/helpers/base-list.component.mjs +10 -5
- package/esm2022/lib/layouts/shell/shell-header/shell-header.component.mjs +11 -3
- package/esm2022/lib/layouts/shell/shell-layout/shell-layout.component.mjs +8 -6
- package/esm2022/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +3 -3
- package/esm2022/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +6 -3
- package/esm2022/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +8 -4
- package/esm2022/lib/layouts/views/form-layout/form-layout.component.mjs +1 -1
- package/esm2022/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +6 -4
- package/esm2022/lib/layouts/views/view-layout/view-layout.component.mjs +3 -3
- package/esm2022/lib/ng-components.module.mjs +2 -4
- package/esm2022/lib/pages/http-status/error/error.component.mjs +3 -3
- package/esm2022/lib/pages/http-status/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/pages/http-status/unauthorized/unauthorized.component.mjs +3 -3
- package/esm2022/lib/types.mjs +11 -1
- package/esm2022/public-api.mjs +1 -3
- package/fesm2022/indice-ng-components.mjs +131 -76
- package/fesm2022/indice-ng-components.mjs.map +1 -1
- package/lib/controls/content-tile/content-tile.component.d.ts +13 -2
- package/lib/controls/side-pane/side-pane.component.d.ts +9 -3
- package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +2 -1
- package/lib/helpers/base-list.component.d.ts +2 -1
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +3 -1
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +3 -2
- package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +3 -2
- package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +2 -1
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +2 -0
- package/lib/ng-components.module.d.ts +7 -9
- package/lib/types.d.ts +10 -1
- package/package.json +2 -2
- package/public-api.d.ts +0 -2
- package/esm2022/lib/controls/content-tile/content-tile-header/content-tile-header.component.mjs +0 -17
- package/esm2022/lib/controls/content-tile/content-tile-item/content-tile-item.component.mjs +0 -19
- package/lib/controls/content-tile/content-tile-header/content-tile-header.component.d.ts +0 -7
- package/lib/controls/content-tile/content-tile-item/content-tile-item.component.d.ts +0 -8
|
@@ -137,11 +137,11 @@ export class ListViewComponent {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ListViewComponent, selector: "lib-list-view", inputs: { searchOptions: ["search-options", "searchOptions"], filters: "filters", busy: "busy", items: "items", count: "count", page: "page", view: "view", sort: "sort", pageSize: ["page-size", "pageSize"], pageSizeOptions: ["page-size-options", "pageSizeOptions"], sortOptions: ["sort-options", "sortOptions"], operatorsDisabled: ["operators-disabled", "operatorsDisabled"], sortdir: ["sort-dir", "sortdir"], tilesCount: ["tiles-count", "tilesCount"], showPager: ["show-pager", "showPager"], pagerPosition: ["pager-position", "pagerPosition"], detailsSectionPropertyCount: ["details-section-property-count", "detailsSectionPropertyCount"] }, outputs: { pageChanged: "pageChanged", pageSizeChanged: "pageSizeChanged", detailsOpened: "detailsOpened", sortChanged: "sortChanged", sortdirChanged: "sortdirChanged", advancedSearchChanged: "advancedSearchChanged" }, queries: [{ propertyName: "tiles", first: true, predicate: ListTileComponent, descendants: true, read: ListTileComponent }, { propertyName: "details", first: true, predicate: ListDetailsSectionComponent, descendants: true, read: ListDetailsSectionComponent }, { propertyName: "cols", predicate: ListColumnComponent, read: ListColumnComponent }], usesOnChanges: true, ngImport: i0, template: "<div>\r\n <lib-advanced-search *ngIf=\"searchOptions && searchOptions.length > 0\"\r\n [search-options]=\"searchOptions\"\r\n [filters]=\"filters\"\r\n [operators-disabled]=\"operatorsDisabled\"\r\n (advancedSearchChanged)=\"emitAdvancedSearchChanged($event)\">\r\n </lib-advanced-search>\r\n\r\n <lib-pager *ngIf=\"showPager && (pagerPosition == 'top' || pagerPosition == 'both')\"\r\n [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n <ng-content select=\"[pager-near-content]\" ngProjectAs=\"[pager-near-content]\"></ng-content>\r\n </lib-pager>\r\n</div>\r\n\r\n<ng-container [ngSwitch]=\"view\">\r\n\r\n <ng-container *ngSwitchCase=\"'tiles'\">\r\n <div [class]=\"busy ? 'cards-deck-1' : tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [deck-class]=\"tilesDeckClass\" [count]=\"7\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- *ngSwitchCase=\"'gallery'\" -->\r\n <ng-container *ngSwitchCase=\"'gallery'\">\r\n <ul role=\"list\" role=\"list\" [class]=\"tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [count]=\"5\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\" role=\"listitem\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <!-- *ngSwitchCase=\"'table'\" -->\r\n <ng-container *ngSwitchDefault>\r\n\r\n <div class=\"list-view-container\">\r\n <div class=\"list-view-container-inner\">\r\n <table class=\"list-view-table\">\r\n <thead class=\"list-view-thead\">\r\n <tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <th class=\"list-view-th-details\"></th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th scope=\"col\"\r\n [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\r\n {{col.title}}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody class=\"list-view-tbody\"\r\n *ngIf=\"busy\">\r\n <ng-container *ngFor=\"let item of loaderItems;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button disabled\r\n title=\"expand-collapse\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <div class=\"w-full animate-pulse h-8 bg-gray-200 rounded\"></div>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n <tbody class=\"list-view-tbody\"\r\n *ngIf=\"!busy\">\r\n <ng-container *ngFor=\"let item of items;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button (click)=\"toggleDetails(item)\"\r\n title=\"toggleDetails\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <ng-template [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length === 0\">\r\n <div class=\"cards-deck-1\">\r\n <lib-list-view-empty-state></lib-list-view-empty-state>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div class=\"px-2 mt-2\"\r\n *ngIf=\"items && items.length !== 0 && showPager && (pagerPosition == 'bottom' || pagerPosition == 'both')\">\r\n <lib-pager [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n </lib-pager>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.AdvancedSearchComponent, selector: "lib-advanced-search", inputs: ["operators-disabled", "search-options", "filters"], outputs: ["advancedSearchChanged"] }, { kind: "component", type: i3.ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: ["title", "sub-title", "new-item-label"] }, { kind: "component", type: i4.PagerComponent, selector: "lib-pager", inputs: ["busy", "count", "page", "page-size", "page-size-options", "sort-options", "sort", "sort-dir"], outputs: ["pageChanged", "pageSizeChanged", "sortChanged", "sortdirChanged"] }, { kind: "component", type: i5.SkeletonLoaderComponent, selector: "lib-skeleton-loader", inputs: ["count", "type", "deck-class"] }] }); }
|
|
140
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ListViewComponent, selector: "lib-list-view", inputs: { searchOptions: ["search-options", "searchOptions"], filters: "filters", busy: "busy", items: "items", count: "count", page: "page", view: "view", sort: "sort", pageSize: ["page-size", "pageSize"], pageSizeOptions: ["page-size-options", "pageSizeOptions"], sortOptions: ["sort-options", "sortOptions"], operatorsDisabled: ["operators-disabled", "operatorsDisabled"], sortdir: ["sort-dir", "sortdir"], tilesCount: ["tiles-count", "tilesCount"], showPager: ["show-pager", "showPager"], pagerPosition: ["pager-position", "pagerPosition"], detailsSectionPropertyCount: ["details-section-property-count", "detailsSectionPropertyCount"] }, outputs: { pageChanged: "pageChanged", pageSizeChanged: "pageSizeChanged", detailsOpened: "detailsOpened", sortChanged: "sortChanged", sortdirChanged: "sortdirChanged", advancedSearchChanged: "advancedSearchChanged" }, queries: [{ propertyName: "tiles", first: true, predicate: ListTileComponent, descendants: true, read: ListTileComponent }, { propertyName: "details", first: true, predicate: ListDetailsSectionComponent, descendants: true, read: ListDetailsSectionComponent }, { propertyName: "cols", predicate: ListColumnComponent, read: ListColumnComponent }], usesOnChanges: true, ngImport: i0, template: "<div>\r\n <lib-advanced-search *ngIf=\"searchOptions && searchOptions.length > 0\"\r\n [search-options]=\"searchOptions\"\r\n [filters]=\"filters\"\r\n [operators-disabled]=\"operatorsDisabled\"\r\n (advancedSearchChanged)=\"emitAdvancedSearchChanged($event)\">\r\n </lib-advanced-search>\r\n\r\n <lib-pager *ngIf=\"showPager && (pagerPosition == 'top' || pagerPosition == 'both')\"\r\n [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n <ng-content select=\"[pager-near-content]\" ngProjectAs=\"[pager-near-content]\"></ng-content>\r\n </lib-pager>\r\n</div>\r\n\r\n<ng-container [ngSwitch]=\"view\">\r\n\r\n <ng-container *ngSwitchCase=\"'tiles'\">\r\n <div [class]=\"busy ? 'cards-deck-1' : tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [deck-class]=\"tilesDeckClass\" [count]=\"7\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- *ngSwitchCase=\"'gallery'\" -->\r\n <ng-container *ngSwitchCase=\"'gallery'\">\r\n <ul role=\"list\" role=\"list\" [class]=\"tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [count]=\"5\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\" role=\"listitem\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <!-- *ngSwitchCase=\"'table'\" -->\r\n <ng-container *ngSwitchDefault>\r\n\r\n <div class=\"list-view-container\">\r\n <div class=\"list-view-container-inner\">\r\n <table class=\"list-view-table\">\r\n <thead class=\"list-view-thead\">\r\n <tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <th aria-label=\"details button\" class=\"list-view-th-details\"></th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th scope=\"col\" [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\r\n {{col.title}}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody class=\"list-view-tbody\" *ngIf=\"busy\">\r\n <ng-container *ngFor=\"let item of loaderItems;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button disabled\r\n title=\"expand-collapse\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <div class=\"w-full animate-pulse h-8 bg-gray-200 rounded\"></div>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n <tbody class=\"list-view-tbody\"\r\n *ngIf=\"!busy\">\r\n <ng-container *ngFor=\"let item of items;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button (click)=\"toggleDetails(item)\"\r\n title=\"toggleDetails\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <ng-template [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length === 0\">\r\n <div class=\"cards-deck-1\">\r\n <lib-list-view-empty-state></lib-list-view-empty-state>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div class=\"px-2 mt-2\"\r\n *ngIf=\"items && items.length !== 0 && showPager && (pagerPosition == 'bottom' || pagerPosition == 'both')\">\r\n <lib-pager [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n </lib-pager>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.AdvancedSearchComponent, selector: "lib-advanced-search", inputs: ["operators-disabled", "search-options", "filters"], outputs: ["advancedSearchChanged"] }, { kind: "component", type: i3.ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: ["title", "sub-title", "new-item-label"] }, { kind: "component", type: i4.PagerComponent, selector: "lib-pager", inputs: ["busy", "count", "page", "page-size", "page-size-options", "sort-options", "sort", "sort-dir"], outputs: ["pageChanged", "pageSizeChanged", "sortChanged", "sortdirChanged"] }, { kind: "component", type: i5.SkeletonLoaderComponent, selector: "lib-skeleton-loader", inputs: ["count", "type", "deck-class"] }] }); }
|
|
141
141
|
}
|
|
142
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ListViewComponent, decorators: [{
|
|
143
143
|
type: Component,
|
|
144
|
-
args: [{ selector: 'lib-list-view', template: "<div>\r\n <lib-advanced-search *ngIf=\"searchOptions && searchOptions.length > 0\"\r\n [search-options]=\"searchOptions\"\r\n [filters]=\"filters\"\r\n [operators-disabled]=\"operatorsDisabled\"\r\n (advancedSearchChanged)=\"emitAdvancedSearchChanged($event)\">\r\n </lib-advanced-search>\r\n\r\n <lib-pager *ngIf=\"showPager && (pagerPosition == 'top' || pagerPosition == 'both')\"\r\n [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n <ng-content select=\"[pager-near-content]\" ngProjectAs=\"[pager-near-content]\"></ng-content>\r\n </lib-pager>\r\n</div>\r\n\r\n<ng-container [ngSwitch]=\"view\">\r\n\r\n <ng-container *ngSwitchCase=\"'tiles'\">\r\n <div [class]=\"busy ? 'cards-deck-1' : tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [deck-class]=\"tilesDeckClass\" [count]=\"7\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- *ngSwitchCase=\"'gallery'\" -->\r\n <ng-container *ngSwitchCase=\"'gallery'\">\r\n <ul role=\"list\" role=\"list\" [class]=\"tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [count]=\"5\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\" role=\"listitem\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <!-- *ngSwitchCase=\"'table'\" -->\r\n <ng-container *ngSwitchDefault>\r\n\r\n <div class=\"list-view-container\">\r\n <div class=\"list-view-container-inner\">\r\n <table class=\"list-view-table\">\r\n <thead class=\"list-view-thead\">\r\n <tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <th class=\"list-view-th-details\"></th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th scope=\"col\"
|
|
144
|
+
args: [{ selector: 'lib-list-view', template: "<div>\r\n <lib-advanced-search *ngIf=\"searchOptions && searchOptions.length > 0\"\r\n [search-options]=\"searchOptions\"\r\n [filters]=\"filters\"\r\n [operators-disabled]=\"operatorsDisabled\"\r\n (advancedSearchChanged)=\"emitAdvancedSearchChanged($event)\">\r\n </lib-advanced-search>\r\n\r\n <lib-pager *ngIf=\"showPager && (pagerPosition == 'top' || pagerPosition == 'both')\"\r\n [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n <ng-content select=\"[pager-near-content]\" ngProjectAs=\"[pager-near-content]\"></ng-content>\r\n </lib-pager>\r\n</div>\r\n\r\n<ng-container [ngSwitch]=\"view\">\r\n\r\n <ng-container *ngSwitchCase=\"'tiles'\">\r\n <div [class]=\"busy ? 'cards-deck-1' : tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [deck-class]=\"tilesDeckClass\" [count]=\"7\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- *ngSwitchCase=\"'gallery'\" -->\r\n <ng-container *ngSwitchCase=\"'gallery'\">\r\n <ul role=\"list\" role=\"list\" [class]=\"tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\" [count]=\"5\" [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\" role=\"listitem\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <!-- *ngSwitchCase=\"'table'\" -->\r\n <ng-container *ngSwitchDefault>\r\n\r\n <div class=\"list-view-container\">\r\n <div class=\"list-view-container-inner\">\r\n <table class=\"list-view-table\">\r\n <thead class=\"list-view-thead\">\r\n <tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <th aria-label=\"details button\" class=\"list-view-th-details\"></th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th scope=\"col\" [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\r\n {{col.title}}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody class=\"list-view-tbody\" *ngIf=\"busy\">\r\n <ng-container *ngFor=\"let item of loaderItems;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button disabled\r\n title=\"expand-collapse\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <div class=\"w-full animate-pulse h-8 bg-gray-200 rounded\"></div>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n <tbody class=\"list-view-tbody\"\r\n *ngIf=\"!busy\">\r\n <ng-container *ngFor=\"let item of items;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button (click)=\"toggleDetails(item)\"\r\n title=\"toggleDetails\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <ng-template [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length === 0\">\r\n <div class=\"cards-deck-1\">\r\n <lib-list-view-empty-state></lib-list-view-empty-state>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div class=\"px-2 mt-2\"\r\n *ngIf=\"items && items.length !== 0 && showPager && (pagerPosition == 'bottom' || pagerPosition == 'both')\">\r\n <lib-pager [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n </lib-pager>\r\n</div>\r\n" }]
|
|
145
145
|
}], ctorParameters: () => [], propDecorators: { searchOptions: [{
|
|
146
146
|
type: Input,
|
|
147
147
|
args: ['search-options']
|
|
@@ -208,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
208
208
|
}], advancedSearchChanged: [{
|
|
209
209
|
type: Output
|
|
210
210
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFM0ksT0FBTyxFQUFFLFlBQVksRUFBYyxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7OztBQUNwQyxDQUFDO0FBTUQsTUFBTSxPQUFPLGlCQUFpQjtJQWdDNUIsVUFBVTtJQUNWLElBQ0ksSUFBSSxDQUFDLElBQW9DO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FB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bnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbHRlckNsYXVzZSwgU2VhcmNoT3B0aW9uIH0gZnJvbSAnLi4vYWR2YW5jZWQtc2VhcmNoL21vZGVscyc7XHJcbmltcG9ydCB7IExpc3RWaWV3VHlwZSwgTWVudU9wdGlvbiwgUGFnZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgTGlzdENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGlzdFRpbGVDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdGlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2xpc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vaWNvbnMnO1xyXG47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1saXN0LXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCdzZWFyY2gtb3B0aW9ucycpIHNlYXJjaE9wdGlvbnM6IFNlYXJjaE9wdGlvbltdID0gW107XHJcbiAgQElucHV0KCkgZmlsdGVyczogRmlsdGVyQ2xhdXNlW10gPSBbXTtcclxuICAvLyBCVVNZIFNUQVRFXHJcbiAgQElucHV0KCkgYnVzeSA9IGZhbHNlO1xyXG4gIC8vIERBVEEgU09VUkNFIVxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgLy8gUEFHSU5HIC0gcGFzcyB0aHJvdWdoIGZvciBwYWdlciBjb21wb25lbnRcclxuICBASW5wdXQoKSBjb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcGFnZSA9IDE7XHJcbiAgQElucHV0KCkgdmlldyA9IExpc3RWaWV3VHlwZS5UYWJsZTtcclxuICBASW5wdXQoKSBzb3J0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdwYWdlLXNpemUnKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3BhZ2Utc2l6ZS1vcHRpb25zJykgcGFnZVNpemVPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcclxuICAvLyBTT1JUSU5HIC0gcGFzcyB0aHJvdWdoIGZvciBwYWdlciBjb21wb25lbnRcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzb3J0LW9wdGlvbnMnKSBzb3J0T3B0aW9uczogTWVudU9wdGlvbltdID0gW107XHJcbiAgQElucHV0KCdvcGVyYXRvcnMtZGlzYWJsZWQnKSBvcGVyYXRvcnNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3NvcnQtZGlyJykgc29ydGRpcjogc3RyaW5nIHwgbnVsbCA9ICctJztcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCd0aWxlcy1jb3VudCcpIHRpbGVzQ291bnQgPSA0O1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3Nob3ctcGFnZXInKSBzaG93UGFnZXIgPSB0cnVlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3BhZ2VyLXBvc2l0aW9uJykgcGFnZXJQb3NpdGlvbjogYW55IHwgdW5kZWZpbmVkID0gUGFnZXJQb3NpdGlvbi5Ub3A7XHJcbiAgLy8gREVUQUlMUyBTRUNUSU9OXHJcbiAgLy8gQ2hlY2sgaWYgZGV0YWlscyBzZWN0aW9uIGFuZCBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZCBhY2NvcmRpbmcgdG8gdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSBnaXZlblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ2RldGFpbHMtc2VjdGlvbi1wcm9wZXJ0eS1jb3VudCcpIGRldGFpbHNTZWN0aW9uUHJvcGVydHlDb3VudDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gQ09MVU1OU1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdENvbHVtbkNvbXBvbmVudCwgeyByZWFkOiBMaXN0Q29sdW1uQ29tcG9uZW50IH0pXHJcbiAgc2V0IGNvbHMocmVmczogUXVlcnlMaXN0PExpc3RDb2x1bW5Db21wb25lbnQ+KSB7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSByZWZzPy50b0FycmF5KCk7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudGFibGVWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubXVsdGlwbGVGdWxsV2lkdGggPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5mdWxsV2lkdGgpLmxlbmd0aCA+IDE7XHJcbiAgICB0aGlzLmZ1bGxXaWR0aFRIQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10aC1oYWxmJyA6ICdsaXN0LXZpZXctdGgtZnVsbCc7XHJcbiAgICB0aGlzLmZ1bGxXaWR0aFREQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10ZC1oYWxmJyA6ICdsaXN0LXZpZXctdGQtZnVsbCc7XHJcbiAgfVxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBAQ29udGVudENoaWxkKExpc3RUaWxlQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RUaWxlQ29tcG9uZW50IH0pXHJcbiAgc2V0IHRpbGVzKHJlZjogTGlzdFRpbGVDb21wb25lbnQpIHtcclxuICAgIHRoaXMudGlsZVRlbXBsYXRlID0gcmVmO1xyXG4gICAgaWYgKHRoaXMudGlsZVRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMudGlsZXNWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB9KVxyXG4gIHNldCBkZXRhaWxzKHJlZjogTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLmRldGFpbHNUZW1wbGF0ZSA9IHJlZjtcclxuICAgIGlmICh0aGlzLmRldGFpbHNUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmRldGFpbHNTZWN0aW9uU3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBkZXRhaWxzT3BlbmVkOiBFdmVudEVtaXR0ZXI8eyBpdGVtOiBhbnksIG9wZW46IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbTogYW55LCBvcGVuOiBib29sZWFuIH0+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0ZGlyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYWR2YW5jZWRTZWFyY2hDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8RmlsdGVyQ2xhdXNlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDbGF1c2VbXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBtdWx0aXBsZUZ1bGxXaWR0aCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBleHBhbmRJY29uID0gSWNvbnMuRXhwYW5kO1xyXG4gIHB1YmxpYyBjb2xsYXBzZUljb24gPSBJY29ucy5Db2xsYXBzZTtcclxuICBwdWJsaWMgdGFibGVWaWV3U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGZ1bGxXaWR0aFRIQ2xhc3MgPSAnbGlzdC12aWV3LXRoLWZ1bGwnO1xyXG4gIHB1YmxpYyBmdWxsV2lkdGhURENsYXNzID0gJ2xpc3Qtdmlldy10ZC1mdWxsJztcclxuICBwdWJsaWMgdGlsZXNWaWV3U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGRldGFpbHNTZWN0aW9uU3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGxvYWRlckl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyB0aWxlc0RlY2tDbGFzcyA9ICdjYXJkcy1kZWNrLTQnO1xyXG4gIHB1YmxpYyB0aWxlVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIHB1YmxpYyBkZXRhaWxzVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTsgaSsrKSB7XHJcbiAgICAgIHRoaXMubG9hZGVySXRlbXMucHVzaCh7fSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wYWdlclBvc2l0aW9uKSB7XHJcbiAgICAgIHRoaXMucGFnZXJQb3NpdGlvbiA9IHRoaXMucGFnZXJQb3NpdGlvbiBhcyBQYWdlclBvc2l0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgdGlsZXNDb3VudENoYW5nZSA9IGNoYW5nZXNbJ3RpbGVzLWNvdW50J10gfHwgY2hhbmdlcy50aWxlc0NvdW50O1xyXG4gICAgaWYgKHRpbGVzQ291bnRDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5zZXRUaWxlc0RlY2tDbGFzcyh0aWxlc0NvdW50Q2hhbmdlLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBldmVudHNcclxuICBwdWJsaWMgZW1pdFBhZ2VDaGFuZ2VkKCRldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0UGFnZVNpemVDaGFuZ2VkKCRldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFNvcnRDaGFuZ2VkKCRldmVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgcHVibGljIGVtaXRTb3J0ZGlyQ2hhbmdlZCgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ZGlyQ2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBlbWl0QWR2YW5jZWRTZWFyY2hDaGFuZ2VkKCRldmVudDogRmlsdGVyQ2xhdXNlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVEZXRhaWxzKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaXRlbS5kZXRhaWxzRXhwYW5kZWQgPSAhaXRlbS5kZXRhaWxzRXhwYW5kZWQ7XHJcbiAgICB0aGlzLmRldGFpbHNPcGVuZWQuZW1pdCh7IGl0ZW0sIG9wZW46IGl0ZW0uZGV0YWlsc0V4cGFuZGVkIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gaGVscGVyc1xyXG4gIHByaXZhdGUgc2V0VGlsZXNEZWNrQ2xhc3ModGlsZXM6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRpbGVzID49IDEgJiYgdGlsZXMgPD0gNCkge1xyXG4gICAgICB0aGlzLnRpbGVzRGVja0NsYXNzID1cclxuICAgICAgICB0aGlzLnZpZXcgIT09IExpc3RWaWV3VHlwZS5HYWxsZXJ5XHJcbiAgICAgICAgICA/IGBjYXJkcy1kZWNrLSR7dGlsZXN9YFxyXG4gICAgICAgICAgOiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IGBnYWxsZXJ5LWRlY2stJHt0aWxlc31gXHJcbiAgICAgICAgICAgIDogJ2dhbGxlcnktZGVjayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRpbGVzRGVja0NsYXNzID1cclxuICAgICAgICB0aGlzLnZpZXcgIT09IExpc3RWaWV3VHlwZS5HYWxsZXJ5XHJcbiAgICAgICAgICA/ICdjYXJkcy1kZWNrLTMnXHJcbiAgICAgICAgICA6IHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gJ2dhbGxlcnktZGVjay0zJ1xyXG4gICAgICAgICAgICA6ICdnYWxsZXJ5LWRlY2snO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxyXG4gIDxsaWItYWR2YW5jZWQtc2VhcmNoICpuZ0lmPVwic2VhcmNoT3B0aW9ucyAmJiBzZWFyY2hPcHRpb25zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2gtb3B0aW9uc109XCJzZWFyY2hPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbb3BlcmF0b3JzLWRpc2FibGVkXT1cIm9wZXJhdG9yc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYWR2YW5jZWRTZWFyY2hDaGFuZ2VkKT1cImVtaXRBZHZhbmNlZFNlYXJjaENoYW5nZWQoJGV2ZW50KVwiPlxyXG4gIDwvbGliLWFkdmFuY2VkLXNlYXJjaD5cclxuXHJcbiAgPGxpYi1wYWdlciAqbmdJZj1cInNob3dQYWdlciAmJiAocGFnZXJQb3NpdGlvbiA9PSAndG9wJyB8fCBwYWdlclBvc2l0aW9uID09ICdib3RoJylcIlxyXG4gICAgICAgICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgICAgICAgICBbcGFnZS1zaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgIFtjb3VudF09XCJjb3VudFwiXHJcbiAgICAgICAgICAgICBbc29ydC1vcHRpb25zXT1cInNvcnRPcHRpb25zXCJcclxuICAgICAgICAgICAgIFtzb3J0XT1cInNvcnRcIlxyXG4gICAgICAgICAgICAgW3NvcnQtZGlyXT1cInNvcnRkaXJcIlxyXG4gICAgICAgICAgICAgW2J1c3ldPVwiYnVzeVwiXHJcbiAgICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwiZW1pdFBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9XCJlbWl0UGFnZVNpemVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHNvcnRDaGFuZ2VkKT1cImVtaXRTb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChzb3J0ZGlyQ2hhbmdlZCk9XCJlbWl0U29ydGRpckNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BhZ2VyLW5lYXItY29udGVudF1cIiBuZ1Byb2plY3RBcz1cIltwYWdlci1uZWFyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvbGliLXBhZ2VyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInZpZXdcIj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RpbGVzJ1wiPlxyXG4gICAgPGRpdiBbY2xhc3NdPVwiYnVzeSA/ICdjYXJkcy1kZWNrLTEnIDogdGlsZXNEZWNrQ2xhc3NcIj5cclxuXHJcbiAgICAgIDxsaWItc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiYnVzeVwiIFtkZWNrLWNsYXNzXT1cInRpbGVzRGVja0NsYXNzXCIgW2NvdW50XT1cIjdcIiBbdHlwZV09XCIndGlsZXMnXCI+PC9saWItc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXN5ICYmIGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0aWxlVGVtcGxhdGUgfHwgIXRpbGVUZW1wbGF0ZS50ZW1wbGF0ZVwiPnRlbXBsYXRlIG1pc3NpbmcuLjwvc3Bhbj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aWxlVGVtcGxhdGUudGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgPCEtLSAqbmdTd2l0Y2hDYXNlPVwiJ2dhbGxlcnknXCIgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2dhbGxlcnknXCI+XHJcbiAgICA8dWwgcm9sZT1cImxpc3RcIiByb2xlPVwibGlzdFwiIFtjbGFzc109XCJ0aWxlc0RlY2tDbGFzc1wiPlxyXG5cclxuICAgICAgPGxpYi1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJidXN5XCIgW2NvdW50XT1cIjVcIiBbdHlwZV09XCIndGlsZXMnXCI+PC9saWItc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXN5ICYmIGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgcm9sZT1cImxpc3RpdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0aWxlVGVtcGxhdGUgfHwgIXRpbGVUZW1wbGF0ZS50ZW1wbGF0ZVwiPnRlbXBsYXRlIG1pc3NpbmcuLjwvc3Bhbj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aWxlVGVtcGxhdGUudGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC91bD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSAqbmdTd2l0Y2hDYXNlPVwiJ3RhYmxlJ1wiIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWNvbnRhaW5lci1pbm5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImxpc3Qtdmlldy10YWJsZVwiPlxyXG4gICAgICAgICAgPHRoZWFkIGNsYXNzPVwibGlzdC12aWV3LXRoZWFkXCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25TdXBwb3J0ZWRcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImxpc3Qtdmlldy10aC1kZXRhaWxzXCI+PC90aD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sLmZ1bGxXaWR0aCA/IGZ1bGxXaWR0aFRIQ2xhc3MgOiAnbGlzdC12aWV3LXRoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICB7e2NvbC50aXRsZX19XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImxpc3Qtdmlldy10Ym9keVwiXHJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJidXN5XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9hZGVySXRlbXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJsaXN0LXZpZXctdHJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblN1cHBvcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsaXN0LXZpZXctdGQtZGV0YWlsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRldGFpbHNTZWN0aW9uUHJvcGVydHlDb3VudCAhPT0gbnVsbCA/IGl0ZW1bZGV0YWlsc1NlY3Rpb25Qcm9wZXJ0eUNvdW50XSAhPT0gMCA6IHRydWU7IGVsc2UgaGlkZGVuRGV0YWlsc0J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiZXhwYW5kLWNvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtY29sbGFwc2UtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IHNvbGlkL3BsdXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaXRlbS5kZXRhaWxzRXhwYW5kZWQgPyBjb2xsYXBzZUljb24gOiBleHBhbmRJY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hpZGRlbkRldGFpbHNCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGlzdC12aWV3LXRkLWRldGFpbHNcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sLmZ1bGxXaWR0aCA/IGZ1bGxXaWR0aFREQ2xhc3MgOiAnbGlzdC12aWV3LXRkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGFuaW1hdGUtcHVsc2UgaC04IGJnLWdyYXktMjAwIHJvdW5kZWRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25TdXBwb3J0ZWRcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIml0ZW0uZGV0YWlsc0V4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXZpZXctdGQgYmctZ3JheS0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGV0YWlsc1RlbXBsYXRlLnRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwibGlzdC12aWV3LXRib2R5XCJcclxuICAgICAgICAgICAgICAgICAqbmdJZj1cIiFidXN5XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJsaXN0LXZpZXctdHJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblN1cHBvcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsaXN0LXZpZXctdGQtZGV0YWlsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRldGFpbHNTZWN0aW9uUHJvcGVydHlDb3VudCAhPT0gbnVsbCA/IGl0ZW1bZGV0YWlsc1NlY3Rpb25Qcm9wZXJ0eUNvdW50XSAhPT0gMCA6IHRydWU7IGVsc2UgaGlkZGVuRGV0YWlsc0J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZURldGFpbHMoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ0b2dnbGVEZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtY29sbGFwc2UtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IHNvbGlkL3BsdXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaXRlbS5kZXRhaWxzRXhwYW5kZWQgPyBjb2xsYXBzZUljb24gOiBleHBhbmRJY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hpZGRlbkRldGFpbHNCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGlzdC12aWV3LXRkLWRldGFpbHNcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sLmZ1bGxXaWR0aCA/IGZ1bGxXaWR0aFREQ2xhc3MgOiAnbGlzdC12aWV3LXRkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sLnRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25TdXBwb3J0ZWRcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIml0ZW0uZGV0YWlsc0V4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXZpZXctdGQgYmctZ3JheS0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGV0YWlsc1RlbXBsYXRlLnRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYnVzeSAmJiBpdGVtcyAmJiBpdGVtcy5sZW5ndGggPT09IDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkcy1kZWNrLTFcIj5cclxuICAgICAgPGxpYi1saXN0LXZpZXctZW1wdHktc3RhdGU+PC9saWItbGlzdC12aWV3LWVtcHR5LXN0YXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG5cclxuPGRpdiBjbGFzcz1cInB4LTIgbXQtMlwiXHJcbiAgICAgKm5nSWY9XCJpdGVtcyAmJiBpdGVtcy5sZW5ndGggIT09IDAgJiYgc2hvd1BhZ2VyICYmIChwYWdlclBvc2l0aW9uID09ICdib3R0b20nIHx8IHBhZ2VyUG9zaXRpb24gPT0gJ2JvdGgnKVwiPlxyXG4gIDxsaWItcGFnZXIgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgICAgICAgICBbcGFnZS1zaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgIFtjb3VudF09XCJjb3VudFwiXHJcbiAgICAgICAgICAgICBbc29ydC1vcHRpb25zXT1cInNvcnRPcHRpb25zXCJcclxuICAgICAgICAgICAgIFtzb3J0XT1cInNvcnRcIlxyXG4gICAgICAgICAgICAgW3NvcnQtZGlyXT1cInNvcnRkaXJcIlxyXG4gICAgICAgICAgICAgW2J1c3ldPVwiYnVzeVwiXHJcbiAgICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwiZW1pdFBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9XCJlbWl0UGFnZVNpemVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHNvcnRDaGFuZ2VkKT1cImVtaXRTb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChzb3J0ZGlyQ2hhbmdlZCk9XCJlbWl0U29ydGRpckNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gIDwvbGliLXBhZ2VyPlxyXG48L2Rpdj5cclxuIl19
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFM0ksT0FBTyxFQUFFLFlBQVksRUFBYyxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7OztBQUNwQyxDQUFDO0FBTUQsTUFBTSxPQUFPLGlCQUFpQjtJQWdDNUIsVUFBVTtJQUNWLElBQ0ksSUFBSSxDQUFDLElBQW9DO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FB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bnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbHRlckNsYXVzZSwgU2VhcmNoT3B0aW9uIH0gZnJvbSAnLi4vYWR2YW5jZWQtc2VhcmNoL21vZGVscyc7XHJcbmltcG9ydCB7IExpc3RWaWV3VHlwZSwgTWVudU9wdGlvbiwgUGFnZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgTGlzdENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGlzdFRpbGVDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdGlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2xpc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vaWNvbnMnO1xyXG47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1saXN0LXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCdzZWFyY2gtb3B0aW9ucycpIHNlYXJjaE9wdGlvbnM6IFNlYXJjaE9wdGlvbltdID0gW107XHJcbiAgQElucHV0KCkgZmlsdGVyczogRmlsdGVyQ2xhdXNlW10gPSBbXTtcclxuICAvLyBCVVNZIFNUQVRFXHJcbiAgQElucHV0KCkgYnVzeSA9IGZhbHNlO1xyXG4gIC8vIERBVEEgU09VUkNFIVxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgLy8gUEFHSU5HIC0gcGFzcyB0aHJvdWdoIGZvciBwYWdlciBjb21wb25lbnRcclxuICBASW5wdXQoKSBjb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcGFnZSA9IDE7XHJcbiAgQElucHV0KCkgdmlldyA9IExpc3RWaWV3VHlwZS5UYWJsZTtcclxuICBASW5wdXQoKSBzb3J0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdwYWdlLXNpemUnKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3BhZ2Utc2l6ZS1vcHRpb25zJykgcGFnZVNpemVPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcclxuICAvLyBTT1JUSU5HIC0gcGFzcyB0aHJvdWdoIGZvciBwYWdlciBjb21wb25lbnRcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzb3J0LW9wdGlvbnMnKSBzb3J0T3B0aW9uczogTWVudU9wdGlvbltdID0gW107XHJcbiAgQElucHV0KCdvcGVyYXRvcnMtZGlzYWJsZWQnKSBvcGVyYXRvcnNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3NvcnQtZGlyJykgc29ydGRpcjogc3RyaW5nIHwgbnVsbCA9ICctJztcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCd0aWxlcy1jb3VudCcpIHRpbGVzQ291bnQgPSA0O1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3Nob3ctcGFnZXInKSBzaG93UGFnZXIgPSB0cnVlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3BhZ2VyLXBvc2l0aW9uJykgcGFnZXJQb3NpdGlvbjogYW55IHwgdW5kZWZpbmVkID0gUGFnZXJQb3NpdGlvbi5Ub3A7XHJcbiAgLy8gREVUQUlMUyBTRUNUSU9OXHJcbiAgLy8gQ2hlY2sgaWYgZGV0YWlscyBzZWN0aW9uIGFuZCBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZCBhY2NvcmRpbmcgdG8gdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSBnaXZlblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ2RldGFpbHMtc2VjdGlvbi1wcm9wZXJ0eS1jb3VudCcpIGRldGFpbHNTZWN0aW9uUHJvcGVydHlDb3VudDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gQ09MVU1OU1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdENvbHVtbkNvbXBvbmVudCwgeyByZWFkOiBMaXN0Q29sdW1uQ29tcG9uZW50IH0pXHJcbiAgc2V0IGNvbHMocmVmczogUXVlcnlMaXN0PExpc3RDb2x1bW5Db21wb25lbnQ+KSB7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSByZWZzPy50b0FycmF5KCk7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudGFibGVWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubXVsdGlwbGVGdWxsV2lkdGggPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5mdWxsV2lkdGgpLmxlbmd0aCA+IDE7XHJcbiAgICB0aGlzLmZ1bGxXaWR0aFRIQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10aC1oYWxmJyA6ICdsaXN0LXZpZXctdGgtZnVsbCc7XHJcbiAgICB0aGlzLmZ1bGxXaWR0aFREQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10ZC1oYWxmJyA6ICdsaXN0LXZpZXctdGQtZnVsbCc7XHJcbiAgfVxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBAQ29udGVudENoaWxkKExpc3RUaWxlQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RUaWxlQ29tcG9uZW50IH0pXHJcbiAgc2V0IHRpbGVzKHJlZjogTGlzdFRpbGVDb21wb25lbnQpIHtcclxuICAgIHRoaXMudGlsZVRlbXBsYXRlID0gcmVmO1xyXG4gICAgaWYgKHRoaXMudGlsZVRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMudGlsZXNWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB9KVxyXG4gIHNldCBkZXRhaWxzKHJlZjogTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLmRldGFpbHNUZW1wbGF0ZSA9IHJlZjtcclxuICAgIGlmICh0aGlzLmRldGFpbHNUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmRldGFpbHNTZWN0aW9uU3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBkZXRhaWxzT3BlbmVkOiBFdmVudEVtaXR0ZXI8eyBpdGVtOiBhbnksIG9wZW46IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbTogYW55LCBvcGVuOiBib29sZWFuIH0+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0ZGlyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYWR2YW5jZWRTZWFyY2hDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8RmlsdGVyQ2xhdXNlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDbGF1c2VbXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBtdWx0aXBsZUZ1bGxXaWR0aCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBleHBhbmRJY29uID0gSWNvbnMuRXhwYW5kO1xyXG4gIHB1YmxpYyBjb2xsYXBzZUljb24gPSBJY29ucy5Db2xsYXBzZTtcclxuICBwdWJsaWMgdGFibGVWaWV3U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGZ1bGxXaWR0aFRIQ2xhc3MgPSAnbGlzdC12aWV3LXRoLWZ1bGwnO1xyXG4gIHB1YmxpYyBmdWxsV2lkdGhURENsYXNzID0gJ2xpc3Qtdmlldy10ZC1mdWxsJztcclxuICBwdWJsaWMgdGlsZXNWaWV3U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGRldGFpbHNTZWN0aW9uU3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGxvYWRlckl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyB0aWxlc0RlY2tDbGFzcyA9ICdjYXJkcy1kZWNrLTQnO1xyXG4gIHB1YmxpYyB0aWxlVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIHB1YmxpYyBkZXRhaWxzVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTsgaSsrKSB7XHJcbiAgICAgIHRoaXMubG9hZGVySXRlbXMucHVzaCh7fSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wYWdlclBvc2l0aW9uKSB7XHJcbiAgICAgIHRoaXMucGFnZXJQb3NpdGlvbiA9IHRoaXMucGFnZXJQb3NpdGlvbiBhcyBQYWdlclBvc2l0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgdGlsZXNDb3VudENoYW5nZSA9IGNoYW5nZXNbJ3RpbGVzLWNvdW50J10gfHwgY2hhbmdlcy50aWxlc0NvdW50O1xyXG4gICAgaWYgKHRpbGVzQ291bnRDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5zZXRUaWxlc0RlY2tDbGFzcyh0aWxlc0NvdW50Q2hhbmdlLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBldmVudHNcclxuICBwdWJsaWMgZW1pdFBhZ2VDaGFuZ2VkKCRldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0UGFnZVNpemVDaGFuZ2VkKCRldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFNvcnRDaGFuZ2VkKCRldmVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgcHVibGljIGVtaXRTb3J0ZGlyQ2hhbmdlZCgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ZGlyQ2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBlbWl0QWR2YW5jZWRTZWFyY2hDaGFuZ2VkKCRldmVudDogRmlsdGVyQ2xhdXNlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVEZXRhaWxzKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaXRlbS5kZXRhaWxzRXhwYW5kZWQgPSAhaXRlbS5kZXRhaWxzRXhwYW5kZWQ7XHJcbiAgICB0aGlzLmRldGFpbHNPcGVuZWQuZW1pdCh7IGl0ZW0sIG9wZW46IGl0ZW0uZGV0YWlsc0V4cGFuZGVkIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gaGVscGVyc1xyXG4gIHByaXZhdGUgc2V0VGlsZXNEZWNrQ2xhc3ModGlsZXM6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRpbGVzID49IDEgJiYgdGlsZXMgPD0gNCkge1xyXG4gICAgICB0aGlzLnRpbGVzRGVja0NsYXNzID1cclxuICAgICAgICB0aGlzLnZpZXcgIT09IExpc3RWaWV3VHlwZS5HYWxsZXJ5XHJcbiAgICAgICAgICA/IGBjYXJkcy1kZWNrLSR7dGlsZXN9YFxyXG4gICAgICAgICAgOiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IGBnYWxsZXJ5LWRlY2stJHt0aWxlc31gXHJcbiAgICAgICAgICAgIDogJ2dhbGxlcnktZGVjayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRpbGVzRGVja0NsYXNzID1cclxuICAgICAgICB0aGlzLnZpZXcgIT09IExpc3RWaWV3VHlwZS5HYWxsZXJ5XHJcbiAgICAgICAgICA/ICdjYXJkcy1kZWNrLTMnXHJcbiAgICAgICAgICA6IHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gJ2dhbGxlcnktZGVjay0zJ1xyXG4gICAgICAgICAgICA6ICdnYWxsZXJ5LWRlY2snO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxyXG4gIDxsaWItYWR2YW5jZWQtc2VhcmNoICpuZ0lmPVwic2VhcmNoT3B0aW9ucyAmJiBzZWFyY2hPcHRpb25zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2gtb3B0aW9uc109XCJzZWFyY2hPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbb3BlcmF0b3JzLWRpc2FibGVkXT1cIm9wZXJhdG9yc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYWR2YW5jZWRTZWFyY2hDaGFuZ2VkKT1cImVtaXRBZHZhbmNlZFNlYXJjaENoYW5nZWQoJGV2ZW50KVwiPlxyXG4gIDwvbGliLWFkdmFuY2VkLXNlYXJjaD5cclxuXHJcbiAgPGxpYi1wYWdlciAqbmdJZj1cInNob3dQYWdlciAmJiAocGFnZXJQb3NpdGlvbiA9PSAndG9wJyB8fCBwYWdlclBvc2l0aW9uID09ICdib3RoJylcIlxyXG4gICAgICAgICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgICAgICAgICBbcGFnZS1zaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgIFtjb3VudF09XCJjb3VudFwiXHJcbiAgICAgICAgICAgICBbc29ydC1vcHRpb25zXT1cInNvcnRPcHRpb25zXCJcclxuICAgICAgICAgICAgIFtzb3J0XT1cInNvcnRcIlxyXG4gICAgICAgICAgICAgW3NvcnQtZGlyXT1cInNvcnRkaXJcIlxyXG4gICAgICAgICAgICAgW2J1c3ldPVwiYnVzeVwiXHJcbiAgICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwiZW1pdFBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9XCJlbWl0UGFnZVNpemVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHNvcnRDaGFuZ2VkKT1cImVtaXRTb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChzb3J0ZGlyQ2hhbmdlZCk9XCJlbWl0U29ydGRpckNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BhZ2VyLW5lYXItY29udGVudF1cIiBuZ1Byb2plY3RBcz1cIltwYWdlci1uZWFyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvbGliLXBhZ2VyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInZpZXdcIj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RpbGVzJ1wiPlxyXG4gICAgPGRpdiBbY2xhc3NdPVwiYnVzeSA/ICdjYXJkcy1kZWNrLTEnIDogdGlsZXNEZWNrQ2xhc3NcIj5cclxuXHJcbiAgICAgIDxsaWItc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiYnVzeVwiIFtkZWNrLWNsYXNzXT1cInRpbGVzRGVja0NsYXNzXCIgW2NvdW50XT1cIjdcIiBbdHlwZV09XCIndGlsZXMnXCI+PC9saWItc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXN5ICYmIGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0aWxlVGVtcGxhdGUgfHwgIXRpbGVUZW1wbGF0ZS50ZW1wbGF0ZVwiPnRlbXBsYXRlIG1pc3NpbmcuLjwvc3Bhbj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aWxlVGVtcGxhdGUudGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgPCEtLSAqbmdTd2l0Y2hDYXNlPVwiJ2dhbGxlcnknXCIgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2dhbGxlcnknXCI+XHJcbiAgICA8dWwgcm9sZT1cImxpc3RcIiByb2xlPVwibGlzdFwiIFtjbGFzc109XCJ0aWxlc0RlY2tDbGFzc1wiPlxyXG5cclxuICAgICAgPGxpYi1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJidXN5XCIgW2NvdW50XT1cIjVcIiBbdHlwZV09XCIndGlsZXMnXCI+PC9saWItc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXN5ICYmIGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgcm9sZT1cImxpc3RpdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0aWxlVGVtcGxhdGUgfHwgIXRpbGVUZW1wbGF0ZS50ZW1wbGF0ZVwiPnRlbXBsYXRlIG1pc3NpbmcuLjwvc3Bhbj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aWxlVGVtcGxhdGUudGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC91bD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSAqbmdTd2l0Y2hDYXNlPVwiJ3RhYmxlJ1wiIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWNvbnRhaW5lci1pbm5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImxpc3Qtdmlldy10YWJsZVwiPlxyXG4gICAgICAgICAgPHRoZWFkIGNsYXNzPVwibGlzdC12aWV3LXRoZWFkXCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25TdXBwb3J0ZWRcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBhcmlhLWxhYmVsPVwiZGV0YWlscyBidXR0b25cIiBjbGFzcz1cImxpc3Qtdmlldy10aC1kZXRhaWxzXCI+PC90aD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgW2NsYXNzXT1cImNvbC5mdWxsV2lkdGggPyBmdWxsV2lkdGhUSENsYXNzIDogJ2xpc3Qtdmlldy10aCdcIj5cclxuICAgICAgICAgICAgICAgICAge3tjb2wudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJsaXN0LXZpZXctdGJvZHlcIiAqbmdJZj1cImJ1c3lcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb2FkZXJJdGVtcztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImxpc3Qtdmlldy10clwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNTZWN0aW9uU3VwcG9ydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxpc3Qtdmlldy10ZC1kZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25Qcm9wZXJ0eUNvdW50ICE9PSBudWxsID8gaXRlbVtkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnRdICE9PSAwIDogdHJ1ZTsgZWxzZSBoaWRkZW5EZXRhaWxzQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJleHBhbmQtY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1jb2xsYXBzZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVyb2ljb24gbmFtZTogc29saWQvcGx1cyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmRldGFpbHNFeHBhbmRlZCA/IGNvbGxhcHNlSWNvbiA6IGV4cGFuZEljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGlkZGVuRGV0YWlsc0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsaXN0LXZpZXctdGQtZGV0YWlsc1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wuZnVsbFdpZHRoID8gZnVsbFdpZHRoVERDbGFzcyA6ICdsaXN0LXZpZXctdGQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgYW5pbWF0ZS1wdWxzZSBoLTggYmctZ3JheS0yMDAgcm91bmRlZFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblN1cHBvcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiaXRlbS5kZXRhaWxzRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3Qtdmlldy10ZCBiZy1ncmF5LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXRhaWxzVGVtcGxhdGUudGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJsaXN0LXZpZXctdGJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiIWJ1c3lcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImxpc3Qtdmlldy10clwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNTZWN0aW9uU3VwcG9ydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxpc3Qtdmlldy10ZC1kZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25Qcm9wZXJ0eUNvdW50ICE9PSBudWxsID8gaXRlbVtkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnRdICE9PSAwIDogdHJ1ZTsgZWxzZSBoaWRkZW5EZXRhaWxzQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGV0YWlscyhpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInRvZ2dsZURldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1jb2xsYXBzZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVyb2ljb24gbmFtZTogc29saWQvcGx1cyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmRldGFpbHNFeHBhbmRlZCA/IGNvbGxhcHNlSWNvbiA6IGV4cGFuZEljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGlkZGVuRGV0YWlsc0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsaXN0LXZpZXctdGQtZGV0YWlsc1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wuZnVsbFdpZHRoID8gZnVsbFdpZHRoVERDbGFzcyA6ICdsaXN0LXZpZXctdGQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wudGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblN1cHBvcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiaXRlbS5kZXRhaWxzRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3Qtdmlldy10ZCBiZy1ncmF5LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXRhaWxzVGVtcGxhdGUudGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXN5ICYmIGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRzLWRlY2stMVwiPlxyXG4gICAgICA8bGliLWxpc3Qtdmlldy1lbXB0eS1zdGF0ZT48L2xpYi1saXN0LXZpZXctZW1wdHktc3RhdGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcblxyXG48ZGl2IGNsYXNzPVwicHgtMiBtdC0yXCJcclxuICAgICAqbmdJZj1cIml0ZW1zICYmIGl0ZW1zLmxlbmd0aCAhPT0gMCAmJiBzaG93UGFnZXIgJiYgKHBhZ2VyUG9zaXRpb24gPT0gJ2JvdHRvbScgfHwgcGFnZXJQb3NpdGlvbiA9PSAnYm90aCcpXCI+XHJcbiAgPGxpYi1wYWdlciBbcGFnZV09XCJwYWdlXCJcclxuICAgICAgICAgICAgIFtwYWdlLXNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgW2NvdW50XT1cImNvdW50XCJcclxuICAgICAgICAgICAgIFtzb3J0LW9wdGlvbnNdPVwic29ydE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgW3NvcnRdPVwic29ydFwiXHJcbiAgICAgICAgICAgICBbc29ydC1kaXJdPVwic29ydGRpclwiXHJcbiAgICAgICAgICAgICBbYnVzeV09XCJidXN5XCJcclxuICAgICAgICAgICAgIChwYWdlQ2hhbmdlZCk9XCJlbWl0UGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2VkKT1cImVtaXRQYWdlU2l6ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAoc29ydENoYW5nZWQpPVwiZW1pdFNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHNvcnRkaXJDaGFuZ2VkKT1cImVtaXRTb3J0ZGlyQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgPC9saWItcGFnZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -22,11 +22,11 @@ export class NavLinksListComponent {
|
|
|
22
22
|
this.fragmentSub$ = this.activeFragment?.subscribe(fragment => this.fragmentValue = fragment);
|
|
23
23
|
}
|
|
24
24
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NavLinksListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: { links: "links", activeFragment: ["active-fragment", "activeFragment"], navLinkClass: ["link-class", "navLinkClass"], navLinkActiveClass: ["link-active-class", "navLinkActiveClass"], containerClass: ["container-class", "containerClass"], showIcons: ["show-icons", "showIcons"], showText: ["show-text", "showText"], largeIcons: ["large-icons", "largeIcons"] }, ngImport: i0, template: "\r\n<div [class]=\"containerClass ?? 'nav-link-list-container'\">\r\n <div class=\"nav-link-list-container-inner\" [class.icons-only]=\"!showText\">\r\n <ng-container *ngFor=\"let link of links | async\">\r\n <ng-container [ngSwitch]=\"link.type\">\r\n <a *ngSwitchCase=\"'router'\"\r\n href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [routerLinkActive]=\"navLinkActiveClass\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n [queryParams]=\"link.queryParams\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'external'\"\r\n [href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'fragment'\"\r\n routerLink=\".\"\r\n [fragment]=\"link.path\"\r\n [class]=\"fragmentValue === link.path ? navLinkClass + ' ' + navLinkActiveClass : navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: { links: "links", activeFragment: ["active-fragment", "activeFragment"], navLinkClass: ["link-class", "navLinkClass"], navLinkActiveClass: ["link-active-class", "navLinkActiveClass"], containerClass: ["container-class", "containerClass"], showIcons: ["show-icons", "showIcons"], showText: ["show-text", "showText"], largeIcons: ["large-icons", "largeIcons"] }, ngImport: i0, template: "\r\n<div [class]=\"containerClass ?? 'nav-link-list-container'\">\r\n <div class=\"nav-link-list-container-inner\" [class.icons-only]=\"!showText\">\r\n <ng-container *ngFor=\"let link of links | async\">\r\n <ng-container [ngSwitch]=\"link.type\">\r\n <div *ngSwitchCase=\"'sparator'\" class=\"h-2\"></div>\r\n <a *ngSwitchCase=\"'router'\"\r\n href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [routerLinkActive]=\"navLinkActiveClass\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n [queryParams]=\"link.queryParams\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'external'\"\r\n [href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'fragment'\"\r\n routerLink=\".\"\r\n [fragment]=\"link.path\"\r\n [class]=\"fragmentValue === link.path ? navLinkClass + ' ' + navLinkActiveClass : navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
26
26
|
}
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NavLinksListComponent, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
|
-
args: [{ selector: 'lib-nav-links-list', template: "\r\n<div [class]=\"containerClass ?? 'nav-link-list-container'\">\r\n <div class=\"nav-link-list-container-inner\" [class.icons-only]=\"!showText\">\r\n <ng-container *ngFor=\"let link of links | async\">\r\n <ng-container [ngSwitch]=\"link.type\">\r\n <a *ngSwitchCase=\"'router'\"\r\n href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [routerLinkActive]=\"navLinkActiveClass\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n [queryParams]=\"link.queryParams\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'external'\"\r\n [href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'fragment'\"\r\n routerLink=\".\"\r\n [fragment]=\"link.path\"\r\n [class]=\"fragmentValue === link.path ? navLinkClass + ' ' + navLinkActiveClass : navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
|
|
29
|
+
args: [{ selector: 'lib-nav-links-list', template: "\r\n<div [class]=\"containerClass ?? 'nav-link-list-container'\">\r\n <div class=\"nav-link-list-container-inner\" [class.icons-only]=\"!showText\">\r\n <ng-container *ngFor=\"let link of links | async\">\r\n <ng-container [ngSwitch]=\"link.type\">\r\n <div *ngSwitchCase=\"'sparator'\" class=\"h-2\"></div>\r\n <a *ngSwitchCase=\"'router'\"\r\n href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [routerLinkActive]=\"navLinkActiveClass\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n [queryParams]=\"link.queryParams\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'external'\"\r\n [href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n [class]=\"navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n <a *ngSwitchCase=\"'fragment'\"\r\n routerLink=\".\"\r\n [fragment]=\"link.path\"\r\n [class]=\"fragmentValue === link.path ? navLinkClass + ' ' + navLinkActiveClass : navLinkClass\"\r\n [class.min-nav-link-text-width]=\"showText\">\r\n <div class=\"inline-flex items-center\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon\" [class.text-2xl]=\"largeIcons\" [class.p-1]=\"largeIcons\"></i>\r\n <span [class.ml-3]=\"showIcons && link.icon\" *ngIf=\"showText\">{{ link.text }}</span>\r\n </div>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
|
|
30
30
|
}], ctorParameters: () => [], propDecorators: { links: [{
|
|
31
31
|
type: Input
|
|
32
32
|
}], activeFragment: [{
|
|
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
51
51
|
type: Input,
|
|
52
52
|
args: ['large-icons']
|
|
53
53
|
}] } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmtzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL25hdi1saW5rcy1saXN0L25hdi1saW5rcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9uYXYtbGlua3MtbGlzdC9uYXYtbGlua3MtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFPcEUsTUFBTSxPQUFPLHFCQUFxQjtJQWlCaEM7UUFaQSwyQ0FBMkM7UUFDdEIsaUJBQVksR0FBb0IsVUFBVSxDQUFDO1FBQ2hFLDJDQUEyQztRQUNmLHVCQUFrQixHQUFzQixpQkFBaUIsQ0FBQztRQUN0RiwyQ0FBMkM7UUFDakIsbUJBQWMsR0FBa0MsU0FBUyxDQUFDO1FBQ3BGLDJDQUEyQztRQUN0QixjQUFTLEdBQXdCLEtBQUssQ0FBQztRQUN4QyxhQUFRLEdBQXdCLElBQUksQ0FBQztRQUNuQyxlQUFVLEdBQVksS0FBSyxDQUFDO0lBR2xDLENBQUM7SUFFakIsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUNuRyxDQUFDOzhHQXpCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwyYUNSbEMsbXVFQTJDQTs7MkZEbkNhLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxvQkFBb0I7d0RBS3JCLEtBQUs7c0JBQWIsS0FBSztnQkFFb0IsY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBRUgsWUFBWTtzQkFBaEMsS0FBSzt1QkFBQyxZQUFZO2dCQUVTLGtCQUFrQjtzQkFBN0MsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBRUEsY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBRUgsU0FBUztzQkFBN0IsS0FBSzt1QkFBQyxZQUFZO2dCQUNDLFFBQVE7c0JBQTNCLEtBQUs7dUJBQUMsV0FBVztnQkFDSSxVQUFVO3NCQUEvQixLQUFLO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2TGluayB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW5hdi1saW5rcy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2LWxpbmtzLWxpc3QuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZMaW5rc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGxpbmtzOiBPYnNlcnZhYmxlPE5hdkxpbmtbXT4gfCB1bmRlZmluZWQ7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnYWN0aXZlLWZyYWdtZW50JykgYWN0aXZlRnJhZ21lbnQ6IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdsaW5rLWNsYXNzJykgbmF2TGlua0NsYXNzOiBzdHJpbmcgfCBzdHJpbmcgPSAnbmF2LWxpbmsnO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ2xpbmstYWN0aXZlLWNsYXNzJykgbmF2TGlua0FjdGl2ZUNsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICduYXYtbGluay1hY3RpdmUnO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ2NvbnRhaW5lci1jbGFzcycpIGNvbnRhaW5lckNsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzaG93LWljb25zJykgc2hvd0ljb25zOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XHJcbiAgQElucHV0KCdzaG93LXRleHQnKSBzaG93VGV4dDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XHJcbiAgQElucHV0KCdsYXJnZS1pY29ucycpIGxhcmdlSWNvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZnJhZ21lbnRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZnJhZ21lbnRTdWIkOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuICBcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnJhZ21lbnRTdWIkPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuZnJhZ21lbnRTdWIkID0gdGhpcy5hY3RpdmVGcmFnbWVudD8uc3Vic2NyaWJlKCBmcmFnbWVudCA9PiB0aGlzLmZyYWdtZW50VmFsdWUgPSBmcmFnbWVudCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuPGRpdiBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MgPz8gJ25hdi1saW5rLWxpc3QtY29udGFpbmVyJ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJuYXYtbGluay1saXN0LWNvbnRhaW5lci1pbm5lclwiIFtjbGFzcy5pY29ucy1vbmx5XT1cIiFzaG93VGV4dFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rcyB8IGFzeW5jXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImxpbmsudHlwZVwiPlxyXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidzcGFyYXRvcidcIiBjbGFzcz1cImgtMlwiPjwvZGl2PlxyXG4gICAgICAgIDxhICpuZ1N3aXRjaENhc2U9XCIncm91dGVyJ1wiXHJcbiAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbbGluay5wYXRoXVwiXHJcbiAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJuYXZMaW5rQWN0aXZlQ2xhc3NcIlxyXG4gICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IGxpbmsuZXhhY3QgfVwiXHJcbiAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwibGluay5xdWVyeVBhcmFtc1wiXHJcbiAgICAgICAgICBbY2xhc3NdPVwibmF2TGlua0NsYXNzXCJcclxuICAgICAgICAgIFtjbGFzcy5taW4tbmF2LWxpbmstdGV4dC13aWR0aF09XCJzaG93VGV4dFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aSAqbmdJZj1cInNob3dJY29ucyAmJiBsaW5rLmljb25cIiBbY2xhc3NdPVwibGluay5pY29uXCIgW2NsYXNzLnRleHQtMnhsXT1cImxhcmdlSWNvbnNcIiBbY2xhc3MucC0xXT1cImxhcmdlSWNvbnNcIj48L2k+XHJcbiAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5tbC0zXT1cInNob3dJY29ucyAmJiBsaW5rLmljb25cIiAqbmdJZj1cInNob3dUZXh0XCI+e3sgbGluay50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhICpuZ1N3aXRjaENhc2U9XCInZXh0ZXJuYWwnXCJcclxuICAgICAgICAgIFtocmVmXT1cImxpbmsucGF0aFwiXHJcbiAgICAgICAgICBbYXR0ci50YXJnZXRdPVwibGluay5leHRlcm5hbCA/ICdfYmxhbmsnIDogJ19zZWxmJ1wiXHJcbiAgICAgICAgICBbY2xhc3NdPVwibmF2TGlua0NsYXNzXCJcclxuICAgICAgICAgIFtjbGFzcy5taW4tbmF2LWxpbmstdGV4dC13aWR0aF09XCJzaG93VGV4dFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPGkgKm5nSWY9XCJzaG93SWNvbnMgJiYgbGluay5pY29uXCIgW2NsYXNzXT1cImxpbmsuaWNvblwiIFtjbGFzcy50ZXh0LTJ4bF09XCJsYXJnZUljb25zXCIgW2NsYXNzLnAtMV09XCJsYXJnZUljb25zXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4gW2NsYXNzLm1sLTNdPVwic2hvd0ljb25zICYmIGxpbmsuaWNvblwiICpuZ0lmPVwic2hvd1RleHRcIj57eyBsaW5rLnRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhICpuZ1N3aXRjaENhc2U9XCInZnJhZ21lbnQnXCJcclxuICAgICAgICAgIHJvdXRlckxpbms9XCIuXCJcclxuICAgICAgICAgIFtmcmFnbWVudF09XCJsaW5rLnBhdGhcIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImZyYWdtZW50VmFsdWUgPT09IGxpbmsucGF0aCA/IG5hdkxpbmtDbGFzcyArICcgJyArIG5hdkxpbmtBY3RpdmVDbGFzcyA6IG5hdkxpbmtDbGFzc1wiXHJcbiAgICAgICAgICBbY2xhc3MubWluLW5hdi1saW5rLXRleHQtd2lkdGhdPVwic2hvd1RleHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGkgKm5nSWY9XCJzaG93SWNvbnMgJiYgbGluay5pY29uXCIgW2NsYXNzXT1cImxpbmsuaWNvblwiIFtjbGFzcy50ZXh0LTJ4bF09XCJsYXJnZUljb25zXCIgW2NsYXNzLnAtMV09XCJsYXJnZUljb25zXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiBbY2xhc3MubWwtM109XCJzaG93SWNvbnMgJiYgbGluay5pY29uXCIgKm5nSWY9XCJzaG93VGV4dFwiPnt7IGxpbmsudGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -64,11 +64,11 @@ export class NotificationsIndicatorComponent {
|
|
|
64
64
|
this.menuExpanded = false;
|
|
65
65
|
}
|
|
66
66
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NotificationsIndicatorComponent, deps: [{ token: APP_NOTIFICATIONS }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator", ngImport: i0, template: "<div class=\"relative\"\r\n(clickOutside)=\"onClickOutside($event)\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n (click)=\"doInboxAction()\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">\r\n <i class=\"ms-Icon hover:text-blue-400\"\r\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\r\n [class.text-sky-400]=\"unreadCount > 0\"\r\n [class.animate-notification]=\"newArrival\"\r\n [class.ms-Icon--Message]=\"unreadCount === 0\">\r\n </i>\r\n </span>\r\n <span\r\n *ngIf=\"unreadCount > 0\"\r\n [class.animate-pulse]=\"newArrival\"\r\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal\">\r\n {{ unreadCount }}\r\n </span>\r\n </span>\r\n </button>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-template #messagesDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"items; else loading\">\r\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of items; let i = index\">\r\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a\r\n [routerLink]=\"message.path\"\r\n (click)=\"removeItem(i)\"\r\n class=\"notifications-nav-link grid\"\r\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ message.data.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator", ngImport: i0, template: "<div class=\"relative\"\r\n(clickOutside)=\"onClickOutside($event)\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n (click)=\"doInboxAction()\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">\r\n <i class=\"ms-Icon hover:text-blue-400\"\r\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\r\n [class.text-sky-400]=\"unreadCount > 0\"\r\n [class.animate-notification]=\"newArrival\"\r\n [class.ms-Icon--Message]=\"unreadCount === 0\">\r\n </i>\r\n </span>\r\n <span\r\n *ngIf=\"unreadCount > 0\"\r\n [class.animate-pulse]=\"newArrival\"\r\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal\">\r\n {{ unreadCount }}\r\n </span>\r\n </span>\r\n </button>\r\n\r\n <!-- Notifications dropdown -->\r\n <div tabindex=\"1\" *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-template #messagesDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"items; else loading\">\r\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of items; let i = index\">\r\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a\r\n [routerLink]=\"message.path\"\r\n (click)=\"removeItem(i)\"\r\n class=\"notifications-nav-link grid\"\r\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ message.data.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-lg\">\r\n <a [routerLink]=\"allNotificationsLink!.path\" (click)=\"onClickOutside($event)\">\r\n <button type=\"button\" class=\"header-notifications-dropdown-view-all-button\">{{allNotificationsLink!.text}}</button>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
|
68
68
|
}
|
|
69
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NotificationsIndicatorComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
71
|
-
args: [{ selector: 'lib-notifications-indicator', template: "<div class=\"relative\"\r\n(clickOutside)=\"onClickOutside($event)\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n (click)=\"doInboxAction()\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">\r\n <i class=\"ms-Icon hover:text-blue-400\"\r\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\r\n [class.text-sky-400]=\"unreadCount > 0\"\r\n [class.animate-notification]=\"newArrival\"\r\n [class.ms-Icon--Message]=\"unreadCount === 0\">\r\n </i>\r\n </span>\r\n <span\r\n *ngIf=\"unreadCount > 0\"\r\n [class.animate-pulse]=\"newArrival\"\r\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal\">\r\n {{ unreadCount }}\r\n </span>\r\n </span>\r\n </button>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-template #messagesDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"items; else loading\">\r\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of items; let i = index\">\r\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a\r\n [routerLink]=\"message.path\"\r\n (click)=\"removeItem(i)\"\r\n class=\"notifications-nav-link grid\"\r\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ message.data.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-
|
|
71
|
+
args: [{ selector: 'lib-notifications-indicator', template: "<div class=\"relative\"\r\n(clickOutside)=\"onClickOutside($event)\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n (click)=\"doInboxAction()\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">\r\n <i class=\"ms-Icon hover:text-blue-400\"\r\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\r\n [class.text-sky-400]=\"unreadCount > 0\"\r\n [class.animate-notification]=\"newArrival\"\r\n [class.ms-Icon--Message]=\"unreadCount === 0\">\r\n </i>\r\n </span>\r\n <span\r\n *ngIf=\"unreadCount > 0\"\r\n [class.animate-pulse]=\"newArrival\"\r\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal\">\r\n {{ unreadCount }}\r\n </span>\r\n </span>\r\n </button>\r\n\r\n <!-- Notifications dropdown -->\r\n <div tabindex=\"1\" *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-template #messagesDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"items; else loading\">\r\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of items; let i = index\">\r\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a\r\n [routerLink]=\"message.path\"\r\n (click)=\"removeItem(i)\"\r\n class=\"notifications-nav-link grid\"\r\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ message.data.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-lg\">\r\n <a [routerLink]=\"allNotificationsLink!.path\" (click)=\"onClickOutside($event)\">\r\n <button type=\"button\" class=\"header-notifications-dropdown-view-all-button\">{{allNotificationsLink!.text}}</button>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
72
72
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
73
73
|
type: Inject,
|
|
74
74
|
args: [APP_NOTIFICATIONS]
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
76
76
|
type: Inject,
|
|
77
77
|
args: [APP_LINKS]
|
|
78
78
|
}] }] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL25vdGlmaWNhdGlvbnMtaW5kaWNhdG9yL25vdGlmaWNhdGlvbnMtaW5kaWNhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9ub3RpZmljYXRpb25zLWluZGljYXRvci9ub3RpZmljYXRpb25zLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFNNUQsTUFBTSxPQUFPLCtCQUErQjtJQVMxQyxZQUE4QyxhQUFpQyxFQUE0QixLQUFXO1FBQXhFLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQUE0QixVQUFLLEdBQUwsS0FBSyxDQUFNO1FBUC9HLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFHakIsZ0JBQVcsR0FBb0IsU0FBUyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFDZ0csQ0FBQztJQUUzSCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBeUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDakYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZFLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDO29CQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQzFCLFVBQVUsQ0FBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUUsQ0FBQztnQkFDekQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFZO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUMsMEVBQTBFO0lBQzFFLGlEQUFpRDtJQUNqRCwrQkFBK0I7SUFDL0IscUNBQXFDO0lBQ3JDLE9BQU87SUFFUCxzRUFBc0U7SUFDdEUsZ0dBQWdHO0lBQ2hHLDJHQUEyRztJQUMzRyxzQ0FBc0M7SUFFeEMsbUNBQW1DO0lBQzVCLGNBQWMsQ0FBQyxNQUFXO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7OEdBaEVVLCtCQUErQixrQkFTdEIsaUJBQWlCLGFBQW9ELFNBQVM7a0dBVHZGLCtCQUErQixtRUNUNUMsZzJIQThFQTs7MkZEckVhLCtCQUErQjtrQkFKM0MsU0FBUzsrQkFDRSw2QkFBNkI7OzBCQVkxQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQTZDLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBOb3RpZmljYXRpb25zLCBOYXZMaW5rIH0gZnJvbSAnLi8uLi8uLi90eXBlcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQUF9MSU5LUywgQVBQX05PVElGSUNBVElPTlMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbm90aWZpY2F0aW9ucy1pbmRpY2F0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLWluZGljYXRvci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNJbmRpY2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBtZW51RXhwYW5kZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgdW5yZWFkQ291bnQgPSAwO1xyXG4gIHB1YmxpYyBpdGVtczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgYWxsTm90aWZpY2F0aW9uc0xpbms/OiBOYXZMaW5rO1xyXG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1N1YiQ6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGluYm94QWN0aW9uOiBhbnkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHVibGljIG5ld0Fycml2YWwgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9OT1RJRklDQVRJT05TKSBwdWJsaWMgbm90aWZpY2F0aW9ucz86IElBcHBOb3RpZmljYXRpb25zLCBASW5qZWN0KEFQUF9MSU5LUykgcHVibGljIGxpbmtzPzogYW55KSB7IH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zU3ViJCkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTdWIkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMubGlua3MgJiYgdGhpcy5saW5rc1snbm90aWZpY2F0aW9ucyddKSB7XHJcbiAgICAgICh0aGlzLmxpbmtzWydub3RpZmljYXRpb25zJ10gYXMgT2JzZXJ2YWJsZTxOYXZMaW5rPikuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbnNMaW5rID0+IHtcclxuICAgICAgICB0aGlzLmFsbE5vdGlmaWNhdGlvbnNMaW5rID0gbm90aWZpY2F0aW9uc0xpbms7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5ub3RpZmljYXRpb25zKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1N1YiQgPSB0aGlzLm5vdGlmaWNhdGlvbnM/Lm1lc3NhZ2VzLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQuaXRlbXMpe1xyXG4gICAgICAgICAgdGhpcy5uZXdBcnJpdmFsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudW5yZWFkQ291bnQgPSByZXN1bHQuY291bnQ7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gcmVzdWx0Lml0ZW1zO1xyXG4gICAgICAgICAgc2V0VGltZW91dCggKCkgPT4geyB0aGlzLm5ld0Fycml2YWwgPSBmYWxzZTsgfSwgMTAwMCApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9JbmJveEFjdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnM/LmluYm94QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5pbmJveEFjdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZW51RXhwYW5kZWQgPSAhdGhpcy5tZW51RXhwYW5kZWQ7XHJcbiAgICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51bnJlYWRDb3VudCA9IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlSXRlbShpbmRleDpudW1iZXIpe1xyXG4gICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgfVxyXG5cclxuICAgIC8vIHRoaXMubm90aWZpY2F0aW9uc1N1YiQgPSB0aGlzLmxpbmtzLm5vdGlmaWNhdGlvbnM/LnBpcGUobWFwKHJlc3VsdCA9PiB7XHJcbiAgICAvLyAgIHRoaXMuYWxsSXRlbXNMaW5rID0gcmVzdWx0LmFsbE5vdGlmaWNhdGlvbnM7XHJcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSByZXN1bHQuaXRlbXM7XHJcbiAgICAvLyAgIHRoaXMudW5yZWFkQ291bnQgPSByZXN1bHQuY291bnQ7XHJcbiAgICAvLyB9KSk7XHJcblxyXG4gICAgLy8gW3RoaXMubm90aWZpY2F0aW9uc0xpbmtzUGF0aF0gYXMgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25OYXZMaW5rW10+O1xyXG4gICAgLy8gdGhpcy5hbGxOb3RpZmljYXRpb25zTGluayA9IHRoaXMubGlua3NbdGhpcy5hbGxOb3RpZmljYXRpb25zTGlua1BhdGhdIGFzIE9ic2VydmFibGU8TmF2TGluaz47XHJcbiAgICAvLyB0aGlzLnVucmVhZE5vdGlmaWNhdGlvbnNDb3VudE9icyA9IHRoaXMubGlua3NbdGhpcy5ub3RpZmljYXRpb25zQ291bnRlckxpbmtzUGF0aF0gYXMgT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgLy8gdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25zQ291bnQoKTtcclxuXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnR5cGVkZWZcclxuICBwdWJsaWMgb25DbGlja091dHNpZGUoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubWVudUV4cGFuZGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIlxyXG4oY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIj5cclxuICA8IS0tIE5vdGlmaWNhdGlvbnMgQnV0dG9uIC0tPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZG9JbmJveEFjdGlvbigpXCJcclxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+VmlldyBub3RpZmljYXRpb25zPC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJhdmF0YXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXZhdGFyLXRleHRcIj5cclxuICAgICAgICA8aSBjbGFzcz1cIm1zLUljb24gaG92ZXI6dGV4dC1ibHVlLTQwMFwiXHJcbiAgICAgICAgICBbY2xhc3MubXMtSWNvbi0tTWVzc2FnZUZpbGxdPVwidW5yZWFkQ291bnQgPiAwXCJcclxuICAgICAgICAgIFtjbGFzcy50ZXh0LXNreS00MDBdPVwidW5yZWFkQ291bnQgPiAwXCJcclxuICAgICAgICAgIFtjbGFzcy5hbmltYXRlLW5vdGlmaWNhdGlvbl09XCJuZXdBcnJpdmFsXCJcclxuICAgICAgICAgIFtjbGFzcy5tcy1JY29uLS1NZXNzYWdlXT1cInVucmVhZENvdW50ID09PSAwXCI+XHJcbiAgICAgICAgPC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKm5nSWY9XCJ1bnJlYWRDb3VudCA+IDBcIlxyXG4gICAgICAgIFtjbGFzcy5hbmltYXRlLXB1bHNlXT1cIm5ld0Fycml2YWxcIlxyXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgLW10LTEgbWwtMSB0ZXh0LXhzIGxlYWRpbmctbm9uZSB0ZXh0LWdyYXktMTAwIG9yZGluYWxcIj5cclxuICAgICAgICB7eyB1bnJlYWRDb3VudCB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDwhLS0gTm90aWZpY2F0aW9ucyBkcm9wZG93biAtLT5cclxuICA8ZGl2ICpuZ0lmPVwibWVudUV4cGFuZGVkXCIgY2xhc3M9XCJoZWFkZXItbm90aWZpY2F0aW9ucy1kcm9wZG93bi13aXRoLXVzZXJuYW1lXCIgcm9sZT1cIm1lbnVcIiBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIiBhcmlhLWxhYmVsbGVkYnk9XCJtZXNzYWdlcy1tZW51XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF4LWgtNjQgb3ZlcmZsb3cteS1hdXRvIG5vdGlmaWNhdGlvbi1tZXNzYWdlcyBtaW4taFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1zOyBlbHNlIG1lc3NhZ2VzRHJvcERvd25cIiBjbGFzcz1cInB5LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1uYXYtbGluayBob3ZlcjpiZy10cmFuc3BhcmVudFwiPs6UzrXOvSDOrc+HzrXPhM61IM69zq3Otc+CIM61zrnOtM6/z4DOv865zq7Pg861zrnPgjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNtZXNzYWdlc0Ryb3BEb3duPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cInByLTEuNVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zOyBlbHNlIGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zLmxlbmd0aCA8PSAwXCIgY2xhc3M9XCJweS01XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbmF2LWxpbmsgaG92ZXI6YmctdHJhbnNwYXJlbnRcIj7OlM61zr0gzq3Ph861z4TOtSDOvc6tzrXPgiDOtc65zrTOv8+Azr/Ouc6uz4POtc65z4I8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCIgW25nQ2xhc3NdPVwieyAnYm9yZGVyLWwtMiBib3JkZXItYmx1ZS01MDAgYmctYmx1ZS01MCBob3ZlcjpiZy1ibHVlLTUwJzogIW1lc3NhZ2UuZGF0YS5pc1JlYWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibWVzc2FnZS5wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm90aWZpY2F0aW9ucy1uYXYtbGluayBncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIiFtZXNzYWdlLmRhdGEuaXNSZWFkID8gJyBob3ZlcjpiZy1ibHVlLTUwJyA6ICdib3JkZXItYiBib3JkZXItZ3JheS0xMDAnXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC10aGluIHRyYWNraW5nLXRpZ2h0ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZXNzYWdlLmRhdGEuY3JlYXRpb25EYXRlIHwgZGF0ZTogXCJFRUUsIGQgTU1NTVwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZS5kYXRhLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTMyIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuaW1hdGUtcHVsc2UgdGV4dC1zIHRleHQtZ3JheS02MDBcIj5Mb2FkaW5nLi4uPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xIHJvdW5kZWQtc21cIj5cclxuICAgICAgPGEgW3JvdXRlckxpbmtdPVwiYWxsTm90aWZpY2F0aW9uc0xpbmshLnBhdGhcIiAoY2xpY2spPVwib25DbGlja091dHNpZGUoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaGVhZGVyLW5vdGlmaWNhdGlvbnMtZHJvcGRvd24tdmlldy1hbGwtYnV0dG9uXCI+e3thbGxOb3RpZmljYXRpb25zTGluayEudGV4dH19PC9idXR0b24+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL25vdGlmaWNhdGlvbnMtaW5kaWNhdG9yL25vdGlmaWNhdGlvbnMtaW5kaWNhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9ub3RpZmljYXRpb25zLWluZGljYXRvci9ub3RpZmljYXRpb25zLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFNNUQsTUFBTSxPQUFPLCtCQUErQjtJQVMxQyxZQUE4QyxhQUFpQyxFQUE0QixLQUFXO1FBQXhFLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQUE0QixVQUFLLEdBQUwsS0FBSyxDQUFNO1FBUC9HLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFHakIsZ0JBQVcsR0FBb0IsU0FBUyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFDZ0csQ0FBQztJQUUzSCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBeUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDakYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZFLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDO29CQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQzFCLFVBQVUsQ0FBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUUsQ0FBQztnQkFDekQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFZO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUMsMEVBQTBFO0lBQzFFLGlEQUFpRDtJQUNqRCwrQkFBK0I7SUFDL0IscUNBQXFDO0lBQ3JDLE9BQU87SUFFUCxzRUFBc0U7SUFDdEUsZ0dBQWdHO0lBQ2hHLDJHQUEyRztJQUMzRyxzQ0FBc0M7SUFFeEMsbUNBQW1DO0lBQzVCLGNBQWMsQ0FBQyxNQUFXO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7OEdBaEVVLCtCQUErQixrQkFTdEIsaUJBQWlCLGFBQW9ELFNBQVM7a0dBVHZGLCtCQUErQixtRUNUNUMsKzJIQThFQTs7MkZEckVhLCtCQUErQjtrQkFKM0MsU0FBUzsrQkFDRSw2QkFBNkI7OzBCQVkxQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQTZDLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBOb3RpZmljYXRpb25zLCBOYXZMaW5rIH0gZnJvbSAnLi8uLi8uLi90eXBlcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQUF9MSU5LUywgQVBQX05PVElGSUNBVElPTlMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbm90aWZpY2F0aW9ucy1pbmRpY2F0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLWluZGljYXRvci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNJbmRpY2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBtZW51RXhwYW5kZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgdW5yZWFkQ291bnQgPSAwO1xyXG4gIHB1YmxpYyBpdGVtczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgYWxsTm90aWZpY2F0aW9uc0xpbms/OiBOYXZMaW5rO1xyXG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1N1YiQ6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGluYm94QWN0aW9uOiBhbnkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHVibGljIG5ld0Fycml2YWwgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9OT1RJRklDQVRJT05TKSBwdWJsaWMgbm90aWZpY2F0aW9ucz86IElBcHBOb3RpZmljYXRpb25zLCBASW5qZWN0KEFQUF9MSU5LUykgcHVibGljIGxpbmtzPzogYW55KSB7IH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zU3ViJCkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTdWIkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMubGlua3MgJiYgdGhpcy5saW5rc1snbm90aWZpY2F0aW9ucyddKSB7XHJcbiAgICAgICh0aGlzLmxpbmtzWydub3RpZmljYXRpb25zJ10gYXMgT2JzZXJ2YWJsZTxOYXZMaW5rPikuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbnNMaW5rID0+IHtcclxuICAgICAgICB0aGlzLmFsbE5vdGlmaWNhdGlvbnNMaW5rID0gbm90aWZpY2F0aW9uc0xpbms7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5ub3RpZmljYXRpb25zKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1N1YiQgPSB0aGlzLm5vdGlmaWNhdGlvbnM/Lm1lc3NhZ2VzLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQuaXRlbXMpe1xyXG4gICAgICAgICAgdGhpcy5uZXdBcnJpdmFsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudW5yZWFkQ291bnQgPSByZXN1bHQuY291bnQ7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gcmVzdWx0Lml0ZW1zO1xyXG4gICAgICAgICAgc2V0VGltZW91dCggKCkgPT4geyB0aGlzLm5ld0Fycml2YWwgPSBmYWxzZTsgfSwgMTAwMCApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9JbmJveEFjdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnM/LmluYm94QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5pbmJveEFjdGlvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZW51RXhwYW5kZWQgPSAhdGhpcy5tZW51RXhwYW5kZWQ7XHJcbiAgICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51bnJlYWRDb3VudCA9IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlSXRlbShpbmRleDpudW1iZXIpe1xyXG4gICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgfVxyXG5cclxuICAgIC8vIHRoaXMubm90aWZpY2F0aW9uc1N1YiQgPSB0aGlzLmxpbmtzLm5vdGlmaWNhdGlvbnM/LnBpcGUobWFwKHJlc3VsdCA9PiB7XHJcbiAgICAvLyAgIHRoaXMuYWxsSXRlbXNMaW5rID0gcmVzdWx0LmFsbE5vdGlmaWNhdGlvbnM7XHJcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSByZXN1bHQuaXRlbXM7XHJcbiAgICAvLyAgIHRoaXMudW5yZWFkQ291bnQgPSByZXN1bHQuY291bnQ7XHJcbiAgICAvLyB9KSk7XHJcblxyXG4gICAgLy8gW3RoaXMubm90aWZpY2F0aW9uc0xpbmtzUGF0aF0gYXMgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25OYXZMaW5rW10+O1xyXG4gICAgLy8gdGhpcy5hbGxOb3RpZmljYXRpb25zTGluayA9IHRoaXMubGlua3NbdGhpcy5hbGxOb3RpZmljYXRpb25zTGlua1BhdGhdIGFzIE9ic2VydmFibGU8TmF2TGluaz47XHJcbiAgICAvLyB0aGlzLnVucmVhZE5vdGlmaWNhdGlvbnNDb3VudE9icyA9IHRoaXMubGlua3NbdGhpcy5ub3RpZmljYXRpb25zQ291bnRlckxpbmtzUGF0aF0gYXMgT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgLy8gdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25zQ291bnQoKTtcclxuXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnR5cGVkZWZcclxuICBwdWJsaWMgb25DbGlja091dHNpZGUoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubWVudUV4cGFuZGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIlxyXG4oY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIj5cclxuICA8IS0tIE5vdGlmaWNhdGlvbnMgQnV0dG9uIC0tPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZG9JbmJveEFjdGlvbigpXCJcclxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+VmlldyBub3RpZmljYXRpb25zPC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJhdmF0YXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXZhdGFyLXRleHRcIj5cclxuICAgICAgICA8aSBjbGFzcz1cIm1zLUljb24gaG92ZXI6dGV4dC1ibHVlLTQwMFwiXHJcbiAgICAgICAgICBbY2xhc3MubXMtSWNvbi0tTWVzc2FnZUZpbGxdPVwidW5yZWFkQ291bnQgPiAwXCJcclxuICAgICAgICAgIFtjbGFzcy50ZXh0LXNreS00MDBdPVwidW5yZWFkQ291bnQgPiAwXCJcclxuICAgICAgICAgIFtjbGFzcy5hbmltYXRlLW5vdGlmaWNhdGlvbl09XCJuZXdBcnJpdmFsXCJcclxuICAgICAgICAgIFtjbGFzcy5tcy1JY29uLS1NZXNzYWdlXT1cInVucmVhZENvdW50ID09PSAwXCI+XHJcbiAgICAgICAgPC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKm5nSWY9XCJ1bnJlYWRDb3VudCA+IDBcIlxyXG4gICAgICAgIFtjbGFzcy5hbmltYXRlLXB1bHNlXT1cIm5ld0Fycml2YWxcIlxyXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgLW10LTEgbWwtMSB0ZXh0LXhzIGxlYWRpbmctbm9uZSB0ZXh0LWdyYXktMTAwIG9yZGluYWxcIj5cclxuICAgICAgICB7eyB1bnJlYWRDb3VudCB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDwhLS0gTm90aWZpY2F0aW9ucyBkcm9wZG93biAtLT5cclxuICA8ZGl2IHRhYmluZGV4PVwiMVwiICpuZ0lmPVwibWVudUV4cGFuZGVkXCIgY2xhc3M9XCJoZWFkZXItbm90aWZpY2F0aW9ucy1kcm9wZG93bi13aXRoLXVzZXJuYW1lXCIgcm9sZT1cIm1lbnVcIiBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIiBhcmlhLWxhYmVsbGVkYnk9XCJtZXNzYWdlcy1tZW51XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF4LWgtNjQgb3ZlcmZsb3cteS1hdXRvIG5vdGlmaWNhdGlvbi1tZXNzYWdlcyBtaW4taFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1zOyBlbHNlIG1lc3NhZ2VzRHJvcERvd25cIiBjbGFzcz1cInB5LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1uYXYtbGluayBob3ZlcjpiZy10cmFuc3BhcmVudFwiPs6UzrXOvSDOrc+HzrXPhM61IM69zq3Otc+CIM61zrnOtM6/z4DOv865zq7Pg861zrnPgjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNtZXNzYWdlc0Ryb3BEb3duPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cInByLTEuNVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zOyBlbHNlIGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zLmxlbmd0aCA8PSAwXCIgY2xhc3M9XCJweS01XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbmF2LWxpbmsgaG92ZXI6YmctdHJhbnNwYXJlbnRcIj7OlM61zr0gzq3Ph861z4TOtSDOvc6tzrXPgiDOtc65zrTOv8+Azr/Ouc6uz4POtc65z4I8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCIgW25nQ2xhc3NdPVwieyAnYm9yZGVyLWwtMiBib3JkZXItYmx1ZS01MDAgYmctYmx1ZS01MCBob3ZlcjpiZy1ibHVlLTUwJzogIW1lc3NhZ2UuZGF0YS5pc1JlYWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibWVzc2FnZS5wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm90aWZpY2F0aW9ucy1uYXYtbGluayBncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIiFtZXNzYWdlLmRhdGEuaXNSZWFkID8gJyBob3ZlcjpiZy1ibHVlLTUwJyA6ICdib3JkZXItYiBib3JkZXItZ3JheS0xMDAnXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC10aGluIHRyYWNraW5nLXRpZ2h0ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZXNzYWdlLmRhdGEuY3JlYXRpb25EYXRlIHwgZGF0ZTogXCJFRUUsIGQgTU1NTVwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZS5kYXRhLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTMyIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuaW1hdGUtcHVsc2UgdGV4dC1zIHRleHQtZ3JheS02MDBcIj5Mb2FkaW5nLi4uPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xIHJvdW5kZWQtbGdcIj5cclxuICAgICAgPGEgW3JvdXRlckxpbmtdPVwiYWxsTm90aWZpY2F0aW9uc0xpbmshLnBhdGhcIiAoY2xpY2spPVwib25DbGlja091dHNpZGUoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaGVhZGVyLW5vdGlmaWNhdGlvbnMtZHJvcGRvd24tdmlldy1hbGwtYnV0dG9uXCI+e3thbGxOb3RpZmljYXRpb25zTGluayEudGV4dH19PC9idXR0b24+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|