ngx-material-entity 18.1.0 → 18.2.1

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.
Files changed (85) hide show
  1. package/README.md +10 -13
  2. package/components/create-page/create-page.component.d.ts +3 -0
  3. package/components/edit-page/edit-page.component.d.ts +3 -0
  4. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  5. package/components/input/file/file-image-input/file-image-input.component.d.ts +3 -0
  6. package/components/input/file/file-input/file-input.component.d.ts +8 -2
  7. package/components/input/input.component.d.ts +2 -0
  8. package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +2 -0
  9. package/components/input/relations/references-many-input/references-many-input.component.d.ts +2 -0
  10. package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +2 -0
  11. package/components/input/string/string-password-input/string-password-input.component.d.ts +3 -0
  12. package/components/tooltip/tooltip.component.d.ts +2 -0
  13. package/decorators/array/array-decorator-internal.data.d.ts +3 -2
  14. package/decorators/array/array-decorator.data.d.ts +7 -6
  15. package/decorators/base/property-decorator.data.d.ts +2 -2
  16. package/decorators/file/file-decorator-internal.data.d.ts +3 -2
  17. package/decorators/file/file-decorator.data.d.ts +4 -3
  18. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  19. package/esm2022/components/create-page/create-page.component.mjs +18 -8
  20. package/esm2022/components/custom-table/custom-table.component.mjs +4 -4
  21. package/esm2022/components/edit-page/edit-page.component.mjs +18 -8
  22. package/esm2022/components/form/form.component.mjs +5 -5
  23. package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +5 -5
  24. package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +3 -3
  25. package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +3 -3
  26. package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +8 -6
  27. package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +8 -6
  28. package/esm2022/components/input/array/array-table.class.mjs +3 -3
  29. package/esm2022/components/input/base-input.component.mjs +3 -3
  30. package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +4 -4
  31. package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
  32. package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +4 -4
  33. package/esm2022/components/input/custom/custom.component.mjs +3 -3
  34. package/esm2022/components/input/date/date-input/date-input.component.mjs +3 -3
  35. package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +3 -3
  36. package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +3 -3
  37. package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +5 -5
  38. package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +9 -5
  39. package/esm2022/components/input/file/file-input/file-input.component.mjs +25 -12
  40. package/esm2022/components/input/input.component.mjs +23 -12
  41. package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +10 -6
  42. package/esm2022/components/input/number/number-input/number-input.component.mjs +3 -3
  43. package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +4 -4
  44. package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +10 -6
  45. package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +3 -3
  46. package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +10 -6
  47. package/esm2022/components/input/string/string-input/string-input.component.mjs +3 -3
  48. package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +11 -6
  49. package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +3 -3
  50. package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +9 -6
  51. package/esm2022/components/table/display-column-value/base-display-column-value.component.mjs +3 -3
  52. package/esm2022/components/table/display-column-value/display-column-value.component.mjs +3 -3
  53. package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +1 -1
  54. package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +9 -7
  55. package/esm2022/components/table/table-data.builder.mjs +3 -1
  56. package/esm2022/components/table/table-data.mjs +1 -1
  57. package/esm2022/components/table/table.component.mjs +5 -11
  58. package/esm2022/components/tooltip/tooltip.component.mjs +9 -5
  59. package/esm2022/decorators/array/array-decorator-internal.data.mjs +5 -3
  60. package/esm2022/decorators/array/array-decorator.data.mjs +1 -1
  61. package/esm2022/decorators/array/array.decorator.mjs +15 -8
  62. package/esm2022/decorators/base/property-decorator.data.mjs +2 -2
  63. package/esm2022/decorators/file/file-decorator-internal.data.mjs +4 -3
  64. package/esm2022/decorators/file/file-decorator.data.mjs +3 -3
  65. package/esm2022/decorators/file/file.decorator.mjs +7 -4
  66. package/esm2022/decorators/number/number.decorator.mjs +7 -4
  67. package/esm2022/decorators/object/object.decorator.mjs +5 -3
  68. package/esm2022/decorators/string/string-decorator-internal.data.mjs +2 -1
  69. package/esm2022/decorators/string/string.decorator.mjs +11 -6
  70. package/esm2022/directives/drag-drop.directive.mjs +3 -3
  71. package/esm2022/directives/dynamic-style-class.directive.mjs +3 -3
  72. package/esm2022/directives/included-in.directive.mjs +3 -3
  73. package/esm2022/directives/number.directive.mjs +3 -3
  74. package/esm2022/directives/password-match.directive.mjs +3 -3
  75. package/esm2022/directives/tooltip.directive.mjs +3 -3
  76. package/esm2022/functions/dropdown-values-to-function.function.mjs +2 -1
  77. package/esm2022/functions/table-column-value-to-sort-value.function.mjs +9 -5
  78. package/esm2022/utilities/date.utilities.mjs +1 -1
  79. package/esm2022/utilities/entity.utilities.mjs +36 -21
  80. package/esm2022/utilities/file.utilities.mjs +7 -4
  81. package/esm2022/utilities/validation.utilities.mjs +41 -21
  82. package/fesm2022/ngx-material-entity.mjs +367 -254
  83. package/fesm2022/ngx-material-entity.mjs.map +1 -1
  84. package/package.json +4 -2
  85. package/utilities/entity.utilities.d.ts +4 -4
@@ -12,11 +12,9 @@ import { Router } from '@angular/router';
12
12
  import { firstValueFrom } from 'rxjs';
13
13
  import { CreateEntityDialogDataBuilder } from './create-dialog/create-entity-data.builder';
14
14
  import { NgxMatEntityCreateDialogComponent } from './create-dialog/create-entity-dialog.component';
15
- import { DisplayColumnValueComponent } from './display-column-value/display-column-value.component';
16
15
  import { NgxMatEntityEditDialogComponent } from './edit-dialog/edit-entity-dialog.component';
17
16
  import { EditEntityDataBuilder } from './edit-dialog/edit-entity.builder';
18
17
  import { BaseTableActionInternal, TableDataBuilder } from './table-data.builder';
19
- import { DynamicStyleClassDirective } from '../../directives/dynamic-style-class.directive';
20
18
  import { NGX_COMPLETE_GLOBAL_DEFAULT_VALUES } from '../../global-configuration-values';
21
19
  import { EntityUtilities } from '../../utilities/entity.utilities';
22
20
  import { ConfirmDialogDataBuilder } from '../confirm-dialog/confirm-dialog-data.builder';
@@ -297,10 +295,10 @@ export class NgxMatEntityTableComponent {
297
295
  return !action.enabled(this.selected);
298
296
  });
299
297
  }
300
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxMatEntityTableComponent, deps: [{ token: i1.MatDialog }, { token: i0.EnvironmentInjector }, { token: i2.Router }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
301
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgxMatEntityTableComponent, isStandalone: true, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, outputs: { unsavedDialogChanges: "unsavedDialogChanges" }, ngImport: i0, template: " \n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput [(ngModel)]=\"searchString\">\n </mat-form-field>\n @if (data.baseData.tableActions.length) {\n <div\n [class.col-lg-2]=\"allowCreate\"\n [class.col-lg-4]=\"!allowCreate\"\n [class.col-md-3]=\"allowCreate\"\n [class.col-md-6]=\"!allowCreate\"\n [class.col-sm-6]=\"allowCreate\"\n [class.col-sm-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n }\n <mat-menu #menu=\"matMenu\">\n @if (data.baseData.allowJsonImport) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n }\n @for (action of data.baseData.tableActions; track $index) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n }\n </mat-menu>\n\n @if (allowCreate) {\n <div\n [class.col-lg-2]=\"data.baseData.tableActions.length\"\n [class.col-lg-4]=\"!data.baseData.tableActions.length\"\n [class.col-md-3]=\"data.baseData.tableActions.length\"\n [class.col-md-6]=\"!data.baseData.tableActions.length\"\n [class.col-sm-6]=\"data.baseData.tableActions.length\"\n [class.col-sm-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n }\n</div>\n\n<div class=\"mat-elevation-z8\">\n <custom-table\n [configuration]=\"tableConfig\"\n [data]=\"entities\"\n [isLoading]=\"isLoading\"\n [searchString]=\"searchString\"\n (cellClicked)=\"editEntity($event.value)\"\n (selectionChanged)=\"selected = $event\"\n >\n </custom-table>\n</div>", styles: ["button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: CustomTableComponent, selector: "custom-table", inputs: ["data", "searchString", "required", "isLoading", "configuration"], outputs: ["cellClicked", "selectionChanged"] }] });
298
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NgxMatEntityTableComponent, deps: [{ token: i1.MatDialog }, { token: i0.EnvironmentInjector }, { token: i2.Router }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
299
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.7", type: NgxMatEntityTableComponent, isStandalone: true, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, outputs: { unsavedDialogChanges: "unsavedDialogChanges" }, ngImport: i0, template: " \n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"grid grid-cols-12\" style=\"column-gap: 24px;\">\n <mat-form-field class=\"lg:col-span-8 md:col-span-6 col-span-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput [(ngModel)]=\"searchString\">\n </mat-form-field>\n @if (data.baseData.tableActions.length) {\n <div\n [class.lg:col-span-2]=\"allowCreate\"\n [class.lg:col-span-4]=\"!allowCreate\"\n [class.md:col-span-3]=\"allowCreate\"\n [class.md:col-span-6]=\"!allowCreate\"\n [class.col-span-6]=\"allowCreate\"\n [class.col-span-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n }\n <mat-menu #menu=\"matMenu\">\n @if (data.baseData.allowJsonImport) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n }\n @for (action of data.baseData.tableActions; track $index) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n }\n </mat-menu>\n\n @if (allowCreate) {\n <div\n [class.lg:col-span-2]=\"data.baseData.tableActions.length\"\n [class.lg:col-span-4]=\"!data.baseData.tableActions.length\"\n [class.md:col-span-3]=\"data.baseData.tableActions.length\"\n [class.md:col-span-6]=\"!data.baseData.tableActions.length\"\n [class.col-span-6]=\"data.baseData.tableActions.length\"\n [class.col-span-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n }\n</div>\n\n<div class=\"mat-elevation-z8\">\n <custom-table\n [configuration]=\"tableConfig\"\n [data]=\"entities\"\n [isLoading]=\"isLoading\"\n [searchString]=\"searchString\"\n (cellClicked)=\"editEntity($event.value)\"\n (selectionChanged)=\"selected = $event\"\n >\n </custom-table>\n</div>", styles: ["button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n", ".grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid{display:grid}@media (min-width: 1024px){.lg\\:col-span-12{grid-column:span 12/span 12!important}.lg\\:col-span-11{grid-column:span 11/span 11!important}.lg\\:col-span-10{grid-column:span 10/span 10!important}.lg\\:col-span-9{grid-column:span 9/span 9!important}.lg\\:col-span-8{grid-column:span 8/span 8!important}.lg\\:col-span-7{grid-column:span 7/span 7!important}.lg\\:col-span-6{grid-column:span 6/span 6!important}.lg\\:col-span-5{grid-column:span 5/span 5!important}.lg\\:col-span-4{grid-column:span 4/span 4!important}.lg\\:col-span-3{grid-column:span 3/span 3!important}.lg\\:col-span-2{grid-column:span 2/span 2!important}.lg\\:col-span-1{grid-column:span 1/span 1!important}}@media (min-width: 768px) and (max-width: 1023px){.md\\:col-span-12{grid-column:span 12/span 12!important}.md\\:col-span-11{grid-column:span 11/span 11!important}.md\\:col-span-10{grid-column:span 10/span 10!important}.md\\:col-span-9{grid-column:span 9/span 9!important}.md\\:col-span-8{grid-column:span 8/span 8!important}.md\\:col-span-7{grid-column:span 7/span 7!important}.md\\:col-span-6{grid-column:span 6/span 6!important}.md\\:col-span-5{grid-column:span 5/span 5!important}.md\\:col-span-4{grid-column:span 4/span 4!important}.md\\:col-span-3{grid-column:span 3/span 3!important}.md\\:col-span-2{grid-column:span 2/span 2!important}.md\\:col-span-1{grid-column:span 1/span 1!important}}.col-span-12{grid-column:span 12/span 12}.col-span-11{grid-column:span 11/span 11}.col-span-10{grid-column:span 10/span 10}.col-span-9{grid-column:span 9/span 9}.col-span-8{grid-column:span 8/span 8}.col-span-7{grid-column:span 7/span 7}.col-span-6{grid-column:span 6/span 6}.col-span-5{grid-column:span 5/span 5}.col-span-4{grid-column:span 4/span 4}.col-span-3{grid-column:span 3/span 3}.col-span-2{grid-column:span 2/span 2}.col-span-1{grid-column:span 1/span 1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: CustomTableComponent, selector: "custom-table", inputs: ["data", "searchString", "required", "isLoading", "configuration"], outputs: ["cellClicked", "selectionChanged"] }] });
302
300
  }
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxMatEntityTableComponent, decorators: [{
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NgxMatEntityTableComponent, decorators: [{
304
302
  type: Component,
305
303
  args: [{ selector: 'ngx-mat-entity-table', standalone: true, imports: [
306
304
  CommonModule,
@@ -312,12 +310,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
312
310
  MatMenuModule,
313
311
  MatDialogModule,
314
312
  MatProgressSpinnerModule,
315
- NgxMatEntityCreateDialogComponent,
316
- NgxMatEntityEditDialogComponent,
317
- DisplayColumnValueComponent,
318
- DynamicStyleClassDirective,
319
313
  CustomTableComponent
320
- ], template: " \n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput [(ngModel)]=\"searchString\">\n </mat-form-field>\n @if (data.baseData.tableActions.length) {\n <div\n [class.col-lg-2]=\"allowCreate\"\n [class.col-lg-4]=\"!allowCreate\"\n [class.col-md-3]=\"allowCreate\"\n [class.col-md-6]=\"!allowCreate\"\n [class.col-sm-6]=\"allowCreate\"\n [class.col-sm-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n }\n <mat-menu #menu=\"matMenu\">\n @if (data.baseData.allowJsonImport) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n }\n @for (action of data.baseData.tableActions; track $index) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n }\n </mat-menu>\n\n @if (allowCreate) {\n <div\n [class.col-lg-2]=\"data.baseData.tableActions.length\"\n [class.col-lg-4]=\"!data.baseData.tableActions.length\"\n [class.col-md-3]=\"data.baseData.tableActions.length\"\n [class.col-md-6]=\"!data.baseData.tableActions.length\"\n [class.col-sm-6]=\"data.baseData.tableActions.length\"\n [class.col-sm-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n }\n</div>\n\n<div class=\"mat-elevation-z8\">\n <custom-table\n [configuration]=\"tableConfig\"\n [data]=\"entities\"\n [isLoading]=\"isLoading\"\n [searchString]=\"searchString\"\n (cellClicked)=\"editEntity($event.value)\"\n (selectionChanged)=\"selected = $event\"\n >\n </custom-table>\n</div>", styles: ["button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"] }]
314
+ ], template: " \n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"grid grid-cols-12\" style=\"column-gap: 24px;\">\n <mat-form-field class=\"lg:col-span-8 md:col-span-6 col-span-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput [(ngModel)]=\"searchString\">\n </mat-form-field>\n @if (data.baseData.tableActions.length) {\n <div\n [class.lg:col-span-2]=\"allowCreate\"\n [class.lg:col-span-4]=\"!allowCreate\"\n [class.md:col-span-3]=\"allowCreate\"\n [class.md:col-span-6]=\"!allowCreate\"\n [class.col-span-6]=\"allowCreate\"\n [class.col-span-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n }\n <mat-menu #menu=\"matMenu\">\n @if (data.baseData.allowJsonImport) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n }\n @for (action of data.baseData.tableActions; track $index) {\n <button type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n }\n </mat-menu>\n\n @if (allowCreate) {\n <div\n [class.lg:col-span-2]=\"data.baseData.tableActions.length\"\n [class.lg:col-span-4]=\"!data.baseData.tableActions.length\"\n [class.md:col-span-3]=\"data.baseData.tableActions.length\"\n [class.md:col-span-6]=\"!data.baseData.tableActions.length\"\n [class.col-span-6]=\"data.baseData.tableActions.length\"\n [class.col-span-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n }\n</div>\n\n<div class=\"mat-elevation-z8\">\n <custom-table\n [configuration]=\"tableConfig\"\n [data]=\"entities\"\n [isLoading]=\"isLoading\"\n [searchString]=\"searchString\"\n (cellClicked)=\"editEntity($event.value)\"\n (selectionChanged)=\"selected = $event\"\n >\n </custom-table>\n</div>", styles: ["button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n", ".grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid{display:grid}@media (min-width: 1024px){.lg\\:col-span-12{grid-column:span 12/span 12!important}.lg\\:col-span-11{grid-column:span 11/span 11!important}.lg\\:col-span-10{grid-column:span 10/span 10!important}.lg\\:col-span-9{grid-column:span 9/span 9!important}.lg\\:col-span-8{grid-column:span 8/span 8!important}.lg\\:col-span-7{grid-column:span 7/span 7!important}.lg\\:col-span-6{grid-column:span 6/span 6!important}.lg\\:col-span-5{grid-column:span 5/span 5!important}.lg\\:col-span-4{grid-column:span 4/span 4!important}.lg\\:col-span-3{grid-column:span 3/span 3!important}.lg\\:col-span-2{grid-column:span 2/span 2!important}.lg\\:col-span-1{grid-column:span 1/span 1!important}}@media (min-width: 768px) and (max-width: 1023px){.md\\:col-span-12{grid-column:span 12/span 12!important}.md\\:col-span-11{grid-column:span 11/span 11!important}.md\\:col-span-10{grid-column:span 10/span 10!important}.md\\:col-span-9{grid-column:span 9/span 9!important}.md\\:col-span-8{grid-column:span 8/span 8!important}.md\\:col-span-7{grid-column:span 7/span 7!important}.md\\:col-span-6{grid-column:span 6/span 6!important}.md\\:col-span-5{grid-column:span 5/span 5!important}.md\\:col-span-4{grid-column:span 4/span 4!important}.md\\:col-span-3{grid-column:span 3/span 3!important}.md\\:col-span-2{grid-column:span 2/span 2!important}.md\\:col-span-1{grid-column:span 1/span 1!important}}.col-span-12{grid-column:span 12/span 12}.col-span-11{grid-column:span 11/span 11}.col-span-10{grid-column:span 10/span 10}.col-span-9{grid-column:span 9/span 9}.col-span-8{grid-column:span 8/span 8}.col-span-7{grid-column:span 7/span 7}.col-span-6{grid-column:span 6/span 6}.col-span-5{grid-column:span 5/span 5}.col-span-4{grid-column:span 4/span 4}.col-span-3{grid-column:span 3/span 3}.col-span-2{grid-column:span 2/span 2}.col-span-1{grid-column:span 1/span 1}\n"] }]
321
315
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i0.EnvironmentInjector }, { type: i2.Router }, { type: undefined, decorators: [{
322
316
  type: Inject,
323
317
  args: [NGX_COMPLETE_GLOBAL_DEFAULT_VALUES]
@@ -327,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
327
321
  }], unsavedDialogChanges: [{
328
322
  type: Output
329
323
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQTRCLDZCQUE2QixFQUFFLE1BQU0s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LGtCQUFrQiw4QkFDbEIsYUFBYSw4QkFDYixlQUFlLDJOQUNmLGFBQWEsNnZCQUNiLGVBQWUsOEJBQ2Ysd0JBQXdCLCtCQUt4QixvQkFBb0I7OzJGQUdmLDBCQUEwQjtrQkF0QnRDLFNBQVM7K0JBQ0ksc0JBQXNCLGNBR3BCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixpQ0FBaUM7d0JBQ2pDLCtCQUErQjt3QkFDL0IsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLG9CQUFvQjtxQkFDdkI7OzBCQTZESSxNQUFNOzJCQUFDLGtDQUFrQzt5Q0FyRDlDLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT2hCLG9CQUFvQjtzQkFENUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcmVhdGVFbnRpdHlEYXRhSW50ZXJuYWwsIENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyIH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbHVtblZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5LWNvbHVtbi12YWx1ZS9kaXNwbGF5LWNvbHVtbi12YWx1ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRhdGEnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIsIEVkaXRFbnRpdHlEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LmJ1aWxkZXInO1xuaW1wb3J0IHsgRGlzcGxheUNvbHVtbiwgVGFibGVEYXRhIH0gZnJvbSAnLi90YWJsZS1kYXRhJztcbmltcG9ydCB7IEJhc2VUYWJsZUFjdGlvbkludGVybmFsLCBUYWJsZUFjdGlvbkludGVybmFsLCBUYWJsZURhdGFCdWlsZGVyLCBUYWJsZURhdGFJbnRlcm5hbCB9IGZyb20gJy4vdGFibGUtZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHkgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljU3R5bGVDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1zdHlsZS1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUywgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVGFibGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS1jb25maWd1cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEN1c3RvbVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGZ1bGx5IGZ1bmN0aW9uYWwgdGFibGUgZm9yIGRpc3BsYXlpbmcsIGNyZWF0aW5nLCB1cGRhdGluZyBhbmQgZGVsZXRpbmcgZW50aXRpZXNcbiAqIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHBhc3NlZCBpbiB0aGUgQElucHV0IFwidGFibGVEYXRhXCIuXG4gKlxuICogSXQgb2ZmZXJzIGEgbG90IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyB3aGljaCBjYW4gYmUgZm91bmQgaW4gXCJUYWJsZURhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRTb3J0TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpc3BsYXlDb2x1bW5WYWx1ZUNvbXBvbmVudCxcbiAgICAgICAgRHluYW1pY1N0eWxlQ2xhc3NEaXJlY3RpdmUsXG4gICAgICAgIEN1c3RvbVRhYmxlQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlUYWJsZUNvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5Pj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICB0YWJsZURhdGEhOiBUYWJsZURhdGE8RW50aXR5VHlwZT47XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgb24gZWl0aGVyIHRoZSBjcmVhdGUgb3IgdXBkYXRlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB1bnNhdmVkRGlhbG9nQ2hhbmdlczogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGludGVybmFsIFRhYmxlRGF0YS5cbiAgICAgKi9cbiAgICBkYXRhITogVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUuXG4gICAgICovXG4gICAgdGFibGVDb25maWchOiBDdXN0b21UYWJsZUNvbmZpZ3VyYXRpb248RW50aXR5VHlwZT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXRpZXMgdG8gZGlzcGxheSBpbnNpZGUgdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGVudGl0aWVzITogRW50aXR5VHlwZVtdO1xuXG4gICAgLyoqXG4gICAgICogQSBzZWFyY2ggc3RyaW5nIGZvciBmaWx0ZXJpbmcgdGFibGUgcmVzdWx0cy5cbiAgICAgKi9cbiAgICBzZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBlbnRpdGllcy5cbiAgICAgKi9cbiAgICBzZWxlY3RlZDogRW50aXR5VHlwZVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGFibGUgY29udGVudCBpcyBjdXJyZW50bHkgbG9hZGluZy5cbiAgICAgKi9cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBjcmVhdGUgZW50cmllcyBmb3IgdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGFsbG93Q3JlYXRlITogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZSE6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW50ZXJuYWwgQmFzZVRhYmxlQWN0aW9uLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICAgICAqL1xuICAgIGltcG9ydEFjdGlvbiE6IEJhc2VUYWJsZUFjdGlvbkludGVybmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIEBJbmplY3QoTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXNcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlIGFuZCB0aGUgRW50aXR5U2VydmljZS5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFRhYmxlRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIHRoaXMudGFibGVEYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dDcmVhdGUgPSB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dDcmVhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW50aXR5U2VydmljZSA9IGluamVjdDxFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+Pih0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbXBvcnRBY3Rpb24gPSBuZXcgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwoe1xuICAgICAgICAgICAgLi4udGhpcy5kYXRhLmJhc2VEYXRhLmltcG9ydEFjdGlvbkRhdGEsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc3RhcnRJbXBvcnRKc29uKClcbiAgICAgICAgfSwgdGhpcy5nbG9iYWxDb25maWcpO1xuXG4gICAgICAgIHRoaXMudGFibGVDb25maWcgPSB7XG4gICAgICAgICAgICBkaXNwbGF5Q29sdW1uczogdGhpcy50YWJsZURhdGEuYmFzZURhdGEuZGlzcGxheUNvbHVtbnMsXG4gICAgICAgICAgICB3aXRoU2VsZWN0aW9uOiAhIXRoaXMuZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMuZmlsdGVyKHRBID0+IHRBLnR5cGUgPT09ICdtdWx0aS1zZWxlY3QnKS5sZW5ndGgsXG4gICAgICAgICAgICBhbGxvd0NsaWNrOiAodmFsdWUpID0+IHRoaXMuYWxsb3dSZWFkKHZhbHVlKSB8fCB0aGlzLmFsbG93VXBkYXRlKHZhbHVlKSxcbiAgICAgICAgICAgIGR5bmFtaWNSb3dTdHlsZUNsYXNzZXM6IHRoaXMuZGF0YS5iYXNlRGF0YS5keW5hbWljUm93U3R5bGVDbGFzc2VzLFxuICAgICAgICAgICAgc2VhcmNoU3RyaW5nRm9yUm93OiB0aGlzLmRhdGEuYmFzZURhdGEuc2VhcmNoU3RyaW5nXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlLmVudGl0aWVzU3ViamVjdC5zdWJzY3JpYmUoKGVudGl0aWVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVudGl0aWVzID0gWy4uLmVudGl0aWVzXTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLnJlYWQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGNvbHVtbi5cbiAgICAgKiBSdW5zIGluIGVudmlyb25tZW50IGNvbnRleHQgdG8gZW5hYmxlIGluamVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHBhcmFtIGRpc3BsYXlDb2x1bW4gLSBUaGUgZGlzcGxheSBjb2x1bW4gdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgZGlzcGxheSBjb2x1bW4uXG4gICAgICovXG4gICAgZ2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eTogRW50aXR5VHlwZSwgZGlzcGxheUNvbHVtbjogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Q29sdW1uLnZhbHVlKGVudGl0eSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRJbXBvcnRKc29uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0LnR5cGUgPSAnZmlsZSc7XG4gICAgICAgIGlucHV0LmFjY2VwdCA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmltcG9ydEpzb24oaW5wdXQuZmlsZXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW1wb3J0SnNvbihmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmltcG9ydEFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLmNvbmZpcm1EaWFsb2dEYXRhLnRleHQpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgdGhpcy5pbXBvcnRBY3Rpb24uZGlzcGxheU5hbWUpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlczogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKTtcbiAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UuaW1wb3J0KGZpbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdHMgYW4gZW50aXR5LiBUaGlzIGVpdGhlciBjYWxscyB0aGUgZWRpdC1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdGhhdCBzaG91bGQgYmUgdXBkYXRlZC5cbiAgICAgKiBAdGhyb3dzIFdoZW4gbm8gRW50aXR5Q2xhc3Mgd2FzIHByb3ZpZGVkLCBhcyBhIG5ldyBjYWxsIGlzIG5lZWRlZCB0byBpbml0aWFsaXplIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIGVkaXRFbnRpdHkoZW50aXR5OiBFbnRpdHlUeXBlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdERlZmF1bHRQYWdlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVkaXREZWZhdWx0RGlhbG9nKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1cGRhdGluZyB0aGUgcHJvdmlkZWQgZW50aXR5IGlzIGFsbG93ZWQuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdGhhdCB0aGUgdXNlciB3YW50cyB0byBlZGl0LlxuICAgICAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgcHJvdmlkZWQgZW50aXR5IGFuZCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgYWxsb3dVcGRhdGUoZW50aXR5OiBFbnRpdHlUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZShlbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHZpZXdpbmcgdGhlIHByb3ZpZGVkIGVudGl0eSBpcyBhbGxvd2VkLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gdmlldy5cbiAgICAgKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHByb3ZpZGVkIGVudGl0eSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGFsbG93UmVhZChlbnRpdHk6IEVudGl0eVR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVkaXREZWZhdWx0UGFnZShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJycsIHRoaXMuZW50aXR5U2VydmljZS5lZGl0QmFzZVJvdXRlLCBlbnRpdHkuaWRdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVkaXREZWZhdWx0RGlhbG9nKGVudGl0eTogRW50aXR5VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dERpYWxvZ0RhdGE6IEVkaXRFbnRpdHlEYXRhPEVudGl0eVR5cGU+ID0ge1xuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICBhbGxvd1VwZGF0ZTogdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlLFxuICAgICAgICAgICAgYWxsb3dEZWxldGU6IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSxcbiAgICAgICAgICAgIGVkaXREYXRhOiB0aGlzLmRhdGEuZWRpdERhdGFcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogRWRpdEVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIoaW5wdXREaWFsb2dEYXRhLCB0aGlzLmdsb2JhbENvbmZpZykuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQ8QmFzZUVudGl0eVR5cGU8dW5rbm93bj4+LCBudW1iZXI+ID0gdGhpcy5kaWFsb2cub3BlbihcbiAgICAgICAgICAgIE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UudW5zYXZlZENoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLnVuc2F2ZWREaWFsb2dDaGFuZ2VzLmVtaXQocmVzKSk7XG4gICAgICAgIGNvbnN0IHJlczogbnVtYmVyIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpO1xuICAgICAgICB0aGlzLnVuc2F2ZWREaWFsb2dDaGFuZ2VzLmVtaXQoZmFsc2UpO1xuICAgICAgICBpZiAocmVzID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmVudGl0aWVzW3RoaXMuZW50aXRpZXMuZmluZEluZGV4KChlKSA9PiBlW3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0gPT09IGVudGl0eVt0aGlzLmVudGl0eVNlcnZpY2UuaWRLZXldKV0gPSBlbnRpdHk7XG4gICAgICAgICAgICB0aGlzLmVudGl0aWVzID0gdGhpcy5lbnRpdGllcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgRW50aXR5LiBUaGlzIGVpdGhlciBjYWxscyB0aGUgY3JlYXRlLU1ldGhvZCBwcm92aWRlZCBieSB0aGUgdXNlciBvciB1c2VzIGEgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRW50aXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0NyZWF0ZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVudGl0eTogRW50aXR5VHlwZSA9IG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoKTtcbiAgICAgICAgICAgIEVudGl0eVV0aWxpdGllcy5zZXREZWZhdWx0VmFsdWVzKGVudGl0eSk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmRlZmF1bHRDcmVhdGUgPT0gJ3BhZ2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0UGFnZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZvaWQgdGhpcy5jcmVhdGVEZWZhdWx0RGlhbG9nKGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZURlZmF1bHRQYWdlKCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5lbnRpdHlTZXJ2aWNlLmNyZWF0ZUJhc2VSb3V0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjcmVhdGVEZWZhdWx0RGlhbG9nKGVudGl0eTogRW50aXR5VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDcmVhdGVFbnRpdHlEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgICAgIGNyZWF0ZURhdGE6IHRoaXMuZGF0YS5jcmVhdGVEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5nbG9iYWxDb25maWdcbiAgICAgICAgKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50PEJhc2VFbnRpdHlUeXBlPHVua25vd24+Pj4gPSB0aGlzLmRpYWxvZy5vcGVuKFxuICAgICAgICAgICAgTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzYwJScsXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS51bnNhdmVkQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHRoaXMudW5zYXZlZERpYWxvZ0NoYW5nZXMuZW1pdChyZXMpKTtcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpO1xuICAgICAgICB0aGlzLnVuc2F2ZWREaWFsb2dDaGFuZ2VzLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJ1bnMgdGhlIFRhYmxlQWN0aW9uIGZvciBhbGwgc2VsZWN0ZWQgZW50cmllcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgY29uZmlybWF0aW9uIHdpdGggYW4gYWRkaXRpb25hbCBkaWFsb2cgaWYgY29uZmlndXJlZC5cbiAgICAgKiBAcGFyYW0gYWN0aW9uIC0gVGhlIFRhYmxlQWN0aW9uIHRvIHJ1bi5cbiAgICAgKi9cbiAgICBhc3luYyBydW5UYWJsZUFjdGlvbihhY3Rpb246IFRhYmxlQWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXF1aXJlQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb25maXJtUnVuVGFibGVBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogYWN0aW9uLmNvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlczogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKTtcbiAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpcm1SdW5UYWJsZUFjdGlvbihhY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjb25maXJtUnVuVGFibGVBY3Rpb24oYWN0aW9uOiBUYWJsZUFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBhY3Rpb24uYWN0aW9uKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYW4gVGFibGVBY3Rpb24gaXMgZGlzYWJsZWQgKGUuZy4gQmVjYXVzZSBubyBlbnRyaWVzIGhhdmUgYmVlbiBzZWxlY3RlZCkuXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBUYWJsZUFjdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgQWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqL1xuICAgIHRhYmxlQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBUYWJsZUFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFhY3Rpb24uZW5hYmxlZCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSIsIiBcbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48aDEgY2xhc3M9XCJ0aXRsZVwiPnt7ZGF0YS5iYXNlRGF0YS50aXRsZX19PC9oMT5cblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC02IGNvbC1zbS0xMlwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7ZGF0YS5iYXNlRGF0YS5zZWFyY2hMYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaFN0cmluZ1wiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgQGlmIChkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzLmNvbC1sZy0yXT1cImFsbG93Q3JlYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtbGctNF09XCIhYWxsb3dDcmVhdGVcIlxuICAgICAgICAgICAgW2NsYXNzLmNvbC1tZC0zXT1cImFsbG93Q3JlYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtbWQtNl09XCIhYWxsb3dDcmVhdGVcIlxuICAgICAgICAgICAgW2NsYXNzLmNvbC1zbS02XT1cImFsbG93Q3JlYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtc20tMTJdPVwiIWFsbG93Q3JlYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhY3Rpb25zLWJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9uc0xhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICBAaWYgKGRhdGEuYmFzZURhdGEuYWxsb3dKc29uSW1wb3J0KSB7XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCJ0YWJsZUFjdGlvbkRpc2FibGVkKGltcG9ydEFjdGlvbilcIiAoY2xpY2spPVwicnVuVGFibGVBY3Rpb24oaW1wb3J0QWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgIHt7aW1wb3J0QWN0aW9uLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCJ0YWJsZUFjdGlvbkRpc2FibGVkKGFjdGlvbilcIiAoY2xpY2spPVwicnVuVGFibGVBY3Rpb24oYWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgIHt7YWN0aW9uLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9tYXQtbWVudT5cblxuICAgIEBpZiAoYWxsb3dDcmVhdGUpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzLmNvbC1sZy0yXT1cImRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbY2xhc3MuY29sLWxnLTRdPVwiIWRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtbWQtNl09XCIhZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtc20tNl09XCJkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcmVhdGUtYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNyZWF0ZUVudGl0eSgpXCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejhcIj5cbiAgICA8Y3VzdG9tLXRhYmxlXG4gICAgICAgIFtjb25maWd1cmF0aW9uXT1cInRhYmxlQ29uZmlnXCJcbiAgICAgICAgW2RhdGFdPVwiZW50aXRpZXNcIlxuICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgIFtzZWFyY2hTdHJpbmddPVwic2VhcmNoU3RyaW5nXCJcbiAgICAgICAgKGNlbGxDbGlja2VkKT1cImVkaXRFbnRpdHkoJGV2ZW50LnZhbHVlKVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cInNlbGVjdGVkID0gJGV2ZW50XCJcbiAgICA+XG4gICAgPC9jdXN0b20tdGFibGU+XG48L2Rpdj4iXX0=
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQTRCLDZCQUE2QixFQUFFLE1BQU0s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QkFBMEI7a0JBbEJ0QyxTQUFTOytCQUNJLHNCQUFzQixjQUdwQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3FCQUN2Qjs7MEJBNkRJLE1BQU07MkJBQUMsa0NBQWtDO3lDQXJEOUMsU0FBUztzQkFEUixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPaEIsb0JBQW9CO3NCQUQ1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENyZWF0ZUVudGl0eURhdGFJbnRlcm5hbCwgQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIgfSBmcm9tICcuL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YSB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRFbnRpdHlEYXRhQnVpbGRlciwgRWRpdEVudGl0eURhdGFJbnRlcm5hbCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHkuYnVpbGRlcic7XG5pbXBvcnQgeyBEaXNwbGF5Q29sdW1uLCBUYWJsZURhdGEgfSBmcm9tICcuL3RhYmxlLWRhdGEnO1xuaW1wb3J0IHsgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwsIFRhYmxlQWN0aW9uSW50ZXJuYWwsIFRhYmxlRGF0YUJ1aWxkZXIsIFRhYmxlRGF0YUludGVybmFsIH0gZnJvbSAnLi90YWJsZS1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMsIE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbVRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBDdXN0b21UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50JztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmdWxseSBmdW5jdGlvbmFsIHRhYmxlIGZvciBkaXNwbGF5aW5nLCBjcmVhdGluZywgdXBkYXRpbmcgYW5kIGRlbGV0aW5nIGVudGl0aWVzXG4gKiBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgaW4gdGhlIEBJbnB1dCBcInRhYmxlRGF0YVwiLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiVGFibGVEYXRhXCIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnLCAnLi4vLi4vc2Nzcy90YWlsd2luZC1jbGFzc2VzLnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0U29ydE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgQ3VzdG9tVGFibGVDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eVRhYmxlQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHk+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHRhYmxlRGF0YSE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyBvbiBlaXRoZXIgdGhlIGNyZWF0ZSBvciB1cGRhdGUgZGlhbG9nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHVuc2F2ZWREaWFsb2dDaGFuZ2VzOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLlxuICAgICAqL1xuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICB0YWJsZUNvbmZpZyE6IEN1c3RvbVRhYmxlQ29uZmlndXJhdGlvbjxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdGllcyB0byBkaXNwbGF5IGluc2lkZSB0aGUgdGFibGUuXG4gICAgICovXG4gICAgZW50aXRpZXMhOiBFbnRpdHlUeXBlW107XG5cbiAgICAvKipcbiAgICAgKiBBIHNlYXJjaCBzdHJpbmcgZm9yIGZpbHRlcmluZyB0YWJsZSByZXN1bHRzLlxuICAgICAqL1xuICAgIHNlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHNlbGVjdGVkOiBFbnRpdHlUeXBlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB0YWJsZSBjb250ZW50IGlzIGN1cnJlbnRseSBsb2FkaW5nLlxuICAgICAqL1xuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBlbnRyaWVzIGZvciB0aGUgdGFibGUuXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlITogRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnRlcm5hbCBCYXNlVGFibGVBY3Rpb24uIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICovXG4gICAgaW1wb3J0QWN0aW9uITogQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgQEluamVjdChOR1hfQ09NUExFVEVfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgYWxsIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUgYW5kIHRoZSBFbnRpdHlTZXJ2aWNlLlxuICAgICAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgVGFibGVEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgdGhpcy50YWJsZURhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxvd0NyZWF0ZSA9IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlID0gaW5qZWN0PEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4+KHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmltcG9ydEFjdGlvbiA9IG5ldyBCYXNlVGFibGVBY3Rpb25JbnRlcm5hbCh7XG4gICAgICAgICAgICAuLi50aGlzLmRhdGEuYmFzZURhdGEuaW1wb3J0QWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5zdGFydEltcG9ydEpzb24oKVxuICAgICAgICB9LCB0aGlzLmdsb2JhbENvbmZpZyk7XG5cbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZyA9IHtcbiAgICAgICAgICAgIGRpc3BsYXlDb2x1bW5zOiB0aGlzLnRhYmxlRGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucyxcbiAgICAgICAgICAgIHdpdGhTZWxlY3Rpb246ICEhdGhpcy5kYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5maWx0ZXIodEEgPT4gdEEudHlwZSA9PT0gJ211bHRpLXNlbGVjdCcpLmxlbmd0aCxcbiAgICAgICAgICAgIGFsbG93Q2xpY2s6ICh2YWx1ZSkgPT4gdGhpcy5hbGxvd1JlYWQodmFsdWUpIHx8IHRoaXMuYWxsb3dVcGRhdGUodmFsdWUpLFxuICAgICAgICAgICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3NlczogdGhpcy5kYXRhLmJhc2VEYXRhLmR5bmFtaWNSb3dTdHlsZUNsYXNzZXMsXG4gICAgICAgICAgICBzZWFyY2hTdHJpbmdGb3JSb3c6IHRoaXMuZGF0YS5iYXNlRGF0YS5zZWFyY2hTdHJpbmdcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZW50aXRpZXNTdWJqZWN0LnN1YnNjcmliZSgoZW50aXRpZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXMgPSBbLi4uZW50aXRpZXNdO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW5cbiAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UucmVhZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgICAqIFJ1bnMgaW4gZW52aXJvbm1lbnQgY29udGV4dCB0byBlbmFibGUgaW5qZWN0aW9uLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRvIGdldCB0aGUgdmFsdWUgZnJvbS5cbiAgICAgKiBAcGFyYW0gZGlzcGxheUNvbHVtbiAtIFRoZSBkaXNwbGF5IGNvbHVtbiB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBkaXNwbGF5IGNvbHVtbi5cbiAgICAgKi9cbiAgICBnZXREaXNwbGF5Q29sdW1uVmFsdWUoZW50aXR5OiBFbnRpdHlUeXBlLCBkaXNwbGF5Q29sdW1uOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+KTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlDb2x1bW4udmFsdWUoZW50aXR5KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydEltcG9ydEpzb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaW5wdXQudHlwZSA9ICdmaWxlJztcbiAgICAgICAgaW5wdXQuYWNjZXB0ID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgICAgICBpbnB1dC5vbmNoYW5nZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5maWxlcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaW1wb3J0SnNvbihpbnB1dC5maWxlc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlucHV0LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbXBvcnRKc29uKGZpbGU6IEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIHRoaXMuaW1wb3J0QWN0aW9uLmNvbmZpcm1EaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgdGhpcy5kYXRhLmJhc2VEYXRhLmltcG9ydEFjdGlvbkRhdGEuY29uZmlybURpYWxvZ0RhdGEudGV4dClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCB0aGlzLmltcG9ydEFjdGlvbi5kaXNwbGF5TmFtZSlcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpO1xuICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW50aXR5U2VydmljZS5pbXBvcnQoZmlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFZGl0cyBhbiBlbnRpdHkuIFRoaXMgZWl0aGVyIGNhbGxzIHRoZSBlZGl0LU1ldGhvZCBwcm92aWRlZCBieSB0aGUgdXNlciBvciB1c2VzIGEgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgZWRpdEVudGl0eShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gXCJFbnRpdHlDbGFzc1wiIHNwZWNpZmllZCBmb3IgdGhpcyB0YWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEuZWRpdCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcyhlbnRpdHkpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmRlZmF1bHRFZGl0ID09ICdwYWdlJykge1xuICAgICAgICAgICAgdGhpcy5lZGl0RGVmYXVsdFBhZ2UobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcyhlbnRpdHkpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2b2lkIHRoaXMuZWRpdERlZmF1bHREaWFsb2cobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcyhlbnRpdHkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHVwZGF0aW5nIHRoZSBwcm92aWRlZCBlbnRpdHkgaXMgYWxsb3dlZC5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGVkaXQuXG4gICAgICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSB1c2VyIGNhbiBlZGl0IHRoZSBwcm92aWRlZCBlbnRpdHkgYW5kIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBhbGxvd1VwZGF0ZShlbnRpdHk6IEVudGl0eVR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlKGVudGl0eSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdmlld2luZyB0aGUgcHJvdmlkZWQgZW50aXR5IGlzIGFsbG93ZWQuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdGhhdCB0aGUgdXNlciB3YW50cyB0byB2aWV3LlxuICAgICAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gdmlldyB0aGUgcHJvdmlkZWQgZW50aXR5IGFuZCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgYWxsb3dSZWFkKGVudGl0eTogRW50aXR5VHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dSZWFkKGVudGl0eSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZWRpdERlZmF1bHRQYWdlKGVudGl0eTogRW50aXR5VHlwZSk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnJywgdGhpcy5lbnRpdHlTZXJ2aWNlLmVkaXRCYXNlUm91dGUsIGVudGl0eS5pZF0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZWRpdERlZmF1bHREaWFsb2coZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGlhbG9nRGF0YTogRWRpdEVudGl0eURhdGE8RW50aXR5VHlwZT4gPSB7XG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIEVudGl0eVNlcnZpY2VDbGFzczogdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eVNlcnZpY2VDbGFzcyxcbiAgICAgICAgICAgIGFsbG93VXBkYXRlOiB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dVcGRhdGUsXG4gICAgICAgICAgICBhbGxvd0RlbGV0ZTogdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93RGVsZXRlLFxuICAgICAgICAgICAgZWRpdERhdGE6IHRoaXMuZGF0YS5lZGl0RGF0YVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBFZGl0RW50aXR5RGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXRFbnRpdHlEYXRhQnVpbGRlcihpbnB1dERpYWxvZ0RhdGEsIHRoaXMuZ2xvYmFsQ29uZmlnKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudDxCYXNlRW50aXR5VHlwZTx1bmtub3duPj4sIG51bWJlcj4gPSB0aGlzLmRpYWxvZy5vcGVuKFxuICAgICAgICAgICAgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS51bnNhdmVkQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHRoaXMudW5zYXZlZERpYWxvZ0NoYW5nZXMuZW1pdChyZXMpKTtcbiAgICAgICAgY29uc3QgcmVzOiBudW1iZXIgfCB1bmRlZmluZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSk7XG4gICAgICAgIHRoaXMudW5zYXZlZERpYWxvZ0NoYW5nZXMuZW1pdChmYWxzZSk7XG4gICAgICAgIGlmIChyZXMgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5maW5kSW5kZXgoKGUpID0+IGVbdGhpcy5lbnRpdHlTZXJ2aWNlLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0pXSA9IGVudGl0eTtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBFbnRpdHkuIFRoaXMgZWl0aGVyIGNhbGxzIHRoZSBjcmVhdGUtTWV0aG9kIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG9yIHVzZXMgYSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuXG4gICAgICogQHRocm93cyBXaGVuIG5vIEVudGl0eUNsYXNzIHdhcyBwcm92aWRlZCwgYXMgYSBuZXcgY2FsbCBpcyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBtZXRhZGF0YS5cbiAgICAgKi9cbiAgICBjcmVhdGVFbnRpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93Q3JlYXRlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gXCJFbnRpdHlDbGFzc1wiIHNwZWNpZmllZCBmb3IgdGhpcyB0YWJsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZW50aXR5OiBFbnRpdHlUeXBlID0gbmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcygpO1xuICAgICAgICAgICAgRW50aXR5VXRpbGl0aWVzLnNldERlZmF1bHRWYWx1ZXMoZW50aXR5KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEuY3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmJhc2VEYXRhLmNyZWF0ZShlbnRpdHkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEuZGVmYXVsdENyZWF0ZSA9PSAncGFnZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHRQYWdlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdm9pZCB0aGlzLmNyZWF0ZURlZmF1bHREaWFsb2coZW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmVudGl0eVNlcnZpY2UuY3JlYXRlQmFzZVJvdXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZURlZmF1bHREaWFsb2coZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENyZWF0ZUVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhQnVpbGRlcihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICAgICAgY3JlYXRlRGF0YTogdGhpcy5kYXRhLmNyZWF0ZURhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmdsb2JhbENvbmZpZ1xuICAgICAgICApLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQ8QmFzZUVudGl0eVR5cGU8dW5rbm93bj4+PiA9IHRoaXMuZGlhbG9nLm9wZW4oXG4gICAgICAgICAgICBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnVuc2F2ZWRDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4gdGhpcy51bnNhdmVkRGlhbG9nQ2hhbmdlcy5lbWl0KHJlcykpO1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSk7XG4gICAgICAgIHRoaXMudW5zYXZlZERpYWxvZ0NoYW5nZXMuZW1pdChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVucyB0aGUgVGFibGVBY3Rpb24gZm9yIGFsbCBzZWxlY3RlZCBlbnRyaWVzLlxuICAgICAqIEFsc28gaGFuZGxlcyBjb25maXJtYXRpb24gd2l0aCBhbiBhZGRpdGlvbmFsIGRpYWxvZyBpZiBjb25maWd1cmVkLlxuICAgICAqIEBwYXJhbSBhY3Rpb24gLSBUaGUgVGFibGVBY3Rpb24gdG8gcnVuLlxuICAgICAqL1xuICAgIGFzeW5jIHJ1blRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXF1aXJlQ29uZmlybURpYWxvZzogYm9vbGVhbiA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnJlcXVpcmVDb25maXJtRGlhbG9nKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlcXVpcmVDb25maXJtRGlhbG9nKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpcm1SdW5UYWJsZUFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBhY3Rpb24uY29uZmlybURpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpO1xuICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNvbmZpcm1SdW5UYWJsZUFjdGlvbihhY3Rpb246IFRhYmxlQWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbi5hY3Rpb24odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhbiBUYWJsZUFjdGlvbiBpcyBkaXNhYmxlZCAoZS5nLiBCZWNhdXNlIG5vIGVudHJpZXMgaGF2ZSBiZWVuIHNlbGVjdGVkKS5cbiAgICAgKiBAcGFyYW0gYWN0aW9uIC0gVGhlIFRhYmxlQWN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBBY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgdGFibGVBY3Rpb25EaXNhYmxlZChhY3Rpb246IFRhYmxlQWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWFjdGlvbi5lbmFibGVkKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG59IiwiIFxuPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL25vLWNhbGwtZXhwcmVzc2lvbiAtLT5cbjxoMSBjbGFzcz1cInRpdGxlXCI+e3tkYXRhLmJhc2VEYXRhLnRpdGxlfX08L2gxPlxuXG48ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMTJcIiBzdHlsZT1cImNvbHVtbi1nYXA6IDI0cHg7XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibGc6Y29sLXNwYW4tOCBtZDpjb2wtc3Bhbi02IGNvbC1zcGFuLTEyXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3tkYXRhLmJhc2VEYXRhLnNlYXJjaExhYmVsfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwic2VhcmNoU3RyaW5nXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICBAaWYgKGRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3MubGc6Y29sLXNwYW4tMl09XCJhbGxvd0NyZWF0ZVwiXG4gICAgICAgICAgICBbY2xhc3MubGc6Y29sLXNwYW4tNF09XCIhYWxsb3dDcmVhdGVcIlxuICAgICAgICAgICAgW2NsYXNzLm1kOmNvbC1zcGFuLTNdPVwiYWxsb3dDcmVhdGVcIlxuICAgICAgICAgICAgW2NsYXNzLm1kOmNvbC1zcGFuLTZdPVwiIWFsbG93Q3JlYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtc3Bhbi02XT1cImFsbG93Q3JlYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb2wtc3Bhbi0xMl09XCIhYWxsb3dDcmVhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFjdGlvbnMtYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cbiAgICAgICAgICAgICAgICB7e2RhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zTGFiZWx9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIEBpZiAoZGF0YS5iYXNlRGF0YS5hbGxvd0pzb25JbXBvcnQpIHtcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cInRhYmxlQWN0aW9uRGlzYWJsZWQoaW1wb3J0QWN0aW9uKVwiIChjbGljayk9XCJydW5UYWJsZUFjdGlvbihpbXBvcnRBY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAge3tpbXBvcnRBY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoYWN0aW9uIG9mIGRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cInRhYmxlQWN0aW9uRGlzYWJsZWQoYWN0aW9uKVwiIChjbGljayk9XCJydW5UYWJsZUFjdGlvbihhY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAge3thY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L21hdC1tZW51PlxuXG4gICAgQGlmIChhbGxvd0NyZWF0ZSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3MubGc6Y29sLXNwYW4tMl09XCJkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgW2NsYXNzLmxnOmNvbC1zcGFuLTRdPVwiIWRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbY2xhc3MubWQ6Y29sLXNwYW4tM109XCJkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgW2NsYXNzLm1kOmNvbC1zcGFuLTZdPVwiIWRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbY2xhc3MuY29sLXNwYW4tNl09XCJkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgW2NsYXNzLmNvbC1zcGFuLTEyXT1cIiFkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNyZWF0ZS1idXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlRW50aXR5KClcIj5cbiAgICAgICAgICAgICAgICB7e2RhdGEuYmFzZURhdGEuY3JlYXRlQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiPlxuICAgIDxjdXN0b20tdGFibGVcbiAgICAgICAgW2NvbmZpZ3VyYXRpb25dPVwidGFibGVDb25maWdcIlxuICAgICAgICBbZGF0YV09XCJlbnRpdGllc1wiXG4gICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgW3NlYXJjaFN0cmluZ109XCJzZWFyY2hTdHJpbmdcIlxuICAgICAgICAoY2VsbENsaWNrZWQpPVwiZWRpdEVudGl0eSgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0ZWQgPSAkZXZlbnRcIlxuICAgID5cbiAgICA8L2N1c3RvbS10YWJsZT5cbjwvZGl2PiJdfQ==
@@ -1,22 +1,26 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { FaIconComponent } from '@fortawesome/angular-fontawesome';
3
+ import { faInfo } from '@fortawesome/free-solid-svg-icons';
2
4
  import { TooltipDirective } from '../../directives/tooltip.directive';
3
5
  import * as i0 from "@angular/core";
4
6
  /**
5
7
  * A component that displays an info-symbol and a tooltip when it is hovered/clicked.
6
8
  */
7
9
  export class TooltipComponent {
10
+ // eslint-disable-next-line jsdoc/require-jsdoc
11
+ faInfo = faInfo;
8
12
  /**
9
13
  * What to display inside the tooltip.
10
14
  */
11
15
  tooltipContent;
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: TooltipComponent, isStandalone: true, selector: "ngx-mat-entity-tooltip", inputs: { tooltipContent: "tooltipContent" }, ngImport: i0, template: "<div class=\"info\" [tooltip]=\"tooltipContent\">\n <i class=\"fas fa-info\"></i>\n</div>", styles: [".info{display:flex;align-items:center;justify-content:center;height:25px;min-height:25px;width:25px;min-width:25px;border:2px solid black;border-radius:50%}.info:hover{cursor:pointer;background-color:#e3e3e3}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[tooltip]", inputs: ["tooltip"] }] });
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: TooltipComponent, isStandalone: true, selector: "ngx-mat-entity-tooltip", inputs: { tooltipContent: "tooltipContent" }, ngImport: i0, template: "<div class=\"info\" [tooltip]=\"tooltipContent\">\n <fa-icon [icon]=\"faInfo\"></fa-icon>\n</div>", styles: [".info{display:flex;align-items:center;justify-content:center;height:25px;min-height:25px;width:25px;min-width:25px;border:2px solid black;border-radius:50%}.info:hover{cursor:pointer;background-color:#e3e3e3}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[tooltip]", inputs: ["tooltip"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
14
18
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TooltipComponent, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: TooltipComponent, decorators: [{
16
20
  type: Component,
17
- args: [{ selector: 'ngx-mat-entity-tooltip', standalone: true, imports: [TooltipDirective], template: "<div class=\"info\" [tooltip]=\"tooltipContent\">\n <i class=\"fas fa-info\"></i>\n</div>", styles: [".info{display:flex;align-items:center;justify-content:center;height:25px;min-height:25px;width:25px;min-width:25px;border:2px solid black;border-radius:50%}.info:hover{cursor:pointer;background-color:#e3e3e3}\n"] }]
21
+ args: [{ selector: 'ngx-mat-entity-tooltip', standalone: true, imports: [TooltipDirective, FaIconComponent], template: "<div class=\"info\" [tooltip]=\"tooltipContent\">\n <fa-icon [icon]=\"faInfo\"></fa-icon>\n</div>", styles: [".info{display:flex;align-items:center;justify-content:center;height:25px;min-height:25px;width:25px;min-width:25px;border:2px solid black;border-radius:50%}.info:hover{cursor:pointer;background-color:#e3e3e3}\n"] }]
18
22
  }], propDecorators: { tooltipContent: [{
19
23
  type: Input,
20
24
  args: [{ required: true }]
21
25
  }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFFdEU7O0dBRUc7QUFRSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCOztPQUVHO0lBRUgsY0FBYyxDQUFVO3VHQUxmLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLGdJQ2Q3Qiw4RkFFTSw0UURVUSxnQkFBZ0I7OzJGQUVqQixnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0ksd0JBQXdCLGNBR3RCLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDOzhCQU8zQixjQUFjO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b29sdGlwLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhbiBpbmZvLXN5bWJvbCBhbmQgYSB0b29sdGlwIHdoZW4gaXQgaXMgaG92ZXJlZC9jbGlja2VkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXQtZW50aXR5LXRvb2x0aXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVG9vbHRpcERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogV2hhdCB0byBkaXNwbGF5IGluc2lkZSB0aGUgdG9vbHRpcC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHRvb2x0aXBDb250ZW50ITogc3RyaW5nO1xufSIsIjxkaXYgY2xhc3M9XCJpbmZvXCIgW3Rvb2x0aXBdPVwidG9vbHRpcENvbnRlbnRcIj5cbiAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvXCI+PC9pPlxuPC9kaXY+Il19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFFdEU7O0dBRUc7QUFRSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLCtDQUErQztJQUMvQyxNQUFNLEdBQW1CLE1BQU0sQ0FBQztJQUVoQzs7T0FFRztJQUVILGNBQWMsQ0FBVTt1R0FUZixnQkFBZ0I7MkZBQWhCLGdCQUFnQixnSUNoQjdCLHNHQUVNLDRRRFlRLGdCQUFnQiwyRUFBRSxlQUFlOzsyRkFFbEMsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNJLHdCQUF3QixjQUd0QixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUM7OEJBVzVDLGNBQWM7c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQsIEljb25EZWZpbml0aW9uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFJbmZvIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdG9vbHRpcC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW4gaW5mby1zeW1ib2wgYW5kIGEgdG9vbHRpcCB3aGVuIGl0IGlzIGhvdmVyZWQvY2xpY2tlZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS10b29sdGlwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1Rvb2x0aXBEaXJlY3RpdmUsIEZhSWNvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCB7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZhSW5mbzogSWNvbkRlZmluaXRpb24gPSBmYUluZm87XG5cbiAgICAvKipcbiAgICAgKiBXaGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSB0b29sdGlwLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgdG9vbHRpcENvbnRlbnQhOiBzdHJpbmc7XG59IiwiPGRpdiBjbGFzcz1cImluZm9cIiBbdG9vbHRpcF09XCJ0b29sdGlwQ29udGVudFwiPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhSW5mb1wiPjwvZmEtaWNvbj5cbjwvZGl2PiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { faCircleMinus } from '@fortawesome/free-solid-svg-icons';
1
2
  import { ConfirmDialogDataBuilder } from '../../components/confirm-dialog/confirm-dialog-data.builder';
2
3
  import { defaultDynamicStyleClasses } from '../../functions/default-style-classes.function';
3
4
  import { getConfigValue } from '../../functions/get-config-value.function';
@@ -238,7 +239,7 @@ export class StringChipsArrayDecoratorConfigInternal extends PropertyDecoratorCo
238
239
  regex;
239
240
  constructor(data, globalConfig) {
240
241
  super(data);
241
- this.deleteIcon = data.deleteIcon ?? 'fas fa-circle-minus';
242
+ this.deleteIcon = data.deleteIcon ?? faCircleMinus;
242
243
  this.itemType = data.itemType;
243
244
  this.allowDuplicates = data.allowDuplicates ?? false;
244
245
  this.duplicatesErrorDialog = getDefaultDuplicateErrorDialogData(data, globalConfig);
@@ -273,7 +274,7 @@ export class AutocompleteStringChipsArrayDecoratorConfigInternal extends Propert
273
274
  constructor(data, globalConfig) {
274
275
  super(data);
275
276
  this.autocompleteValues = this.autocompleteValuesToFunction(data.autocompleteValues);
276
- this.deleteIcon = data.deleteIcon ?? 'fas fa-circle-minus';
277
+ this.deleteIcon = data.deleteIcon ?? faCircleMinus;
277
278
  this.itemType = data.itemType;
278
279
  this.allowDuplicates = data.allowDuplicates ?? false;
279
280
  this.duplicatesErrorDialog = getDefaultDuplicateErrorDialogData(data, globalConfig);
@@ -286,6 +287,7 @@ export class AutocompleteStringChipsArrayDecoratorConfigInternal extends Propert
286
287
  // eslint-disable-next-line typescript/no-explicit-any
287
288
  autocompleteValuesToFunction(autocompleteValues) {
288
289
  if (Array.isArray(autocompleteValues)) {
290
+ // eslint-disable-next-line typescript/require-await
289
291
  return async () => autocompleteValues;
290
292
  }
291
293
  // eslint-disable-next-line typescript/no-explicit-any
@@ -305,4 +307,4 @@ function getDefaultDuplicateErrorDialogData(data, globalConfig) {
305
307
  .withDefault('title', globalConfig.duplicateErrorTitle)
306
308
  .getResult();
307
309
  }
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGVjb3JhdG9yLWludGVybmFsLmRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRXZHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsYUFBYSxFQUFRLE1BQU0sZ0NBQWdDLENBQUM7QUFHckUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJM0Y7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLCtCQUErQjtJQUN4QywrQ0FBK0M7SUFDL0MsS0FBSyxDQUFpQztJQUN0QywrQ0FBK0M7SUFDL0Msa0JBQWtCLENBQVM7SUFDM0IsK0NBQStDO0lBQy9DLGlCQUFpQixDQUFTO0lBRTFCLFlBQVksWUFBb0MsRUFBRSxJQUEwQztRQUN4RixJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtDQUNULFNBQVEsK0JBQTZDO0lBRXJELCtDQUErQztJQUMvQyxRQUFRLENBQXdCO0lBQ2hDLCtDQUErQztJQUMvQyxlQUFlLENBQVU7SUFDekIsK0NBQStDO0lBQy9DLHFCQUFxQixDQUFvQjtJQUN6QywrQ0FBK0M7SUFDL0MsV0FBVyxDQUFpQztJQUM1QywrQ0FBK0M7SUFDL0MsY0FBYyxDQUE4QjtJQUM1QywrQ0FBK0M7SUFDL0Msc0JBQXNCLENBQWtDO0lBQ3hELCtDQUErQztJQUMvQyxnQkFBZ0IsQ0FBYztJQUM5QiwrQ0FBK0M7SUFDL0MsY0FBYyxDQUE4QztJQUM1RCwrQ0FBK0M7SUFDL0MsWUFBWSxDQUFVO0lBQ3RCLCtDQUErQztJQUMvQyxtQkFBbUIsQ0FBUztJQUM1QiwrQ0FBK0M7SUFDL0MsY0FBYyxDQUFTO0lBQ3ZCLCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBUztJQUUxQixZQUFZLElBQTRDLEVBQUUsWUFBb0M7UUFDMUYsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsa0NBQWtDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsSUFBSSwwQkFBMEIsQ0FBQztRQUN4RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLCtCQUF1QztJQUN6RiwrQ0FBK0M7SUFDL0MsUUFBUSxDQUFzQjtJQUM5QiwrQ0FBK0M7SUFDL0MsZUFBZSxDQUFVO0lBQ3pCLCtDQUErQztJQUMvQyxxQkFBcUIsQ0FBb0I7SUFDekMsK0NBQStDO0lBQy9DLGNBQWMsQ0FBd0I7SUFDdEMsK0NBQStDO0lBQy9DLGNBQWMsQ0FBUztJQUN2QiwrQ0FBK0M7SUFDL0MsaUJBQWlCLENBQVM7SUFDMUIsK0NBQStDO0lBQy9DLG1CQUFtQixDQUFTO0lBQzVCLCtDQUErQztJQUMvQyxzQkFBc0IsQ0FBNEI7SUFDbEQsK0NBQStDO0lBQy9DLEdBQUcsQ0FBeUI7SUFDNUIsK0NBQStDO0lBQy9DLEdBQUcsQ0FBeUI7SUFDNUIsK0NBQStDO0lBQy9DLE1BQU0sQ0FBeUM7SUFFL0MsWUFBWSxJQUE4QixFQUFFLFlBQW9DO1FBQzVFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pHLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQUksMEJBQTBCLENBQUM7UUFDeEYsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsK0JBQXVDO0lBQzdGLCtDQUErQztJQUMvQyxRQUFRLENBQTJCO0lBQ25DLCtDQUErQztJQUMvQyxlQUFlLENBQVU7SUFDekIsK0NBQStDO0lBQy9DLHFCQUFxQixDQUFvQjtJQUN6QywrQ0FBK0M7SUFDL0MsY0FBYyxDQUF3QjtJQUN0QywrQ0FBK0M7SUFDL0MsY0FBYyxDQUFTO0lBQ3ZCLCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBUztJQUMxQiwrQ0FBK0M7SUFDL0MsbUJBQW1CLENBQVM7SUFDNUIsK0NBQStDO0lBQy9DLEtBQUssQ0FBd0I7SUFDN0IsK0NBQStDO0lBQy9DLGVBQWUsQ0FBUztJQUN4QiwrQ0FBK0M7SUFDL0Msc0JBQXNCLENBQTRCO0lBQ2xELCtDQUErQztJQUMvQyxPQUFPLENBQXlCO0lBQ2hDLCtDQUErQztJQUMvQyxPQUFPLENBQXlCO0lBQ2hDLCtDQUErQztJQUMvQyxVQUFVLENBQXlDO0lBQ25ELCtDQUErQztJQUMvQyxPQUFPLENBQXlCO0lBQ2hDLCtDQUErQztJQUMvQyxPQUFPLENBQXlCO0lBQ2hDLCtDQUErQztJQUMvQyxVQUFVLENBQStDO0lBRXpELFlBQVksSUFBa0MsRUFBRSxZQUFvQztRQUNoRixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsa0NBQWtDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQUksMEJBQTBCLENBQUM7UUFDeEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUNBQXNDLFNBQVEsK0JBQTRDO0lBRW5HLCtDQUErQztJQUMvQyxRQUFRLENBQTRCO0lBQ3BDLCtDQUErQztJQUMvQyxlQUFlLENBQVU7SUFDekIsK0NBQStDO0lBQy9DLHFCQUFxQixDQUFvQjtJQUN6QywrQ0FBK0M7SUFDL0MsY0FBYyxDQUE2QjtJQUMzQywrQ0FBK0M7SUFDL0MsY0FBYyxDQUFTO0lBQ3ZCLCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBUztJQUMxQiwrQ0FBK0M7SUFDL0MsbUJBQW1CLENBQVM7SUFDNUIsK0NBQStDO0lBQy9DLGdCQUFnQixDQUFTO0lBQ3pCLCtDQUErQztJQUMvQyxjQUFjLENBQVM7SUFDdkIsK0NBQStDO0lBQy9DLHNCQUFzQixDQUFpQztJQUN2RCwrQ0FBK0M7SUFDL0MsUUFBUSxDQUF5QjtJQUNqQywrQ0FBK0M7SUFDL0MsUUFBUSxDQUF5QjtJQUNqQywrQ0FBK0M7SUFDL0MsTUFBTSxDQUF5QjtJQUMvQiwrQ0FBK0M7SUFDL0MsTUFBTSxDQUF5QjtJQUMvQiwrQ0FBK0M7SUFDL0MsTUFBTSxDQUFzQjtJQUU1QixZQUFZLElBQW1DLEVBQUUsWUFBb0M7UUFDakYsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUM7UUFDckQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGtDQUFrQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQUksMEJBQTBCLENBQUM7UUFDeEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyx1Q0FBd0MsU0FBUSwrQkFBeUM7SUFFbEcsK0NBQStDO0lBQy9DLFFBQVEsQ0FBd0I7SUFDaEMsK0NBQStDO0lBQy9DLGVBQWUsQ0FBVTtJQUN6QiwrQ0FBK0M7SUFDL0MscUJBQXFCLENBQW9CO0lBQ3pDLCtDQUErQztJQUMvQyxVQUFVLENBQVM7SUFDbkIsK0NBQStDO0lBQy9DLFNBQVMsQ0FBVTtJQUNuQiwrQ0FBK0M7SUFDL0MsU0FBUyxDQUFVO0lBQ25CLCtDQUErQztJQUMvQyxLQUFLLENBQVU7SUFFZixZQUFZLElBQXFDLEVBQUUsWUFBb0M7UUFDbkYsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLHFCQUFxQixDQUFDO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxtREFDVCxTQUFRLCtCQUF5QztJQUNqRCwyRUFBMkU7SUFDM0Usa0JBQWtCLENBQXFDO0lBQ3ZELCtDQUErQztJQUMvQyxRQUFRLENBQXFDO0lBQzdDLCtDQUErQztJQUMvQyxlQUFlLENBQVU7SUFDekIsK0NBQStDO0lBQy9DLHFCQUFxQixDQUFvQjtJQUN6QywrQ0FBK0M7SUFDL0MsVUFBVSxDQUFTO0lBQ25CLCtDQUErQztJQUMvQyxTQUFTLENBQVU7SUFDbkIsK0NBQStDO0lBQy9DLFNBQVMsQ0FBVTtJQUNuQiwrQ0FBK0M7SUFDL0MsS0FBSyxDQUFVO0lBQ2YsK0NBQStDO0lBQy9DLGlCQUFpQixDQUFXO0lBRTVCLFlBQVksSUFBaUQsRUFBRSxZQUFvQztRQUMvRixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxxQkFBcUIsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsa0NBQWtDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsc0RBQXNEO0lBQzlDLDRCQUE0QixDQUFDLGtCQUE0QztRQUM3RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUMxQyxDQUFDO1FBQ0Qsc0RBQXNEO1FBQ3RELE9BQU8sS0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsa0NBQWtDLENBQ3ZDLElBQW1DLEVBQ25DLFlBQW9DO0lBRXBDLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQ3hFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1NBQ2hDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1NBQ3BELFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLG1CQUFtQixDQUFDO1NBQ3RELFNBQVMsRUFBRSxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlRmlsdGVyRm4gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgQXJyYXlEZWNvcmF0b3JDb25maWcsIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcsIERhdGVBcnJheURlY29yYXRvckNvbmZpZywgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcsIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWcsIEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhLCBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZywgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZyB9IGZyb20gJy4vYXJyYXktZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IENyZWF0ZURhdGEsIERpc3BsYXlDb2x1bW4sIER5bmFtaWNTdHlsZUNsYXNzZXMgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLWRhdGEnO1xuaW1wb3J0IHsgZGVmYXVsdER5bmFtaWNTdHlsZUNsYXNzZXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZGVmYXVsdC1zdHlsZS1jbGFzc2VzLmZ1bmN0aW9uJztcbmltcG9ydCB7IGdldENvbmZpZ1ZhbHVlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2dldC1jb25maWctdmFsdWUuZnVuY3Rpb24nO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBEYXRlVXRpbGl0aWVzLCBUaW1lIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2RhdGUudXRpbGl0aWVzJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vYmFzZS9kcm9wZG93bi12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi4vZGF0ZS9kYXRlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IFN0cmluZ0F1dG9jb21wbGV0ZVZhbHVlcyB9IGZyb20gJy4uL3N0cmluZy9zdHJpbmctZGVjb3JhdG9yLmRhdGEnO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBkaWFsb2cgZGF0YSBmb3IgdGhlIGVudGl0aWVzIGFycmF5IGVkaXQgZGlhbG9nLlxuICogU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpdGxlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjb25maXJtQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMsIGRhdGE/OiBFZGl0QXJyYXlJdGVtRGlhbG9nRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICB0aGlzLnRpdGxlID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmVkaXRUaXRsZSwgZGF0YT8udGl0bGUpO1xuICAgICAgICB0aGlzLmNvbmZpcm1CdXR0b25MYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5zYXZlTGFiZWwsIGRhdGE/LmNvbmZpcm1CdXR0b25MYWJlbCk7XG4gICAgICAgIHRoaXMuY2FuY2VsQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuY2FuY2VsTGFiZWwsIGRhdGE/LmNhbmNlbEJ1dHRvbkxhYmVsKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5QXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPEVudGl0eVR5cGVbXT4gaW1wbGVtZW50cyBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZzxFbnRpdHlUeXBlPiB7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5PQkpFQ1Q7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkeW5hbWljUm93U3R5bGVDbGFzc2VzOiBEeW5hbWljU3R5bGVDbGFzc2VzPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY3JlYXRlRGlhbG9nRGF0YT86IENyZWF0ZURhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0RGlhbG9nRGF0YTogRWRpdEFycmF5SXRlbURpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZUlubGluZTogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pc3NpbmdFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRW50aXR5QXJyYXlEZWNvcmF0b3JDb25maWc8RW50aXR5VHlwZT4sIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5jcmVhdGVJbmxpbmUgPSBkYXRhLmNyZWF0ZUlubGluZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEsIGdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMuRW50aXR5Q2xhc3MgPSBkYXRhLkVudGl0eUNsYXNzO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGF0YS5kaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5keW5hbWljUm93U3R5bGVDbGFzc2VzID0gZGF0YS5keW5hbWljUm93U3R5bGVDbGFzc2VzID8/IGRlZmF1bHREeW5hbWljU3R5bGVDbGFzc2VzO1xuICAgICAgICB0aGlzLmNyZWF0ZUlubGluZSA9IGRhdGEuY3JlYXRlSW5saW5lID8/IHRydWU7XG4gICAgICAgIHRoaXMubWlzc2luZ0Vycm9yTWVzc2FnZSA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5lbXB0eUFycmF5RXJyb3JNZXNzYWdlLCBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLmRlZmF1bHRXaWR0aHMgPSBkYXRhLmRlZmF1bHRXaWR0aHMgPz8gWzEyLCAxMiwgMTJdO1xuICAgICAgICB0aGlzLmFkZEJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmFkZExhYmVsLCBkYXRhLmFkZEJ1dHRvbkxhYmVsKTtcbiAgICAgICAgdGhpcy5yZW1vdmVCdXR0b25MYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5yZW1vdmVMYWJlbCwgZGF0YS5yZW1vdmVCdXR0b25MYWJlbCk7XG4gICAgICAgIHRoaXMuZWRpdERpYWxvZ0RhdGEgPSBuZXcgRWRpdEFycmF5SXRlbURpYWxvZ0RhdGFJbnRlcm5hbChnbG9iYWxDb25maWcsIGRhdGEuZWRpdERpYWxvZ0RhdGEpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPERhdGVbXT4gaW1wbGVtZW50cyBEYXRlQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLkRBVEU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RGF0ZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWlzc2luZ0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3NlczogRHluYW1pY1N0eWxlQ2xhc3NlczxEYXRlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbj86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlcj86IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD47XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlQXJyYXlEZWNvcmF0b3JDb25maWcsIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhLCBnbG9iYWxDb25maWcpO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGF0YS5kaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFsxMiwgMTIsIDEyXTtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25MYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5hZGRMYWJlbCwgZGF0YS5hZGRCdXR0b25MYWJlbCk7XG4gICAgICAgIHRoaXMucmVtb3ZlQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcucmVtb3ZlTGFiZWwsIGRhdGEucmVtb3ZlQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLm1pc3NpbmdFcnJvck1lc3NhZ2UgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuZW1wdHlBcnJheUVycm9yTWVzc2FnZSwgZGF0YS5taXNzaW5nRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5keW5hbWljUm93U3R5bGVDbGFzc2VzID0gZGF0YS5keW5hbWljUm93U3R5bGVDbGFzc2VzID8/IGRlZmF1bHREeW5hbWljU3R5bGVDbGFzc2VzO1xuICAgICAgICB0aGlzLm1pbiA9IGRhdGEubWluO1xuICAgICAgICB0aGlzLm1heCA9IGRhdGEubWF4O1xuICAgICAgICB0aGlzLmZpbHRlciA9IGRhdGEuZmlsdGVyO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZVRpbWVBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8RGF0ZVtdPiBpbXBsZW1lbnRzIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLkRBVEVfVElNRTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RHVwbGljYXRlczogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR1cGxpY2F0ZXNFcnJvckRpYWxvZzogQ29uZmlybURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxEYXRlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlbW92ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aW1lczogRHJvcGRvd25WYWx1ZTxUaW1lPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGltZURpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkeW5hbWljUm93U3R5bGVDbGFzc2VzOiBEeW5hbWljU3R5bGVDbGFzc2VzPERhdGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluRGF0ZT86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heERhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXJEYXRlPzogRGF0ZUZpbHRlckZuPERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pblRpbWU/OiAoZGF0ZT86IERhdGUpID0+IFRpbWU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhUaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyVGltZT86ICgodGltZTogVGltZSkgPT4gYm9vbGVhbikgfCAoKCkgPT4gYm9vbGVhbik7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSwgZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbMTIsIDEyLCAxMl07XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuYWRkTGFiZWwsIGRhdGEuYWRkQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLnJlbW92ZUJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLnJlbW92ZUxhYmVsLCBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsKTtcbiAgICAgICAgdGhpcy5taXNzaW5nRXJyb3JNZXNzYWdlID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmVtcHR5QXJyYXlFcnJvck1lc3NhZ2UsIGRhdGEubWlzc2luZ0Vycm9yTWVzc2FnZSk7XG4gICAgICAgIHRoaXMudGltZXMgPSBkYXRhLnRpbWVzID8/IERhdGVVdGlsaXRpZXMuZ2V0RGVmYXVsdFRpbWVzKCk7XG4gICAgICAgIHRoaXMudGltZURpc3BsYXlOYW1lID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLnRpbWVMYWJlbCwgZGF0YS50aW1lRGlzcGxheU5hbWUpO1xuICAgICAgICB0aGlzLmR5bmFtaWNSb3dTdHlsZUNsYXNzZXMgPSBkYXRhLmR5bmFtaWNSb3dTdHlsZUNsYXNzZXMgPz8gZGVmYXVsdER5bmFtaWNTdHlsZUNsYXNzZXM7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IGRhdGEubWluRGF0ZTtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gZGF0YS5tYXhEYXRlO1xuICAgICAgICB0aGlzLmZpbHRlckRhdGUgPSBkYXRhLmZpbHRlckRhdGU7XG4gICAgICAgIHRoaXMubWluVGltZSA9IGRhdGEubWluVGltZTtcbiAgICAgICAgdGhpcy5tYXhUaW1lID0gZGF0YS5tYXhUaW1lO1xuICAgICAgICB0aGlzLmZpbHRlclRpbWUgPSBkYXRhLmZpbHRlclRpbWU7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBEYXRlUmFuZ2VBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPERhdGVSYW5nZVtdPlxuICAgIGltcGxlbWVudHMgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLkRBVEVfUkFOR0U7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RGF0ZVJhbmdlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlbW92ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwbGFjZWhvbGRlclN0YXJ0OiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwbGFjZWhvbGRlckVuZDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3NlczogRHluYW1pY1N0eWxlQ2xhc3NlczxEYXRlUmFuZ2U+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluU3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhTdGFydD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbkVuZD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heEVuZD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlcj86IERhdGVGaWx0ZXJGbjxEYXRlPjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSwgZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbMTIsIDEyLCAxMl07XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuYWRkTGFiZWwsIGRhdGEuYWRkQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLnJlbW92ZUJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLnJlbW92ZUxhYmVsLCBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsKTtcbiAgICAgICAgdGhpcy5taXNzaW5nRXJyb3JNZXNzYWdlID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmVtcHR5QXJyYXlFcnJvck1lc3NhZ2UsIGRhdGEubWlzc2luZ0Vycm9yTWVzc2FnZSk7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJTdGFydCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5zdGFydExhYmVsLCBkYXRhLnBsYWNlaG9sZGVyU3RhcnQpO1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyRW5kID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmVuZExhYmVsLCBkYXRhLnBsYWNlaG9sZGVyRW5kKTtcbiAgICAgICAgdGhpcy5keW5hbWljUm93U3R5bGVDbGFzc2VzID0gZGF0YS5keW5hbWljUm93U3R5bGVDbGFzc2VzID8/IGRlZmF1bHREeW5hbWljU3R5bGVDbGFzc2VzO1xuICAgICAgICB0aGlzLm1pblN0YXJ0ID0gZGF0YS5taW5TdGFydDtcbiAgICAgICAgdGhpcy5tYXhTdGFydCA9IGRhdGEubWF4U3RhcnQ7XG4gICAgICAgIHRoaXMubWluRW5kID0gZGF0YS5taW5FbmQ7XG4gICAgICAgIHRoaXMubWF4RW5kID0gZGF0YS5tYXhFbmQ7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gZGF0YS5maWx0ZXI7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxzdHJpbmdbXT5cbiAgICBpbXBsZW1lbnRzIFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLlNUUklORztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RHVwbGljYXRlczogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR1cGxpY2F0ZXNFcnJvckRpYWxvZzogQ29uZmlybURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkZWxldGVJY29uOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZWdleD86IFJlZ0V4cDtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcsIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5kZWxldGVJY29uID0gZGF0YS5kZWxldGVJY29uID8/ICdmYXMgZmEtY2lyY2xlLW1pbnVzJztcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhLCBnbG9iYWxDb25maWcpO1xuICAgICAgICB0aGlzLm1heExlbmd0aCA9IGRhdGEubWF4TGVuZ3RoO1xuICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IGRhdGEubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLnJlZ2V4ID0gZGF0YS5yZWdleDtcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFs2LCAxMiwgMTJdO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbFxuICAgIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxzdHJpbmdbXT4gaW1wbGVtZW50cyBBdXRvY29tcGxldGVTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvYywgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnlcbiAgICBhdXRvY29tcGxldGVWYWx1ZXM6IChlbnRpdHk6IGFueSkgPT4gUHJvbWlzZTxzdHJpbmdbXT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuU1RSSU5HX0FVVE9DT01QTEVURTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RHVwbGljYXRlczogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR1cGxpY2F0ZXNFcnJvckRpYWxvZzogQ29uZmlybURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkZWxldGVJY29uOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZWdleD86IFJlZ0V4cDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlc3RyaWN0VG9PcHRpb25zPzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcsIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMgPSB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlc1RvRnVuY3Rpb24oZGF0YS5hdXRvY29tcGxldGVWYWx1ZXMpO1xuICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBkYXRhLmRlbGV0ZUljb24gPz8gJ2ZhcyBmYS1jaXJjbGUtbWludXMnO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEsIGdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID0gZGF0YS5tYXhMZW5ndGg7XG4gICAgICAgIHRoaXMubWluTGVuZ3RoID0gZGF0YS5taW5MZW5ndGg7XG4gICAgICAgIHRoaXMucmVnZXggPSBkYXRhLnJlZ2V4O1xuICAgICAgICB0aGlzLnJlc3RyaWN0VG9PcHRpb25zID0gZGF0YS5yZXN0cmljdFRvT3B0aW9ucztcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFs2LCAxMiwgMTJdO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgYXV0b2NvbXBsZXRlVmFsdWVzVG9GdW5jdGlvbihhdXRvY29tcGxldGVWYWx1ZXM6IFN0cmluZ0F1dG9jb21wbGV0ZVZhbHVlcyk6IChlbnRpdHk6IGFueSkgPT4gUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhdXRvY29tcGxldGVWYWx1ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXN5bmMgKCkgPT4gYXV0b2NvbXBsZXRlVmFsdWVzO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueVxuICAgICAgICByZXR1cm4gYXN5bmMgKGU6IGFueSkgPT4gYXdhaXQgYXV0b2NvbXBsZXRlVmFsdWVzKGUpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkZWZhdWx0IGRpYWxvZyBkYXRhIGZvciB0aGUgZXJyb3IgZGlhbG9nIHRvIGRpc3BsYXkgd2hlbiB0aGUgdXNlciB0cmllcyB0byBhZGQgYSBkdXBsaWNhdGUgdmFsdWUuXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBBcnJheSBEZWNvcmF0b3IgZGF0YS5cbiAqIEBwYXJhbSBnbG9iYWxDb25maWcgLSBUaGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gb2YgZGVmYXVsdCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgZGlhbG9nIGRhdGEgd2l0aCBzZXQgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoXG4gICAgZGF0YTogQXJyYXlEZWNvcmF0b3JDb25maWc8dW5rbm93bj4sXG4gICAgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4pOiBDb25maXJtRGlhbG9nRGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIoZ2xvYmFsQ29uZmlnLCBkYXRhLmR1cGxpY2F0ZXNFcnJvckRpYWxvZylcbiAgICAgICAgLndpdGhEZWZhdWx0KCd0eXBlJywgJ2luZm8tb25seScpXG4gICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIGdsb2JhbENvbmZpZy5kdXBsaWNhdGVFcnJvclRleHQpXG4gICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCBnbG9iYWxDb25maWcuZHVwbGljYXRlRXJyb3JUaXRsZSlcbiAgICAgICAgLmdldFJlc3VsdCgpO1xufSJdfQ==
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGVjb3JhdG9yLWludGVybmFsLmRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUtsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUV2RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGFBQWEsRUFBUSxNQUFNLGdDQUFnQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSTNGOzs7R0FHRztBQUNILE1BQU0sT0FBTywrQkFBK0I7SUFDeEMsK0NBQStDO0lBQy9DLEtBQUssQ0FBaUM7SUFDdEMsK0NBQStDO0lBQy9DLGtCQUFrQixDQUFTO0lBQzNCLCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBUztJQUUxQixZQUFZLFlBQW9DLEVBQUUsSUFBMEM7UUFDeEYsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMvRixDQUFDO0NBQ0o7QUFFRDs7R0FF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UUFDcEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxzREFBc0Q7SUFDOUMsNEJBQTRCLENBQUMsa0JBQTRDO1FBQzdFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDcEMsb0RBQW9EO1lBQ3BELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUMxQyxDQUFDO1FBQ0Qsc0RBQXNEO1FBQ3RELE9BQU8sS0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsa0NBQWtDLENBQ3ZDLElBQW1DLEVBQ25DLFlBQW9DO0lBRXBDLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQ3hFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1NBQ2hDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1NBQ3BELFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLG1CQUFtQixDQUFDO1NBQ3RELFNBQVMsRUFBRSxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlRmlsdGVyRm4gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IEljb25EZWZpbml0aW9uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFDaXJjbGVNaW51cyB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IEFycmF5RGVjb3JhdG9yQ29uZmlnLCBBdXRvY29tcGxldGVTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnLCBEYXRlQXJyYXlEZWNvcmF0b3JDb25maWcsIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBFZGl0QXJyYXlJdGVtRGlhbG9nRGF0YSwgRW50aXR5QXJyYXlEZWNvcmF0b3JDb25maWcsIFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcgfSBmcm9tICcuL2FycmF5LWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBDcmVhdGVEYXRhLCBEaXNwbGF5Q29sdW1uLCBEeW5hbWljU3R5bGVDbGFzc2VzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhJztcbmltcG9ydCB7IGRlZmF1bHREeW5hbWljU3R5bGVDbGFzc2VzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2RlZmF1bHQtc3R5bGUtY2xhc3Nlcy5mdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRDb25maWdWYWx1ZSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9nZXQtY29uZmlnLXZhbHVlLmZ1bmN0aW9uJztcbmltcG9ydCB7IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgRGF0ZVV0aWxpdGllcywgVGltZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9kYXRlLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRHJvcGRvd25WYWx1ZSB9IGZyb20gJy4uL2Jhc2UvZHJvcGRvd24tdmFsdWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi9iYXNlL3Byb3BlcnR5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4uL2RhdGUvZGF0ZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBTdHJpbmdBdXRvY29tcGxldGVWYWx1ZXMgfSBmcm9tICcuLi9zdHJpbmcvc3RyaW5nLWRlY29yYXRvci5kYXRhJztcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgZGlhbG9nIGRhdGEgZm9yIHRoZSBlbnRpdGllcyBhcnJheSBlZGl0IGRpYWxvZy5cbiAqIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFZGl0QXJyYXlJdGVtRGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBFZGl0QXJyYXlJdGVtRGlhbG9nRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aXRsZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY29uZmlybUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjYW5jZWxCdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzLCBkYXRhPzogRWRpdEFycmF5SXRlbURpYWxvZ0RhdGE8RW50aXR5VHlwZT4pIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5lZGl0VGl0bGUsIGRhdGE/LnRpdGxlKTtcbiAgICAgICAgdGhpcy5jb25maXJtQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuc2F2ZUxhYmVsLCBkYXRhPy5jb25maXJtQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLmNhbmNlbEJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmNhbmNlbExhYmVsLCBkYXRhPy5jYW5jZWxCdXR0b25MYWJlbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxFbnRpdHlUeXBlW10+IGltcGxlbWVudHMgRW50aXR5QXJyYXlEZWNvcmF0b3JDb25maWc8RW50aXR5VHlwZT4ge1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuT0JKRUNUO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eUNsYXNzOiBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3NlczogRHluYW1pY1N0eWxlQ2xhc3NlczxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURpYWxvZ0RhdGE/OiBDcmVhdGVEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdERpYWxvZ0RhdGE6IEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVJbmxpbmU6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhZGRCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVtb3ZlQnV0dG9uTGFiZWw6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnPEVudGl0eVR5cGU+LCBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuY3JlYXRlSW5saW5lID0gZGF0YS5jcmVhdGVJbmxpbmUgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhLCBnbG9iYWxDb25maWcpO1xuICAgICAgICB0aGlzLkVudGl0eUNsYXNzID0gZGF0YS5FbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZHluYW1pY1Jvd1N0eWxlQ2xhc3NlcyA9IGRhdGEuZHluYW1pY1Jvd1N0eWxlQ2xhc3NlcyA/PyBkZWZhdWx0RHluYW1pY1N0eWxlQ2xhc3NlcztcbiAgICAgICAgdGhpcy5jcmVhdGVJbmxpbmUgPSBkYXRhLmNyZWF0ZUlubGluZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLm1pc3NpbmdFcnJvck1lc3NhZ2UgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuZW1wdHlBcnJheUVycm9yTWVzc2FnZSwgZGF0YS5taXNzaW5nRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFsxMiwgMTIsIDEyXTtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25MYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5hZGRMYWJlbCwgZGF0YS5hZGRCdXR0b25MYWJlbCk7XG4gICAgICAgIHRoaXMucmVtb3ZlQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcucmVtb3ZlTGFiZWwsIGRhdGEucmVtb3ZlQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLmVkaXREaWFsb2dEYXRhID0gbmV3IEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhSW50ZXJuYWwoZ2xvYmFsQ29uZmlnLCBkYXRhLmVkaXREaWFsb2dEYXRhKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIERhdGVBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxEYXRlW10+IGltcGxlbWVudHMgRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPERhdGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhZGRCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVtb3ZlQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pc3NpbmdFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR5bmFtaWNSb3dTdHlsZUNsYXNzZXM6IER5bmFtaWNTdHlsZUNsYXNzZXM8RGF0ZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW4/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXg/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ+O1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSwgZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbMTIsIDEyLCAxMl07XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuYWRkTGFiZWwsIGRhdGEuYWRkQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLnJlbW92ZUJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLnJlbW92ZUxhYmVsLCBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsKTtcbiAgICAgICAgdGhpcy5taXNzaW5nRXJyb3JNZXNzYWdlID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmVtcHR5QXJyYXlFcnJvck1lc3NhZ2UsIGRhdGEubWlzc2luZ0Vycm9yTWVzc2FnZSk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Jvd1N0eWxlQ2xhc3NlcyA9IGRhdGEuZHluYW1pY1Jvd1N0eWxlQ2xhc3NlcyA/PyBkZWZhdWx0RHluYW1pY1N0eWxlQ2xhc3NlcztcbiAgICAgICAgdGhpcy5taW4gPSBkYXRhLm1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBkYXRhLm1heDtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBkYXRhLmZpbHRlcjtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPERhdGVbXT4gaW1wbGVtZW50cyBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFX1RJTUU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RGF0ZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWlzc2luZ0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGltZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpbWVEaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3NlczogRHluYW1pY1N0eWxlQ2xhc3NlczxEYXRlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbkRhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhEYXRlPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyRGF0ZT86IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5UaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4VGltZT86IChkYXRlPzogRGF0ZSkgPT4gVGltZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlclRpbWU/OiAoKHRpbWU6IFRpbWUpID0+IGJvb2xlYW4pIHwgKCgpID0+IGJvb2xlYW4pO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0ZVRpbWVBcnJheURlY29yYXRvckNvbmZpZywgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEsIGdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkYXRhLmRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLmRlZmF1bHRXaWR0aHMgPSBkYXRhLmRlZmF1bHRXaWR0aHMgPz8gWzEyLCAxMiwgMTJdO1xuICAgICAgICB0aGlzLmFkZEJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmFkZExhYmVsLCBkYXRhLmFkZEJ1dHRvbkxhYmVsKTtcbiAgICAgICAgdGhpcy5yZW1vdmVCdXR0b25MYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5yZW1vdmVMYWJlbCwgZGF0YS5yZW1vdmVCdXR0b25MYWJlbCk7XG4gICAgICAgIHRoaXMubWlzc2luZ0Vycm9yTWVzc2FnZSA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5lbXB0eUFycmF5RXJyb3JNZXNzYWdlLCBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnRpbWVzID0gZGF0YS50aW1lcyA/PyBEYXRlVXRpbGl0aWVzLmdldERlZmF1bHRUaW1lcygpO1xuICAgICAgICB0aGlzLnRpbWVEaXNwbGF5TmFtZSA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy50aW1lTGFiZWwsIGRhdGEudGltZURpc3BsYXlOYW1lKTtcbiAgICAgICAgdGhpcy5keW5hbWljUm93U3R5bGVDbGFzc2VzID0gZGF0YS5keW5hbWljUm93U3R5bGVDbGFzc2VzID8/IGRlZmF1bHREeW5hbWljU3R5bGVDbGFzc2VzO1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBkYXRhLm1pbkRhdGU7XG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IGRhdGEubWF4RGF0ZTtcbiAgICAgICAgdGhpcy5maWx0ZXJEYXRlID0gZGF0YS5maWx0ZXJEYXRlO1xuICAgICAgICB0aGlzLm1pblRpbWUgPSBkYXRhLm1pblRpbWU7XG4gICAgICAgIHRoaXMubWF4VGltZSA9IGRhdGEubWF4VGltZTtcbiAgICAgICAgdGhpcy5maWx0ZXJUaW1lID0gZGF0YS5maWx0ZXJUaW1lO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxEYXRlUmFuZ2VbXT5cbiAgICBpbXBsZW1lbnRzIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFX1JBTkdFO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPERhdGVSYW5nZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWlzc2luZ0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcGxhY2Vob2xkZXJTdGFydDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcGxhY2Vob2xkZXJFbmQ6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR5bmFtaWNSb3dTdHlsZUNsYXNzZXM6IER5bmFtaWNTdHlsZUNsYXNzZXM8RGF0ZVJhbmdlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pblN0YXJ0PzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4U3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5FbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhFbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZT47XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlUmFuZ2VBcnJheURlY29yYXRvckNvbmZpZywgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEsIGdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkYXRhLmRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLmRlZmF1bHRXaWR0aHMgPSBkYXRhLmRlZmF1bHRXaWR0aHMgPz8gWzEyLCAxMiwgMTJdO1xuICAgICAgICB0aGlzLmFkZEJ1dHRvbkxhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmFkZExhYmVsLCBkYXRhLmFkZEJ1dHRvbkxhYmVsKTtcbiAgICAgICAgdGhpcy5yZW1vdmVCdXR0b25MYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5yZW1vdmVMYWJlbCwgZGF0YS5yZW1vdmVCdXR0b25MYWJlbCk7XG4gICAgICAgIHRoaXMubWlzc2luZ0Vycm9yTWVzc2FnZSA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5lbXB0eUFycmF5RXJyb3JNZXNzYWdlLCBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyU3RhcnQgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuc3RhcnRMYWJlbCwgZGF0YS5wbGFjZWhvbGRlclN0YXJ0KTtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlckVuZCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5lbmRMYWJlbCwgZGF0YS5wbGFjZWhvbGRlckVuZCk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Jvd1N0eWxlQ2xhc3NlcyA9IGRhdGEuZHluYW1pY1Jvd1N0eWxlQ2xhc3NlcyA/PyBkZWZhdWx0RHluYW1pY1N0eWxlQ2xhc3NlcztcbiAgICAgICAgdGhpcy5taW5TdGFydCA9IGRhdGEubWluU3RhcnQ7XG4gICAgICAgIHRoaXMubWF4U3RhcnQgPSBkYXRhLm1heFN0YXJ0O1xuICAgICAgICB0aGlzLm1pbkVuZCA9IGRhdGEubWluRW5kO1xuICAgICAgICB0aGlzLm1heEVuZCA9IGRhdGEubWF4RW5kO1xuICAgICAgICB0aGlzLmZpbHRlciA9IGRhdGEuZmlsdGVyO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8c3RyaW5nW10+XG4gICAgaW1wbGVtZW50cyBTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5TVFJJTkc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGVsZXRlSWNvbjogSWNvbkRlZmluaXRpb247XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZWdleD86IFJlZ0V4cDtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcsIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5kZWxldGVJY29uID0gZGF0YS5kZWxldGVJY29uID8/IGZhQ2lyY2xlTWludXM7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSwgZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSBkYXRhLm1heExlbmd0aDtcbiAgICAgICAgdGhpcy5taW5MZW5ndGggPSBkYXRhLm1pbkxlbmd0aDtcbiAgICAgICAgdGhpcy5yZWdleCA9IGRhdGEucmVnZXg7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbNiwgMTIsIDEyXTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWxcbiAgICBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8c3RyaW5nW10+IGltcGxlbWVudHMgQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2MsIHR5cGVzY3JpcHQvbm8tZXhwbGljaXQtYW55XG4gICAgYXV0b2NvbXBsZXRlVmFsdWVzOiAoZW50aXR5OiBhbnkpID0+IFByb21pc2U8c3RyaW5nW10+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLlNUUklOR19BVVRPQ09NUExFVEU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGVsZXRlSWNvbjogSWNvbkRlZmluaXRpb247XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZWdleD86IFJlZ0V4cDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlc3RyaWN0VG9PcHRpb25zPzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcsIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMgPSB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlc1RvRnVuY3Rpb24oZGF0YS5hdXRvY29tcGxldGVWYWx1ZXMpO1xuICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBkYXRhLmRlbGV0ZUljb24gPz8gZmFDaXJjbGVNaW51cztcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhLCBnbG9iYWxDb25maWcpO1xuICAgICAgICB0aGlzLm1heExlbmd0aCA9IGRhdGEubWF4TGVuZ3RoO1xuICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IGRhdGEubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLnJlZ2V4ID0gZGF0YS5yZWdleDtcbiAgICAgICAgdGhpcy5yZXN0cmljdFRvT3B0aW9ucyA9IGRhdGEucmVzdHJpY3RUb09wdGlvbnM7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbNiwgMTIsIDEyXTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGF1dG9jb21wbGV0ZVZhbHVlc1RvRnVuY3Rpb24oYXV0b2NvbXBsZXRlVmFsdWVzOiBTdHJpbmdBdXRvY29tcGxldGVWYWx1ZXMpOiAoZW50aXR5OiBhbnkpID0+IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXV0b2NvbXBsZXRlVmFsdWVzKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQvcmVxdWlyZS1hd2FpdFxuICAgICAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IGF1dG9jb21wbGV0ZVZhbHVlcztcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgcmV0dXJuIGFzeW5jIChlOiBhbnkpID0+IGF3YWl0IGF1dG9jb21wbGV0ZVZhbHVlcyhlKTtcbiAgICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZGVmYXVsdCBkaWFsb2cgZGF0YSBmb3IgdGhlIGVycm9yIGRpYWxvZyB0byBkaXNwbGF5IHdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gYWRkIGEgZHVwbGljYXRlIHZhbHVlLlxuICogQHBhcmFtIGRhdGEgLSBUaGUgQXJyYXkgRGVjb3JhdG9yIGRhdGEuXG4gKiBAcGFyYW0gZ2xvYmFsQ29uZmlnIC0gVGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIG9mIGRlZmF1bHQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGRpYWxvZyBkYXRhIHdpdGggc2V0IGRlZmF1bHQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKFxuICAgIGRhdGE6IEFycmF5RGVjb3JhdG9yQ29uZmlnPHVua25vd24+LFxuICAgIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuKTogQ29uZmlybURpYWxvZ0RhdGEge1xuICAgIHJldHVybiBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKGdsb2JhbENvbmZpZywgZGF0YS5kdXBsaWNhdGVzRXJyb3JEaWFsb2cpXG4gICAgICAgIC53aXRoRGVmYXVsdCgndHlwZScsICdpbmZvLW9ubHknKVxuICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBnbG9iYWxDb25maWcuZHVwbGljYXRlRXJyb3JUZXh0KVxuICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgZ2xvYmFsQ29uZmlnLmR1cGxpY2F0ZUVycm9yVGl0bGUpXG4gICAgICAgIC5nZXRSZXN1bHQoKTtcbn0iXX0=
@@ -48,4 +48,4 @@ class ArrayTableDecoratorConfig extends ArrayDecoratorConfig {
48
48
  */
49
49
  removeButtonLabel;
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGVjb3JhdG9yLmRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTFFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixvQkFBZ0MsU0FBUSx1QkFBa0M7SUFDNUY7O09BRUc7SUFDSCxRQUFRLENBQWtCO0lBRTFCOzs7T0FHRztJQUNILGVBQWUsQ0FBVztJQUUxQjs7T0FFRztJQUNILHFCQUFxQixDQUFxQjtDQUM3QztBQUVEOztHQUVHO0FBQ0gsTUFBZSx5QkFBcUMsU0FBUSxvQkFBaUM7SUFDekY7OztPQUdHO0lBQ0gsY0FBYyxDQUE4QjtJQUU1Qzs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFrQztJQUV4RDs7T0FFRztJQUNILG1CQUFtQixDQUFVO0lBRTdCOzs7T0FHRztJQUNILGNBQWMsQ0FBVTtJQUV4Qjs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBVTtDQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVGaWx0ZXJGbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5Q2xhc3NOZXdhYmxlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ3JlYXRlRGF0YSwgRGlzcGxheUNvbHVtbiwgRHluYW1pY1N0eWxlQ2xhc3NlcyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUaW1lIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2RhdGUudXRpbGl0aWVzJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vYmFzZS9kcm9wZG93bi12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvcGVydHlEZWNvcmF0b3JDb25maWcgfSBmcm9tICcuLi9iYXNlL3Byb3BlcnR5LWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4uL2RhdGUvZGF0ZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBTdHJpbmdBdXRvY29tcGxldGVWYWx1ZXMgfSBmcm9tICcuLi9zdHJpbmcvc3RyaW5nLWRlY29yYXRvci5kYXRhJztcblxuLyoqXG4gKiBCYXNlIGRlZmluaXRpb24gZm9yIHRoZSBAYXJyYXkgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcnJheURlY29yYXRvckNvbmZpZzxWYWx1ZVR5cGU+IGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWc8VmFsdWVUeXBlPiB7XG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluc2lkZSB0aGUgYXJyYXkuXG4gICAgICovXG4gICAgaXRlbVR5cGUhOiBEZWNvcmF0b3JUeXBlcztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IGR1cGxpY2F0ZSB2YWx1ZXMgYXJlIGFsbG93ZWQgaW5zaWRlIHRoZSBhcnJheS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIGFsbG93RHVwbGljYXRlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZXJyb3IgZGlhbG9nIHRvIGRpc3BsYXkgd2hlbiB0aGUgdXNlciB0cmllcyB0byBhZGQgYSBkdXBsaWNhdGUgZW50cnkuXG4gICAgICovXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nPzogQ29uZmlybURpYWxvZ0RhdGE7XG59XG5cbi8qKlxuICogQmFzZSBkZWZpbml0aW9uIGZvciB0aGUgQGFycmF5IHRhYmxlIG1ldGFkYXRhLlxuICovXG5hYnN0cmFjdCBjbGFzcyBBcnJheVRhYmxlRGVjb3JhdG9yQ29uZmlnPFZhbHVlVHlwZT4gZXh0ZW5kcyBBcnJheURlY29yYXRvckNvbmZpZzxWYWx1ZVR5cGVbXT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkuIENvbnNpc3RzIG9mIHRoZSBkaXNwbGF5TmFtZSB0byBzaG93IGluIHRoZSBoZWFkZXIgb2YgdGhlIHJvd1xuICAgICAqIGFuZCB0aGUgdmFsdWUsIHdoaWNoIGlzIGEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW5zaWRlIGEgY29sdW1uLlxuICAgICAqL1xuICAgIGRpc3BsYXlDb2x1bW5zITogRGlzcGxheUNvbHVtbjxWYWx1ZVR5cGU+W107XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBjc3MgY2xhc3NlcyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRhYmxlIHJvd3MgYmFzZWQgb24gYSBjb25kaXRpb24uXG4gICAgICogVGhpcyBjb3VsZCBiZSB1c2VkIHRvIGVnLiBTZXQgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gZ3JlZW4gd2hlbiBhbiBpdGVtIGhhcyB0aGUgc3RhdHVzIGNvbXBsZXRlZCBldGMuXG4gICAgICogSU5GTzogWW91IG5lZWQgdG8gdXNlIG5nLWRlZXAgb3IgYXBwbHkgdGhlIHN0eWxpbmcgaW4gdGhlIHN0eWxlcy5zY3NzLlxuICAgICAqIEBkZWZhdWx0ICgpID0+IFtdXG4gICAgICovXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3Nlcz86IER5bmFtaWNTdHlsZUNsYXNzZXM8VmFsdWVUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlcnJvci1tZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB0aGUgYXJyYXkgaXMgcmVxdWlyZWQgYnV0IGNvbnRhaW5zIG5vIHZhbHVlcy5cbiAgICAgKi9cbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGZvciB0aGUgYWRkIGJ1dHRvbi5cbiAgICAgKiBAZGVmYXVsdCAnQWRkJ1xuICAgICAqL1xuICAgIGFkZEJ1dHRvbkxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGZvciB0aGUgcmVtb3ZlIGJ1dHRvbi5cbiAgICAgKiBAZGVmYXVsdCAnUmVtb3ZlJ1xuICAgICAqL1xuICAgIHJlbW92ZUJ1dHRvbkxhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBkaWFsb2cgZGF0YSBmb3IgdGhlIGVudGl0aWVzIGFycmF5IGVkaXQgZGlhbG9nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKi9cbiAgICB0aXRsZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNvbmZpcm0tYnV0dG9uIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuIERlZmF1bHRzIHRvIFwiU2F2ZVwiLlxuICAgICAqL1xuICAgIGNvbmZpcm1CdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNhbmNlbC1idXR0b24gZm9yIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuIERlZmF1bHRzIHRvIFwiQ2FuY2VsXCIuXG4gICAgICovXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIGZvciBhbiBhcnJheSBvZiBFbnRpdGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZzxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGV4dGVuZHMgQXJyYXlUYWJsZURlY29yYXRvckNvbmZpZzxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuT0JKRUNULFxuXG4gICAgLyoqXG4gICAgICogVGhlIEVudGl0eUNsYXNzIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIGNyZWF0ZSBpbnB1dHMuXG4gICAgICovXG4gICAgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIGZvciB0aGUgYWRkLWl0ZW0tZGlhbG9nLlxuICAgICAqIENhbiBiZSBvbWl0dGVkIHdoZW4gYWRkaW5nIGl0ZW1zIGlubGluZS5cbiAgICAgKi9cbiAgICBjcmVhdGVEaWFsb2dEYXRhPzogQ3JlYXRlRGF0YSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIGZvciB0aGUgZWRpdC1pdGVtLWRpYWxvZy5cbiAgICAgKiBDYW4gYmUgb21pdHRlZCB3aGVuIGFkZGluZyBpdGVtcyBpbmxpbmUuXG4gICAgICovXG4gICAgZWRpdERpYWxvZ0RhdGE/OiBFZGl0QXJyYXlJdGVtRGlhbG9nRGF0YTxFbnRpdHlUeXBlPixcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBmb3JtIGZvciBhZGRpbmcgaXRlbXMgdG8gdGhlIGFycmF5XG4gICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCBpbmxpbmUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGNyZWF0ZUlubGluZT86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIGZvciBhbiBhcnJheSBvZiBEYXRlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlQXJyYXlEZWNvcmF0b3JDb25maWcgZXh0ZW5kcyBBcnJheVRhYmxlRGVjb3JhdG9yQ29uZmlnPERhdGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFLFxuXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRhdGUuXG4gICAgICovXG4gICAgbWluPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlLFxuXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGRhdGUuXG4gICAgICovXG4gICAgbWF4PzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlLFxuXG4gICAgLyoqXG4gICAgICogQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZG8gbW9yZSBzcGVjaWZpYyBmaWx0ZXJpbmcuIFRoaXMgY291bGQgYmUgdGhlIHJlbW92YWwgb2YgZS5nLiBBbGwgd2Vla2VuZHMuXG4gICAgICovXG4gICAgZmlsdGVyPzogRGF0ZUZpbHRlckZuPERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPlxufVxuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGFuIGFycmF5IG9mIERhdGVUaW1lcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnIGV4dGVuZHMgQXJyYXlUYWJsZURlY29yYXRvckNvbmZpZzxEYXRlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuREFURV9USU1FLFxuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbGVjdGFibGUgdGltZXMuXG4gICAgICovXG4gICAgdGltZXM/OiBEcm9wZG93blZhbHVlPFRpbWU+W10sXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSB0byB1c2UgYXMgYSBsYWJlbCBmb3IgdGhlIHRpbWUgZm9ybSBmaWVsZC5cbiAgICAgKiBAZGVmYXVsdCAnVGltZSdcbiAgICAgKi9cbiAgICB0aW1lRGlzcGxheU5hbWU/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICBtaW5EYXRlPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlLFxuXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGRhdGUuXG4gICAgICovXG4gICAgbWF4RGF0ZT86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZSxcblxuICAgIC8qKlxuICAgICAqIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGRvIG1vcmUgc3BlY2lmaWMgZGF0ZSBmaWx0ZXJpbmcuIFRoaXMgY291bGQgYmUgdGhlIHJlbW92YWwgb2YgZS5nLiBBbGwgd2Vla2VuZHMuXG4gICAgICovXG4gICAgZmlsdGVyRGF0ZT86IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD4sXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgdGltZS5cbiAgICAgKi9cbiAgICBtaW5UaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lLFxuXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHRpbWUuXG4gICAgICovXG4gICAgbWF4VGltZT86IChkYXRlPzogRGF0ZSkgPT4gVGltZSxcblxuICAgIC8qKlxuICAgICAqIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGRvIG1vcmUgc3BlY2lmaWMgdGltZSBmaWx0ZXJpbmcuIFRoaXMgY291bGQgYmUgZS5nLiBUaGUgcmVtb3ZhbCBvZiBsdW5jaCBicmVha3MuXG4gICAgICovXG4gICAgZmlsdGVyVGltZT86ICgodGltZTogVGltZSkgPT4gYm9vbGVhbikgfCAoKCkgPT4gYm9vbGVhbilcbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIGZvciBhbiBhcnJheSBvZiBEYXRlUmFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnIGV4dGVuZHMgQXJyYXlUYWJsZURlY29yYXRvckNvbmZpZzxEYXRlUmFuZ2U+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFX1JBTkdFLFxuXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHN0YXJ0IGRhdGUuXG4gICAgICovXG4gICAgbWluU3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGUsXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHN0YXJ0IGRhdGUuXG4gICAgICovXG4gICAgbWF4U3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGUsXG4gICAgLyoqXG4gICAgICogQSBmdW5jdGlvbiB0byBnZXQgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGVuZCBkYXRlLlxuICAgICAqL1xuICAgIG1pbkVuZD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZSxcbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgZW5kIGRhdGUuXG4gICAgICovXG4gICAgbWF4RW5kPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlLFxuICAgIC8qKlxuICAgICAqIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGRvIG1vcmUgc3BlY2lmaWMgZmlsdGVyaW5nIG9uIHRoZSBkaXNhbGxvd2VkIGVuZCBkYXRlIHZhbHVlcy4gVGhpcyBjb3VsZCBiZSB0aGUgcmVtb3ZhbCBvZiBlLmcuIEFsbCB3ZWVrZW5kcy5cbiAgICAgKi9cbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZT4sXG4gICAgLyoqXG4gICAgICogVGhlIHBsYWNlaG9sZGVyIGZvciB0aGUgc3RhcnQgZGF0ZSBvZiB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAgICogQGRlZmF1bHQgXCJTdGFydFwiXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXJTdGFydD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgcGxhY2Vob2xkZXIgZm9yIHRoZSBlbmQgZGF0ZSBvZiB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAgICogQGRlZmF1bHQgXCJFbmRcIlxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyRW5kPzogc3RyaW5nXG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBmb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBkaXNwbGF5ZWQgYXMgYSBjaGlwcyBsaXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcgZXh0ZW5kcyBBcnJheURlY29yYXRvckNvbmZpZzxzdHJpbmdbXT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLlNUUklORyxcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGFzcyBmb3IgdGhlIDxpPiB0YWcgdXNlZCB0byByZW1vdmUgYW4gZW50cnkgZnJvbSB0aGUgYXJyYXkuXG4gICAgICogQGRlZmF1bHQgJ2ZhcyBmYS1jaXJjbGUtbWludXMnXG4gICAgICovXG4gICAgZGVsZXRlSWNvbj86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbWluaW11bSByZXF1aXJlZCBsZW5ndGggb2YgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBtaW5MZW5ndGg/OiBudW1iZXIsXG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gcmVxdWlyZWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuXG4gICAgICovXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyLFxuICAgIC8qKlxuICAgICAqIEEgcmVnZXggdXNlZCBmb3IgdmFsaWRhdGlvbi5cbiAgICAgKi9cbiAgICByZWdleD86IFJlZ0V4cFxufVxuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGFuIGFycmF5IG9mIGF1dG9jb21wbGV0ZSBzdHJpbmdzIGRpc3BsYXllZCBhcyBhIGNoaXBzIGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZyBleHRlbmRzIEFycmF5RGVjb3JhdG9yQ29uZmlnPHN0cmluZ1tdPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuU1RSSU5HX0FVVE9DT01QTEVURSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGFzcyBmb3IgdGhlIDxpPiB0YWcgdXNlZCB0byByZW1vdmUgYW4gZW50cnkgZnJvbSB0aGUgYXJyYXkuXG4gICAgICogQGRlZmF1bHQgJ2ZhcyBmYS1jaXJjbGUtbWludXMnXG4gICAgICovXG4gICAgZGVsZXRlSWNvbj86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgYXV0b2NvbXBsZXRlIHZhbHVlcy5cbiAgICAgKi9cbiAgICBhdXRvY29tcGxldGVWYWx1ZXM6IFN0cmluZ0F1dG9jb21wbGV0ZVZhbHVlcyxcbiAgICAvKipcbiAgICAgKiBUaGUgbWluaW11bSByZXF1aXJlZCBsZW5ndGggb2YgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBtaW5MZW5ndGg/OiBudW1iZXIsXG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gcmVxdWlyZWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuXG4gICAgICovXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyLFxuICAgIC8qKlxuICAgICAqIEEgcmVnZXggdXNlZCBmb3IgdmFsaWRhdGlvbi5cbiAgICAgKi9cbiAgICByZWdleD86IFJlZ0V4cCxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB2YWxpZCBpbnB1dHMgc2hvdWxkIGJlIHJlc3RyaWN0ZWQgdG8gdGhlIGF1dG9jb21wbGV0ZSBvcHRpb25zLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVzdHJpY3RUb09wdGlvbnM/OiBib29sZWFuXG59Il19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGVjb3JhdG9yLmRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTFFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixvQkFBZ0MsU0FBUSx1QkFBa0M7SUFDNUY7O09BRUc7SUFDSCxRQUFRLENBQWtCO0lBRTFCOzs7T0FHRztJQUNILGVBQWUsQ0FBVztJQUUxQjs7T0FFRztJQUNILHFCQUFxQixDQUFxQjtDQUM3QztBQUVEOztHQUVHO0FBQ0gsTUFBZSx5QkFBcUMsU0FBUSxvQkFBaUM7SUFDekY7OztPQUdHO0lBQ0gsY0FBYyxDQUE4QjtJQUU1Qzs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFrQztJQUV4RDs7T0FFRztJQUNILG1CQUFtQixDQUFVO0lBRTdCOzs7T0FHRztJQUNILGNBQWMsQ0FBVTtJQUV4Qjs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBVTtDQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVGaWx0ZXJGbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5cbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBDcmVhdGVEYXRhLCBEaXNwbGF5Q29sdW1uLCBEeW5hbWljU3R5bGVDbGFzc2VzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhJztcbmltcG9ydCB7IFRpbWUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZGF0ZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IERyb3Bkb3duVmFsdWUgfSBmcm9tICcuLi9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZyB9IGZyb20gJy4uL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi4vZGF0ZS9kYXRlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IFN0cmluZ0F1dG9jb21wbGV0ZVZhbHVlcyB9IGZyb20gJy4uL3N0cmluZy9zdHJpbmctZGVjb3JhdG9yLmRhdGEnO1xuXG4vKipcbiAqIEJhc2UgZGVmaW5pdGlvbiBmb3IgdGhlIEBhcnJheSBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFycmF5RGVjb3JhdG9yQ29uZmlnPFZhbHVlVHlwZT4gZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZzxWYWx1ZVR5cGU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgaW5zaWRlIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBpdGVtVHlwZSE6IERlY29yYXRvclR5cGVzO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgZHVwbGljYXRlIHZhbHVlcyBhcmUgYWxsb3dlZCBpbnNpZGUgdGhlIGFycmF5LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgYWxsb3dEdXBsaWNhdGVzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlcnJvciBkaWFsb2cgdG8gZGlzcGxheSB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGFkZCBhIGR1cGxpY2F0ZSBlbnRyeS5cbiAgICAgKi9cbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c/OiBDb25maXJtRGlhbG9nRGF0YTtcbn1cblxuLyoqXG4gKiBCYXNlIGRlZmluaXRpb24gZm9yIHRoZSBAYXJyYXkgdGFibGUgbWV0YWRhdGEuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEFycmF5VGFibGVEZWNvcmF0b3JDb25maWc8VmFsdWVUeXBlPiBleHRlbmRzIEFycmF5RGVjb3JhdG9yQ29uZmlnPFZhbHVlVHlwZVtdPiB7XG4gICAgLyoqXG4gICAgICogVGhlIGRlZmluaXRpb24gb2YgdGhlIGNvbHVtbnMgdG8gZGlzcGxheS4gQ29uc2lzdHMgb2YgdGhlIGRpc3BsYXlOYW1lIHRvIHNob3cgaW4gdGhlIGhlYWRlciBvZiB0aGUgcm93XG4gICAgICogYW5kIHRoZSB2YWx1ZSwgd2hpY2ggaXMgYSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyB0aGUgdmFsdWUgdG8gZGlzcGxheSBpbnNpZGUgYSBjb2x1bW4uXG4gICAgICovXG4gICAgZGlzcGxheUNvbHVtbnMhOiBEaXNwbGF5Q29sdW1uPFZhbHVlVHlwZT5bXTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGNzcyBjbGFzc2VzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGFibGUgcm93cyBiYXNlZCBvbiBhIGNvbmRpdGlvbi5cbiAgICAgKiBUaGlzIGNvdWxkIGJlIHVzZWQgdG8gZWcuIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byBncmVlbiB3aGVuIGFuIGl0ZW0gaGFzIHRoZSBzdGF0dXMgY29tcGxldGVkIGV0Yy5cbiAgICAgKiBJTkZPOiBZb3UgbmVlZCB0byB1c2UgbmctZGVlcCBvciBhcHBseSB0aGUgc3R5bGluZyBpbiB0aGUgc3R5bGVzLnNjc3MuXG4gICAgICogQGRlZmF1bHQgKCkgPT4gW11cbiAgICAgKi9cbiAgICBkeW5hbWljUm93U3R5bGVDbGFzc2VzPzogRHluYW1pY1N0eWxlQ2xhc3NlczxWYWx1ZVR5cGU+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGVycm9yLW1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHRoZSBhcnJheSBpcyByZXF1aXJlZCBidXQgY29udGFpbnMgbm8gdmFsdWVzLlxuICAgICAqL1xuICAgIG1pc3NpbmdFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgZm9yIHRoZSBhZGQgYnV0dG9uLlxuICAgICAqIEBkZWZhdWx0ICdBZGQnXG4gICAgICovXG4gICAgYWRkQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgZm9yIHRoZSByZW1vdmUgYnV0dG9uLlxuICAgICAqIEBkZWZhdWx0ICdSZW1vdmUnXG4gICAgICovXG4gICAgcmVtb3ZlQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGRpYWxvZyBkYXRhIGZvciB0aGUgZW50aXRpZXMgYXJyYXkgZWRpdCBkaWFsb2cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdEFycmF5SXRlbURpYWxvZ0RhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLlxuICAgICAqL1xuICAgIHRpdGxlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY29uZmlybS1idXR0b24gb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS4gRGVmYXVsdHMgdG8gXCJTYXZlXCIuXG4gICAgICovXG4gICAgY29uZmlybUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZ1xufVxuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGFuIGFycmF5IG9mIEVudGl0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gZXh0ZW5kcyBBcnJheVRhYmxlRGVjb3JhdG9yQ29uZmlnPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5PQkpFQ1QsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgRW50aXR5Q2xhc3MgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgY3JlYXRlIGlucHV0cy5cbiAgICAgKi9cbiAgICBFbnRpdHlDbGFzczogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+LFxuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBhZGQtaXRlbS1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBhZGRpbmcgaXRlbXMgaW5saW5lLlxuICAgICAqL1xuICAgIGNyZWF0ZURpYWxvZ0RhdGE/OiBDcmVhdGVEYXRhLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBlZGl0LWl0ZW0tZGlhbG9nLlxuICAgICAqIENhbiBiZSBvbWl0dGVkIHdoZW4gYWRkaW5nIGl0ZW1zIGlubGluZS5cbiAgICAgKi9cbiAgICBlZGl0RGlhbG9nRGF0YT86IEVkaXRBcnJheUl0ZW1EaWFsb2dEYXRhPEVudGl0eVR5cGU+LFxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGZvcm0gZm9yIGFkZGluZyBpdGVtcyB0byB0aGUgYXJyYXlcbiAgICAgKiBzaG91bGQgYmUgZGlzcGxheWVkIGlubGluZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgY3JlYXRlSW5saW5lPzogYm9vbGVhblxufVxuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGFuIGFycmF5IG9mIERhdGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVBcnJheURlY29yYXRvckNvbmZpZyBleHRlbmRzIEFycmF5VGFibGVEZWNvcmF0b3JDb25maWc8RGF0ZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLkRBVEUsXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICBtaW4/OiAoZGF0ZT86IERhdGUpID0+IERhdGUsXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICBtYXg/OiAoZGF0ZT86IERhdGUpID0+IERhdGUsXG5cbiAgICAvKipcbiAgICAgKiBBIGZpbHRlciBmdW5jdGlvbiB0byBkbyBtb3JlIHNwZWNpZmljIGZpbHRlcmluZy4gVGhpcyBjb3VsZCBiZSB0aGUgcmVtb3ZhbCBvZiBlLmcuIEFsbCB3ZWVrZW5kcy5cbiAgICAgKi9cbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ+XG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBmb3IgYW4gYXJyYXkgb2YgRGF0ZVRpbWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWcgZXh0ZW5kcyBBcnJheVRhYmxlRGVjb3JhdG9yQ29uZmlnPERhdGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFX1RJTUUsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2VsZWN0YWJsZSB0aW1lcy5cbiAgICAgKi9cbiAgICB0aW1lcz86IERyb3Bkb3duVmFsdWU8VGltZT5bXSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIHRvIHVzZSBhcyBhIGxhYmVsIGZvciB0aGUgdGltZSBmb3JtIGZpZWxkLlxuICAgICAqIEBkZWZhdWx0ICdUaW1lJ1xuICAgICAqL1xuICAgIHRpbWVEaXNwbGF5TmFtZT86IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIEEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBkYXRlLlxuICAgICAqL1xuICAgIG1pbkRhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGUsXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgZGF0ZS5cbiAgICAgKi9cbiAgICBtYXhEYXRlPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlLFxuXG4gICAgLyoqXG4gICAgICogQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZG8gbW9yZSBzcGVjaWZpYyBkYXRlIGZpbHRlcmluZy4gVGhpcyBjb3VsZCBiZSB0aGUgcmVtb3ZhbCBvZiBlLmcuIEFsbCB3ZWVrZW5kcy5cbiAgICAgKi9cbiAgICBmaWx0ZXJEYXRlPzogRGF0ZUZpbHRlckZuPERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPixcblxuICAgIC8qKlxuICAgICAqIEEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB0aW1lLlxuICAgICAqL1xuICAgIG1pblRpbWU/OiAoZGF0ZT86IERhdGUpID0+IFRpbWUsXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgdGltZS5cbiAgICAgKi9cbiAgICBtYXhUaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lLFxuXG4gICAgLyoqXG4gICAgICogQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZG8gbW9yZSBzcGVjaWZpYyB0aW1lIGZpbHRlcmluZy4gVGhpcyBjb3VsZCBiZSBlLmcuIFRoZSByZW1vdmFsIG9mIGx1bmNoIGJyZWFrcy5cbiAgICAgKi9cbiAgICBmaWx0ZXJUaW1lPzogKCh0aW1lOiBUaW1lKSA9PiBib29sZWFuKSB8ICgoKSA9PiBib29sZWFuKVxufVxuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGFuIGFycmF5IG9mIERhdGVSYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcgZXh0ZW5kcyBBcnJheVRhYmxlRGVjb3JhdG9yQ29uZmlnPERhdGVSYW5nZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLkRBVEVfUkFOR0UsXG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgc3RhcnQgZGF0ZS5cbiAgICAgKi9cbiAgICBtaW5TdGFydD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZSxcbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgc3RhcnQgZGF0ZS5cbiAgICAgKi9cbiAgICBtYXhTdGFydD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZSxcbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZW5kIGRhdGUuXG4gICAgICovXG4gICAgbWluRW5kPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlLFxuICAgIC8qKlxuICAgICAqIEEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBlbmQgZGF0ZS5cbiAgICAgKi9cbiAgICBtYXhFbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGUsXG4gICAgLyoqXG4gICAgICogQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZG8gbW9yZSBzcGVjaWZpYyBmaWx0ZXJpbmcgb24gdGhlIGRpc2FsbG93ZWQgZW5kIGRhdGUgdmFsdWVzLiBUaGlzIGNvdWxkIGJlIHRoZSByZW1vdmFsIG9mIGUuZy4gQWxsIHdlZWtlbmRzLlxuICAgICAqL1xuICAgIGZpbHRlcj86IERhdGVGaWx0ZXJGbjxEYXRlPixcbiAgICAvKipcbiAgICAgKiBUaGUgcGxhY2Vob2xkZXIgZm9yIHRoZSBzdGFydCBkYXRlIG9mIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICAgKiBAZGVmYXVsdCBcIlN0YXJ0XCJcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlclN0YXJ0Pzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBwbGFjZWhvbGRlciBmb3IgdGhlIGVuZCBkYXRlIG9mIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICAgKiBAZGVmYXVsdCBcIkVuZFwiXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXJFbmQ/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIGZvciBhbiBhcnJheSBvZiBzdHJpbmdzIGRpc3BsYXllZCBhcyBhIGNoaXBzIGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZyBleHRlbmRzIEFycmF5RGVjb3JhdG9yQ29uZmlnPHN0cmluZ1tdPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuU1RSSU5HLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGZvbnQgYXdlc29tZSBpY29uIHVzZWQgdG8gcmVtb3ZlIGFuIGVudHJ5IGZyb20gdGhlIGFycmF5LlxuICAgICAqIEBkZWZhdWx0IGZhQ2lyY2xlTWludXNcbiAgICAgKi9cbiAgICBkZWxldGVJY29uPzogSWNvbkRlZmluaXRpb24sXG4gICAgLyoqXG4gICAgICogVGhlIG1pbmltdW0gcmVxdWlyZWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuXG4gICAgICovXG4gICAgbWluTGVuZ3RoPzogbnVtYmVyLFxuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIHJlcXVpcmVkIGxlbmd0aCBvZiB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIG1heExlbmd0aD86IG51bWJlcixcbiAgICAvKipcbiAgICAgKiBBIHJlZ2V4IHVzZWQgZm9yIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgcmVnZXg/OiBSZWdFeHBcbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIGZvciBhbiBhcnJheSBvZiBhdXRvY29tcGxldGUgc3RyaW5ncyBkaXNwbGF5ZWQgYXMgYSBjaGlwcyBsaXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcgZXh0ZW5kcyBBcnJheURlY29yYXRvckNvbmZpZzxzdHJpbmdbXT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLlNUUklOR19BVVRPQ09NUExFVEUsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgaWNvbiB1c2VkIHRvIHJlbW92ZSBhbiBlbnRyeSBmcm9tIHRoZSBhcnJheS5cbiAgICAgKiBAZGVmYXVsdCBmYUNpcmNsZU1pbnVzXG4gICAgICovXG4gICAgZGVsZXRlSWNvbj86IEljb25EZWZpbml0aW9uLFxuICAgIC8qKlxuICAgICAqIFRoZSBhdXRvY29tcGxldGUgdmFsdWVzLlxuICAgICAqL1xuICAgIGF1dG9jb21wbGV0ZVZhbHVlczogU3RyaW5nQXV0b2NvbXBsZXRlVmFsdWVzLFxuICAgIC8qKlxuICAgICAqIFRoZSBtaW5pbXVtIHJlcXVpcmVkIGxlbmd0aCBvZiB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIG1pbkxlbmd0aD86IG51bWJlcixcbiAgICAvKipcbiAgICAgKiBUaGUgbWF4aW11bSByZXF1aXJlZCBsZW5ndGggb2YgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBtYXhMZW5ndGg/OiBudW1iZXIsXG4gICAgLyoqXG4gICAgICogQSByZWdleCB1c2VkIGZvciB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHJlZ2V4PzogUmVnRXhwLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHZhbGlkIGlucHV0cyBzaG91bGQgYmUgcmVzdHJpY3RlZCB0byB0aGUgYXV0b2NvbXBsZXRlIG9wdGlvbnMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZXN0cmljdFRvT3B0aW9ucz86IGJvb2xlYW5cbn0iXX0=