@alfresco/adf-process-services 6.10.0-9777909065 → 6.10.0-9778809840

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.
@@ -166,7 +166,7 @@ export class ProcessAttachmentListComponent {
166
166
  }
167
167
  }
168
168
  ProcessAttachmentListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ProcessAttachmentListComponent, deps: [{ token: i1.ProcessContentService }, { token: i2.DownloadService }, { token: i2.ThumbnailService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
169
- ProcessAttachmentListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ProcessAttachmentListComponent, isStandalone: true, selector: "adf-process-attachment-list", inputs: { processInstanceId: "processInstanceId", disabled: "disabled" }, outputs: { attachmentClick: "attachmentClick", success: "success", error: "error" }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EmptyListComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\"></ng-content>\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_PROCESS_LIST.PROCESS-ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_PROCESS_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\"></data-column>\n <data-column key=\"name\" type=\"text\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.NAME' | translate}}\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.CREATED' | translate}}\"></data-column>\n </data-columns>\n\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-template>\n </adf-loading-content-template>\n\n</adf-datatable>\n", styles: [".adf-attachment-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px}.adf-empty-list-drag_drop{min-height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;margin-top:40px;word-break:break-all;white-space:pre-line}.adf-empty-list__any-files-here-to-add{min-height:24px;opacity:.54;font-size:16px;line-height:1.5;letter-spacing:-.4px;margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-list__empty_doc_lib{width:565px;height:161px;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-list__empty_doc_lib{width:250px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "component", type: i2.EmptyListComponent, selector: "adf-empty-list" }, { kind: "directive", type: i2.EmptyListHeaderDirective, selector: "[adf-empty-list-header]" }, { kind: "directive", type: i2.NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: i2.LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "component", type: i2.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: i2.DataColumnListComponent, selector: "data-columns" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
169
+ ProcessAttachmentListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ProcessAttachmentListComponent, isStandalone: true, selector: "adf-process-attachment-list", inputs: { processInstanceId: "processInstanceId", disabled: "disabled" }, outputs: { attachmentClick: "attachmentClick", success: "success", error: "error" }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EmptyListComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\"></ng-content>\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_PROCESS_LIST.PROCESS-ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_PROCESS_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\"></data-column>\n <data-column key=\"name\" type=\"text\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.NAME' | translate}}\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.CREATED' | translate}}\"></data-column>\n </data-columns>\n\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-template>\n </adf-loading-content-template>\n\n</adf-datatable>\n", styles: [".adf-attachment-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px}.adf-empty-list-drag_drop{min-height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;margin-top:40px;word-break:break-all;white-space:pre-line}.adf-empty-list__any-files-here-to-add{min-height:24px;opacity:.54;font-size:16px;line-height:1.5;letter-spacing:-.4px;margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-list__empty_doc_lib{width:565px;height:161px;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-list__empty_doc_lib{width:250px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "component", type: i2.EmptyListComponent, selector: "adf-empty-list" }, { kind: "directive", type: i2.EmptyListHeaderDirective, selector: "[adf-empty-list-header]" }, { kind: "directive", type: i2.NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: i2.LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "component", type: i2.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: i2.DataColumnListComponent, selector: "data-columns" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
170
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ProcessAttachmentListComponent, decorators: [{
171
171
  type: Component,
172
172
  args: [{ selector: 'adf-process-attachment-list', standalone: true, imports: [CommonModule, DataTableModule, TranslateModule, MatProgressSpinnerModule], encapsulation: ViewEncapsulation.None, template: "<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\"></ng-content>\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_PROCESS_LIST.PROCESS-ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_PROCESS_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\"></data-column>\n <data-column key=\"name\" type=\"text\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.NAME' | translate}}\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.CREATED' | translate}}\"></data-column>\n </data-columns>\n\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-template>\n </adf-loading-content-template>\n\n</adf-datatable>\n", styles: [".adf-attachment-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px}.adf-empty-list-drag_drop{min-height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;margin-top:40px;word-break:break-all;white-space:pre-line}.adf-empty-list__any-files-here-to-add{min-height:24px;opacity:.54;font-size:16px;line-height:1.5;letter-spacing:-.4px;margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-list__empty_doc_lib{width:565px;height:161px;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-list__empty_doc_lib{width:250px}}\n"] }]
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
184
184
  }], error: [{
185
185
  type: Output
186
186
  }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hdHRhY2htZW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9hdHRhY2htZW50L3Byb2Nlc3MtYXR0YWNobWVudC1saXN0L3Byb2Nlc3MtYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvYXR0YWNobWVudC9wcm9jZXNzLWF0dGFjaG1lbnQtbGlzdC9wcm9jZXNzLWF0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVHLE9BQU8sRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFFTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQVU5RSxNQUFNLE9BQU8sOEJBQThCO0lBd0N2QyxZQUNZLHFCQUE0QyxFQUM1QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsTUFBYztRQUhkLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFo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QyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDLENBQ0osQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFNBQWlCO1FBQzFDLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDaEUsR0FBRyxFQUFFO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDdEYsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNKLENBQUM7U0FDTDtJQUNMLENBQUM7OzJIQXBMUSw4QkFBOEI7K0dBQTlCLDhCQUE4QixpU0FDekIsa0JBQWtCLHFFQzVDcEMseTREQW1DQSx5eEJER2MsWUFBWSxrSUFBRSxlQUFlLHcvQ0FBRSxlQUFlLDJGQUFFLHdCQUF3QjsyRkFLekUsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxpQkFHcEUsaUJBQWlCLENBQUMsSUFBSTs4TEFJckMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQjtnQkFLaEMsaUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFVTixlQUFlO3NCQURkLE1BQU07Z0JBUVAsT0FBTztzQkFETixNQUFNO2dCQVFQLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRGF0YVRhYmxlTW9kdWxlLCBEb3dubG9hZFNlcnZpY2UsIEVtcHR5TGlzdENvbXBvbmVudCwgVGh1bWJuYWlsU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2Zvcm0vc2VydmljZXMvcHJvY2Vzcy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXByb2Nlc3MtYXR0YWNobWVudC1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERhdGFUYWJsZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NBdHRhY2htZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZChFbXB0eUxpc3RDb21wb25lbnQpXG4gICAgZW1wdHlUZW1wbGF0ZTogRW1wdHlMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqICgqKnJlcXVpcmVkKiopIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyBpbnN0YW5jZSB0byBkaXNwbGF5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcblxuICAgIC8qKiBEaXNhYmxlL0VuYWJsZSByZWFkLW9ubHkgbW9kZSBmb3IgYXR0YWNobWVudCBsaXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgYXR0YWNobWVudCBpcyBkb3VibGUtY2xpY2tlZCBvciB0aGVcbiAgICAgKiB2aWV3IG9wdGlvbiBpcyBzZWxlY3RlZCBmcm9tIHRoZSBjb250ZXh0IG1lbnUgYnkgdGhlIHVzZXIgZnJvbVxuICAgICAqIHdpdGhpbiB0aGUgY29tcG9uZW50LiBSZXR1cm5zIGEgQmxvYiByZXByZXNlbnRpbmcgdGhlIG9iamVjdFxuICAgICAqIHRoYXQgd2FzIGNsaWNrZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgYXR0YWNobWVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBhdHRhY2htZW50IGxpc3QgaGFzIGZldGNoZWQgYWxsIHRoZSBhdHRhY2htZW50cy5cbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdHRhY2htZW50cy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBhdHRhY2htZW50IGxpc3QgaXMgbm90IGFibGUgdG8gZmV0Y2ggdGhlIGF0dGFjaG1lbnRzXG4gICAgICogKGVnLCBmb2xsb3dpbmcgYSBuZXR3b3JrIGVycm9yKS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgaGFzQ3VzdG9tVGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGF0dGFjaG1lbnRzOiBhbnlbXSA9IFtdO1xuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcHJvY2Vzc0NvbnRlbnRTZXJ2aWNlOiBQcm9jZXNzQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQXR0YWNobWVudHNCeVByb2Nlc3NJbnN0YW5jZUlkKGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5oYXNDdXN0b21UZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IFtdO1xuICAgIH1cblxuICAgIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEF0dGFjaG1lbnRzQnlQcm9jZXNzSW5zdGFuY2VJZCh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkKGNvbnRlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY29udGVudC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBjb250ZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgY3JlYXRlZDogY29udGVudC5jcmVhdGVkLFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRCeTogY29udGVudC5jcmVhdGVkQnkuZmlyc3ROYW1lICsgJyAnICsgY29udGVudC5jcmVhdGVkQnkubGFzdE5hbWUsXG4gICAgICAgICAgICAgICAgaWNvbjogdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihjb250ZW50Lm1pbWVUeXBlKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2hvd1Jvd0FjdGlvbnNNZW51KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3Qgdmlld0FjdGlvbiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5NRU5VX0FDVElPTlMuVklFV19DT05URU5UJyxcbiAgICAgICAgICAgIG5hbWU6ICd2aWV3J1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUFjdGlvbiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5NRU5VX0FDVElPTlMuUkVNT1ZFX0NPTlRFTlQnLFxuICAgICAgICAgICAgbmFtZTogJ3JlbW92ZSdcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkb3dubG9hZEFjdGlvbiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5NRU5VX0FDVElPTlMuRE9XTkxPQURfQ09OVEVOVCcsXG4gICAgICAgICAgICBuYW1lOiAnZG93bmxvYWQnXG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnQudmFsdWUuYWN0aW9ucyA9IFt2aWV3QWN0aW9uLCBkb3dubG9hZEFjdGlvbl07XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC52YWx1ZS5hY3Rpb25zLnNwbGljZSgxLCAwLCByZW1vdmVBY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25FeGVjdXRlUm93QWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgYXJncyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBhcmdzLmFjdGlvbjtcbiAgICAgICAgaWYgKGFjdGlvbi5uYW1lID09PSAndmlldycpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdERvY3VtZW50Q29udGVudChhcmdzLnJvdy5vYmopO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5uYW1lID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVBdHRhY2htZW50QnlJZChhcmdzLnJvdy5vYmouaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5uYW1lID09PSAnZG93bmxvYWQnKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkQ29udGVudChhcmdzLnJvdy5vYmopO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkNvbnRlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQudmFsdWUub2JqO1xuICAgICAgICB0aGlzLmVtaXREb2N1bWVudENvbnRlbnQoY29udGVudCk7XG4gICAgfVxuXG4gICAgZW1pdERvY3VtZW50Q29udGVudChjb250ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGVudFNlcnZpY2UuZ2V0Q29udGVudFByZXZpZXcoY29udGVudC5pZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZW50LmNvbnRlbnRCbG9iID0gYmxvYjtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRDbGljay5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZENvbnRlbnQoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbnRlbnRTZXJ2aWNlLmdldEZpbGVSYXdDb250ZW50KGNvbnRlbnQuaWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChibG9iOiBCbG9iKSA9PiB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZEJsb2IoYmxvYiwgY29udGVudC5uYW1lKSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRBdHRhY2htZW50c0J5UHJvY2Vzc0luc3RhbmNlSWQocHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZykge1xuICAgICAgICBpZiAocHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVsYXRlZENvbnRlbnQgPSAndHJ1ZSc7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5nZXRQcm9jZXNzUmVsYXRlZENvbnRlbnQocHJvY2Vzc0luc3RhbmNlSWQsIHsgaXNSZWxhdGVkQ29udGVudCB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5mb3JFYWNoKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjb250ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkOiBjb250ZW50LmNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEJ5OiBjb250ZW50LmNyZWF0ZWRCeS5maXJzdE5hbWUgKyAnICcgKyBjb250ZW50LmNyZWF0ZWRCeS5sYXN0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGNvbnRlbnQubWltZVR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuYXR0YWNobWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVBdHRhY2htZW50QnlJZChjb250ZW50SWQ6IG51bWJlcikge1xuICAgICAgICBpZiAoY29udGVudElkKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5kZWxldGVSZWxhdGVkQ29udGVudChjb250ZW50SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRzLmZpbHRlcigoY29udGVudCkgPT4gY29udGVudC5pZCAhPT0gY29udGVudElkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxhZGYtZGF0YXRhYmxlICBbcm93c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAocm93RGJsQ2xpY2spPVwib3BlbkNvbnRlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNob3dSb3dBY3Rpb25zTWVudSk9XCJvblNob3dSb3dBY3Rpb25zTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZXhlY3V0ZVJvd0FjdGlvbik9XCJvbkV4ZWN1dGVSb3dBY3Rpb24oJGV2ZW50KVwiPlxuXG4gICAgICAgICAgICAgICAgPGFkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImhhc0N1c3RvbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFbXB0eUxpc3RcIiBjbGFzcz1cImFkZi1jdXN0b20tZW1wdHktdGVtcGxhdGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eUxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1lbXB0eS1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFkZi1lbXB0eS1saXN0LWhlYWRlciBjbGFzcz1cImFkZi1lbXB0eS1saXN0LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURGX1BST0NFU1NfTElTVC5QUk9DRVNTLUFUVEFDSE1FTlQuRU1QVFkuSEVBREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYWRmLWVtcHR5LWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG5cbiAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwiaWNvblwiIHR5cGU9XCJpbWFnZVwiIFtzci10aXRsZV09XCInQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLlRIVU1CTkFJTCdcIiBbc29ydGFibGVdPVwiZmFsc2VcIj48L2RhdGEtY29sdW1uPlxuICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwibmFtZVwiIHR5cGU9XCJ0ZXh0XCIgdGl0bGU9XCJ7eydBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuTkFNRScgfCB0cmFuc2xhdGV9fVwiIGNsYXNzPVwiYWRmLWZ1bGwtd2lkdGggYWRmLWVsbGlwc2lzLWNlbGxcIiBbc29ydGFibGVdPVwidHJ1ZVwiPjwvZGF0YS1jb2x1bW4+XG4gICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJjcmVhdGVkXCIgdHlwZT1cImRhdGVcIiBmb3JtYXQ9XCJzaG9ydERhdGVcIiB0aXRsZT1cInt7J0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEJyB8IHRyYW5zbGF0ZX19XCI+PC9kYXRhLWNvbHVtbj5cbiAgICA8L2RhdGEtY29sdW1ucz5cblxuICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8IS0tQWRkIHlvdXIgY3VzdG9tIGxvYWRpbmcgdGVtcGxhdGUgaGVyZS0tPlxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIGNsYXNzPVwiYWRmLWF0dGFjaG1lbnQtbGlzdC1sb2FkaW5nLW1hcmdpblwiIFtjb2xvcl09XCIncHJpbWFyeSdcIiBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIj5cbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuXG48L2FkZi1kYXRhdGFibGU+XG4iXX0=
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hdHRhY2htZW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9hdHRhY2htZW50L3Byb2Nlc3MtYXR0YWNobWVudC1saXN0L3Byb2Nlc3MtYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvYXR0YWNobWVudC9wcm9jZXNzLWF0dGFjaG1lbnQtbGlzdC9wcm9jZXNzLWF0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVHLE9BQU8sRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFFTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQVU5RSxNQUFNLE9BQU8sOEJBQThCO0lBd0N2QyxZQUNZLHFCQUE0QyxFQUM1QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsTUFBYztRQUhkLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFo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QyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDLENBQ0osQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFNBQWlCO1FBQzFDLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDaEUsR0FBRyxFQUFFO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDdEYsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNKLENBQUM7U0FDTDtJQUNMLENBQUM7OzJIQXBMUSw4QkFBOEI7K0dBQTlCLDhCQUE4QixpU0FDekIsa0JBQWtCLHFFQzVDcEMseTREQW1DQSx5eEJER2MsWUFBWSxrSUFBRSxlQUFlLG9oREFBRSxlQUFlLDJGQUFFLHdCQUF3QjsyRkFLekUsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxpQkFHcEUsaUJBQWlCLENBQUMsSUFBSTs4TEFJckMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQjtnQkFLaEMsaUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFVTixlQUFlO3NCQURkLE1BQU07Z0JBUVAsT0FBTztzQkFETixNQUFNO2dCQVFQLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRGF0YVRhYmxlTW9kdWxlLCBEb3dubG9hZFNlcnZpY2UsIEVtcHR5TGlzdENvbXBvbmVudCwgVGh1bWJuYWlsU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2Zvcm0vc2VydmljZXMvcHJvY2Vzcy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXByb2Nlc3MtYXR0YWNobWVudC1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERhdGFUYWJsZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NBdHRhY2htZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZChFbXB0eUxpc3RDb21wb25lbnQpXG4gICAgZW1wdHlUZW1wbGF0ZTogRW1wdHlMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqICgqKnJlcXVpcmVkKiopIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyBpbnN0YW5jZSB0byBkaXNwbGF5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcblxuICAgIC8qKiBEaXNhYmxlL0VuYWJsZSByZWFkLW9ubHkgbW9kZSBmb3IgYXR0YWNobWVudCBsaXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgYXR0YWNobWVudCBpcyBkb3VibGUtY2xpY2tlZCBvciB0aGVcbiAgICAgKiB2aWV3IG9wdGlvbiBpcyBzZWxlY3RlZCBmcm9tIHRoZSBjb250ZXh0IG1lbnUgYnkgdGhlIHVzZXIgZnJvbVxuICAgICAqIHdpdGhpbiB0aGUgY29tcG9uZW50LiBSZXR1cm5zIGEgQmxvYiByZXByZXNlbnRpbmcgdGhlIG9iamVjdFxuICAgICAqIHRoYXQgd2FzIGNsaWNrZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgYXR0YWNobWVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBhdHRhY2htZW50IGxpc3QgaGFzIGZldGNoZWQgYWxsIHRoZSBhdHRhY2htZW50cy5cbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdHRhY2htZW50cy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBhdHRhY2htZW50IGxpc3QgaXMgbm90IGFibGUgdG8gZmV0Y2ggdGhlIGF0dGFjaG1lbnRzXG4gICAgICogKGVnLCBmb2xsb3dpbmcgYSBuZXR3b3JrIGVycm9yKS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgaGFzQ3VzdG9tVGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGF0dGFjaG1lbnRzOiBhbnlbXSA9IFtdO1xuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcHJvY2Vzc0NvbnRlbnRTZXJ2aWNlOiBQcm9jZXNzQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQXR0YWNobWVudHNCeVByb2Nlc3NJbnN0YW5jZUlkKGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5oYXNDdXN0b21UZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IFtdO1xuICAgIH1cblxuICAgIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEF0dGFjaG1lbnRzQnlQcm9jZXNzSW5zdGFuY2VJZCh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkKGNvbnRlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY29udGVudC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBjb250ZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgY3JlYXRlZDogY29udGVudC5jcmVhdGVkLFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRCeTogY29udGVudC5jcmVhdGVkQnkuZmlyc3ROYW1lICsgJyAnICsgY29udGVudC5jcmVhdGVkQnkubGFzdE5hbWUsXG4gICAgICAgICAgICAgICAgaWNvbjogdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihjb250ZW50Lm1pbWVUeXBlKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2hvd1Jvd0FjdGlvbnNNZW51KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3Qgdmlld0FjdGlvbiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5NRU5VX0FDVElPTlMuVklFV19DT05URU5UJyxcbiAgICAgICAgICAgIG5hbWU6ICd2aWV3J1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUFjdGlvbiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5NRU5VX0FDVElPTlMuUkVNT1ZFX0NPTlRFTlQnLFxuICAgICAgICAgICAgbmFtZTogJ3JlbW92ZSdcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkb3dubG9hZEFjdGlvbiA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5NRU5VX0FDVElPTlMuRE9XTkxPQURfQ09OVEVOVCcsXG4gICAgICAgICAgICBuYW1lOiAnZG93bmxvYWQnXG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnQudmFsdWUuYWN0aW9ucyA9IFt2aWV3QWN0aW9uLCBkb3dubG9hZEFjdGlvbl07XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC52YWx1ZS5hY3Rpb25zLnNwbGljZSgxLCAwLCByZW1vdmVBY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25FeGVjdXRlUm93QWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgYXJncyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBhcmdzLmFjdGlvbjtcbiAgICAgICAgaWYgKGFjdGlvbi5uYW1lID09PSAndmlldycpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdERvY3VtZW50Q29udGVudChhcmdzLnJvdy5vYmopO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5uYW1lID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVBdHRhY2htZW50QnlJZChhcmdzLnJvdy5vYmouaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5uYW1lID09PSAnZG93bmxvYWQnKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkQ29udGVudChhcmdzLnJvdy5vYmopO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkNvbnRlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQudmFsdWUub2JqO1xuICAgICAgICB0aGlzLmVtaXREb2N1bWVudENvbnRlbnQoY29udGVudCk7XG4gICAgfVxuXG4gICAgZW1pdERvY3VtZW50Q29udGVudChjb250ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGVudFNlcnZpY2UuZ2V0Q29udGVudFByZXZpZXcoY29udGVudC5pZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZW50LmNvbnRlbnRCbG9iID0gYmxvYjtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRDbGljay5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZENvbnRlbnQoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbnRlbnRTZXJ2aWNlLmdldEZpbGVSYXdDb250ZW50KGNvbnRlbnQuaWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChibG9iOiBCbG9iKSA9PiB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZEJsb2IoYmxvYiwgY29udGVudC5uYW1lKSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRBdHRhY2htZW50c0J5UHJvY2Vzc0luc3RhbmNlSWQocHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZykge1xuICAgICAgICBpZiAocHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVsYXRlZENvbnRlbnQgPSAndHJ1ZSc7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5nZXRQcm9jZXNzUmVsYXRlZENvbnRlbnQocHJvY2Vzc0luc3RhbmNlSWQsIHsgaXNSZWxhdGVkQ29udGVudCB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5mb3JFYWNoKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjb250ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkOiBjb250ZW50LmNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEJ5OiBjb250ZW50LmNyZWF0ZWRCeS5maXJzdE5hbWUgKyAnICcgKyBjb250ZW50LmNyZWF0ZWRCeS5sYXN0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGNvbnRlbnQubWltZVR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuYXR0YWNobWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVBdHRhY2htZW50QnlJZChjb250ZW50SWQ6IG51bWJlcikge1xuICAgICAgICBpZiAoY29udGVudElkKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5kZWxldGVSZWxhdGVkQ29udGVudChjb250ZW50SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRzLmZpbHRlcigoY29udGVudCkgPT4gY29udGVudC5pZCAhPT0gY29udGVudElkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxhZGYtZGF0YXRhYmxlICBbcm93c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAocm93RGJsQ2xpY2spPVwib3BlbkNvbnRlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNob3dSb3dBY3Rpb25zTWVudSk9XCJvblNob3dSb3dBY3Rpb25zTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZXhlY3V0ZVJvd0FjdGlvbik9XCJvbkV4ZWN1dGVSb3dBY3Rpb24oJGV2ZW50KVwiPlxuXG4gICAgICAgICAgICAgICAgPGFkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImhhc0N1c3RvbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFbXB0eUxpc3RcIiBjbGFzcz1cImFkZi1jdXN0b20tZW1wdHktdGVtcGxhdGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eUxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1lbXB0eS1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFkZi1lbXB0eS1saXN0LWhlYWRlciBjbGFzcz1cImFkZi1lbXB0eS1saXN0LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURGX1BST0NFU1NfTElTVC5QUk9DRVNTLUFUVEFDSE1FTlQuRU1QVFkuSEVBREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYWRmLWVtcHR5LWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG5cbiAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwiaWNvblwiIHR5cGU9XCJpbWFnZVwiIFtzci10aXRsZV09XCInQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLlRIVU1CTkFJTCdcIiBbc29ydGFibGVdPVwiZmFsc2VcIj48L2RhdGEtY29sdW1uPlxuICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwibmFtZVwiIHR5cGU9XCJ0ZXh0XCIgdGl0bGU9XCJ7eydBREZfUFJPQ0VTU19MSVNULlBST1BFUlRJRVMuTkFNRScgfCB0cmFuc2xhdGV9fVwiIGNsYXNzPVwiYWRmLWZ1bGwtd2lkdGggYWRmLWVsbGlwc2lzLWNlbGxcIiBbc29ydGFibGVdPVwidHJ1ZVwiPjwvZGF0YS1jb2x1bW4+XG4gICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJjcmVhdGVkXCIgdHlwZT1cImRhdGVcIiBmb3JtYXQ9XCJzaG9ydERhdGVcIiB0aXRsZT1cInt7J0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEJyB8IHRyYW5zbGF0ZX19XCI+PC9kYXRhLWNvbHVtbj5cbiAgICA8L2RhdGEtY29sdW1ucz5cblxuICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8IS0tQWRkIHlvdXIgY3VzdG9tIGxvYWRpbmcgdGVtcGxhdGUgaGVyZS0tPlxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIGNsYXNzPVwiYWRmLWF0dGFjaG1lbnQtbGlzdC1sb2FkaW5nLW1hcmdpblwiIFtjb2xvcl09XCIncHJpbWFyeSdcIiBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIj5cbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuXG48L2FkZi1kYXRhdGFibGU+XG4iXX0=
@@ -164,7 +164,7 @@ export class TaskAttachmentListComponent {
164
164
  }
165
165
  }
166
166
  TaskAttachmentListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: TaskAttachmentListComponent, deps: [{ token: i1.ProcessContentService }, { token: i2.DownloadService }, { token: i2.ThumbnailService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
167
- TaskAttachmentListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: TaskAttachmentListComponent, isStandalone: true, selector: "adf-task-attachment-list", inputs: { taskId: "taskId", disabled: "disabled" }, outputs: { attachmentClick: "attachmentClick", success: "success", error: "error" }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EmptyListComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\"></ng-content>\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_TASK_LIST.ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_TASK_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\"></data-column>\n <data-column key=\"name\" type=\"text\" title=\"ADF_TASK_LIST.PROPERTIES.NAME\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"ADF_TASK_LIST.PROPERTIES.CREATED\"></data-column>\n </data-columns>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-template>\n </adf-loading-content-template>\n</adf-datatable>\n", styles: [".adf-attachment-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px}.adf-empty-list-drag_drop{min-height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;margin-top:40px;word-break:break-all;white-space:pre-line}@media (max-width: 599.9px){.adf-empty-list-drag_drop{font-size:40px}}.adf-empty-list__any-files-here-to-add{min-height:24px;opacity:.54;font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-list__empty_doc_lib{width:565px;max-width:100%;height:161px;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-list__empty_doc_lib{width:250px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "component", type: i2.EmptyListComponent, selector: "adf-empty-list" }, { kind: "directive", type: i2.EmptyListHeaderDirective, selector: "[adf-empty-list-header]" }, { kind: "directive", type: i2.NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: i2.LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "component", type: i2.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: i2.DataColumnListComponent, selector: "data-columns" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
167
+ TaskAttachmentListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: TaskAttachmentListComponent, isStandalone: true, selector: "adf-task-attachment-list", inputs: { taskId: "taskId", disabled: "disabled" }, outputs: { attachmentClick: "attachmentClick", success: "success", error: "error" }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EmptyListComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\"></ng-content>\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_TASK_LIST.ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_TASK_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\"></data-column>\n <data-column key=\"name\" type=\"text\" title=\"ADF_TASK_LIST.PROPERTIES.NAME\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"ADF_TASK_LIST.PROPERTIES.CREATED\"></data-column>\n </data-columns>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-template>\n </adf-loading-content-template>\n</adf-datatable>\n", styles: [".adf-attachment-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px}.adf-empty-list-drag_drop{min-height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;margin-top:40px;word-break:break-all;white-space:pre-line}@media (max-width: 599.9px){.adf-empty-list-drag_drop{font-size:40px}}.adf-empty-list__any-files-here-to-add{min-height:24px;opacity:.54;font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-list__empty_doc_lib{width:565px;max-width:100%;height:161px;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-list__empty_doc_lib{width:250px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "component", type: i2.EmptyListComponent, selector: "adf-empty-list" }, { kind: "directive", type: i2.EmptyListHeaderDirective, selector: "[adf-empty-list-header]" }, { kind: "directive", type: i2.NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: i2.LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "component", type: i2.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: i2.DataColumnListComponent, selector: "data-columns" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
168
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: TaskAttachmentListComponent, decorators: [{
169
169
  type: Component,
170
170
  args: [{ selector: 'adf-task-attachment-list', standalone: true, imports: [CommonModule, DataTableModule, TranslateModule, MatProgressSpinnerModule], encapsulation: ViewEncapsulation.None, template: "<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\"></ng-content>\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_TASK_LIST.ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_TASK_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\"></data-column>\n <data-column key=\"name\" type=\"text\" title=\"ADF_TASK_LIST.PROPERTIES.NAME\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"ADF_TASK_LIST.PROPERTIES.CREATED\"></data-column>\n </data-columns>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-template>\n </adf-loading-content-template>\n</adf-datatable>\n", styles: [".adf-attachment-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-empty-list-header{height:32px;opacity:.26;font-size:var(--theme-headline-font-size);line-height:1.33;letter-spacing:-1px}.adf-empty-list-drag_drop{min-height:56px;opacity:.54;font-size:56px;line-height:1;letter-spacing:-2px;margin-top:40px;word-break:break-all;white-space:pre-line}@media (max-width: 599.9px){.adf-empty-list-drag_drop{font-size:40px}}.adf-empty-list__any-files-here-to-add{min-height:24px;opacity:.54;font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;margin-top:17px;word-break:break-all;white-space:pre-line}.adf-empty-list__empty_doc_lib{width:565px;max-width:100%;height:161px;object-fit:contain;margin-top:17px}@media (max-width: 599.9px){.adf-empty-list__empty_doc_lib{width:250px}}\n"] }]
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
182
182
  }], error: [{
183
183
  type: Output
184
184
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1hdHRhY2htZW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9hdHRhY2htZW50L3Rhc2stYXR0YWNobWVudC1saXN0L3Rhc2stYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvYXR0YWNobWVudC90YXNrLWF0dGFjaG1lbnQtbGlzdC90YXNrLWF0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVHLE9BQU8sRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFFTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQVU5RSxNQUFNLE9BQU8sMkJBQTJCO0lBb0NwQyxZQUNZLHNCQUE2QyxFQUM3QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsTUFBYztRQUhkLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0Msb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7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qSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVGh1bWJuYWlsU2VydmljZSwgRW1wdHlMaXN0Q29tcG9uZW50LCBEb3dubG9hZFNlcnZpY2UsIERhdGFUYWJsZU1vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2Zvcm0vc2VydmljZXMvcHJvY2Vzcy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXRhc2stYXR0YWNobWVudC1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERhdGFUYWJsZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxuICAgIHN0eWxlVXJsczogWycuL3Rhc2stYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tBdHRhY2htZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZChFbXB0eUxpc3RDb21wb25lbnQpXG4gICAgZW1wdHlUZW1wbGF0ZTogRW1wdHlMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqICgqKnJlcXVpcmVkKiopIFRoZSBJRCBvZiB0aGUgdGFzayB0byBkaXNwbGF5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFza0lkOiBzdHJpbmc7XG5cbiAgICAvKiogRGlzYWJsZS9FbmFibGUgcmVhZCBvbmx5IG1vZGUgZm9yIGF0dGFjaG1lbnQgbGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGF0dGFjaG1lbnQgaXMgZG91YmxlLWNsaWNrZWQgb3IgYSB2aWV3XG4gICAgICogb3B0aW9uIGlzIHNlbGVjdGVkIGZyb20gdGhlIGNvbnRleHQgbWVudSBieSB0aGUgdXNlciBmcm9tIHdpdGhpbiB0aGUgY29tcG9uZW50LlxuICAgICAqIFJldHVybnMgYSBCbG9iIHJlcHJlc2VudGluZyB0aGUgY2xpY2tlZCBvYmplY3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgYXR0YWNobWVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBhdHRhY2htZW50IGxpc3QgaGFzIGZldGNoZWQgYWxsIHRoZSBhdHRhY2htZW50cy5cbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdHRhY2htZW50cy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgZmV0Y2hpbmcgdGhlIGF0dGFjaG1lbnRzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBoYXNDdXN0b21UZW1wbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYXR0YWNobWVudHM6IGFueVtdID0gW107XG4gICAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhY3Rpdml0aUNvbnRlbnRTZXJ2aWNlOiBQcm9jZXNzQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Rhc2tJZCddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEF0dGFjaG1lbnRzQnlUYXNrSWQoY2hhbmdlc1sndGFza0lkJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5oYXNDdXN0b21UZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IFtdO1xuICAgIH1cblxuICAgIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEF0dGFjaG1lbnRzQnlUYXNrSWQodGhpcy50YXNrSWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGQoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBjb250ZW50LmlkLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBjb250ZW50LmNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgY3JlYXRlZEJ5OiBjb250ZW50LmNyZWF0ZWRCeS5maXJzdE5hbWUgKyAnICcgKyBjb250ZW50LmNyZWF0ZWRCeS5sYXN0TmFtZSxcbiAgICAgICAgICAgICAgICBpY29uOiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGNvbnRlbnQubWltZVR5cGUpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlQXR0YWNobWVudEJ5SWQoY29udGVudElkOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGNvbnRlbnRJZCkge1xuICAgICAgICAgICAgdGhpcy5hY3Rpdml0aUNvbnRlbnRTZXJ2aWNlLmRlbGV0ZVJlbGF0ZWRDb250ZW50KGNvbnRlbnRJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IHRoaXMuYXR0YWNobWVudHMuZmlsdGVyKChjb250ZW50KSA9PiBjb250ZW50LmlkICE9PSBjb250ZW50SWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaG93Um93QWN0aW9uc01lbnUoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCB2aWV3QWN0aW9uID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdBREZfVEFTS19MSVNULk1FTlVfQUNUSU9OUy5WSUVXX0NPTlRFTlQnLFxuICAgICAgICAgICAgbmFtZTogJ3ZpZXcnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcmVtb3ZlQWN0aW9uID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdBREZfVEFTS19MSVNULk1FTlVfQUNUSU9OUy5SRU1PVkVfQ09OVEVOVCcsXG4gICAgICAgICAgICBuYW1lOiAncmVtb3ZlJ1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRvd25sb2FkQWN0aW9uID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdBREZfVEFTS19MSVNULk1FTlVfQUNUSU9OUy5ET1dOTE9BRF9DT05URU5UJyxcbiAgICAgICAgICAgIG5hbWU6ICdkb3dubG9hZCdcbiAgICAgICAgfTtcblxuICAgICAgICBldmVudC52YWx1ZS5hY3Rpb25zID0gW3ZpZXdBY3Rpb24sIGRvd25sb2FkQWN0aW9uXTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnZhbHVlLmFjdGlvbnMuc3BsaWNlKDEsIDAsIHJlbW92ZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkV4ZWN1dGVSb3dBY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGFyZ3MuYWN0aW9uO1xuICAgICAgICBpZiAoYWN0aW9uLm5hbWUgPT09ICd2aWV3Jykge1xuICAgICAgICAgICAgdGhpcy5lbWl0RG9jdW1lbnRDb250ZW50KGFyZ3Mucm93Lm9iaik7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLm5hbWUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUF0dGFjaG1lbnRCeUlkKGFyZ3Mucm93Lm9iai5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLm5hbWUgPT09ICdkb3dubG9hZCcpIHtcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRDb250ZW50KGFyZ3Mucm93Lm9iaik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuQ29udGVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudC52YWx1ZS5vYmo7XG4gICAgICAgIHRoaXMuZW1pdERvY3VtZW50Q29udGVudChjb250ZW50KTtcbiAgICB9XG5cbiAgICBlbWl0RG9jdW1lbnRDb250ZW50KGNvbnRlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmFjdGl2aXRpQ29udGVudFNlcnZpY2UuZ2V0Q29udGVudFByZXZpZXcoY29udGVudC5pZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZW50LmNvbnRlbnRCbG9iID0gYmxvYjtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRDbGljay5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZENvbnRlbnQoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZpdGlDb250ZW50U2VydmljZS5nZXRGaWxlUmF3Q29udGVudChjb250ZW50LmlkKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoYmxvYjogQmxvYikgPT4gdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRCbG9iKGJsb2IsIGNvbnRlbnQubmFtZSksXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkQXR0YWNobWVudHNCeVRhc2tJZCh0YXNrSWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICBjb25zdCBpc1JlbGF0ZWRDb250ZW50ID0gJ3RydWUnO1xuICAgICAgICAgICAgdGhpcy5hY3Rpdml0aUNvbnRlbnRTZXJ2aWNlLmdldFRhc2tSZWxhdGVkQ29udGVudCh0YXNrSWQsIHsgaXNSZWxhdGVkQ29udGVudCB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRhY2hMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmZvckVhY2goKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaExpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ6IGNvbnRlbnQuY3JlYXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQnk6IGNvbnRlbnQuY3JlYXRlZEJ5LmZpcnN0TmFtZSArICcgJyArIGNvbnRlbnQuY3JlYXRlZEJ5Lmxhc3ROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24oY29udGVudC5taW1lVHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IGF0dGFjaExpc3Q7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuYXR0YWNobWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGFkZi1kYXRhdGFibGUgW3Jvd3NdPVwiYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgKHJvd0RibENsaWNrKT1cIm9wZW5Db250ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgKHNob3dSb3dBY3Rpb25zTWVudSk9XCJvblNob3dSb3dBY3Rpb25zTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIChleGVjdXRlUm93QWN0aW9uKT1cIm9uRXhlY3V0ZVJvd0FjdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICA8YWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImhhc0N1c3RvbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFbXB0eUxpc3RcIiBjbGFzcz1cImFkZi1jdXN0b20tZW1wdHktdGVtcGxhdGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5TGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFkZi1lbXB0eS1saXN0LWhlYWRlciBjbGFzcz1cImFkZi1lbXB0eS1saXN0LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREZfVEFTS19MSVNULkFUVEFDSE1FTlQuRU1QVFkuSEVBREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FkZi1lbXB0eS1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJpY29uXCIgdHlwZT1cImltYWdlXCIgW3NyLXRpdGxlXT1cIidBREZfVEFTS19MSVNULlBST1BFUlRJRVMuVEhVTUJOQUlMJ1wiIFtzb3J0YWJsZV09XCJmYWxzZVwiPjwvZGF0YS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uIGtleT1cIm5hbWVcIiB0eXBlPVwidGV4dFwiIHRpdGxlPVwiQURGX1RBU0tfTElTVC5QUk9QRVJUSUVTLk5BTUVcIiBjbGFzcz1cImFkZi1mdWxsLXdpZHRoIGFkZi1lbGxpcHNpcy1jZWxsXCIgW3NvcnRhYmxlXT1cInRydWVcIj48L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJjcmVhdGVkXCIgdHlwZT1cImRhdGVcIiBmb3JtYXQ9XCJzaG9ydERhdGVcIiB0aXRsZT1cIkFERl9UQVNLX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEXCI+PC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgPGFkZi1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwhLS1BZGQgeW91ciBjdXN0b20gbG9hZGluZyB0ZW1wbGF0ZSBoZXJlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjbGFzcz1cImFkZi1hdHRhY2htZW50LWxpc3QtbG9hZGluZy1tYXJnaW5cIiBbY29sb3JdPVwiJ3ByaW1hcnknXCIgW21vZGVdPVwiJ2luZGV0ZXJtaW5hdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbjwvYWRmLWRhdGF0YWJsZT5cbiJdfQ==
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1hdHRhY2htZW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9hdHRhY2htZW50L3Rhc2stYXR0YWNobWVudC1saXN0L3Rhc2stYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvYXR0YWNobWVudC90YXNrLWF0dGFjaG1lbnQtbGlzdC90YXNrLWF0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVHLE9BQU8sRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFFTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQVU5RSxNQUFNLE9BQU8sMkJBQTJCO0lBb0NwQyxZQUNZLHNCQUE2QyxFQUM3QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsTUFBYztRQUhkLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0Msb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWhDMUIseURBQXlEO1FBRXpELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUI7Ozs7V0FJRztRQUVILG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVyQzs7O1dBR0c7UUFFSCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QixtRUFBbUU7UUFFbkUsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFaEMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFPeEIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLEVBQUU7WUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxHQUFHLENBQUMsT0FBWTtRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDbEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2dCQUN4QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFDekUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUNoRSxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFpQjtRQUNsQyxJQUFJLFNBQVMsRUFBRTtZQUNYLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQ2pFLEdBQUcsRUFBRTtnQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FDSixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBVTtRQUMzQixNQUFNLFVBQVUsR0FBRztZQUNmLEtBQUssRUFBRSx5Q0FBeUM7WUFDaEQsSUFBSSxFQUFFLE1BQU07U0FDZixDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUc7WUFDakIsS0FBSyxFQUFFLDJDQUEyQztZQUNsRCxJQUFJLEVBQUUsUUFBUTtTQUNqQixDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUc7WUFDbkIsS0FBSyxFQUFFLDZDQUE2QztZQUNwRCxJQUFJLEVBQUUsVUFBVTtTQUNuQixDQUFDO1FBRUYsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUN6QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQzthQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzlDO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDbEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFZO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUMvRCxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ1gsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBWTtRQUN4QixJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDL0QsQ0FBQyxJQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3JFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxNQUFjO1FBQzFDLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQ3JGLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ0osTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDO3dCQUNaLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTt3QkFDZCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7d0JBQ2xCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzt3QkFDeEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVE7d0JBQ3pFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7cUJBQ2hFLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxDQUNKLENBQUM7U0FDTDtJQUNMLENBQUM7O3dIQWxMUSwyQkFBMkI7NEdBQTNCLDJCQUEyQix3UUFDdEIsa0JBQWtCLHFFQzVDcEMsaTNEQWdDQSw2NEJETWMsWUFBWSxrSUFBRSxlQUFlLG9oREFBRSxlQUFlLDJGQUFFLHdCQUF3QjsyRkFLekUsMkJBQTJCO2tCQVJ2QyxTQUFTOytCQUNJLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxpQkFHcEUsaUJBQWlCLENBQUMsSUFBSTs4TEFJckMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQjtnQkFLaEMsTUFBTTtzQkFETCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFTTixlQUFlO3NCQURkLE1BQU07Z0JBUVAsT0FBTztzQkFETixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVGh1bWJuYWlsU2VydmljZSwgRW1wdHlMaXN0Q29tcG9uZW50LCBEb3dubG9hZFNlcnZpY2UsIERhdGFUYWJsZU1vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2Zvcm0vc2VydmljZXMvcHJvY2Vzcy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXRhc2stYXR0YWNobWVudC1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERhdGFUYWJsZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxuICAgIHN0eWxlVXJsczogWycuL3Rhc2stYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tBdHRhY2htZW50TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZChFbXB0eUxpc3RDb21wb25lbnQpXG4gICAgZW1wdHlUZW1wbGF0ZTogRW1wdHlMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqICgqKnJlcXVpcmVkKiopIFRoZSBJRCBvZiB0aGUgdGFzayB0byBkaXNwbGF5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFza0lkOiBzdHJpbmc7XG5cbiAgICAvKiogRGlzYWJsZS9FbmFibGUgcmVhZCBvbmx5IG1vZGUgZm9yIGF0dGFjaG1lbnQgbGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGF0dGFjaG1lbnQgaXMgZG91YmxlLWNsaWNrZWQgb3IgYSB2aWV3XG4gICAgICogb3B0aW9uIGlzIHNlbGVjdGVkIGZyb20gdGhlIGNvbnRleHQgbWVudSBieSB0aGUgdXNlciBmcm9tIHdpdGhpbiB0aGUgY29tcG9uZW50LlxuICAgICAqIFJldHVybnMgYSBCbG9iIHJlcHJlc2VudGluZyB0aGUgY2xpY2tlZCBvYmplY3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgYXR0YWNobWVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBhdHRhY2htZW50IGxpc3QgaGFzIGZldGNoZWQgYWxsIHRoZSBhdHRhY2htZW50cy5cbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdHRhY2htZW50cy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgZmV0Y2hpbmcgdGhlIGF0dGFjaG1lbnRzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBoYXNDdXN0b21UZW1wbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYXR0YWNobWVudHM6IGFueVtdID0gW107XG4gICAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhY3Rpdml0aUNvbnRlbnRTZXJ2aWNlOiBQcm9jZXNzQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Rhc2tJZCddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEF0dGFjaG1lbnRzQnlUYXNrSWQoY2hhbmdlc1sndGFza0lkJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5oYXNDdXN0b21UZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IFtdO1xuICAgIH1cblxuICAgIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEF0dGFjaG1lbnRzQnlUYXNrSWQodGhpcy50YXNrSWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGQoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBjb250ZW50LmlkLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBjb250ZW50LmNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgY3JlYXRlZEJ5OiBjb250ZW50LmNyZWF0ZWRCeS5maXJzdE5hbWUgKyAnICcgKyBjb250ZW50LmNyZWF0ZWRCeS5sYXN0TmFtZSxcbiAgICAgICAgICAgICAgICBpY29uOiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGNvbnRlbnQubWltZVR5cGUpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlQXR0YWNobWVudEJ5SWQoY29udGVudElkOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGNvbnRlbnRJZCkge1xuICAgICAgICAgICAgdGhpcy5hY3Rpdml0aUNvbnRlbnRTZXJ2aWNlLmRlbGV0ZVJlbGF0ZWRDb250ZW50KGNvbnRlbnRJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IHRoaXMuYXR0YWNobWVudHMuZmlsdGVyKChjb250ZW50KSA9PiBjb250ZW50LmlkICE9PSBjb250ZW50SWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaG93Um93QWN0aW9uc01lbnUoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCB2aWV3QWN0aW9uID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdBREZfVEFTS19MSVNULk1FTlVfQUNUSU9OUy5WSUVXX0NPTlRFTlQnLFxuICAgICAgICAgICAgbmFtZTogJ3ZpZXcnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcmVtb3ZlQWN0aW9uID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdBREZfVEFTS19MSVNULk1FTlVfQUNUSU9OUy5SRU1PVkVfQ09OVEVOVCcsXG4gICAgICAgICAgICBuYW1lOiAncmVtb3ZlJ1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRvd25sb2FkQWN0aW9uID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdBREZfVEFTS19MSVNULk1FTlVfQUNUSU9OUy5ET1dOTE9BRF9DT05URU5UJyxcbiAgICAgICAgICAgIG5hbWU6ICdkb3dubG9hZCdcbiAgICAgICAgfTtcblxuICAgICAgICBldmVudC52YWx1ZS5hY3Rpb25zID0gW3ZpZXdBY3Rpb24sIGRvd25sb2FkQWN0aW9uXTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnZhbHVlLmFjdGlvbnMuc3BsaWNlKDEsIDAsIHJlbW92ZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkV4ZWN1dGVSb3dBY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBhcmdzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGFyZ3MuYWN0aW9uO1xuICAgICAgICBpZiAoYWN0aW9uLm5hbWUgPT09ICd2aWV3Jykge1xuICAgICAgICAgICAgdGhpcy5lbWl0RG9jdW1lbnRDb250ZW50KGFyZ3Mucm93Lm9iaik7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLm5hbWUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUF0dGFjaG1lbnRCeUlkKGFyZ3Mucm93Lm9iai5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLm5hbWUgPT09ICdkb3dubG9hZCcpIHtcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRDb250ZW50KGFyZ3Mucm93Lm9iaik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuQ29udGVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudC52YWx1ZS5vYmo7XG4gICAgICAgIHRoaXMuZW1pdERvY3VtZW50Q29udGVudChjb250ZW50KTtcbiAgICB9XG5cbiAgICBlbWl0RG9jdW1lbnRDb250ZW50KGNvbnRlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmFjdGl2aXRpQ29udGVudFNlcnZpY2UuZ2V0Q29udGVudFByZXZpZXcoY29udGVudC5pZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZW50LmNvbnRlbnRCbG9iID0gYmxvYjtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRDbGljay5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZENvbnRlbnQoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZpdGlDb250ZW50U2VydmljZS5nZXRGaWxlUmF3Q29udGVudChjb250ZW50LmlkKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoYmxvYjogQmxvYikgPT4gdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRCbG9iKGJsb2IsIGNvbnRlbnQubmFtZSksXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkQXR0YWNobWVudHNCeVRhc2tJZCh0YXNrSWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICBjb25zdCBpc1JlbGF0ZWRDb250ZW50ID0gJ3RydWUnO1xuICAgICAgICAgICAgdGhpcy5hY3Rpdml0aUNvbnRlbnRTZXJ2aWNlLmdldFRhc2tSZWxhdGVkQ29udGVudCh0YXNrSWQsIHsgaXNSZWxhdGVkQ29udGVudCB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRhY2hMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmZvckVhY2goKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaExpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ6IGNvbnRlbnQuY3JlYXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQnk6IGNvbnRlbnQuY3JlYXRlZEJ5LmZpcnN0TmFtZSArICcgJyArIGNvbnRlbnQuY3JlYXRlZEJ5Lmxhc3ROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24oY29udGVudC5taW1lVHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cyA9IGF0dGFjaExpc3Q7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuYXR0YWNobWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGFkZi1kYXRhdGFibGUgW3Jvd3NdPVwiYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgKHJvd0RibENsaWNrKT1cIm9wZW5Db250ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgKHNob3dSb3dBY3Rpb25zTWVudSk9XCJvblNob3dSb3dBY3Rpb25zTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIChleGVjdXRlUm93QWN0aW9uKT1cIm9uRXhlY3V0ZVJvd0FjdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICA8YWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImhhc0N1c3RvbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFbXB0eUxpc3RcIiBjbGFzcz1cImFkZi1jdXN0b20tZW1wdHktdGVtcGxhdGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5TGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFkZi1lbXB0eS1saXN0LWhlYWRlciBjbGFzcz1cImFkZi1lbXB0eS1saXN0LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREZfVEFTS19MSVNULkFUVEFDSE1FTlQuRU1QVFkuSEVBREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FkZi1lbXB0eS1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJpY29uXCIgdHlwZT1cImltYWdlXCIgW3NyLXRpdGxlXT1cIidBREZfVEFTS19MSVNULlBST1BFUlRJRVMuVEhVTUJOQUlMJ1wiIFtzb3J0YWJsZV09XCJmYWxzZVwiPjwvZGF0YS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uIGtleT1cIm5hbWVcIiB0eXBlPVwidGV4dFwiIHRpdGxlPVwiQURGX1RBU0tfTElTVC5QUk9QRVJUSUVTLk5BTUVcIiBjbGFzcz1cImFkZi1mdWxsLXdpZHRoIGFkZi1lbGxpcHNpcy1jZWxsXCIgW3NvcnRhYmxlXT1cInRydWVcIj48L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJjcmVhdGVkXCIgdHlwZT1cImRhdGVcIiBmb3JtYXQ9XCJzaG9ydERhdGVcIiB0aXRsZT1cIkFERl9UQVNLX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEXCI+PC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgPGFkZi1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwhLS1BZGQgeW91ciBjdXN0b20gbG9hZGluZyB0ZW1wbGF0ZSBoZXJlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjbGFzcz1cImFkZi1hdHRhY2htZW50LWxpc3QtbG9hZGluZy1tYXJnaW5cIiBbY29sb3JdPVwiJ3ByaW1hcnknXCIgW21vZGVdPVwiJ2luZGV0ZXJtaW5hdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbjwvYWRmLWRhdGF0YWJsZT5cbiJdfQ==
@@ -41,7 +41,7 @@ export class FormListComponent {
41
41
  }
42
42
  }
43
43
  FormListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormListComponent, deps: [{ token: i1.ModelService }], target: i0.ɵɵFactoryTarget.Component });
44
- FormListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FormListComponent, isStandalone: true, selector: "adf-form-list", inputs: { forms: "forms" }, usesOnChanges: true, ngImport: i0, template: "<adf-datatable *ngIf=\"!isEmpty()\"\n [rows]=\"forms\">\n <data-columns>\n <data-column key=\"name\" type=\"text\" title=\"Name\" class=\"adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"lastUpdatedByFullName\" type=\"text\" title=\"User\" class=\"adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"lastUpdated\" type=\"date\" format=\"shortDate\" title=\"Date\"></data-column>\n </data-columns>\n</adf-datatable>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i3.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "component", type: i3.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: i3.DataColumnListComponent, selector: "data-columns" }], encapsulation: i0.ViewEncapsulation.None });
44
+ FormListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FormListComponent, isStandalone: true, selector: "adf-form-list", inputs: { forms: "forms" }, usesOnChanges: true, ngImport: i0, template: "<adf-datatable *ngIf=\"!isEmpty()\"\n [rows]=\"forms\">\n <data-columns>\n <data-column key=\"name\" type=\"text\" title=\"Name\" class=\"adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"lastUpdatedByFullName\" type=\"text\" title=\"User\" class=\"adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"lastUpdated\" type=\"date\" format=\"shortDate\" title=\"Date\"></data-column>\n </data-columns>\n</adf-datatable>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i3.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "component", type: i3.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: i3.DataColumnListComponent, selector: "data-columns" }], encapsulation: i0.ViewEncapsulation.None });
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormListComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{ selector: 'adf-form-list', standalone: true, imports: [CommonModule, DataTableModule], encapsulation: ViewEncapsulation.None, template: "<adf-datatable *ngIf=\"!isEmpty()\"\n [rows]=\"forms\">\n <data-columns>\n <data-column key=\"name\" type=\"text\" title=\"Name\" class=\"adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"lastUpdatedByFullName\" type=\"text\" title=\"User\" class=\"adf-ellipsis-cell\" [sortable]=\"true\"></data-column>\n <data-column key=\"lastUpdated\" type=\"date\" format=\"shortDate\" title=\"Date\"></data-column>\n </data-columns>\n</adf-datatable>\n" }]
@@ -53,7 +53,7 @@ export class PeopleListComponent {
53
53
  }
54
54
  }
55
55
  PeopleListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: PeopleListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- PeopleListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: PeopleListComponent, isStandalone: true, selector: "adf-people-list", inputs: { users: "users", actions: "actions" }, outputs: { clickRow: "clickRow", clickAction: "clickAction" }, queries: [{ propertyName: "columnList", first: true, predicate: DataColumnListComponent, descendants: true }], viewQueries: [{ propertyName: "peopleDataTable", first: true, predicate: ["dataTable"], descendants: true, static: true }], ngImport: i0, template: "<adf-datatable\n #dataTable\n class=\"adf-task-people-list\"\n [rows]=\"users\"\n [actions]=\"hasActions()\"\n [showHeader]=\"showHeader\"\n (rowClick)=\"selectUser($event)\"\n (rowDblClick)=\"selectUser($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n</adf-datatable>\n", styles: [".adf-task-people-list .adf-datatable-list{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i1.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }] });
56
+ PeopleListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: PeopleListComponent, isStandalone: true, selector: "adf-people-list", inputs: { users: "users", actions: "actions" }, outputs: { clickRow: "clickRow", clickAction: "clickAction" }, queries: [{ propertyName: "columnList", first: true, predicate: DataColumnListComponent, descendants: true }], viewQueries: [{ propertyName: "peopleDataTable", first: true, predicate: ["dataTable"], descendants: true, static: true }], ngImport: i0, template: "<adf-datatable\n #dataTable\n class=\"adf-task-people-list\"\n [rows]=\"users\"\n [actions]=\"hasActions()\"\n [showHeader]=\"showHeader\"\n (rowClick)=\"selectUser($event)\"\n (rowDblClick)=\"selectUser($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n</adf-datatable>\n", styles: [".adf-task-people-list .adf-datatable-list{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i1.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }] });
57
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: PeopleListComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'adf-people-list', standalone: true, imports: [CommonModule, DataTableModule], template: "<adf-datatable\n #dataTable\n class=\"adf-task-people-list\"\n [rows]=\"users\"\n [actions]=\"hasActions()\"\n [showHeader]=\"showHeader\"\n (rowClick)=\"selectUser($event)\"\n (rowDblClick)=\"selectUser($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n</adf-datatable>\n", styles: [".adf-task-people-list .adf-datatable-list{width:100%}\n"] }]
@@ -259,7 +259,7 @@ export class ProcessInstanceListComponent extends DataTableSchema {
259
259
  }
260
260
  }
261
261
  ProcessInstanceListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ProcessInstanceListComponent, deps: [{ token: i1.ProcessService }, { token: i2.UserPreferencesService }, { token: i2.AppConfigService }], target: i0.ɵɵFactoryTarget.Component });
262
- ProcessInstanceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ProcessInstanceListComponent, isStandalone: true, selector: "adf-process-instance-list", inputs: { appId: "appId", processDefinitionId: "processDefinitionId", processInstanceId: "processInstanceId", state: "state", sort: "sort", page: "page", size: "size", data: "data", multiselect: "multiselect", selectionMode: "selectionMode", selectFirstRow: "selectFirstRow", stickyHeader: "stickyHeader", showContextMenu: "showContextMenu", isResizingEnabled: "isResizingEnabled", blurOnResize: "blurOnResize", resolverFn: "resolverFn" }, outputs: { showRowContextMenu: "showRowContextMenu", rowClick: "rowClick", success: "success", error: "error" }, queries: [{ propertyName: "customEmptyContent", first: true, predicate: CustomEmptyContentTemplateDirective, descendants: true }, { propertyName: "customLoadingContent", first: true, predicate: CustomLoadingContentTemplateDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\">\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\">\n </mat-progress-spinner>\n <ng-content select=\"adf-custom-loading-content-template\"></ng-content>\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\">\n </adf-empty-content>\n <ng-content select=\"adf-custom-empty-content-template\"></ng-content>\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n", styles: [".adf-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.no-content-message{font-size:var(--theme-subheading-2-font-size);font-weight:700;text-align:center;opacity:.54;color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "directive", type: i2.NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: i2.LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
262
+ ProcessInstanceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ProcessInstanceListComponent, isStandalone: true, selector: "adf-process-instance-list", inputs: { appId: "appId", processDefinitionId: "processDefinitionId", processInstanceId: "processInstanceId", state: "state", sort: "sort", page: "page", size: "size", data: "data", multiselect: "multiselect", selectionMode: "selectionMode", selectFirstRow: "selectFirstRow", stickyHeader: "stickyHeader", showContextMenu: "showContextMenu", isResizingEnabled: "isResizingEnabled", blurOnResize: "blurOnResize", resolverFn: "resolverFn" }, outputs: { showRowContextMenu: "showRowContextMenu", rowClick: "rowClick", success: "success", error: "error" }, queries: [{ propertyName: "customEmptyContent", first: true, predicate: CustomEmptyContentTemplateDirective, descendants: true }, { propertyName: "customLoadingContent", first: true, predicate: CustomLoadingContentTemplateDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\">\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\">\n </mat-progress-spinner>\n <ng-content select=\"adf-custom-loading-content-template\"></ng-content>\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\">\n </adf-empty-content>\n <ng-content select=\"adf-custom-empty-content-template\"></ng-content>\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n", styles: [".adf-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.no-content-message{font-size:var(--theme-subheading-2-font-size);font-weight:700;text-align:center;opacity:.54;color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged"] }, { kind: "directive", type: i2.NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: i2.LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
263
263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ProcessInstanceListComponent, decorators: [{
264
264
  type: Component,
265
265
  args: [{ selector: 'adf-process-instance-list', standalone: true, imports: [CommonModule, DataTableModule, MatProgressSpinnerModule, EmptyContentComponent, TranslateModule], template: "<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\">\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\">\n </mat-progress-spinner>\n <ng-content select=\"adf-custom-loading-content-template\"></ng-content>\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\">\n </adf-empty-content>\n <ng-content select=\"adf-custom-empty-content-template\"></ng-content>\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n", styles: [".adf-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.no-content-message{font-size:var(--theme-subheading-2-font-size);font-weight:700;text-align:center;opacity:.54;color:#000}\n"] }]
@@ -310,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
310
310
  }], error: [{
311
311
  type: Output
312
312
  }] } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvcHJvY2Vzcy1saXN0L2NvbXBvbmVudHMvcHJvY2Vzcy1saXN0L3Byb2Nlc3MtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC9wcm9jZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGVBQWUsRUFHZixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBR3JDLGdCQUFnQixFQUdoQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixxQkFBcUIsRUFDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU8xQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBRXRELE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixH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O2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixNQUFNO2dCQVFQLFVBQVU7c0JBRFQsS0FBSztnQkFLTixRQUFRO3NCQURQLE1BQU07Z0JBTVAsT0FBTztzQkFETixNQUFNO2dCQU1QLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBEYXRhVGFibGVTY2hlbWEsXG4gICAgRGF0YVJvd0V2ZW50LFxuICAgIERhdGFUYWJsZUFkYXB0ZXIsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhUm93LFxuICAgIERhdGFDb2x1bW4sXG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBQYWdpbmF0ZWRDb21wb25lbnQsXG4gICAgUGFnaW5hdGlvbk1vZGVsLFxuICAgIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgRGF0YUNlbGxFdmVudCxcbiAgICBERUZBVUxUX1BBR0lOQVRJT04sXG4gICAgRGF0YVRhYmxlTW9kdWxlLFxuICAgIEVtcHR5Q29udGVudENvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9jZXNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2Nlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uLFxuICAgIFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb25Tb3J0LFxuICAgIFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb25TdGF0ZSxcbiAgICBSZXN1bHRMaXN0RGF0YVJlcHJlc2VudGF0aW9uUHJvY2Vzc0luc3RhbmNlUmVwcmVzZW50YXRpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgUFJFU0VUX0tFWSA9ICdhZGYtcHJvY2Vzcy1saXN0LnByZXNldHMnO1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc1ByZXNldHNEZWZhdWx0TW9kZWwgPSB7XG4gICAgZGVmYXVsdDogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICduYW1lJyxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLk5BTUUnLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnY3JlYXRlZCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB0aXRsZTogJ0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEJyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnaGlkZGVuJyxcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1wcm9jZXNzLWluc3RhbmNlLWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGF0YVRhYmxlTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIEVtcHR5Q29udGVudENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWxpc3QuY29tcG9uZW50LmNzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NJbnN0YW5jZUxpc3RDb21wb25lbnQgZXh0ZW5kcyBEYXRhVGFibGVTY2hlbWEgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIFBhZ2luYXRlZENvbXBvbmVudCB7XG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21FbXB0eUNvbnRlbnQ6IEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbUxvYWRpbmdDb250ZW50OiBDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqIFRoZSBpZCBvZiB0aGUgYXBwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwSWQ6IG51bWJlcjtcblxuICAgIC8qKiBUaGUgRGVmaW5pdGlvbiBJZCBvZiB0aGUgcHJvY2Vzcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZztcblxuICAgIC8qKiBUaGUgaWQgb2YgdGhlIHByb2Nlc3MgaW5zdGFuY2UuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gICAgLyoqIERlZmluZXMgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzZXMuICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZTogUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvblN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc29ydCBvcmRlcmluZyBvZiB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnQ6IFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb25Tb3J0O1xuXG4gICAgLyoqIFRoZSBwYWdlIG51bWJlciBvZiB0aGUgcHJvY2Vzc2VzIHRvIGZldGNoLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZTogbnVtYmVyID0gMDtcblxuICAgIC8qKiBUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBmZXRjaCBpbiBlYWNoIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBudW1iZXIgPSBERUZBVUxUX1BBR0lOQVRJT04ubWF4SXRlbXM7XG5cbiAgICAvKiogRGF0YSBzb3VyY2UgdG8gZGVmaW5lIHRoZSBkYXRhdGFibGUuICovXG4gICAgQElucHV0KClcbiAgICBkYXRhOiBEYXRhVGFibGVBZGFwdGVyO1xuXG4gICAgLyoqIFRvZ2dsZXMgbXVsdGlwbGUgcm93IHNlbGVjdGlvbiwgd2hpY2ggcmVuZGVycyBjaGVja2JveGVzIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCByb3cgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBSb3cgc2VsZWN0aW9uIG1vZGUuIENhbiBiZSBub25lLCBgc2luZ2xlYCBvciBgbXVsdGlwbGVgLiBGb3IgYG11bHRpcGxlYCBtb2RlLFxuICAgICAqIHlvdSBjYW4gdXNlIENtZCAobWFjT1MpIG9yIEN0cmwgKFdpbikgbW9kaWZpZXIga2V5IHRvIHRvZ2dsZSBzZWxlY3Rpb24gZm9yXG4gICAgICogbXVsdGlwbGUgcm93cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IHN0cmluZyA9ICdzaW5nbGUnOyAvLyBub25lfHNpbmdsZXxtdWx0aXBsZVxuXG4gICAgLyoqIFRvZ2dsZXMgZGVmYXVsdCBzZWxlY3Rpb24gb2YgdGhlIGZpcnN0IHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0Rmlyc3RSb3c6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHN0aWNreSBoZWFkZXIgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0aWNreUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgY3VzdG9tIGNvbnRleHQgbWVudSBmb3IgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dDb250ZXh0TWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEVuYWJsZXMgY29sdW1uIHJlc2l6aW5nIGZvciBkYXRhdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUmVzaXppbmdFbmFibGVkID0gZmFsc2U7XG5cbiAgICAvKiogRW5hYmxlcyBibHVyIHdoZW4gcmVzaXppbmcgZGF0YXRhYmxlIGNvbHVtbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsdXJPblJlc2l6ZSA9IHRydWU7XG5cbiAgICAvKiogRW1pdHRlZCBiZWZvcmUgdGhlIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQgZm9yIGEgcm93LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNob3dSb3dDb250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YUNlbGxFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJlc29sdmVyIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2hvdyBkeW5hbWljIGNvbXBsZXggY29sdW1uIG9iamVjdHNcbiAgICAgKiBzZWUgdGhlIGRvY3MgdG8gbGVhcm4gaG93IHRvIGNvbmZpZ3VyZSBhIHJlc29sdmVyRm4uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZXNvbHZlckZuOiAocm93OiBEYXRhUm93LCBjb2w6IERhdGFDb2x1bW4pID0+IGFueSA9IG51bGw7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgcm93IGluIHRoZSBwcm9jZXNzIGxpc3QgaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbGlzdCBvZiBwcm9jZXNzIGluc3RhbmNlcyBoYXMgYmVlbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxSZXN1bHRMaXN0RGF0YVJlcHJlc2VudGF0aW9uUHJvY2Vzc0luc3RhbmNlUmVwcmVzZW50YXRpb24+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyB3aGlsZSBsb2FkaW5nIHRoZSBsaXN0IG9mIHByb2Nlc3MgaW5zdGFuY2VzIGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcmVxdWVzdE5vZGU6IFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb247XG4gICAgY3VycmVudEluc3RhbmNlSWQ6IHN0cmluZztcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHJvd3M6IGFueVtdID0gW107XG4gICAgc29ydGluZzogYW55W10gPSBbJ2NyZWF0ZWQnLCAnZGVzYyddO1xuICAgIHBhZ2luYXRpb246IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uTW9kZWw+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsIHByaXZhdGUgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoYXBwQ29uZmlnLCBQUkVTRVRfS0VZLCBwcm9jZXNzUHJlc2V0c0RlZmF1bHRNb2RlbCk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMudXNlclByZWZlcmVuY2VzLnBhZ2luYXRpb25TaXplO1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbk1vZGVsPih7XG4gICAgICAgICAgICBtYXhJdGVtczogdGhpcy5zaXplLFxuICAgICAgICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgICAgICAgdG90YWxJdGVtczogMFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGF0YXRhYmxlU2NoZW1hKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YT8uZ2V0Q29sdW1ucygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldENvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFwcElkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUHJvcGVydHlDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NvcnRDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0aW5nID0gdGhpcy5zb3J0ID8gdGhpcy5zb3J0LnNwbGl0KCctJykgOiB0aGlzLnNvcnRpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJlc2V0Q29sdW1uQ2hhbmdlcyA9IGNoYW5nZXNbJ3ByZXNldENvbHVtbiddO1xuICAgICAgICBpZiAocHJlc2V0Q29sdW1uQ2hhbmdlcyAmJiAhcHJlc2V0Q29sdW1uQ2hhbmdlcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5tZXJnZUpzb25BbmRIdG1sU2NoZW1hKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWxvYWQoKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdE5vZGUgPSB0aGlzLmNyZWF0ZVJlcXVlc3ROb2RlKCk7XG4gICAgICAgIHRoaXMubG9hZCh0aGlzLnJlcXVlc3ROb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGEgbGlzdCBpZiBwcmVzZW50XG4gICAgICovXG4gICAgc2VsZWN0Rmlyc3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEZpcnN0Um93KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNMaXN0RW1wdHkoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFSb3cgPSB0aGlzLnJvd3NbMF07XG4gICAgICAgICAgICAgICAgZGF0YVJvdy5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkID0gZGF0YVJvd1snaWQnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5zdGFuY2VJZCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBpbnN0YW5jZSBpZFxuICAgICAqL1xuICAgIGdldEN1cnJlbnRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5zdGFuY2VJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgbGlzdCBpcyBlbXB0eVxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGxpc3QgaXMgZW1wdHksIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNMaXN0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3dzIHx8IHRoaXMucm93cy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdCB0aGUgZXZlbnQgcm93Q2xpY2sgcGFzc2luZyB0aGUgY3VycmVudCB0YXNrIGlkIHdoZW4gdGhlIHJvdyBpcyBjbGlja2VkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgaW5wdXQgZXZlbnRcbiAgICAgKi9cbiAgICBvblJvd0NsaWNrKGV2ZW50OiBEYXRhUm93RXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGV2ZW50O1xuXG4gICAgICAgIHRoaXMuY3VycmVudEluc3RhbmNlSWQgPSBpdGVtLnZhbHVlLmdldFZhbHVlKCdpZCcpO1xuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQodGhpcy5jdXJyZW50SW5zdGFuY2VJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdCB0aGUgZXZlbnQgcm93Q2xpY2sgcGFzc2luZyB0aGUgY3VycmVudCB0YXNrIGlkIHdoZW4gcHJlc3NlZCB0aGUgRW50ZXIga2V5IG9uIHRoZSBzZWxlY3RlZCByb3dcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBrZXlib2FyZCBldmVudFxuICAgICAqL1xuICAgIG9uUm93S2V5VXAoZXZlbnQ6IEN1c3RvbUV2ZW50PGFueT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5rZXlib2FyZEV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5zdGFuY2VJZCA9IGV2ZW50LmRldGFpbC5yb3cuZ2V0VmFsdWUoJ2lkJyk7XG4gICAgICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQodGhpcy5jdXJyZW50SW5zdGFuY2VJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNob3dSb3dDb250ZXh0TWVudShldmVudDogRGF0YUNlbGxFdmVudCkge1xuICAgICAgICB0aGlzLnNob3dSb3dDb250ZXh0TWVudS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB1cGRhdGVQYWdpbmF0aW9uKHBhcmFtczogUGFnaW5hdGlvbk1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG5lZWRzUmVsb2FkID0gcGFyYW1zLm1heEl0ZW1zIHx8IHBhcmFtcy5za2lwQ291bnQ7XG5cbiAgICAgICAgdGhpcy5zaXplID0gcGFyYW1zLm1heEl0ZW1zO1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKHBhcmFtcy5za2lwQ291bnQsIHBhcmFtcy5tYXhJdGVtcyk7XG5cbiAgICAgICAgaWYgKG5lZWRzUmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3VycmVudFBhZ2Uoc2tpcENvdW50OiBudW1iZXIsIG1heEl0ZW1zOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gc2tpcENvdW50ICYmIG1heEl0ZW1zID8gTWF0aC5mbG9vcihza2lwQ291bnQgLyBtYXhJdGVtcykgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUmVxdWVzdE5vZGUoKTogUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcHBEZWZpbml0aW9uSWQ6IHRoaXMuYXBwSWQsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0LFxuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgICAgICAgc3RhcnQ6IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU29ydENoYW5nZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhY3R1YWxTb3J0ID0gY2hhbmdlc1snc29ydCddO1xuICAgICAgICByZXR1cm4gYWN0dWFsU29ydD8uY3VycmVudFZhbHVlICYmIGFjdHVhbFNvcnQuY3VycmVudFZhbHVlICE9PSBhY3R1YWxTb3J0LnByZXZpb3VzVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgYXBwSWQgPSBjaGFuZ2VzWydhcHBJZCddO1xuICAgICAgICBjb25zdCBwcm9jZXNzRGVmaW5pdGlvbklkID0gY2hhbmdlc1sncHJvY2Vzc0RlZmluaXRpb25JZCddO1xuICAgICAgICBjb25zdCBwcm9jZXNzSW5zdGFuY2VJZCA9IGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ107XG4gICAgICAgIGNvbnN0IHN0YXRlID0gY2hhbmdlc1snc3RhdGUnXTtcbiAgICAgICAgY29uc3Qgc29ydCA9IGNoYW5nZXNbJ3NvcnQnXTtcbiAgICAgICAgY29uc3QgcGFnZSA9IGNoYW5nZXNbJ3BhZ2UnXTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGNoYW5nZXNbJ3NpemUnXTtcblxuICAgICAgICBpZiAoYXBwSWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzc0RlZmluaXRpb25JZCkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvcnQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZSAmJiBwYWdlPy5jdXJyZW50VmFsdWUgIT09IHBhZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc2l6ZSAmJiBzaXplLmN1cnJlbnRWYWx1ZSAhPT0gc2l6ZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hhbmdlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWQocmVxdWVzdE5vZGU6IFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb24pIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvY2Vzc2VzKHJlcXVlc3ROb2RlKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93cyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogKHJlc3BvbnNlLmRhdGEgfHwgW10pLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwQ291bnQ6IHRoaXMucGFnZSAqIHRoaXMuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IHJlc3BvbnNlLnRvdGFsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8YWRmLWRhdGF0YWJsZVxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtyb3dzXT1cInJvd3NcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtzb3J0aW5nXT1cInNvcnRpbmdcIlxuICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgW2lzUmVzaXppbmdFbmFibGVkXT1cImlzUmVzaXppbmdFbmFibGVkXCJcbiAgICBbYmx1ck9uUmVzaXplXT1cImJsdXJPblJlc2l6ZVwiXG4gICAgW3N0aWNreUhlYWRlcl09XCJzdGlja3lIZWFkZXJcIlxuICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxuICAgIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiXG4gICAgW3Jlc29sdmVyRm5dPVwicmVzb2x2ZXJGblwiXG4gICAgW2NvbnRleHRNZW51XT1cInNob3dDb250ZXh0TWVudVwiXG4gICAgKHNob3dSb3dDb250ZXh0TWVudSk9XCJvblNob3dSb3dDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcbiAgICAocm93LWtleXVwKT1cIm9uUm93S2V5VXAoJGFueSgkZXZlbnQpKVwiPlxuICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjdXN0b21Mb2FkaW5nQ29udGVudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvY2Vzcy1saXN0LWxvYWRpbmctbWFyZ2luXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudCAqbmdJZj1cIiFjdXN0b21FbXB0eUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiYXNzZXNzbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIocmVxdWVzdE5vZGUgPyAnQURGX1BST0NFU1NfTElTVC5MSVNULlRJVExFJyA6ICdBREZfUFJPQ0VTU19MSVNULkZJTFRFUlMuTUVTU0FHRVMuTk9ORScpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIidBREZfUFJPQ0VTU19MSVNULkxJU1QuU1VCVElUTEUnfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICA8L2FkZi1lbXB0eS1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG48L2FkZi1kYXRhdGFibGU+XG4iXX0=
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvcHJvY2Vzcy1saXN0L2NvbXBvbmVudHMvcHJvY2Vzcy1saXN0L3Byb2Nlc3MtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC9wcm9jZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGVBQWUsRUFHZixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBR3JDLGdCQUFnQixFQUdoQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixxQkFBcUIsRUFDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU8xQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBRXRELE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixH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O2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixNQUFNO2dCQVFQLFVBQVU7c0JBRFQsS0FBSztnQkFLTixRQUFRO3NCQURQLE1BQU07Z0JBTVAsT0FBTztzQkFETixNQUFNO2dCQU1QLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBEYXRhVGFibGVTY2hlbWEsXG4gICAgRGF0YVJvd0V2ZW50LFxuICAgIERhdGFUYWJsZUFkYXB0ZXIsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhUm93LFxuICAgIERhdGFDb2x1bW4sXG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBQYWdpbmF0ZWRDb21wb25lbnQsXG4gICAgUGFnaW5hdGlvbk1vZGVsLFxuICAgIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgRGF0YUNlbGxFdmVudCxcbiAgICBERUZBVUxUX1BBR0lOQVRJT04sXG4gICAgRGF0YVRhYmxlTW9kdWxlLFxuICAgIEVtcHR5Q29udGVudENvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9jZXNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2Nlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBQcm9jZXNzSW5zdGFuY2VRdWVyeVJlcHJlc2VudGF0aW9uLFxuICAgIFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb25Tb3J0LFxuICAgIFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb25TdGF0ZSxcbiAgICBSZXN1bHRMaXN0RGF0YVJlcHJlc2VudGF0aW9uUHJvY2Vzc0luc3RhbmNlUmVwcmVzZW50YXRpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgUFJFU0VUX0tFWSA9ICdhZGYtcHJvY2Vzcy1saXN0LnByZXNldHMnO1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc1ByZXNldHNEZWZhdWx0TW9kZWwgPSB7XG4gICAgZGVmYXVsdDogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICduYW1lJyxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIHRpdGxlOiAnQURGX1BST0NFU1NfTElTVC5QUk9QRVJUSUVTLk5BTUUnLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnY3JlYXRlZCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB0aXRsZTogJ0FERl9QUk9DRVNTX0xJU1QuUFJPUEVSVElFUy5DUkVBVEVEJyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnaGlkZGVuJyxcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1wcm9jZXNzLWluc3RhbmNlLWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGF0YVRhYmxlTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIEVtcHR5Q29udGVudENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWxpc3QuY29tcG9uZW50LmNzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NJbnN0YW5jZUxpc3RDb21wb25lbnQgZXh0ZW5kcyBEYXRhVGFibGVTY2hlbWEgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIFBhZ2luYXRlZENvbXBvbmVudCB7XG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21FbXB0eUNvbnRlbnQ6IEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbUxvYWRpbmdDb250ZW50OiBDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqIFRoZSBpZCBvZiB0aGUgYXBwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwSWQ6IG51bWJlcjtcblxuICAgIC8qKiBUaGUgRGVmaW5pdGlvbiBJZCBvZiB0aGUgcHJvY2Vzcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZztcblxuICAgIC8qKiBUaGUgaWQgb2YgdGhlIHByb2Nlc3MgaW5zdGFuY2UuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gICAgLyoqIERlZmluZXMgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzZXMuICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZTogUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvblN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc29ydCBvcmRlcmluZyBvZiB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnQ6IFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb25Tb3J0O1xuXG4gICAgLyoqIFRoZSBwYWdlIG51bWJlciBvZiB0aGUgcHJvY2Vzc2VzIHRvIGZldGNoLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZTogbnVtYmVyID0gMDtcblxuICAgIC8qKiBUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBmZXRjaCBpbiBlYWNoIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBudW1iZXIgPSBERUZBVUxUX1BBR0lOQVRJT04ubWF4SXRlbXM7XG5cbiAgICAvKiogRGF0YSBzb3VyY2UgdG8gZGVmaW5lIHRoZSBkYXRhdGFibGUuICovXG4gICAgQElucHV0KClcbiAgICBkYXRhOiBEYXRhVGFibGVBZGFwdGVyO1xuXG4gICAgLyoqIFRvZ2dsZXMgbXVsdGlwbGUgcm93IHNlbGVjdGlvbiwgd2hpY2ggcmVuZGVycyBjaGVja2JveGVzIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCByb3cgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBSb3cgc2VsZWN0aW9uIG1vZGUuIENhbiBiZSBub25lLCBgc2luZ2xlYCBvciBgbXVsdGlwbGVgLiBGb3IgYG11bHRpcGxlYCBtb2RlLFxuICAgICAqIHlvdSBjYW4gdXNlIENtZCAobWFjT1MpIG9yIEN0cmwgKFdpbikgbW9kaWZpZXIga2V5IHRvIHRvZ2dsZSBzZWxlY3Rpb24gZm9yXG4gICAgICogbXVsdGlwbGUgcm93cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IHN0cmluZyA9ICdzaW5nbGUnOyAvLyBub25lfHNpbmdsZXxtdWx0aXBsZVxuXG4gICAgLyoqIFRvZ2dsZXMgZGVmYXVsdCBzZWxlY3Rpb24gb2YgdGhlIGZpcnN0IHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0Rmlyc3RSb3c6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHN0aWNreSBoZWFkZXIgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0aWNreUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgY3VzdG9tIGNvbnRleHQgbWVudSBmb3IgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dDb250ZXh0TWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEVuYWJsZXMgY29sdW1uIHJlc2l6aW5nIGZvciBkYXRhdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUmVzaXppbmdFbmFibGVkID0gZmFsc2U7XG5cbiAgICAvKiogRW5hYmxlcyBibHVyIHdoZW4gcmVzaXppbmcgZGF0YXRhYmxlIGNvbHVtbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsdXJPblJlc2l6ZSA9IHRydWU7XG5cbiAgICAvKiogRW1pdHRlZCBiZWZvcmUgdGhlIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQgZm9yIGEgcm93LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNob3dSb3dDb250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YUNlbGxFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJlc29sdmVyIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2hvdyBkeW5hbWljIGNvbXBsZXggY29sdW1uIG9iamVjdHNcbiAgICAgKiBzZWUgdGhlIGRvY3MgdG8gbGVhcm4gaG93IHRvIGNvbmZpZ3VyZSBhIHJlc29sdmVyRm4uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZXNvbHZlckZuOiAocm93OiBEYXRhUm93LCBjb2w6IERhdGFDb2x1bW4pID0+IGFueSA9IG51bGw7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgcm93IGluIHRoZSBwcm9jZXNzIGxpc3QgaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbGlzdCBvZiBwcm9jZXNzIGluc3RhbmNlcyBoYXMgYmVlbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxSZXN1bHRMaXN0RGF0YVJlcHJlc2VudGF0aW9uUHJvY2Vzc0luc3RhbmNlUmVwcmVzZW50YXRpb24+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyB3aGlsZSBsb2FkaW5nIHRoZSBsaXN0IG9mIHByb2Nlc3MgaW5zdGFuY2VzIGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcmVxdWVzdE5vZGU6IFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb247XG4gICAgY3VycmVudEluc3RhbmNlSWQ6IHN0cmluZztcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHJvd3M6IGFueVtdID0gW107XG4gICAgc29ydGluZzogYW55W10gPSBbJ2NyZWF0ZWQnLCAnZGVzYyddO1xuICAgIHBhZ2luYXRpb246IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uTW9kZWw+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsIHByaXZhdGUgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoYXBwQ29uZmlnLCBQUkVTRVRfS0VZLCBwcm9jZXNzUHJlc2V0c0RlZmF1bHRNb2RlbCk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMudXNlclByZWZlcmVuY2VzLnBhZ2luYXRpb25TaXplO1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbk1vZGVsPih7XG4gICAgICAgICAgICBtYXhJdGVtczogdGhpcy5zaXplLFxuICAgICAgICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgICAgICAgdG90YWxJdGVtczogMFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGF0YXRhYmxlU2NoZW1hKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YT8uZ2V0Q29sdW1ucygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldENvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFwcElkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUHJvcGVydHlDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NvcnRDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0aW5nID0gdGhpcy5zb3J0ID8gdGhpcy5zb3J0LnNwbGl0KCctJykgOiB0aGlzLnNvcnRpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJlc2V0Q29sdW1uQ2hhbmdlcyA9IGNoYW5nZXNbJ3ByZXNldENvbHVtbiddO1xuICAgICAgICBpZiAocHJlc2V0Q29sdW1uQ2hhbmdlcyAmJiAhcHJlc2V0Q29sdW1uQ2hhbmdlcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5tZXJnZUpzb25BbmRIdG1sU2NoZW1hKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWxvYWQoKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdE5vZGUgPSB0aGlzLmNyZWF0ZVJlcXVlc3ROb2RlKCk7XG4gICAgICAgIHRoaXMubG9hZCh0aGlzLnJlcXVlc3ROb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGEgbGlzdCBpZiBwcmVzZW50XG4gICAgICovXG4gICAgc2VsZWN0Rmlyc3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEZpcnN0Um93KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNMaXN0RW1wdHkoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFSb3cgPSB0aGlzLnJvd3NbMF07XG4gICAgICAgICAgICAgICAgZGF0YVJvdy5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkID0gZGF0YVJvd1snaWQnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5zdGFuY2VJZCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBpbnN0YW5jZSBpZFxuICAgICAqL1xuICAgIGdldEN1cnJlbnRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5zdGFuY2VJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgbGlzdCBpcyBlbXB0eVxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGxpc3QgaXMgZW1wdHksIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNMaXN0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3dzIHx8IHRoaXMucm93cy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdCB0aGUgZXZlbnQgcm93Q2xpY2sgcGFzc2luZyB0aGUgY3VycmVudCB0YXNrIGlkIHdoZW4gdGhlIHJvdyBpcyBjbGlja2VkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgaW5wdXQgZXZlbnRcbiAgICAgKi9cbiAgICBvblJvd0NsaWNrKGV2ZW50OiBEYXRhUm93RXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGV2ZW50O1xuXG4gICAgICAgIHRoaXMuY3VycmVudEluc3RhbmNlSWQgPSBpdGVtLnZhbHVlLmdldFZhbHVlKCdpZCcpO1xuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQodGhpcy5jdXJyZW50SW5zdGFuY2VJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdCB0aGUgZXZlbnQgcm93Q2xpY2sgcGFzc2luZyB0aGUgY3VycmVudCB0YXNrIGlkIHdoZW4gcHJlc3NlZCB0aGUgRW50ZXIga2V5IG9uIHRoZSBzZWxlY3RlZCByb3dcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBrZXlib2FyZCBldmVudFxuICAgICAqL1xuICAgIG9uUm93S2V5VXAoZXZlbnQ6IEN1c3RvbUV2ZW50PGFueT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5rZXlib2FyZEV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5zdGFuY2VJZCA9IGV2ZW50LmRldGFpbC5yb3cuZ2V0VmFsdWUoJ2lkJyk7XG4gICAgICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQodGhpcy5jdXJyZW50SW5zdGFuY2VJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNob3dSb3dDb250ZXh0TWVudShldmVudDogRGF0YUNlbGxFdmVudCkge1xuICAgICAgICB0aGlzLnNob3dSb3dDb250ZXh0TWVudS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB1cGRhdGVQYWdpbmF0aW9uKHBhcmFtczogUGFnaW5hdGlvbk1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG5lZWRzUmVsb2FkID0gcGFyYW1zLm1heEl0ZW1zIHx8IHBhcmFtcy5za2lwQ291bnQ7XG5cbiAgICAgICAgdGhpcy5zaXplID0gcGFyYW1zLm1heEl0ZW1zO1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKHBhcmFtcy5za2lwQ291bnQsIHBhcmFtcy5tYXhJdGVtcyk7XG5cbiAgICAgICAgaWYgKG5lZWRzUmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3VycmVudFBhZ2Uoc2tpcENvdW50OiBudW1iZXIsIG1heEl0ZW1zOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gc2tpcENvdW50ICYmIG1heEl0ZW1zID8gTWF0aC5mbG9vcihza2lwQ291bnQgLyBtYXhJdGVtcykgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUmVxdWVzdE5vZGUoKTogUHJvY2Vzc0luc3RhbmNlUXVlcnlSZXByZXNlbnRhdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcHBEZWZpbml0aW9uSWQ6IHRoaXMuYXBwSWQsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0LFxuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgICAgICAgc3RhcnQ6IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU29ydENoYW5nZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhY3R1YWxTb3J0ID0gY2hhbmdlc1snc29ydCddO1xuICAgICAgICByZXR1cm4gYWN0dWFsU29ydD8uY3VycmVudFZhbHVlICYmIGFjdHVhbFNvcnQuY3VycmVudFZhbHVlICE9PSBhY3R1YWxTb3J0LnByZXZpb3VzVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgYXBwSWQgPSBjaGFuZ2VzWydhcHBJZCddO1xuICAgICAgICBjb25zdCBwcm9jZXNzRGVmaW5pdGlvbklkID0gY2hhbmdlc1sncHJvY2Vzc0RlZmluaXRpb25JZCddO1xuICAgICAgICBjb25zdCBwcm9jZXNzSW5zdGFuY2VJZCA9IGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ107XG4gICAgICAgIGNvbnN0IHN0YXRlID0gY2hhbmdlc1snc3RhdGUnXTtcbiAgICAgICAgY29uc3Qgc29ydCA9IGNoYW5nZXNbJ3NvcnQnXTtcbiAgICAgICAgY29uc3QgcGFnZSA9IGNoYW5nZXNbJ3BhZ2UnXTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGNoYW5nZXNbJ3NpemUnXTtcblxuICAgICAgICBpZiAoYXBwSWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzc0RlZmluaXRpb25JZCkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvcnQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZSAmJiBwYWdlPy5jdXJyZW50VmFsdWUgIT09IHBhZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc2l6ZSAmJiBzaXplLmN1cnJlbnRWYWx1ZSAhPT0gc2l6ZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hhbmdlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWQocmVxdWVzdE5vZGU6IFByb2Nlc3NJbnN0YW5jZVF1ZXJ5UmVwcmVzZW50YXRpb24pIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvY2Vzc2VzKHJlcXVlc3ROb2RlKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93cyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogKHJlc3BvbnNlLmRhdGEgfHwgW10pLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwQ291bnQ6IHRoaXMucGFnZSAqIHRoaXMuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IHJlc3BvbnNlLnRvdGFsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8YWRmLWRhdGF0YWJsZVxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtyb3dzXT1cInJvd3NcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtzb3J0aW5nXT1cInNvcnRpbmdcIlxuICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgW2lzUmVzaXppbmdFbmFibGVkXT1cImlzUmVzaXppbmdFbmFibGVkXCJcbiAgICBbYmx1ck9uUmVzaXplXT1cImJsdXJPblJlc2l6ZVwiXG4gICAgW3N0aWNreUhlYWRlcl09XCJzdGlja3lIZWFkZXJcIlxuICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxuICAgIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiXG4gICAgW3Jlc29sdmVyRm5dPVwicmVzb2x2ZXJGblwiXG4gICAgW2NvbnRleHRNZW51XT1cInNob3dDb250ZXh0TWVudVwiXG4gICAgKHNob3dSb3dDb250ZXh0TWVudSk9XCJvblNob3dSb3dDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcbiAgICAocm93LWtleXVwKT1cIm9uUm93S2V5VXAoJGFueSgkZXZlbnQpKVwiPlxuICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjdXN0b21Mb2FkaW5nQ29udGVudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvY2Vzcy1saXN0LWxvYWRpbmctbWFyZ2luXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1sb2FkaW5nLWNvbnRlbnQtdGVtcGxhdGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudCAqbmdJZj1cIiFjdXN0b21FbXB0eUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiYXNzZXNzbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIocmVxdWVzdE5vZGUgPyAnQURGX1BST0NFU1NfTElTVC5MSVNULlRJVExFJyA6ICdBREZfUFJPQ0VTU19MSVNULkZJTFRFUlMuTUVTU0FHRVMuTk9ORScpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIidBREZfUFJPQ0VTU19MSVNULkxJU1QuU1VCVElUTEUnfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICA8L2FkZi1lbXB0eS1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWRmLW5vLWNvbnRlbnQtdGVtcGxhdGU+XG48L2FkZi1kYXRhdGFibGU+XG4iXX0=