@unifylib/ui-lib 1.2.6 → 1.2.8

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.
@@ -247,7 +247,7 @@ export class MultiAutoCompleteComponent {
247
247
  return this.field.property;
248
248
  }
249
249
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiAutoCompleteComponent, deps: [{ token: i1.BackendService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiAutoCompleteComponent, isStandalone: true, selector: "app-multi-auto-complete", inputs: { field: "field", form: "form", defaultValue: "defaultValue", pathParam: "pathParam", readonly: "readonly" }, outputs: { selectedValue: "selectedValue" }, viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true }, { propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"this.field\" class=\"main-multi-auto\">\r\n <div class=\"matField\">\r\n <mat-form-field class=\"full-width\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{ getLabel() }}</mat-label>\r\n <mat-chip-listbox #chipList [selectable]=\"true\">\r\n <mat-chip\r\n *ngFor=\"let item of selectedItems\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(item)\">\r\n {{ itemNameByLag(item) }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input class=\"chip-input\" type=\"text\"\r\n [id]=\"getId()\" #itemInput\r\n [formControl]=\"multiControl\"\r\n [matAutocomplete]=\"auto\" matInput\r\n [readonly]=\"readonly\"\r\n [required]=\"isRequired\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [disabled]=\"field.readonly\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [attr.aria-describedby]=\"matErrorDescribedBy\"\r\n >\r\n </mat-chip-listbox>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n class=\"arrow_drop_down_autocomplete\"\r\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\r\n (click)=\"openLookupPanel(autocompleteTrigger)\">\r\n <mat-icon aria-hidden=\"true\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn\"\r\n (optionSelected)=\"selected($event.option.value)\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\"\r\n [disabled]=\"field.readonly || isSelected(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-content select=\"mat-error\"></ng-content>\r\n </mat-form-field>\r\n </div>\r\n</ng-container>\r\n", styles: [":is() .matField{margin-bottom:24px!important}:is() .matField .mat-form-field-wrapper{padding:0!important;margin-bottom:0!important}.full-width{width:100%}.chip-input{flex:1 1 auto}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
250
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiAutoCompleteComponent, isStandalone: true, selector: "app-multi-auto-complete", inputs: { field: "field", form: "form", defaultValue: "defaultValue", pathParam: "pathParam", readonly: "readonly" }, outputs: { selectedValue: "selectedValue" }, viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true }, { propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"this.field\" class=\"main-multi-auto\">\r\n <div class=\"matField\">\r\n <mat-form-field class=\"full-width\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{ getLabel() }}</mat-label>\r\n <mat-chip-listbox #chipList [selectable]=\"true\">\r\n <mat-chip\r\n *ngFor=\"let item of selectedItems\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(item)\">\r\n {{ itemNameByLag(item) }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input class=\"chip-input\" type=\"text\"\r\n [id]=\"getId()\" #itemInput\r\n [formControl]=\"multiControl\"\r\n [matAutocomplete]=\"auto\" matInput\r\n [readonly]=\"readonly\"\r\n [required]=\"isRequired\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [disabled]=\"field.readonly\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [attr.aria-describedby]=\"matErrorDescribedBy\"\r\n >\r\n </mat-chip-listbox>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n class=\"arrow_drop_down_autocomplete\"\r\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\r\n (click)=\"openLookupPanel(autocompleteTrigger)\">\r\n <mat-icon aria-hidden=\"true\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn\"\r\n (optionSelected)=\"selected($event.option.value)\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\"\r\n [disabled]=\"field.readonly || isSelected(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-content select=\"mat-error\"></ng-content>\r\n </mat-form-field>\r\n </div>\r\n</ng-container>\r\n", styles: ["::ng-deep .main-multi-auto{.matField{margin-bottom:24px!important;.mat-form-field-wrapper{padding:0!important;margin-bottom:0!important}}}.full-width{width:100%}.chip-input{flex:1 1 auto}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
251
251
  }
252
252
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiAutoCompleteComponent, decorators: [{
253
253
  type: Component,
@@ -271,7 +271,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
271
271
  MatLabel,
272
272
  MatIconButton,
273
273
  TranslateModule,
274
- ], template: "<ng-container *ngIf=\"this.field\" class=\"main-multi-auto\">\r\n <div class=\"matField\">\r\n <mat-form-field class=\"full-width\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{ getLabel() }}</mat-label>\r\n <mat-chip-listbox #chipList [selectable]=\"true\">\r\n <mat-chip\r\n *ngFor=\"let item of selectedItems\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(item)\">\r\n {{ itemNameByLag(item) }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input class=\"chip-input\" type=\"text\"\r\n [id]=\"getId()\" #itemInput\r\n [formControl]=\"multiControl\"\r\n [matAutocomplete]=\"auto\" matInput\r\n [readonly]=\"readonly\"\r\n [required]=\"isRequired\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [disabled]=\"field.readonly\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [attr.aria-describedby]=\"matErrorDescribedBy\"\r\n >\r\n </mat-chip-listbox>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n class=\"arrow_drop_down_autocomplete\"\r\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\r\n (click)=\"openLookupPanel(autocompleteTrigger)\">\r\n <mat-icon aria-hidden=\"true\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn\"\r\n (optionSelected)=\"selected($event.option.value)\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\"\r\n [disabled]=\"field.readonly || isSelected(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-content select=\"mat-error\"></ng-content>\r\n </mat-form-field>\r\n </div>\r\n</ng-container>\r\n", styles: [":is() .matField{margin-bottom:24px!important}:is() .matField .mat-form-field-wrapper{padding:0!important;margin-bottom:0!important}.full-width{width:100%}.chip-input{flex:1 1 auto}\n"] }]
274
+ ], template: "<ng-container *ngIf=\"this.field\" class=\"main-multi-auto\">\r\n <div class=\"matField\">\r\n <mat-form-field class=\"full-width\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{ getLabel() }}</mat-label>\r\n <mat-chip-listbox #chipList [selectable]=\"true\">\r\n <mat-chip\r\n *ngFor=\"let item of selectedItems\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(item)\">\r\n {{ itemNameByLag(item) }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input class=\"chip-input\" type=\"text\"\r\n [id]=\"getId()\" #itemInput\r\n [formControl]=\"multiControl\"\r\n [matAutocomplete]=\"auto\" matInput\r\n [readonly]=\"readonly\"\r\n [required]=\"isRequired\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [disabled]=\"field.readonly\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [attr.aria-describedby]=\"matErrorDescribedBy\"\r\n >\r\n </mat-chip-listbox>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n class=\"arrow_drop_down_autocomplete\"\r\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\r\n (click)=\"openLookupPanel(autocompleteTrigger)\">\r\n <mat-icon aria-hidden=\"true\">arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn\"\r\n (optionSelected)=\"selected($event.option.value)\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\"\r\n [disabled]=\"field.readonly || isSelected(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-content select=\"mat-error\"></ng-content>\r\n </mat-form-field>\r\n </div>\r\n</ng-container>\r\n", styles: ["::ng-deep .main-multi-auto{.matField{margin-bottom:24px!important;.mat-form-field-wrapper{padding:0!important;margin-bottom:0!important}}}.full-width{width:100%}.chip-input{flex:1 1 auto}\n"] }]
275
275
  }], ctorParameters: () => [{ type: i1.BackendService }, { type: i2.TranslateService }], propDecorators: { itemInput: [{
276
276
  type: ViewChild,
277
277
  args: ['itemInput']
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
291
291
  }], selectedValue: [{
292
292
  type: Output
293
293
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNGLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsUUFBUSxFQUFD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U0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7K0dBeFJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHlkQ3BEdkMsMmtFQThDQSxnUERqQkksWUFBWSw0TEFDWixPQUFPLDZTQUNQLGFBQWEsbUxBQ2IsY0FBYywwVUFDZCxPQUFPLGtIQUVQLG1CQUFtQix1eUJBQ25CLHNCQUFzQixxUUFFdEIsUUFBUSxpVUFDUixlQUFlLHlXQUNmLFNBQVMsZ0pBQ1QsU0FBUyw4Q0FDVCxJQUFJLDZGQUdKLFFBQVEsc0RBQ1IsYUFBYSw0RkFDYixlQUFlOzs0RkFLTiwwQkFBMEI7a0JBM0J0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxRQUFRO3dCQUNSLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEI7a0hBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxZQUFZO3NCQUE3QyxTQUFTO3VCQUFDLHFCQUFxQjtnQkFXaEMsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FMTF9JVEVNLCBMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgTWF0T3B0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0dldEl0ZW1zTGlzdH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZ2V0LWl0ZW1zLWxpc3RcIjtcclxuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0Q2hpcCwgTWF0Q2hpcEdyaWQsIE1hdENoaXBJbnB1dCwgTWF0Q2hpcExpc3Rib3h9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQge2J1aWxkSXRlbXNMaXN0fSBmcm9tIFwiLi4vLi4vdXRpbHMvYmFzZS11dGlsc1wiO1xyXG5pbXBvcnQge0ZpbHRlclJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsXCI7XHJcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge1JlcXVpcmVNYXRjaH0gZnJvbSBcIi4uLy4uL3ZhbGlkYXRvcnNcIjtcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW11bHRpLWF1dG8tY29tcGxldGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTWF0Q2hpcCxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRDaGlwc01vZHVsZSxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgICBNYXRDaGlwSW5wdXQsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE1hdEF1dG9jb21wbGV0ZSxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIE5nSWYsXHJcbiAgICBNYXRDaGlwR3JpZCxcclxuICAgIE1hdENoaXBMaXN0Ym94LFxyXG4gICAgTWF0TGFiZWwsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tdWx0aS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCB7XHJcbi8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKCdpdGVtSW5wdXQnKSBpdGVtSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlVHJpZ2dlcicpIG1hdEFDVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcbiAgbG9va3VwSXRlbXMkOiBPYnNlcnZhYmxlPExvb2t1cEl0ZW1bXT4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBsb29rdXBJdGVtczogTG9va3VwSXRlbVtdID0gW107XHJcblxyXG4gIHNlbGVjdGVkSXRlbXM6IExvb2t1cEl0ZW1bXSA9IFtdO1xyXG4gIGNhc2NhZGVkSWR6OiBudW1iZXJbXSA9IFtdO1xyXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW49IGZhbHNlO1xyXG4gIHByaXZhdGUgdGltZXI6IGFueTtcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZmllbGQ6IEZpZWxkSW5mbztcclxuICAvL1xyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZGVmYXVsdFZhbHVlOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGF0aFBhcmFtOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHkgOiBib29sZWFuPWZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZFZhbHVlOiBFdmVudEVtaXR0ZXI8TG9va3VwSXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XHJcblxyXG4gIG11bHRpQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmRTZXJ2aWNlOiBCYWNrZW5kU2VydmljZSwgcHJpdmF0ZSAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmZvcm0gPSB0aGlzLnJvb3RGb3JtR3JvdXAuY29udHJvbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0pO1xyXG5cclxuICAgIHRoaXMubXVsdGlDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgdGhpcy51cGRhdGVGaWVsZEF0dHJpYnV0ZXMoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSl7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbUmVxdWlyZU1hdGNoXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0/LnZhbHVlKTtcclxuXHJcbiAgICB0aGlzLm11bHRpQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCB2ID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XHJcbiAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyTG9va3VwSXRlbXModiwgbnVsbCk7fSwgNzAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy8gdGhpcy5tdWx0aUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgIC8vICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKHYsIG51bGwpO1xyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuZmlsdGVyQXV0b0NvbXBsZXRlRGF0YSh0aGlzLmZpZWxkLnByb3BlcnR5KTtcclxuXHJcbiAgICB0aGlzLmdldExvb2t1cERhdGEoKTtcclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcclxuICAgICAgdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZUNoaWxkSXRlbXNJZkNhc2NhZGVkQnlSZW1vdmVkKHYpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpZWxkQXR0cmlidXRlcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XHJcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZmllbGQ/LnByb3BlcnR5XS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubXVsdGlDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2hpbGRJdGVtc0lmQ2FzY2FkZWRCeVJlbW92ZWQodikge1xyXG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xyXG4gICAgdi5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICB0aGlzLmNhc2NhZGVkSWR6LnB1c2goYS5pZCk7XHJcbiAgICB9KTtcclxuICAgIGxldCB0b0RlbGV0ZUlkeiA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICBjb25zdCBkZWwgPSB0aGlzLmNhc2NhZGVkSWR6LmZpbmRJbmRleCh5ID0+IHkgPT09IHhbdGhpcy5maWVsZC5jYXNjYWRlZEJ5XT8uaWQpO1xyXG4gICAgICBpZiAoZGVsIDwgMCkge1xyXG4gICAgICAgIHRvRGVsZXRlSWR6LnB1c2goeFsnaWQnXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0b0RlbGV0ZUlkeikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKHMgPT4gIXRvRGVsZXRlSWR6LmluY2x1ZGVzKHMuaWQpKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywge2VtaXRFdmVudDogdHJ1ZX0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoe2RlZmF1bHRWYWx1ZSwgZmllbGR9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUoZGVmYXVsdFZhbHVlPy5jdXJyZW50VmFsdWUpO1xyXG4gICAgaWYgKGZpZWxkPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5maWVsZCA9IGZpZWxkLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVGaWVsZEF0dHJpYnV0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TG9va3VwRGF0YSgpIHtcclxuICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QoJycsIHRoaXMuZmllbGQubG9va3VwQXBpUGF0aCk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUmVxdWVzdDogRmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KCk7XHJcbiAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMgPSBbXTtcclxuICAgIHRoaXMuY2FzY2FkZWRJZHogPSBbXTtcclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcclxuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpPy52YWx1ZT8uZm9yRWFjaChhID0+IHtcclxuICAgICAgICB0aGlzLmNhc2NhZGVkSWR6LnB1c2goYS5pZCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWVsZC5jYXNjYWRlZEJ5ICYmIHRoaXMuY2FzY2FkZWRJZHo/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XHJcbiAgICAgICAga2V5OiAnaWQnLCBmaWVsZE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgbGFiZWw6ICcnLFxyXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLCBvcGVyYXRvcjogJ0lOJyxcclxuICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5jYXNjYWRlZElkelxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyUmVxdWVzdC5jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcclxuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeU11bHRpRmlsdGVyKGxpc3RJdGVtcywgZmlsdGVyUmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwID0+IHtcclxuICAgICAgaWYgKHJlc3AudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmxvb2t1cEl0ZW1zID0gdGhpcy5maWVsZC5pbmNsdWRlQWxsT3B0aW9uID8gW0FMTF9JVEVNXS5jb25jYXQocmVzcC5ib2R5KSA6IHJlc3AuYm9keTtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS5nZXQoJ2lkJyk/LnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5sb29rdXBJdGVtcz8uZmluZChsID0+IGwuZGVmYXVsdFZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZSh0aGlzLm11bHRpQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZS5pZCAhPT0gLTEgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmRJbmRleChpID0+IGkuaWQgPT09IHZhbHVlLmlkKSA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5wdXNoKHZhbHVlKTtcclxuICAgICAgdGhpcy5pdGVtSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzcGxheUZuKHNlbGVjdGVkOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkID8gc2VsZWN0ZWQuZW5nbGlzaE5hbWUgOiB1bmRlZmluZWQ7XHJcblxyXG4gIH1cclxuICBpc1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcz8uc29tZShzZWxlY3RlZCA9PiBzZWxlY3RlZC5pZCA9PT0gaXRlbS5pZCk7IC8vIFVzZSB5b3VyIHVuaXF1ZSBpZGVudGlmaWVyXHJcbiAgfVxyXG5cclxuICBfYWxsb3dTZWxlY3Rpb24ob3B0aW9uOiBMb29rdXBJdGVtKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3ByZXZlbnQtc2VsZWN0aW9uJzogb3B0aW9uLmlkID09PSAtMSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGl0ZW1OYW1lQnlMYWcoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIC8vIHJldHVybiBpdGVtLmFyYWJpY05hbWU7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyBpdGVtLmVuZ2xpc2hOYW1lIDogaXRlbS5hcmFiaWNOYW1lXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcclxuXHJcbiAgZmlsdGVyTG9va3VwSXRlbXMobmFtZTogYW55LCB0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSB7XHJcbiAgICBpZiAodHJpZ2dlcikge1xyXG4gICAgICB0cmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBuYW1lID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QgPSBidWlsZEl0ZW1zTGlzdChuYW1lLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xyXG4gICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJMaXN0IHx8IFtdO1xyXG4gICAgZmlsdGVyUmVxdWVzdC5zZWFyY2hTdHIgPSBuYW1lO1xyXG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSkge1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeSk/LnZhbHVlPy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMucHVzaChuZXcgRmlsdGVyKHtcclxuICAgICAgICBrZXk6ICdpZCcsam9pbk9iamVjdE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgZmllbGROYW1lOiB0aGlzLmZpZWxkLmNhc2NhZGVkQnksIGxhYmVsOiAnJyxcclxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6ICdJTicsXHJcbiAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuY2FzY2FkZWRJZHpcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclJlcXVlc3QuY29sdW1ucyA9IFsuLi50aGlzLl9jb2x1bW5zLCAuLi4odGhpcy5maWVsZC5leHRyYUxvb2t1cHNDb2x1bW5zID8/IFtdKV07XHJcblxyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zLCBmaWx0ZXJSZXF1ZXN0KS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXN1bHQgLS0+JywgcmVzcCk7XHJcbiAgICAgIGxldCBpdGVtczogTG9va3VwSXRlbVtdID0gW107XHJcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gcmVzcC5ib2R5LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgICBpdGVtcyA9IHJlc3AuYm9keS5maWx0ZXIoaXRlbSA9PlxyXG4gICAgICAgICAgLy8gKGl0ZW0uZW5nbGlzaE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpIHx8XHJcbiAgICAgICAgICAvLyBpdGVtLmFyYWJpY05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpKSAmJlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5maW5kSW5kZXgoIGk9PiBpLmlkID09PWl0ZW0uaWQgKSA9PT0tMSApO1xyXG4gICAgICAgIGlmICghaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cclxuICAgICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMiwgZW5nbGlzaE5hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lLCBhcmFiaWNOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZX0pKTpcclxuICAgICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMSwgZW5nbGlzaE5hbWU6ICdObyBtYXRjaCAuLi4nLCBhcmFiaWNOYW1lOiAn2LrZitixINmF2YjYrNmI2K8gIC4uLiAnfSkpIDtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSA/XHJcbiAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0yLCBlbmdsaXNoTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWUsIGFyYWJpY05hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lfSkpOlxyXG4gICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMSwgZW5nbGlzaE5hbWU6ICdObyBtYXRjaCAuLi4nLCBhcmFiaWNOYW1lOiAn2LrZitixINmF2YjYrNmI2K8gIC4uLiAnfSkpIDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvb2t1cEl0ZW1zJCA9IG9mKGl0ZW1zKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55KSB7XHJcbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgIC8vIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5wYXRjaFZhbHVlKGRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcclxuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wucGF0Y2hWYWx1ZShkZWZhdWx0VmFsdWUsIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZShpdGVtOiBMb29rdXBJdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSkucGF0Y2hWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMsIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtYXRFcnJvckRlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQ/LnByb3BlcnR5KTtcclxuICAgIGlmICghY29udHJvbCB8fCAhdGhpcy5maWVsZD8ucHJvcGVydHkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2aXNpYmxlID1cclxuICAgICAgKGNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gMCkgJiYgY29udHJvbC5zdGF0dXMgPT09ICdJTlZBTElEJztcclxuICAgIHJldHVybiB2aXNpYmxlID8gYGVycm9yLSR7dGhpcy5maWVsZC5wcm9wZXJ0eX1gIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldExhYmVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuZmllbGQubGFiZWwpO1xyXG4gIH1cclxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XHJcbiAgICAgIGF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTG9va3VwUGFuZWwoYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XHJcbiAgICBhdXRvY29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gIH1cclxuICBnZXRJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BlcnR5O1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5maWVsZFwiIGNsYXNzPVwibWFpbi1tdWx0aS1hdXRvXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1hdEZpZWxkXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3sgZ2V0TGFiZWwoKSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LWNoaXAtbGlzdGJveCAjY2hpcExpc3QgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxtYXQtY2hpcFxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgICBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlKGl0ZW0pXCI+XHJcbiAgICAgICAgICB7eyBpdGVtTmFtZUJ5TGFnKGl0ZW0pIH19XHJcbiAgICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiY2hpcC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgW2lkXT1cImdldElkKClcIiAjaXRlbUlucHV0XHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJtdWx0aUNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcclxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJtYXRFcnJvckRlc2NyaWJlZEJ5XCJcclxuICAgICAgICA+XHJcbiAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cImFycm93X2Ryb3BfZG93bl9hdXRvY29tcGxldGVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUub3Blbkxvb2t1cE9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwib3Blbkxvb2t1cFBhbmVsKGF1dG9jb21wbGV0ZVRyaWdnZXIpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudC5vcHRpb24udmFsdWUpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgIGxvb2t1cEl0ZW1zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5IHx8IGlzU2VsZWN0ZWQoaXRlbSlcIj5cclxuICAgICAgICAgICAge3sgaXRlbU5hbWVCeUxhZyhpdGVtKSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNGLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUE4QnRELE1BQU0sT0FBTywwQkFBMEI7SUFtQ3JDLFlBQW9CLGNBQThCLEVBQVcsZ0JBQWtDO1FBQTNFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFXLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE3QnZGLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUV2QyxrQkFBYSxHQUFpQixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0IsZUFBVSxHQUFXLEtBQUssQ0FBQztRQWdCM0IsYUFBUSxHQUFXLEtBQUssQ0FBQztRQUd6QixrQkFBYSxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9ELGFBQVEsR0FBRywwQkFBMEIsQ0FBQztRQUV0QyxpQkFBWSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFtSmhCLGFBQVEsR0FBRyxDQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLFlBQVksQ0FBQyxDQUFDO0lBaEpyRSxDQUFDO0lBRUQsUUFBUTtRQUNOLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBQyxDQUFDO1lBQzdCLGFBQWE7WUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFFLENBQUMsQ0FBQyxFQUFFO1lBQzFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFBQSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELGtFQUFrRTtRQUNsRSxLQUFLO1FBQ0wsb0RBQW9EO1FBRXBELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBRUgsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU8sbUNBQW1DLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNaLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQWdCO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFNBQVMsR0FBaUIsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTdFLE1BQU0sYUFBYSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pELGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFELGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO2dCQUNwQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEQsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxRixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDMUYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDckUsQ0FBQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVqRCxDQUFDO1FBRUgsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25GLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pFLGFBQWE7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsUUFBYTtRQUNyQixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXJELENBQUM7SUFDRCxVQUFVLENBQUMsSUFBUztRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7SUFDckcsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFrQjtRQUNoQyxPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUztRQUNyQiwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQzdGLENBQUM7SUFJRCxpQkFBaUIsQ0FBQyxJQUFTLEVBQUUsT0FBK0I7UUFDMUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBaUIsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRS9FLE1BQU0sYUFBYSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pELGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFDMUQsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7Z0JBQ3BDLEdBQUcsRUFBRSxJQUFJLEVBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDNUYsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekYsbUNBQW1DO1lBQ25DLElBQUksS0FBSyxHQUFpQixFQUFFLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YseUNBQXlDO2dCQUN6QyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlCLGtFQUFrRTtnQkFDbEUsaUVBQWlFO2dCQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBRSxDQUFDLENBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUksSUFBSSxDQUFDLEVBQUUsQ0FBRSxLQUFJLENBQUMsQ0FBQyxDQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO3dCQUMzRyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFDLENBQUMsQ0FBQyxDQUFFO2dCQUV2RyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO29CQUMzRyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFDLENBQUMsQ0FBQyxDQUFFO1lBQ3ZHLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU87SUFDVCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsWUFBaUI7UUFDeEMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixpRUFBaUU7WUFDakUsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsSUFBZ0I7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FDWCxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQztRQUN6RSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekQsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQW9CLEVBQUUsbUJBQTJDO1FBQ3pFLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDaEQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLG1CQUEyQztRQUN6RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDaEQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7K0dBeFJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHlkQ3BEdkMsMmtFQThDQSx1UERqQkksWUFBWSw0TEFDWixPQUFPLDZTQUNQLGFBQWEsbUxBQ2IsY0FBYywwVUFDZCxPQUFPLGtIQUVQLG1CQUFtQix1eUJBQ25CLHNCQUFzQixxUUFFdEIsUUFBUSxpVUFDUixlQUFlLHlXQUNmLFNBQVMsZ0pBQ1QsU0FBUyw4Q0FDVCxJQUFJLDZGQUdKLFFBQVEsc0RBQ1IsYUFBYSw0RkFDYixlQUFlOzs0RkFLTiwwQkFBMEI7a0JBM0J0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxRQUFRO3dCQUNSLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEI7a0hBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxZQUFZO3NCQUE3QyxTQUFTO3VCQUFDLHFCQUFxQjtnQkFXaEMsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FMTF9JVEVNLCBMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgTWF0T3B0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0dldEl0ZW1zTGlzdH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZ2V0LWl0ZW1zLWxpc3RcIjtcclxuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0Q2hpcCwgTWF0Q2hpcEdyaWQsIE1hdENoaXBJbnB1dCwgTWF0Q2hpcExpc3Rib3h9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQge2J1aWxkSXRlbXNMaXN0fSBmcm9tIFwiLi4vLi4vdXRpbHMvYmFzZS11dGlsc1wiO1xyXG5pbXBvcnQge0ZpbHRlclJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsXCI7XHJcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge1JlcXVpcmVNYXRjaH0gZnJvbSBcIi4uLy4uL3ZhbGlkYXRvcnNcIjtcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW11bHRpLWF1dG8tY29tcGxldGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTWF0Q2hpcCxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRDaGlwc01vZHVsZSxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgICBNYXRDaGlwSW5wdXQsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE1hdEF1dG9jb21wbGV0ZSxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIE5nSWYsXHJcbiAgICBNYXRDaGlwR3JpZCxcclxuICAgIE1hdENoaXBMaXN0Ym94LFxyXG4gICAgTWF0TGFiZWwsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tdWx0aS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCB7XHJcbi8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKCdpdGVtSW5wdXQnKSBpdGVtSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlVHJpZ2dlcicpIG1hdEFDVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcbiAgbG9va3VwSXRlbXMkOiBPYnNlcnZhYmxlPExvb2t1cEl0ZW1bXT4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBsb29rdXBJdGVtczogTG9va3VwSXRlbVtdID0gW107XHJcblxyXG4gIHNlbGVjdGVkSXRlbXM6IExvb2t1cEl0ZW1bXSA9IFtdO1xyXG4gIGNhc2NhZGVkSWR6OiBudW1iZXJbXSA9IFtdO1xyXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW49IGZhbHNlO1xyXG4gIHByaXZhdGUgdGltZXI6IGFueTtcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZmllbGQ6IEZpZWxkSW5mbztcclxuICAvL1xyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZGVmYXVsdFZhbHVlOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGF0aFBhcmFtOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHkgOiBib29sZWFuPWZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZFZhbHVlOiBFdmVudEVtaXR0ZXI8TG9va3VwSXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XHJcblxyXG4gIG11bHRpQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmRTZXJ2aWNlOiBCYWNrZW5kU2VydmljZSwgcHJpdmF0ZSAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmZvcm0gPSB0aGlzLnJvb3RGb3JtR3JvdXAuY29udHJvbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0pO1xyXG5cclxuICAgIHRoaXMubXVsdGlDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgdGhpcy51cGRhdGVGaWVsZEF0dHJpYnV0ZXMoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSl7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbUmVxdWlyZU1hdGNoXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0/LnZhbHVlKTtcclxuXHJcbiAgICB0aGlzLm11bHRpQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCB2ID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XHJcbiAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyTG9va3VwSXRlbXModiwgbnVsbCk7fSwgNzAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy8gdGhpcy5tdWx0aUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgIC8vICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKHYsIG51bGwpO1xyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuZmlsdGVyQXV0b0NvbXBsZXRlRGF0YSh0aGlzLmZpZWxkLnByb3BlcnR5KTtcclxuXHJcbiAgICB0aGlzLmdldExvb2t1cERhdGEoKTtcclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcclxuICAgICAgdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZUNoaWxkSXRlbXNJZkNhc2NhZGVkQnlSZW1vdmVkKHYpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpZWxkQXR0cmlidXRlcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XHJcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZmllbGQ/LnByb3BlcnR5XS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubXVsdGlDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2hpbGRJdGVtc0lmQ2FzY2FkZWRCeVJlbW92ZWQodikge1xyXG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xyXG4gICAgdi5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICB0aGlzLmNhc2NhZGVkSWR6LnB1c2goYS5pZCk7XHJcbiAgICB9KTtcclxuICAgIGxldCB0b0RlbGV0ZUlkeiA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICBjb25zdCBkZWwgPSB0aGlzLmNhc2NhZGVkSWR6LmZpbmRJbmRleCh5ID0+IHkgPT09IHhbdGhpcy5maWVsZC5jYXNjYWRlZEJ5XT8uaWQpO1xyXG4gICAgICBpZiAoZGVsIDwgMCkge1xyXG4gICAgICAgIHRvRGVsZXRlSWR6LnB1c2goeFsnaWQnXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0b0RlbGV0ZUlkeikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKHMgPT4gIXRvRGVsZXRlSWR6LmluY2x1ZGVzKHMuaWQpKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywge2VtaXRFdmVudDogdHJ1ZX0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoe2RlZmF1bHRWYWx1ZSwgZmllbGR9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUoZGVmYXVsdFZhbHVlPy5jdXJyZW50VmFsdWUpO1xyXG4gICAgaWYgKGZpZWxkPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5maWVsZCA9IGZpZWxkLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVGaWVsZEF0dHJpYnV0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TG9va3VwRGF0YSgpIHtcclxuICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QoJycsIHRoaXMuZmllbGQubG9va3VwQXBpUGF0aCk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUmVxdWVzdDogRmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KCk7XHJcbiAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMgPSBbXTtcclxuICAgIHRoaXMuY2FzY2FkZWRJZHogPSBbXTtcclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcclxuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpPy52YWx1ZT8uZm9yRWFjaChhID0+IHtcclxuICAgICAgICB0aGlzLmNhc2NhZGVkSWR6LnB1c2goYS5pZCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWVsZC5jYXNjYWRlZEJ5ICYmIHRoaXMuY2FzY2FkZWRJZHo/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XHJcbiAgICAgICAga2V5OiAnaWQnLCBmaWVsZE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgbGFiZWw6ICcnLFxyXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLCBvcGVyYXRvcjogJ0lOJyxcclxuICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5jYXNjYWRlZElkelxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyUmVxdWVzdC5jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcclxuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeU11bHRpRmlsdGVyKGxpc3RJdGVtcywgZmlsdGVyUmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwID0+IHtcclxuICAgICAgaWYgKHJlc3AudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmxvb2t1cEl0ZW1zID0gdGhpcy5maWVsZC5pbmNsdWRlQWxsT3B0aW9uID8gW0FMTF9JVEVNXS5jb25jYXQocmVzcC5ib2R5KSA6IHJlc3AuYm9keTtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS5nZXQoJ2lkJyk/LnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5sb29rdXBJdGVtcz8uZmluZChsID0+IGwuZGVmYXVsdFZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZSh0aGlzLm11bHRpQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZS5pZCAhPT0gLTEgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmRJbmRleChpID0+IGkuaWQgPT09IHZhbHVlLmlkKSA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5wdXNoKHZhbHVlKTtcclxuICAgICAgdGhpcy5pdGVtSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzcGxheUZuKHNlbGVjdGVkOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkID8gc2VsZWN0ZWQuZW5nbGlzaE5hbWUgOiB1bmRlZmluZWQ7XHJcblxyXG4gIH1cclxuICBpc1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcz8uc29tZShzZWxlY3RlZCA9PiBzZWxlY3RlZC5pZCA9PT0gaXRlbS5pZCk7IC8vIFVzZSB5b3VyIHVuaXF1ZSBpZGVudGlmaWVyXHJcbiAgfVxyXG5cclxuICBfYWxsb3dTZWxlY3Rpb24ob3B0aW9uOiBMb29rdXBJdGVtKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3ByZXZlbnQtc2VsZWN0aW9uJzogb3B0aW9uLmlkID09PSAtMSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGl0ZW1OYW1lQnlMYWcoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIC8vIHJldHVybiBpdGVtLmFyYWJpY05hbWU7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyBpdGVtLmVuZ2xpc2hOYW1lIDogaXRlbS5hcmFiaWNOYW1lXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcclxuXHJcbiAgZmlsdGVyTG9va3VwSXRlbXMobmFtZTogYW55LCB0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSB7XHJcbiAgICBpZiAodHJpZ2dlcikge1xyXG4gICAgICB0cmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBuYW1lID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QgPSBidWlsZEl0ZW1zTGlzdChuYW1lLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xyXG4gICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJMaXN0IHx8IFtdO1xyXG4gICAgZmlsdGVyUmVxdWVzdC5zZWFyY2hTdHIgPSBuYW1lO1xyXG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSkge1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeSk/LnZhbHVlPy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMucHVzaChuZXcgRmlsdGVyKHtcclxuICAgICAgICBrZXk6ICdpZCcsam9pbk9iamVjdE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgZmllbGROYW1lOiB0aGlzLmZpZWxkLmNhc2NhZGVkQnksIGxhYmVsOiAnJyxcclxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6ICdJTicsXHJcbiAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuY2FzY2FkZWRJZHpcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclJlcXVlc3QuY29sdW1ucyA9IFsuLi50aGlzLl9jb2x1bW5zLCAuLi4odGhpcy5maWVsZC5leHRyYUxvb2t1cHNDb2x1bW5zID8/IFtdKV07XHJcblxyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zLCBmaWx0ZXJSZXF1ZXN0KS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXN1bHQgLS0+JywgcmVzcCk7XHJcbiAgICAgIGxldCBpdGVtczogTG9va3VwSXRlbVtdID0gW107XHJcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gcmVzcC5ib2R5LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgICBpdGVtcyA9IHJlc3AuYm9keS5maWx0ZXIoaXRlbSA9PlxyXG4gICAgICAgICAgLy8gKGl0ZW0uZW5nbGlzaE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpIHx8XHJcbiAgICAgICAgICAvLyBpdGVtLmFyYWJpY05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpKSAmJlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5maW5kSW5kZXgoIGk9PiBpLmlkID09PWl0ZW0uaWQgKSA9PT0tMSApO1xyXG4gICAgICAgIGlmICghaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cclxuICAgICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMiwgZW5nbGlzaE5hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lLCBhcmFiaWNOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZX0pKTpcclxuICAgICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMSwgZW5nbGlzaE5hbWU6ICdObyBtYXRjaCAuLi4nLCBhcmFiaWNOYW1lOiAn2LrZitixINmF2YjYrNmI2K8gIC4uLiAnfSkpIDtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSA/XHJcbiAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0yLCBlbmdsaXNoTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWUsIGFyYWJpY05hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lfSkpOlxyXG4gICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMSwgZW5nbGlzaE5hbWU6ICdObyBtYXRjaCAuLi4nLCBhcmFiaWNOYW1lOiAn2LrZitixINmF2YjYrNmI2K8gIC4uLiAnfSkpIDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvb2t1cEl0ZW1zJCA9IG9mKGl0ZW1zKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55KSB7XHJcbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgIC8vIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5wYXRjaFZhbHVlKGRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcclxuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wucGF0Y2hWYWx1ZShkZWZhdWx0VmFsdWUsIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZShpdGVtOiBMb29rdXBJdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSkucGF0Y2hWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMsIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtYXRFcnJvckRlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQ/LnByb3BlcnR5KTtcclxuICAgIGlmICghY29udHJvbCB8fCAhdGhpcy5maWVsZD8ucHJvcGVydHkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2aXNpYmxlID1cclxuICAgICAgKGNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gMCkgJiYgY29udHJvbC5zdGF0dXMgPT09ICdJTlZBTElEJztcclxuICAgIHJldHVybiB2aXNpYmxlID8gYGVycm9yLSR7dGhpcy5maWVsZC5wcm9wZXJ0eX1gIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldExhYmVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuZmllbGQubGFiZWwpO1xyXG4gIH1cclxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XHJcbiAgICAgIGF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTG9va3VwUGFuZWwoYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XHJcbiAgICBhdXRvY29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gIH1cclxuICBnZXRJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BlcnR5O1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5maWVsZFwiIGNsYXNzPVwibWFpbi1tdWx0aS1hdXRvXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1hdEZpZWxkXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3sgZ2V0TGFiZWwoKSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LWNoaXAtbGlzdGJveCAjY2hpcExpc3QgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxtYXQtY2hpcFxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgICBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlKGl0ZW0pXCI+XHJcbiAgICAgICAgICB7eyBpdGVtTmFtZUJ5TGFnKGl0ZW0pIH19XHJcbiAgICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiY2hpcC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgW2lkXT1cImdldElkKClcIiAjaXRlbUlucHV0XHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJtdWx0aUNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcclxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJtYXRFcnJvckRlc2NyaWJlZEJ5XCJcclxuICAgICAgICA+XHJcbiAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cImFycm93X2Ryb3BfZG93bl9hdXRvY29tcGxldGVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUub3Blbkxvb2t1cE9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwib3Blbkxvb2t1cFBhbmVsKGF1dG9jb21wbGV0ZVRyaWdnZXIpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudC5vcHRpb24udmFsdWUpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgIGxvb2t1cEl0ZW1zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5IHx8IGlzU2VsZWN0ZWQoaXRlbSlcIj5cclxuICAgICAgICAgICAge3sgaXRlbU5hbWVCeUxhZyhpdGVtKSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -76,7 +76,7 @@ export class ReportDetailsDialogComponent {
76
76
  return `${mainLine}${directorateLine}`;
77
77
  }
78
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportDetailsDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.TranslateService }, { token: i3.BackendService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportDetailsDialogComponent, isStandalone: true, selector: "app-audit-log-details-dialog", host: { listeners: { "window:keyup.esc": "onKeyUp()", "document:click": "onBackdropClick($event)" } }, ngImport: i0, template: "<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n class=\"close-button\"\r\n (click)=\"cancel()\"\r\n [attr.dir]=\"dialogDirection\"\r\n id=\"report-details-close-btn\"\r\n [attr.aria-label]=\"'BASE_TABLE.closeDialog' | translate\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n\r\n <h1 mat-dialog-title [innerHTML]=\"getTitle()\"></h1>\r\n\r\n <app-base-table\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n id=\"junior\"\r\n [enforceRefresh]=\"true\"\r\n [reportRequest]=\"reportRequest\">\r\n </app-base-table>\r\n</mat-dialog-content>\r\n\r\n", styles: ["::ng-deep .mat-dialog-actions{justify-content:flex-end!important}.close-button{position:absolute;right:8px;top:8px;z-index:10;background-color:#fff;border-radius:50%}:host-context([dir=\"rtl\"]) .close-button{right:auto;left:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportDetailsDialogComponent, isStandalone: true, selector: "app-audit-log-details-dialog", host: { listeners: { "window:keyup.esc": "onKeyUp()", "document:click": "onBackdropClick($event)" } }, ngImport: i0, template: "<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n class=\"close-button\"\r\n (click)=\"cancel()\"\r\n [attr.dir]=\"dialogDirection\"\r\n id=\"report-details-close-btn\"\r\n [attr.aria-label]=\"'BASE_TABLE.closeDialog' | translate\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n\r\n <h1 mat-dialog-title [innerHTML]=\"getTitle()\"></h1>\r\n\r\n <app-base-table\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n id=\"junior\"\r\n [enforceRefresh]=\"true\"\r\n [reportRequest]=\"reportRequest\">\r\n </app-base-table>\r\n</mat-dialog-content>\r\n\r\n", styles: ["::ng-deep .mat-dialog-actions{justify-content:flex-end!important}.close-button{position:absolute;right:8px;top:8px;z-index:10;background-color:#fff;border-radius:50%}:host-context([dir=\"rtl\"]) .close-button{right:auto;left:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "pendingViewModeChanged", "showDialog", "clickRoutePage"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportDetailsDialogComponent, decorators: [{
82
82
  type: Component,
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
99
99
  type: HostListener,
100
100
  args: ['document:click', ['$event']]
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0LWRldGFpbHMtZGlhbG9nL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy9yZXBvcnQtZGV0YWlscy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsZUFBZSxFQUFvQixnQkFBZ0IsRUFDckMsY0FBYyxHQUM3QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBWSxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBaUIvQyxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLFlBQW1CLFNBQXFELEVBQzVCLElBQVMsRUFDakMsZ0JBQWtDLEVBQ25DLGNBQTZCLEVBQzVCLEtBQWlCO1FBSmxCLGNBQVMsR0FBVCxTQUFTLENBQTRDO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxtQkFBYyxHQUFk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QUFXLDhCQUNYLGVBQWUsNEZBQ2Ysa0JBQWtCLHlzQkFDbEIsZ0JBQWdCLHlHQUNoQixjQUFjLCtIQUNkLGFBQWEsNkZBQ2IsT0FBTzs7NEZBS0UsNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsT0FBTztxQkFDUjs7MEJBb0JZLE1BQU07MkJBQUMsZUFBZTs4SEFNRCxPQUFPO3NCQUF4QyxZQUFZO3VCQUFDLGtCQUFrQjtnQkEyQmhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtGaWVsZEluZm8sIFBhZ2VJbmZvLCBSZXBvcnRSZXF1ZXN0LCBUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtCYXNlVGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLXRhYmxlL2Jhc2UtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpdC1sb2ctZGV0YWlscy1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCYXNlVGFibGVDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0RGlhbG9nVGl0bGUsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0RGV0YWlsc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAsIEFmdGVyVmlld0luaXR7XHJcbiAgZGlhbG9nRGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XHJcblxyXG4gIHBhZ2VJbmZvOiBQYWdlSW5mbztcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIGlzVGVybWluYXRpb24gOiBib29sZWFuPWZhbHNlO1xyXG4gIGNvbW1lbnQ6IHN0cmluZyA9ICcnO1xyXG4gIGV4dGVybmFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2lnbmluZ1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9rZW5SZWZlcmVuY2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2FybmluZ01zZyA9IGZhbHNlO1xyXG4gIGl0ZW06IGFueSA9IHt9O1xyXG4gIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3Q7XHJcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZXBvcnREZXRhaWxzRGlhbG9nQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGJhY2tlbmRTZXJ2aWNlOkJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuZXNjJykgb25LZXlVcCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHRoaXMuZGF0YS5wYWdlSW5mbztcclxuICAgIHRoaXMucGFnZUluZm8uaGlkZVRpdGxlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbSA9IHRoaXMuZGF0YS5pdGVtO1xyXG4gICAgdGhpcy5wYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmRhdGEucmVxdWVzdDtcclxuICAgIHRoaXMud2FybmluZ01zZyA9IHRoaXMuZGF0YS53YXJuaW5nTXNnIHx8IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnbWF0LWRpYWxvZy1jb250YWluZXInKTtcclxuICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVyLmdldEF0dHJpYnV0ZSgnZGlyJykpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEaXJlY3Rpb24gPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCdkaXInKSBhcyAnbHRyJyB8ICdydGwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5pc0VtcHR5SXRlbXMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKSkge1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuaXNFbXB0eUl0ZW1zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZSgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0/LmlzZWNfdmFsdWVfYXIpIHtcclxuICAgICAgY29uc3QgaXNlY0xhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0lTRUMnKTtcclxuICAgICAgcmV0dXJuIGA8c3Ryb25nPiR7aXNlY0xhYmVsfSAke3RoaXMuaXRlbS5pc2VjX3ZhbHVlX2FyfTwvc3Ryb25nPmA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU0VDVE9SJyk7XHJcbiAgICBjb25zdCBwZXJpb2RMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGT1JfUEVSSU9EJyk7XHJcbiAgICBjb25zdCBkaXJlY3RvcmF0ZUxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0RJUkVDVE9SQVRFJyk7XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yVGV4dCA9IHRoaXMuaXRlbS5zZWN0b3IgPyBgJHtzZWN0b3JMYWJlbH0gJHt0aGlzLml0ZW0uc2VjdG9yfWAgOiAnJztcclxuICAgIGNvbnN0IHBlcmlvZFRleHQgPSB0aGlzLml0ZW0ucGVyaW9kID8gYCAke3BlcmlvZExhYmVsfSAke3RoaXMuaXRlbS5wZXJpb2R9YCA6ICcnO1xyXG4gICAgY29uc3QgeWVhclRleHQgPSB0aGlzLml0ZW0ueWVhciA/IGAgLSAke3RoaXMuaXRlbS55ZWFyfWAgOiAnJztcclxuICAgIGNvbnN0IGRpcmVjdG9yYXRlTGluZSA9IHRoaXMuaXRlbS5kaXJlY3RvcmF0ZSA/IGA8YnI+PHN0cm9uZz4ke2RpcmVjdG9yYXRlTGFiZWx9IC0gJHt0aGlzLml0ZW0uZGlyZWN0b3JhdGV9PC9zdHJvbmc+YCA6ICcnO1xyXG5cclxuICAgIGNvbnN0IG1haW5MaW5lID0gKHNlY3RvclRleHQgfHwgcGVyaW9kVGV4dCB8fCB5ZWFyVGV4dClcclxuICAgICAgPyBgPHN0cm9uZz4ke1tzZWN0b3JUZXh0LCBwZXJpb2RUZXh0LCB5ZWFyVGV4dF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJycpfTwvc3Ryb25nPmBcclxuICAgICAgOiAnJztcclxuXHJcbiAgICByZXR1cm4gYCR7bWFpbkxpbmV9JHtkaXJlY3RvcmF0ZUxpbmV9YDtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPG1hdC1kaWFsb2ctY29udGVudCBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwdmg7IG92ZXJmbG93OiBhdXRvOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgPGJ1dHRvblxyXG4gICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCJcclxuICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICBbYXR0ci5kaXJdPVwiZGlhbG9nRGlyZWN0aW9uXCJcclxuICAgIGlkPVwicmVwb3J0LWRldGFpbHMtY2xvc2UtYnRuXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUuY2xvc2VEaWFsb2cnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlIFtpbm5lckhUTUxdPVwiZ2V0VGl0bGUoKVwiPjwvaDE+XHJcblxyXG4gICAgPGFwcC1iYXNlLXRhYmxlXHJcbiAgICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICAgICAgICBpZD1cImp1bmlvclwiXHJcbiAgICAgICAgICAgIFtlbmZvcmNlUmVmcmVzaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiPlxyXG4gICAgPC9hcHAtYmFzZS10YWJsZT5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0LWRldGFpbHMtZGlhbG9nL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy9yZXBvcnQtZGV0YWlscy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsZUFBZSxFQUFvQixnQkFBZ0IsRUFDckMsY0FBYyxHQUM3QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBWSxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBaUIvQyxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLFlBQW1CLFNBQXFELEVBQzVCLElBQVMsRUFDakMsZ0JBQWtDLEVBQ25DLGNBQTZCLEVBQzVCLEtBQWlCO1FBSmxCLGNBQVMsR0FBVCxTQUFTLENBQTRDO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBbEJyQyxvQkFBZSxHQUFrQixLQUFLLENBQUM7UUFHdkMsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFFekIsa0JBQWEsR0FBVyxLQUFLLENBQUM7UUFDOUIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQVFiLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDaUMsT0FBTztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQUVILGVBQWU7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMzRSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBa0IsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxlQUFlLENBQUMsS0FBaUI7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxPQUFPLFdBQVcsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxXQUFXLENBQUM7UUFDcEUsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZUFBZSxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFM0gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxVQUFVLElBQUksVUFBVSxJQUFJLFFBQVEsQ0FBQztZQUNyRCxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVztZQUNuRixDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsT0FBTyxHQUFHLFFBQVEsR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUN6QyxDQUFDOytHQTlFVSw0QkFBNEIsOENBZ0JuQixlQUFlO21HQWhCeEIsNEJBQTRCLCtMQzVCekMsMnZCQXVCQSxnU0ROSSxXQUFXLDhCQUNYLGVBQWUsNEZBQ2Ysa0JBQWtCLG11QkFDbEIsZ0JBQWdCLHlHQUNoQixjQUFjLCtIQUNkLGFBQWEsNkZBQ2IsT0FBTzs7NEZBS0UsNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsT0FBTztxQkFDUjs7MEJBb0JZLE1BQU07MkJBQUMsZUFBZTs4SEFNRCxPQUFPO3NCQUF4QyxZQUFZO3VCQUFDLGtCQUFrQjtnQkEyQmhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtGaWVsZEluZm8sIFBhZ2VJbmZvLCBSZXBvcnRSZXF1ZXN0LCBUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtCYXNlVGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLXRhYmxlL2Jhc2UtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpdC1sb2ctZGV0YWlscy1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCYXNlVGFibGVDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0RGlhbG9nVGl0bGUsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0RGV0YWlsc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAsIEFmdGVyVmlld0luaXR7XHJcbiAgZGlhbG9nRGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XHJcblxyXG4gIHBhZ2VJbmZvOiBQYWdlSW5mbztcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIGlzVGVybWluYXRpb24gOiBib29sZWFuPWZhbHNlO1xyXG4gIGNvbW1lbnQ6IHN0cmluZyA9ICcnO1xyXG4gIGV4dGVybmFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2lnbmluZ1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9rZW5SZWZlcmVuY2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2FybmluZ01zZyA9IGZhbHNlO1xyXG4gIGl0ZW06IGFueSA9IHt9O1xyXG4gIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3Q7XHJcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZXBvcnREZXRhaWxzRGlhbG9nQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGJhY2tlbmRTZXJ2aWNlOkJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuZXNjJykgb25LZXlVcCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHRoaXMuZGF0YS5wYWdlSW5mbztcclxuICAgIHRoaXMucGFnZUluZm8uaGlkZVRpdGxlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbSA9IHRoaXMuZGF0YS5pdGVtO1xyXG4gICAgdGhpcy5wYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmRhdGEucmVxdWVzdDtcclxuICAgIHRoaXMud2FybmluZ01zZyA9IHRoaXMuZGF0YS53YXJuaW5nTXNnIHx8IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnbWF0LWRpYWxvZy1jb250YWluZXInKTtcclxuICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVyLmdldEF0dHJpYnV0ZSgnZGlyJykpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEaXJlY3Rpb24gPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCdkaXInKSBhcyAnbHRyJyB8ICdydGwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5pc0VtcHR5SXRlbXMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKSkge1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuaXNFbXB0eUl0ZW1zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZSgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0/LmlzZWNfdmFsdWVfYXIpIHtcclxuICAgICAgY29uc3QgaXNlY0xhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0lTRUMnKTtcclxuICAgICAgcmV0dXJuIGA8c3Ryb25nPiR7aXNlY0xhYmVsfSAke3RoaXMuaXRlbS5pc2VjX3ZhbHVlX2FyfTwvc3Ryb25nPmA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU0VDVE9SJyk7XHJcbiAgICBjb25zdCBwZXJpb2RMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGT1JfUEVSSU9EJyk7XHJcbiAgICBjb25zdCBkaXJlY3RvcmF0ZUxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0RJUkVDVE9SQVRFJyk7XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yVGV4dCA9IHRoaXMuaXRlbS5zZWN0b3IgPyBgJHtzZWN0b3JMYWJlbH0gJHt0aGlzLml0ZW0uc2VjdG9yfWAgOiAnJztcclxuICAgIGNvbnN0IHBlcmlvZFRleHQgPSB0aGlzLml0ZW0ucGVyaW9kID8gYCAke3BlcmlvZExhYmVsfSAke3RoaXMuaXRlbS5wZXJpb2R9YCA6ICcnO1xyXG4gICAgY29uc3QgeWVhclRleHQgPSB0aGlzLml0ZW0ueWVhciA/IGAgLSAke3RoaXMuaXRlbS55ZWFyfWAgOiAnJztcclxuICAgIGNvbnN0IGRpcmVjdG9yYXRlTGluZSA9IHRoaXMuaXRlbS5kaXJlY3RvcmF0ZSA/IGA8YnI+PHN0cm9uZz4ke2RpcmVjdG9yYXRlTGFiZWx9IC0gJHt0aGlzLml0ZW0uZGlyZWN0b3JhdGV9PC9zdHJvbmc+YCA6ICcnO1xyXG5cclxuICAgIGNvbnN0IG1haW5MaW5lID0gKHNlY3RvclRleHQgfHwgcGVyaW9kVGV4dCB8fCB5ZWFyVGV4dClcclxuICAgICAgPyBgPHN0cm9uZz4ke1tzZWN0b3JUZXh0LCBwZXJpb2RUZXh0LCB5ZWFyVGV4dF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJycpfTwvc3Ryb25nPmBcclxuICAgICAgOiAnJztcclxuXHJcbiAgICByZXR1cm4gYCR7bWFpbkxpbmV9JHtkaXJlY3RvcmF0ZUxpbmV9YDtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPG1hdC1kaWFsb2ctY29udGVudCBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwdmg7IG92ZXJmbG93OiBhdXRvOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgPGJ1dHRvblxyXG4gICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCJcclxuICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICBbYXR0ci5kaXJdPVwiZGlhbG9nRGlyZWN0aW9uXCJcclxuICAgIGlkPVwicmVwb3J0LWRldGFpbHMtY2xvc2UtYnRuXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUuY2xvc2VEaWFsb2cnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlIFtpbm5lckhUTUxdPVwiZ2V0VGl0bGUoKVwiPjwvaDE+XHJcblxyXG4gICAgPGFwcC1iYXNlLXRhYmxlXHJcbiAgICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICAgICAgICBpZD1cImp1bmlvclwiXHJcbiAgICAgICAgICAgIFtlbmZvcmNlUmVmcmVzaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiPlxyXG4gICAgPC9hcHAtYmFzZS10YWJsZT5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG4iXX0=