nuxeo-development-framework 5.4.5 → 5.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nuxeo-development-framework.umd.js +56 -39
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +3 -17
- package/esm2015/lib/components/ndf-filters/custom-components/index.js +2 -1
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +8 -9
- package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +6 -1
- package/esm2015/lib/components/ndf-tabs/component/ndf-tabs.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +5 -2
- package/esm2015/lib/components/reports/ndf-reports/models/base.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +4 -3
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +32 -8
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
- package/esm2015/lib/shared/evaluator/types.js +1 -1
- package/fesm2015/nuxeo-development-framework.js +55 -36
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.d.ts +0 -7
- package/lib/components/ndf-filters/custom-components/index.d.ts +1 -0
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +60 -60
- package/lib/components/ndf-filters/services/dynamic-component-loader.service.d.ts +1 -0
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +1 -0
- package/lib/components/reports/ndf-reports/models/base.d.ts +6 -4
- package/lib/components/reports/ndf-reports/models/details.d.ts +6 -1
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +3 -0
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +5 -1
- package/lib/components/tables/ndf-table/models/table-config.d.ts +5 -0
- package/lib/shared/evaluator/types.d.ts +3 -1
- package/package.json +1 -1
|
@@ -395,7 +395,7 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
395
395
|
}
|
|
396
396
|
}
|
|
397
397
|
NdfTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, deps: [{ token: i1.FiltersMapperService }, { token: i2.DynamicTableService }, { token: i3.TranslateService }, { token: i4.NdfTableService }, { token: i5.CustomToastrService }, { token: i4.NdfTableConfigurationService }, { token: i6.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
398
|
-
NdfTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTableComponent, selector: "app-ndf-table", inputs: { rows: "rows", totalRecords: "totalRecords", autoCalculateHeight: "autoCalculateHeight", emptyMessage: "emptyMessage", activeQuery: "activeQuery", configPath: "configPath", configTransformer: "configTransformer", tableKey: "tableKey", jsonEditorEnabled: "jsonEditorEnabled", config: "config", customCriteria: "customCriteria", searchTerm: "searchTerm" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPage: "onPage", onInitialized: "onInitialized", onLoaded: "onLoaded", onQueryChange: "onQueryChange", onSort: "onSort" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-table" }, queries: [{ propertyName: "actionsTableTemplate", first: true, predicate: ACTIONS_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "searchTableTemplate", first: true, predicate: SEARCH_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "filterCustomTemplate", first: true, predicate: FILTER_CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"tableConfig\"\r\n\tclass=\"ndf-table__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n\tcssVar=\"--ndf-table-height\"\r\n\t[calculate]=\"autoCalculateHeight\"\r\n>\r\n\t<div class=\"ndf-table__panel\" *ngIf=\"filtersConfig?.fields\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig.fields\"\r\n\t\t\t[aggregations]=\"aggregations$ | async\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeQuery\"\r\n\t\t\tclass=\"ndf-table__filters\"\r\n\t\t\t[customTemplateRef]=\"filterCustomTemplate\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\t<div class=\"ndf-table__content\">\r\n\t\t<div class=\"ndf-table__header flex\">\r\n\t\t\t<div class=\"ndf-table__header__custom-actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"searchTableTemplate || defaultActionTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\r\n\t\t\t\t<ng-template #defaultActionTemplate>\r\n\t\t\t\t\t<button mat-stroked-button *ngIf=\"isPanelToggleAvailable\" class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<app-text-search\r\n\t\t\t\t\t\t*ngIf=\"textSearchConfig\"\r\n\t\t\t\t\t\t[searchConfig]=\"textSearchConfig\"\r\n\t\t\t\t\t\t(openModal)=\"openSearchModal()\"\r\n\t\t\t\t\t\t[search]=\"textSearch$ | async\"\r\n\t\t\t\t\t\t(searchChange)=\"onTextSearch($event)\"\r\n\t\t\t\t\t\t(clear)=\"onClearSearch()\"\r\n\t\t\t\t\t></app-text-search>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ndf-table__header__actions flex gap-x-4 items-center\">\r\n\t\t\t\t<app-editor-button\r\n\t\t\t\t\t*ngIf=\"jsonEditorEnabled && (tableKey || tableConfig?.key)\"\r\n\t\t\t\t\t[key]=\"tableKey || tableConfig?.key\"\r\n [type]=\"editorType\"\r\n\t\t\t\t></app-editor-button>\r\n\t\t\t\t<ndf-table-export\r\n\t\t\t\t\t*ngIf=\"exportTableConfig?.enabled\"\r\n\t\t\t\t\t[config]=\"exportTableConfig\"\r\n\t\t\t\t\t(onExport)=\"exportTable($event)\"\r\n\t\t\t\t></ndf-table-export>\r\n\r\n\t\t\t\t<table-sorting-list\r\n\t\t\t\t\t*ngIf=\"!!sortList?.length\"\r\n\t\t\t\t\t[sortList]=\"sortList\"\r\n\t\t\t\t\t(sortChanged)=\"sortChanged($event)\"\r\n\t\t\t\t></table-sorting-list>\r\n\t\t\t\t<table-columns-toggler\r\n\t\t\t\t\t*ngIf=\"columnToggle\"\r\n\t\t\t\t\t[columns]=\"tableConfig.columns\"\r\n\t\t\t\t\t[prefix]=\"tableConfig.prefix\"\r\n\t\t\t\t\t[sortable]=\"columnsOptions?.sortable\"\r\n\t\t\t\t\t(columnsChanged)=\"columnsChanged($event)\"\r\n\t\t\t\t></table-columns-toggler>\r\n\t\t\t\t<mode-toggler\r\n\t\t\t\t\t*ngIf=\"tableMode?.toggleMode\"\r\n\t\t\t\t\t[mode]=\"tableMode.mode || 'list'\"\r\n\t\t\t\t\t[modesList]=\"tableMode?.availableMode\"\r\n\t\t\t\t\t(modeChanged)=\"modeChanged($event)\"\r\n\t\t\t\t></mode-toggler>\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"actionsTableTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<cts-dynamic-table\r\n\t\t\t*ngIf=\"!tableConfig.isDataProvided\"\r\n\t\t\tclass=\"ndf-table__table table-style\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[pageSize]=\"tableConfig.pageSize || 10\"\r\n\t\t\t[pageNumber]=\"tableConfig.pageNumber || 1\"\r\n\t\t\t[pageProvider]=\"tableConfig.pageProvider\"\r\n\t\t\t[customUrl]=\"tableConfig.customUrl\"\r\n\t\t\t[quickFilter]=\"tableConfig.quickFilters ? { quickFilters: tableConfig.quickFilters } : undefined\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[sortingBy]=\"sortOption$ | async\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[fields]=\"tableConfig.fields\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[range]=\"tableConfig?.range\"\r\n\t\t\t[isSearchPage]=\"tableConfig?.isSearchPage\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[filterParams]=\"tableConfig?.filterParams\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[pageSizes]=\"tableConfig?.pageSizes || defaultPageSizes\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[queryParam]=\"tableConfig.queryParam\"\r\n\t\t\t[customFilters]=\"searchAndFilters$ | async\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n\t\t\t[headers]=\"tableConfig.headers\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onGettingData)=\"onGettingData.emit($event)\"\r\n\t\t\t(onLoad)=\"onLoad($event)\"\r\n\t\t\t(onInitialize)=\"onInitialize($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(onLoading)=\"onLoading.emit($event)\"\r\n\t\t\t(onPage)=\"onPageChanged($event)\"\r\n\t\t\t[isLegacyMode]=\"false\"\r\n\t\t\t[showTotalRecord]=\"true\"\r\n\t\t\t(sortChanged)=\"onSortChanged($event)\"\r\n\t\t>\r\n\t\t\t<ng-template emptyTemplate let-isLoading let-rows=\"rows\" let-initialized=\"initialized\">\r\n\t\t\t\t<div class=\"loading-data\" *ngIf=\"isLoading && initialized\">\r\n\t\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"flex items-center justify-center h-5/6\" *ngIf=\"!isLoading && !rows.length\">\r\n\t\t\t\t\t<app-no-data-found class=\"mt-4\" [message]=\"emptyMessage\"></app-no-data-found>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-template>\r\n\t\t</cts-dynamic-table>\r\n\r\n\t\t<cts-table\r\n\t\t\t*ngIf=\"tableConfig.isDataProvided\"\r\n\t\t\t[rows]=\"rows\"\r\n\t\t\t[totalRecords]=\"totalRecords\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onSorting)=\"onSortChanged($event)\"\r\n\t\t></cts-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-tbl-inline-padding, 1rem);padding-block:var(--ndf-tbl-block-padding, 1rem);border:var(--ndf-tbl-border, solid transparent);border-width:var(--ndf-table-border-width, 0);border-radius:var(--ndf-tbl-border-radius, 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-tbl-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host [dir=ltr]{--ndf-tbl-panel-translateX: -100%}:host:before,:host:after{box-sizing:border-box}::ng-deep .wrapping,::ng-deep .wrapping .table-reposition{overflow:visible}.ndf-table__container{--table-div-height: auto;--table-reposition-overflow-y: visible;--table-div-overflow: visible;--panel-width: var(--ndf-tbl-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-tbl-height, calc(var(--ndf-table-height, auto) - calc(var(--ndf-tbl-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-table__container.panel-opened{--ndf-tbl-panel-translateX: 0;--ndf-tbl-content-pis: var(--panel-width)}.ndf-table__panel,.ndf-table__content{overflow:auto;transition:all .2s}.ndf-table__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-tbl-panel-translateX, 100%));padding-inline:var(--ndf-tbl-panel-inline-padding, .5rem);padding-block:var(--ndf-tbl-panel-block-padding, .5rem);background:var(--ndf-tbl-panel-background, #fff);z-index:1}.ndf-table__content{flex-grow:1;padding-inline-start:var(--ndf-tbl-content-pis, 0);padding-block-end:var(--ndf-tbl-content-pbe, 1rem);overflow-y:var(--ndf-tbl-content-overflow-y, auto);max-height:var(--ndf-tbl-content-max-height, var(--ndf-table-height));display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content}.ndf-table__header{background-color:var(--ndf-tbl-background, #fff);flex-direction:var(--ndf-tbl-header-direction, row);justify-content:var(--ndf-tbl-header-justify, space-between);align-items:var(--ndf-tbl-header-items, center);padding-inline:var(--ndf-tbl-header-padding-inline, .5rem);padding-block:var(--ndf-tbl-header-padding-block, 0 .5rem);position:var(--ndf-tbl-header-position, sticky);top:0;z-index:1}.ndf-table__header__actions{justify-content:var(--ndf-tbl-actions-justify, flex-end)}.ndf-table__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-table__table{flex-grow:1;display:flex;flex-direction:column}.ndf-table__table.no-data{--table-div-height: auto}.loading-data{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-data-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-data-backdrop-filter, blur(3px));backdrop-filter:var(--loading-data-backdrop-filter, blur(3px))}\n"], components: [{ type: i7.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.TextSearchComponent, selector: "app-text-search", inputs: ["searchConfig", "search"], outputs: ["searchChange", "openModal", "clear"] }, { type: i11.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i12.TableExportComponent, selector: "ndf-table-export", inputs: ["config"], outputs: ["onExport"] }, { type: i13.SortingListComponent, selector: "table-sorting-list", inputs: ["sortList"], outputs: ["sortChanged"] }, { type: i14.TableColumnsTogglerComponent, selector: "table-columns-toggler", inputs: ["prefix", "sortable", "columns"], outputs: ["columnsChanged"] }, { type: i15.ModeTogglerComponent, selector: "mode-toggler", inputs: ["modesList", "mode"], outputs: ["modeChanged"] }, { type: i16.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i17.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i18.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }, { type: i19.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }], directives: [{ type: i20.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i21.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i22.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i20.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i23.EmptyTemplateDirective, selector: "[emptyTemplate]" }], pipes: { "async": i20.AsyncPipe } });
|
|
398
|
+
NdfTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTableComponent, selector: "app-ndf-table", inputs: { rows: "rows", totalRecords: "totalRecords", autoCalculateHeight: "autoCalculateHeight", emptyMessage: "emptyMessage", activeQuery: "activeQuery", configPath: "configPath", configTransformer: "configTransformer", tableKey: "tableKey", jsonEditorEnabled: "jsonEditorEnabled", config: "config", customCriteria: "customCriteria", searchTerm: "searchTerm" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPage: "onPage", onInitialized: "onInitialized", onLoaded: "onLoaded", onQueryChange: "onQueryChange", onSort: "onSort" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-table" }, queries: [{ propertyName: "actionsTableTemplate", first: true, predicate: ACTIONS_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "searchTableTemplate", first: true, predicate: SEARCH_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "filterCustomTemplate", first: true, predicate: FILTER_CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"tableConfig\"\r\n\tclass=\"ndf-table__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n\tcssVar=\"--ndf-table-height\"\r\n\t[calculate]=\"autoCalculateHeight\"\r\n>\r\n\t<div class=\"ndf-table__panel\" *ngIf=\"filtersConfig?.fields\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig.fields\"\r\n\t\t\t[aggregations]=\"aggregations$ | async\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeQuery\"\r\n\t\t\tclass=\"ndf-table__filters\"\r\n\t\t\t[customTemplateRef]=\"filterCustomTemplate\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\t<div class=\"ndf-table__content\">\r\n\t\t<div class=\"ndf-table__header flex\">\r\n\t\t\t<div class=\"ndf-table__header__custom-actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"searchTableTemplate || defaultActionTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\r\n\t\t\t\t<ng-template #defaultActionTemplate>\r\n\t\t\t\t\t<button mat-stroked-button *ngIf=\"isPanelToggleAvailable\" class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<app-text-search\r\n\t\t\t\t\t\t*ngIf=\"textSearchConfig\"\r\n\t\t\t\t\t\t[searchConfig]=\"textSearchConfig\"\r\n\t\t\t\t\t\t(openModal)=\"openSearchModal()\"\r\n\t\t\t\t\t\t[search]=\"textSearch$ | async\"\r\n\t\t\t\t\t\t(searchChange)=\"onTextSearch($event)\"\r\n\t\t\t\t\t\t(clear)=\"onClearSearch()\"\r\n\t\t\t\t\t></app-text-search>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ndf-table__header__actions flex gap-x-4 items-center\">\r\n\t\t\t\t<app-editor-button\r\n\t\t\t\t\t*ngIf=\"jsonEditorEnabled && (tableKey || tableConfig?.key)\"\r\n\t\t\t\t\t[key]=\"tableKey || tableConfig?.key\"\r\n [type]=\"editorType\"\r\n\t\t\t\t></app-editor-button>\r\n\t\t\t\t<ndf-table-export\r\n\t\t\t\t\t*ngIf=\"exportTableConfig?.enabled\"\r\n\t\t\t\t\t[config]=\"exportTableConfig\"\r\n\t\t\t\t\t(onExport)=\"exportTable($event)\"\r\n\t\t\t\t></ndf-table-export>\r\n\r\n\t\t\t\t<table-sorting-list\r\n\t\t\t\t\t*ngIf=\"!!sortList?.length\"\r\n\t\t\t\t\t[sortList]=\"sortList\"\r\n\t\t\t\t\t(sortChanged)=\"sortChanged($event)\"\r\n\t\t\t\t></table-sorting-list>\r\n\t\t\t\t<table-columns-toggler\r\n\t\t\t\t\t*ngIf=\"columnToggle\"\r\n\t\t\t\t\t[columns]=\"tableConfig.columns\"\r\n\t\t\t\t\t[prefix]=\"tableConfig.prefix\"\r\n\t\t\t\t\t[sortable]=\"columnsOptions?.sortable\"\r\n\t\t\t\t\t(columnsChanged)=\"columnsChanged($event)\"\r\n\t\t\t\t></table-columns-toggler>\r\n\t\t\t\t<mode-toggler\r\n\t\t\t\t\t*ngIf=\"tableMode?.toggleMode\"\r\n\t\t\t\t\t[mode]=\"tableMode.mode || 'list'\"\r\n\t\t\t\t\t[modesList]=\"tableMode?.availableMode\"\r\n\t\t\t\t\t(modeChanged)=\"modeChanged($event)\"\r\n\t\t\t\t></mode-toggler>\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"actionsTableTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<cts-dynamic-table\r\n\t\t\t*ngIf=\"!tableConfig.isDataProvided\"\r\n\t\t\tclass=\"ndf-table__table table-style\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[pageSize]=\"tableConfig.pageSize || 10\"\r\n\t\t\t[pageNumber]=\"tableConfig.pageNumber || 1\"\r\n\t\t\t[pageProvider]=\"tableConfig.pageProvider\"\r\n\t\t\t[customUrl]=\"tableConfig.customUrl\"\r\n\t\t\t[quickFilter]=\"tableConfig.quickFilters ? { quickFilters: tableConfig.quickFilters } : undefined\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[sortingBy]=\"sortOption$ | async\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[fields]=\"tableConfig.fields\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[range]=\"tableConfig?.range\"\r\n\t\t\t[isSearchPage]=\"tableConfig?.isSearchPage\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[filterParams]=\"tableConfig?.filterParams\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[pageSizes]=\"tableConfig?.pageSizes || defaultPageSizes\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[queryParam]=\"tableConfig.queryParam\"\r\n\t\t\t[customFilters]=\"searchAndFilters$ | async\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n [requestActions]=\"tableConfig?.requestActions\"\r\n\t\t\t[headers]=\"tableConfig.headers\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onGettingData)=\"onGettingData.emit($event)\"\r\n\t\t\t(onLoad)=\"onLoad($event)\"\r\n\t\t\t(onInitialize)=\"onInitialize($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(onLoading)=\"onLoading.emit($event)\"\r\n\t\t\t(onPage)=\"onPageChanged($event)\"\r\n\t\t\t[isLegacyMode]=\"false\"\r\n\t\t\t[showTotalRecord]=\"true\"\r\n\t\t\t(sortChanged)=\"onSortChanged($event)\"\r\n\t\t>\r\n\t\t\t<ng-template emptyTemplate let-isLoading let-rows=\"rows\" let-initialized=\"initialized\">\r\n\t\t\t\t<div class=\"loading-data\" *ngIf=\"isLoading && initialized\">\r\n\t\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"flex items-center justify-center h-5/6\" *ngIf=\"!isLoading && !rows.length\">\r\n\t\t\t\t\t<app-no-data-found class=\"mt-4\" [message]=\"emptyMessage\"></app-no-data-found>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-template>\r\n\t\t</cts-dynamic-table>\r\n\r\n\t\t<cts-table\r\n\t\t\t*ngIf=\"tableConfig.isDataProvided\"\r\n\t\t\t[rows]=\"rows\"\r\n\t\t\t[totalRecords]=\"totalRecords\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onSorting)=\"onSortChanged($event)\"\r\n\t\t></cts-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-tbl-inline-padding, 1rem);padding-block:var(--ndf-tbl-block-padding, 1rem);border:var(--ndf-tbl-border, solid transparent);border-width:var(--ndf-table-border-width, 0);border-radius:var(--ndf-tbl-border-radius, 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-tbl-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host [dir=ltr]{--ndf-tbl-panel-translateX: -100%}:host:before,:host:after{box-sizing:border-box}::ng-deep .wrapping,::ng-deep .wrapping .table-reposition{overflow:visible}.ndf-table__container{--table-div-height: auto;--table-reposition-overflow-y: visible;--table-div-overflow: visible;--panel-width: var(--ndf-tbl-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-tbl-height, calc(var(--ndf-table-height, auto) - calc(var(--ndf-tbl-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-table__container.panel-opened{--ndf-tbl-panel-translateX: 0;--ndf-tbl-content-pis: var(--panel-width)}.ndf-table__panel,.ndf-table__content{overflow:auto;transition:all .2s}.ndf-table__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-tbl-panel-translateX, 100%));padding-inline:var(--ndf-tbl-panel-inline-padding, .5rem);padding-block:var(--ndf-tbl-panel-block-padding, .5rem);background:var(--ndf-tbl-panel-background, #fff);z-index:1}.ndf-table__content{flex-grow:1;padding-inline-start:var(--ndf-tbl-content-pis, 0);padding-block-end:var(--ndf-tbl-content-pbe, 1rem);overflow-y:var(--ndf-tbl-content-overflow-y, auto);max-height:var(--ndf-tbl-content-max-height, var(--ndf-table-height));display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content}.ndf-table__header{background-color:var(--ndf-tbl-background, #fff);flex-direction:var(--ndf-tbl-header-direction, row);justify-content:var(--ndf-tbl-header-justify, space-between);align-items:var(--ndf-tbl-header-items, center);padding-inline:var(--ndf-tbl-header-padding-inline, .5rem);padding-block:var(--ndf-tbl-header-padding-block, 0 .5rem);position:var(--ndf-tbl-header-position, sticky);top:0;z-index:1}.ndf-table__header__actions{justify-content:var(--ndf-tbl-actions-justify, flex-end)}.ndf-table__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-table__table{flex-grow:1;display:flex;flex-direction:column}.ndf-table__table.no-data{--table-div-height: auto}.loading-data{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-data-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-data-backdrop-filter, blur(3px));backdrop-filter:var(--loading-data-backdrop-filter, blur(3px))}\n"], components: [{ type: i7.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.TextSearchComponent, selector: "app-text-search", inputs: ["searchConfig", "search"], outputs: ["searchChange", "openModal", "clear"] }, { type: i11.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i12.TableExportComponent, selector: "ndf-table-export", inputs: ["config"], outputs: ["onExport"] }, { type: i13.SortingListComponent, selector: "table-sorting-list", inputs: ["sortList"], outputs: ["sortChanged"] }, { type: i14.TableColumnsTogglerComponent, selector: "table-columns-toggler", inputs: ["prefix", "sortable", "columns"], outputs: ["columnsChanged"] }, { type: i15.ModeTogglerComponent, selector: "mode-toggler", inputs: ["modesList", "mode"], outputs: ["modeChanged"] }, { type: i16.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "requestActions", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i17.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i18.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }, { type: i19.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }], directives: [{ type: i20.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i21.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i22.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i20.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i23.EmptyTemplateDirective, selector: "[emptyTemplate]" }], pipes: { "async": i20.AsyncPipe } });
|
|
399
399
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, decorators: [{
|
|
400
400
|
type: Component,
|
|
401
401
|
args: [{
|
|
@@ -463,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
463
463
|
type: ContentChild,
|
|
464
464
|
args: [FILTER_CUSTOM_TEMPLATE, { read: TemplateRef }]
|
|
465
465
|
}] } });
|
|
466
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBbUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pHLE9BQU8sRUFFTixtQkFBbUIsRUFFbkIsbUJBQW1CLEVBRW5CLE1BQU0seUJBQXlCLENBQUM7QUFZakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUsT0FB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QXRCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFc0Qsb0JBQW9CO3NCQUFoRixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDQyxtQkFBbUI7c0JBQTlFLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNHLG9CQUFvQjtzQkFBaEYsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIGlpZiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFDVElPTlNfVEFCTEVfVEVNUExBVEUsIEZJTFRFUl9DVVNUT01fVEVNUExBVEUsIFNFQVJDSF9UQUJMRV9URU1QTEFURSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG5cdEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcblx0Q09NUEFSSVNPTl9PUEVSQVRPUixcclxuXHRGb3JtUXVlcnlNb2RlbCxcclxuXHRIdG1sRGlhbG9nQ29tcG9uZW50LFxyXG5cdEh0bWxEaWFsb2dDb25maWdcclxufSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycyc7XHJcbmltcG9ydCB7XHJcblx0Q3VzdG9tQ3JpdGVyaWFNb2RlbCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdE5kZkV4cG9ydFBheWxvYWQsXHJcblx0TmRmVGFibGVDb25maWcsXHJcblx0U29ydFRhYmxlSXRlbSxcclxuXHRUYWJsZUNvbHVtbkNvbmZpZyxcclxuXHRUYWJsZVNvcnRPcHRpb25zLFxyXG5cdFRhYmxlVmlld01vZGVcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBOZGZUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFBBR0VfU0laRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgTnV4ZW9QYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL21vZGVscyc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9keW5hbWljLXRhYmxlJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTkRGX0VESVRPUl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWNvbmZpZy1lZGl0b3IvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRmlsdGVyc01hcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycy9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1uZGYtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9uZGYtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL25kZi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGhvc3Q6IHtcclxuXHRcdGNsYXNzOiAnbmRmLXRhYmxlJyxcclxuXHRcdCdbZGlyXSc6ICdkaXJlY3Rpb24nXHJcblx0fVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmRmVGFibGVDb21wb25lbnQgZXh0ZW5kcyBEZXN0cm95U3ViamVjdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWdncmVnYXRpb25zU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPj4obnVsbCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfZGlzcGxheWVkQ29sdW1uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5Db25maWdbXT4oW10pO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3NvcnRPcHRpb25TdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlU29ydE9wdGlvbnM+KG51bGwpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdNb2RlU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVZpZXdNb2RlPignbGlzdCcpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3RleHRTZWFyY2hTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZENyaXRlcmlhU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcblx0XHRwcmV2aW91c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0Y3VycmVudFZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdH0+KG51bGwpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21Dcml0ZXJpYVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3VzdG9tQ3JpdGVyaWFNb2RlbD4oe1xyXG5cdFx0cGFyYW1zOiB7fSxcclxuXHRcdHBheWxvYWQ6IHtcclxuXHRcdFx0cHJlZGljYXRlTGlzdDogW11cclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0cmVhZG9ubHkgYWdncmVnYXRpb25zJCA9IHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zJCA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgc29ydE9wdGlvbiQgPSB0aGlzLl9zb3J0T3B0aW9uU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IHZpZXdNb2RlJCA9IHRoaXMuX3ZpZXdNb2RlU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IGN1c3RvbUZpbHRlcnMkID0gdGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgdGV4dFNlYXJjaCQgPSB0aGlzLl90ZXh0U2VhcmNoU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRyZWFkb25seSBzZWFyY2hBbmRGaWx0ZXJzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudGV4dFNlYXJjaCQsIHRoaXMuY3VzdG9tRmlsdGVycyRdKS5waXBlKFxyXG5cdFx0bWFwKChyZXMpID0+IHRoaXMuX3ByZXBhcmVTZWFyY2gocmVzKSlcclxuXHQpO1xyXG5cdEBJbnB1dCgpIHJvd3M6IEFycmF5PHVua25vd24+O1xyXG5cdEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIGF1dG9DYWxjdWxhdGVIZWlnaHQgPSB0cnVlO1xyXG5cdEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICd0YWJsZV9ub0RhdGEnO1xyXG5cdEBJbnB1dCgpIGFjdGl2ZVF1ZXJ5OiBGb3JtUXVlcnlNb2RlbDtcclxuXHRASW5wdXQoKSBjb25maWdQYXRoOiBzdHJpbmcgPSAndGFibGVzJztcclxuXHRASW5wdXQoKSBjb25maWdUcmFuc2Zvcm1lcjogKGNvbmZpZzogTmRmVGFibGVDb25maWcpID0+IE9ic2VydmFibGU8TmRmVGFibGVDb25maWc+O1xyXG5cdEBJbnB1dCgpIHRhYmxlS2V5OiBzdHJpbmc7XHJcblxyXG5cdEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdHByaXZhdGUgX2NvbmZpZzogTmRmVGFibGVDb25maWc7XHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKSB7XHJcblx0XHR0aGlzLl9jb25maWcgPSBjb25maWc7XHJcblx0fVxyXG5cclxuXHRnZXQgdGFibGVDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fdGFibGVDb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIHNldCBjdXN0b21Dcml0ZXJpYShjcml0ZXJpYTogQ3VzdG9tQ3JpdGVyaWFNb2RlbCkge1xyXG5cdFx0aWYgKGNyaXRlcmlhKSB7XHJcblx0XHRcdHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQoY3JpdGVyaWEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QElucHV0KCkgc2V0IHNlYXJjaFRlcm0odmFsdWU6IHN0cmluZykge1xyXG5cdFx0aWYgKHZhbHVlKSB7XHJcblx0XHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25HZXR0aW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25NdWx0aVJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdEBPdXRwdXQoKSBvblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHRAT3V0cHV0KCkgb25Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnV4ZW9QYWdpbmF0aW9uPGFueT4+KCk7XHJcblx0QE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHJcblx0QE91dHB1dCgpIG9uUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uU29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0T3B0aW9ucz4oKTtcclxuXHJcblx0QENvbnRlbnRDaGlsZChBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGFjdGlvbnNUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdEBDb250ZW50Q2hpbGQoU0VBUkNIX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHNlYXJjaFRhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblx0QENvbnRlbnRDaGlsZChGSUxURVJfQ1VTVE9NX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHRwcml2YXRlIF90YWJsZUNvbmZpZ1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmVGFibGVDb25maWc+KG51bGwpO1xyXG5cclxuXHRnZXQgb3B0aW9ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5vcHRpb25zO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpbHRlcnNDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNvcnRMaXN0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uc29ydExpc3QgfHwgW107XHJcblx0fVxyXG5cclxuXHRnZXQgY29sdW1uc09wdGlvbnMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8ub3B0aW9ucz8uY29sdW1ucztcclxuXHR9XHJcblxyXG5cdGdldCBjb2x1bW5Ub2dnbGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jb2x1bW5zT3B0aW9ucz8udG9nZ2xlID8/IHRydWU7XHJcblx0fVxyXG5cclxuXHRnZXQgdGFibGVNb2RlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8udGFibGVNb2RlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBhbmVsQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw7XHJcblx0fVxyXG5cclxuXHRnZXQgaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLnBhbmVsQ29uZmlnPy50b2dnbGVCdXR0b24gPz8gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdldCB0ZXh0U2VhcmNoQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uc2VhcmNoO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpbHRlclJlbG9hZENvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM/LnJlbG9hZDtcclxuXHR9XHJcblxyXG5cdGdldCBleHBvcnRUYWJsZUNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmV4cG9ydDtcclxuXHR9XHJcblxyXG5cdHJlYWRvbmx5IGRlZmF1bHRTb3J0ID0gW3sgcHJvcDogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV07XHJcblxyXG5cdGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblx0aXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG5cdHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZXMgPSBQQUdFX1NJWkU7XHJcblxyXG5cdHByaXZhdGUgX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX3RhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9wYWdlQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FjdGl2ZVBhZ2U6IFBhZ2VFdmVudCA9IHtcclxuXHRcdHBhZ2VJbmRleDogMSxcclxuXHRcdHBhZ2VTaXplOiAxMCxcclxuXHRcdGxlbmd0aDogMFxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgX3NvcnRWYWx1ZTogVGFibGVTb3J0T3B0aW9ucztcclxuXHJcblx0ZWRpdG9yVHlwZSA9IE5ERl9FRElUT1JfVFlQRS5UQUJMRVM7XHJcblx0LyoqXHJcblx0ICpcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2ZpbHRlcnNNYXBwZXI6IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZHluYW1pY1RhYmxlU2VydmljZTogRHluYW1pY1RhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9uZ1RhYmxlU2VydmljZTogTmRmVGFibGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdG9hc3RyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX25kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2U6IE5kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZ1xyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXHJcblx0XHRcdC5waXBlKHN0YXJ0V2l0aCh7IGxhbmc6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb24gPSByZXMubGFuZyA9PT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0Y29uc3QgdGFibGVLZXkgPSBjaGFuZ2VzLnRhYmxlS2V5Py5jdXJyZW50VmFsdWU7XHJcblx0XHRjb25zdCBjb25maWcgPSBjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlO1xyXG5cclxuXHRcdGlmICh0YWJsZUtleSAmJiBjb25maWcpIHtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBib3RoIHRhYmxlS2V5IGFuZCB0YWJsZUNvbmZpZyBhdCB0aGUgc2FtZSB0aW1lLicpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjb25maWcpIHtcclxuXHRcdFx0dGhpcy5fYXBwbHlUYWJsZUNvbmZpZyhjb25maWcpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0YWJsZUtleSkge1xyXG5cdFx0XHR0aGlzLl9sb2FkVGFibGVDb25maWcodGFibGVLZXkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG9nZ2xlUGFuZWwoKSB7XHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSAhdGhpcy5pc1BhbmVsT3BlbmVkO1xyXG5cdH1cclxuXHJcblx0b25Mb2FkKGRhdGE6IE51eGVvUGFnaW5hdGlvbjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLm9uTG9hZGVkLmVtaXQoZGF0YSk7XHJcblx0XHRpZiAoIXRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgfHwgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnbmV2ZXInIHx8IHRoaXMuX3BhZ2VDaGFuZ2VkKSB7XHJcblx0XHRcdHRoaXMuX3BhZ2VDaGFuZ2VkID0gZmFsc2U7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5faXNDb25maWdDaGFuZ2VkIHx8IHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ2Fsd2F5cycpIHtcclxuXHRcdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLmZpbHRlclJlbG9hZENvbmZpZz8uc3RyYXRlZ3kgPT09ICdvbkNoYW5nZScpIHtcclxuXHRcdFx0Y29uc3QgYWN0aXZhdGVkUXVlcnkgPSB0aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudFZhbHVlIHx8IHt9O1xyXG5cdFx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LnByZXZpb3VzVmFsdWUgfHwge307XHJcblxyXG5cdFx0XHRjb25zdCB1cGRhdGVkS2V5cyA9IF8udW5pb24oXy5rZXlzKHByZXZpb3VzVmFsdWUpLCBfLmtleXMoY3VycmVudFZhbHVlKSkuZmlsdGVyKFxyXG5cdFx0XHRcdChrZXkpID0+ICFfLmlzRXF1YWwocHJldmlvdXNWYWx1ZVtrZXldLCBjdXJyZW50VmFsdWVba2V5XSlcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdGNvbnN0IHRyaWdnZXJLZXlzID0gdGhpcy5maWx0ZXJSZWxvYWRDb25maWcudHJpZ2dlckZpZWxkcyB8fCBbXTtcclxuXHRcdFx0Y29uc3Qgc2hvdWxkUmVsb2FkID0gdHJpZ2dlcktleXMuc29tZSgoa2V5KSA9PiB1cGRhdGVkS2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuXHRcdFx0aWYgKHNob3VsZFJlbG9hZCkge1xyXG5cdFx0XHRcdHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5uZXh0KGRhdGE/LmFnZ3JlZ2F0aW9ucyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uSW5pdGlhbGl6ZShkYXRhOiBOdXhlb1BhZ2luYXRpb248YW55Pik6IHZvaWQge1xyXG5cdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdHRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cdFx0dGhpcy5faXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblx0XHR0aGlzLm9uSW5pdGlhbGl6ZWQuZW1pdChkYXRhKTtcclxuXHR9XHJcblxyXG5cdGNvbHVtbnNDaGFuZ2VkKGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW10pIHtcclxuXHRcdHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIubmV4dChjb2x1bW5zKTtcclxuXHR9XHJcblxyXG5cdHNvcnRDaGFuZ2VkKHNvcnQ6IFNvcnRUYWJsZUl0ZW0pIHtcclxuXHRcdHRoaXMuX3NvcnRWYWx1ZSA9IHsgc29ydEJ5OiBzb3J0LnZhbHVlLCBzb3J0T3JkZXI6IHNvcnQuZGlyZWN0aW9uIH07XHJcblx0XHR0aGlzLl9zb3J0T3B0aW9uU3ViLm5leHQodGhpcy5fc29ydFZhbHVlKTtcclxuXHR9XHJcblxyXG5cdG1vZGVDaGFuZ2VkKG1vZGU6IFRhYmxlVmlld01vZGUpIHtcclxuXHRcdHRoaXMuX3ZpZXdNb2RlU3ViLm5leHQobW9kZSk7XHJcblx0fVxyXG5cclxuXHRvblNvcnRDaGFuZ2VkKHNvcnQ6IFRhYmxlU29ydE9wdGlvbnMpIHtcclxuXHRcdHRoaXMuX3NvcnRWYWx1ZSA9IHNvcnQ7XHJcblx0XHR0aGlzLm9uU29ydC5lbWl0KHNvcnQpO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0VGFibGUodHlwZTogRXhwb3J0VHlwZSkge1xyXG5cdFx0Y29uc3QgcmVxdWVzdCA9IF8uY2xvbmVEZWVwKHRoaXMuZXhwb3J0VGFibGVDb25maWc/LnJlcXVlc3QpO1xyXG5cdFx0aWYgKCFyZXF1ZXN0KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLmdldFZhbHVlKCk7XHJcblx0XHRjb25zdCBmaWVsZHMgPSBjb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wuaGVhZGVyQ2xhc3MpO1xyXG5cdFx0Y29uc3QgaGVhZGVycyA9IGNvbHVtbnMubWFwKChjb2wpID0+ICh0aGlzLnRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJykgKyBjb2wubmFtZSk7XHJcblxyXG5cdFx0Y29uc3QgY3JpdGVyaWEgPSB0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cclxuXHRcdHJlcXVlc3QucGFyYW1zID0gT2JqZWN0LmFzc2lnbihcclxuXHRcdFx0e30sXHJcblx0XHRcdGNyaXRlcmlhLnBhcmFtcyxcclxuXHRcdFx0dGhpcy5fc29ydFZhbHVlIHx8IHt9LFxyXG5cdFx0XHR0aGlzLnRhYmxlQ29uZmlnPy5xdWlja0ZpbHRlcnMgPyB7IHF1aWNrRmlsdGVyczogdGhpcy50YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfSA6IHt9LFxyXG5cdFx0XHRyZXF1ZXN0LnBhcmFtc1xyXG5cdFx0KTtcclxuXHJcblx0XHRjb25zdCBibG9iTmFtZUtleSA9IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmJsb2JOYW1lO1xyXG5cdFx0Y29uc3QgcGF5bG9hZDogTmRmRXhwb3J0UGF5bG9hZCA9IHtcclxuXHRcdFx0cHJlZGljYXRlTGlzdDogY3JpdGVyaWEucGF5bG9hZC5wcmVkaWNhdGVMaXN0IHx8IFtdLFxyXG5cdFx0XHRyZXBvcnRNZXRhRGF0YToge1xyXG5cdFx0XHRcdGJsb2JOYW1lOiAnJyxcclxuXHRcdFx0XHRkb2NUeXBlTmFtZTogdGhpcy5leHBvcnRUYWJsZUNvbmZpZy5kb2NUeXBlTmFtZSxcclxuXHRcdFx0XHRmaWxlVHlwZTogdHlwZSxcclxuXHRcdFx0XHRsb2NhbGU6IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmxvY2FsZSB8fCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG5cdFx0XHRcdGZpZWxkczogdGhpcy5leHBvcnRUYWJsZUNvbmZpZz8uZmllbGRzIHx8IGZpZWxkcyxcclxuXHRcdFx0XHRoZWFkZXJzOiBbXVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGZvcmtKb2luKHtcclxuXHRcdFx0YXI6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ2FyJyksXHJcblx0XHRcdGVuOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdlbicpXHJcblx0XHR9KVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9uc1t0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXTtcclxuXHRcdFx0XHRcdHBheWxvYWQucmVwb3J0TWV0YURhdGEuaGVhZGVycyA9IGhlYWRlcnMubWFwKChjb2wpID0+IF8uZ2V0KGN1cnJlbnRUcmFuc2xhdGlvbnMsIGNvbCkpO1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZSA9IF8uZ2V0KHRyYW5zbGF0aW9uc1snYXInXSwgYmxvYk5hbWVLZXkpO1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZUVuID0gXy5nZXQodHJhbnNsYXRpb25zWydlbiddLCBibG9iTmFtZUtleSk7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fbmdUYWJsZVNlcnZpY2UuZXhwb3J0VGFibGUocmVxdWVzdCwgcGF5bG9hZCk7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoXykgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5lcnJvcignVEFCTEUuRVhQT1JULlJlcXVlc3RFcnJvcicpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIG9mKGZhbHNlKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRmaWx0ZXIoQm9vbGVhbiksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzOiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKHJlcykge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5zdWNjZXNzKCdUQUJMRS5FWFBPUlQucmVxdWVzdFN1Y2Nlc3MnKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5lcnJvcignVEFCTEUuRVhQT1JULnJlcXVlc3RFcnJvcicpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRmaWx0ZXJDaGFuZ2VkKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblx0XHR0aGlzLl90cmlnZ2VyQ3JpdGVyaWFDaGFuZ2VzKGNyaXRlcmlhKTtcclxuXHRcdGlmICh0aGlzLmZpbHRlcnNDb25maWc/Lm1vZGUgIT09ICdwYXlsb2FkJykge1xyXG5cdFx0XHRjb25zdCBpc1N0cmluZ2lmeVBhcmFtcyA9IHRoaXMuZmlsdGVyc0NvbmZpZz8uc3RyaW5naWZ5UGFyYW1zO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9ICFpc1N0cmluZ2lmeVBhcmFtcyA/IGNyaXRlcmlhIDogdGhpcy5fc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhKTtcclxuXHRcdFx0dGhpcy5fZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5uZXh0KHZhbHVlKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHBheWxvYWQgPSB0aGlzLl9maWx0ZXJzTWFwcGVyLnByZXBhcmVQYXlsb2FkKHRoaXMuZmlsdGVyc0NvbmZpZy5maWVsZHMsIGNyaXRlcmlhKTtcclxuXHRcdHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQocGF5bG9hZCk7XHJcblx0fVxyXG5cclxuXHRvblRleHRTZWFyY2godGV4dDogc3RyaW5nKSB7XHJcblx0XHRpZiAoIXRoaXMudGV4dFNlYXJjaENvbmZpZz8uZmllbGRLZXkgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIXRleHQpIHtcclxuXHRcdFx0dGhpcy5vbkNsZWFyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh0ZXh0KTtcclxuXHR9XHJcblxyXG5cdG9uQ2xlYXJTZWFyY2goKSB7XHJcblx0XHR0aGlzLl90ZXh0U2VhcmNoU3ViLm5leHQobnVsbCk7XHJcblx0fVxyXG5cclxuXHRvcGVuU2VhcmNoTW9kYWwoKSB7XHJcblx0XHRjb25zdCBfZGlhbG9nQ29uZmlnID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5zdWZmaXg/LmRpYWxvZztcclxuXHRcdGlmICghX2RpYWxvZ0NvbmZpZykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCB7IG9wdGlvbnMsIC4uLmRhdGEgfSA9IF9kaWFsb2dDb25maWc7XHJcblx0XHR0aGlzLl9kaWFsb2cub3BlbjxIdG1sRGlhbG9nQ29tcG9uZW50LCBIdG1sRGlhbG9nQ29uZmlnPihIdG1sRGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHBhbmVsQ2xhc3M6ICdwLTAnLFxyXG5cdFx0XHRtaW5XaWR0aDogJ21pbig1MDBweCw2MHZ3KScsXHJcblx0XHRcdGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb24sXHJcblx0XHRcdC4uLm9wdGlvbnMsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0b25QYWdlQ2hhbmdlZChwYWdlOiBQYWdlRXZlbnQpIHtcclxuXHRcdHRoaXMuX3BhZ2VDaGFuZ2VkID0gdGhpcy5fYWN0aXZlUGFnZS5wYWdlSW5kZXggIT09IHBhZ2UucGFnZUluZGV4IHx8IHRoaXMuX2FjdGl2ZVBhZ2UucGFnZVNpemUgIT09IHBhZ2UucGFnZVNpemU7XHJcblx0XHRpZiAodGhpcy5fcGFnZUNoYW5nZWQpIHtcclxuXHRcdFx0dGhpcy5vblBhZ2UuZW1pdChwYWdlKTtcclxuXHRcdFx0dGhpcy5fYWN0aXZlUGFnZSA9IHBhZ2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9maWx0ZXJCeVZpc2liaWxpdHkoY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXSk6IFRhYmxlQ29sdW1uQ29uZmlnW10ge1xyXG5cdFx0cmV0dXJuIGNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC5kZWZhdWx0VmlzaWJsZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9wcmVwYXJlU2VhcmNoKFtzZWFyY2gsIGZpbHRlcnNdOiBbXHJcblx0XHRzdHJpbmcsXHJcblx0XHR7XHJcblx0XHRcdHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHRcdHBheWxvYWQ/OiB7IHByZWRpY2F0ZUxpc3Q6IGFueVtdIH0gJiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0fVxyXG5cdF0pOiBhbnkge1xyXG5cdFx0e1xyXG5cdFx0XHRjb25zdCB7IHByZWRpY2F0ZUxpc3QgfSA9IGZpbHRlcnM/LnBheWxvYWQgfHwgeyBwcmVkaWNhdGVMaXN0OiBbXSB9O1xyXG5cdFx0XHRjb25zdCBfa2V5ID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleTtcclxuXHRcdFx0Y29uc3Qgc2VhcmNoSW5kZXggPSBwcmVkaWNhdGVMaXN0LmZpbmRJbmRleCgoaXRtKSA9PiBpdG0ubmFtZSA9PT0gX2tleSk7XHJcblx0XHRcdGlmIChzZWFyY2ggJiYgX2tleSkge1xyXG5cdFx0XHRcdGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRwcmVkaWNhdGVMaXN0W3NlYXJjaEluZGV4XS52YWx1ZSA9IGAnJHtzZWFyY2h9J2A7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHByZWRpY2F0ZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdG5hbWU6IF9rZXksXHJcblx0XHRcdFx0XHRcdG9wZXJhdG9yOiB0aGlzLnRleHRTZWFyY2hDb25maWc/Lm9wZXJhdG9yIHx8IENPTVBBUklTT05fT1BFUkFUT1IuZXF1YWxzLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogYCcke3NlYXJjaH0nYFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRwcmVkaWNhdGVMaXN0LnNwbGljZShzZWFyY2hJbmRleCk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIF8uY2xvbmVEZWVwKHsgLi4uZmlsdGVycyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcblx0XHRcdGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIHt9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdGlmICh0aGlzLl90YWJsZUluaXRpYWxpemVkKSB7XHJcblx0XHRcdHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0geyAuLi50aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpIH07XHJcblx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnRWYWx1ZTtcclxuXHRcdHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLm5leHQoe1xyXG5cdFx0XHRwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxyXG5cdFx0XHRjdXJyZW50VmFsdWU6IGNyaXRlcmlhXHJcblx0XHR9KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uXHJcblx0ICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXQgdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHBhcmFtIGNvbmZpZyBOZGZUYWJsZUNvbmZpZ1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2FwcGx5VGFibGVDb25maWcoY29uZmlnOiBOZGZUYWJsZUNvbmZpZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5fdGFibGVDb25maWdTdWIubmV4dChjb25maWcpO1xyXG5cdFx0dGhpcy5pc1BhbmVsT3BlbmVkID0gY29uZmlnPy5vcHRpb25zPy5maWx0ZXJzPy5wYW5lbD8udmlzaWJsZSA/PyB0cnVlO1xyXG5cdFx0dGhpcy5faXNDb25maWdDaGFuZ2VkID0gISFjb25maWc7XHJcblx0XHRpZiAoY29uZmlnLmNvbHVtbnMpIHtcclxuXHRcdFx0dGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5uZXh0KHRoaXMuX2ZpbHRlckJ5VmlzaWJpbGl0eShjb25maWcuY29sdW1ucykpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbmZpZy5zb3J0aW5nQnkpIHtcclxuXHRcdFx0dGhpcy5fc29ydFZhbHVlID0gY29uZmlnLnNvcnRpbmdCeTtcclxuXHRcdFx0dGhpcy5fc29ydE9wdGlvblN1Yi5uZXh0KGNvbmZpZy5zb3J0aW5nQnkpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbmZpZz8ub3B0aW9ucz8udGFibGVNb2RlPy5tb2RlKSB7XHJcblx0XHRcdHRoaXMuX3ZpZXdNb2RlU3ViLm5leHQoY29uZmlnLm9wdGlvbnMudGFibGVNb2RlLm1vZGUpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbmZpZy5wYWdlU2l6ZSkge1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVQYWdlLnBhZ2VTaXplID0gY29uZmlnLnBhZ2VTaXplO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHByaXZhdGVcclxuXHQgKiBAZGVzY3JpcHRpb24gTG9hZHMgdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGtleSBhbmQgYXBwbGllcyBpdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSB1c2VkIHRvIGZldGNoIHRoZSB0YWJsZSBjb25maWd1cmF0aW9uLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2xvYWRUYWJsZUNvbmZpZyhrZXk6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fbmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZVxyXG5cdFx0XHQuZ2V0VGFibGVDb25maWd1cmF0aW9uKGtleSwgdGhpcy5jb25maWdQYXRoKVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKGNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuY29uZmlnVHJhbnNmb3JtZXIgJiYgXy5pc0Z1bmN0aW9uKHRoaXMuY29uZmlnVHJhbnNmb3JtZXIpKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyKGNvbmZpZyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoY29uZmlnKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2XHJcblx0Km5nSWY9XCJ0YWJsZUNvbmZpZ1wiXHJcblx0Y2xhc3M9XCJuZGYtdGFibGVfX2NvbnRhaW5lclwiXHJcblx0W2NsYXNzLnBhbmVsLW9wZW5lZF09XCJpc1BhbmVsT3BlbmVkICYmIGZpbHRlcnNDb25maWdcIlxyXG5cdFtkaXJdPVwiZGlyZWN0aW9uXCJcclxuXHRuZGZGbHVpZEhlaWdodFxyXG5cdGNzc1Zhcj1cIi0tbmRmLXRhYmxlLWhlaWdodFwiXHJcblx0W2NhbGN1bGF0ZV09XCJhdXRvQ2FsY3VsYXRlSGVpZ2h0XCJcclxuPlxyXG5cdDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX3BhbmVsXCIgKm5nSWY9XCJmaWx0ZXJzQ29uZmlnPy5maWVsZHNcIj5cclxuXHRcdDxhcHAtZmlsdGVycy1wYW5lbFxyXG5cdFx0XHRbZmllbGRzXT1cImZpbHRlcnNDb25maWcuZmllbGRzXCJcclxuXHRcdFx0W2FnZ3JlZ2F0aW9uc109XCJhZ2dyZWdhdGlvbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHQoZmlsdGVyQ2hhbmdlZCk9XCJmaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRbYWN0aXZlUXVlcnldPVwiYWN0aXZlUXVlcnlcIlxyXG5cdFx0XHRjbGFzcz1cIm5kZi10YWJsZV9fZmlsdGVyc1wiXHJcblx0XHRcdFtjdXN0b21UZW1wbGF0ZVJlZl09XCJmaWx0ZXJDdXN0b21UZW1wbGF0ZVwiXHJcblx0XHQ+PC9hcHAtZmlsdGVycy1wYW5lbD5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19jb250ZW50XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19oZWFkZXIgZmxleFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19oZWFkZXJfX2N1c3RvbS1hY3Rpb25zIGZsZXggZ2FwLXgtNCBpdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJzZWFyY2hUYWJsZVRlbXBsYXRlIHx8IGRlZmF1bHRBY3Rpb25UZW1wbGF0ZVwiXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG5cdFx0XHRcdFx0XHQkaW1wbGljaXQ6IHRhYmxlQ29uZmlnLFxyXG5cdFx0XHRcdFx0XHRwYW5lbE9wZW5lZDogaXNQYW5lbE9wZW5lZCxcclxuXHRcdFx0XHRcdFx0dG9nZ2xlUGFuZWw6IHRvZ2dsZVBhbmVsLFxyXG5cdFx0XHRcdFx0XHRvcGVuTW9kYWw6IG9wZW5TZWFyY2hNb2RhbCxcclxuXHRcdFx0XHRcdFx0c2VhcmNoOiBvblRleHRTZWFyY2gsXHJcblx0XHRcdFx0XHRcdGNsZWFyOiBvbkNsZWFyU2VhcmNoXHJcblx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHQ+PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEFjdGlvblRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nSWY9XCJpc1BhbmVsVG9nZ2xlQXZhaWxhYmxlXCIgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj5cclxuXHRcdFx0XHRcdFx0PG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGFwcC10ZXh0LXNlYXJjaFxyXG5cdFx0XHRcdFx0XHQqbmdJZj1cInRleHRTZWFyY2hDb25maWdcIlxyXG5cdFx0XHRcdFx0XHRbc2VhcmNoQ29uZmlnXT1cInRleHRTZWFyY2hDb25maWdcIlxyXG5cdFx0XHRcdFx0XHQob3Blbk1vZGFsKT1cIm9wZW5TZWFyY2hNb2RhbCgpXCJcclxuXHRcdFx0XHRcdFx0W3NlYXJjaF09XCJ0ZXh0U2VhcmNoJCB8IGFzeW5jXCJcclxuXHRcdFx0XHRcdFx0KHNlYXJjaENoYW5nZSk9XCJvblRleHRTZWFyY2goJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdChjbGVhcik9XCJvbkNsZWFyU2VhcmNoKClcIlxyXG5cdFx0XHRcdFx0PjwvYXBwLXRleHQtc2VhcmNoPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19oZWFkZXJfX2FjdGlvbnMgZmxleCBnYXAteC00IGl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxhcHAtZWRpdG9yLWJ1dHRvblxyXG5cdFx0XHRcdFx0Km5nSWY9XCJqc29uRWRpdG9yRW5hYmxlZCAmJiAodGFibGVLZXkgfHwgdGFibGVDb25maWc/LmtleSlcIlxyXG5cdFx0XHRcdFx0W2tleV09XCJ0YWJsZUtleSB8fCB0YWJsZUNvbmZpZz8ua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cImVkaXRvclR5cGVcIlxyXG5cdFx0XHRcdD48L2FwcC1lZGl0b3ItYnV0dG9uPlxyXG5cdFx0XHRcdDxuZGYtdGFibGUtZXhwb3J0XHJcblx0XHRcdFx0XHQqbmdJZj1cImV4cG9ydFRhYmxlQ29uZmlnPy5lbmFibGVkXCJcclxuXHRcdFx0XHRcdFtjb25maWddPVwiZXhwb3J0VGFibGVDb25maWdcIlxyXG5cdFx0XHRcdFx0KG9uRXhwb3J0KT1cImV4cG9ydFRhYmxlKCRldmVudClcIlxyXG5cdFx0XHRcdD48L25kZi10YWJsZS1leHBvcnQ+XHJcblxyXG5cdFx0XHRcdDx0YWJsZS1zb3J0aW5nLWxpc3RcclxuXHRcdFx0XHRcdCpuZ0lmPVwiISFzb3J0TGlzdD8ubGVuZ3RoXCJcclxuXHRcdFx0XHRcdFtzb3J0TGlzdF09XCJzb3J0TGlzdFwiXHJcblx0XHRcdFx0XHQoc29ydENoYW5nZWQpPVwic29ydENoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvdGFibGUtc29ydGluZy1saXN0PlxyXG5cdFx0XHRcdDx0YWJsZS1jb2x1bW5zLXRvZ2dsZXJcclxuXHRcdFx0XHRcdCpuZ0lmPVwiY29sdW1uVG9nZ2xlXCJcclxuXHRcdFx0XHRcdFtjb2x1bW5zXT1cInRhYmxlQ29uZmlnLmNvbHVtbnNcIlxyXG5cdFx0XHRcdFx0W3ByZWZpeF09XCJ0YWJsZUNvbmZpZy5wcmVmaXhcIlxyXG5cdFx0XHRcdFx0W3NvcnRhYmxlXT1cImNvbHVtbnNPcHRpb25zPy5zb3J0YWJsZVwiXHJcblx0XHRcdFx0XHQoY29sdW1uc0NoYW5nZWQpPVwiY29sdW1uc0NoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvdGFibGUtY29sdW1ucy10b2dnbGVyPlxyXG5cdFx0XHRcdDxtb2RlLXRvZ2dsZXJcclxuXHRcdFx0XHRcdCpuZ0lmPVwidGFibGVNb2RlPy50b2dnbGVNb2RlXCJcclxuXHRcdFx0XHRcdFttb2RlXT1cInRhYmxlTW9kZS5tb2RlIHx8ICdsaXN0J1wiXHJcblx0XHRcdFx0XHRbbW9kZXNMaXN0XT1cInRhYmxlTW9kZT8uYXZhaWxhYmxlTW9kZVwiXHJcblx0XHRcdFx0XHQobW9kZUNoYW5nZWQpPVwibW9kZUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvbW9kZS10b2dnbGVyPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFjdGlvbnNUYWJsZVRlbXBsYXRlXCJcclxuXHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcblx0XHRcdFx0XHRcdCRpbXBsaWNpdDogdGFibGVDb25maWcsXHJcblx0XHRcdFx0XHRcdHBhbmVsT3BlbmVkOiBpc1BhbmVsT3BlbmVkLFxyXG5cdFx0XHRcdFx0XHR0b2dnbGVQYW5lbDogdG9nZ2xlUGFuZWwsXHJcblx0XHRcdFx0XHRcdG9wZW5Nb2RhbDogb3BlblNlYXJjaE1vZGFsLFxyXG5cdFx0XHRcdFx0XHRzZWFyY2g6IG9uVGV4dFNlYXJjaCxcclxuXHRcdFx0XHRcdFx0Y2xlYXI6IG9uQ2xlYXJTZWFyY2hcclxuXHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdD48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8Y3RzLWR5bmFtaWMtdGFibGVcclxuXHRcdFx0Km5nSWY9XCIhdGFibGVDb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG5cdFx0XHRjbGFzcz1cIm5kZi10YWJsZV9fdGFibGUgdGFibGUtc3R5bGVcIlxyXG5cdFx0XHRbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jlc3BvbnNpdmVDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbZnVsbFdpZHRoXT1cInRhYmxlQ29uZmlnLmZ1bGxXaWR0aCB8fCAnYXV0bydcIlxyXG5cdFx0XHRbcGFnZVNpemVdPVwidGFibGVDb25maWcucGFnZVNpemUgfHwgMTBcIlxyXG5cdFx0XHRbcGFnZU51bWJlcl09XCJ0YWJsZUNvbmZpZy5wYWdlTnVtYmVyIHx8IDFcIlxyXG5cdFx0XHRbcGFnZVByb3ZpZGVyXT1cInRhYmxlQ29uZmlnLnBhZ2VQcm92aWRlclwiXHJcblx0XHRcdFtjdXN0b21VcmxdPVwidGFibGVDb25maWcuY3VzdG9tVXJsXCJcclxuXHRcdFx0W3F1aWNrRmlsdGVyXT1cInRhYmxlQ29uZmlnLnF1aWNrRmlsdGVycyA/IHsgcXVpY2tGaWx0ZXJzOiB0YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfSA6IHVuZGVmaW5lZFwiXHJcblx0XHRcdFtkZWZ1bHRTb3J0XT1cInRhYmxlQ29uZmlnLmRlZmF1bHRTb3J0IHx8IGRlZmF1bHRTb3J0XCJcclxuXHRcdFx0W3NvcnRpbmdCeV09XCJzb3J0T3B0aW9uJCB8IGFzeW5jXCJcclxuXHRcdFx0W2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG5cdFx0XHRbZmllbGRzXT1cInRhYmxlQ29uZmlnLmZpZWxkc1wiXHJcblx0XHRcdFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG5cdFx0XHRbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuXHRcdFx0W3JhbmdlXT1cInRhYmxlQ29uZmlnPy5yYW5nZVwiXHJcblx0XHRcdFtpc1NlYXJjaFBhZ2VdPVwidGFibGVDb25maWc/LmlzU2VhcmNoUGFnZVwiXHJcblx0XHRcdFttdWx0aVNlbGVjdFJvd3NdPVwidGFibGVDb25maWc/Lm11bHRpU2VsZWN0Um93c1wiXHJcblx0XHRcdFtjdXN0b21GaXJzdFJvd109XCJ0YWJsZUNvbmZpZz8uY3VzdG9tRmlyc3RSb3dcIlxyXG5cdFx0XHRbaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXT1cInRhYmxlQ29uZmlnPy5oaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG5cdFx0XHRbc2hvd0FjdGlvbnNBc01lbnVdPVwidGFibGVDb25maWc/LnNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0W2ZpbHRlclBhcmFtc109XCJ0YWJsZUNvbmZpZz8uZmlsdGVyUGFyYW1zXCJcclxuXHRcdFx0W2Zvcm1hdF09XCJ0YWJsZUNvbmZpZz8uZm9ybWF0IHx8ICdNTU1NIGQsIHknXCJcclxuXHRcdFx0W3BhZ2VTaXplc109XCJ0YWJsZUNvbmZpZz8ucGFnZVNpemVzIHx8IGRlZmF1bHRQYWdlU2l6ZXNcIlxyXG5cdFx0XHRbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJ1wiXHJcblx0XHRcdFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcblx0XHRcdFtxdWVyeVBhcmFtXT1cInRhYmxlQ29uZmlnLnF1ZXJ5UGFyYW1cIlxyXG5cdFx0XHRbY3VzdG9tRmlsdGVyc109XCJzZWFyY2hBbmRGaWx0ZXJzJCB8IGFzeW5jXCJcclxuXHRcdFx0W3RhYmxlQWN0aW9uc109XCJ0YWJsZUNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG5cdFx0XHRbaGVhZGVyc109XCJ0YWJsZUNvbmZpZy5oZWFkZXJzXCJcclxuXHRcdFx0KG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uR2V0dGluZ0RhdGEpPVwib25HZXR0aW5nRGF0YS5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Mb2FkKT1cIm9uTG9hZCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uSW5pdGlhbGl6ZSk9XCJvbkluaXRpYWxpemUoJGV2ZW50KVwiXHJcblx0XHRcdChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkxvYWRpbmcpPVwib25Mb2FkaW5nLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvblBhZ2UpPVwib25QYWdlQ2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0W2lzTGVnYWN5TW9kZV09XCJmYWxzZVwiXHJcblx0XHRcdFtzaG93VG90YWxSZWNvcmRdPVwidHJ1ZVwiXHJcblx0XHRcdChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0PlxyXG5cdFx0XHQ8bmctdGVtcGxhdGUgZW1wdHlUZW1wbGF0ZSBsZXQtaXNMb2FkaW5nIGxldC1yb3dzPVwicm93c1wiIGxldC1pbml0aWFsaXplZD1cImluaXRpYWxpemVkXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImxvYWRpbmctZGF0YVwiICpuZ0lmPVwiaXNMb2FkaW5nICYmIGluaXRpYWxpemVkXCI+XHJcblx0XHRcdFx0XHQ8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGgtNS82XCIgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFyb3dzLmxlbmd0aFwiPlxyXG5cdFx0XHRcdFx0PGFwcC1uby1kYXRhLWZvdW5kIGNsYXNzPVwibXQtNFwiIFttZXNzYWdlXT1cImVtcHR5TWVzc2FnZVwiPjwvYXBwLW5vLWRhdGEtZm91bmQ+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L2N0cy1keW5hbWljLXRhYmxlPlxyXG5cclxuXHRcdDxjdHMtdGFibGVcclxuXHRcdFx0Km5nSWY9XCJ0YWJsZUNvbmZpZy5pc0RhdGFQcm92aWRlZFwiXHJcblx0XHRcdFtyb3dzXT1cInJvd3NcIlxyXG5cdFx0XHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcblx0XHRcdFtjb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbcmVzcG9uc2l2ZUNvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcblx0XHRcdFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcblx0XHRcdFtmdWxsV2lkdGhdPVwidGFibGVDb25maWcuZnVsbFdpZHRoIHx8ICdhdXRvJ1wiXHJcblx0XHRcdFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuXHRcdFx0W3ByZWZpeF09XCJ0YWJsZUNvbmZpZy5wcmVmaXggfHwgJydcIlxyXG5cdFx0XHRbdGFibGVNb2RlXT1cInZpZXdNb2RlJCB8IGFzeW5jXCJcclxuXHRcdFx0W2NvbXBvbmVudE5hbWVdPVwidGFibGVNb2RlPy5bJ2NvbXBvbmVudE5hbWUnXVwiXHJcblx0XHRcdFttdWx0aVNlbGVjdFJvd3NdPVwidGFibGVDb25maWc/Lm11bHRpU2VsZWN0Um93c1wiXHJcblx0XHRcdFtjdXN0b21GaXJzdFJvd109XCJ0YWJsZUNvbmZpZz8uY3VzdG9tRmlyc3RSb3dcIlxyXG5cdFx0XHRbdGFibGVBY3Rpb25zXT1cInRhYmxlQ29uZmlnLnRhYmxlQWN0aW9uc1wiXHJcblx0XHRcdFtzaG93QWN0aW9uc0FzTWVudV09XCJ0YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnNBc01lbnVcIlxyXG5cdFx0XHRbZGVmdWx0U29ydF09XCJ0YWJsZUNvbmZpZy5kZWZhdWx0U29ydCB8fCBkZWZhdWx0U29ydFwiXHJcblx0XHRcdFtmb3JtYXRdPVwidGFibGVDb25maWc/LmZvcm1hdCB8fCAnTU1NTSBkLCB5J1wiXHJcblx0XHRcdFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwidGFibGVDb25maWc/LmhpZ2hsaWdodFNlbGVjdGVkQ2FyZFwiXHJcblx0XHRcdChvblJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uUm93SW5kZXhTZWxlY3RlZCk9XCJvblJvd0luZGV4U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uTXVsdGlSb3dTZWxlY3RlZCk9XCJvbk11bHRpUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KGFjdGlvbk9uUm93KT1cImFjdGlvbk9uUm93LmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvblNvcnRpbmcpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdD48L2N0cy10YWJsZT5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBbUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pHLE9BQU8sRUFFTixtQkFBbUIsRUFFbkIsbUJBQW1CLEVBRW5CLE1BQU0seUJBQXlCLENBQUM7QUFZakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUsT0FB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QXRCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFc0Qsb0JBQW9CO3NCQUFoRixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDQyxtQkFBbUI7c0JBQTlFLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNHLG9CQUFvQjtzQkFBaEYsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIGlpZiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFDVElPTlNfVEFCTEVfVEVNUExBVEUsIEZJTFRFUl9DVVNUT01fVEVNUExBVEUsIFNFQVJDSF9UQUJMRV9URU1QTEFURSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG5cdEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcblx0Q09NUEFSSVNPTl9PUEVSQVRPUixcclxuXHRGb3JtUXVlcnlNb2RlbCxcclxuXHRIdG1sRGlhbG9nQ29tcG9uZW50LFxyXG5cdEh0bWxEaWFsb2dDb25maWdcclxufSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycyc7XHJcbmltcG9ydCB7XHJcblx0Q3VzdG9tQ3JpdGVyaWFNb2RlbCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdE5kZkV4cG9ydFBheWxvYWQsXHJcblx0TmRmVGFibGVDb25maWcsXHJcblx0U29ydFRhYmxlSXRlbSxcclxuXHRUYWJsZUNvbHVtbkNvbmZpZyxcclxuXHRUYWJsZVNvcnRPcHRpb25zLFxyXG5cdFRhYmxlVmlld01vZGVcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBOZGZUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFBBR0VfU0laRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgTnV4ZW9QYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL21vZGVscyc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9keW5hbWljLXRhYmxlJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTkRGX0VESVRPUl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWNvbmZpZy1lZGl0b3IvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRmlsdGVyc01hcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycy9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1uZGYtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9uZGYtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL25kZi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGhvc3Q6IHtcclxuXHRcdGNsYXNzOiAnbmRmLXRhYmxlJyxcclxuXHRcdCdbZGlyXSc6ICdkaXJlY3Rpb24nXHJcblx0fVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmRmVGFibGVDb21wb25lbnQgZXh0ZW5kcyBEZXN0cm95U3ViamVjdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWdncmVnYXRpb25zU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPj4obnVsbCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfZGlzcGxheWVkQ29sdW1uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5Db25maWdbXT4oW10pO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3NvcnRPcHRpb25TdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlU29ydE9wdGlvbnM+KG51bGwpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdNb2RlU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVZpZXdNb2RlPignbGlzdCcpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3RleHRTZWFyY2hTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZENyaXRlcmlhU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcblx0XHRwcmV2aW91c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0Y3VycmVudFZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdH0+KG51bGwpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21Dcml0ZXJpYVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3VzdG9tQ3JpdGVyaWFNb2RlbD4oe1xyXG5cdFx0cGFyYW1zOiB7fSxcclxuXHRcdHBheWxvYWQ6IHtcclxuXHRcdFx0cHJlZGljYXRlTGlzdDogW11cclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0cmVhZG9ubHkgYWdncmVnYXRpb25zJCA9IHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zJCA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgc29ydE9wdGlvbiQgPSB0aGlzLl9zb3J0T3B0aW9uU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IHZpZXdNb2RlJCA9IHRoaXMuX3ZpZXdNb2RlU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IGN1c3RvbUZpbHRlcnMkID0gdGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgdGV4dFNlYXJjaCQgPSB0aGlzLl90ZXh0U2VhcmNoU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRyZWFkb25seSBzZWFyY2hBbmRGaWx0ZXJzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudGV4dFNlYXJjaCQsIHRoaXMuY3VzdG9tRmlsdGVycyRdKS5waXBlKFxyXG5cdFx0bWFwKChyZXMpID0+IHRoaXMuX3ByZXBhcmVTZWFyY2gocmVzKSlcclxuXHQpO1xyXG5cdEBJbnB1dCgpIHJvd3M6IEFycmF5PHVua25vd24+O1xyXG5cdEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIGF1dG9DYWxjdWxhdGVIZWlnaHQgPSB0cnVlO1xyXG5cdEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICd0YWJsZV9ub0RhdGEnO1xyXG5cdEBJbnB1dCgpIGFjdGl2ZVF1ZXJ5OiBGb3JtUXVlcnlNb2RlbDtcclxuXHRASW5wdXQoKSBjb25maWdQYXRoOiBzdHJpbmcgPSAndGFibGVzJztcclxuXHRASW5wdXQoKSBjb25maWdUcmFuc2Zvcm1lcjogKGNvbmZpZzogTmRmVGFibGVDb25maWcpID0+IE9ic2VydmFibGU8TmRmVGFibGVDb25maWc+O1xyXG5cdEBJbnB1dCgpIHRhYmxlS2V5OiBzdHJpbmc7XHJcblxyXG5cdEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdHByaXZhdGUgX2NvbmZpZzogTmRmVGFibGVDb25maWc7XHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKSB7XHJcblx0XHR0aGlzLl9jb25maWcgPSBjb25maWc7XHJcblx0fVxyXG5cclxuXHRnZXQgdGFibGVDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fdGFibGVDb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIHNldCBjdXN0b21Dcml0ZXJpYShjcml0ZXJpYTogQ3VzdG9tQ3JpdGVyaWFNb2RlbCkge1xyXG5cdFx0aWYgKGNyaXRlcmlhKSB7XHJcblx0XHRcdHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQoY3JpdGVyaWEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QElucHV0KCkgc2V0IHNlYXJjaFRlcm0odmFsdWU6IHN0cmluZykge1xyXG5cdFx0aWYgKHZhbHVlKSB7XHJcblx0XHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25HZXR0aW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25NdWx0aVJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdEBPdXRwdXQoKSBvblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHRAT3V0cHV0KCkgb25Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnV4ZW9QYWdpbmF0aW9uPGFueT4+KCk7XHJcblx0QE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHJcblx0QE91dHB1dCgpIG9uUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uU29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0T3B0aW9ucz4oKTtcclxuXHJcblx0QENvbnRlbnRDaGlsZChBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGFjdGlvbnNUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdEBDb250ZW50Q2hpbGQoU0VBUkNIX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHNlYXJjaFRhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblx0QENvbnRlbnRDaGlsZChGSUxURVJfQ1VTVE9NX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHRwcml2YXRlIF90YWJsZUNvbmZpZ1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmVGFibGVDb25maWc+KG51bGwpO1xyXG5cclxuXHRnZXQgb3B0aW9ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5vcHRpb25zO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpbHRlcnNDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNvcnRMaXN0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uc29ydExpc3QgfHwgW107XHJcblx0fVxyXG5cclxuXHRnZXQgY29sdW1uc09wdGlvbnMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8ub3B0aW9ucz8uY29sdW1ucztcclxuXHR9XHJcblxyXG5cdGdldCBjb2x1bW5Ub2dnbGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jb2x1bW5zT3B0aW9ucz8udG9nZ2xlID8/IHRydWU7XHJcblx0fVxyXG5cclxuXHRnZXQgdGFibGVNb2RlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8udGFibGVNb2RlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBhbmVsQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw7XHJcblx0fVxyXG5cclxuXHRnZXQgaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLnBhbmVsQ29uZmlnPy50b2dnbGVCdXR0b24gPz8gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdldCB0ZXh0U2VhcmNoQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uc2VhcmNoO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpbHRlclJlbG9hZENvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM/LnJlbG9hZDtcclxuXHR9XHJcblxyXG5cdGdldCBleHBvcnRUYWJsZUNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmV4cG9ydDtcclxuXHR9XHJcblxyXG5cdHJlYWRvbmx5IGRlZmF1bHRTb3J0ID0gW3sgcHJvcDogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV07XHJcblxyXG5cdGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblx0aXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG5cdHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZXMgPSBQQUdFX1NJWkU7XHJcblxyXG5cdHByaXZhdGUgX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX3RhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9wYWdlQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FjdGl2ZVBhZ2U6IFBhZ2VFdmVudCA9IHtcclxuXHRcdHBhZ2VJbmRleDogMSxcclxuXHRcdHBhZ2VTaXplOiAxMCxcclxuXHRcdGxlbmd0aDogMFxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgX3NvcnRWYWx1ZTogVGFibGVTb3J0T3B0aW9ucztcclxuXHJcblx0ZWRpdG9yVHlwZSA9IE5ERl9FRElUT1JfVFlQRS5UQUJMRVM7XHJcblx0LyoqXHJcblx0ICpcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2ZpbHRlcnNNYXBwZXI6IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZHluYW1pY1RhYmxlU2VydmljZTogRHluYW1pY1RhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9uZ1RhYmxlU2VydmljZTogTmRmVGFibGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdG9hc3RyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX25kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2U6IE5kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZ1xyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXHJcblx0XHRcdC5waXBlKHN0YXJ0V2l0aCh7IGxhbmc6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb24gPSByZXMubGFuZyA9PT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0Y29uc3QgdGFibGVLZXkgPSBjaGFuZ2VzLnRhYmxlS2V5Py5jdXJyZW50VmFsdWU7XHJcblx0XHRjb25zdCBjb25maWcgPSBjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlO1xyXG5cclxuXHRcdGlmICh0YWJsZUtleSAmJiBjb25maWcpIHtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBib3RoIHRhYmxlS2V5IGFuZCB0YWJsZUNvbmZpZyBhdCB0aGUgc2FtZSB0aW1lLicpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjb25maWcpIHtcclxuXHRcdFx0dGhpcy5fYXBwbHlUYWJsZUNvbmZpZyhjb25maWcpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0YWJsZUtleSkge1xyXG5cdFx0XHR0aGlzLl9sb2FkVGFibGVDb25maWcodGFibGVLZXkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG9nZ2xlUGFuZWwoKSB7XHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSAhdGhpcy5pc1BhbmVsT3BlbmVkO1xyXG5cdH1cclxuXHJcblx0b25Mb2FkKGRhdGE6IE51eGVvUGFnaW5hdGlvbjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLm9uTG9hZGVkLmVtaXQoZGF0YSk7XHJcblx0XHRpZiAoIXRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgfHwgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnbmV2ZXInIHx8IHRoaXMuX3BhZ2VDaGFuZ2VkKSB7XHJcblx0XHRcdHRoaXMuX3BhZ2VDaGFuZ2VkID0gZmFsc2U7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5faXNDb25maWdDaGFuZ2VkIHx8IHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ2Fsd2F5cycpIHtcclxuXHRcdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLmZpbHRlclJlbG9hZENvbmZpZz8uc3RyYXRlZ3kgPT09ICdvbkNoYW5nZScpIHtcclxuXHRcdFx0Y29uc3QgYWN0aXZhdGVkUXVlcnkgPSB0aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudFZhbHVlIHx8IHt9O1xyXG5cdFx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LnByZXZpb3VzVmFsdWUgfHwge307XHJcblxyXG5cdFx0XHRjb25zdCB1cGRhdGVkS2V5cyA9IF8udW5pb24oXy5rZXlzKHByZXZpb3VzVmFsdWUpLCBfLmtleXMoY3VycmVudFZhbHVlKSkuZmlsdGVyKFxyXG5cdFx0XHRcdChrZXkpID0+ICFfLmlzRXF1YWwocHJldmlvdXNWYWx1ZVtrZXldLCBjdXJyZW50VmFsdWVba2V5XSlcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdGNvbnN0IHRyaWdnZXJLZXlzID0gdGhpcy5maWx0ZXJSZWxvYWRDb25maWcudHJpZ2dlckZpZWxkcyB8fCBbXTtcclxuXHRcdFx0Y29uc3Qgc2hvdWxkUmVsb2FkID0gdHJpZ2dlcktleXMuc29tZSgoa2V5KSA9PiB1cGRhdGVkS2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuXHRcdFx0aWYgKHNob3VsZFJlbG9hZCkge1xyXG5cdFx0XHRcdHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5uZXh0KGRhdGE/LmFnZ3JlZ2F0aW9ucyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uSW5pdGlhbGl6ZShkYXRhOiBOdXhlb1BhZ2luYXRpb248YW55Pik6IHZvaWQge1xyXG5cdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdHRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cdFx0dGhpcy5faXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblx0XHR0aGlzLm9uSW5pdGlhbGl6ZWQuZW1pdChkYXRhKTtcclxuXHR9XHJcblxyXG5cdGNvbHVtbnNDaGFuZ2VkKGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW10pIHtcclxuXHRcdHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIubmV4dChjb2x1bW5zKTtcclxuXHR9XHJcblxyXG5cdHNvcnRDaGFuZ2VkKHNvcnQ6IFNvcnRUYWJsZUl0ZW0pIHtcclxuXHRcdHRoaXMuX3NvcnRWYWx1ZSA9IHsgc29ydEJ5OiBzb3J0LnZhbHVlLCBzb3J0T3JkZXI6IHNvcnQuZGlyZWN0aW9uIH07XHJcblx0XHR0aGlzLl9zb3J0T3B0aW9uU3ViLm5leHQodGhpcy5fc29ydFZhbHVlKTtcclxuXHR9XHJcblxyXG5cdG1vZGVDaGFuZ2VkKG1vZGU6IFRhYmxlVmlld01vZGUpIHtcclxuXHRcdHRoaXMuX3ZpZXdNb2RlU3ViLm5leHQobW9kZSk7XHJcblx0fVxyXG5cclxuXHRvblNvcnRDaGFuZ2VkKHNvcnQ6IFRhYmxlU29ydE9wdGlvbnMpIHtcclxuXHRcdHRoaXMuX3NvcnRWYWx1ZSA9IHNvcnQ7XHJcblx0XHR0aGlzLm9uU29ydC5lbWl0KHNvcnQpO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0VGFibGUodHlwZTogRXhwb3J0VHlwZSkge1xyXG5cdFx0Y29uc3QgcmVxdWVzdCA9IF8uY2xvbmVEZWVwKHRoaXMuZXhwb3J0VGFibGVDb25maWc/LnJlcXVlc3QpO1xyXG5cdFx0aWYgKCFyZXF1ZXN0KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLmdldFZhbHVlKCk7XHJcblx0XHRjb25zdCBmaWVsZHMgPSBjb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wuaGVhZGVyQ2xhc3MpO1xyXG5cdFx0Y29uc3QgaGVhZGVycyA9IGNvbHVtbnMubWFwKChjb2wpID0+ICh0aGlzLnRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJykgKyBjb2wubmFtZSk7XHJcblxyXG5cdFx0Y29uc3QgY3JpdGVyaWEgPSB0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cclxuXHRcdHJlcXVlc3QucGFyYW1zID0gT2JqZWN0LmFzc2lnbihcclxuXHRcdFx0e30sXHJcblx0XHRcdGNyaXRlcmlhLnBhcmFtcyxcclxuXHRcdFx0dGhpcy5fc29ydFZhbHVlIHx8IHt9LFxyXG5cdFx0XHR0aGlzLnRhYmxlQ29uZmlnPy5xdWlja0ZpbHRlcnMgPyB7IHF1aWNrRmlsdGVyczogdGhpcy50YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfSA6IHt9LFxyXG5cdFx0XHRyZXF1ZXN0LnBhcmFtc1xyXG5cdFx0KTtcclxuXHJcblx0XHRjb25zdCBibG9iTmFtZUtleSA9IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmJsb2JOYW1lO1xyXG5cdFx0Y29uc3QgcGF5bG9hZDogTmRmRXhwb3J0UGF5bG9hZCA9IHtcclxuXHRcdFx0cHJlZGljYXRlTGlzdDogY3JpdGVyaWEucGF5bG9hZC5wcmVkaWNhdGVMaXN0IHx8IFtdLFxyXG5cdFx0XHRyZXBvcnRNZXRhRGF0YToge1xyXG5cdFx0XHRcdGJsb2JOYW1lOiAnJyxcclxuXHRcdFx0XHRkb2NUeXBlTmFtZTogdGhpcy5leHBvcnRUYWJsZUNvbmZpZy5kb2NUeXBlTmFtZSxcclxuXHRcdFx0XHRmaWxlVHlwZTogdHlwZSxcclxuXHRcdFx0XHRsb2NhbGU6IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmxvY2FsZSB8fCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG5cdFx0XHRcdGZpZWxkczogdGhpcy5leHBvcnRUYWJsZUNvbmZpZz8uZmllbGRzIHx8IGZpZWxkcyxcclxuXHRcdFx0XHRoZWFkZXJzOiBbXVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGZvcmtKb2luKHtcclxuXHRcdFx0YXI6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ2FyJyksXHJcblx0XHRcdGVuOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdlbicpXHJcblx0XHR9KVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9uc1t0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXTtcclxuXHRcdFx0XHRcdHBheWxvYWQucmVwb3J0TWV0YURhdGEuaGVhZGVycyA9IGhlYWRlcnMubWFwKChjb2wpID0+IF8uZ2V0KGN1cnJlbnRUcmFuc2xhdGlvbnMsIGNvbCkpO1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZSA9IF8uZ2V0KHRyYW5zbGF0aW9uc1snYXInXSwgYmxvYk5hbWVLZXkpO1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZUVuID0gXy5nZXQodHJhbnNsYXRpb25zWydlbiddLCBibG9iTmFtZUtleSk7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fbmdUYWJsZVNlcnZpY2UuZXhwb3J0VGFibGUocmVxdWVzdCwgcGF5bG9hZCk7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoXykgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5lcnJvcignVEFCTEUuRVhQT1JULlJlcXVlc3RFcnJvcicpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIG9mKGZhbHNlKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRmaWx0ZXIoQm9vbGVhbiksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzOiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKHJlcykge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5zdWNjZXNzKCdUQUJMRS5FWFBPUlQucmVxdWVzdFN1Y2Nlc3MnKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5lcnJvcignVEFCTEUuRVhQT1JULnJlcXVlc3RFcnJvcicpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRmaWx0ZXJDaGFuZ2VkKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblx0XHR0aGlzLl90cmlnZ2VyQ3JpdGVyaWFDaGFuZ2VzKGNyaXRlcmlhKTtcclxuXHRcdGlmICh0aGlzLmZpbHRlcnNDb25maWc/Lm1vZGUgIT09ICdwYXlsb2FkJykge1xyXG5cdFx0XHRjb25zdCBpc1N0cmluZ2lmeVBhcmFtcyA9IHRoaXMuZmlsdGVyc0NvbmZpZz8uc3RyaW5naWZ5UGFyYW1zO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9ICFpc1N0cmluZ2lmeVBhcmFtcyA/IGNyaXRlcmlhIDogdGhpcy5fc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhKTtcclxuXHRcdFx0dGhpcy5fZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5uZXh0KHZhbHVlKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHBheWxvYWQgPSB0aGlzLl9maWx0ZXJzTWFwcGVyLnByZXBhcmVQYXlsb2FkKHRoaXMuZmlsdGVyc0NvbmZpZy5maWVsZHMsIGNyaXRlcmlhKTtcclxuXHRcdHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQocGF5bG9hZCk7XHJcblx0fVxyXG5cclxuXHRvblRleHRTZWFyY2godGV4dDogc3RyaW5nKSB7XHJcblx0XHRpZiAoIXRoaXMudGV4dFNlYXJjaENvbmZpZz8uZmllbGRLZXkgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIXRleHQpIHtcclxuXHRcdFx0dGhpcy5vbkNsZWFyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh0ZXh0KTtcclxuXHR9XHJcblxyXG5cdG9uQ2xlYXJTZWFyY2goKSB7XHJcblx0XHR0aGlzLl90ZXh0U2VhcmNoU3ViLm5leHQobnVsbCk7XHJcblx0fVxyXG5cclxuXHRvcGVuU2VhcmNoTW9kYWwoKSB7XHJcblx0XHRjb25zdCBfZGlhbG9nQ29uZmlnID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5zdWZmaXg/LmRpYWxvZztcclxuXHRcdGlmICghX2RpYWxvZ0NvbmZpZykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCB7IG9wdGlvbnMsIC4uLmRhdGEgfSA9IF9kaWFsb2dDb25maWc7XHJcblx0XHR0aGlzLl9kaWFsb2cub3BlbjxIdG1sRGlhbG9nQ29tcG9uZW50LCBIdG1sRGlhbG9nQ29uZmlnPihIdG1sRGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHBhbmVsQ2xhc3M6ICdwLTAnLFxyXG5cdFx0XHRtaW5XaWR0aDogJ21pbig1MDBweCw2MHZ3KScsXHJcblx0XHRcdGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb24sXHJcblx0XHRcdC4uLm9wdGlvbnMsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0b25QYWdlQ2hhbmdlZChwYWdlOiBQYWdlRXZlbnQpIHtcclxuXHRcdHRoaXMuX3BhZ2VDaGFuZ2VkID0gdGhpcy5fYWN0aXZlUGFnZS5wYWdlSW5kZXggIT09IHBhZ2UucGFnZUluZGV4IHx8IHRoaXMuX2FjdGl2ZVBhZ2UucGFnZVNpemUgIT09IHBhZ2UucGFnZVNpemU7XHJcblx0XHRpZiAodGhpcy5fcGFnZUNoYW5nZWQpIHtcclxuXHRcdFx0dGhpcy5vblBhZ2UuZW1pdChwYWdlKTtcclxuXHRcdFx0dGhpcy5fYWN0aXZlUGFnZSA9IHBhZ2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9maWx0ZXJCeVZpc2liaWxpdHkoY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXSk6IFRhYmxlQ29sdW1uQ29uZmlnW10ge1xyXG5cdFx0cmV0dXJuIGNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC5kZWZhdWx0VmlzaWJsZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9wcmVwYXJlU2VhcmNoKFtzZWFyY2gsIGZpbHRlcnNdOiBbXHJcblx0XHRzdHJpbmcsXHJcblx0XHR7XHJcblx0XHRcdHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHRcdHBheWxvYWQ/OiB7IHByZWRpY2F0ZUxpc3Q6IGFueVtdIH0gJiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0fVxyXG5cdF0pOiBhbnkge1xyXG5cdFx0e1xyXG5cdFx0XHRjb25zdCB7IHByZWRpY2F0ZUxpc3QgfSA9IGZpbHRlcnM/LnBheWxvYWQgfHwgeyBwcmVkaWNhdGVMaXN0OiBbXSB9O1xyXG5cdFx0XHRjb25zdCBfa2V5ID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleTtcclxuXHRcdFx0Y29uc3Qgc2VhcmNoSW5kZXggPSBwcmVkaWNhdGVMaXN0LmZpbmRJbmRleCgoaXRtKSA9PiBpdG0ubmFtZSA9PT0gX2tleSk7XHJcblx0XHRcdGlmIChzZWFyY2ggJiYgX2tleSkge1xyXG5cdFx0XHRcdGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRwcmVkaWNhdGVMaXN0W3NlYXJjaEluZGV4XS52YWx1ZSA9IGAnJHtzZWFyY2h9J2A7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHByZWRpY2F0ZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdG5hbWU6IF9rZXksXHJcblx0XHRcdFx0XHRcdG9wZXJhdG9yOiB0aGlzLnRleHRTZWFyY2hDb25maWc/Lm9wZXJhdG9yIHx8IENPTVBBUklTT05fT1BFUkFUT1IuZXF1YWxzLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogYCcke3NlYXJjaH0nYFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRwcmVkaWNhdGVMaXN0LnNwbGljZShzZWFyY2hJbmRleCk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIF8uY2xvbmVEZWVwKHsgLi4uZmlsdGVycyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcblx0XHRcdGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIHt9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdGlmICh0aGlzLl90YWJsZUluaXRpYWxpemVkKSB7XHJcblx0XHRcdHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0geyAuLi50aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpIH07XHJcblx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnRWYWx1ZTtcclxuXHRcdHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLm5leHQoe1xyXG5cdFx0XHRwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxyXG5cdFx0XHRjdXJyZW50VmFsdWU6IGNyaXRlcmlhXHJcblx0XHR9KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uXHJcblx0ICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXQgdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHBhcmFtIGNvbmZpZyBOZGZUYWJsZUNvbmZpZ1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2FwcGx5VGFibGVDb25maWcoY29uZmlnOiBOZGZUYWJsZUNvbmZpZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5fdGFibGVDb25maWdTdWIubmV4dChjb25maWcpO1xyXG5cdFx0dGhpcy5pc1BhbmVsT3BlbmVkID0gY29uZmlnPy5vcHRpb25zPy5maWx0ZXJzPy5wYW5lbD8udmlzaWJsZSA/PyB0cnVlO1xyXG5cdFx0dGhpcy5faXNDb25maWdDaGFuZ2VkID0gISFjb25maWc7XHJcblx0XHRpZiAoY29uZmlnLmNvbHVtbnMpIHtcclxuXHRcdFx0dGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5uZXh0KHRoaXMuX2ZpbHRlckJ5VmlzaWJpbGl0eShjb25maWcuY29sdW1ucykpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbmZpZy5zb3J0aW5nQnkpIHtcclxuXHRcdFx0dGhpcy5fc29ydFZhbHVlID0gY29uZmlnLnNvcnRpbmdCeTtcclxuXHRcdFx0dGhpcy5fc29ydE9wdGlvblN1Yi5uZXh0KGNvbmZpZy5zb3J0aW5nQnkpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbmZpZz8ub3B0aW9ucz8udGFibGVNb2RlPy5tb2RlKSB7XHJcblx0XHRcdHRoaXMuX3ZpZXdNb2RlU3ViLm5leHQoY29uZmlnLm9wdGlvbnMudGFibGVNb2RlLm1vZGUpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbmZpZy5wYWdlU2l6ZSkge1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVQYWdlLnBhZ2VTaXplID0gY29uZmlnLnBhZ2VTaXplO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHByaXZhdGVcclxuXHQgKiBAZGVzY3JpcHRpb24gTG9hZHMgdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGtleSBhbmQgYXBwbGllcyBpdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSB1c2VkIHRvIGZldGNoIHRoZSB0YWJsZSBjb25maWd1cmF0aW9uLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2xvYWRUYWJsZUNvbmZpZyhrZXk6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fbmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZVxyXG5cdFx0XHQuZ2V0VGFibGVDb25maWd1cmF0aW9uKGtleSwgdGhpcy5jb25maWdQYXRoKVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKGNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuY29uZmlnVHJhbnNmb3JtZXIgJiYgXy5pc0Z1bmN0aW9uKHRoaXMuY29uZmlnVHJhbnNmb3JtZXIpKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyKGNvbmZpZyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoY29uZmlnKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2XHJcblx0Km5nSWY9XCJ0YWJsZUNvbmZpZ1wiXHJcblx0Y2xhc3M9XCJuZGYtdGFibGVfX2NvbnRhaW5lclwiXHJcblx0W2NsYXNzLnBhbmVsLW9wZW5lZF09XCJpc1BhbmVsT3BlbmVkICYmIGZpbHRlcnNDb25maWdcIlxyXG5cdFtkaXJdPVwiZGlyZWN0aW9uXCJcclxuXHRuZGZGbHVpZEhlaWdodFxyXG5cdGNzc1Zhcj1cIi0tbmRmLXRhYmxlLWhlaWdodFwiXHJcblx0W2NhbGN1bGF0ZV09XCJhdXRvQ2FsY3VsYXRlSGVpZ2h0XCJcclxuPlxyXG5cdDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX3BhbmVsXCIgKm5nSWY9XCJmaWx0ZXJzQ29uZmlnPy5maWVsZHNcIj5cclxuXHRcdDxhcHAtZmlsdGVycy1wYW5lbFxyXG5cdFx0XHRbZmllbGRzXT1cImZpbHRlcnNDb25maWcuZmllbGRzXCJcclxuXHRcdFx0W2FnZ3JlZ2F0aW9uc109XCJhZ2dyZWdhdGlvbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHQoZmlsdGVyQ2hhbmdlZCk9XCJmaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRbYWN0aXZlUXVlcnldPVwiYWN0aXZlUXVlcnlcIlxyXG5cdFx0XHRjbGFzcz1cIm5kZi10YWJsZV9fZmlsdGVyc1wiXHJcblx0XHRcdFtjdXN0b21UZW1wbGF0ZVJlZl09XCJmaWx0ZXJDdXN0b21UZW1wbGF0ZVwiXHJcblx0XHQ+PC9hcHAtZmlsdGVycy1wYW5lbD5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19jb250ZW50XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19oZWFkZXIgZmxleFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19oZWFkZXJfX2N1c3RvbS1hY3Rpb25zIGZsZXggZ2FwLXgtNCBpdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJzZWFyY2hUYWJsZVRlbXBsYXRlIHx8IGRlZmF1bHRBY3Rpb25UZW1wbGF0ZVwiXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG5cdFx0XHRcdFx0XHQkaW1wbGljaXQ6IHRhYmxlQ29uZmlnLFxyXG5cdFx0XHRcdFx0XHRwYW5lbE9wZW5lZDogaXNQYW5lbE9wZW5lZCxcclxuXHRcdFx0XHRcdFx0dG9nZ2xlUGFuZWw6IHRvZ2dsZVBhbmVsLFxyXG5cdFx0XHRcdFx0XHRvcGVuTW9kYWw6IG9wZW5TZWFyY2hNb2RhbCxcclxuXHRcdFx0XHRcdFx0c2VhcmNoOiBvblRleHRTZWFyY2gsXHJcblx0XHRcdFx0XHRcdGNsZWFyOiBvbkNsZWFyU2VhcmNoXHJcblx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHQ+PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEFjdGlvblRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nSWY9XCJpc1BhbmVsVG9nZ2xlQXZhaWxhYmxlXCIgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj5cclxuXHRcdFx0XHRcdFx0PG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGFwcC10ZXh0LXNlYXJjaFxyXG5cdFx0XHRcdFx0XHQqbmdJZj1cInRleHRTZWFyY2hDb25maWdcIlxyXG5cdFx0XHRcdFx0XHRbc2VhcmNoQ29uZmlnXT1cInRleHRTZWFyY2hDb25maWdcIlxyXG5cdFx0XHRcdFx0XHQob3Blbk1vZGFsKT1cIm9wZW5TZWFyY2hNb2RhbCgpXCJcclxuXHRcdFx0XHRcdFx0W3NlYXJjaF09XCJ0ZXh0U2VhcmNoJCB8IGFzeW5jXCJcclxuXHRcdFx0XHRcdFx0KHNlYXJjaENoYW5nZSk9XCJvblRleHRTZWFyY2goJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdChjbGVhcik9XCJvbkNsZWFyU2VhcmNoKClcIlxyXG5cdFx0XHRcdFx0PjwvYXBwLXRleHQtc2VhcmNoPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19oZWFkZXJfX2FjdGlvbnMgZmxleCBnYXAteC00IGl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxhcHAtZWRpdG9yLWJ1dHRvblxyXG5cdFx0XHRcdFx0Km5nSWY9XCJqc29uRWRpdG9yRW5hYmxlZCAmJiAodGFibGVLZXkgfHwgdGFibGVDb25maWc/LmtleSlcIlxyXG5cdFx0XHRcdFx0W2tleV09XCJ0YWJsZUtleSB8fCB0YWJsZUNvbmZpZz8ua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cImVkaXRvclR5cGVcIlxyXG5cdFx0XHRcdD48L2FwcC1lZGl0b3ItYnV0dG9uPlxyXG5cdFx0XHRcdDxuZGYtdGFibGUtZXhwb3J0XHJcblx0XHRcdFx0XHQqbmdJZj1cImV4cG9ydFRhYmxlQ29uZmlnPy5lbmFibGVkXCJcclxuXHRcdFx0XHRcdFtjb25maWddPVwiZXhwb3J0VGFibGVDb25maWdcIlxyXG5cdFx0XHRcdFx0KG9uRXhwb3J0KT1cImV4cG9ydFRhYmxlKCRldmVudClcIlxyXG5cdFx0XHRcdD48L25kZi10YWJsZS1leHBvcnQ+XHJcblxyXG5cdFx0XHRcdDx0YWJsZS1zb3J0aW5nLWxpc3RcclxuXHRcdFx0XHRcdCpuZ0lmPVwiISFzb3J0TGlzdD8ubGVuZ3RoXCJcclxuXHRcdFx0XHRcdFtzb3J0TGlzdF09XCJzb3J0TGlzdFwiXHJcblx0XHRcdFx0XHQoc29ydENoYW5nZWQpPVwic29ydENoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvdGFibGUtc29ydGluZy1saXN0PlxyXG5cdFx0XHRcdDx0YWJsZS1jb2x1bW5zLXRvZ2dsZXJcclxuXHRcdFx0XHRcdCpuZ0lmPVwiY29sdW1uVG9nZ2xlXCJcclxuXHRcdFx0XHRcdFtjb2x1bW5zXT1cInRhYmxlQ29uZmlnLmNvbHVtbnNcIlxyXG5cdFx0XHRcdFx0W3ByZWZpeF09XCJ0YWJsZUNvbmZpZy5wcmVmaXhcIlxyXG5cdFx0XHRcdFx0W3NvcnRhYmxlXT1cImNvbHVtbnNPcHRpb25zPy5zb3J0YWJsZVwiXHJcblx0XHRcdFx0XHQoY29sdW1uc0NoYW5nZWQpPVwiY29sdW1uc0NoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvdGFibGUtY29sdW1ucy10b2dnbGVyPlxyXG5cdFx0XHRcdDxtb2RlLXRvZ2dsZXJcclxuXHRcdFx0XHRcdCpuZ0lmPVwidGFibGVNb2RlPy50b2dnbGVNb2RlXCJcclxuXHRcdFx0XHRcdFttb2RlXT1cInRhYmxlTW9kZS5tb2RlIHx8ICdsaXN0J1wiXHJcblx0XHRcdFx0XHRbbW9kZXNMaXN0XT1cInRhYmxlTW9kZT8uYXZhaWxhYmxlTW9kZVwiXHJcblx0XHRcdFx0XHQobW9kZUNoYW5nZWQpPVwibW9kZUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvbW9kZS10b2dnbGVyPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFjdGlvbnNUYWJsZVRlbXBsYXRlXCJcclxuXHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcblx0XHRcdFx0XHRcdCRpbXBsaWNpdDogdGFibGVDb25maWcsXHJcblx0XHRcdFx0XHRcdHBhbmVsT3BlbmVkOiBpc1BhbmVsT3BlbmVkLFxyXG5cdFx0XHRcdFx0XHR0b2dnbGVQYW5lbDogdG9nZ2xlUGFuZWwsXHJcblx0XHRcdFx0XHRcdG9wZW5Nb2RhbDogb3BlblNlYXJjaE1vZGFsLFxyXG5cdFx0XHRcdFx0XHRzZWFyY2g6IG9uVGV4dFNlYXJjaCxcclxuXHRcdFx0XHRcdFx0Y2xlYXI6IG9uQ2xlYXJTZWFyY2hcclxuXHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdD48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8Y3RzLWR5bmFtaWMtdGFibGVcclxuXHRcdFx0Km5nSWY9XCIhdGFibGVDb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG5cdFx0XHRjbGFzcz1cIm5kZi10YWJsZV9fdGFibGUgdGFibGUtc3R5bGVcIlxyXG5cdFx0XHRbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jlc3BvbnNpdmVDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbZnVsbFdpZHRoXT1cInRhYmxlQ29uZmlnLmZ1bGxXaWR0aCB8fCAnYXV0bydcIlxyXG5cdFx0XHRbcGFnZVNpemVdPVwidGFibGVDb25maWcucGFnZVNpemUgfHwgMTBcIlxyXG5cdFx0XHRbcGFnZU51bWJlcl09XCJ0YWJsZUNvbmZpZy5wYWdlTnVtYmVyIHx8IDFcIlxyXG5cdFx0XHRbcGFnZVByb3ZpZGVyXT1cInRhYmxlQ29uZmlnLnBhZ2VQcm92aWRlclwiXHJcblx0XHRcdFtjdXN0b21VcmxdPVwidGFibGVDb25maWcuY3VzdG9tVXJsXCJcclxuXHRcdFx0W3F1aWNrRmlsdGVyXT1cInRhYmxlQ29uZmlnLnF1aWNrRmlsdGVycyA/IHsgcXVpY2tGaWx0ZXJzOiB0YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfSA6IHVuZGVmaW5lZFwiXHJcblx0XHRcdFtkZWZ1bHRTb3J0XT1cInRhYmxlQ29uZmlnLmRlZmF1bHRTb3J0IHx8IGRlZmF1bHRTb3J0XCJcclxuXHRcdFx0W3NvcnRpbmdCeV09XCJzb3J0T3B0aW9uJCB8IGFzeW5jXCJcclxuXHRcdFx0W2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG5cdFx0XHRbZmllbGRzXT1cInRhYmxlQ29uZmlnLmZpZWxkc1wiXHJcblx0XHRcdFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG5cdFx0XHRbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuXHRcdFx0W3JhbmdlXT1cInRhYmxlQ29uZmlnPy5yYW5nZVwiXHJcblx0XHRcdFtpc1NlYXJjaFBhZ2VdPVwidGFibGVDb25maWc/LmlzU2VhcmNoUGFnZVwiXHJcblx0XHRcdFttdWx0aVNlbGVjdFJvd3NdPVwidGFibGVDb25maWc/Lm11bHRpU2VsZWN0Um93c1wiXHJcblx0XHRcdFtjdXN0b21GaXJzdFJvd109XCJ0YWJsZUNvbmZpZz8uY3VzdG9tRmlyc3RSb3dcIlxyXG5cdFx0XHRbaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXT1cInRhYmxlQ29uZmlnPy5oaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG5cdFx0XHRbc2hvd0FjdGlvbnNBc01lbnVdPVwidGFibGVDb25maWc/LnNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0W2ZpbHRlclBhcmFtc109XCJ0YWJsZUNvbmZpZz8uZmlsdGVyUGFyYW1zXCJcclxuXHRcdFx0W2Zvcm1hdF09XCJ0YWJsZUNvbmZpZz8uZm9ybWF0IHx8ICdNTU1NIGQsIHknXCJcclxuXHRcdFx0W3BhZ2VTaXplc109XCJ0YWJsZUNvbmZpZz8ucGFnZVNpemVzIHx8IGRlZmF1bHRQYWdlU2l6ZXNcIlxyXG5cdFx0XHRbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJ1wiXHJcblx0XHRcdFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcblx0XHRcdFtxdWVyeVBhcmFtXT1cInRhYmxlQ29uZmlnLnF1ZXJ5UGFyYW1cIlxyXG5cdFx0XHRbY3VzdG9tRmlsdGVyc109XCJzZWFyY2hBbmRGaWx0ZXJzJCB8IGFzeW5jXCJcclxuXHRcdFx0W3RhYmxlQWN0aW9uc109XCJ0YWJsZUNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG4gICAgICBbcmVxdWVzdEFjdGlvbnNdPVwidGFibGVDb25maWc/LnJlcXVlc3RBY3Rpb25zXCJcclxuXHRcdFx0W2hlYWRlcnNdPVwidGFibGVDb25maWcuaGVhZGVyc1wiXHJcblx0XHRcdChvblJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uUm93SW5kZXhTZWxlY3RlZCk9XCJvblJvd0luZGV4U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KGFjdGlvbk9uUm93KT1cImFjdGlvbk9uUm93LmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkdldHRpbmdEYXRhKT1cIm9uR2V0dGluZ0RhdGEuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uTG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkluaXRpYWxpemUpPVwib25Jbml0aWFsaXplKCRldmVudClcIlxyXG5cdFx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Mb2FkaW5nKT1cIm9uTG9hZGluZy5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25QYWdlKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFtpc0xlZ2FjeU1vZGVdPVwiZmFsc2VcIlxyXG5cdFx0XHRbc2hvd1RvdGFsUmVjb3JkXT1cInRydWVcIlxyXG5cdFx0XHQoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdD5cclxuXHRcdFx0PG5nLXRlbXBsYXRlIGVtcHR5VGVtcGxhdGUgbGV0LWlzTG9hZGluZyBsZXQtcm93cz1cInJvd3NcIiBsZXQtaW5pdGlhbGl6ZWQ9XCJpbml0aWFsaXplZFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2FkaW5nLWRhdGFcIiAqbmdJZj1cImlzTG9hZGluZyAmJiBpbml0aWFsaXplZFwiPlxyXG5cdFx0XHRcdFx0PG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTUvNlwiICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhcm93cy5sZW5ndGhcIj5cclxuXHRcdFx0XHRcdDxhcHAtbm8tZGF0YS1mb3VuZCBjbGFzcz1cIm10LTRcIiBbbWVzc2FnZV09XCJlbXB0eU1lc3NhZ2VcIj48L2FwcC1uby1kYXRhLWZvdW5kPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9jdHMtZHluYW1pYy10YWJsZT5cclxuXHJcblx0XHQ8Y3RzLXRhYmxlXHJcblx0XHRcdCpuZ0lmPVwidGFibGVDb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG5cdFx0XHRbcm93c109XCJyb3dzXCJcclxuXHRcdFx0W3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG5cdFx0XHRbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jlc3BvbnNpdmVDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbcm93Q3Vyc29yXT1cInRydWVcIlxyXG5cdFx0XHRbZnVsbFdpZHRoXT1cInRhYmxlQ29uZmlnLmZ1bGxXaWR0aCB8fCAnYXV0bydcIlxyXG5cdFx0XHRbZW50aXR5VHlwZV09XCInYWxsJ1wiXHJcblx0XHRcdFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4IHx8ICcnXCJcclxuXHRcdFx0W3RhYmxlTW9kZV09XCJ2aWV3TW9kZSQgfCBhc3luY1wiXHJcblx0XHRcdFtjb21wb25lbnROYW1lXT1cInRhYmxlTW9kZT8uWydjb21wb25lbnROYW1lJ11cIlxyXG5cdFx0XHRbbXVsdGlTZWxlY3RSb3dzXT1cInRhYmxlQ29uZmlnPy5tdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0XHRbY3VzdG9tRmlyc3RSb3ddPVwidGFibGVDb25maWc/LmN1c3RvbUZpcnN0Um93XCJcclxuXHRcdFx0W3RhYmxlQWN0aW9uc109XCJ0YWJsZUNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG5cdFx0XHRbc2hvd0FjdGlvbnNBc01lbnVdPVwidGFibGVDb25maWc/LnNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0W2RlZnVsdFNvcnRdPVwidGFibGVDb25maWcuZGVmYXVsdFNvcnQgfHwgZGVmYXVsdFNvcnRcIlxyXG5cdFx0XHRbZm9ybWF0XT1cInRhYmxlQ29uZmlnPy5mb3JtYXQgfHwgJ01NTU0gZCwgeSdcIlxyXG5cdFx0XHRbaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXT1cInRhYmxlQ29uZmlnPy5oaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG5cdFx0XHQob25Sb3dTZWxlY3RlZCk9XCJvblJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvblJvd0luZGV4U2VsZWN0ZWQpPVwib25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChhY3Rpb25PblJvdyk9XCJhY3Rpb25PblJvdy5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Tb3J0aW5nKT1cIm9uU29ydENoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHQ+PC9jdHMtdGFibGU+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL21vZGVscy90YWJsZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlQ29sdW1uQWN0aW9uLCBUYWJsZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4vdGFibGUtY29sdW1uJztcclxuaW1wb3J0IHsgTmRmVGFibGVPcHRpb25zIH0gZnJvbSAnLi90YWJsZS1vcHRpb25zJztcclxuaW1wb3J0IHsgVGFibGVEZWZhdWx0U29ydE1vZGVsLCBUYWJsZVBhZ2luYXRpb25PcHRpb25zLCBUYWJsZVNvcnRpbmdBcnJheSwgVGFibGVTb3J0T3B0aW9ucywgVGFibGVUYWIgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgRXZhbHVhdGVkU3RyaW5nIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIHR5cGUgZm9yIHRoZSBOREYgVGFibGUgY29tcG9uZW50LlxyXG4gKiBFeHRlbmRzIGBUYWJsZVBhZ2luYXRpb25PcHRpb25zYCBhbmQgcHJvdmlkZXMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXHJcbiAqIGZvciBjdXN0b21pemluZyB0YWJsZSBiZWhhdmlvciwgYXBwZWFyYW5jZSwgYW5kIGRhdGEgaGFuZGxpbmcuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBOZGZUYWJsZUNvbmZpZyA9IFRhYmxlUGFnaW5hdGlvbk9wdGlvbnMgJiB7XHJcblx0a2V5Pzogc3RyaW5nO1xyXG5cdC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRhdGEgaXMgcHJvdmlkZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiBiZWluZyBmZXRjaGVkLiAqL1xyXG5cdGlzRGF0YVByb3ZpZGVkPzogYm9vbGVhbjtcclxuXHJcblx0LyoqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSB0YWJsZS4gKi9cclxuXHRvcHRpb25zPzogTmRmVGFibGVPcHRpb25zO1xyXG5cclxuXHQvKiogRW5hYmxlcyBob3Jpem9udGFsIHNjcm9sbGJhciBpZiBzZXQgdG8gdHJ1ZS4gKi9cclxuXHRzY3JvbGxiYXJIPzogYm9vbGVhbjtcclxuXHJcblx0LyoqIERlZmluZXMgdGhlIGNvbHVtbiBtb2RlOiAnZmxleCcsICdmaXhlZCcsIG9yICdmb3JjZScuICovXHJcblx0Y29sdW1uTW9kZT86ICdmbGV4JyB8ICdmaXhlZCcgfCAnZm9yY2UnO1xyXG5cclxuXHQvKiogVGhlIHBhZ2UgcHJvdmlkZXIgaWRlbnRpZmllciBmb3IgZmV0Y2hpbmcgZGF0YS4gKi9cclxuXHRwYWdlUHJvdmlkZXI6IHN0cmluZztcclxuXHJcblx0LyoqIEEgbWFwcGluZyBvZiBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcy4gKi9cclxuXHRmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG5cdC8qKiBDdXN0b20gVVJMIGNvbmZpZ3VyYXRpb24gZm9yIGZldGNoaW5nIGRhdGEuICovXHJcblx0Y3VzdG9tVXJsPzoge1xyXG5cdFx0dXJsOiBzdHJpbmc7XHJcblx0XHRtZXRob2Q6ICdQT1NUJyB8ICdHRVQnO1xyXG5cdFx0cGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHRwcmVkaWNhdGVLZXk/OiBzdHJpbmc7XHJcblx0fTtcclxuXHJcblx0cmVxdWVzdEFjdGlvbnM/OiB7XHJcblx0XHQvKiogQWN0aW9uIHRvIGJlIGV4ZWN1dGVkIGJlZm9yZSBzdWJtaXR0aW5nIHRoZSByZXF1ZXN0LiAqL1xyXG5cdFx0YmVmb3JlU3VibWl0PzogRXZhbHVhdGVkU3RyaW5nPCdwYXlsb2FkJz47XHJcblx0fTtcclxuXHJcblx0LyoqIFF1aWNrIGZpbHRlciBpZGVudGlmaWVyIGZvciB0aGUgdGFibGUuICovXHJcblx0cXVpY2tGaWx0ZXJzPzogc3RyaW5nO1xyXG5cclxuXHQvKiogQ29uZmlndXJhdGlvbiBmb3IgdGFibGUgY29sdW1ucy4gKi9cclxuXHRjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdO1xyXG5cclxuXHQvKiogTGlzdCBvZiBjb2x1bW4gaWRlbnRpZmllcnMgd2l0aCBkeW5hbWljIHZpc2liaWxpdHkuICovXHJcblx0Y29sdW1uc1dpdGhEeW5hbWljVmlzaWJpbHRpeT86IHN0cmluZ1tdO1xyXG5cclxuXHQvKiogTGlzdCBvZiBjb2x1bW4gaWRlbnRpZmllcnMgd2l0aCBkeW5hbWljIGRpc3BsYXkuICovXHJcblx0Y29sdW1uc1dpdGhEeW5hbWljRGlzcGxheT86IHN0cmluZ1tdO1xyXG5cclxuXHQvKiogTGlzdCBvZiBmaWx0ZXIgaWRlbnRpZmllcnMgd2l0aCBkeW5hbWljIGRpc3BsYXkuICovXHJcblx0ZmlsdGVyc1dpdGhEeW5hbWljRGlzcGxheT86IHN0cmluZ1tdO1xyXG5cclxuXHQvKiogQ29uZmlndXJhdGlvbiBmb3IgcmVzcG9uc2l2ZSBjb2x1bW5zLiAqL1xyXG5cdHJlc3BvbnNpdmVDb2x1bW5zPzogVGFibGVDb2x1bW5Db25maWdbXTtcclxuXHJcblx0LyoqIFNwZWNpZmllcyB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgdGFibGUuICovXHJcblx0ZnVsbFdpZHRoPzogc3RyaW5nO1xyXG5cclxuXHQvKiogUHJlZml4IGZvciB0YWJsZS1yZWxhdGVkIGlkZW50aWZpZXJzLiAqL1xyXG5cdHByZWZpeD86IHN0cmluZztcclxuXHJcblx0LyoqIFNvcnRpbmcgb3B0aW9ucyBmb3IgdGhlIHRhYmxlLiAqL1xyXG5cdHNvcnRpbmdCeT86IFRhYmxlU29ydE9wdGlvbnM7XHJcblxyXG5cdC8qKiBEZWZhdWx0IHNvcnRpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlLiAqL1xyXG5cdGRlZmF1bHRTb3J0PzogVGFibGVEZWZhdWx0U29ydE1vZGVsO1xyXG5cclxuXHQvKiogQ3VzdG9tIGhlYWRlcnMgZm9yIHRhYmxlIHJlcXVlc3RzLiAqL1xyXG5cdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuXHQvKiogUXVlcnkgcGFyYW1ldGVycyBmb3IgdGFibGUgcmVxdWVzdHMuICovXHJcblx0cXVlcnlQYXJhbT86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG5cdC8qKiBBY3Rpb25zIGF2YWlsYWJsZSBmb3IgdGFibGUgY29sdW1ucy4gKi9cclxuXHR0YWJsZUFjdGlvbnM/OiBUYWJsZUNvbHVtbkFjdGlvbltdO1xyXG5cclxuXHQvKiogSGlnaGxpZ2h0cyB0aGUgc2VsZWN0ZWQgY2FyZCBpZiBzZXQgdG8gdHJ1ZS4gKi9cclxuXHRoaWdobGlnaHRTZWxlY3RlZENhcmQ/OiBib29sZWFuO1xyXG5cclxuXHQvKiogVGFicyBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUuICovXHJcblx0dGFicz86IFRhYmxlVGFiW107XHJcblxyXG5cdC8qKiBBcnJheSBvZiBzb3J0aW5nIGNvbmZpZ3VyYXRpb25zLiAqL1xyXG5cdHNvcnRpbmdBcnJheT86IFRhYmxlU29ydGluZ0FycmF5W107XHJcblxyXG5cdC8qKiBEZXRlcm1pbmVzIHdoZW4gdG8gc2tpcCBhZ2dyZWdhdGlvbjogJ25ldmVyJyBvciAnb25QYWdlQ2hhbmdlJy4gKi9cclxuXHRza2lwQWdncmVnYXRpb24/OiAnbmV2ZXInIHwgJ29uUGFnZUNoYW5nZSc7XHJcblxyXG5cdC8qKiBSYW5nZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUuICovXHJcblx0cmFuZ2U/OiBhbnk7XHJcblxyXG5cdC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHRhYmxlIGlzIHVzZWQgb24gYSBzZWFyY2ggcGFnZS4gKi9cclxuXHRpc1NlYXJjaFBhZ2U/OiBhbnk7XHJcblxyXG5cdC8qKiBFbmFibGVzIG11bHRpLXNlbGVjdCByb3dzIGlmIHNldCB0byB0cnVlLiAqL1xyXG5cdG11bHRpU2VsZWN0Um93cz86IGJvb2xlYW47XHJcblxyXG5cdC8qKiBBZGRzIGEgY3VzdG9tIGZpcnN0IHJvdyB0byB0aGUgdGFibGUgaWYgc2V0IHRvIHRydWUuICovXHJcblx0Y3VzdG9tRmlyc3RSb3c/OiBib29sZWFuO1xyXG5cclxuXHQvKiogRGlzcGxheXMgYWN0aW9ucyBhcyBhIG1lbnUgaWYgc2V0IHRvIHRydWUuICovXHJcblx0c2hvd0FjdGlvbnNBc01lbnU/OiBib29sZWFuO1xyXG5cclxuXHQvKiogQWRkaXRpb25hbCBmaWx0ZXIgcGFyYW1ldGVycyBmb3IgdGhlIHRhYmxlLiAqL1xyXG5cdGZpbHRlclBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG5cdC8qKiBGb3JtYXQgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlLiAqL1xyXG5cdGZvcm1hdD86IHN0cmluZztcclxuXHJcblx0LyoqIEF2YWlsYWJsZSBwYWdlIHNpemVzIGZvciB0aGUgdGFibGUuICovXHJcblx0cGFnZVNpemVzPzogeyBsYWJlbDogc3RyaW5nOyBzaXplOiBudW1iZXIgfVtdO1xyXG59O1xyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG5cdCAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuXHQgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuXHQgKi9cclxuXHRzZWN1cml0eU1vZGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG5cdCAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuXHQgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuXHQgKi9cclxuXHRzZWN1cml0eU1vZGU/OiAnc2VjdXJlJyB8ICd1bnNhZmUnO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGVtcGxhdGVTZXR0aW5ncyA9IHtcclxuXHRpbnRlcnBvbGF0ZTogUmVnRXhwO1xyXG5cdGV2YWx1YXRlOiBSZWdFeHA7XHJcblx0ZXNjYXBlOiBSZWdFeHA7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBJbnRlcnBvbGF0ZVN0cmluZyA9IGAke3N0cmluZ317eyR7c3RyaW5nIHwgbnVtYmVyfX19JHtzdHJpbmd9YDtcclxuXHJcbmV4cG9ydCB0eXBlIEV2YWx1YXRlZFN0cmluZzxWQVIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gYCR7c3RyaW5nfSR7VkFSfSR7V2hpdGVzcGFjZX09JHtXaGl0ZXNwYWNlfSR7c3RyaW5nfWA7XHJcblxyXG50eXBlIFdoaXRlc3BhY2UgPSAnJyB8ICcgJyB8IGAke2FueX1gO1xyXG4iXX0=
|