mapa-library-ui 0.74.1 → 0.74.2

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.
@@ -272,10 +272,10 @@ export class MapaTableComponent {
272
272
  }
273
273
  }
274
274
  MapaTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapaTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
275
- MapaTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MapaTableComponent, selector: "mapa-table", inputs: { columns: "columns", data: "data", pageIndex: "pageIndex", pageSize: "pageSize", totalCount: "totalCount", totalPages: "totalPages", checkbox: "checkbox", selection: "selection", actions: "actions", filterControl: "filterControl", menuItems: "menuItems", menu: "menu", showPaginator: "showPaginator" }, outputs: { rowClick: "rowClick", selectedRows: "selectedRows", onChangePage: "onChangePage", onSortChange: "onSortChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, read: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section class=\"mapa-table\" *ngIf=\"dataSource && dataSource.data && dataSource.data.length > 0\">\n <div class=\"mapa-table--show-on-mobile\">\n <div *ngFor=\"let row of dataSource.data.values(); let i = index\">\n <div class=\"mapa-table__card mapa__card\">\n <div *ngFor=\"let column of columns; let j = index; let isFirst = first\">\n <strong class=\"mapa-table__card--header\" *ngIf=\"column.key !== 'actions' && column.key !== 'menu'\">\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n class=\"hidden\"\n ></div>\n </strong>\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__card--floating-actions\"\n >\n <div *ngIf=\"hasActionsColumn()\" class=\"mapa-table__card--floating-content\">\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n \n <div class=\"mapa-table__column--menu\" *ngIf=\"hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </div>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"!hasActionsColumn() && hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mapa-table--show-on-desktop\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n <ng-container\n *ngFor=\"let column of columns; let isFirst = first\"\n [matColumnDef]=\"column.key\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__column--actions\"\n *ngIf=\"column.key === 'actions' && actions\"\n >\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"column.key === 'menu'\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"row?.menu\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n </div>\n <section *ngIf=\"showPaginator\">\n <mat-paginator\n class=\"mapa-table__paginator-legacy\"\n itemsPerPageLabel=\"Item por p\u00E1gina\"\n appStylePaginatorMv\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n</section>\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n *ngIf=\"selection\"\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n </ng-container>\n <div>\n <span [innerHTML]=\"column.label\"></span>\n </div>\n <div *ngIf=\"column.key !== 'actions' && column.key !== 'menu' && column.sort\">\n <mat-icon>filter_list</mat-icon>\n </div>\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n >\n </mat-checkbox>\n </ng-container>\n <!-- POR FAVOR, N\u00C3O QUEBRE LINHA ENTRE NG-CONTAINER/TEMPLATE E O VALOR CONTE\u00DADO -->\n <ng-container *ngIf=\"isMaskedData(column, row); else statusContent\"\n >{{ getValueAsDate(column, row) | date: column.mask }}</ng-container\n >\n <ng-template #statusContent>\n <ng-container *ngIf=\"column.status; else commonContent\">\n <ng-container *ngIf=\"isBoolean(column, row); else commonStatus\"\n ><span [innerHTML]=\"column.status.label[row[column.key] ? 1 : 0]\"></span\n ></ng-container>\n <ng-template #commonStatus\n ><span [innerHTML]=\"column.status.label[row[column.key]] || '-' \"></span\n ></ng-template>\n </ng-container>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n <ng-template #statusContent>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n</ng-template>\n", styles: [".mapa-table .mat-table{font-family:Inter,Arial,Helvetica,sans-serif;width:100%}.mapa-table .mat-table .mat-checkbox{margin:6px 8px 0 0;padding:0}.mapa-table td.mat-cell{padding:16px 0}.mapa-table .mat-table .mat-row .mat-cell{font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400;color:#50575e}.mapa-table .row-hover:hover{box-shadow:0 2px 4px #00000021;outline:1px solid rgba(238,238,238,.93);cursor:pointer}.mapa-table .mat-table .mat-header-cell{border:none;border-bottom:1px solid #eee;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:600;color:#50575e}.mapa-table .mat-mdc-row,.mapa-table .mdc-data-table__content,.mapa-table .mat-mdc-header-cell{--mat-table-row-item-label-text-font: \"Inter\", Arial, Helvetica, sans-serif}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#b6b6b6}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-frame{border-color:#ea561d}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-background{background-color:transparent}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-background{background-color:#ea561d}.mapa-table .mat-mdc-paginator-container{display:flex;justify-content:space-between}.mapa-table ::ng-deep .mat-mdc-paginator-page-size-label{display:none}.mapa-table__paginator-legacy .mat-paginator-container{font-family:Inter!important;justify-content:flex-start}.mapa-table__paginator-legacy .mat-paginator-page-size{margin-right:10vw}.mapa-table__paginator-legacy .custom-paginator-container{justify-content:flex-end}.mapa-table__paginator-legacy .custom-paginator-counter{white-space:nowrap;margin:0 4px 0 10px!important}.mapa-table__paginator-legacy .custom-paginator-page{border-radius:4px;outline:none;border:none;margin:.4em;font-size:14px;min-width:24px;width:auto;min-height:24px;max-height:24px;padding:1px 6px}.mapa-table__paginator-legacy .custom-paginator-page-enabled{color:#50575e;background:transparent;cursor:pointer}.mapa-table__paginator-legacy .custom-paginator-page-enabled:hover{background-color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-page-disabled{background-color:#ea561d;color:#fff}.mapa-table__paginator-legacy .custom-paginator-arrow-disabled{color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-arrow-enabled{color:#999}.hidden{display:none}.mapa-table{width:100%;white-space:nowrap}@media (min-width: 768px){.mapa-table--show-on-mobile{display:none}.mapa-table--show-on-desktop{display:block}}@media (max-width: 768px){.mapa-table--show-on-mobile{padding:20px}.mapa-table--show-on-mobile .mapa__card{width:unset!important}.mapa-table--show-on-desktop{display:none}}.mapa-table__card{position:relative;padding:24px;display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.mapa-table__card--floating-content{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:8px}.mapa-table__card--floating-actions{position:absolute;bottom:16px;right:16px;color:#ea561d}.mapa-table__card--header{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;font-size:12px;text-transform:uppercase}.mapa-table__card--header mat-icon{height:16px;width:16px;font-size:16px}.mapa-table__card--column{padding:16px 0}.mapa-table__label{margin-top:4px}.mapa-table__column{padding:15px;align-items:center;display:flex}.mapa-table__column--actions{display:flex}.mapa-table__column--actions .mat-icon{color:#ea561d!important}.mapa-table__column--actions-item{display:flex;align-items:center}.mapa-table__column--actions-item img{margin-right:8px}.mapa-table__column--header{width:100%}.mapa-table__column--header .mat-icon{cursor:pointer;position:relative;bottom:-3px;margin:0 7px;font-size:14px;height:14px;width:14px}.mapa-table__column--status{margin:auto;text-align:center;width:min-content;border-radius:4px;padding:4px 8px}.mapa-table__column--status-round{border-radius:50px}.mapa-table__column--ellipsis{display:inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mapa-table__column--no-wrap{white-space:nowrap}.mapa-table__column--wrap{white-space:pre-wrap}.mapa-table__column--center-cell{display:flex;align-items:center;justify-content:center;width:100%}.mapa-table__content--value{color:#fff;font-weight:500}.mapa-table .mat-sort-header-arrow{color:transparent}.mapa-table .mat-sort-header-content{width:100%!important}.mapa-table .mat-cell,.mapa-table .mat-header-cell{padding:0 10px!important}.mapa-table .mat-table{width:100%;overflow-x:auto}@media (max-width: 1000px){.mapa-table .mat-paginator-range-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.mapa-table .mat-paginator-range-label{padding:16px 0;text-align:center;width:100%}.mapa-table .mat-paginator-container{justify-content:center}}.mapa-table .classification{width:40px;height:40px;border-radius:24px;display:flex;justify-content:center;align-items:center}.mapa-table .roundCell{border-radius:10px}.mapa-table .general{border-radius:24px;border:1px solid #dcdcde;display:flex;justify-content:center;align-items:center;width:48px;height:48px}.mapa-table .name{color:#181818;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.mapa-table .cpf{color:#77838f;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.mapa-table .label_report{color:#181818;text-align:center;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}\n", ".classification-1{background-color:#073e92;color:#fff}.classification-2{background-color:#0e6ece;color:#fff}.classification-3{background-color:#2d9ced;color:#000}.classification-4{background-color:#68ceee;color:#000}.classification-5{background-color:#96f2ee;color:#000}.classification-6{background-color:#f598a7;color:#000}.classification-7{background-color:#f56580;color:#000}.classification-8{background-color:#f4284e;color:#fff}.classification-9{background-color:#c11c2f;color:#fff}.small-dot{width:12px;height:12px;border-radius:12px;padding:0;margin:0}.dot{width:16px;height:16px;border-radius:16px;padding:0;margin:0}.indicator{display:flex;padding:2px 4px 2px 16px;justify-content:space-between;align-items:center;border-radius:8px;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400}.display-S{font-family:Inter,Arial,Helvetica,sans-serif;font-size:20px;font-style:normal;font-weight:400}.display-L{font-family:Inter,Arial,Helvetica,sans-serif;font-size:32px;font-style:normal;font-weight:400}.display-XG{font-family:Inter,Arial,Helvetica,sans-serif;font-size:48px;font-style:normal;font-weight:400}*{transition:opacity .4s ease-out,max-height .4s ease-out}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MapaMenuComponent, selector: "mapa-menu", inputs: ["items", "data"], outputs: ["emitMenu"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i9.PaginatorLegacyDirective, selector: "[appStylePaginatorMv]" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
275
+ MapaTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MapaTableComponent, selector: "mapa-table", inputs: { columns: "columns", data: "data", pageIndex: "pageIndex", pageSize: "pageSize", totalCount: "totalCount", totalPages: "totalPages", checkbox: "checkbox", selection: "selection", actions: "actions", filterControl: "filterControl", menuItems: "menuItems", menu: "menu", showPaginator: "showPaginator" }, outputs: { rowClick: "rowClick", selectedRows: "selectedRows", onChangePage: "onChangePage", onSortChange: "onSortChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, read: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section class=\"mapa-table\" *ngIf=\"dataSource && dataSource.data && dataSource.data.length > 0\">\n <div class=\"mapa-table--show-on-mobile\">\n <div *ngFor=\"let row of dataSource.data.values(); let i = index\">\n <div class=\"mapa-table__card mapa__card\">\n <div *ngFor=\"let column of columns; let j = index; let isFirst = first\">\n <strong class=\"mapa-table__card--header\" *ngIf=\"column.key !== 'actions' && column.key !== 'menu'\">\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n class=\"hidden\"\n ></div>\n </strong>\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__card--floating-actions\"\n >\n <div *ngIf=\"hasActionsColumn()\" class=\"mapa-table__card--floating-content\">\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n \n <div class=\"mapa-table__column--menu\" *ngIf=\"hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"!hasActionsColumn() && hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mapa-table--show-on-desktop\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n <ng-container\n *ngFor=\"let column of columns; let isFirst = first\"\n [matColumnDef]=\"column.key\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__column--actions\"\n *ngIf=\"column.key === 'actions' && actions\"\n >\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"column.key === 'menu'\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"row?.menu\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n </div>\n <section *ngIf=\"showPaginator\">\n <mat-paginator\n class=\"mapa-table__paginator-legacy\"\n itemsPerPageLabel=\"Item por p\u00E1gina\"\n appStylePaginatorMv\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n</section>\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n *ngIf=\"selection\"\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n </ng-container>\n <div>\n <span [innerHTML]=\"column.label\"></span>\n </div>\n <div *ngIf=\"column.key !== 'actions' && column.key !== 'menu' && column.sort\">\n <mat-icon>filter_list</mat-icon>\n </div>\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n >\n </mat-checkbox>\n </ng-container>\n <!-- POR FAVOR, N\u00C3O QUEBRE LINHA ENTRE NG-CONTAINER/TEMPLATE E O VALOR CONTE\u00DADO -->\n <ng-container *ngIf=\"isMaskedData(column, row); else statusContent\"\n >{{ getValueAsDate(column, row) | date: column.mask }}</ng-container\n >\n <ng-template #statusContent>\n <ng-container *ngIf=\"column.status; else commonContent\">\n <ng-container *ngIf=\"isBoolean(column, row); else commonStatus\"\n ><span [innerHTML]=\"column.status.label[row[column.key] ? 1 : 0]\"></span\n ></ng-container>\n <ng-template #commonStatus\n ><span [innerHTML]=\"column.status.label[row[column.key]] || '-' \"></span\n ></ng-template>\n </ng-container>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n <ng-template #statusContent>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n</ng-template>\n", styles: [".mapa-table .mat-table{font-family:Inter,Arial,Helvetica,sans-serif;width:100%}.mapa-table .mat-table .mat-checkbox{margin:6px 8px 0 0;padding:0}.mapa-table td.mat-cell{padding:16px 0}.mapa-table .mat-table .mat-row .mat-cell{font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400;color:#50575e}.mapa-table .row-hover:hover{box-shadow:0 2px 4px #00000021;outline:1px solid rgba(238,238,238,.93);cursor:pointer}.mapa-table .mat-table .mat-header-cell{border:none;border-bottom:1px solid #eee;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:600;color:#50575e}.mapa-table .mat-mdc-row,.mapa-table .mdc-data-table__content,.mapa-table .mat-mdc-header-cell{--mat-table-row-item-label-text-font: \"Inter\", Arial, Helvetica, sans-serif}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#b6b6b6}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-frame{border-color:#ea561d}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-background{background-color:transparent}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-background{background-color:#ea561d}.mapa-table .mat-mdc-paginator-container{display:flex;justify-content:space-between}.mapa-table ::ng-deep .mat-mdc-paginator-page-size-label{display:none}.mapa-table__paginator-legacy .mat-paginator-container{font-family:Inter!important;justify-content:flex-start}.mapa-table__paginator-legacy .mat-paginator-page-size{margin-right:10vw}.mapa-table__paginator-legacy .custom-paginator-container{justify-content:flex-end}.mapa-table__paginator-legacy .custom-paginator-counter{white-space:nowrap;margin:0 4px 0 10px!important}.mapa-table__paginator-legacy .custom-paginator-page{border-radius:4px;outline:none;border:none;margin:.4em;font-size:14px;min-width:24px;width:auto;min-height:24px;max-height:24px;padding:1px 6px}.mapa-table__paginator-legacy .custom-paginator-page-enabled{color:#50575e;background:transparent;cursor:pointer}.mapa-table__paginator-legacy .custom-paginator-page-enabled:hover{background-color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-page-disabled{background-color:#ea561d;color:#fff}.mapa-table__paginator-legacy .custom-paginator-arrow-disabled{color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-arrow-enabled{color:#999}.hidden{display:none}.mapa-table{width:100%;white-space:nowrap}@media (min-width: 768px){.mapa-table--show-on-mobile{display:none}.mapa-table--show-on-desktop{display:block}}@media (max-width: 768px){.mapa-table--show-on-mobile{padding:20px}.mapa-table--show-on-mobile .mapa__card{width:unset!important}.mapa-table--show-on-desktop{display:none}}.mapa-table__card{position:relative;padding:24px;display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.mapa-table__card--floating-content{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:8px}.mapa-table__card--floating-actions{position:absolute;bottom:16px;right:16px;color:#ea561d}.mapa-table__card--header{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;font-size:12px;text-transform:uppercase}.mapa-table__card--header mat-icon{height:16px;width:16px;font-size:16px}.mapa-table__card--column{padding:16px 0}.mapa-table__label{margin-top:4px}.mapa-table__column{padding:15px;align-items:center;display:flex}.mapa-table__column--actions{display:flex}.mapa-table__column--actions .mat-icon{color:#ea561d!important}.mapa-table__column--actions-item{display:flex;align-items:center}.mapa-table__column--actions-item img{margin-right:8px}.mapa-table__column--header{width:100%}.mapa-table__column--header .mat-icon{cursor:pointer;position:relative;bottom:-3px;margin:0 7px;font-size:14px;height:14px;width:14px}.mapa-table__column--status{margin:auto;text-align:center;width:min-content;border-radius:4px;padding:4px 8px}.mapa-table__column--status-round{border-radius:50px}.mapa-table__column--ellipsis{display:inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mapa-table__column--no-wrap{white-space:nowrap}.mapa-table__column--wrap{white-space:pre-wrap}.mapa-table__column--center-cell{display:flex;align-items:center;justify-content:center;width:100%}.mapa-table__content--value{color:#fff;font-weight:500}.mapa-table .mat-sort-header-arrow{color:transparent}.mapa-table .mat-sort-header-content{width:100%!important}.mapa-table .mat-cell,.mapa-table .mat-header-cell{padding:0 10px!important}.mapa-table .mat-table{width:100%;overflow-x:auto}@media (max-width: 1000px){.mapa-table .mat-paginator-range-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.mapa-table .mat-paginator-range-label{padding:16px 0;text-align:center;width:100%}.mapa-table .mat-paginator-container{justify-content:center}}.mapa-table .classification{width:40px;height:40px;border-radius:24px;display:flex;justify-content:center;align-items:center}.mapa-table .roundCell{border-radius:10px}.mapa-table .general{border-radius:24px;border:1px solid #dcdcde;display:flex;justify-content:center;align-items:center;width:48px;height:48px}.mapa-table .name{color:#181818;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.mapa-table .cpf{color:#77838f;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.mapa-table .label_report{color:#181818;text-align:center;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}\n", ".classification-1{background-color:#073e92;color:#fff}.classification-2{background-color:#0e6ece;color:#fff}.classification-3{background-color:#2d9ced;color:#000}.classification-4{background-color:#68ceee;color:#000}.classification-5{background-color:#96f2ee;color:#000}.classification-6{background-color:#f598a7;color:#000}.classification-7{background-color:#f56580;color:#000}.classification-8{background-color:#f4284e;color:#fff}.classification-9{background-color:#c11c2f;color:#fff}.small-dot{width:12px;height:12px;border-radius:12px;padding:0;margin:0}.dot{width:16px;height:16px;border-radius:16px;padding:0;margin:0}.indicator{display:flex;padding:2px 4px 2px 16px;justify-content:space-between;align-items:center;border-radius:8px;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400}.display-S{font-family:Inter,Arial,Helvetica,sans-serif;font-size:20px;font-style:normal;font-weight:400}.display-L{font-family:Inter,Arial,Helvetica,sans-serif;font-size:32px;font-style:normal;font-weight:400}.display-XG{font-family:Inter,Arial,Helvetica,sans-serif;font-size:48px;font-style:normal;font-weight:400}*{transition:opacity .4s ease-out,max-height .4s ease-out}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MapaMenuComponent, selector: "mapa-menu", inputs: ["items", "data"], outputs: ["emitMenu"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i9.PaginatorLegacyDirective, selector: "[appStylePaginatorMv]" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
276
276
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapaTableComponent, decorators: [{
277
277
  type: Component,
278
- args: [{ selector: "mapa-table", encapsulation: ViewEncapsulation.None, template: "<section class=\"mapa-table\" *ngIf=\"dataSource && dataSource.data && dataSource.data.length > 0\">\n <div class=\"mapa-table--show-on-mobile\">\n <div *ngFor=\"let row of dataSource.data.values(); let i = index\">\n <div class=\"mapa-table__card mapa__card\">\n <div *ngFor=\"let column of columns; let j = index; let isFirst = first\">\n <strong class=\"mapa-table__card--header\" *ngIf=\"column.key !== 'actions' && column.key !== 'menu'\">\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n class=\"hidden\"\n ></div>\n </strong>\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__card--floating-actions\"\n >\n <div *ngIf=\"hasActionsColumn()\" class=\"mapa-table__card--floating-content\">\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n \n <div class=\"mapa-table__column--menu\" *ngIf=\"hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </div>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"!hasActionsColumn() && hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mapa-table--show-on-desktop\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n <ng-container\n *ngFor=\"let column of columns; let isFirst = first\"\n [matColumnDef]=\"column.key\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__column--actions\"\n *ngIf=\"column.key === 'actions' && actions\"\n >\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"column.key === 'menu'\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"row?.menu\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n </div>\n <section *ngIf=\"showPaginator\">\n <mat-paginator\n class=\"mapa-table__paginator-legacy\"\n itemsPerPageLabel=\"Item por p\u00E1gina\"\n appStylePaginatorMv\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n</section>\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n *ngIf=\"selection\"\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n </ng-container>\n <div>\n <span [innerHTML]=\"column.label\"></span>\n </div>\n <div *ngIf=\"column.key !== 'actions' && column.key !== 'menu' && column.sort\">\n <mat-icon>filter_list</mat-icon>\n </div>\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n >\n </mat-checkbox>\n </ng-container>\n <!-- POR FAVOR, N\u00C3O QUEBRE LINHA ENTRE NG-CONTAINER/TEMPLATE E O VALOR CONTE\u00DADO -->\n <ng-container *ngIf=\"isMaskedData(column, row); else statusContent\"\n >{{ getValueAsDate(column, row) | date: column.mask }}</ng-container\n >\n <ng-template #statusContent>\n <ng-container *ngIf=\"column.status; else commonContent\">\n <ng-container *ngIf=\"isBoolean(column, row); else commonStatus\"\n ><span [innerHTML]=\"column.status.label[row[column.key] ? 1 : 0]\"></span\n ></ng-container>\n <ng-template #commonStatus\n ><span [innerHTML]=\"column.status.label[row[column.key]] || '-' \"></span\n ></ng-template>\n </ng-container>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n <ng-template #statusContent>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n</ng-template>\n", styles: [".mapa-table .mat-table{font-family:Inter,Arial,Helvetica,sans-serif;width:100%}.mapa-table .mat-table .mat-checkbox{margin:6px 8px 0 0;padding:0}.mapa-table td.mat-cell{padding:16px 0}.mapa-table .mat-table .mat-row .mat-cell{font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400;color:#50575e}.mapa-table .row-hover:hover{box-shadow:0 2px 4px #00000021;outline:1px solid rgba(238,238,238,.93);cursor:pointer}.mapa-table .mat-table .mat-header-cell{border:none;border-bottom:1px solid #eee;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:600;color:#50575e}.mapa-table .mat-mdc-row,.mapa-table .mdc-data-table__content,.mapa-table .mat-mdc-header-cell{--mat-table-row-item-label-text-font: \"Inter\", Arial, Helvetica, sans-serif}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#b6b6b6}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-frame{border-color:#ea561d}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-background{background-color:transparent}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-background{background-color:#ea561d}.mapa-table .mat-mdc-paginator-container{display:flex;justify-content:space-between}.mapa-table ::ng-deep .mat-mdc-paginator-page-size-label{display:none}.mapa-table__paginator-legacy .mat-paginator-container{font-family:Inter!important;justify-content:flex-start}.mapa-table__paginator-legacy .mat-paginator-page-size{margin-right:10vw}.mapa-table__paginator-legacy .custom-paginator-container{justify-content:flex-end}.mapa-table__paginator-legacy .custom-paginator-counter{white-space:nowrap;margin:0 4px 0 10px!important}.mapa-table__paginator-legacy .custom-paginator-page{border-radius:4px;outline:none;border:none;margin:.4em;font-size:14px;min-width:24px;width:auto;min-height:24px;max-height:24px;padding:1px 6px}.mapa-table__paginator-legacy .custom-paginator-page-enabled{color:#50575e;background:transparent;cursor:pointer}.mapa-table__paginator-legacy .custom-paginator-page-enabled:hover{background-color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-page-disabled{background-color:#ea561d;color:#fff}.mapa-table__paginator-legacy .custom-paginator-arrow-disabled{color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-arrow-enabled{color:#999}.hidden{display:none}.mapa-table{width:100%;white-space:nowrap}@media (min-width: 768px){.mapa-table--show-on-mobile{display:none}.mapa-table--show-on-desktop{display:block}}@media (max-width: 768px){.mapa-table--show-on-mobile{padding:20px}.mapa-table--show-on-mobile .mapa__card{width:unset!important}.mapa-table--show-on-desktop{display:none}}.mapa-table__card{position:relative;padding:24px;display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.mapa-table__card--floating-content{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:8px}.mapa-table__card--floating-actions{position:absolute;bottom:16px;right:16px;color:#ea561d}.mapa-table__card--header{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;font-size:12px;text-transform:uppercase}.mapa-table__card--header mat-icon{height:16px;width:16px;font-size:16px}.mapa-table__card--column{padding:16px 0}.mapa-table__label{margin-top:4px}.mapa-table__column{padding:15px;align-items:center;display:flex}.mapa-table__column--actions{display:flex}.mapa-table__column--actions .mat-icon{color:#ea561d!important}.mapa-table__column--actions-item{display:flex;align-items:center}.mapa-table__column--actions-item img{margin-right:8px}.mapa-table__column--header{width:100%}.mapa-table__column--header .mat-icon{cursor:pointer;position:relative;bottom:-3px;margin:0 7px;font-size:14px;height:14px;width:14px}.mapa-table__column--status{margin:auto;text-align:center;width:min-content;border-radius:4px;padding:4px 8px}.mapa-table__column--status-round{border-radius:50px}.mapa-table__column--ellipsis{display:inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mapa-table__column--no-wrap{white-space:nowrap}.mapa-table__column--wrap{white-space:pre-wrap}.mapa-table__column--center-cell{display:flex;align-items:center;justify-content:center;width:100%}.mapa-table__content--value{color:#fff;font-weight:500}.mapa-table .mat-sort-header-arrow{color:transparent}.mapa-table .mat-sort-header-content{width:100%!important}.mapa-table .mat-cell,.mapa-table .mat-header-cell{padding:0 10px!important}.mapa-table .mat-table{width:100%;overflow-x:auto}@media (max-width: 1000px){.mapa-table .mat-paginator-range-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.mapa-table .mat-paginator-range-label{padding:16px 0;text-align:center;width:100%}.mapa-table .mat-paginator-container{justify-content:center}}.mapa-table .classification{width:40px;height:40px;border-radius:24px;display:flex;justify-content:center;align-items:center}.mapa-table .roundCell{border-radius:10px}.mapa-table .general{border-radius:24px;border:1px solid #dcdcde;display:flex;justify-content:center;align-items:center;width:48px;height:48px}.mapa-table .name{color:#181818;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.mapa-table .cpf{color:#77838f;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.mapa-table .label_report{color:#181818;text-align:center;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}\n", ".classification-1{background-color:#073e92;color:#fff}.classification-2{background-color:#0e6ece;color:#fff}.classification-3{background-color:#2d9ced;color:#000}.classification-4{background-color:#68ceee;color:#000}.classification-5{background-color:#96f2ee;color:#000}.classification-6{background-color:#f598a7;color:#000}.classification-7{background-color:#f56580;color:#000}.classification-8{background-color:#f4284e;color:#fff}.classification-9{background-color:#c11c2f;color:#fff}.small-dot{width:12px;height:12px;border-radius:12px;padding:0;margin:0}.dot{width:16px;height:16px;border-radius:16px;padding:0;margin:0}.indicator{display:flex;padding:2px 4px 2px 16px;justify-content:space-between;align-items:center;border-radius:8px;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400}.display-S{font-family:Inter,Arial,Helvetica,sans-serif;font-size:20px;font-style:normal;font-weight:400}.display-L{font-family:Inter,Arial,Helvetica,sans-serif;font-size:32px;font-style:normal;font-weight:400}.display-XG{font-family:Inter,Arial,Helvetica,sans-serif;font-size:48px;font-style:normal;font-weight:400}*{transition:opacity .4s ease-out,max-height .4s ease-out}\n"] }]
278
+ args: [{ selector: "mapa-table", encapsulation: ViewEncapsulation.None, template: "<section class=\"mapa-table\" *ngIf=\"dataSource && dataSource.data && dataSource.data.length > 0\">\n <div class=\"mapa-table--show-on-mobile\">\n <div *ngFor=\"let row of dataSource.data.values(); let i = index\">\n <div class=\"mapa-table__card mapa__card\">\n <div *ngFor=\"let column of columns; let j = index; let isFirst = first\">\n <strong class=\"mapa-table__card--header\" *ngIf=\"column.key !== 'actions' && column.key !== 'menu'\">\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n class=\"hidden\"\n ></div>\n </strong>\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__card--floating-actions\"\n >\n <div *ngIf=\"hasActionsColumn()\" class=\"mapa-table__card--floating-content\">\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n \n <div class=\"mapa-table__column--menu\" *ngIf=\"hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"!hasActionsColumn() && hasMenuColumn()\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mapa-table--show-on-desktop\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n <ng-container\n *ngFor=\"let column of columns; let isFirst = first\"\n [matColumnDef]=\"column.key\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n <ng-container\n *ngIf=\"column.key !== 'actions' && column.key !== 'menu'; else columnActionsOrMenu\"\n >\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n <div\n *ngIf=\"column?.status?.color; else commonColumn\"\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n <ng-template #commonColumn>\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-template #columnActionsOrMenu>\n <div\n class=\"mapa-table__column--actions\"\n *ngIf=\"column.key === 'actions' && actions\"\n >\n <button\n *ngFor=\"let item of actions\"\n (click)=\"handleMenu({data: row, action: item.action})\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n </button>\n </div>\n <div class=\"mapa-table__column--menu\" *ngIf=\"column.key === 'menu'\">\n <mapa-menu\n *ngIf=\"hasIndividualMenu(row); else generalMenu\"\n [items]=\"row?.menu\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n <ng-template #generalMenu>\n <mapa-menu\n *ngIf=\"menuItems && menuItems.length > 0\"\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n </div>\n <section *ngIf=\"showPaginator\">\n <mat-paginator\n class=\"mapa-table__paginator-legacy\"\n itemsPerPageLabel=\"Item por p\u00E1gina\"\n appStylePaginatorMv\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n</section>\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n *ngIf=\"selection\"\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n </ng-container>\n <div>\n <span [innerHTML]=\"column.label\"></span>\n </div>\n <div *ngIf=\"column.key !== 'actions' && column.key !== 'menu' && column.sort\">\n <mat-icon>filter_list</mat-icon>\n </div>\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n <ng-container *ngIf=\"isFirst && checkbox\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n >\n </mat-checkbox>\n </ng-container>\n <!-- POR FAVOR, N\u00C3O QUEBRE LINHA ENTRE NG-CONTAINER/TEMPLATE E O VALOR CONTE\u00DADO -->\n <ng-container *ngIf=\"isMaskedData(column, row); else statusContent\"\n >{{ getValueAsDate(column, row) | date: column.mask }}</ng-container\n >\n <ng-template #statusContent>\n <ng-container *ngIf=\"column.status; else commonContent\">\n <ng-container *ngIf=\"isBoolean(column, row); else commonStatus\"\n ><span [innerHTML]=\"column.status.label[row[column.key] ? 1 : 0]\"></span\n ></ng-container>\n <ng-template #commonStatus\n ><span [innerHTML]=\"column.status.label[row[column.key]] || '-' \"></span\n ></ng-template>\n </ng-container>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n <ng-template #statusContent>\n <ng-template #commonContent\n ><span [innerHTML]=\"row[column.key]\"></span\n ></ng-template>\n </ng-template>\n</ng-template>\n", styles: [".mapa-table .mat-table{font-family:Inter,Arial,Helvetica,sans-serif;width:100%}.mapa-table .mat-table .mat-checkbox{margin:6px 8px 0 0;padding:0}.mapa-table td.mat-cell{padding:16px 0}.mapa-table .mat-table .mat-row .mat-cell{font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400;color:#50575e}.mapa-table .row-hover:hover{box-shadow:0 2px 4px #00000021;outline:1px solid rgba(238,238,238,.93);cursor:pointer}.mapa-table .mat-table .mat-header-cell{border:none;border-bottom:1px solid #eee;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:600;color:#50575e}.mapa-table .mat-mdc-row,.mapa-table .mdc-data-table__content,.mapa-table .mat-mdc-header-cell{--mat-table-row-item-label-text-font: \"Inter\", Arial, Helvetica, sans-serif}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-frame{border-color:#b6b6b6}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-frame{border-color:#ea561d}.mapa-table .mat-checkbox.mat-accent .mat-checkbox-background{background-color:transparent}.mapa-table .mat-checkbox.mat-accent.mat-checkbox-checked .mat-checkbox-background{background-color:#ea561d}.mapa-table .mat-mdc-paginator-container{display:flex;justify-content:space-between}.mapa-table ::ng-deep .mat-mdc-paginator-page-size-label{display:none}.mapa-table__paginator-legacy .mat-paginator-container{font-family:Inter!important;justify-content:flex-start}.mapa-table__paginator-legacy .mat-paginator-page-size{margin-right:10vw}.mapa-table__paginator-legacy .custom-paginator-container{justify-content:flex-end}.mapa-table__paginator-legacy .custom-paginator-counter{white-space:nowrap;margin:0 4px 0 10px!important}.mapa-table__paginator-legacy .custom-paginator-page{border-radius:4px;outline:none;border:none;margin:.4em;font-size:14px;min-width:24px;width:auto;min-height:24px;max-height:24px;padding:1px 6px}.mapa-table__paginator-legacy .custom-paginator-page-enabled{color:#50575e;background:transparent;cursor:pointer}.mapa-table__paginator-legacy .custom-paginator-page-enabled:hover{background-color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-page-disabled{background-color:#ea561d;color:#fff}.mapa-table__paginator-legacy .custom-paginator-arrow-disabled{color:#dfe3e6}.mapa-table__paginator-legacy .custom-paginator-arrow-enabled{color:#999}.hidden{display:none}.mapa-table{width:100%;white-space:nowrap}@media (min-width: 768px){.mapa-table--show-on-mobile{display:none}.mapa-table--show-on-desktop{display:block}}@media (max-width: 768px){.mapa-table--show-on-mobile{padding:20px}.mapa-table--show-on-mobile .mapa__card{width:unset!important}.mapa-table--show-on-desktop{display:none}}.mapa-table__card{position:relative;padding:24px;display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.mapa-table__card--floating-content{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:8px}.mapa-table__card--floating-actions{position:absolute;bottom:16px;right:16px;color:#ea561d}.mapa-table__card--header{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;font-size:12px;text-transform:uppercase}.mapa-table__card--header mat-icon{height:16px;width:16px;font-size:16px}.mapa-table__card--column{padding:16px 0}.mapa-table__label{margin-top:4px}.mapa-table__column{padding:15px;align-items:center;display:flex}.mapa-table__column--actions{display:flex}.mapa-table__column--actions .mat-icon{color:#ea561d!important}.mapa-table__column--actions-item{display:flex;align-items:center}.mapa-table__column--actions-item img{margin-right:8px}.mapa-table__column--header{width:100%}.mapa-table__column--header .mat-icon{cursor:pointer;position:relative;bottom:-3px;margin:0 7px;font-size:14px;height:14px;width:14px}.mapa-table__column--status{margin:auto;text-align:center;width:min-content;border-radius:4px;padding:4px 8px}.mapa-table__column--status-round{border-radius:50px}.mapa-table__column--ellipsis{display:inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mapa-table__column--no-wrap{white-space:nowrap}.mapa-table__column--wrap{white-space:pre-wrap}.mapa-table__column--center-cell{display:flex;align-items:center;justify-content:center;width:100%}.mapa-table__content--value{color:#fff;font-weight:500}.mapa-table .mat-sort-header-arrow{color:transparent}.mapa-table .mat-sort-header-content{width:100%!important}.mapa-table .mat-cell,.mapa-table .mat-header-cell{padding:0 10px!important}.mapa-table .mat-table{width:100%;overflow-x:auto}@media (max-width: 1000px){.mapa-table .mat-paginator-range-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.mapa-table .mat-paginator-range-label{padding:16px 0;text-align:center;width:100%}.mapa-table .mat-paginator-container{justify-content:center}}.mapa-table .classification{width:40px;height:40px;border-radius:24px;display:flex;justify-content:center;align-items:center}.mapa-table .roundCell{border-radius:10px}.mapa-table .general{border-radius:24px;border:1px solid #dcdcde;display:flex;justify-content:center;align-items:center;width:48px;height:48px}.mapa-table .name{color:#181818;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.mapa-table .cpf{color:#77838f;text-align:left;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.mapa-table .label_report{color:#181818;text-align:center;font-family:Inter,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:16px}\n", ".classification-1{background-color:#073e92;color:#fff}.classification-2{background-color:#0e6ece;color:#fff}.classification-3{background-color:#2d9ced;color:#000}.classification-4{background-color:#68ceee;color:#000}.classification-5{background-color:#96f2ee;color:#000}.classification-6{background-color:#f598a7;color:#000}.classification-7{background-color:#f56580;color:#000}.classification-8{background-color:#f4284e;color:#fff}.classification-9{background-color:#c11c2f;color:#fff}.small-dot{width:12px;height:12px;border-radius:12px;padding:0;margin:0}.dot{width:16px;height:16px;border-radius:16px;padding:0;margin:0}.indicator{display:flex;padding:2px 4px 2px 16px;justify-content:space-between;align-items:center;border-radius:8px;font-family:Inter,Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;font-weight:400}.display-S{font-family:Inter,Arial,Helvetica,sans-serif;font-size:20px;font-style:normal;font-weight:400}.display-L{font-family:Inter,Arial,Helvetica,sans-serif;font-size:32px;font-style:normal;font-weight:400}.display-XG{font-family:Inter,Arial,Helvetica,sans-serif;font-size:48px;font-style:normal;font-weight:400}*{transition:opacity .4s ease-out,max-height .4s ease-out}\n"] }]
279
279
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
280
280
  type: Input
281
281
  }], data: [{
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
320
320
  type: ViewChild,
321
321
  args: [MatSort]
322
322
  }] } });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwYS1saWJyYXJ5LXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwYS1saWJyYXJ5LXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFZeEQsTUFBTSxPQUFPLGtCQUFrQjtJQWdDN0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEvQmpDLFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBQzVCLFNBQUksR0FBYSxFQUFFLENBQUM7UUFDcEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUt2QixjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FB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UTtzQkFBakIsTUFBTTtnQkFHRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFa0MsU0FBUztzQkFBakQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUNuQixJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5cbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgUGFnZUV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xuaW1wb3J0IHsgTWF0U29ydCwgU29ydCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVcIjtcblxuaW1wb3J0IHsgUm93Q2xpY2tFdmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2ludGVyZmFjZXMvdGFibGUtcm93LWNsaWNrLWV2ZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9pbnRlcmZhY2VzL3RhYmxlLWNvbHVtbi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSBcIi4uLy4uL21lbnUvcHVibGljLWFwaVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWFwYS10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1xuICAgIFwiLi90YWJsZS5jb21wb25lbnQuc2Nzc1wiLFxuICAgIFwiLi8uLi8uLi9jYXBhYmlsaXR5L3N0eWxlcy9jYXBhYmlsaXR5LnNjc3NcIixcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWFwYVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgZGF0YTogT2JqZWN0W10gPSBbXTtcbiAgQElucHV0KCkgcGFnZUluZGV4OiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gNTtcbiAgQElucHV0KCkgdG90YWxDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgdG90YWxQYWdlczogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgY2hlY2tib3g6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8YW55PiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYWN0aW9ucz86IE1lbnVJdGVtW10gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZpbHRlckNvbnRyb2w6IEZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgbWVudTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgdHJpZ2dlciE6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBPdXRwdXQoKSByb3dDbGljazogRXZlbnRFbWl0dGVyPFJvd0NsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBSb3dDbGlja0V2ZW50XG4gID4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93czogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvblNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyByZWFkOiB0cnVlIH0pIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcblxuICBjaGVja2JveEdyb3VwITogRm9ybUdyb3VwO1xuICBkYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPE9iamVjdD47XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIGN1cnJlbnRTb3J0OiBTb3J0IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5kYXRhKTtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IGNvbHVtbi5rZXkpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1tcImRhdGFcIl0pIHtcbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gY2hhbmdlc1tcImRhdGFcIl0uY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IGNvbHVtbi5rZXkpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbXCJmaWx0ZXJDb250cm9sXCJdICYmIHRoaXMuZmlsdGVyQ29udHJvbCkge1xuICAgICAgdGhpcy5zZXR1cEZpbHRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwRmlsdGVyKCkge1xuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuZmlsdGVyQ29udHJvbCEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhOiBhbnksIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSBPYmplY3Qua2V5cyhkYXRhKVxuICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRUZXJtLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGN1cnJlbnRUZXJtICtcbiAgICAgICAgICAgICAgKChkYXRhW2tleV0gJiYgZGF0YVtrZXldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgfHwgXCJcIikgK1xuICAgICAgICAgICAgICBcIiBcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCBcIlwiKVxuICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gZGF0YVN0ci5pbmRleE9mKGZpbHRlcikgIT09IC0xO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0b2dnbGVBbGxSb3dzKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRhdGFBc1BlcmlvZGljRWxlbWVudHMgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YSBhcyBhbnlbXTtcbiAgICAgICAgZGF0YUFzUGVyaW9kaWNFbGVtZW50cy5mb3JFYWNoKChyb3cpID0+IHRoaXMuc2VsZWN0aW9uPy5zZWxlY3Qocm93KSk7XG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICBpZiAoIXJvdykge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyBcImRlc2VsZWN0XCIgOiBcInNlbGVjdFwifSBhbGxgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/IFwiZGVzZWxlY3RcIiA6IFwic2VsZWN0XCJ9IHJvdyAke3Jvdy5wb3NpdGlvbiArIDFcbiAgICAgICAgfWA7XG4gICAgfVxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgc29ydERhdGEoY29sdW1uOiBUYWJsZUNvbHVtbik6IHZvaWQge1xuICAgIGlmIChjb2x1bW4uc29ydCkge1xuICAgICAgY29uc3Qgc29ydDogU29ydCA9IHsgYWN0aXZlOiBjb2x1bW4ua2V5LCBkaXJlY3Rpb246IFwiYXNjXCIgfTtcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0ICYmXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQuYWN0aXZlID09PSBjb2x1bW4ua2V5ICYmXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9uID09PSBcImFzY1wiXG4gICAgICApIHtcbiAgICAgICAgc29ydC5kaXJlY3Rpb24gPSBcImRlc2NcIjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50U29ydCA9IHNvcnQ7XG4gICAgICB0aGlzLnNvcnREYXRhRnVuY3Rpb24oc29ydCk7XG4gICAgfVxuICB9XG5cbiAgc29ydERhdGFGdW5jdGlvbihzb3J0OiBTb3J0KSB7XG4gICAgdGhpcy5vblNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcbiAgfVxuXG4gIGVtaXRSb3dDbGljayhyb3c6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCByb3dEYXRhOiBSb3dDbGlja0V2ZW50ID0geyByb3csIGFjdGlvbiB9O1xuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3dEYXRhKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvbihyb3c6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdChyb3cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdyk7XG4gICAgICB9XG4gICAgICB0aGlzLmdldFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0ZWRWYWx1ZXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5tYXAoKHJvdykgPT4ge1xuICAgICAgICByZXR1cm4geyByb3cgfTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZW1pdChzZWxlY3RlZFJvd3MpO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlQ29sdW1ucygpIHtcbiAgICBsZXQgY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFt7IGtleTogXCJuYW1lXCIsIGxhYmVsOiBcIlwiLCBzb3J0OiBmYWxzZSB9XTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cblxuICBjb2x1bW5FeGlzdHMoY29sdW1uczogVGFibGVDb2x1bW5bXSwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG4gIH1cblxuICBnZW5lcmF0ZUdyb3VwRGF0YSgpIHtcbiAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdO1xuXG4gICAgdGhpcy5kYXRhID0gcmVzdWx0O1xuICB9XG5cbiAgaXNCb29sZWFuKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiByb3dbY29sdW1uLmtleV0gPT09IFwiYm9vbGVhblwiO1xuICB9XG5cbiAgaXNNYXNrZWREYXRhKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybWF0cyA9IFttb21lbnQuSVNPXzg2MDEsIFwiTU0vREQvWVlZWSAgOikgIEhIKm1tKnNzXCJdO1xuICAgIGNvbnN0IGlzRGF0ZSA9IG1vbWVudChyb3dbY29sdW1uLmtleV0sIGZvcm1hdHMsIHRydWUpLmlzVmFsaWQoKTtcbiAgICByZXR1cm4gKGNvbHVtbi5tYXNrICYmIGlzRGF0ZSkgfHwgZmFsc2U7XG4gIH1cblxuICBnZXRWYWx1ZUFzRGF0ZShjb2x1bW46IFRhYmxlQ29sdW1uLCByb3c6IGFueSk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShyb3dbY29sdW1uLmtleV0pO1xuICB9XG5cbiAgZ2V0Q2VsbENsYXNzKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoXG4gICAgICBjb2x1bW4ua2V5ID09PSBcIm5hbWVcIiB8fFxuICAgICAgY29sdW1uLmtleSA9PT0gXCJjcGZcIiB8fFxuICAgICAgY29sdW1uLmtleSA9PT0gXCJnZW5lcmFsXCJcbiAgICApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGBjbGFzc2lmaWNhdGlvbmA7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cblxuICBnZXRDZWxsQmcoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgIGNvbHVtbi5rZXkgPT09IFwibmFtZVwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImNwZlwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImdlbmVyYWxcIlxuICAgICkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBiZyA9IHJvd1tjb2x1bW4ua2V5XT8uY2xhc3NpZmljYXRpb25Db2xvcjtcbiAgICAgIHJldHVybiBiZztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxuXG4gIGdldENlbGxUZXh0Q29sb3IoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgIGNvbHVtbi5rZXkgPT09IFwibmFtZVwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImNwZlwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImdlbmVyYWxcIlxuICAgICkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb2xvciA9IHJvd1tjb2x1bW4ua2V5XT8uY2xhc3NpZmljYXRpb25UZXh0Q29sb3IhO1xuICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWUocm93OiB7IHZhbHVlOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChyb3cudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHJvdy52YWx1ZSArIFwiJVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiLVwiO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFwiLVwiO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVBhZ2UoZXZlbnQ/OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlUGFnZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgdGhpcy50cmlnZ2VyLm9wZW5NZW51KCk7XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kQ29sb3IoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2x1bW4uc3RhdHVzPy5jb2xvcj8uW3Jvd1tjb2x1bW4ua2V5XSB8fCAwXSB8fCBcIlwiO1xuICB9XG5cbiAgZ2V0VGV4dENvbG9yKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sdW1uLnN0YXR1cz8udGV4dENvbG9yPy5bcm93W2NvbHVtbi5rZXldIHx8IDBdIHx8IFwiXCI7XG4gIH1cblxuXG4gIGhhc0N1c3RvbUNsYXNzKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55LCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIGNvbHVtbj8uY2xhc3MgfHxcbiAgICAgIHJvdz8ucm93U3R5bGVDbGFzcyB8fFxuICAgICAgdGhpcy5oYXNDZWxsU3R5bGVDbGFzcyhyb3csIGtleSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRDdXN0b21DbGFzcyhjb2x1bW46IFRhYmxlQ29sdW1uLCByb3c6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhhc0NlbGxTdHlsZUNsYXNzKHJvdywga2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFN0eWxlQ2xhc3Mocm93LCBjb2x1bW4ua2V5KTtcbiAgICB9IGVsc2UgaWYgKGNvbHVtbj8uY2xhc3MpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uY2xhc3M7XG4gICAgfSBlbHNlIGlmIChyb3c/LnJvd1N0eWxlQ2xhc3MpIHtcbiAgICAgIHJldHVybiByb3cucm93U3R5bGVDbGFzcztcbiAgICB9XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBoYXNDZWxsU3R5bGVDbGFzcyhyb3c6IGFueSwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnN0eWxlQ2xhc3M/LmtleSA9PT0ga2V5O1xuICB9XG5cbiAgZ2V0Q2VsbFN0eWxlQ2xhc3Mocm93OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm93LnN0eWxlQ2xhc3M/LmtleSA9PT0ga2V5ID8gcm93LnN0eWxlQ2xhc3M/LmNsYXNzIDogXCJcIjtcbiAgfVxuXG4gIGhhbmRsZU1lbnUoc2VsZWN0ZWQ6IGFueSkge1xuICAgIHRoaXMuZW1pdFJvd0NsaWNrKHNlbGVjdGVkLmRhdGEsIHNlbGVjdGVkLmFjdGlvbik7XG4gIH1cblxuICBoYXNJbmRpdmlkdWFsTWVudShyb3c6IE9iamVjdCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmIChyb3cgJiYgKHJvdyBhcyBhbnkpLm1lbnUgJiYgKHJvdyBhcyBhbnkpLm1lbnUubGVuZ3RoID4gMCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1zKHJvdzogT2JqZWN0IHwgdW5kZWZpbmVkKTogTWVudUl0ZW1bXSB7XG4gICAgaWYgKHJvdyAmJiAocm93IGFzIGFueSkubWVudSAmJiAocm93IGFzIGFueSkubWVudS5sZW5ndGggPiAwKSByZXR1cm4gKHJvdyBhcyBhbnkpLm1lbnU7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaGFzQWN0aW9uc0NvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKGNvbHVtbikgPT4gY29sdW1uLmtleS5pbmNsdWRlcygnYWN0aW9ucycpKTtcbiAgfVxuXG4gIGhhc01lbnVDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5rZXkuaW5jbHVkZXMoJ21lbnUnKSk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwibWFwYS10YWJsZVwiICpuZ0lmPVwiZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLmRhdGEgJiYgZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA+IDBcIj5cbiAgPGRpdiBjbGFzcz1cIm1hcGEtdGFibGUtLXNob3ctb24tbW9iaWxlXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFTb3VyY2UuZGF0YS52YWx1ZXMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcGEtdGFibGVfX2NhcmQgbWFwYV9fY2FyZFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGogPSBpbmRleDsgbGV0IGlzRmlyc3QgPSBmaXJzdFwiPlxuICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJtYXBhLXRhYmxlX19jYXJkLS1oZWFkZXJcIiAqbmdJZj1cImNvbHVtbi5rZXkgIT09ICdhY3Rpb25zJyAmJiBjb2x1bW4ua2V5ICE9PSAnbWVudSdcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVIZWFkZXJcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3Rpb24sIGNvbHVtbiwgaXNGaXJzdCwgY2hlY2tib3ggfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX2NhcmQtLWNvbHVtblwiXG4gICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS1jZW50ZXItY2VsbF09XCJjb2x1bW4/LmFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5rZXkgIT09ICdhY3Rpb25zJyAmJiBjb2x1bW4ua2V5ICE9PSAnbWVudSc7IGVsc2UgY29sdW1uQWN0aW9uc09yTWVudVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBhLXRhYmxlX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbj8ud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcGEtdGFibGVfX2NvbHVtbi0tZWxsaXBzaXNdPVwiY29sdW1uPy5jb2xsYXBzZSA9PT0gJ292ZXJmbG93J1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS1uby13cmFwXT1cImNvbHVtbj8uY29sbGFwc2UgPT09ICduby13cmFwJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS13cmFwXT1cImNvbHVtbj8uY29sbGFwc2UgPT09ICd3cmFwJ1wiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbaGFzQ3VzdG9tQ2xhc3MoY29sdW1uLCByb3csIGNvbHVtbi5rZXkpID8gZ2V0Q3VzdG9tQ2xhc3MoY29sdW1uLCByb3csIGNvbHVtbi5rZXkpIDogJyddXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uPy5zdGF0dXM/LmNvbG9yOyBlbHNlIGNvbW1vbkNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldEJhY2tncm91bmRDb2xvcihjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yKGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXBhLXRhYmxlX19jb2x1bW4tLXN0YXR1cy1yb3VuZF09XCJjb2x1bW4uc3RhdHVzPy5zdHlsZSA9PSAncm91bmQnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc2VsZWN0aW9uLCBjb2x1bW4sIGlzRmlyc3QsIGNoZWNrYm94LCByb3cgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb21tb25Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHNlbGVjdGlvbiwgY29sdW1uLCBpc0ZpcnN0LCBjaGVja2JveCwgcm93IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2x1bW5BY3Rpb25zT3JNZW51PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXBhLXRhYmxlX19jYXJkLS1mbG9hdGluZy1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNBY3Rpb25zQ29sdW1uKClcIiBjbGFzcz1cIm1hcGEtdGFibGVfX2NhcmQtLWZsb2F0aW5nLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVNZW51KHtkYXRhOiByb3csIGFjdGlvbjogaXRlbS5hY3Rpb259KVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1hY3Rpb25zLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmltYWdlXCIgW3NyY109XCJpdGVtLmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1tZW51XCIgKm5nSWY9XCJoYXNNZW51Q29sdW1uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hcGEtbWVudVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzSW5kaXZpZHVhbE1lbnUocm93KTsgZWxzZSBnZW5lcmFsTWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldE1lbnVJdGVtcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIChlbWl0TWVudSk9XCJoYW5kbGVNZW51KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9tYXBhLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ2VuZXJhbE1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hcGEtbWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51SXRlbXMgJiYgbWVudUl0ZW1zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm1lbnVJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGVtaXRNZW51KT1cImhhbmRsZU1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbWFwYS1tZW51PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1tZW51XCIgKm5nSWY9XCIhaGFzQWN0aW9uc0NvbHVtbigpICYmIGhhc01lbnVDb2x1bW4oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXBhLW1lbnVcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzSW5kaXZpZHVhbE1lbnUocm93KTsgZWxzZSBnZW5lcmFsTWVudVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZ2V0TWVudUl0ZW1zKHJvdylcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIChlbWl0TWVudSk9XCJoYW5kbGVNZW51KCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L21hcGEtbWVudT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2dlbmVyYWxNZW51PlxuICAgICAgICAgICAgICAgICAgPG1hcGEtbWVudVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnVJdGVtcyAmJiBtZW51SXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJtZW51SXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAoZW1pdE1lbnUpPVwiaGFuZGxlTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L21hcGEtbWVudT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWFwYS10YWJsZS0tc2hvdy1vbi1kZXNrdG9wXCI+XG4gICAgPHRhYmxlXG4gICAgICBtYXQtdGFibGVcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgbWF0U29ydFxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydERhdGFGdW5jdGlvbigkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGlzRmlyc3QgPSBmaXJzdFwiXG4gICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmtleVwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgbWF0LXNvcnQtaGVhZGVyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY29sdW1uLmtleSAhPT0gJ2FjdGlvbnMnID8gY29sdW1uLnNvcnQgOiBudWxsKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZUhlYWRlclwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3Rpb24sIGNvbHVtbiwgaXNGaXJzdCwgY2hlY2tib3ggfVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgW3N0eWxlLndpZHRoXT1cImNvbHVtbj8ud2lkdGhcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX2NvbHVtblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJvd0NsaWNrKHJvdywgJycpXCJcbiAgICAgICAgICAgIFtjbGFzcy5tYXBhLXRhYmxlX19jb2x1bW4tLWNlbnRlci1jZWxsXT1cImNvbHVtbj8uYWxpZ24gPT09ICdjZW50ZXInXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmtleSAhPT0gJ2FjdGlvbnMnICYmIGNvbHVtbi5rZXkgIT09ICdtZW51JzsgZWxzZSBjb2x1bW5BY3Rpb25zT3JNZW51XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcGEtdGFibGVfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uPy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS1lbGxpcHNpc109XCJjb2x1bW4/LmNvbGxhcHNlID09PSAnb3ZlcmZsb3cnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXBhLXRhYmxlX19jb2x1bW4tLW5vLXdyYXBdPVwiY29sdW1uPy5jb2xsYXBzZSA9PT0gJ25vLXdyYXAnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXBhLXRhYmxlX19jb2x1bW4tLXdyYXBdPVwiY29sdW1uPy5jb2xsYXBzZSA9PT0gJ3dyYXAnXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltoYXNDdXN0b21DbGFzcyhjb2x1bW4sIHJvdywgY29sdW1uLmtleSkgPyBnZXRDdXN0b21DbGFzcyhjb2x1bW4sIHJvdywgY29sdW1uLmtleSkgOiAnJ11cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LnN0YXR1cz8uY29sb3I7IGVsc2UgY29tbW9uQ29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXBhLXRhYmxlX19jb2x1bW4tLXN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZ2V0QmFja2dyb3VuZENvbG9yKGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3IoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcGEtdGFibGVfX2NvbHVtbi0tc3RhdHVzLXJvdW5kXT1cImNvbHVtbi5zdGF0dXM/LnN0eWxlID09ICdyb3VuZCdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3Rpb24sIGNvbHVtbiwgaXNGaXJzdCwgY2hlY2tib3gsIHJvdyB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbW1vbkNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc2VsZWN0aW9uLCBjb2x1bW4sIGlzRmlyc3QsIGNoZWNrYm94LCByb3cgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbHVtbkFjdGlvbnNPck1lbnU+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX2NvbHVtbi0tYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnYWN0aW9ucycgJiYgYWN0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVNZW51KHtkYXRhOiByb3csIGFjdGlvbjogaXRlbS5hY3Rpb259KVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX2NvbHVtbi0tYWN0aW9ucy1pdGVtXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRleHRcIlxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCI+e3tpdGVtLmljb259fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbS5pbWFnZVwiIFtzcmNdPVwiaXRlbS5pbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1tZW51XCIgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnbWVudSdcIj5cbiAgICAgICAgICAgICAgICA8bWFwYS1tZW51XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0luZGl2aWR1YWxNZW51KHJvdyk7IGVsc2UgZ2VuZXJhbE1lbnVcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInJvdz8ubWVudVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgKGVtaXRNZW51KT1cImhhbmRsZU1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvbWFwYS1tZW51PlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ2VuZXJhbE1lbnU+XG4gICAgICAgICAgICAgICAgICA8bWFwYS1tZW51XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudUl0ZW1zICYmIG1lbnVJdGVtcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm1lbnVJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgIChlbWl0TWVudSk9XCJoYW5kbGVNZW51KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvbWFwYS1tZW51PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyXG4gICAgICAgIG1hdC1yb3dcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcbiAgICAgICAgY2xhc3M9XCJyb3ctaG92ZXJcIlxuICAgICAgPjwvdHI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG4gIDxzZWN0aW9uICpuZ0lmPVwic2hvd1BhZ2luYXRvclwiPlxuICAgIDxtYXQtcGFnaW5hdG9yXG4gICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX3BhZ2luYXRvci1sZWdhY3lcIlxuICAgICAgaXRlbXNQZXJQYWdlTGFiZWw9XCJJdGVtIHBvciBww6FnaW5hXCJcbiAgICAgIGFwcFN0eWxlUGFnaW5hdG9yTXZcbiAgICAgIFtsZW5ndGhdPVwidG90YWxDb3VudFwiXG4gICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCAxMDBdXCJcbiAgICAgIChwYWdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiXG4gICAgPjwvbWF0LXBhZ2luYXRvcj5cbiAgPC9zZWN0aW9uPlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGVcbiAgI3RhYmxlSGVhZGVyXG4gIGxldC1zZWxlY3Rpb249XCJzZWxlY3Rpb25cIlxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgbGV0LWlzRmlyc3Q9XCJpc0ZpcnN0XCJcbiAgbGV0LWNoZWNrYm94PVwiY2hlY2tib3hcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaXJzdCAmJiBjaGVja2JveFwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICpuZ0lmPVwic2VsZWN0aW9uXCJcbiAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93cygpIDogbnVsbFwiXG4gICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgPjwvbWF0LWNoZWNrYm94PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdj5cbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbHVtbi5sYWJlbFwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJjb2x1bW4ua2V5ICE9PSAnYWN0aW9ucycgJiYgY29sdW1uLmtleSAhPT0gJ21lbnUnICYmIGNvbHVtbi5zb3J0XCI+XG4gICAgPG1hdC1pY29uPmZpbHRlcl9saXN0PC9tYXQtaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI3RhYmxlQ29udGVudFxuICBsZXQtc2VsZWN0aW9uPVwic2VsZWN0aW9uXCJcbiAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gIGxldC1pc0ZpcnN0PVwiaXNGaXJzdFwiXG4gIGxldC1jaGVja2JveD1cImNoZWNrYm94XCJcbiAgbGV0LXJvdz1cInJvd1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0ICYmIGNoZWNrYm94XCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbj8udG9nZ2xlKHJvdykgOiBudWxsOyBnZXRTZWxlY3RlZFZhbHVlcygpXCJcbiAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbj8uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgPlxuICAgIDwvbWF0LWNoZWNrYm94PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSBQT1IgRkFWT1IsIE7Dg08gUVVFQlJFIExJTkhBIEVOVFJFIE5HLUNPTlRBSU5FUi9URU1QTEFURSBFIE8gVkFMT1IgQ09OVEXDmkRPICAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTWFza2VkRGF0YShjb2x1bW4sIHJvdyk7IGVsc2Ugc3RhdHVzQ29udGVudFwiXG4gICAgPnt7IGdldFZhbHVlQXNEYXRlKGNvbHVtbiwgcm93KSB8IGRhdGU6IGNvbHVtbi5tYXNrIH19PC9uZy1jb250YWluZXJcbiAgPlxuICA8bmctdGVtcGxhdGUgI3N0YXR1c0NvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5zdGF0dXM7IGVsc2UgY29tbW9uQ29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQm9vbGVhbihjb2x1bW4sIHJvdyk7IGVsc2UgY29tbW9uU3RhdHVzXCJcbiAgICAgICAgPjxzcGFuIFtpbm5lckhUTUxdPVwiY29sdW1uLnN0YXR1cy5sYWJlbFtyb3dbY29sdW1uLmtleV0gPyAxIDogMF1cIj48L3NwYW5cbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tbW9uU3RhdHVzXG4gICAgICAgID48c3BhbiBbaW5uZXJIVE1MXT1cImNvbHVtbi5zdGF0dXMubGFiZWxbcm93W2NvbHVtbi5rZXldXSB8fCAnLScgXCI+PC9zcGFuXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2NvbW1vbkNvbnRlbnRcbiAgICAgID48c3BhbiBbaW5uZXJIVE1MXT1cInJvd1tjb2x1bW4ua2V5XVwiPjwvc3BhblxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3N0YXR1c0NvbnRlbnQ+XG4gICAgPG5nLXRlbXBsYXRlICNjb21tb25Db250ZW50XG4gICAgICA+PHNwYW4gW2lubmVySFRNTF09XCJyb3dbY29sdW1uLmtleV1cIj48L3NwYW5cbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwYS1saWJyYXJ5LXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwYS1saWJyYXJ5LXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFZeEQsTUFBTSxPQUFPLGtCQUFrQjtJQWdDN0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEvQmpDLFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBQzVCLFNBQUksR0FBYSxFQUFFLENBQUM7UUFDcEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUt2QixjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FB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UTtzQkFBakIsTUFBTTtnQkFHRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFa0MsU0FBUztzQkFBakQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUNuQixJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5cbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgUGFnZUV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xuaW1wb3J0IHsgTWF0U29ydCwgU29ydCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVcIjtcblxuaW1wb3J0IHsgUm93Q2xpY2tFdmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2ludGVyZmFjZXMvdGFibGUtcm93LWNsaWNrLWV2ZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9pbnRlcmZhY2VzL3RhYmxlLWNvbHVtbi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSBcIi4uLy4uL21lbnUvcHVibGljLWFwaVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWFwYS10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1xuICAgIFwiLi90YWJsZS5jb21wb25lbnQuc2Nzc1wiLFxuICAgIFwiLi8uLi8uLi9jYXBhYmlsaXR5L3N0eWxlcy9jYXBhYmlsaXR5LnNjc3NcIixcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWFwYVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgZGF0YTogT2JqZWN0W10gPSBbXTtcbiAgQElucHV0KCkgcGFnZUluZGV4OiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gNTtcbiAgQElucHV0KCkgdG90YWxDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgdG90YWxQYWdlczogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgY2hlY2tib3g6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8YW55PiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYWN0aW9ucz86IE1lbnVJdGVtW10gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZpbHRlckNvbnRyb2w6IEZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgbWVudTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgdHJpZ2dlciE6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBPdXRwdXQoKSByb3dDbGljazogRXZlbnRFbWl0dGVyPFJvd0NsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBSb3dDbGlja0V2ZW50XG4gID4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93czogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvblNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyByZWFkOiB0cnVlIH0pIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcblxuICBjaGVja2JveEdyb3VwITogRm9ybUdyb3VwO1xuICBkYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPE9iamVjdD47XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIGN1cnJlbnRTb3J0OiBTb3J0IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5kYXRhKTtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IGNvbHVtbi5rZXkpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1tcImRhdGFcIl0pIHtcbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gY2hhbmdlc1tcImRhdGFcIl0uY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IGNvbHVtbi5rZXkpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbXCJmaWx0ZXJDb250cm9sXCJdICYmIHRoaXMuZmlsdGVyQ29udHJvbCkge1xuICAgICAgdGhpcy5zZXR1cEZpbHRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwRmlsdGVyKCkge1xuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuZmlsdGVyQ29udHJvbCEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhOiBhbnksIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSBPYmplY3Qua2V5cyhkYXRhKVxuICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRUZXJtLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGN1cnJlbnRUZXJtICtcbiAgICAgICAgICAgICAgKChkYXRhW2tleV0gJiYgZGF0YVtrZXldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgfHwgXCJcIikgK1xuICAgICAgICAgICAgICBcIiBcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCBcIlwiKVxuICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gZGF0YVN0ci5pbmRleE9mKGZpbHRlcikgIT09IC0xO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0b2dnbGVBbGxSb3dzKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRhdGFBc1BlcmlvZGljRWxlbWVudHMgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YSBhcyBhbnlbXTtcbiAgICAgICAgZGF0YUFzUGVyaW9kaWNFbGVtZW50cy5mb3JFYWNoKChyb3cpID0+IHRoaXMuc2VsZWN0aW9uPy5zZWxlY3Qocm93KSk7XG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja2JveExhYmVsKHJvdz86IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICBpZiAoIXJvdykge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyBcImRlc2VsZWN0XCIgOiBcInNlbGVjdFwifSBhbGxgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/IFwiZGVzZWxlY3RcIiA6IFwic2VsZWN0XCJ9IHJvdyAke3Jvdy5wb3NpdGlvbiArIDFcbiAgICAgICAgfWA7XG4gICAgfVxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgc29ydERhdGEoY29sdW1uOiBUYWJsZUNvbHVtbik6IHZvaWQge1xuICAgIGlmIChjb2x1bW4uc29ydCkge1xuICAgICAgY29uc3Qgc29ydDogU29ydCA9IHsgYWN0aXZlOiBjb2x1bW4ua2V5LCBkaXJlY3Rpb246IFwiYXNjXCIgfTtcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0ICYmXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQuYWN0aXZlID09PSBjb2x1bW4ua2V5ICYmXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9uID09PSBcImFzY1wiXG4gICAgICApIHtcbiAgICAgICAgc29ydC5kaXJlY3Rpb24gPSBcImRlc2NcIjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50U29ydCA9IHNvcnQ7XG4gICAgICB0aGlzLnNvcnREYXRhRnVuY3Rpb24oc29ydCk7XG4gICAgfVxuICB9XG5cbiAgc29ydERhdGFGdW5jdGlvbihzb3J0OiBTb3J0KSB7XG4gICAgdGhpcy5vblNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcbiAgfVxuXG4gIGVtaXRSb3dDbGljayhyb3c6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCByb3dEYXRhOiBSb3dDbGlja0V2ZW50ID0geyByb3csIGFjdGlvbiB9O1xuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3dEYXRhKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvbihyb3c6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdChyb3cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdyk7XG4gICAgICB9XG4gICAgICB0aGlzLmdldFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0ZWRWYWx1ZXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5tYXAoKHJvdykgPT4ge1xuICAgICAgICByZXR1cm4geyByb3cgfTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZW1pdChzZWxlY3RlZFJvd3MpO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlQ29sdW1ucygpIHtcbiAgICBsZXQgY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFt7IGtleTogXCJuYW1lXCIsIGxhYmVsOiBcIlwiLCBzb3J0OiBmYWxzZSB9XTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cblxuICBjb2x1bW5FeGlzdHMoY29sdW1uczogVGFibGVDb2x1bW5bXSwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG4gIH1cblxuICBnZW5lcmF0ZUdyb3VwRGF0YSgpIHtcbiAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdO1xuXG4gICAgdGhpcy5kYXRhID0gcmVzdWx0O1xuICB9XG5cbiAgaXNCb29sZWFuKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiByb3dbY29sdW1uLmtleV0gPT09IFwiYm9vbGVhblwiO1xuICB9XG5cbiAgaXNNYXNrZWREYXRhKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybWF0cyA9IFttb21lbnQuSVNPXzg2MDEsIFwiTU0vREQvWVlZWSAgOikgIEhIKm1tKnNzXCJdO1xuICAgIGNvbnN0IGlzRGF0ZSA9IG1vbWVudChyb3dbY29sdW1uLmtleV0sIGZvcm1hdHMsIHRydWUpLmlzVmFsaWQoKTtcbiAgICByZXR1cm4gKGNvbHVtbi5tYXNrICYmIGlzRGF0ZSkgfHwgZmFsc2U7XG4gIH1cblxuICBnZXRWYWx1ZUFzRGF0ZShjb2x1bW46IFRhYmxlQ29sdW1uLCByb3c6IGFueSk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShyb3dbY29sdW1uLmtleV0pO1xuICB9XG5cbiAgZ2V0Q2VsbENsYXNzKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoXG4gICAgICBjb2x1bW4ua2V5ID09PSBcIm5hbWVcIiB8fFxuICAgICAgY29sdW1uLmtleSA9PT0gXCJjcGZcIiB8fFxuICAgICAgY29sdW1uLmtleSA9PT0gXCJnZW5lcmFsXCJcbiAgICApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGBjbGFzc2lmaWNhdGlvbmA7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cblxuICBnZXRDZWxsQmcoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgIGNvbHVtbi5rZXkgPT09IFwibmFtZVwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImNwZlwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImdlbmVyYWxcIlxuICAgICkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBiZyA9IHJvd1tjb2x1bW4ua2V5XT8uY2xhc3NpZmljYXRpb25Db2xvcjtcbiAgICAgIHJldHVybiBiZztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxuXG4gIGdldENlbGxUZXh0Q29sb3IoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgIGNvbHVtbi5rZXkgPT09IFwibmFtZVwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImNwZlwiIHx8XG4gICAgICBjb2x1bW4ua2V5ID09PSBcImdlbmVyYWxcIlxuICAgICkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb2xvciA9IHJvd1tjb2x1bW4ua2V5XT8uY2xhc3NpZmljYXRpb25UZXh0Q29sb3IhO1xuICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWUocm93OiB7IHZhbHVlOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChyb3cudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHJvdy52YWx1ZSArIFwiJVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiLVwiO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFwiLVwiO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVBhZ2UoZXZlbnQ/OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlUGFnZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgdGhpcy50cmlnZ2VyLm9wZW5NZW51KCk7XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kQ29sb3IoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2x1bW4uc3RhdHVzPy5jb2xvcj8uW3Jvd1tjb2x1bW4ua2V5XSB8fCAwXSB8fCBcIlwiO1xuICB9XG5cbiAgZ2V0VGV4dENvbG9yKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sdW1uLnN0YXR1cz8udGV4dENvbG9yPy5bcm93W2NvbHVtbi5rZXldIHx8IDBdIHx8IFwiXCI7XG4gIH1cblxuXG4gIGhhc0N1c3RvbUNsYXNzKGNvbHVtbjogVGFibGVDb2x1bW4sIHJvdzogYW55LCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIGNvbHVtbj8uY2xhc3MgfHxcbiAgICAgIHJvdz8ucm93U3R5bGVDbGFzcyB8fFxuICAgICAgdGhpcy5oYXNDZWxsU3R5bGVDbGFzcyhyb3csIGtleSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRDdXN0b21DbGFzcyhjb2x1bW46IFRhYmxlQ29sdW1uLCByb3c6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhhc0NlbGxTdHlsZUNsYXNzKHJvdywga2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFN0eWxlQ2xhc3Mocm93LCBjb2x1bW4ua2V5KTtcbiAgICB9IGVsc2UgaWYgKGNvbHVtbj8uY2xhc3MpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uY2xhc3M7XG4gICAgfSBlbHNlIGlmIChyb3c/LnJvd1N0eWxlQ2xhc3MpIHtcbiAgICAgIHJldHVybiByb3cucm93U3R5bGVDbGFzcztcbiAgICB9XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBoYXNDZWxsU3R5bGVDbGFzcyhyb3c6IGFueSwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnN0eWxlQ2xhc3M/LmtleSA9PT0ga2V5O1xuICB9XG5cbiAgZ2V0Q2VsbFN0eWxlQ2xhc3Mocm93OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm93LnN0eWxlQ2xhc3M/LmtleSA9PT0ga2V5ID8gcm93LnN0eWxlQ2xhc3M/LmNsYXNzIDogXCJcIjtcbiAgfVxuXG4gIGhhbmRsZU1lbnUoc2VsZWN0ZWQ6IGFueSkge1xuICAgIHRoaXMuZW1pdFJvd0NsaWNrKHNlbGVjdGVkLmRhdGEsIHNlbGVjdGVkLmFjdGlvbik7XG4gIH1cblxuICBoYXNJbmRpdmlkdWFsTWVudShyb3c6IE9iamVjdCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmIChyb3cgJiYgKHJvdyBhcyBhbnkpLm1lbnUgJiYgKHJvdyBhcyBhbnkpLm1lbnUubGVuZ3RoID4gMCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1zKHJvdzogT2JqZWN0IHwgdW5kZWZpbmVkKTogTWVudUl0ZW1bXSB7XG4gICAgaWYgKHJvdyAmJiAocm93IGFzIGFueSkubWVudSAmJiAocm93IGFzIGFueSkubWVudS5sZW5ndGggPiAwKSByZXR1cm4gKHJvdyBhcyBhbnkpLm1lbnU7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaGFzQWN0aW9uc0NvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKGNvbHVtbikgPT4gY29sdW1uLmtleS5pbmNsdWRlcygnYWN0aW9ucycpKTtcbiAgfVxuXG4gIGhhc01lbnVDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5rZXkuaW5jbHVkZXMoJ21lbnUnKSk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwibWFwYS10YWJsZVwiICpuZ0lmPVwiZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLmRhdGEgJiYgZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA+IDBcIj5cbiAgPGRpdiBjbGFzcz1cIm1hcGEtdGFibGUtLXNob3ctb24tbW9iaWxlXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFTb3VyY2UuZGF0YS52YWx1ZXMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcGEtdGFibGVfX2NhcmQgbWFwYV9fY2FyZFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGogPSBpbmRleDsgbGV0IGlzRmlyc3QgPSBmaXJzdFwiPlxuICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJtYXBhLXRhYmxlX19jYXJkLS1oZWFkZXJcIiAqbmdJZj1cImNvbHVtbi5rZXkgIT09ICdhY3Rpb25zJyAmJiBjb2x1bW4ua2V5ICE9PSAnbWVudSdcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVIZWFkZXJcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3Rpb24sIGNvbHVtbiwgaXNGaXJzdCwgY2hlY2tib3ggfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX2NhcmQtLWNvbHVtblwiXG4gICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS1jZW50ZXItY2VsbF09XCJjb2x1bW4/LmFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5rZXkgIT09ICdhY3Rpb25zJyAmJiBjb2x1bW4ua2V5ICE9PSAnbWVudSc7IGVsc2UgY29sdW1uQWN0aW9uc09yTWVudVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBhLXRhYmxlX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbj8ud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcGEtdGFibGVfX2NvbHVtbi0tZWxsaXBzaXNdPVwiY29sdW1uPy5jb2xsYXBzZSA9PT0gJ292ZXJmbG93J1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS1uby13cmFwXT1cImNvbHVtbj8uY29sbGFwc2UgPT09ICduby13cmFwJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS13cmFwXT1cImNvbHVtbj8uY29sbGFwc2UgPT09ICd3cmFwJ1wiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbaGFzQ3VzdG9tQ2xhc3MoY29sdW1uLCByb3csIGNvbHVtbi5rZXkpID8gZ2V0Q3VzdG9tQ2xhc3MoY29sdW1uLCByb3csIGNvbHVtbi5rZXkpIDogJyddXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uPy5zdGF0dXM/LmNvbG9yOyBlbHNlIGNvbW1vbkNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldEJhY2tncm91bmRDb2xvcihjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yKGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXBhLXRhYmxlX19jb2x1bW4tLXN0YXR1cy1yb3VuZF09XCJjb2x1bW4uc3RhdHVzPy5zdHlsZSA9PSAncm91bmQnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc2VsZWN0aW9uLCBjb2x1bW4sIGlzRmlyc3QsIGNoZWNrYm94LCByb3cgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb21tb25Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHNlbGVjdGlvbiwgY29sdW1uLCBpc0ZpcnN0LCBjaGVja2JveCwgcm93IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2x1bW5BY3Rpb25zT3JNZW51PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXBhLXRhYmxlX19jYXJkLS1mbG9hdGluZy1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNBY3Rpb25zQ29sdW1uKClcIiBjbGFzcz1cIm1hcGEtdGFibGVfX2NhcmQtLWZsb2F0aW5nLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVNZW51KHtkYXRhOiByb3csIGFjdGlvbjogaXRlbS5hY3Rpb259KVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1hY3Rpb25zLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmltYWdlXCIgW3NyY109XCJpdGVtLmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1tZW51XCIgKm5nSWY9XCJoYXNNZW51Q29sdW1uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hcGEtbWVudVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzSW5kaXZpZHVhbE1lbnUocm93KTsgZWxzZSBnZW5lcmFsTWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldE1lbnVJdGVtcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIChlbWl0TWVudSk9XCJoYW5kbGVNZW51KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9tYXBhLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ2VuZXJhbE1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hcGEtbWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51SXRlbXMgJiYgbWVudUl0ZW1zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm1lbnVJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGVtaXRNZW51KT1cImhhbmRsZU1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbWFwYS1tZW51PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcGEtdGFibGVfX2NvbHVtbi0tbWVudVwiICpuZ0lmPVwiIWhhc0FjdGlvbnNDb2x1bW4oKSAmJiBoYXNNZW51Q29sdW1uKClcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXBhLW1lbnVcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNJbmRpdmlkdWFsTWVudShyb3cpOyBlbHNlIGdlbmVyYWxNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldE1lbnVJdGVtcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgKGVtaXRNZW51KT1cImhhbmRsZU1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9tYXBhLW1lbnU+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2dlbmVyYWxNZW51PlxuICAgICAgICAgICAgICAgICAgICA8bWFwYS1tZW51XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51SXRlbXMgJiYgbWVudUl0ZW1zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJtZW51SXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGVtaXRNZW51KT1cImhhbmRsZU1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L21hcGEtbWVudT5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtYXBhLXRhYmxlLS1zaG93LW9uLWRlc2t0b3BcIj5cbiAgICA8dGFibGVcbiAgICAgIG1hdC10YWJsZVxuICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICBtYXRTb3J0XG4gICAgICAobWF0U29ydENoYW5nZSk9XCJzb3J0RGF0YUZ1bmN0aW9uKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgaXNGaXJzdCA9IGZpcnN0XCJcbiAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCJcbiAgICAgID5cbiAgICAgICAgPHRoXG4gICAgICAgICAgbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIShjb2x1bW4ua2V5ICE9PSAnYWN0aW9ucycgPyBjb2x1bW4uc29ydCA6IG51bGwpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlSGVhZGVyXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHNlbGVjdGlvbiwgY29sdW1uLCBpc0ZpcnN0LCBjaGVja2JveCB9XCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uPy53aWR0aFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlbWl0Um93Q2xpY2socm93LCAnJylcIlxuICAgICAgICAgICAgW2NsYXNzLm1hcGEtdGFibGVfX2NvbHVtbi0tY2VudGVyLWNlbGxdPVwiY29sdW1uPy5hbGlnbiA9PT0gJ2NlbnRlcidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4ua2V5ICE9PSAnYWN0aW9ucycgJiYgY29sdW1uLmtleSAhPT0gJ21lbnUnOyBlbHNlIGNvbHVtbkFjdGlvbnNPck1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwYS10YWJsZV9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4/LndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXBhLXRhYmxlX19jb2x1bW4tLWVsbGlwc2lzXT1cImNvbHVtbj8uY29sbGFwc2UgPT09ICdvdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcGEtdGFibGVfX2NvbHVtbi0tbm8td3JhcF09XCJjb2x1bW4/LmNvbGxhcHNlID09PSAnbm8td3JhcCdcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcGEtdGFibGVfX2NvbHVtbi0td3JhcF09XCJjb2x1bW4/LmNvbGxhcHNlID09PSAnd3JhcCdcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2hhc0N1c3RvbUNsYXNzKGNvbHVtbiwgcm93LCBjb2x1bW4ua2V5KSA/IGdldEN1c3RvbUNsYXNzKGNvbHVtbiwgcm93LCBjb2x1bW4ua2V5KSA6ICcnXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbj8uc3RhdHVzPy5jb2xvcjsgZWxzZSBjb21tb25Db2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcGEtdGFibGVfX2NvbHVtbi0tc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJnZXRCYWNrZ3JvdW5kQ29sb3IoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWFwYS10YWJsZV9fY29sdW1uLS1zdGF0dXMtcm91bmRdPVwiY29sdW1uLnN0YXR1cz8uc3R5bGUgPT0gJ3JvdW5kJ1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHNlbGVjdGlvbiwgY29sdW1uLCBpc0ZpcnN0LCBjaGVja2JveCwgcm93IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29tbW9uQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3Rpb24sIGNvbHVtbiwgaXNGaXJzdCwgY2hlY2tib3gsIHJvdyB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uQWN0aW9uc09yTWVudT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5rZXkgPT09ICdhY3Rpb25zJyAmJiBhY3Rpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZU1lbnUoe2RhdGE6IHJvdywgYWN0aW9uOiBpdGVtLmFjdGlvbn0pXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fY29sdW1uLS1hY3Rpb25zLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGV4dFwiXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb25cIj57e2l0ZW0uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmltYWdlXCIgW3NyY109XCJpdGVtLmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBhLXRhYmxlX19jb2x1bW4tLW1lbnVcIiAqbmdJZj1cImNvbHVtbi5rZXkgPT09ICdtZW51J1wiPlxuICAgICAgICAgICAgICAgIDxtYXBhLW1lbnVcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzSW5kaXZpZHVhbE1lbnUocm93KTsgZWxzZSBnZW5lcmFsTWVudVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwicm93Py5tZW51XCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAoZW1pdE1lbnUpPVwiaGFuZGxlTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9tYXBhLW1lbnU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmFsTWVudT5cbiAgICAgICAgICAgICAgICAgIDxtYXBhLW1lbnVcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51SXRlbXMgJiYgbWVudUl0ZW1zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwibWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgKGVtaXRNZW51KT1cImhhbmRsZU1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9tYXBhLW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHJcbiAgICAgICAgbWF0LXJvd1xuICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxuICAgICAgICBjbGFzcz1cInJvdy1ob3ZlclwiXG4gICAgICA+PC90cj5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbiAgPHNlY3Rpb24gKm5nSWY9XCJzaG93UGFnaW5hdG9yXCI+XG4gICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgIGNsYXNzPVwibWFwYS10YWJsZV9fcGFnaW5hdG9yLWxlZ2FjeVwiXG4gICAgICBpdGVtc1BlclBhZ2VMYWJlbD1cIkl0ZW0gcG9yIHDDoWdpbmFcIlxuICAgICAgYXBwU3R5bGVQYWdpbmF0b3JNdlxuICAgICAgW2xlbmd0aF09XCJ0b3RhbENvdW50XCJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjUsIDEwMF1cIlxuICAgICAgKHBhZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCJcbiAgICA+PC9tYXQtcGFnaW5hdG9yPlxuICA8L3NlY3Rpb24+XG48L3NlY3Rpb24+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdGFibGVIZWFkZXJcbiAgbGV0LXNlbGVjdGlvbj1cInNlbGVjdGlvblwiXG4gIGxldC1jb2x1bW49XCJjb2x1bW5cIlxuICBsZXQtaXNGaXJzdD1cImlzRmlyc3RcIlxuICBsZXQtY2hlY2tib3g9XCJjaGVja2JveFwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0ICYmIGNoZWNrYm94XCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgKm5nSWY9XCJzZWxlY3Rpb25cIlxuICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVBbGxSb3dzKCkgOiBudWxsXCJcbiAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICA+PC9tYXQtY2hlY2tib3g+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2PlxuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29sdW1uLmxhYmVsXCI+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImNvbHVtbi5rZXkgIT09ICdhY3Rpb25zJyAmJiBjb2x1bW4ua2V5ICE9PSAnbWVudScgJiYgY29sdW1uLnNvcnRcIj5cbiAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdGFibGVDb250ZW50XG4gIGxldC1zZWxlY3Rpb249XCJzZWxlY3Rpb25cIlxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgbGV0LWlzRmlyc3Q9XCJpc0ZpcnN0XCJcbiAgbGV0LWNoZWNrYm94PVwiY2hlY2tib3hcIlxuICBsZXQtcm93PVwicm93XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlyc3QgJiYgY2hlY2tib3hcIj5cbiAgICA8bWF0LWNoZWNrYm94XG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uPy50b2dnbGUocm93KSA6IG51bGw7IGdldFNlbGVjdGVkVmFsdWVzKClcIlxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uPy5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICA+XG4gICAgPC9tYXQtY2hlY2tib3g+XG4gIDwvbmctY29udGFpbmVyPlxuICA8IS0tIFBPUiBGQVZPUiwgTsODTyBRVUVCUkUgTElOSEEgRU5UUkUgTkctQ09OVEFJTkVSL1RFTVBMQVRFIEUgTyBWQUxPUiBDT05URcOaRE8gIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNYXNrZWREYXRhKGNvbHVtbiwgcm93KTsgZWxzZSBzdGF0dXNDb250ZW50XCJcbiAgICA+e3sgZ2V0VmFsdWVBc0RhdGUoY29sdW1uLCByb3cpIHwgZGF0ZTogY29sdW1uLm1hc2sgfX08L25nLWNvbnRhaW5lclxuICA+XG4gIDxuZy10ZW1wbGF0ZSAjc3RhdHVzQ29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnN0YXR1czsgZWxzZSBjb21tb25Db250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNCb29sZWFuKGNvbHVtbiwgcm93KTsgZWxzZSBjb21tb25TdGF0dXNcIlxuICAgICAgICA+PHNwYW4gW2lubmVySFRNTF09XCJjb2x1bW4uc3RhdHVzLmxhYmVsW3Jvd1tjb2x1bW4ua2V5XSA/IDEgOiAwXVwiPjwvc3BhblxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb21tb25TdGF0dXNcbiAgICAgICAgPjxzcGFuIFtpbm5lckhUTUxdPVwiY29sdW1uLnN0YXR1cy5sYWJlbFtyb3dbY29sdW1uLmtleV1dIHx8ICctJyBcIj48L3NwYW5cbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29tbW9uQ29udGVudFxuICAgICAgPjxzcGFuIFtpbm5lckhUTUxdPVwicm93W2NvbHVtbi5rZXldXCI+PC9zcGFuXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjc3RhdHVzQ29udGVudD5cbiAgICA8bmctdGVtcGxhdGUgI2NvbW1vbkNvbnRlbnRcbiAgICAgID48c3BhbiBbaW5uZXJIVE1MXT1cInJvd1tjb2x1bW4ua2V5XVwiPjwvc3BhblxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==