@senior-agronegocio/angular-components 1.0.18 → 1.0.20

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.
@@ -25,18 +25,19 @@ import { FixationModule } from "./service/fixation-entity/fixation.module";
25
25
  import { CancelEventDialogModule } from "../cancel-event-dialog/cancel-event-dialog.module";
26
26
  import { LocaleModule } from "@seniorsistemas/angular-components/locale";
27
27
  import { ButtonModule } from "@seniorsistemas/angular-components/button";
28
- import { DialogModule } from "primeng/dialog";
28
+ import { DialogComponent } from "@seniorsistemas/angular-components/dialog";
29
+ import { DialogService } from "primeng/dynamicdialog";
29
30
  import { FieldsetModule } from "@seniorsistemas/angular-components/fieldset";
30
31
  import { BadgeModule } from "@seniorsistemas/angular-components/badge";
31
- import { DialogService } from "@seniorsistemas/angular-components/dialog";
32
+ import { StructureModule } from "@seniorsistemas/angular-components/structure";
32
33
  import * as i0 from "@angular/core";
33
34
  import * as i1 from "@seniorsistemas/angular-components/locale";
34
35
  export class EventControlBoardModule {
35
36
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventControlBoardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
37
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: EventControlBoardModule, declarations: [EventControlBoardComponent], imports: [i1.LocaleModule, SharedModule,
37
38
  ButtonModule,
39
+ DialogComponent,
38
40
  EventStepsModule,
39
- DialogModule,
40
41
  FieldsetModule,
41
42
  BadgeModule,
42
43
  E001pesModule,
@@ -55,13 +56,14 @@ export class EventControlBoardModule {
55
56
  WebsocketModule,
56
57
  LibTranslationModule,
57
58
  FixationModule,
58
- CancelEventDialogModule], exports: [EventControlBoardComponent] });
59
+ CancelEventDialogModule,
60
+ StructureModule], exports: [EventControlBoardComponent] });
59
61
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventControlBoardModule, providers: [E012famService, E205depService, PaginatorStorageService,
60
62
  EventControlService, DialogService], imports: [LocaleModule.forChild(),
61
63
  SharedModule,
62
64
  ButtonModule,
65
+ DialogComponent,
63
66
  EventStepsModule,
64
- DialogModule,
65
67
  FieldsetModule,
66
68
  BadgeModule,
67
69
  E001pesModule,
@@ -80,7 +82,8 @@ export class EventControlBoardModule {
80
82
  WebsocketModule,
81
83
  LibTranslationModule,
82
84
  FixationModule,
83
- CancelEventDialogModule] });
85
+ CancelEventDialogModule,
86
+ StructureModule] });
84
87
  }
85
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventControlBoardModule, decorators: [{
86
89
  type: NgModule,
@@ -89,8 +92,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
89
92
  LocaleModule.forChild(),
90
93
  SharedModule,
91
94
  ButtonModule,
95
+ DialogComponent,
92
96
  EventStepsModule,
93
- DialogModule,
94
97
  FieldsetModule,
95
98
  BadgeModule,
96
99
  E001pesModule,
@@ -110,6 +113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
110
113
  LibTranslationModule,
111
114
  FixationModule,
112
115
  CancelEventDialogModule,
116
+ StructureModule
113
117
  ],
114
118
  declarations: [EventControlBoardComponent],
115
119
  exports: [EventControlBoardComponent],
@@ -117,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
117
121
  EventControlService, DialogService],
118
122
  }]
119
123
  }] });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29udHJvbC1ib2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29tcG9uZW50cy9ldmVudC1jb250cm9sLWJvYXJkL2V2ZW50LWNvbnRyb2wtYm9hcmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENB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Q0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLHVCQUF1Qjt3QkFDL0QsbUJBQW1CLEVBQUUsYUFBYSxDQUFDO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IEV2ZW50U3RlcHNNb2R1bGUgfSBmcm9tIFwiLi4vZXZlbnQtc3RlcHMvZXZlbnQtc3RlcHMubW9kdWxlXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50IH0gZnJvbSBcIi4vZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSBcIi4vc2hhcmVkLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBFMDAxcGVzTW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS9lMDAxcGVzL2UwMDFwZXMubW9kdWxlXCI7XHJcbmltcG9ydCB7IEUwMDFUbnNNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwMDF0bnMvZTAwMXRucy5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRTAxMmZhbVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwMTJmYW0vZTAxMmZhbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEUwNzBFbXBNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwNzBlbXAvZTA3MGVtcC5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRTA3MEZpbE1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvZTA3MGZpbC9lMDcwZmlsLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBFMDc1RGVyTW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS9lMDc1ZGVyL2UwNzVkZXIubW9kdWxlXCI7XHJcbmltcG9ydCB7IEUyMDVkZXBTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZS9lMjA1ZGVwL2UyMDVkZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFdmVudENvbnRyb2xNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2V2ZW50LWNvbnRyb2wvZXZlbnQtY29udHJvbC5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRXZlbnRDb250cm9sSXRlbU1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC1pdGVtL2V2ZW50LWNvbnRyb2wtaXRlbS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRXh0ZXJuYWxJbnZvaWNlTW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS9leHRlcm5hbC1pbnZvaWNlL2V4dGVybmFsLWludm9pY2UubW9kdWxlXCI7XHJcbmltcG9ydCB7IEludm9pY2VNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2ludm9pY2UvaW52b2ljZS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgT3JpZ2luYXRpb25Nb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL29yaWdpbmF0aW9uL29yaWdpbmF0aW9uLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBSdXJhbEVzdGF0ZU1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvcnVyYWwtZXN0YXRlL3J1cmFsLWVzdGF0ZS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgVGlja2V0TW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS90aWNrZXQvdGlja2V0Lm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2UvcGFnaW5hdG9yLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBXZWJzb2NrZXRNb2R1bGUgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvd2Vic29ja2V0L3dlYnNvY2tldC5tb2R1bGVcIjtcclxuXHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSBcIi4uLy4uL2xpYi10cmFuc2xhdGlvbi5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRXZlbnRDb250cm9sU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC9ldmVudC1jb250cm9sLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNmZXJNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL3RyYW5zZmVyL3RyYW5zZmVyLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBGaXhhdGlvbk1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvZml4YXRpb24tZW50aXR5L2ZpeGF0aW9uLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBDYW5jZWxFdmVudERpYWxvZ01vZHVsZSB9IGZyb20gXCIuLi9jYW5jZWwtZXZlbnQtZGlhbG9nL2NhbmNlbC1ldmVudC1kaWFsb2cubW9kdWxlXCI7XHJcbmltcG9ydCB7IExvY2FsZU1vZHVsZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZVwiO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b25cIjtcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSBcInByaW1lbmcvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzZXRcIjtcclxuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9iYWRnZVwiO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZGlhbG9nXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIExvY2FsZU1vZHVsZS5mb3JDaGlsZCgpLFxyXG4gICAgICAgIFNoYXJlZE1vZHVsZSxcclxuICAgICAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgRXZlbnRTdGVwc01vZHVsZSxcclxuICAgICAgICBEaWFsb2dNb2R1bGUsXHJcbiAgICAgICAgRmllbGRzZXRNb2R1bGUsXHJcbiAgICAgICAgQmFkZ2VNb2R1bGUsXHJcbiAgICAgICAgRTAwMXBlc01vZHVsZSxcclxuICAgICAgICBFMDAxVG5zTW9kdWxlLFxyXG4gICAgICAgIEUwNzBFbXBNb2R1bGUsXHJcbiAgICAgICAgRTA3MEZpbE1vZHVsZSxcclxuICAgICAgICBUcmFuc2Zlck1vZHVsZSxcclxuICAgICAgICBFMDc1RGVyTW9kdWxlLFxyXG4gICAgICAgIEV2ZW50Q29udHJvbE1vZHVsZSxcclxuICAgICAgICBFdmVudENvbnRyb2xJdGVtTW9kdWxlLFxyXG4gICAgICAgIEV4dGVybmFsSW52b2ljZU1vZHVsZSxcclxuICAgICAgICBJbnZvaWNlTW9kdWxlLFxyXG4gICAgICAgIE9yaWdpbmF0aW9uTW9kdWxlLFxyXG4gICAgICAgIFJ1cmFsRXN0YXRlTW9kdWxlLFxyXG4gICAgICAgIFRpY2tldE1vZHVsZSxcclxuICAgICAgICBXZWJzb2NrZXRNb2R1bGUsXHJcbiAgICAgICAgTGliVHJhbnNsYXRpb25Nb2R1bGUsXHJcbiAgICAgICAgRml4YXRpb25Nb2R1bGUsXHJcbiAgICAgICAgQ2FuY2VsRXZlbnREaWFsb2dNb2R1bGUsXHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbRXZlbnRDb250cm9sQm9hcmRDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW0V2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50XSxcclxuICAgIHByb3ZpZGVyczogW0UwMTJmYW1TZXJ2aWNlLCBFMjA1ZGVwU2VydmljZSwgUGFnaW5hdG9yU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgRXZlbnRDb250cm9sU2VydmljZSwgRGlhbG9nU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudENvbnRyb2xCb2FyZE1vZHVsZSB7fVxyXG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29udHJvbC1ib2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29tcG9uZW50cy9ldmVudC1jb250cm9sLWJvYXJkL2V2ZW50LWNvbnRyb2wtYm9hcmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENB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WSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLHVCQUF1Qjt3QkFDL0QsbUJBQW1CLEVBQUUsYUFBYSxDQUFDO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IEV2ZW50U3RlcHNNb2R1bGUgfSBmcm9tIFwiLi4vZXZlbnQtc3RlcHMvZXZlbnQtc3RlcHMubW9kdWxlXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50IH0gZnJvbSBcIi4vZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSBcIi4vc2hhcmVkLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBFMDAxcGVzTW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS9lMDAxcGVzL2UwMDFwZXMubW9kdWxlXCI7XHJcbmltcG9ydCB7IEUwMDFUbnNNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwMDF0bnMvZTAwMXRucy5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRTAxMmZhbVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwMTJmYW0vZTAxMmZhbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEUwNzBFbXBNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwNzBlbXAvZTA3MGVtcC5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRTA3MEZpbE1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvZTA3MGZpbC9lMDcwZmlsLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBFMDc1RGVyTW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS9lMDc1ZGVyL2UwNzVkZXIubW9kdWxlXCI7XHJcbmltcG9ydCB7IEUyMDVkZXBTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZS9lMjA1ZGVwL2UyMDVkZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFdmVudENvbnRyb2xNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2V2ZW50LWNvbnRyb2wvZXZlbnQtY29udHJvbC5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRXZlbnRDb250cm9sSXRlbU1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC1pdGVtL2V2ZW50LWNvbnRyb2wtaXRlbS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRXh0ZXJuYWxJbnZvaWNlTW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS9leHRlcm5hbC1pbnZvaWNlL2V4dGVybmFsLWludm9pY2UubW9kdWxlXCI7XHJcbmltcG9ydCB7IEludm9pY2VNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL2ludm9pY2UvaW52b2ljZS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgT3JpZ2luYXRpb25Nb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL29yaWdpbmF0aW9uL29yaWdpbmF0aW9uLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBSdXJhbEVzdGF0ZU1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvcnVyYWwtZXN0YXRlL3J1cmFsLWVzdGF0ZS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgVGlja2V0TW9kdWxlIH0gZnJvbSBcIi4vc2VydmljZS90aWNrZXQvdGlja2V0Lm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2UvcGFnaW5hdG9yLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBXZWJzb2NrZXRNb2R1bGUgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvd2Vic29ja2V0L3dlYnNvY2tldC5tb2R1bGVcIjtcclxuXHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSBcIi4uLy4uL2xpYi10cmFuc2xhdGlvbi5tb2R1bGVcIjtcclxuaW1wb3J0IHsgRXZlbnRDb250cm9sU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC9ldmVudC1jb250cm9sLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNmZXJNb2R1bGUgfSBmcm9tIFwiLi9zZXJ2aWNlL3RyYW5zZmVyL3RyYW5zZmVyLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBGaXhhdGlvbk1vZHVsZSB9IGZyb20gXCIuL3NlcnZpY2UvZml4YXRpb24tZW50aXR5L2ZpeGF0aW9uLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBDYW5jZWxFdmVudERpYWxvZ01vZHVsZSB9IGZyb20gXCIuLi9jYW5jZWwtZXZlbnQtZGlhbG9nL2NhbmNlbC1ldmVudC1kaWFsb2cubW9kdWxlXCI7XHJcbmltcG9ydCB7IExvY2FsZU1vZHVsZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZVwiO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b25cIjtcclxuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZGlhbG9nXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9keW5hbWljZGlhbG9nXCI7XHJcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzZXRcIjtcclxuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9iYWRnZVwiO1xyXG5pbXBvcnQgeyBTdHJ1Y3R1cmVNb2R1bGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zdHJ1Y3R1cmVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICBMb2NhbGVNb2R1bGUuZm9yQ2hpbGQoKSxcclxuICAgIFNoYXJlZE1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIERpYWxvZ0NvbXBvbmVudCxcclxuICAgIEV2ZW50U3RlcHNNb2R1bGUsXHJcbiAgICBGaWVsZHNldE1vZHVsZSxcclxuICAgIEJhZGdlTW9kdWxlLFxyXG4gICAgRTAwMXBlc01vZHVsZSxcclxuICAgIEUwMDFUbnNNb2R1bGUsXHJcbiAgICBFMDcwRW1wTW9kdWxlLFxyXG4gICAgRTA3MEZpbE1vZHVsZSxcclxuICAgIFRyYW5zZmVyTW9kdWxlLFxyXG4gICAgRTA3NURlck1vZHVsZSxcclxuICAgIEV2ZW50Q29udHJvbE1vZHVsZSxcclxuICAgIEV2ZW50Q29udHJvbEl0ZW1Nb2R1bGUsXHJcbiAgICBFeHRlcm5hbEludm9pY2VNb2R1bGUsXHJcbiAgICBJbnZvaWNlTW9kdWxlLFxyXG4gICAgT3JpZ2luYXRpb25Nb2R1bGUsXHJcbiAgICBSdXJhbEVzdGF0ZU1vZHVsZSxcclxuICAgIFRpY2tldE1vZHVsZSxcclxuICAgIFdlYnNvY2tldE1vZHVsZSxcclxuICAgIExpYlRyYW5zbGF0aW9uTW9kdWxlLFxyXG4gICAgRml4YXRpb25Nb2R1bGUsXHJcbiAgICBDYW5jZWxFdmVudERpYWxvZ01vZHVsZSxcclxuICAgIFN0cnVjdHVyZU1vZHVsZVxyXG5dLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbRXZlbnRDb250cm9sQm9hcmRDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW0V2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50XSxcclxuICAgIHByb3ZpZGVyczogW0UwMTJmYW1TZXJ2aWNlLCBFMjA1ZGVwU2VydmljZSwgUGFnaW5hdG9yU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgRXZlbnRDb250cm9sU2VydmljZSwgRGlhbG9nU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudENvbnRyb2xCb2FyZE1vZHVsZSB7fVxyXG4iXX0=
@@ -202,7 +202,7 @@ export class AgroBaseLookupField {
202
202
  const targetIsValid = this.isLookupValueValid(targetValue);
203
203
  const targetIsFilled = this.isControlFilled(targetValue);
204
204
  if (forceReset) {
205
- targetControl.setValue(null, { emitEvent: false });
205
+ targetControl.setValue(null, { emitEvent: true });
206
206
  targetControl.disable({ emitEvent: false });
207
207
  return;
208
208
  }
@@ -265,6 +265,15 @@ export class AgroBaseLookupField {
265
265
  // Observe each dependency directly and compare previous/current values.
266
266
  dependsOf.forEach((fieldName) => {
267
267
  const control = this.config.formGroup.get(fieldName);
268
+ control?.valueChanges.subscribe((currentValue) => {
269
+ const normalizedCurrentValue = this.normalizeLookupValue(currentValue);
270
+ if (normalizedCurrentValue !== currentValue) {
271
+ control.setValue(normalizedCurrentValue, { emitEvent: false });
272
+ }
273
+ if (!this.isLookupValueValid(normalizedCurrentValue)) {
274
+ this.handleDependenciesState(true);
275
+ }
276
+ });
268
277
  control?.valueChanges.pipe(startWith(control.value), debounceTime(LOOKUP_DEBOUNCE_MS), pairwise()).subscribe(([previousValue, currentValue]) => {
269
278
  const normalizedPreviousValue = this.normalizeLookupValue(previousValue);
270
279
  const normalizedCurrentValue = this.normalizeLookupValue(currentValue);
@@ -406,4 +415,4 @@ export class AgroBaseLookupField {
406
415
  };
407
416
  }
408
417
  }
409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1iYXNlLWxvb2t1cC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9maWVsZHMvbG9va3Vwcy9jb3JlL2Fncm8tYmFzZS1sb29rdXAtZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE1BQU0sZ0NBQWdDLEdBQUc7SUFDckMsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsS0FBSztDQUNSLENBQUM7QUFFRixNQUFNLE9BQU8sbUJBQW1CO0lBTVA7SUFDUTtJQU5aLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7SUFDMUMsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFDNUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBRTdDLFlBQ3FCLE1BQWdDLEVBQ3hCLFNBQWdDO1FBRHhDLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXVCO0lBQ3pELENBQUM7SUFFRyxrQkFB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QUMsV0FBVyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDMUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDaEQsQ0FBQztZQUNMLENBQUM7WUFDRCxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDMUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDaEQsQ0FBQztZQUNMLENBQUM7WUFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ3RDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUMxQyxRQUFRLEVBQUUsTUFBTTtZQUNoQixVQUFVLEVBQUUsS0FBSztTQUNwQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcGFpcndpc2UsIHN0YXJ0V2l0aCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBHZW5lcmljTG9va3VwRmllbGRDb25maWcgfSBmcm9tICcuL2xvb2t1cC1maWVsZC50eXBlcyc7XHJcbmltcG9ydCB7IGNyZWF0ZUdlbmVyaWNPbkxvb2t1cFJlcXVlc3QsIGNyZWF0ZUdlbmVyaWNPblNlYXJjaFJlcXVlc3QgfSBmcm9tICcuL2xvb2t1cC1maWVsZC5oYW5kbGVycyc7XHJcbmltcG9ydCB7IGdldExhYmVsVmFsdWVSZXF1ZXN0LCBtZXJnZVVuaXF1ZSB9IGZyb20gJy4uL3V0aWxzL2Fncm8tbG9va3VwLXV0aWxzJztcclxuaW1wb3J0IHsgZm9ybWF0Q1BGQ05QSldpdGhNYXNrIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuY29uc3QgTE9PS1VQX0RFQk9VTkNFX01TID0gMzAwO1xyXG5jb25zdCBMT09LVVBfRE9DVU1FTlRfRklFTERTX1RPX0ZPUk1BVCA9IFtcbiAgICAnY25wQ3BmJyxcbiAgICAnY25wakNwZicsXG4gICAgJ251bUNnYycsXG4gICAgJ2UwMDFwZXMuY25wQ3BmJyxcbiAgICAnZTAwMXBlcy5jbnBqQ3BmJyxcbiAgICAnZTAwMXBlcy5udW1DZ2MnLFxuICAgICdlMDAxcGVzLmNwZkNucGonLFxuICAgICdlMDAxcGVzLmNwZicsXG4gICAgJ2UwMDFwZXMuY25waicsXHJcbiAgICAnZTAwMXBlcy5jZ2MnLFxyXG4gICAgJ2UwMDFwZXMuY3BmQ2djJyxcclxuICAgICdlMDAxcGVzLmNnY0NwZicsXHJcbiAgICAnY3BmJ1xyXG5dO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9CYXNlTG9va3VwRmllbGQge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdWdnZXN0aW9uc1N1YmplY3QgPSBuZXcgU3ViamVjdDxhbnlbXT4oKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICAgIHByaXZhdGUgaGFzRGVwZW5kZW5jeUxpc3RlbmVyU3RhcnRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBHZW5lcmljTG9va3VwRmllbGRDb25maWcsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIHByaXZhdGUgaXNMb29rdXBWYWx1ZVZhbGlkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwICYmIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiBpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtLmlkICE9PSB1bmRlZmluZWQgJiYgaXRlbS5pZCAhPT0gbnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5pZCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmlkICE9PSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGF0aFZhbHVlKGVudGl0eTogYW55LCBmaWVsZFBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiBmaWVsZFBhdGhcbiAgICAgICAgICAgIC5zcGxpdCgnLicpXG4gICAgICAgICAgICAucmVkdWNlKChjdXJyZW50VmFsdWUsIGZpZWxkTmFtZSkgPT4gY3VycmVudFZhbHVlPy5bZmllbGROYW1lXSwgZW50aXR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhdGhWYWx1ZShlbnRpdHk6IGFueSwgZmllbGRQYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBwYXRoUGFydHMgPSBmaWVsZFBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcbiAgICAgICAgbGV0IHRhcmdldCA9IGZvcm1hdHRlZEVudGl0eTtcblxuICAgICAgICBwYXRoUGFydHMuc2xpY2UoMCwgLTEpLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgdGFyZ2V0W2ZpZWxkTmFtZV0gPSB7IC4uLnRhcmdldFtmaWVsZE5hbWVdIH07XG4gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXRbZmllbGROYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGFyZ2V0W3BhdGhQYXJ0c1twYXRoUGFydHMubGVuZ3RoIC0gMV1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRFbnRpdHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRFbnRpdHlEb2N1bWVudEZpZWxkcyhlbnRpdHk6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICghZW50aXR5IHx8IHR5cGVvZiBlbnRpdHkgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZW50aXR5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmb3JtYXR0ZWRFbnRpdHkgPSBlbnRpdHk7XG5cbiAgICAgICAgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEU19UT19GT1JNQVQuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdGhpcy5nZXRQYXRoVmFsdWUoZm9ybWF0dGVkRW50aXR5LCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBvcmlnaW5hbFZhbHVlID09PSBudWxsIHx8IG9yaWdpbmFsVmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdENQRkNOUEpXaXRoTWFzayhTdHJpbmcob3JpZ2luYWxWYWx1ZSkpO1xuICAgICAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkRW50aXR5ID0gdGhpcy5zZXRQYXRoVmFsdWUoZm9ybWF0dGVkRW50aXR5LCBmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVudGl0eTtcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBub3JtYWxpemVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEFycmF5ID0gdmFsdWUubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gaGFzQ2hhbmdlcyB8fCBub3JtYWxpemVkSXRlbSAhPT0gaXRlbTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkSXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gaGFzQ2hhbmdlcyA/IG5vcm1hbGl6ZWRBcnJheSA6IHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RW50aXR5RG9jdW1lbnRGaWVsZHModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBhbnkge1xyXG4gICAgICAgIGlmICghY29udHJvbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhc1VzZXJJbnRlcmFjdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghY29udHJvbC5kaXJ0eSkge1xyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0NvbnRyb2xGaWxsZWQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcmVEZXBlbmRlbmNpZXNSZWFkeSgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRzT2YgPSB0aGlzLmNvbmZpZy5kZXBlbmRzT2YgPz8gW107XHJcbiAgICAgICAgaWYgKGRlcGVuZHNPZi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVwZW5kc09mLmV2ZXJ5KChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRoaXMuc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2wpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQXV0b2ZpbGxFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5hdXRvZmlsbCAhPT0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZERlcGVuZGVuY3lRdWVyeSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuY29uZmlnLmRlcGVuZGVuY2llcyA/PyBbXTtcclxuICAgICAgICByZXR1cm4gZGVwZW5kZW5jaWVzXHJcbiAgICAgICAgICAgIC5tYXAoKHsgZm9ybUNvbnRyb2xOYW1lLCBhcGlGaWVsZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5SWQgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KGZvcm1Db250cm9sTmFtZSk/LnZhbHVlPy5pZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZXBlbmRlbmN5SWQgPyBgJHthcGlGaWVsZH0gZXEgJyR7ZGVwZW5kZW5jeUlkfSdgIDogJyc7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgICAgICAgLmpvaW4oJyBhbmQgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZEN1c3RvbUZpbHRlclF1ZXJ5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLmNvbmZpZy5jdXN0b21GaWx0ZXJRdWVyeT8uKCk7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycgPyBxdWVyeS50cmltKCkgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbWJpbmVGaWx0ZXJRdWVyaWVzKC4uLnF1ZXJpZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gcXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiAhIXF1ZXJ5KS5qb2luKCcgYW5kICcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJ5QXV0b2ZpbGxXaGVuU2luZ2xlUmVzdWx0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0F1dG9maWxsRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRlcGVuZHNPZiA9IHRoaXMuY29uZmlnLmRlcGVuZHNPZiA/PyBbXTtcclxuICAgICAgICBpZiAoZGVwZW5kc09mLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldENvbnRyb2wgfHwgdGFyZ2V0Q29udHJvbC5kaXNhYmxlZCB8fCB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZCh0YXJnZXRDb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5UXVlcnkgPSB0aGlzLmJ1aWxkRGVwZW5kZW5jeVF1ZXJ5KCk7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tUXVlcnkgPSB0aGlzLmJ1aWxkQ3VzdG9tRmlsdGVyUXVlcnkoKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJRdWVyeSA9IHRoaXMuY29tYmluZUZpbHRlclF1ZXJpZXMoZGVwZW5kZW5jeVF1ZXJ5LCBjdXN0b21RdWVyeSk7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXJRdWVyeSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzb3J0ID0gdGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcy5tYXAoKGZpZWxkOiBzdHJpbmcpID0+ICh7IGZpZWxkLCBvcmRlcjogMSB9KSk7XHJcbiAgICAgICAgY29uc3QgZGlzcGxheUZpZWxkcyA9IG1lcmdlVW5pcXVlKHRoaXMuY29uZmlnLmxvb2t1cERpc3BsYXlGaWVsZHMsIHRoaXMuY29uZmlnLmFkdmFuY2VkRGlzcGxheUZpZWxkcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3QoeyBwYWdlOiAwLCBzaXplOiAyLCBzb3J0LCBmaWx0ZXJRdWVyeSwgZGlzcGxheUZpZWxkcyB9KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChsaXN0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gbGlzdD8uY29udGVudHMgPz8gW107XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IFtzaW5nbGVWYWx1ZV0gPSBnZXRMYWJlbFZhbHVlUmVxdWVzdChjb250ZW50cywgdGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb250cm9sLnNldFZhbHVlKHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoc2luZ2xlVmFsdWUpLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1ByZWZpbGxlZEFuZEluZGVwZW5kZW50KGhhc0FueVVzZXJJbnRlcmFjdGlvbjogYm9vbGVhbiwgdGFyZ2V0SXNWYWxpZDogYm9vbGVhbiwgdGFyZ2V0SXNGaWxsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIWhhc0FueVVzZXJJbnRlcmFjdGlvbiAmJiAodGFyZ2V0SXNWYWxpZCB8fCB0YXJnZXRJc0ZpbGxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmb3JjZVJlc2V0ID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldENvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc0FueVVzZXJJbnRlcmFjdGlvbiA9IGRlcGVuZHNPZi5zb21lKChmaWVsZE5hbWUpID0+IHRoaXMuaGFzVXNlckludGVyYWN0aW9uKHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKSkpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aE5vcm1hbGl6YXRpb24odGFyZ2V0Q29udHJvbCk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SXNWYWxpZCA9IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRhcmdldFZhbHVlKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRJc0ZpbGxlZCA9IHRoaXMuaXNDb250cm9sRmlsbGVkKHRhcmdldFZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKGZvcmNlUmVzZXQpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJ1bGU6IGRlcGVuZGVudCBmaWVsZHMgc3RhcnQgZGlzYWJsZWQsIGV4Y2VwdCB3aGVuIGFscmVhZHkgZmlsbGVkL3ZhbGlkIChwcmVmaWxsZWQgc2NlbmFyaW8pLlxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlZmlsbGVkQW5kSW5kZXBlbmRlbnQoaGFzQW55VXNlckludGVyYWN0aW9uLCB0YXJnZXRJc1ZhbGlkLCB0YXJnZXRJc0ZpbGxlZCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcmVEZXBlbmRlbmNpZXNSZWFkeSgpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy50cnlBdXRvZmlsbFdoZW5TaW5nbGVSZXN1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gS2VlcCBwcmVmaWxsZWQgdmFsdWVzOyBjbGVhciBvbmx5IHdoZW4gdGhlcmUgaXMgdXNlciBpbnRlcmFjdGlvbiBvciB2YWx1ZSBpcyBpbnZhbGlkIGZvciBsb29rdXAuXHJcbiAgICAgICAgaWYgKGhhc0FueVVzZXJJbnRlcmFjdGlvbiB8fCAodGFyZ2V0SXNGaWxsZWQgJiYgIXRhcmdldElzVmFsaWQpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFyZ2V0Q29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgaWYgKCF0YXJnZXRDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENvbXBhcmFibGVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSA9PT0gbnVsbCB8fCBub3JtYWxpemVkVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBub3JtYWxpemVkVmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9ybWFsaXplZFZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZFZhbHVlLm1hcCgoaXRlbSkgPT4gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBub3JtYWxpemVkVmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUuaWQgIT09IHVuZGVmaW5lZCAmJiBub3JtYWxpemVkVmFsdWUuaWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkVmFsdWUuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShub3JtYWxpemVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRpZERlcGVuZGVuY3lWYWx1ZUNoYW5nZShwcmV2aW91c0NvbXBhcmFibGU6IGFueSwgY3VycmVudENvbXBhcmFibGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2aW91c0NvbXBhcmFibGUpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Q29tcGFyYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0RlcGVuZGVuY3lMaXN0ZW5lclN0YXJ0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaGFzRGVwZW5kZW5jeUxpc3RlbmVyU3RhcnRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIE9ic2VydmUgZWFjaCBkZXBlbmRlbmN5IGRpcmVjdGx5IGFuZCBjb21wYXJlIHByZXZpb3VzL2N1cnJlbnQgdmFsdWVzLlxyXG4gICAgICAgIGRlcGVuZHNPZi5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoTE9PS1VQX0RFQk9VTkNFX01TKSxcclxuICAgICAgICAgICAgICAgICAgICBwYWlyd2lzZSgpXHJcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgoW3ByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlID0gdGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShwcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUgIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsaWRpdHkgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkUHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsaWRpdHkgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkQ3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcGFyYWJsZSA9IHRoaXMuZ2V0Q29tcGFyYWJsZUxvb2t1cFZhbHVlKG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJhYmxlID0gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaWRWYWx1ZUNoYW5nZSA9IHRoaXMuZGlkRGVwZW5kZW5jeVZhbHVlQ2hhbmdlKHByZXZpb3VzQ29tcGFyYWJsZSwgY3VycmVudENvbXBhcmFibGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1ZhbGlkaXR5ICYmICFjdXJyZW50VmFsaWRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNWYWxpZGl0eSAmJiBjdXJyZW50VmFsaWRpdHkgJiYgZGlkVmFsdWVDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1ZhbGlkaXR5ICYmIGN1cnJlbnRWYWxpZGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGVwZW5kZW5jaWVzU3RhdGUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2w/LnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEV2YWx1YXRlIG9uY2UgYWZ0ZXIgaW5pdCB0byBob25vciBwcmVmaWxsZWQgdmFsaWQgZGVwZW5kZW5jaWVzIHdpdGhvdXQgZm9yY2luZyByZXNldHMuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUl0KCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZTogdGhpcy5jb25maWcubmFtZSwgIC8vIEV4cGxpY2l0bHkgc2V0IGZvcm1Db250cm9sTmFtZSBmb3Igcy1keW5hbWljLWZvcm0gYmluZGluZ1xyXG4gICAgICAgICAgICBmaWx0ZXJGaWVsZE5hbWU6IHRoaXMuY29uZmlnLmZpbHRlckZpZWxkTmFtZSA/PyB0aGlzLmNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy5jb25maWcucmVxdWlyZWQgPz8gKCgpID0+IGZhbHNlKSxcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5jb25maWcuc2l6ZSA/PyB7IHNtOiA0LCBtZDogNCwgbGc6IDQsIHhsOiA0IH0sXHJcbiAgICAgICAgICAgIGRlcGVuZHNPZjogdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmNvbmZpZy5sYWJlbEtleSksXHJcbiAgICAgICAgICAgIHR5cGU6ICdsb29rdXAnLFxyXG4gICAgICAgICAgICBkYXRhS2V5OiAnaWQnLFxyXG4gICAgICAgICAgICBsb29rdXBEaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIHNlYXJjaFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuY29uZmlnLnNlYXJjaFRpdGxlS2V5KSxcclxuICAgICAgICAgICAgc2VhcmNoRW1wdHlUaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX25vdGhpbmdfZm91bmQnKSxcclxuICAgICAgICAgICAgZmlsdGVyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9maWx0ZXInKSxcclxuICAgICAgICAgICAgZmlsdGVyVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9maWx0ZXJzJyksXHJcbiAgICAgICAgICAgIGNsZWFyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9jbGVhcicpLFxyXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2NhbmNlbCcpLFxyXG4gICAgICAgICAgICBzZWxlY3RMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX3NlbGVjdCcpLFxyXG4gICAgICAgICAgICBzdWdnZXN0aW9uc09ic2VydmFibGU6IHRoaXMuc3VnZ2VzdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLFxyXG4gICAgICAgICAgICBzZWFyY2hPYnNlcnZhYmxlOiB0aGlzLnNlYXJjaFN1YmplY3QuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgICAgICAgIG9uTG9va3VwUmVxdWVzdDogY3JlYXRlR2VuZXJpY09uTG9va3VwUmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNTdWJqZWN0OiB0aGlzLnN1Z2dlc3Rpb25zU3ViamVjdCxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN1YmplY3Q6IHRoaXMuc2VhcmNoU3ViamVjdCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9uU2VhcmNoUmVxdWVzdDogY3JlYXRlR2VuZXJpY09uU2VhcmNoUmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNTdWJqZWN0OiB0aGlzLnN1Z2dlc3Rpb25zU3ViamVjdCxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN1YmplY3Q6IHRoaXMuc2VhcmNoU3ViamVjdCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9uQmx1cjogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aVJhd1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gZXZlbnQ/LnZhbHVlID8/ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpVGV4dFZhbHVlID0gdHlwZW9mIHVpUmF3VmFsdWUgPT09ICdzdHJpbmcnID8gdWlSYXdWYWx1ZS50cmltKCkgOiB1aVJhd1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVWlFbXB0eSA9ICF1aVRleHRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoTm9ybWFsaXphdGlvbihjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbHVlVmFsaWQgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChjdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBVSSB3YXMgY2xlYXJlZCBidXQgY29udHJvbCBzdGlsbCBoYXMgYSB2YWx1ZSwgZm9yY2Ugc3luYyB0byBudWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VpRW1wdHkgJiYgY3VycmVudFZhbHVlICE9IG51bGwgJiYgY3VycmVudFZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb250cm9sIGhhcyBhIHZhbHVlIGJ1dCBpdCdzIG5vdCBhIHZhbGlkIGxvb2t1cCBvYmplY3QsIGNsZWFyIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYXRjaGVzIGNhc2VzIHdoZXJlIHRoZSBVSSBjbGVhcmVkIHRoZSBmaWVsZCBidXQgdGhlIEZvcm1Db250cm9sIHdhc24ndCB1cGRhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiAhaXNWYWx1ZVZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHsgW3RoaXMuY29uZmlnLm5hbWVdOiBudWxsIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TZWxlY3RIYW5kbGVyOiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sICYmIGFjdHVhbFZhbHVlICYmIHR5cGVvZiBhY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsVmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2VsZWN0OiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sICYmIGFjdHVhbFZhbHVlICYmIHR5cGVvZiBhY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsVmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgYWN0dWFsVmFsdWUgJiYgdHlwZW9mIGFjdHVhbFZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IGFjdHVhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgIWFjdHVhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrQ29udHJvbEFzVXNlckludGVyYWN0ZWQoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25VbnNlbGVjdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlYXJjaEZpZWxkczogdGhpcy5jb25maWcuc2VhcmNoRmllbGRzLFxyXG4gICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzOiB0aGlzLmNvbmZpZy5zZWFyY2hGaWVsZHMsXHJcbiAgICAgICAgICAgIGFwcGVuZFRvOiAnYm9keScsXHJcbiAgICAgICAgICAgIGJhc2VaSW5kZXg6IDEwMDAwLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1iYXNlLWxvb2t1cC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9maWVsZHMvbG9va3Vwcy9jb3JlL2Fncm8tYmFzZS1sb29rdXAtZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE1BQU0sZ0NBQWdDLEdBQUc7SUFDckMsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsS0FBSztDQUNSLENBQUM7QUFFRixNQUFNLE9BQU8sbUJBQW1CO0lBTVA7SUFDUTtJQU5aLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7SUFDMUMsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFDNUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBRTdDLFlBQ3FCLE1BQWdDLEVBQ3hCLFNBQWdDO1FBRHhDLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXVCO0lBQ3pELENBQUM7SUFFRyxrQkFB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O1lBQzFDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFVBQVUsRUFBRSxLQUFLO1NBQ3BCLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwYWlyd2lzZSwgc3RhcnRXaXRoLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyaWNMb29rdXBGaWVsZENvbmZpZyB9IGZyb20gJy4vbG9va3VwLWZpZWxkLnR5cGVzJztcclxuaW1wb3J0IHsgY3JlYXRlR2VuZXJpY09uTG9va3VwUmVxdWVzdCwgY3JlYXRlR2VuZXJpY09uU2VhcmNoUmVxdWVzdCB9IGZyb20gJy4vbG9va3VwLWZpZWxkLmhhbmRsZXJzJztcclxuaW1wb3J0IHsgZ2V0TGFiZWxWYWx1ZVJlcXVlc3QsIG1lcmdlVW5pcXVlIH0gZnJvbSAnLi4vdXRpbHMvYWdyby1sb29rdXAtdXRpbHMnO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuLi91dGlscyc7XHJcblxyXG5jb25zdCBMT09LVVBfREVCT1VOQ0VfTVMgPSAzMDA7XHJcbmNvbnN0IExPT0tVUF9ET0NVTUVOVF9GSUVMRFNfVE9fRk9STUFUID0gW1xuICAgICdjbnBDcGYnLFxuICAgICdjbnBqQ3BmJyxcbiAgICAnbnVtQ2djJyxcbiAgICAnZTAwMXBlcy5jbnBDcGYnLFxuICAgICdlMDAxcGVzLmNucGpDcGYnLFxuICAgICdlMDAxcGVzLm51bUNnYycsXG4gICAgJ2UwMDFwZXMuY3BmQ25waicsXG4gICAgJ2UwMDFwZXMuY3BmJyxcbiAgICAnZTAwMXBlcy5jbnBqJyxcclxuICAgICdlMDAxcGVzLmNnYycsXHJcbiAgICAnZTAwMXBlcy5jcGZDZ2MnLFxyXG4gICAgJ2UwMDFwZXMuY2djQ3BmJyxcclxuICAgICdjcGYnXHJcbl07XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb0Jhc2VMb29rdXBGaWVsZCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3Rpb25zU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueVtdPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgcHJpdmF0ZSBoYXNEZXBlbmRlbmN5TGlzdGVuZXJTdGFydGVkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEdlbmVyaWNMb29rdXBGaWVsZENvbmZpZyxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0xvb2t1cFZhbHVlVmFsaWQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDAgJiYgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0uaWQgIT09IHVuZGVmaW5lZCAmJiBpdGVtLmlkICE9PSBudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmlkICE9PSB1bmRlZmluZWQgJiYgdmFsdWUuaWQgIT09IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYXRoVmFsdWUoZW50aXR5OiBhbnksIGZpZWxkUGF0aDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGZpZWxkUGF0aFxuICAgICAgICAgICAgLnNwbGl0KCcuJylcbiAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRWYWx1ZSwgZmllbGROYW1lKSA9PiBjdXJyZW50VmFsdWU/LltmaWVsZE5hbWVdLCBlbnRpdHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UGF0aFZhbHVlKGVudGl0eTogYW55LCBmaWVsZFBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGNvbnN0IHBhdGhQYXJ0cyA9IGZpZWxkUGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuICAgICAgICBsZXQgdGFyZ2V0ID0gZm9ybWF0dGVkRW50aXR5O1xuXG4gICAgICAgIHBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICB0YXJnZXRbZmllbGROYW1lXSA9IHsgLi4udGFyZ2V0W2ZpZWxkTmFtZV0gfTtcbiAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldFtmaWVsZE5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICB0YXJnZXRbcGF0aFBhcnRzW3BhdGhQYXJ0cy5sZW5ndGggLSAxXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVudGl0eTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdEVudGl0eURvY3VtZW50RmllbGRzKGVudGl0eTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFlbnRpdHkgfHwgdHlwZW9mIGVudGl0eSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShlbnRpdHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvcm1hdHRlZEVudGl0eSA9IGVudGl0eTtcblxuICAgICAgICBMT09LVVBfRE9DVU1FTlRfRklFTERTX1RPX0ZPUk1BVC5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmdldFBhdGhWYWx1ZShmb3JtYXR0ZWRFbnRpdHksIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IG9yaWdpbmFsVmFsdWUgPT09IG51bGwgfHwgb3JpZ2luYWxWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0Q1BGQ05QSldpdGhNYXNrKFN0cmluZyhvcmlnaW5hbFZhbHVlKSk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFbnRpdHkgPSB0aGlzLnNldFBhdGhWYWx1ZShmb3JtYXR0ZWRFbnRpdHksIGZpZWxkTmFtZSwgZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkRW50aXR5O1xuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG5vcm1hbGl6ZUxvb2t1cFZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkQXJyYXkgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShpdGVtKTtcclxuICAgICAgICAgICAgICAgIGhhc0NoYW5nZXMgPSBoYXNDaGFuZ2VzIHx8IG5vcm1hbGl6ZWRJdGVtICE9PSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRJdGVtO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNDaGFuZ2VzID8gbm9ybWFsaXplZEFycmF5IDogdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRFbnRpdHlEb2N1bWVudEZpZWxkcyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzeW5jQ29udHJvbFZhbHVlV2l0aE5vcm1hbGl6YXRpb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShjb250cm9sLnZhbHVlKTtcclxuICAgICAgICBpZiAobm9ybWFsaXplZFZhbHVlICE9PSBjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFzVXNlckludGVyYWN0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWNvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWNvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFjb250cm9sLmRpcnR5KSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQ29udHJvbEZpbGxlZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW0oKSAhPT0gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFyZURlcGVuZGVuY2llc1JlYWR5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGRlcGVuZHNPZiA9IHRoaXMuY29uZmlnLmRlcGVuZHNPZiA/PyBbXTtcclxuICAgICAgICBpZiAoZGVwZW5kc09mLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkZXBlbmRzT2YuZXZlcnkoKGZpZWxkTmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldChmaWVsZE5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0xvb2t1cFZhbHVlVmFsaWQodGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aE5vcm1hbGl6YXRpb24oY29udHJvbCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNBdXRvZmlsbEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmF1dG9maWxsICE9PSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkRGVwZW5kZW5jeVF1ZXJ5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5jb25maWcuZGVwZW5kZW5jaWVzID8/IFtdO1xyXG4gICAgICAgIHJldHVybiBkZXBlbmRlbmNpZXNcclxuICAgICAgICAgICAgLm1hcCgoeyBmb3JtQ29udHJvbE5hbWUsIGFwaUZpZWxkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lJZCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZm9ybUNvbnRyb2xOYW1lKT8udmFsdWU/LmlkO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlcGVuZGVuY3lJZCA/IGAke2FwaUZpZWxkfSBlcSAnJHtkZXBlbmRlbmN5SWR9J2AgOiAnJztcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxyXG4gICAgICAgICAgICAuam9pbignIGFuZCAnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkQ3VzdG9tRmlsdGVyUXVlcnkoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMuY29uZmlnLmN1c3RvbUZpbHRlclF1ZXJ5Py4oKTtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHF1ZXJ5ID09PSAnc3RyaW5nJyA/IHF1ZXJ5LnRyaW0oKSA6ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29tYmluZUZpbHRlclF1ZXJpZXMoLi4ucXVlcmllczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBxdWVyaWVzLmZpbHRlcigocXVlcnkpID0+ICEhcXVlcnkpLmpvaW4oJyBhbmQgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0cnlBdXRvZmlsbFdoZW5TaW5nbGVSZXN1bHQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQXV0b2ZpbGxFbmFibGVkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldENvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgIGlmICghdGFyZ2V0Q29udHJvbCB8fCB0YXJnZXRDb250cm9sLmRpc2FibGVkIHx8IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRhcmdldENvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY3lRdWVyeSA9IHRoaXMuYnVpbGREZXBlbmRlbmN5UXVlcnkoKTtcclxuICAgICAgICBjb25zdCBjdXN0b21RdWVyeSA9IHRoaXMuYnVpbGRDdXN0b21GaWx0ZXJRdWVyeSgpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5jb21iaW5lRmlsdGVyUXVlcmllcyhkZXBlbmRlbmN5UXVlcnksIGN1c3RvbVF1ZXJ5KTtcclxuICAgICAgICBpZiAoIWZpbHRlclF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmNvbmZpZy5sb29rdXBEaXNwbGF5RmllbGRzLm1hcCgoZmllbGQ6IHN0cmluZykgPT4gKHsgZmllbGQsIG9yZGVyOiAxIH0pKTtcclxuICAgICAgICBjb25zdCBkaXNwbGF5RmllbGRzID0gbWVyZ2VVbmlxdWUodGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcywgdGhpcy5jb25maWcuYWR2YW5jZWREaXNwbGF5RmllbGRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2VydmljZVxyXG4gICAgICAgICAgICAubGlzdCh7IHBhZ2U6IDAsIHNpemU6IDIsIHNvcnQsIGZpbHRlclF1ZXJ5LCBkaXNwbGF5RmllbGRzIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3Q6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSBsaXN0Py5jb250ZW50cyA/PyBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZW50cy5sZW5ndGggIT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgW3NpbmdsZVZhbHVlXSA9IGdldExhYmVsVmFsdWVSZXF1ZXN0KGNvbnRlbnRzLCB0aGlzLmNvbmZpZy5sb29rdXBEaXNwbGF5RmllbGRzKTtcclxuICAgICAgICAgICAgICAgIGlmIChzaW5nbGVWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUodGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShzaW5nbGVWYWx1ZSksIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzUHJlZmlsbGVkQW5kSW5kZXBlbmRlbnQoaGFzQW55VXNlckludGVyYWN0aW9uOiBib29sZWFuLCB0YXJnZXRJc1ZhbGlkOiBib29sZWFuLCB0YXJnZXRJc0ZpbGxlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhaGFzQW55VXNlckludGVyYWN0aW9uICYmICh0YXJnZXRJc1ZhbGlkIHx8IHRhcmdldElzRmlsbGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZURlcGVuZGVuY2llc1N0YXRlKGZvcmNlUmVzZXQgPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldENvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgIGlmICghdGFyZ2V0Q29udHJvbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkZXBlbmRzT2YgPSB0aGlzLmNvbmZpZy5kZXBlbmRzT2YgPz8gW107XHJcbiAgICAgICAgaWYgKGRlcGVuZHNPZi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaGFzQW55VXNlckludGVyYWN0aW9uID0gZGVwZW5kc09mLnNvbWUoKGZpZWxkTmFtZSkgPT4gdGhpcy5oYXNVc2VySW50ZXJhY3Rpb24odGhpcy5jb25maWcuZm9ybUdyb3VwLmdldChmaWVsZE5hbWUpKSk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0VmFsdWUgPSB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoTm9ybWFsaXphdGlvbih0YXJnZXRDb250cm9sKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRJc1ZhbGlkID0gdGhpcy5pc0xvb2t1cFZhbHVlVmFsaWQodGFyZ2V0VmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldElzRmlsbGVkID0gdGhpcy5pc0NvbnRyb2xGaWxsZWQodGFyZ2V0VmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAoZm9yY2VSZXNldCkge1xuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxyXG4gICAgICAgIC8vIFJ1bGU6IGRlcGVuZGVudCBmaWVsZHMgc3RhcnQgZGlzYWJsZWQsIGV4Y2VwdCB3aGVuIGFscmVhZHkgZmlsbGVkL3ZhbGlkIChwcmVmaWxsZWQgc2NlbmFyaW8pLlxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlZmlsbGVkQW5kSW5kZXBlbmRlbnQoaGFzQW55VXNlckludGVyYWN0aW9uLCB0YXJnZXRJc1ZhbGlkLCB0YXJnZXRJc0ZpbGxlZCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcmVEZXBlbmRlbmNpZXNSZWFkeSgpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy50cnlBdXRvZmlsbFdoZW5TaW5nbGVSZXN1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gS2VlcCBwcmVmaWxsZWQgdmFsdWVzOyBjbGVhciBvbmx5IHdoZW4gdGhlcmUgaXMgdXNlciBpbnRlcmFjdGlvbiBvciB2YWx1ZSBpcyBpbnZhbGlkIGZvciBsb29rdXAuXHJcbiAgICAgICAgaWYgKGhhc0FueVVzZXJJbnRlcmFjdGlvbiB8fCAodGFyZ2V0SXNGaWxsZWQgJiYgIXRhcmdldElzVmFsaWQpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFyZ2V0Q29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgaWYgKCF0YXJnZXRDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENvbXBhcmFibGVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSA9PT0gbnVsbCB8fCBub3JtYWxpemVkVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBub3JtYWxpemVkVmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9ybWFsaXplZFZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZFZhbHVlLm1hcCgoaXRlbSkgPT4gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBub3JtYWxpemVkVmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUuaWQgIT09IHVuZGVmaW5lZCAmJiBub3JtYWxpemVkVmFsdWUuaWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkVmFsdWUuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShub3JtYWxpemVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRpZERlcGVuZGVuY3lWYWx1ZUNoYW5nZShwcmV2aW91c0NvbXBhcmFibGU6IGFueSwgY3VycmVudENvbXBhcmFibGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2aW91c0NvbXBhcmFibGUpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Q29tcGFyYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0RlcGVuZGVuY3lMaXN0ZW5lclN0YXJ0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaGFzRGVwZW5kZW5jeUxpc3RlbmVyU3RhcnRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIE9ic2VydmUgZWFjaCBkZXBlbmRlbmN5IGRpcmVjdGx5IGFuZCBjb21wYXJlIHByZXZpb3VzL2N1cnJlbnQgdmFsdWVzLlxuICAgICAgICBkZXBlbmRzT2YuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldChmaWVsZE5hbWUpO1xuICAgICAgICAgICAgY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEN1cnJlbnRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkQ3VycmVudFZhbHVlICE9PSBjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkQ3VycmVudFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkQ3VycmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb250cm9sPy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoY29udHJvbC52YWx1ZSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKExPT0tVUF9ERUJPVU5DRV9NUyksXG4gICAgICAgICAgICAgICAgcGFpcndpc2UoKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoKFtwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFByZXZpb3VzVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKHByZXZpb3VzVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEN1cnJlbnRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSAhPT0gY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkQ3VycmVudFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWxpZGl0eSA9IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWxpZGl0eSA9IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wYXJhYmxlID0gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUobm9ybWFsaXplZFByZXZpb3VzVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENvbXBhcmFibGUgPSB0aGlzLmdldENvbXBhcmFibGVMb29rdXBWYWx1ZShub3JtYWxpemVkQ3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZFZhbHVlQ2hhbmdlID0gdGhpcy5kaWREZXBlbmRlbmN5VmFsdWVDaGFuZ2UocHJldmlvdXNDb21wYXJhYmxlLCBjdXJyZW50Q29tcGFyYWJsZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVmFsaWRpdHkgJiYgIWN1cnJlbnRWYWxpZGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGVwZW5kZW5jaWVzU3RhdGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1ZhbGlkaXR5ICYmIGN1cnJlbnRWYWxpZGl0eSAmJiBkaWRWYWx1ZUNoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUYXJnZXRLZWVwaW5nRW5hYmxlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzVmFsaWRpdHkgJiYgY3VycmVudFZhbGlkaXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY29udHJvbD8uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJlRGVwZW5kZW5jaWVzUmVhZHkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGVwZW5kZW5jaWVzU3RhdGUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gRXZhbHVhdGUgb25jZSBhZnRlciBpbml0IHRvIGhvbm9yIHByZWZpbGxlZCB2YWxpZCBkZXBlbmRlbmNpZXMgd2l0aG91dCBmb3JjaW5nIHJlc2V0cy5cclxuICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlSXQoKTogYW55IHtcclxuICAgICAgICB0aGlzLnN0YXJ0RGVwZW5kZW5jaWVzTGlzdGVuZXIoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5jb25maWcubmFtZSxcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lOiB0aGlzLmNvbmZpZy5uYW1lLCAgLy8gRXhwbGljaXRseSBzZXQgZm9ybUNvbnRyb2xOYW1lIGZvciBzLWR5bmFtaWMtZm9ybSBiaW5kaW5nXHJcbiAgICAgICAgICAgIGZpbHRlckZpZWxkTmFtZTogdGhpcy5jb25maWcuZmlsdGVyRmllbGROYW1lID8/IHRoaXMuY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLmNvbmZpZy5yZXF1aXJlZCA/PyAoKCkgPT4gZmFsc2UpLFxyXG4gICAgICAgICAgICBzaXplOiB0aGlzLmNvbmZpZy5zaXplID8/IHsgc206IDQsIG1kOiA0LCBsZzogNCwgeGw6IDQgfSxcclxuICAgICAgICAgICAgZGVwZW5kc09mOiB0aGlzLmNvbmZpZy5kZXBlbmRzT2YgPz8gW10sXHJcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuY29uZmlnLmxhYmVsS2V5KSxcclxuICAgICAgICAgICAgdHlwZTogJ2xvb2t1cCcsXHJcbiAgICAgICAgICAgIGRhdGFLZXk6ICdpZCcsXHJcbiAgICAgICAgICAgIGxvb2t1cERpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgc2VhcmNoVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5jb25maWcuc2VhcmNoVGl0bGVLZXkpLFxyXG4gICAgICAgICAgICBzZWFyY2hFbXB0eVRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfbm90aGluZ19mb3VuZCcpLFxyXG4gICAgICAgICAgICBmaWx0ZXJMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2ZpbHRlcicpLFxyXG4gICAgICAgICAgICBmaWx0ZXJUaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2ZpbHRlcnMnKSxcclxuICAgICAgICAgICAgY2xlYXJMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2NsZWFyJyksXHJcbiAgICAgICAgICAgIGNhbmNlbExhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfY2FuY2VsJyksXHJcbiAgICAgICAgICAgIHNlbGVjdExhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfc2VsZWN0JyksXHJcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zT2JzZXJ2YWJsZTogdGhpcy5zdWdnZXN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgICAgICAgIHNlYXJjaE9ic2VydmFibGU6IHRoaXMuc2VhcmNoU3ViamVjdC5hc09ic2VydmFibGUoKSxcclxuICAgICAgICAgICAgb25Mb29rdXBSZXF1ZXN0OiBjcmVhdGVHZW5lcmljT25Mb29rdXBSZXF1ZXN0KHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9uc1N1YmplY3Q6IHRoaXMuc3VnZ2VzdGlvbnNTdWJqZWN0LFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoU3ViamVjdDogdGhpcy5zZWFyY2hTdWJqZWN0LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgb25TZWFyY2hSZXF1ZXN0OiBjcmVhdGVHZW5lcmljT25TZWFyY2hSZXF1ZXN0KHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9uc1N1YmplY3Q6IHRoaXMuc3VnZ2VzdGlvbnNTdWJqZWN0LFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoU3ViamVjdDogdGhpcy5zZWFyY2hTdWJqZWN0LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgb25CbHVyOiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpUmF3VmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyBldmVudD8udmFsdWUgPz8gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlUZXh0VmFsdWUgPSB0eXBlb2YgdWlSYXdWYWx1ZSA9PT0gJ3N0cmluZycgPyB1aVJhd1ZhbHVlLnRyaW0oKSA6IHVpUmF3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNVaUVtcHR5ID0gIXVpVGV4dFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsdWVWYWxpZCA9IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKGN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIFVJIHdhcyBjbGVhcmVkIGJ1dCBjb250cm9sIHN0aWxsIGhhcyBhIHZhbHVlLCBmb3JjZSBzeW5jIHRvIG51bGwuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVWlFbXB0eSAmJiBjdXJyZW50VmFsdWUgIT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnRyb2wgaGFzIGEgdmFsdWUgYnV0IGl0J3Mgbm90IGEgdmFsaWQgbG9va3VwIG9iamVjdCwgY2xlYXIgaXRcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNhdGNoZXMgY2FzZXMgd2hlcmUgdGhlIFVJIGNsZWFyZWQgdGhlIGZpZWxkIGJ1dCB0aGUgRm9ybUNvbnRyb2wgd2Fzbid0IHVwZGF0ZWRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICYmICFpc1ZhbHVlVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyBbdGhpcy5jb25maWcubmFtZV06IG51bGwgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblNlbGVjdEhhbmRsZXI6IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGV2ZW50Py52YWx1ZSB8fCBldmVudDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgYWN0dWFsVmFsdWUgJiYgdHlwZW9mIGFjdHVhbFZhbHVlID09PSAnb2JqZWN0JyAmJiBhY3R1YWxWYWx1ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZFZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TZWxlY3Q6IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGV2ZW50Py52YWx1ZSB8fCBldmVudDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgYWN0dWFsVmFsdWUgJiYgdHlwZW9mIGFjdHVhbFZhbHVlID09PSAnb2JqZWN0JyAmJiBhY3R1YWxWYWx1ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZFZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25DbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGV2ZW50Py52YWx1ZSB8fCBldmVudDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCAmJiBhY3R1YWxWYWx1ZSAmJiB0eXBlb2YgYWN0dWFsVmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShhY3R1YWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gYWN0dWFsVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrQ29udHJvbEFzVXNlckludGVyYWN0ZWQoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZFZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCAmJiAhYWN0dWFsVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblVuc2VsZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrQ29udHJvbEFzVXNlckludGVyYWN0ZWQoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2VhcmNoRmllbGRzOiB0aGlzLmNvbmZpZy5zZWFyY2hGaWVsZHMsXHJcbiAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHM6IHRoaXMuY29uZmlnLnNlYXJjaEZpZWxkcyxcclxuICAgICAgICAgICAgYXBwZW5kVG86ICdib2R5JyxcclxuICAgICAgICAgICAgYmFzZVpJbmRleDogMTAwMDAsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -193,11 +193,7 @@ export const getLabelValueRequest = (contents, displayFields, APPLY_CPFCNPJ_FILT
193
193
  }
194
194
  });
195
195
  LOOKUP_DOCUMENT_FIELDS.forEach((fieldName) => {
196
- console.log(`Processing field: ${fieldName} for item:`, formattedItem); // Debugging line
197
196
  const value = getValueByPath(formattedItem, fieldName);
198
- if (value) {
199
- console.log(`Checking field: ${fieldName}, value: ${value}`);
200
- }
201
197
  if (value !== null && value !== undefined && value !== '') {
202
198
  setValueByPath(formattedItem, fieldName, formatCPFCNPJWithMask(String(value)));
203
199
  }
@@ -360,4 +356,4 @@ export function formatBrlCurrency(currencyPipe, value) {
360
356
  .replace("#", ",")
361
357
  .replace(/^(.{2})/, "$1 ");
362
358
  }
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb29rdXAtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzL2xvb2t1cHMvdXRpbHMvYWdyby1sb29rdXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRztJQUMzQixRQUFRO0lBQ1IsU0FBUztJQUNULFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLGNBQWM7SUFDZCxhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixLQUFLO0NBQ1IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQW9CLEVBQUUsVUFBeUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpKLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQzNELFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssTUFB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SyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFFdEQsSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkIsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxZQUEwQixFQUFFLEtBQWE7SUFDdkUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLFlBQVk7U0FDZCxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1FBQzNDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDbEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDakIsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDakIsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGZvcm1hdENQRkNOUEpXaXRoTWFzayB9IGZyb20gJy4vY3BmLWNucGotZm9ybWF0dGVyJztcclxuaW1wb3J0IHsgQWdyb1N0cmluZ1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzJztcclxuXHJcbmNvbnN0IG51bWJlclR5cGVzID0gWydpbnRlZ2VyJywgJ2RvdWJsZSddO1xyXG5jb25zdCBudW1iZXJQYXR0ZXJuID0gL15cXGQrXFxiJC87XHJcbmNvbnN0IFlZWVlfTU1fRERfRk9STUFUID0gJ1lZWVktTU0tREQnO1xyXG5jb25zdCBMT09LVVBfRE9DVU1FTlRfRklFTERTID0gW1xyXG4gICAgJ2NucENwZicsXHJcbiAgICAnY25wakNwZicsXHJcbiAgICAnbnVtQ2djJyxcclxuICAgICdlMDAxcGVzLmNucENwZicsXHJcbiAgICAnZTAwMXBlcy5jbnBqQ3BmJyxcclxuICAgICdlMDAxcGVzLm51bUNnYycsXHJcbiAgICAnZTAwMXBlcy5jcGZDbnBqJyxcclxuICAgICdlMDAxcGVzLmNwZicsXHJcbiAgICAnZTAwMXBlcy5jbnBqJyxcclxuICAgICdlMDAxcGVzLmNnYycsXHJcbiAgICAnZTAwMXBlcy5jcGZDZ2MnLFxyXG4gICAgJ2UwMDFwZXMuY2djQ3BmJyxcclxuICAgICdjcGYnXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgbWVyZ2VVbmlxdWUgPSAoYXJyYXk6IEFycmF5PHN0cmluZz4sIG90aGVyQXJyYXk6IEFycmF5PHN0cmluZz4pID0+IGFycmF5LmNvbmNhdChvdGhlckFycmF5LmZpbHRlcigoaXRlbSkgPT4gIWFycmF5LmluY2x1ZGVzKGl0ZW0pKSk7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluZm9ybWF0aW9uID0gKHR5cGU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAndGltZSc6XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgY2FzZSAnbG9jYWxEYXRlVGltZSc6XHJcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkVmFsdWU6IGZhbHNlLCB0eXBlRXhpc3RzOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XHJcbiAgICAgICAgY2FzZSAnZG91YmxlJzpcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWRWYWx1ZTogdmFsdWUubWF0Y2gobnVtYmVyUGF0dGVybiksXHJcbiAgICAgICAgICAgICAgICB0eXBlRXhpc3RzOiBudW1iZXJUeXBlcy5pbmNsdWRlcyh0eXBlKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaXNWYWxpZFZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHR5cGVFeGlzdHM6IGZhbHNlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IGdldFN1Z2dlc3Rpb25WYWx1ZSA9IChkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSwgb3duZXJFbnRpdHk6IHN0cmluZywgdmFsdWU6IGFueSwgc2VwYXJhdG9yOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICghZGlzcGxheUZpZWxkcyB8fCBkaXNwbGF5RmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBkaXNwbGF5RmllbGRzXHJcbiAgICAgICAgLm1hcCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKExPT0tVUF9ET0NVTUVOVF9GSUVMRFMuaW5jbHVkZXMoZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Q1BGQ05QSldpdGhNYXNrKGdldFByb3AodmFsdWUsIGAke293bmVyRW50aXR5fS4ke2ZpZWxkfWApKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0UHJvcCh2YWx1ZSwgYCR7b3duZXJFbnRpdHl9LiR7ZmllbGR9YCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQoU3RyaW5nKGYpKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKHNlcGFyYXRvcik7XHJcbn07XHJcblxyXG5jb25zdCBidWlsZEVudW1DbGF1c2UgPSAobmFtZTogc3RyaW5nLCBzZWxlY3RlZDogYW55KSA9PiBgJHtuYW1lfSBlcSAnJHtzZWxlY3RlZH0nYDtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFbnVtUXVlcnkgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBtdWx0aXBsZSA9IGZhbHNlKSA9PiB7XHJcbiAgICBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgICByZXR1cm4gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYnVpbGRFbnVtQ2xhdXNlKG5hbWUsIHNlbGVjdGVkKSkuam9pbignIG9yICcpfSlgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpbHRlclN0cmluZyA9IChhbnk6IGFueSwgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB0eXBlLCBtdWx0aXBsZSB9ID0gYW55O1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChZWVlZX01NX0REX0ZPUk1BVCl9J2A7XHJcbiAgICAgICAgY2FzZSAndGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgnSEg6bW06c3MnKX0nYDtcclxuICAgICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xyXG4gICAgICAgIGNhc2UgJ2xvY2FsRGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1MnKX0nYDtcclxuICAgICAgICBjYXNlICdlbnVtJzpcclxuICAgICAgICAgICAgcmV0dXJuIGdldEVudW1RdWVyeShuYW1lLCB2YWx1ZSwgbXVsdGlwbGUpO1xyXG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgIHJldHVybiBgdXBwZXIoJHtuYW1lfSkgbGlrZSB1cHBlcignJSR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIidcIil9JScpYDtcclxuICAgICAgICBjYXNlICdsb29rdXAnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWUuaWR9J2A7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpbHRlclRva2VucyA9IChhbnk6IGFueSwgdmFsdWU6IGFueSwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHR5cGUsIGxhYmVsLCBzZWFyY2hGaWVsZHMsIG9wdGlvbnMgfSA9IGFueTtcclxuICAgIGxldCBsYWJlbFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnTCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0aW1lJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdMVFMnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbG9jYWxEYXRlVGltZSc6XHJcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0wgTFRTJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xvb2t1cCc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBzZWFyY2hGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiBnZXRQcm9wKHZhbHVlLCBmaWVsZC5uYW1lKSkuam9pbignIC0gJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2VudW0nOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBvcHRpb24udmFsdWUgPT09IGxhYmVsVmFsdWUpWzBdLmxhYmVsO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9saXN0X2dyaWRfYm9vbGVhbl90cnVlJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9saXN0X2dyaWRfYm9vbGVhbl9mYWxzZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGlkOiBuYW1lLCBsYWJlbDogYCR7bGFiZWx9OiAke2xhYmVsVmFsdWV9YCB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlc29sdmVSZWZzID0gKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgZ2V0RGF0YUZyb21SZWYgPSAocmVmOiBzdHJpbmcsIHJvb3RPYmo6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1wiKC4qPylcIlxcXS9nO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBsZXQgbWF0Y2g7XHJcblxyXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHJlZikpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG1hdGNoWzFdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYz8uW3BhcnRdLCByb290T2JqKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVzb2x2ZSA9IChvYmo6IGFueSwgcm9vdE9iajogYW55LCB2aXNpdGVkID0gbmV3IFNldDxhbnk+KCkpID0+IHtcclxuICAgICAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IHZpc2l0ZWQuaGFzKG9iaikpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2aXNpdGVkLmFkZChvYmopO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgIG9iai5mb3JFYWNoKChpdGVtKSA9PiByZXNvbHZlKGl0ZW0sIHJvb3RPYmosIHZpc2l0ZWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJyRyZWYnICYmIG9ialtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmUGF0aCA9IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCBnZXREYXRhRnJvbVJlZihyZWZQYXRoLCByb290T2JqKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9ialtrZXldLCByb290T2JqLCB2aXNpdGVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXNvbHZlKHBheWxvYWQsIHBheWxvYWQpO1xyXG5cclxuICAgIHJldHVybiBwYXlsb2FkO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUmVsYXRpb25UcmFuc2Zvcm1Db25maWcgPSB7XHJcbiAgICBvcmlnaW46IHN0cmluZztcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IGFueSkgPT4gYW55O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFwcGx5UmVsYXRpb25UcmFuc2Zvcm1zID0gKGVudGl0eTogYW55LCBvcmlnaW5FbnRpdHk6IHN0cmluZyB8IHVuZGVmaW5lZCwgcmVsYXRpb25zOiBSZWxhdGlvblRyYW5zZm9ybUNvbmZpZ1tdKSA9PiB7XHJcbiAgICByZWxhdGlvbnMuZm9yRWFjaCgoeyBvcmlnaW4sIGtleSwgdHJhbnNmb3JtIH0pID0+IHtcclxuICAgICAgICBpZiAob3JpZ2luRW50aXR5ICE9PSBvcmlnaW4gJiYgZW50aXR5W2tleV0pIHtcclxuICAgICAgICAgICAgZW50aXR5W2tleV0gPSB0cmFuc2Zvcm0oZW50aXR5W2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBlbnRpdHk7XHJcbn07XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuY29uc3QgZGF0ZVBhdHRlcm5ZWVlZTU1ERCA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgaXNWYWxpZEZpbHRlciA9ICh0eXBlOiBhbnksIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgaXNWYWxpZFZhbHVlLCB0eXBlRXhpc3RzIH0gPSBnZXRUeXBlSW5mb3JtYXRpb24odHlwZSwgdmFsdWUpO1xyXG4gICAgcmV0dXJuICEodHlwZUV4aXN0cyAmJiAhaXNWYWxpZFZhbHVlKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRQcm9wID0gKG9iajogYW55LCBwYXRoOiBhbnksIEFQUExZX0NQRkNOUEpfRklMVEVSID0gZmFsc2UpID0+IHtcclxuICAgIGxldCByID0gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChyZXN1bHQ6IGFueSwgcHJvcDogYW55KSA9PiAocmVzdWx0W3Byb3BdID09PSB1bmRlZmluZWQgPyBcIlwiIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gdHlwZW9mIHBhdGggPT09ICdzdHJpbmcnID8gcGF0aCA6ICcnO1xyXG4gICAgY29uc3QgZmllbGROYW1lID0gbm9ybWFsaXplZFBhdGguc3BsaXQoJy4nKS5wb3AoKSA/PyBub3JtYWxpemVkUGF0aDtcclxuXHJcbiAgICBpZiAoZGF0ZVBhdHRlcm5ZWVlZTU1ERC50ZXN0KHIpKSB7XHJcbiAgICAgICAgciA9IG1vbWVudChyLCBZWVlZX01NX0REX0ZPUk1BVCkuZm9ybWF0KFwiREQvTU0vWVlZWVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKEFQUExZX0NQRkNOUEpfRklMVEVSIHx8IExPT0tVUF9ET0NVTUVOVF9GSUVMRFMuaW5jbHVkZXMoZmllbGROYW1lKSkgJiYgQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQocikpIHtcclxuICAgICAgICByZXR1cm4gZm9ybWF0Q1BGQ05QSldpdGhNYXNrKHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVSZXF1ZXN0ID0gKGNvbnRlbnRzOiBhbnlbXSwgZGlzcGxheUZpZWxkczogYW55W10sIEFQUExZX0NQRkNOUEpfRklMVEVSID0gZmFsc2UpID0+IHtcclxuICAgIGNvbnN0IHIgPSBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG51bWJlclBhdHRlcm5Ub1Rlc3QgPSAvXlxcZCsoXFwuXFxkezEsMn0pPyQvO1xyXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEl0ZW0gPSB7IC4uLml0ZW0gfTtcclxuXHJcbiAgICAgICAgLy8gRm9ybWF0IGN1cnJlbmN5IGZpZWxkcyAodmxyQ290KVxyXG4gICAgICAgIFtcInZsckNvdFwiXS5mb3JFYWNoKChmaWVsZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtYXR0ZWRJdGVtW2ZpZWxkXSAmJiBudW1iZXJQYXR0ZXJuVG9UZXN0LnRlc3QoZm9ybWF0dGVkSXRlbVtmaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRJdGVtW2ZpZWxkXSA9IHBhcnNlRmxvYXQoZm9ybWF0dGVkSXRlbVtmaWVsZF0pLnRvTG9jYWxlU3RyaW5nKFwicHQtQlJcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcclxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIExPT0tVUF9ET0NVTUVOVF9GSUVMRFMuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBQcm9jZXNzaW5nIGZpZWxkOiAke2ZpZWxkTmFtZX0gZm9yIGl0ZW06YCwgZm9ybWF0dGVkSXRlbSk7IC8vIERlYnVnZ2luZyBsaW5lXHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVCeVBhdGgoZm9ybWF0dGVkSXRlbSwgZmllbGROYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENoZWNraW5nIGZpZWxkOiAke2ZpZWxkTmFtZX0sIHZhbHVlOiAke3ZhbHVlfWApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHNldFZhbHVlQnlQYXRoKFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZEl0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdENQRkNOUEpXaXRoTWFzayhTdHJpbmcodmFsdWUpKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5mb3JtYXR0ZWRJdGVtLFxyXG4gICAgICAgICAgICBsYWJlbDogZGlzcGxheUZpZWxkcy5tYXAoZmllbGQgPT4gZ2V0UHJvcChmb3JtYXR0ZWRJdGVtLCBmaWVsZCwgQVBQTFlfQ1BGQ05QSl9GSUxURVIpKS5qb2luKFwiIC0gXCIpXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gZ2V0VmFsdWVCeVBhdGgob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghb2JqIHx8ICFwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYW1wbyBzaW1wbGVzIG91IGNoYXZlIGxpdGVyYWwgZXhpc3RlbnRlXHJcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcGF0aCkpIHtcclxuICAgICAgICByZXR1cm4gb2JqW3BhdGhdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhbXBvIGFncmVnYWRvOiBcImNhbXBvMS5jYW1wbzJcIlxyXG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGFjYyA9PT0gbnVsbCB8fCBhY2MgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFjY1trZXldO1xyXG4gICAgfSwgb2JqKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0VmFsdWVCeVBhdGgob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XHJcbiAgICBpZiAoIW9iaiB8fCAhcGF0aCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYW1wbyBzaW1wbGVzIG91IGNoYXZlIGxpdGVyYWwgZXhpc3RlbnRlXHJcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcGF0aCkpIHtcclxuICAgICAgICBvYmpbcGF0aF0gPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FtcG8gYWdyZWdhZG86IFwiY2FtcG8xLmNhbXBvMlwiXHJcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gICAgY29uc3QgbGFzdEtleSA9IGtleXMucG9wKCk7XHJcblxyXG4gICAgaWYgKCFsYXN0S2V5KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChhY2MgPT09IG51bGwgfHwgYWNjID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhY2Nba2V5XTtcclxuICAgIH0sIG9iaik7XHJcblxyXG4gICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRhcmdldFtsYXN0S2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnMoZmlsdGVyczogYW55W10sIHZhbHVlOiBhbnksIHN0YXR1c0ZpbHRlcjogYm9vbGVhbiwgY29sdW1uTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpc1ZhbGlkRmlsdGVyKHR5cGUsIHZhbHVlKSlcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gXCJzdGF0dXNcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udmVydFZhbHVlQnlUeXBlKG5hbWUsIHZhbHVlLCB0eXBlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKFwiIG9yIFwiKVxyXG4gICAgICAgIC5jb25jYXQoYGFuZCAke2NvbHVtbk5hbWV9IGVxICdWQScgYCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWx0ZXJzQWR2YW5jZWQoXHJcbiAgICBmaWx0ZXJzOiBhbnlbXSxcclxuICAgIGZpbHRlckRhdGE6IGFueSxcclxuICAgIHN0YXR1c0ZpbHRlcjogYm9vbGVhbixcclxuICAgIGNvbHVtbk5hbWU6IHN0cmluZyxcclxuICAgIGUwNzBlbXBJZDogc3RyaW5nXHJcbikge1xyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gZmlsdGVyRGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlckRhdGFbbmFtZV0gIT09IFwiXCIpXHJcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB0eXBlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWU6IGFueSA9IGZpbHRlckRhdGFbbmFtZV07XHJcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVCeVR5cGUobmFtZSwgdmFsdWUsIHR5cGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbmNhdChzdGF0dXNGaWx0ZXIgPyBbYCR7Y29sdW1uTmFtZX0gZXEgJ1ZBJyBhbmQgZTA3MGVtcCBlcSAnJHtlMDcwZW1wSWR9J2BdIDogW10pXHJcbiAgICAgICAgLmpvaW4oXCIgYW5kIFwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZUJ5VHlwZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHR5cGU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChZWVlZX01NX0REX0ZPUk1BVCl9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGBjb250YWluaW5nKHVwcGVyKCR7bmFtZX0pLCB1cHBlcignJHtTdHJpbmcodmFsdWUpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSlgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWx0ZXJzV2l0aG91dFN0YXR1cyhmaWx0ZXJzOiBhbnlbXSwgdmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAuZmlsdGVyKCh7IHR5cGUgfSkgPT4gaXNWYWxpZEZpbHRlcih0eXBlLCB2YWx1ZSkpXHJcbiAgICAgICAgLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWUgIT09IFwic3RhdHVzXCIpXHJcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB0eXBlIH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcodXBwZXIoJHtuYW1lfSksIHVwcGVyKCcke3ZhbHVlLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSlgO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb1RocmVlKG51bTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSAqIDEwMDApIC8gMTAwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUFkanVzdGVkUGVyY2VudGFnZXNBbmRXZWlnaHRzKHRvdGFsOiBudW1iZXIsIG1heFBlcmNlbnRhZ2U6IG51bWJlciwgbWF4V2VpZ2h0OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQZXJjZW50YWdlcyA9IGNhbGN1bGF0ZUFkanVzdGVkUGVyY2VudGFnZXModG90YWwsIG1heFBlcmNlbnRhZ2UpO1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFdlaWdodHMgPSBjYWxjdWxhdGVBZGp1c3RlZFdlaWdodHMoY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBtYXhXZWlnaHQpO1xyXG4gICAgcmV0dXJuIHsgY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBjYWxjdWxhdGVkV2VpZ2h0cyB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlcyh0b3RhbDogbnVtYmVyLCBtYXhQZXJjZW50YWdlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGJhc2VQZXJjZW50YWdlID0gcm91bmRUb1RocmVlKG1heFBlcmNlbnRhZ2UgLyB0b3RhbCk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkUGVyY2VudGFnZXMgPSBBcnJheSh0b3RhbCkuZmlsbChiYXNlUGVyY2VudGFnZSk7XHJcbiAgICByZXR1cm4gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkoY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBtYXhQZXJjZW50YWdlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUFkanVzdGVkV2VpZ2h0cyhjYWxjdWxhdGVkUGVyY2VudGFnZXM6IG51bWJlcltdLCBtYXhXZWlnaHQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgdG90YWxQZXJjZW50YWdlID0gY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLnJlZHVjZSgoc3VtLCBwZXJjZW50YWdlKSA9PiBzdW0gKyBwZXJjZW50YWdlLCAwKTtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRXZWlnaHRzID0gY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLm1hcChwZXJjZW50YWdlID0+XHJcbiAgICAgICAgcm91bmRUb1RocmVlKChwZXJjZW50YWdlIC8gMTAwKSAqIG1heFdlaWdodClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHJvdW5kVG9UaHJlZSh0b3RhbFBlcmNlbnRhZ2UpID09PSAxMDApIHtcclxuICAgICAgICByZXR1cm4gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkoY2FsY3VsYXRlZFdlaWdodHMsIG1heFdlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNhbGN1bGF0ZWRXZWlnaHRzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkodmFsdWVzOiBudW1iZXJbXSwgdG90YWw6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGFkanVzdGVkVmFsdWVzID0gdmFsdWVzLnNsaWNlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VG90YWwgPSBhZGp1c3RlZFZhbHVlcy5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IHN1bSArIHZhbHVlLCAwKTtcclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSByb3VuZFRvVGhyZWUodG90YWwgLSBjdXJyZW50VG90YWwpO1xyXG5cclxuICAgIGlmIChkaWZmZXJlbmNlICE9PSAwKSB7XHJcbiAgICAgICAgYWRqdXN0ZWRWYWx1ZXNbMF0gKz0gZGlmZmVyZW5jZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWRqdXN0ZWRWYWx1ZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCcmxDdXJyZW5jeShjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSwgdmFsdWU6IG51bWJlcik6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFjdXJyZW5jeVBpcGUgfHwgIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbmN5UGlwZVxyXG4gICAgICAgIC50cmFuc2Zvcm0odmFsdWUsIFwiQlJMXCIsIFwic3ltYm9sXCIsIGAxLjItMmApXHJcbiAgICAgICAgPy5yZXBsYWNlKFwiLlwiLCBcIiNcIilcclxuICAgICAgICAucmVwbGFjZShcIixcIiwgXCIuXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoXCIjXCIsIFwiLFwiKVxyXG4gICAgICAgIC5yZXBsYWNlKC9eKC57Mn0pLywgXCIkMSBcIik7XHJcbn1cclxuXHJcblxyXG4iXX0=
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb29rdXAtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzL2xvb2t1cHMvdXRpbHMvYWdyby1sb29rdXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRztJQUMzQixRQUFRO0lBQ1IsU0FBUztJQUNULFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLGNBQWM7SUFDZCxhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixLQUFLO0NBQ1IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQW9CLEVBQUUsVUFBeUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpKLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQzNELFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssTUFB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LFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxZQUEwQixFQUFFLEtBQWE7SUFDdkUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLFlBQVk7U0FDZCxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1FBQzNDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDbEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDakIsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDakIsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGZvcm1hdENQRkNOUEpXaXRoTWFzayB9IGZyb20gJy4vY3BmLWNucGotZm9ybWF0dGVyJztcclxuaW1wb3J0IHsgQWdyb1N0cmluZ1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzJztcclxuXHJcbmNvbnN0IG51bWJlclR5cGVzID0gWydpbnRlZ2VyJywgJ2RvdWJsZSddO1xyXG5jb25zdCBudW1iZXJQYXR0ZXJuID0gL15cXGQrXFxiJC87XHJcbmNvbnN0IFlZWVlfTU1fRERfRk9STUFUID0gJ1lZWVktTU0tREQnO1xyXG5jb25zdCBMT09LVVBfRE9DVU1FTlRfRklFTERTID0gW1xyXG4gICAgJ2NucENwZicsXHJcbiAgICAnY25wakNwZicsXHJcbiAgICAnbnVtQ2djJyxcclxuICAgICdlMDAxcGVzLmNucENwZicsXHJcbiAgICAnZTAwMXBlcy5jbnBqQ3BmJyxcclxuICAgICdlMDAxcGVzLm51bUNnYycsXHJcbiAgICAnZTAwMXBlcy5jcGZDbnBqJyxcclxuICAgICdlMDAxcGVzLmNwZicsXHJcbiAgICAnZTAwMXBlcy5jbnBqJyxcclxuICAgICdlMDAxcGVzLmNnYycsXHJcbiAgICAnZTAwMXBlcy5jcGZDZ2MnLFxyXG4gICAgJ2UwMDFwZXMuY2djQ3BmJyxcclxuICAgICdjcGYnXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgbWVyZ2VVbmlxdWUgPSAoYXJyYXk6IEFycmF5PHN0cmluZz4sIG90aGVyQXJyYXk6IEFycmF5PHN0cmluZz4pID0+IGFycmF5LmNvbmNhdChvdGhlckFycmF5LmZpbHRlcigoaXRlbSkgPT4gIWFycmF5LmluY2x1ZGVzKGl0ZW0pKSk7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluZm9ybWF0aW9uID0gKHR5cGU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAndGltZSc6XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgY2FzZSAnbG9jYWxEYXRlVGltZSc6XHJcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkVmFsdWU6IGZhbHNlLCB0eXBlRXhpc3RzOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XHJcbiAgICAgICAgY2FzZSAnZG91YmxlJzpcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWRWYWx1ZTogdmFsdWUubWF0Y2gobnVtYmVyUGF0dGVybiksXHJcbiAgICAgICAgICAgICAgICB0eXBlRXhpc3RzOiBudW1iZXJUeXBlcy5pbmNsdWRlcyh0eXBlKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaXNWYWxpZFZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHR5cGVFeGlzdHM6IGZhbHNlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IGdldFN1Z2dlc3Rpb25WYWx1ZSA9IChkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSwgb3duZXJFbnRpdHk6IHN0cmluZywgdmFsdWU6IGFueSwgc2VwYXJhdG9yOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICghZGlzcGxheUZpZWxkcyB8fCBkaXNwbGF5RmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBkaXNwbGF5RmllbGRzXHJcbiAgICAgICAgLm1hcCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKExPT0tVUF9ET0NVTUVOVF9GSUVMRFMuaW5jbHVkZXMoZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Q1BGQ05QSldpdGhNYXNrKGdldFByb3AodmFsdWUsIGAke293bmVyRW50aXR5fS4ke2ZpZWxkfWApKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0UHJvcCh2YWx1ZSwgYCR7b3duZXJFbnRpdHl9LiR7ZmllbGR9YCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQoU3RyaW5nKGYpKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKHNlcGFyYXRvcik7XHJcbn07XHJcblxyXG5jb25zdCBidWlsZEVudW1DbGF1c2UgPSAobmFtZTogc3RyaW5nLCBzZWxlY3RlZDogYW55KSA9PiBgJHtuYW1lfSBlcSAnJHtzZWxlY3RlZH0nYDtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFbnVtUXVlcnkgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBtdWx0aXBsZSA9IGZhbHNlKSA9PiB7XHJcbiAgICBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgICByZXR1cm4gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYnVpbGRFbnVtQ2xhdXNlKG5hbWUsIHNlbGVjdGVkKSkuam9pbignIG9yICcpfSlgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpbHRlclN0cmluZyA9IChhbnk6IGFueSwgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB0eXBlLCBtdWx0aXBsZSB9ID0gYW55O1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChZWVlZX01NX0REX0ZPUk1BVCl9J2A7XHJcbiAgICAgICAgY2FzZSAndGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgnSEg6bW06c3MnKX0nYDtcclxuICAgICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xyXG4gICAgICAgIGNhc2UgJ2xvY2FsRGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1MnKX0nYDtcclxuICAgICAgICBjYXNlICdlbnVtJzpcclxuICAgICAgICAgICAgcmV0dXJuIGdldEVudW1RdWVyeShuYW1lLCB2YWx1ZSwgbXVsdGlwbGUpO1xyXG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgIHJldHVybiBgdXBwZXIoJHtuYW1lfSkgbGlrZSB1cHBlcignJSR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIidcIil9JScpYDtcclxuICAgICAgICBjYXNlICdsb29rdXAnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWUuaWR9J2A7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpbHRlclRva2VucyA9IChhbnk6IGFueSwgdmFsdWU6IGFueSwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHR5cGUsIGxhYmVsLCBzZWFyY2hGaWVsZHMsIG9wdGlvbnMgfSA9IGFueTtcclxuICAgIGxldCBsYWJlbFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnTCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0aW1lJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdMVFMnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbG9jYWxEYXRlVGltZSc6XHJcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0wgTFRTJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xvb2t1cCc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBzZWFyY2hGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiBnZXRQcm9wKHZhbHVlLCBmaWVsZC5uYW1lKSkuam9pbignIC0gJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2VudW0nOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBvcHRpb24udmFsdWUgPT09IGxhYmVsVmFsdWUpWzBdLmxhYmVsO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9saXN0X2dyaWRfYm9vbGVhbl90cnVlJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9saXN0X2dyaWRfYm9vbGVhbl9mYWxzZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGlkOiBuYW1lLCBsYWJlbDogYCR7bGFiZWx9OiAke2xhYmVsVmFsdWV9YCB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlc29sdmVSZWZzID0gKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgZ2V0RGF0YUZyb21SZWYgPSAocmVmOiBzdHJpbmcsIHJvb3RPYmo6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1wiKC4qPylcIlxcXS9nO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBsZXQgbWF0Y2g7XHJcblxyXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHJlZikpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG1hdGNoWzFdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYz8uW3BhcnRdLCByb290T2JqKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVzb2x2ZSA9IChvYmo6IGFueSwgcm9vdE9iajogYW55LCB2aXNpdGVkID0gbmV3IFNldDxhbnk+KCkpID0+IHtcclxuICAgICAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IHZpc2l0ZWQuaGFzKG9iaikpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2aXNpdGVkLmFkZChvYmopO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgIG9iai5mb3JFYWNoKChpdGVtKSA9PiByZXNvbHZlKGl0ZW0sIHJvb3RPYmosIHZpc2l0ZWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJyRyZWYnICYmIG9ialtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmUGF0aCA9IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCBnZXREYXRhRnJvbVJlZihyZWZQYXRoLCByb290T2JqKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9ialtrZXldLCByb290T2JqLCB2aXNpdGVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXNvbHZlKHBheWxvYWQsIHBheWxvYWQpO1xyXG5cclxuICAgIHJldHVybiBwYXlsb2FkO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUmVsYXRpb25UcmFuc2Zvcm1Db25maWcgPSB7XHJcbiAgICBvcmlnaW46IHN0cmluZztcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IGFueSkgPT4gYW55O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFwcGx5UmVsYXRpb25UcmFuc2Zvcm1zID0gKGVudGl0eTogYW55LCBvcmlnaW5FbnRpdHk6IHN0cmluZyB8IHVuZGVmaW5lZCwgcmVsYXRpb25zOiBSZWxhdGlvblRyYW5zZm9ybUNvbmZpZ1tdKSA9PiB7XHJcbiAgICByZWxhdGlvbnMuZm9yRWFjaCgoeyBvcmlnaW4sIGtleSwgdHJhbnNmb3JtIH0pID0+IHtcclxuICAgICAgICBpZiAob3JpZ2luRW50aXR5ICE9PSBvcmlnaW4gJiYgZW50aXR5W2tleV0pIHtcclxuICAgICAgICAgICAgZW50aXR5W2tleV0gPSB0cmFuc2Zvcm0oZW50aXR5W2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBlbnRpdHk7XHJcbn07XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuY29uc3QgZGF0ZVBhdHRlcm5ZWVlZTU1ERCA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgaXNWYWxpZEZpbHRlciA9ICh0eXBlOiBhbnksIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgaXNWYWxpZFZhbHVlLCB0eXBlRXhpc3RzIH0gPSBnZXRUeXBlSW5mb3JtYXRpb24odHlwZSwgdmFsdWUpO1xyXG4gICAgcmV0dXJuICEodHlwZUV4aXN0cyAmJiAhaXNWYWxpZFZhbHVlKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRQcm9wID0gKG9iajogYW55LCBwYXRoOiBhbnksIEFQUExZX0NQRkNOUEpfRklMVEVSID0gZmFsc2UpID0+IHtcclxuICAgIGxldCByID0gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChyZXN1bHQ6IGFueSwgcHJvcDogYW55KSA9PiAocmVzdWx0W3Byb3BdID09PSB1bmRlZmluZWQgPyBcIlwiIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gdHlwZW9mIHBhdGggPT09ICdzdHJpbmcnID8gcGF0aCA6ICcnO1xyXG4gICAgY29uc3QgZmllbGROYW1lID0gbm9ybWFsaXplZFBhdGguc3BsaXQoJy4nKS5wb3AoKSA/PyBub3JtYWxpemVkUGF0aDtcclxuXHJcbiAgICBpZiAoZGF0ZVBhdHRlcm5ZWVlZTU1ERC50ZXN0KHIpKSB7XHJcbiAgICAgICAgciA9IG1vbWVudChyLCBZWVlZX01NX0REX0ZPUk1BVCkuZm9ybWF0KFwiREQvTU0vWVlZWVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKEFQUExZX0NQRkNOUEpfRklMVEVSIHx8IExPT0tVUF9ET0NVTUVOVF9GSUVMRFMuaW5jbHVkZXMoZmllbGROYW1lKSkgJiYgQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQocikpIHtcclxuICAgICAgICByZXR1cm4gZm9ybWF0Q1BGQ05QSldpdGhNYXNrKHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVSZXF1ZXN0ID0gKGNvbnRlbnRzOiBhbnlbXSwgZGlzcGxheUZpZWxkczogYW55W10sIEFQUExZX0NQRkNOUEpfRklMVEVSID0gZmFsc2UpID0+IHtcclxuICAgIGNvbnN0IHIgPSBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG51bWJlclBhdHRlcm5Ub1Rlc3QgPSAvXlxcZCsoXFwuXFxkezEsMn0pPyQvO1xyXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEl0ZW0gPSB7IC4uLml0ZW0gfTtcclxuXHJcbiAgICAgICAgLy8gRm9ybWF0IGN1cnJlbmN5IGZpZWxkcyAodmxyQ290KVxyXG4gICAgICAgIFtcInZsckNvdFwiXS5mb3JFYWNoKChmaWVsZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtYXR0ZWRJdGVtW2ZpZWxkXSAmJiBudW1iZXJQYXR0ZXJuVG9UZXN0LnRlc3QoZm9ybWF0dGVkSXRlbVtmaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRJdGVtW2ZpZWxkXSA9IHBhcnNlRmxvYXQoZm9ybWF0dGVkSXRlbVtmaWVsZF0pLnRvTG9jYWxlU3RyaW5nKFwicHQtQlJcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcclxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIExPT0tVUF9ET0NVTUVOVF9GSUVMRFMuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVCeVBhdGgoZm9ybWF0dGVkSXRlbSwgZmllbGROYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgc2V0VmFsdWVCeVBhdGgoXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkSXRlbSxcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0Q1BGQ05QSldpdGhNYXNrKFN0cmluZyh2YWx1ZSkpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmZvcm1hdHRlZEl0ZW0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcChmaWVsZCA9PiBnZXRQcm9wKGZvcm1hdHRlZEl0ZW0sIGZpZWxkLCBBUFBMWV9DUEZDTlBKX0ZJTFRFUikpLmpvaW4oXCIgLSBcIilcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBnZXRWYWx1ZUJ5UGF0aChvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhdGg6IHN0cmluZyk6IHVua25vd24gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFvYmogfHwgIXBhdGgpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhbXBvIHNpbXBsZXMgb3UgY2hhdmUgbGl0ZXJhbCBleGlzdGVudGVcclxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBvYmpbcGF0aF07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FtcG8gYWdyZWdhZG86IFwiY2FtcG8xLmNhbXBvMlwiXHJcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICBpZiAoYWNjID09PSBudWxsIHx8IGFjYyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYWNjW2tleV07XHJcbiAgICB9LCBvYmopO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRWYWx1ZUJ5UGF0aChvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcclxuICAgIGlmICghb2JqIHx8ICFwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhbXBvIHNpbXBsZXMgb3UgY2hhdmUgbGl0ZXJhbCBleGlzdGVudGVcclxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoKSkge1xyXG4gICAgICAgIG9ialtwYXRoXSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYW1wbyBhZ3JlZ2FkbzogXCJjYW1wbzEuY2FtcG8yXCJcclxuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XHJcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcclxuXHJcbiAgICBpZiAoIWxhc3RLZXkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGFjYyA9PT0gbnVsbCB8fCBhY2MgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFjY1trZXldO1xyXG4gICAgfSwgb2JqKTtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGFyZ2V0W2xhc3RLZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RmlsdGVycyhmaWx0ZXJzOiBhbnlbXSwgdmFsdWU6IGFueSwgc3RhdHVzRmlsdGVyOiBib29sZWFuLCBjb2x1bW5OYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmaWx0ZXJzXHJcbiAgICAgICAgLmZpbHRlcigoeyB0eXBlIH0pID0+IGlzVmFsaWRGaWx0ZXIodHlwZSwgdmFsdWUpKVxyXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuYW1lICE9PSBcInN0YXR1c1wiKVxyXG4gICAgICAgIC5tYXAoKHsgbmFtZSwgdHlwZSB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVCeVR5cGUobmFtZSwgdmFsdWUsIHR5cGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmpvaW4oXCIgb3IgXCIpXHJcbiAgICAgICAgLmNvbmNhdChgYW5kICR7Y29sdW1uTmFtZX0gZXEgJ1ZBJyBgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnNBZHZhbmNlZChcclxuICAgIGZpbHRlcnM6IGFueVtdLFxyXG4gICAgZmlsdGVyRGF0YTogYW55LFxyXG4gICAgc3RhdHVzRmlsdGVyOiBib29sZWFuLFxyXG4gICAgY29sdW1uTmFtZTogc3RyaW5nLFxyXG4gICAgZTA3MGVtcElkOiBzdHJpbmdcclxuKSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gXCJcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0gZmlsdGVyRGF0YVtuYW1lXTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUJ5VHlwZShuYW1lLCB2YWx1ZSwgdHlwZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY29uY2F0KHN0YXR1c0ZpbHRlciA/IFtgJHtjb2x1bW5OYW1lfSBlcSAnVkEnIGFuZCBlMDcwZW1wIGVxICcke2UwNzBlbXBJZH0nYF0gOiBbXSlcclxuICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFZhbHVlQnlUeXBlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgdHlwZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWV9YDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlVGltZScpIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoKX0nYDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcodXBwZXIoJHtuYW1lfSksIHVwcGVyKCcke1N0cmluZyh2YWx1ZSkucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpfScpKWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnNXaXRob3V0U3RhdHVzKGZpbHRlcnM6IGFueVtdLCB2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpc1ZhbGlkRmlsdGVyKHR5cGUsIHZhbHVlKSlcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gXCJzdGF0dXNcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoWVlZWV9NTV9ERF9GT1JNQVQpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgY29udGFpbmluZyh1cHBlcigke25hbWV9KSwgdXBwZXIoJyR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpfScpKWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKFwiIGFuZCBcIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvVGhyZWUobnVtOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtICogMTAwMCkgLyAxMDAwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlc0FuZFdlaWdodHModG90YWw6IG51bWJlciwgbWF4UGVyY2VudGFnZTogbnVtYmVyLCBtYXhXZWlnaHQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFBlcmNlbnRhZ2VzID0gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlcyh0b3RhbCwgbWF4UGVyY2VudGFnZSk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkV2VpZ2h0cyA9IGNhbGN1bGF0ZUFkanVzdGVkV2VpZ2h0cyhjYWxjdWxhdGVkUGVyY2VudGFnZXMsIG1heFdlaWdodCk7XHJcbiAgICByZXR1cm4geyBjYWxjdWxhdGVkUGVyY2VudGFnZXMsIGNhbGN1bGF0ZWRXZWlnaHRzIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBZGp1c3RlZFBlcmNlbnRhZ2VzKHRvdGFsOiBudW1iZXIsIG1heFBlcmNlbnRhZ2U6IG51bWJlcikge1xyXG4gICAgY29uc3QgYmFzZVBlcmNlbnRhZ2UgPSByb3VuZFRvVGhyZWUobWF4UGVyY2VudGFnZSAvIHRvdGFsKTtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQZXJjZW50YWdlcyA9IEFycmF5KHRvdGFsKS5maWxsKGJhc2VQZXJjZW50YWdlKTtcclxuICAgIHJldHVybiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeShjYWxjdWxhdGVkUGVyY2VudGFnZXMsIG1heFBlcmNlbnRhZ2UpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRXZWlnaHRzKGNhbGN1bGF0ZWRQZXJjZW50YWdlczogbnVtYmVyW10sIG1heFdlaWdodDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB0b3RhbFBlcmNlbnRhZ2UgPSBjYWxjdWxhdGVkUGVyY2VudGFnZXMucmVkdWNlKChzdW0sIHBlcmNlbnRhZ2UpID0+IHN1bSArIHBlcmNlbnRhZ2UsIDApO1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFdlaWdodHMgPSBjYWxjdWxhdGVkUGVyY2VudGFnZXMubWFwKHBlcmNlbnRhZ2UgPT5cclxuICAgICAgICByb3VuZFRvVGhyZWUoKHBlcmNlbnRhZ2UgLyAxMDApICogbWF4V2VpZ2h0KVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAocm91bmRUb1RocmVlKHRvdGFsUGVyY2VudGFnZSkgPT09IDEwMCkge1xyXG4gICAgICAgIHJldHVybiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeShjYWxjdWxhdGVkV2VpZ2h0cywgbWF4V2VpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2FsY3VsYXRlZFdlaWdodHM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeSh2YWx1ZXM6IG51bWJlcltdLCB0b3RhbDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgYWRqdXN0ZWRWYWx1ZXMgPSB2YWx1ZXMuc2xpY2UoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRUb3RhbCA9IGFkanVzdGVkVmFsdWVzLnJlZHVjZSgoc3VtLCB2YWx1ZSkgPT4gc3VtICsgdmFsdWUsIDApO1xyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHJvdW5kVG9UaHJlZSh0b3RhbCAtIGN1cnJlbnRUb3RhbCk7XHJcblxyXG4gICAgaWYgKGRpZmZlcmVuY2UgIT09IDApIHtcclxuICAgICAgICBhZGp1c3RlZFZhbHVlc1swXSArPSBkaWZmZXJlbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhZGp1c3RlZFZhbHVlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJybEN1cnJlbmN5KGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLCB2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWN1cnJlbmN5UGlwZSB8fCAhdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3VycmVuY3lQaXBlXHJcbiAgICAgICAgLnRyYW5zZm9ybSh2YWx1ZSwgXCJCUkxcIiwgXCJzeW1ib2xcIiwgYDEuMi0yYClcclxuICAgICAgICA/LnJlcGxhY2UoXCIuXCIsIFwiI1wiKVxyXG4gICAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIi5cIilcclxuICAgICAgICAucmVwbGFjZShcIiNcIiwgXCIsXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL14oLnsyfSkvLCBcIiQxIFwiKTtcclxufVxyXG5cclxuXHJcbiJdfQ==