ca-components 1.3.3 → 1.3.32

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.
@@ -187,11 +187,11 @@ export class CaCustomDatetimePickersComponent {
187
187
  this.listPreview = CalendarListPreviewStringEnum.FULL_LIST;
188
188
  }
189
189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaCustomDatetimePickersComponent, deps: [{ token: i1.CalendarDateTimePickerService }], target: i0.ɵɵFactoryTarget.Component }); }
190
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaCustomDatetimePickersComponent, isStandalone: true, selector: "app-ca-custom-datetime-pickers", inputs: { dateTime: "dateTime", inputConfig: "inputConfig", calendarType: "calendarType", placeholder: "placeholder" }, outputs: { closePopover: "closePopover" }, viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true, read: ViewContainerRef }, { propertyName: "dateCalendar", first: true, predicate: CaCustomDateTimePickersDateCalendarsComponent, descendants: true }, { propertyName: "pmAmScroll", first: true, predicate: ["pmAmScroll"], descendants: true }, { propertyName: "minutesScroll", first: true, predicate: ["minutesScroll"], descendants: true }, { propertyName: "hourScroll", first: true, predicate: ["hourScroll"], descendants: true }], ngImport: i0, template: "<div class=\"temp_inp_holder\">\n <div>\n <div class=\"pickers_holder dark_picker\">\n <ng-container *ngIf=\"calendarMainType === 'date'\">\n <div class=\"date_picker\">\n <app-ca-custom-datetime-pickers-date-calendars\n [listPreview]=\"listPreview\"\n [dateTime]=\"dateTime\"\n [isMonthAndYearOnly]=\"\n _inputConfig.name === 'datepickerBankCard'\n \"\n (setListPreviewValue)=\"setListPreview($event)\"\n ></app-ca-custom-datetime-pickers-date-calendars>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"calendarMainType === 'time'\">\n <div class=\"time_picker\">\n <div class=\"time_picker_head d-flex\">\n <div class=\"selected_time ta-font-bold\">\n {{ selectedTime }}\n </div>\n <div\n class=\"sel_now ta-font-bold\"\n (click)=\"setDefaultTime()\"\n >\n Default\n </div>\n </div>\n <div class=\"time_picker_body\">\n <div class=\"picker_body_head\">\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'hours'\"\n >\n Hour\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'minutes'\"\n >\n Minute\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'times'\"\n >\n AM/PM\n </div>\n </div>\n <div class=\"picker_body\">\n <div\n #hourScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'hours'\"\n (scroll)=\"onScroll($event, 'hourScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let hour of hourTimes;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.hourScroll === indx\n }\"\n (click)=\"onScroll($event, 'hourScroll', indx)\"\n >\n {{ hour }}\n </div>\n </ng-container>\n </div>\n <div\n #minutesScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'minutes'\"\n (scroll)=\"onScroll($event, 'minutesScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let minutes of timeMinutes;\n let indx = index\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.minutesScroll === indx\n }\"\n (click)=\"\n onScroll($event, 'minutesScroll', indx)\n \"\n >\n {{ minutes }}\n </div>\n </ng-container>\n </div>\n <div\n #pmAmScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'times'\"\n (scroll)=\"onScroll($event, 'pmAmScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let when of timeOfDay;\n let indx = index\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.pmAmScroll === indx\n }\"\n (click)=\"onScroll($event, 'pmAmScroll', indx)\"\n >\n {{ when }}\n </div>\n </ng-container>\n </div>\n <div class=\"picker_line\">\n <span class=\"border_line\"></span>\n <span class=\"border_line line_2\"></span>\n </div>\n </div>\n <div class=\"picker_buttons\">\n <div\n (click)=\"closePopup()\"\n class=\"pick_button ta-font-bold\"\n >\n Cancel\n </div>\n <div\n (click)=\"setTime()\"\n class=\"pick_button set_button ta-font-bold\"\n >\n Set\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CaCustomDateTimePickersDateCalendarsComponent, selector: "app-ca-custom-datetime-pickers-date-calendars", inputs: ["listPreview", "dateTime", "isMonthAndYearOnly"], outputs: ["setListPreviewValue"] }] }); }
190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaCustomDatetimePickersComponent, isStandalone: true, selector: "ca-custom-datetime-pickers", inputs: { dateTime: "dateTime", inputConfig: "inputConfig", calendarType: "calendarType", placeholder: "placeholder" }, outputs: { closePopover: "closePopover" }, viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true, read: ViewContainerRef }, { propertyName: "dateCalendar", first: true, predicate: CaCustomDateTimePickersDateCalendarsComponent, descendants: true }, { propertyName: "pmAmScroll", first: true, predicate: ["pmAmScroll"], descendants: true }, { propertyName: "minutesScroll", first: true, predicate: ["minutesScroll"], descendants: true }, { propertyName: "hourScroll", first: true, predicate: ["hourScroll"], descendants: true }], ngImport: i0, template: "<div class=\"temp_inp_holder\">\n <div>\n <div class=\"pickers_holder dark_picker\">\n <ng-container *ngIf=\"calendarMainType === 'date'\">\n <div class=\"date_picker\">\n <app-ca-custom-datetime-pickers-date-calendars\n [listPreview]=\"listPreview\"\n [dateTime]=\"dateTime\"\n [isMonthAndYearOnly]=\"\n _inputConfig.name === 'datepickerBankCard'\n \"\n (setListPreviewValue)=\"setListPreview($event)\"\n ></app-ca-custom-datetime-pickers-date-calendars>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"calendarMainType === 'time'\">\n <div class=\"time_picker\">\n <div class=\"time_picker_head d-flex\">\n <div class=\"selected_time ta-font-bold\">\n {{ selectedTime }}\n </div>\n <div\n class=\"sel_now ta-font-bold\"\n (click)=\"setDefaultTime()\"\n >\n Default\n </div>\n </div>\n <div class=\"time_picker_body\">\n <div class=\"picker_body_head\">\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'hours'\"\n >\n Hour\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'minutes'\"\n >\n Minute\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'times'\"\n >\n AM/PM\n </div>\n </div>\n <div class=\"picker_body\">\n <div\n #hourScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'hours'\"\n (scroll)=\"onScroll($event, 'hourScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let hour of hourTimes;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.hourScroll === indx\n }\"\n (click)=\"onScroll($event, 'hourScroll', indx)\"\n >\n {{ hour }}\n </div>\n </ng-container>\n </div>\n <div\n #minutesScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'minutes'\"\n (scroll)=\"onScroll($event, 'minutesScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let minutes of timeMinutes;\n let indx = index\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.minutesScroll === indx\n }\"\n (click)=\"\n onScroll($event, 'minutesScroll', indx)\n \"\n >\n {{ minutes }}\n </div>\n </ng-container>\n </div>\n <div\n #pmAmScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'times'\"\n (scroll)=\"onScroll($event, 'pmAmScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let when of timeOfDay;\n let indx = index\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.pmAmScroll === indx\n }\"\n (click)=\"onScroll($event, 'pmAmScroll', indx)\"\n >\n {{ when }}\n </div>\n </ng-container>\n </div>\n <div class=\"picker_line\">\n <span class=\"border_line\"></span>\n <span class=\"border_line line_2\"></span>\n </div>\n </div>\n <div class=\"picker_buttons\">\n <div\n (click)=\"closePopup()\"\n class=\"pick_button ta-font-bold\"\n >\n Cancel\n </div>\n <div\n (click)=\"setTime()\"\n class=\"pick_button set_button ta-font-bold\"\n >\n Set\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CaCustomDateTimePickersDateCalendarsComponent, selector: "app-ca-custom-datetime-pickers-date-calendars", inputs: ["listPreview", "dateTime", "isMonthAndYearOnly"], outputs: ["setListPreviewValue"] }] }); }
191
191
  }
192
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaCustomDatetimePickersComponent, decorators: [{
193
193
  type: Component,
194
- args: [{ selector: 'app-ca-custom-datetime-pickers', standalone: true, imports: [
194
+ args: [{ selector: 'ca-custom-datetime-pickers', standalone: true, imports: [
195
195
  CommonModule,
196
196
  FormsModule,
197
197
  CaCustomDateTimePickersDateCalendarsComponent,
@@ -222,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
222
222
  }], placeholder: [{
223
223
  type: Input
224
224
  }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBR2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUztBQUNULE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUs1QixhQUFhO0FBQ2IsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sNEdBQTRHLENBQUM7QUFFM0ssWUFBWTtBQUNaLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBTXJHLFFBQVE7QUFDUixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQWF4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QUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUUvQixXQUFXO3NCQUF2QixLQUFLO2dCQVlJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLDZDQUE2QztnQkFFL0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNLLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDRCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBbUNuQixZQUFZO3NCQURmLEtBQUs7Z0JBU0YsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb21lbnRcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuLy8gc2VydmljZXNcbmltcG9ydCB7IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy5jb21wb25lbnQnO1xuXG4vLyBjb25zdGFudHNcbmltcG9ydCB7IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzL2N1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbnN0YW50cyc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcbmltcG9ydCB7IFNjcm9sbFR5cGUgfSBmcm9tICcuL21vZGVscy9zY3JvbGwtdHlwZS5tb2RlbCc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2EtaW5wdXQvZW51bXMvaW5wdXQtY29uZmlnLW5hbWUtc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgQ2FsZW5kYXJUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItdHlwZS1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBDYWxlbmRhckxpc3RQcmV2aWV3U3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItbGlzdC1wcmV2aWV3LXN0cmluZy5lbnVtJztcbmltcG9ydCB7IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2NhbGVuZGFyLXNjcm9sbC10eXBlLXN0cmluZy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDYUN1c3RvbURhdGVUaW1lUGlja2Vyc0RhdGVDYWxlbmRhcnNDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgQElucHV0KCkgZGF0ZVRpbWUhOiBEYXRlO1xuICBAVmlld0NoaWxkKCdyZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcmVmITogVmlld0NvbnRhaW5lclJlZjtcbiAgcHVibGljIF9pbnB1dENvbmZpZyE6IElDYUlucHV0O1xuICBASW5wdXQoKSBzZXQgaW5wdXRDb25maWcoY29uZmlnOiBJQ2FJbnB1dCkge1xuICAgIHRoaXMuX2lucHV0Q29uZmlnID0gY29uZmlnO1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2lucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgKVxuICAgICAgdGhpcy5saXN0UHJldmlldyA9IENhbGVuZGFyTGlzdFByZXZpZXdTdHJpbmdFbnVtLk1PTlRIX0xJU1Q7XG5cbiAgICBpZiAodGhpcy5faW5wdXRDb25maWcubWludXRlc0dhcEZpdmUpXG4gICAgICB0aGlzLnRpbWVNaW51dGVzID0gQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLnRpbWVNaW51dGVzR2FwRml2ZTtcbiAgICBlbHNlIHRoaXMudGltZU1pbnV0ZXMgPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU1pbnV0ZXM7XG4gIH1cblxuICBAT3V0cHV0KCkgY2xvc2VQb3BvdmVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZChDYUN1c3RvbURhdGVUaW1lUGlja2Vyc0RhdGVDYWxlbmRhcnNDb21wb25lbnQpXG4gIGRhdGVDYWxlbmRhciE6IENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncG1BbVNjcm9sbCcpIHBtQW1TY3JvbGwhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtaW51dGVzU2Nyb2xsJykgbWludXRlc1Njcm9sbCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2hvdXJTY3JvbGwnKSBob3VyU2Nyb2xsITogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2VsZWN0ZWREYXRlVGltZSE6IHN0cmluZztcbiAgcHVibGljIGNhbGVuZGFyTWFpblR5cGUhOiBzdHJpbmc7XG4gIHB1YmxpYyBvdXRwdXRUeXBlITogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgcHVibGljIGN1cnJlbnRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gIHB1YmxpYyBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcbiAgcHVibGljIGN1cnJlbnREYXk6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpO1xuICBwdWJsaWMgbGlzdFByZXZpZXc6IHN0cmluZyA9IENhbGVuZGFyTGlzdFByZXZpZXdTdHJpbmdFbnVtLkZVTExfTElTVDtcbiAgcHVibGljIHRpbWVNaW51dGVzITogc3RyaW5nW107XG4gIHB1YmxpYyBtb250aEFycmF5OiBudW1iZXJbXSA9IG5ldyBBcnJheSgxMilcbiAgICAuZmlsbCgwKVxuICAgIC5tYXAoKF8sIGluZHgpID0+IGluZHggKyAxKTtcbiAgcHVibGljIG1vbnRoRGF5TGlzdDogbnVtYmVyW10gPSBuZXcgQXJyYXkoMzEpXG4gICAgLmZpbGwoMClcbiAgICAubWFwKChfLCBpbmR4KSA9PiBpbmR4ICsgMSk7XG4gIHB1YmxpYyB5ZWFyc0xpc3Q6IChzdHJpbmcgfCBudW1iZXIpW10gPSBuZXcgQXJyYXkoMTAwKVxuICAgIC5maWxsKDApXG4gICAgLm1hcCgoXywgaWR4KSA9PiAoaWR4IDwgMTAgPyAnMCcgKyBpZHggOiBpZHgpKTtcbiAgcHVibGljIHNjcm9sbFRpbWVyITogTm9kZUpTLlRpbWVvdXQgfCBudW1iZXI7XG4gIHB1YmxpYyBob3ZlcmVkSXRlbSE6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBpc0lucHV0Rm9jdXMhOiBib29sZWFuO1xuICBwdWJsaWMgbW9udGhOYW1lczogc3RyaW5nW10gPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMubW9udGhOYW1lcztcbiAgcHVibGljIGhvdXJUaW1lczogbnVtYmVyW10gPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMuaG91clRpbWVzO1xuICBwdWJsaWMgc2Nyb2xsVHlwZXM6IFNjcm9sbFR5cGUgPVxuICAgIEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5kZWZhdWx0U2Nyb2xsVHlwZXM7XG4gIHB1YmxpYyBzZWxlY3RlZFRpbWU6IHN0cmluZyA9XG4gICAgQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRTZWxlY3RlZFRpbWU7XG4gIHB1YmxpYyB0aW1lT2ZEYXk6IHN0cmluZ1tdID0gQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLnRpbWVPZkRheTtcblxuICBwdWJsaWMgcHJldmlvdXNSYW5nZVNpZGUhOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhckRhdGVUaW1lUGlja2VyU2VydmljZSkge31cblxuICBASW5wdXQoKVxuICBzZXQgY2FsZW5kYXJUeXBlKGNhbGVuZGFyVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jYWxlbmRhck1haW5UeXBlID0gY2FsZW5kYXJUeXBlO1xuICAgIGlmIChjYWxlbmRhclR5cGUgPT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSlcbiAgICAgIHRoaXMub3V0cHV0VHlwZSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5kZWZhdWx0T3V0cHV0VHlwZVRpbWU7XG4gICAgZWxzZSB0aGlzLm91dHB1dFR5cGUgPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMuZGVmYXVsdE91dHB1dFR5cGVEYXRlO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUgPSBwbGFjZWhvbGRlcjtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERhdGVDaGFuZ2VkTGlzdGVuZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFRpbWVWYWx1ZSgpO1xuICAgIHRoaXMuY2hhbmdlT3BlbmVkKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdERhdGVDaGFuZ2VkTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuZGF0ZUNoYW5nZWQuc3Vic2NyaWJlKChkYXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5jYWxlbmRhck1haW5UeXBlICE9PSBDYWxlbmRhclR5cGVTdHJpbmdFbnVtLlRJTUUpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRUeXBlWzBdID0gZGF0ZVswXTtcbiAgICAgICAgdGhpcy5vdXRwdXRUeXBlWzJdID0gZGF0ZVsxXTtcbiAgICAgICAgdGhpcy5vdXRwdXRUeXBlWzRdID0gZGF0ZVsyXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVUaW1lID0gdGhpcy5jcmVhdGVTdHJpbmdGcm9tT3V0cHV0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VGltZVZhbHVlKCkge1xuICAgIGNvbnN0IGRhdGVJbnB1dEFycmF5ID0gbW9tZW50KHRoaXMuZGF0ZVRpbWUpLmZvcm1hdCgnSC9tbS9BJykuc3BsaXQoJy8nKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA9IHRoaXMuaG91clRpbWVzLmluZGV4T2YoXG4gICAgICAgIHBhcnNlSW50KGRhdGVJbnB1dEFycmF5WzBdKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbCA9IHRoaXMudGltZU1pbnV0ZXMuaW5kZXhPZihcbiAgICAgICAgZGF0ZUlucHV0QXJyYXlbMV1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCA9IGRhdGVJbnB1dEFycmF5WzJdID09PSAnQU0nID8gMCA6IDE7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGlzdFByZXZpZXcodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubGlzdFByZXZpZXcgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpbnB1dEluRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlucHV0Qmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZU9wZW5lZCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmlzSW5wdXRGb2N1cyA9IGU7XG4gICAgLy8gaWYgKGUpIHtcbiAgICBpZiAodGhpcy5jYWxlbmRhck1haW5UeXBlID09PSBDYWxlbmRhclR5cGVTdHJpbmdFbnVtLlRJTUUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhvdXJTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCAqIDIyO1xuICAgICAgICB0aGlzLm1pbnV0ZXNTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbCAqIDIyO1xuICAgICAgICB0aGlzLnBtQW1TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCAqIDIyO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0ZXN0ID0gYCR7XG4gICAgICAgIHRoaXMuZGF0ZVRpbWUuZ2V0TW9udGgoKSArIDFcbiAgICAgIH0vJHt0aGlzLmRhdGVUaW1lLmdldERhdGUoKX0vJHt0aGlzLmRhdGVUaW1lLmdldEZ1bGxZZWFyKCl9YDtcblxuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uuc2Nyb2xsVG9EYXRlLm5leHQoXG4gICAgICAgIGAke1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWUuZ2V0TW9udGgoKSArIDFcbiAgICAgICAgfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RGF0ZSgpfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RnVsbFllYXIoKX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMub3V0cHV0VHlwZVswXSA9IHRoaXMuaG91clRpbWVzW3RoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbF07XG4gICAgdGhpcy5vdXRwdXRUeXBlWzJdID0gdGhpcy50aW1lTWludXRlc1t0aGlzLnNjcm9sbFR5cGVzLm1pbnV0ZXNTY3JvbGxdO1xuICAgIHRoaXMub3V0cHV0VHlwZVs0XSA9IHRoaXMudGltZU9mRGF5W3RoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbF07XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUgPSB0aGlzLmNyZWF0ZVN0cmluZ0Zyb21PdXRwdXQoKTtcblxuICAgIGxldCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuZGF0ZUNoYW5nZWQubmV4dChcbiAgICAgIG5ldyBEYXRlKGN1cnJlbnREYXRlICsgJyAnICsgdGhpcy5zZWxlY3RlZERhdGVUaW1lKVxuICAgICk7XG5cbiAgICB0aGlzLmNsb3NlUG9wb3Zlci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGVmYXVsdFRpbWUoKTogdm9pZCB7XG4gICAgbGV0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuZGF0ZUNoYW5nZWQubmV4dChuZXcgRGF0ZShjdXJyZW50RGF0ZSArICcgMDg6MDAnKSk7XG5cbiAgICB0aGlzLmNsb3NlUG9wb3Zlci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQb3B1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlUG9wb3Zlci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU3RyaW5nRnJvbU91dHB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm91dHB1dFR5cGUuam9pbignJyk7XG4gIH1cblxuICBwdWJsaWMgb25TY3JvbGwoXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIHR5cGU6IGtleW9mIFNjcm9sbFR5cGUsXG4gICAgaW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sRnJvbVRvcCA9IE1hdGguZmxvb3IoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wKTtcbiAgICBjb25zdCBzY3JvbGxJbmRleCA9IGluZGV4ID09PSBudWxsID8gTWF0aC5mbG9vcihzY3JvbEZyb21Ub3AgLyAyMikgOiBpbmRleDtcbiAgICBjb25zdCBzY3JvbGxSZW1haW5pbmcgPSBzY3JvbEZyb21Ub3AgJSAyMjtcbiAgICBjbGVhckludGVydmFsKHRoaXMuc2Nyb2xsVGltZXIpO1xuICAgIHRoaXMuc2Nyb2xsVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzY3JvbGxSZW1haW5pbmcgPCAxMSAmJiBpbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3AgPSBzY3JvbGxJbmRleCAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICg8SFRNTEVsZW1lbnQ+KDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpLnBhcmVudE5vZGUpLnNjcm9sbFRvcCA9XG4gICAgICAgICAgc2Nyb2xsSW5kZXggKiAyMjtcbiAgICAgICAgdGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA9IHNjcm9sbEluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wID0gKHNjcm9sbEluZGV4ICsgMSkgKiAyMjtcbiAgICAgICAgdGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA9IHNjcm9sbEluZGV4ICsgMTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGVja0ZvclNjcm9sbGVkVHlwZSh0eXBlKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrRm9yU2Nyb2xsZWRUeXBlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSBDYWxlbmRhclNjcm9sbFR5cGVTdHJpbmdFbnVtLkhPVVJTX1NDUk9MTCkge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsVHlwZXNbdHlwZV0gPj0gMTIpIHtcbiAgICAgICAgdGhpcy5wbUFtU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMjI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBtQW1TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLnBtQW1TY3JvbGwgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBDYWxlbmRhclNjcm9sbFR5cGVTdHJpbmdFbnVtLlBNX0FNX1NDUk9MTCkge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsVHlwZXNbdHlwZV0gPT09IDApIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA+PSAxMikge1xuICAgICAgICAgIHRoaXMuaG91clNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgICAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIC0gMTIpICogMjI7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID0gTWF0aC5mbG9vcihcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCAtIDEyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA8IDEyKSB7XG4gICAgICAgICAgdGhpcy5ob3VyU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICAgICAgICh0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgKyAxMikgKiAyMjtcbiAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsICsgMTJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSBgJHt0aGlzLmhvdXJUaW1lc1t0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGxdfToke1xuICAgICAgdGhpcy50aW1lTWludXRlc1t0aGlzLnNjcm9sbFR5cGVzLm1pbnV0ZXNTY3JvbGxdXG4gICAgfSAke3RoaXMudGltZU9mRGF5W3RoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbF19YDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5saXN0UHJldmlldyA9IENhbGVuZGFyTGlzdFByZXZpZXdTdHJpbmdFbnVtLkZVTExfTElTVDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRlbXBfaW5wX2hvbGRlclwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJzX2hvbGRlciBkYXJrX3BpY2tlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGVuZGFyTWFpblR5cGUgPT09ICdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlX3BpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLWRhdGUtY2FsZW5kYXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGlzdFByZXZpZXddPVwibGlzdFByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGVUaW1lXT1cImRhdGVUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc01vbnRoQW5kWWVhck9ubHldPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyQmFua0NhcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNldExpc3RQcmV2aWV3VmFsdWUpPVwic2V0TGlzdFByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FsZW5kYXJNYWluVHlwZSA9PT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVfcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lX3BpY2tlcl9oZWFkIGQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkX3RpbWUgdGEtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRUaW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbF9ub3cgdGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RGVmYXVsdFRpbWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZV9waWNrZXJfYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlcl9ib2R5X2hlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJob3ZlcmVkSXRlbSA9PT0gJ2hvdXJzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhLWZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaG92ZXJlZEl0ZW0gPT09ICdtaW51dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJob3ZlcmVkSXRlbSA9PT0gJ3RpbWVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTS9QTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNob3VyU2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJob3ZlcmVkSXRlbSA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdmVyKT1cImhvdmVyZWRJdGVtID0gJ2hvdXJzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50LCAnaG91clNjcm9sbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzY3JvbGxfcGlja2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaG91ciBvZiBob3VyVGltZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZHggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9pdGVtIHRhLWZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVfaXRlbSB0YS1mb250LWJvbGQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA9PT0gaW5keFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNjcm9sbCgkZXZlbnQsICdob3VyU2Nyb2xsJywgaW5keClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhvdXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNtaW51dGVzU2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJob3ZlcmVkSXRlbSA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdmVyKT1cImhvdmVyZWRJdGVtID0gJ21pbnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQsICdtaW51dGVzU2Nyb2xsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9waWNrZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW51dGVzIG9mIHRpbWVNaW51dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmR4ID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9pdGVtIHRhLWZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVfaXRlbSB0YS1mb250LWJvbGQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbCA9PT0gaW5keFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY3JvbGwoJGV2ZW50LCAnbWludXRlc1Njcm9sbCcsIGluZHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtaW51dGVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcG1BbVNjcm9sbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdXQpPVwiaG92ZXJlZEl0ZW0gPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJob3ZlcmVkSXRlbSA9ICd0aW1lcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudCwgJ3BtQW1TY3JvbGwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX3BpY2tlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdoZW4gb2YgdGltZU9mRGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmR4ID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9pdGVtIHRhLWZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVfaXRlbSB0YS1mb250LWJvbGQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCA9PT0gaW5keFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNjcm9sbCgkZXZlbnQsICdwbUFtU2Nyb2xsJywgaW5keClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHdoZW4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyX2xpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3JkZXJfbGluZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3JkZXJfbGluZSBsaW5lXzJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja19idXR0b24gdGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja19idXR0b24gc2V0X2J1dHRvbiB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBR2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUztBQUNULE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUs1QixhQUFhO0FBQ2IsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sNEdBQTRHLENBQUM7QUFFM0ssWUFBWTtBQUNaLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBTXJHLFFBQVE7QUFDUixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQWF4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QUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUUvQixXQUFXO3NCQUF2QixLQUFLO2dCQVlJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLDZDQUE2QztnQkFFL0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNLLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDRCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBbUNuQixZQUFZO3NCQURmLEtBQUs7Z0JBU0YsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb21lbnRcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuLy8gc2VydmljZXNcbmltcG9ydCB7IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy5jb21wb25lbnQnO1xuXG4vLyBjb25zdGFudHNcbmltcG9ydCB7IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzL2N1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbnN0YW50cyc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcbmltcG9ydCB7IFNjcm9sbFR5cGUgfSBmcm9tICcuL21vZGVscy9zY3JvbGwtdHlwZS5tb2RlbCc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2EtaW5wdXQvZW51bXMvaW5wdXQtY29uZmlnLW5hbWUtc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgQ2FsZW5kYXJUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItdHlwZS1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBDYWxlbmRhckxpc3RQcmV2aWV3U3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItbGlzdC1wcmV2aWV3LXN0cmluZy5lbnVtJztcbmltcG9ydCB7IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2NhbGVuZGFyLXNjcm9sbC10eXBlLXN0cmluZy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FDdXN0b21EYXRldGltZVBpY2tlcnNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKSBkYXRlVGltZSE6IERhdGU7XG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSByZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwdWJsaWMgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gIEBJbnB1dCgpIHNldCBpbnB1dENvbmZpZyhjb25maWc6IElDYUlucHV0KSB7XG4gICAgdGhpcy5faW5wdXRDb25maWcgPSBjb25maWc7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICApXG4gICAgICB0aGlzLmxpc3RQcmV2aWV3ID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uTU9OVEhfTElTVDtcblxuICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZy5taW51dGVzR2FwRml2ZSlcbiAgICAgIHRoaXMudGltZU1pbnV0ZXMgPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU1pbnV0ZXNHYXBGaXZlO1xuICAgIGVsc2UgdGhpcy50aW1lTWludXRlcyA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy50aW1lTWludXRlcztcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZVBvcG92ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudClcbiAgZGF0ZUNhbGVuZGFyITogQ2FDdXN0b21EYXRlVGltZVBpY2tlcnNEYXRlQ2FsZW5kYXJzQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdwbUFtU2Nyb2xsJykgcG1BbVNjcm9sbCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21pbnV0ZXNTY3JvbGwnKSBtaW51dGVzU2Nyb2xsITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaG91clNjcm9sbCcpIGhvdXJTY3JvbGwhOiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVUaW1lITogc3RyaW5nO1xuICBwdWJsaWMgY2FsZW5kYXJNYWluVHlwZSE6IHN0cmluZztcbiAgcHVibGljIG91dHB1dFR5cGUhOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBwdWJsaWMgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgcHVibGljIGN1cnJlbnRNb250aDogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRNb250aCgpO1xuICBwdWJsaWMgY3VycmVudERheTogbnVtYmVyID0gbmV3IERhdGUoKS5nZXREYXRlKCk7XG4gIHB1YmxpYyBsaXN0UHJldmlldzogc3RyaW5nID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uRlVMTF9MSVNUO1xuICBwdWJsaWMgdGltZU1pbnV0ZXMhOiBzdHJpbmdbXTtcbiAgcHVibGljIG1vbnRoQXJyYXk6IG51bWJlcltdID0gbmV3IEFycmF5KDEyKVxuICAgIC5maWxsKDApXG4gICAgLm1hcCgoXywgaW5keCkgPT4gaW5keCArIDEpO1xuICBwdWJsaWMgbW9udGhEYXlMaXN0OiBudW1iZXJbXSA9IG5ldyBBcnJheSgzMSlcbiAgICAuZmlsbCgwKVxuICAgIC5tYXAoKF8sIGluZHgpID0+IGluZHggKyAxKTtcbiAgcHVibGljIHllYXJzTGlzdDogKHN0cmluZyB8IG51bWJlcilbXSA9IG5ldyBBcnJheSgxMDApXG4gICAgLmZpbGwoMClcbiAgICAubWFwKChfLCBpZHgpID0+IChpZHggPCAxMCA/ICcwJyArIGlkeCA6IGlkeCkpO1xuICBwdWJsaWMgc2Nyb2xsVGltZXIhOiBOb2RlSlMuVGltZW91dCB8IG51bWJlcjtcbiAgcHVibGljIGhvdmVyZWRJdGVtITogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGlzSW5wdXRGb2N1cyE6IGJvb2xlYW47XG4gIHB1YmxpYyBtb250aE5hbWVzOiBzdHJpbmdbXSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5tb250aE5hbWVzO1xuICBwdWJsaWMgaG91clRpbWVzOiBudW1iZXJbXSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5ob3VyVGltZXM7XG4gIHB1YmxpYyBzY3JvbGxUeXBlczogU2Nyb2xsVHlwZSA9XG4gICAgQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRTY3JvbGxUeXBlcztcbiAgcHVibGljIHNlbGVjdGVkVGltZTogc3RyaW5nID1cbiAgICBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMuZGVmYXVsdFNlbGVjdGVkVGltZTtcbiAgcHVibGljIHRpbWVPZkRheTogc3RyaW5nW10gPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU9mRGF5O1xuXG4gIHB1YmxpYyBwcmV2aW91c1JhbmdlU2lkZSE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlKSB7fVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjYWxlbmRhclR5cGUoY2FsZW5kYXJUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhbGVuZGFyTWFpblR5cGUgPSBjYWxlbmRhclR5cGU7XG4gICAgaWYgKGNhbGVuZGFyVHlwZSA9PT0gQ2FsZW5kYXJUeXBlU3RyaW5nRW51bS5USU1FKVxuICAgICAgdGhpcy5vdXRwdXRUeXBlID0gQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRPdXRwdXRUeXBlVGltZTtcbiAgICBlbHNlIHRoaXMub3V0cHV0VHlwZSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5kZWZhdWx0T3V0cHV0VHlwZURhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlVGltZSA9IHBsYWNlaG9sZGVyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0RGF0ZUNoYW5nZWRMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGltZVZhbHVlKCk7XG4gICAgdGhpcy5jaGFuZ2VPcGVuZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0RGF0ZUNoYW5nZWRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbGVuZGFyTWFpblR5cGUgIT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSkge1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbMF0gPSBkYXRlWzBdO1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbMl0gPSBkYXRlWzFdO1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbNF0gPSBkYXRlWzJdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUgPSB0aGlzLmNyZWF0ZVN0cmluZ0Zyb21PdXRwdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUaW1lVmFsdWUoKSB7XG4gICAgY29uc3QgZGF0ZUlucHV0QXJyYXkgPSBtb21lbnQodGhpcy5kYXRlVGltZSkuZm9ybWF0KCdIL21tL0EnKS5zcGxpdCgnLycpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID0gdGhpcy5ob3VyVGltZXMuaW5kZXhPZihcbiAgICAgICAgcGFyc2VJbnQoZGF0ZUlucHV0QXJyYXlbMF0pXG4gICAgICApO1xuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsID0gdGhpcy50aW1lTWludXRlcy5pbmRleE9mKFxuICAgICAgICBkYXRlSW5wdXRBcnJheVsxXVxuICAgICAgKTtcblxuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID0gZGF0ZUlucHV0QXJyYXlbMl0gPT09ICdBTScgPyAwIDogMTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaXN0UHJldmlldyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5saXN0UHJldmlldyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGlucHV0SW5Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlT3BlbmVkKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuaXNJbnB1dEZvY3VzID0gZTtcbiAgICAvLyBpZiAoZSkge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyTWFpblR5cGUgPT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG91clNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsICogMjI7XG4gICAgICAgIHRoaXMubWludXRlc1Njcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsICogMjI7XG4gICAgICAgIHRoaXMucG1BbVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsICogMjI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRlc3QgPSBgJHtcbiAgICAgICAgdGhpcy5kYXRlVGltZS5nZXRNb250aCgpICsgMVxuICAgICAgfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RGF0ZSgpfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RnVsbFllYXIoKX1gO1xuXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5zY3JvbGxUb0RhdGUubmV4dChcbiAgICAgICAgYCR7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZS5nZXRNb250aCgpICsgMVxuICAgICAgICB9LyR7dGhpcy5kYXRlVGltZS5nZXREYXRlKCl9LyR7dGhpcy5kYXRlVGltZS5nZXRGdWxsWWVhcigpfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRwdXRUeXBlWzBdID0gdGhpcy5ob3VyVGltZXNbdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsXTtcbiAgICB0aGlzLm91dHB1dFR5cGVbMl0gPSB0aGlzLnRpbWVNaW51dGVzW3RoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbF07XG4gICAgdGhpcy5vdXRwdXRUeXBlWzRdID0gdGhpcy50aW1lT2ZEYXlbdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsXTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlVGltZSA9IHRoaXMuY3JlYXRlU3RyaW5nRnJvbU91dHB1dCgpO1xuXG4gICAgbGV0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KFxuICAgICAgbmV3IERhdGUoY3VycmVudERhdGUgKyAnICcgKyB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUpXG4gICAgKTtcblxuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0VGltZSgpOiB2b2lkIHtcbiAgICBsZXQgY3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KG5ldyBEYXRlKGN1cnJlbnREYXRlICsgJyAwODowMCcpKTtcblxuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBvcHVwKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdHJpbmdGcm9tT3V0cHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0VHlwZS5qb2luKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbChcbiAgICBldmVudDogRXZlbnQsXG4gICAgdHlwZToga2V5b2YgU2Nyb2xsVHlwZSxcbiAgICBpbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xGcm9tVG9wID0gTWF0aC5mbG9vcigoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3ApO1xuICAgIGNvbnN0IHNjcm9sbEluZGV4ID0gaW5kZXggPT09IG51bGwgPyBNYXRoLmZsb29yKHNjcm9sRnJvbVRvcCAvIDIyKSA6IGluZGV4O1xuICAgIGNvbnN0IHNjcm9sbFJlbWFpbmluZyA9IHNjcm9sRnJvbVRvcCAlIDIyO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxUaW1lcik7XG4gICAgdGhpcy5zY3JvbGxUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNjcm9sbFJlbWFpbmluZyA8IDExICYmIGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCA9IHNjcm9sbEluZGV4ICogMjI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXNbdHlwZV0gPSBzY3JvbGxJbmRleDtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgKDxIVE1MRWxlbWVudD4oPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkucGFyZW50Tm9kZSkuc2Nyb2xsVG9wID1cbiAgICAgICAgICBzY3JvbGxJbmRleCAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3AgPSAoc2Nyb2xsSW5kZXggKyAxKSAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXggKyAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoZWNrRm9yU2Nyb2xsZWRUeXBlKHR5cGUpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tGb3JTY3JvbGxlZFR5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0uSE9VUlNfU0NST0xMKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA+PSAxMikge1xuICAgICAgICB0aGlzLnBtQW1TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAyMjtcbiAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG1BbVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0uUE1fQU1fU0NST0xMKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA9PT0gMCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID49IDEyKSB7XG4gICAgICAgICAgdGhpcy5ob3VyU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICAgICAgICh0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgLSAxMikgKiAyMjtcbiAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIC0gMTJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIDwgMTIpIHtcbiAgICAgICAgICB0aGlzLmhvdXJTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgICAgKHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCArIDEyKSAqIDIyO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgKyAxMlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IGAke3RoaXMuaG91clRpbWVzW3RoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbF19OiR7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzW3RoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbF1cbiAgICB9ICR7dGhpcy50aW1lT2ZEYXlbdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsXX1gO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmxpc3RQcmV2aWV3ID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uRlVMTF9MSVNUO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGVtcF9pbnBfaG9sZGVyXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlcnNfaG9sZGVyIGRhcmtfcGlja2VyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FsZW5kYXJNYWluVHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVfcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMtZGF0ZS1jYWxlbmRhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0UHJldmlld109XCJsaXN0UHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZVRpbWVdPVwiZGF0ZVRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTW9udGhBbmRZZWFyT25seV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXJCYW5rQ2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2V0TGlzdFByZXZpZXdWYWx1ZSk9XCJzZXRMaXN0UHJldmlldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLWRhdGUtY2FsZW5kYXJzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWxlbmRhck1haW5UeXBlID09PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZV9waWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVfcGlja2VyX2hlYWQgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRfdGltZSB0YS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsX25vdyB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREZWZhdWx0VGltZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lX3BpY2tlcl9ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyX2JvZHlfaGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhvdmVyZWRJdGVtID09PSAnaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJob3ZlcmVkSXRlbSA9PT0gJ21pbnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhvdmVyZWRJdGVtID09PSAndGltZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNL1BNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdXJTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cImhvdmVyZWRJdGVtID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZEl0ZW0gPSAnaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQsICdob3VyU2Nyb2xsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9waWNrZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBob3VyIG9mIGhvdXJUaW1lcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID09PSBpbmR4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsKCRldmVudCwgJ2hvdXJTY3JvbGwnLCBpbmR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI21pbnV0ZXNTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cImhvdmVyZWRJdGVtID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZEl0ZW0gPSAnbWludXRlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudCwgJ21pbnV0ZXNTY3JvbGwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX3BpY2tlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgb2YgdGltZU1pbnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZHggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsID09PSBpbmR4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbCgkZXZlbnQsICdtaW51dGVzU2Nyb2xsJywgaW5keClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1pbnV0ZXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwbUFtU2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJob3ZlcmVkSXRlbSA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdmVyKT1cImhvdmVyZWRJdGVtID0gJ3RpbWVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50LCAncG1BbVNjcm9sbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzY3JvbGxfcGlja2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2hlbiBvZiB0aW1lT2ZEYXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZHggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID09PSBpbmR4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsKCRldmVudCwgJ3BtQW1TY3JvbGwnLCBpbmR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgd2hlbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvcmRlcl9saW5lXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvcmRlcl9saW5lIGxpbmVfMlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlcl9idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQb3B1cCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrX2J1dHRvbiB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrX2J1dHRvbiBzZXRfYnV0dG9uIHRhLWZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,7 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { ReactiveFormsModule } from '@angular/forms';
3
3
  import { Component, EventEmitter, Input, Output, Self, ViewChild, ViewEncapsulation, HostListener, } from '@angular/core';
4
- import { distinctUntilChanged, filter, of, Subject, switchMap, takeUntil, throttleTime, } from 'rxjs';
4
+ import { catchError, debounceTime, distinctUntilChanged, filter, of, Subject, switchMap, takeUntil, tap, } from 'rxjs';
5
5
  import { FormsModule, } from '@angular/forms';
6
6
  // Components
7
7
  import { CaInputDropdownComponent } from '../ca-input-dropdown/ca-input-dropdown.component';
@@ -13,6 +13,7 @@ import { InputAddressCommandsStringEnum } from './enums/input-address-commands-s
13
13
  import { InputAddressStopTypesStringEnum } from './enums/input-address-stop-types-string.enum';
14
14
  import { InputAddressTypeStringEnum } from './enums/input-address-type-string.enum';
15
15
  import { InputAddressLayersStringEnum } from './enums/input-address-layers-string.enum';
16
+ import { eInputBasicString } from './enums/input-address-basic-string.enum';
16
17
  import { CaAppTooltipV2Component } from '../ca-app-tooltip-v2/ca-app-tooltip-v2.component';
17
18
  import { HttpClientModule } from '@angular/common/http';
18
19
  import * as i0 from "@angular/core";
@@ -25,18 +26,19 @@ export class CaInputAddressDropdownComponent {
25
26
  this.checkSearchLayers(value);
26
27
  }
27
28
  set activeAddress(value) {
28
- this._activeAddress = value;
29
- let isValid = true;
30
- if (this.searchLayers[0] === InputAddressLayersStringEnum.ADDRESS) {
31
- const address = value?.address;
32
- if (address) {
33
- isValid = this.checkAddressValidation(address);
29
+ if (value) {
30
+ this._activeAddress = value;
31
+ let isValid = true;
32
+ if (this.searchLayers[0] === InputAddressLayersStringEnum.ADDRESS) {
33
+ const address = value?.address;
34
+ if (address)
35
+ isValid = this.checkAddressValidation(address);
34
36
  }
37
+ if (!value || !isValid)
38
+ this.getSuperControl.setErrors({ invalid: true });
39
+ else
40
+ this.getSuperControl.setErrors(null);
35
41
  }
36
- if (!value || !isValid)
37
- this.getSuperControl.setErrors({ invalid: true });
38
- else
39
- this.getSuperControl.setErrors(null);
40
42
  }
41
43
  set receivedAddressData(value) {
42
44
  if (value) {
@@ -111,7 +113,16 @@ export class CaInputAddressDropdownComponent {
111
113
  }
112
114
  initChangesListener() {
113
115
  this.getSuperControl?.valueChanges
114
- ?.pipe(distinctUntilChanged(), throttleTime(1), takeUntil(this.destroy$), filter((term) => {
116
+ ?.pipe(distinctUntilChanged(), takeUntil(this.destroy$), tap((term) => {
117
+ this.inputConfig = {
118
+ ...this.inputConfig,
119
+ loadingSpinner: {
120
+ ...this.inputConfig.loadingSpinner,
121
+ isLoading: true,
122
+ size: eInputBasicString.SMALL,
123
+ color: eInputBasicString.WHITE,
124
+ },
125
+ };
115
126
  if (!term) {
116
127
  this.inputConfig = {
117
128
  ...this.inputConfig,
@@ -122,7 +133,7 @@ export class CaInputAddressDropdownComponent {
122
133
  };
123
134
  this.addresList = [];
124
135
  }
125
- else if (term != this.currentAddressData?.address.address &&
136
+ else if (term !== this.currentAddressData?.address.address &&
126
137
  this.inputConfig.name ===
127
138
  InputAddressTypeStringEnum.ROUTING_ADDRESS) {
128
139
  this.currentAddressData = null;
@@ -140,40 +151,29 @@ export class CaInputAddressDropdownComponent {
140
151
  this.selectedAddress.emit(addressData);
141
152
  }
142
153
  this.allowValidation = true;
154
+ }), filter((term) => {
143
155
  return term?.length >= 3;
144
- }), switchMap((query) => {
145
- this.inputConfig = {
146
- ...this.inputConfig,
147
- loadingSpinner: {
148
- ...this.inputConfig.loadingSpinner,
149
- isLoading: true,
150
- size: 'small',
151
- color: 'white',
152
- },
153
- };
156
+ }), debounceTime(500), switchMap((query) => {
154
157
  const params = {
155
- query,
158
+ query: query,
156
159
  searchLayers: this.searchLayers,
157
160
  closedBorder: this.closedBorder,
158
161
  };
159
162
  this.sentAddressData.next(params);
160
- return of(this.receivedAddressList);
163
+ return of(this.receivedAddressList).pipe(catchError(() => of([])));
161
164
  }))
162
165
  .subscribe(() => {
163
166
  let isValid = true;
164
167
  if (this.searchLayers[0] ===
165
168
  InputAddressLayersStringEnum.ADDRESS) {
166
169
  const address = this._activeAddress?.address;
167
- if (address) {
170
+ if (address)
168
171
  isValid = this.checkAddressValidation(address);
169
- }
170
172
  }
171
- if (!this._activeAddress || !isValid) {
173
+ if (!this._activeAddress || !isValid)
172
174
  this.getSuperControl.setErrors({ invalid: true });
173
- }
174
- else {
175
+ else
175
176
  this.getSuperControl.setErrors(null);
176
- }
177
177
  this.inputConfig = {
178
178
  ...this.inputConfig,
179
179
  loadingSpinner: {
@@ -381,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
381
381
  type: HostListener,
382
382
  args: ['document:keydown', ['$event']]
383
383
  }] } });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixFQUFFLEVBQ0YsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUlILFdBQVcsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBS3hCLGFBQWE7QUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUU1RixVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXZELFFBQVE7QUFDUixPQUFPLEVBQUUsOEJBQThC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S0FBSztnQkFlYyxtQkFBbUI7c0JBQXRDLEtBQUs7Z0JBZWMsbUJBQW1CO3NCQUF0QyxLQUFLO2dCQWVXLGdCQUFnQjtzQkFBaEMsTUFBTTtnQkFHUyxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBvZixcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlVW50aWwsXG4gICAgdGhyb3R0bGVUaW1lLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgVW50eXBlZEZvcm1Hcm91cCxcbiAgICBOZ0NvbnRyb2wsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gQ29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0L2NvbmZpZy9jYS1pbnB1dC5jb25maWcnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC1kcm9wZG93bi9jYS1pbnB1dC1kcm9wZG93bi5jb21wb25lbnQnO1xuXG4vLyBNb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLWNvbW1hbmRzLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3Mtc3RvcC10eXBlcy1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvaW5wdXQtYWRkcmVzcy10eXBlLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IElucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3MtbGF5ZXJzLXN0cmluZy5lbnVtJztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBBZGRyZXNzRGF0YSB9IGZyb20gJy4vbW9kZWxzL2FkZHJlc3MtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzTGlzdCB9IGZyb20gJy4vbW9kZWxzL2FkZHJlc3MtbGlzdC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tYW5kc0hhbmRsZXIgfSBmcm9tICcuL21vZGVscy9jb21tYW5kcy1oYW5kbGVyLm1vZGVsJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlYXJjaExheWVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1zZWFyY2gtbGF5ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nIH0gZnJvbSAnLi9tb2RlbHMvaW5wdXQtYWRkcmVzcy1jb21tYW5kcy1zdHJpbmcubW9kZWwnO1xuaW1wb3J0IHsgU2VudEFkZHJlc3NEYXRhIH0gZnJvbSAnLi9tb2RlbHMvc2VudC1hZGRyZXNzLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc0xpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzLWxpc3QtcmVzcG9uc2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxuICAgICAgICAnLi4vY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50LnNjc3MnLFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0QWRkcmVzc0Ryb3Bkb3duQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dERyb3Bkb3duJykgaW5wdXREcm9wZG93biE6IENhSW5wdXREcm9wZG93bkNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlclR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNoZWNrU2VhcmNoTGF5ZXJzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGFjdGl2ZUFkZHJlc3ModmFsdWU6IEFkZHJlc3NMaXN0IHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVBZGRyZXNzID0gdmFsdWU7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoTGF5ZXJzWzBdID09PSBJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB2YWx1ZT8uYWRkcmVzcztcbiAgICAgICAgICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUgfHwgIWlzVmFsaWQpXG4gICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgZWxzZSB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVjZWl2ZWRBZGRyZXNzRGF0YSh2YWx1ZTogQWRkcmVzc0RhdGEgfCBudWxsKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogdmFsdWUuYWRkcmVzcyEsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHZhbHVlLmFkZHJlc3MgJiYgdmFsdWUubG9uZ0xhdCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb25nTGF0OiB2YWx1ZS5sb25nTGF0LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFkZHJlc3NEYXRhIS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzLmVtaXQodGhpcy5jdXJyZW50QWRkcmVzc0RhdGEhKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IHJlY2VpdmVkQWRkcmVzc0xpc3QodmFsdWU6IEFkZHJlc3NMaXN0UmVzcG9uc2UgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3JlY2VpdmVkQWRkcmVzc0xpc3QgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWU/LmFkZHJlc3Nlcykge1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gdmFsdWUuYWRkcmVzc2VzLm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogc3RyaW5nLCBpbmR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5keCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZW50QWRkcmVzc1ZhbHVlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQElucHV0KCkgcHVibGljIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgcHVibGljIGNvbW1hbmRIYW5kbGVyITogQ29tbWFuZHNIYW5kbGVyO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1JvdXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VkQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGluY29ycmVjdFZhbHVlITogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGlkZUVtcHR5TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGFkZHJlc0xpc3QhOiBBZGRyZXNzTGlzdFtdO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkQWRkcmVzczogRXZlbnRFbWl0dGVyPEFkZHJlc3NEYXRhPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8QWRkcmVzc0RhdGE+KCk7XG4gICAgQE91dHB1dCgpIHNlbnRBZGRyZXNzRGF0YTogRXZlbnRFbWl0dGVyPFNlbnRBZGRyZXNzRGF0YT4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPFNlbnRBZGRyZXNzRGF0YT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGNsb3NlRHJvcGRvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY29tbWFuZEV2ZW50OiBFdmVudEVtaXR0ZXI8QWRkcmVzc0RhdGEgfCB7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgICAgICBBZGRyZXNzRGF0YSB8IHt9XG4gICAgPigpO1xuICAgIEBPdXRwdXQoKSBjaGFuZ2VGbGFnOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGluY29ycmVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09IElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlJPVVRJTkdfQUREUkVTU1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5FTlRFUikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29tbWFuZHMoXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5DT05GSVJNXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5FU0NBUEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySW5wdXQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9BZGRyZXNzIGRhdGFcbiAgICBwcml2YXRlIHNlYXJjaExheWVycyE6IEF1dG9jb21wbGV0ZVNlYXJjaExheWVyW107XG4gICAgcHVibGljIGN1cnJlbnRBZGRyZXNzRGF0YTogQWRkcmVzc0RhdGEgfCBudWxsID0gbnVsbDtcblxuICAgIC8vQ29uZmdcbiAgICBwdWJsaWMgYWRkcmVzc0V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGNob3NlbkZyb21Ecm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgYWxsb3dWYWxpZGF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHN0b3BUeXBlOiBzdHJpbmcgPSBJbnB1dEFkZHJlc3NTdG9wVHlwZXNTdHJpbmdFbnVtLkVNUFRZO1xuICAgIHByaXZhdGUgcmVxdWVzdFNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgX3JlY2VpdmVkQWRkcmVzc0xpc3Q6IEFkZHJlc3NMaXN0UmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgX2FjdGl2ZUFkZHJlc3M6IEFkZHJlc3NMaXN0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgYWRkcmVzc0Zvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKF86IGFueSk6IHZvaWQge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRDaGFuZ2VzTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdENoYW5nZXNMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgPy5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHRlcm06IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3Bpbm5lcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLmxvYWRpbmdTcGlubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtICE9IHRoaXMuY3VycmVudEFkZHJlc3NEYXRhPy5hZGRyZXNzLmFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bS5ST1VUSU5HX0FERFJFU1NcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlJPVVRJTkdfQUREUkVTUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1ZhbGlkYXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bi5pbnB1dFJlZi5pc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0xhdDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdChhZGRyZXNzRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVybT8ubGVuZ3RoID49IDM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZy5sb2FkaW5nU3Bpbm5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hMYXllcnM6IHRoaXMuc2VhcmNoTGF5ZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkQm9yZGVyOiB0aGlzLmNsb3NlZEJvcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbnRBZGRyZXNzRGF0YS5uZXh0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnJlY2VpdmVkQWRkcmVzc0xpc3QpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaExheWVyc1swXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLl9hY3RpdmVBZGRyZXNzPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZUFkZHJlc3MgfHwgIWlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1NwaW5uZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcubG9hZGluZ1NwaW5uZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbG9zZURyb3Bkb3duKGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hMYXllcnNbMF0gPT09IElucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0uQUREUkVTUykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLl9hY3RpdmVBZGRyZXNzPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzKSBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZHJlc3NWYWxpZGF0aW9uKGFkZHJlc3MpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5yZXF1ZXN0U2VudCAmJiBpc1ZhbGlkKVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSA9PT0gdGhpcy5fYWN0aXZlQWRkcmVzcz8uYWRkcmVzcyAmJlxuICAgICAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFkZHJlc3NEYXRhKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RTZW50ID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnNlbnRBZGRyZXNzVmFsdWUuZW1pdChhZGRyZXNzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3REcm9wZG93bihldmVudDogQWRkcmVzc0xpc3QgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUFkZHJlc3MgPSBldmVudCA/IHsgLi4uZXZlbnQsIGFkZHJlc3M6IGV2ZW50Py5uYW1lIH0gOiBudWxsO1xuXG4gICAgICAgIGlmIChldmVudD8ubmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoTGF5ZXJzWzBdID09PSBJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZHJlc3NWYWxpZGF0aW9uKGV2ZW50Lm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBZGRyZXNzRGF0YShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldFZhbHVlKGV2ZW50Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFkZHJlc3NEYXRhKGV2ZW50Lm5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNob3NlbkZyb21Ecm9wZG93biA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2xlYXJJbnB1dEV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlucHV0RHJvcGRvd24/LnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tbWFuZHMoXG4gICAgICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgICAgICB0eXBlOiBJbnB1dEFkZHJlc3NDb21tYW5kc1N0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodHlwZSA9PT0gSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkNPTkZJUk0gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSkgfHxcbiAgICAgICAgICAgIHR5cGUgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5DQU5DRUxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSEudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLmNvbW1hbmRFdmVudC5lbWl0KHRoaXMuY3VycmVudEFkZHJlc3NEYXRhID8/IHt9KTtcblxuICAgICAgICAgICAgdGhpcy5jbG9zZUFkZHJlc3MoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkcmVzc0V4cGFuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkZHJlc3NFeHBhbmRlZCkgdGhpcy5hZGRyZXNzRXhwYW5kZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZUFkZHJlc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkcmVzc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFySW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEgPSBudWxsO1xuICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLl9hY3RpdmVBZGRyZXNzID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dERyb3Bkb3duPy5pbnB1dFJlZj8uY2xlYXJJbnB1dChldmVudCk7XG4gICAgICAgIHRoaXMuY2hvc2VuRnJvbURyb3Bkb3duID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1NlYXJjaExheWVycyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoTGF5ZXJzID1cbiAgICAgICAgICAgIHZhbHVlID09PSBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bS5MT05HX0FERFJFU1NcbiAgICAgICAgICAgICAgICA/IFtJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1NdXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0uU0hPUlRfQUREUkVTU1xuICAgICAgICAgICAgICAgICAgPyBbSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5MT0NBTElUWV1cbiAgICAgICAgICAgICAgICAgIDogW107XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVN0b3BUeXBlKCk6IHZvaWQge1xuICAgICAgICBsZXQgZmxhZyA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5zdG9wVHlwZSA9PT0gSW5wdXRBZGRyZXNzU3RvcFR5cGVzU3RyaW5nRW51bS5FTVBUWSkge1xuICAgICAgICAgICAgdGhpcy5zdG9wVHlwZSA9IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uTE9BREVEO1xuICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BUeXBlID0gSW5wdXRBZGRyZXNzU3RvcFR5cGVzU3RyaW5nRW51bS5FTVBUWTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRmxhZy5lbWl0KGZsYWcpO1xuXG4gICAgICAgIGlmICghdGhpcy5jaG9zZW5Gcm9tRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bj8uaW5wdXRSZWY/LmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bi5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJJbnB1dEV2ZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFkZHJlc3NEYXRhID0ge1xuICAgICAgICAgICAgYWRkcmVzczoge30sXG4gICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICBsb25nTGF0OiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdChhZGRyZXNzRGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0FkZHJlc3NWYWxpZGF0aW9uKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzdHJlZXROdW0gPSAvXFxkLipcXGQvO1xuXG4gICAgICAgIHJldHVybiBzdHJlZXROdW0udGVzdChhZGRyZXNzKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkcmVzc19ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIChjbGljayk9XCJhZGRyZXNzRXhwYW5kKClcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFpbl9hZGRyZXNzX2hvbGRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGlucHV0X2Zvcl9yb3V0aW5nOiBpc1JvdXRpbmcsXG4gICAgICAgICAgICBub3RfZXhwYW5kZWQ6IGlzUm91dGluZyAmJiAhYWRkcmVzc0V4cGFuZGVkLFxuICAgICAgICAgICAgZXhwYW5kZWRfYWRkcmVzczogaXNSb3V0aW5nICYmIGFkZHJlc3NFeHBhbmRlZCxcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duXG4gICAgICAgICAgICAjaW5wdXREcm9wZG93blxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiYWRkcmVzTGlzdFwiXG4gICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlQWRkcmVzc1wiXG4gICAgICAgICAgICBbaXNJbmNvcnJlY3RWYWx1ZV09XCJpbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzZWxlY3RlZEl0ZW0pPVwib25TZWxlY3REcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbG9zZURyb3Bkb3duKT1cIm9uQ2xvc2VEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGVhcklucHV0RXZlbnQpPVwib25DbGVhcklucHV0RXZlbnQoKVwiXG4gICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bj5cbiAgICAgICAgQGlmIChpc1JvdXRpbmcgJiYgYWRkcmVzc0V4cGFuZGVkICYmICFoaWRlRW1wdHlMb2FkZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0b3BfaG9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VTdG9wVHlwZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcF90ZXh0XCI+e3sgc3RvcFR5cGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChpc1JvdXRpbmcgJiYgYWRkcmVzc0V4cGFuZGVkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYS1pbnB1dC1jb21tYW5kcyBhZGRyZXNzLWZsYWcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFpbi1jb21tYW5kcyBjYS1pbnB1dC1jb21tYW5kLWZpcnN0XCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzPy5maXJzdENvbW1hbmQ/LnBvcHVwPy5uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzPy5maXJzdENvbW1hbmQ/LnBvcHVwXG4gICAgICAgICAgICAgICAgICAgICAgICA/LmJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIiFjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uZmlyc3RDb21tYW5kPy5wb3B1cFwiXG4gICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhLWlucHV0LWNvbW1hbmQtc3ZnLWZpcnN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFsbG93X2NvbmZpcm1dPVwiY2hvc2VuRnJvbURyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjb21tYW5kSGFuZGxlci5jb21tYW5kcy5maXJzdENvbW1hbmQuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Db21tYW5kcygkZXZlbnQsICdjb25maXJtJylcIlxuICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYWluLWNvbW1hbmRzIGNhLWlucHV0LWNvbW1hbmQtc2Vjb25kXCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzPy5zZWNvbmRDb21tYW5kPy5wb3B1cD8ubmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uc2Vjb25kQ29tbWFuZD8ucG9wdXBcbiAgICAgICAgICAgICAgICAgICAgICAgID8uYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICFjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uc2Vjb25kQ29tbWFuZD8ucG9wdXBcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYS1pbnB1dC1jb21tYW5kLXN2Zy1zZWNvbmRcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzLnNlY29uZENvbW1hbmQuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Db21tYW5kcygkZXZlbnQsICdjYW5jZWwnKVwiXG4gICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG4iXX0=
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsVUFBVSxFQUNWLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEVBQUUsRUFDRixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ04sTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBSUgsV0FBVyxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsYUFBYTtBQUNiLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTVGLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsUUFBUTtB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QVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFFaEIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLHVCQUF1QjtxQkFDMUI7OzBCQXFISSxJQUFJO3lFQWhIbUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUViLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSWMsYUFBYTtzQkFBaEMsS0FBSztnQkFlYyxtQkFBbUI7c0JBQXRDLEtBQUs7Z0JBZWMsbUJBQW1CO3NCQUF0QyxLQUFLO2dCQWVXLGdCQUFnQjtzQkFBaEMsTUFBTTtnQkFHUyxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBvZixcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlVW50aWwsXG4gICAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgVW50eXBlZEZvcm1Hcm91cCxcbiAgICBOZ0NvbnRyb2wsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gQ29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0L2NvbmZpZy9jYS1pbnB1dC5jb25maWcnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC1kcm9wZG93bi9jYS1pbnB1dC1kcm9wZG93bi5jb21wb25lbnQnO1xuXG4vLyBNb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLWNvbW1hbmRzLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3Mtc3RvcC10eXBlcy1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvaW5wdXQtYWRkcmVzcy10eXBlLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IElucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3MtbGF5ZXJzLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IGVJbnB1dEJhc2ljU3RyaW5nIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLWJhc2ljLXN0cmluZy5lbnVtJztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBBZGRyZXNzRGF0YSB9IGZyb20gJy4vbW9kZWxzL2FkZHJlc3MtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzTGlzdCB9IGZyb20gJy4vbW9kZWxzL2FkZHJlc3MtbGlzdC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tYW5kc0hhbmRsZXIgfSBmcm9tICcuL21vZGVscy9jb21tYW5kcy1oYW5kbGVyLm1vZGVsJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlYXJjaExheWVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1zZWFyY2gtbGF5ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nIH0gZnJvbSAnLi9tb2RlbHMvaW5wdXQtYWRkcmVzcy1jb21tYW5kcy1zdHJpbmcubW9kZWwnO1xuaW1wb3J0IHsgU2VudEFkZHJlc3NEYXRhIH0gZnJvbSAnLi9tb2RlbHMvc2VudC1hZGRyZXNzLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc0xpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzLWxpc3QtcmVzcG9uc2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxuICAgICAgICAnLi4vY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50LnNjc3MnLFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0QWRkcmVzc0Ryb3Bkb3duQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dERyb3Bkb3duJykgaW5wdXREcm9wZG93biE6IENhSW5wdXREcm9wZG93bkNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlclR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNoZWNrU2VhcmNoTGF5ZXJzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGFjdGl2ZUFkZHJlc3ModmFsdWU6IEFkZHJlc3NMaXN0IHwgbnVsbCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaExheWVyc1swXSA9PT0gSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IHZhbHVlPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzKSBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZHJlc3NWYWxpZGF0aW9uKGFkZHJlc3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8ICFpc1ZhbGlkKVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCByZWNlaXZlZEFkZHJlc3NEYXRhKHZhbHVlOiBBZGRyZXNzRGF0YSB8IG51bGwpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB2YWx1ZS5hZGRyZXNzISxcbiAgICAgICAgICAgICAgICB2YWxpZDogdmFsdWUuYWRkcmVzcyAmJiB2YWx1ZS5sb25nTGF0ID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxvbmdMYXQ6IHZhbHVlLmxvbmdMYXQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QWRkcmVzc0RhdGEhLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdCh0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVjZWl2ZWRBZGRyZXNzTGlzdCh2YWx1ZTogQWRkcmVzc0xpc3RSZXNwb25zZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcmVjZWl2ZWRBZGRyZXNzTGlzdCA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZT8uYWRkcmVzc2VzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSB2YWx1ZS5hZGRyZXNzZXMubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBzdHJpbmcsIGluZHg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmR4LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHNlbnRBZGRyZXNzVmFsdWU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcbiAgICBASW5wdXQoKSBwdWJsaWMgY29tbWFuZEhhbmRsZXIhOiBDb21tYW5kc0hhbmRsZXI7XG4gICAgQElucHV0KCkgcHVibGljIGlzUm91dGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZWRCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5jb3JyZWN0VmFsdWUhOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWRlRW1wdHlMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWRkcmVzTGlzdCE6IEFkZHJlc3NMaXN0W107XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRBZGRyZXNzOiBFdmVudEVtaXR0ZXI8QWRkcmVzc0RhdGE+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxBZGRyZXNzRGF0YT4oKTtcbiAgICBAT3V0cHV0KCkgc2VudEFkZHJlc3NEYXRhOiBFdmVudEVtaXR0ZXI8U2VudEFkZHJlc3NEYXRhPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8U2VudEFkZHJlc3NEYXRhPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2VEcm9wZG93bjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBjb21tYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxBZGRyZXNzRGF0YSB8IHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIEFkZHJlc3NEYXRhIHwge31cbiAgICA+KCk7XG4gICAgQE91dHB1dCgpIGNoYW5nZUZsYWc6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgaW5jb3JyZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT0gSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0uUk9VVElOR19BRERSRVNTXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkVOVEVSKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFkZHJlc3NEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Db21tYW5kcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkNPTkZJUk1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkVTQ0FQRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0FkZHJlc3MgZGF0YVxuICAgIHByaXZhdGUgc2VhcmNoTGF5ZXJzITogQXV0b2NvbXBsZXRlU2VhcmNoTGF5ZXJbXTtcbiAgICBwdWJsaWMgY3VycmVudEFkZHJlc3NEYXRhOiBBZGRyZXNzRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy9Db25mZ1xuICAgIHB1YmxpYyBhZGRyZXNzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY2hvc2VuRnJvbURyb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBhbGxvd1ZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc3RvcFR5cGU6IHN0cmluZyA9IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uRU1QVFk7XG4gICAgcHJpdmF0ZSByZXF1ZXN0U2VudDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBfcmVjZWl2ZWRBZGRyZXNzTGlzdDogQWRkcmVzc0xpc3RSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBfYWN0aXZlQWRkcmVzczogQWRkcmVzc0xpc3QgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBhZGRyZXNzRm9ybSE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKSBwdWJsaWMgc3VwZXJDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKF86IGFueSk6IHZvaWQge31cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoYW5nZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoXzogYW55KTogdm9pZCB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdENoYW5nZXNMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q2hhbmdlc0xpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICA/LnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1NwaW5uZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLmxvYWRpbmdTcGlubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBlSW5wdXRCYXNpY1N0cmluZy5TTUFMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZUlucHV0QmFzaWNTdHJpbmcuV0hJVEUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcubG9hZGluZ1NwaW5uZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0gIT09IHRoaXMuY3VycmVudEFkZHJlc3NEYXRhPy5hZGRyZXNzLmFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bS5ST1VUSU5HX0FERFJFU1NcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlJPVVRJTkdfQUREUkVTUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1ZhbGlkYXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bi5pbnB1dFJlZi5pc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0xhdDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdChhZGRyZXNzRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93VmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh0ZXJtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm0/Lmxlbmd0aCA+PSAzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hMYXllcnM6IHRoaXMuc2VhcmNoTGF5ZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkQm9yZGVyOiB0aGlzLmNsb3NlZEJvcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbnRBZGRyZXNzRGF0YS5uZXh0KHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMucmVjZWl2ZWRBZGRyZXNzTGlzdCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaExheWVyc1swXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLl9hY3RpdmVBZGRyZXNzPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZUFkZHJlc3MgfHwgIWlzVmFsaWQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLmxvYWRpbmdTcGlubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xvc2VEcm9wZG93bihldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoTGF5ZXJzWzBdID09PSBJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gdGhpcy5fYWN0aXZlQWRkcmVzcz8uYWRkcmVzcztcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcblxuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVxdWVzdFNlbnQgJiYgaXNWYWxpZClcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUgPT09IHRoaXMuX2FjdGl2ZUFkZHJlc3M/LmFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBZGRyZXNzRGF0YShhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0U2VudCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5zZW50QWRkcmVzc1ZhbHVlLmVtaXQoYWRkcmVzcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0RHJvcGRvd24oZXZlbnQ6IEFkZHJlc3NMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVBZGRyZXNzID0gZXZlbnQgPyB7IC4uLmV2ZW50LCBhZGRyZXNzOiBldmVudD8ubmFtZSB9IDogbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQ/Lm5hbWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaExheWVyc1swXSA9PT0gSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihldmVudC5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzc0RhdGEoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBZGRyZXNzRGF0YShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaG9zZW5Gcm9tRHJvcGRvd24gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNsZWFySW5wdXRFdmVudCgpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnB1dERyb3Bkb3duPy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbW1hbmRzKFxuICAgICAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgICAgICAgdHlwZTogSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHR5cGUgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5DT05GSVJNICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEpIHx8XG4gICAgICAgICAgICB0eXBlID09PSBJbnB1dEFkZHJlc3NDb21tYW5kc1N0cmluZ0VudW0uQ0FOQ0VMXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEhLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kRXZlbnQuZW1pdCh0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA/PyB7fSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2xvc2VBZGRyZXNzKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFySW5wdXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZHJlc3NFeHBhbmQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hZGRyZXNzRXhwYW5kZWQpIHRoaXMuYWRkcmVzc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VBZGRyZXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkZHJlc3NFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudEFkZHJlc3NEYXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gW107XG4gICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlQWRkcmVzcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5wdXREcm9wZG93bj8uaW5wdXRSZWY/LmNsZWFySW5wdXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmNob3NlbkZyb21Ecm9wZG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tTZWFyY2hMYXllcnModmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaExheWVycyA9XG4gICAgICAgICAgICB2YWx1ZSA9PT0gSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0uTE9OR19BRERSRVNTXG4gICAgICAgICAgICAgICAgPyBbSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTXVxuICAgICAgICAgICAgICAgIDogdmFsdWUgPT09IElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlNIT1JUX0FERFJFU1NcbiAgICAgICAgICAgICAgICAgID8gW0lucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0uTE9DQUxJVFldXG4gICAgICAgICAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2VTdG9wVHlwZSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc3RvcFR5cGUgPT09IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uRU1QVFkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcFR5cGUgPSBJbnB1dEFkZHJlc3NTdG9wVHlwZXNTdHJpbmdFbnVtLkxPQURFRDtcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9wVHlwZSA9IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uRU1QVFk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZUZsYWcuZW1pdChmbGFnKTtcblxuICAgICAgICBpZiAoIXRoaXMuY2hvc2VuRnJvbURyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RHJvcGRvd24/LmlucHV0UmVmPy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RHJvcGRvd24uaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbmNvcnJlY3RJbnB1dChldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmluY29ycmVjdEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyh7IHJlcXVpcmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHt9LFxuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgbG9uZ0xhdDoge30sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzLmVtaXQoYWRkcmVzc0RhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgc3RyZWV0TnVtID0gL1xcZC4qXFxkLztcblxuICAgICAgICByZXR1cm4gc3RyZWV0TnVtLnRlc3QoYWRkcmVzcykgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZHJlc3NfaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAoY2xpY2spPVwiYWRkcmVzc0V4cGFuZCgpXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1haW5fYWRkcmVzc19ob2xkZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBpbnB1dF9mb3Jfcm91dGluZzogaXNSb3V0aW5nLFxuICAgICAgICAgICAgbm90X2V4cGFuZGVkOiBpc1JvdXRpbmcgJiYgIWFkZHJlc3NFeHBhbmRlZCxcbiAgICAgICAgICAgIGV4cGFuZGVkX2FkZHJlc3M6IGlzUm91dGluZyAmJiBhZGRyZXNzRXhwYW5kZWQsXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93blxuICAgICAgICAgICAgI2lucHV0RHJvcGRvd25cbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImFkZHJlc0xpc3RcIlxuICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUFkZHJlc3NcIlxuICAgICAgICAgICAgW2lzSW5jb3JyZWN0VmFsdWVdPVwiaW5jb3JyZWN0VmFsdWVcIlxuICAgICAgICAgICAgKGluY29ycmVjdEV2ZW50KT1cIm9uSW5jb3JyZWN0SW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRJdGVtKT1cIm9uU2VsZWN0RHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xvc2VEcm9wZG93bik9XCJvbkNsb3NlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xlYXJJbnB1dEV2ZW50KT1cIm9uQ2xlYXJJbnB1dEV2ZW50KClcIlxuICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24+XG4gICAgICAgIEBpZiAoaXNSb3V0aW5nICYmIGFkZHJlc3NFeHBhbmRlZCAmJiAhaGlkZUVtcHR5TG9hZGVkKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdG9wX2hvbGQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU3RvcFR5cGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3BfdGV4dFwiPnt7IHN0b3BUeXBlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoaXNSb3V0aW5nICYmIGFkZHJlc3NFeHBhbmRlZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2EtaW5wdXQtY29tbWFuZHMgYWRkcmVzcy1mbGFnIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1haW4tY29tbWFuZHMgY2EtaW5wdXQtY29tbWFuZC1maXJzdFwiXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uZmlyc3RDb21tYW5kPy5wb3B1cD8ubmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uZmlyc3RDb21tYW5kPy5wb3B1cFxuICAgICAgICAgICAgICAgICAgICAgICAgPy5iYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCIhY29tbWFuZEhhbmRsZXIuY29tbWFuZHM/LmZpcnN0Q29tbWFuZD8ucG9wdXBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYS1pbnB1dC1jb21tYW5kLXN2Zy1maXJzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hbGxvd19jb25maXJtXT1cImNob3NlbkZyb21Ecm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tbWFuZEhhbmRsZXIuY29tbWFuZHMuZmlyc3RDb21tYW5kLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ29tbWFuZHMoJGV2ZW50LCAnY29uZmlybScpXCJcbiAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFpbi1jb21tYW5kcyBjYS1pbnB1dC1jb21tYW5kLXNlY29uZFwiXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uc2Vjb25kQ29tbWFuZD8ucG9wdXA/Lm5hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhhbmRsZXIuY29tbWFuZHM/LnNlY29uZENvbW1hbmQ/LnBvcHVwXG4gICAgICAgICAgICAgICAgICAgICAgICA/LmJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAhY29tbWFuZEhhbmRsZXIuY29tbWFuZHM/LnNlY29uZENvbW1hbmQ/LnBvcHVwXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2EtaW5wdXQtY29tbWFuZC1zdmctc2Vjb25kXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjb21tYW5kSGFuZGxlci5jb21tYW5kcy5zZWNvbmRDb21tYW5kLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ29tbWFuZHMoJGV2ZW50LCAnY2FuY2VsJylcIlxuICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,6 @@
1
+ export var eInputBasicString;
2
+ (function (eInputBasicString) {
3
+ eInputBasicString["SMALL"] = "small";
4
+ eInputBasicString["WHITE"] = "white";
5
+ })(eInputBasicString || (eInputBasicString = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYWRkcmVzcy1iYXNpYy1zdHJpbmcuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24vZW51bXMvaW5wdXQtYWRkcmVzcy1iYXNpYy1zdHJpbmcuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQ3pCLG9DQUFlLENBQUE7SUFDZixvQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gZUlucHV0QmFzaWNTdHJpbmcge1xuICAgIFNNQUxMID0gJ3NtYWxsJyxcbiAgICBXSElURSA9ICd3aGl0ZScsXG59Il19