@huntsman-cancer-institute/cod 17.0.0 → 17.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cod.module.d.ts CHANGED
@@ -1,23 +1,22 @@
1
1
  import { ModuleWithProviders } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./components/attribute-base";
4
- import * as i2 from "./components/attribute-configuration.component";
5
- import * as i3 from "./components/attribute-absolute.component";
6
- import * as i4 from "./components/attribute-container.component";
7
- import * as i5 from "./components/attribute-flex.component";
8
- import * as i6 from "./components/attribute-edit.component";
9
- import * as i7 from "./components/attribute-default.component";
10
- import * as i8 from "./pipes/is-group-attribute.pipe";
11
- import * as i9 from "ag-grid-angular";
12
- import * as i10 from "@angular/common";
13
- import * as i11 from "@angular/forms";
14
- import * as i12 from "@angular/router";
15
- import * as i13 from "@ng-bootstrap/ng-bootstrap";
16
- import * as i14 from "@huntsman-cancer-institute/input";
17
- import * as i15 from "@huntsman-cancer-institute/misc";
18
- import * as i16 from "@angular/material/datepicker";
19
- import * as i17 from "@angular/material/core";
20
- import * as i18 from "@angular-material-components/datetime-picker";
4
+ import * as i2 from "./components/attribute-absolute.component";
5
+ import * as i3 from "./components/attribute-container.component";
6
+ import * as i4 from "./components/attribute-flex.component";
7
+ import * as i5 from "./components/attribute-edit.component";
8
+ import * as i6 from "./components/attribute-default.component";
9
+ import * as i7 from "./pipes/is-group-attribute.pipe";
10
+ import * as i8 from "ag-grid-angular";
11
+ import * as i9 from "@angular/common";
12
+ import * as i10 from "@angular/forms";
13
+ import * as i11 from "@angular/router";
14
+ import * as i12 from "@ng-bootstrap/ng-bootstrap";
15
+ import * as i13 from "@huntsman-cancer-institute/input";
16
+ import * as i14 from "@huntsman-cancer-institute/misc";
17
+ import * as i15 from "@angular/material/datepicker";
18
+ import * as i16 from "@angular/material/core";
19
+ import * as i17 from "@angular-material-components/datetime-picker";
21
20
  /**
22
21
  * The main @huntsman-cancer-institute/cod module. Custom components to be used by the grid are passed in here.
23
22
  *
@@ -26,6 +25,6 @@ import * as i18 from "@angular-material-components/datetime-picker";
26
25
  export declare class CodModule {
27
26
  static forRoot(): ModuleWithProviders<CodModule>;
28
27
  static ɵfac: i0.ɵɵFactoryDeclaration<CodModule, never>;
29
- static ɵmod: i0.ɵɵNgModuleDeclaration<CodModule, [typeof i1.AttributeBase, typeof i2.AttributeConfigurationComponent, typeof i3.AttributeAbsoluteComponent, typeof i4.AttributeContainerComponent, typeof i5.AttributeFlexComponent, typeof i6.AttributeEditComponent, typeof i7.AttributeDefaultComponent, typeof i8.IsGroupAttributePipe], [typeof i9.AgGridModule, typeof i10.CommonModule, typeof i11.FormsModule, typeof i12.RouterModule, typeof i13.NgbModule, typeof i14.DropdownModule, typeof i14.SelectModule, typeof i15.MiscModule, typeof i16.MatDatepickerModule, typeof i17.MatNativeDateModule, typeof i18.NgxMatDatetimePickerModule, typeof i18.NgxMatTimepickerModule, typeof i18.NgxMatNativeDateModule], [typeof i2.AttributeConfigurationComponent, typeof i3.AttributeAbsoluteComponent, typeof i5.AttributeFlexComponent, typeof i6.AttributeEditComponent, typeof i7.AttributeDefaultComponent, typeof i4.AttributeContainerComponent, typeof i8.IsGroupAttributePipe]>;
28
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CodModule, [typeof i1.AttributeBase, typeof i2.AttributeAbsoluteComponent, typeof i3.AttributeContainerComponent, typeof i4.AttributeFlexComponent, typeof i5.AttributeEditComponent, typeof i6.AttributeDefaultComponent, typeof i7.IsGroupAttributePipe], [typeof i8.AgGridModule, typeof i9.CommonModule, typeof i10.FormsModule, typeof i11.RouterModule, typeof i12.NgbModule, typeof i13.DropdownModule, typeof i13.SelectModule, typeof i14.MiscModule, typeof i15.MatDatepickerModule, typeof i16.MatNativeDateModule, typeof i17.NgxMatDatetimePickerModule, typeof i17.NgxMatTimepickerModule, typeof i17.NgxMatNativeDateModule], [typeof i2.AttributeAbsoluteComponent, typeof i4.AttributeFlexComponent, typeof i5.AttributeEditComponent, typeof i6.AttributeDefaultComponent, typeof i3.AttributeContainerComponent, typeof i7.IsGroupAttributePipe]>;
30
29
  static ɵinj: i0.ɵɵInjectorDeclaration<CodModule>;
31
30
  }
@@ -12,7 +12,6 @@ import { AgGridModule } from "ag-grid-angular";
12
12
  import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
13
13
  import { DropdownModule, SelectModule } from "@huntsman-cancer-institute/input";
14
14
  import { MiscModule } from "@huntsman-cancer-institute/misc";
15
- import { AttributeConfigurationComponent } from "./components/attribute-configuration.component";
16
15
  import { IsGroupAttributePipe } from "./pipes/is-group-attribute.pipe";
17
16
  import { AttributeAbsoluteComponent } from "./components/attribute-absolute.component";
18
17
  import { AttributeFlexComponent } from "./components/attribute-flex.component";
@@ -38,7 +37,6 @@ export class CodModule {
38
37
  }
39
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CodModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
40
39
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: CodModule, declarations: [AttributeBase,
41
- AttributeConfigurationComponent,
42
40
  AttributeAbsoluteComponent,
43
41
  AttributeContainerComponent,
44
42
  AttributeFlexComponent,
@@ -56,8 +54,7 @@ export class CodModule {
56
54
  MatNativeDateModule,
57
55
  NgxMatDatetimePickerModule,
58
56
  NgxMatTimepickerModule,
59
- NgxMatNativeDateModule], exports: [AttributeConfigurationComponent,
60
- AttributeAbsoluteComponent,
57
+ NgxMatNativeDateModule], exports: [AttributeAbsoluteComponent,
61
58
  AttributeFlexComponent,
62
59
  AttributeEditComponent,
63
60
  AttributeDefaultComponent,
@@ -97,7 +94,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
97
94
  ],
98
95
  declarations: [
99
96
  AttributeBase,
100
- AttributeConfigurationComponent,
101
97
  AttributeAbsoluteComponent,
102
98
  AttributeContainerComponent,
103
99
  AttributeFlexComponent,
@@ -106,7 +102,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
106
102
  IsGroupAttributePipe
107
103
  ],
108
104
  exports: [
109
- AttributeConfigurationComponent,
110
105
  AttributeAbsoluteComponent,
111
106
  AttributeFlexComponent,
112
107
  AttributeEditComponent,
@@ -116,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
116
111
  ]
117
112
  }]
118
113
  }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvZC9zcmMvY29kLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBQywwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXhJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDL0YsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUc5RDs7OztHQUlHO0FBcUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0I7YUFDakI7WUFDRCxRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDO0lBQ0osQ0FBQzs4R0FSVSxTQUFTOytHQUFULFNBQVMsaUJBbkJsQixhQUFhO1lBQ2IsK0JBQStCO1lBQy9CLDBCQUEwQjtZQUMxQiwyQkFBMkI7WUFDM0Isc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0Qix5QkFBeUI7WUFDekIsb0JBQW9CLGFBdEJwQixZQUFZO1lBQ1osWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osU0FBUztZQUNULGNBQWM7WUFDZCxZQUFZO1lBQ1osVUFBVTtZQUNWLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLHNCQUFzQjtZQUN0QixzQkFBc0IsYUFhdEIsK0JBQStCO1lBQy9CLDBCQUEwQjtZQUMxQixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLHlCQUF5QjtZQUN6QiwyQkFBMkI7WUFDM0Isb0JBQW9COytHQUdYLFNBQVMsWUFsQ2xCLFlBQVk7WUFDWixZQUFZO1lBQ1osV0FBVztZQUNYLFlBQVk7WUFDWixTQUFTO1lBQ1QsY0FBYztZQUNkLFlBQVk7WUFDWixVQUFVO1lBQ1YsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQiwwQkFBMEI7WUFDMUIsc0JBQXNCO1lBQ3RCLHNCQUFzQjs7MkZBc0JiLFNBQVM7a0JBcENyQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIsc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3ZCO29CQUNELFlBQVksRUFBRTt3QkFDWixhQUFhO3dCQUNiLCtCQUErQjt3QkFDL0IsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLCtCQUErQjt3QkFDL0IsMEJBQTBCO3dCQUMxQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7TWF0RGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHtNYXROYXRpdmVEYXRlTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQge05neE1hdERhdGV0aW1lUGlja2VyTW9kdWxlLCBOZ3hNYXROYXRpdmVEYXRlTW9kdWxlLCBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuXHJcbmltcG9ydCB7QWdHcmlkTW9kdWxlfSBmcm9tIFwiYWctZ3JpZC1hbmd1bGFyXCI7XHJcbmltcG9ydCB7TmdiTW9kdWxlfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHtEcm9wZG93bk1vZHVsZSwgU2VsZWN0TW9kdWxlfSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvaW5wdXRcIjtcclxuaW1wb3J0IHtNaXNjTW9kdWxlfSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvbWlzY1wiO1xyXG5cclxuaW1wb3J0IHtBdHRyaWJ1dGVDb25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0lzR3JvdXBBdHRyaWJ1dGVQaXBlfSBmcm9tIFwiLi9waXBlcy9pcy1ncm91cC1hdHRyaWJ1dGUucGlwZVwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZUFic29sdXRlQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1hYnNvbHV0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVGbGV4Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1mbGV4LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZUVkaXRDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWVkaXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlRGVmYXVsdENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtZGVmYXVsdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVDb250YWluZXJDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVCYXNlfSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1iYXNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvYXR0cmlidXRlLnNlcnZpY2VcIjtcclxuXHJcblxyXG4vKipcclxuICogVGhlIG1haW4gQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvY29kIG1vZHVsZS4gIEN1c3RvbSBjb21wb25lbnRzIHRvIGJlIHVzZWQgYnkgdGhlIGdyaWQgYXJlIHBhc3NlZCBpbiBoZXJlLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQWdHcmlkTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBOZ2JNb2R1bGUsXHJcbiAgICBEcm9wZG93bk1vZHVsZSxcclxuICAgIFNlbGVjdE1vZHVsZSxcclxuICAgIE1pc2NNb2R1bGUsXHJcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxyXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgIE5neE1hdERhdGV0aW1lUGlja2VyTW9kdWxlLFxyXG4gICAgTmd4TWF0VGltZXBpY2tlck1vZHVsZSxcclxuICAgIE5neE1hdE5hdGl2ZURhdGVNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQXR0cmlidXRlQmFzZSxcclxuICAgIEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb25Db21wb25lbnQsXHJcbiAgICBBdHRyaWJ1dGVBYnNvbHV0ZUNvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZUZsZXhDb21wb25lbnQsXHJcbiAgICBBdHRyaWJ1dGVFZGl0Q29tcG9uZW50LFxyXG4gICAgQXR0cmlidXRlRGVmYXVsdENvbXBvbmVudCxcclxuICAgIElzR3JvdXBBdHRyaWJ1dGVQaXBlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBdHRyaWJ1dGVDb25maWd1cmF0aW9uQ29tcG9uZW50LFxyXG4gICAgQXR0cmlidXRlQWJzb2x1dGVDb21wb25lbnQsXHJcbiAgICBBdHRyaWJ1dGVGbGV4Q29tcG9uZW50LFxyXG4gICAgQXR0cmlidXRlRWRpdENvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZURlZmF1bHRDb21wb25lbnQsXHJcbiAgICBBdHRyaWJ1dGVDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBJc0dyb3VwQXR0cmlidXRlUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvZE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb2RNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEF0dHJpYnV0ZVNlcnZpY2VcclxuICAgICAgXSxcclxuICAgICAgbmdNb2R1bGU6IENvZE1vZHVsZVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvZC9zcmMvY29kLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBQywwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXhJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUc5RDs7OztHQUlHO0FBbUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0I7YUFDakI7WUFDRCxRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDO0lBQ0osQ0FBQzs4R0FSVSxTQUFTOytHQUFULFNBQVMsaUJBakJsQixhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLDJCQUEyQjtZQUMzQixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLHlCQUF5QjtZQUN6QixvQkFBb0IsYUFyQnBCLFlBQVk7WUFDWixZQUFZO1lBQ1osV0FBVztZQUNYLFlBQVk7WUFDWixTQUFTO1lBQ1QsY0FBYztZQUNkLFlBQVk7WUFDWixVQUFVO1lBQ1YsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQiwwQkFBMEI7WUFDMUIsc0JBQXNCO1lBQ3RCLHNCQUFzQixhQVl0QiwwQkFBMEI7WUFDMUIsc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0Qix5QkFBeUI7WUFDekIsMkJBQTJCO1lBQzNCLG9CQUFvQjsrR0FHWCxTQUFTLFlBaENsQixZQUFZO1lBQ1osWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osU0FBUztZQUNULGNBQWM7WUFDZCxZQUFZO1lBQ1osVUFBVTtZQUNWLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLHNCQUFzQjtZQUN0QixzQkFBc0I7OzJGQW9CYixTQUFTO2tCQWxDckIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixTQUFTO3dCQUNULGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN2QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3dCQUMxQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7TWF0RGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHtNYXROYXRpdmVEYXRlTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQge05neE1hdERhdGV0aW1lUGlja2VyTW9kdWxlLCBOZ3hNYXROYXRpdmVEYXRlTW9kdWxlLCBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuXHJcbmltcG9ydCB7QWdHcmlkTW9kdWxlfSBmcm9tIFwiYWctZ3JpZC1hbmd1bGFyXCI7XHJcbmltcG9ydCB7TmdiTW9kdWxlfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHtEcm9wZG93bk1vZHVsZSwgU2VsZWN0TW9kdWxlfSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvaW5wdXRcIjtcclxuaW1wb3J0IHtNaXNjTW9kdWxlfSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvbWlzY1wiO1xyXG5cclxuaW1wb3J0IHtJc0dyb3VwQXR0cmlidXRlUGlwZX0gZnJvbSBcIi4vcGlwZXMvaXMtZ3JvdXAtYXR0cmlidXRlLnBpcGVcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVBYnNvbHV0ZUNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtYWJzb2x1dGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlRmxleENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtZmxleC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVFZGl0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1lZGl0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZURlZmF1bHRDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWRlZmF1bHQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1jb250YWluZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQmFzZX0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtYmFzZVwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIFRoZSBtYWluIEBodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2NvZCBtb2R1bGUuICBDdXN0b20gY29tcG9uZW50cyB0byBiZSB1c2VkIGJ5IHRoZSBncmlkIGFyZSBwYXNzZWQgaW4gaGVyZS5cclxuICpcclxuICogQHNpbmNlIDEuMC4wXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIEFnR3JpZE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgTmdiTW9kdWxlLFxyXG4gICAgRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBTZWxlY3RNb2R1bGUsXHJcbiAgICBNaXNjTW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSxcclxuICAgIE5neE1hdFRpbWVwaWNrZXJNb2R1bGUsXHJcbiAgICBOZ3hNYXROYXRpdmVEYXRlTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEF0dHJpYnV0ZUJhc2UsXHJcbiAgICBBdHRyaWJ1dGVBYnNvbHV0ZUNvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZUZsZXhDb21wb25lbnQsXHJcbiAgICBBdHRyaWJ1dGVFZGl0Q29tcG9uZW50LFxyXG4gICAgQXR0cmlidXRlRGVmYXVsdENvbXBvbmVudCxcclxuICAgIElzR3JvdXBBdHRyaWJ1dGVQaXBlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBdHRyaWJ1dGVBYnNvbHV0ZUNvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZUZsZXhDb21wb25lbnQsXHJcbiAgICBBdHRyaWJ1dGVFZGl0Q29tcG9uZW50LFxyXG4gICAgQXR0cmlidXRlRGVmYXVsdENvbXBvbmVudCxcclxuICAgIEF0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIElzR3JvdXBBdHRyaWJ1dGVQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29kTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENvZE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQXR0cmlidXRlU2VydmljZVxyXG4gICAgICBdLFxyXG4gICAgICBuZ01vZHVsZTogQ29kTW9kdWxlXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -561,4 +561,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
561
561
  type: ViewChild,
562
562
  args: ["nativeSelectRef", { static: false }]
563
563
  }] } });
564
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2NvbXBvbmVudHMvYXR0cmlidXRlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFBZSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBMkMsU0FBUyxFQUMxSSxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFFeEMsT0FBTyxFQUFtQixZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBTy9ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUMsUUFBUSxFQUFXLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFHOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFLSCxNQUFNLE9BQU8sYUFBYTtJQStDeEIsWUFBWSxnQkFBa0MsRUFBRSxVQUFzQixFQUFFLFFBQW1CLEVBQVUsWUFBc0I7UUFBdEIsaUJBQVksR0FBWixZQUFZLENBQVU7UUE1Q2xILG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0Isd0JBQW1CLEdBQVcsU0FBUyxDQUFDO1FBRXZDLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFLckUsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBYXZDLFVBQUssR0FBVyxDQUFDLENBQUM7UUFRbEIsZ0JBQVcsR0FBRztZQUNWLFlB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QUM7UUFFcEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQSxTQUFTLENBQUM7UUFFbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQSxTQUFTLENBQUM7UUFFbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQSxTQUFTLENB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UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBpc0Rldk1vZGUsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgRGlyZWN0aXZlLCBRdWVyeUxpc3RcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtBdHRyaWJ1dGVTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvYXR0cmlidXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGV9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUuZW50aXR5XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlVmFsdWV9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUtdmFsdWUuZW50aXR5XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ2hvaWNlfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLWNob2ljZS5lbnRpdHlcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVMb25nVGV4dH0gZnJvbSBcIi4uL21vZGVsL2F0dHJpYnV0ZS1sb25nLXRleHQuZW50aXR5XCI7XHJcbmltcG9ydCB7R3JhcGhpY2FsQXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvZ3JhcGhpY2FsLWF0dHJpYnV0ZS5lbnRpdHlcIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5RW50cmllc0RUT30gZnJvbSBcIi4uL21vZGVsL2RpY3Rpb25hcnktZW50cmllcy5kdG9cIjtcclxuaW1wb3J0IHtEYXRlVXRpbH0gZnJvbSBcIi4uL2RhdGUvZGF0ZS11dGlsXCI7XHJcbmltcG9ydCB7TmF0aXZlU2VsZWN0Q29tcG9uZW50fSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvaW5wdXRcIjtcclxuaW1wb3J0IHtOZ2JNb2RhbCwgTmdiUGFuZWx9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQge0dyaWRBcGksIFJvd0RvdWJsZUNsaWNrZWRFdmVudCwgUm93Tm9kZSwgUm93U2VsZWN0ZWRFdmVudCwgQWdHcmlkRXZlbnQsIEdyaWRTaXplQ2hhbmdlZEV2ZW50LCBNb2RlbFVwZGF0ZWRFdmVudH0gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XHJcblxyXG4vKipcclxuICogVGhlIGJhc2UgY2xhc3MgZm9yIGFuIGF0dHJpYnV0ZS4gIEF0dHJpYnV0ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgYnkgY29udGFpbmVyLiAgVGhlc2UgbWF5IGJlIGluIHRyYWRpdGlvbmFsIGFic29sdXRlXHJcbiAqIHBvc2l0aW9uaW5nLCBmbGV4IHBvc2l0aW9uaW5nLCBvciBhbiBlZGl0IG1vZGUgYXMgYSBjb2x1bW4gaW4gYSBtb2RhbC4gIFJlZ2FyZGxlc3Mgb2YgdGhlIHRlbXBsYXRlLCB0aGUgZnVuZGFtZW50YWxcclxuICogbmVlZHMgb2Ygc2V0dGluZyB1cCB0aGUgYXR0cmlidXRlIHZhbHVlcyBhbmQgcGVyc2lzdGluZyBkYXRhIGFyZSB0aGUgc2FtZS4gIFNvIHRoaXMgY2xhc3MgcHJvdmlkZXMgYmFzZSBmdW5jdGlvbmFsaXR5XHJcbiAqIGFuZCB0aGUgY29tcG9uZW50cyB0aGF0IGV4dGVuZCBpdCBwcm92aWRlIHRoZSB0ZW1wbGF0ZSBhbmQgbWF5IGFsc28gZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5LlxyXG4gKlxyXG4gKiBUeXBlczpcclxuICogTElORVxyXG4gKiBOTFBfTElOS1xyXG4gKiBESUNUXHJcbiAqIEdBXHJcbiAqIExBQkVMXHJcbiAqIERUXHJcbiAqIEFDXHJcbiAqIFRYVFxyXG4gKiBEXHJcbiAqIFNcclxuICogSVxyXG4gKiBDQlxyXG4gKiBCXHJcbiAqIE5cclxuICogRUJcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiaGNpLWF0dHJpYnV0ZS1iYXNlXCJcclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZTogR3JhcGhpY2FsQXR0cmlidXRlO1xyXG4gIEBJbnB1dCgpIGludGVybmFsVmFsdWVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZWRpdElubGluZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZ3JvdXBBdHRyaWJ1dGVSb3dJZDogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG5cclxuICBAT3V0cHV0KCkgcmVzb3J0Q29sdW1uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImlucHV0UmVmXCIsIHtzdGF0aWM6IGZhbHNlfSkgaW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcIm5hdGl2ZVNlbGVjdFJlZlwiLCB7c3RhdGljOiBmYWxzZX0pIG5hdGl2ZVNlbGVjdFJlZjogTmF0aXZlU2VsZWN0Q29tcG9uZW50O1xyXG5cclxuICBhdHRyaWJ1dGVWYWx1ZXM6IEF0dHJpYnV0ZVZhbHVlW10gPSBbXTtcclxuICBhdHRyaWJ1dGVDaG9pY2VzOiBBdHRyaWJ1dGVDaG9pY2VbXTtcclxuXHJcbiAgY2hpbGRBdHRyaWJ1dGVzOiBHcmFwaGljYWxBdHRyaWJ1dGVbXTtcclxuICBncmlkRGF0YTogYW55W107XHJcbiAgZ3JpZENvbHVtbnM6IGFueVtdO1xyXG5cclxuICAvL1VzZWQgZm9yIHRoZSBlZGl0IGdyb3VwIHJvdyB0ZW1wbGF0ZVxyXG4gIGVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkOiBudW1iZXI7XHJcbiAgZWRpdEdyb3VwUm93QXR0cmlidXRlczogR3JhcGhpY2FsQXR0cmlidXRlW107XHJcblxyXG4gIGRpY3Rpb25hcnlFbnRyaWVzOiBhbnlbXTtcclxuXHJcbiAgd2lkdGg6IG51bWJlciA9IDA7XHJcblxyXG4gIGF0dHJpYnV0ZVNlcnZpY2U6IEF0dHJpYnV0ZVNlcnZpY2U7XHJcbiAgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcclxuICByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG5cclxuICBncmlkQXBpOiBHcmlkQXBpO1xyXG5cclxuICBncmlkT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVySGVpZ2h0OiAyMyxcclxuICAgICAgcm93SGVpZ2h0OiAyMyxcclxuICAgICAgcm93U3R5bGU6IHtcclxuICAgICAgICAgICdmb250LWZhbWlseSc6ICdQcm9tcHQsIHNhbnMtc2VyaWYnLFxyXG4gICAgICAgICAgJ2NvbG9yJzogJyMzZDdhOTknXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICBlbnN1cmVEb21PcmRlcjogdHJ1ZSxcclxuICAgICAgc3VwcHJlc3NDb2x1bW5WaXJ0dWFsaXNhdGlvbjogZmFsc2VcclxuICAgIH07XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UgPSBhdHRyaWJ1dGVTZXJ2aWNlO1xyXG4gICAgdGhpcy5lbGVtZW50UmVmID0gZWxlbWVudFJlZjtcclxuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbnkgYXR0cmlidXRlIHZhbHVlcyBmb3IgdGhpcyBhdHRyaWJ1dGUuICBJZiBhIGNvbXBsZXggYXR0cmlidXRlIGxpa2UgYSBncmlkLCBzZXQgaXQgdXAuXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRDb250YWluZXJVcGRhdGVkKCkuc3Vic2NyaWJlKCh1cGRhdGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zIDogYW55KSB7XHJcbiAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xyXG4gICAgdGhpcy5ncmlkQXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICB9XHJcblxyXG4gIG9uTW9kZWxVcGRhdGVkKF9ldmVudDogTW9kZWxVcGRhdGVkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcclxuICAgICAgdGhpcy5ncmlkQXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uR3JpZFNpemVDaGFuZ2VkKF9ldmVudDogR3JpZFNpemVDaGFuZ2VkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcclxuICAgICAgdGhpcy5ncmlkQXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1bGxzIHRoZSBhdHRyaWJ1dGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGF0dHJpYnV0ZSBhbmQgcGVyZm9ybXMgYW55IHNwZWNpYWxpemVkIGluaXRpYWxpemF0aW9uIHN1Y2ggYXMgZm9yXHJcbiAgICogdGhlIGdyaWQgb3IgbXVsdGkgY2hvaWNlLlxyXG4gICAqL1xyXG4gIGluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZS5pbml0OiBcIiArIHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdyaWREYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYXR0cmlidXRlQ2hvaWNlcyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMud2lkdGggPSB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0V2lkdGgoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaW50ZXJuYWxWYWx1ZXMpIHtcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXMgPSB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlVmFsdWVzKHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlLCB0aGlzLmdyb3VwQXR0cmlidXRlUm93SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZVZhbHVlcy5sZW5ndGggPT09IDAgJiYgdGhpcy5hdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlICE9PSBcIkdBXCIgJiYgdGhpcy5hdHRyaWJ1dGUuaXNNdWx0aVZhbHVlICE9PSBcIllcIikge1xyXG4gICAgICAvLyBUT0RPOiBEZWNpZGUgd2hlbiB0byBwZXJzaXN0IHRoaXMgdG8gZ2V0IHRoZSBpZEF0dHJpYnV0ZVZhbHVlLlxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlcy5wdXNoKDxBdHRyaWJ1dGVWYWx1ZT57XHJcbiAgICAgICAgY29kZUF0dHJpYnV0ZURhdGFUeXBlOiB0aGlzLmF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUsXHJcbiAgICAgICAgaWRBdHRyaWJ1dGVWYWx1ZTogdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmdldFVuaXF1ZUlkKCksXHJcbiAgICAgICAgaWRBdHRyaWJ1dGU6IHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlLFxyXG4gICAgICAgIGlkR3JvdXBBdHRyaWJ1dGU6IHRoaXMuYXR0cmlidXRlLmlkR3JvdXBBdHRyaWJ1dGUsXHJcbiAgICAgICAgZ3JvdXBBdHRyaWJ1dGVSb3dJZDogdGhpcy5ncm91cEF0dHJpYnV0ZVJvd0lkXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiR0FcIikge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVHcmlkKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJBQ1wiKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUF0dHJpYnV0ZUNob2ljZXMoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIlRYVFwiICYmICF0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUxvbmdUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQgPSA8QXR0cmlidXRlTG9uZ1RleHQ+e1xyXG4gICAgICAgIGlkTG9uZ1RleHQ6IHVuZGVmaW5lZCxcclxuICAgICAgICB0ZXh0RGF0YTogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiRElDVFwiKSB7XHJcbiAgICAgIHRoaXMubG9hZERpY3Rpb25hcnlFbnRyaWVzKHRoaXMuYXR0cmlidXRlLCB0aGlzLmF0dHJpYnV0ZVZhbHVlcywgdGhpcy5ncm91cEF0dHJpYnV0ZVJvd0lkKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJEVFwiKSB7XHJcbiAgICAgIC8vTWFrZSBhIHByb3BlciBkYXRlIGZvciB0aGUgZGF0ZSB0aW1lIGNvbXBvbmVudFxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlID0gbmV3IERhdGUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVEYXRlVGltZSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGxvYWREaWN0aW9uYXJ5RW50cmllcyhhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgdmFsdWVzOiBBdHRyaWJ1dGVWYWx1ZVtdLCBncm91cEF0dHJpYnV0ZVJvd0lkOiBudW1iZXIpIHtcclxuICAgIC8vQWRkaW5nIHRoaXMgdG8gc3Vic2NyaXB0aW9ucyBpcyBwcm9iYWJseSB1bm5lY2Vzc2FyeSwgc2luY2UgdGhlIGZpcnN0KCkgd2lsbCB1bnN1YnNjcmliZS4gV2Ugb25seSBnZXQgb25lIHZhbHVlLlxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0RGljdGlvbmFyeUVudHJpZXMoYXR0cmlidXRlLCB2YWx1ZXMsIGdyb3VwQXR0cmlidXRlUm93SWQpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChkdG86IERpY3Rpb25hcnlFbnRyaWVzRFRPKSA9PiB7XHJcbiAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSBkdG8uZW50cmllcztcclxuXHJcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdZJykge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU11bHRpRGljdEVudHJpZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy9JZiB0aGVyZSBpcyBhIHJlZmVyZW5jZWQgYXR0cmlidXRlIHRoaXMgbWVhbnMgdGhpcyBhdHRyaWJ1dGUgaXMgZmlsdGVyZWQgYnkgYW5vdGhlciBhdHRyaWJ1dGUuXHJcbiAgICAgIGlmIChkdG8ucmVmZXJlbmNlZEF0dHJpYnV0ZSkge1xyXG4gICAgICAgIC8vTmVlZCB0byBzdWJzY3JpYmUgdG8gYXR0cmlidXRlIHB1c2hlcywgaW4gb3JkZXIgdG8gdXBkYXRlIG91ciBGSUxURVJFRCBESUNUSU9OQVJZIHdoZW4gdGhlIHJlZmVyZW5jZWQgYXR0cmlidXRlIHdhcyBjaGFuZ2VkXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlVmFsdWVQdXNoZWRTdWJqZWN0KCkuc3Vic2NyaWJlKChhdjogQXR0cmlidXRlVmFsdWUpID0+IHtcclxuICAgICAgICAgIC8vSWYgaXQgaXMgdGhlIHJlZmVyZW5jZWQgYXR0cmlidXRlLCAoYW5kIGZvciB0aGUgc2FtZSByb3cgaWYgdGhpcyBpcyBhIGdyaWQgcm93KSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgZGljdGlvbmFyeSBlbnRyaWVzXHJcbiAgICAgICAgICBpZiAoYXYuaWRBdHRyaWJ1dGUgPT09IGR0by5yZWZlcmVuY2VkQXR0cmlidXRlLmlkQXR0cmlidXRlXHJcbiAgICAgICAgICAgICAgJiYgKChhdi5ncm91cEF0dHJpYnV0ZVJvd0lkID09IG51bGwgJiYgdGhpcy5ncm91cEF0dHJpYnV0ZVJvd0lkID09IG51bGwpIHx8IGF2Lmdyb3VwQXR0cmlidXRlUm93SWQgPT09IHRoaXMuZ3JvdXBBdHRyaWJ1dGVSb3dJZCkpIHtcclxuXHJcbiAgICAgICAgICAgIC8vTWFrZSBhbm90aGVyIGNhbGwgdG8gZ2V0IHRoZSBkaWN0aW9uYXJ5IGVudHJpZXNcclxuICAgICAgICAgICAgLy9Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGluIHRoZSByZWZlcmVuY2VBdHRyaWJ1dGVWYWx1ZSwgdGhlIHJlc3VsdGluZyBEVE8gd29uJ3QgY29udGFpbiBhIHJlZmVyZW5jZWRBdHRyaWJ1dGUuIEEgc2Vjb25kIHN1YnNjcmlwdGlvbiB3b24ndCBiZSBjcmVhdGVkLlxyXG4gICAgICAgICAgICB0aGlzLnJlbG9hZEZpbHRlcmVkRGljdGlvbmFyeUVudHJpZXMoYXR0cmlidXRlLCB2YWx1ZXMsIGdyb3VwQXR0cmlidXRlUm93SWQsIGF2KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZEZpbHRlcmVkRGljdGlvbmFyeUVudHJpZXMoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIHZhbHVlczogQXR0cmlidXRlVmFsdWVbXSwgZ3JvdXBBdHRyaWJ1dGVSb3dJZDogbnVtYmVyLCByZWZlcmVuY2VkQXR0cmlidXRlVmFsdWU6IEF0dHJpYnV0ZVZhbHVlKSB7XHJcbiAgICAvL0FkZGluZyB0aGlzIHRvIHN1YnNjcmlwdGlvbnMgaXMgcHJvYmFibHkgdW5uZWNlc3NhcnksIHNpbmNlIHRoZSBmaXJzdCgpIHdpbGwgdW5zdWJzY3JpYmUuIFdlIG9ubHkgZ2V0IG9uZSB2YWx1ZS5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmdldERpY3Rpb25hcnlFbnRyaWVzKGF0dHJpYnV0ZSwgdmFsdWVzLCBncm91cEF0dHJpYnV0ZVJvd0lkLCByZWZlcmVuY2VkQXR0cmlidXRlVmFsdWUpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChkdG86IERpY3Rpb25hcnlFbnRyaWVzRFRPKSA9PiB7XHJcbiAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSBkdG8uZW50cmllcztcclxuXHJcbiAgICAgIC8vTXVsdGlcclxuICAgICAgaWYgKHRoaXMuYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ1knKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTXVsdGlEaWN0RW50cmllcygpO1xyXG5cclxuICAgICAgICAvL1Byb2JhYmx5IG5lZWQgdG8gc2xpY2Ugb3V0IG11bHRpIHZhbHVlcyB0aGF0IGRvbid0IGFwcGx5XHJcbiAgICAgICAgdGhpcy5kZWxldGVGaWx0ZXJlZE91dERpY3Rpb25hcnlWYWx1ZXMoKTtcclxuICAgICAgfVxyXG4gICAgICAvL1NpbmdsZVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICAvL01heWJlIG5lZWQgdG8gY2xlYXIgb3V0IHRoZSB2YWx1ZSBpZiBpdCBubyBsb25nZXIgYXBwbGllc1xyXG4gICAgICAgIGlmICghIGR0by5lbnRyaWVzSW5jbHVkZVNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMudmFsdWVEaWN0Q2hhbmdlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWx0ZXJlZE91dERpY3Rpb25hcnlWYWx1ZXMoKSB7XHJcbiAgICAvL0l0ZXJhdGUgZXhpc3RpbmcgdmFsdWVzXHJcbiAgICBmb3IgKGxldCBhdHRyaWJ1dGVWYWx1ZSBvZiB0aGlzLmF0dHJpYnV0ZVZhbHVlcykge1xyXG4gICAgICBsZXQgYXBwbGljYWJsZTpib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgICAvL0RvZXMgaXQgZXhpc3QgaW4gbmV3IGRpY2F0aW9ucnlFbnRyaWVzP1xyXG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiB0aGlzLmRpY3Rpb25hcnlFbnRyaWVzKSB7XHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLnZhbHVlSWREaWN0aW9uYXJ5ICYmIGVudHJ5LnZhbHVlID09PSBhdHRyaWJ1dGVWYWx1ZS52YWx1ZUlkRGljdGlvbmFyeSkge1xyXG4gICAgICAgICAgLy9rZWVwXHJcbiAgICAgICAgICBhcHBsaWNhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEgYXBwbGljYWJsZSkge1xyXG4gICAgICAgIC8vR2V0IHJpZCBvZiB2YWx1ZXMgdGhhdCBubyBsb25nZXIgYXBwbHlcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc3BsaWNlQXR0cmlidXRlVmFsdWVEaWN0KHRoaXMuYXR0cmlidXRlLCBhdHRyaWJ1dGVWYWx1ZS52YWx1ZUlkRGljdGlvbmFyeSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZU11bHRpRGljdEVudHJpZXMoKSB7XHJcbiAgICBmb3IgKGxldCBlbnRyeSBvZiB0aGlzLmRpY3Rpb25hcnlFbnRyaWVzKSB7XHJcbiAgICAgIGVudHJ5LmNoZWNrZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAobGV0IGF0dHJpYnV0ZVZhbHVlIG9mIHRoaXMuYXR0cmlidXRlVmFsdWVzKSB7XHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLnZhbHVlSWREaWN0aW9uYXJ5ICYmIGVudHJ5LnZhbHVlID09PSBhdHRyaWJ1dGVWYWx1ZS52YWx1ZUlkRGljdGlvbmFyeSkge1xyXG4gICAgICAgICAgZW50cnkuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhIHRyYW5zaWVudCB2YWx1ZSBvbiB0aGUgYXR0cmlidXRlQ2hvaWNlIHRvIGtlZXAgdHJhY2sgb2Ygc2VsZWN0ZWQgdmFsdWVzLlxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVBdHRyaWJ1dGVDaG9pY2VzKCkge1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVDaG9pY2VzID0gdGhpcy5hdHRyaWJ1dGUuYXR0cmlidXRlQ2hvaWNlcy5zbGljZSgpO1xyXG5cclxuICAgIGZvciAobGV0IGF0dHJpYnV0ZUNob2ljZSBvZiB0aGlzLmF0dHJpYnV0ZUNob2ljZXMpIHtcclxuICAgICAgYXR0cmlidXRlQ2hvaWNlLnZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgICBmb3IgKGxldCBhdHRyaWJ1dGVWYWx1ZSBvZiB0aGlzLmF0dHJpYnV0ZVZhbHVlcykge1xyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS52YWx1ZUF0dHJpYnV0ZUNob2ljZSAmJiBhdHRyaWJ1dGVDaG9pY2UuaWRBdHRyaWJ1dGVDaG9pY2UgPT09IGF0dHJpYnV0ZVZhbHVlLnZhbHVlQXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGVDaG9pY2UudmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgYXR0cmlidXRlIGlzIGEgZ3JpZCwgZmluZCBpdHMgY2hpbGRyZW4gYXR0cmlidXRlcyB3aGljaCBtYWtlIHVwIHRoZSBjb2x1bW5zIGFuZCBnZW5lcmF0ZSBkYXRhIGJhc2VkIG9uIGFsbFxyXG4gICAqIHRoZSBhdHRyaWJ1dGUgdmFsdWVzIGJ5IHRoZWlyIGdyb3VwQXR0cmlidXRlUm93SWQuXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUdyaWQoKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZUNvbXBvbmVudC5pbml0aWFsaXplR3JpZFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29sdW1uczogYW55W10gPSBbXTtcclxuICAgIGxldCBkYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGlmICghdGhpcy5hdHRyaWJ1dGUuYXR0cmlidXRlcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGlsZEF0dHJpYnV0ZXMgPSA8R3JhcGhpY2FsQXR0cmlidXRlW10+dGhpcy5hdHRyaWJ1dGUuYXR0cmlidXRlcy5maWx0ZXIoKGF0dHJpYnV0ZTogR3JhcGhpY2FsQXR0cmlidXRlKSA9PiB7XHJcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVbXCJ0YWJPcmRlclwiXSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJpYnV0ZVtcIndcIl0gIT09IHVuZGVmaW5lZDtcclxuICAgIH0pLnNvcnQoKGE6IEdyYXBoaWNhbEF0dHJpYnV0ZSwgYjogR3JhcGhpY2FsQXR0cmlidXRlKSA9PiB7XHJcbiAgICAgIGlmIChhLnRhYk9yZGVyIDwgYi50YWJPcmRlcikge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfSBlbHNlIGlmIChhLnRhYk9yZGVyID4gYi50YWJPcmRlcikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZUNvbXBvbmVudC5pbml0aWFsaXplR3JpZDogbiBHcmlkIEF0dHJpYnV0ZXM6IFwiICsgdGhpcy5jaGlsZEF0dHJpYnV0ZXMubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVHcmlkQ29sdW1ucyh0aGlzLmNoaWxkQXR0cmlidXRlcywgY29sdW1ucyk7XHJcblxyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJBdHRyaWJ1dGVDb21wb25lbnQuaW5pdGlhbGl6ZUdyaWQ6IG4gQ29sdW1uczogXCIgKyBjb2x1bW5zLmxlbmd0aCk7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoY29sdW1ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJBdHRyaWJ1dGVDb21wb25lbnQuaW5pdGlhbGl6ZUdyaWQ6IG4gYXR0cmlidXRlVmFsdWVzOiBcIiArIHRoaXMuYXR0cmlidXRlVmFsdWVzLmxlbmd0aCk7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5hdHRyaWJ1dGVWYWx1ZXMpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBsZXQgc29ydGVkUm93VmFsdWVzID0gdGhpcy5hdHRyaWJ1dGVWYWx1ZXMuZmlsdGVyKChhdHRyaWJ1dGVWYWx1ZSkgPT4gYXR0cmlidXRlVmFsdWUuaWRHcm91cEF0dHJpYnV0ZSA9IHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlKVxyXG4gICAgICAuc29ydCgoYTogQXR0cmlidXRlVmFsdWUsIGI6IEF0dHJpYnV0ZVZhbHVlKSA9PiB7XHJcbiAgICAgIGlmIChhLmdyb3VwQXR0cmlidXRlUm93SWQgPCBiLmdyb3VwQXR0cmlidXRlUm93SWQpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgIH0gZWxzZSBpZiAoYS5ncm91cEF0dHJpYnV0ZVJvd0lkID4gYi5ncm91cEF0dHJpYnV0ZVJvd0lkKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBuOiBudW1iZXIgPSAwO1xyXG4gICAgZm9yIChsZXQgZGF0dW0gb2Ygc29ydGVkUm93VmFsdWVzKSB7XHJcbiAgICAgIGlmIChkYXR1bS5ncm91cEF0dHJpYnV0ZVJvd0lkID4gbikge1xyXG4gICAgICAgIG4gPSBkYXR1bS5ncm91cEF0dHJpYnV0ZVJvd0lkO1xyXG4gICAgICAgIGRhdGEucHVzaCh7XHJcbiAgICAgICAgICBncm91cEF0dHJpYnV0ZVJvd0lkOiBkYXR1bS5ncm91cEF0dHJpYnV0ZVJvd0lkXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZUNvbXBvbmVudC5pbml0aWFsaXplR3JpZDogbiBEYXRhOiBcIiArIGRhdGEubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVHcmlkVmFsdWVzKGRhdGEsIHNvcnRlZFJvd1ZhbHVlcyk7XHJcblxyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJBdHRyaWJ1dGVDb21wb25lbnQuaW5pdGlhbGl6ZUdyaWQ6IERhdGFcIik7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ncmlkQ29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmdyaWREYXRhID0gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGEgY29sdW1uIGFycmF5IGJhc2VkIG9uIHRoZSBncm91cGVkIGF0dHJpYnV0ZXMgd2l0aGluIHRoZSBncmlkLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBdHRyaWJ1dGVbXX0gYXR0cmlidXRlc1xyXG4gICAqIEBwYXJhbSB7YW55W119IGNvbHVtbnNcclxuICAgKi9cclxuICBpbml0aWFsaXplR3JpZENvbHVtbnMoYXR0cmlidXRlczogR3JhcGhpY2FsQXR0cmlidXRlW10sIGNvbHVtbnM6IGFueVtdKSB7XHJcblxyXG4gICAgLypcclxuICAgIGNvbHVtbnMucHVzaCh7XHJcbiAgICAgIGZpZWxkOiBcImdyb3VwQXR0cmlidXRlUm93SWRcIiwgaXNLZXk6IHRydWUsIHZpc2libGU6IGZhbHNlXHJcbiAgICB9KTsqL1xyXG5cclxuICAgIGZvciAoY29uc3QgW2ksIGF0dHJpYnV0ZV0gb2YgYXR0cmlidXRlcy5lbnRyaWVzKCkpIHtcclxuICAgICAgbGV0IGNvbHVtbjogYW55ID0ge1xyXG4gICAgICAgIGZpZWxkOiBhdHRyaWJ1dGUuYXR0cmlidXRlTmFtZSxcclxuICAgICAgICBoZWFkZXJOYW1lOiBhdHRyaWJ1dGUuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICBmaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiBhdHRyaWJ1dGUudyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIHRoZSBsYXN0IGNvbHVtbiBzaG91bGQgYXV0byBmaWxsIHRoZSByZW1haW5pbmcgc3BhY2VcclxuICAgICAgaWYgKGF0dHJpYnV0ZS53ICYmIGkgPCBhdHRyaWJ1dGVzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBjb2x1bW4uc3VwcHJlc3NTaXplVG9GaXQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJEXCIpIHtcclxuICAgICAgICBjb2x1bW4uY29tcGFyYXRvciA9IERhdGVVdGlsLmRhdGVDb21wYXJhdG9yO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiRFRcIikge1xyXG4gICAgICAgIGNvbHVtbi5jb21wYXJhdG9yID0gRGF0ZVV0aWwuZGF0ZVRpbWVDb21wYXJhdG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFmdGVyIHRoZSBjb2x1bW5zIGFyZSBjcmVhdGVkLCBhc3NpZ25lZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnlbXX0gZGF0YVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVHcmlkVmFsdWVzKGRhdGE6IGFueVtdLCBhdHRyaWJ1dGVWYWx1ZXM6IEF0dHJpYnV0ZVZhbHVlW10pOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGRhdHVtIG9mIGF0dHJpYnV0ZVZhbHVlcykge1xyXG4gICAgICBsZXQgYXR0cmlidXRlOiBBdHRyaWJ1dGUgPSB0aGlzLmNoaWxkQXR0cmlidXRlcy5maWx0ZXIoKGF0dHJpYnV0ZTogQXR0cmlidXRlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSA9PT0gZGF0dW0uaWRBdHRyaWJ1dGU7XHJcbiAgICAgIH0pWzBdO1xyXG5cclxuICAgICAgLy9NYWtlIGEgcm93VmFsdWUgb2JqZWN0IHdpdGggdmFsdWVzIGZvciBlYWNoIGF0dHJpYnV0ZSBvZiB0aGUgcm93XHJcbiAgICAgIGxldCByb3dWYWx1ZTogYW55ID0gZGF0YS5maW5kKChyb3cpID0+IHJvdy5ncm91cEF0dHJpYnV0ZVJvd0lkID09PSBkYXR1bS5ncm91cEF0dHJpYnV0ZVJvd0lkKTtcclxuICAgICAgaWYgKCEgcm93VmFsdWUpIHtcclxuICAgICAgICByb3dWYWx1ZSA9IHtncm91cEF0dHJpYnV0ZVJvd0lkOiBkYXR1bS5ncm91cEF0dHJpYnV0ZVJvd0lkfTtcclxuICAgICAgICBkYXRhLnB1c2gocm93VmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBdHRyaWJ1dGUuaW5pdGlhbGl6ZUdyaWQ6IGlkQXR0cmlidXRlIFwiICsgZGF0dW0uaWRBdHRyaWJ1dGUgKyBcIiBub3QgZm91bmQuXCIpO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJEVFwiKSB7XHJcbiAgICAgICAgcm93VmFsdWVbYXR0cmlidXRlLmF0dHJpYnV0ZU5hbWVdID0gbmV3IERhdGVQaXBlKFwiZW4tVVNcIikudHJhbnNmb3JtKG5ldyBEYXRlKGRhdHVtLnZhbHVlRGF0ZVRpbWUpLCBcIk0vZC95eSwgaDptbTpzcyBhXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiQUNcIiAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSBcIk5cIikge1xyXG4gICAgICAgIGlmIChkYXR1bS52YWx1ZUF0dHJpYnV0ZUNob2ljZSkge1xyXG4gICAgICAgICAgcm93VmFsdWVbYXR0cmlidXRlLmF0dHJpYnV0ZU5hbWVdID0gZGF0dW0udmFsdWVBdHRyaWJ1dGVDaG9pY2UuY2hvaWNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIkFDXCIgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gXCJZXCIpIHtcclxuICAgICAgICAvL0NvbmNhdGVuYXRlZCBkaXNwbGF5XHJcbiAgICAgICAgaWYgKHJvd1ZhbHVlW2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lXSkge1xyXG4gICAgICAgICAgcm93VmFsdWVbYXR0cmlidXRlLmF0dHJpYnV0ZU5hbWVdID0gcm93VmFsdWVbYXR0cmlidXRlLmF0dHJpYnV0ZU5hbWVdICsgXCIsIFwiICsgZGF0dW0udmFsdWVBdHRyaWJ1dGVDaG9pY2UuY2hvaWNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gPSBkYXR1bS52YWx1ZUF0dHJpYnV0ZUNob2ljZS5jaG9pY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiRElDVFwiKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0RGljdGlvbmFyeUVudHJpZXMoYXR0cmlidXRlLCBhdHRyaWJ1dGVWYWx1ZXMsIGRhdHVtLmdyb3VwQXR0cmlidXRlUm93SWQpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChkdG86IERpY3Rpb25hcnlFbnRyaWVzRFRPKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW50cnkgPSBkdG8uZW50cmllcy5maW5kKChlbnRyeTphbnkpID0+IGVudHJ5LnZhbHVlID09PSBkYXR1bS52YWx1ZUlkRGljdGlvbmFyeSk7XHJcblxyXG4gICAgICAgICAgaWYgKGVudHJ5KSB7XHJcbiAgICAgICAgICAgIHJvd1ZhbHVlW2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lXSA9IGR0by5lbnRyaWVzLmZpbmQoKGVudHJ5OmFueSkgPT4gZW50cnkudmFsdWUgPT09IGRhdHVtLnZhbHVlSWREaWN0aW9uYXJ5KS5kaXNwbGF5O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkQXBpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hDZWxscygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiU1wiIHx8IGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiQlwiIHx8IGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiRUJcIiB8fCBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIkNCXCIpIHtcclxuICAgICAgICByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gPSBkYXR1bS52YWx1ZVN0cmluZztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gPSBkYXR1bS52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yIG92ZXJyaWRlLlxyXG4gICAqL1xyXG4gIHJlZnJlc2goKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZS5yZWZyZXNoOiBcIiArIHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgdmFsdWVTdHJpbmdDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlID09PSBcIlwiKSB7XHJcbiAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nID0gdmFsdWU7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGVja2JveENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPSBcIllcIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9IFwiTlwiO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZztcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlKHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdKTtcclxuICB9XHJcblxyXG4gIHZhbHVlSW50ZWdlckNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUludGVnZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlID0gKHZhbHVlKT92YWx1ZS50b1N0cmluZygpOnVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlKHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdKTtcclxuICB9XHJcblxyXG4gIHZhbHVlTnVtZXJpY0NoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZU51bWVyaWMgPSB2YWx1ZTtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlID0gKHZhbHVlKT92YWx1ZS50b1N0cmluZygpOnVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlKHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdKTtcclxuICB9XHJcblxyXG4gIHZhbHVlRGljdENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUlkRGljdGlvbmFyeSA9IHZhbHVlO1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWUgPSAodmFsdWUpP3ZhbHVlLnRvU3RyaW5nKCk6dW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVEYXRlQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlRGF0ZVRpbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlID0gKHZhbHVlKT92YWx1ZS50b1N0cmluZygpOnVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlKHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdKTtcclxuICB9XHJcblxyXG4gIHZhbHVlVGV4dENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVMb25nVGV4dCkge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUxvbmdUZXh0LnRleHREYXRhID0gdmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUxvbmdUZXh0ID0gPEF0dHJpYnV0ZUxvbmdUZXh0PntcclxuICAgICAgICBpZExvbmdUZXh0OiB1bmRlZmluZWQsXHJcbiAgICAgICAgdGV4dERhdGE6IHZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZSA9ICh2YWx1ZSk/dmFsdWUudG9TdHJpbmcoKTp1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnB1c2hBdHRyaWJ1dGVWYWx1ZSh0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXSk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUNob2ljZUNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUF0dHJpYnV0ZUNob2ljZSA9IHRoaXMuYXR0cmlidXRlQ2hvaWNlcy5maW5kKChhdHRyKSA9PiBhdHRyLmlkQXR0cmlidXRlQ2hvaWNlID09PSB2YWx1ZSk7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZSA9ICh2YWx1ZSk/dmFsdWUudG9TdHJpbmcoKTp1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnB1c2hBdHRyaWJ1dGVWYWx1ZSh0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXSk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZU11bHRpQ2hvaWNlQ2hhbmdlKGF0dHJpYnV0ZUNob2ljZTogYW55KTogdm9pZCB7XHJcbiAgICBhdHRyaWJ1dGVDaG9pY2UudmFsdWUgPSAhYXR0cmlidXRlQ2hvaWNlLnZhbHVlO1xyXG5cclxuICAgIC8vUmVtb3ZlXHJcbiAgICBpZiAoIWF0dHJpYnV0ZUNob2ljZS52YWx1ZSkge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc3BsaWNlQXR0cmlidXRlVmFsdWVDaG9pY2UodGhpcy5hdHRyaWJ1dGUsIGF0dHJpYnV0ZUNob2ljZSk7XHJcbiAgICB9XHJcbiAgICAvL0FkZFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzLnB1c2goPEF0dHJpYnV0ZVZhbHVlPntcclxuICAgICAgICBjb2RlQXR0cmlidXRlRGF0YVR5cGU6IFwiQUNcIixcclxuICAgICAgICBpZEF0dHJpYnV0ZVZhbHVlOiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0VW5pcXVlSWQoKSxcclxuICAgICAgICBpZEF0dHJpYnV0ZVZhbHVlU2V0OiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlVmFsdWVTZXQoKS5nZXRWYWx1ZSgpLmlkQXR0cmlidXRlVmFsdWVTZXQsXHJcbiAgICAgICAgaWRBdHRyaWJ1dGU6IHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlLFxyXG4gICAgICAgIHZhbHVlQXR0cmlidXRlQ2hvaWNlOiBhdHRyaWJ1dGVDaG9pY2UsXHJcbiAgICAgICAgZ3JvdXBBdHRyaWJ1dGVSb3dJZDogdGhpcy5ncm91cEF0dHJpYnV0ZVJvd0lkLFxyXG4gICAgICAgIGlkR3JvdXBBdHRyaWJ1dGU6IHRoaXMuYXR0cmlidXRlLmlkR3JvdXBBdHRyaWJ1dGVcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlTXVsdGlDaG9pY2UodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbdGhpcy5hdHRyaWJ1dGVWYWx1ZXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsdWVNdWx0aURpY3RDaGFuZ2UoZW50cnk6IGFueSk6IHZvaWQge1xyXG4gICAgZW50cnkuY2hlY2tlZCA9ICFlbnRyeS5jaGVja2VkO1xyXG5cclxuICAgIC8vUmVtb3ZlXHJcbiAgICBpZiAoIWVudHJ5LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnNwbGljZUF0dHJpYnV0ZVZhbHVlRGljdCh0aGlzLmF0dHJpYnV0ZSwgZW50cnkudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy9BZGRcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlcy5wdXNoKDxBdHRyaWJ1dGVWYWx1ZT57XHJcbiAgICAgICAgY29kZUF0dHJpYnV0ZURhdGFUeXBlOiBcIkRJQ1RcIixcclxuICAgICAgICBpZEF0dHJpYnV0ZVZhbHVlOiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0VW5pcXVlSWQoKSxcclxuICAgICAgICBpZEF0dHJpYnV0ZVZhbHVlU2V0OiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlVmFsdWVTZXQoKS5nZXRWYWx1ZSgpLmlkQXR0cmlidXRlVmFsdWVTZXQsXHJcbiAgICAgICAgaWRBdHRyaWJ1dGU6IHRoaXMuYXR0cmlidXRlLmlkQXR0cmlidXRlLFxyXG4gICAgICAgIHZhbHVlSWREaWN0aW9uYXJ5OiBlbnRyeS52YWx1ZSxcclxuICAgICAgICBncm91cEF0dHJpYnV0ZVJvd0lkOiB0aGlzLmdyb3VwQXR0cmlidXRlUm93SWQsXHJcbiAgICAgICAgaWRHcm91cEF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUuaWRHcm91cEF0dHJpYnV0ZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWVNdWx0aURpY3QodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbdGhpcy5hdHRyaWJ1dGVWYWx1ZXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGFkZEdyaWRSb3cobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4sIGlkR3JvdXBBdHRyaWJ1dGU6IG51bWJlcikge1xyXG4gICAgY29uc29sZS5sb2coXCJhZGQgZ3JpZCByb3c6IFwiICsgaWRHcm91cEF0dHJpYnV0ZSk7XHJcblxyXG4gICAgLy9HZXQgYSBuZWdhdGl2ZSBJRCwgc28gd2Uga25vdyB0aGlzIGlzIGEgbmV3IHJvd1xyXG4gICAgdGhpcy5lZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZCA9IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRVbmlxdWVJZCgpO1xyXG4gICAgdGhpcy5lZGl0R3JvdXBSb3dBdHRyaWJ1dGVzID0gdGhpcy5jaGlsZEF0dHJpYnV0ZXM7XHJcblxyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHt3aW5kb3dDbGFzczogXCJtb2RhbC1sZ1wifSkucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09PSBcIlNhdmVcIikge1xyXG4gICAgICAgIHRoaXMuc2F2ZUdyaWRSb3coaWRHcm91cEF0dHJpYnV0ZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBcIkNhbmNlbFwiKSB7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxFZGl0Q29kR3JpZFJvdygpO1xyXG4gICAgICB9XHJcbiAgICB9LCAocmVhc29uKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICBlZGl0R3JpZFJvdyhtb2RhbDogVGVtcGxhdGVSZWY8YW55PiwgaWRHcm91cEF0dHJpYnV0ZTogbnVtYmVyLCBldmVudDogUm93RG91YmxlQ2xpY2tlZEV2ZW50KSB7XHJcbiAgICAvL0VkaXRJbmxpbmUgaXMgYWN0dWFsbHkgdGhlIE9OTFkgd2F5IHRoaXMgY2FuIGJlIGVkaXRhYmxlLCBzbyB0aGlzIGlzIHJlYWxseSB3aGV0aGVyIHRoZSBncmlkIGlzIGVkaXRhYmxlLCBhdCBhbGxcclxuICAgIGlmICh0aGlzLmVkaXRJbmxpbmUpIHtcclxuICAgICAgdGhpcy5lZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZCA9IGV2ZW50LmRhdGEuZ3JvdXBBdHRyaWJ1dGVSb3dJZDtcclxuICAgICAgdGhpcy5lZGl0R3JvdXBSb3dBdHRyaWJ1dGVzID0gdGhpcy5jaGlsZEF0dHJpYnV0ZXM7XHJcblxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwge3dpbmRvd0NsYXNzOiBcIm1vZGFsLWxnXCJ9KS5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gXCJTYXZlXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZUdyaWRSb3coaWRHcm91cEF0dHJpYnV0ZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFwiQ2FuY2VsXCIpIHtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsRWRpdENvZEdyaWRSb3coKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIChyZWFzb24pID0+IHt9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUdyaWRSb3coaWRHcm91cEF0dHJpYnV0ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInJlbW92ZSBncmlkIHJvdzogXCIgKyBpZEdyb3VwQXR0cmlidXRlKTtcclxuICAgIGxldCBzZWxlY3RlZENvbHVtbnM6IFJvd05vZGVbXSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5kZWxldGVHcmlkUm93QXR0cmlidXRlVmFsdWVzKGlkR3JvdXBBdHRyaWJ1dGUsIHNlbGVjdGVkQ29sdW1uc1swXS5kYXRhLmdyb3VwQXR0cmlidXRlUm93SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdENvZEdyaWRSb3coKSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuY2xlYXJVcGRhdGVkR3JpZFJvd0F0dHJpYnV0ZVZhbHVlcyh0aGlzLmVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkKTtcclxuICAgIHRoaXMuZWRpdEdyb3VwUm93QXR0cmlidXRlcyA9IFtdO1xyXG4gICAgdGhpcy5lZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBWYWx1ZXMgZm9yIGEgbmV3IGdyaWQgcm93IGFyZSBzdG9yZWQgc2VwYXJhdGVseS4gIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgdGhhdCBkYXRhIHRvIHRoZSBjdXJyZW50IGdyaWQgZGF0YSBhbmRcclxuICAgKiBwdXNoIHRoZSB2YWx1ZXMgdG8gdGhlIHNlcnZpY2UuXHJcbiAgICovXHJcbiAgc2F2ZUdyaWRSb3coaWRHcm91cEF0dHJpYnV0ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcInNhdmUgZ3JpZCByb3dcIik7XHJcblxyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnNhdmVHcmlkUm93QXR0cmlidXRlVmFsdWVzKGlkR3JvdXBBdHRyaWJ1dGUsIHRoaXMuZWRpdEdyb3VwQXR0cmlidXRlUm93SWQpO1xyXG5cclxuICAgIHRoaXMuZWRpdEdyb3VwQXR0cmlidXRlUm93SWQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmVkaXRHcm91cFJvd0F0dHJpYnV0ZXMgPSBbXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tYm9GaWx0ZXJWYWx1ZUdldHRlcihwYXJhbXMpOiBhbnkge1xyXG4gICAgbGV0IHZhbHVlID0gcGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5maWVsZF07XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IG9wdGlvbiA9ICgocGFyYW1zLmNvbERlZiBhcyBhbnkpLnNlbGVjdE9wdGlvbnMgYXMgYW55W10pLmZpbmQoKGVudHJ5KSA9PiAoZW50cnlbcGFyYW1zLmNvbERlZi5zZWxlY3RPcHRpb25zVmFsdWVGaWVsZF0gPT09IHZhbHVlKSk7XHJcbiAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb25bcGFyYW1zLmNvbERlZi5zZWxlY3RPcHRpb25zRGlzcGxheUZpZWxkXSA6IFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcbn1cclxuIl19
564
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2NvbXBvbmVudHMvYXR0cmlidXRlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFBZSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBMkMsU0FBUyxFQUMxSSxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFFeEMsT0FBTyxFQUFtQixZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBTy9ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFHcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFLSCxNQUFNLE9BQU8sYUFBYTtJQStDeEIsWUFBWSxnQkFBa0MsRUFBRSxVQUFzQixFQUFFLFFBQW1CLEVBQVUsWUFBc0I7UUFBdEIsaUJBQVksR0FBWixZQUFZLENBQVU7UUE1Q2xILG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0Isd0JBQW1CLEdBQVcsU0FBUyxDQUFDO1FBRXZDLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFLckUsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBYXZDLFVBQUssR0FBVyxDQUFDLENBQUM7UUFRbEIsZ0JBQVcsR0FBRztZQUNWLFlB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QUM7UUFFcEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQSxTQUFTLENBQUM7UUFFbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQSxTQUFTLENBQUM7UUFFbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQSxTQUFTLENB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UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBpc0Rldk1vZGUsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgRGlyZWN0aXZlLCBRdWVyeUxpc3RcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtBdHRyaWJ1dGVTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvYXR0cmlidXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGV9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUuZW50aXR5XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlVmFsdWV9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUtdmFsdWUuZW50aXR5XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ2hvaWNlfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLWNob2ljZS5lbnRpdHlcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVMb25nVGV4dH0gZnJvbSBcIi4uL21vZGVsL2F0dHJpYnV0ZS1sb25nLXRleHQuZW50aXR5XCI7XHJcbmltcG9ydCB7R3JhcGhpY2FsQXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvZ3JhcGhpY2FsLWF0dHJpYnV0ZS5lbnRpdHlcIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5RW50cmllc0RUT30gZnJvbSBcIi4uL21vZGVsL2RpY3Rpb25hcnktZW50cmllcy5kdG9cIjtcclxuaW1wb3J0IHtEYXRlVXRpbH0gZnJvbSBcIi4uL2RhdGUvZGF0ZS11dGlsXCI7XHJcbmltcG9ydCB7TmF0aXZlU2VsZWN0Q29tcG9uZW50fSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvaW5wdXRcIjtcclxuaW1wb3J0IHtOZ2JNb2RhbH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7R3JpZEFwaSwgUm93RG91YmxlQ2xpY2tlZEV2ZW50LCBSb3dOb2RlLCBSb3dTZWxlY3RlZEV2ZW50LCBBZ0dyaWRFdmVudCwgR3JpZFNpemVDaGFuZ2VkRXZlbnQsIE1vZGVsVXBkYXRlZEV2ZW50fSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGUgYmFzZSBjbGFzcyBmb3IgYW4gYXR0cmlidXRlLiAgQXR0cmlidXRlcyBhcmUgaXRlcmF0ZWQgb3ZlciBieSBjb250YWluZXIuICBUaGVzZSBtYXkgYmUgaW4gdHJhZGl0aW9uYWwgYWJzb2x1dGVcclxuICogcG9zaXRpb25pbmcsIGZsZXggcG9zaXRpb25pbmcsIG9yIGFuIGVkaXQgbW9kZSBhcyBhIGNvbHVtbiBpbiBhIG1vZGFsLiAgUmVnYXJkbGVzcyBvZiB0aGUgdGVtcGxhdGUsIHRoZSBmdW5kYW1lbnRhbFxyXG4gKiBuZWVkcyBvZiBzZXR0aW5nIHVwIHRoZSBhdHRyaWJ1dGUgdmFsdWVzIGFuZCBwZXJzaXN0aW5nIGRhdGEgYXJlIHRoZSBzYW1lLiAgU28gdGhpcyBjbGFzcyBwcm92aWRlcyBiYXNlIGZ1bmN0aW9uYWxpdHlcclxuICogYW5kIHRoZSBjb21wb25lbnRzIHRoYXQgZXh0ZW5kIGl0IHByb3ZpZGUgdGhlIHRlbXBsYXRlIGFuZCBtYXkgYWxzbyBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkuXHJcbiAqXHJcbiAqIFR5cGVzOlxyXG4gKiBMSU5FXHJcbiAqIE5MUF9MSU5LXHJcbiAqIERJQ1RcclxuICogR0FcclxuICogTEFCRUxcclxuICogRFRcclxuICogQUNcclxuICogVFhUXHJcbiAqIERcclxuICogU1xyXG4gKiBJXHJcbiAqIENCXHJcbiAqIEJcclxuICogTlxyXG4gKiBFQlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJoY2ktYXR0cmlidXRlLWJhc2VcIlxyXG4gIH1cclxuKVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgYXR0cmlidXRlOiBHcmFwaGljYWxBdHRyaWJ1dGU7XHJcbiAgQElucHV0KCkgaW50ZXJuYWxWYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBlZGl0SW5saW5lOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBncm91cEF0dHJpYnV0ZVJvd0lkOiBudW1iZXIgPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKSByZXNvcnRDb2x1bW5zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXRSZWZcIiwge3N0YXRpYzogZmFsc2V9KSBpbnB1dFJlZjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwibmF0aXZlU2VsZWN0UmVmXCIsIHtzdGF0aWM6IGZhbHNlfSkgbmF0aXZlU2VsZWN0UmVmOiBOYXRpdmVTZWxlY3RDb21wb25lbnQ7XHJcblxyXG4gIGF0dHJpYnV0ZVZhbHVlczogQXR0cmlidXRlVmFsdWVbXSA9IFtdO1xyXG4gIGF0dHJpYnV0ZUNob2ljZXM6IEF0dHJpYnV0ZUNob2ljZVtdO1xyXG5cclxuICBjaGlsZEF0dHJpYnV0ZXM6IEdyYXBoaWNhbEF0dHJpYnV0ZVtdO1xyXG4gIGdyaWREYXRhOiBhbnlbXTtcclxuICBncmlkQ29sdW1uczogYW55W107XHJcblxyXG4gIC8vVXNlZCBmb3IgdGhlIGVkaXQgZ3JvdXAgcm93IHRlbXBsYXRlXHJcbiAgZWRpdEdyb3VwQXR0cmlidXRlUm93SWQ6IG51bWJlcjtcclxuICBlZGl0R3JvdXBSb3dBdHRyaWJ1dGVzOiBHcmFwaGljYWxBdHRyaWJ1dGVbXTtcclxuXHJcbiAgZGljdGlvbmFyeUVudHJpZXM6IGFueVtdO1xyXG5cclxuICB3aWR0aDogbnVtYmVyID0gMDtcclxuXHJcbiAgYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZTtcclxuICBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xyXG4gIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcblxyXG4gIGdyaWRBcGk6IEdyaWRBcGk7XHJcblxyXG4gIGdyaWRPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJIZWlnaHQ6IDIzLFxyXG4gICAgICByb3dIZWlnaHQ6IDIzLFxyXG4gICAgICByb3dTdHlsZToge1xyXG4gICAgICAgICAgJ2ZvbnQtZmFtaWx5JzogJ1Byb21wdCwgc2Fucy1zZXJpZicsXHJcbiAgICAgICAgICAnY29sb3InOiAnIzNkN2E5OSdcclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgIGVuc3VyZURvbU9yZGVyOiB0cnVlLFxyXG4gICAgICBzdXBwcmVzc0NvbHVtblZpcnR1YWxpc2F0aW9uOiBmYWxzZVxyXG4gICAgfTtcclxuXHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihhdHRyaWJ1dGVTZXJ2aWNlOiBBdHRyaWJ1dGVTZXJ2aWNlLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHtcclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZSA9IGF0dHJpYnV0ZVNlcnZpY2U7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFueSBhdHRyaWJ1dGUgdmFsdWVzIGZvciB0aGlzIGF0dHJpYnV0ZS4gIElmIGEgY29tcGxleCBhdHRyaWJ1dGUgbGlrZSBhIGdyaWQsIHNldCBpdCB1cC5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmdldENvbnRhaW5lclVwZGF0ZWQoKS5zdWJzY3JpYmUoKHVwZGF0ZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXMgOiBhbnkpIHtcclxuICAgIHRoaXMuZ3JpZEFwaSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gIH1cclxuXHJcbiAgb25Nb2RlbFVwZGF0ZWQoX2V2ZW50OiBNb2RlbFVwZGF0ZWRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25HcmlkU2l6ZUNoYW5nZWQoX2V2ZW50OiBHcmlkU2l6ZUNoYW5nZWRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVsbHMgdGhlIGF0dHJpYnV0ZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXR0cmlidXRlIGFuZCBwZXJmb3JtcyBhbnkgc3BlY2lhbGl6ZWQgaW5pdGlhbGl6YXRpb24gc3VjaCBhcyBmb3JcclxuICAgKiB0aGUgZ3JpZCBvciBtdWx0aSBjaG9pY2UuXHJcbiAgICovXHJcbiAgaW5pdCgpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXR0cmlidXRlLmluaXQ6IFwiICsgdGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3JpZERhdGEgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5zID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVDaG9pY2VzID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy53aWR0aCA9IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRXaWR0aCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5pbnRlcm5hbFZhbHVlcykge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlcyA9IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVWYWx1ZXModGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUsIHRoaXMuZ3JvdXBBdHRyaWJ1dGVSb3dJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXR0cmlidXRlVmFsdWVzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgIT09IFwiR0FcIiAmJiB0aGlzLmF0dHJpYnV0ZS5pc011bHRpVmFsdWUgIT09IFwiWVwiKSB7XHJcbiAgICAgIC8vIFRPRE86IERlY2lkZSB3aGVuIHRvIHBlcnNpc3QgdGhpcyB0byBnZXQgdGhlIGlkQXR0cmlidXRlVmFsdWUuXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzLnB1c2goPEF0dHJpYnV0ZVZhbHVlPntcclxuICAgICAgICBjb2RlQXR0cmlidXRlRGF0YVR5cGU6IHRoaXMuYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSxcclxuICAgICAgICBpZEF0dHJpYnV0ZVZhbHVlOiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0VW5pcXVlSWQoKSxcclxuICAgICAgICBpZEF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUsXHJcbiAgICAgICAgaWRHcm91cEF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUuaWRHcm91cEF0dHJpYnV0ZSxcclxuICAgICAgICBncm91cEF0dHJpYnV0ZVJvd0lkOiB0aGlzLmdyb3VwQXR0cmlidXRlUm93SWRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJHQVwiKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUdyaWQoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIkFDXCIpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplQXR0cmlidXRlQ2hvaWNlcygpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiVFhUXCIgJiYgIXRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQpIHtcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVMb25nVGV4dCA9IDxBdHRyaWJ1dGVMb25nVGV4dD57XHJcbiAgICAgICAgaWRMb25nVGV4dDogdW5kZWZpbmVkLFxyXG4gICAgICAgIHRleHREYXRhOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJESUNUXCIpIHtcclxuICAgICAgdGhpcy5sb2FkRGljdGlvbmFyeUVudHJpZXModGhpcy5hdHRyaWJ1dGUsIHRoaXMuYXR0cmlidXRlVmFsdWVzLCB0aGlzLmdyb3VwQXR0cmlidXRlUm93SWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5hdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIkRUXCIpIHtcclxuICAgICAgLy9NYWtlIGEgcHJvcGVyIGRhdGUgZm9yIHRoZSBkYXRlIHRpbWUgY29tcG9uZW50XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLmRhdGUgPSBuZXcgRGF0ZSh0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVUaW1lKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbG9hZERpY3Rpb25hcnlFbnRyaWVzKGF0dHJpYnV0ZTogQXR0cmlidXRlLCB2YWx1ZXM6IEF0dHJpYnV0ZVZhbHVlW10sIGdyb3VwQXR0cmlidXRlUm93SWQ6IG51bWJlcikge1xyXG4gICAgLy9BZGRpbmcgdGhpcyB0byBzdWJzY3JpcHRpb25zIGlzIHByb2JhYmx5IHVubmVjZXNzYXJ5LCBzaW5jZSB0aGUgZmlyc3QoKSB3aWxsIHVuc3Vic2NyaWJlLiBXZSBvbmx5IGdldCBvbmUgdmFsdWUuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXREaWN0aW9uYXJ5RW50cmllcyhhdHRyaWJ1dGUsIHZhbHVlcywgZ3JvdXBBdHRyaWJ1dGVSb3dJZCkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGR0bzogRGljdGlvbmFyeUVudHJpZXNEVE8pID0+IHtcclxuICAgICAgdGhpcy5kaWN0aW9uYXJ5RW50cmllcyA9IGR0by5lbnRyaWVzO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ1knKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTXVsdGlEaWN0RW50cmllcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL0lmIHRoZXJlIGlzIGEgcmVmZXJlbmNlZCBhdHRyaWJ1dGUgdGhpcyBtZWFucyB0aGlzIGF0dHJpYnV0ZSBpcyBmaWx0ZXJlZCBieSBhbm90aGVyIGF0dHJpYnV0ZS5cclxuICAgICAgaWYgKGR0by5yZWZlcmVuY2VkQXR0cmlidXRlKSB7XHJcbiAgICAgICAgLy9OZWVkIHRvIHN1YnNjcmliZSB0byBhdHRyaWJ1dGUgcHVzaGVzLCBpbiBvcmRlciB0byB1cGRhdGUgb3VyIEZJTFRFUkVEIERJQ1RJT05BUlkgd2hlbiB0aGUgcmVmZXJlbmNlZCBhdHRyaWJ1dGUgd2FzIGNoYW5nZWRcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVWYWx1ZVB1c2hlZFN1YmplY3QoKS5zdWJzY3JpYmUoKGF2OiBBdHRyaWJ1dGVWYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgLy9JZiBpdCBpcyB0aGUgcmVmZXJlbmNlZCBhdHRyaWJ1dGUsIChhbmQgZm9yIHRoZSBzYW1lIHJvdyBpZiB0aGlzIGlzIGEgZ3JpZCByb3cpIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBkaWN0aW9uYXJ5IGVudHJpZXNcclxuICAgICAgICAgIGlmIChhdi5pZEF0dHJpYnV0ZSA9PT0gZHRvLnJlZmVyZW5jZWRBdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAmJiAoKGF2Lmdyb3VwQXR0cmlidXRlUm93SWQgPT0gbnVsbCAmJiB0aGlzLmdyb3VwQXR0cmlidXRlUm93SWQgPT0gbnVsbCkgfHwgYXYuZ3JvdXBBdHRyaWJ1dGVSb3dJZCA9PT0gdGhpcy5ncm91cEF0dHJpYnV0ZVJvd0lkKSkge1xyXG5cclxuICAgICAgICAgICAgLy9NYWtlIGFub3RoZXIgY2FsbCB0byBnZXQgdGhlIGRpY3Rpb25hcnkgZW50cmllc1xyXG4gICAgICAgICAgICAvL05vdGUgdGhhdCB3aGVuIHBhc3NpbmcgaW4gdGhlIHJlZmVyZW5jZUF0dHJpYnV0ZVZhbHVlLCB0aGUgcmVzdWx0aW5nIERUTyB3b24ndCBjb250YWluIGEgcmVmZXJlbmNlZEF0dHJpYnV0ZS4gQSBzZWNvbmQgc3Vic2NyaXB0aW9uIHdvbid0IGJlIGNyZWF0ZWQuXHJcbiAgICAgICAgICAgIHRoaXMucmVsb2FkRmlsdGVyZWREaWN0aW9uYXJ5RW50cmllcyhhdHRyaWJ1dGUsIHZhbHVlcywgZ3JvdXBBdHRyaWJ1dGVSb3dJZCwgYXYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkRmlsdGVyZWREaWN0aW9uYXJ5RW50cmllcyhhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgdmFsdWVzOiBBdHRyaWJ1dGVWYWx1ZVtdLCBncm91cEF0dHJpYnV0ZVJvd0lkOiBudW1iZXIsIHJlZmVyZW5jZWRBdHRyaWJ1dGVWYWx1ZTogQXR0cmlidXRlVmFsdWUpIHtcclxuICAgIC8vQWRkaW5nIHRoaXMgdG8gc3Vic2NyaXB0aW9ucyBpcyBwcm9iYWJseSB1bm5lY2Vzc2FyeSwgc2luY2UgdGhlIGZpcnN0KCkgd2lsbCB1bnN1YnNjcmliZS4gV2Ugb25seSBnZXQgb25lIHZhbHVlLlxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0RGljdGlvbmFyeUVudHJpZXMoYXR0cmlidXRlLCB2YWx1ZXMsIGdyb3VwQXR0cmlidXRlUm93SWQsIHJlZmVyZW5jZWRBdHRyaWJ1dGVWYWx1ZSkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGR0bzogRGljdGlvbmFyeUVudHJpZXNEVE8pID0+IHtcclxuICAgICAgdGhpcy5kaWN0aW9uYXJ5RW50cmllcyA9IGR0by5lbnRyaWVzO1xyXG5cclxuICAgICAgLy9NdWx0aVxyXG4gICAgICBpZiAodGhpcy5hdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWScpIHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVNdWx0aURpY3RFbnRyaWVzKCk7XHJcblxyXG4gICAgICAgIC8vUHJvYmFibHkgbmVlZCB0byBzbGljZSBvdXQgbXVsdGkgdmFsdWVzIHRoYXQgZG9uJ3QgYXBwbHlcclxuICAgICAgICB0aGlzLmRlbGV0ZUZpbHRlcmVkT3V0RGljdGlvbmFyeVZhbHVlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vU2luZ2xlXHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8vTWF5YmUgbmVlZCB0byBjbGVhciBvdXQgdGhlIHZhbHVlIGlmIGl0IG5vIGxvbmdlciBhcHBsaWVzXHJcbiAgICAgICAgaWYgKCEgZHRvLmVudHJpZXNJbmNsdWRlU2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZURpY3RDaGFuZ2UodW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbHRlcmVkT3V0RGljdGlvbmFyeVZhbHVlcygpIHtcclxuICAgIC8vSXRlcmF0ZSBleGlzdGluZyB2YWx1ZXNcclxuICAgIGZvciAobGV0IGF0dHJpYnV0ZVZhbHVlIG9mIHRoaXMuYXR0cmlidXRlVmFsdWVzKSB7XHJcbiAgICAgIGxldCBhcHBsaWNhYmxlOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vRG9lcyBpdCBleGlzdCBpbiBuZXcgZGljYXRpb25yeUVudHJpZXM/XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIHRoaXMuZGljdGlvbmFyeUVudHJpZXMpIHtcclxuICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWUudmFsdWVJZERpY3Rpb25hcnkgJiYgZW50cnkudmFsdWUgPT09IGF0dHJpYnV0ZVZhbHVlLnZhbHVlSWREaWN0aW9uYXJ5KSB7XHJcbiAgICAgICAgICAvL2tlZXBcclxuICAgICAgICAgIGFwcGxpY2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISBhcHBsaWNhYmxlKSB7XHJcbiAgICAgICAgLy9HZXQgcmlkIG9mIHZhbHVlcyB0aGF0IG5vIGxvbmdlciBhcHBseVxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5zcGxpY2VBdHRyaWJ1dGVWYWx1ZURpY3QodGhpcy5hdHRyaWJ1dGUsIGF0dHJpYnV0ZVZhbHVlLnZhbHVlSWREaWN0aW9uYXJ5KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplTXVsdGlEaWN0RW50cmllcygpIHtcclxuICAgIGZvciAobGV0IGVudHJ5IG9mIHRoaXMuZGljdGlvbmFyeUVudHJpZXMpIHtcclxuICAgICAgZW50cnkuY2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgZm9yIChsZXQgYXR0cmlidXRlVmFsdWUgb2YgdGhpcy5hdHRyaWJ1dGVWYWx1ZXMpIHtcclxuICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWUudmFsdWVJZERpY3Rpb25hcnkgJiYgZW50cnkudmFsdWUgPT09IGF0dHJpYnV0ZVZhbHVlLnZhbHVlSWREaWN0aW9uYXJ5KSB7XHJcbiAgICAgICAgICBlbnRyeS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgdHJhbnNpZW50IHZhbHVlIG9uIHRoZSBhdHRyaWJ1dGVDaG9pY2UgdG8ga2VlcCB0cmFjayBvZiBzZWxlY3RlZCB2YWx1ZXMuXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUF0dHJpYnV0ZUNob2ljZXMoKSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZUNob2ljZXMgPSB0aGlzLmF0dHJpYnV0ZS5hdHRyaWJ1dGVDaG9pY2VzLnNsaWNlKCk7XHJcblxyXG4gICAgZm9yIChsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIHRoaXMuYXR0cmlidXRlQ2hvaWNlcykge1xyXG4gICAgICBhdHRyaWJ1dGVDaG9pY2UudmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAobGV0IGF0dHJpYnV0ZVZhbHVlIG9mIHRoaXMuYXR0cmlidXRlVmFsdWVzKSB7XHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLnZhbHVlQXR0cmlidXRlQ2hvaWNlICYmIGF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZSA9PT0gYXR0cmlidXRlVmFsdWUudmFsdWVBdHRyaWJ1dGVDaG9pY2UuaWRBdHRyaWJ1dGVDaG9pY2UpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZUNob2ljZS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYSBncmlkLCBmaW5kIGl0cyBjaGlsZHJlbiBhdHRyaWJ1dGVzIHdoaWNoIG1ha2UgdXAgdGhlIGNvbHVtbnMgYW5kIGdlbmVyYXRlIGRhdGEgYmFzZWQgb24gYWxsXHJcbiAgICogdGhlIGF0dHJpYnV0ZSB2YWx1ZXMgYnkgdGhlaXIgZ3JvdXBBdHRyaWJ1dGVSb3dJZC5cclxuICAgKi9cclxuICBpbml0aWFsaXplR3JpZCgpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXR0cmlidXRlQ29tcG9uZW50LmluaXRpYWxpemVHcmlkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IGRhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgaWYgKCF0aGlzLmF0dHJpYnV0ZS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoaWxkQXR0cmlidXRlcyA9IDxHcmFwaGljYWxBdHRyaWJ1dGVbXT50aGlzLmF0dHJpYnV0ZS5hdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlOiBHcmFwaGljYWxBdHRyaWJ1dGUpID0+IHtcclxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZVtcInRhYk9yZGVyXCJdICE9PSB1bmRlZmluZWQgfHwgYXR0cmlidXRlW1wid1wiXSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfSkuc29ydCgoYTogR3JhcGhpY2FsQXR0cmlidXRlLCBiOiBHcmFwaGljYWxBdHRyaWJ1dGUpID0+IHtcclxuICAgICAgaWYgKGEudGFiT3JkZXIgPCBiLnRhYk9yZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9IGVsc2UgaWYgKGEudGFiT3JkZXIgPiBiLnRhYk9yZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXR0cmlidXRlQ29tcG9uZW50LmluaXRpYWxpemVHcmlkOiBuIEdyaWQgQXR0cmlidXRlczogXCIgKyB0aGlzLmNoaWxkQXR0cmlidXRlcy5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZUdyaWRDb2x1bW5zKHRoaXMuY2hpbGRBdHRyaWJ1dGVzLCBjb2x1bW5zKTtcclxuXHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZUNvbXBvbmVudC5pbml0aWFsaXplR3JpZDogbiBDb2x1bW5zOiBcIiArIGNvbHVtbnMubGVuZ3RoKTtcclxuICAgICAgY29uc29sZS5kZWJ1Zyhjb2x1bW5zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZUNvbXBvbmVudC5pbml0aWFsaXplR3JpZDogbiBhdHRyaWJ1dGVWYWx1ZXM6IFwiICsgdGhpcy5hdHRyaWJ1dGVWYWx1ZXMubGVuZ3RoKTtcclxuICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLmF0dHJpYnV0ZVZhbHVlcyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGxldCBzb3J0ZWRSb3dWYWx1ZXMgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlcy5maWx0ZXIoKGF0dHJpYnV0ZVZhbHVlKSA9PiBhdHRyaWJ1dGVWYWx1ZS5pZEdyb3VwQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpXHJcbiAgICAgIC5zb3J0KChhOiBBdHRyaWJ1dGVWYWx1ZSwgYjogQXR0cmlidXRlVmFsdWUpID0+IHtcclxuICAgICAgaWYgKGEuZ3JvdXBBdHRyaWJ1dGVSb3dJZCA8IGIuZ3JvdXBBdHRyaWJ1dGVSb3dJZCkge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfSBlbHNlIGlmIChhLmdyb3VwQXR0cmlidXRlUm93SWQgPiBiLmdyb3VwQXR0cmlidXRlUm93SWQpIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG46IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBkYXR1bSBvZiBzb3J0ZWRSb3dWYWx1ZXMpIHtcclxuICAgICAgaWYgKGRhdHVtLmdyb3VwQXR0cmlidXRlUm93SWQgPiBuKSB7XHJcbiAgICAgICAgbiA9IGRhdHVtLmdyb3VwQXR0cmlidXRlUm93SWQ7XHJcbiAgICAgICAgZGF0YS5wdXNoKHtcclxuICAgICAgICAgIGdyb3VwQXR0cmlidXRlUm93SWQ6IGRhdHVtLmdyb3VwQXR0cmlidXRlUm93SWRcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXR0cmlidXRlQ29tcG9uZW50LmluaXRpYWxpemVHcmlkOiBuIERhdGE6IFwiICsgZGF0YS5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZUdyaWRWYWx1ZXMoZGF0YSwgc29ydGVkUm93VmFsdWVzKTtcclxuXHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF0dHJpYnV0ZUNvbXBvbmVudC5pbml0aWFsaXplR3JpZDogRGF0YVwiKTtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdyaWRDb2x1bW5zID0gY29sdW1ucztcclxuICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgYSBjb2x1bW4gYXJyYXkgYmFzZWQgb24gdGhlIGdyb3VwZWQgYXR0cmlidXRlcyB3aXRoaW4gdGhlIGdyaWQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0F0dHJpYnV0ZVtdfSBhdHRyaWJ1dGVzXHJcbiAgICogQHBhcmFtIHthbnlbXX0gY29sdW1uc1xyXG4gICAqL1xyXG4gIGluaXRpYWxpemVHcmlkQ29sdW1ucyhhdHRyaWJ1dGVzOiBHcmFwaGljYWxBdHRyaWJ1dGVbXSwgY29sdW1uczogYW55W10pIHtcclxuXHJcbiAgICAvKlxyXG4gICAgY29sdW1ucy5wdXNoKHtcclxuICAgICAgZmllbGQ6IFwiZ3JvdXBBdHRyaWJ1dGVSb3dJZFwiLCBpc0tleTogdHJ1ZSwgdmlzaWJsZTogZmFsc2VcclxuICAgIH0pOyovXHJcblxyXG4gICAgZm9yIChjb25zdCBbaSwgYXR0cmlidXRlXSBvZiBhdHRyaWJ1dGVzLmVudHJpZXMoKSkge1xyXG4gICAgICBsZXQgY29sdW1uOiBhbnkgPSB7XHJcbiAgICAgICAgZmllbGQ6IGF0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lLFxyXG4gICAgICAgIGhlYWRlck5hbWU6IGF0dHJpYnV0ZS5kaXNwbGF5TmFtZSxcclxuICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIGZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgd2lkdGg6IGF0dHJpYnV0ZS53LFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gdGhlIGxhc3QgY29sdW1uIHNob3VsZCBhdXRvIGZpbGwgdGhlIHJlbWFpbmluZyBzcGFjZVxyXG4gICAgICBpZiAoYXR0cmlidXRlLncgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGNvbHVtbi5zdXBwcmVzc1NpemVUb0ZpdCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIkRcIikge1xyXG4gICAgICAgIGNvbHVtbi5jb21wYXJhdG9yID0gRGF0ZVV0aWwuZGF0ZUNvbXBhcmF0b3I7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJEVFwiKSB7XHJcbiAgICAgICAgY29sdW1uLmNvbXBhcmF0b3IgPSBEYXRlVXRpbC5kYXRlVGltZUNvbXBhcmF0b3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWZ0ZXIgdGhlIGNvbHVtbnMgYXJlIGNyZWF0ZWQsIGFzc2lnbmVkXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUdyaWRWYWx1ZXMoZGF0YTogYW55W10sIGF0dHJpYnV0ZVZhbHVlczogQXR0cmlidXRlVmFsdWVbXSk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgZGF0dW0gb2YgYXR0cmlidXRlVmFsdWVzKSB7XHJcbiAgICAgIGxldCBhdHRyaWJ1dGU6IEF0dHJpYnV0ZSA9IHRoaXMuY2hpbGRBdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlOiBBdHRyaWJ1dGUpID0+IHtcclxuICAgICAgICByZXR1cm4gYXR0cmlidXRlLmlkQXR0cmlidXRlID09PSBkYXR1bS5pZEF0dHJpYnV0ZTtcclxuICAgICAgfSlbMF07XHJcblxyXG4gICAgICAvL01ha2UgYSByb3dWYWx1ZSBvYmplY3Qgd2l0aCB2YWx1ZXMgZm9yIGVhY2ggYXR0cmlidXRlIG9mIHRoZSByb3dcclxuICAgICAgbGV0IHJvd1ZhbHVlOiBhbnkgPSBkYXRhLmZpbmQoKHJvdykgPT4gcm93Lmdyb3VwQXR0cmlidXRlUm93SWQgPT09IGRhdHVtLmdyb3VwQXR0cmlidXRlUm93SWQpO1xyXG4gICAgICBpZiAoISByb3dWYWx1ZSkge1xyXG4gICAgICAgIHJvd1ZhbHVlID0ge2dyb3VwQXR0cmlidXRlUm93SWQ6IGRhdHVtLmdyb3VwQXR0cmlidXRlUm93SWR9O1xyXG4gICAgICAgIGRhdGEucHVzaChyb3dWYWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkF0dHJpYnV0ZS5pbml0aWFsaXplR3JpZDogaWRBdHRyaWJ1dGUgXCIgKyBkYXR1bS5pZEF0dHJpYnV0ZSArIFwiIG5vdCBmb3VuZC5cIik7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSBcIkRUXCIpIHtcclxuICAgICAgICByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gPSBuZXcgRGF0ZVBpcGUoXCJlbi1VU1wiKS50cmFuc2Zvcm0obmV3IERhdGUoZGF0dW0udmFsdWVEYXRlVGltZSksIFwiTS9kL3l5LCBoOm1tOnNzIGFcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJBQ1wiICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09IFwiTlwiKSB7XHJcbiAgICAgICAgaWYgKGRhdHVtLnZhbHVlQXR0cmlidXRlQ2hvaWNlKSB7XHJcbiAgICAgICAgICByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gPSBkYXR1bS52YWx1ZUF0dHJpYnV0ZUNob2ljZS5jaG9pY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiQUNcIiAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSBcIllcIikge1xyXG4gICAgICAgIC8vQ29uY2F0ZW5hdGVkIGRpc3BsYXlcclxuICAgICAgICBpZiAocm93VmFsdWVbYXR0cmlidXRlLmF0dHJpYnV0ZU5hbWVdKSB7XHJcbiAgICAgICAgICByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gPSByb3dWYWx1ZVthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZV0gKyBcIiwgXCIgKyBkYXR1bS52YWx1ZUF0dHJpYnV0ZUNob2ljZS5jaG9pY2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJvd1ZhbHVlW2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lXSA9IGRhdHVtLnZhbHVlQXR0cmlidXRlQ2hvaWNlLmNob2ljZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJESUNUXCIpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXREaWN0aW9uYXJ5RW50cmllcyhhdHRyaWJ1dGUsIGF0dHJpYnV0ZVZhbHVlcywgZGF0dW0uZ3JvdXBBdHRyaWJ1dGVSb3dJZCkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGR0bzogRGljdGlvbmFyeUVudHJpZXNEVE8pID0+IHtcclxuICAgICAgICAgIGxldCBlbnRyeSA9IGR0by5lbnRyaWVzLmZpbmQoKGVudHJ5OmFueSkgPT4gZW50cnkudmFsdWUgPT09IGRhdHVtLnZhbHVlSWREaWN0aW9uYXJ5KTtcclxuXHJcbiAgICAgICAgICBpZiAoZW50cnkpIHtcclxuICAgICAgICAgICAgcm93VmFsdWVbYXR0cmlidXRlLmF0dHJpYnV0ZU5hbWVdID0gZHRvLmVudHJpZXMuZmluZCgoZW50cnk6YW55KSA9PiBlbnRyeS52YWx1ZSA9PT0gZGF0dW0udmFsdWVJZERpY3Rpb25hcnkpLmRpc3BsYXk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaENlbGxzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJTXCIgfHwgYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJCXCIgfHwgYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gXCJFQlwiIHx8IGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09IFwiQ0JcIikge1xyXG4gICAgICAgIHJvd1ZhbHVlW2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lXSA9IGRhdHVtLnZhbHVlU3RyaW5nO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJvd1ZhbHVlW2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lXSA9IGRhdHVtLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3Igb3ZlcnJpZGUuXHJcbiAgICovXHJcbiAgcmVmcmVzaCgpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXR0cmlidXRlLnJlZnJlc2g6IFwiICsgdGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICB2YWx1ZVN0cmluZ0NoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPSB2YWx1ZTtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnB1c2hBdHRyaWJ1dGVWYWx1ZSh0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXSk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9IFwiWVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nID0gXCJOXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZSA9IHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nO1xyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVJbnRlZ2VyQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSW50ZWdlciA9IHZhbHVlO1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWUgPSAodmFsdWUpP3ZhbHVlLnRvU3RyaW5nKCk6dW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVOdW1lcmljQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTnVtZXJpYyA9IHZhbHVlO1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWUgPSAodmFsdWUpP3ZhbHVlLnRvU3RyaW5nKCk6dW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVEaWN0Q2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSWREaWN0aW9uYXJ5ID0gdmFsdWU7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZSA9ICh2YWx1ZSk/dmFsdWUudG9TdHJpbmcoKTp1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnB1c2hBdHRyaWJ1dGVWYWx1ZSh0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXSk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZURhdGVDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVEYXRlVGltZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWUgPSAodmFsdWUpP3ZhbHVlLnRvU3RyaW5nKCk6dW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWUodGhpcy5hdHRyaWJ1dGVWYWx1ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVUZXh0Q2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUxvbmdUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQudGV4dERhdGEgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQgPSA8QXR0cmlidXRlTG9uZ1RleHQ+e1xyXG4gICAgICAgIGlkTG9uZ1RleHQ6IHVuZGVmaW5lZCxcclxuICAgICAgICB0ZXh0RGF0YTogdmFsdWVcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlID0gKHZhbHVlKT92YWx1ZS50b1N0cmluZygpOnVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlKHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdKTtcclxuICB9XHJcblxyXG4gIHZhbHVlQ2hvaWNlQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlQXR0cmlidXRlQ2hvaWNlID0gdGhpcy5hdHRyaWJ1dGVDaG9pY2VzLmZpbmQoKGF0dHIpID0+IGF0dHIuaWRBdHRyaWJ1dGVDaG9pY2UgPT09IHZhbHVlKTtcclxuICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlID0gKHZhbHVlKT92YWx1ZS50b1N0cmluZygpOnVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2UucHVzaEF0dHJpYnV0ZVZhbHVlKHRoaXMuYXR0cmlidXRlVmFsdWVzWzBdKTtcclxuICB9XHJcblxyXG4gIHZhbHVlTXVsdGlDaG9pY2VDaGFuZ2UoYXR0cmlidXRlQ2hvaWNlOiBhbnkpOiB2b2lkIHtcclxuICAgIGF0dHJpYnV0ZUNob2ljZS52YWx1ZSA9ICFhdHRyaWJ1dGVDaG9pY2UudmFsdWU7XHJcblxyXG4gICAgLy9SZW1vdmVcclxuICAgIGlmICghYXR0cmlidXRlQ2hvaWNlLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5zcGxpY2VBdHRyaWJ1dGVWYWx1ZUNob2ljZSh0aGlzLmF0dHJpYnV0ZSwgYXR0cmlidXRlQ2hvaWNlKTtcclxuICAgIH1cclxuICAgIC8vQWRkXHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZXMucHVzaCg8QXR0cmlidXRlVmFsdWU+e1xyXG4gICAgICAgIGNvZGVBdHRyaWJ1dGVEYXRhVHlwZTogXCJBQ1wiLFxyXG4gICAgICAgIGlkQXR0cmlidXRlVmFsdWU6IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRVbmlxdWVJZCgpLFxyXG4gICAgICAgIGlkQXR0cmlidXRlVmFsdWVTZXQ6IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVWYWx1ZVNldCgpLmdldFZhbHVlKCkuaWRBdHRyaWJ1dGVWYWx1ZVNldCxcclxuICAgICAgICBpZEF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUsXHJcbiAgICAgICAgdmFsdWVBdHRyaWJ1dGVDaG9pY2U6IGF0dHJpYnV0ZUNob2ljZSxcclxuICAgICAgICBncm91cEF0dHJpYnV0ZVJvd0lkOiB0aGlzLmdyb3VwQXR0cmlidXRlUm93SWQsXHJcbiAgICAgICAgaWRHcm91cEF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUuaWRHcm91cEF0dHJpYnV0ZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5wdXNoQXR0cmlidXRlVmFsdWVNdWx0aUNob2ljZSh0aGlzLmF0dHJpYnV0ZVZhbHVlc1t0aGlzLmF0dHJpYnV0ZVZhbHVlcy5sZW5ndGggLSAxXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWx1ZU11bHRpRGljdENoYW5nZShlbnRyeTogYW55KTogdm9pZCB7XHJcbiAgICBlbnRyeS5jaGVja2VkID0gIWVudHJ5LmNoZWNrZWQ7XHJcblxyXG4gICAgLy9SZW1vdmVcclxuICAgIGlmICghZW50cnkuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc3BsaWNlQXR0cmlidXRlVmFsdWVEaWN0KHRoaXMuYXR0cmlidXRlLCBlbnRyeS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvL0FkZFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVzLnB1c2goPEF0dHJpYnV0ZVZhbHVlPntcclxuICAgICAgICBjb2RlQXR0cmlidXRlRGF0YVR5cGU6IFwiRElDVFwiLFxyXG4gICAgICAgIGlkQXR0cmlidXRlVmFsdWU6IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRVbmlxdWVJZCgpLFxyXG4gICAgICAgIGlkQXR0cmlidXRlVmFsdWVTZXQ6IHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVWYWx1ZVNldCgpLmdldFZhbHVlKCkuaWRBdHRyaWJ1dGVWYWx1ZVNldCxcclxuICAgICAgICBpZEF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUuaWRBdHRyaWJ1dGUsXHJcbiAgICAgICAgdmFsdWVJZERpY3Rpb25hcnk6IGVudHJ5LnZhbHVlLFxyXG4gICAgICAgIGdyb3VwQXR0cmlidXRlUm93SWQ6IHRoaXMuZ3JvdXBBdHRyaWJ1dGVSb3dJZCxcclxuICAgICAgICBpZEdyb3VwQXR0cmlidXRlOiB0aGlzLmF0dHJpYnV0ZS5pZEdyb3VwQXR0cmlidXRlXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnB1c2hBdHRyaWJ1dGVWYWx1ZU11bHRpRGljdCh0aGlzLmF0dHJpYnV0ZVZhbHVlc1t0aGlzLmF0dHJpYnV0ZVZhbHVlcy5sZW5ndGggLSAxXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkR3JpZFJvdyhtb2RhbDogVGVtcGxhdGVSZWY8YW55PiwgaWRHcm91cEF0dHJpYnV0ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImFkZCBncmlkIHJvdzogXCIgKyBpZEdyb3VwQXR0cmlidXRlKTtcclxuXHJcbiAgICAvL0dldCBhIG5lZ2F0aXZlIElELCBzbyB3ZSBrbm93IHRoaXMgaXMgYSBuZXcgcm93XHJcbiAgICB0aGlzLmVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkID0gdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmdldFVuaXF1ZUlkKCk7XHJcbiAgICB0aGlzLmVkaXRHcm91cFJvd0F0dHJpYnV0ZXMgPSB0aGlzLmNoaWxkQXR0cmlidXRlcztcclxuXHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwge3dpbmRvd0NsYXNzOiBcIm1vZGFsLWxnXCJ9KS5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT09IFwiU2F2ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlR3JpZFJvdyhpZEdyb3VwQXR0cmlidXRlKTtcclxuICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFwiQ2FuY2VsXCIpIHtcclxuICAgICAgICB0aGlzLmNhbmNlbEVkaXRDb2RHcmlkUm93KCk7XHJcbiAgICAgIH1cclxuICAgIH0sIChyZWFzb24pID0+IHt9KTtcclxuICB9XHJcblxyXG4gIGVkaXRHcmlkUm93KG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+LCBpZEdyb3VwQXR0cmlidXRlOiBudW1iZXIsIGV2ZW50OiBSb3dEb3VibGVDbGlja2VkRXZlbnQpIHtcclxuICAgIC8vRWRpdElubGluZSBpcyBhY3R1YWxseSB0aGUgT05MWSB3YXkgdGhpcyBjYW4gYmUgZWRpdGFibGUsIHNvIHRoaXMgaXMgcmVhbGx5IHdoZXRoZXIgdGhlIGdyaWQgaXMgZWRpdGFibGUsIGF0IGFsbFxyXG4gICAgaWYgKHRoaXMuZWRpdElubGluZSkge1xyXG4gICAgICB0aGlzLmVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkID0gZXZlbnQuZGF0YS5ncm91cEF0dHJpYnV0ZVJvd0lkO1xyXG4gICAgICB0aGlzLmVkaXRHcm91cFJvd0F0dHJpYnV0ZXMgPSB0aGlzLmNoaWxkQXR0cmlidXRlcztcclxuXHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsLCB7d2luZG93Q2xhc3M6IFwibW9kYWwtbGdcIn0pLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ID09PSBcIlNhdmVcIikge1xyXG4gICAgICAgICAgdGhpcy5zYXZlR3JpZFJvdyhpZEdyb3VwQXR0cmlidXRlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDYW5jZWxcIikge1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWxFZGl0Q29kR3JpZFJvdygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKHJlYXNvbikgPT4ge30pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlR3JpZFJvdyhpZEdyb3VwQXR0cmlidXRlOiBudW1iZXIpIHtcclxuICAgIGNvbnNvbGUubG9nKFwicmVtb3ZlIGdyaWQgcm93OiBcIiArIGlkR3JvdXBBdHRyaWJ1dGUpO1xyXG4gICAgbGV0IHNlbGVjdGVkQ29sdW1uczogUm93Tm9kZVtdID0gdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmRlbGV0ZUdyaWRSb3dBdHRyaWJ1dGVWYWx1ZXMoaWRHcm91cEF0dHJpYnV0ZSwgc2VsZWN0ZWRDb2x1bW5zWzBdLmRhdGEuZ3JvdXBBdHRyaWJ1dGVSb3dJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxFZGl0Q29kR3JpZFJvdygpIHtcclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5jbGVhclVwZGF0ZWRHcmlkUm93QXR0cmlidXRlVmFsdWVzKHRoaXMuZWRpdEdyb3VwQXR0cmlidXRlUm93SWQpO1xyXG4gICAgdGhpcy5lZGl0R3JvdXBSb3dBdHRyaWJ1dGVzID0gW107XHJcbiAgICB0aGlzLmVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbHVlcyBmb3IgYSBuZXcgZ3JpZCByb3cgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5LiAgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCB0aGF0IGRhdGEgdG8gdGhlIGN1cnJlbnQgZ3JpZCBkYXRhIGFuZFxyXG4gICAqIHB1c2ggdGhlIHZhbHVlcyB0byB0aGUgc2VydmljZS5cclxuICAgKi9cclxuICBzYXZlR3JpZFJvdyhpZEdyb3VwQXR0cmlidXRlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwic2F2ZSBncmlkIHJvd1wiKTtcclxuXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc2F2ZUdyaWRSb3dBdHRyaWJ1dGVWYWx1ZXMoaWRHcm91cEF0dHJpYnV0ZSwgdGhpcy5lZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZCk7XHJcblxyXG4gICAgdGhpcy5lZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZWRpdEdyb3VwUm93QXR0cmlidXRlcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21ib0ZpbHRlclZhbHVlR2V0dGVyKHBhcmFtcyk6IGFueSB7XHJcbiAgICBsZXQgdmFsdWUgPSBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBsZXQgb3B0aW9uID0gKChwYXJhbXMuY29sRGVmIGFzIGFueSkuc2VsZWN0T3B0aW9ucyBhcyBhbnlbXSkuZmluZCgoZW50cnkpID0+IChlbnRyeVtwYXJhbXMuY29sRGVmLnNlbGVjdE9wdGlvbnNWYWx1ZUZpZWxkXSA9PT0gdmFsdWUpKTtcclxuICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbltwYXJhbXMuY29sRGVmLnNlbGVjdE9wdGlvbnNEaXNwbGF5RmllbGRdIDogXCJcIjtcclxuICAgIH1cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -255,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
255
255
  }], boundData: [{
256
256
  type: Input
257
257
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUFFLFNBQVMsRUFBbUIsVUFBVSxFQUFFLEtBQUssRUFDckQsU0FBUyxFQUErQixXQUFXLEVBQy9ELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBVyxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBSy9EOzs7O0dBSUc7QUF5REgsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBb0IsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGlCQUFvQyxFQUNwQyxZQUFzQjtRQUp0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBbkNwQixjQUFTLEdBQVcsb0VBQW9FLENBQUM7UUFZdEcsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFJbEMsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxvQkFBZSxHQUFhLEdBQUcsRUFBRTtZQUMvQixJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7WUFFekIs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b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBJbnB1dCwgaXNEZXZNb2RlLFxyXG4gIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGRyZW4sIFNpbXBsZUNoYW5nZXMsIEhvc3RCaW5kaW5nLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7TmdiTW9kYWwsIE5nYlBhbmVsfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHtBY2NvcmRpb25OYXZDb21wb25lbnR9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9taXNjXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ29uZmlndXJhdGlvbn0gZnJvbSBcIi4uL21vZGVsL2F0dHJpYnV0ZS1jb25maWd1cmF0aW9uLmVudGl0eVwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVZhbHVlU2V0fSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLXZhbHVlLXNldC5lbnRpdHlcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVDb250YWluZXJ9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUtY29udGFpbmVyLmVudGl0eVwiO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY29tcG9uZW50IHNob3VsZCBiZSBhZGRlZCBvbiB0byBhbnkgc2NyZWVuIHRoYXQgZGlzcGxheXMgYSBjb250YWluZXIgd2l0aCBDT0QgY29udGVudC4gIFRoaXMgY29udGFpbmVyXHJcbiAqIHJlcHJlc2VudHMgdGhlIG9uZSBvZiB0aGUgY29udGFpbmVycywgd2hpY2ggaW4gdHVybiBjb250YWluIGF0dHJpYnV0ZXMgd2hpY2ggZGlzcGxheSB0aG9zZSB2YWx1ZXMgaW4gdGhlXHJcbiAqIGF0dHJpYnV0ZVZhbHVlU2V0LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWF0dHJpYnV0ZS1jb250YWluZXJcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGhjaS1idXN5IFtnZXRCdXN5U3ViamVjdHNdPVwiZ2V0QnVzeVN1YmplY3RzXCI+PC9oY2ktYnVzeT5cclxuICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGVDb250YWluZXJcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImVkaXRQb3B1cFwiIFtpZF09XCInaWQtYXR0cmlidXRlLWNvbnRhaW5lci0nICsgYXR0cmlidXRlQ29udGFpbmVyLmlkQXR0cmlidXRlQ29udGFpbmVyICsgJy1oZWFkZXInXCJcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhdHRyaWJ1dGUtY29udGFpbmVyLWhlYWRlciB7eydzb3J0LW9yZGVyLScgKyBhdHRyaWJ1dGVDb250YWluZXIuc29ydE9yZGVyfX1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0byBtci0wXCIgKGNsaWNrKT1cImVkaXQoZWRpdE1vZGFsLCBhdHRyaWJ1dGVDb250YWluZXIpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wZW5jaWxcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIHktYXV0b1wiIHN0eWxlPVwiZmxleDogMSAxIDFweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0cmlidXRlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuY29sLW1kLTEyXT1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXdyYXBdPVwiYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCAmJiBhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmFic29sdXRlXT1cIiFhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0IHx8IGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdOJ1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZUNvbnRhaW5lci5ncmFwaGljYWxBdHRyaWJ1dGVzIHwgaXNHcm91cEF0dHJpYnV0ZTogZmFsc2VcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knICYmIGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgIT09ICdMSU5FJ1wiPlxyXG4gICAgICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWZsZXggW2lkXT1cIidpZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cmlidXRlXT1cImF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdElubGluZV09XCJlZGl0SW5saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hdHRyaWJ1dGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuY29sLTRdPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSAhPT0gJ0dBJyAmJiBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlICE9PSAnTElORSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNvbC0xMl09XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnR0EnIHx8IGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdMSU5FJ1wiPjwvaGNpLWF0dHJpYnV0ZS1mbGV4PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0IHx8IGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdOJ1wiPlxyXG4gICAgICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWFic29sdXRlIFtpZF09XCInaWQtYXR0cmlidXRlLScgKyBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVdPVwiYXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdElubGluZV09XCJlZGl0SW5saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXR0cmlidXRlXT1cInRydWVcIj48L2hjaS1hdHRyaWJ1dGUtYWJzb2x1dGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNlZGl0TW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIHt7ZWRpdENvbnRhaW5lci5jb250YWluZXJOYW1lfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGQtZmxleCBmbGV4LWNvbHVtbiBoY2ktY29kLWVkaXRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2YgZWRpdENvbnRhaW5lci5ncmFwaGljYWxBdHRyaWJ1dGVzIHwgaXNHcm91cEF0dHJpYnV0ZTogZmFsc2VcIj5cclxuICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWVkaXQgW2lkXT1cIidlZGl0LWlkLWF0dHJpYnV0ZS0nICsgYXR0cmlidXRlLmlkQXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF0dHJpYnV0ZVwiPjwvaGNpLWF0dHJpYnV0ZS1lZGl0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ1NhdmUnKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdDYW5jZWwnKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlQ29udGFpbmVyQ29tcG9uZW50IHtcclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwiaGNpLWF0dHJpYnV0ZS1jb25maWd1cmF0aW9uIGhjaS1jb2QgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI7XHJcblxyXG4gIEBJbnB1dCgpIGlkQXR0cmlidXRlVmFsdWVTZXQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBpZEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb246IG51bWJlcjtcclxuICBASW5wdXQoKSBpZEF0dHJpYnV0ZUNvbnRhaW5lcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGluZGV4T2ZDb250YWluZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBpZFBhcmVudE9iamVjdDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKSBhdHRyaWJ1dGVDb250YWluZXI6IEF0dHJpYnV0ZUNvbnRhaW5lcjtcclxuICBASW5wdXQoKSBhdHRyaWJ1dGVDb25maWd1cmF0aW9uOiBBdHRyaWJ1dGVDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZVZhbHVlU2V0OiBBdHRyaWJ1dGVWYWx1ZVNldDtcclxuICBcclxuICBASW5wdXQoKSBlZGl0SW5saW5lOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBlZGl0UG9wdXA6IGJvb2xlYW4gPSAgZmFsc2U7XHJcbiAgQElucHV0KCkgZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBlZGl0Q29udGFpbmVyOiBBdHRyaWJ1dGVDb250YWluZXI7XHJcblxyXG4gIHdpbmRvd0RpbWVuc2lvbjogYW55ID0ge307XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBcclxuICBnZXRCdXN5U3ViamVjdHM6IEZ1bmN0aW9uID0gKCkgPT4ge1xyXG4gICAgbGV0IHN1YmplY3RzOiBhbnlbXSA9IFtdO1xyXG4gIFxyXG4gICAgLy9zdWJqZWN0cy5wdXNoKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVDb25maWd1cmF0aW9uTG9hZGluZ1N1YmplY3QoKSk7XHJcbiAgICBzdWJqZWN0cy5wdXNoKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRMb2FkaW5nU3ViamVjdCgpKTtcclxuICAgIFxyXG4gICAgcmV0dXJuIHN1YmplY3RzO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogVXBvbiBpbml0LCBzdWJzY3JpYmUgdG8gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHZhbHVlIHNldC5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghIHRoaXMuZWRpdGFibGUpIHtcclxuICAgICAgdGhpcy5lZGl0SW5saW5lID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdFBvcHVwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5zZXRBdHRyaWJ1dGVDb25maWd1cmF0aW9uQnlJZCh0aGlzLmlkQXR0cmlidXRlQ29uZmlndXJhdGlvbiwgdGhpcy5pZEF0dHJpYnV0ZVZhbHVlU2V0LCB0aGlzLmlkUGFyZW50T2JqZWN0KTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVDb25maWd1cmF0aW9uU3ViamVjdCgpLnN1YnNjcmliZSgoYXR0cmlidXRlQ29uZmlndXJhdGlvbjogQXR0cmlidXRlQ29uZmlndXJhdGlvbikgPT4ge1xyXG4gICAgICBpZihhdHRyaWJ1dGVDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uID0gYXR0cmlidXRlQ29uZmlndXJhdGlvbjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaWRBdHRyaWJ1dGVDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5hdHRyaWJ1dGVDb250YWluZXIgPSB0aGlzLmdldEF0dHJpYnV0ZUNvbnRhaW5lckJ5SWQodGhpcy5pZEF0dHJpYnV0ZUNvbnRhaW5lcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pbmRleE9mQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24uYXR0cmlidXRlQ29udGFpbmVyc1t0aGlzLmluZGV4T2ZDb250YWluZXJdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlQ29udGFpbmVyID0gdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5hdHRyaWJ1dGVDb25maWd1cmF0aW9uRGltZW5zaW9uU3ViamVjdC5zdWJzY3JpYmUoKHdpbmRvd0RpbWVuc2lvbjogYW55KSA9PiB7XHJcbiAgICAgIGlmKHdpbmRvd0RpbWVuc2lvbil7XHJcbiAgICAgICAgdGhpcy53aW5kb3dEaW1lbnNpb24gPSB3aW5kb3dEaW1lbnNpb247XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVWYWx1ZVNldCgpLnN1YnNjcmliZSgoYXR0cmlidXRlVmFsdWVTZXQ6IEF0dHJpYnV0ZVZhbHVlU2V0KSA9PiB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVTZXQgPSBhdHRyaWJ1dGVWYWx1ZVNldDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZVZhbHVlU2V0KSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLm5vdGlmeUF0dHJpYnV0ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGJvdW5kRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc2V0Qm91bmREYXRhKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoISB0aGlzLmVkaXRhYmxlKSB7XHJcbiAgICAgIHRoaXMuZWRpdElubGluZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRQb3B1cCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoY2hhbmdlcy5pZEF0dHJpYnV0ZUNvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLmlkQXR0cmlidXRlQ29udGFpbmVyID0gY2hhbmdlcy5pZEF0dHJpYnV0ZUNvbnRhaW5lci5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUNvbnRhaW5lciA9IHRoaXMuZ2V0QXR0cmlidXRlQ29udGFpbmVyQnlJZCh0aGlzLmlkQXR0cmlidXRlQ29udGFpbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5pbmRleE9mQ29udGFpbmVyKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhPZkNvbnRhaW5lciA9IGNoYW5nZXMuaW5kZXhPZkNvbnRhaW5lci5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24gJiYgdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXSkge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ29udGFpbmVyID0gdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXR0cmlidXRlU2VydmljZSgpOiBBdHRyaWJ1dGVTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBlZGl0KG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+LCBlZGl0Q29udGFpbmVyOiBBdHRyaWJ1dGVDb250YWluZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdENvbnRhaW5lciA9IGVkaXRDb250YWluZXI7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwge3dpbmRvd0NsYXNzOiBcIm1vZGFsLWxnXCJ9KS5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT09IFwiU2F2ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnVwZGF0ZUF0dHJpYnV0ZVZhbHVlU2V0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBcIkNhbmNlbFwiKSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmNsZWFyVXBkYXRlZEF0dHJpYnV0ZVZhbHVlcygpO1xyXG4gICAgICB9XHJcbiAgICB9LCAocmVhc29uKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICBwb3N0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnVwZGF0ZUF0dHJpYnV0ZVZhbHVlU2V0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRBdHRyaWJ1dGVDb250YWluZXJCeUlkKGlkQXR0cmlidXRlQ29udGFpbmVyOiBudW1iZXIpOiBBdHRyaWJ1dGVDb250YWluZXIge1xyXG4gICAgaWYgKHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnMuZmluZCh4ID0+IHguaWRBdHRyaWJ1dGVDb250YWluZXIgPT09IGlkQXR0cmlidXRlQ29udGFpbmVyKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUFFLFNBQVMsRUFBbUIsVUFBVSxFQUFFLEtBQUssRUFDckQsU0FBUyxFQUErQixXQUFXLEVBQy9ELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBSy9EOzs7O0dBSUc7QUF5REgsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBb0IsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGlCQUFvQyxFQUNwQyxZQUFzQjtRQUp0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBbkNwQixjQUFTLEdBQVcsb0VBQW9FLENBQUM7UUFZdEcsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFJbEMsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxvQkFBZSxHQUFhLEdBQUcsRUFBRTtZQUMvQixJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7WUFFekIs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b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBJbnB1dCwgaXNEZXZNb2RlLFxyXG4gIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGRyZW4sIFNpbXBsZUNoYW5nZXMsIEhvc3RCaW5kaW5nLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7TmdiTW9kYWx9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9hdHRyaWJ1dGUuc2VydmljZVwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZUNvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUtY29uZmlndXJhdGlvbi5lbnRpdHlcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVWYWx1ZVNldH0gZnJvbSBcIi4uL21vZGVsL2F0dHJpYnV0ZS12YWx1ZS1zZXQuZW50aXR5XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ29udGFpbmVyfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLWNvbnRhaW5lci5lbnRpdHlcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBzaG91bGQgYmUgYWRkZWQgb24gdG8gYW55IHNjcmVlbiB0aGF0IGRpc3BsYXlzIGEgY29udGFpbmVyIHdpdGggQ09EIGNvbnRlbnQuICBUaGlzIGNvbnRhaW5lclxyXG4gKiByZXByZXNlbnRzIHRoZSBvbmUgb2YgdGhlIGNvbnRhaW5lcnMsIHdoaWNoIGluIHR1cm4gY29udGFpbiBhdHRyaWJ1dGVzIHdoaWNoIGRpc3BsYXkgdGhvc2UgdmFsdWVzIGluIHRoZVxyXG4gKiBhdHRyaWJ1dGVWYWx1ZVNldC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1hdHRyaWJ1dGUtY29udGFpbmVyXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxoY2ktYnVzeSBbZ2V0QnVzeVN1YmplY3RzXT1cImdldEJ1c3lTdWJqZWN0c1wiPjwvaGNpLWJ1c3k+XHJcbiAgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlQ29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJlZGl0UG9wdXBcIiBbaWRdPVwiJ2lkLWF0dHJpYnV0ZS1jb250YWluZXItJyArIGF0dHJpYnV0ZUNvbnRhaW5lci5pZEF0dHJpYnV0ZUNvbnRhaW5lciArICctaGVhZGVyJ1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYXR0cmlidXRlLWNvbnRhaW5lci1oZWFkZXIge3snc29ydC1vcmRlci0nICsgYXR0cmlidXRlQ29udGFpbmVyLnNvcnRPcmRlcn19XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG8gbXItMFwiIChjbGljayk9XCJlZGl0KGVkaXRNb2RhbCwgYXR0cmlidXRlQ29udGFpbmVyKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGVuY2lsXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMSB5LWF1dG9cIiBzdHlsZT1cImZsZXg6IDEgMSAxcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF0dHJpYnV0ZS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmNvbC1tZC0xMl09XCJhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ICYmIGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICBbY2xhc3MuZmxleF09XCJhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ICYmIGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICBbY2xhc3MuZmxleC13cmFwXT1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5hYnNvbHV0ZV09XCIhYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCB8fCBhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ID09PSAnTidcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVDb250YWluZXIuZ3JhcGhpY2FsQXR0cmlidXRlcyB8IGlzR3JvdXBBdHRyaWJ1dGU6IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ICYmIGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdZJyAmJiBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlICE9PSAnTElORSdcIj5cclxuICAgICAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1mbGV4IFtpZF09XCInaWQtYXR0cmlidXRlLScgKyBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRJbmxpbmVdPVwiZWRpdElubGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXR0cmlidXRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNvbC00XT1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgIT09ICdHQScgJiYgYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSAhPT0gJ0xJTkUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jb2wtMTJdPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0dBJyB8fCBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTElORSdcIj48L2hjaS1hdHRyaWJ1dGUtZmxleD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCB8fCBhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ID09PSAnTidcIj5cclxuICAgICAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1hYnNvbHV0ZSBbaWRdPVwiJ2lkLWF0dHJpYnV0ZS0nICsgYXR0cmlidXRlLmlkQXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cmlidXRlXT1cImF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRJbmxpbmVdPVwiZWRpdElubGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF0dHJpYnV0ZV09XCJ0cnVlXCI+PC9oY2ktYXR0cmlidXRlLWFic29sdXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGFsIGxldC1jbG9zZT1cImNsb3NlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICB7e2VkaXRDb250YWluZXIuY29udGFpbmVyTmFtZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBkLWZsZXggZmxleC1jb2x1bW4gaGNpLWNvZC1lZGl0XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGVkaXRDb250YWluZXIuZ3JhcGhpY2FsQXR0cmlidXRlcyB8IGlzR3JvdXBBdHRyaWJ1dGU6IGZhbHNlXCI+XHJcbiAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1lZGl0IFtpZF09XCInZWRpdC1pZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVdPVwiYXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHRyaWJ1dGVcIj48L2hjaS1hdHRyaWJ1dGUtZWRpdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdTYXZlJylcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJjbG9zZSgnQ2FuY2VsJylcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudCB7XHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikgY2xhc3NMaXN0OiBzdHJpbmcgPSBcImhjaS1hdHRyaWJ1dGUtY29uZmlndXJhdGlvbiBoY2ktY29kIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiO1xyXG5cclxuICBASW5wdXQoKSBpZEF0dHJpYnV0ZVZhbHVlU2V0OiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWRBdHRyaWJ1dGVDb25maWd1cmF0aW9uOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWRBdHRyaWJ1dGVDb250YWluZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBpbmRleE9mQ29udGFpbmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWRQYXJlbnRPYmplY3Q6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgYXR0cmlidXRlQ29udGFpbmVyOiBBdHRyaWJ1dGVDb250YWluZXI7XHJcbiAgQElucHV0KCkgYXR0cmlidXRlQ29uZmlndXJhdGlvbjogQXR0cmlidXRlQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBhdHRyaWJ1dGVWYWx1ZVNldDogQXR0cmlidXRlVmFsdWVTZXQ7XHJcbiAgXHJcbiAgQElucHV0KCkgZWRpdElubGluZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZWRpdFBvcHVwOiBib29sZWFuID0gIGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgZWRpdENvbnRhaW5lcjogQXR0cmlidXRlQ29udGFpbmVyO1xyXG5cclxuICB3aW5kb3dEaW1lbnNpb246IGFueSA9IHt9O1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgXHJcbiAgZ2V0QnVzeVN1YmplY3RzOiBGdW5jdGlvbiA9ICgpID0+IHtcclxuICAgIGxldCBzdWJqZWN0czogYW55W10gPSBbXTtcclxuICBcclxuICAgIC8vc3ViamVjdHMucHVzaCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlQ29uZmlndXJhdGlvbkxvYWRpbmdTdWJqZWN0KCkpO1xyXG4gICAgc3ViamVjdHMucHVzaCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0TG9hZGluZ1N1YmplY3QoKSk7XHJcbiAgICBcclxuICAgIHJldHVybiBzdWJqZWN0cztcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF0dHJpYnV0ZVNlcnZpY2U6IEF0dHJpYnV0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwb24gaW5pdCwgc3Vic2NyaWJlIHRvIHRoZSBjb25maWd1cmF0aW9uIGFuZCB2YWx1ZSBzZXQuXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoISB0aGlzLmVkaXRhYmxlKSB7XHJcbiAgICAgIHRoaXMuZWRpdElubGluZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRQb3B1cCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc2V0QXR0cmlidXRlQ29uZmlndXJhdGlvbkJ5SWQodGhpcy5pZEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24sIHRoaXMuaWRBdHRyaWJ1dGVWYWx1ZVNldCwgdGhpcy5pZFBhcmVudE9iamVjdCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlQ29uZmlndXJhdGlvblN1YmplY3QoKS5zdWJzY3JpYmUoKGF0dHJpYnV0ZUNvbmZpZ3VyYXRpb246IEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24pID0+IHtcclxuICAgICAgaWYoYXR0cmlidXRlQ29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbiA9IGF0dHJpYnV0ZUNvbmZpZ3VyYXRpb247XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlkQXR0cmlidXRlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuYXR0cmlidXRlQ29udGFpbmVyID0gdGhpcy5nZXRBdHRyaWJ1dGVDb250YWluZXJCeUlkKHRoaXMuaWRBdHRyaWJ1dGVDb250YWluZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXhPZkNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXSkge1xyXG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZUNvbnRhaW5lciA9IHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzW3RoaXMuaW5kZXhPZkNvbnRhaW5lcl07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuYXR0cmlidXRlQ29uZmlndXJhdGlvbkRpbWVuc2lvblN1YmplY3Quc3Vic2NyaWJlKCh3aW5kb3dEaW1lbnNpb246IGFueSkgPT4ge1xyXG4gICAgICBpZih3aW5kb3dEaW1lbnNpb24pe1xyXG4gICAgICAgIHRoaXMud2luZG93RGltZW5zaW9uID0gd2luZG93RGltZW5zaW9uO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlVmFsdWVTZXQoKS5zdWJzY3JpYmUoKGF0dHJpYnV0ZVZhbHVlU2V0OiBBdHRyaWJ1dGVWYWx1ZVNldCkgPT4ge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlU2V0ID0gYXR0cmlidXRlVmFsdWVTZXQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5hdHRyaWJ1dGVWYWx1ZVNldCkge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5ub3RpZnlBdHRyaWJ1dGVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBib3VuZERhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnNldEJvdW5kRGF0YSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCEgdGhpcy5lZGl0YWJsZSkge1xyXG4gICAgICB0aGlzLmVkaXRJbmxpbmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0UG9wdXAgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGNoYW5nZXMuaWRBdHRyaWJ1dGVDb250YWluZXIpIHtcclxuICAgICAgdGhpcy5pZEF0dHJpYnV0ZUNvbnRhaW5lciA9IGNoYW5nZXMuaWRBdHRyaWJ1dGVDb250YWluZXIuY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDb250YWluZXIgPSB0aGlzLmdldEF0dHJpYnV0ZUNvbnRhaW5lckJ5SWQodGhpcy5pZEF0dHJpYnV0ZUNvbnRhaW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuaW5kZXhPZkNvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLmluZGV4T2ZDb250YWluZXIgPSBjaGFuZ2VzLmluZGV4T2ZDb250YWluZXIuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uICYmIHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzW3RoaXMuaW5kZXhPZkNvbnRhaW5lcl0pIHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUNvbnRhaW5lciA9IHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzW3RoaXMuaW5kZXhPZkNvbnRhaW5lcl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEF0dHJpYnV0ZVNlcnZpY2UoKTogQXR0cmlidXRlU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgZWRpdChtb2RhbDogVGVtcGxhdGVSZWY8YW55PiwgZWRpdENvbnRhaW5lcjogQXR0cmlidXRlQ29udGFpbmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRDb250YWluZXIgPSBlZGl0Q29udGFpbmVyO1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHt3aW5kb3dDbGFzczogXCJtb2RhbC1sZ1wifSkucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09PSBcIlNhdmVcIikge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS51cGRhdGVBdHRyaWJ1dGVWYWx1ZVNldCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDYW5jZWxcIikge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5jbGVhclVwZGF0ZWRBdHRyaWJ1dGVWYWx1ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgKHJlYXNvbikgPT4ge30pO1xyXG4gIH1cclxuXHJcbiAgcG9zdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS51cGRhdGVBdHRyaWJ1dGVWYWx1ZVNldCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXR0cmlidXRlQ29udGFpbmVyQnlJZChpZEF0dHJpYnV0ZUNvbnRhaW5lcjogbnVtYmVyKTogQXR0cmlidXRlQ29udGFpbmVyIHtcclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzLmZpbmQoeCA9PiB4LmlkQXR0cmlidXRlQ29udGFpbmVyID09PSBpZEF0dHJpYnV0ZUNvbnRhaW5lcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
package/esm2022/index.mjs CHANGED
@@ -7,7 +7,6 @@
7
7
  * @since 1.0.0
8
8
  */
9
9
  export { CodModule } from "./cod.module";
10
- export { AttributeConfigurationComponent } from "./components/attribute-configuration.component";
11
10
  export { AttributeService } from "./services/attribute.service";
12
11
  export { AttributeValue } from "./model/attribute-value.entity";
13
12
  export { AttributeBase } from "./components/attribute-base";
@@ -18,4 +17,4 @@ export { AttributeDefaultComponent } from "./components/attribute-default.compon
18
17
  export { AttributeContainerComponent } from "./components/attribute-container.component";
19
18
  export { IsGroupAttributePipe } from "./pipes/is-group-attribute.pipe";
20
19
  export { ATTRIBUTE_ENDPOINT } from "./services/attribute.service";
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0g7Ozs7R0FJRztBQUlILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFdkMsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFFL0YsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFPOUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBTzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV2RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUVyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG4vKipcclxuICogQSBiYXJyZWwgZmlsZSBmb3IgdGhlIGNvZCBwYWNrYWdlLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcblxyXG5pbXBvcnQge0F0dHJpYnV0ZUFic29sdXRlQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1hYnNvbHV0ZS5jb21wb25lbnRcIjtcclxuXHJcbmV4cG9ydCB7Q29kTW9kdWxlfSBmcm9tIFwiLi9jb2QubW9kdWxlXCI7XHJcblxyXG5leHBvcnQge0F0dHJpYnV0ZUNvbmZpZ3VyYXRpb25Db21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50XCI7XHJcblxyXG5leHBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQge0F0dHJpYnV0ZX0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLmVudGl0eVwiO1xyXG5leHBvcnQge0F0dHJpYnV0ZUNob2ljZX0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLWNob2ljZS5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9tb2RlbC9hdHRyaWJ1dGUtY29uZmlndXJhdGlvbi5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVDb250YWluZXJ9IGZyb20gXCIuL21vZGVsL2F0dHJpYnV0ZS1jb250YWluZXIuZW50aXR5XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlRGljdGlvbmFyeX0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLWRpY3Rpb25hcnkuZW50aXR5XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlVmFsdWV9IGZyb20gXCIuL21vZGVsL2F0dHJpYnV0ZS12YWx1ZS5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVWYWx1ZUdyaWRSb3d9IGZyb20gXCIuL21vZGVsL2F0dHJpYnV0ZS12YWx1ZS1ncmlkLXJvdy5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVWYWx1ZVNldH0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLXZhbHVlLXNldC5lbnRpdHlcIjtcclxuZXhwb3J0IHtFeHRyYWN0YWJsZUZpZWxkU3RhdHVzfSBmcm9tIFwiLi9tb2RlbC9leHRyYWN0YWJsZS1maWVsZC1zdGF0dXMuZW50aXR5XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlQ29uZmlndXJhdGlvbkRUT30gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLWNvbmZpZ3VyYXRpb24uZHRvXCI7XHJcbmV4cG9ydCB7R3JhcGhpY2FsQXR0cmlidXRlfSBmcm9tIFwiLi9tb2RlbC9ncmFwaGljYWwtYXR0cmlidXRlLmVudGl0eVwiO1xyXG5cclxuZXhwb3J0IHtBdHRyaWJ1dGVCYXNlfSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1iYXNlXCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlQWJzb2x1dGVDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWFic29sdXRlLmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0F0dHJpYnV0ZUZsZXhDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWZsZXguY29tcG9uZW50XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlRWRpdENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtZWRpdC5jb21wb25lbnRcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVEZWZhdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1kZWZhdWx0LmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0F0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtY29udGFpbmVyLmNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IHtJc0dyb3VwQXR0cmlidXRlUGlwZX0gZnJvbSBcIi4vcGlwZXMvaXMtZ3JvdXAtYXR0cmlidXRlLnBpcGVcIjtcclxuXHJcbmV4cG9ydCB7QVRUUklCVVRFX0VORFBPSU5UfSBmcm9tIFwiLi9zZXJ2aWNlcy9hdHRyaWJ1dGUuc2VydmljZVwiO1xyXG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0g7Ozs7R0FJRztBQUlILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFdkMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFPOUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBTzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV2RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUVyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG4vKipcclxuICogQSBiYXJyZWwgZmlsZSBmb3IgdGhlIGNvZCBwYWNrYWdlLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcblxyXG5pbXBvcnQge0F0dHJpYnV0ZUFic29sdXRlQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1hYnNvbHV0ZS5jb21wb25lbnRcIjtcclxuXHJcbmV4cG9ydCB7Q29kTW9kdWxlfSBmcm9tIFwiLi9jb2QubW9kdWxlXCI7XHJcblxyXG5leHBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQge0F0dHJpYnV0ZX0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLmVudGl0eVwiO1xyXG5leHBvcnQge0F0dHJpYnV0ZUNob2ljZX0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLWNob2ljZS5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9tb2RlbC9hdHRyaWJ1dGUtY29uZmlndXJhdGlvbi5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVDb250YWluZXJ9IGZyb20gXCIuL21vZGVsL2F0dHJpYnV0ZS1jb250YWluZXIuZW50aXR5XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlRGljdGlvbmFyeX0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLWRpY3Rpb25hcnkuZW50aXR5XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlVmFsdWV9IGZyb20gXCIuL21vZGVsL2F0dHJpYnV0ZS12YWx1ZS5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVWYWx1ZUdyaWRSb3d9IGZyb20gXCIuL21vZGVsL2F0dHJpYnV0ZS12YWx1ZS1ncmlkLXJvdy5lbnRpdHlcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVWYWx1ZVNldH0gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLXZhbHVlLXNldC5lbnRpdHlcIjtcclxuZXhwb3J0IHtFeHRyYWN0YWJsZUZpZWxkU3RhdHVzfSBmcm9tIFwiLi9tb2RlbC9leHRyYWN0YWJsZS1maWVsZC1zdGF0dXMuZW50aXR5XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlQ29uZmlndXJhdGlvbkRUT30gZnJvbSBcIi4vbW9kZWwvYXR0cmlidXRlLWNvbmZpZ3VyYXRpb24uZHRvXCI7XHJcbmV4cG9ydCB7R3JhcGhpY2FsQXR0cmlidXRlfSBmcm9tIFwiLi9tb2RlbC9ncmFwaGljYWwtYXR0cmlidXRlLmVudGl0eVwiO1xyXG5cclxuZXhwb3J0IHtBdHRyaWJ1dGVCYXNlfSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1iYXNlXCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlQWJzb2x1dGVDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWFic29sdXRlLmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0F0dHJpYnV0ZUZsZXhDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYXR0cmlidXRlLWZsZXguY29tcG9uZW50XCI7XHJcbmV4cG9ydCB7QXR0cmlidXRlRWRpdENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtZWRpdC5jb21wb25lbnRcIjtcclxuZXhwb3J0IHtBdHRyaWJ1dGVEZWZhdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2F0dHJpYnV0ZS1kZWZhdWx0LmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0F0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdHRyaWJ1dGUtY29udGFpbmVyLmNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IHtJc0dyb3VwQXR0cmlidXRlUGlwZX0gZnJvbSBcIi4vcGlwZXMvaXMtZ3JvdXAtYXR0cmlidXRlLnBpcGVcIjtcclxuXHJcbmV4cG9ydCB7QVRUUklCVVRFX0VORFBPSU5UfSBmcm9tIFwiLi9zZXJ2aWNlcy9hdHRyaWJ1dGUuc2VydmljZVwiO1xyXG4iXX0=