@testgorilla/tgo-ui 2.6.0 → 2.6.1

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.
@@ -24,6 +24,7 @@ export interface TableColumn {
24
24
  sortHeader?: string;
25
25
  hidden?: boolean;
26
26
  order?: number;
27
+ fontSize?: '12px' | '14px';
27
28
  }
28
29
  export interface Pagination {
29
30
  itemsPerPageOptions: number[];
@@ -98,11 +98,11 @@ export class TableComponent {
98
98
  this.sortChange.emit(sortState);
99
99
  }
100
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme" }, outputs: { paginatorChange: "paginatorChange", sortChange: "sortChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container\" [ngClass]=\"{ 'without-title': !tableConfig?.title }\" [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">{{ tableConfig.title | sentencecase }}</div>\n <div class=\"table-wrapper\">\n <table\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container *ngFor=\"let column of tableConfig.columns; index as i, last as isLast, first as isFirst; trackBy: trackColumnKey\">\n <ng-container *ngIf=\"isFirst && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isFirst && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n <ui-paginator\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination.itemsPerPage\"\n [length]=\"tableConfig.pagination.totalItems\"\n [pageSizeOptions]=\"tableConfig.pagination.itemsPerPageOptions\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table .mdc-data-table__cell,.table-container .table-wrapper table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table th{font-size:12px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table td{font-size:14px;line-height:20px}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.table-container.without-title table{border:unset!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}ui-paginator{width:100%;display:flex;border-top:1px solid #E0E0E0;justify-content:flex-end}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "applicationTheme"] }, { kind: "component", type: i5.PaginatorComponent, selector: "ui-paginator", inputs: ["pageSizeOptions", "length", "pageSize", "disabled", "applicationTheme"], outputs: ["paginatorChange"] }, { kind: "directive", type: i6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i7.EllipseTextDirective, selector: "[uiEllipseText]", outputs: ["onChangeTextState"] }, { kind: "pipe", type: i8.SentenceCasePipe, name: "sentencecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme" }, outputs: { paginatorChange: "paginatorChange", sortChange: "sortChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container\" [ngClass]=\"{ 'without-title': !tableConfig?.title }\" [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">{{ tableConfig.title | sentencecase }}</div>\n <div class=\"table-wrapper\">\n <table\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container *ngFor=\"let column of tableConfig.columns; index as i, last as isLast, first as isFirst; trackBy: trackColumnKey\">\n <ng-container *ngIf=\"isFirst && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isFirst && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n <ui-paginator\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination.itemsPerPage\"\n [length]=\"tableConfig.pagination.totalItems\"\n [pageSizeOptions]=\"tableConfig.pagination.itemsPerPageOptions\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table .mdc-data-table__cell,.table-container .table-wrapper table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table td{font-size:14px;line-height:20px}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:700}.table-container.without-title table{border:unset!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}ui-paginator{width:100%;display:flex;border-top:1px solid #E0E0E0;justify-content:flex-end}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "applicationTheme"] }, { kind: "component", type: i5.PaginatorComponent, selector: "ui-paginator", inputs: ["pageSizeOptions", "length", "pageSize", "disabled", "applicationTheme"], outputs: ["paginatorChange"] }, { kind: "directive", type: i6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i7.EllipseTextDirective, selector: "[uiEllipseText]", outputs: ["onChangeTextState"] }, { kind: "pipe", type: i8.SentenceCasePipe, name: "sentencecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
102
102
  }
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'ui-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"table-container\" [ngClass]=\"{ 'without-title': !tableConfig?.title }\" [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">{{ tableConfig.title | sentencecase }}</div>\n <div class=\"table-wrapper\">\n <table\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container *ngFor=\"let column of tableConfig.columns; index as i, last as isLast, first as isFirst; trackBy: trackColumnKey\">\n <ng-container *ngIf=\"isFirst && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isFirst && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n <ui-paginator\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination.itemsPerPage\"\n [length]=\"tableConfig.pagination.totalItems\"\n [pageSizeOptions]=\"tableConfig.pagination.itemsPerPageOptions\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table .mdc-data-table__cell,.table-container .table-wrapper table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table th{font-size:12px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table td{font-size:14px;line-height:20px}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.table-container.without-title table{border:unset!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}ui-paginator{width:100%;display:flex;border-top:1px solid #E0E0E0;justify-content:flex-end}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"] }]
105
+ args: [{ selector: 'ui-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"table-container\" [ngClass]=\"{ 'without-title': !tableConfig?.title }\" [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">{{ tableConfig.title | sentencecase }}</div>\n <div class=\"table-wrapper\">\n <table\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n >\n\n <ng-container *ngFor=\"let column of tableConfig.columns; index as i, last as isLast, first as isFirst; trackBy: trackColumnKey\">\n <ng-container *ngIf=\"isFirst && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isFirst && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"true\">\n <th mat-header-cell\n *matHeaderCellDef\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element[column.key], element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" stickyEnd>\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isFirst && column.isSticky) && !(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.key\" [sticky]=\"!!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"columnsTooltipState[i].showTooltip ? column.title : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}</span>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = index\"\n [style.width]=\"column.widthPerc + '%'\"\n [style.min-width]=\"column.minWidthPx + 'px'\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element[column.key], element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\" [style.font-size]=\"column.fontSize ?? '14px'\">{{ element[column.key] }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n <ui-paginator\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination.itemsPerPage\"\n [length]=\"tableConfig.pagination.totalItems\"\n [pageSizeOptions]=\"tableConfig.pagination.itemsPerPageOptions\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table .mdc-data-table__cell,.table-container .table-wrapper table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table td{font-size:14px;line-height:20px}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:700}.table-container.without-title table{border:unset!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}ui-paginator{width:100%;display:flex;border-top:1px solid #E0E0E0;justify-content:flex-end}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"] }]
106
106
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
107
107
  type: Optional
108
108
  }, {
@@ -122,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
122
122
  }], sortChange: [{
123
123
  type: Output
124
124
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBWXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7Ozs7T0FLRztJQUNILElBQStCLE1BQU0sQ0FBQyxNQUFtQjtRQUN2RCxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBRXRFLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBbUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLEtBQUs7WUFDTCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLO1NBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQWEsSUFBSSxDQUFDLFNBQW9CO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFpQ0QsWUFDNkUsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBaEM5Rzs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXpCOzs7OztXQUtHO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDaEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJdEMsd0JBQW1CLEdBQW9CLEVBQUUsQ0FBQztRQUUxQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDaEMsd0JBQW1CLEdBQUc7WUFDOUIsVUFBVSxFQUFFLFNBQVM7WUFDckIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDO1FBdUJNLDRCQUF1QixHQUFlO1lBQzVDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsWUFBWSxFQUFFLEVBQUU7WUFDaEIsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFtQkYsbUJBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFtQixFQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBMUMxRSxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDakQ7UUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFTUyxpQkFBaUIsQ0FBQyxLQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsa0JBQWtCLENBQUMsV0FBbUIsRUFBRSxXQUFvQjtRQUNwRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO2dCQUNoQyxNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzthQUNsQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFlBQVksQ0FBQyxTQUFlO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7K0dBeEdVLGNBQWMsa0JBOERILG9DQUFvQzttR0E5RC9DLGNBQWMsc1BDN0IzQixpMmNBcVJBOzs0RkR4UGEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07OzBCQWdFNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7NENBdkQzQixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFrQlosSUFBSTtzQkFBaEIsS0FBSztnQkFZRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbHVtbkVsbGlwc2UsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnQsXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZUNvbmZpZyxcbiAgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbixcbiAgVGFibGVEYXRhLFxufSBmcm9tICcuL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IHNvcnRCeU9yZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUYWJsZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZUNvbmZpZ31cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgY29uZmlnKGNvbmZpZzogVGFibGVDb25maWcpIHtcbiAgICBjb25maWcucGFnaW5hdGlvbiA9IGNvbmZpZy5wYWdpbmF0aW9uID8/IHRoaXMuZGVmYXVsdFBhZ2luYXRpb25Db25maWc7XG5cbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnIGFzIFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb247XG5cbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleCxcbiAgICAgIHNob3dUb29sdGlwOiBjb2x1bW4uc2hvd1Rvb2x0aXAgPz8gZmFsc2UsXG4gICAgfSkpO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHNvcnRCeU9yZGVyKGNvbmZpZy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pKS5tYXAoY29sdW1uID0+IGNvbHVtbi5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciBwcm92aWRpbmcgdGhlIHRhYmxlIGRhdGEuXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZURhdGF9XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGRhdGEodGFibGVEYXRhOiBUYWJsZURhdGEpIHtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YTtcbiAgICB0aGlzLnNvdXJjZURhdGEgPSB0YWJsZURhdGE7XG4gIH1cblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBpbiBhIGxvYWRpbmcgc3RhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBwcm90ZWN0ZWQgdGFibGVEYXRhOiBUYWJsZURhdGE7XG4gIHByb3RlY3RlZCBzb3VyY2VEYXRhOiBUYWJsZURhdGE7XG4gIHByb3RlY3RlZCBjb2x1bW5zVG9vbHRpcFN0YXRlOiBDb2x1bW5FbGxpcHNlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uO1xuICBwcm90ZWN0ZWQgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNrZWxldG9uU3R5bGVDb25maWcgPSB7XG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxuICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcbiAgICAgIHRoaXMuc2tlbGV0b25TdHlsZUNvbmZpZy5iYWNrZ3JvdW5kID0gJyNGNEY0RjQnO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgndGhlbWUnLCB0aGlzLmFwcGxpY2F0aW9uVGhlbWUpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0YWJsZUNvbmZpZyddICYmIGNoYW5nZXNbJ3RhYmxlQ29uZmlnJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm9uU29ydENoYW5nZShjaGFuZ2VzWyd0YWJsZUNvbmZpZyddLmN1cnJlbnRWYWx1ZS5zb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uID0ge1xuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyNSwgNTBdLFxuICAgIHRvdGFsSXRlbXM6IDIwLFxuICB9O1xuXG4gIHByb3RlY3RlZCBvblBhZ2luYXRvckNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3JDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DaGFuZ2VDb2x1bW5TaXplKGNvbHVtbkluZGV4OiBudW1iZXIsIHNob3dUb29sdGlwOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlID0gdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlLm1hcChjb2x1bW4gPT4ge1xuICAgICAgaWYgKGNvbHVtbi5pbmRleCA9PT0gY29sdW1uSW5kZXgpIHtcbiAgICAgICAgY29sdW1uLnNob3dUb29sdGlwID0gc2hvd1Rvb2x0aXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU29ydENoYW5nZShzb3J0U3RhdGU6IFNvcnQpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0U3RhdGUpO1xuICB9XG5cbiAgdHJhY2tDb2x1bW5LZXkgPSAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyA9PiBjb2x1bW4ua2V5O1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ3dpdGhvdXQtdGl0bGUnOiAhdGFibGVDb25maWc/LnRpdGxlIH1cIiBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+XG4gIDxkaXYgKm5nSWY9XCJ0YWJsZUNvbmZpZz8udGl0bGVcIiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPnt7IHRhYmxlQ29uZmlnLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgPHRhYmxlXG4gICAgICBtYXQtdGFibGVcbiAgICAgIFtkYXRhU291cmNlXT1cInRhYmxlRGF0YVwiXG4gICAgICBtYXRTb3J0XG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJ0YWJsZUNvbmZpZz8uc29ydD8uYWN0aXZlID8/ICcnXCJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgID5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnM7IGluZGV4IGFzIGksIGxhc3QgYXMgaXNMYXN0LCBmaXJzdCBhcyBpc0ZpcnN0OyB0cmFja0J5OiB0cmFja0NvbHVtbktleVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaXJzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW5zVG9vbHRpcFN0YXRlW2ldLnNob3dUb29sdGlwID8gY29sdW1uLnRpdGxlIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnRbY29sdW1uLmtleV0sIGVsZW1lbnQsIHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCI+e3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlyc3QgJiYgY29sdW1uLmlzU3RpY2t5ICYmICFjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBbc3RpY2t5XT1cInRydWVcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW5zVG9vbHRpcFN0YXRlW2ldLnNob3dUb29sdGlwID8gY29sdW1uLnRpdGxlIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnRbY29sdW1uLmtleV0sIGVsZW1lbnQsIHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCI+e3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRIZWFkZXIgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uc1Rvb2x0aXBTdGF0ZVtpXS5zaG93VG9vbHRpcCA/IGNvbHVtbi50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgIDxzcGFuIHVpRWxsaXBzZVRleHQgKG9uQ2hhbmdlVGV4dFN0YXRlKT1cIm9uQ2hhbmdlQ29sdW1uU2l6ZShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4tdGl0bGVcIj57eyBjb2x1bW4udGl0bGUgfCBzZW50ZW5jZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFBlcmMgKyAnJSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLm1pbldpZHRoUHggKyAncHgnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBlbGVtZW50W2NvbHVtbi5rZXldLCBlbGVtZW50LCByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiPnt7IGVsZW1lbnRbY29sdW1uLmtleV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5ICYmICFjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBzdGlja3lFbmQ+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uc1Rvb2x0aXBTdGF0ZVtpXS5zaG93VG9vbHRpcCA/IGNvbHVtbi50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgIDxzcGFuIHVpRWxsaXBzZVRleHQgKG9uQ2hhbmdlVGV4dFN0YXRlKT1cIm9uQ2hhbmdlQ29sdW1uU2l6ZShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4tdGl0bGVcIj57eyBjb2x1bW4udGl0bGUgfCBzZW50ZW5jZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFBlcmMgKyAnJSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLm1pbldpZHRoUHggKyAncHgnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudFtjb2x1bW4ua2V5XSwgZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCI+e3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiIShpc0ZpcnN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiBjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBbc3RpY2t5XT1cIiEhY29sdW1uLmlzU3RpY2t5XCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW5zVG9vbHRpcFN0YXRlW2ldLnNob3dUb29sdGlwID8gY29sdW1uLnRpdGxlIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxuICAgICAgICAgICAgICAgICA8c3BhbiB1aUVsbGlwc2VUZXh0IChvbkNoYW5nZVRleHRTdGF0ZSk9XCJvbkNoYW5nZUNvbHVtblNpemUoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLXRpdGxlXCI+e3sgY29sdW1uLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIiBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnRbY29sdW1uLmtleV0sIGVsZW1lbnQsIHJvd0luZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiPnt7IGVsZW1lbnRbY29sdW1uLmtleV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIiEoaXNGaXJzdCAmJiBjb2x1bW4uaXNTdGlja3kpICYmICEoaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgIWNvbHVtbi5hbGxvd1NvcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmtleVwiIFtzdGlja3ldPVwiISFjb2x1bW4uaXNTdGlja3lcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uc1Rvb2x0aXBTdGF0ZVtpXS5zaG93VG9vbHRpcCA/IGNvbHVtbi50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50W2NvbHVtbi5rZXldLCBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIj57eyBlbGVtZW50W2NvbHVtbi5rZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuXG4gIDx1aS1wYWdpbmF0b3JcbiAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnID8gJ2xpZ2h0JyA6ICdjbGFzc2ljJ1wiXG4gICAgW3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24uaXRlbXNQZXJQYWdlXCJcbiAgICBbbGVuZ3RoXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24udG90YWxJdGVtc1wiXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uLml0ZW1zUGVyUGFnZU9wdGlvbnNcIlxuICAgIChwYWdpbmF0b3JDaGFuZ2UpPVwib25QYWdpbmF0b3JDaGFuZ2UoJGV2ZW50KVwiXG4gID48L3VpLXBhZ2luYXRvcj5cbjwvZGl2PlxuXG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBWXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7Ozs7T0FLRztJQUNILElBQStCLE1BQU0sQ0FBQyxNQUFtQjtRQUN2RCxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBRXRFLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBbUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLEtBQUs7WUFDTCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLO1NBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQWEsSUFBSSxDQUFDLFNBQW9CO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFpQ0QsWUFDNkUsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBaEM5Rzs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXpCOzs7OztXQUtHO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDaEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJdEMsd0JBQW1CLEdBQW9CLEVBQUUsQ0FBQztRQUUxQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDaEMsd0JBQW1CLEdBQUc7WUFDOUIsVUFBVSxFQUFFLFNBQVM7WUFDckIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDO1FBdUJNLDRCQUF1QixHQUFlO1lBQzVDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsWUFBWSxFQUFFLEVBQUU7WUFDaEIsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFtQkYsbUJBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFtQixFQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBMUMxRSxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDakQ7UUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFTUyxpQkFBaUIsQ0FBQyxLQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsa0JBQWtCLENBQUMsV0FBbUIsRUFBRSxXQUFvQjtRQUNwRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO2dCQUNoQyxNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzthQUNsQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFlBQVksQ0FBQyxTQUFlO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7K0dBeEdVLGNBQWMsa0JBOERILG9DQUFvQzttR0E5RC9DLGNBQWMsc1BDN0IzQixpb2RBcVJBOzs0RkR4UGEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07OzBCQWdFNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7NENBdkQzQixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFrQlosSUFBSTtzQkFBaEIsS0FBSztnQkFZRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbHVtbkVsbGlwc2UsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnQsXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZUNvbmZpZyxcbiAgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbixcbiAgVGFibGVEYXRhLFxufSBmcm9tICcuL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IHNvcnRCeU9yZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUYWJsZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZUNvbmZpZ31cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgY29uZmlnKGNvbmZpZzogVGFibGVDb25maWcpIHtcbiAgICBjb25maWcucGFnaW5hdGlvbiA9IGNvbmZpZy5wYWdpbmF0aW9uID8/IHRoaXMuZGVmYXVsdFBhZ2luYXRpb25Db25maWc7XG5cbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnIGFzIFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb247XG5cbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleCxcbiAgICAgIHNob3dUb29sdGlwOiBjb2x1bW4uc2hvd1Rvb2x0aXAgPz8gZmFsc2UsXG4gICAgfSkpO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHNvcnRCeU9yZGVyKGNvbmZpZy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pKS5tYXAoY29sdW1uID0+IGNvbHVtbi5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciBwcm92aWRpbmcgdGhlIHRhYmxlIGRhdGEuXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZURhdGF9XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGRhdGEodGFibGVEYXRhOiBUYWJsZURhdGEpIHtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YTtcbiAgICB0aGlzLnNvdXJjZURhdGEgPSB0YWJsZURhdGE7XG4gIH1cblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBpbiBhIGxvYWRpbmcgc3RhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBwcm90ZWN0ZWQgdGFibGVEYXRhOiBUYWJsZURhdGE7XG4gIHByb3RlY3RlZCBzb3VyY2VEYXRhOiBUYWJsZURhdGE7XG4gIHByb3RlY3RlZCBjb2x1bW5zVG9vbHRpcFN0YXRlOiBDb2x1bW5FbGxpcHNlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uO1xuICBwcm90ZWN0ZWQgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNrZWxldG9uU3R5bGVDb25maWcgPSB7XG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxuICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcbiAgICAgIHRoaXMuc2tlbGV0b25TdHlsZUNvbmZpZy5iYWNrZ3JvdW5kID0gJyNGNEY0RjQnO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgndGhlbWUnLCB0aGlzLmFwcGxpY2F0aW9uVGhlbWUpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0YWJsZUNvbmZpZyddICYmIGNoYW5nZXNbJ3RhYmxlQ29uZmlnJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm9uU29ydENoYW5nZShjaGFuZ2VzWyd0YWJsZUNvbmZpZyddLmN1cnJlbnRWYWx1ZS5zb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uID0ge1xuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyNSwgNTBdLFxuICAgIHRvdGFsSXRlbXM6IDIwLFxuICB9O1xuXG4gIHByb3RlY3RlZCBvblBhZ2luYXRvckNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3JDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DaGFuZ2VDb2x1bW5TaXplKGNvbHVtbkluZGV4OiBudW1iZXIsIHNob3dUb29sdGlwOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlID0gdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlLm1hcChjb2x1bW4gPT4ge1xuICAgICAgaWYgKGNvbHVtbi5pbmRleCA9PT0gY29sdW1uSW5kZXgpIHtcbiAgICAgICAgY29sdW1uLnNob3dUb29sdGlwID0gc2hvd1Rvb2x0aXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU29ydENoYW5nZShzb3J0U3RhdGU6IFNvcnQpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0U3RhdGUpO1xuICB9XG5cbiAgdHJhY2tDb2x1bW5LZXkgPSAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyA9PiBjb2x1bW4ua2V5O1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ3dpdGhvdXQtdGl0bGUnOiAhdGFibGVDb25maWc/LnRpdGxlIH1cIiBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+XG4gIDxkaXYgKm5nSWY9XCJ0YWJsZUNvbmZpZz8udGl0bGVcIiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPnt7IHRhYmxlQ29uZmlnLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgPHRhYmxlXG4gICAgICBtYXQtdGFibGVcbiAgICAgIFtkYXRhU291cmNlXT1cInRhYmxlRGF0YVwiXG4gICAgICBtYXRTb3J0XG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJ0YWJsZUNvbmZpZz8uc29ydD8uYWN0aXZlID8/ICcnXCJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgID5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnM7IGluZGV4IGFzIGksIGxhc3QgYXMgaXNMYXN0LCBmaXJzdCBhcyBpc0ZpcnN0OyB0cmFja0J5OiB0cmFja0NvbHVtbktleVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaXJzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW5zVG9vbHRpcFN0YXRlW2ldLnNob3dUb29sdGlwID8gY29sdW1uLnRpdGxlIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnRbY29sdW1uLmtleV0sIGVsZW1lbnQsIHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlyc3QgJiYgY29sdW1uLmlzU3RpY2t5ICYmICFjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBbc3RpY2t5XT1cInRydWVcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW5zVG9vbHRpcFN0YXRlW2ldLnNob3dUb29sdGlwID8gY29sdW1uLnRpdGxlIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnRbY29sdW1uLmtleV0sIGVsZW1lbnQsIHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRIZWFkZXIgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uc1Rvb2x0aXBTdGF0ZVtpXS5zaG93VG9vbHRpcCA/IGNvbHVtbi50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgIDxzcGFuIHVpRWxsaXBzZVRleHQgKG9uQ2hhbmdlVGV4dFN0YXRlKT1cIm9uQ2hhbmdlQ29sdW1uU2l6ZShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4tdGl0bGVcIj57eyBjb2x1bW4udGl0bGUgfCBzZW50ZW5jZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFBlcmMgKyAnJSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLm1pbldpZHRoUHggKyAncHgnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBlbGVtZW50W2NvbHVtbi5rZXldLCBlbGVtZW50LCByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnRbY29sdW1uLmtleV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5ICYmICFjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBzdGlja3lFbmQ+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uc1Rvb2x0aXBTdGF0ZVtpXS5zaG93VG9vbHRpcCA/IGNvbHVtbi50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgIDxzcGFuIHVpRWxsaXBzZVRleHQgKG9uQ2hhbmdlVGV4dFN0YXRlKT1cIm9uQ2hhbmdlQ29sdW1uU2l6ZShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4tdGl0bGVcIj57eyBjb2x1bW4udGl0bGUgfCBzZW50ZW5jZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFBlcmMgKyAnJSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLm1pbldpZHRoUHggKyAncHgnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudFtjb2x1bW4ua2V5XSwgZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiIShpc0ZpcnN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiBjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBbc3RpY2t5XT1cIiEhY29sdW1uLmlzU3RpY2t5XCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW5zVG9vbHRpcFN0YXRlW2ldLnNob3dUb29sdGlwID8gY29sdW1uLnRpdGxlIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxuICAgICAgICAgICAgICAgICA8c3BhbiB1aUVsbGlwc2VUZXh0IChvbkNoYW5nZVRleHRTdGF0ZSk9XCJvbkNoYW5nZUNvbHVtblNpemUoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLXRpdGxlXCI+e3sgY29sdW1uLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhQZXJjICsgJyUnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFB4ICsgJ3B4J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIiBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnRbY29sdW1uLmtleV0sIGVsZW1lbnQsIHJvd0luZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnRbY29sdW1uLmtleV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIiEoaXNGaXJzdCAmJiBjb2x1bW4uaXNTdGlja3kpICYmICEoaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgIWNvbHVtbi5hbGxvd1NvcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmtleVwiIFtzdGlja3ldPVwiISFjb2x1bW4uaXNTdGlja3lcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uc1Rvb2x0aXBTdGF0ZVtpXS5zaG93VG9vbHRpcCA/IGNvbHVtbi50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoUGVyYyArICclJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhQeCArICdweCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50W2NvbHVtbi5rZXldLCBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIiBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50W2NvbHVtbi5rZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuXG4gIDx1aS1wYWdpbmF0b3JcbiAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnID8gJ2xpZ2h0JyA6ICdjbGFzc2ljJ1wiXG4gICAgW3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24uaXRlbXNQZXJQYWdlXCJcbiAgICBbbGVuZ3RoXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24udG90YWxJdGVtc1wiXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uLml0ZW1zUGVyUGFnZU9wdGlvbnNcIlxuICAgIChwYWdpbmF0b3JDaGFuZ2UpPVwib25QYWdpbmF0b3JDaGFuZ2UoJGV2ZW50KVwiXG4gID48L3VpLXBhZ2luYXRvcj5cbjwvZGl2PlxuXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvdGFibGUvdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb25maWcge1xuICBjb2x1bW5zOiBUYWJsZUNvbHVtbltdO1xuICBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBzb3J0PzogU29ydDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVDb25maWcge1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHdpZHRoUGVyYz86IG51bWJlcjtcbiAgbWluV2lkdGhQeD86IG51bWJlcjtcbiAgYWxsb3dNdWx0aWxpbmU/OiBib29sZWFuO1xuICBib2xkPzogYm9vbGVhbjtcbiAgc2hvd1Rvb2x0aXA/OiBib29sZWFuO1xuICBhbGxvd1NvcnQ/OiBib29sZWFuO1xuICBpc1N0aWNreT86IGJvb2xlYW47XG4gIGhlYWRlckNlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIHJvd0NlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIHNvcnRIZWFkZXI/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIG9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb24ge1xuICBpdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXTtcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHRvdGFsSXRlbXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVEYXRhID0gUmVjb3JkPHN0cmluZywgYW55PltdO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkVsbGlwc2Uge1xuICBpbmRleDogbnVtYmVyO1xuICBzaG93VG9vbHRpcDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0IHtcbiAgYWN0aXZlOiBzdHJpbmc7XG4gIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbn1cblxuZXhwb3J0IHR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnIHwgJyc7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvdGFibGUvdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb25maWcge1xuICBjb2x1bW5zOiBUYWJsZUNvbHVtbltdO1xuICBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBzb3J0PzogU29ydDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVDb25maWcge1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHdpZHRoUGVyYz86IG51bWJlcjtcbiAgbWluV2lkdGhQeD86IG51bWJlcjtcbiAgYWxsb3dNdWx0aWxpbmU/OiBib29sZWFuO1xuICBib2xkPzogYm9vbGVhbjtcbiAgc2hvd1Rvb2x0aXA/OiBib29sZWFuO1xuICBhbGxvd1NvcnQ/OiBib29sZWFuO1xuICBpc1N0aWNreT86IGJvb2xlYW47XG4gIGhlYWRlckNlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIHJvd0NlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIHNvcnRIZWFkZXI/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIG9yZGVyPzogbnVtYmVyO1xuICBmb250U2l6ZT86ICcxMnB4JyB8ICcxNHB4Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uIHtcbiAgaXRlbXNQZXJQYWdlT3B0aW9uczogbnVtYmVyW107XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICB0b3RhbEl0ZW1zOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlRGF0YSA9IFJlY29yZDxzdHJpbmcsIGFueT5bXTtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5FbGxpcHNlIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2hvd1Rvb2x0aXA6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XG4gIGFjdGl2ZTogc3RyaW5nO1xuICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG59XG5cbmV4cG9ydCB0eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJyB8ICcnO1xuIl19