@sumaris-net/ngx-components 2.12.16-rc2 → 2.12.16-rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public_api.mjs +5 -1
- package/esm2022/src/app/admin/users/users.mjs +3 -3
- package/esm2022/src/app/core/account/account.module.mjs +17 -4
- package/esm2022/src/app/core/account/account.page.mjs +14 -5
- package/esm2022/src/app/core/account/password/change-password.form.mjs +60 -0
- package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
- package/esm2022/src/app/core/account/password/change-password.page.mjs +144 -0
- package/esm2022/src/app/core/auth/auth.form.mjs +41 -22
- package/esm2022/src/app/core/auth/auth.module.mjs +14 -5
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +77 -0
- package/esm2022/src/app/core/core.module.mjs +5 -1
- package/esm2022/src/app/core/form/form.module.mjs +7 -3
- package/esm2022/src/app/core/form/username/username.form.mjs +52 -0
- package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
- package/esm2022/src/app/core/home/home.mjs +23 -9
- package/esm2022/src/app/core/register/register-confirm.page.mjs +10 -8
- package/esm2022/src/app/core/register/register.form.mjs +3 -3
- package/esm2022/src/app/core/services/account.service.mjs +96 -12
- package/esm2022/src/app/core/services/config/core.config.mjs +7 -1
- package/esm2022/src/app/core/services/errors.mjs +2 -1
- package/esm2022/src/app/core/settings/settings.page.mjs +3 -3
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +55 -72
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +5 -4
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +2 -2
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +13 -8
- package/esm2022/src/app/shared/validator/validators.mjs +13 -1
- package/esm2022/src/environments/environment.mjs +12 -6
- package/fesm2022/sumaris-net.ngx-components.mjs +714 -237
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +5 -4
- package/public_api.d.ts +4 -0
- package/src/app/core/account/account.module.d.ts +2 -1
- package/src/app/core/account/account.page.d.ts +23 -14
- package/src/app/core/account/password/change-password.form.d.ts +19 -0
- package/src/app/core/account/password/change-password.module.d.ts +11 -0
- package/src/app/core/account/password/change-password.page.d.ts +36 -0
- package/src/app/core/auth/auth.form.d.ts +11 -9
- package/src/app/core/auth/auth.module.d.ts +6 -4
- package/src/app/core/auth/reset-password.modal.d.ts +26 -0
- package/src/app/core/core.module.d.ts +2 -1
- package/src/app/core/form/form.module.d.ts +2 -1
- package/src/app/core/form/username/username.form.d.ts +19 -0
- package/src/app/core/form/username/username.module.d.ts +9 -0
- package/src/app/core/home/home.d.ts +9 -1
- package/src/app/core/services/account.service.d.ts +8 -0
- package/src/app/core/services/config/core.config.d.ts +1 -0
- package/src/app/core/services/errors.d.ts +1 -0
- package/src/app/shared/inputs.d.ts +1 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +1 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +2 -0
- package/src/app/shared/toolbar/toolbar.d.ts +5 -0
- package/src/app/shared/validator/validators.d.ts +2 -0
- package/src/assets/i18n/en-US.json +26 -12
- package/src/assets/i18n/en.json +26 -13
- package/src/assets/i18n/fr.json +20 -9
- package/src/assets/manifest.json +1 -1
- package/src/theme/_ionic.globals.scss +1 -0
- package/src/theme/_mixins.scss +1 -0
|
@@ -39,7 +39,7 @@ export class NamedFilterSelector extends AppForm {
|
|
|
39
39
|
return this._entityName;
|
|
40
40
|
}
|
|
41
41
|
appearance;
|
|
42
|
-
subscriptSizing;
|
|
42
|
+
subscriptSizing = 'dynamic';
|
|
43
43
|
filterContentProvider;
|
|
44
44
|
filterImportCallback;
|
|
45
45
|
filterFormDirty;
|
|
@@ -80,6 +80,7 @@ export class NamedFilterSelector extends AppForm {
|
|
|
80
80
|
suggestFn: (value, filter) => this.dataService.suggest(value, filter),
|
|
81
81
|
attributes: ['name'],
|
|
82
82
|
filter: this.getFilter(),
|
|
83
|
+
applyImplicitValue: false,
|
|
83
84
|
...this.autocompleteConfig,
|
|
84
85
|
});
|
|
85
86
|
if (this.detectChangeOnSelectFilter) {
|
|
@@ -233,11 +234,11 @@ export class NamedFilterSelector extends AppForm {
|
|
|
233
234
|
this.autocompleteField.blurred.emit();
|
|
234
235
|
}
|
|
235
236
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NamedFilterSelector, deps: [{ token: i0.Injector }, { token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.ToastController }, { token: i2.PopoverController }, { token: APP_NAMED_FILTER_SERVICE }], target: i0.ɵɵFactoryTarget.Component });
|
|
236
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NamedFilterSelector, selector: "app-named-filter-selector", inputs: { entityName: "entityName", appearance: "appearance", subscriptSizing: "subscriptSizing", filterContentProvider: "filterContentProvider", filterImportCallback: "filterImportCallback", filterFormDirty: "filterFormDirty", showButtons: "showButtons", exportFileNamePrefix: "exportFileNamePrefix", autocompleteConfig: "autocompleteConfig", dropButtonTitle: "dropButtonTitle", clearButtonTitle: "clearButtonTitle", detectChangeOnSelectFilter: "detectChangeOnSelectFilter" }, outputs: { filterSelected: "filterSelected", filterDeleted: "filterDeleted", filterCleared: "filterCleared" }, viewQueries: [{ propertyName: "autocompleteField", first: true, predicate: MatAutocompleteField, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <form class=\"form-container\" [formGroup]=\"form\">\n <mat-autocomplete-field\n formControlName=\"namedFilter\"\n [config]=\"autocompleteFields.namedFilter\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [placeholder]=\"'COMMON.NAMED_FILTER.TITLE' | translate\"\n [clearable]=\"true\"\n [dropButtonTitle]=\"dropButtonTitle\"\n [clearButtonTitle]=\"clearButtonTitle\"\n
|
|
237
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NamedFilterSelector, selector: "app-named-filter-selector", inputs: { entityName: "entityName", appearance: "appearance", subscriptSizing: "subscriptSizing", filterContentProvider: "filterContentProvider", filterImportCallback: "filterImportCallback", filterFormDirty: "filterFormDirty", showButtons: "showButtons", exportFileNamePrefix: "exportFileNamePrefix", autocompleteConfig: "autocompleteConfig", dropButtonTitle: "dropButtonTitle", clearButtonTitle: "clearButtonTitle", detectChangeOnSelectFilter: "detectChangeOnSelectFilter" }, outputs: { filterSelected: "filterSelected", filterDeleted: "filterDeleted", filterCleared: "filterCleared" }, viewQueries: [{ propertyName: "autocompleteField", first: true, predicate: MatAutocompleteField, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <form class=\"form-container\" [formGroup]=\"form\">\n <mat-autocomplete-field\n formControlName=\"namedFilter\"\n [config]=\"autocompleteFields.namedFilter\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [placeholder]=\"'COMMON.NAMED_FILTER.TITLE' | translate\"\n [clearable]=\"true\"\n [dropButtonTitle]=\"dropButtonTitle\"\n [clearButtonTitle]=\"clearButtonTitle\"\n >\n <ng-container matSuffix *ngIf=\"showButtons && !mobile\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </ng-container>\n </mat-autocomplete-field>\n </form>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"mobile\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #buttons>\n <button\n mat-icon-button\n [color]=\"'primary'\"\n [disabled]=\"saveDisabled\"\n [title]=\"'COMMON.NAMED_FILTER.SAVE' | translate\"\n (click)=\"save($event)\"\n >\n <mat-icon>save</mat-icon>\n <mat-icon *ngIf=\"isNew\" class=\"icon-secondary\" style=\"left: 12px; top: 0px\">add</mat-icon>\n </button>\n <button\n mat-icon-button\n [disabled]=\"deleteDisabled\"\n [title]=\"'COMMON.NAMED_FILTER.DELETE' | translate\"\n (click)=\"delete($event)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"moreMenu\" (click)=\"$event.preventDefault()\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #moreMenu=\"matMenu\">\n <button mat-menu-item (click)=\"export($event)\" [disabled]=\"isNew\">\n <mat-icon>file_download</mat-icon>\n <ion-label>{{ 'COMMON.NAMED_FILTER.EXPORT' | translate }}</ion-label>\n </button>\n <button mat-menu-item (click)=\"import($event)\">\n <mat-icon>file_upload</mat-icon>\n <ion-label>{{ 'COMMON.NAMED_FILTER.IMPORT' | translate }}</ion-label>\n </button>\n </mat-menu>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i4.MatAutocompleteField, selector: "mat-autocomplete-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "subscriptSizing", "placeholder", "suggestFn", "required", "mobile", "clearable", "debounceTime", "displaySeparator", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "panelClass", "panelWidth", "disableRipple", "matAutocompletePosition", "multiple", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "debug", "showSearchBar", "stickySearchBar", "applyImplicitValue", "dropButtonTitle", "clearButtonTitle", "trimSearchText", "splitSearchText", "class", "filter", "readonly", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter", "optionSelected"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
237
238
|
}
|
|
238
239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NamedFilterSelector, decorators: [{
|
|
239
240
|
type: Component,
|
|
240
|
-
args: [{ selector: 'app-named-filter-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <form class=\"form-container\" [formGroup]=\"form\">\n <mat-autocomplete-field\n formControlName=\"namedFilter\"\n [config]=\"autocompleteFields.namedFilter\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [placeholder]=\"'COMMON.NAMED_FILTER.TITLE' | translate\"\n [clearable]=\"true\"\n [dropButtonTitle]=\"dropButtonTitle\"\n [clearButtonTitle]=\"clearButtonTitle\"\n
|
|
241
|
+
args: [{ selector: 'app-named-filter-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <form class=\"form-container\" [formGroup]=\"form\">\n <mat-autocomplete-field\n formControlName=\"namedFilter\"\n [config]=\"autocompleteFields.namedFilter\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [placeholder]=\"'COMMON.NAMED_FILTER.TITLE' | translate\"\n [clearable]=\"true\"\n [dropButtonTitle]=\"dropButtonTitle\"\n [clearButtonTitle]=\"clearButtonTitle\"\n >\n <ng-container matSuffix *ngIf=\"showButtons && !mobile\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </ng-container>\n </mat-autocomplete-field>\n </form>\n </ion-col>\n <ion-col size=\"auto\" *ngIf=\"mobile\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #buttons>\n <button\n mat-icon-button\n [color]=\"'primary'\"\n [disabled]=\"saveDisabled\"\n [title]=\"'COMMON.NAMED_FILTER.SAVE' | translate\"\n (click)=\"save($event)\"\n >\n <mat-icon>save</mat-icon>\n <mat-icon *ngIf=\"isNew\" class=\"icon-secondary\" style=\"left: 12px; top: 0px\">add</mat-icon>\n </button>\n <button\n mat-icon-button\n [disabled]=\"deleteDisabled\"\n [title]=\"'COMMON.NAMED_FILTER.DELETE' | translate\"\n (click)=\"delete($event)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"moreMenu\" (click)=\"$event.preventDefault()\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #moreMenu=\"matMenu\">\n <button mat-menu-item (click)=\"export($event)\" [disabled]=\"isNew\">\n <mat-icon>file_download</mat-icon>\n <ion-label>{{ 'COMMON.NAMED_FILTER.EXPORT' | translate }}</ion-label>\n </button>\n <button mat-menu-item (click)=\"import($event)\">\n <mat-icon>file_upload</mat-icon>\n <ion-label>{{ 'COMMON.NAMED_FILTER.IMPORT' | translate }}</ion-label>\n </button>\n </mat-menu>\n</ng-template>\n" }]
|
|
241
242
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.ToastController }, { type: i2.PopoverController }, { type: undefined, decorators: [{
|
|
242
243
|
type: Inject,
|
|
243
244
|
args: [APP_NAMED_FILTER_SERVICE]
|
|
@@ -275,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
275
276
|
type: ViewChild,
|
|
276
277
|
args: [MatAutocompleteField, { static: true }]
|
|
277
278
|
}] } });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZWQtZmlsdGVyLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL25hbWVkLWZpbHRlci9uYW1lZC1maWx0ZXItc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbmFtZWQtZmlsdGVyL25hbWVkLWZpbHRlci1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQW9DLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBd0UsTUFBTSx3QkFBd0IsQ0FBQztBQUN4SSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsT0FBWTtJQXNDdkM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBM0NPLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQztJQUN0QyxNQUFN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QkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUU0QyxpQkFBaUI7c0JBQW5FLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIsIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFwcEZvcm0gfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBGaWxlc1V0aWxzIH0gZnJvbSAnLi4vZmlsZS9maWxlLnV0aWxzJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOaWwsIGlzTmlsT3JCbGFuaywgaXNOaWxPck5hTiwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVGaWVsZCB9IGZyb20gJy4uL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWcgfSBmcm9tICcuLi9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZyc7XG5pbXBvcnQgeyBUb2FzdHMgfSBmcm9tICcuLi90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHsgSU5hbWVkRmlsdGVyLCBJTmFtZWRGaWx0ZXJGaWx0ZXIsIE5hbWVkRmlsdGVyIH0gZnJvbSAnLi9uYW1lZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQVBQX05BTUVEX0ZJTFRFUl9TRVJWSUNFLCBJTmFtZWRGaWx0ZXJTZXJ2aWNlLCBOYW1lZEZpbHRlckxvYWRPcHRpb25zLCBOYW1lZEZpbHRlcldhdGNoT3B0aW9ucyB9IGZyb20gJy4vbmFtZWQtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSwgU3Vic2NyaXB0U2l6aW5nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uYW1lZC1maWx0ZXItc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vbmFtZWQtZmlsdGVyLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmFtZWQtZmlsdGVyLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOYW1lZEZpbHRlclNlbGVjdG9yIGV4dGVuZHMgQXBwRm9ybTxhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ1ByZWZpeCA9ICdbbmFtZWQtZmlsdGVyLXNlbGVjdG9yXSc7XG4gIHByb3RlY3RlZCByZWFkb25seSBtb2JpbGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZW50aXR5TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9kZWxldGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCBlbnRpdHlOYW1lKGVudGl0eU5hbWU6IHN0cmluZykge1xuICAgIGlmICghZW50aXR5TmFtZSB8fCB0aGlzLl9lbnRpdHlOYW1lID09PSBlbnRpdHlOYW1lKSByZXR1cm47XG4gICAgdGhpcy5fZW50aXR5TmFtZSA9IGVudGl0eU5hbWU7XG4gICAgLy8gVXBkYXRlIGF1dG9jb21wbGV0ZSBmaWx0ZXJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkLmZpbHRlciA9IHsgLi4udGhpcy5hdXRvY29tcGxldGVGaWVsZC5maWx0ZXIsIC4uLnRoaXMuZ2V0RmlsdGVyKCkgfTtcbiAgfVxuXG4gIGdldCBlbnRpdHlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eU5hbWU7XG4gIH1cblxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcblxuICBASW5wdXQoKSBmaWx0ZXJDb250ZW50UHJvdmlkZXI6ICgpID0+IGFueTtcbiAgQElucHV0KCkgZmlsdGVySW1wb3J0Q2FsbGJhY2s6IChuYW1lZEZpbHRlcjogTmFtZWRGaWx0ZXIpID0+IFByb21pc2U8TmFtZWRGaWx0ZXI+O1xuICBASW5wdXQoKSBmaWx0ZXJGb3JtRGlydHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dCdXR0b25zID0gdHJ1ZTtcbiAgQElucHV0KCkgZXhwb3J0RmlsZU5hbWVQcmVmaXggPSAnZmlsdGVyJztcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlQ29uZmlnOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZztcbiAgQElucHV0KCkgZHJvcEJ1dHRvblRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsZWFyQnV0dG9uVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgZGV0ZWN0Q2hhbmdlT25TZWxlY3RGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRWxzZSBpcyBvbiB2YWx1ZSBjaGFuZ2VcblxuICBAT3V0cHV0KCkgZmlsdGVyU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZpbHRlckRlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5hbWVkRmlsdGVyPigpO1xuICBAT3V0cHV0KCkgZmlsdGVyQ2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZUZpZWxkLCB7IHN0YXRpYzogdHJ1ZSB9KSBhdXRvY29tcGxldGVGaWVsZDogTWF0QXV0b2NvbXBsZXRlRmllbGQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIEBJbmplY3QoQVBQX05BTUVEX0ZJTFRFUl9TRVJWSUNFKVxuICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogSU5hbWVkRmlsdGVyU2VydmljZTxJTmFtZWRGaWx0ZXI8YW55PiwgSU5hbWVkRmlsdGVyRmlsdGVyPGFueSwgYW55PiwgTmFtZWRGaWx0ZXJXYXRjaE9wdGlvbnMsIE5hbWVkRmlsdGVyTG9hZE9wdGlvbnM+XG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCBmb3JtQnVpbGRlci5ncm91cCh7IG5hbWVkRmlsdGVyOiBbbnVsbF0gfSkpO1xuICAgIHRoaXMubW9iaWxlID0gdGhpcy5zZXR0aW5ncy5tb2JpbGU7XG4gIH1cblxuICBnZXQgaXNOZXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmlsT3JOYU4odGhpcy52YWx1ZT8ubmFtZWRGaWx0ZXI/LmlkKTtcbiAgfVxuXG4gIGdldCBzYXZlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpcnR5IHx8IGlzTmlsT3JCbGFuayh0aGlzLnZhbHVlLm5hbWVkRmlsdGVyKTtcbiAgfVxuXG4gIGdldCBkZWxldGVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlRGlzYWJsZWQgfHwgdGhpcy5pc05ldztcbiAgfVxuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuZGlydHkgfHwgdGhpcy5maWx0ZXJGb3JtRGlydHk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyQXV0b2NvbXBsZXRlRmllbGQoJ25hbWVkRmlsdGVyJywge1xuICAgICAgc3VnZ2VzdEZuOiAodmFsdWUsIGZpbHRlcikgPT4gdGhpcy5kYXRhU2VydmljZS5zdWdnZXN0KHZhbHVlLCBmaWx0ZXIpLFxuICAgICAgYXR0cmlidXRlczogWyduYW1lJ10sXG4gICAgICBmaWx0ZXI6IHRoaXMuZ2V0RmlsdGVyKCksXG4gICAgICAuLi50aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRldGVjdENoYW5nZU9uU2VsZWN0RmlsdGVyKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQub3B0aW9uU2VsZWN0ZWQuc3Vic2NyaWJlKChzZWxlY3RlZEV2ZW50KSA9PiB0aGlzLm9uRmlsdGVyQ2hhbmdlcyhzZWxlY3RlZEV2ZW50Lm9wdGlvbi52YWx1ZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm5hbWVkRmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLm9uRmlsdGVyQ2hhbmdlcyh2YWx1ZSkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpbHRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBlbnRpdHlOYW1lOiB0aGlzLmVudGl0eU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudDogVUlFdmVudCkge1xuICAgIGlmIChldmVudD8uZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgZmlsdGVyQ29udGVudCA9IHRoaXMuZmlsdGVyQ29udGVudFByb3ZpZGVyKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gc2F2ZSBuYW1lZCBmaWx0ZXJgLCBmaWx0ZXJDb250ZW50KTtcblxuICAgIGlmIChpc05pbE9yQmxhbmsoZmlsdGVyQ29udGVudCkpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZCA9IHRoaXMudmFsdWUubmFtZWRGaWx0ZXI7XG4gICAgbGV0IHJlc3VsdDogTmFtZWRGaWx0ZXI7XG5cbiAgICBpZiAodHlwZW9mIGN1cnJlbnRTZWxlY3RlZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IE5hbWVkRmlsdGVyLmZyb21PYmplY3Qoe1xuICAgICAgICBuYW1lOiBjdXJyZW50U2VsZWN0ZWQsXG4gICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5TmFtZSxcbiAgICAgICAgY29udGVudDogZmlsdGVyQ29udGVudCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBOYW1lZEZpbHRlci5mcm9tT2JqZWN0KHtcbiAgICAgICAgLi4uY3VycmVudFNlbGVjdGVkLFxuICAgICAgICBjb250ZW50OiBmaWx0ZXJDb250ZW50LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZWRFbnRpdHkgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLnNhdmUocmVzdWx0KTtcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShzYXZlZEVudGl0eSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5yZWxvYWRJdGVtcygpO1xuICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShldmVudD86IFVJRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQ/LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnZhbHVlLm5hbWVkRmlsdGVyO1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGRlbGV0ZSBuYW1lZCBmaWx0ZXJgLCBkYXRhKTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlKGRhdGEpO1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5yZWxvYWRJdGVtcygpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5ibHVycmVkLmVtaXQoKTtcbiAgICAgIHRoaXMuZmlsdGVyRGVsZXRlZC5lbWl0KGRhdGEpO1xuICAgICAgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCB7XG4gICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgbWVzc2FnZTogJ0NPTU1PTi5OQU1FRF9GSUxURVIuREVMRVRFRCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBleHBvcnQoZXZlbnQ/OiBVSUV2ZW50KSB7XG4gICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBpZCA9IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQudmFsdWU/LmlkO1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGV4cG9ydCBuYW1lZCBmaWx0ZXJgLCBpZCk7XG5cbiAgICBpZiAoIWlkKSByZXR1cm47XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5sb2FkKGlkLCB7IHdpdGhDb250ZW50OiB0cnVlIH0pO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIEZpbGVzVXRpbHMud3JpdGVUZXh0VG9GaWxlKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgZmlsZW5hbWU6IGAke3RoaXMuZXhwb3J0RmlsZU5hbWVQcmVmaXh9LSR7ZGF0YS5lbnRpdHlOYW1lfS0ke2RhdGEubmFtZX0uanNvbmAsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCB7XG4gICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdDT01NT04uTkFNRURfRklMVEVSLk5PVF9GT1VORCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBGaWxlc1V0aWxzLnNob3dVcGxvYWRQb3BvdmVyKHRoaXMucG9wb3ZlckNvbnRyb2xsZXIsIGV2ZW50LCB7XG4gICAgICB1cGxvYWRGbjogKGZpbGUpID0+IEZpbGVzVXRpbHMucmVhZEFzVGV4dChmaWxlKSxcbiAgICAgIHRpdGxlOiAnQ09NTU9OLk5BTUVEX0ZJTFRFUi5JTVBPUlQnLFxuICAgICAgZmlsZUV4dGVuc2lvbjogJy5qc29uJyxcbiAgICAgIHVuaXF1ZUZpbGU6IHRydWUsXG4gICAgICBpbnN0YW50VXBsb2FkOiB0cnVlLFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0IHx8IGlzRW1wdHlBcnJheShyZXN1bHQuZGF0YSkpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKHJlc3VsdC5kYXRhWzBdLnJlc3BvbnNlLmJvZHkpO1xuICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGltcG9ydCBuYW1lZCBmaWx0ZXJgLCBkYXRhKTtcbiAgICAgIGlmICh0aGlzLmZpbHRlckltcG9ydENhbGxiYWNrKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLmZpbHRlckltcG9ydENhbGxiYWNrKGRhdGEpO1xuICAgICAgICBpZiAoaXNOaWwoZGF0YSkpIHtcbiAgICAgICAgICByZXR1cm47IC8vIEFib3J0IGltcG9ydCBpZiBjYWxsYmFjayByZXR1cm5zIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGRhdGEpO1xuICAgICAgdGhpcy5maWx0ZXJTZWxlY3RlZC5lbWl0KGRhdGEuY29udGVudCk7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnQ09NTU9OLk5BTUVEX0ZJTFRFUi5JTVBPUlRfRkFJTEVEJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvbkZpbHRlckNoYW5nZXModmFsdWU6IE5hbWVkRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGZpbHRlciBjaGFuZ2VgLCB2YWx1ZSk7XG5cbiAgICAvLyBFbWl0IGNsZWFyZWQgZXZlbnQgaWYgYm91bmRcbiAgICBpZiAoaXNOaWwodmFsdWUpICYmIHRoaXMuZmlsdGVyQ2xlYXJlZC5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5maWx0ZXJDbGVhcmVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZT8uaWQgJiYgaXNOb3ROaWwodmFsdWUuaWQpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5sb2FkKHZhbHVlLmlkLCB7IHdpdGhDb250ZW50OiB0cnVlIH0pO1xuICAgICAgICB0aGlzLl9kZWxldGVEaXNhYmxlZCA9ICF0aGlzLmRhdGFTZXJ2aWNlLmNhblVzZXJXcml0ZShkYXRhKTtcblxuICAgICAgICBjb25zdCBmaWx0ZXIgPSBpc05vdE5pbE9yQmxhbmsoZGF0YT8uY29udGVudCkgPyBkYXRhLmNvbnRlbnQgOiBudWxsO1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RlZC5lbWl0KGZpbHRlcik7XG4gICAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogJ0NPTU1PTi5OQU1FRF9GSUxURVIuTE9BRF9GQUlMRUQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29udHJvbFZhbHVlKHZhbHVlOiBOYW1lZEZpbHRlcikge1xuICAgIHRoaXMuc2V0VmFsdWUoeyBuYW1lZEZpbHRlcjogdmFsdWUgfSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5ibHVycmVkLmVtaXQoKTtcbiAgfVxufVxuIiwiPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlLWZpZWxkXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZWRGaWx0ZXJcIlxuICAgICAgICAgIFtjb25maWddPVwiYXV0b2NvbXBsZXRlRmllbGRzLm5hbWVkRmlsdGVyXCJcbiAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDT01NT04uTkFNRURfRklMVEVSLlRJVExFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICBbZHJvcEJ1dHRvblRpdGxlXT1cImRyb3BCdXR0b25UaXRsZVwiXG4gICAgICAgICAgW2NsZWFyQnV0dG9uVGl0bGVdPVwiY2xlYXJCdXR0b25UaXRsZVwiXG4gICAgICAgICAgW2FwcGx5SW1wbGljaXRWYWx1ZV09XCJmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dCdXR0b25zICYmICFtb2JpbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZS1maWVsZD5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIiAqbmdJZj1cIm1vYmlsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucz5cbiAgPGJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgIFtkaXNhYmxlZF09XCJzYXZlRGlzYWJsZWRcIlxuICAgIFt0aXRsZV09XCInQ09NTU9OLk5BTUVEX0ZJTFRFUi5TQVZFJyB8IHRyYW5zbGF0ZVwiXG4gICAgKGNsaWNrKT1cInNhdmUoJGV2ZW50KVwiXG4gID5cbiAgICA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaXNOZXdcIiBjbGFzcz1cImljb24tc2Vjb25kYXJ5XCIgc3R5bGU9XCJsZWZ0OiAxMnB4OyB0b3A6IDBweFwiPmFkZDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cImRlbGV0ZURpc2FibGVkXCJcbiAgICBbdGl0bGVdPVwiJ0NPTU1PTi5OQU1FRF9GSUxURVIuREVMRVRFJyB8IHRyYW5zbGF0ZVwiXG4gICAgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1vcmVNZW51XCIgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LW1lbnUgI21vcmVNZW51PVwibWF0TWVudVwiPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZXhwb3J0KCRldmVudClcIiBbZGlzYWJsZWRdPVwiaXNOZXdcIj5cbiAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgIDxpb24tbGFiZWw+e3sgJ0NPTU1PTi5OQU1FRF9GSUxURVIuRVhQT1JUJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiaW1wb3J0KCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICA8aW9uLWxhYmVsPnt7ICdDT01NT04uTkFNRURfRklMVEVSLklNUE9SVCcgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZWQtZmlsdGVyLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL25hbWVkLWZpbHRlci9uYW1lZC1maWx0ZXItc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbmFtZWQtZmlsdGVyL25hbWVkLWZpbHRlci1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQW9DLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBd0UsTUFBTSx3QkFBd0IsQ0FBQztBQUN4SSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsT0FBWTtJQXNDdkM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBM0NPLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQztJQUN0QyxNQUFN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QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUU0QyxpQkFBaUI7c0JBQW5FLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIsIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFwcEZvcm0gfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBGaWxlc1V0aWxzIH0gZnJvbSAnLi4vZmlsZS9maWxlLnV0aWxzJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOaWwsIGlzTmlsT3JCbGFuaywgaXNOaWxPck5hTiwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVGaWVsZCB9IGZyb20gJy4uL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWcgfSBmcm9tICcuLi9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZyc7XG5pbXBvcnQgeyBUb2FzdHMgfSBmcm9tICcuLi90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHsgSU5hbWVkRmlsdGVyLCBJTmFtZWRGaWx0ZXJGaWx0ZXIsIE5hbWVkRmlsdGVyIH0gZnJvbSAnLi9uYW1lZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQVBQX05BTUVEX0ZJTFRFUl9TRVJWSUNFLCBJTmFtZWRGaWx0ZXJTZXJ2aWNlLCBOYW1lZEZpbHRlckxvYWRPcHRpb25zLCBOYW1lZEZpbHRlcldhdGNoT3B0aW9ucyB9IGZyb20gJy4vbmFtZWQtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSwgU3Vic2NyaXB0U2l6aW5nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uYW1lZC1maWx0ZXItc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vbmFtZWQtZmlsdGVyLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5hbWVkRmlsdGVyU2VsZWN0b3IgZXh0ZW5kcyBBcHBGb3JtPGFueT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nUHJlZml4ID0gJ1tuYW1lZC1maWx0ZXItc2VsZWN0b3JdJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vYmlsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIF9lbnRpdHlOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2RlbGV0ZURpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGVudGl0eU5hbWUoZW50aXR5TmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFlbnRpdHlOYW1lIHx8IHRoaXMuX2VudGl0eU5hbWUgPT09IGVudGl0eU5hbWUpIHJldHVybjtcbiAgICB0aGlzLl9lbnRpdHlOYW1lID0gZW50aXR5TmFtZTtcbiAgICAvLyBVcGRhdGUgYXV0b2NvbXBsZXRlIGZpbHRlclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQuZmlsdGVyID0geyAuLi50aGlzLmF1dG9jb21wbGV0ZUZpZWxkLmZpbHRlciwgLi4udGhpcy5nZXRGaWx0ZXIoKSB9O1xuICB9XG5cbiAgZ2V0IGVudGl0eU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5TmFtZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XG4gIEBJbnB1dCgpIHN1YnNjcmlwdFNpemluZzogU3Vic2NyaXB0U2l6aW5nID0gJ2R5bmFtaWMnO1xuXG4gIEBJbnB1dCgpIGZpbHRlckNvbnRlbnRQcm92aWRlcjogKCkgPT4gYW55O1xuICBASW5wdXQoKSBmaWx0ZXJJbXBvcnRDYWxsYmFjazogKG5hbWVkRmlsdGVyOiBOYW1lZEZpbHRlcikgPT4gUHJvbWlzZTxOYW1lZEZpbHRlcj47XG4gIEBJbnB1dCgpIGZpbHRlckZvcm1EaXJ0eTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd0J1dHRvbnMgPSB0cnVlO1xuICBASW5wdXQoKSBleHBvcnRGaWxlTmFtZVByZWZpeCA9ICdmaWx0ZXInO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGVDb25maWc6IE1hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBkcm9wQnV0dG9uVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgY2xlYXJCdXR0b25UaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VPblNlbGVjdEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlOyAvLyBFbHNlIGlzIG9uIHZhbHVlIGNoYW5nZVxuXG4gIEBPdXRwdXQoKSBmaWx0ZXJTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmlsdGVyRGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmFtZWRGaWx0ZXI+KCk7XG4gIEBPdXRwdXQoKSBmaWx0ZXJDbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlRmllbGQsIHsgc3RhdGljOiB0cnVlIH0pIGF1dG9jb21wbGV0ZUZpZWxkOiBNYXRBdXRvY29tcGxldGVGaWVsZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXIsXG4gICAgQEluamVjdChBUFBfTkFNRURfRklMVEVSX1NFUlZJQ0UpXG4gICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBJTmFtZWRGaWx0ZXJTZXJ2aWNlPElOYW1lZEZpbHRlcjxhbnk+LCBJTmFtZWRGaWx0ZXJGaWx0ZXI8YW55LCBhbnk+LCBOYW1lZEZpbHRlcldhdGNoT3B0aW9ucywgTmFtZWRGaWx0ZXJMb2FkT3B0aW9ucz5cbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGZvcm1CdWlsZGVyLmdyb3VwKHsgbmFtZWRGaWx0ZXI6IFtudWxsXSB9KSk7XG4gICAgdGhpcy5tb2JpbGUgPSB0aGlzLnNldHRpbmdzLm1vYmlsZTtcbiAgfVxuXG4gIGdldCBpc05ldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOaWxPck5hTih0aGlzLnZhbHVlPy5uYW1lZEZpbHRlcj8uaWQpO1xuICB9XG5cbiAgZ2V0IHNhdmVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlydHkgfHwgaXNOaWxPckJsYW5rKHRoaXMudmFsdWUubmFtZWRGaWx0ZXIpO1xuICB9XG5cbiAgZ2V0IGRlbGV0ZURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kZWxldGVEaXNhYmxlZCB8fCB0aGlzLmlzTmV3O1xuICB9XG5cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5kaXJ0eSB8fCB0aGlzLmZpbHRlckZvcm1EaXJ0eTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJBdXRvY29tcGxldGVGaWVsZCgnbmFtZWRGaWx0ZXInLCB7XG4gICAgICBzdWdnZXN0Rm46ICh2YWx1ZSwgZmlsdGVyKSA9PiB0aGlzLmRhdGFTZXJ2aWNlLnN1Z2dlc3QodmFsdWUsIGZpbHRlciksXG4gICAgICBhdHRyaWJ1dGVzOiBbJ25hbWUnXSxcbiAgICAgIGZpbHRlcjogdGhpcy5nZXRGaWx0ZXIoKSxcbiAgICAgIGFwcGx5SW1wbGljaXRWYWx1ZTogZmFsc2UsXG4gICAgICAuLi50aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRldGVjdENoYW5nZU9uU2VsZWN0RmlsdGVyKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQub3B0aW9uU2VsZWN0ZWQuc3Vic2NyaWJlKChzZWxlY3RlZEV2ZW50KSA9PiB0aGlzLm9uRmlsdGVyQ2hhbmdlcyhzZWxlY3RlZEV2ZW50Lm9wdGlvbi52YWx1ZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm5hbWVkRmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLm9uRmlsdGVyQ2hhbmdlcyh2YWx1ZSkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpbHRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBlbnRpdHlOYW1lOiB0aGlzLmVudGl0eU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudDogVUlFdmVudCkge1xuICAgIGlmIChldmVudD8uZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgZmlsdGVyQ29udGVudCA9IHRoaXMuZmlsdGVyQ29udGVudFByb3ZpZGVyKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gc2F2ZSBuYW1lZCBmaWx0ZXJgLCBmaWx0ZXJDb250ZW50KTtcblxuICAgIGlmIChpc05pbE9yQmxhbmsoZmlsdGVyQ29udGVudCkpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZCA9IHRoaXMudmFsdWUubmFtZWRGaWx0ZXI7XG4gICAgbGV0IHJlc3VsdDogTmFtZWRGaWx0ZXI7XG5cbiAgICBpZiAodHlwZW9mIGN1cnJlbnRTZWxlY3RlZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IE5hbWVkRmlsdGVyLmZyb21PYmplY3Qoe1xuICAgICAgICBuYW1lOiBjdXJyZW50U2VsZWN0ZWQsXG4gICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5TmFtZSxcbiAgICAgICAgY29udGVudDogZmlsdGVyQ29udGVudCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBOYW1lZEZpbHRlci5mcm9tT2JqZWN0KHtcbiAgICAgICAgLi4uY3VycmVudFNlbGVjdGVkLFxuICAgICAgICBjb250ZW50OiBmaWx0ZXJDb250ZW50LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZWRFbnRpdHkgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLnNhdmUocmVzdWx0KTtcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShzYXZlZEVudGl0eSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5yZWxvYWRJdGVtcygpO1xuICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShldmVudD86IFVJRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQ/LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnZhbHVlLm5hbWVkRmlsdGVyO1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGRlbGV0ZSBuYW1lZCBmaWx0ZXJgLCBkYXRhKTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlKGRhdGEpO1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5yZWxvYWRJdGVtcygpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5ibHVycmVkLmVtaXQoKTtcbiAgICAgIHRoaXMuZmlsdGVyRGVsZXRlZC5lbWl0KGRhdGEpO1xuICAgICAgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCB7XG4gICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgbWVzc2FnZTogJ0NPTU1PTi5OQU1FRF9GSUxURVIuREVMRVRFRCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBleHBvcnQoZXZlbnQ/OiBVSUV2ZW50KSB7XG4gICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBpZCA9IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQudmFsdWU/LmlkO1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGV4cG9ydCBuYW1lZCBmaWx0ZXJgLCBpZCk7XG5cbiAgICBpZiAoIWlkKSByZXR1cm47XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5sb2FkKGlkLCB7IHdpdGhDb250ZW50OiB0cnVlIH0pO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIEZpbGVzVXRpbHMud3JpdGVUZXh0VG9GaWxlKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgZmlsZW5hbWU6IGAke3RoaXMuZXhwb3J0RmlsZU5hbWVQcmVmaXh9LSR7ZGF0YS5lbnRpdHlOYW1lfS0ke2RhdGEubmFtZX0uanNvbmAsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCB7XG4gICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdDT01NT04uTkFNRURfRklMVEVSLk5PVF9GT1VORCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBGaWxlc1V0aWxzLnNob3dVcGxvYWRQb3BvdmVyKHRoaXMucG9wb3ZlckNvbnRyb2xsZXIsIGV2ZW50LCB7XG4gICAgICB1cGxvYWRGbjogKGZpbGUpID0+IEZpbGVzVXRpbHMucmVhZEFzVGV4dChmaWxlKSxcbiAgICAgIHRpdGxlOiAnQ09NTU9OLk5BTUVEX0ZJTFRFUi5JTVBPUlQnLFxuICAgICAgZmlsZUV4dGVuc2lvbjogJy5qc29uJyxcbiAgICAgIHVuaXF1ZUZpbGU6IHRydWUsXG4gICAgICBpbnN0YW50VXBsb2FkOiB0cnVlLFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0IHx8IGlzRW1wdHlBcnJheShyZXN1bHQuZGF0YSkpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKHJlc3VsdC5kYXRhWzBdLnJlc3BvbnNlLmJvZHkpO1xuICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGltcG9ydCBuYW1lZCBmaWx0ZXJgLCBkYXRhKTtcbiAgICAgIGlmICh0aGlzLmZpbHRlckltcG9ydENhbGxiYWNrKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLmZpbHRlckltcG9ydENhbGxiYWNrKGRhdGEpO1xuICAgICAgICBpZiAoaXNOaWwoZGF0YSkpIHtcbiAgICAgICAgICByZXR1cm47IC8vIEFib3J0IGltcG9ydCBpZiBjYWxsYmFjayByZXR1cm5zIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGRhdGEpO1xuICAgICAgdGhpcy5maWx0ZXJTZWxlY3RlZC5lbWl0KGRhdGEuY29udGVudCk7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnQ09NTU9OLk5BTUVEX0ZJTFRFUi5JTVBPUlRfRkFJTEVEJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvbkZpbHRlckNoYW5nZXModmFsdWU6IE5hbWVkRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IGZpbHRlciBjaGFuZ2VgLCB2YWx1ZSk7XG5cbiAgICAvLyBFbWl0IGNsZWFyZWQgZXZlbnQgaWYgYm91bmRcbiAgICBpZiAoaXNOaWwodmFsdWUpICYmIHRoaXMuZmlsdGVyQ2xlYXJlZC5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5maWx0ZXJDbGVhcmVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZT8uaWQgJiYgaXNOb3ROaWwodmFsdWUuaWQpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5sb2FkKHZhbHVlLmlkLCB7IHdpdGhDb250ZW50OiB0cnVlIH0pO1xuICAgICAgICB0aGlzLl9kZWxldGVEaXNhYmxlZCA9ICF0aGlzLmRhdGFTZXJ2aWNlLmNhblVzZXJXcml0ZShkYXRhKTtcblxuICAgICAgICBjb25zdCBmaWx0ZXIgPSBpc05vdE5pbE9yQmxhbmsoZGF0YT8uY29udGVudCkgPyBkYXRhLmNvbnRlbnQgOiBudWxsO1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RlZC5lbWl0KGZpbHRlcik7XG4gICAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogJ0NPTU1PTi5OQU1FRF9GSUxURVIuTE9BRF9GQUlMRUQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29udHJvbFZhbHVlKHZhbHVlOiBOYW1lZEZpbHRlcikge1xuICAgIHRoaXMuc2V0VmFsdWUoeyBuYW1lZEZpbHRlcjogdmFsdWUgfSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZC5ibHVycmVkLmVtaXQoKTtcbiAgfVxufVxuIiwiPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlLWZpZWxkXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZWRGaWx0ZXJcIlxuICAgICAgICAgIFtjb25maWddPVwiYXV0b2NvbXBsZXRlRmllbGRzLm5hbWVkRmlsdGVyXCJcbiAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDT01NT04uTkFNRURfRklMVEVSLlRJVExFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICBbZHJvcEJ1dHRvblRpdGxlXT1cImRyb3BCdXR0b25UaXRsZVwiXG4gICAgICAgICAgW2NsZWFyQnV0dG9uVGl0bGVdPVwiY2xlYXJCdXR0b25UaXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dCdXR0b25zICYmICFtb2JpbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZS1maWVsZD5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIiAqbmdJZj1cIm1vYmlsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucz5cbiAgPGJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgIFtkaXNhYmxlZF09XCJzYXZlRGlzYWJsZWRcIlxuICAgIFt0aXRsZV09XCInQ09NTU9OLk5BTUVEX0ZJTFRFUi5TQVZFJyB8IHRyYW5zbGF0ZVwiXG4gICAgKGNsaWNrKT1cInNhdmUoJGV2ZW50KVwiXG4gID5cbiAgICA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaXNOZXdcIiBjbGFzcz1cImljb24tc2Vjb25kYXJ5XCIgc3R5bGU9XCJsZWZ0OiAxMnB4OyB0b3A6IDBweFwiPmFkZDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cImRlbGV0ZURpc2FibGVkXCJcbiAgICBbdGl0bGVdPVwiJ0NPTU1PTi5OQU1FRF9GSUxURVIuREVMRVRFJyB8IHRyYW5zbGF0ZVwiXG4gICAgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1vcmVNZW51XCIgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LW1lbnUgI21vcmVNZW51PVwibWF0TWVudVwiPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZXhwb3J0KCRldmVudClcIiBbZGlzYWJsZWRdPVwiaXNOZXdcIj5cbiAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgIDxpb24tbGFiZWw+e3sgJ0NPTU1PTi5OQU1FRF9GSUxURVIuRVhQT1JUJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiaW1wb3J0KCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICA8aW9uLWxhYmVsPnt7ICdDT01NT04uTkFNRURfRklMVEVSLklNUE9SVCcgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -28,7 +28,7 @@ export class HighlightPipe {
|
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
// Default behaviour
|
|
31
|
-
const regexp = new RegExp('[ ]?' + searchRegexp, 'gi');
|
|
31
|
+
const regexp = new RegExp('[ ]?' + searchRegexp, 'gi');
|
|
32
32
|
return ('' + value).replace(regexp, '<b>$&</b>');
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
45
45
|
type: Injectable,
|
|
46
46
|
args: [{ providedIn: 'root' }]
|
|
47
47
|
}] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9oaWdobGlnaHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLGFBQWE7SUFDeEIsNkNBQTZDO0lBQzdDLFNBQVMsQ0FBQyxLQUFVLEVBQUUsSUFBd0Q7UUFDNUUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDckQsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakUsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pGLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUUsSUFBSSxZQUFZLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsK0JBQStCO1FBRXhFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZiw2REFBNkQ7WUFDN0QsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2RSxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQ0wsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO29CQUN6QixLQUFLO29CQUNMLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7b0JBQ3hELE1BQU07b0JBQ04sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQ2xELENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO2FBQU0sQ0FBQztZQUNOLG9CQUFvQjtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQzt3R0E3QlUsYUFBYTtzR0FBYixhQUFhOzRHQUFiLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztpQkFDbEI7O2tCQUNBLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVtb3ZlRGlhY3JpdGljcywgdG9Cb29sZWFuIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcblxuQFBpcGUoe1xuICBuYW1lOiAnaGlnaGxpZ2h0Jyxcbn0pXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEhpZ2hsaWdodFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLy8gUmVwbGFjZSBzZWFyY2ggdGV4dCBieSBib2xkIHJlcHJlc2VudGF0aW9uXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogc3RyaW5nIHwgeyBzZWFyY2g6IHN0cmluZzsgd2l0aEFjY2VudD86IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgIWFyZ3MpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdHlwZW9mIGFyZ3MgPT09ICdzdHJpbmcnID8gYXJncyA6IGFyZ3Muc2VhcmNoO1xuICAgIGNvbnN0IHdpdGhBY2NlbnQgPSB0eXBlb2YgYXJncyAhPT0gJ3N0cmluZycgPyB0b0Jvb2xlYW4oYXJncz8ud2l0aEFjY2VudCwgZmFsc2UpIDogZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBzZWFyY2hUZXh0ICE9PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IHNlYXJjaFJlZ2V4cCA9IHNlYXJjaFRleHQucmVwbGFjZSgvWy5dL2csICdbLl0nKS5yZXBsYWNlKC9bKl0rL2csICcuKicpO1xuICAgIGlmIChzZWFyY2hSZWdleHAgPT09ICcuKicpIHJldHVybiB2YWx1ZTsgLy8gc2tpcCBpZiBjYW4gbWF0Y2ggZXZlcnl0aGluZ1xuXG4gICAgaWYgKHdpdGhBY2NlbnQpIHtcbiAgICAgIC8vIFJlbW92ZSBhbGwgYWNjZW50IGNoYXJhY3RlcnMgdG8gYWxsb3cgdmVyc2F0aWxlIGNvbXBhcmlzb25cbiAgICAgIGNvbnN0IGNsZWFuZWRTZWFyY2hUZXh0ID0gcmVtb3ZlRGlhY3JpdGljcyhzZWFyY2hSZWdleHApLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBpbmRleCA9IHJlbW92ZURpYWNyaXRpY3ModmFsdWUudG9VcHBlckNhc2UoKSkuaW5kZXhPZihjbGVhbmVkU2VhcmNoVGV4dCk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdmFsdWUuc3Vic3RyaW5nKDAsIGluZGV4KSArXG4gICAgICAgICAgJzxiPicgK1xuICAgICAgICAgIHZhbHVlLnN1YnN0cmluZyhpbmRleCwgaW5kZXggKyBjbGVhbmVkU2VhcmNoVGV4dC5sZW5ndGgpICtcbiAgICAgICAgICAnPC9iPicgK1xuICAgICAgICAgIHZhbHVlLnN1YnN0cmluZyhpbmRleCArIGNsZWFuZWRTZWFyY2hUZXh0Lmxlbmd0aClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXJcbiAgICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoJ1sgXT8nICsgc2VhcmNoUmVnZXhwLCAnZ2knKTtcbiAgICAgIHJldHVybiAoJycgKyB2YWx1ZSkucmVwbGFjZShyZWdleHAsICc8Yj4kJjwvYj4nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import { APP_PROGRESS_BAR_SERVICE } from '../services/progress-bar.service';
|
|
3
3
|
import { isNotNil, isNotNilOrBlank, toBoolean } from '../functions';
|
|
4
4
|
import { debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
|
|
@@ -207,7 +207,7 @@ export class ToolbarComponent {
|
|
|
207
207
|
this.cd.markForCheck();
|
|
208
208
|
}
|
|
209
209
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.IonRouterOutlet }, { token: i0.ChangeDetectorRef }, { token: APP_PROGRESS_BAR_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
210
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ToolbarComponent, selector: "app-toolbar", inputs: { progressBarMode: "progressBarMode", title: "title", color: "color", class: "class", backHref: "backHref", defaultBackHref: "defaultBackHref", hasValidate: "hasValidate", hasClose: "hasClose", hasSearch: "hasSearch", canGoBack: "canGoBack", canShowMenu: "canShowMenu" }, outputs: { onValidate: "onValidate", onClose: "onClose", onValidateAndClose: "onValidateAndClose", onBackClick: "onBackClick", onSearch: "onSearch" }, providers: [{ provide: ToolbarToken, useExisting: ToolbarComponent }], viewQueries: [{ propertyName: "searchbar", first: true, predicate: ["searchbar"], descendants: true, static: true }, { propertyName: "menuToggle", first: true, predicate: ["menuToggle"], descendants: true, static: true }], ngImport: i0, template: "<ion-header [class]=\"class\">\n <ion-toolbar [color]=\"color\">\n <ion-buttons slot=\"start\">\n <!-- back button -->\n @if (canGoBack) {\n <ion-button class=\"back-button\" (click)=\"doBackClick($event)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n }\n\n <!-- show menu button -->\n <ion-menu-toggle #menuToggle [menu]=\"'left'\" [class.cdk-visually-hidden]=\"canGoBack || !canShowMenu\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title, ion-segment\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\" collapse=\"true\">\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- search bar -->\n @if (hasSearch) {\n <ion-searchbar\n #searchbar\n animated\n type=\"search\"\n [class.cdk-visually-hidden]=\"!showSearchBar\"\n show-cancel-button=\"always\"\n (ionChange)=\"ionSearchBarChanged($event)\"\n (ionCancel)=\"toggleSearchBar()\"\n ></ion-searchbar>\n\n <!-- search button -->\n @if (!showSearchBar) {\n <ion-button (click)=\"toggleSearchBar()\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n }\n }\n\n <!-- close button -->\n @if (hasClose) {\n <ion-button (tap)=\"tapClose($event)\" class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n }\n\n <!-- validate button -->\n @if (hasValidate) {\n <ion-button (tap)=\"tapValidate($event)\" class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"save\"></ion-icon>\n </ion-button>\n }\n </ion-buttons>\n </ion-toolbar>\n\n <!-- progress bar -->\n <mat-progress-bar [color]=\"color | matColor\" [mode]=\"progressBarMode$ | push\"></mat-progress-bar>\n</ion-header>\n", styles: [""], dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i4.MatColorPipe, name: "matColor" }, { kind: "pipe", type: i5.RxPush, name: "push" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
210
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ToolbarComponent, selector: "app-toolbar", inputs: { progressBarMode: "progressBarMode", title: "title", color: "color", class: "class", backHref: "backHref", defaultBackHref: "defaultBackHref", hasValidate: ["hasValidate", "hasValidate", booleanAttribute], hasClose: ["hasClose", "hasClose", booleanAttribute], hasSearch: ["hasSearch", "hasSearch", booleanAttribute], canGoBack: ["canGoBack", "canGoBack", booleanAttribute], canShowMenu: ["canShowMenu", "canShowMenu", booleanAttribute] }, outputs: { onValidate: "onValidate", onClose: "onClose", onValidateAndClose: "onValidateAndClose", onBackClick: "onBackClick", onSearch: "onSearch" }, providers: [{ provide: ToolbarToken, useExisting: ToolbarComponent }], viewQueries: [{ propertyName: "searchbar", first: true, predicate: ["searchbar"], descendants: true, static: true }, { propertyName: "menuToggle", first: true, predicate: ["menuToggle"], descendants: true, static: true }], ngImport: i0, template: "<ion-header [class]=\"class\">\n <ion-toolbar [color]=\"color\">\n <ion-buttons slot=\"start\">\n <!-- back button -->\n @if (canGoBack) {\n <ion-button class=\"back-button\" (click)=\"doBackClick($event)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n }\n\n <!-- show menu button -->\n <ion-menu-toggle #menuToggle [menu]=\"'left'\" [class.cdk-visually-hidden]=\"canGoBack || !canShowMenu\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title, ion-segment\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\" collapse=\"true\">\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- search bar -->\n @if (hasSearch) {\n <ion-searchbar\n #searchbar\n animated\n type=\"search\"\n [class.cdk-visually-hidden]=\"!showSearchBar\"\n show-cancel-button=\"always\"\n (ionChange)=\"ionSearchBarChanged($event)\"\n (ionCancel)=\"toggleSearchBar()\"\n ></ion-searchbar>\n\n <!-- search button -->\n @if (!showSearchBar) {\n <ion-button (click)=\"toggleSearchBar()\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n }\n }\n\n <!-- close button -->\n @if (hasClose) {\n <ion-button (tap)=\"tapClose($event)\" class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n }\n\n <!-- validate button -->\n @if (hasValidate) {\n <ion-button (tap)=\"tapValidate($event)\" class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"save\"></ion-icon>\n </ion-button>\n }\n </ion-buttons>\n </ion-toolbar>\n\n <!-- progress bar -->\n <mat-progress-bar [color]=\"color | matColor\" [mode]=\"progressBarMode$ | push\"></mat-progress-bar>\n</ion-header>\n", styles: [""], dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i4.MatColorPipe, name: "matColor" }, { kind: "pipe", type: i5.RxPush, name: "push" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
211
211
|
}
|
|
212
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
213
213
|
type: Component,
|
|
@@ -230,15 +230,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
230
230
|
}], defaultBackHref: [{
|
|
231
231
|
type: Input
|
|
232
232
|
}], hasValidate: [{
|
|
233
|
-
type: Input
|
|
233
|
+
type: Input,
|
|
234
|
+
args: [{ transform: booleanAttribute }]
|
|
234
235
|
}], hasClose: [{
|
|
235
|
-
type: Input
|
|
236
|
+
type: Input,
|
|
237
|
+
args: [{ transform: booleanAttribute }]
|
|
236
238
|
}], hasSearch: [{
|
|
237
|
-
type: Input
|
|
239
|
+
type: Input,
|
|
240
|
+
args: [{ transform: booleanAttribute }]
|
|
238
241
|
}], canGoBack: [{
|
|
239
|
-
type: Input
|
|
242
|
+
type: Input,
|
|
243
|
+
args: [{ transform: booleanAttribute }]
|
|
240
244
|
}], canShowMenu: [{
|
|
241
|
-
type: Input
|
|
245
|
+
type: Input,
|
|
246
|
+
args: [{ transform: booleanAttribute }]
|
|
242
247
|
}], onValidate: [{
|
|
243
248
|
type: Output
|
|
244
249
|
}], onClose: [{
|
|
@@ -256,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
256
261
|
type: ViewChild,
|
|
257
262
|
args: ['menuToggle', { static: true }]
|
|
258
263
|
}] } });
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rvb2xiYXIvdG9vbGJhci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rvb2xiYXIvdG9vbGJhci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUdqRyxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztBQUUvRCxNQUFNLE9BQWdCLFlBQVk7Q0FRakM7QUFTRCxNQUFNLE9BQU8sZ0JBQWdCO0lBOERqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ2dEO0lBbEVsRCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUN0QixnQkFBZ0IsQ0FBUztJQUN6QixTQUFTLENBQVM7SUFFUCxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLENBQUM7SUFDdkUsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUVoQyxJQUFhLGVBQWUsQ0FBQyxLQUFzQjtRQUNqRCxJQUFJLElB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cG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVBQX1BST0dSRVNTX0JBUl9TRVJWSUNFLCBJUHJvZ3Jlc3NCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3Jlc3MtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25NZW51VG9nZ2xlLCBJb25Sb3V0ZXJPdXRsZXQsIElvblNlYXJjaGJhciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIHRvQm9vbGVhbiB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEhhbW1lclRhcEV2ZW50IH0gZnJvbSAnLi4vZ2VzdHVyZS9oYW1tZXIudXRpbHMnO1xuaW1wb3J0IHsgSEFNTUVSX1BSRVNTX1RJTUUgfSBmcm9tICcuLi9nZXN0dXJlL2dlc3R1cmUtY29uZmlnJztcbmltcG9ydCB7IEFwcENvbG9ycyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaGJhckNoYW5nZUV2ZW50RGV0YWlsIGFzIElTZWFyY2hiYXJTZWFyY2hiYXJDaGFuZ2VFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2Rpc3QvdHlwZXMvY29tcG9uZW50cy9zZWFyY2hiYXIvc2VhcmNoYmFyLWludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0Jhck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuXG5pbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSAnQHJ4LWFuZ3VsYXIvY2RrL3pvbmUtbGVzcy9icm93c2VyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRvb2xiYXJUb2tlbiB7XG4gIGFic3RyYWN0IG9uQmFja0NsaWNrOiBPYnNlcnZhYmxlPEV2ZW50PjtcblxuICBhYnN0cmFjdCBkb0JhY2tDbGljayhldmVudDogRXZlbnQpO1xuXG4gIGFic3RyYWN0IGdvQmFjaygpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGFic3RyYWN0IGNhbkdvQmFjazogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJ3Rvb2xiYXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRvb2xiYXJUb2tlbiwgdXNlRXhpc3Rpbmc6IFRvb2xiYXJDb21wb25lbnQgfV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgVG9vbGJhclRva2VuLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Nsb3NlVGFwQ291bnQgPSAwO1xuICBwcml2YXRlIF92YWxpZGF0ZVRhcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIHByaXZhdGUgX2JhY2tIcmVmOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2dyZXNzQmFyTW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2dyZXNzQmFyTW9kZT4obnVsbCk7XG4gIHByb3RlY3RlZCBzaG93U2VhcmNoQmFyID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IHByb2dyZXNzQmFyTW9kZSh2YWx1ZTogUHJvZ3Jlc3NCYXJNb2RlKSB7XG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlKSByZXR1cm47IC8vIFNraXAgaWYgbWFuYWdlZCBieSB0aGUgcHJvZ3Jlc3Mgc2VydmljZVxuICAgIHRoaXMucHJvZ3Jlc3NCYXJNb2RlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBwcm9ncmVzc0Jhck1vZGUoKTogUHJvZ3Jlc3NCYXJNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmVzc0Jhck1vZGUkLnZhbHVlO1xuICB9XG5cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgY29sb3I6IEFwcENvbG9ycyA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcblxuICBASW5wdXQoKSBzZXQgYmFja0hyZWYodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fYmFja0hyZWYpIHtcbiAgICAgIHRoaXMuX2JhY2tIcmVmID0gdmFsdWU7XG4gICAgICB0aGlzLmNhbkdvQmFjayA9IHRoaXMuY2FuR29CYWNrIHx8IGlzTm90TmlsKHZhbHVlKTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGJhY2tIcmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tIcmVmO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRlZmF1bHRCYWNrSHJlZih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9kZWZhdWx0QmFja0hyZWYpIHtcbiAgICAgIHRoaXMuX2RlZmF1bHRCYWNrSHJlZiA9IHZhbHVlO1xuICAgICAgdGhpcy5jYW5Hb0JhY2sgPSB0aGlzLmNhbkdvQmFjayB8fCBpc05vdE5pbCh2YWx1ZSk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZWZhdWx0QmFja0hyZWYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEJhY2tIcmVmO1xuICB9XG5cbiAgQElucHV0KCkgaGFzVmFsaWRhdGUgPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzQ2xvc2UgPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzU2VhcmNoOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5Hb0JhY2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhblNob3dNZW51ID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgb25WYWxpZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uVmFsaWRhdGVBbmRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkJhY2tDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVNlYXJjaGJhclNlYXJjaGJhckNoYW5nZUV2ZW50RGV0YWlsPj4oKTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hiYXI6IElvblNlYXJjaGJhcjtcbiAgQFZpZXdDaGlsZCgnbWVudVRvZ2dsZScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnVUb2dnbGU6IElvbk1lbnVUb2dnbGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXJPdXRsZXQ6IElvblJvdXRlck91dGxldCxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9QUk9HUkVTU19CQVJfU0VSVklDRSkgcHJvdGVjdGVkIHByb2dyZXNzQmFyU2VydmljZTogSVByb2dyZXNzQmFyU2VydmljZVxuICApIHtcbiAgICAvLyBMaXN0ZW4gcHJvZ3Jlc3MgYmFyIHNlcnZpY2UgbW9kZVxuICAgIGlmIChwcm9ncmVzc0JhclNlcnZpY2UpIHtcbiAgICAgIHByb2dyZXNzQmFyU2VydmljZS5vblByb2dyZXNzQ2hhbmdlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoPFByb2dyZXNzQmFyTW9kZT5udWxsKSwgLy8gbm9uZSwgYnkgZGVmYXVsdFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLCAvLyB3YWl0IDEwMG1zLCB0byBncm91cCBjaGFuZ2VzXG4gICAgICAgICAgLy8gREVCVUdcbiAgICAgICAgICAvL3RhcCgobW9kZSkgPT4gY29uc29sZS5kZWJ1ZygnW3Rvb2xiYXJdIFVwZGF0aW5nIHByb2dyZXNzQmFyTW9kZTogJyArIG1vZGUpKVxuXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLnByb2dyZXNzQmFyTW9kZSQubmV4dCh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaGFzVmFsaWRhdGUgPSB0b0Jvb2xlYW4odGhpcy5oYXNWYWxpZGF0ZSwgdGhpcy5vblZhbGlkYXRlLm9ic2VydmVkKTtcbiAgICB0aGlzLmNhbkdvQmFjayA9IHRvQm9vbGVhbihcbiAgICAgIHRoaXMuY2FuR29CYWNrLFxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuY2FuR29CYWNrKCkgfHwgaXNOb3ROaWxPckJsYW5rKHRoaXMuX2JhY2tIcmVmKSB8fCBpc05vdE5pbE9yQmxhbmsodGhpcy5fZGVmYXVsdEJhY2tIcmVmKVxuICAgICk7XG4gICAgdGhpcy5oYXNTZWFyY2ggPSB0b0Jvb2xlYW4odGhpcy5oYXNTZWFyY2gsIHRoaXMub25TZWFyY2gub2JzZXJ2ZWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vbkJhY2tDbGljay5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25CYWNrQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uVmFsaWRhdGUuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uVmFsaWRhdGUudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2xvc2UuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uQ2xvc2UudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uVmFsaWRhdGVBbmRDbG9zZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25WYWxpZGF0ZUFuZENsb3NlLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vblNlYXJjaC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25TZWFyY2gudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnNob3dTZWFyY2hCYXIgPSAhdGhpcy5zaG93U2VhcmNoQmFyO1xuICAgIGlmICh0aGlzLnNob3dTZWFyY2hCYXIgJiYgdGhpcy5zZWFyY2hiYXIpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGJhci5zZXRGb2N1cygpO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBkb0JhY2tDbGljayhldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm9uQmFja0NsaWNrLmVtaXQoZXZlbnQpO1xuXG4gICAgLy8gU3RvcCBwcm9wYWdhdGlvbiwgaWYgbmVlZCAoY2FuIGJlIGNhbmNlbGxlZCBieSBvbkJhY2tDbGljayBvYnNlcnZlcnMpXG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcblxuICAgIC8vIEV4ZWN1dGUgdGhlIGJhY2sgYWN0aW9uXG4gICAgdGhpcy5nb0JhY2soKTtcbiAgfVxuXG4gIGFzeW5jIGdvQmFjaygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbdG9vbGJhcl0gY2FsbGluZyBnb0JhY2soKScpO1xuICAgIGlmICh0aGlzLl9iYWNrSHJlZikge1xuICAgICAgY29uc3QgcmVwbGFjZVVybCA9ICF0aGlzLnJvdXRlck91dGxldC5jYW5Hb0JhY2soKTtcbiAgICAgIC8vIFJlbGF0aXZlIGhyZWZcbiAgICAgIGlmICh0aGlzLl9iYWNrSHJlZi5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9sbGVyLnNldERpcmVjdGlvbignYmFjaycpO1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX2JhY2tIcmVmXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCByZXBsYWNlVXJsIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUJhY2sodGhpcy5fYmFja0hyZWYpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuY2FuR29CYWNrKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5hdkNvbnRyb2xsZXIucG9wKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9kZWZhdWx0QmFja0hyZWYpIHtcbiAgICAgIC8vIFJlbGF0aXZlIGhyZWZcbiAgICAgIGlmICh0aGlzLl9kZWZhdWx0QmFja0hyZWYuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAgIHRoaXMubmF2Q29udHJvbGxlci5zZXREaXJlY3Rpb24oJ2JhY2snKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLl9kZWZhdWx0QmFja0hyZWZdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlQmFjayh0aGlzLl9kZWZhdWx0QmFja0hyZWYpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW3Rvb2xiYXJdIENhbm5vdCBnbyBiYWNrLiBNaXNzaW5nIGF0dHJpYnV0ZSAnZGVmYXVsdEJhY2tIcmVmJyBvciAnYmFja0hyZWYnXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRhcENsb3NlKGV2ZW50OiBIYW1tZXJUYXBFdmVudCkge1xuICAgIC8vIERFViBvbmx5XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhcIlt0b29sYmFyXSB0YXBDbG9zZVwiLCBldmVudC50YXBDb3VudCk7XG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQgPiAwKSByZXR1cm47XG5cbiAgICAvLyBEaXN0aW5ndWlzaCBzaW1wbGUgYW5kIGRvdWJsZSB0YXBcbiAgICB0aGlzLl9jbG9zZVRhcENvdW50ID0gZXZlbnQudGFwQ291bnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBFdmVudCBpcyBvYnNvbGV0ZSAoYSBuZXcgdGFwIGV2ZW50IG9jY3VyKVxuICAgICAgaWYgKGV2ZW50LnRhcENvdW50IDwgdGhpcy5fY2xvc2VUYXBDb3VudCkge1xuICAgICAgICAvLyBJZ25vcmUgZXZlbnRcbiAgICAgIH1cblxuICAgICAgLy8gSWYgZXZlbnQgc3RpbGwgdGhlIGxhc3QgdGFwIGV2ZW50OiBwcm9jZXNzIGl0XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoZXZlbnQuc3JjRXZlbnQgfHwgZXZlbnQpO1xuXG4gICAgICAgIC8vIFJlc2V0IHRhYiBjb3VudFxuICAgICAgICB0aGlzLl9jbG9zZVRhcENvdW50ID0gMDtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgdGFwVmFsaWRhdGUoZXZlbnQ6IEhhbW1lclRhcEV2ZW50KSB7XG4gICAgLy8gREVWIG9ubHlcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJbdG9vbGJhcl0gdGFwVmFsaWRhdGVcIiwgZXZlbnQudGFwQ291bnQpO1xuXG4gICAgaWYgKHRoaXMub25WYWxpZGF0ZUFuZENsb3NlLm9ic2VydmVkKSB7XG4gICAgICB0aGlzLm9uVmFsaWRhdGUuZW1pdChldmVudC5zcmNFdmVudCB8fCBldmVudCk7XG4gICAgfVxuXG4gICAgLy8gRGlzdGluZ3Vpc2ggc2ltcGxlIGFuZCBkb3VibGUgdGFwXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZVRhcENvdW50ID0gZXZlbnQudGFwQ291bnQ7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gRXZlbnQgaXMgb2Jzb2xldGUgKGEgbmV3IHRhcCBldmVudCBvY2N1cilcbiAgICAgICAgaWYgKGV2ZW50LnRhcENvdW50IDwgdGhpcy5fdmFsaWRhdGVUYXBDb3VudCkge1xuICAgICAgICAgIC8vIElnbm9yZSBldmVudFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgZXZlbnQgc3RpbGwgdGhlIGxhc3QgdGFwIGV2ZW50OiBwcm9jZXNzIGl0XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLl92YWxpZGF0ZVRhcENvdW50ID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLm9uVmFsaWRhdGUuZW1pdChldmVudC5zcmNFdmVudCB8fCBldmVudCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl92YWxpZGF0ZVRhcENvdW50ID49IDIpIHtcbiAgICAgICAgICAgIHRoaXMub25WYWxpZGF0ZUFuZENsb3NlLmVtaXQoZXZlbnQuc3JjRXZlbnQgfHwgZXZlbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlc2V0IHRhYiBjb3VudFxuICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICB9LCBIQU1NRVJfUFJFU1NfVElNRSArIDEwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaW9uU2VhcmNoQmFyQ2hhbmdlZChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8SVNlYXJjaGJhclNlYXJjaGJhckNoYW5nZUV2ZW50RGV0YWlsPik7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyIFtjbGFzc109XCJjbGFzc1wiPlxuICA8aW9uLXRvb2xiYXIgW2NvbG9yXT1cImNvbG9yXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPCEtLSBiYWNrIGJ1dHRvbiAtLT5cbiAgICAgIEBpZiAoY2FuR29CYWNrKSB7XG4gICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiYmFjay1idXR0b25cIiAoY2xpY2spPVwiZG9CYWNrQ2xpY2soJGV2ZW50KVwiIHJvdXRlckRpcmVjdGlvbj1cImJhY2tcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIHNob3cgbWVudSBidXR0b24gLS0+XG4gICAgICA8aW9uLW1lbnUtdG9nZ2xlICNtZW51VG9nZ2xlIFttZW51XT1cIidsZWZ0J1wiIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cImNhbkdvQmFjayB8fCAhY2FuU2hvd01lbnVcIj5cbiAgICAgICAgPGlvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwibWVudVwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLW1lbnUtdG9nZ2xlPlxuXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1zdGFydF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9pb24tYnV0dG9ucz5cblxuICAgIDxpb24tdGl0bGUgW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvaW9uLXRpdGxlPlxuXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW9uLXRpdGxlLCBpb24tc2VnbWVudFwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlvbi1idXR0b25zW3Nsb3Q9ZW5kXVwiPjwvbmctY29udGVudD5cblxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgY29sbGFwc2U9XCJ0cnVlXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1lbmRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8IS0tIHNlYXJjaCBiYXIgLS0+XG4gICAgICBAaWYgKGhhc1NlYXJjaCkge1xuICAgICAgICA8aW9uLXNlYXJjaGJhclxuICAgICAgICAgICNzZWFyY2hiYXJcbiAgICAgICAgICBhbmltYXRlZFxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIiFzaG93U2VhcmNoQmFyXCJcbiAgICAgICAgICBzaG93LWNhbmNlbC1idXR0b249XCJhbHdheXNcIlxuICAgICAgICAgIChpb25DaGFuZ2UpPVwiaW9uU2VhcmNoQmFyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoaW9uQ2FuY2VsKT1cInRvZ2dsZVNlYXJjaEJhcigpXCJcbiAgICAgICAgPjwvaW9uLXNlYXJjaGJhcj5cblxuICAgICAgICA8IS0tIHNlYXJjaCBidXR0b24gLS0+XG4gICAgICAgIEBpZiAoIXNob3dTZWFyY2hCYXIpIHtcbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU2VhcmNoQmFyKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInNlYXJjaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDwhLS0gY2xvc2UgYnV0dG9uIC0tPlxuICAgICAgQGlmIChoYXNDbG9zZSkge1xuICAgICAgICA8aW9uLWJ1dHRvbiAodGFwKT1cInRhcENsb3NlKCRldmVudClcIiBjbGFzcz1cInZpc2libGUteHMgdmlzaWJsZS1zbSB2aXNpYmxlLW1vYmlsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNsb3NlXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIHZhbGlkYXRlIGJ1dHRvbiAtLT5cbiAgICAgIEBpZiAoaGFzVmFsaWRhdGUpIHtcbiAgICAgICAgPGlvbi1idXR0b24gKHRhcCk9XCJ0YXBWYWxpZGF0ZSgkZXZlbnQpXCIgY2xhc3M9XCJ2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGVcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJzYXZlXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfVxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG5cbiAgPCEtLSBwcm9ncmVzcyBiYXIgLS0+XG4gIDxtYXQtcHJvZ3Jlc3MtYmFyIFtjb2xvcl09XCJjb2xvciB8IG1hdENvbG9yXCIgW21vZGVdPVwicHJvZ3Jlc3NCYXJNb2RlJCB8IHB1c2hcIj48L21hdC1wcm9ncmVzcy1iYXI+XG48L2lvbi1oZWFkZXI+XG4iXX0=
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rvb2xiYXIvdG9vbGJhci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rvb2xiYXIvdG9vbGJhci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQXVCLE1BQU0sa0NBQWtDLENBQUM7QUFHakcsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUs5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7QUFFL0QsTUFBTSxPQUFnQixZQUFZO0NBUWpDO0FBU0QsTUFBTSxPQUFPLGdCQUFnQjtJQThEakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNnRDtJQWxFbEQsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuQixpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDdEIsZ0JBQWdCLENBQVM7SUFDekIsU0FBUyxDQUFTO0lBRVAsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFaEMsSUFBYSxlQUFlLENBQUMsS0FBc0I7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QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFbUMsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNHLFVBQVU7c0JBQXBELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVBQX1BST0dSRVNTX0JBUl9TRVJWSUNFLCBJUHJvZ3Jlc3NCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3Jlc3MtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25NZW51VG9nZ2xlLCBJb25Sb3V0ZXJPdXRsZXQsIElvblNlYXJjaGJhciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIHRvQm9vbGVhbiB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEhhbW1lclRhcEV2ZW50IH0gZnJvbSAnLi4vZ2VzdHVyZS9oYW1tZXIudXRpbHMnO1xuaW1wb3J0IHsgSEFNTUVSX1BSRVNTX1RJTUUgfSBmcm9tICcuLi9nZXN0dXJlL2dlc3R1cmUtY29uZmlnJztcbmltcG9ydCB7IEFwcENvbG9ycyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaGJhckNoYW5nZUV2ZW50RGV0YWlsIGFzIElTZWFyY2hiYXJTZWFyY2hiYXJDaGFuZ2VFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2Rpc3QvdHlwZXMvY29tcG9uZW50cy9zZWFyY2hiYXIvc2VhcmNoYmFyLWludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0Jhck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuXG5pbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSAnQHJ4LWFuZ3VsYXIvY2RrL3pvbmUtbGVzcy9icm93c2VyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRvb2xiYXJUb2tlbiB7XG4gIGFic3RyYWN0IG9uQmFja0NsaWNrOiBPYnNlcnZhYmxlPEV2ZW50PjtcblxuICBhYnN0cmFjdCBkb0JhY2tDbGljayhldmVudDogRXZlbnQpO1xuXG4gIGFic3RyYWN0IGdvQmFjaygpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGFic3RyYWN0IGNhbkdvQmFjazogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJ3Rvb2xiYXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRvb2xiYXJUb2tlbiwgdXNlRXhpc3Rpbmc6IFRvb2xiYXJDb21wb25lbnQgfV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgVG9vbGJhclRva2VuLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Nsb3NlVGFwQ291bnQgPSAwO1xuICBwcml2YXRlIF92YWxpZGF0ZVRhcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIHByaXZhdGUgX2JhY2tIcmVmOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2dyZXNzQmFyTW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2dyZXNzQmFyTW9kZT4obnVsbCk7XG4gIHByb3RlY3RlZCBzaG93U2VhcmNoQmFyID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IHByb2dyZXNzQmFyTW9kZSh2YWx1ZTogUHJvZ3Jlc3NCYXJNb2RlKSB7XG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlKSByZXR1cm47IC8vIFNraXAgaWYgbWFuYWdlZCBieSB0aGUgcHJvZ3Jlc3Mgc2VydmljZVxuICAgIHRoaXMucHJvZ3Jlc3NCYXJNb2RlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBwcm9ncmVzc0Jhck1vZGUoKTogUHJvZ3Jlc3NCYXJNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmVzc0Jhck1vZGUkLnZhbHVlO1xuICB9XG5cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgY29sb3I6IEFwcENvbG9ycyA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcblxuICBASW5wdXQoKSBzZXQgYmFja0hyZWYodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fYmFja0hyZWYpIHtcbiAgICAgIHRoaXMuX2JhY2tIcmVmID0gdmFsdWU7XG4gICAgICB0aGlzLmNhbkdvQmFjayA9IHRoaXMuY2FuR29CYWNrIHx8IGlzTm90TmlsKHZhbHVlKTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGJhY2tIcmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tIcmVmO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRlZmF1bHRCYWNrSHJlZih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9kZWZhdWx0QmFja0hyZWYpIHtcbiAgICAgIHRoaXMuX2RlZmF1bHRCYWNrSHJlZiA9IHZhbHVlO1xuICAgICAgdGhpcy5jYW5Hb0JhY2sgPSB0aGlzLmNhbkdvQmFjayB8fCBpc05vdE5pbCh2YWx1ZSk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZWZhdWx0QmFja0hyZWYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEJhY2tIcmVmO1xuICB9XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1ZhbGlkYXRlID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNDbG9zZSA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU2VhcmNoOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2FuR29CYWNrOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2FuU2hvd01lbnUgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBvblZhbGlkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25WYWxpZGF0ZUFuZENsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQmFja0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJU2VhcmNoYmFyU2VhcmNoYmFyQ2hhbmdlRXZlbnREZXRhaWw+PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaGJhcicsIHsgc3RhdGljOiB0cnVlIH0pIHNlYXJjaGJhcjogSW9uU2VhcmNoYmFyO1xuICBAVmlld0NoaWxkKCdtZW51VG9nZ2xlJywgeyBzdGF0aWM6IHRydWUgfSkgbWVudVRvZ2dsZTogSW9uTWVudVRvZ2dsZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHJvdXRlck91dGxldDogSW9uUm91dGVyT3V0bGV0LFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX1BST0dSRVNTX0JBUl9TRVJWSUNFKSBwcm90ZWN0ZWQgcHJvZ3Jlc3NCYXJTZXJ2aWNlOiBJUHJvZ3Jlc3NCYXJTZXJ2aWNlXG4gICkge1xuICAgIC8vIExpc3RlbiBwcm9ncmVzcyBiYXIgc2VydmljZSBtb2RlXG4gICAgaWYgKHByb2dyZXNzQmFyU2VydmljZSkge1xuICAgICAgcHJvZ3Jlc3NCYXJTZXJ2aWNlLm9uUHJvZ3Jlc3NDaGFuZ2VkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aCg8UHJvZ3Jlc3NCYXJNb2RlPm51bGwpLCAvLyBub25lLCBieSBkZWZhdWx0XG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksIC8vIHdhaXQgMTAwbXMsIHRvIGdyb3VwIGNoYW5nZXNcbiAgICAgICAgICAvLyBERUJVR1xuICAgICAgICAgIC8vdGFwKChtb2RlKSA9PiBjb25zb2xlLmRlYnVnKCdbdG9vbGJhcl0gVXBkYXRpbmcgcHJvZ3Jlc3NCYXJNb2RlOiAnICsgbW9kZSkpXG5cbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMucHJvZ3Jlc3NCYXJNb2RlJC5uZXh0KHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNWYWxpZGF0ZSA9IHRvQm9vbGVhbih0aGlzLmhhc1ZhbGlkYXRlLCB0aGlzLm9uVmFsaWRhdGUub2JzZXJ2ZWQpO1xuICAgIHRoaXMuY2FuR29CYWNrID0gdG9Cb29sZWFuKFxuICAgICAgdGhpcy5jYW5Hb0JhY2ssXG4gICAgICB0aGlzLnJvdXRlck91dGxldC5jYW5Hb0JhY2soKSB8fCBpc05vdE5pbE9yQmxhbmsodGhpcy5fYmFja0hyZWYpIHx8IGlzTm90TmlsT3JCbGFuayh0aGlzLl9kZWZhdWx0QmFja0hyZWYpXG4gICAgKTtcbiAgICB0aGlzLmhhc1NlYXJjaCA9IHRvQm9vbGVhbih0aGlzLmhhc1NlYXJjaCwgdGhpcy5vblNlYXJjaC5vYnNlcnZlZCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uQmFja0NsaWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vbkJhY2tDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25WYWxpZGF0ZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25WYWxpZGF0ZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25DbG9zZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25DbG9zZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25WYWxpZGF0ZUFuZENsb3NlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblZhbGlkYXRlQW5kQ2xvc2UudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uU2VhcmNoLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNlYXJjaC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlU2VhcmNoQmFyKCkge1xuICAgIHRoaXMuc2hvd1NlYXJjaEJhciA9ICF0aGlzLnNob3dTZWFyY2hCYXI7XG4gICAgaWYgKHRoaXMuc2hvd1NlYXJjaEJhciAmJiB0aGlzLnNlYXJjaGJhcikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoYmFyLnNldEZvY3VzKCk7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgfVxuXG4gIGRvQmFja0NsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25CYWNrQ2xpY2suZW1pdChldmVudCk7XG5cbiAgICAvLyBTdG9wIHByb3BhZ2F0aW9uLCBpZiBuZWVkIChjYW4gYmUgY2FuY2VsbGVkIGJ5IG9uQmFja0NsaWNrIG9ic2VydmVycylcbiAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuXG4gICAgLy8gRXhlY3V0ZSB0aGUgYmFjayBhY3Rpb25cbiAgICB0aGlzLmdvQmFjaygpO1xuICB9XG5cbiAgYXN5bmMgZ29CYWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1t0b29sYmFyXSBjYWxsaW5nIGdvQmFjaygpJyk7XG4gICAgaWYgKHRoaXMuX2JhY2tIcmVmKSB7XG4gICAgICBjb25zdCByZXBsYWNlVXJsID0gIXRoaXMucm91dGVyT3V0bGV0LmNhbkdvQmFjaygpO1xuICAgICAgLy8gUmVsYXRpdmUgaHJlZlxuICAgICAgaWYgKHRoaXMuX2JhY2tIcmVmLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICB0aGlzLm5hdkNvbnRyb2xsZXIuc2V0RGlyZWN0aW9uKCdiYWNrJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5fYmFja0hyZWZdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHJlcGxhY2VVcmwgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlQmFjayh0aGlzLl9iYWNrSHJlZik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlck91dGxldC5jYW5Hb0JhY2soKSkge1xuICAgICAgcmV0dXJuIHRoaXMubmF2Q29udHJvbGxlci5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RlZmF1bHRCYWNrSHJlZikge1xuICAgICAgLy8gUmVsYXRpdmUgaHJlZlxuICAgICAgaWYgKHRoaXMuX2RlZmF1bHRCYWNrSHJlZi5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9sbGVyLnNldERpcmVjdGlvbignYmFjaycpO1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX2RlZmF1bHRCYWNrSHJlZl0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVCYWNrKHRoaXMuX2RlZmF1bHRCYWNrSHJlZik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbdG9vbGJhcl0gQ2Fubm90IGdvIGJhY2suIE1pc3NpbmcgYXR0cmlidXRlICdkZWZhdWx0QmFja0hyZWYnIG9yICdiYWNrSHJlZidcIik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdGFwQ2xvc2UoZXZlbnQ6IEhhbW1lclRhcEV2ZW50KSB7XG4gICAgLy8gREVWIG9ubHlcbiAgICAvLyBjb25zb2xlLmRlYnVnKFwiW3Rvb2xiYXJdIHRhcENsb3NlXCIsIGV2ZW50LnRhcENvdW50KTtcbiAgICBpZiAodGhpcy5fdmFsaWRhdGVUYXBDb3VudCA+IDApIHJldHVybjtcblxuICAgIC8vIERpc3Rpbmd1aXNoIHNpbXBsZSBhbmQgZG91YmxlIHRhcFxuICAgIHRoaXMuX2Nsb3NlVGFwQ291bnQgPSBldmVudC50YXBDb3VudDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIEV2ZW50IGlzIG9ic29sZXRlIChhIG5ldyB0YXAgZXZlbnQgb2NjdXIpXG4gICAgICBpZiAoZXZlbnQudGFwQ291bnQgPCB0aGlzLl9jbG9zZVRhcENvdW50KSB7XG4gICAgICAgIC8vIElnbm9yZSBldmVudFxuICAgICAgfVxuXG4gICAgICAvLyBJZiBldmVudCBzdGlsbCB0aGUgbGFzdCB0YXAgZXZlbnQ6IHByb2Nlc3MgaXRcbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdChldmVudC5zcmNFdmVudCB8fCBldmVudCk7XG5cbiAgICAgICAgLy8gUmVzZXQgdGFiIGNvdW50XG4gICAgICAgIHRoaXMuX2Nsb3NlVGFwQ291bnQgPSAwO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICB0YXBWYWxpZGF0ZShldmVudDogSGFtbWVyVGFwRXZlbnQpIHtcbiAgICAvLyBERVYgb25seVxuICAgIC8vY29uc29sZS5kZWJ1ZyhcIlt0b29sYmFyXSB0YXBWYWxpZGF0ZVwiLCBldmVudC50YXBDb3VudCk7XG5cbiAgICBpZiAodGhpcy5vblZhbGlkYXRlQW5kQ2xvc2Uub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMub25WYWxpZGF0ZS5lbWl0KGV2ZW50LnNyY0V2ZW50IHx8IGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBEaXN0aW5ndWlzaCBzaW1wbGUgYW5kIGRvdWJsZSB0YXBcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQgPSBldmVudC50YXBDb3VudDtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBFdmVudCBpcyBvYnNvbGV0ZSAoYSBuZXcgdGFwIGV2ZW50IG9jY3VyKVxuICAgICAgICBpZiAoZXZlbnQudGFwQ291bnQgPCB0aGlzLl92YWxpZGF0ZVRhcENvdW50KSB7XG4gICAgICAgICAgLy8gSWdub3JlIGV2ZW50XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBldmVudCBzdGlsbCB0aGUgbGFzdCB0YXAgZXZlbnQ6IHByb2Nlc3MgaXRcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMub25WYWxpZGF0ZS5lbWl0KGV2ZW50LnNyY0V2ZW50IHx8IGV2ZW50KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQgPj0gMikge1xuICAgICAgICAgICAgdGhpcy5vblZhbGlkYXRlQW5kQ2xvc2UuZW1pdChldmVudC5zcmNFdmVudCB8fCBldmVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUmVzZXQgdGFiIGNvdW50XG4gICAgICAgICAgdGhpcy5fdmFsaWRhdGVUYXBDb3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0sIEhBTU1FUl9QUkVTU19USU1FICsgMTApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpb25TZWFyY2hCYXJDaGFuZ2VkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25TZWFyY2guZW1pdChldmVudCBhcyBDdXN0b21FdmVudDxJU2VhcmNoYmFyU2VhcmNoYmFyQ2hhbmdlRXZlbnREZXRhaWw+KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXIgW2NsYXNzXT1cImNsYXNzXCI+XG4gIDxpb24tdG9vbGJhciBbY29sb3JdPVwiY29sb3JcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8IS0tIGJhY2sgYnV0dG9uIC0tPlxuICAgICAgQGlmIChjYW5Hb0JhY2spIHtcbiAgICAgICAgPGlvbi1idXR0b24gY2xhc3M9XCJiYWNrLWJ1dHRvblwiIChjbGljayk9XCJkb0JhY2tDbGljaygkZXZlbnQpXCIgcm91dGVyRGlyZWN0aW9uPVwiYmFja1wiPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImFycm93LWJhY2tcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gc2hvdyBtZW51IGJ1dHRvbiAtLT5cbiAgICAgIDxpb24tbWVudS10b2dnbGUgI21lbnVUb2dnbGUgW21lbnVdPVwiJ2xlZnQnXCIgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiY2FuR29CYWNrIHx8ICFjYW5TaG93TWVudVwiPlxuICAgICAgICA8aW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJtZW51XCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tbWVudS10b2dnbGU+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PXN0YXJ0XVwiPjwvbmctY29udGVudD5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZSBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9pb24tdGl0bGU+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpb24tdGl0bGUsIGlvbi1zZWdtZW50XCI+PC9uZy1jb250ZW50PlxuXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW9uLWJ1dHRvbnNbc2xvdD1lbmRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIiBjb2xsYXBzZT1cInRydWVcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWVuZF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDwhLS0gc2VhcmNoIGJhciAtLT5cbiAgICAgIEBpZiAoaGFzU2VhcmNoKSB7XG4gICAgICAgIDxpb24tc2VhcmNoYmFyXG4gICAgICAgICAgI3NlYXJjaGJhclxuICAgICAgICAgIGFuaW1hdGVkXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiIXNob3dTZWFyY2hCYXJcIlxuICAgICAgICAgIHNob3ctY2FuY2VsLWJ1dHRvbj1cImFsd2F5c1wiXG4gICAgICAgICAgKGlvbkNoYW5nZSk9XCJpb25TZWFyY2hCYXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChpb25DYW5jZWwpPVwidG9nZ2xlU2VhcmNoQmFyKClcIlxuICAgICAgICA+PC9pb24tc2VhcmNoYmFyPlxuXG4gICAgICAgIDwhLS0gc2VhcmNoIGJ1dHRvbiAtLT5cbiAgICAgICAgQGlmICghc2hvd1NlYXJjaEJhcikge1xuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVTZWFyY2hCYXIoKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwic2VhcmNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgPCEtLSBjbG9zZSBidXR0b24gLS0+XG4gICAgICBAaWYgKGhhc0Nsb3NlKSB7XG4gICAgICAgIDxpb24tYnV0dG9uICh0YXApPVwidGFwQ2xvc2UoJGV2ZW50KVwiIGNsYXNzPVwidmlzaWJsZS14cyB2aXNpYmxlLXNtIHZpc2libGUtbW9iaWxlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gdmFsaWRhdGUgYnV0dG9uIC0tPlxuICAgICAgQGlmIChoYXNWYWxpZGF0ZSkge1xuICAgICAgICA8aW9uLWJ1dHRvbiAodGFwKT1cInRhcFZhbGlkYXRlKCRldmVudClcIiBjbGFzcz1cInZpc2libGUteHMgdmlzaWJsZS1zbSB2aXNpYmxlLW1vYmlsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInNhdmVcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cblxuICA8IS0tIHByb2dyZXNzIGJhciAtLT5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgW2NvbG9yXT1cImNvbG9yIHwgbWF0Q29sb3JcIiBbbW9kZV09XCJwcm9ncmVzc0Jhck1vZGUkIHwgcHVzaFwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbjwvaW9uLWhlYWRlcj5cbiJdfQ==
|