aril 1.1.76 → 1.1.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/ui/badge/src/badge.component.mjs +4 -3
- package/esm2022/ui/table/src/table.component.mjs +3 -4
- package/esm2022/ui/value/src/value.component.mjs +3 -3
- package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +2 -2
- package/fesm2022/aril-ui-badge.mjs +3 -2
- package/fesm2022/aril-ui-badge.mjs.map +1 -1
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +1 -1
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +2 -3
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +2 -2
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/package.json +144 -144
- package/ui/badge/src/badge.component.d.ts +2 -1
- package/ui/table/src/table.component.d.ts +1 -2
|
@@ -68,7 +68,6 @@ export class TableComponent {
|
|
|
68
68
|
this.sortMode = input('multiple');
|
|
69
69
|
this.showFirstLastIcon = input(true);
|
|
70
70
|
this.rowSelectable = input(() => true);
|
|
71
|
-
this.isShowNoDataFoundMessage = input(true);
|
|
72
71
|
this.reorderableColumns = input(false);
|
|
73
72
|
this.reorderField = input();
|
|
74
73
|
this.showColumnFilters = input(false);
|
|
@@ -313,11 +312,11 @@ export class TableComponent {
|
|
|
313
312
|
}
|
|
314
313
|
}
|
|
315
314
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableComponent, deps: [{ token: i1.TranslocoService }, { token: i2.SelectionGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
316
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TableComponent, selector: "aril-table", inputs: { kebabMenuItems: { classPropertyName: "kebabMenuItems", publicName: "kebabMenuItems", isSignal: false, isRequired: false, transformFunction: null }, expandableFields: { classPropertyName: "expandableFields", publicName: "expandableFields", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, checkboxSelection: { classPropertyName: "checkboxSelection", publicName: "checkboxSelection", isSignal: true, isRequired: false, transformFunction: null }, radioButtonSelection: { classPropertyName: "radioButtonSelection", publicName: "radioButtonSelection", isSignal: true, isRequired: false, transformFunction: null }, headerCheckboxSelection: { classPropertyName: "headerCheckboxSelection", publicName: "headerCheckboxSelection", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, proxy: { classPropertyName: "proxy", publicName: "proxy", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, tAlign: { classPropertyName: "tAlign", publicName: "tAlign", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, noDataFoundLabel: { classPropertyName: "noDataFoundLabel", publicName: "noDataFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, tableHeader: { classPropertyName: "tableHeader", publicName: "tableHeader", isSignal: true, isRequired: false, transformFunction: null }, showTableHeader: { classPropertyName: "showTableHeader", publicName: "showTableHeader", isSignal: true, isRequired: false, transformFunction: null }, isFirstRowSelected: { classPropertyName: "isFirstRowSelected", publicName: "isFirstRowSelected", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, selectedRowsInput: { classPropertyName: "selectedRowsInput", publicName: "selectedRowsInput", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "isLazy", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, paginatorDropdownAppendTo: { classPropertyName: "paginatorDropdownAppendTo", publicName: "paginatorDropdownAppendTo", isSignal: true, isRequired: false, transformFunction: null }, isColumnExpandMode: { classPropertyName: "isColumnExpandMode", publicName: "isColumnExpandMode", isSignal: true, isRequired: false, transformFunction: null }, isResizableColumns: { classPropertyName: "isResizableColumns", publicName: "isResizableColumns", isSignal: true, isRequired: false, transformFunction: null }, isSortable: { classPropertyName: "isSortable", publicName: "isSortable", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, sortMode: { classPropertyName: "sortMode", publicName: "sortMode", isSignal: true, isRequired: false, transformFunction: null }, showFirstLastIcon: { classPropertyName: "showFirstLastIcon", publicName: "showFirstLastIcon", isSignal: true, isRequired: false, transformFunction: null }, rowSelectable: { classPropertyName: "rowSelectable", publicName: "rowSelectable", isSignal: true, isRequired: false, transformFunction: null }, isShowNoDataFoundMessage: { classPropertyName: "isShowNoDataFoundMessage", publicName: "isShowNoDataFoundMessage", isSignal: true, isRequired: false, transformFunction: null }, reorderableColumns: { classPropertyName: "reorderableColumns", publicName: "reorderableColumns", isSignal: true, isRequired: false, transformFunction: null }, reorderField: { classPropertyName: "reorderField", publicName: "reorderField", isSignal: true, isRequired: false, transformFunction: null }, showColumnFilters: { classPropertyName: "showColumnFilters", publicName: "showColumnFilters", isSignal: true, isRequired: false, transformFunction: null }, selectionPageOnly: { classPropertyName: "selectionPageOnly", publicName: "selectionPageOnly", isSignal: true, isRequired: false, transformFunction: null }, openSelectionOnSidebar: { classPropertyName: "openSelectionOnSidebar", publicName: "openSelectionOnSidebar", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, exportConfig: { classPropertyName: "exportConfig", publicName: "exportConfig", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageEvent: "onPageEvent", selectionEvent: "selectionEvent", lazyLoadEvent: "lazyLoadEvent", rowReorderEvent: "rowReorderEvent" }, queries: [{ propertyName: "columns", predicate: TableColumnComponent }], viewQueries: [{ propertyName: "exportOp", first: true, predicate: ExportOverlayPanelComponent, descendants: true }, { propertyName: "tableRef", first: true, predicate: Table, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"!this.isLazy() || this.totalRecords() > 10 ? this.paginator() : false\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[5, 10, 20, 50, 100]\"\r\n\t[rowSelectable]=\"rowSelectable()\"\r\n\t[filterDelay]=\"0\"\r\n\t[sortMode]=\"sortMode()\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onSort)=\"onTableSort($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t(onRowSelect)=\"sidebarVisible = true\"\r\n\t(onRowUnselect)=\"sidebarVisible = false\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[selectionPageOnly]=\"selectionPageOnly()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand' : ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\t[currentPageReportTemplate]=\"currentPageReportText\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\"\r\n\t[scrollable]=\"scrollable()\"\r\n\t[scrollHeight]=\"scrollHeight()\"\r\n\t[showFirstLastIcon]=\"showFirstLastIcon()\"\r\n\t[reorderableColumns]=\"reorderableColumns()\"\r\n\t(onRowReorder)=\"rowReorder($event)\"\r\n\t[globalFilterFields]=\"globalFilterFields()\">\r\n\t<ng-template pTemplate=\"groupheader\" let-item let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\r\n\t\t<tr pRowGroupHeader style=\"background-color: #f8fafc\">\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">\r\n\t\t\t\t<span class=\"font-bold ml-2\" style=\"color: #6b7280\">{{ item.groupName }}</span>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (globalFilterFields()?.length) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<span class=\"ml-auto\">\r\n\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\t[(ngModel)]=\"globalSearchValue\"\r\n\t\t\t\t\t\t(input)=\"filterGlobal($event)\"\r\n\t\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t[placeholder]=\"translocoService.translate('search')\" />\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (reorderableColumns() || radioButtonSelection()) {\r\n\t\t\t\t<th style=\"width: 3rem !important\"></th>\r\n\t\t\t}\r\n\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t@if (isLazy() && isSortable()) {\r\n\t\t\t\t\t\t\t<th\r\n\t\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\t\tstyle=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t@switch (column.filterType()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.TEXT) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.NUMERIC) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"numeric\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxDigits]=\"6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.DATE) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if (column.showTimeInDateFilters()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar [(ngModel)]=\"filter.value\" class=\"w-6\" [appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter [field]=\"column.field()\" type=\"boolean\" display=\"menu\" class=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.ENUM) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[matchModeOptions]=\"[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fittir', value: 'equals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fit De\u011Fildir', value: 'notEquals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7erir', value: 'contains' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7ermez', value: 'notContains' }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-dropdown\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[options]=\"getEnumOptions(column.enumGroupName(), 'ALL')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(onChange)=\"onFilterChange($event.value, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappendTo=\"self\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClear]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleClass=\"w-full\"></p-dropdown>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\t\t@if (handledSelectionMode) {\r\n\t\t\t<tr\r\n\t\t\t\t[pSelectableRow]=\"item\"\r\n\t\t\t\t[ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\"\r\n\t\t\t\t[pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\" [pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<aril-export-overlay-panel [exportConfig]=\"exportConfig()!\" [columns]=\"columns\" />\r\n\r\n<p-toast key=\"export-toast\">\r\n\t<ng-template let-message pTemplate=\"message\">\r\n\t\t<span class=\"p-toast-message-icon\">\r\n\t\t\t<CheckIcon />\r\n\t\t</span>\r\n\t\t<div class=\"p-toast-message-text\">\r\n\t\t\t<div class=\"p-toast-summary\">{{ message.summary }}</div>\r\n\t\t\t<div class=\"p-toast-detail\" [innerHTML]=\"message.detail | safe: 'html'\"></div>\r\n\t\t</div>\r\n\t</ng-template>\r\n</p-toast>\r\n\r\n@if (openSelectionOnSidebar() && selectionMode() === 'single') {\r\n\t<p-sidebar\r\n\t\t[(visible)]=\"sidebarVisible\"\r\n\t\tposition=\"right\"\r\n\t\t[style]=\"{ 'max-width': '800px', width: '100%' }\"\r\n\t\t(onHide)=\"selectedRows = undefined\"\r\n\t\t[modal]=\"false\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<span class=\"font-semibold text-xl\">{{ translocoService.translate('table.sidebarDetailHeader') }}</span>\r\n\t\t</ng-template>\r\n\r\n\t\t@if (sidebarVisible) {\r\n\t\t\t<p-table [value]=\"selectedRows | keyvalue\" [paginator]=\"false\" styleClass=\"p-datatable-sm\">\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.field') }}</th>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.value') }}</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\r\n\t\t\t\t<ng-template pTemplate=\"body\" let-item let-index=\"rowIndex\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t@if (columns | getColumnByField: item.key; as column) {\r\n\t\t\t\t\t\t\t<td [width]=\"'120px'\">{{ column.header() }}</td>\r\n\t\t\t\t\t\t\t<td>\r\n\t\t\t\t\t\t\t\t@if (column.type() === 'json' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<div [ngStyle]=\"{ display: 'grid' }\">\r\n\t\t\t\t\t\t\t\t\t\t<pre\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"overflow-y-auto max-h-30rem border-300 border-1 border-round my-2 p-3\"><code>{{item.value | parse | json}}</code></pre>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t} @else if (column.type() === 'long-text' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<aril-value type=\"text\" [model]=\"item.value\" />\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[selectedRows]\" [ngForTemplate]=\"column.template\" />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-table>\r\n\t\t}\r\n\r\n\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t<div class=\"flex align-items-center justify-content-between\">\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_LEFT\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.prevRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"prevRecord()\" />\r\n\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_RIGHT\"\r\n\t\t\t\t\ticonPos=\"right\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.nextRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"nextRecord()\" />\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-sidebar>\r\n}\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}::ng-deep .p-datatable .p-datatable-tbody>tr.p-highlight{background-color:#e3f2fd!important;color:#475569!important}.no-wrap-word{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "component", type: i3.ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.CalendarComponent, selector: "aril-calendar[ngModel], aril-calendar[formControl], aril-calendar[formControlName]", inputs: ["minDate", "maxDate", "inputStyle", "inputStyleClass", "autoZIndex", "inline", "showIcon", "showTime", "showWeek", "showSeconds", "disabledDates", "numberOfMonthToShow", "appendTo", "dataType", "placeholder", "view", "selectionMode", "rangeConfig", "tabindex", "showOnFocus", "timeOnly", "keepInvalid"] }, { kind: "component", type: i6.CheckIcon, selector: "CheckIcon" }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i11.NumberComponent, selector: "aril-number[ngModel], aril-number[formControl], aril-number[formControlName]", inputs: ["min", "max", "showButtons", "placeholder", "prefix", "locale", "suffix", "maxlength", "showClear", "useGrouping", "maxDigits", "minDigits", "tabindex", "inputStyle", "buttonLayout"] }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i13.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i13.RowGroupHeader, selector: "[pRowGroupHeader]" }, { kind: "directive", type: i13.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i13.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: i13.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i13.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i13.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i13.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i13.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i13.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "component", type: i13.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i14.TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: i15.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i16.ValueComponent, selector: "aril-value", inputs: ["model", "type", "format", "isClickable", "groupName", "parentSelectionKey", "isTextClamp", "textClampCharacters", "style", "copyable", "shouldShowCopyForClampedText", "arrayTypeDisplayName", "arrayTypeMaxBadgeCount", "bigDecimalRoundingMode", "bigDecimalScale"] }, { kind: "component", type: i17.ExportOverlayPanelComponent, selector: "aril-export-overlay-panel", inputs: ["exportConfig", "columns"] }, { kind: "pipe", type: i18.GetColumnByFieldPipe, name: "getColumnByField" }, { kind: "pipe", type: i10.JsonPipe, name: "json" }, { kind: "pipe", type: i10.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i18.ParsePipe, name: "parse" }, { kind: "pipe", type: i18.SafePipe, name: "safe" }, { kind: "pipe", type: i10.SlicePipe, name: "slice" }] }); }
|
|
315
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TableComponent, selector: "aril-table", inputs: { kebabMenuItems: { classPropertyName: "kebabMenuItems", publicName: "kebabMenuItems", isSignal: false, isRequired: false, transformFunction: null }, expandableFields: { classPropertyName: "expandableFields", publicName: "expandableFields", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, checkboxSelection: { classPropertyName: "checkboxSelection", publicName: "checkboxSelection", isSignal: true, isRequired: false, transformFunction: null }, radioButtonSelection: { classPropertyName: "radioButtonSelection", publicName: "radioButtonSelection", isSignal: true, isRequired: false, transformFunction: null }, headerCheckboxSelection: { classPropertyName: "headerCheckboxSelection", publicName: "headerCheckboxSelection", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, proxy: { classPropertyName: "proxy", publicName: "proxy", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, tAlign: { classPropertyName: "tAlign", publicName: "tAlign", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, noDataFoundLabel: { classPropertyName: "noDataFoundLabel", publicName: "noDataFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, tableHeader: { classPropertyName: "tableHeader", publicName: "tableHeader", isSignal: true, isRequired: false, transformFunction: null }, showTableHeader: { classPropertyName: "showTableHeader", publicName: "showTableHeader", isSignal: true, isRequired: false, transformFunction: null }, isFirstRowSelected: { classPropertyName: "isFirstRowSelected", publicName: "isFirstRowSelected", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, selectedRowsInput: { classPropertyName: "selectedRowsInput", publicName: "selectedRowsInput", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "isLazy", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, paginatorDropdownAppendTo: { classPropertyName: "paginatorDropdownAppendTo", publicName: "paginatorDropdownAppendTo", isSignal: true, isRequired: false, transformFunction: null }, isColumnExpandMode: { classPropertyName: "isColumnExpandMode", publicName: "isColumnExpandMode", isSignal: true, isRequired: false, transformFunction: null }, isResizableColumns: { classPropertyName: "isResizableColumns", publicName: "isResizableColumns", isSignal: true, isRequired: false, transformFunction: null }, isSortable: { classPropertyName: "isSortable", publicName: "isSortable", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, sortMode: { classPropertyName: "sortMode", publicName: "sortMode", isSignal: true, isRequired: false, transformFunction: null }, showFirstLastIcon: { classPropertyName: "showFirstLastIcon", publicName: "showFirstLastIcon", isSignal: true, isRequired: false, transformFunction: null }, rowSelectable: { classPropertyName: "rowSelectable", publicName: "rowSelectable", isSignal: true, isRequired: false, transformFunction: null }, reorderableColumns: { classPropertyName: "reorderableColumns", publicName: "reorderableColumns", isSignal: true, isRequired: false, transformFunction: null }, reorderField: { classPropertyName: "reorderField", publicName: "reorderField", isSignal: true, isRequired: false, transformFunction: null }, showColumnFilters: { classPropertyName: "showColumnFilters", publicName: "showColumnFilters", isSignal: true, isRequired: false, transformFunction: null }, selectionPageOnly: { classPropertyName: "selectionPageOnly", publicName: "selectionPageOnly", isSignal: true, isRequired: false, transformFunction: null }, openSelectionOnSidebar: { classPropertyName: "openSelectionOnSidebar", publicName: "openSelectionOnSidebar", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, exportConfig: { classPropertyName: "exportConfig", publicName: "exportConfig", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageEvent: "onPageEvent", selectionEvent: "selectionEvent", lazyLoadEvent: "lazyLoadEvent", rowReorderEvent: "rowReorderEvent" }, queries: [{ propertyName: "columns", predicate: TableColumnComponent }], viewQueries: [{ propertyName: "exportOp", first: true, predicate: ExportOverlayPanelComponent, descendants: true }, { propertyName: "tableRef", first: true, predicate: Table, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"!this.isLazy() || this.totalRecords() > 10 ? this.paginator() : false\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[5, 10, 20, 50, 100]\"\r\n\t[rowSelectable]=\"rowSelectable()\"\r\n\t[filterDelay]=\"0\"\r\n\t[sortMode]=\"sortMode()\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onSort)=\"onTableSort($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t(onRowSelect)=\"sidebarVisible = true\"\r\n\t(onRowUnselect)=\"sidebarVisible = false\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[selectionPageOnly]=\"selectionPageOnly()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand' : ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\t[currentPageReportTemplate]=\"currentPageReportText\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\"\r\n\t[scrollable]=\"scrollable()\"\r\n\t[scrollHeight]=\"scrollHeight()\"\r\n\t[showFirstLastIcon]=\"showFirstLastIcon()\"\r\n\t[reorderableColumns]=\"reorderableColumns()\"\r\n\t(onRowReorder)=\"rowReorder($event)\"\r\n\t[globalFilterFields]=\"globalFilterFields()\">\r\n\t<ng-template pTemplate=\"groupheader\" let-item let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\r\n\t\t<tr pRowGroupHeader style=\"background-color: #f8fafc\">\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">\r\n\t\t\t\t<span class=\"font-bold ml-2\" style=\"color: #6b7280\">{{ item.groupName }}</span>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (globalFilterFields()?.length) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"grid p-fluid\">\r\n\t\t\t\t<aril-text\r\n\t\t\t\t\tclass=\"lg:col-3 md:col-4 sm:col-6 col-12\"\r\n\t\t\t\t\t[(ngModel)]=\"globalSearchValue\"\r\n\t\t\t\t\t(input)=\"filterGlobal($event)\"\r\n\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t[placeholder]=\"translocoService.translate('search')\" />\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (reorderableColumns() || radioButtonSelection()) {\r\n\t\t\t\t<th style=\"width: 3rem !important\"></th>\r\n\t\t\t}\r\n\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t@if (isLazy() && isSortable()) {\r\n\t\t\t\t\t\t\t<th\r\n\t\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\t\tstyle=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t@switch (column.filterType()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.TEXT) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.NUMERIC) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"numeric\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxDigits]=\"6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.DATE) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if (column.showTimeInDateFilters()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar [(ngModel)]=\"filter.value\" class=\"w-6\" [appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter [field]=\"column.field()\" type=\"boolean\" display=\"menu\" class=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.ENUM) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[matchModeOptions]=\"[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fittir', value: 'equals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fit De\u011Fildir', value: 'notEquals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7erir', value: 'contains' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7ermez', value: 'notContains' }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-dropdown\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[options]=\"getEnumOptions(column.enumGroupName(), 'ALL')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(onChange)=\"onFilterChange($event.value, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappendTo=\"self\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClear]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleClass=\"w-full\"></p-dropdown>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\t\t@if (handledSelectionMode) {\r\n\t\t\t<tr\r\n\t\t\t\t[pSelectableRow]=\"item\"\r\n\t\t\t\t[ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\"\r\n\t\t\t\t[pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\" [pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<aril-export-overlay-panel [exportConfig]=\"exportConfig()!\" [columns]=\"columns\" />\r\n\r\n<p-toast key=\"export-toast\">\r\n\t<ng-template let-message pTemplate=\"message\">\r\n\t\t<span class=\"p-toast-message-icon\">\r\n\t\t\t<CheckIcon />\r\n\t\t</span>\r\n\t\t<div class=\"p-toast-message-text\">\r\n\t\t\t<div class=\"p-toast-summary\">{{ message.summary }}</div>\r\n\t\t\t<div class=\"p-toast-detail\" [innerHTML]=\"message.detail | safe: 'html'\"></div>\r\n\t\t</div>\r\n\t</ng-template>\r\n</p-toast>\r\n\r\n@if (openSelectionOnSidebar() && selectionMode() === 'single') {\r\n\t<p-sidebar\r\n\t\t[(visible)]=\"sidebarVisible\"\r\n\t\tposition=\"right\"\r\n\t\t[style]=\"{ 'max-width': '800px', width: '100%' }\"\r\n\t\t(onHide)=\"selectedRows = undefined\"\r\n\t\t[modal]=\"false\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<span class=\"font-semibold text-xl\">{{ translocoService.translate('table.sidebarDetailHeader') }}</span>\r\n\t\t</ng-template>\r\n\r\n\t\t@if (sidebarVisible) {\r\n\t\t\t<p-table [value]=\"selectedRows | keyvalue\" [paginator]=\"false\" styleClass=\"p-datatable-sm\">\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.field') }}</th>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.value') }}</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\r\n\t\t\t\t<ng-template pTemplate=\"body\" let-item let-index=\"rowIndex\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t@if (columns | getColumnByField: item.key; as column) {\r\n\t\t\t\t\t\t\t<td [width]=\"'120px'\">{{ column.header() }}</td>\r\n\t\t\t\t\t\t\t<td>\r\n\t\t\t\t\t\t\t\t@if (column.type() === 'json' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<div [ngStyle]=\"{ display: 'grid' }\">\r\n\t\t\t\t\t\t\t\t\t\t<pre\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"overflow-y-auto max-h-30rem border-300 border-1 border-round my-2 p-3\"><code>{{item.value | parse | json}}</code></pre>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t} @else if (column.type() === 'long-text' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<aril-value type=\"text\" [model]=\"item.value\" />\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[selectedRows]\" [ngForTemplate]=\"column.template\" />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-table>\r\n\t\t}\r\n\r\n\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t<div class=\"flex align-items-center justify-content-between\">\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_LEFT\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.prevRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"prevRecord()\" />\r\n\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_RIGHT\"\r\n\t\t\t\t\ticonPos=\"right\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.nextRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"nextRecord()\" />\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-sidebar>\r\n}\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}::ng-deep .p-datatable .p-datatable-tbody>tr.p-highlight{background-color:#e3f2fd!important;color:#475569!important}.no-wrap-word{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "component", type: i3.ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.CalendarComponent, selector: "aril-calendar[ngModel], aril-calendar[formControl], aril-calendar[formControlName]", inputs: ["minDate", "maxDate", "inputStyle", "inputStyleClass", "autoZIndex", "inline", "showIcon", "showTime", "showWeek", "showSeconds", "disabledDates", "numberOfMonthToShow", "appendTo", "dataType", "placeholder", "view", "selectionMode", "rangeConfig", "tabindex", "showOnFocus", "timeOnly", "keepInvalid"] }, { kind: "component", type: i6.CheckIcon, selector: "CheckIcon" }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i11.NumberComponent, selector: "aril-number[ngModel], aril-number[formControl], aril-number[formControlName]", inputs: ["min", "max", "showButtons", "placeholder", "prefix", "locale", "suffix", "maxlength", "showClear", "useGrouping", "maxDigits", "minDigits", "tabindex", "inputStyle", "buttonLayout"] }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i13.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i13.RowGroupHeader, selector: "[pRowGroupHeader]" }, { kind: "directive", type: i13.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i13.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: i13.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i13.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i13.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i13.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i13.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i13.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "component", type: i13.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i14.TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: i15.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i16.ValueComponent, selector: "aril-value", inputs: ["model", "type", "format", "isClickable", "groupName", "parentSelectionKey", "isTextClamp", "textClampCharacters", "style", "copyable", "shouldShowCopyForClampedText", "arrayTypeDisplayName", "arrayTypeMaxBadgeCount", "bigDecimalRoundingMode", "bigDecimalScale"] }, { kind: "component", type: i17.ExportOverlayPanelComponent, selector: "aril-export-overlay-panel", inputs: ["exportConfig", "columns"] }, { kind: "pipe", type: i18.GetColumnByFieldPipe, name: "getColumnByField" }, { kind: "pipe", type: i10.JsonPipe, name: "json" }, { kind: "pipe", type: i10.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i18.ParsePipe, name: "parse" }, { kind: "pipe", type: i18.SafePipe, name: "safe" }, { kind: "pipe", type: i10.SlicePipe, name: "slice" }] }); }
|
|
317
316
|
}
|
|
318
317
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableComponent, decorators: [{
|
|
319
318
|
type: Component,
|
|
320
|
-
args: [{ selector: 'aril-table', template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"!this.isLazy() || this.totalRecords() > 10 ? this.paginator() : false\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[5, 10, 20, 50, 100]\"\r\n\t[rowSelectable]=\"rowSelectable()\"\r\n\t[filterDelay]=\"0\"\r\n\t[sortMode]=\"sortMode()\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onSort)=\"onTableSort($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t(onRowSelect)=\"sidebarVisible = true\"\r\n\t(onRowUnselect)=\"sidebarVisible = false\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[selectionPageOnly]=\"selectionPageOnly()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand' : ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\t[currentPageReportTemplate]=\"currentPageReportText\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\"\r\n\t[scrollable]=\"scrollable()\"\r\n\t[scrollHeight]=\"scrollHeight()\"\r\n\t[showFirstLastIcon]=\"showFirstLastIcon()\"\r\n\t[reorderableColumns]=\"reorderableColumns()\"\r\n\t(onRowReorder)=\"rowReorder($event)\"\r\n\t[globalFilterFields]=\"globalFilterFields()\">\r\n\t<ng-template pTemplate=\"groupheader\" let-item let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\r\n\t\t<tr pRowGroupHeader style=\"background-color: #f8fafc\">\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">\r\n\t\t\t\t<span class=\"font-bold ml-2\" style=\"color: #6b7280\">{{ item.groupName }}</span>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (globalFilterFields()?.length) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<span class=\"ml-auto\">\r\n\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\t[(ngModel)]=\"globalSearchValue\"\r\n\t\t\t\t\t\t(input)=\"filterGlobal($event)\"\r\n\t\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t[placeholder]=\"translocoService.translate('search')\" />\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (reorderableColumns() || radioButtonSelection()) {\r\n\t\t\t\t<th style=\"width: 3rem !important\"></th>\r\n\t\t\t}\r\n\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t@if (isLazy() && isSortable()) {\r\n\t\t\t\t\t\t\t<th\r\n\t\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\t\tstyle=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t@switch (column.filterType()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.TEXT) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.NUMERIC) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"numeric\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxDigits]=\"6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.DATE) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if (column.showTimeInDateFilters()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar [(ngModel)]=\"filter.value\" class=\"w-6\" [appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter [field]=\"column.field()\" type=\"boolean\" display=\"menu\" class=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.ENUM) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[matchModeOptions]=\"[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fittir', value: 'equals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fit De\u011Fildir', value: 'notEquals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7erir', value: 'contains' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7ermez', value: 'notContains' }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-dropdown\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[options]=\"getEnumOptions(column.enumGroupName(), 'ALL')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(onChange)=\"onFilterChange($event.value, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappendTo=\"self\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClear]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleClass=\"w-full\"></p-dropdown>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\t\t@if (handledSelectionMode) {\r\n\t\t\t<tr\r\n\t\t\t\t[pSelectableRow]=\"item\"\r\n\t\t\t\t[ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\"\r\n\t\t\t\t[pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\" [pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<aril-export-overlay-panel [exportConfig]=\"exportConfig()!\" [columns]=\"columns\" />\r\n\r\n<p-toast key=\"export-toast\">\r\n\t<ng-template let-message pTemplate=\"message\">\r\n\t\t<span class=\"p-toast-message-icon\">\r\n\t\t\t<CheckIcon />\r\n\t\t</span>\r\n\t\t<div class=\"p-toast-message-text\">\r\n\t\t\t<div class=\"p-toast-summary\">{{ message.summary }}</div>\r\n\t\t\t<div class=\"p-toast-detail\" [innerHTML]=\"message.detail | safe: 'html'\"></div>\r\n\t\t</div>\r\n\t</ng-template>\r\n</p-toast>\r\n\r\n@if (openSelectionOnSidebar() && selectionMode() === 'single') {\r\n\t<p-sidebar\r\n\t\t[(visible)]=\"sidebarVisible\"\r\n\t\tposition=\"right\"\r\n\t\t[style]=\"{ 'max-width': '800px', width: '100%' }\"\r\n\t\t(onHide)=\"selectedRows = undefined\"\r\n\t\t[modal]=\"false\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<span class=\"font-semibold text-xl\">{{ translocoService.translate('table.sidebarDetailHeader') }}</span>\r\n\t\t</ng-template>\r\n\r\n\t\t@if (sidebarVisible) {\r\n\t\t\t<p-table [value]=\"selectedRows | keyvalue\" [paginator]=\"false\" styleClass=\"p-datatable-sm\">\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.field') }}</th>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.value') }}</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\r\n\t\t\t\t<ng-template pTemplate=\"body\" let-item let-index=\"rowIndex\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t@if (columns | getColumnByField: item.key; as column) {\r\n\t\t\t\t\t\t\t<td [width]=\"'120px'\">{{ column.header() }}</td>\r\n\t\t\t\t\t\t\t<td>\r\n\t\t\t\t\t\t\t\t@if (column.type() === 'json' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<div [ngStyle]=\"{ display: 'grid' }\">\r\n\t\t\t\t\t\t\t\t\t\t<pre\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"overflow-y-auto max-h-30rem border-300 border-1 border-round my-2 p-3\"><code>{{item.value | parse | json}}</code></pre>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t} @else if (column.type() === 'long-text' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<aril-value type=\"text\" [model]=\"item.value\" />\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[selectedRows]\" [ngForTemplate]=\"column.template\" />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-table>\r\n\t\t}\r\n\r\n\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t<div class=\"flex align-items-center justify-content-between\">\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_LEFT\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.prevRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"prevRecord()\" />\r\n\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_RIGHT\"\r\n\t\t\t\t\ticonPos=\"right\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.nextRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"nextRecord()\" />\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-sidebar>\r\n}\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}::ng-deep .p-datatable .p-datatable-tbody>tr.p-highlight{background-color:#e3f2fd!important;color:#475569!important}.no-wrap-word{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
319
|
+
args: [{ selector: 'aril-table', template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"!this.isLazy() || this.totalRecords() > 10 ? this.paginator() : false\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[5, 10, 20, 50, 100]\"\r\n\t[rowSelectable]=\"rowSelectable()\"\r\n\t[filterDelay]=\"0\"\r\n\t[sortMode]=\"sortMode()\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onSort)=\"onTableSort($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t(onRowSelect)=\"sidebarVisible = true\"\r\n\t(onRowUnselect)=\"sidebarVisible = false\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[selectionPageOnly]=\"selectionPageOnly()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand' : ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\t[currentPageReportTemplate]=\"currentPageReportText\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\"\r\n\t[scrollable]=\"scrollable()\"\r\n\t[scrollHeight]=\"scrollHeight()\"\r\n\t[showFirstLastIcon]=\"showFirstLastIcon()\"\r\n\t[reorderableColumns]=\"reorderableColumns()\"\r\n\t(onRowReorder)=\"rowReorder($event)\"\r\n\t[globalFilterFields]=\"globalFilterFields()\">\r\n\t<ng-template pTemplate=\"groupheader\" let-item let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\r\n\t\t<tr pRowGroupHeader style=\"background-color: #f8fafc\">\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">\r\n\t\t\t\t<span class=\"font-bold ml-2\" style=\"color: #6b7280\">{{ item.groupName }}</span>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (globalFilterFields()?.length) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"grid p-fluid\">\r\n\t\t\t\t<aril-text\r\n\t\t\t\t\tclass=\"lg:col-3 md:col-4 sm:col-6 col-12\"\r\n\t\t\t\t\t[(ngModel)]=\"globalSearchValue\"\r\n\t\t\t\t\t(input)=\"filterGlobal($event)\"\r\n\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t[placeholder]=\"translocoService.translate('search')\" />\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (reorderableColumns() || radioButtonSelection()) {\r\n\t\t\t\t<th style=\"width: 3rem !important\"></th>\r\n\t\t\t}\r\n\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t@if (isLazy() && isSortable()) {\r\n\t\t\t\t\t\t\t<th\r\n\t\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\t\tstyle=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\t\t\t\t\t\t\t\t\t\t\t@switch (column.filterType()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.TEXT) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.NUMERIC) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"numeric\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxDigits]=\"6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.DATE) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if (column.showTimeInDateFilters()) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"onFilterChange($event, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-calendar [(ngModel)]=\"filter.value\" class=\"w-6\" [appendTo]=\"null\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter [field]=\"column.field()\" type=\"boolean\" display=\"menu\" class=\"mt-2\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t@case (ColumnFilterTypeEnum.ENUM) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p-columnFilter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[field]=\"column.field()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay=\"menu\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClearButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showApplyButton]=\"false\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[maxConstraints]=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[matchModeOptions]=\"[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fittir', value: 'equals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: 'E\u015Fit De\u011Fildir', value: 'notEquals' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7erir', value: 'contains' },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label: '\u0130\u00E7ermez', value: 'notContains' }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mt-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template pTemplate=\"filter\" let-filter=\"filterCallback\" let-value>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p-dropdown\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[options]=\"getEnumOptions(column.enumGroupName(), 'ALL')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngModel]=\"getFilterValue(column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(onChange)=\"onFilterChange($event.value, filter, column.field())\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappendTo=\"self\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[showClear]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleClass=\"w-full\"></p-dropdown>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-end mt-5\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Temizle'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[label]=\"'Uygula'\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p-columnFilter>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<th [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\r\n\t\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\t\tclass=\"no-wrap-word\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.header().length > 50 ? column.header() : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t{{ column.header().length > 50 ? (column.header() | slice:0:50) + '...' : column.header() }}\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"flex justify-content-center align-items-center\">\r\n\t\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle mt-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\t\t@if (handledSelectionMode) {\r\n\t\t\t<tr\r\n\t\t\t\t[pSelectableRow]=\"item\"\r\n\t\t\t\t[ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\"\r\n\t\t\t\t[pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : null }\" [pReorderableRow]=\"index\">\r\n\t\t\t\t@if (reorderableColumns()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (radioButtonSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<aril-export-overlay-panel [exportConfig]=\"exportConfig()!\" [columns]=\"columns\" />\r\n\r\n<p-toast key=\"export-toast\">\r\n\t<ng-template let-message pTemplate=\"message\">\r\n\t\t<span class=\"p-toast-message-icon\">\r\n\t\t\t<CheckIcon />\r\n\t\t</span>\r\n\t\t<div class=\"p-toast-message-text\">\r\n\t\t\t<div class=\"p-toast-summary\">{{ message.summary }}</div>\r\n\t\t\t<div class=\"p-toast-detail\" [innerHTML]=\"message.detail | safe: 'html'\"></div>\r\n\t\t</div>\r\n\t</ng-template>\r\n</p-toast>\r\n\r\n@if (openSelectionOnSidebar() && selectionMode() === 'single') {\r\n\t<p-sidebar\r\n\t\t[(visible)]=\"sidebarVisible\"\r\n\t\tposition=\"right\"\r\n\t\t[style]=\"{ 'max-width': '800px', width: '100%' }\"\r\n\t\t(onHide)=\"selectedRows = undefined\"\r\n\t\t[modal]=\"false\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<span class=\"font-semibold text-xl\">{{ translocoService.translate('table.sidebarDetailHeader') }}</span>\r\n\t\t</ng-template>\r\n\r\n\t\t@if (sidebarVisible) {\r\n\t\t\t<p-table [value]=\"selectedRows | keyvalue\" [paginator]=\"false\" styleClass=\"p-datatable-sm\">\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.field') }}</th>\r\n\t\t\t\t\t\t<th>{{ translocoService.translate('table.value') }}</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\r\n\t\t\t\t<ng-template pTemplate=\"body\" let-item let-index=\"rowIndex\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t@if (columns | getColumnByField: item.key; as column) {\r\n\t\t\t\t\t\t\t<td [width]=\"'120px'\">{{ column.header() }}</td>\r\n\t\t\t\t\t\t\t<td>\r\n\t\t\t\t\t\t\t\t@if (column.type() === 'json' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<div [ngStyle]=\"{ display: 'grid' }\">\r\n\t\t\t\t\t\t\t\t\t\t<pre\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"overflow-y-auto max-h-30rem border-300 border-1 border-round my-2 p-3\"><code>{{item.value | parse | json}}</code></pre>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t} @else if (column.type() === 'long-text' && item.value) {\r\n\t\t\t\t\t\t\t\t\t<aril-value type=\"text\" [model]=\"item.value\" />\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[selectedRows]\" [ngForTemplate]=\"column.template\" />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-table>\r\n\t\t}\r\n\r\n\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t<div class=\"flex align-items-center justify-content-between\">\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_LEFT\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.prevRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"prevRecord()\" />\r\n\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\ticon=\"ARROW_RIGHT\"\r\n\t\t\t\t\ticonPos=\"right\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[label]=\"translocoService.translate('table.nextRecord')\"\r\n\t\t\t\t\t(clickEvent)=\"nextRecord()\" />\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-sidebar>\r\n}\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}::ng-deep .p-datatable .p-datatable-tbody>tr.p-highlight{background-color:#e3f2fd!important;color:#475569!important}.no-wrap-word{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
321
320
|
}], ctorParameters: () => [{ type: i1.TranslocoService }, { type: i2.SelectionGroupService }], propDecorators: { onPageEvent: [{
|
|
322
321
|
type: Output
|
|
323
322
|
}], selectionEvent: [{
|
|
@@ -340,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
340
339
|
}], expandableFields: [{
|
|
341
340
|
type: Input
|
|
342
341
|
}] } });
|
|
343
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFJNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBR04sb0JBQW9CLEVBRXBCLGFBQWEsRUFFYixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEU7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQVUsQ0FBQztBQVNsRCxNQUFNLE9BQU8sY0FBYztJQW9FMUIsWUFDUSxnQkFBa0MsRUFDakMscUJBQTRDO1FBRDdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXJFM0MsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENB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R0E3VVcsY0FBYztrR0FBZCxjQUFjLHdyTEFLVCxvQkFBb0IsdUVBQzFCLDJCQUEyQiwyRUFDM0IsS0FBSyxxRUNyRGpCLDJzbUJBb2FBOzsyRkR0WGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDQyxZQUFZO3lIQUtaLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ2dDLE9BQU87c0JBQTdDLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUNHLFFBQVE7c0JBQS9DLFNBQVM7dUJBQUMsMkJBQTJCO2dCQUNwQixRQUFRO3NCQUF6QixTQUFTO3VCQUFDLEtBQUs7Z0JBQ1AsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGRyZW4sXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFZpZXdDaGlsZCxcclxuXHRlZmZlY3QsXHJcblx0aW5wdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSwgVGFibGVSb3dSZW9yZGVyRXZlbnQgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBQcm94eVR5cGVzIH0gZnJvbSAnYXJpbC9odHRwJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnYXJpbC90aGVtZS9sYXlvdXQnO1xyXG5cclxuaW1wb3J0IHsgRXhwb3J0T3ZlcmxheVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9leHBvcnQtb3ZlcmxheS1wYW5lbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG5cdEFsaWduVHlwZXMsXHJcblx0QXJpbGZpZWxkRmlsdGVyLFxyXG5cdENvbHVtbkZpbHRlclR5cGVFbnVtLFxyXG5cdEV4cG9ydE9wdGlvbnMsXHJcblx0RmlsdGVyT3BlcmFuZCxcclxuXHRUYWJsZUNvbHVtbnNcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcblxyXG4vKiBUT0RPIDpcclxuICogc2VydmVyLXNpZGUtcHJveHkgKFByb3h5VHlwZXMuU2VydmVyU2lkZSlcclxuICogc2VhcmNoICYgY29sdW0gZmlsdGVyICYgc29ydFxyXG4gKiBwYWdpbmF0aW9uIG9wZXJhdGlvblxyXG4gKiBRdWVyeSBTaWduYWxzXHJcbiAqL1xyXG5jb25zdCBwYWdlT3B0aW9ucyA9IFs1LCAxMCwgMjAsIDUwLCAxMDBdIGFzIGNvbnN0O1xyXG5cclxudHlwZSBTZWxlY3Rpb25UeXBlcyA9ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8IG51bGw7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FyaWwtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQge1xyXG5cdEBPdXRwdXQoKSBvblBhZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgc2VsZWN0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIGxhenlMb2FkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHJvd1Jlb3JkZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVSb3dSZW9yZGVyRXZlbnQ+KCk7XHJcblx0QENvbnRlbnRDaGlsZHJlbihUYWJsZUNvbHVtbkNvbXBvbmVudCkgY29sdW1ucyE6IFRhYmxlQ29sdW1ucztcclxuXHRAVmlld0NoaWxkKEV4cG9ydE92ZXJsYXlQYW5lbENvbXBvbmVudCkgZXhwb3J0T3AhOiBFeHBvcnRPdmVybGF5UGFuZWxDb21wb25lbnQ7XHJcblx0QFZpZXdDaGlsZChUYWJsZSkgdGFibGVSZWYhOiBUYWJsZTtcclxuXHRASW5wdXQoKSBrZWJhYk1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cdEBJbnB1dCgpIGV4cGFuZGFibGVGaWVsZHMhOiBzdHJpbmc7XHJcblxyXG5cdGRhdGEgPSBpbnB1dC5yZXF1aXJlZDxhbnlbXT4oKTtcclxuXHRjaGVja2JveFNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XHJcblx0cmFkaW9CdXR0b25TZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdGhlYWRlckNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRwYWdlU2l6ZSA9IGlucHV0PCh0eXBlb2YgcGFnZU9wdGlvbnMpW251bWJlcl0+KDEwKTtcclxuXHRwcm94eSA9IGlucHV0PFByb3h5VHlwZXM+KFByb3h5VHlwZXMuTmF0aXZlKTtcclxuXHRzaG93Rm9vdGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHRBbGlnbiA9IGlucHV0PEFsaWduVHlwZXM+KCdsZWZ0Jyk7XHJcblx0c2VsZWN0aW9uTW9kZSA9IGlucHV0PFNlbGVjdGlvblR5cGVzPignc2luZ2xlJyk7XHJcblx0ZXhwb3J0RmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRub0RhdGFGb3VuZExhYmVsID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YSBGb3VuZCcpO1xyXG5cdHRhYmxlSGVhZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2hvd1RhYmxlSGVhZGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzRmlyc3RSb3dTZWxlY3RlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRkYXRhS2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2VsZWN0ZWRSb3dzSW5wdXQgPSBpbnB1dDxhbnk+KFtdKTtcclxuXHRpc0xhenkgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHR0b3RhbFJlY29yZHMgPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cdHBhZ2luYXRvciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHBhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG8gPSBpbnB1dDxzdHJpbmc+KCdib2R5Jyk7IC8vICdib2R5J3wgJ215RGl2J1xyXG5cdGlzQ29sdW1uRXhwYW5kTW9kZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRpc1Jlc2l6YWJsZUNvbHVtbnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNTb3J0YWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRoYW5kbGVkU2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uVHlwZXMgPSAnc2luZ2xlJztcclxuXHRzY3JvbGxhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0c2Nyb2xsSGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignNDYwcHgnKTtcclxuXHRzb3J0TW9kZSA9IGlucHV0PCdzaW5nbGUnIHwgJ211bHRpcGxlJz4oJ211bHRpcGxlJyk7XHJcblx0c2hvd0ZpcnN0TGFzdEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRyb3dTZWxlY3RhYmxlID0gaW5wdXQ8KHJvd0RhdGE6IGFueSkgPT4gYm9vbGVhbj4oKCkgPT4gdHJ1ZSk7XHJcblx0aXNTaG93Tm9EYXRhRm91bmRNZXNzYWdlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cmVvcmRlcmFibGVDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHJlb3JkZXJGaWVsZCA9IGlucHV0PHN0cmluZz4oKTtcclxuXHRzaG93Q29sdW1uRmlsdGVycyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRzZWxlY3Rpb25QYWdlT25seSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRvcGVuU2VsZWN0aW9uT25TaWRlYmFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGdsb2JhbEZpbHRlckZpZWxkcyA9IGlucHV0PHN0cmluZ1tdPigpO1xyXG5cclxuXHQvLyBLZWVwcyBsYXN0IGNsaWNrZWQgc29ydCBmaWVsZCBhbmQgaXRzIGN5Y2xlcyB0byBlbmFibGUgQVNDIC0+IERFU0MgLT4gTk9ORVxyXG5cdHByaXZhdGUgbGFzdFNvcnRlZEZpZWxkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIGxhc3RTb3J0T3JkZXI6IDEgfCAtMSB8IDAgPSAwOyAvLyAxOiBhc2MsIC0xOiBkZXNjLCAwOiBub25lIC8gd2Ugc2VuZCAyIGZvciBkZXNjIHRvIGJhY2tlbmQgYnV0IHByaW1lbmcga2VlcHMgLTFcclxuXHJcblx0LyoqXHJcblx0ICogQHNlZSB7QGxpbmsgRXhwb3J0T3B0aW9uc31cclxuXHQgKi9cclxuXHRleHBvcnRDb25maWcgPSBpbnB1dDxFeHBvcnRPcHRpb25zPigpO1xyXG5cclxuXHRmaWx0ZXJUZXh0ITogc3RyaW5nO1xyXG5cdGdsb2JhbFNlYXJjaFZhbHVlPzogc3RyaW5nO1xyXG5cdGlzQWxsU2VsZWN0ZWQgPSB0cnVlO1xyXG5cdHNlbGVjdGVkUm93czogYW55O1xyXG5cdHBhZ2VPcHRpb25zID0gcGFnZU9wdGlvbnM7XHJcblx0ZXhwb3J0Q29sdW1uczogQXJyYXk8eyB0aXRsZTogc3RyaW5nOyBkYXRhS2V5OiBzdHJpbmcgfT4gPSBbXTtcclxuXHRmaWx0ZXJWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogb2JqZWN0IHwgbnVsbCB9ID0ge307XHJcblx0cHJpdmF0ZSByZXF1ZXN0ZWRFbnVtS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdENvbHVtbkZpbHRlclR5cGVFbnVtID0gQ29sdW1uRmlsdGVyVHlwZUVudW07XHJcblx0c2lkZWJhclZpc2libGUgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgc2VsZWN0aW9uR3JvdXBTZXJ2aWNlOiBTZWxlY3Rpb25Hcm91cFNlcnZpY2VcclxuXHQpIHtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmlzRmlyc3RSb3dTZWxlY3RlZCgpICYmIHRoaXMuZGF0YSgpKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLmRhdGEoKVswXTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGlvbkV2ZW50LmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZFJvd3NJbnB1dCgpKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93c0lucHV0KCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmNoZWNrYm94U2VsZWN0aW9uKCkgfHwgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGlvbigpKSB0aGlzLmhhbmRsZWRTZWxlY3Rpb25Nb2RlID0gbnVsbDtcclxuXHRcdFx0ZWxzZSB0aGlzLmhhbmRsZWRTZWxlY3Rpb25Nb2RlID0gdGhpcy5zZWxlY3Rpb25Nb2RlKCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5kYXRhKCk/Lmxlbmd0aCA9PSAxMCkgdGhpcy50YWJsZVJlZi5yb3dzID0gMTA7XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5pc0xhenkoKSAmJiB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcygpPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRhbGVydChcclxuXHRcdFx0XHRcdCdHbG9iYWwgZmlsdGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gbGF6eSBsb2FkaW5nIG1vZGUuIFBsZWFzZSBzZXQgaXNMYXp5IGlucHV0IHRvIGZhbHNlIHRvIHVzZSBnbG9iYWwgZmlsdGVyLidcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaXNJbml0aWFsTG9hZCA9IHRydWU7XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snZGF0YSddLnByZXZpb3VzVmFsdWUpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNJbml0aWFsTG9hZCkge1xyXG5cdFx0XHRcdHRoaXMuaXNJbml0aWFsTG9hZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0IGN1cnJlbnRQYWdlUmVwb3J0VGV4dCgpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgdG90YWwgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0YWJsZS50b3RhbCcpO1xyXG5cdFx0Y29uc3QgcmVjb3JkID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUucmVjb3JkcycpO1xyXG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLnBhZ2UnKTtcclxuXHRcdHJldHVybiBgJHt0b3RhbH0gOiB7dG90YWxSZWNvcmRzfSAke3JlY29yZH0gfCAke3BhZ2V9IDoge2N1cnJlbnRQYWdlfSAvIHt0b3RhbFBhZ2VzfWA7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFeHBvcnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB0aGlzLmV4cG9ydE9wLm9wLnRvZ2dsZShldmVudCk7XHJcblxyXG5cdGhhbmRsZUxhenlMb2FkRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc29ydEZpZWxkID0gZXZlbnQubXVsdGlTb3J0TWV0YT8ubGVuZ3RoID8gZXZlbnQubXVsdGlTb3J0TWV0YVswXSA6IG51bGw7XHJcblx0XHRjb25zdCBhcmlsRmlsdGVycyA9IHRoaXMuY29udmVydFByaW1lTmdGaWx0ZXJzVG9TdGFuZGFyZChldmVudC5maWx0ZXJzKTtcclxuXHJcblx0XHRjb25zdCBuZXdFdmVudERhdGEgPSB7XHJcblx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0cGFnZVNpemU6IGV2ZW50LnJvd3MsXHJcblx0XHRcdFx0cGFnZU51bWJlcjogZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzICsgMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzb3J0OlxyXG5cdFx0XHRcdHNvcnRGaWVsZD8uZmllbGQgP1xyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRmaWVsZElkOiBzb3J0RmllbGQ/LmZpZWxkLFxyXG5cdFx0XHRcdFx0XHRkaXJlY3Rpb246IHNvcnRGaWVsZD8ub3JkZXIgPT09IDEgPyAxIDogMiAvLyAxIGZvciBhc2MsIDIgZm9yIGRlc2NcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ6XHRudWxsLFxyXG5cdFx0XHRmaWx0ZXJzOiBhcmlsRmlsdGVyc1xyXG5cdFx0fTtcclxuXHRcdHRoaXMubGF6eUxvYWRFdmVudC5lbWl0KG5ld0V2ZW50RGF0YSk7XHJcblx0fVxyXG5cclxuXHRmaWx0ZXJHbG9iYWwoZTogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLnRhYmxlUmVmLmZpbHRlckdsb2JhbChlPy50YXJnZXQ/LnZhbHVlLCAnY29udGFpbnMnKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy50YWJsZVJlZi52YWx1ZSA9IFtdO1xyXG5cdFx0dGhpcy50YWJsZVJlZi5jbGVhcigpO1xyXG5cdFx0dGhpcy5leHBvcnRPcC5vcD8uaGlkZSgpO1xyXG5cdFx0dGhpcy5nbG9iYWxTZWFyY2hWYWx1ZSA9ICcnO1xyXG5cdH1cclxuXHJcblx0cm93UmVvcmRlcihldmVudDogVGFibGVSb3dSZW9yZGVyRXZlbnQpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5yZW9yZGVyRmllbGQoKSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdSZW9yZGVyIGZpZWxkIGlzIG5vdCBkZWZpbmVkLiBQbGVhc2Ugc2V0IHRoZSByZW9yZGVyRmllbGQgaW5wdXQuJyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH0gZWxzZSBpZiAoISgodGhpcy5yZW9yZGVyRmllbGQoKSBhcyBzdHJpbmcpIGluIHRoaXMuZGF0YSgpWzBdKSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKGBSZW9yZGVyIGZpZWxkIFwiJHt0aGlzLnJlb3JkZXJGaWVsZCgpfVwiIGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIGl0ZW1zLmApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5kYXRhKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdFx0aXRlbVt0aGlzLnJlb3JkZXJGaWVsZCgpIGFzIHN0cmluZ10gPSBpbmRleCArIDE7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJvd1Jlb3JkZXJFdmVudC5lbWl0KGV2ZW50KTtcclxuXHR9XHJcblxyXG5cdGdldEZpbHRlclZhbHVlKGZpZWxkOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVzW2ZpZWxkXSB8fCBudWxsO1xyXG5cdH1cclxuXHJcblx0b25GaWx0ZXJDaGFuZ2UodmFsdWU6IG9iamVjdCwgX2ZpbHRlckNhbGxiYWNrOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuZmlsdGVyVmFsdWVzW2ZpZWxkXSA9IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0YXBwbHlGaWx0ZXIoZmlsdGVyQ2FsbGJhY2s6ICh2YWx1ZTogYW55KSA9PiB2b2lkLCBmaWVsZDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWVzW2ZpZWxkXTtcclxuXHRcdGZpbHRlckNhbGxiYWNrKHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyRmlsdGVyKGZpbHRlckNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCwgZmllbGQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5maWx0ZXJWYWx1ZXNbZmllbGRdID0gbnVsbDtcclxuXHRcdGZpbHRlckNhbGxiYWNrKG51bGwpO1xyXG5cdH1cclxuXHJcblx0Z2V0RW51bU9wdGlvbnMoZ3JvdXBOYW1lOiBzdHJpbmcsIHBhcmVudFNlbGVjdGlvbktleSA9ICdBTEwnKTogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IHtcclxuXHRcdGNvbnN0IGtleSA9IGAke2dyb3VwTmFtZX1+JHtwYXJlbnRTZWxlY3Rpb25LZXl9YDtcclxuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2Uuc2VsZWN0aW9uR3JvdXBzKClba2V5XTtcclxuXHJcblx0XHRpZiAoIWdyb3VwICYmICF0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5pc0xvYWRpbmcoa2V5KSAmJiAhdGhpcy5yZXF1ZXN0ZWRFbnVtS2V5cy5oYXMoa2V5KSkge1xyXG5cdFx0XHR0aGlzLnJlcXVlc3RlZEVudW1LZXlzLmFkZChrZXkpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5mZXRjaEVudW0oZ3JvdXBOYW1lLCBwYXJlbnRTZWxlY3Rpb25LZXkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiAoXHJcblx0XHRcdGdyb3VwPy5zZWxlY3Rpb25JdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0bGFiZWw6IGl0ZW0uc2VsZWN0aW9uRGlzcGxheSxcclxuXHRcdFx0XHR2YWx1ZTogaXRlbS5zZWxlY3Rpb25LZXlcclxuXHRcdFx0fSkpID8/IFtdXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjb252ZXJ0UHJpbWVOZ0ZpbHRlcnNUb1N0YW5kYXJkKHByaW1lTmdGaWx0ZXJzOiBhbnkpOiBBcmlsZmllbGRGaWx0ZXJbXSB7XHJcblx0XHRjb25zdCBmaWx0ZXJzOiBBcmlsZmllbGRGaWx0ZXJbXSA9IFtdO1xyXG5cclxuXHRcdGlmICghcHJpbWVOZ0ZpbHRlcnMpIHtcclxuXHRcdFx0cmV0dXJuIGZpbHRlcnM7XHJcblx0XHR9XHJcblxyXG5cdFx0T2JqZWN0LmtleXMocHJpbWVOZ0ZpbHRlcnMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcclxuXHRcdFx0Y29uc3QgZmllbGRGaWx0ZXJzID0gcHJpbWVOZ0ZpbHRlcnNbZmllbGRJZF07XHJcblxyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShmaWVsZEZpbHRlcnMpICYmIGZpZWxkRmlsdGVycy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ZmllbGRGaWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuaXNWYWxpZEZpbHRlclZhbHVlKGZpbHRlci52YWx1ZSkpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3Qgb3BlcmFuZCA9IHRoaXMubWFwTWF0Y2hNb2RlVG9PcGVyYW5kKGZpbHRlci5tYXRjaE1vZGUpO1xyXG5cdFx0XHRcdFx0XHRpZiAob3BlcmFuZCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBtdWx0aXBsZSB2YWx1ZXMgZm9yIElOL05PVF9JTiBvcGVyYXRpb25zXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcHJvY2Vzc2VkVmFsdWUgPSB0aGlzLnByb2Nlc3NGaWx0ZXJWYWx1ZShmaWx0ZXIudmFsdWUsIG9wZXJhbmQpO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRmaWx0ZXJzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0ZmllbGRJZDogaXNOYU4ocGFyc2VJbnQoZmllbGRJZCkpID8gZmllbGRJZCA6IHBhcnNlSW50KGZpZWxkSWQpLFxyXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmFuZDogb3BlcmFuZCxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBwcm9jZXNzZWRWYWx1ZVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBmaWx0ZXJzO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpc1ZhbGlkRmlsdGVyVmFsdWUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUubGVuZ3RoID4gMCAmJiB2YWx1ZS5zb21lKChpdGVtKSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZCAmJiBpdGVtICE9PSAnJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0cmV0dXJuIHZhbHVlLnRyaW0oKSAhPT0gJyc7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG1hcE1hdGNoTW9kZVRvT3BlcmFuZChtYXRjaE1vZGU6IHN0cmluZyk6IEZpbHRlck9wZXJhbmQgfCBudWxsIHtcclxuXHRcdGNvbnN0IG1vZGVNYXA6IHsgW2tleTogc3RyaW5nXTogRmlsdGVyT3BlcmFuZCB9ID0ge1xyXG5cdFx0XHRlcXVhbHM6IEZpbHRlck9wZXJhbmQuRVEsXHJcblx0XHRcdG5vdEVxdWFsczogRmlsdGVyT3BlcmFuZC5OT1RfRVEsXHJcblx0XHRcdGNvbnRhaW5zOiBGaWx0ZXJPcGVyYW5kLkxJS0UsXHJcblx0XHRcdG5vdENvbnRhaW5zOiBGaWx0ZXJPcGVyYW5kLk5PVF9MSUtFLFxyXG5cdFx0XHRzdGFydHNXaXRoOiBGaWx0ZXJPcGVyYW5kLlNUQVJUUyxcclxuXHRcdFx0ZW5kc1dpdGg6IEZpbHRlck9wZXJhbmQuRU5EUyxcclxuXHRcdFx0bHQ6IEZpbHRlck9wZXJhbmQuTFQsXHJcblx0XHRcdGx0ZTogRmlsdGVyT3BlcmFuZC5MVEUsXHJcblx0XHRcdGd0OiBGaWx0ZXJPcGVyYW5kLkdULFxyXG5cdFx0XHRndGU6IEZpbHRlck9wZXJhbmQuR1RFLFxyXG5cdFx0XHRpbjogRmlsdGVyT3BlcmFuZC5JTixcclxuXHRcdFx0bm90SW46IEZpbHRlck9wZXJhbmQuTk9UX0lOLFxyXG5cdFx0XHRpczogRmlsdGVyT3BlcmFuZC5FUSxcclxuXHRcdFx0aXNOb3Q6IEZpbHRlck9wZXJhbmQuTk9UX0VRLFxyXG5cdFx0XHRiZWZvcmU6IEZpbHRlck9wZXJhbmQuTFQsXHJcblx0XHRcdGFmdGVyOiBGaWx0ZXJPcGVyYW5kLkdULFxyXG5cdFx0XHRkYXRlSXM6IEZpbHRlck9wZXJhbmQuRVEsXHJcblx0XHRcdGRhdGVJc05vdDogRmlsdGVyT3BlcmFuZC5OT1RfRVEsXHJcblx0XHRcdGRhdGVCZWZvcmU6IEZpbHRlck9wZXJhbmQuTFQsXHJcblx0XHRcdGRhdGVBZnRlcjogRmlsdGVyT3BlcmFuZC5HVFxyXG5cdFx0fTtcclxuXHJcblx0XHRyZXR1cm4gbW9kZU1hcFttYXRjaE1vZGVdIHx8IG51bGw7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHByb2Nlc3NGaWx0ZXJWYWx1ZSh2YWx1ZTogYW55LCBvcGVyYW5kOiBGaWx0ZXJPcGVyYW5kKSB7XHJcblx0XHRpZiAob3BlcmFuZCA9PT0gRmlsdGVyT3BlcmFuZC5JTiB8fCBvcGVyYW5kID09PSBGaWx0ZXJPcGVyYW5kLk5PVF9JTikge1xyXG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIFt2YWx1ZV07XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHZhbHVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdG9uVGFibGVTb3J0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBldmVudD8uZmllbGQgPz8gZXZlbnQ/Lm11bHRpc29ydG1ldGE/LlswXT8uZmllbGQ7XHJcblx0XHRjb25zdCBvcmRlcjogMSB8IC0xIHwgdW5kZWZpbmVkID0gZXZlbnQ/Lm9yZGVyID8/IGV2ZW50Py5tdWx0aXNvcnRtZXRhPy5bMF0/Lm9yZGVyO1xyXG5cdFx0aWYgKCFmaWVsZCB8fCAob3JkZXIgIT09IDEgJiYgb3JkZXIgIT09IC0xKSkgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMubGFzdFNvcnRlZEZpZWxkID09PSBmaWVsZCAmJiB0aGlzLmxhc3RTb3J0T3JkZXIgPT09IC0xICYmIG9yZGVyID09PSAxKSB7XHJcblx0XHRcdHRoaXMuY2xlYXJTb3J0KCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMubGFzdFNvcnRlZEZpZWxkID0gZmllbGQ7XHJcblx0XHR0aGlzLmxhc3RTb3J0T3JkZXIgPSBvcmRlcjtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2xlYXJTb3J0KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLnRhYmxlUmVmKSByZXR1cm47XHJcblx0XHR0aGlzLnRhYmxlUmVmLnNvcnRGaWVsZCA9IG51bGw7XHJcblx0XHR0aGlzLnRhYmxlUmVmLnNvcnRPcmRlciA9IDE7XHJcblx0XHR0aGlzLnRhYmxlUmVmLm11bHRpU29ydE1ldGEgPSBbXTtcclxuXHRcdGlmICh0aGlzLmlzTGF6eSgpKSB7XHJcblx0XHRcdGNvbnN0IG1ldGEgPSB0aGlzLnRhYmxlUmVmLmNyZWF0ZUxhenlMb2FkTWV0YWRhdGEoKTtcclxuXHRcdFx0bWV0YS5tdWx0aVNvcnRNZXRhID0gW107XHJcblx0XHRcdG1ldGEuc29ydEZpZWxkID0gbnVsbDtcclxuXHRcdFx0dGhpcy50YWJsZVJlZi5vbkxhenlMb2FkLmVtaXQobWV0YSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxhc3RTb3J0ZWRGaWVsZCA9IG51bGw7XHJcblx0XHR0aGlzLmxhc3RTb3J0T3JkZXIgPSAwO1xyXG5cdH1cclxuXHJcblx0bmV4dFJlY29yZCgpIHtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuZGF0YSgpLmluZGV4T2YodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cdFx0Y29uc3QgbmV4dFJlY29yZCA9IHRoaXMuZGF0YSgpW2lkeCArIDFdO1xyXG5cdFx0aWYgKG5leHRSZWNvcmQpIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSBuZXh0UmVjb3JkO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJldlJlY29yZCgpIHtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuZGF0YSgpLmluZGV4T2YodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cdFx0Y29uc3QgcHJldlJlY29yZCA9IHRoaXMuZGF0YSgpW2lkeCAtIDFdO1xyXG5cdFx0aWYgKHByZXZSZWNvcmQpIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSBwcmV2UmVjb3JkO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8cC10YWJsZVxyXG5cdCNyZWZcclxuXHRbdmFsdWVdPVwiZGF0YSgpXCJcclxuXHRbZGF0YUtleV09XCJkYXRhS2V5KClcIlxyXG5cdFtjb2x1bW5zXT1cImNvbHVtbnMuX3Jlc3VsdHNcIlxyXG5cdFtyb3dzXT1cInBhZ2VTaXplKClcIlxyXG5cdFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuXHRbcGFnaW5hdG9yXT1cIiF0aGlzLmlzTGF6eSgpIHx8IHRoaXMudG90YWxSZWNvcmRzKCkgPiAxMCA/IHRoaXMucGFnaW5hdG9yKCkgOiBmYWxzZVwiXHJcblx0W2xhenldPVwiaXNMYXp5KClcIlxyXG5cdFtsYXp5TG9hZE9uSW5pdF09XCJmYWxzZVwiXHJcblx0W3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHMoKVwiXHJcblx0W3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwgMTAsIDIwLCA1MCwgMTAwXVwiXHJcblx0W3Jvd1NlbGVjdGFibGVdPVwicm93U2VsZWN0YWJsZSgpXCJcclxuXHRbZmlsdGVyRGVsYXldPVwiMFwiXHJcblx0W3NvcnRNb2RlXT1cInNvcnRNb2RlKClcIlxyXG5cdFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFJvd3NcIlxyXG5cdChvblBhZ2UpPVwib25QYWdlRXZlbnQuZW1pdCgkZXZlbnQpXCJcclxuXHQob25Tb3J0KT1cIm9uVGFibGVTb3J0KCRldmVudClcIlxyXG5cdChvbkxhenlMb2FkKT1cImhhbmRsZUxhenlMb2FkRXZlbnQoJGV2ZW50KVwiXHJcblx0KHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkUm93cylcIlxyXG5cdChvblJvd1NlbGVjdCk9XCJzaWRlYmFyVmlzaWJsZSA9IHRydWVcIlxyXG5cdChvblJvd1Vuc2VsZWN0KT1cInNpZGViYXJWaXNpYmxlID0gZmFsc2VcIlxyXG5cdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0W3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcclxuXHRbc2VsZWN0aW9uUGFnZU9ubHldPVwic2VsZWN0aW9uUGFnZU9ubHkoKVwiXHJcblx0W2NvbHVtblJlc2l6ZU1vZGVdPVwiaXNDb2x1bW5FeHBhbmRNb2RlKCkgPyAnZXhwYW5kJyA6ICcnXCJcclxuXHRbcmVzaXphYmxlQ29sdW1uc109XCJpc1Jlc2l6YWJsZUNvbHVtbnMoKVwiXHJcblx0W2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiY3VycmVudFBhZ2VSZXBvcnRUZXh0XCJcclxuXHRzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIlxyXG5cdFtwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvXT1cInBhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG8oKVwiXHJcblx0W3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZSgpXCJcclxuXHRbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodCgpXCJcclxuXHRbc2hvd0ZpcnN0TGFzdEljb25dPVwic2hvd0ZpcnN0TGFzdEljb24oKVwiXHJcblx0W3Jlb3JkZXJhYmxlQ29sdW1uc109XCJyZW9yZGVyYWJsZUNvbHVtbnMoKVwiXHJcblx0KG9uUm93UmVvcmRlcik9XCJyb3dSZW9yZGVyKCRldmVudClcIlxyXG5cdFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzKClcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZ3JvdXBoZWFkZXJcIiBsZXQtaXRlbSBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XHJcblx0XHQ8dHIgcFJvd0dyb3VwSGVhZGVyIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2Y4ZmFmY1wiPlxyXG5cdFx0XHQ8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLl9yZXN1bHRzLmxlbmd0aFwiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIG1sLTJcIiBzdHlsZT1cImNvbG9yOiAjNmI3MjgwXCI+e3sgaXRlbS5ncm91cE5hbWUgfX08L3NwYW4+XHJcblx0XHRcdDwvdGQ+XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdEBpZiAoZ2xvYmFsRmlsdGVyRmllbGRzKCk/Lmxlbmd0aCkge1xyXG5cdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXhcIj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1sLWF1dG9cIj5cclxuXHRcdFx0XHRcdDxhcmlsLXRleHRcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJnbG9iYWxTZWFyY2hWYWx1ZVwiXHJcblx0XHRcdFx0XHRcdChpbnB1dCk9XCJmaWx0ZXJHbG9iYWwoJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdGljb249XCJTRUFSQ0hcIlxyXG5cdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3NlYXJjaCcpXCIgLz5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHRcdDx0cj5cclxuXHRcdFx0QGlmIChyZW9yZGVyYWJsZUNvbHVtbnMoKSB8fCByYWRpb0J1dHRvblNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6IDNyZW0gIWltcG9ydGFudFwiPjwvdGg+XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdDx0aD5cclxuXHRcdFx0XHRcdEBpZiAoaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdH1cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0QGlmIChpc1Jlc2l6YWJsZUNvbHVtbnMoKSkge1xyXG5cdFx0XHRcdFx0XHQ8dGggW25nU3R5bGVdPVwieyB3aWR0aDogY29sdW1uLndpZHRoKCkgPyBjb2x1bW4ud2lkdGgoKSA6ICdhdXRvJyB9XCIgcFJlc2l6YWJsZUNvbHVtbj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibm8td3JhcC13b3JkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IGNvbHVtbi5oZWFkZXIoKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IChjb2x1bW4uaGVhZGVyKCkgfCBzbGljZTowOjUwKSArICcuLi4nIDogY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi5pc1Nob3dIZWFkZXJUb29sdGlwKCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogZ3JlZW47IHBhZGRpbmctdG9wOiA0cHg7IHBhZGRpbmctbGVmdDogNHB4XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdEBpZiAoaXNMYXp5KCkgJiYgaXNTb3J0YWJsZSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0PHRoXHJcblx0XHRcdFx0XHRcdFx0XHRbcFNvcnRhYmxlQ29sdW1uXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtuZ1N0eWxlXT1cInsgd2lkdGg6IGNvbHVtbi53aWR0aCgpID8gY29sdW1uLndpZHRoKCkgOiAnYXV0bycgfVwiXHJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cIm1pbi13aWR0aDogMTcwcHhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibm8td3JhcC13b3JkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLmhlYWRlcigpLmxlbmd0aCA+IDUwID8gY29sdW1uLmhlYWRlcigpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IChjb2x1bW4uaGVhZGVyKCkgfCBzbGljZTowOjUwKSArICcuLi4nIDogY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi50eXBlKCkgIT09ICdvcGVyYXRpb25zJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtc29ydEljb24gW2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCI+PC9wLXNvcnRJY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKHNob3dDb2x1bW5GaWx0ZXJzKCkgJiYgY29sdW1uLnNob3dGaWx0ZXIoKSAmJiBjb2x1bW4udHlwZSgpICE9PSAnb3BlcmF0aW9ucycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBzd2l0Y2ggKGNvbHVtbi5maWx0ZXJUeXBlKCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNhc2UgKENvbHVtbkZpbHRlclR5cGVFbnVtLlRFWFQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5PVwibWVudVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm10LTJcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5OVU1FUklDKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwibnVtZXJpY1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3Nob3dBcHBseUJ1dHRvbl09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXhDb25zdHJhaW50c109XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbHRlclwiIGxldC1maWx0ZXI9XCJmaWx0ZXJDYWxsYmFja1wiIGxldC12YWx1ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtbnVtYmVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heERpZ2l0c109XCI2XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbF09XCJnZXRGaWx0ZXJWYWx1ZShjb2x1bW4uZmllbGQoKSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKCRldmVudCwgZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidy1mdWxsXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIG10LTVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwiJ1RlbWl6bGUnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImNsZWFyRmlsdGVyKGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cIidVeWd1bGEnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImFwcGx5RmlsdGVyKGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvcC1jb2x1bW5GaWx0ZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNhc2UgKENvbHVtbkZpbHRlclR5cGVFbnVtLkRBVEUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi5zaG93VGltZUluRGF0ZUZpbHRlcnMoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93QXBwbHlCdXR0b25dPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIiBsZXQtdmFsdWU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ01vZGVsXT1cImdldEZpbHRlclZhbHVlKGNvbHVtbi5maWVsZCgpKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQsIGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidy02XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93VGltZV09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFthcHBlbmRUb109XCJudWxsXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmQgbXQtNVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cIidUZW1pemxlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImNsZWFyRmlsdGVyKGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwiJ1V5Z3VsYSdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJhcHBseUZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3AtY29sdW1uRmlsdGVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXIgWyhuZ01vZGVsKV09XCJmaWx0ZXIudmFsdWVcIiBjbGFzcz1cInctNlwiIFthcHBlbmRUb109XCJudWxsXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvcC1jb2x1bW5GaWx0ZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5CT09MRUFOKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiIHR5cGU9XCJib29sZWFuXCIgZGlzcGxheT1cIm1lbnVcIiBjbGFzcz1cIm10LTJcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5FTlVNKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0FwcGx5QnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXhDb25zdHJhaW50c109XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXRjaE1vZGVPcHRpb25zXT1cIltcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ0XFn2l0dGlyJywgdmFsdWU6ICdlcXVhbHMnIH0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgbGFiZWw6ICdFxZ9pdCBEZcSfaWxkaXInLCB2YWx1ZTogJ25vdEVxdWFscycgfSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ8Sww6dlcmlyJywgdmFsdWU6ICdjb250YWlucycgfSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ8Sww6dlcm1leicsIHZhbHVlOiAnbm90Q29udGFpbnMnIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCIgbGV0LXZhbHVlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImdldEVudW1PcHRpb25zKGNvbHVtbi5lbnVtR3JvdXBOYW1lKCksICdBTEwnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiZ2V0RmlsdGVyVmFsdWUoY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob25DaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50LnZhbHVlLCBmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXBwZW5kVG89XCJzZWxmXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj48L3AtZHJvcGRvd24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWVuZCBtdC01XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cIidUZW1pemxlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJjbGVhckZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCInVXlndWxhJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJhcHBseUZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3AtY29sdW1uRmlsdGVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogZ3JlZW5cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIG10LTFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQ8dGggW25nU3R5bGVdPVwieyB3aWR0aDogY29sdW1uLndpZHRoKCkgPyBjb2x1bW4ud2lkdGgoKSA6ICdhdXRvJyB9XCIgc3R5bGU9XCJtaW4td2lkdGg6IDE3MHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5vLXdyYXAtd29yZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IGNvbHVtbi5oZWFkZXIoKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkubGVuZ3RoID4gNTAgPyAoY29sdW1uLmhlYWRlcigpIHwgc2xpY2U6MDo1MCkgKyAnLi4uJyA6IGNvbHVtbi5oZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChjb2x1bW4uaXNTaG93SGVhZGVyVG9vbHRpcCgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGUgbXQtMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcFRlbXBsYXRlKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdDwvdHI+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbSBsZXQtY29sdW1ucz1cImNvbHVtbnNcIiBsZXQtaW5kZXg9XCJyb3dJbmRleFwiPlxyXG5cdFx0QGlmIChoYW5kbGVkU2VsZWN0aW9uTW9kZSkge1xyXG5cdFx0XHQ8dHJcclxuXHRcdFx0XHRbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiXHJcblx0XHRcdFx0W25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0/LnJvd0NvbG9yID8gaXRlbT8ucm93Q29sb3IgOiBudWxsIH1cIlxyXG5cdFx0XHRcdFtwUmVvcmRlcmFibGVSb3ddPVwiaW5kZXhcIj5cclxuXHRcdFx0XHRAaWYgKHJlb3JkZXJhYmxlQ29sdW1ucygpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwicGkgcGktYmFyc1wiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGlmIChyYWRpb0J1dHRvblNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxwLXRhYmxlUmFkaW9CdXR0b24gW3ZhbHVlXT1cIml0ZW1cIj48L3AtdGFibGVSYWRpb0J1dHRvbj5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcblx0XHRcdFx0XHQ8dGQgW25nU3R5bGVdPVwieyAndGV4dC1hbGlnbic6IGNvbHVtbi50eXBlKCkgPT09ICdvcGVyYXRpb25zJyA/ICdjZW50ZXInIDogY29sdW1uLnRBbGlnbigpIHx8IHRBbGlnbigpIH1cIj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cIltpdGVtXVwiIFtuZ0ZvclRlbXBsYXRlXT1cImNvbHVtbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC90cj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8dHIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0/LnJvd0NvbG9yID8gaXRlbT8ucm93Q29sb3IgOiBudWxsIH1cIiBbcFJlb3JkZXJhYmxlUm93XT1cImluZGV4XCI+XHJcblx0XHRcdFx0QGlmIChyZW9yZGVyYWJsZUNvbHVtbnMoKSkge1xyXG5cdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInBpIHBpLWJhcnNcIiBwUmVvcmRlcmFibGVSb3dIYW5kbGU+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0QGlmIChjaGVja2JveFNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cIml0ZW1cIj48L3AtdGFibGVDaGVja2JveD5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAaWYgKHJhZGlvQnV0dG9uU2VsZWN0aW9uKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHAtdGFibGVSYWRpb0J1dHRvbiBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZVJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuXHRcdFx0XHRcdDx0ZCBbbmdTdHlsZV09XCJ7ICd0ZXh0LWFsaWduJzogY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnID8gJ2NlbnRlcicgOiBjb2x1bW4udEFsaWduKCkgfHwgdEFsaWduKCkgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiW2l0ZW1dXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0fVxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdEBpZiAoc2hvd0Zvb3RlcigpKSB7XHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwic3VtbWFyeVwiPlxyXG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0fVxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMuX3Jlc3VsdHMubGVuZ3RoXCI+e3sgbm9EYXRhRm91bmRMYWJlbCgpIH19PC90ZD5cclxuXHRcdDwvdHI+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG5cclxuPGFyaWwtZXhwb3J0LW92ZXJsYXktcGFuZWwgW2V4cG9ydENvbmZpZ109XCJleHBvcnRDb25maWcoKSFcIiBbY29sdW1uc109XCJjb2x1bW5zXCIgLz5cclxuXHJcbjxwLXRvYXN0IGtleT1cImV4cG9ydC10b2FzdFwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtdG9hc3QtbWVzc2FnZS1pY29uXCI+XHJcblx0XHRcdDxDaGVja0ljb24gLz5cclxuXHRcdDwvc3Bhbj5cclxuXHRcdDxkaXYgY2xhc3M9XCJwLXRvYXN0LW1lc3NhZ2UtdGV4dFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicC10b2FzdC1zdW1tYXJ5XCI+e3sgbWVzc2FnZS5zdW1tYXJ5IH19PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJwLXRvYXN0LWRldGFpbFwiIFtpbm5lckhUTUxdPVwibWVzc2FnZS5kZXRhaWwgfCBzYWZlOiAnaHRtbCdcIj48L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC10b2FzdD5cclxuXHJcbkBpZiAob3BlblNlbGVjdGlvbk9uU2lkZWJhcigpICYmIHNlbGVjdGlvbk1vZGUoKSA9PT0gJ3NpbmdsZScpIHtcclxuXHQ8cC1zaWRlYmFyXHJcblx0XHRbKHZpc2libGUpXT1cInNpZGViYXJWaXNpYmxlXCJcclxuXHRcdHBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0W3N0eWxlXT1cInsgJ21heC13aWR0aCc6ICc4MDBweCcsIHdpZHRoOiAnMTAwJScgfVwiXHJcblx0XHQob25IaWRlKT1cInNlbGVjdGVkUm93cyA9IHVuZGVmaW5lZFwiXHJcblx0XHRbbW9kYWxdPVwiZmFsc2VcIj5cclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQteGxcIj57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUuc2lkZWJhckRldGFpbEhlYWRlcicpIH19PC9zcGFuPlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0XHRAaWYgKHNpZGViYXJWaXNpYmxlKSB7XHJcblx0XHRcdDxwLXRhYmxlIFt2YWx1ZV09XCJzZWxlY3RlZFJvd3MgfCBrZXl2YWx1ZVwiIFtwYWdpbmF0b3JdPVwiZmFsc2VcIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHRcdFx0XHQ8dHI+XHJcblx0XHRcdFx0XHRcdDx0aD57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUuZmllbGQnKSB9fTwvdGg+XHJcblx0XHRcdFx0XHRcdDx0aD57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUudmFsdWUnKSB9fTwvdGg+XHJcblx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWl0ZW0gbGV0LWluZGV4PVwicm93SW5kZXhcIj5cclxuXHRcdFx0XHRcdDx0cj5cclxuXHRcdFx0XHRcdFx0QGlmIChjb2x1bW5zIHwgZ2V0Q29sdW1uQnlGaWVsZDogaXRlbS5rZXk7IGFzIGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRcdDx0ZCBbd2lkdGhdPVwiJzEyMHB4J1wiPnt7IGNvbHVtbi5oZWFkZXIoKSB9fTwvdGQ+XHJcblx0XHRcdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0QGlmIChjb2x1bW4udHlwZSgpID09PSAnanNvbicgJiYgaXRlbS52YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2dyaWQnIH1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm92ZXJmbG93LXktYXV0byBtYXgtaC0zMHJlbSBib3JkZXItMzAwIGJvcmRlci0xIGJvcmRlci1yb3VuZCBteS0yIHAtM1wiPjxjb2RlPnt7aXRlbS52YWx1ZSB8IHBhcnNlIHwganNvbn19PC9jb2RlPjwvcHJlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdH0gQGVsc2UgaWYgKGNvbHVtbi50eXBlKCkgPT09ICdsb25nLXRleHQnICYmIGl0ZW0udmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtdmFsdWUgdHlwZT1cInRleHRcIiBbbW9kZWxdPVwiaXRlbS52YWx1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cIltzZWxlY3RlZFJvd3NdXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvcC10YWJsZT5cclxuXHRcdH1cclxuXHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdGljb249XCJBUlJPV19MRUZUXCJcclxuXHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLnByZXZSZWNvcmQnKVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJwcmV2UmVjb3JkKClcIiAvPlxyXG5cclxuXHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRpY29uPVwiQVJST1dfUklHSFRcIlxyXG5cdFx0XHRcdFx0aWNvblBvcz1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLm5leHRSZWNvcmQnKVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJuZXh0UmVjb3JkKClcIiAvPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9wLXNpZGViYXI+XHJcbn1cclxuIl19
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFJNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBR04sb0JBQW9CLEVBRXBCLGFBQWEsRUFFYixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEU7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQVUsQ0FBQztBQVNsRCxNQUFNLE9BQU8sY0FBYztJQW1FMUIsWUFDUSxnQkFBa0MsRUFDakMscUJBQTRDO1FBRDdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXBFM0MsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENB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MkJBQTJCLDJFQUMzQixLQUFLLHFFQ3JEakIseXNtQkFtYUE7OzJGRHJYYSxjQUFjO2tCQUwxQixTQUFTOytCQUNDLFlBQVk7eUhBS1osV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDZ0MsT0FBTztzQkFBN0MsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBQ0csUUFBUTtzQkFBL0MsU0FBUzt1QkFBQywyQkFBMkI7Z0JBQ3BCLFFBQVE7c0JBQXpCLFNBQVM7dUJBQUMsS0FBSztnQkFDUCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZHJlbixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T3V0cHV0LFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0Vmlld0NoaWxkLFxyXG5cdGVmZmVjdCxcclxuXHRpbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVJvd1Jlb3JkZXJFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IFByb3h5VHlwZXMgfSBmcm9tICdhcmlsL2h0dHAnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcblxyXG5pbXBvcnQgeyBFeHBvcnRPdmVybGF5UGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2V4cG9ydC1vdmVybGF5LXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcblx0QWxpZ25UeXBlcyxcclxuXHRBcmlsZmllbGRGaWx0ZXIsXHJcblx0Q29sdW1uRmlsdGVyVHlwZUVudW0sXHJcblx0RXhwb3J0T3B0aW9ucyxcclxuXHRGaWx0ZXJPcGVyYW5kLFxyXG5cdFRhYmxlQ29sdW1uc1xyXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuXHJcbi8qIFRPRE8gOlxyXG4gKiBzZXJ2ZXItc2lkZS1wcm94eSAoUHJveHlUeXBlcy5TZXJ2ZXJTaWRlKVxyXG4gKiBzZWFyY2ggJiBjb2x1bSBmaWx0ZXIgJiBzb3J0XHJcbiAqIHBhZ2luYXRpb24gb3BlcmF0aW9uXHJcbiAqIFF1ZXJ5IFNpZ25hbHNcclxuICovXHJcbmNvbnN0IHBhZ2VPcHRpb25zID0gWzUsIDEwLCAyMCwgNTAsIDEwMF0gYXMgY29uc3Q7XHJcblxyXG50eXBlIFNlbGVjdGlvblR5cGVzID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgbnVsbDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCB7XHJcblx0QE91dHB1dCgpIG9uUGFnZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3Rpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgbGF6eUxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgcm93UmVvcmRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvd1Jlb3JkZXJFdmVudD4oKTtcclxuXHRAQ29udGVudENoaWxkcmVuKFRhYmxlQ29sdW1uQ29tcG9uZW50KSBjb2x1bW5zITogVGFibGVDb2x1bW5zO1xyXG5cdEBWaWV3Q2hpbGQoRXhwb3J0T3ZlcmxheVBhbmVsQ29tcG9uZW50KSBleHBvcnRPcCE6IEV4cG9ydE92ZXJsYXlQYW5lbENvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFRhYmxlKSB0YWJsZVJlZiE6IFRhYmxlO1xyXG5cdEBJbnB1dCgpIGtlYmFiTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblx0QElucHV0KCkgZXhwYW5kYWJsZUZpZWxkcyE6IHN0cmluZztcclxuXHJcblx0ZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPigpO1xyXG5cdGNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRyYWRpb0J1dHRvblNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XHJcblx0aGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdHBhZ2VTaXplID0gaW5wdXQ8KHR5cGVvZiBwYWdlT3B0aW9ucylbbnVtYmVyXT4oMTApO1xyXG5cdHByb3h5ID0gaW5wdXQ8UHJveHlUeXBlcz4oUHJveHlUeXBlcy5OYXRpdmUpO1xyXG5cdHNob3dGb290ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dEFsaWduID0gaW5wdXQ8QWxpZ25UeXBlcz4oJ2xlZnQnKTtcclxuXHRzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8U2VsZWN0aW9uVHlwZXM+KCdzaW5nbGUnKTtcclxuXHRleHBvcnRGaWxlTmFtZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdG5vRGF0YUZvdW5kTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdObyBEYXRhIEZvdW5kJyk7XHJcblx0dGFibGVIZWFkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRzaG93VGFibGVIZWFkZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNGaXJzdFJvd1NlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGRhdGFLZXkgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRzZWxlY3RlZFJvd3NJbnB1dCA9IGlucHV0PGFueT4oW10pO1xyXG5cdGlzTGF6eSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHRvdGFsUmVjb3JkcyA9IGlucHV0PG51bWJlcj4oMCk7XHJcblx0cGFnaW5hdG9yID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbyA9IGlucHV0PHN0cmluZz4oJ2JvZHknKTsgLy8gJ2JvZHknfCAnbXlEaXYnXHJcblx0aXNDb2x1bW5FeHBhbmRNb2RlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzUmVzaXphYmxlQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRpc1NvcnRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGhhbmRsZWRTZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25UeXBlcyA9ICdzaW5nbGUnO1xyXG5cdHNjcm9sbGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRzY3JvbGxIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCc0NjBweCcpO1xyXG5cdHNvcnRNb2RlID0gaW5wdXQ8J3NpbmdsZScgfCAnbXVsdGlwbGUnPignbXVsdGlwbGUnKTtcclxuXHRzaG93Rmlyc3RMYXN0SWNvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHJvd1NlbGVjdGFibGUgPSBpbnB1dDwocm93RGF0YTogYW55KSA9PiBib29sZWFuPigoKSA9PiB0cnVlKTtcclxuXHRyZW9yZGVyYWJsZUNvbHVtbnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0cmVvcmRlckZpZWxkID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdHNob3dDb2x1bW5GaWx0ZXJzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHNlbGVjdGlvblBhZ2VPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG9wZW5TZWxlY3Rpb25PblNpZGViYXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0Z2xvYmFsRmlsdGVyRmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XHJcblxyXG5cdC8vIEtlZXBzIGxhc3QgY2xpY2tlZCBzb3J0IGZpZWxkIGFuZCBpdHMgY3ljbGVzIHRvIGVuYWJsZSBBU0MgLT4gREVTQyAtPiBOT05FXHJcblx0cHJpdmF0ZSBsYXN0U29ydGVkRmllbGQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgbGFzdFNvcnRPcmRlcjogMSB8IC0xIHwgMCA9IDA7IC8vIDE6IGFzYywgLTE6IGRlc2MsIDA6IG5vbmUgLyB3ZSBzZW5kIDIgZm9yIGRlc2MgdG8gYmFja2VuZCBidXQgcHJpbWVuZyBrZWVwcyAtMVxyXG5cclxuXHQvKipcclxuXHQgKiBAc2VlIHtAbGluayBFeHBvcnRPcHRpb25zfVxyXG5cdCAqL1xyXG5cdGV4cG9ydENvbmZpZyA9IGlucHV0PEV4cG9ydE9wdGlvbnM+KCk7XHJcblxyXG5cdGZpbHRlclRleHQhOiBzdHJpbmc7XHJcblx0Z2xvYmFsU2VhcmNoVmFsdWU/OiBzdHJpbmc7XHJcblx0aXNBbGxTZWxlY3RlZCA9IHRydWU7XHJcblx0c2VsZWN0ZWRSb3dzOiBhbnk7XHJcblx0cGFnZU9wdGlvbnMgPSBwYWdlT3B0aW9ucztcclxuXHRleHBvcnRDb2x1bW5zOiBBcnJheTx7IHRpdGxlOiBzdHJpbmc7IGRhdGFLZXk6IHN0cmluZyB9PiA9IFtdO1xyXG5cdGZpbHRlclZhbHVlczogeyBba2V5OiBzdHJpbmddOiBvYmplY3QgfCBudWxsIH0gPSB7fTtcclxuXHRwcml2YXRlIHJlcXVlc3RlZEVudW1LZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblx0Q29sdW1uRmlsdGVyVHlwZUVudW0gPSBDb2x1bW5GaWx0ZXJUeXBlRW51bTtcclxuXHRzaWRlYmFyVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBzZWxlY3Rpb25Hcm91cFNlcnZpY2U6IFNlbGVjdGlvbkdyb3VwU2VydmljZVxyXG5cdCkge1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuaXNGaXJzdFJvd1NlbGVjdGVkKCkgJiYgdGhpcy5kYXRhKCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuZGF0YSgpWzBdO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUm93c0lucHV0KCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5wdXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuY2hlY2tib3hTZWxlY3Rpb24oKSB8fCB0aGlzLnJhZGlvQnV0dG9uU2VsZWN0aW9uKCkpIHRoaXMuaGFuZGxlZFNlbGVjdGlvbk1vZGUgPSBudWxsO1xyXG5cdFx0XHRlbHNlIHRoaXMuaGFuZGxlZFNlbGVjdGlvbk1vZGUgPSB0aGlzLnNlbGVjdGlvbk1vZGUoKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmRhdGEoKT8ubGVuZ3RoID09IDEwKSB0aGlzLnRhYmxlUmVmLnJvd3MgPSAxMDtcclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmlzTGF6eSgpICYmIHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzKCk/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdGFsZXJ0KFxyXG5cdFx0XHRcdFx0J0dsb2JhbCBmaWx0ZXIgaXMgbm90IHN1cHBvcnRlZCBpbiBsYXp5IGxvYWRpbmcgbW9kZS4gUGxlYXNlIHNldCBpc0xhenkgaW5wdXQgdG8gZmFsc2UgdG8gdXNlIGdsb2JhbCBmaWx0ZXIuJ1xyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpc0luaXRpYWxMb2FkID0gdHJ1ZTtcclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cdFx0aWYgKGNoYW5nZXNbJ2RhdGEnXSAmJiBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWydkYXRhJ10ucHJldmlvdXNWYWx1ZSkge1xyXG5cdFx0XHRpZiAodGhpcy5pc0luaXRpYWxMb2FkKSB7XHJcblx0XHRcdFx0dGhpcy5pc0luaXRpYWxMb2FkID0gZmFsc2U7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXQgY3VycmVudFBhZ2VSZXBvcnRUZXh0KCk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB0b3RhbCA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLnRvdGFsJyk7XHJcblx0XHRjb25zdCByZWNvcmQgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0YWJsZS5yZWNvcmRzJyk7XHJcblx0XHRjb25zdCBwYWdlID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUucGFnZScpO1xyXG5cdFx0cmV0dXJuIGAke3RvdGFsfSA6IHt0b3RhbFJlY29yZHN9ICR7cmVjb3JkfSB8ICR7cGFnZX0gOiB7Y3VycmVudFBhZ2V9IC8ge3RvdGFsUGFnZXN9YDtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZUV4cG9ydCA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHRoaXMuZXhwb3J0T3Aub3AudG9nZ2xlKGV2ZW50KTtcclxuXHJcblx0aGFuZGxlTGF6eUxvYWRFdmVudChldmVudDogYW55KTogdm9pZCB7XHJcblx0XHRjb25zdCBzb3J0RmllbGQgPSBldmVudC5tdWx0aVNvcnRNZXRhPy5sZW5ndGggPyBldmVudC5tdWx0aVNvcnRNZXRhWzBdIDogbnVsbDtcclxuXHRcdGNvbnN0IGFyaWxGaWx0ZXJzID0gdGhpcy5jb252ZXJ0UHJpbWVOZ0ZpbHRlcnNUb1N0YW5kYXJkKGV2ZW50LmZpbHRlcnMpO1xyXG5cclxuXHRcdGNvbnN0IG5ld0V2ZW50RGF0YSA9IHtcclxuXHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRwYWdlU2l6ZTogZXZlbnQucm93cyxcclxuXHRcdFx0XHRwYWdlTnVtYmVyOiBldmVudC5maXJzdCAvIGV2ZW50LnJvd3MgKyAxXHJcblx0XHRcdH0sXHJcblx0XHRcdHNvcnQ6XHJcblx0XHRcdFx0c29ydEZpZWxkPy5maWVsZCA/XHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGZpZWxkSWQ6IHNvcnRGaWVsZD8uZmllbGQsXHJcblx0XHRcdFx0XHRcdGRpcmVjdGlvbjogc29ydEZpZWxkPy5vcmRlciA9PT0gMSA/IDEgOiAyIC8vIDEgZm9yIGFzYywgMiBmb3IgZGVzY1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDpcdG51bGwsXHJcblx0XHRcdGZpbHRlcnM6IGFyaWxGaWx0ZXJzXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5sYXp5TG9hZEV2ZW50LmVtaXQobmV3RXZlbnREYXRhKTtcclxuXHR9XHJcblxyXG5cdGZpbHRlckdsb2JhbChlOiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMudGFibGVSZWYuZmlsdGVyR2xvYmFsKGU/LnRhcmdldD8udmFsdWUsICdjb250YWlucycpO1xyXG5cdH1cclxuXHJcblx0Y2xlYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLnRhYmxlUmVmLnZhbHVlID0gW107XHJcblx0XHR0aGlzLnRhYmxlUmVmLmNsZWFyKCk7XHJcblx0XHR0aGlzLmV4cG9ydE9wLm9wPy5oaWRlKCk7XHJcblx0XHR0aGlzLmdsb2JhbFNlYXJjaFZhbHVlID0gJyc7XHJcblx0fVxyXG5cclxuXHRyb3dSZW9yZGVyKGV2ZW50OiBUYWJsZVJvd1Jlb3JkZXJFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLnJlb3JkZXJGaWVsZCgpKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ1Jlb3JkZXIgZmllbGQgaXMgbm90IGRlZmluZWQuIFBsZWFzZSBzZXQgdGhlIHJlb3JkZXJGaWVsZCBpbnB1dC4nKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fSBlbHNlIGlmICghKCh0aGlzLnJlb3JkZXJGaWVsZCgpIGFzIHN0cmluZykgaW4gdGhpcy5kYXRhKClbMF0pKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoYFJlb3JkZXIgZmllbGQgXCIke3RoaXMucmVvcmRlckZpZWxkKCl9XCIgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGEgaXRlbXMuYCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmRhdGEoKS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRpdGVtW3RoaXMucmVvcmRlckZpZWxkKCkgYXMgc3RyaW5nXSA9IGluZGV4ICsgMTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMucm93UmVvcmRlckV2ZW50LmVtaXQoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Z2V0RmlsdGVyVmFsdWUoZmllbGQ6IHN0cmluZyk6IGFueSB7XHJcblx0XHRyZXR1cm4gdGhpcy5maWx0ZXJWYWx1ZXNbZmllbGRdIHx8IG51bGw7XHJcblx0fVxyXG5cclxuXHRvbkZpbHRlckNoYW5nZSh2YWx1ZTogb2JqZWN0LCBfZmlsdGVyQ2FsbGJhY2s6IGFueSwgZmllbGQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5maWx0ZXJWYWx1ZXNbZmllbGRdID0gdmFsdWU7XHJcblx0fVxyXG5cclxuXHRhcHBseUZpbHRlcihmaWx0ZXJDYWxsYmFjazogKHZhbHVlOiBhbnkpID0+IHZvaWQsIGZpZWxkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5maWx0ZXJWYWx1ZXNbZmllbGRdO1xyXG5cdFx0ZmlsdGVyQ2FsbGJhY2sodmFsdWUpO1xyXG5cdH1cclxuXHJcblx0Y2xlYXJGaWx0ZXIoZmlsdGVyQ2FsbGJhY2s6ICh2YWx1ZTogYW55KSA9PiB2b2lkLCBmaWVsZDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF0gPSBudWxsO1xyXG5cdFx0ZmlsdGVyQ2FsbGJhY2sobnVsbCk7XHJcblx0fVxyXG5cclxuXHRnZXRFbnVtT3B0aW9ucyhncm91cE5hbWU6IHN0cmluZywgcGFyZW50U2VsZWN0aW9uS2V5ID0gJ0FMTCcpOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4ge1xyXG5cdFx0Y29uc3Qga2V5ID0gYCR7Z3JvdXBOYW1lfX4ke3BhcmVudFNlbGVjdGlvbktleX1gO1xyXG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKVtrZXldO1xyXG5cclxuXHRcdGlmICghZ3JvdXAgJiYgIXRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLmlzTG9hZGluZyhrZXkpICYmICF0aGlzLnJlcXVlc3RlZEVudW1LZXlzLmhhcyhrZXkpKSB7XHJcblx0XHRcdHRoaXMucmVxdWVzdGVkRW51bUtleXMuYWRkKGtleSk7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLmZldGNoRW51bShncm91cE5hbWUsIHBhcmVudFNlbGVjdGlvbktleSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0Z3JvdXA/LnNlbGVjdGlvbkl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuXHRcdFx0XHRsYWJlbDogaXRlbS5zZWxlY3Rpb25EaXNwbGF5LFxyXG5cdFx0XHRcdHZhbHVlOiBpdGVtLnNlbGVjdGlvbktleVxyXG5cdFx0XHR9KSkgPz8gW11cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvbnZlcnRQcmltZU5nRmlsdGVyc1RvU3RhbmRhcmQocHJpbWVOZ0ZpbHRlcnM6IGFueSk6IEFyaWxmaWVsZEZpbHRlcltdIHtcclxuXHRcdGNvbnN0IGZpbHRlcnM6IEFyaWxmaWVsZEZpbHRlcltdID0gW107XHJcblxyXG5cdFx0aWYgKCFwcmltZU5nRmlsdGVycykge1xyXG5cdFx0XHRyZXR1cm4gZmlsdGVycztcclxuXHRcdH1cclxuXHJcblx0XHRPYmplY3Qua2V5cyhwcmltZU5nRmlsdGVycykuZm9yRWFjaCgoZmllbGRJZCkgPT4ge1xyXG5cdFx0XHRjb25zdCBmaWVsZEZpbHRlcnMgPSBwcmltZU5nRmlsdGVyc1tmaWVsZElkXTtcclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGZpZWxkRmlsdGVycykgJiYgZmllbGRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRmaWVsZEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5pc1ZhbGlkRmlsdGVyVmFsdWUoZmlsdGVyLnZhbHVlKSkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBvcGVyYW5kID0gdGhpcy5tYXBNYXRjaE1vZGVUb09wZXJhbmQoZmlsdGVyLm1hdGNoTW9kZSk7XHJcblx0XHRcdFx0XHRcdGlmIChvcGVyYW5kKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIG11bHRpcGxlIHZhbHVlcyBmb3IgSU4vTk9UX0lOIG9wZXJhdGlvbnNcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBwcm9jZXNzZWRWYWx1ZSA9IHRoaXMucHJvY2Vzc0ZpbHRlclZhbHVlKGZpbHRlci52YWx1ZSwgb3BlcmFuZCk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGZpbHRlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZElkOiBpc05hTihwYXJzZUludChmaWVsZElkKSkgPyBmaWVsZElkIDogcGFyc2VJbnQoZmllbGRJZCksXHJcblx0XHRcdFx0XHRcdFx0XHRvcGVyYW5kOiBvcGVyYW5kLFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHByb2Nlc3NlZFZhbHVlXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIGZpbHRlcnM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGlzVmFsaWRGaWx0ZXJWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcblx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS5sZW5ndGggPiAwICYmIHZhbHVlLnNvbWUoKGl0ZW0pID0+IGl0ZW0gIT09IG51bGwgJiYgaXRlbSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0gIT09ICcnKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUudHJpbSgpICE9PSAnJztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbWFwTWF0Y2hNb2RlVG9PcGVyYW5kKG1hdGNoTW9kZTogc3RyaW5nKTogRmlsdGVyT3BlcmFuZCB8IG51bGwge1xyXG5cdFx0Y29uc3QgbW9kZU1hcDogeyBba2V5OiBzdHJpbmddOiBGaWx0ZXJPcGVyYW5kIH0gPSB7XHJcblx0XHRcdGVxdWFsczogRmlsdGVyT3BlcmFuZC5FUSxcclxuXHRcdFx0bm90RXF1YWxzOiBGaWx0ZXJPcGVyYW5kLk5PVF9FUSxcclxuXHRcdFx0Y29udGFpbnM6IEZpbHRlck9wZXJhbmQuTElLRSxcclxuXHRcdFx0bm90Q29udGFpbnM6IEZpbHRlck9wZXJhbmQuTk9UX0xJS0UsXHJcblx0XHRcdHN0YXJ0c1dpdGg6IEZpbHRlck9wZXJhbmQuU1RBUlRTLFxyXG5cdFx0XHRlbmRzV2l0aDogRmlsdGVyT3BlcmFuZC5FTkRTLFxyXG5cdFx0XHRsdDogRmlsdGVyT3BlcmFuZC5MVCxcclxuXHRcdFx0bHRlOiBGaWx0ZXJPcGVyYW5kLkxURSxcclxuXHRcdFx0Z3Q6IEZpbHRlck9wZXJhbmQuR1QsXHJcblx0XHRcdGd0ZTogRmlsdGVyT3BlcmFuZC5HVEUsXHJcblx0XHRcdGluOiBGaWx0ZXJPcGVyYW5kLklOLFxyXG5cdFx0XHRub3RJbjogRmlsdGVyT3BlcmFuZC5OT1RfSU4sXHJcblx0XHRcdGlzOiBGaWx0ZXJPcGVyYW5kLkVRLFxyXG5cdFx0XHRpc05vdDogRmlsdGVyT3BlcmFuZC5OT1RfRVEsXHJcblx0XHRcdGJlZm9yZTogRmlsdGVyT3BlcmFuZC5MVCxcclxuXHRcdFx0YWZ0ZXI6IEZpbHRlck9wZXJhbmQuR1QsXHJcblx0XHRcdGRhdGVJczogRmlsdGVyT3BlcmFuZC5FUSxcclxuXHRcdFx0ZGF0ZUlzTm90OiBGaWx0ZXJPcGVyYW5kLk5PVF9FUSxcclxuXHRcdFx0ZGF0ZUJlZm9yZTogRmlsdGVyT3BlcmFuZC5MVCxcclxuXHRcdFx0ZGF0ZUFmdGVyOiBGaWx0ZXJPcGVyYW5kLkdUXHJcblx0XHR9O1xyXG5cclxuXHRcdHJldHVybiBtb2RlTWFwW21hdGNoTW9kZV0gfHwgbnVsbDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcHJvY2Vzc0ZpbHRlclZhbHVlKHZhbHVlOiBhbnksIG9wZXJhbmQ6IEZpbHRlck9wZXJhbmQpIHtcclxuXHRcdGlmIChvcGVyYW5kID09PSBGaWx0ZXJPcGVyYW5kLklOIHx8IG9wZXJhbmQgPT09IEZpbHRlck9wZXJhbmQuTk9UX0lOKSB7XHJcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuXHRcdFx0XHRyZXR1cm4gW3ZhbHVlXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHZhbHVlO1xyXG5cdH1cclxuXHJcblx0b25UYWJsZVNvcnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGV2ZW50Py5maWVsZCA/PyBldmVudD8ubXVsdGlzb3J0bWV0YT8uWzBdPy5maWVsZDtcclxuXHRcdGNvbnN0IG9yZGVyOiAxIHwgLTEgfCB1bmRlZmluZWQgPSBldmVudD8ub3JkZXIgPz8gZXZlbnQ/Lm11bHRpc29ydG1ldGE/LlswXT8ub3JkZXI7XHJcblx0XHRpZiAoIWZpZWxkIHx8IChvcmRlciAhPT0gMSAmJiBvcmRlciAhPT0gLTEpKSByZXR1cm47XHJcblx0XHRpZiAodGhpcy5sYXN0U29ydGVkRmllbGQgPT09IGZpZWxkICYmIHRoaXMubGFzdFNvcnRPcmRlciA9PT0gLTEgJiYgb3JkZXIgPT09IDEpIHtcclxuXHRcdFx0dGhpcy5jbGVhclNvcnQoKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sYXN0U29ydGVkRmllbGQgPSBmaWVsZDtcclxuXHRcdHRoaXMubGFzdFNvcnRPcmRlciA9IG9yZGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjbGVhclNvcnQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMudGFibGVSZWYpIHJldHVybjtcclxuXHRcdHRoaXMudGFibGVSZWYuc29ydEZpZWxkID0gbnVsbDtcclxuXHRcdHRoaXMudGFibGVSZWYuc29ydE9yZGVyID0gMTtcclxuXHRcdHRoaXMudGFibGVSZWYubXVsdGlTb3J0TWV0YSA9IFtdO1xyXG5cdFx0aWYgKHRoaXMuaXNMYXp5KCkpIHtcclxuXHRcdFx0Y29uc3QgbWV0YSA9IHRoaXMudGFibGVSZWYuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpO1xyXG5cdFx0XHRtZXRhLm11bHRpU29ydE1ldGEgPSBbXTtcclxuXHRcdFx0bWV0YS5zb3J0RmllbGQgPSBudWxsO1xyXG5cdFx0XHR0aGlzLnRhYmxlUmVmLm9uTGF6eUxvYWQuZW1pdChtZXRhKTtcclxuXHRcdH1cclxuXHRcdHRoaXMubGFzdFNvcnRlZEZpZWxkID0gbnVsbDtcclxuXHRcdHRoaXMubGFzdFNvcnRPcmRlciA9IDA7XHJcblx0fVxyXG5cclxuXHRuZXh0UmVjb3JkKCkge1xyXG5cdFx0Y29uc3QgaWR4ID0gdGhpcy5kYXRhKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRjb25zdCBuZXh0UmVjb3JkID0gdGhpcy5kYXRhKClbaWR4ICsgMV07XHJcblx0XHRpZiAobmV4dFJlY29yZCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IG5leHRSZWNvcmQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcmV2UmVjb3JkKCkge1xyXG5cdFx0Y29uc3QgaWR4ID0gdGhpcy5kYXRhKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRjb25zdCBwcmV2UmVjb3JkID0gdGhpcy5kYXRhKClbaWR4IC0gMV07XHJcblx0XHRpZiAocHJldlJlY29yZCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHByZXZSZWNvcmQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxwLXRhYmxlXHJcblx0I3JlZlxyXG5cdFt2YWx1ZV09XCJkYXRhKClcIlxyXG5cdFtkYXRhS2V5XT1cImRhdGFLZXkoKVwiXHJcblx0W2NvbHVtbnNdPVwiY29sdW1ucy5fcmVzdWx0c1wiXHJcblx0W3Jvd3NdPVwicGFnZVNpemUoKVwiXHJcblx0W3Jvd0hvdmVyXT1cInRydWVcIlxyXG5cdFtwYWdpbmF0b3JdPVwiIXRoaXMuaXNMYXp5KCkgfHwgdGhpcy50b3RhbFJlY29yZHMoKSA+IDEwID8gdGhpcy5wYWdpbmF0b3IoKSA6IGZhbHNlXCJcclxuXHRbbGF6eV09XCJpc0xhenkoKVwiXHJcblx0W2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuXHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcclxuXHRbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LCAxMCwgMjAsIDUwLCAxMDBdXCJcclxuXHRbcm93U2VsZWN0YWJsZV09XCJyb3dTZWxlY3RhYmxlKClcIlxyXG5cdFtmaWx0ZXJEZWxheV09XCIwXCJcclxuXHRbc29ydE1vZGVdPVwic29ydE1vZGUoKVwiXHJcblx0WyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXHJcblx0KG9uUGFnZSk9XCJvblBhZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG5cdChvblNvcnQpPVwib25UYWJsZVNvcnQoJGV2ZW50KVwiXHJcblx0KG9uTGF6eUxvYWQpPVwiaGFuZGxlTGF6eUxvYWRFdmVudCgkZXZlbnQpXCJcclxuXHQoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkV2ZW50LmVtaXQoc2VsZWN0ZWRSb3dzKVwiXHJcblx0KG9uUm93U2VsZWN0KT1cInNpZGViYXJWaXNpYmxlID0gdHJ1ZVwiXHJcblx0KG9uUm93VW5zZWxlY3QpPVwic2lkZWJhclZpc2libGUgPSBmYWxzZVwiXHJcblx0W3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuXHRbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlKClcIlxyXG5cdFtzZWxlY3Rpb25QYWdlT25seV09XCJzZWxlY3Rpb25QYWdlT25seSgpXCJcclxuXHRbY29sdW1uUmVzaXplTW9kZV09XCJpc0NvbHVtbkV4cGFuZE1vZGUoKSA/ICdleHBhbmQnIDogJydcIlxyXG5cdFtyZXNpemFibGVDb2x1bW5zXT1cImlzUmVzaXphYmxlQ29sdW1ucygpXCJcclxuXHRbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJjdXJyZW50UGFnZVJlcG9ydFRleHRcIlxyXG5cdHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcblx0W3BhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbygpXCJcclxuXHRbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlKClcIlxyXG5cdFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0KClcIlxyXG5cdFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvbigpXCJcclxuXHRbcmVvcmRlcmFibGVDb2x1bW5zXT1cInJlb3JkZXJhYmxlQ29sdW1ucygpXCJcclxuXHQob25Sb3dSZW9yZGVyKT1cInJvd1Jlb3JkZXIoJGV2ZW50KVwiXHJcblx0W2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHMoKVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cGhlYWRlclwiIGxldC1pdGVtIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cclxuXHRcdDx0ciBwUm93R3JvdXBIZWFkZXIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZjXCI+XHJcblx0XHRcdDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMuX3Jlc3VsdHMubGVuZ3RoXCI+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LWJvbGQgbWwtMlwiIHN0eWxlPVwiY29sb3I6ICM2YjcyODBcIj57eyBpdGVtLmdyb3VwTmFtZSB9fTwvc3Bhbj5cclxuXHRcdFx0PC90ZD5cclxuXHRcdDwvdHI+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0QGlmIChnbG9iYWxGaWx0ZXJGaWVsZHMoKT8ubGVuZ3RoKSB7XHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZ3JpZCBwLWZsdWlkXCI+XHJcblx0XHRcdFx0PGFyaWwtdGV4dFxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJsZzpjb2wtMyBtZDpjb2wtNCBzbTpjb2wtNiBjb2wtMTJcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJnbG9iYWxTZWFyY2hWYWx1ZVwiXHJcblx0XHRcdFx0XHQoaW5wdXQpPVwiZmlsdGVyR2xvYmFsKCRldmVudClcIlxyXG5cdFx0XHRcdFx0aWNvbj1cIlNFQVJDSFwiXHJcblx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdzZWFyY2gnKVwiIC8+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHRcdDx0cj5cclxuXHRcdFx0QGlmIChyZW9yZGVyYWJsZUNvbHVtbnMoKSB8fCByYWRpb0J1dHRvblNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6IDNyZW0gIWltcG9ydGFudFwiPjwvdGg+XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdDx0aD5cclxuXHRcdFx0XHRcdEBpZiAoaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdH1cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0QGlmIChpc1Jlc2l6YWJsZUNvbHVtbnMoKSkge1xyXG5cdFx0XHRcdFx0XHQ8dGggW25nU3R5bGVdPVwieyB3aWR0aDogY29sdW1uLndpZHRoKCkgPyBjb2x1bW4ud2lkdGgoKSA6ICdhdXRvJyB9XCIgcFJlc2l6YWJsZUNvbHVtbj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibm8td3JhcC13b3JkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IGNvbHVtbi5oZWFkZXIoKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IChjb2x1bW4uaGVhZGVyKCkgfCBzbGljZTowOjUwKSArICcuLi4nIDogY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi5pc1Nob3dIZWFkZXJUb29sdGlwKCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogZ3JlZW47IHBhZGRpbmctdG9wOiA0cHg7IHBhZGRpbmctbGVmdDogNHB4XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdEBpZiAoaXNMYXp5KCkgJiYgaXNTb3J0YWJsZSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0PHRoXHJcblx0XHRcdFx0XHRcdFx0XHRbcFNvcnRhYmxlQ29sdW1uXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtuZ1N0eWxlXT1cInsgd2lkdGg6IGNvbHVtbi53aWR0aCgpID8gY29sdW1uLndpZHRoKCkgOiAnYXV0bycgfVwiXHJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cIm1pbi13aWR0aDogMTcwcHhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibm8td3JhcC13b3JkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLmhlYWRlcigpLmxlbmd0aCA+IDUwID8gY29sdW1uLmhlYWRlcigpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IChjb2x1bW4uaGVhZGVyKCkgfCBzbGljZTowOjUwKSArICcuLi4nIDogY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi50eXBlKCkgIT09ICdvcGVyYXRpb25zJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtc29ydEljb24gW2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCI+PC9wLXNvcnRJY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKHNob3dDb2x1bW5GaWx0ZXJzKCkgJiYgY29sdW1uLnNob3dGaWx0ZXIoKSAmJiBjb2x1bW4udHlwZSgpICE9PSAnb3BlcmF0aW9ucycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBzd2l0Y2ggKGNvbHVtbi5maWx0ZXJUeXBlKCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNhc2UgKENvbHVtbkZpbHRlclR5cGVFbnVtLlRFWFQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5PVwibWVudVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm10LTJcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5OVU1FUklDKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwibnVtZXJpY1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3Nob3dBcHBseUJ1dHRvbl09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXhDb25zdHJhaW50c109XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbHRlclwiIGxldC1maWx0ZXI9XCJmaWx0ZXJDYWxsYmFja1wiIGxldC12YWx1ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtbnVtYmVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heERpZ2l0c109XCI2XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbF09XCJnZXRGaWx0ZXJWYWx1ZShjb2x1bW4uZmllbGQoKSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKCRldmVudCwgZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidy1mdWxsXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIG10LTVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwiJ1RlbWl6bGUnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImNsZWFyRmlsdGVyKGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cIidVeWd1bGEnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImFwcGx5RmlsdGVyKGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvcC1jb2x1bW5GaWx0ZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNhc2UgKENvbHVtbkZpbHRlclR5cGVFbnVtLkRBVEUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi5zaG93VGltZUluRGF0ZUZpbHRlcnMoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93QXBwbHlCdXR0b25dPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIiBsZXQtdmFsdWU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ01vZGVsXT1cImdldEZpbHRlclZhbHVlKGNvbHVtbi5maWVsZCgpKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQsIGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidy02XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93VGltZV09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFthcHBlbmRUb109XCJudWxsXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmQgbXQtNVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cIidUZW1pemxlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImNsZWFyRmlsdGVyKGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwiJ1V5Z3VsYSdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJhcHBseUZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3AtY29sdW1uRmlsdGVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXIgWyhuZ01vZGVsKV09XCJmaWx0ZXIudmFsdWVcIiBjbGFzcz1cInctNlwiIFthcHBlbmRUb109XCJudWxsXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvcC1jb2x1bW5GaWx0ZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5CT09MRUFOKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiIHR5cGU9XCJib29sZWFuXCIgZGlzcGxheT1cIm1lbnVcIiBjbGFzcz1cIm10LTJcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5FTlVNKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0FwcGx5QnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXhDb25zdHJhaW50c109XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXRjaE1vZGVPcHRpb25zXT1cIltcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ0XFn2l0dGlyJywgdmFsdWU6ICdlcXVhbHMnIH0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgbGFiZWw6ICdFxZ9pdCBEZcSfaWxkaXInLCB2YWx1ZTogJ25vdEVxdWFscycgfSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ8Sww6dlcmlyJywgdmFsdWU6ICdjb250YWlucycgfSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ8Sww6dlcm1leicsIHZhbHVlOiAnbm90Q29udGFpbnMnIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCIgbGV0LXZhbHVlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImdldEVudW1PcHRpb25zKGNvbHVtbi5lbnVtR3JvdXBOYW1lKCksICdBTEwnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiZ2V0RmlsdGVyVmFsdWUoY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob25DaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50LnZhbHVlLCBmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXBwZW5kVG89XCJzZWxmXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj48L3AtZHJvcGRvd24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWVuZCBtdC01XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cIidUZW1pemxlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJjbGVhckZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCInVXlndWxhJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJhcHBseUZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3AtY29sdW1uRmlsdGVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogZ3JlZW5cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIG10LTFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQ8dGggW25nU3R5bGVdPVwieyB3aWR0aDogY29sdW1uLndpZHRoKCkgPyBjb2x1bW4ud2lkdGgoKSA6ICdhdXRvJyB9XCIgc3R5bGU9XCJtaW4td2lkdGg6IDE3MHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5vLXdyYXAtd29yZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi5oZWFkZXIoKS5sZW5ndGggPiA1MCA/IGNvbHVtbi5oZWFkZXIoKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkubGVuZ3RoID4gNTAgPyAoY29sdW1uLmhlYWRlcigpIHwgc2xpY2U6MDo1MCkgKyAnLi4uJyA6IGNvbHVtbi5oZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChjb2x1bW4uaXNTaG93SGVhZGVyVG9vbHRpcCgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGUgbXQtMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcFRlbXBsYXRlKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdDwvdHI+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbSBsZXQtY29sdW1ucz1cImNvbHVtbnNcIiBsZXQtaW5kZXg9XCJyb3dJbmRleFwiPlxyXG5cdFx0QGlmIChoYW5kbGVkU2VsZWN0aW9uTW9kZSkge1xyXG5cdFx0XHQ8dHJcclxuXHRcdFx0XHRbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiXHJcblx0XHRcdFx0W25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0/LnJvd0NvbG9yID8gaXRlbT8ucm93Q29sb3IgOiBudWxsIH1cIlxyXG5cdFx0XHRcdFtwUmVvcmRlcmFibGVSb3ddPVwiaW5kZXhcIj5cclxuXHRcdFx0XHRAaWYgKHJlb3JkZXJhYmxlQ29sdW1ucygpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwicGkgcGktYmFyc1wiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGlmIChyYWRpb0J1dHRvblNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxwLXRhYmxlUmFkaW9CdXR0b24gW3ZhbHVlXT1cIml0ZW1cIj48L3AtdGFibGVSYWRpb0J1dHRvbj5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcblx0XHRcdFx0XHQ8dGQgW25nU3R5bGVdPVwieyAndGV4dC1hbGlnbic6IGNvbHVtbi50eXBlKCkgPT09ICdvcGVyYXRpb25zJyA/ICdjZW50ZXInIDogY29sdW1uLnRBbGlnbigpIHx8IHRBbGlnbigpIH1cIj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cIltpdGVtXVwiIFtuZ0ZvclRlbXBsYXRlXT1cImNvbHVtbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC90cj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8dHIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0/LnJvd0NvbG9yID8gaXRlbT8ucm93Q29sb3IgOiBudWxsIH1cIiBbcFJlb3JkZXJhYmxlUm93XT1cImluZGV4XCI+XHJcblx0XHRcdFx0QGlmIChyZW9yZGVyYWJsZUNvbHVtbnMoKSkge1xyXG5cdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInBpIHBpLWJhcnNcIiBwUmVvcmRlcmFibGVSb3dIYW5kbGU+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0QGlmIChjaGVja2JveFNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cIml0ZW1cIj48L3AtdGFibGVDaGVja2JveD5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAaWYgKHJhZGlvQnV0dG9uU2VsZWN0aW9uKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHAtdGFibGVSYWRpb0J1dHRvbiBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZVJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuXHRcdFx0XHRcdDx0ZCBbbmdTdHlsZV09XCJ7ICd0ZXh0LWFsaWduJzogY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnID8gJ2NlbnRlcicgOiBjb2x1bW4udEFsaWduKCkgfHwgdEFsaWduKCkgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiW2l0ZW1dXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0fVxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdEBpZiAoc2hvd0Zvb3RlcigpKSB7XHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwic3VtbWFyeVwiPlxyXG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0fVxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMuX3Jlc3VsdHMubGVuZ3RoXCI+e3sgbm9EYXRhRm91bmRMYWJlbCgpIH19PC90ZD5cclxuXHRcdDwvdHI+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG5cclxuPGFyaWwtZXhwb3J0LW92ZXJsYXktcGFuZWwgW2V4cG9ydENvbmZpZ109XCJleHBvcnRDb25maWcoKSFcIiBbY29sdW1uc109XCJjb2x1bW5zXCIgLz5cclxuXHJcbjxwLXRvYXN0IGtleT1cImV4cG9ydC10b2FzdFwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtdG9hc3QtbWVzc2FnZS1pY29uXCI+XHJcblx0XHRcdDxDaGVja0ljb24gLz5cclxuXHRcdDwvc3Bhbj5cclxuXHRcdDxkaXYgY2xhc3M9XCJwLXRvYXN0LW1lc3NhZ2UtdGV4dFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicC10b2FzdC1zdW1tYXJ5XCI+e3sgbWVzc2FnZS5zdW1tYXJ5IH19PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJwLXRvYXN0LWRldGFpbFwiIFtpbm5lckhUTUxdPVwibWVzc2FnZS5kZXRhaWwgfCBzYWZlOiAnaHRtbCdcIj48L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC10b2FzdD5cclxuXHJcbkBpZiAob3BlblNlbGVjdGlvbk9uU2lkZWJhcigpICYmIHNlbGVjdGlvbk1vZGUoKSA9PT0gJ3NpbmdsZScpIHtcclxuXHQ8cC1zaWRlYmFyXHJcblx0XHRbKHZpc2libGUpXT1cInNpZGViYXJWaXNpYmxlXCJcclxuXHRcdHBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0W3N0eWxlXT1cInsgJ21heC13aWR0aCc6ICc4MDBweCcsIHdpZHRoOiAnMTAwJScgfVwiXHJcblx0XHQob25IaWRlKT1cInNlbGVjdGVkUm93cyA9IHVuZGVmaW5lZFwiXHJcblx0XHRbbW9kYWxdPVwiZmFsc2VcIj5cclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQteGxcIj57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUuc2lkZWJhckRldGFpbEhlYWRlcicpIH19PC9zcGFuPlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0XHRAaWYgKHNpZGViYXJWaXNpYmxlKSB7XHJcblx0XHRcdDxwLXRhYmxlIFt2YWx1ZV09XCJzZWxlY3RlZFJvd3MgfCBrZXl2YWx1ZVwiIFtwYWdpbmF0b3JdPVwiZmFsc2VcIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHRcdFx0XHQ8dHI+XHJcblx0XHRcdFx0XHRcdDx0aD57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUuZmllbGQnKSB9fTwvdGg+XHJcblx0XHRcdFx0XHRcdDx0aD57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUudmFsdWUnKSB9fTwvdGg+XHJcblx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWl0ZW0gbGV0LWluZGV4PVwicm93SW5kZXhcIj5cclxuXHRcdFx0XHRcdDx0cj5cclxuXHRcdFx0XHRcdFx0QGlmIChjb2x1bW5zIHwgZ2V0Q29sdW1uQnlGaWVsZDogaXRlbS5rZXk7IGFzIGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRcdDx0ZCBbd2lkdGhdPVwiJzEyMHB4J1wiPnt7IGNvbHVtbi5oZWFkZXIoKSB9fTwvdGQ+XHJcblx0XHRcdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0QGlmIChjb2x1bW4udHlwZSgpID09PSAnanNvbicgJiYgaXRlbS52YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2dyaWQnIH1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm92ZXJmbG93LXktYXV0byBtYXgtaC0zMHJlbSBib3JkZXItMzAwIGJvcmRlci0xIGJvcmRlci1yb3VuZCBteS0yIHAtM1wiPjxjb2RlPnt7aXRlbS52YWx1ZSB8IHBhcnNlIHwganNvbn19PC9jb2RlPjwvcHJlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdH0gQGVsc2UgaWYgKGNvbHVtbi50eXBlKCkgPT09ICdsb25nLXRleHQnICYmIGl0ZW0udmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtdmFsdWUgdHlwZT1cInRleHRcIiBbbW9kZWxdPVwiaXRlbS52YWx1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cIltzZWxlY3RlZFJvd3NdXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvcC10YWJsZT5cclxuXHRcdH1cclxuXHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdGljb249XCJBUlJPV19MRUZUXCJcclxuXHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLnByZXZSZWNvcmQnKVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJwcmV2UmVjb3JkKClcIiAvPlxyXG5cclxuXHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRpY29uPVwiQVJST1dfUklHSFRcIlxyXG5cdFx0XHRcdFx0aWNvblBvcz1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLm5leHRSZWNvcmQnKVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJuZXh0UmVjb3JkKClcIiAvPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9wLXNpZGViYXI+XHJcbn1cclxuIl19
|