ngx-st-sap-installed-instruments 1.0.3 → 1.0.4

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.
@@ -121,14 +121,14 @@ export class SapInstalledInstrumentListSearchComponent {
121
121
  }
122
122
  }
123
123
  SapInstalledInstrumentListSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SapInstalledInstrumentListSearchComponent, deps: [{ token: i1.SapInstalledInstrumentsService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.NonNullableFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
124
- SapInstalledInstrumentListSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SapInstalledInstrumentListSearchComponent, selector: "app-sap-installed-instrument-list-search", outputs: { filtersChanged: "filtersChanged" }, viewQueries: [{ propertyName: "multiselectAutocomplete", first: true, predicate: ["multiselectAutocomplete"], descendants: true }], ngImport: i0, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [placeholder]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [getFilteredOptions]=\"this.getFilteredOptions\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.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: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i12.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i12.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i13.NgxStMultiselectAutocompleteComponent, selector: "ngx-st-multiselect-autocomplete", inputs: ["label", "placeholder", "getFilteredOptions", "initSelectedData", "maxLengthSelectedData"], outputs: ["selectedDataChanged"] }, { kind: "component", type: i14.SearchSelectComponent, selector: "ngx-st-search-select", inputs: ["selectLabel", "filterMethod", "optionLabelMethod", "optionLabelPropertyName", "valueMethod", "displaySelected", "model", "modelChange", "selectFormControl", "required", "selectBindType", "searchLabel", "options"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
124
+ SapInstalledInstrumentListSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SapInstalledInstrumentListSearchComponent, selector: "app-sap-installed-instrument-list-search", outputs: { filtersChanged: "filtersChanged" }, viewQueries: [{ propertyName: "multiselectAutocomplete", first: true, predicate: ["multiselectAutocomplete"], descendants: true }], ngImport: i0, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [searchLabel]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [settings]=\"{\r\n getFilteredOptions: this.getFilteredOptions\r\n }\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.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: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i12.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i12.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i13.NgxStMultiselectAutocompleteComponent, selector: "ngx-st-multiselect-autocomplete[settings]", inputs: ["label", "searchLabel", "settings", "initSelectedData", "maxLengthSelectedData", "clearAfterSelect"], outputs: ["selectedDataChanged"] }, { kind: "component", type: i14.SearchSelectComponent, selector: "ngx-st-search-select", inputs: ["selectLabel", "filterMethod", "optionLabelMethod", "optionLabelPropertyName", "valueMethod", "displaySelected", "model", "modelChange", "selectFormControl", "required", "selectBindType", "searchLabel", "showEmptyOption", "options"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SapInstalledInstrumentListSearchComponent, decorators: [{
126
126
  type: Component,
127
- args: [{ selector: 'app-sap-installed-instrument-list-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [placeholder]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [getFilteredOptions]=\"this.getFilteredOptions\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n" }]
127
+ args: [{ selector: 'app-sap-installed-instrument-list-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [searchLabel]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [settings]=\"{\r\n getFilteredOptions: this.getFilteredOptions\r\n }\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n" }]
128
128
  }], ctorParameters: function () { return [{ type: i1.SapInstalledInstrumentsService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.NonNullableFormBuilder }]; }, propDecorators: { multiselectAutocomplete: [{
129
129
  type: ViewChild,
130
130
  args: ['multiselectAutocomplete']
131
131
  }], filtersChanged: [{
132
132
  type: Output
133
133
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLWluc3RhbGxlZC1pbnN0cnVtZW50LWxpc3Qtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC1zYXAtaW5zdGFsbGVkLWluc3RydW1lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2gvc2FwLWluc3RhbGxlZC1pbnN0cnVtZW50LWxpc3Qtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC1zYXAtaW5zdGFsbGVkLWluc3RydW1lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2gvc2FwLWluc3RhbGxlZC1pbnN0cnVtZW50LWxpc3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFpQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZXBDLE1BQU0sT0FBTyx5Q0FBeUM7SUErQnBELFlBQ1ksNkJBQTZELEVBQzdELE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUEwQjtRQUgxQixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQWdDO1FBQzdELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7UUEvQnRDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWdDLENBQUM7UUFFbEUs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SUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFNUMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzSUFoSVUseUNBQXlDOzBIQUF6Qyx5Q0FBeUMsbVFDakJ0RCxnN2FBZ1pBOzJGRC9YYSx5Q0FBeUM7a0JBTnJELFNBQVM7K0JBQ0UsMENBQTBDLG1CQUduQyx1QkFBdUIsQ0FBQyxNQUFNOzRNQUdULHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUI7Z0JBR3BDLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Tm9uTnVsbGFibGVGb3JtQnVpbGRlcn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7U2FwVGVycml0b3J5TW9kZWx9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2FwLXRlcnJpdG9yeS5tb2RlbFwiO1xyXG5pbXBvcnQge1NhcFN0YXRlTW9kZWx9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2FwLXN0YXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7U2FwQ291bnRyeU1vZGVsfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3NhcC1jb3VudHJ5Lm1vZGVsXCI7XHJcbmltcG9ydCB7Tmd4U3RNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudH0gZnJvbSBcIm5neC1zdC1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7U2FwSW5zdGFsbGVkSW5zdHJ1bWVudHNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2FwLWluc3RhbGxlZC1pbnN0cnVtZW50cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SW5zdGFsbGVkSW5zdHJ1bWVudEZvcm1Nb2RlbH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9pbnN0YWxsZWQtaW5zdHJ1bWVudC1mb3JtLm1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NhcC1pbnN0YWxsZWQtaW5zdHJ1bWVudC1saXN0LXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYXBJbnN0YWxsZWRJbnN0cnVtZW50TGlzdFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbXVsdGlzZWxlY3RBdXRvY29tcGxldGUnKSBtdWx0aXNlbGVjdEF1dG9jb21wbGV0ZTogTmd4U3RNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsdGVyc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEluc3RhbGxlZEluc3RydW1lbnRGb3JtTW9kZWw+KCk7XHJcblxyXG4gIHNob3dGaWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgYXBwbGljYXRpb246IFs8c3RyaW5nW10+W11dLFxyXG4gICAgc2VyaWFsTnVtYmVyOiAnJyxcclxuICAgIGluc3RydW1lbnRObzogJycsXHJcbiAgICBpbnN0cnVtZW50RGVzYzogJycsXHJcbiAgICBjdXN0b21lck5vOiAnJyxcclxuICAgIGJwTmFtZTogJycsXHJcbiAgICBjaXR5OiAnJyxcclxuICAgIGNvdW50eTogJycsXHJcbiAgICBlbmRVc2VyTmFtZTogJycsXHJcbiAgICBlbmRVc2VyQ29kZTogJycsXHJcbiAgICB0ZXJyaXRvcnk6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICB0ZWNobmljaWFuTGFzdE5hbWU6ICcnLFxyXG4gICAgY291bnRyeTogJycsXHJcbiAgICBzdGF0ZTogJycsXHJcbiAgICBzdGF0dXM6ICcnLFxyXG4gICAgaW5zdGFsbGF0aW9uRGF0ZUZyb206IDxEYXRlIHwgbnVsbD5udWxsLFxyXG4gICAgaW5zdGFsbGF0aW9uRGF0ZVRvOiA8RGF0ZSB8IG51bGw+bnVsbFxyXG4gIH0pO1xyXG5cclxuICB0ZXJyaXRvcmllcyQ6IE9ic2VydmFibGU8U2FwVGVycml0b3J5TW9kZWxbXT47XHJcbiAgc3RhdGVzJDogT2JzZXJ2YWJsZTxTYXBTdGF0ZU1vZGVsW10+O1xyXG4gIGNvdW50cmllcyQ6IE9ic2VydmFibGU8U2FwQ291bnRyeU1vZGVsW10+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBzYXBJbnN0YWxsZWRJbnN0cnVtZW50U2VydmljZTogU2FwSW5zdGFsbGVkSW5zdHJ1bWVudHNTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgcHJpdmF0ZSBmYjogTm9uTnVsbGFibGVGb3JtQnVpbGRlclxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWFyY2hGb3JtKCk7XHJcbiAgICB0aGlzLnNldEFzeW5jRmlsdGVycygpO1xyXG5cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfHwge30pO1xyXG5cclxuICAgIGlmIChxdWVyeVBhcmFtc0tleXMubGVuZ3RoID4gMikge1xyXG4gICAgICB0aGlzLnNob3dGaWx0ZXJzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHF1ZXJ5UGFyYW1zS2V5cy5mb3JFYWNoKChxdWVyeVBhcmFtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0KHF1ZXJ5UGFyYW0pO1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5UGFyYW0gPT09ICdpbnN0YWxsYXRpb25EYXRlRnJvbScgfHwgcXVlcnlQYXJhbSA9PT0gJ2luc3RhbGxhdGlvbkRhdGVUbycpIHtcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1txdWVyeVBhcmFtXSA/IG5ldyBEYXRlKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbcXVlcnlQYXJhbV0pIDogbnVsbCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW3F1ZXJ5UGFyYW1dKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLm11bHRpc2VsZWN0QXV0b2NvbXBsZXRlLmNsZWFyU2VsZWN0ZWREYXRhKCk7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pdHRlZCgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFRlcnJpdG9yaWVzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLnRlcnJpdG9yeS5zZXRWYWx1ZShudWxsKTtcclxuICAgIHRoaXMudGVycml0b3JpZXMkID0gdGhpcy5zYXBJbnN0YWxsZWRJbnN0cnVtZW50U2VydmljZS5nZXRUZXJyaXRvcnkodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQ291bnRyaWVzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLmNvdW50cnkuc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5jb3VudHJpZXMkID0gdGhpcy5zYXBJbnN0YWxsZWRJbnN0cnVtZW50U2VydmljZS5nZXRDb3VudHJ5KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFN0YXRlcygpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5zdGF0ZS5zZXRWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLnN0YXRlcyQgPSB0aGlzLnNhcEluc3RhbGxlZEluc3RydW1lbnRTZXJ2aWNlLmdldFN0YXRlKHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5jb3VudHJ5LnZhbHVlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIGdldENvdW50cnlWYWx1ZShjb3VudHJ5OiBTYXBDb3VudHJ5TW9kZWwpIHtcclxuICAgIHJldHVybiBjb3VudHJ5LmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVWYWx1ZShzdGF0ZTogU2FwU3RhdGVNb2RlbCkge1xyXG4gICAgcmV0dXJuIHN0YXRlLmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVycml0b3J5VmFsdWUodGVycml0b3J5OiBTYXBUZXJyaXRvcnlNb2RlbCkge1xyXG4gICAgcmV0dXJuIHRlcnJpdG9yeS5pZDtcclxuICB9XHJcblxyXG4gIHNlYXJjaFN1Ym1pdHRlZCgpIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoZm9ybVZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0VmFsdWUoZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5nZXQoZm9ybUNvbnRyb2xOYW1lKSEuc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXR0ZWQoKTtcclxuICB9XHJcblxyXG4gIGdldEZpbHRlcmVkT3B0aW9ucyA9IChzZWFyY2g6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FwSW5zdGFsbGVkSW5zdHJ1bWVudFNlcnZpY2UuZ2V0QXBwbGljYXRpb25TZWFyY2goc2VhcmNoKTtcclxuICB9XHJcblxyXG4gIGFwcGxpY2F0aW9uU2VsZWN0ZWQoZGF0YTogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5hcHBsaWNhdGlvbi5zZXRWYWx1ZShkYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXN5bmNGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy50ZXJyaXRvcmllcyQgPSB0aGlzLnNhcEluc3RhbGxlZEluc3RydW1lbnRTZXJ2aWNlLmdldFRlcnJpdG9yeShmYWxzZSk7XHJcbiAgICB0aGlzLmNvdW50cmllcyQgPSB0aGlzLnNhcEluc3RhbGxlZEluc3RydW1lbnRTZXJ2aWNlLmdldENvdW50cnkoZmFsc2UpO1xyXG4gICAgdGhpcy5zdGF0ZXMkID0gb2YoW10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWFyY2hGb3JtKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY291bnRyeTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5zdGF0ZS5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgICBpZiAoY291bnRyeSkge1xyXG4gICAgICAgIHRoaXMuc3RhdGVzJCA9IHRoaXMuc2FwSW5zdGFsbGVkSW5zdHJ1bWVudFNlcnZpY2UuZ2V0U3RhdGUoY291bnRyeSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZXMkID0gb2YoW10pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm1cclxuICBjbGFzcz1cInNlYXJjaC1maWx0ZXJzXCJcclxuICBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIlxyXG4gIChuZ1N1Ym1pdCk9XCJzZWFyY2hTdWJtaXR0ZWQoKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtuZ0NsYXNzXT1cInsgaGlkZTogIXNob3dGaWx0ZXJzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxuZ3gtc3QtbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgI211bHRpc2VsZWN0QXV0b2NvbXBsZXRlXHJcbiAgICAgICAgW2xhYmVsXT1cIlxyXG4gICAgICAgICAgKCdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlKSArXHJcbiAgICAgICAgICAnICgnICtcclxuICAgICAgICAgICgnZ2xvYmFsLm1heCcgfCB0cmFuc2xhdGUpICtcclxuICAgICAgICAgICc6IDEwKSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcclxuICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuYXBwbGljYXRpb25QbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtnZXRGaWx0ZXJlZE9wdGlvbnNdPVwidGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnNcIlxyXG4gICAgICAgIFtpbml0U2VsZWN0ZWREYXRhXT1cInNlYXJjaEZvcm0uY29udHJvbHMuYXBwbGljYXRpb24udmFsdWVcIlxyXG4gICAgICAgIFttYXhMZW5ndGhTZWxlY3RlZERhdGFdPVwiMTBcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2VkKT1cImFwcGxpY2F0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgID48L25neC1zdC1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJicE5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LmFjY291bnROYW1lJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLmJwTmFtZS52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnYnBOYW1lJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWNobmljaWFuTGFzdE5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnRlY2huaWNpYW5MYXN0TmFtZScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybS5jb250cm9scy50ZWNobmljaWFuTGFzdE5hbWUudmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ3RlY2huaWNpYW5MYXN0TmFtZScpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIFtuZ0NsYXNzXT1cInsgaGlkZTogIXNob3dGaWx0ZXJzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnNlcmlhbE51bWJlcicgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybS5jb250cm9scy5zZXJpYWxOdW1iZXIudmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ3NlcmlhbE51bWJlcicpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS00IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW5zdHJ1bWVudE5vXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5pbnN0cnVtZW50Tm8nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuaW5zdHJ1bWVudE5vLnZhbHVlXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dFZhbHVlKCdpbnN0cnVtZW50Tm8nKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluc3RydW1lbnREZXNjXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5pbnN0cnVtZW50RGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuaW5zdHJ1bWVudERlc2MudmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ2luc3RydW1lbnREZXNjJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgW25nQ2xhc3NdPVwieyBoaWRlOiAhc2hvd0ZpbHRlcnMgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tcclxuICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuaW5zdHJ1bWVudFN0YXR1cycgfCB0cmFuc2xhdGVcclxuICAgICAgICB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicnXCI+e3sgJ2dsb2JhbC5lbXB0eScgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ0EnXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5zdGF0dXNBJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ1InXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5zdGF0dXNSJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ1QnXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5zdGF0dXNUJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ0wnXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5zdGF0dXNMJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ0knXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5zdGF0dXNJJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS00IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9tZXJOb1wiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuYWNjb3VudE5vJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLmN1c3RvbWVyTm8udmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ2N1c3RvbWVyTm8nKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNCBhbGlnbi1pdGVtcy1jZW50ZXIgcm93XCI+XHJcbiAgICAgIDxuZ3gtc3Qtc2VhcmNoLXNlbGVjdFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzZWFyY2hGb3JtPy5nZXQoJ3RlcnJpdG9yeScpICYmXHJcbiAgICAgICAgICAoKHRlcnJpdG9yaWVzJCB8IGFzeW5jKSB8fCBbXSkgYXMgdGVycml0b3JpZXNcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cInRlcnJpdG9yaWVzIHx8IFtdXCJcclxuICAgICAgICBbc2VsZWN0TGFiZWxdPVwiJ2dsb2JhbC50ZXJyaXRvcnknIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbb3B0aW9uTGFiZWxQcm9wZXJ0eU5hbWVdPVwiJ25hbWUnXCJcclxuICAgICAgICBbc2VsZWN0Rm9ybUNvbnRyb2xdPVwic2VhcmNoRm9ybS5jb250cm9scy50ZXJyaXRvcnlcIlxyXG4gICAgICAgIFtzZWxlY3RCaW5kVHlwZV09XCInY29udHJvbCdcIlxyXG4gICAgICAgIFtzZWFyY2hMYWJlbF09XCInZ2xvYmFsLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFt2YWx1ZU1ldGhvZF09XCJnZXRUZXJyaXRvcnlWYWx1ZVwiXHJcbiAgICAgID48L25neC1zdC1zZWFyY2gtc2VsZWN0PlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2dsb2JhbC5yZWZyZXNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlZnJlc2hUZXJyaXRvcmllcygpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5yZWZyZXNoPC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiBbbmdDbGFzc109XCJ7IGhpZGU6ICFzaG93RmlsdGVycyB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdnbG9iYWwuY2l0eScgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLmNpdHkudmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ2NpdHknKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBhbGlnbi1pdGVtcy1jZW50ZXIgcm93XCI+XHJcbiAgICAgIDxuZ3gtc3Qtc2VhcmNoLXNlbGVjdFxyXG4gICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybT8uZ2V0KCdzdGF0ZScpICYmICgoc3RhdGVzJCB8IGFzeW5jKSB8fCBbXSkgYXMgc3RhdGVzXCJcclxuICAgICAgICBbb3B0aW9uc109XCJzdGF0ZXMgfHwgW11cIlxyXG4gICAgICAgIFtzZWxlY3RMYWJlbF09XCInZ2xvYmFsLnN0YXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW29wdGlvbkxhYmVsUHJvcGVydHlOYW1lXT1cIiduYW1lJ1wiXHJcbiAgICAgICAgW3NlbGVjdEZvcm1Db250cm9sXT1cInNlYXJjaEZvcm0uY29udHJvbHMuc3RhdGVcIlxyXG4gICAgICAgIFtzZWxlY3RCaW5kVHlwZV09XCInY29udHJvbCdcIlxyXG4gICAgICAgIFtzZWFyY2hMYWJlbF09XCInZ2xvYmFsLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFt2YWx1ZU1ldGhvZF09XCJnZXRTdGF0ZVZhbHVlXCJcclxuICAgICAgPjwvbmd4LXN0LXNlYXJjaC1zZWxlY3Q+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2xvYmFsLnJlZnJlc2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIXNlYXJjaEZvcm0uY29udHJvbHMuY291bnRyeS52YWx1ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlZnJlc2hTdGF0ZXMoKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+cmVmcmVzaDwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHlcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZ2xvYmFsLmNvdW50eScgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLmNvdW50eS52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnY291bnR5JylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgYWxpZ24taXRlbXMtY2VudGVyIHJvd1wiPlxyXG4gICAgICA8bmd4LXN0LXNlYXJjaC1zZWxlY3RcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc2VhcmNoRm9ybT8uZ2V0KCdjb3VudHJ5JykgJiZcclxuICAgICAgICAgICgoY291bnRyaWVzJCB8IGFzeW5jKSB8fCBbXSkgYXMgY291bnRyaWVzXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbb3B0aW9uc109XCJjb3VudHJpZXMgfHwgW11cIlxyXG4gICAgICAgIFtzZWxlY3RMYWJlbF09XCInZ2xvYmFsLmNvdW50cnknIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbb3B0aW9uTGFiZWxQcm9wZXJ0eU5hbWVdPVwiJ25hbWUnXCJcclxuICAgICAgICBbc2VsZWN0Rm9ybUNvbnRyb2xdPVwic2VhcmNoRm9ybS5jb250cm9scy5jb3VudHJ5XCJcclxuICAgICAgICBbc2VsZWN0QmluZFR5cGVdPVwiJ2NvbnRyb2wnXCJcclxuICAgICAgICBbc2VhcmNoTGFiZWxdPVwiJ2dsb2JhbC5zZWFyY2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbdmFsdWVNZXRob2RdPVwiZ2V0Q291bnRyeVZhbHVlXCJcclxuICAgICAgPjwvbmd4LXN0LXNlYXJjaC1zZWxlY3Q+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2xvYmFsLnJlZnJlc2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwicmVmcmVzaENvdW50cmllcygpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5yZWZyZXNoPC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiBbbmdDbGFzc109XCJ7IGhpZGU6ICFzaG93RmlsdGVycyB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e1xyXG4gICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5pbnN0YWxsYXRpb25EYXRlRnJvbScgfCB0cmFuc2xhdGVcclxuICAgICAgICB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlcjFcIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW5zdGFsbGF0aW9uRGF0ZUZyb21cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBbZm9yXT1cInBpY2tlcjFcIlxyXG4gICAgICAgID48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcjE+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tcclxuICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuaW5zdGFsbGF0aW9uRGF0ZVRvJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyMlwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnN0YWxsYXRpb25EYXRlVG9cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBbZm9yXT1cInBpY2tlcjJcIlxyXG4gICAgICAgID48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcjI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZFVzZXJOYW1lXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5lbmRDdXN0b21lck5hbWUnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuZW5kVXNlck5hbWUudmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ2VuZFVzZXJOYW1lJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmRVc2VyQ29kZVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuZW5kQ3VzdG9tZXJObycgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybS5jb250cm9scy5lbmRVc2VyQ29kZS52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnZW5kVXNlckNvZGUnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHhcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJjbGVhckFsbEZpbHRlcnMoKVwiXHJcbiAgICAgICpuZ0lmPVwic2hvd0ZpbHRlcnNcIlxyXG4gICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiXHJcbiAgICA+XHJcbiAgICAgIENsZWFyIEFsbFxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjb2xvcj1cImFjY2VudFwiXHJcbiAgICAgIChjbGljayk9XCJzaG93RmlsdGVycyA9ICFzaG93RmlsdGVyc1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyc1wiPlxyXG4gICAgICAgIHt7ICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuaGlkZUZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dGaWx0ZXJzXCI+XHJcbiAgICAgICAge3sgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5zaG93RmlsdGVycycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJzaG93RmlsdGVyc1wiXHJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCJcclxuICAgID5cclxuICAgICAgU2VhcmNoXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLWluc3RhbGxlZC1pbnN0cnVtZW50LWxpc3Qtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC1zYXAtaW5zdGFsbGVkLWluc3RydW1lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2gvc2FwLWluc3RhbGxlZC1pbnN0cnVtZW50LWxpc3Qtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC1zYXAtaW5zdGFsbGVkLWluc3RydW1lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2gvc2FwLWluc3RhbGxlZC1pbnN0cnVtZW50LWxpc3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFpQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZXBDLE1BQU0sT0FBTyx5Q0FBeUM7SUErQnBELFlBQ1ksNkJBQTZELEVBQzdELE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUEwQjtRQUgxQixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQWdDO1FBQzdELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7UUEvQnRDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWdDLENBQUM7UUFFbEUs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SUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFNUMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzSUFoSVUseUNBQXlDOzBIQUF6Qyx5Q0FBeUMsbVFDakJ0RCxzOWFBa1pBOzJGRGpZYSx5Q0FBeUM7a0JBTnJELFNBQVM7K0JBQ0UsMENBQTBDLG1CQUduQyx1QkFBdUIsQ0FBQyxNQUFNOzRNQUdULHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUI7Z0JBR3BDLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Tm9uTnVsbGFibGVGb3JtQnVpbGRlcn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7U2FwVGVycml0b3J5TW9kZWx9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2FwLXRlcnJpdG9yeS5tb2RlbFwiO1xyXG5pbXBvcnQge1NhcFN0YXRlTW9kZWx9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2FwLXN0YXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7U2FwQ291bnRyeU1vZGVsfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3NhcC1jb3VudHJ5Lm1vZGVsXCI7XHJcbmltcG9ydCB7Tmd4U3RNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudH0gZnJvbSBcIm5neC1zdC1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7U2FwSW5zdGFsbGVkSW5zdHJ1bWVudHNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2FwLWluc3RhbGxlZC1pbnN0cnVtZW50cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SW5zdGFsbGVkSW5zdHJ1bWVudEZvcm1Nb2RlbH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9pbnN0YWxsZWQtaW5zdHJ1bWVudC1mb3JtLm1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zYXAtaW5zdGFsbGVkLWluc3RydW1lbnQtbGlzdC1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NhcC1pbnN0YWxsZWQtaW5zdHJ1bWVudC1saXN0LXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYXBJbnN0YWxsZWRJbnN0cnVtZW50TGlzdFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbXVsdGlzZWxlY3RBdXRvY29tcGxldGUnKSBtdWx0aXNlbGVjdEF1dG9jb21wbGV0ZTogTmd4U3RNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsdGVyc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEluc3RhbGxlZEluc3RydW1lbnRGb3JtTW9kZWw+KCk7XHJcblxyXG4gIHNob3dGaWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgYXBwbGljYXRpb246IFs8c3RyaW5nW10+W11dLFxyXG4gICAgc2VyaWFsTnVtYmVyOiAnJyxcclxuICAgIGluc3RydW1lbnRObzogJycsXHJcbiAgICBpbnN0cnVtZW50RGVzYzogJycsXHJcbiAgICBjdXN0b21lck5vOiAnJyxcclxuICAgIGJwTmFtZTogJycsXHJcbiAgICBjaXR5OiAnJyxcclxuICAgIGNvdW50eTogJycsXHJcbiAgICBlbmRVc2VyTmFtZTogJycsXHJcbiAgICBlbmRVc2VyQ29kZTogJycsXHJcbiAgICB0ZXJyaXRvcnk6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICB0ZWNobmljaWFuTGFzdE5hbWU6ICcnLFxyXG4gICAgY291bnRyeTogJycsXHJcbiAgICBzdGF0ZTogJycsXHJcbiAgICBzdGF0dXM6ICcnLFxyXG4gICAgaW5zdGFsbGF0aW9uRGF0ZUZyb206IDxEYXRlIHwgbnVsbD5udWxsLFxyXG4gICAgaW5zdGFsbGF0aW9uRGF0ZVRvOiA8RGF0ZSB8IG51bGw+bnVsbFxyXG4gIH0pO1xyXG5cclxuICB0ZXJyaXRvcmllcyQ6IE9ic2VydmFibGU8U2FwVGVycml0b3J5TW9kZWxbXT47XHJcbiAgc3RhdGVzJDogT2JzZXJ2YWJsZTxTYXBTdGF0ZU1vZGVsW10+O1xyXG4gIGNvdW50cmllcyQ6IE9ic2VydmFibGU8U2FwQ291bnRyeU1vZGVsW10+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBzYXBJbnN0YWxsZWRJbnN0cnVtZW50U2VydmljZTogU2FwSW5zdGFsbGVkSW5zdHJ1bWVudHNTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgcHJpdmF0ZSBmYjogTm9uTnVsbGFibGVGb3JtQnVpbGRlclxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWFyY2hGb3JtKCk7XHJcbiAgICB0aGlzLnNldEFzeW5jRmlsdGVycygpO1xyXG5cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfHwge30pO1xyXG5cclxuICAgIGlmIChxdWVyeVBhcmFtc0tleXMubGVuZ3RoID4gMikge1xyXG4gICAgICB0aGlzLnNob3dGaWx0ZXJzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHF1ZXJ5UGFyYW1zS2V5cy5mb3JFYWNoKChxdWVyeVBhcmFtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0KHF1ZXJ5UGFyYW0pO1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5UGFyYW0gPT09ICdpbnN0YWxsYXRpb25EYXRlRnJvbScgfHwgcXVlcnlQYXJhbSA9PT0gJ2luc3RhbGxhdGlvbkRhdGVUbycpIHtcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1txdWVyeVBhcmFtXSA/IG5ldyBEYXRlKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbcXVlcnlQYXJhbV0pIDogbnVsbCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW3F1ZXJ5UGFyYW1dKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLm11bHRpc2VsZWN0QXV0b2NvbXBsZXRlLmNsZWFyU2VsZWN0ZWREYXRhKCk7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pdHRlZCgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFRlcnJpdG9yaWVzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLnRlcnJpdG9yeS5zZXRWYWx1ZShudWxsKTtcclxuICAgIHRoaXMudGVycml0b3JpZXMkID0gdGhpcy5zYXBJbnN0YWxsZWRJbnN0cnVtZW50U2VydmljZS5nZXRUZXJyaXRvcnkodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQ291bnRyaWVzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLmNvdW50cnkuc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5jb3VudHJpZXMkID0gdGhpcy5zYXBJbnN0YWxsZWRJbnN0cnVtZW50U2VydmljZS5nZXRDb3VudHJ5KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFN0YXRlcygpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5zdGF0ZS5zZXRWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLnN0YXRlcyQgPSB0aGlzLnNhcEluc3RhbGxlZEluc3RydW1lbnRTZXJ2aWNlLmdldFN0YXRlKHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5jb3VudHJ5LnZhbHVlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIGdldENvdW50cnlWYWx1ZShjb3VudHJ5OiBTYXBDb3VudHJ5TW9kZWwpIHtcclxuICAgIHJldHVybiBjb3VudHJ5LmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVWYWx1ZShzdGF0ZTogU2FwU3RhdGVNb2RlbCkge1xyXG4gICAgcmV0dXJuIHN0YXRlLmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVycml0b3J5VmFsdWUodGVycml0b3J5OiBTYXBUZXJyaXRvcnlNb2RlbCkge1xyXG4gICAgcmV0dXJuIHRlcnJpdG9yeS5pZDtcclxuICB9XHJcblxyXG4gIHNlYXJjaFN1Ym1pdHRlZCgpIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoZm9ybVZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0VmFsdWUoZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5nZXQoZm9ybUNvbnRyb2xOYW1lKSEuc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXR0ZWQoKTtcclxuICB9XHJcblxyXG4gIGdldEZpbHRlcmVkT3B0aW9ucyA9IChzZWFyY2g6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FwSW5zdGFsbGVkSW5zdHJ1bWVudFNlcnZpY2UuZ2V0QXBwbGljYXRpb25TZWFyY2goc2VhcmNoKTtcclxuICB9XHJcblxyXG4gIGFwcGxpY2F0aW9uU2VsZWN0ZWQoZGF0YTogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5hcHBsaWNhdGlvbi5zZXRWYWx1ZShkYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXN5bmNGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy50ZXJyaXRvcmllcyQgPSB0aGlzLnNhcEluc3RhbGxlZEluc3RydW1lbnRTZXJ2aWNlLmdldFRlcnJpdG9yeShmYWxzZSk7XHJcbiAgICB0aGlzLmNvdW50cmllcyQgPSB0aGlzLnNhcEluc3RhbGxlZEluc3RydW1lbnRTZXJ2aWNlLmdldENvdW50cnkoZmFsc2UpO1xyXG4gICAgdGhpcy5zdGF0ZXMkID0gb2YoW10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWFyY2hGb3JtKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY291bnRyeTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5zdGF0ZS5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgICBpZiAoY291bnRyeSkge1xyXG4gICAgICAgIHRoaXMuc3RhdGVzJCA9IHRoaXMuc2FwSW5zdGFsbGVkSW5zdHJ1bWVudFNlcnZpY2UuZ2V0U3RhdGUoY291bnRyeSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZXMkID0gb2YoW10pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm1cclxuICBjbGFzcz1cInNlYXJjaC1maWx0ZXJzXCJcclxuICBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIlxyXG4gIChuZ1N1Ym1pdCk9XCJzZWFyY2hTdWJtaXR0ZWQoKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtuZ0NsYXNzXT1cInsgaGlkZTogIXNob3dGaWx0ZXJzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxuZ3gtc3QtbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgI211bHRpc2VsZWN0QXV0b2NvbXBsZXRlXHJcbiAgICAgICAgW2xhYmVsXT1cIlxyXG4gICAgICAgICAgKCdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlKSArXHJcbiAgICAgICAgICAnICgnICtcclxuICAgICAgICAgICgnZ2xvYmFsLm1heCcgfCB0cmFuc2xhdGUpICtcclxuICAgICAgICAgICc6IDEwKSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtzZWFyY2hMYWJlbF09XCJcclxuICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuYXBwbGljYXRpb25QbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtzZXR0aW5nc109XCJ7XHJcbiAgICAgICAgICBnZXRGaWx0ZXJlZE9wdGlvbnM6IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW2luaXRTZWxlY3RlZERhdGFdPVwic2VhcmNoRm9ybS5jb250cm9scy5hcHBsaWNhdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgW21heExlbmd0aFNlbGVjdGVkRGF0YV09XCIxMFwiXHJcbiAgICAgICAgKHNlbGVjdGVkRGF0YUNoYW5nZWQpPVwiYXBwbGljYXRpb25TZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgPjwvbmd4LXN0LW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJwTmFtZVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuYWNjb3VudE5hbWUnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuYnBOYW1lLnZhbHVlXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dFZhbHVlKCdicE5hbWUnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRlY2huaWNpYW5MYXN0TmFtZVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQudGVjaG5pY2lhbkxhc3ROYW1lJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLnRlY2huaWNpYW5MYXN0TmFtZS52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgndGVjaG5pY2lhbkxhc3ROYW1lJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgW25nQ2xhc3NdPVwieyBoaWRlOiAhc2hvd0ZpbHRlcnMgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkluc3RhbGxlZEluc3RydW1lbnQuc2VyaWFsTnVtYmVyJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLnNlcmlhbE51bWJlci52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnc2VyaWFsTnVtYmVyJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnN0cnVtZW50Tm9cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50Lmluc3RydW1lbnRObycgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybS5jb250cm9scy5pbnN0cnVtZW50Tm8udmFsdWVcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJ2luc3RydW1lbnRObycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS00IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW5zdHJ1bWVudERlc2NcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50Lmluc3RydW1lbnREZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybS5jb250cm9scy5pbnN0cnVtZW50RGVzYy52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnaW5zdHJ1bWVudERlc2MnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiBbbmdDbGFzc109XCJ7IGhpZGU6ICFzaG93RmlsdGVycyB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS00IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e1xyXG4gICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5pbnN0cnVtZW50U3RhdHVzJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJydcIj57eyAnZ2xvYmFsLmVtcHR5JyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInQSdcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnN0YXR1c0EnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInUidcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnN0YXR1c1InIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInVCdcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnN0YXR1c1QnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInTCdcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnN0YXR1c0wnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInSSdcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnN0YXR1c0knIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXN0b21lck5vXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5hY2NvdW50Tm8nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuY3VzdG9tZXJOby52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnY3VzdG9tZXJObycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS00IGFsaWduLWl0ZW1zLWNlbnRlciByb3dcIj5cclxuICAgICAgPG5neC1zdC1zZWFyY2gtc2VsZWN0XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNlYXJjaEZvcm0/LmdldCgndGVycml0b3J5JykgJiZcclxuICAgICAgICAgICgodGVycml0b3JpZXMkIHwgYXN5bmMpIHx8IFtdKSBhcyB0ZXJyaXRvcmllc1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW29wdGlvbnNdPVwidGVycml0b3JpZXMgfHwgW11cIlxyXG4gICAgICAgIFtzZWxlY3RMYWJlbF09XCInZ2xvYmFsLnRlcnJpdG9yeScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtvcHRpb25MYWJlbFByb3BlcnR5TmFtZV09XCInbmFtZSdcIlxyXG4gICAgICAgIFtzZWxlY3RGb3JtQ29udHJvbF09XCJzZWFyY2hGb3JtLmNvbnRyb2xzLnRlcnJpdG9yeVwiXHJcbiAgICAgICAgW3NlbGVjdEJpbmRUeXBlXT1cIidjb250cm9sJ1wiXHJcbiAgICAgICAgW3NlYXJjaExhYmVsXT1cIidnbG9iYWwuc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW3ZhbHVlTWV0aG9kXT1cImdldFRlcnJpdG9yeVZhbHVlXCJcclxuICAgICAgPjwvbmd4LXN0LXNlYXJjaC1zZWxlY3Q+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2xvYmFsLnJlZnJlc2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwicmVmcmVzaFRlcnJpdG9yaWVzKClcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlZnJlc2g8L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIFtuZ0NsYXNzXT1cInsgaGlkZTogIXNob3dGaWx0ZXJzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2dsb2JhbC5jaXR5JyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuY2l0eS52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnY2l0eScpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGFsaWduLWl0ZW1zLWNlbnRlciByb3dcIj5cclxuICAgICAgPG5neC1zdC1zZWFyY2gtc2VsZWN0XHJcbiAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtPy5nZXQoJ3N0YXRlJykgJiYgKChzdGF0ZXMkIHwgYXN5bmMpIHx8IFtdKSBhcyBzdGF0ZXNcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cInN0YXRlcyB8fCBbXVwiXHJcbiAgICAgICAgW3NlbGVjdExhYmVsXT1cIidnbG9iYWwuc3RhdGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbb3B0aW9uTGFiZWxQcm9wZXJ0eU5hbWVdPVwiJ25hbWUnXCJcclxuICAgICAgICBbc2VsZWN0Rm9ybUNvbnRyb2xdPVwic2VhcmNoRm9ybS5jb250cm9scy5zdGF0ZVwiXHJcbiAgICAgICAgW3NlbGVjdEJpbmRUeXBlXT1cIidjb250cm9sJ1wiXHJcbiAgICAgICAgW3NlYXJjaExhYmVsXT1cIidnbG9iYWwuc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW3ZhbHVlTWV0aG9kXT1cImdldFN0YXRlVmFsdWVcIlxyXG4gICAgICA+PC9uZ3gtc3Qtc2VhcmNoLXNlbGVjdD5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidnbG9iYWwucmVmcmVzaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhc2VhcmNoRm9ybS5jb250cm9scy5jb3VudHJ5LnZhbHVlXCJcclxuICAgICAgICAoY2xpY2spPVwicmVmcmVzaFN0YXRlcygpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5yZWZyZXNoPC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50eVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdnbG9iYWwuY291bnR5JyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaEZvcm0uY29udHJvbHMuY291bnR5LnZhbHVlXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dFZhbHVlKCdjb3VudHknKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBhbGlnbi1pdGVtcy1jZW50ZXIgcm93XCI+XHJcbiAgICAgIDxuZ3gtc3Qtc2VhcmNoLXNlbGVjdFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzZWFyY2hGb3JtPy5nZXQoJ2NvdW50cnknKSAmJlxyXG4gICAgICAgICAgKChjb3VudHJpZXMkIHwgYXN5bmMpIHx8IFtdKSBhcyBjb3VudHJpZXNcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cImNvdW50cmllcyB8fCBbXVwiXHJcbiAgICAgICAgW3NlbGVjdExhYmVsXT1cIidnbG9iYWwuY291bnRyeScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtvcHRpb25MYWJlbFByb3BlcnR5TmFtZV09XCInbmFtZSdcIlxyXG4gICAgICAgIFtzZWxlY3RGb3JtQ29udHJvbF09XCJzZWFyY2hGb3JtLmNvbnRyb2xzLmNvdW50cnlcIlxyXG4gICAgICAgIFtzZWxlY3RCaW5kVHlwZV09XCInY29udHJvbCdcIlxyXG4gICAgICAgIFtzZWFyY2hMYWJlbF09XCInZ2xvYmFsLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFt2YWx1ZU1ldGhvZF09XCJnZXRDb3VudHJ5VmFsdWVcIlxyXG4gICAgICA+PC9uZ3gtc3Qtc2VhcmNoLXNlbGVjdD5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidnbG9iYWwucmVmcmVzaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIChjbGljayk9XCJyZWZyZXNoQ291bnRyaWVzKClcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlZnJlc2g8L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIFtuZ0NsYXNzXT1cInsgaGlkZTogIXNob3dGaWx0ZXJzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7XHJcbiAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50Lmluc3RhbGxhdGlvbkRhdGVGcm9tJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyMVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnN0YWxsYXRpb25EYXRlRnJvbVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIFtmb3JdPVwicGlja2VyMVwiXHJcbiAgICAgICAgPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyMT48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e1xyXG4gICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5pbnN0YWxsYXRpb25EYXRlVG8nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXIyXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluc3RhbGxhdGlvbkRhdGVUb1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIFtmb3JdPVwicGlja2VyMlwiXHJcbiAgICAgICAgPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyMj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5kVXNlck5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LmVuZEN1c3RvbWVyTmFtZScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoRm9ybS5jb250cm9scy5lbmRVc2VyTmFtZS52YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRWYWx1ZSgnZW5kVXNlck5hbWUnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZFVzZXJDb2RlXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5lbmRDdXN0b21lck5vJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hGb3JtLmNvbnRyb2xzLmVuZFVzZXJDb2RlLnZhbHVlXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dFZhbHVlKCdlbmRVc2VyQ29kZScpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMTBweFwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcclxuICAgICAgKm5nSWY9XCJzaG93RmlsdGVyc1wiXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCJcclxuICAgID5cclxuICAgICAgQ2xlYXIgQWxsXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgKGNsaWNrKT1cInNob3dGaWx0ZXJzID0gIXNob3dGaWx0ZXJzXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJzXCI+XHJcbiAgICAgICAge3sgJ3NhcEFkbWluSW5zdGFsbGVkSW5zdHJ1bWVudC5oaWRlRmlsdGVycycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0ZpbHRlcnNcIj5cclxuICAgICAgICB7eyAnc2FwQWRtaW5JbnN0YWxsZWRJbnN0cnVtZW50LnNob3dGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dGaWx0ZXJzXCJcclxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIlxyXG4gICAgPlxyXG4gICAgICBTZWFyY2hcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -389,10 +389,10 @@ class SapInstalledInstrumentListSearchComponent {
389
389
  }
390
390
  }
391
391
  SapInstalledInstrumentListSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SapInstalledInstrumentListSearchComponent, deps: [{ token: SapInstalledInstrumentsService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3$1.NonNullableFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
392
- SapInstalledInstrumentListSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SapInstalledInstrumentListSearchComponent, selector: "app-sap-installed-instrument-list-search", outputs: { filtersChanged: "filtersChanged" }, viewQueries: [{ propertyName: "multiselectAutocomplete", first: true, predicate: ["multiselectAutocomplete"], descendants: true }], ngImport: i0, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [placeholder]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [getFilteredOptions]=\"this.getFilteredOptions\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$2.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.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: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i12.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i12.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i13.NgxStMultiselectAutocompleteComponent, selector: "ngx-st-multiselect-autocomplete", inputs: ["label", "placeholder", "getFilteredOptions", "initSelectedData", "maxLengthSelectedData"], outputs: ["selectedDataChanged"] }, { kind: "component", type: i14.SearchSelectComponent, selector: "ngx-st-search-select", inputs: ["selectLabel", "filterMethod", "optionLabelMethod", "optionLabelPropertyName", "valueMethod", "displaySelected", "model", "modelChange", "selectFormControl", "required", "selectBindType", "searchLabel", "options"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
392
+ SapInstalledInstrumentListSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SapInstalledInstrumentListSearchComponent, selector: "app-sap-installed-instrument-list-search", outputs: { filtersChanged: "filtersChanged" }, viewQueries: [{ propertyName: "multiselectAutocomplete", first: true, predicate: ["multiselectAutocomplete"], descendants: true }], ngImport: i0, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [searchLabel]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [settings]=\"{\r\n getFilteredOptions: this.getFilteredOptions\r\n }\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$2.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.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: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i12.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i12.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i13.NgxStMultiselectAutocompleteComponent, selector: "ngx-st-multiselect-autocomplete[settings]", inputs: ["label", "searchLabel", "settings", "initSelectedData", "maxLengthSelectedData", "clearAfterSelect"], outputs: ["selectedDataChanged"] }, { kind: "component", type: i14.SearchSelectComponent, selector: "ngx-st-search-select", inputs: ["selectLabel", "filterMethod", "optionLabelMethod", "optionLabelPropertyName", "valueMethod", "displaySelected", "model", "modelChange", "selectFormControl", "required", "selectBindType", "searchLabel", "showEmptyOption", "options"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
393
393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SapInstalledInstrumentListSearchComponent, decorators: [{
394
394
  type: Component,
395
- args: [{ selector: 'app-sap-installed-instrument-list-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [placeholder]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [getFilteredOptions]=\"this.getFilteredOptions\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n" }]
395
+ args: [{ selector: 'app-sap-installed-instrument-list-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n class=\"search-filters\"\r\n [formGroup]=\"searchForm\"\r\n (ngSubmit)=\"searchSubmitted()\"\r\n>\r\n <div class=\"row align-items-center\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <ngx-st-multiselect-autocomplete\r\n #multiselectAutocomplete\r\n [label]=\"\r\n ('sapAdminInstalledInstrument.application' | translate) +\r\n ' (' +\r\n ('global.max' | translate) +\r\n ': 10)'\r\n \"\r\n [searchLabel]=\"\r\n 'sapAdminInstalledInstrument.applicationPlaceholder' | translate\r\n \"\r\n [settings]=\"{\r\n getFilteredOptions: this.getFilteredOptions\r\n }\"\r\n [initSelectedData]=\"searchForm.controls.application.value\"\r\n [maxLengthSelectedData]=\"10\"\r\n (selectedDataChanged)=\"applicationSelected($event)\"\r\n ></ngx-st-multiselect-autocomplete>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"bpName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.bpName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('bpName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"technicianLastName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.technicianLastName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.technicianLastName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('technicianLastName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"serialNumber\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.serialNumber' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.serialNumber.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('serialNumber')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"instrumentDesc\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.instrumentDescription' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.instrumentDesc.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('instrumentDesc')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.instrumentStatus' | translate\r\n }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"''\">{{ 'global.empty' | translate }}</mat-option>\r\n <mat-option [value]=\"'A'\">{{\r\n 'sapAdminInstalledInstrument.statusA' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'R'\">{{\r\n 'sapAdminInstalledInstrument.statusR' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'T'\">{{\r\n 'sapAdminInstalledInstrument.statusT' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'L'\">{{\r\n 'sapAdminInstalledInstrument.statusL' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'I'\">{{\r\n 'sapAdminInstalledInstrument.statusI' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"customerNo\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.accountNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.customerNo.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('customerNo')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-4 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('territory') &&\r\n ((territories$ | async) || []) as territories\r\n \"\r\n [options]=\"territories || []\"\r\n [selectLabel]=\"'global.territory' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.territory\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getTerritoryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshTerritories()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"city\"\r\n placeholder=\"{{ 'global.city' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.city.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('city')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"searchForm?.get('state') && ((states$ | async) || []) as states\"\r\n [options]=\"states || []\"\r\n [selectLabel]=\"'global.state' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.state\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getStateValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n [disabled]=\"!searchForm.controls.country.value\"\r\n (click)=\"refreshStates()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"county\"\r\n placeholder=\"{{ 'global.county' | translate }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.county.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('county')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center row\">\r\n <ngx-st-search-select\r\n *ngIf=\"\r\n searchForm?.get('country') &&\r\n ((countries$ | async) || []) as countries\r\n \"\r\n [options]=\"countries || []\"\r\n [selectLabel]=\"'global.country' | translate\"\r\n [optionLabelPropertyName]=\"'name'\"\r\n [selectFormControl]=\"searchForm.controls.country\"\r\n [selectBindType]=\"'control'\"\r\n [searchLabel]=\"'global.search' | translate\"\r\n [valueMethod]=\"getCountryValue\"\r\n ></ngx-st-search-select>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'global.refresh' | translate\"\r\n (click)=\"refreshCountries()\"\r\n type=\"button\"\r\n >\r\n <i class=\"material-icons\">refresh</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{ hide: !showFilters }\">\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateFrom' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker1\"\r\n formControlName=\"installationDateFrom\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker1\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker1></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <mat-label>{{\r\n 'sapAdminInstalledInstrument.installationDateTo' | translate\r\n }}</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker2\"\r\n formControlName=\"installationDateTo\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker2\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker2></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserName\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerName' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserName.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserName')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-xs-12 col-sm-3 align-items-center\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"endUserCode\"\r\n placeholder=\"{{\r\n 'sapAdminInstalledInstrument.endCustomerNo' | translate\r\n }}\"\r\n />\r\n <button\r\n *ngIf=\"searchForm.controls.endUserCode.value\"\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearInputValue('endUserCode')\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row justify-content-center\" style=\"margin-bottom: 10px\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"clearAllFilters()\"\r\n *ngIf=\"showFilters\"\r\n style=\"margin-right: 10px\"\r\n >\r\n Clear All\r\n </button>\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"accent\"\r\n (click)=\"showFilters = !showFilters\"\r\n >\r\n <ng-container *ngIf=\"showFilters\">\r\n {{ 'sapAdminInstalledInstrument.hideFilters' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!showFilters\">\r\n {{ 'sapAdminInstalledInstrument.showFilters' | translate }}\r\n </ng-container>\r\n </button>\r\n <button\r\n *ngIf=\"showFilters\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n style=\"margin-left: 10px\"\r\n >\r\n Search\r\n </button>\r\n </div>\r\n</form>\r\n" }]
396
396
  }], ctorParameters: function () { return [{ type: SapInstalledInstrumentsService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3$1.NonNullableFormBuilder }]; }, propDecorators: { multiselectAutocomplete: [{
397
397
  type: ViewChild,
398
398
  args: ['multiselectAutocomplete']