aril 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -391,11 +391,11 @@ export class TableComponent {
|
|
|
391
391
|
return value;
|
|
392
392
|
}
|
|
393
393
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableComponent, deps: [{ token: i1.HttpClient }, { token: i2.NonNullableFormBuilder }, { token: i3.PrimeNGConfig }, { token: i3.MessageService }, { token: i4.TranslocoService }, { token: i5.SelectionGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
394
|
-
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 }, showSearchTool: { classPropertyName: "showSearchTool", publicName: "showSearchTool", isSignal: true, isRequired: false, transformFunction: null }, showExportTool: { classPropertyName: "showExportTool", publicName: "showExportTool", 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 }, 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: "op", first: true, predicate: OverlayPanel, 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]=\"[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(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\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\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<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\r\n\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\tpResizableColumn>\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{{ column.header() }}\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\t@if (!isLazy()) {\r\n\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}\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<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\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{{ column.header() }}\r\n\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@if (isLazy() && isSortable() && column.type() !== 'operations') {\r\n\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}\r\n\t\t\t\t\t\t\t\t\t@if (isLazy() && showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\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@case (ColumnFilterTypeEnum.TEXT) {\r\n\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\ttype=\"text\" \r\n\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\tdisplay=\"menu\"\r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter \r\n\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[field]=\"column.field()\" \r\n\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[maxConstraints]=\"1\"\r\n\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/>\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\t@case (ColumnFilterTypeEnum.DATE) {\r\n\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<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=\"date\"\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\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\tclass=\"mt-2\"\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\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-calendar\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-6\" \r\n\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[appendTo]=\"null\" \r\n\t\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\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 size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (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 size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (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} @else {\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=\"date\" \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\t\t>\r\n\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<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"filter.value\"\r\n\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[appendTo]=\"null\" \r\n\t\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\t</ng-template>\r\n\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\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\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[field]=\"column.field()\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"boolean\" \r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter\r\n\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\ttype=\"text\" \r\n\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[showClearButton]=\"false\"\r\n\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[maxConstraints]=\"1\"\r\n\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{ label: 'E\u015Fittir', value: 'equals' },\r\n\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]\"\r\n\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>\r\n\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<p-dropdown\r\n\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[ngModel]=\"getFilterValue(column.field())\"\r\n\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\tappendTo=\"self\"\r\n\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\tstyleClass=\"w-full\"\r\n\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<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<aril-button size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\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</ng-template>\r\n\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}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\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;\"\r\n\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[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}\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<p-overlayPanel styleClass=\"export-overlay-panel\" [baseZIndex]=\"1101\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Dosya Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\"\r\n\t\t\t\t\t[disabled]=\"isLoadingForExport()\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('navigateToExportRequests')\"\r\n\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t(clickEvent)=\"nativateToExportRequests()\" />\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('messages.export')\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t(clickEvent)=\"export()\"\r\n\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\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", 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}\n"], dependencies: [{ kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i7.ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8.CheckboxComponent, selector: "aril-checkbox[ngModel], aril-checkbox[formControl], aril-checkbox[formControlName]", inputs: ["label", "labelAsYesNo", "tabindex"] }, { kind: "component", type: i9.CheckIcon, selector: "CheckIcon" }, { kind: "component", type: i10.FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.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: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i13.OrderList, selector: "p-orderList", inputs: ["header", "style", "styleClass", "tabindex", "ariaLabel", "ariaLabelledBy", "listStyle", "responsive", "filterBy", "filterPlaceholder", "filterLocale", "metaKeySelection", "dragdrop", "controlsPosition", "ariaFilterLabel", "filterMatchMode", "breakpoint", "stripedRows", "disabled", "trackBy", "selection", "value"], outputs: ["selectionChange", "onReorder", "onSelectionChange", "onFilterEvent", "onFocus", "onBlur"] }, { kind: "component", type: i14.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i15.RadioButtonComponent, selector: "aril-radio-button[ngModel], aril-radio-button[formControl], aril-radio-button[formControlName]", inputs: ["options", "tabindex", "align"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i16.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: i16.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i16.RowGroupHeader, selector: "[pRowGroupHeader]" }, { kind: "directive", type: i16.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i16.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: i16.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i16.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i16.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i16.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i16.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i16.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "component", type: i16.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: i17.TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: i18.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i19.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: "component", type: i20.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", "view", "selectionMode", "tabindex", "showOnFocus", "timeOnly"] }, { kind: "pipe", type: i21.SafePipe, name: "safe" }] }); }
|
|
394
|
+
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 }, showSearchTool: { classPropertyName: "showSearchTool", publicName: "showSearchTool", isSignal: true, isRequired: false, transformFunction: null }, showExportTool: { classPropertyName: "showExportTool", publicName: "showExportTool", 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 }, 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: "op", first: true, predicate: OverlayPanel, 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]=\"[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(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\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\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<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\r\n\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\tpResizableColumn>\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{{ column.header() }}\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\t@if (!isLazy()) {\r\n\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}\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<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\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{{ column.header() }}\r\n\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@if (isLazy() && isSortable() && column.type() !== 'operations') {\r\n\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}\r\n\t\t\t\t\t\t\t\t\t@if (isLazy() && showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\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@case (ColumnFilterTypeEnum.TEXT) {\r\n\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\ttype=\"text\" \r\n\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\tdisplay=\"menu\"\r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter \r\n\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[field]=\"column.field()\" \r\n\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[maxConstraints]=\"1\"\r\n\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/>\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\t@case (ColumnFilterTypeEnum.DATE) {\r\n\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<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=\"date\"\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\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\tclass=\"mt-2\"\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\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-calendar\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-6\" \r\n\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[appendTo]=\"null\" \r\n\t\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\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 size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (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 size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (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} @else {\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=\"date\" \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\t\t>\r\n\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<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"filter.value\"\r\n\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[appendTo]=\"null\" \r\n\t\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\t</ng-template>\r\n\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\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\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[field]=\"column.field()\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"boolean\" \r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter\r\n\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\ttype=\"text\" \r\n\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[showClearButton]=\"false\"\r\n\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[maxConstraints]=\"1\"\r\n\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{ label: 'E\u015Fittir', value: 'equals' },\r\n\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{ label: '\u0130\u00E7erir', value: 'contains' },\r\n\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]\"\r\n\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>\r\n\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<p-dropdown\r\n\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[ngModel]=\"getFilterValue(column.field())\"\r\n\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\tappendTo=\"self\"\r\n\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\tstyleClass=\"w-full\"\r\n\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<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<aril-button size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\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</ng-template>\r\n\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}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\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;\"\r\n\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[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}\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<p-overlayPanel styleClass=\"export-overlay-panel\" [baseZIndex]=\"1101\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Dosya Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\"\r\n\t\t\t\t\t[disabled]=\"isLoadingForExport()\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('navigateToExportRequests')\"\r\n\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t(clickEvent)=\"nativateToExportRequests()\" />\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('messages.export')\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t(clickEvent)=\"export()\"\r\n\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\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", 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}\n"], dependencies: [{ kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i7.ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8.CheckboxComponent, selector: "aril-checkbox[ngModel], aril-checkbox[formControl], aril-checkbox[formControlName]", inputs: ["label", "labelAsYesNo", "tabindex"] }, { kind: "component", type: i9.CheckIcon, selector: "CheckIcon" }, { kind: "component", type: i10.FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.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: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i13.OrderList, selector: "p-orderList", inputs: ["header", "style", "styleClass", "tabindex", "ariaLabel", "ariaLabelledBy", "listStyle", "responsive", "filterBy", "filterPlaceholder", "filterLocale", "metaKeySelection", "dragdrop", "controlsPosition", "ariaFilterLabel", "filterMatchMode", "breakpoint", "stripedRows", "disabled", "trackBy", "selection", "value"], outputs: ["selectionChange", "onReorder", "onSelectionChange", "onFilterEvent", "onFocus", "onBlur"] }, { kind: "component", type: i14.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i15.RadioButtonComponent, selector: "aril-radio-button[ngModel], aril-radio-button[formControl], aril-radio-button[formControlName]", inputs: ["options", "tabindex", "align"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i16.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: i16.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i16.RowGroupHeader, selector: "[pRowGroupHeader]" }, { kind: "directive", type: i16.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i16.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: i16.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i16.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i16.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i16.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i16.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i16.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "component", type: i16.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: i17.TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: i18.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i19.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: "component", type: i20.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", "view", "selectionMode", "tabindex", "showOnFocus", "timeOnly"] }, { kind: "pipe", type: i21.SafePipe, name: "safe" }] }); }
|
|
395
395
|
}
|
|
396
396
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableComponent, decorators: [{
|
|
397
397
|
type: Component,
|
|
398
|
-
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]=\"[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(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\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\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<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\r\n\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\tpResizableColumn>\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{{ column.header() }}\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\t@if (!isLazy()) {\r\n\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}\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<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\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{{ column.header() }}\r\n\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@if (isLazy() && isSortable() && column.type() !== 'operations') {\r\n\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}\r\n\t\t\t\t\t\t\t\t\t@if (isLazy() && showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\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@case (ColumnFilterTypeEnum.TEXT) {\r\n\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\ttype=\"text\" \r\n\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\tdisplay=\"menu\"\r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter \r\n\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[field]=\"column.field()\" \r\n\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[maxConstraints]=\"1\"\r\n\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/>\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\t@case (ColumnFilterTypeEnum.DATE) {\r\n\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<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=\"date\"\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\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\tclass=\"mt-2\"\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\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-calendar\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-6\" \r\n\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[appendTo]=\"null\" \r\n\t\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\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 size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (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 size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (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} @else {\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=\"date\" \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\t\t>\r\n\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<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"filter.value\"\r\n\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[appendTo]=\"null\" \r\n\t\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\t</ng-template>\r\n\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\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\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[field]=\"column.field()\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"boolean\" \r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter\r\n\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\ttype=\"text\" \r\n\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[showClearButton]=\"false\"\r\n\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[maxConstraints]=\"1\"\r\n\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{ label: 'E\u015Fittir', value: 'equals' },\r\n\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]\"\r\n\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>\r\n\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<p-dropdown\r\n\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[ngModel]=\"getFilterValue(column.field())\"\r\n\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\tappendTo=\"self\"\r\n\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\tstyleClass=\"w-full\"\r\n\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<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<aril-button size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\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</ng-template>\r\n\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}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\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;\"\r\n\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[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}\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<p-overlayPanel styleClass=\"export-overlay-panel\" [baseZIndex]=\"1101\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Dosya Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\"\r\n\t\t\t\t\t[disabled]=\"isLoadingForExport()\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('navigateToExportRequests')\"\r\n\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t(clickEvent)=\"nativateToExportRequests()\" />\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('messages.export')\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t(clickEvent)=\"export()\"\r\n\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\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", 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}\n"] }]
|
|
398
|
+
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]=\"[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(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\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\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<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\r\n\t\t\t\t\t\t\t[pSortableColumn]=\"column.field()\"\r\n\t\t\t\t\t\t\t[ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\"\r\n\t\t\t\t\t\t\tpResizableColumn>\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{{ column.header() }}\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\t@if (!isLazy()) {\r\n\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}\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<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{ width: column.width() ? column.width() : 'auto' }\" style=\"min-width: 170px\">\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{{ column.header() }}\r\n\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@if (isLazy() && isSortable() && column.type() !== 'operations') {\r\n\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}\r\n\t\t\t\t\t\t\t\t\t@if (isLazy() && showColumnFilters() && column.showFilter() && column.type() !== 'operations') {\r\n\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@case (ColumnFilterTypeEnum.TEXT) {\r\n\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\ttype=\"text\" \r\n\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\tdisplay=\"menu\"\r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter \r\n\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[field]=\"column.field()\" \r\n\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[maxConstraints]=\"1\"\r\n\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/>\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\t@case (ColumnFilterTypeEnum.DATE) {\r\n\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<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=\"date\"\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\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\tclass=\"mt-2\"\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\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-calendar\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-6\" \r\n\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[appendTo]=\"null\" \r\n\t\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\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 size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (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 size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (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} @else {\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=\"date\" \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\t\t>\r\n\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<aril-calendar\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"filter.value\"\r\n\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[appendTo]=\"null\" \r\n\t\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\t</ng-template>\r\n\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\t@case (ColumnFilterTypeEnum.BOOLEAN) {\r\n\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[field]=\"column.field()\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"boolean\" \r\n\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\tclass=\"mt-2\"\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}\r\n\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<p-columnFilter\r\n\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\ttype=\"text\" \r\n\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[showClearButton]=\"false\"\r\n\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[maxConstraints]=\"1\"\r\n\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{ label: 'E\u015Fittir', value: 'equals' },\r\n\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{ label: '\u0130\u00E7erir', value: 'contains' },\r\n\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]\"\r\n\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>\r\n\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<p-dropdown\r\n\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[ngModel]=\"getFilterValue(column.field())\"\r\n\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\tappendTo=\"self\"\r\n\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\tstyleClass=\"w-full\"\r\n\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<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<aril-button size=\"sm\" color=\"secondary\" [label]=\"'Temizle'\" (clickEvent)=\"clearFilter(filter, column.field())\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<aril-button size=\"sm\" color=\"primary\" [label]=\"'Uygula'\" (clickEvent)=\"applyFilter(filter, column.field())\" />\r\n\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</ng-template>\r\n\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}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\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;\"\r\n\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[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}\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<p-overlayPanel styleClass=\"export-overlay-panel\" [baseZIndex]=\"1101\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Dosya Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\"\r\n\t\t\t\t\t[disabled]=\"isLoadingForExport()\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('navigateToExportRequests')\"\r\n\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t(clickEvent)=\"nativateToExportRequests()\" />\r\n\r\n\t\t\t<aril-button\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t[label]=\"translocoService.translate('messages.export')\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t(clickEvent)=\"export()\"\r\n\t\t\t\t[disabled]=\"isLoadingForExport()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\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", 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}\n"] }]
|
|
399
399
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.NonNullableFormBuilder }, { type: i3.PrimeNGConfig }, { type: i3.MessageService }, { type: i4.TranslocoService }, { type: i5.SelectionGroupService }], propDecorators: { onPageEvent: [{
|
|
400
400
|
type: Output
|
|
401
401
|
}], selectionEvent: [{
|
|
@@ -418,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
418
418
|
}], expandableFields: [{
|
|
419
419
|
type: Input
|
|
420
420
|
}] } });
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUNOLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixjQUFjLEVBQ2QsSUFBSSxFQUNKLFFBQVEsRUFDUixHQUFHLEVBQ0gsU0FBUyxFQUNULElBQUksRUFDSixVQUFVLEVBQ1YsT0FBTyxFQUNQLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBSU4sb0JBQW9CLEVBSXBCLFVBQVUsRUFDVixhQUFhLEVBQ2IsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFjLG9CQUFvQixFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7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Q0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDZ0MsT0FBTztzQkFBN0MsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBQ1osRUFBRTtzQkFBMUIsU0FBUzt1QkFBQyxZQUFZO2dCQUNMLFFBQVE7c0JBQXpCLFNBQVM7dUJBQUMsS0FBSztnQkFDUCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZHJlbixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T3V0cHV0LFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0Vmlld0NoaWxkLFxyXG5cdGVmZmVjdCxcclxuXHRpbnB1dCxcclxuXHRzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlLCBQcmltZU5HQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVJvd1Jlb3JkZXJFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7XHJcblx0Y2F0Y2hFcnJvcixcclxuXHRjb25jYXRNYXAsXHJcblx0ZmlsdGVyLFxyXG5cdGZpbmFsaXplLFxyXG5cdGZpcnN0VmFsdWVGcm9tLFxyXG5cdGZyb20sXHJcblx0aW50ZXJ2YWwsXHJcblx0bWFwLFxyXG5cdHN3aXRjaE1hcCxcclxuXHR0YWtlLFxyXG5cdHRocm93RXJyb3IsXHJcblx0dG9BcnJheVxyXG59IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IFByb3h5VHlwZXMgfSBmcm9tICdhcmlsL2h0dHAnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcblxyXG5pbXBvcnQgeyB0cmFubGF0aW9ucyB9IGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCB7XHJcblx0QXJpbGZpZWxkRmlsdGVyLFxyXG5cdENvbEZvcm0sXHJcblx0Q29sdW1uRmllbGRWYWx1ZU1hcCxcclxuXHRDb2x1bW5GaWx0ZXJUeXBlRW51bSxcclxuXHRFeHBvcnRGb3JtLFxyXG5cdEV4cG9ydE9wdGlvbnMsXHJcblx0RXhwb3J0UmVxdWVzdCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdEZpbHRlck9wZXJhbmRcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBbGlnblR5cGVzLCBUYWJsZUNvbHVtbkNvbXBvbmVudCwgVGFibGVDb2x1bW5zIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuXHJcbi8qIFRPRE8gOlxyXG4gKiBzZXJ2ZXItc2lkZS1wcm94eSAoUHJveHlUeXBlcy5TZXJ2ZXJTaWRlKVxyXG4gKiBzZWFyY2ggJiBjb2x1bSBmaWx0ZXIgJiBzb3J0XHJcbiAqIHBhZ2luYXRpb24gb3BlcmF0aW9uXHJcbiAqIFF1ZXJ5IFNpZ25hbHNcclxuICovXHJcbmNvbnN0IHBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0gYXMgY29uc3Q7XHJcblxyXG50eXBlIFNlbGVjdGlvblR5cGVzID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgbnVsbDtcclxuaW50ZXJmYWNlIElLZWJhYk1lbnVJdGVtIHtcclxuXHRpY29uOiBzdHJpbmc7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHRvbkNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCB7XHJcblx0QE91dHB1dCgpIG9uUGFnZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3Rpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgbGF6eUxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgcm93UmVvcmRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvd1Jlb3JkZXJFdmVudD4oKTtcclxuXHRAQ29udGVudENoaWxkcmVuKFRhYmxlQ29sdW1uQ29tcG9uZW50KSBjb2x1bW5zITogVGFibGVDb2x1bW5zO1xyXG5cdEBWaWV3Q2hpbGQoT3ZlcmxheVBhbmVsKSBvcCE6IE92ZXJsYXlQYW5lbDtcclxuXHRAVmlld0NoaWxkKFRhYmxlKSB0YWJsZVJlZiE6IFRhYmxlO1xyXG5cdEBJbnB1dCgpIGtlYmFiTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblx0QElucHV0KCkgZXhwYW5kYWJsZUZpZWxkcyE6IHN0cmluZztcclxuXHJcblx0ZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPigpO1xyXG5cdGNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRyYWRpb0J1dHRvblNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XHJcblx0aGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdHBhZ2VTaXplID0gaW5wdXQ8KHR5cGVvZiBwYWdlT3B0aW9ucylbbnVtYmVyXT4oMTApO1xyXG5cdHByb3h5ID0gaW5wdXQ8UHJveHlUeXBlcz4oUHJveHlUeXBlcy5OYXRpdmUpO1xyXG5cdHNob3dGb290ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dEFsaWduID0gaW5wdXQ8QWxpZ25UeXBlcz4oJ2xlZnQnKTtcclxuXHRzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8U2VsZWN0aW9uVHlwZXM+KCdzaW5nbGUnKTtcclxuXHRzaG93U2VhcmNoVG9vbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHNob3dFeHBvcnRUb29sID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0ZXhwb3J0RmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRub0RhdGFGb3VuZExhYmVsID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YSBGb3VuZCcpO1xyXG5cdHRhYmxlSGVhZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2hvd1RhYmxlSGVhZGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzRmlyc3RSb3dTZWxlY3RlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRkYXRhS2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2VsZWN0ZWRSb3dzSW5wdXQgPSBpbnB1dDxhbnk+KFtdKTtcclxuXHRpc0xhenkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dG90YWxSZWNvcmRzID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHRwYWdpbmF0b3IgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvID0gaW5wdXQ8c3RyaW5nPignYm9keScpOyAvLyAnYm9keSd8ICdteURpdidcclxuXHRpc0NvbHVtbkV4cGFuZE1vZGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNSZXNpemFibGVDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzU29ydGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aGFuZGxlZFNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvblR5cGVzID0gJ3NpbmdsZSc7XHJcblx0c2Nyb2xsYWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHNjcm9sbEhlaWdodCA9IGlucHV0PHN0cmluZz4oJzM4MHB4Jyk7XHJcblx0c29ydE1vZGUgPSBpbnB1dDwnc2luZ2xlJyB8ICdtdWx0aXBsZSc+KCdtdWx0aXBsZScpO1xyXG5cdHNob3dGaXJzdExhc3RJY29uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cm93U2VsZWN0YWJsZSA9IGlucHV0PChyb3dEYXRhOiBhbnkpID0+IGJvb2xlYW4+KCgpID0+IHRydWUpO1xyXG5cdGlzU2hvd05vRGF0YUZvdW5kTWVzc2FnZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHJlb3JkZXJhYmxlQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRyZW9yZGVyRmllbGQgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblx0c2hvd0NvbHVtbkZpbHRlcnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBzZWUge0BsaW5rIEV4cG9ydE9wdGlvbnN9XHJcblx0ICovXHJcblx0ZXhwb3J0Q29uZmlnID0gaW5wdXQ8RXhwb3J0T3B0aW9ucz4oKTtcclxuXHJcblx0ZXhwb3J0Rm9ybSE6IEZvcm1Hcm91cDxFeHBvcnRGb3JtPjtcclxuXHRleHBvcnRUeXBlT3B0aW9ucyA9IFtcclxuXHRcdHsga2V5OiBFeHBvcnRUeXBlLkV4Y2VsLCBsYWJlbDogJ0V4Y2VsJywgZmlsZUV4dGVuc2lvbjogJy54bHN4JyB9LFxyXG5cdFx0eyBrZXk6IEV4cG9ydFR5cGUuQ3N2LCBsYWJlbDogJ0NzdicsIGZpbGVFeHRlbnNpb246ICcuY3N2JyB9XHJcblx0XTtcclxuXHRpc0xvYWRpbmdGb3JFeHBvcnQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRmaWx0ZXJUZXh0ITogc3RyaW5nO1xyXG5cdGlzQWxsU2VsZWN0ZWQgPSB0cnVlO1xyXG5cdHNlbGVjdGVkUm93czogYW55O1xyXG5cdHBhZ2VPcHRpb25zID0gcGFnZU9wdGlvbnM7XHJcblx0ZXhwb3J0Q29sdW1uczogQXJyYXk8eyB0aXRsZTogc3RyaW5nOyBkYXRhS2V5OiBzdHJpbmcgfT4gPSBbXTtcclxuXHRmaWx0ZXJWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogb2JqZWN0IHwgbnVsbCB9ID0ge307XHJcblx0cHJpdmF0ZSByZXF1ZXN0ZWRFbnVtS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIENvbHVtbkZpbHRlclR5cGVFbnVtID0gQ29sdW1uRmlsdGVyVHlwZUVudW07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBmYjogTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcclxuXHRcdHByaXZhdGUgcHJpbWVuZ0NvbmZpZzogUHJpbWVOR0NvbmZpZyxcclxuXHRcdHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNlbGVjdGlvbkdyb3VwU2VydmljZTogU2VsZWN0aW9uR3JvdXBTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLnByaW1lbmdDb25maWcuc2V0VHJhbnNsYXRpb24odHJhbmxhdGlvbnMpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmlzRmlyc3RSb3dTZWxlY3RlZCgpICYmIHRoaXMuZGF0YSgpKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLmRhdGEoKVswXTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGlvbkV2ZW50LmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZFJvd3NJbnB1dCgpKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93c0lucHV0KCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmV4cG9ydENvbmZpZygpKSB7XHJcblx0XHRcdFx0dGhpcy5jcmVhdGVFeHBvcnRGb3JtKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmNoZWNrYm94U2VsZWN0aW9uKCkgfHwgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGlvbigpKSB0aGlzLmhhbmRsZWRTZWxlY3Rpb25Nb2RlID0gbnVsbDtcclxuXHRcdFx0ZWxzZSB0aGlzLmhhbmRsZWRTZWxlY3Rpb25Nb2RlID0gdGhpcy5zZWxlY3Rpb25Nb2RlKCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5kYXRhKCk/Lmxlbmd0aCA9PSAxMCkgdGhpcy50YWJsZVJlZi5yb3dzID0gMTA7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaXNJbml0aWFsTG9hZCA9IHRydWU7XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snZGF0YSddLnByZXZpb3VzVmFsdWUpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNJbml0aWFsTG9hZCkge1xyXG5cdFx0XHRcdHRoaXMuaXNJbml0aWFsTG9hZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjcmVhdGVFeHBvcnRGb3JtKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgeyBleHBvcnRMYWJlbCB9ID0gdGhpcy5leHBvcnRDb25maWcoKSE7XHJcblxyXG5cdFx0dGhpcy5leHBvcnRGb3JtID0gdGhpcy5mYi5ncm91cDxFeHBvcnRGb3JtPih7XHJcblx0XHRcdGV4cG9ydFR5cGU6IHRoaXMuZmIuY29udHJvbChFeHBvcnRUeXBlLkV4Y2VsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuXHRcdFx0ZXhwb3J0TGFiZWw6IHRoaXMuZmIuY29udHJvbChleHBvcnRMYWJlbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcblx0XHRcdGNvbHVtbnM6IHRoaXMuZmIuYXJyYXk8Rm9ybUdyb3VwPENvbEZvcm0+PihbXSlcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuY29sdW1ucy5fcmVzdWx0c1xyXG5cdFx0XHQuZmlsdGVyKChjb2wpID0+IGNvbC50eXBlKCkgIT09ICdvcGVyYXRpb25zJylcclxuXHRcdFx0LmZpbHRlcigoY29sKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZXhwb3J0Q29uZmlnID0gdGhpcy5leHBvcnRDb25maWcoKTtcclxuXHRcdFx0XHRjb25zdCBleGNsdWRlZEZpZWxkcyA9IGV4cG9ydENvbmZpZz8uZXhjbHVkZWRGaWVsZHMgPz8gW107XHJcblxyXG5cdFx0XHRcdHJldHVybiAhZXhjbHVkZWRGaWVsZHMuaW5jbHVkZXMoY29sLmZpZWxkKCkpO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuZm9yRWFjaCgoY29sKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgY29sR3JvdXAgPSB0aGlzLmZiLmdyb3VwPENvbEZvcm0+KHtcclxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRoaXMuZmIuY29udHJvbCh0cnVlKSxcclxuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLmZiLmNvbnRyb2woY29sLmhlYWRlcigpKSxcclxuXHRcdFx0XHRcdGRhdGFLZXk6IHRoaXMuZmIuY29udHJvbChjb2wuZmllbGQoKSlcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0dGhpcy5leHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMucHVzaChjb2xHcm91cCk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHQpID0+ICh0aGlzLmlzQWxsU2VsZWN0ZWQgPSB0LmV2ZXJ5KChhKSA9PiBhLmNoZWNrZWQpKSk7XHJcblx0fVxyXG5cclxuXHRnZXQgaG9zdFVybCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGAke2dsb2JhbFRoaXMubG9jYXRpb24ucHJvdG9jb2x9Ly8ke2dsb2JhbFRoaXMubG9jYXRpb24uaG9zdH1gO1xyXG5cdH1cclxuXHJcblx0Z2V0IGN1cnJlbnRQYWdlUmVwb3J0VGV4dCgpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgdG90YWwgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0YWJsZS50b3RhbCcpO1xyXG5cdFx0Y29uc3QgcmVjb3JkID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUucmVjb3JkcycpO1xyXG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLnBhZ2UnKTtcclxuXHRcdHJldHVybiBgJHt0b3RhbH0gOiB7dG90YWxSZWNvcmRzfSAke3JlY29yZH0gfCAke3BhZ2V9IDoge2N1cnJlbnRQYWdlfSAvIHt0b3RhbFBhZ2VzfWA7XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBvcnQoKSB7XHJcblx0XHRjb25zdCB7IGV4cG9ydFR5cGUsIGV4cG9ydExhYmVsLCBjb2x1bW5zIH0gPSB0aGlzLmV4cG9ydEZvcm0udmFsdWU7XHJcblx0XHRjb25zdCB7XHJcblx0XHRcdHJvdXRlLFxyXG5cdFx0XHRwYXJhbXMsXHJcblx0XHRcdHBhZ2VTaXplLFxyXG5cdFx0XHRjb2x1bW5GaWVsZFZhbHVlTWFwLFxyXG5cdFx0XHRkYXRlQ29sdW1uRm9ybWF0TWFwLFxyXG5cdFx0XHRjb21wdXRlZENvbHVtbk1hcCxcclxuXHRcdFx0Y3VzdG9tUmVxVXJsLFxyXG5cdFx0XHRudW1iZXJDb2x1bW5TY2FsZU1hcCxcclxuXHRcdFx0dHJlZUNoaWxkTmFtZVxyXG5cdFx0fSA9IHRoaXMuZXhwb3J0Q29uZmlnKCkhO1xyXG5cclxuXHRcdGNvbnN0IGNoZWNrZWRDb2x1bW5zID0gY29sdW1ucyEuZmlsdGVyKCh0KSA9PiB0LmNoZWNrZWQpO1xyXG5cdFx0Y29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZXhwb3J0VHlwZU9wdGlvbnMuZmluZCgodCkgPT4gdC5rZXkgPT09IGV4cG9ydFR5cGUpPy5maWxlRXh0ZW5zaW9uO1xyXG5cclxuXHRcdGxldCBjb2x1bW5GaWVsZFZhbHVlTWFwT2JqOiBDb2x1bW5GaWVsZFZhbHVlTWFwIHwgdW5kZWZpbmVkO1xyXG5cclxuXHRcdHRoaXMuaXNMb2FkaW5nRm9yRXhwb3J0LnNldCh0cnVlKTtcclxuXHRcdHRoaXMuZXhwb3J0Rm9ybS5kaXNhYmxlKCk7XHJcblxyXG5cdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRrZXk6ICdleHBvcnQtdG9hc3QnLFxyXG5cdFx0XHRzdW1tYXJ5OiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5leHBvcnRpbmcnKSxcclxuXHRcdFx0ZGV0YWlsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5leHBvcnRpbmdEZXRhaWwnLCB7XHJcblx0XHRcdFx0dXJsOiBgJHt0aGlzLmhvc3RVcmx9LyMvbW5nL2NvbnRyb2wtbWFuYWdlbWVudC9leHBvcnQtcmVxdWVzdHNgXHJcblx0XHRcdH0pLFxyXG5cdFx0XHRsaWZlOiAxMCAqIDEwMDBcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5vcD8uaGlkZSgpO1xyXG5cclxuXHRcdGlmIChjb2x1bW5GaWVsZFZhbHVlTWFwKSB7XHJcblx0XHRcdGNvbnN0IHRlbXBPYmogPSB7fSBhcyBDb2x1bW5GaWVsZFZhbHVlTWFwO1xyXG5cclxuXHRcdFx0YXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdFx0ZnJvbShPYmplY3QuZW50cmllcyhjb2x1bW5GaWVsZFZhbHVlTWFwKSkucGlwZShcclxuXHRcdFx0XHRcdGNvbmNhdE1hcCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHQhdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2Uuc2VsZWN0aW9uR3JvdXBzKClbYCR7dmFsdWUuZ3JvdXBOYW1lfX4ke3ZhbHVlLnBhcmVudFNlbGVjdGlvbktleSA/PyAnQUxMJ31gXVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5mZXRjaEVudW0odmFsdWUuZ3JvdXBOYW1lLCB2YWx1ZS5wYXJlbnRTZWxlY3Rpb25LZXkpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCBrZXkgPSB2YWx1ZS5ncm91cE5hbWUgKyAnficgKyAodmFsdWUucGFyZW50U2VsZWN0aW9uS2V5ID8/ICdBTEwnKTtcclxuXHJcblx0XHRcdFx0XHRcdHJldHVybiBpbnRlcnZhbCgxMCkucGlwZShcclxuXHRcdFx0XHRcdFx0XHRmaWx0ZXIoKCkgPT4gIXRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLmlzTG9hZGluZyhrZXkpKSxcclxuXHRcdFx0XHRcdFx0XHR0YWtlKDEpLFxyXG5cdFx0XHRcdFx0XHRcdG1hcCgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzZWxlY3Rpb25Hcm91cCA9IHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpW2tleV07XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2VsZWN0aW9uR3JvdXApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGVtcE9ialtmaWVsZE5hbWVdID0gc2VsZWN0aW9uR3JvdXAuc2VsZWN0aW9uSXRlbXMucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGl0ZW0pID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhY2NbaXRlbS5zZWxlY3Rpb25LZXldID0gaXRlbS5zZWxlY3Rpb25EaXNwbGF5O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhY2M7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSwge30pIGFzIGFueTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHR0b0FycmF5KCksXHJcblx0XHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbHVtbkZpZWxkVmFsdWVNYXBPYmogPSB0ZW1wT2JqO1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcmVxdWVzdDogRXhwb3J0UmVxdWVzdCA9IHtcclxuXHRcdFx0cm91dGU6IHJvdXRlISxcclxuXHRcdFx0cGFyYW1zOiBwYXJhbXMhLFxyXG5cdFx0XHRwYWdlU2l6ZTogcGFnZVNpemUhLFxyXG5cdFx0XHRleHBvcnRUeXBlOiBleHBvcnRUeXBlISxcclxuXHRcdFx0ZXhwb3J0TGFiZWw6IGV4cG9ydExhYmVsISxcclxuXHRcdFx0Y29tcHV0ZWRDb2x1bW5NYXA6IGNvbXB1dGVkQ29sdW1uTWFwISxcclxuXHRcdFx0ZGF0ZUNvbHVtbkZvcm1hdE1hcDogZGF0ZUNvbHVtbkZvcm1hdE1hcCEsXHJcblx0XHRcdGNvbHVtbkZpZWxkVmFsdWVNYXA6IGNvbHVtbkZpZWxkVmFsdWVNYXBPYmohLFxyXG5cdFx0XHRudW1iZXJDb2x1bW5TY2FsZU1hcDogbnVtYmVyQ29sdW1uU2NhbGVNYXAgPz8ge30sXHJcblx0XHRcdGhlYWRlck5hbWVzOiBjaGVja2VkQ29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLnRpdGxlISksXHJcblx0XHRcdG91dHB1dEZpZWxkczogY2hlY2tlZENvbHVtbnMubWFwKChjb2wpID0+IGNvbC5kYXRhS2V5ISksXHJcblx0XHRcdHRyZWVDaGlsZE5hbWU6IHRyZWVDaGlsZE5hbWUhXHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IGFwaVVybCA9IGN1c3RvbVJlcVVybCA/IEFQSV9DT05GSUdTLmFwaS5yZXBsYWNlKC9cXC9bXlxcL10rXFwvdjEkLywgYC8ke2N1c3RvbVJlcVVybH0vdjFgKSA6IEFQSV9DT05GSUdTLmFwaTtcclxuXHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdHRoaXMuaHR0cC5wb3N0PHsgc3VjY2VzczogYm9vbGVhbjsgdXJsOiBzdHJpbmcgfT4oYCR7YXBpVXJsfS9iYXRjaC1leHBvcnRlcnMvZXhwb3J0YCwgcmVxdWVzdCkucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHJlcykgPT5cclxuXHRcdFx0XHRcdHRoaXMuaHR0cC5nZXQoYCR7YXBpVXJsfS9idWNrZXQtb2JqZWN0cy9kb3dubG9hZGAsIHtcclxuXHRcdFx0XHRcdFx0cGFyYW1zOiB7IHVybDogcmVzLnVybCB9LFxyXG5cdFx0XHRcdFx0XHRyZXNwb25zZVR5cGU6ICdibG9iJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlzTG9hZGluZ0ZvckV4cG9ydC5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdFx0dGhpcy5leHBvcnRGb3JtLmVuYWJsZSgpO1xyXG5cdFx0XHRcdFx0aWYgKGVycm9yPy5zdGF0dXMgPT09IDQwMCB8fCBlcnJvcj8uc3RhdHVzID09PSA1MDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRcdFx0XHRcdHNldmVyaXR5OiAnZXJyb3InLFxyXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ21lc3NhZ2VzLmV4cG9ydFVybE5vdEZvdW5kJyksXHJcblx0XHRcdFx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCdcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KTtcclxuXHJcblx0XHRzYXZlQXMocmVzcG9uc2UsIGAke2V4cG9ydExhYmVsfS0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfSR7ZmlsZUV4dGVuc2lvbn1gKTtcclxuXHRcdHRoaXMuaXNMb2FkaW5nRm9yRXhwb3J0LnNldChmYWxzZSk7XHJcblx0XHR0aGlzLmV4cG9ydEZvcm0uZW5hYmxlKCk7XHJcblx0XHR0aGlzLmV4cG9ydEZvcm0ucmVzZXQoKTtcclxuXHR9XHJcblxyXG5cdG9uU2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmF0KGkpO1xyXG5cdFx0XHRmb3JtR3JvdXAuY29udHJvbHMuY2hlY2tlZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFeHBvcnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB0aGlzLm9wLnRvZ2dsZShldmVudCk7XHJcblxyXG5cdGhhbmRsZUxhenlMb2FkRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc29ydEZpZWxkID0gZXZlbnQubXVsdGlTb3J0TWV0YT8ubGVuZ3RoID8gZXZlbnQubXVsdGlTb3J0TWV0YVswXSA6IG51bGw7XHJcblx0XHRjb25zdCBhcmlsRmlsdGVycyA9IHRoaXMuY29udmVydFByaW1lTmdGaWx0ZXJzVG9TdGFuZGFyZChldmVudC5maWx0ZXJzKTtcclxuXHJcblx0XHRjb25zdCBuZXdFdmVudERhdGEgPSB7XHJcblx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0cGFnZVNpemU6IGV2ZW50LnJvd3MsXHJcblx0XHRcdFx0cGFnZU51bWJlcjogZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzICsgMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzb3J0OlxyXG5cdFx0XHRcdHNvcnRGaWVsZD8uZmllbGQgP1xyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRmaWVsZElkOiBzb3J0RmllbGQ/LmZpZWxkLFxyXG5cdFx0XHRcdFx0XHRkaXJlY3Rpb246IHNvcnRGaWVsZD8ub3JkZXIgPT09IDEgPyAxIDogMiAvLyAxIGZvciBhc2MsIDIgZm9yIGRlc2NcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ6XHRudWxsLFxyXG5cdFx0XHRmaWx0ZXJzOiBhcmlsRmlsdGVyc1xyXG5cdFx0fTtcclxuXHRcdHRoaXMubGF6eUxvYWRFdmVudC5lbWl0KG5ld0V2ZW50RGF0YSk7XHJcblx0fVxyXG5cclxuXHRjbGVhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMudGFibGVSZWYudmFsdWUgPSBbXTtcclxuXHRcdHRoaXMudGFibGVSZWYuY2xlYXIoKTtcclxuXHRcdHRoaXMub3A/LmhpZGUoKTtcclxuXHR9XHJcblxyXG5cdG5hdGl2YXRlVG9FeHBvcnRSZXF1ZXN0cygpIHtcclxuXHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5ob3N0VXJsfS8jL21uZy9jb250cm9sLW1hbmFnZW1lbnQvZXhwb3J0LXJlcXVlc3RzYDtcclxuXHR9XHJcblxyXG5cdHJvd1Jlb3JkZXIoZXZlbnQ6IFRhYmxlUm93UmVvcmRlckV2ZW50KTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMucmVvcmRlckZpZWxkKCkpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignUmVvcmRlciBmaWVsZCBpcyBub3QgZGVmaW5lZC4gUGxlYXNlIHNldCB0aGUgcmVvcmRlckZpZWxkIGlucHV0LicpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9IGVsc2UgaWYgKCEoKHRoaXMucmVvcmRlckZpZWxkKCkgYXMgc3RyaW5nKSBpbiB0aGlzLmRhdGEoKVswXSkpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihgUmVvcmRlciBmaWVsZCBcIiR7dGhpcy5yZW9yZGVyRmllbGQoKX1cIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YSBpdGVtcy5gKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuZGF0YSgpLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdGl0ZW1bdGhpcy5yZW9yZGVyRmllbGQoKSBhcyBzdHJpbmddID0gaW5kZXggKyAxO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5yb3dSZW9yZGVyRXZlbnQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRnZXRGaWx0ZXJWYWx1ZShmaWVsZDogc3RyaW5nKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF0gfHwgbnVsbDtcclxuXHR9XHJcblxyXG5cdG9uRmlsdGVyQ2hhbmdlKHZhbHVlOiBvYmplY3QsIF9maWx0ZXJDYWxsYmFjazogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF0gPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGFwcGx5RmlsdGVyKGZpbHRlckNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCwgZmllbGQ6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF07XHJcblx0XHRmaWx0ZXJDYWxsYmFjayh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRjbGVhckZpbHRlcihmaWx0ZXJDYWxsYmFjazogKHZhbHVlOiBhbnkpID0+IHZvaWQsIGZpZWxkOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuZmlsdGVyVmFsdWVzW2ZpZWxkXSA9IG51bGw7XHJcblx0XHRmaWx0ZXJDYWxsYmFjayhudWxsKTtcclxuXHR9XHJcblxyXG5cdGdldEVudW1PcHRpb25zKGdyb3VwTmFtZTogc3RyaW5nLCBwYXJlbnRTZWxlY3Rpb25LZXkgPSAnQUxMJyk6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB7XHJcblx0XHRjb25zdCBrZXkgPSBgJHtncm91cE5hbWV9fiR7cGFyZW50U2VsZWN0aW9uS2V5fWA7XHJcblx0XHRjb25zdCBncm91cCA9IHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpW2tleV07XHJcblxyXG5cdFx0aWYgKCFncm91cCAmJiAhdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuaXNMb2FkaW5nKGtleSkgJiYgIXRoaXMucmVxdWVzdGVkRW51bUtleXMuaGFzKGtleSkpIHtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0ZWRFbnVtS2V5cy5hZGQoa2V5KTtcclxuXHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKGdyb3VwTmFtZSwgcGFyZW50U2VsZWN0aW9uS2V5KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRncm91cD8uc2VsZWN0aW9uSXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG5cdFx0XHRcdGxhYmVsOiBpdGVtLnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdFx0dmFsdWU6IGl0ZW0uc2VsZWN0aW9uS2V5XHJcblx0XHRcdH0pKSA/PyBbXVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY29udmVydFByaW1lTmdGaWx0ZXJzVG9TdGFuZGFyZChwcmltZU5nRmlsdGVyczogYW55KTogQXJpbGZpZWxkRmlsdGVyW10ge1xyXG5cdFx0Y29uc3QgZmlsdGVyczogQXJpbGZpZWxkRmlsdGVyW10gPSBbXTtcclxuXHJcblx0XHRpZiAoIXByaW1lTmdGaWx0ZXJzKSB7XHJcblx0XHRcdHJldHVybiBmaWx0ZXJzO1xyXG5cdFx0fVxyXG5cclxuXHRcdE9iamVjdC5rZXlzKHByaW1lTmdGaWx0ZXJzKS5mb3JFYWNoKChmaWVsZElkKSA9PiB7XHJcblx0XHRcdGNvbnN0IGZpZWxkRmlsdGVycyA9IHByaW1lTmdGaWx0ZXJzW2ZpZWxkSWRdO1xyXG5cclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZmllbGRGaWx0ZXJzKSAmJiBmaWVsZEZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpZWxkRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmlzVmFsaWRGaWx0ZXJWYWx1ZShmaWx0ZXIudmFsdWUpKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IG9wZXJhbmQgPSB0aGlzLm1hcE1hdGNoTW9kZVRvT3BlcmFuZChmaWx0ZXIubWF0Y2hNb2RlKTtcclxuXHRcdFx0XHRcdFx0aWYgKG9wZXJhbmQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgbXVsdGlwbGUgdmFsdWVzIGZvciBJTi9OT1RfSU4gb3BlcmF0aW9uc1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHByb2Nlc3NlZFZhbHVlID0gdGhpcy5wcm9jZXNzRmlsdGVyVmFsdWUoZmlsdGVyLnZhbHVlLCBvcGVyYW5kKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0ZmlsdGVycy5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkSWQ6IGlzTmFOKHBhcnNlSW50KGZpZWxkSWQpKSA/IGZpZWxkSWQgOiBwYXJzZUludChmaWVsZElkKSxcclxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhbmQ6IG9wZXJhbmQsXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvY2Vzc2VkVmFsdWVcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gZmlsdGVycztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaXNWYWxpZEZpbHRlclZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuXHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIHZhbHVlLmxlbmd0aCA+IDAgJiYgdmFsdWUuc29tZSgoaXRlbSkgPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQgJiYgaXRlbSAhPT0gJycpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS50cmltKCkgIT09ICcnO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBtYXBNYXRjaE1vZGVUb09wZXJhbmQobWF0Y2hNb2RlOiBzdHJpbmcpOiBGaWx0ZXJPcGVyYW5kIHwgbnVsbCB7XHJcblx0XHRjb25zdCBtb2RlTWFwOiB7IFtrZXk6IHN0cmluZ106IEZpbHRlck9wZXJhbmQgfSA9IHtcclxuXHRcdFx0ZXF1YWxzOiBGaWx0ZXJPcGVyYW5kLkVRLFxyXG5cdFx0XHRub3RFcXVhbHM6IEZpbHRlck9wZXJhbmQuTk9UX0VRLFxyXG5cdFx0XHRjb250YWluczogRmlsdGVyT3BlcmFuZC5MSUtFLFxyXG5cdFx0XHRub3RDb250YWluczogRmlsdGVyT3BlcmFuZC5OT1RfTElLRSxcclxuXHRcdFx0c3RhcnRzV2l0aDogRmlsdGVyT3BlcmFuZC5TVEFSVFMsXHJcblx0XHRcdGVuZHNXaXRoOiBGaWx0ZXJPcGVyYW5kLkVORFMsXHJcblx0XHRcdGx0OiBGaWx0ZXJPcGVyYW5kLkxULFxyXG5cdFx0XHRsdGU6IEZpbHRlck9wZXJhbmQuTFRFLFxyXG5cdFx0XHRndDogRmlsdGVyT3BlcmFuZC5HVCxcclxuXHRcdFx0Z3RlOiBGaWx0ZXJPcGVyYW5kLkdURSxcclxuXHRcdFx0aW46IEZpbHRlck9wZXJhbmQuSU4sXHJcblx0XHRcdG5vdEluOiBGaWx0ZXJPcGVyYW5kLk5PVF9JTixcclxuXHRcdFx0aXM6IEZpbHRlck9wZXJhbmQuRVEsXHJcblx0XHRcdGlzTm90OiBGaWx0ZXJPcGVyYW5kLk5PVF9FUSxcclxuXHRcdFx0YmVmb3JlOiBGaWx0ZXJPcGVyYW5kLkxULFxyXG5cdFx0XHRhZnRlcjogRmlsdGVyT3BlcmFuZC5HVCxcclxuXHRcdFx0ZGF0ZUlzOiBGaWx0ZXJPcGVyYW5kLkVRLFxyXG5cdFx0XHRkYXRlSXNOb3Q6IEZpbHRlck9wZXJhbmQuTk9UX0VRLFxyXG5cdFx0XHRkYXRlQmVmb3JlOiBGaWx0ZXJPcGVyYW5kLkxULFxyXG5cdFx0XHRkYXRlQWZ0ZXI6IEZpbHRlck9wZXJhbmQuR1RcclxuXHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIG1vZGVNYXBbbWF0Y2hNb2RlXSB8fCBudWxsO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwcm9jZXNzRmlsdGVyVmFsdWUodmFsdWU6IGFueSwgb3BlcmFuZDogRmlsdGVyT3BlcmFuZCkge1xyXG5cdFx0aWYgKG9wZXJhbmQgPT09IEZpbHRlck9wZXJhbmQuSU4gfHwgb3BlcmFuZCA9PT0gRmlsdGVyT3BlcmFuZC5OT1RfSU4pIHtcclxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG5cdFx0XHRcdHJldHVybiBbdmFsdWVdO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB2YWx1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdmFsdWU7XHJcblx0fVxyXG59XHJcbiIsIjxwLXRhYmxlXHJcblx0I3JlZlxyXG5cdFt2YWx1ZV09XCJkYXRhKClcIlxyXG5cdFtkYXRhS2V5XT1cImRhdGFLZXkoKVwiXHJcblx0W2NvbHVtbnNdPVwiY29sdW1ucy5fcmVzdWx0c1wiXHJcblx0W3Jvd3NdPVwicGFnZVNpemUoKVwiXHJcblx0W3Jvd0hvdmVyXT1cInRydWVcIlxyXG5cdFtwYWdpbmF0b3JdPVwiIXRoaXMuaXNMYXp5KCkgfHwgdGhpcy50b3RhbFJlY29yZHMoKSA+IDEwID8gdGhpcy5wYWdpbmF0b3IoKSA6IGZhbHNlXCJcclxuXHRbbGF6eV09XCJpc0xhenkoKVwiXHJcblx0W2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuXHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcclxuXHRbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuXHRbcm93U2VsZWN0YWJsZV09XCJyb3dTZWxlY3RhYmxlKClcIlxyXG5cdFtmaWx0ZXJEZWxheV09XCIwXCJcclxuXHRbc29ydE1vZGVdPVwic29ydE1vZGUoKVwiXHJcblx0WyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXHJcblx0KG9uUGFnZSk9XCJvblBhZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG5cdChvbkxhenlMb2FkKT1cImhhbmRsZUxhenlMb2FkRXZlbnQoJGV2ZW50KVwiXHJcblx0KHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkUm93cylcIlxyXG5cdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0W3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcclxuXHRbY29sdW1uUmVzaXplTW9kZV09XCJpc0NvbHVtbkV4cGFuZE1vZGUoKSA/ICdleHBhbmQnIDogJydcIlxyXG5cdFtyZXNpemFibGVDb2x1bW5zXT1cImlzUmVzaXphYmxlQ29sdW1ucygpXCJcclxuXHRbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJjdXJyZW50UGFnZVJlcG9ydFRleHRcIlxyXG5cdHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcblx0W3BhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbygpXCJcclxuXHRbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlKClcIlxyXG5cdFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0KClcIlxyXG5cdFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvbigpXCJcclxuXHRbcmVvcmRlcmFibGVDb2x1bW5zXT1cInJlb3JkZXJhYmxlQ29sdW1ucygpXCJcclxuXHQob25Sb3dSZW9yZGVyKT1cInJvd1Jlb3JkZXIoJGV2ZW50KVwiPlxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZ3JvdXBoZWFkZXJcIiBsZXQtaXRlbSBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XHJcblx0XHQ8dHIgcFJvd0dyb3VwSGVhZGVyIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2Y4ZmFmY1wiPlxyXG5cdFx0XHQ8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLl9yZXN1bHRzLmxlbmd0aFwiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIG1sLTJcIiBzdHlsZT1cImNvbG9yOiAjNmI3MjgwXCI+e3sgaXRlbS5ncm91cE5hbWUgfX08L3NwYW4+XHJcblx0XHRcdDwvdGQ+XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHRcdDx0cj5cclxuXHRcdFx0QGlmIChyZW9yZGVyYWJsZUNvbHVtbnMoKSB8fCByYWRpb0J1dHRvblNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6IDNyZW0gIWltcG9ydGFudFwiPjwvdGg+XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdDx0aD5cclxuXHRcdFx0XHRcdEBpZiAoaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdH1cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0QGlmIChpc1Jlc2l6YWJsZUNvbHVtbnMoKSkge1xyXG5cdFx0XHRcdFx0XHQ8dGhcclxuXHRcdFx0XHRcdFx0XHRbcFNvcnRhYmxlQ29sdW1uXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRbbmdTdHlsZV09XCJ7IHdpZHRoOiBjb2x1bW4ud2lkdGgoKSA/IGNvbHVtbi53aWR0aCgpIDogJ2F1dG8nIH1cIlxyXG5cdFx0XHRcdFx0XHRcdHBSZXNpemFibGVDb2x1bW4+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlbjsgcGFkZGluZy10b3A6IDRweDsgcGFkZGluZy1sZWZ0OiA0cHhcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKCFpc0xhenkoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0PHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sdW1uLmZpZWxkKClcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiBjb2x1bW4ud2lkdGgoKSA/IGNvbHVtbi53aWR0aCgpIDogJ2F1dG8nIH1cIiBzdHlsZT1cIm1pbi13aWR0aDogMTcwcHhcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChpc0xhenkoKSAmJiBpc1NvcnRhYmxlKCkgJiYgY29sdW1uLnR5cGUoKSAhPT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtc29ydEljb24gW2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCIgPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGlzTGF6eSgpICYmIHNob3dDb2x1bW5GaWx0ZXJzKCkgJiYgY29sdW1uLnNob3dGaWx0ZXIoKSAmJiBjb2x1bW4udHlwZSgpICE9PSAnb3BlcmF0aW9ucycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAc3dpdGNoIChjb2x1bW4uZmlsdGVyVHlwZSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAY2FzZSAoQ29sdW1uRmlsdGVyVHlwZUVudW0uVEVYVCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5PVwibWVudVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heENvbnN0cmFpbnRzXT1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5OVU1FUklDKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwLWNvbHVtbkZpbHRlciBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwibnVtZXJpY1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk9XCJtZW51XCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heENvbnN0cmFpbnRzXT1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5EQVRFKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLnNob3dUaW1lSW5EYXRlRmlsdGVycygpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk9XCJtZW51XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXhDb25zdHJhaW50c109XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93QXBwbHlCdXR0b25dPVwiZmFsc2VcIlxyXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIiBsZXQtdmFsdWU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWNhbGVuZGFyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiZ2V0RmlsdGVyVmFsdWUoY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQsIGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInctNlwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93VGltZV09XCJ0cnVlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2FwcGVuZFRvXT1cIm51bGxcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIG10LTVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b24gc2l6ZT1cInNtXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBbbGFiZWxdPVwiJ1RlbWl6bGUnXCIgKGNsaWNrRXZlbnQpPVwiY2xlYXJGaWx0ZXIoZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvbiBzaXplPVwic21cIiBjb2xvcj1cInByaW1hcnlcIiBbbGFiZWxdPVwiJ1V5Z3VsYSdcIiAoY2xpY2tFdmVudCk9XCJhcHBseUZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3AtY29sdW1uRmlsdGVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiZGF0ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5PVwibWVudVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heENvbnN0cmFpbnRzXT1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cImZpbHRlci52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ3LTZcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbYXBwZW5kVG9dPVwibnVsbFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9wLWNvbHVtbkZpbHRlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNhc2UgKENvbHVtbkZpbHRlclR5cGVFbnVtLkJPT0xFQU4pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJib29sZWFuXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm10LTJcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAY2FzZSAoQ29sdW1uRmlsdGVyVHlwZUVudW0uRU5VTSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk9XCJtZW51XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0FwcGx5QnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21hdGNoTW9kZU9wdGlvbnNdPVwiW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ0XFn2l0dGlyJywgdmFsdWU6ICdlcXVhbHMnIH0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiAnRcWfaXQgRGXEn2lsZGlyJywgdmFsdWU6ICdub3RFcXVhbHMnIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm10LTJcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCIgbGV0LXZhbHVlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtZHJvcGRvd25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiZ2V0RW51bU9wdGlvbnMoY29sdW1uLmVudW1Hcm91cE5hbWUoKSwgJ0FMTCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiZ2V0RmlsdGVyVmFsdWUoY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKCRldmVudC52YWx1ZSwgZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcHBlbmRUbz1cInNlbGZcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZUNsYXNzPVwidy1mdWxsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L3AtZHJvcGRvd24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmQgbXQtNVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b24gc2l6ZT1cInNtXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBbbGFiZWxdPVwiJ1RlbWl6bGUnXCIgKGNsaWNrRXZlbnQpPVwiY2xlYXJGaWx0ZXIoZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b24gc2l6ZT1cInNtXCIgY29sb3I9XCJwcmltYXJ5XCIgW2xhYmVsXT1cIidVeWd1bGEnXCIgKGNsaWNrRXZlbnQpPVwiYXBwbHlGaWx0ZXIoZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9wLWNvbHVtbkZpbHRlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChjb2x1bW4uaXNTaG93SGVhZGVyVG9vbHRpcCgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IGdyZWVuO1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIG10LTFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1pbmRleD1cInJvd0luZGV4XCI+XHJcblx0XHRAaWYgKGhhbmRsZWRTZWxlY3Rpb25Nb2RlKSB7XHJcblx0XHRcdDx0clxyXG5cdFx0XHRcdFtwU2VsZWN0YWJsZVJvd109XCJpdGVtXCJcclxuXHRcdFx0XHRbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogaXRlbT8ucm93Q29sb3IgPyBpdGVtPy5yb3dDb2xvciA6IG51bGwgfVwiXHJcblx0XHRcdFx0W3BSZW9yZGVyYWJsZVJvd109XCJpbmRleFwiPlxyXG5cdFx0XHRcdEBpZiAocmVvcmRlcmFibGVDb2x1bW5zKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJwaSBwaS1iYXJzXCIgcFJlb3JkZXJhYmxlUm93SGFuZGxlPjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAaWYgKHJhZGlvQnV0dG9uU2VsZWN0aW9uKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHAtdGFibGVSYWRpb0J1dHRvbiBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZVJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuXHRcdFx0XHRcdDx0ZCBbbmdTdHlsZV09XCJ7ICd0ZXh0LWFsaWduJzogY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnID8gJ2NlbnRlcicgOiBjb2x1bW4udEFsaWduKCkgfHwgdEFsaWduKCkgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiW2l0ZW1dXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDx0ciBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogaXRlbT8ucm93Q29sb3IgPyBpdGVtPy5yb3dDb2xvciA6IG51bGwgfVwiIFtwUmVvcmRlcmFibGVSb3ddPVwiaW5kZXhcIj5cclxuXHRcdFx0XHRAaWYgKHJlb3JkZXJhYmxlQ29sdW1ucygpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwicGkgcGktYmFyc1wiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKGNoZWNrYm94U2VsZWN0aW9uKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpZiAocmFkaW9CdXR0b25TZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZVJhZGlvQnV0dG9uIFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlUmFkaW9CdXR0b24+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdFx0PHRkIFtuZ1N0eWxlXT1cInsgJ3RleHQtYWxpZ24nOiBjb2x1bW4udHlwZSgpID09PSAnb3BlcmF0aW9ucycgPyAnY2VudGVyJyA6IGNvbHVtbi50QWxpZ24oKSB8fCB0QWxpZ24oKSB9XCI+XHJcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJbaXRlbV1cIiBbbmdGb3JUZW1wbGF0ZV09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdHI+XHJcblx0XHR9XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0QGlmIChzaG93Rm9vdGVyKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5fcmVzdWx0cy5sZW5ndGhcIj57eyBub0RhdGFGb3VuZExhYmVsKCkgfX08L3RkPlxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtdGFibGU+XHJcblxyXG48cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cImV4cG9ydC1vdmVybGF5LXBhbmVsXCIgW2Jhc2VaSW5kZXhdPVwiMTEwMVwiPlxyXG5cdEBpZiAoZXhwb3J0Rm9ybSkge1xyXG5cdFx0PGFyaWwtZm9ybSBbZm9ybUdyb3VwXT1cImV4cG9ydEZvcm1cIiBjbGFzcz1cInctMjByZW1cIj5cclxuXHRcdFx0PGFyaWwtZmllbGQgW2xhYmVsXT1cIidEb3N5YSBUaXBpJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXJhZGlvLWJ1dHRvbiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRUeXBlXCIgW29wdGlvbnNdPVwiZXhwb3J0VHlwZU9wdGlvbnNcIiAvPlxyXG5cdFx0XHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdFx0XHQ8YXJpbC1maWVsZCBbbGFiZWxdPVwiJ0Rvc3lhIMSwc21pJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRMYWJlbFwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHJcblx0XHRcdDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImNvbHVtbnNcIj5cclxuXHRcdFx0XHQ8cC1vcmRlckxpc3RcclxuXHRcdFx0XHRcdCNvcmRlckxpc3RSZWZcclxuXHRcdFx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0XHRcdFt2YWx1ZV09XCJleHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMuY29udHJvbHNcIlxyXG5cdFx0XHRcdFx0W2xpc3RTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogJzIwcmVtJyB9XCJcclxuXHRcdFx0XHRcdGZpbHRlckJ5PVwidmFsdWUudGl0bGVcIlxyXG5cdFx0XHRcdFx0W2Rpc2FibGVkXT1cImlzTG9hZGluZ0ZvckV4cG9ydCgpXCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWNoZWNrYm94XHJcblx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwiJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiaXNBbGxTZWxlY3RlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiaXNMb2FkaW5nRm9yRXhwb3J0KClcIiAvPlxyXG5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicC1vcmRlcmxpc3QtZmlsdGVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidmaWx0ZXInXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0I2ZpbHRlclxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJvbGU9XCJ0ZXh0Ym94XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGtleXVwKT1cIm9yZGVyTGlzdFJlZi5vbkZpbHRlcktleXVwKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwib3JkZXJMaXN0UmVmLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwLW9yZGVybGlzdC1maWx0ZXItaW5wdXQgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbGV0LWNvbCBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDxhcmlsLWNoZWNrYm94IFtsYWJlbF09XCJjb2wudmFsdWUudGl0bGVcIiBbZm9ybUNvbnRyb2xdPVwiY29sLmNvbnRyb2xzLmNoZWNrZWRcIiAvPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L3Atb3JkZXJMaXN0PlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25hdmlnYXRlVG9FeHBvcnRSZXF1ZXN0cycpXCJcclxuXHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0KGNsaWNrRXZlbnQpPVwibmF0aXZhdGVUb0V4cG9ydFJlcXVlc3RzKClcIiAvPlxyXG5cclxuXHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTJcIlxyXG5cdFx0XHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMuZXhwb3J0JylcIlxyXG5cdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiZXhwb3J0KClcIlxyXG5cdFx0XHRcdFtkaXNhYmxlZF09XCJpc0xvYWRpbmdGb3JFeHBvcnQoKVwiIC8+XHJcblx0XHQ8L2FyaWwtZm9ybT5cclxuXHR9XHJcbjwvcC1vdmVybGF5UGFuZWw+XHJcblxyXG48cC10b2FzdCBrZXk9XCJleHBvcnQtdG9hc3RcIj5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxyXG5cdFx0PHNwYW4gY2xhc3M9XCJwLXRvYXN0LW1lc3NhZ2UtaWNvblwiPlxyXG5cdFx0XHQ8Q2hlY2tJY29uIC8+XHJcblx0XHQ8L3NwYW4+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicC10b2FzdC1tZXNzYWdlLXRleHRcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInAtdG9hc3Qtc3VtbWFyeVwiPnt7IG1lc3NhZ2Uuc3VtbWFyeSB9fTwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicC10b2FzdC1kZXRhaWxcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2UuZGV0YWlsIHwgc2FmZTogJ2h0bWwnXCI+PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtdG9hc3Q+XHJcbiJdfQ==
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUNOLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixjQUFjLEVBQ2QsSUFBSSxFQUNKLFFBQVEsRUFDUixHQUFHLEVBQ0gsU0FBUyxFQUNULElBQUksRUFDSixVQUFVLEVBQ1YsT0FBTyxFQUNQLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBSU4sb0JBQW9CLEVBSXBCLFVBQVUsRUFDVixhQUFhLEVBQ2IsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFjLG9CQUFvQixFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7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Q0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDZ0MsT0FBTztzQkFBN0MsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBQ1osRUFBRTtzQkFBMUIsU0FBUzt1QkFBQyxZQUFZO2dCQUNMLFFBQVE7c0JBQXpCLFNBQVM7dUJBQUMsS0FBSztnQkFDUCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZHJlbixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T3V0cHV0LFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0Vmlld0NoaWxkLFxyXG5cdGVmZmVjdCxcclxuXHRpbnB1dCxcclxuXHRzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlLCBQcmltZU5HQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVJvd1Jlb3JkZXJFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7XHJcblx0Y2F0Y2hFcnJvcixcclxuXHRjb25jYXRNYXAsXHJcblx0ZmlsdGVyLFxyXG5cdGZpbmFsaXplLFxyXG5cdGZpcnN0VmFsdWVGcm9tLFxyXG5cdGZyb20sXHJcblx0aW50ZXJ2YWwsXHJcblx0bWFwLFxyXG5cdHN3aXRjaE1hcCxcclxuXHR0YWtlLFxyXG5cdHRocm93RXJyb3IsXHJcblx0dG9BcnJheVxyXG59IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IFByb3h5VHlwZXMgfSBmcm9tICdhcmlsL2h0dHAnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcblxyXG5pbXBvcnQgeyB0cmFubGF0aW9ucyB9IGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCB7XHJcblx0QXJpbGZpZWxkRmlsdGVyLFxyXG5cdENvbEZvcm0sXHJcblx0Q29sdW1uRmllbGRWYWx1ZU1hcCxcclxuXHRDb2x1bW5GaWx0ZXJUeXBlRW51bSxcclxuXHRFeHBvcnRGb3JtLFxyXG5cdEV4cG9ydE9wdGlvbnMsXHJcblx0RXhwb3J0UmVxdWVzdCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdEZpbHRlck9wZXJhbmRcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBbGlnblR5cGVzLCBUYWJsZUNvbHVtbkNvbXBvbmVudCwgVGFibGVDb2x1bW5zIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuXHJcbi8qIFRPRE8gOlxyXG4gKiBzZXJ2ZXItc2lkZS1wcm94eSAoUHJveHlUeXBlcy5TZXJ2ZXJTaWRlKVxyXG4gKiBzZWFyY2ggJiBjb2x1bSBmaWx0ZXIgJiBzb3J0XHJcbiAqIHBhZ2luYXRpb24gb3BlcmF0aW9uXHJcbiAqIFF1ZXJ5IFNpZ25hbHNcclxuICovXHJcbmNvbnN0IHBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0gYXMgY29uc3Q7XHJcblxyXG50eXBlIFNlbGVjdGlvblR5cGVzID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgbnVsbDtcclxuaW50ZXJmYWNlIElLZWJhYk1lbnVJdGVtIHtcclxuXHRpY29uOiBzdHJpbmc7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHRvbkNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCB7XHJcblx0QE91dHB1dCgpIG9uUGFnZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3Rpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgbGF6eUxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgcm93UmVvcmRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvd1Jlb3JkZXJFdmVudD4oKTtcclxuXHRAQ29udGVudENoaWxkcmVuKFRhYmxlQ29sdW1uQ29tcG9uZW50KSBjb2x1bW5zITogVGFibGVDb2x1bW5zO1xyXG5cdEBWaWV3Q2hpbGQoT3ZlcmxheVBhbmVsKSBvcCE6IE92ZXJsYXlQYW5lbDtcclxuXHRAVmlld0NoaWxkKFRhYmxlKSB0YWJsZVJlZiE6IFRhYmxlO1xyXG5cdEBJbnB1dCgpIGtlYmFiTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblx0QElucHV0KCkgZXhwYW5kYWJsZUZpZWxkcyE6IHN0cmluZztcclxuXHJcblx0ZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPigpO1xyXG5cdGNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRyYWRpb0J1dHRvblNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XHJcblx0aGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdHBhZ2VTaXplID0gaW5wdXQ8KHR5cGVvZiBwYWdlT3B0aW9ucylbbnVtYmVyXT4oMTApO1xyXG5cdHByb3h5ID0gaW5wdXQ8UHJveHlUeXBlcz4oUHJveHlUeXBlcy5OYXRpdmUpO1xyXG5cdHNob3dGb290ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dEFsaWduID0gaW5wdXQ8QWxpZ25UeXBlcz4oJ2xlZnQnKTtcclxuXHRzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8U2VsZWN0aW9uVHlwZXM+KCdzaW5nbGUnKTtcclxuXHRzaG93U2VhcmNoVG9vbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHNob3dFeHBvcnRUb29sID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0ZXhwb3J0RmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRub0RhdGFGb3VuZExhYmVsID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YSBGb3VuZCcpO1xyXG5cdHRhYmxlSGVhZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2hvd1RhYmxlSGVhZGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzRmlyc3RSb3dTZWxlY3RlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRkYXRhS2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2VsZWN0ZWRSb3dzSW5wdXQgPSBpbnB1dDxhbnk+KFtdKTtcclxuXHRpc0xhenkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dG90YWxSZWNvcmRzID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHRwYWdpbmF0b3IgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvID0gaW5wdXQ8c3RyaW5nPignYm9keScpOyAvLyAnYm9keSd8ICdteURpdidcclxuXHRpc0NvbHVtbkV4cGFuZE1vZGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNSZXNpemFibGVDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzU29ydGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aGFuZGxlZFNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvblR5cGVzID0gJ3NpbmdsZSc7XHJcblx0c2Nyb2xsYWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHNjcm9sbEhlaWdodCA9IGlucHV0PHN0cmluZz4oJzM4MHB4Jyk7XHJcblx0c29ydE1vZGUgPSBpbnB1dDwnc2luZ2xlJyB8ICdtdWx0aXBsZSc+KCdtdWx0aXBsZScpO1xyXG5cdHNob3dGaXJzdExhc3RJY29uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cm93U2VsZWN0YWJsZSA9IGlucHV0PChyb3dEYXRhOiBhbnkpID0+IGJvb2xlYW4+KCgpID0+IHRydWUpO1xyXG5cdGlzU2hvd05vRGF0YUZvdW5kTWVzc2FnZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHJlb3JkZXJhYmxlQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRyZW9yZGVyRmllbGQgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblx0c2hvd0NvbHVtbkZpbHRlcnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBzZWUge0BsaW5rIEV4cG9ydE9wdGlvbnN9XHJcblx0ICovXHJcblx0ZXhwb3J0Q29uZmlnID0gaW5wdXQ8RXhwb3J0T3B0aW9ucz4oKTtcclxuXHJcblx0ZXhwb3J0Rm9ybSE6IEZvcm1Hcm91cDxFeHBvcnRGb3JtPjtcclxuXHRleHBvcnRUeXBlT3B0aW9ucyA9IFtcclxuXHRcdHsga2V5OiBFeHBvcnRUeXBlLkV4Y2VsLCBsYWJlbDogJ0V4Y2VsJywgZmlsZUV4dGVuc2lvbjogJy54bHN4JyB9LFxyXG5cdFx0eyBrZXk6IEV4cG9ydFR5cGUuQ3N2LCBsYWJlbDogJ0NzdicsIGZpbGVFeHRlbnNpb246ICcuY3N2JyB9XHJcblx0XTtcclxuXHRpc0xvYWRpbmdGb3JFeHBvcnQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRmaWx0ZXJUZXh0ITogc3RyaW5nO1xyXG5cdGlzQWxsU2VsZWN0ZWQgPSB0cnVlO1xyXG5cdHNlbGVjdGVkUm93czogYW55O1xyXG5cdHBhZ2VPcHRpb25zID0gcGFnZU9wdGlvbnM7XHJcblx0ZXhwb3J0Q29sdW1uczogQXJyYXk8eyB0aXRsZTogc3RyaW5nOyBkYXRhS2V5OiBzdHJpbmcgfT4gPSBbXTtcclxuXHRmaWx0ZXJWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogb2JqZWN0IHwgbnVsbCB9ID0ge307XHJcblx0cHJpdmF0ZSByZXF1ZXN0ZWRFbnVtS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIENvbHVtbkZpbHRlclR5cGVFbnVtID0gQ29sdW1uRmlsdGVyVHlwZUVudW07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBmYjogTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcclxuXHRcdHByaXZhdGUgcHJpbWVuZ0NvbmZpZzogUHJpbWVOR0NvbmZpZyxcclxuXHRcdHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNlbGVjdGlvbkdyb3VwU2VydmljZTogU2VsZWN0aW9uR3JvdXBTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLnByaW1lbmdDb25maWcuc2V0VHJhbnNsYXRpb24odHJhbmxhdGlvbnMpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmlzRmlyc3RSb3dTZWxlY3RlZCgpICYmIHRoaXMuZGF0YSgpKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLmRhdGEoKVswXTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGlvbkV2ZW50LmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZFJvd3NJbnB1dCgpKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93c0lucHV0KCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmV4cG9ydENvbmZpZygpKSB7XHJcblx0XHRcdFx0dGhpcy5jcmVhdGVFeHBvcnRGb3JtKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmNoZWNrYm94U2VsZWN0aW9uKCkgfHwgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGlvbigpKSB0aGlzLmhhbmRsZWRTZWxlY3Rpb25Nb2RlID0gbnVsbDtcclxuXHRcdFx0ZWxzZSB0aGlzLmhhbmRsZWRTZWxlY3Rpb25Nb2RlID0gdGhpcy5zZWxlY3Rpb25Nb2RlKCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5kYXRhKCk/Lmxlbmd0aCA9PSAxMCkgdGhpcy50YWJsZVJlZi5yb3dzID0gMTA7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaXNJbml0aWFsTG9hZCA9IHRydWU7XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snZGF0YSddLnByZXZpb3VzVmFsdWUpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNJbml0aWFsTG9hZCkge1xyXG5cdFx0XHRcdHRoaXMuaXNJbml0aWFsTG9hZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjcmVhdGVFeHBvcnRGb3JtKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgeyBleHBvcnRMYWJlbCB9ID0gdGhpcy5leHBvcnRDb25maWcoKSE7XHJcblxyXG5cdFx0dGhpcy5leHBvcnRGb3JtID0gdGhpcy5mYi5ncm91cDxFeHBvcnRGb3JtPih7XHJcblx0XHRcdGV4cG9ydFR5cGU6IHRoaXMuZmIuY29udHJvbChFeHBvcnRUeXBlLkV4Y2VsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuXHRcdFx0ZXhwb3J0TGFiZWw6IHRoaXMuZmIuY29udHJvbChleHBvcnRMYWJlbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcblx0XHRcdGNvbHVtbnM6IHRoaXMuZmIuYXJyYXk8Rm9ybUdyb3VwPENvbEZvcm0+PihbXSlcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuY29sdW1ucy5fcmVzdWx0c1xyXG5cdFx0XHQuZmlsdGVyKChjb2wpID0+IGNvbC50eXBlKCkgIT09ICdvcGVyYXRpb25zJylcclxuXHRcdFx0LmZpbHRlcigoY29sKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZXhwb3J0Q29uZmlnID0gdGhpcy5leHBvcnRDb25maWcoKTtcclxuXHRcdFx0XHRjb25zdCBleGNsdWRlZEZpZWxkcyA9IGV4cG9ydENvbmZpZz8uZXhjbHVkZWRGaWVsZHMgPz8gW107XHJcblxyXG5cdFx0XHRcdHJldHVybiAhZXhjbHVkZWRGaWVsZHMuaW5jbHVkZXMoY29sLmZpZWxkKCkpO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuZm9yRWFjaCgoY29sKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgY29sR3JvdXAgPSB0aGlzLmZiLmdyb3VwPENvbEZvcm0+KHtcclxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRoaXMuZmIuY29udHJvbCh0cnVlKSxcclxuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLmZiLmNvbnRyb2woY29sLmhlYWRlcigpKSxcclxuXHRcdFx0XHRcdGRhdGFLZXk6IHRoaXMuZmIuY29udHJvbChjb2wuZmllbGQoKSlcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0dGhpcy5leHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMucHVzaChjb2xHcm91cCk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHQpID0+ICh0aGlzLmlzQWxsU2VsZWN0ZWQgPSB0LmV2ZXJ5KChhKSA9PiBhLmNoZWNrZWQpKSk7XHJcblx0fVxyXG5cclxuXHRnZXQgaG9zdFVybCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGAke2dsb2JhbFRoaXMubG9jYXRpb24ucHJvdG9jb2x9Ly8ke2dsb2JhbFRoaXMubG9jYXRpb24uaG9zdH1gO1xyXG5cdH1cclxuXHJcblx0Z2V0IGN1cnJlbnRQYWdlUmVwb3J0VGV4dCgpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgdG90YWwgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0YWJsZS50b3RhbCcpO1xyXG5cdFx0Y29uc3QgcmVjb3JkID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndGFibGUucmVjb3JkcycpO1xyXG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RhYmxlLnBhZ2UnKTtcclxuXHRcdHJldHVybiBgJHt0b3RhbH0gOiB7dG90YWxSZWNvcmRzfSAke3JlY29yZH0gfCAke3BhZ2V9IDoge2N1cnJlbnRQYWdlfSAvIHt0b3RhbFBhZ2VzfWA7XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBvcnQoKSB7XHJcblx0XHRjb25zdCB7IGV4cG9ydFR5cGUsIGV4cG9ydExhYmVsLCBjb2x1bW5zIH0gPSB0aGlzLmV4cG9ydEZvcm0udmFsdWU7XHJcblx0XHRjb25zdCB7XHJcblx0XHRcdHJvdXRlLFxyXG5cdFx0XHRwYXJhbXMsXHJcblx0XHRcdHBhZ2VTaXplLFxyXG5cdFx0XHRjb2x1bW5GaWVsZFZhbHVlTWFwLFxyXG5cdFx0XHRkYXRlQ29sdW1uRm9ybWF0TWFwLFxyXG5cdFx0XHRjb21wdXRlZENvbHVtbk1hcCxcclxuXHRcdFx0Y3VzdG9tUmVxVXJsLFxyXG5cdFx0XHRudW1iZXJDb2x1bW5TY2FsZU1hcCxcclxuXHRcdFx0dHJlZUNoaWxkTmFtZVxyXG5cdFx0fSA9IHRoaXMuZXhwb3J0Q29uZmlnKCkhO1xyXG5cclxuXHRcdGNvbnN0IGNoZWNrZWRDb2x1bW5zID0gY29sdW1ucyEuZmlsdGVyKCh0KSA9PiB0LmNoZWNrZWQpO1xyXG5cdFx0Y29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZXhwb3J0VHlwZU9wdGlvbnMuZmluZCgodCkgPT4gdC5rZXkgPT09IGV4cG9ydFR5cGUpPy5maWxlRXh0ZW5zaW9uO1xyXG5cclxuXHRcdGxldCBjb2x1bW5GaWVsZFZhbHVlTWFwT2JqOiBDb2x1bW5GaWVsZFZhbHVlTWFwIHwgdW5kZWZpbmVkO1xyXG5cclxuXHRcdHRoaXMuaXNMb2FkaW5nRm9yRXhwb3J0LnNldCh0cnVlKTtcclxuXHRcdHRoaXMuZXhwb3J0Rm9ybS5kaXNhYmxlKCk7XHJcblxyXG5cdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRrZXk6ICdleHBvcnQtdG9hc3QnLFxyXG5cdFx0XHRzdW1tYXJ5OiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5leHBvcnRpbmcnKSxcclxuXHRcdFx0ZGV0YWlsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5leHBvcnRpbmdEZXRhaWwnLCB7XHJcblx0XHRcdFx0dXJsOiBgJHt0aGlzLmhvc3RVcmx9LyMvbW5nL2NvbnRyb2wtbWFuYWdlbWVudC9leHBvcnQtcmVxdWVzdHNgXHJcblx0XHRcdH0pLFxyXG5cdFx0XHRsaWZlOiAxMCAqIDEwMDBcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5vcD8uaGlkZSgpO1xyXG5cclxuXHRcdGlmIChjb2x1bW5GaWVsZFZhbHVlTWFwKSB7XHJcblx0XHRcdGNvbnN0IHRlbXBPYmogPSB7fSBhcyBDb2x1bW5GaWVsZFZhbHVlTWFwO1xyXG5cclxuXHRcdFx0YXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdFx0ZnJvbShPYmplY3QuZW50cmllcyhjb2x1bW5GaWVsZFZhbHVlTWFwKSkucGlwZShcclxuXHRcdFx0XHRcdGNvbmNhdE1hcCgoW2ZpZWxkTmFtZSwgdmFsdWVdKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHQhdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2Uuc2VsZWN0aW9uR3JvdXBzKClbYCR7dmFsdWUuZ3JvdXBOYW1lfX4ke3ZhbHVlLnBhcmVudFNlbGVjdGlvbktleSA/PyAnQUxMJ31gXVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5mZXRjaEVudW0odmFsdWUuZ3JvdXBOYW1lLCB2YWx1ZS5wYXJlbnRTZWxlY3Rpb25LZXkpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCBrZXkgPSB2YWx1ZS5ncm91cE5hbWUgKyAnficgKyAodmFsdWUucGFyZW50U2VsZWN0aW9uS2V5ID8/ICdBTEwnKTtcclxuXHJcblx0XHRcdFx0XHRcdHJldHVybiBpbnRlcnZhbCgxMCkucGlwZShcclxuXHRcdFx0XHRcdFx0XHRmaWx0ZXIoKCkgPT4gIXRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLmlzTG9hZGluZyhrZXkpKSxcclxuXHRcdFx0XHRcdFx0XHR0YWtlKDEpLFxyXG5cdFx0XHRcdFx0XHRcdG1hcCgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzZWxlY3Rpb25Hcm91cCA9IHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpW2tleV07XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2VsZWN0aW9uR3JvdXApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGVtcE9ialtmaWVsZE5hbWVdID0gc2VsZWN0aW9uR3JvdXAuc2VsZWN0aW9uSXRlbXMucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGl0ZW0pID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhY2NbaXRlbS5zZWxlY3Rpb25LZXldID0gaXRlbS5zZWxlY3Rpb25EaXNwbGF5O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhY2M7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSwge30pIGFzIGFueTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHR0b0FycmF5KCksXHJcblx0XHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbHVtbkZpZWxkVmFsdWVNYXBPYmogPSB0ZW1wT2JqO1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcmVxdWVzdDogRXhwb3J0UmVxdWVzdCA9IHtcclxuXHRcdFx0cm91dGU6IHJvdXRlISxcclxuXHRcdFx0cGFyYW1zOiBwYXJhbXMhLFxyXG5cdFx0XHRwYWdlU2l6ZTogcGFnZVNpemUhLFxyXG5cdFx0XHRleHBvcnRUeXBlOiBleHBvcnRUeXBlISxcclxuXHRcdFx0ZXhwb3J0TGFiZWw6IGV4cG9ydExhYmVsISxcclxuXHRcdFx0Y29tcHV0ZWRDb2x1bW5NYXA6IGNvbXB1dGVkQ29sdW1uTWFwISxcclxuXHRcdFx0ZGF0ZUNvbHVtbkZvcm1hdE1hcDogZGF0ZUNvbHVtbkZvcm1hdE1hcCEsXHJcblx0XHRcdGNvbHVtbkZpZWxkVmFsdWVNYXA6IGNvbHVtbkZpZWxkVmFsdWVNYXBPYmohLFxyXG5cdFx0XHRudW1iZXJDb2x1bW5TY2FsZU1hcDogbnVtYmVyQ29sdW1uU2NhbGVNYXAgPz8ge30sXHJcblx0XHRcdGhlYWRlck5hbWVzOiBjaGVja2VkQ29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLnRpdGxlISksXHJcblx0XHRcdG91dHB1dEZpZWxkczogY2hlY2tlZENvbHVtbnMubWFwKChjb2wpID0+IGNvbC5kYXRhS2V5ISksXHJcblx0XHRcdHRyZWVDaGlsZE5hbWU6IHRyZWVDaGlsZE5hbWUhXHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IGFwaVVybCA9IGN1c3RvbVJlcVVybCA/IEFQSV9DT05GSUdTLmFwaS5yZXBsYWNlKC9cXC9bXlxcL10rXFwvdjEkLywgYC8ke2N1c3RvbVJlcVVybH0vdjFgKSA6IEFQSV9DT05GSUdTLmFwaTtcclxuXHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdHRoaXMuaHR0cC5wb3N0PHsgc3VjY2VzczogYm9vbGVhbjsgdXJsOiBzdHJpbmcgfT4oYCR7YXBpVXJsfS9iYXRjaC1leHBvcnRlcnMvZXhwb3J0YCwgcmVxdWVzdCkucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHJlcykgPT5cclxuXHRcdFx0XHRcdHRoaXMuaHR0cC5nZXQoYCR7YXBpVXJsfS9idWNrZXQtb2JqZWN0cy9kb3dubG9hZGAsIHtcclxuXHRcdFx0XHRcdFx0cGFyYW1zOiB7IHVybDogcmVzLnVybCB9LFxyXG5cdFx0XHRcdFx0XHRyZXNwb25zZVR5cGU6ICdibG9iJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlzTG9hZGluZ0ZvckV4cG9ydC5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdFx0dGhpcy5leHBvcnRGb3JtLmVuYWJsZSgpO1xyXG5cdFx0XHRcdFx0aWYgKGVycm9yPy5zdGF0dXMgPT09IDQwMCB8fCBlcnJvcj8uc3RhdHVzID09PSA1MDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRcdFx0XHRcdHNldmVyaXR5OiAnZXJyb3InLFxyXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ21lc3NhZ2VzLmV4cG9ydFVybE5vdEZvdW5kJyksXHJcblx0XHRcdFx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCdcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KTtcclxuXHJcblx0XHRzYXZlQXMocmVzcG9uc2UsIGAke2V4cG9ydExhYmVsfS0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfSR7ZmlsZUV4dGVuc2lvbn1gKTtcclxuXHRcdHRoaXMuaXNMb2FkaW5nRm9yRXhwb3J0LnNldChmYWxzZSk7XHJcblx0XHR0aGlzLmV4cG9ydEZvcm0uZW5hYmxlKCk7XHJcblx0XHR0aGlzLmV4cG9ydEZvcm0ucmVzZXQoKTtcclxuXHR9XHJcblxyXG5cdG9uU2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmF0KGkpO1xyXG5cdFx0XHRmb3JtR3JvdXAuY29udHJvbHMuY2hlY2tlZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFeHBvcnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB0aGlzLm9wLnRvZ2dsZShldmVudCk7XHJcblxyXG5cdGhhbmRsZUxhenlMb2FkRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc29ydEZpZWxkID0gZXZlbnQubXVsdGlTb3J0TWV0YT8ubGVuZ3RoID8gZXZlbnQubXVsdGlTb3J0TWV0YVswXSA6IG51bGw7XHJcblx0XHRjb25zdCBhcmlsRmlsdGVycyA9IHRoaXMuY29udmVydFByaW1lTmdGaWx0ZXJzVG9TdGFuZGFyZChldmVudC5maWx0ZXJzKTtcclxuXHJcblx0XHRjb25zdCBuZXdFdmVudERhdGEgPSB7XHJcblx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0cGFnZVNpemU6IGV2ZW50LnJvd3MsXHJcblx0XHRcdFx0cGFnZU51bWJlcjogZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzICsgMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzb3J0OlxyXG5cdFx0XHRcdHNvcnRGaWVsZD8uZmllbGQgP1xyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRmaWVsZElkOiBzb3J0RmllbGQ/LmZpZWxkLFxyXG5cdFx0XHRcdFx0XHRkaXJlY3Rpb246IHNvcnRGaWVsZD8ub3JkZXIgPT09IDEgPyAxIDogMiAvLyAxIGZvciBhc2MsIDIgZm9yIGRlc2NcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ6XHRudWxsLFxyXG5cdFx0XHRmaWx0ZXJzOiBhcmlsRmlsdGVyc1xyXG5cdFx0fTtcclxuXHRcdHRoaXMubGF6eUxvYWRFdmVudC5lbWl0KG5ld0V2ZW50RGF0YSk7XHJcblx0fVxyXG5cclxuXHRjbGVhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMudGFibGVSZWYudmFsdWUgPSBbXTtcclxuXHRcdHRoaXMudGFibGVSZWYuY2xlYXIoKTtcclxuXHRcdHRoaXMub3A/LmhpZGUoKTtcclxuXHR9XHJcblxyXG5cdG5hdGl2YXRlVG9FeHBvcnRSZXF1ZXN0cygpIHtcclxuXHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5ob3N0VXJsfS8jL21uZy9jb250cm9sLW1hbmFnZW1lbnQvZXhwb3J0LXJlcXVlc3RzYDtcclxuXHR9XHJcblxyXG5cdHJvd1Jlb3JkZXIoZXZlbnQ6IFRhYmxlUm93UmVvcmRlckV2ZW50KTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMucmVvcmRlckZpZWxkKCkpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignUmVvcmRlciBmaWVsZCBpcyBub3QgZGVmaW5lZC4gUGxlYXNlIHNldCB0aGUgcmVvcmRlckZpZWxkIGlucHV0LicpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9IGVsc2UgaWYgKCEoKHRoaXMucmVvcmRlckZpZWxkKCkgYXMgc3RyaW5nKSBpbiB0aGlzLmRhdGEoKVswXSkpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihgUmVvcmRlciBmaWVsZCBcIiR7dGhpcy5yZW9yZGVyRmllbGQoKX1cIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YSBpdGVtcy5gKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuZGF0YSgpLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdGl0ZW1bdGhpcy5yZW9yZGVyRmllbGQoKSBhcyBzdHJpbmddID0gaW5kZXggKyAxO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5yb3dSZW9yZGVyRXZlbnQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRnZXRGaWx0ZXJWYWx1ZShmaWVsZDogc3RyaW5nKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF0gfHwgbnVsbDtcclxuXHR9XHJcblxyXG5cdG9uRmlsdGVyQ2hhbmdlKHZhbHVlOiBvYmplY3QsIF9maWx0ZXJDYWxsYmFjazogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF0gPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGFwcGx5RmlsdGVyKGZpbHRlckNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCwgZmllbGQ6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlc1tmaWVsZF07XHJcblx0XHRmaWx0ZXJDYWxsYmFjayh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRjbGVhckZpbHRlcihmaWx0ZXJDYWxsYmFjazogKHZhbHVlOiBhbnkpID0+IHZvaWQsIGZpZWxkOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuZmlsdGVyVmFsdWVzW2ZpZWxkXSA9IG51bGw7XHJcblx0XHRmaWx0ZXJDYWxsYmFjayhudWxsKTtcclxuXHR9XHJcblxyXG5cdGdldEVudW1PcHRpb25zKGdyb3VwTmFtZTogc3RyaW5nLCBwYXJlbnRTZWxlY3Rpb25LZXkgPSAnQUxMJyk6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB7XHJcblx0XHRjb25zdCBrZXkgPSBgJHtncm91cE5hbWV9fiR7cGFyZW50U2VsZWN0aW9uS2V5fWA7XHJcblx0XHRjb25zdCBncm91cCA9IHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpW2tleV07XHJcblxyXG5cdFx0aWYgKCFncm91cCAmJiAhdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuaXNMb2FkaW5nKGtleSkgJiYgIXRoaXMucmVxdWVzdGVkRW51bUtleXMuaGFzKGtleSkpIHtcclxuXHRcdFx0dGhpcy5yZXF1ZXN0ZWRFbnVtS2V5cy5hZGQoa2V5KTtcclxuXHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKGdyb3VwTmFtZSwgcGFyZW50U2VsZWN0aW9uS2V5KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRncm91cD8uc2VsZWN0aW9uSXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG5cdFx0XHRcdGxhYmVsOiBpdGVtLnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdFx0dmFsdWU6IGl0ZW0uc2VsZWN0aW9uS2V5XHJcblx0XHRcdH0pKSA/PyBbXVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY29udmVydFByaW1lTmdGaWx0ZXJzVG9TdGFuZGFyZChwcmltZU5nRmlsdGVyczogYW55KTogQXJpbGZpZWxkRmlsdGVyW10ge1xyXG5cdFx0Y29uc3QgZmlsdGVyczogQXJpbGZpZWxkRmlsdGVyW10gPSBbXTtcclxuXHJcblx0XHRpZiAoIXByaW1lTmdGaWx0ZXJzKSB7XHJcblx0XHRcdHJldHVybiBmaWx0ZXJzO1xyXG5cdFx0fVxyXG5cclxuXHRcdE9iamVjdC5rZXlzKHByaW1lTmdGaWx0ZXJzKS5mb3JFYWNoKChmaWVsZElkKSA9PiB7XHJcblx0XHRcdGNvbnN0IGZpZWxkRmlsdGVycyA9IHByaW1lTmdGaWx0ZXJzW2ZpZWxkSWRdO1xyXG5cclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZmllbGRGaWx0ZXJzKSAmJiBmaWVsZEZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpZWxkRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmlzVmFsaWRGaWx0ZXJWYWx1ZShmaWx0ZXIudmFsdWUpKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IG9wZXJhbmQgPSB0aGlzLm1hcE1hdGNoTW9kZVRvT3BlcmFuZChmaWx0ZXIubWF0Y2hNb2RlKTtcclxuXHRcdFx0XHRcdFx0aWYgKG9wZXJhbmQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgbXVsdGlwbGUgdmFsdWVzIGZvciBJTi9OT1RfSU4gb3BlcmF0aW9uc1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHByb2Nlc3NlZFZhbHVlID0gdGhpcy5wcm9jZXNzRmlsdGVyVmFsdWUoZmlsdGVyLnZhbHVlLCBvcGVyYW5kKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0ZmlsdGVycy5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkSWQ6IGlzTmFOKHBhcnNlSW50KGZpZWxkSWQpKSA/IGZpZWxkSWQgOiBwYXJzZUludChmaWVsZElkKSxcclxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhbmQ6IG9wZXJhbmQsXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvY2Vzc2VkVmFsdWVcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gZmlsdGVycztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaXNWYWxpZEZpbHRlclZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuXHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIHZhbHVlLmxlbmd0aCA+IDAgJiYgdmFsdWUuc29tZSgoaXRlbSkgPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQgJiYgaXRlbSAhPT0gJycpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS50cmltKCkgIT09ICcnO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBtYXBNYXRjaE1vZGVUb09wZXJhbmQobWF0Y2hNb2RlOiBzdHJpbmcpOiBGaWx0ZXJPcGVyYW5kIHwgbnVsbCB7XHJcblx0XHRjb25zdCBtb2RlTWFwOiB7IFtrZXk6IHN0cmluZ106IEZpbHRlck9wZXJhbmQgfSA9IHtcclxuXHRcdFx0ZXF1YWxzOiBGaWx0ZXJPcGVyYW5kLkVRLFxyXG5cdFx0XHRub3RFcXVhbHM6IEZpbHRlck9wZXJhbmQuTk9UX0VRLFxyXG5cdFx0XHRjb250YWluczogRmlsdGVyT3BlcmFuZC5MSUtFLFxyXG5cdFx0XHRub3RDb250YWluczogRmlsdGVyT3BlcmFuZC5OT1RfTElLRSxcclxuXHRcdFx0c3RhcnRzV2l0aDogRmlsdGVyT3BlcmFuZC5TVEFSVFMsXHJcblx0XHRcdGVuZHNXaXRoOiBGaWx0ZXJPcGVyYW5kLkVORFMsXHJcblx0XHRcdGx0OiBGaWx0ZXJPcGVyYW5kLkxULFxyXG5cdFx0XHRsdGU6IEZpbHRlck9wZXJhbmQuTFRFLFxyXG5cdFx0XHRndDogRmlsdGVyT3BlcmFuZC5HVCxcclxuXHRcdFx0Z3RlOiBGaWx0ZXJPcGVyYW5kLkdURSxcclxuXHRcdFx0aW46IEZpbHRlck9wZXJhbmQuSU4sXHJcblx0XHRcdG5vdEluOiBGaWx0ZXJPcGVyYW5kLk5PVF9JTixcclxuXHRcdFx0aXM6IEZpbHRlck9wZXJhbmQuRVEsXHJcblx0XHRcdGlzTm90OiBGaWx0ZXJPcGVyYW5kLk5PVF9FUSxcclxuXHRcdFx0YmVmb3JlOiBGaWx0ZXJPcGVyYW5kLkxULFxyXG5cdFx0XHRhZnRlcjogRmlsdGVyT3BlcmFuZC5HVCxcclxuXHRcdFx0ZGF0ZUlzOiBGaWx0ZXJPcGVyYW5kLkVRLFxyXG5cdFx0XHRkYXRlSXNOb3Q6IEZpbHRlck9wZXJhbmQuTk9UX0VRLFxyXG5cdFx0XHRkYXRlQmVmb3JlOiBGaWx0ZXJPcGVyYW5kLkxULFxyXG5cdFx0XHRkYXRlQWZ0ZXI6IEZpbHRlck9wZXJhbmQuR1RcclxuXHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIG1vZGVNYXBbbWF0Y2hNb2RlXSB8fCBudWxsO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwcm9jZXNzRmlsdGVyVmFsdWUodmFsdWU6IGFueSwgb3BlcmFuZDogRmlsdGVyT3BlcmFuZCkge1xyXG5cdFx0aWYgKG9wZXJhbmQgPT09IEZpbHRlck9wZXJhbmQuSU4gfHwgb3BlcmFuZCA9PT0gRmlsdGVyT3BlcmFuZC5OT1RfSU4pIHtcclxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG5cdFx0XHRcdHJldHVybiBbdmFsdWVdO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB2YWx1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdmFsdWU7XHJcblx0fVxyXG59XHJcbiIsIjxwLXRhYmxlXHJcblx0I3JlZlxyXG5cdFt2YWx1ZV09XCJkYXRhKClcIlxyXG5cdFtkYXRhS2V5XT1cImRhdGFLZXkoKVwiXHJcblx0W2NvbHVtbnNdPVwiY29sdW1ucy5fcmVzdWx0c1wiXHJcblx0W3Jvd3NdPVwicGFnZVNpemUoKVwiXHJcblx0W3Jvd0hvdmVyXT1cInRydWVcIlxyXG5cdFtwYWdpbmF0b3JdPVwiIXRoaXMuaXNMYXp5KCkgfHwgdGhpcy50b3RhbFJlY29yZHMoKSA+IDEwID8gdGhpcy5wYWdpbmF0b3IoKSA6IGZhbHNlXCJcclxuXHRbbGF6eV09XCJpc0xhenkoKVwiXHJcblx0W2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuXHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcclxuXHRbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuXHRbcm93U2VsZWN0YWJsZV09XCJyb3dTZWxlY3RhYmxlKClcIlxyXG5cdFtmaWx0ZXJEZWxheV09XCIwXCJcclxuXHRbc29ydE1vZGVdPVwic29ydE1vZGUoKVwiXHJcblx0WyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXHJcblx0KG9uUGFnZSk9XCJvblBhZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG5cdChvbkxhenlMb2FkKT1cImhhbmRsZUxhenlMb2FkRXZlbnQoJGV2ZW50KVwiXHJcblx0KHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkUm93cylcIlxyXG5cdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0W3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcclxuXHRbY29sdW1uUmVzaXplTW9kZV09XCJpc0NvbHVtbkV4cGFuZE1vZGUoKSA/ICdleHBhbmQnIDogJydcIlxyXG5cdFtyZXNpemFibGVDb2x1bW5zXT1cImlzUmVzaXphYmxlQ29sdW1ucygpXCJcclxuXHRbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJjdXJyZW50UGFnZVJlcG9ydFRleHRcIlxyXG5cdHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcblx0W3BhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbygpXCJcclxuXHRbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlKClcIlxyXG5cdFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0KClcIlxyXG5cdFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvbigpXCJcclxuXHRbcmVvcmRlcmFibGVDb2x1bW5zXT1cInJlb3JkZXJhYmxlQ29sdW1ucygpXCJcclxuXHQob25Sb3dSZW9yZGVyKT1cInJvd1Jlb3JkZXIoJGV2ZW50KVwiPlxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZ3JvdXBoZWFkZXJcIiBsZXQtaXRlbSBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XHJcblx0XHQ8dHIgcFJvd0dyb3VwSGVhZGVyIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2Y4ZmFmY1wiPlxyXG5cdFx0XHQ8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLl9yZXN1bHRzLmxlbmd0aFwiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIG1sLTJcIiBzdHlsZT1cImNvbG9yOiAjNmI3MjgwXCI+e3sgaXRlbS5ncm91cE5hbWUgfX08L3NwYW4+XHJcblx0XHRcdDwvdGQ+XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHRcdDx0cj5cclxuXHRcdFx0QGlmIChyZW9yZGVyYWJsZUNvbHVtbnMoKSB8fCByYWRpb0J1dHRvblNlbGVjdGlvbigpKSB7XHJcblx0XHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6IDNyZW0gIWltcG9ydGFudFwiPjwvdGg+XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdDx0aD5cclxuXHRcdFx0XHRcdEBpZiAoaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdH1cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0QGlmIChpc1Jlc2l6YWJsZUNvbHVtbnMoKSkge1xyXG5cdFx0XHRcdFx0XHQ8dGhcclxuXHRcdFx0XHRcdFx0XHRbcFNvcnRhYmxlQ29sdW1uXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRbbmdTdHlsZV09XCJ7IHdpZHRoOiBjb2x1bW4ud2lkdGgoKSA/IGNvbHVtbi53aWR0aCgpIDogJ2F1dG8nIH1cIlxyXG5cdFx0XHRcdFx0XHRcdHBSZXNpemFibGVDb2x1bW4+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlbjsgcGFkZGluZy10b3A6IDRweDsgcGFkZGluZy1sZWZ0OiA0cHhcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKCFpc0xhenkoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0PHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sdW1uLmZpZWxkKClcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiBjb2x1bW4ud2lkdGgoKSA/IGNvbHVtbi53aWR0aCgpIDogJ2F1dG8nIH1cIiBzdHlsZT1cIm1pbi13aWR0aDogMTcwcHhcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChpc0xhenkoKSAmJiBpc1NvcnRhYmxlKCkgJiYgY29sdW1uLnR5cGUoKSAhPT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtc29ydEljb24gW2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCIgPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGlzTGF6eSgpICYmIHNob3dDb2x1bW5GaWx0ZXJzKCkgJiYgY29sdW1uLnNob3dGaWx0ZXIoKSAmJiBjb2x1bW4udHlwZSgpICE9PSAnb3BlcmF0aW9ucycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAc3dpdGNoIChjb2x1bW4uZmlsdGVyVHlwZSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAY2FzZSAoQ29sdW1uRmlsdGVyVHlwZUVudW0uVEVYVCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5PVwibWVudVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heENvbnN0cmFpbnRzXT1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5OVU1FUklDKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwLWNvbHVtbkZpbHRlciBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwibnVtZXJpY1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk9XCJtZW51XCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heENvbnN0cmFpbnRzXT1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXQtMlwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjYXNlIChDb2x1bW5GaWx0ZXJUeXBlRW51bS5EQVRFKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLnNob3dUaW1lSW5EYXRlRmlsdGVycygpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk9XCJtZW51XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttYXhDb25zdHJhaW50c109XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93QXBwbHlCdXR0b25dPVwiZmFsc2VcIlxyXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIiBsZXQtdmFsdWU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWNhbGVuZGFyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiZ2V0RmlsdGVyVmFsdWUoY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQsIGZpbHRlciwgY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInctNlwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtzaG93VGltZV09XCJ0cnVlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2FwcGVuZFRvXT1cIm51bGxcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIG10LTVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b24gc2l6ZT1cInNtXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBbbGFiZWxdPVwiJ1RlbWl6bGUnXCIgKGNsaWNrRXZlbnQpPVwiY2xlYXJGaWx0ZXIoZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvbiBzaXplPVwic21cIiBjb2xvcj1cInByaW1hcnlcIiBbbGFiZWxdPVwiJ1V5Z3VsYSdcIiAoY2xpY2tFdmVudCk9XCJhcHBseUZpbHRlcihmaWx0ZXIsIGNvbHVtbi5maWVsZCgpKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3AtY29sdW1uRmlsdGVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiZGF0ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImNvbHVtbi5maWVsZCgpXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5PVwibWVudVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21heENvbnN0cmFpbnRzXT1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtdC0yXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cImZpbHRlci52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ3LTZcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbYXBwZW5kVG9dPVwibnVsbFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9wLWNvbHVtbkZpbHRlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNhc2UgKENvbHVtbkZpbHRlclR5cGVFbnVtLkJPT0xFQU4pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtY29sdW1uRmlsdGVyIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJib29sZWFuXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheT1cIm1lbnVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm10LTJcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAY2FzZSAoQ29sdW1uRmlsdGVyVHlwZUVudW0uRU5VTSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1jb2x1bW5GaWx0ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk9XCJtZW51XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0FwcGx5QnV0dG9uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWF4Q29uc3RyYWludHNdPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21hdGNoTW9kZU9wdGlvbnNdPVwiW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ0XFn2l0dGlyJywgdmFsdWU6ICdlcXVhbHMnIH0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiAnRcWfaXQgRGXEn2lsZGlyJywgdmFsdWU6ICdub3RFcXVhbHMnIH0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiAnxLDDp2VyaXInLCB2YWx1ZTogJ2NvbnRhaW5zJyB9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogJ8Sww6dlcm1leicsIHZhbHVlOiAnbm90Q29udGFpbnMnIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm10LTJcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCIgbGV0LXZhbHVlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAtZHJvcGRvd25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiZ2V0RW51bU9wdGlvbnMoY29sdW1uLmVudW1Hcm91cE5hbWUoKSwgJ0FMTCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiZ2V0RmlsdGVyVmFsdWUoY29sdW1uLmZpZWxkKCkpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKCRldmVudC52YWx1ZSwgZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcHBlbmRUbz1cInNlbGZcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2hvd0NsZWFyXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZUNsYXNzPVwidy1mdWxsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L3AtZHJvcGRvd24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmQgbXQtNVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b24gc2l6ZT1cInNtXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBbbGFiZWxdPVwiJ1RlbWl6bGUnXCIgKGNsaWNrRXZlbnQpPVwiY2xlYXJGaWx0ZXIoZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b24gc2l6ZT1cInNtXCIgY29sb3I9XCJwcmltYXJ5XCIgW2xhYmVsXT1cIidVeWd1bGEnXCIgKGNsaWNrRXZlbnQpPVwiYXBwbHlGaWx0ZXIoZmlsdGVyLCBjb2x1bW4uZmllbGQoKSlcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9wLWNvbHVtbkZpbHRlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChjb2x1bW4uaXNTaG93SGVhZGVyVG9vbHRpcCgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IGdyZWVuO1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIG10LTFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1pbmRleD1cInJvd0luZGV4XCI+XHJcblx0XHRAaWYgKGhhbmRsZWRTZWxlY3Rpb25Nb2RlKSB7XHJcblx0XHRcdDx0clxyXG5cdFx0XHRcdFtwU2VsZWN0YWJsZVJvd109XCJpdGVtXCJcclxuXHRcdFx0XHRbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogaXRlbT8ucm93Q29sb3IgPyBpdGVtPy5yb3dDb2xvciA6IG51bGwgfVwiXHJcblx0XHRcdFx0W3BSZW9yZGVyYWJsZVJvd109XCJpbmRleFwiPlxyXG5cdFx0XHRcdEBpZiAocmVvcmRlcmFibGVDb2x1bW5zKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJwaSBwaS1iYXJzXCIgcFJlb3JkZXJhYmxlUm93SGFuZGxlPjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAaWYgKHJhZGlvQnV0dG9uU2VsZWN0aW9uKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHAtdGFibGVSYWRpb0J1dHRvbiBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZVJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuXHRcdFx0XHRcdDx0ZCBbbmdTdHlsZV09XCJ7ICd0ZXh0LWFsaWduJzogY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnID8gJ2NlbnRlcicgOiBjb2x1bW4udEFsaWduKCkgfHwgdEFsaWduKCkgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiW2l0ZW1dXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDx0ciBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogaXRlbT8ucm93Q29sb3IgPyBpdGVtPy5yb3dDb2xvciA6IG51bGwgfVwiIFtwUmVvcmRlcmFibGVSb3ddPVwiaW5kZXhcIj5cclxuXHRcdFx0XHRAaWYgKHJlb3JkZXJhYmxlQ29sdW1ucygpKSB7XHJcblx0XHRcdFx0XHQ8dGQ+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwicGkgcGktYmFyc1wiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKGNoZWNrYm94U2VsZWN0aW9uKCkpIHtcclxuXHRcdFx0XHRcdDx0ZD5cclxuXHRcdFx0XHRcdFx0PHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpZiAocmFkaW9CdXR0b25TZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZVJhZGlvQnV0dG9uIFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlUmFkaW9CdXR0b24+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdFx0PHRkIFtuZ1N0eWxlXT1cInsgJ3RleHQtYWxpZ24nOiBjb2x1bW4udHlwZSgpID09PSAnb3BlcmF0aW9ucycgPyAnY2VudGVyJyA6IGNvbHVtbi50QWxpZ24oKSB8fCB0QWxpZ24oKSB9XCI+XHJcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJbaXRlbV1cIiBbbmdGb3JUZW1wbGF0ZV09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdHI+XHJcblx0XHR9XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0QGlmIChzaG93Rm9vdGVyKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5fcmVzdWx0cy5sZW5ndGhcIj57eyBub0RhdGFGb3VuZExhYmVsKCkgfX08L3RkPlxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtdGFibGU+XHJcblxyXG48cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cImV4cG9ydC1vdmVybGF5LXBhbmVsXCIgW2Jhc2VaSW5kZXhdPVwiMTEwMVwiPlxyXG5cdEBpZiAoZXhwb3J0Rm9ybSkge1xyXG5cdFx0PGFyaWwtZm9ybSBbZm9ybUdyb3VwXT1cImV4cG9ydEZvcm1cIiBjbGFzcz1cInctMjByZW1cIj5cclxuXHRcdFx0PGFyaWwtZmllbGQgW2xhYmVsXT1cIidEb3N5YSBUaXBpJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXJhZGlvLWJ1dHRvbiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRUeXBlXCIgW29wdGlvbnNdPVwiZXhwb3J0VHlwZU9wdGlvbnNcIiAvPlxyXG5cdFx0XHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdFx0XHQ8YXJpbC1maWVsZCBbbGFiZWxdPVwiJ0Rvc3lhIMSwc21pJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRMYWJlbFwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHJcblx0XHRcdDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImNvbHVtbnNcIj5cclxuXHRcdFx0XHQ8cC1vcmRlckxpc3RcclxuXHRcdFx0XHRcdCNvcmRlckxpc3RSZWZcclxuXHRcdFx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0XHRcdFt2YWx1ZV09XCJleHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMuY29udHJvbHNcIlxyXG5cdFx0XHRcdFx0W2xpc3RTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogJzIwcmVtJyB9XCJcclxuXHRcdFx0XHRcdGZpbHRlckJ5PVwidmFsdWUudGl0bGVcIlxyXG5cdFx0XHRcdFx0W2Rpc2FibGVkXT1cImlzTG9hZGluZ0ZvckV4cG9ydCgpXCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWNoZWNrYm94XHJcblx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwiJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0W25nTW9kZWxdPVwiaXNBbGxTZWxlY3RlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiaXNMb2FkaW5nRm9yRXhwb3J0KClcIiAvPlxyXG5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicC1vcmRlcmxpc3QtZmlsdGVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidmaWx0ZXInXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0I2ZpbHRlclxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJvbGU9XCJ0ZXh0Ym94XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGtleXVwKT1cIm9yZGVyTGlzdFJlZi5vbkZpbHRlcktleXVwKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwib3JkZXJMaXN0UmVmLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwLW9yZGVybGlzdC1maWx0ZXItaW5wdXQgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbGV0LWNvbCBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDxhcmlsLWNoZWNrYm94IFtsYWJlbF09XCJjb2wudmFsdWUudGl0bGVcIiBbZm9ybUNvbnRyb2xdPVwiY29sLmNvbnRyb2xzLmNoZWNrZWRcIiAvPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L3Atb3JkZXJMaXN0PlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25hdmlnYXRlVG9FeHBvcnRSZXF1ZXN0cycpXCJcclxuXHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0KGNsaWNrRXZlbnQpPVwibmF0aXZhdGVUb0V4cG9ydFJlcXVlc3RzKClcIiAvPlxyXG5cclxuXHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTJcIlxyXG5cdFx0XHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMuZXhwb3J0JylcIlxyXG5cdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiZXhwb3J0KClcIlxyXG5cdFx0XHRcdFtkaXNhYmxlZF09XCJpc0xvYWRpbmdGb3JFeHBvcnQoKVwiIC8+XHJcblx0XHQ8L2FyaWwtZm9ybT5cclxuXHR9XHJcbjwvcC1vdmVybGF5UGFuZWw+XHJcblxyXG48cC10b2FzdCBrZXk9XCJleHBvcnQtdG9hc3RcIj5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxyXG5cdFx0PHNwYW4gY2xhc3M9XCJwLXRvYXN0LW1lc3NhZ2UtaWNvblwiPlxyXG5cdFx0XHQ8Q2hlY2tJY29uIC8+XHJcblx0XHQ8L3NwYW4+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicC10b2FzdC1tZXNzYWdlLXRleHRcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInAtdG9hc3Qtc3VtbWFyeVwiPnt7IG1lc3NhZ2Uuc3VtbWFyeSB9fTwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicC10b2FzdC1kZXRhaWxcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2UuZGV0YWlsIHwgc2FmZTogJ2h0bWwnXCI+PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtdG9hc3Q+XHJcbiJdfQ==
|