UNPKG

@netgrif/components

Version:

Netgrif Application Engine frontend Angular components

51 lines 25.7 kB
import { Component, Inject } from '@angular/core'; import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper'; import { AbstractNewCaseComponent, NAE_SIDE_MENU_CONTROL } from '@netgrif/components-core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "@netgrif/components-core"; import * as i3 from "angular2-hotkeys"; import * as i4 from "@ngx-translate/core"; import * as i5 from "@angular/common"; import * as i6 from "@ngbracket/ngx-layout"; import * as i7 from "@angular/material/autocomplete"; import * as i8 from "@angular/material/core"; import * as i9 from "@angular/material/button"; import * as i10 from "@angular/material/stepper"; import * as i11 from "@angular/material/input"; import * as i12 from "@angular/material/form-field"; import * as i13 from "@angular/material/progress-spinner"; /** * @deprecated * */ export class NewCaseComponent extends AbstractNewCaseComponent { _sideMenuControl; _formBuilder; _snackBarService; _caseResourceService; _translate; isVersionVisible; constructor(_sideMenuControl, _formBuilder, _snackBarService, _caseResourceService, _hotkeysService, _translate) { super(_sideMenuControl, _formBuilder, _snackBarService, _caseResourceService, _hotkeysService, _translate); this._sideMenuControl = _sideMenuControl; this._formBuilder = _formBuilder; this._snackBarService = _snackBarService; this._caseResourceService = _caseResourceService; this._translate = _translate; this.isVersionVisible = _sideMenuControl.isVersionVisible; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NewCaseComponent, deps: [{ token: NAE_SIDE_MENU_CONTROL }, { token: i1.FormBuilder }, { token: i2.SnackBarService }, { token: i2.CaseResourceService }, { token: i3.HotkeysService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NewCaseComponent, selector: "nc-new-case", providers: [{ provide: STEPPER_GLOBAL_OPTIONS, useValue: { showError: true } }], usesInheritance: true, ngImport: i0, template: "<div #toolbar class=\"custom-mat-toolbar\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{titleShortening()}}\n</div>\n<mat-vertical-stepper *ngIf=\"hasMultipleNets$ | async\" linear #stepper1 class=\"netgrif-input\">\n <mat-step [stepControl]=\"processFormControl\" errorMessage=\"{{'side-menu.new-case.errFirst' | translate}}\">\n <ng-template matStepLabel>{{'side-menu.new-case.choose' | translate}}</ng-template>\n <mat-form-field appearance=\"outline\">\n <input type=\"text\" matInput [formControl]=\"processFormControl\" [matAutocomplete]=\"auto\" required\n (keyup.enter)=\"nextStep()\" (change)=\"checkVersion(processFormControl.value)\">\n <span class=\"version-span\" *ngIf=\"isVersionVisible\" matSuffix>{{netVersion}}</span>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\"\n (optionSelected)=\"showVersion($event.option)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option\">\n {{option.viewValue}}\n <span class=\"version-span\" *ngIf=\"isVersionVisible\">{{option.version}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <div>\n <button *ngIf=\"isCaseTitleEnabled()\" mat-button\n (click)=\"toNextStep(processFormControl.value)\">{{'side-menu.new-case.next' | translate}}</button>\n <button *ngIf=\"!isCaseTitleEnabled()\" mat-raised-button color=\"primary\"\n (click)=\"createNewCase()\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n <mat-step *ngIf=\"isCaseTitleEnabled()\" [stepControl]=\"titleFormControl\"\n errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\">\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field appearance=\"outline\">\n <input matInput placeholder=\"Title\" autocomplete=\"off\" [formControl]=\"titleFormControl\"\n [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div>\n <button mat-button\n (click)=\"stepper1.reset(); checkVersion(processFormControl.value)\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-button (click)=\"createNewCase()\">\n <mat-spinner *ngIf=\"loadingSubmit | async\"\n mode=\"indeterminate\"\n diameter=\"36\"\n color=\"accent\"\n fxFlex></mat-spinner>\n <span *ngIf=\"(loadingSubmit | async) === false\"\n fxFlex>{{'side-menu.new-case.create' | translate}}</span>\n </button>\n </div>\n </mat-step>\n</mat-vertical-stepper>\n<mat-vertical-stepper *ngIf=\"(hasMultipleNets$ | async) === false\" linear #stepper2 class=\"netgrif-input\">\n <mat-step [stepControl]=\"titleFormControl\" errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\">\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field appearance=\"outline\">\n <input matInput placeholder=\"Title\" autocomplete=\"off\" [formControl]=\"titleFormControl\"\n [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div>\n <button mat-button (click)=\"stepper2.reset()\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-raised-button color=\"primary\"\n (click)=\"createNewCase()\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n</mat-vertical-stepper>\n<div *ngIf=\"(notInitialized$ | async)\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"spinner-margin\"></mat-spinner>\n</div>\n", styles: [".version-span{padding-left:8px;color:gray}.spinner-margin{margin-top:16px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i10.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i10.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i12.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i13.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NewCaseComponent, decorators: [{ type: Component, args: [{ selector: 'nc-new-case', providers: [{ provide: STEPPER_GLOBAL_OPTIONS, useValue: { showError: true } }], template: "<div #toolbar class=\"custom-mat-toolbar\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{titleShortening()}}\n</div>\n<mat-vertical-stepper *ngIf=\"hasMultipleNets$ | async\" linear #stepper1 class=\"netgrif-input\">\n <mat-step [stepControl]=\"processFormControl\" errorMessage=\"{{'side-menu.new-case.errFirst' | translate}}\">\n <ng-template matStepLabel>{{'side-menu.new-case.choose' | translate}}</ng-template>\n <mat-form-field appearance=\"outline\">\n <input type=\"text\" matInput [formControl]=\"processFormControl\" [matAutocomplete]=\"auto\" required\n (keyup.enter)=\"nextStep()\" (change)=\"checkVersion(processFormControl.value)\">\n <span class=\"version-span\" *ngIf=\"isVersionVisible\" matSuffix>{{netVersion}}</span>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\"\n (optionSelected)=\"showVersion($event.option)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option\">\n {{option.viewValue}}\n <span class=\"version-span\" *ngIf=\"isVersionVisible\">{{option.version}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <div>\n <button *ngIf=\"isCaseTitleEnabled()\" mat-button\n (click)=\"toNextStep(processFormControl.value)\">{{'side-menu.new-case.next' | translate}}</button>\n <button *ngIf=\"!isCaseTitleEnabled()\" mat-raised-button color=\"primary\"\n (click)=\"createNewCase()\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n <mat-step *ngIf=\"isCaseTitleEnabled()\" [stepControl]=\"titleFormControl\"\n errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\">\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field appearance=\"outline\">\n <input matInput placeholder=\"Title\" autocomplete=\"off\" [formControl]=\"titleFormControl\"\n [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div>\n <button mat-button\n (click)=\"stepper1.reset(); checkVersion(processFormControl.value)\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-button (click)=\"createNewCase()\">\n <mat-spinner *ngIf=\"loadingSubmit | async\"\n mode=\"indeterminate\"\n diameter=\"36\"\n color=\"accent\"\n fxFlex></mat-spinner>\n <span *ngIf=\"(loadingSubmit | async) === false\"\n fxFlex>{{'side-menu.new-case.create' | translate}}</span>\n </button>\n </div>\n </mat-step>\n</mat-vertical-stepper>\n<mat-vertical-stepper *ngIf=\"(hasMultipleNets$ | async) === false\" linear #stepper2 class=\"netgrif-input\">\n <mat-step [stepControl]=\"titleFormControl\" errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\">\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field appearance=\"outline\">\n <input matInput placeholder=\"Title\" autocomplete=\"off\" [formControl]=\"titleFormControl\"\n [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div>\n <button mat-button (click)=\"stepper2.reset()\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-raised-button color=\"primary\"\n (click)=\"createNewCase()\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n</mat-vertical-stepper>\n<div *ngIf=\"(notInitialized$ | async)\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"spinner-margin\"></mat-spinner>\n</div>\n", styles: [".version-span{padding-left:8px;color:gray}.spinner-margin{margin-top:16px}\n"] }] }], ctorParameters: () => [{ type: i2.SideMenuControl, decorators: [{ type: Inject, args: [NAE_SIDE_MENU_CONTROL] }] }, { type: i1.FormBuilder }, { type: i2.SnackBarService }, { type: i2.CaseResourceService }, { type: i3.HotkeysService }, { type: i4.TranslateService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy9uZXctY2FzZS9uZXctY2FzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMvc3JjL2xpYi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL25ldy1jYXNlL25ldy1jYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzVELE9BQU8sRUFDSCx3QkFBd0IsRUFFeEIscUJBQXFCLEVBR3hCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUVsQzs7S0FFSztBQVNMLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFJTDtJQUMvQjtJQUNBO0lBQ0E7SUFFQTtJQVB0QixnQkFBZ0IsQ0FBVTtJQUUxQixZQUFxRCxnQkFBaUMsRUFDaEUsWUFBeUIsRUFDekIsZ0JBQWlDLEVBQ2pDLG9CQUF5QyxFQUNuRCxlQUErQixFQUNyQixVQUE0QjtRQUM5QyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQU4xRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2hFLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUV6QyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUU5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7SUFDOUQsQ0FBQzt3R0FaUSxnQkFBZ0Isa0JBSUwscUJBQXFCOzRGQUpoQyxnQkFBZ0Isc0NBSmQsQ0FBQztnQkFDUixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQzthQUMvRCxDQUFDLGlEQ3RCTiw4L0hBZ0VBOzs0RkR4Q2EsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNJLGFBQWEsYUFHWixDQUFDOzRCQUNSLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDO3lCQUMvRCxDQUFDOzswQkFNVyxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtTVEVQUEVSX0dMT0JBTF9PUFRJT05TfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtIb3RrZXlzU2VydmljZX0gZnJvbSAnYW5ndWxhcjItaG90a2V5cyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0TmV3Q2FzZUNvbXBvbmVudCxcbiAgICBDYXNlUmVzb3VyY2VTZXJ2aWNlLFxuICAgIE5BRV9TSURFX01FTlVfQ09OVFJPTCxcbiAgICBTaWRlTWVudUNvbnRyb2wsXG4gICAgU25hY2tCYXJTZXJ2aWNlXG59IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jLW5ldy1jYXNlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmV3LWNhc2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25ldy1jYXNlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZToge3Nob3dFcnJvcjogdHJ1ZX1cbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBOZXdDYXNlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3ROZXdDYXNlQ29tcG9uZW50IHtcblxuICAgIGlzVmVyc2lvblZpc2libGU6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE5BRV9TSURFX01FTlVfQ09OVFJPTCkgcHJvdGVjdGVkIF9zaWRlTWVudUNvbnRyb2w6IFNpZGVNZW51Q29udHJvbCxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FzZVJlc291cmNlU2VydmljZTogQ2FzZVJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBfaG90a2V5c1NlcnZpY2U6IEhvdGtleXNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKF9zaWRlTWVudUNvbnRyb2wsIF9mb3JtQnVpbGRlciwgX3NuYWNrQmFyU2VydmljZSwgX2Nhc2VSZXNvdXJjZVNlcnZpY2UsIF9ob3RrZXlzU2VydmljZSwgX3RyYW5zbGF0ZSk7XG4gICAgICAgIHRoaXMuaXNWZXJzaW9uVmlzaWJsZSA9IF9zaWRlTWVudUNvbnRyb2wuaXNWZXJzaW9uVmlzaWJsZTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgI3Rvb2xiYXIgY2xhc3M9XCJjdXN0b20tbWF0LXRvb2xiYXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgbm9uZVwiPlxuICAgIHt7dGl0bGVTaG9ydGVuaW5nKCl9fVxuPC9kaXY+XG48bWF0LXZlcnRpY2FsLXN0ZXBwZXIgKm5nSWY9XCJoYXNNdWx0aXBsZU5ldHMkIHwgYXN5bmNcIiBsaW5lYXIgI3N0ZXBwZXIxIGNsYXNzPVwibmV0Z3JpZi1pbnB1dFwiPlxuICAgIDxtYXQtc3RlcCBbc3RlcENvbnRyb2xdPVwicHJvY2Vzc0Zvcm1Db250cm9sXCIgZXJyb3JNZXNzYWdlPVwie3snc2lkZS1tZW51Lm5ldy1jYXNlLmVyckZpcnN0JyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+e3snc2lkZS1tZW51Lm5ldy1jYXNlLmNob29zZScgfCB0cmFuc2xhdGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInByb2Nlc3NGb3JtQ29udHJvbFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRTdGVwKClcIiAoY2hhbmdlKT1cImNoZWNrVmVyc2lvbihwcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlcnNpb24tc3BhblwiICpuZ0lmPVwiaXNWZXJzaW9uVmlzaWJsZVwiIG1hdFN1ZmZpeD57e25ldFZlcnNpb259fTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2hvd1ZlcnNpb24oJGV2ZW50Lm9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyQgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge3tvcHRpb24udmlld1ZhbHVlfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJzaW9uLXNwYW5cIiAqbmdJZj1cImlzVmVyc2lvblZpc2libGVcIj57e29wdGlvbi52ZXJzaW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzQ2FzZVRpdGxlRW5hYmxlZCgpXCIgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9OZXh0U3RlcChwcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUpXCI+e3snc2lkZS1tZW51Lm5ldy1jYXNlLm5leHQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNDYXNlVGl0bGVFbmFibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlTmV3Q2FzZSgpXCI+e3snc2lkZS1tZW51Lm5ldy1jYXNlLmNyZWF0ZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1zdGVwPlxuICAgIDxtYXQtc3RlcCAqbmdJZj1cImlzQ2FzZVRpdGxlRW5hYmxlZCgpXCIgW3N0ZXBDb250cm9sXT1cInRpdGxlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9XCJ7eydzaWRlLW1lbnUubmV3LWNhc2UuZXJyU2Vjb25kJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+e3snc2lkZS1tZW51Lm5ldy1jYXNlLmNhc2VUaXRsZScgfCB0cmFuc2xhdGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiVGl0bGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUNvbnRyb2xdPVwidGl0bGVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzQ2FzZVRpdGxlUmVxdWlyZWQoKVwiIChrZXl1cC5lbnRlcik9XCJuZXh0U3RlcCgpXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0ZXBwZXIxLnJlc2V0KCk7IGNoZWNrVmVyc2lvbihwcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUpXCI+e3snc2lkZS1tZW51Lm5ldy1jYXNlLnJlc2V0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNyZWF0ZU5ld0Nhc2UoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImxvYWRpbmdTdWJtaXQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbWV0ZXI9XCIzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnhGbGV4PjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIobG9hZGluZ1N1Ym1pdCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIGZ4RmxleD57eydzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXN0ZXA+XG48L21hdC12ZXJ0aWNhbC1zdGVwcGVyPlxuPG1hdC12ZXJ0aWNhbC1zdGVwcGVyICpuZ0lmPVwiKGhhc011bHRpcGxlTmV0cyQgfCBhc3luYykgPT09IGZhbHNlXCIgbGluZWFyICNzdGVwcGVyMiBjbGFzcz1cIm5ldGdyaWYtaW5wdXRcIj5cbiAgICA8bWF0LXN0ZXAgW3N0ZXBDb250cm9sXT1cInRpdGxlRm9ybUNvbnRyb2xcIiBlcnJvck1lc3NhZ2U9XCJ7eydzaWRlLW1lbnUubmV3LWNhc2UuZXJyU2Vjb25kJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+e3snc2lkZS1tZW51Lm5ldy1jYXNlLmNhc2VUaXRsZScgfCB0cmFuc2xhdGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiVGl0bGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUNvbnRyb2xdPVwidGl0bGVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzQ2FzZVRpdGxlUmVxdWlyZWQoKVwiIChrZXl1cC5lbnRlcik9XCJuZXh0U3RlcCgpXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInN0ZXBwZXIyLnJlc2V0KClcIj57eydzaWRlLW1lbnUubmV3LWNhc2UucmVzZXQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU5ld0Nhc2UoKVwiPnt7J3NpZGUtbWVudS5uZXctY2FzZS5jcmVhdGUnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc3RlcD5cbjwvbWF0LXZlcnRpY2FsLXN0ZXBwZXI+XG48ZGl2ICpuZ0lmPVwiKG5vdEluaXRpYWxpemVkJCB8IGFzeW5jKVwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJzcGlubmVyLW1hcmdpblwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj5cbiJdfQ==