ngx-wapp-components 1.0.13 → 1.0.15

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.
@@ -32,6 +32,14 @@ export class WTreeTableComponent {
32
32
  get totalRecords() {
33
33
  return this._totalRecords;
34
34
  }
35
+ set elements(value) {
36
+ this._elements = value;
37
+ this.initComponent();
38
+ }
39
+ ;
40
+ get elements() {
41
+ return this._elements;
42
+ }
35
43
  ngOnChanges(changes) {
36
44
  if (changes?.['elements'] && changes?.['elements']?.currentValue.length != 0) {
37
45
  this.totalRecords = changes?.['elements']?.currentValue.length;
@@ -110,10 +118,10 @@ export class WTreeTableComponent {
110
118
  }
111
119
  }
112
120
  WTreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTreeTableComponent, deps: [{ token: i1.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
113
- WTreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTreeTableComponent, selector: "w-tree-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTreeTableObject: "wappTreeTableObject" }, outputs: { onActionButtonClick: "onActionButtonClick", onDeleteElementSelect: "onDeleteElementSelect", onCantDeleteElementWarn: "onCantDeleteElementWarn" }, providers: [TreeDragDropService, MessageService, ConfirmationService], viewQueries: [{ propertyName: "treeTable", first: true, predicate: ["treeTable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\n <p-treeTable *ngIf=\"!loading; else loadingTable\"\n #treeTable [value]=\"treeNodeElements\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\n {{ rowData[col.field] }}\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n\n <ng-template #loadingTable>\n <p-treeTable\n #treeTable [value]=\"tableSkeletons\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-skeleton></p-skeleton>\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n </ng-template>\n</div>\n\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:0 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:16px 0!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-treetable .p-treetable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}.image-header{text-align:center!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i10.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i10.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i10.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i10.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }] });
121
+ WTreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTreeTableComponent, selector: "w-tree-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTreeTableObject: "wappTreeTableObject" }, outputs: { onActionButtonClick: "onActionButtonClick", onDeleteElementSelect: "onDeleteElementSelect", onCantDeleteElementWarn: "onCantDeleteElementWarn" }, providers: [TreeDragDropService, MessageService, ConfirmationService], viewQueries: [{ propertyName: "treeTable", first: true, predicate: ["treeTable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\n <p-treeTable *ngIf=\"!loading; else loadingTable\"\n #treeTable [value]=\"treeNodeElements\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\n {{ rowData[col.field] }}\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"wappTreeTableObject.deleteButtonTooltip!\" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n\n <ng-template #loadingTable>\n <p-treeTable\n #treeTable [value]=\"tableSkeletons\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-skeleton></p-skeleton>\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n </ng-template>\n</div>\n\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-treetable .p-treetable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}.image-header{text-align:center!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i10.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i10.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i10.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i10.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }] });
114
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTreeTableComponent, decorators: [{
115
123
  type: Component,
116
- args: [{ selector: 'w-tree-table', providers: [TreeDragDropService, MessageService, ConfirmationService], template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\n <p-treeTable *ngIf=\"!loading; else loadingTable\"\n #treeTable [value]=\"treeNodeElements\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\n {{ rowData[col.field] }}\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n\n <ng-template #loadingTable>\n <p-treeTable\n #treeTable [value]=\"tableSkeletons\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-skeleton></p-skeleton>\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n </ng-template>\n</div>\n\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:0 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:16px 0!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-treetable .p-treetable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}.image-header{text-align:center!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"] }]
124
+ args: [{ selector: 'w-tree-table', providers: [TreeDragDropService, MessageService, ConfirmationService], template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\n <p-treeTable *ngIf=\"!loading; else loadingTable\"\n #treeTable [value]=\"treeNodeElements\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\n {{ rowData[col.field] }}\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"wappTreeTableObject.deleteButtonTooltip!\" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n\n <ng-template #loadingTable>\n <p-treeTable\n #treeTable [value]=\"tableSkeletons\" \n class=\"wapp-table-styles\"\n [columns]=\"columns\" \n [scrollable]=\"true\"\n [tableStyle]=\"{'min-width':'50rem'}\"\n [loading]=\"loadingElements\"\n [showLoader]=\"false\"\n [paginator]=\"true\"\n [rows]=\"rowsPerPage\"\n [rowHover]=\"true\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\n scrollHeight=\"flex\"\n styleClass=\"p-treetable-striped\">\n\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\n <span class=\"flex align-items-center table-paginator p-0\">\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\n <p-inputNumber \n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\n decrementButtonClass=\"p-button-outlined\" \n incrementButtonClass=\"p-button-outlined\" \n incrementButtonIcon=\"pi pi-plus\" \n decrementButtonIcon=\"pi pi-minus\" \n mode=\"decimal\"\n (ngModelChange)=\"updateShowingTableRows()\">\n </p-inputNumber>\n <span class=\"p-input-icon-left ml-auto\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\n </span>\n </span>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" \n class=\"{{col.field}}-field'\"\n [ttSortableColumn]=\"col.field\">\n <div class=\"flex\">\n <div class=\"flex\">\n {{ col.header }}\n </div>\n <div class=\"flex\">\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\n </div>\n </div>\n </th>\n <th class=\"buttons-field\">\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n <tr>\n <td *ngFor=\"let col of columns; let i = index\" >\n <p-skeleton></p-skeleton>\n </td>\n <td class=\"buttons-field\">\n <div class=\"flex justify-content-end\">\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\n <p-button [icon]=\"'pi '+ button.icon\" (click)=\"actionButtonClicked(button.id, rowData)\" [pTooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [styleClass]=\"button.styleClass!\"></p-button>\n </span>\n <p-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi pi-trash\" (click)=\"confirmDeleteSelected($event, rowData)\" [pTooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\" class=\"px-2\" styleClass=\"p-button-text p-button-danger\"></p-button>\n </div>\n </td>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length\">\n {{wappTreeTableObject.noRecordsLabel}}\n </td>\n </tr>\n </ng-template>\n </p-treeTable>\n </ng-template>\n</div>\n\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:3.1428571429rem;line-height:3.4285714286rem;font-weight:700}.heading2{font-size:2.8571428571rem;line-height:3.1428571429rem;font-weight:700}.heading3{font-size:2.5714285714rem;line-height:2.8571428571rem;font-weight:700}.heading4{font-size:2.2857142857rem;line-height:2.5714285714rem;font-weight:700}.heading5{font-size:2rem;line-height:2.2857142857rem;font-weight:700}.heading6{font-size:1.7142857143rem;line-height:2rem;font-weight:700}.subtitle1{font-size:1.4285714286rem;line-height:1.7142857143rem;font-weight:700}.subtitle2{font-size:1.1428571429rem;line-height:1.4285714286rem;font-weight:700}.body,.input-generic-placeholder-small,.input-generic-small{font-size:1rem;line-height:1.1428571429rem;font-weight:600}.caption{font-size:.8571428571rem;line-height:1.1428571429rem;font-weight:600}.icon-small-size{font-size:8px}.icon-small-x-size{font-size:12px}.icon-medium-size{font-size:16px}.icon-large-size{font-size:24px}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:2px solid #0085c7}.button-large-typography{font-size:20px;line-height:24px;font-weight:700}.button-medium-typography{font-size:16px;line-height:16px;font-weight:700}.button-small-typography{font-size:12px;line-height:16px;font-weight:700}.button-text-typography,.input-generic-label{font-size:14px;line-height:16px;font-weight:700}.input-generic-placeholder,.input-generic{font-size:16px;line-height:24px;font-weight:600}.input-generic-placeholder-small{padding:8px 12px 12px}.input-generic-valid{border-radius:8px;border:2px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:2px solid #B3FFD3!important;box-shadow:0 0 2px 2px #b3ffd3!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:2px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:2px solid #FFECB8!important;box-shadow:0 0 2px 2px #ffecb8!important;padding-left:16px}.input-generic-error{border-radius:8px;border:2px solid #FFBDBD}.tag-generic{font-size:14px;line-height:16px;font-weight:700}.tag-generic-small{font-size:12px;line-height:16px;font-weight:700}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.showing-per-page{color:#bdc1c6;font-weight:600}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .wapp-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#bdc1c6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#e0f5fc;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .wapp-table-styles .p-paginator .p-paginator-current{color:#bdc1c6;padding:0}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#bdc1c6;margin-left:.5rem}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#000}::ng-deep .wapp-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th{color:#bdc1c6;background:#ffffff}::ng-deep .wapp-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .wapp-table-styles .p-treetable .p-paginator-bottom>button{color:#bdc1c6}::ng-deep .wapp-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:600}::ng-deep .wapp-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:2px 0px 2px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .wapp-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:2px}::ng-deep .wapp-table-styles .p-treetable .p-treetable-tbody>tr>td{columns:#2E3134;font-weight:600;text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:8px}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box{border:2px solid #e8eaed;width:16px;height:16px;color:#e8eaed;border-radius:4px;align-self:center}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:bolder}::ng-deep .wapp-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#0085c7!important;background:#0085c7;color:#0085c7!important}::ng-deep .wapp-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .wapp-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:2px solid;background-color:#f1f3f4}::ng-deep .wapp-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .wapp-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .wapp-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#000;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:2px;border-color:#e8eaed;font-size:16px;line-height:5px;font-weight:100;gap:16px}::-webkit-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}::-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-ms-input-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}:-moz-placeholder{font-size:1rem;line-height:1.1428571429rem;font-weight:600;color:#bdc1c6}.wapp-input:hover{border:2px solid #0085c7!important}.wapp-input:focus{box-shadow:0 0 3px 3px #e0f5fc!important;background-color:transparent!important}.pi-search{left:.75rem;color:#bdc1c6!important}.image-header{text-align:center!important}::ng-deep .wapp-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .wapp-table-styles .p-avatar{border:1px solid #e8eaed}\n"] }]
117
125
  }], ctorParameters: function () { return [{ type: i1.ConfirmationService }]; }, propDecorators: { elements: [{
118
126
  type: Input,
119
127
  args: ['elements']
@@ -139,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
139
147
  type: ViewChild,
140
148
  args: ['treeTable']
141
149
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10cmVlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBWSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVWpHLE1BQU0sT0FBTyxtQkFBbUI7SUErQjlCLFlBQ1UsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUE5QmxELHFCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUNsQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxJQUFJLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsbUJBQWMsR0FBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFFL0Qsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFXWixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUM3QixZQUFPLEdBQVksSUFBSSxDQUFDO1FBR1gsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXdC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QzswR0FzQmxELFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFDSyxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBeEIsS0FBSzt1QkFBQyxTQUFTO2dCQUNjLG1CQUFtQjtzQkFBaEQsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBRUcsbUJBQW1CO3NCQUFqRCxNQUFNO3VCQUFDLHFCQUFxQjtnQkFDSSxxQkFBcUI7c0JBQXJELE1BQU07dUJBQUMsdUJBQXVCO2dCQUNJLHVCQUF1QjtzQkFBekQsTUFBTTt1QkFBQyx5QkFBeUI7Z0JBRVQsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlLCBUcmVlRHJhZ0Ryb3BTZXJ2aWNlLCBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcbmltcG9ydCB7IEFjdGlvbkJ1dHRvblJlc3BvbnNlLCBXYXBwVHJlZVRhYmxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy93LXRyZWUtdGFibGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3LXRyZWUtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdy10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdy10cmVlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1RyZWVEcmFnRHJvcFNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBXVHJlZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIHRyZWVOb2RlRWxlbWVudHM6IFRyZWVOb2RlW10gPSBbXTtcbiAgbG9hZGluZ0VsZW1lbnRzOiBib29sZWFuID0gdHJ1ZTtcbiAgY29sbGFwc2VkRWxlbWVudFRyZWU6IGJvb2xlYW4gPSB0cnVlO1xuICBjb2x1bW5zOiBhbnk7XG4gIG9wZW5TaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIGVsZW1lbnRJbmZvITogYW55O1xuICB0YWJsZVNrZWxldG9uczogYW55ID0gW3tuYW1lOiAnJ30sIHtuYW1lOiAnJ30sIHtuYW1lOiAnJ30sIHtuYW1lOiAnJ31dO1xuXG4gIHByaXZhdGUgX3RvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcblxuICBzZXQgdG90YWxSZWNvcmRzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbFJlY29yZHMgPSB2YWx1ZTtcbiAgfSAgXG5cbiAgZ2V0IHRvdGFsUmVjb3JkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xuICB9XG4gIFxuICBASW5wdXQoJ2VsZW1lbnRzJykgZWxlbWVudHM6IGFueTtcbiAgQElucHV0KCdyb3dzUGVyUGFnZScpIHJvd3NQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgQElucHV0KCdsb2FkaW5nJykgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgnd2FwcFRyZWVUYWJsZU9iamVjdCcpIHdhcHBUcmVlVGFibGVPYmplY3QhOiBXYXBwVHJlZVRhYmxlO1xuXG4gIEBPdXRwdXQoJ29uQWN0aW9uQnV0dG9uQ2xpY2snKSBvbkFjdGlvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b25SZXNwb25zZT4oKTtcbiAgQE91dHB1dCgnb25EZWxldGVFbGVtZW50U2VsZWN0Jykgb25EZWxldGVFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgnb25DYW50RGVsZXRlRWxlbWVudFdhcm4nKSBvbkNhbnREZWxldGVFbGVtZW50V2FybiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ3RyZWVUYWJsZScpIHRyZWVUYWJsZSE6IFRyZWVUYWJsZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UpIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZihjaGFuZ2VzPy5bJ2VsZW1lbnRzJ10gJiYgY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoICE9IDApIHtcbiAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuICB9XG5cbiAgaW5pdENvbXBvbmVudCgpIHtcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1ucztcbiAgICB0aGlzLnRyZWVOb2RlRWxlbWVudHMgPSB0aGlzLmVsZW1lbnRUb1RyZWVOb2RlTWFwKHRoaXMuZWxlbWVudHMpO1xuICB9XG5cbiAgZWxlbWVudFRvVHJlZU5vZGVNYXAoZWxlbWVudExpc3Q6IGFueVtdLCBwYXJlbnQ/OiBUcmVlTm9kZSk6IFRyZWVOb2RlW10ge1xuICAgIGxldCB0cmVlTm9kZUxpc3Q6IFRyZWVOb2RlW10gPSBbXTtcbiAgICByZXR1cm4gZWxlbWVudExpc3QubWFwKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgbGV0IHRyZWVOb2RlUHJvZHVjdENhdGVnb3J5OiBUcmVlTm9kZSA9IHtcbiAgICAgICAgbGFiZWw6IGVsZW1lbnQubmFtZSxcbiAgICAgICAgZGF0YTogZWxlbWVudCxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIHBhcmVudDogcGFyZW50XG4gICAgICB9XG4gICAgICB0cmVlTm9kZVByb2R1Y3RDYXRlZ29yeS5jaGlsZHJlbiA9IHRoaXMuZWxlbWVudFRvVHJlZU5vZGVNYXAoZWxlbWVudC5pbnZlcnNlUGFyZW50UHJvZHVjdENhdGVnb3J5LCB0cmVlTm9kZVByb2R1Y3RDYXRlZ29yeSlcbiAgICAgIHJldHVybiB0cmVlTm9kZUxpc3RbaW5kZXhdID0gdHJlZU5vZGVQcm9kdWN0Q2F0ZWdvcnk7XG4gICAgfSk7XG4gIH1cblxuICBmaWx0ZXJHbG9iYWwodGFibGU6IFRyZWVUYWJsZSwgZXZlbnQ6IGFueSkge1xuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKVxuICB9XG5cbiAgYWN0aW9uQnV0dG9uQ2xpY2tlZChpZDogbnVtYmVyLCBlbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uQWN0aW9uQnV0dG9uQ2xpY2suZW1pdCh7aWQ6IGlkLCBlbGVtZW50OiBlbGVtZW50fSlcbiAgfVxuXG4gIGNvbmZpcm1EZWxldGVTZWxlY3RlZChldmVudDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcbiAgICAgIG1lc3NhZ2U6IHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb25maXJtU2luZ2xlRGVsZXRlTGFiZWwsXG4gICAgICBpY29uOiBcInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIsXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbmZpcm1EZWxldGVCdG5MYWJlbCxcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICB0aGlzLmRlbGV0ZU5vZGUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVOb2RlKG5vZGU6IGFueSkge1xuICAgIGlmIChub2RlLmludmVyc2VQYXJlbnRQcm9kdWN0Q2F0ZWdvcnkubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DYW50RGVsZXRlRWxlbWVudFdhcm4uZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTaG93aW5nVGFibGVSb3dzKCkge1xuICAgIHRoaXMudHJlZU5vZGVFbGVtZW50cyA9IFsuLi50aGlzLnRyZWVOb2RlRWxlbWVudHNdO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmRSZWN1cnNpdmUobm9kZTogVHJlZU5vZGUsIGlzRXhwYW5kOiBib29sZWFuKSB7XG4gICAgbm9kZS5leHBhbmRlZCA9IGlzRXhwYW5kO1xuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGROb2RlID0+IHtcbiAgICAgICAgdGhpcy5leHBhbmRSZWN1cnNpdmUoY2hpbGROb2RlLCBpc0V4cGFuZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRUcmVlTm9kZShsaXN0Tm9kZTogVHJlZU5vZGVbXSwgbm9kZUlkOiBudW1iZXIpIHtcbiAgICBmb3IgKGxldCBub2RlIG9mIGxpc3ROb2RlKSB7XG4gICAgICBpZiAobm9kZS5kYXRhLnByb2R1Y3RDYXRlZ29yeUlkID09IG5vZGVJZCkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgbGV0IG5ld05vZGVGb3VuZDogYW55ID0gdGhpcy5maW5kVHJlZU5vZGUobm9kZS5jaGlsZHJlbiwgbm9kZUlkKTtcbiAgICAgICAgaWYgKG5ld05vZGVGb3VuZCkge1xuICAgICAgICAgIHJldHVybiBuZXdOb2RlRm91bmQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIndhcHBUcmVlVGFibGVPYmplY3RcIiBbY2xhc3MudGFibGUtY29udGFpbmVyXT1cIndhcHBUcmVlVGFibGVPYmplY3QudGFibGVDb250YWluZXJcIj5cbiAgICA8cC10cmVlVGFibGUgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkaW5nVGFibGVcIlxuICAgICAgICAjdHJlZVRhYmxlIFt2YWx1ZV09XCJ0cmVlTm9kZUVsZW1lbnRzXCIgXG4gICAgICAgIGNsYXNzPVwid2FwcC10YWJsZS1zdHlsZXNcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCIgXG4gICAgICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6JzUwcmVtJ31cIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nRWxlbWVudHNcIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgICAgIFtyb3dzXT1cInJvd3NQZXJQYWdlXCJcbiAgICAgICAgW3Jvd0hvdmVyXT1cInRydWVcIlxuICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXG4gICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSA/IHdhcHBUcmVlVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSArICcgJyArICByb3dzUGVyUGFnZSArICcgZGUgJyArIHRvdGFsUmVjb3JkcyEgOiAnU2hvd2luZyAnICsgcm93c1BlclBhZ2UgKyAnIG9mICcgKyB0b3RhbFJlY29yZHMhXCJcbiAgICAgICAgc2Nyb2xsSGVpZ2h0PVwiZmxleFwiXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJwLXRyZWV0YWJsZS1zdHJpcGVkXCI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidHJ1ZVwiIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvd2luZy1wZXItcGFnZVwiPiB7e3dhcHBUcmVlVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZX19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGwtMiBzaG93aW5nLXBlci1wYWdlXCIgW3NpemVdPVwiMVwiIFsobmdNb2RlbCldPVwicm93c1BlclBhZ2VcIiBbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uTGF5b3V0PVwiaG9yaXpvbnRhbFwiIGlucHV0SWQ9XCJob3Jpem9udGFsXCIgc3Bpbm5lck1vZGU9XCJob3Jpem9udGFsXCIgW3N0ZXBdPVwiMVwiIFttaW5dPVwiMVwiIFttYXhdPVwidG90YWxSZWNvcmRzIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktcGx1c1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTaG93aW5nVGFibGVSb3dzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAjZmlsdGVyIChpbnB1dCk9XCJmaWx0ZXJHbG9iYWwodHJlZVRhYmxlLCAkZXZlbnQpXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIndhcHBUcmVlVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgd2FwcC1pbnB1dFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIFxuICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb2wuZmllbGR9fS1maWVsZCdcIlxuICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlU29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiPjwvcC10cmVlVGFibGVTb3J0SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYnV0dG9ucy1maWVsZFwiPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dOb2RlIGxldC1yb3dEYXRhPVwicm93RGF0YVwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwiaSA9PT0gMFwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxuICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmZpZWxkXSB9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJ1dHRvbnMtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygd2FwcFRyZWVUYWJsZU9iamVjdC5hY3Rpb25CdXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1idXR0b24gW2ljb25dPVwiJ3BpICcrIGJ1dHRvbi5pY29uXCIgKGNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uLmlkLCByb3dEYXRhKVwiICBbcFRvb2x0aXBdPVwiYnV0dG9uLnRvb2x0aXAhXCIgW3Rvb2x0aXBQb3NpdGlvbl09XCJidXR0b24udG9vbHRpcFBvc2l0aW9uIVwiIFtzdHlsZUNsYXNzXT1cImJ1dHRvbi5zdHlsZUNsYXNzIVwiPjwvcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uICpuZ0lmPVwid2FwcFRyZWVUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b25cIiBpY29uPVwicGkgcGktdHJhc2hcIiAoY2xpY2spPVwiY29uZmlybURlbGV0ZVNlbGVjdGVkKCRldmVudCwgcm93RGF0YSlcIiBbcFRvb2x0aXBdPVwiJ1Rvb2x0aXAnIFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwicHgtMlwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlclwiPjwvcC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIiBsZXQtY29sdW1ucz5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7e3dhcHBUcmVlVGFibGVPYmplY3Qubm9SZWNvcmRzTGFiZWx9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdHJlZVRhYmxlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nVGFibGU+XG4gICAgICAgIDxwLXRyZWVUYWJsZVxuICAgICAgICAjdHJlZVRhYmxlIFt2YWx1ZV09XCJ0YWJsZVNrZWxldG9uc1wiIFxuICAgICAgICBjbGFzcz1cIndhcHAtdGFibGUtc3R5bGVzXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFxuICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOic1MHJlbSd9XCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ0VsZW1lbnRzXCJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICBbcm93c109XCJyb3dzUGVyUGFnZVwiXG4gICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMhIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzIVwiXG4gICAgICAgIHNjcm9sbEhlaWdodD1cImZsZXhcIlxuICAgICAgICBzdHlsZUNsYXNzPVwicC10cmVldGFibGUtc3RyaXBlZFwiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRydWVcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXBhZ2luYXRvciBwLTBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3dpbmctcGVyLXBhZ2VcIj4ge3t3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkxheW91dD1cImhvcml6b250YWxcIiBpbnB1dElkPVwiaG9yaXpvbnRhbFwiIHNwaW5uZXJNb2RlPVwiaG9yaXpvbnRhbFwiIFtzdGVwXT1cIjFcIiBbbWluXT1cIjFcIiBbbWF4XT1cInRvdGFsUmVjb3JkcyFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLXBsdXNcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1taW51c1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2hvd2luZ1RhYmxlUm93cygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgI2ZpbHRlciAoaW5wdXQpPVwiZmlsdGVyR2xvYmFsKHRyZWVUYWJsZSwgJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LnNlYXJjaFBsYWNlaG9sZGVyXCIgY2xhc3M9XCJ3LWZ1bGwgaGVpZ2h0LWlucHV0IHdhcHAtaW5wdXRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29sLmZpZWxkfX0tZmllbGQnXCJcbiAgICAgICAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3AtdHJlZVRhYmxlU29ydEljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImJ1dHRvbnMtZmllbGRcIj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93Tm9kZSBsZXQtcm93RGF0YT1cInJvd0RhdGFcIiBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiID5cbiAgICAgICAgICAgICAgICA8cC1za2VsZXRvbj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYnV0dG9ucy1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiB3YXBwVHJlZVRhYmxlT2JqZWN0LmFjdGlvbkJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiBbaWNvbl09XCIncGkgJysgYnV0dG9uLmljb25cIiAoY2xpY2spPVwiYWN0aW9uQnV0dG9uQ2xpY2tlZChidXR0b24uaWQsIHJvd0RhdGEpXCIgIFtwVG9vbHRpcF09XCJidXR0b24udG9vbHRpcCFcIiBbdG9vbHRpcFBvc2l0aW9uXT1cImJ1dHRvbi50b29sdGlwUG9zaXRpb24hXCIgW3N0eWxlQ2xhc3NdPVwiYnV0dG9uLnN0eWxlQ2xhc3MhXCI+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8cC1idXR0b24gKm5nSWY9XCJ3YXBwVHJlZVRhYmxlT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvblwiIGljb249XCJwaSBwaS10cmFzaFwiIChjbGljayk9XCJjb25maXJtRGVsZXRlU2VsZWN0ZWQoJGV2ZW50LCByb3dEYXRhKVwiIFtwVG9vbHRpcF09XCInVG9vbHRpcCcgXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgY2xhc3M9XCJweC0yXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyXCI+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICBcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiIGxldC1jb2x1bW5zPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIHt7d2FwcFRyZWVUYWJsZU9iamVjdC5ub1JlY29yZHNMYWJlbH19XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10cmVlVGFibGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10cmVlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBWSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVWpHLE1BQU0sT0FBTyxtQkFBbUI7SUF3QzlCLFlBQ1UsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF2Q2xELHFCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUNsQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxJQUFJLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsbUJBQWMsR0FBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFFL0Qsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFvQlosZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFZLElBQUksQ0FBQztRQUdYLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUF3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Z0hBaElVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLGtVQUZuQixDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyx1SkNUdkUsNGdSQXlLaUM7MkZEOUpwQixtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsY0FBYyxhQUdiLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixDQUFDOzBHQXdCOUMsUUFBUTtzQkFBOUIsS0FBSzt1QkFBQyxVQUFVO2dCQVFLLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDRixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ2MsbUJBQW1CO3NCQUFoRCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFFRyxtQkFBbUI7c0JBQWpELE1BQU07dUJBQUMscUJBQXFCO2dCQUNJLHFCQUFxQjtzQkFBckQsTUFBTTt1QkFBQyx1QkFBdUI7Z0JBQ0ksdUJBQXVCO3NCQUF6RCxNQUFNO3VCQUFDLHlCQUF5QjtnQkFFVCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFRyZWVEcmFnRHJvcFNlcnZpY2UsIFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xuaW1wb3J0IHsgQWN0aW9uQnV0dG9uUmVzcG9uc2UsIFdUcmVlVGFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctdHJlZS10YWJsZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ctdHJlZS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93LXRyZWUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93LXRyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVHJlZURyYWdEcm9wU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFdUcmVlVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgdHJlZU5vZGVFbGVtZW50czogVHJlZU5vZGVbXSA9IFtdO1xuICBsb2FkaW5nRWxlbWVudHM6IGJvb2xlYW4gPSB0cnVlO1xuICBjb2xsYXBzZWRFbGVtZW50VHJlZTogYm9vbGVhbiA9IHRydWU7XG4gIGNvbHVtbnM6IGFueTtcbiAgb3BlblNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZWxlbWVudEluZm8hOiBhbnk7XG4gIHRhYmxlU2tlbGV0b25zOiBhbnkgPSBbe25hbWU6ICcnfSwge25hbWU6ICcnfSwge25hbWU6ICcnfSwge25hbWU6ICcnfV07XG5cbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xuXG4gIHNldCB0b3RhbFJlY29yZHModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbHVlO1xuICB9ICBcblxuICBnZXQgdG90YWxSZWNvcmRzKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFJlY29yZHM7XG4gIH1cblxuICBwcml2YXRlIF9lbGVtZW50czogYW55O1xuICBcbiAgQElucHV0KCdlbGVtZW50cycpIHNldCBlbGVtZW50cyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZWxlbWVudHMgPSB2YWx1ZTtcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcblxuICB9O1xuICBnZXQgZWxlbWVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzO1xuICB9XG4gIEBJbnB1dCgncm93c1BlclBhZ2UnKSByb3dzUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIEBJbnB1dCgnbG9hZGluZycpIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ3dhcHBUcmVlVGFibGVPYmplY3QnKSB3YXBwVHJlZVRhYmxlT2JqZWN0ITogV1RyZWVUYWJsZTtcblxuICBAT3V0cHV0KCdvbkFjdGlvbkJ1dHRvbkNsaWNrJykgb25BY3Rpb25CdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uUmVzcG9uc2U+KCk7XG4gIEBPdXRwdXQoJ29uRGVsZXRlRWxlbWVudFNlbGVjdCcpIG9uRGVsZXRlRWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoJ29uQ2FudERlbGV0ZUVsZW1lbnRXYXJuJykgb25DYW50RGVsZXRlRWxlbWVudFdhcm4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIFxuICBAVmlld0NoaWxkKCd0cmVlVGFibGUnKSB0cmVlVGFibGUhOiBUcmVlVGFibGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlcz8uWydlbGVtZW50cyddICYmIGNoYW5nZXM/LlsnZWxlbWVudHMnXT8uY3VycmVudFZhbHVlLmxlbmd0aCAhPSAwKSB7XG4gICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IGNoYW5nZXM/LlsnZWxlbWVudHMnXT8uY3VycmVudFZhbHVlLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIGluaXRDb21wb25lbnQoKSB7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnM7XG4gICAgdGhpcy50cmVlTm9kZUVsZW1lbnRzID0gdGhpcy5lbGVtZW50VG9UcmVlTm9kZU1hcCh0aGlzLmVsZW1lbnRzKTtcbiAgfVxuXG4gIGVsZW1lbnRUb1RyZWVOb2RlTWFwKGVsZW1lbnRMaXN0OiBhbnlbXSwgcGFyZW50PzogVHJlZU5vZGUpOiBUcmVlTm9kZVtdIHtcbiAgICBsZXQgdHJlZU5vZGVMaXN0OiBUcmVlTm9kZVtdID0gW107XG4gICAgcmV0dXJuIGVsZW1lbnRMaXN0Lm1hcCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGxldCB0cmVlTm9kZVByb2R1Y3RDYXRlZ29yeTogVHJlZU5vZGUgPSB7XG4gICAgICAgIGxhYmVsOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgIGRhdGE6IGVsZW1lbnQsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBwYXJlbnQ6IHBhcmVudFxuICAgICAgfVxuICAgICAgdHJlZU5vZGVQcm9kdWN0Q2F0ZWdvcnkuY2hpbGRyZW4gPSB0aGlzLmVsZW1lbnRUb1RyZWVOb2RlTWFwKGVsZW1lbnQuaW52ZXJzZVBhcmVudFByb2R1Y3RDYXRlZ29yeSwgdHJlZU5vZGVQcm9kdWN0Q2F0ZWdvcnkpXG4gICAgICByZXR1cm4gdHJlZU5vZGVMaXN0W2luZGV4XSA9IHRyZWVOb2RlUHJvZHVjdENhdGVnb3J5O1xuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyR2xvYmFsKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBhbnkpIHtcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJylcbiAgfVxuXG4gIGFjdGlvbkJ1dHRvbkNsaWNrZWQoaWQ6IG51bWJlciwgZWxlbWVudDogYW55KSB7XG4gICAgdGhpcy5vbkFjdGlvbkJ1dHRvbkNsaWNrLmVtaXQoe2lkOiBpZCwgZWxlbWVudDogZWxlbWVudH0pXG4gIH1cblxuICBjb25maXJtRGVsZXRlU2VsZWN0ZWQoZXZlbnQ6IGFueSwgZGF0YTogYW55KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQgYXMgRXZlbnRUYXJnZXQsXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUcmVlVGFibGVPYmplY3QuY29uZmlybVNpbmdsZURlbGV0ZUxhYmVsLFxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb25maXJtRGVsZXRlQnRuTGFiZWwsXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5kZWxldGVOb2RlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlTm9kZShub2RlOiBhbnkpIHtcbiAgICBpZiAobm9kZS5pbnZlcnNlUGFyZW50UHJvZHVjdENhdGVnb3J5Lmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLm9uRGVsZXRlRWxlbWVudFNlbGVjdC5lbWl0KG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ2FudERlbGV0ZUVsZW1lbnRXYXJuLmVtaXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2hvd2luZ1RhYmxlUm93cygpIHtcbiAgICB0aGlzLnRyZWVOb2RlRWxlbWVudHMgPSBbLi4udGhpcy50cmVlTm9kZUVsZW1lbnRzXTtcbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kUmVjdXJzaXZlKG5vZGU6IFRyZWVOb2RlLCBpc0V4cGFuZDogYm9vbGVhbikge1xuICAgIG5vZGUuZXhwYW5kZWQgPSBpc0V4cGFuZDtcbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkTm9kZSA9PiB7XG4gICAgICAgIHRoaXMuZXhwYW5kUmVjdXJzaXZlKGNoaWxkTm9kZSwgaXNFeHBhbmQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kVHJlZU5vZGUobGlzdE5vZGU6IFRyZWVOb2RlW10sIG5vZGVJZDogbnVtYmVyKSB7XG4gICAgZm9yIChsZXQgbm9kZSBvZiBsaXN0Tm9kZSkge1xuICAgICAgaWYgKG5vZGUuZGF0YS5wcm9kdWN0Q2F0ZWdvcnlJZCA9PSBub2RlSWQpIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGxldCBuZXdOb2RlRm91bmQ6IGFueSA9IHRoaXMuZmluZFRyZWVOb2RlKG5vZGUuY2hpbGRyZW4sIG5vZGVJZCk7XG4gICAgICAgIGlmIChuZXdOb2RlRm91bmQpIHtcbiAgICAgICAgICByZXR1cm4gbmV3Tm9kZUZvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJ3YXBwVHJlZVRhYmxlT2JqZWN0XCIgW2NsYXNzLnRhYmxlLWNvbnRhaW5lcl09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LnRhYmxlQ29udGFpbmVyXCI+XG4gICAgPHAtdHJlZVRhYmxlICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2UgbG9hZGluZ1RhYmxlXCJcbiAgICAgICAgI3RyZWVUYWJsZSBbdmFsdWVdPVwidHJlZU5vZGVFbGVtZW50c1wiIFxuICAgICAgICBjbGFzcz1cIndhcHAtdGFibGUtc3R5bGVzXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFxuICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOic1MHJlbSd9XCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ0VsZW1lbnRzXCJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICBbcm93c109XCJyb3dzUGVyUGFnZVwiXG4gICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMhIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzIVwiXG4gICAgICAgIHNjcm9sbEhlaWdodD1cImZsZXhcIlxuICAgICAgICBzdHlsZUNsYXNzPVwicC10cmVldGFibGUtc3RyaXBlZFwiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRydWVcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXBhZ2luYXRvciBwLTBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3dpbmctcGVyLXBhZ2VcIj4ge3t3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkxheW91dD1cImhvcml6b250YWxcIiBpbnB1dElkPVwiaG9yaXpvbnRhbFwiIHNwaW5uZXJNb2RlPVwiaG9yaXpvbnRhbFwiIFtzdGVwXT1cIjFcIiBbbWluXT1cIjFcIiBbbWF4XT1cInRvdGFsUmVjb3JkcyFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLXBsdXNcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1taW51c1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2hvd2luZ1RhYmxlUm93cygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgI2ZpbHRlciAoaW5wdXQpPVwiZmlsdGVyR2xvYmFsKHRyZWVUYWJsZSwgJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LnNlYXJjaFBsYWNlaG9sZGVyXCIgY2xhc3M9XCJ3LWZ1bGwgaGVpZ2h0LWlucHV0IHdhcHAtaW5wdXRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29sLmZpZWxkfX0tZmllbGQnXCJcbiAgICAgICAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3AtdHJlZVRhYmxlU29ydEljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImJ1dHRvbnMtZmllbGRcIj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93Tm9kZSBsZXQtcm93RGF0YT1cInJvd0RhdGFcIiBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiID5cbiAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cbiAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5maWVsZF0gfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIHdhcHBUcmVlVGFibGVPYmplY3QuYWN0aW9uQnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uIFtpY29uXT1cIidwaSAnKyBidXR0b24uaWNvblwiIChjbGljayk9XCJhY3Rpb25CdXR0b25DbGlja2VkKGJ1dHRvbi5pZCwgcm93RGF0YSlcIiAgW3BUb29sdGlwXT1cImJ1dHRvbi50b29sdGlwIVwiIFt0b29sdGlwUG9zaXRpb25dPVwiYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiFcIiBbc3R5bGVDbGFzc109XCJidXR0b24uc3R5bGVDbGFzcyFcIj48L3AtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cIndhcHBUcmVlVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uXCIgaWNvbj1cInBpIHBpLXRyYXNoXCIgKGNsaWNrKT1cImNvbmZpcm1EZWxldGVTZWxlY3RlZCgkZXZlbnQsIHJvd0RhdGEpXCIgW3BUb29sdGlwXT1cIndhcHBUcmVlVGFibGVPYmplY3QuZGVsZXRlQnV0dG9uVG9vbHRpcCFcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cInB4LTJcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXJcIj48L3AtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIFxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCIgbGV0LWNvbHVtbnM+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAge3t3YXBwVHJlZVRhYmxlT2JqZWN0Lm5vUmVjb3Jkc0xhYmVsfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRyZWVUYWJsZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RhYmxlPlxuICAgICAgICA8cC10cmVlVGFibGVcbiAgICAgICAgI3RyZWVUYWJsZSBbdmFsdWVdPVwidGFibGVTa2VsZXRvbnNcIiBcbiAgICAgICAgY2xhc3M9XCJ3YXBwLXRhYmxlLXN0eWxlc1wiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzonNTByZW0nfVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdFbGVtZW50c1wiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcbiAgICAgICAgW3Jvd3NdPVwicm93c1BlclBhZ2VcIlxuICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcbiAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlID8gd2FwcFRyZWVUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlICsgJyAnICsgIHJvd3NQZXJQYWdlICsgJyBkZSAnICsgdG90YWxSZWNvcmRzISA6ICdTaG93aW5nICcgKyByb3dzUGVyUGFnZSArICcgb2YgJyArIHRvdGFsUmVjb3JkcyFcIlxuICAgICAgICBzY3JvbGxIZWlnaHQ9XCJmbGV4XCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtdHJlZXRhYmxlLXN0cmlwZWRcIj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0cnVlXCIgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1wYWdpbmF0b3IgcC0wXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRyZWVUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIHNob3dpbmctcGVyLXBhZ2VcIiBbc2l6ZV09XCIxXCIgWyhuZ01vZGVsKV09XCJyb3dzUGVyUGFnZVwiIFtzaG93QnV0dG9uc109XCJ0cnVlXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHMhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktbWludXNcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVNob3dpbmdUYWJsZVJvd3MoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgbWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgKGlucHV0KT1cImZpbHRlckdsb2JhbCh0cmVlVGFibGUsICRldmVudClcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5zZWFyY2hQbGFjZWhvbGRlclwiIGNsYXNzPVwidy1mdWxsIGhlaWdodC1pbnB1dCB3YXBwLWlucHV0XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbC5maWVsZH19LWZpZWxkJ1wiXG4gICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5dPVwiY29sLmZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVTb3J0SWNvbiBbZmllbGRdPVwiY29sLmZpZWxkXCI+PC9wLXRyZWVUYWJsZVNvcnRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd05vZGUgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCIgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIiA+XG4gICAgICAgICAgICAgICAgPHAtc2tlbGV0b24+PC9wLXNrZWxldG9uPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJ1dHRvbnMtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygd2FwcFRyZWVUYWJsZU9iamVjdC5hY3Rpb25CdXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1idXR0b24gW2ljb25dPVwiJ3BpICcrIGJ1dHRvbi5pY29uXCIgKGNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uLmlkLCByb3dEYXRhKVwiICBbcFRvb2x0aXBdPVwiYnV0dG9uLnRvb2x0aXAhXCIgW3Rvb2x0aXBQb3NpdGlvbl09XCJidXR0b24udG9vbHRpcFBvc2l0aW9uIVwiIFtzdHlsZUNsYXNzXT1cImJ1dHRvbi5zdHlsZUNsYXNzIVwiPjwvcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uICpuZ0lmPVwid2FwcFRyZWVUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b25cIiBpY29uPVwicGkgcGktdHJhc2hcIiAoY2xpY2spPVwiY29uZmlybURlbGV0ZVNlbGVjdGVkKCRldmVudCwgcm93RGF0YSlcIiBbcFRvb2x0aXBdPVwiJ1Rvb2x0aXAnIFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwicHgtMlwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlclwiPjwvcC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIiBsZXQtY29sdW1ucz5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7e3dhcHBUcmVlVGFibGVPYmplY3Qubm9SZWNvcmRzTGFiZWx9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdHJlZVRhYmxlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+Il19