fabrikantencore 2.7.7 → 2.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { BeheerLanguagesFilterViewModel, BeheerLanguagesSubCategoryViewModel, CreateExportRequest, LoginResponseModel, ReadExportRequest, TranslationCategory, TranslationSubCategory } from '../../../swagger/SwaggerClient';
2
+ import { BeheerLanguagesSubCategoryViewModel, CreateExportRequest, LoginResponseModel, ReadExportRequest, TranslationCategory, TranslationSubCategory } from '../../../swagger/SwaggerClient';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../../swagger/SwaggerClient";
5
5
  import * as i2 from "../../../services/authentication.service";
@@ -86,6 +86,7 @@ class BeheerTranslateComponent {
86
86
  this.ActiveSubs = new Array();
87
87
  var startIndex = this.pageIndex * this.amountPerPage;
88
88
  var endIndex = (this.pageIndex + 1) * this.amountPerPage;
89
+ var itemsadded = 0;
89
90
  if (this.SelectedBeheerLanguagesCategoryViewModel != null) {
90
91
  var subcats = this.SelectedBeheerLanguagesCategoryViewModel.subCategories;
91
92
  if (subcats != null) {
@@ -94,13 +95,14 @@ class BeheerTranslateComponent {
94
95
  if (keys != null) {
95
96
  var subcat = null;
96
97
  for (var j = 0; j < keys.length; j++) {
97
- if (this.amountLength >= startIndex && this.amountLength < endIndex) {
98
+ if (this.amountLength >= startIndex && this.amountLength < endIndex && itemsadded < this.amountPerPage) {
98
99
  if (subcat == null) {
99
100
  subcat = new BeheerLanguagesSubCategoryViewModel();
100
101
  subcat.translationSubCategory = subcats[i].translationSubCategory;
101
102
  subcat.html = subcats[i].html;
102
103
  subcat.keys = new Array();
103
104
  this.ActiveSubs.push(subcat);
105
+ itemsadded++;
104
106
  }
105
107
  if (subcat?.keys != null) {
106
108
  subcat.keys.push(keys[j]);
@@ -109,38 +111,39 @@ class BeheerTranslateComponent {
109
111
  this.amountLength++;
110
112
  }
111
113
  }
112
- var filters = subcats[i].filters;
113
- if (filters != null) {
114
- var subcat = null;
115
- for (var j = 0; j < filters.length; j++) {
116
- var options = filters[j].options;
117
- var filtermodel = null;
118
- if (options != null) {
119
- for (var o = 0; o < options.length; o++) {
120
- if (this.amountLength >= startIndex && this.amountLength < endIndex) {
121
- if (subcat == null) {
122
- subcat = new BeheerLanguagesSubCategoryViewModel();
123
- subcat.translationSubCategory = subcats[i].translationSubCategory;
124
- subcat.html = subcats[i].html;
125
- subcat.keys = new Array();
126
- subcat.filters = new Array();
127
- this.ActiveSubs.push(subcat);
128
- }
129
- if (subcat?.filters != null && filtermodel == null) {
130
- this.amountLength++;
131
- filtermodel = new BeheerLanguagesFilterViewModel(filters[j]);
132
- filtermodel.options = new Array();
133
- subcat.filters.push(filtermodel);
134
- }
135
- if (filtermodel?.options != null) {
136
- filtermodel.options.push(options[o]);
137
- }
138
- }
139
- this.amountLength++;
140
- }
141
- }
142
- }
143
- }
114
+ //var filters = subcats[i].filters;
115
+ //if (filters != null) {
116
+ // var subcat: BeheerLanguagesSubCategoryViewModel | null = null;
117
+ // for (var j = 0; j < filters.length; j++) {
118
+ // var options = filters[j].options;
119
+ // var filtermodel: BeheerLanguagesFilterViewModel | null = null;
120
+ // if (options != null) {
121
+ // for (var o = 0; o < options.length; o++) {
122
+ // if (this.amountLength >= startIndex && this.amountLength < endIndex && itemsadded < this.amountPerPage) {
123
+ // if (subcat == null) {
124
+ // subcat = new BeheerLanguagesSubCategoryViewModel();
125
+ // subcat.translationSubCategory = subcats[i].translationSubCategory;
126
+ // subcat.html = subcats[i].html;
127
+ // subcat.keys = new Array<BeheerLanguagesKeyViewModel>();
128
+ // subcat.filters = new Array<BeheerLanguagesFilterViewModel>();
129
+ // this.ActiveSubs.push(subcat);
130
+ // }
131
+ // if (subcat?.filters != null && filtermodel == null) {
132
+ // filtermodel = new BeheerLanguagesFilterViewModel(filters[j]);
133
+ // filtermodel.options = new Array<BeheerLanguagesKeyViewModel>();
134
+ // subcat.filters.push(filtermodel);
135
+ // itemsadded++;
136
+ // }
137
+ // if (filtermodel?.options != null) {
138
+ // filtermodel.options.push(options[o]);
139
+ // itemsadded++;
140
+ // }
141
+ // }
142
+ // this.amountLength++;
143
+ // }
144
+ // }
145
+ // }
146
+ //}
144
147
  }
145
148
  }
146
149
  }
@@ -276,14 +279,14 @@ class BeheerTranslateComponent {
276
279
  return count;
277
280
  }
278
281
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BeheerTranslateComponent, deps: [{ token: i1.TranslateApiClient }, { token: i2.AuthenticationService }, { token: i3.MatLegacySnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
279
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: BeheerTranslateComponent, selector: "app-beheer-translate", viewQueries: [{ propertyName: "tablediv", first: true, predicate: ["tablediv"], descendants: true }], ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; Resize()\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>-->\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <td *ngIf=\"!IsHTML()\" colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <td [attr.colspan]=\"GetLanguageCount()\">\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\" [style.width]=\"'50%'\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngFor=\"let filter of subcat.filters\">\r\n <tr>\r\n <td>\r\n {{ filter.filter.text }}\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(filter.filter.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(filter.filter.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <tr>\r\n <td>\r\n <ul>\r\n <li>{{ option.text }}</li>\r\n </ul>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(option.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(option.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacyButton, 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: i10.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i11.MatLegacyPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i12.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i15.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i16.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i17.FabFlagComponent, selector: "fab-flag", inputs: ["country"] }], encapsulation: i0.ViewEncapsulation.None });
282
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: BeheerTranslateComponent, selector: "app-beheer-translate", viewQueries: [{ propertyName: "tablediv", first: true, predicate: ["tablediv"], descendants: true }], ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; RefreshPaginator(); Resize();\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>-->\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <td *ngIf=\"!IsHTML()\" colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <td [attr.colspan]=\"GetLanguageCount()\">\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\" [style.width]=\"'50%'\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\" *ngIf=\"GetEntry(key.entries, language) != null\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <!--<ng-container *ngFor=\"let filter of subcat.filters\">\r\n <tr>\r\n <td>\r\n {{ filter.filter.text }}\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(filter.filter.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(filter.filter.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <tr>\r\n <td>\r\n <ul>\r\n <li>{{ option.text }}</li>\r\n </ul>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(option.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(option.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>-->\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacyButton, 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: i10.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i11.MatLegacyPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i12.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i15.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i16.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i17.FabFlagComponent, selector: "fab-flag", inputs: ["country"] }], encapsulation: i0.ViewEncapsulation.None });
280
283
  }
281
284
  export { BeheerTranslateComponent };
282
285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BeheerTranslateComponent, decorators: [{
283
286
  type: Component,
284
- args: [{ selector: 'app-beheer-translate', encapsulation: ViewEncapsulation.None, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; Resize()\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>-->\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <td *ngIf=\"!IsHTML()\" colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <td [attr.colspan]=\"GetLanguageCount()\">\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\" [style.width]=\"'50%'\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngFor=\"let filter of subcat.filters\">\r\n <tr>\r\n <td>\r\n {{ filter.filter.text }}\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(filter.filter.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(filter.filter.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <tr>\r\n <td>\r\n <ul>\r\n <li>{{ option.text }}</li>\r\n </ul>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(option.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(option.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"] }]
287
+ args: [{ selector: 'app-beheer-translate', encapsulation: ViewEncapsulation.None, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; RefreshPaginator(); Resize();\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>-->\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <td *ngIf=\"!IsHTML()\" colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <td [attr.colspan]=\"GetLanguageCount()\">\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\" [style.width]=\"'50%'\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\" *ngIf=\"GetEntry(key.entries, language) != null\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <!--<ng-container *ngFor=\"let filter of subcat.filters\">\r\n <tr>\r\n <td>\r\n {{ filter.filter.text }}\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(filter.filter.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(filter.filter.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <tr>\r\n <td>\r\n <ul>\r\n <li>{{ option.text }}</li>\r\n </ul>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(option.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(option.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>-->\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"] }]
285
288
  }], ctorParameters: function () { return [{ type: i1.TranslateApiClient }, { type: i2.AuthenticationService }, { type: i3.MatLegacySnackBar }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tablediv: [{
286
289
  type: ViewChild,
287
290
  args: ['tablediv']
288
291
  }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBbUUsOEJBQThCLEVBQStCLG1DQUFtQyxFQUFxRCxtQkFBbUIsRUFBd0Isa0JBQWtCLEVBQUUsaUJBQWlCLEVBQXFELG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeGIsTUFNYSx3QkFBd0I7SUErQ3pCO0lBQ0E7SUFDQTtJQUNBO0lBaERILElBQUksR0FBVyxNQUFNLENBQUM7SUFFdEIsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBRTFHLFNBQVMsR0FBVyxDQUFDLENBQUM7SUFDdEIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBRWxDLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNC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SUFBSTt3QkFDakIsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7YUFDRjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUksRUFBRTtZQUN6QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDO1lBRXhELElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtnQkFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7d0JBQ3ZCLEtBQUssRUFBRSxDQUFDO2lCQUNYO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FwVVUsd0JBQXdCOzJGQUF4Qix3QkFBd0Isa0tDZHJDLDRoUEE0SkE7O1NEOUlhLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSTs2TUF5QmQsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGVnYWN5UGFnZUV2ZW50IGFzIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRMZWdhY3lTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yQ29uZmlnIH0gZnJvbSAnQGtvbGtvdi9hbmd1bGFyLWVkaXRvcic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCwgQ3JlYXRlRXhwb3J0UmVxdWVzdCwgQ3JlYXRlRXhwb3J0UmVzcG9uc2UsIExvZ2luUmVzcG9uc2VNb2RlbCwgUmVhZEV4cG9ydFJlcXVlc3QsIFRyYW5zbGF0ZUFwaUNsaWVudCwgVHJhbnNsYXRlS2V5Q2F0ZWdvcnlWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLXRyYW5zbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci10cmFuc2xhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci10cmFuc2xhdGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJUcmFuc2xhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xyXG5cclxuICBwdWJsaWMgSFRNTDogc3RyaW5nID0gXCJ0ZXN0XCI7XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgT3BlbkNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsOiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWw7XHJcbiAgcHVibGljIEFjdGl2ZVN1YnM6IEFycmF5PEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsPiA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4oKTtcclxuXHJcbiAgcHVibGljIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgYW1vdW50TGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBhbW91bnRQZXJQYWdlOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvbkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsOiBCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZWRpdicpIHRhYmxlZGl2OiBFbGVtZW50UmVmO1xyXG5cclxuICBlZGl0b3JDb25maWc6IEFuZ3VsYXJFZGl0b3JDb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IGZhbHNlLFxyXG4gICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICBtaW5IZWlnaHQ6ICcwJyxcclxuICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgd2lkdGg6ICdhdXRvJyxcclxuICAgIG1pbldpZHRoOiAnMCcsXHJcbiAgICB0cmFuc2xhdGU6ICdubycsXHJcbiAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICBkZWZhdWx0Rm9udFNpemU6ICcnLFxyXG4gICAgc2FuaXRpemU6IHRydWUsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgWydmb250TmFtZSddXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLlJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25SZXNpemUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5SZXNpemUoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkVHJhbnNsYXRpb25zKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGFnZUV2ZW50KGU6IFBhZ2VFdmVudCkge1xyXG4gICAgLy90aGlzLnBhZ2VFdmVudCA9IGU7XHJcbiAgICAvL3RoaXMubGVuZ3RoID0gZS5sZW5ndGg7XHJcbiAgICAvL3RoaXMucGFnZVNpemUgPSBlLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSBlLnBhZ2VJbmRleDtcclxuXHJcbiAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWZyZXNoUGFnaW5hdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbW91bnRMZW5ndGggPSAwO1xyXG4gICAgdGhpcy5BY3RpdmVTdWJzID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsPigpO1xyXG5cclxuICAgIHZhciBzdGFydEluZGV4ID0gdGhpcy5wYWdlSW5kZXggKiB0aGlzLmFtb3VudFBlclBhZ2U7XHJcbiAgICB2YXIgZW5kSW5kZXggPSAodGhpcy5wYWdlSW5kZXggKyAxKSAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsICE9IG51bGwpIHtcclxuXHJcbiAgICAgIHZhciBzdWJjYXRzID0gdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnN1YkNhdGVnb3JpZXM7XHJcblxyXG4gICAgICBpZiAoc3ViY2F0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB2YXIga2V5cyA9IHN1YmNhdHNbaV0ua2V5cztcclxuXHJcbiAgICAgICAgICBpZiAoa2V5cyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB2YXIgc3ViY2F0OiBCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmFtb3VudExlbmd0aCA+PSBzdGFydEluZGV4ICYmIHRoaXMuYW1vdW50TGVuZ3RoIDwgZW5kSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwoKTtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgPSBzdWJjYXRzW2ldLnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5odG1sID0gc3ViY2F0c1tpXS5odG1sO1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkFjdGl2ZVN1YnMucHVzaChzdWJjYXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQ/LmtleXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cy5wdXNoKGtleXNbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hbW91bnRMZW5ndGgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHZhciBmaWx0ZXJzID0gc3ViY2F0c1tpXS5maWx0ZXJzO1xyXG5cclxuICAgICAgICAgIGlmIChmaWx0ZXJzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZpbHRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICB2YXIgb3B0aW9ucyA9IGZpbHRlcnNbal0ub3B0aW9ucztcclxuICAgICAgICAgICAgICB2YXIgZmlsdGVybW9kZWw6IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IG9wdGlvbnMubGVuZ3RoOyBvKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJjYXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeSA9IHN1YmNhdHNbaV0udHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcclxuICAgICAgICAgICAgICAgICAgICAgIHN1YmNhdC5odG1sID0gc3ViY2F0c1tpXS5odG1sO1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3ViY2F0LmZpbHRlcnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzRmlsdGVyVmlld01vZGVsPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQWN0aXZlU3Vicy5wdXNoKHN1YmNhdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViY2F0Py5maWx0ZXJzICE9IG51bGwgJiYgZmlsdGVybW9kZWwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbW91bnRMZW5ndGgrKztcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcm1vZGVsID0gbmV3IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbChmaWx0ZXJzW2pdKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcm1vZGVsLm9wdGlvbnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3ViY2F0LmZpbHRlcnMucHVzaChmaWx0ZXJtb2RlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVybW9kZWw/Lm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucy5wdXNoKG9wdGlvbnNbb10pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5hbW91bnRMZW5ndGgrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZWRpdj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuSXNIVE1MKCkpIHtcclxuICAgICAgICBpZiAodGhpcy5hbW91bnRQZXJQYWdlICE9IDEpIHtcclxuICAgICAgICAgIHRoaXMuYW1vdW50UGVyUGFnZSA9IDE7XHJcblxyXG4gICAgICAgICAgdGhpcy5lZGl0b3JDb25maWcuaGVpZ2h0ID0gTWF0aC5mbG9vcih0aGlzLnRhYmxlZGl2Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgLSA0MDApICsgXCJweFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgaXRlbWNvdW50ID0gTWF0aC5mbG9vcigocGFyc2VJbnQodGhpcy50YWJsZWRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgLSAyNTApIC8gNTcpO1xyXG5cclxuICAgICAgICBpZiAoaXRlbWNvdW50ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYW1vdW50UGVyUGFnZSAhPSBpdGVtY291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5hbW91bnRQZXJQYWdlID0gaXRlbWNvdW50O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0RW50cnkoZW50cmllczogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWxbXSwgbGFuZ3VhZ2U6IEJlaGVlckxhbmd1YWdlVmlld01vZGVsKTogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIGlmIChlbnRyaWVzLmVudHJpZXMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZW50cmllc1tpXS5sYW5ndWFnZUlkID09IGxhbmd1YWdlLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm4gZW50cmllc1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkVHJhbnNsYXRpb25zKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuZ2V0QmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpLnN1YnNjcmliZSgobW9kZWw6IEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNbMF07XHJcbiAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnNhdmVCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLk9wZW5DaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVDaGFuZ2VkKGVudHJ5OiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgZW50cnkuY2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5TaG93U25hY2tCYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93U25hY2tCYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuT3BlbkNoYW5nZXMpIHtcclxuICAgICAgdGhpcy5PcGVuQ2hhbmdlcyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgc25hY2sgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJVbnNhdmVkIGNoYW5nZXMuLi5cIiwgXCJTYXZlXCIpO1xyXG5cclxuICAgICAgc25hY2sub25BY3Rpb24oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuU2F2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBFeHBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVFeHBvcnRSZXF1ZXN0KCk7XHJcblxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmNyZWF0ZUV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBDcmVhdGVFeHBvcnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydChtb2RlbC51cmwpO1xyXG5cclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSW1wb3J0KCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVhZEV4cG9ydFJlcXVlc3QoKTtcclxuXHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQucmVhZEV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSXNIVE1MKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBzdWJjYXRzID0gdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnN1YkNhdGVnb3JpZXM7XHJcblxyXG4gICAgICBpZiAoc3ViY2F0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3ViY2F0c1tpXS5odG1sKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0TGFuZ3VhZ2VDb3VudCgpOiBudW1iZXIge1xyXG4gICAgdmFyIGNvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBsYW5ndWFnZXMgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7XHJcblxyXG4gICAgICBpZiAobGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGxhbmd1YWdlc1tpXS5zZWxlY3RlZClcclxuICAgICAgICAgICAgY291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtYmVoZWVyLW5hdj48L2FwcC1iZWhlZXItbmF2PlxyXG5cclxuPGFwcC1mYWItbG9hZGVyICpuZ0lmPVwiTG9hZGluZ1wiPjwvYXBwLWZhYi1sb2FkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiIUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGlzcGxheWZsZXhcIiAjdGFibGVkaXYgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXJcIj5cclxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkdyb3VwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy5wYWdlSW5kZXggPSAwOyBSZXNpemUoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXQgb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvbkNhdGVnb3J5W2NhdC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwhLS08YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJFeHBvcnQoKVwiPlxyXG4gICAgICAgICAgICBFeHBvcnRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiSW1wb3J0KClcIj5cclxuICAgICAgICAgICAgSW1wb3J0XHJcbiAgICAgICAgICA8L2J1dHRvbj4tLT5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJTYXZlKClcIiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFPcGVuQ2hhbmdlc1wiPlxyXG4gICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1haW4tYmFyIGZsZXhhdXRvXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtaGVpZ2h0XCI+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICA8aDE+e3sgVHJhbnNsYXRpb25DYXRlZ29yeVtTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19PC9oMT5cclxuXHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhSXNIVE1MKClcIiBjb2xzcGFuPVwiMlwiIGNsYXNzPVwiY2F0LXJvd1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhdC1yb3dcIiAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmNhdCBvZiBBY3RpdmVTdWJzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBzdWJjYXQua2V5c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cIkdldExhbmd1YWdlQ291bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwia2V5LnRleHQgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sga2V5LnRleHQgfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIiBbc3R5bGUud2lkdGhdPVwiJzUwJSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFuZ3VsYXItZWRpdG9yIFtjb25maWddPVwiZWRpdG9yQ29uZmlnXCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hbmd1bGFyLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImtleS50ZXh0ICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7eyBrZXkudGV4dCB9fSlcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAoa2V5dXApPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIHN1YmNhdC5maWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIuZmlsdGVyLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShmaWx0ZXIuZmlsdGVyLmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChrZXl1cCk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KGZpbHRlci5maWx0ZXIuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7IG9wdGlvbi50ZXh0IH19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KG9wdGlvbi5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAoa2V5dXApPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShvcHRpb24uZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2UpPVwiaGFuZGxlUGFnZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJhbW91bnRMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImFtb3VudFBlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgcGFnZVwiPlxyXG4gICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBZ0csbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4WixNQU1hLHdCQUF3QjtJQStDekI7SUFDQTtJQUNBO0lBQ0E7SUFoREgsSUFBSSxHQUFXLE1BQU0sQ0FBQztJQUV0QixPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0Isd0JBQXdCLENBQTJCO0lBQ25ELFVBQVUsR0FBK0MsSUFBSSxLQUFLLEVBQXVDLENBQUM7SUFFMUcsU0FBUyxHQUFXLENBQUMsQ0FBQztJQUN0QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFFbEMsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxD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QUFJLElBQUksRUFBRTtnQkFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7d0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLEVBQUU7WUFDekMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQztZQUV4RCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO3dCQUN2QixLQUFLLEVBQUUsQ0FBQztpQkFDWDthQUNGO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBdlVVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLGtLQ2RyQyw4dlBBNkpBOztTRC9JYSx3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7Nk1BeUJkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExlZ2FjeVBhZ2VFdmVudCBhcyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckNvbmZpZyB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlVmlld01vZGVsLCBDcmVhdGVFeHBvcnRSZXF1ZXN0LCBDcmVhdGVFeHBvcnRSZXNwb25zZSwgTG9naW5SZXNwb25zZU1vZGVsLCBSZWFkRXhwb3J0UmVxdWVzdCwgVHJhbnNsYXRlQXBpQ2xpZW50LCBUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iZWhlZXItdHJhbnNsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclRyYW5zbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XHJcblxyXG4gIHB1YmxpYyBIVE1MOiBzdHJpbmcgPSBcInRlc3RcIjtcclxuXHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBPcGVuQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDtcclxuICBwdWJsaWMgQWN0aXZlU3ViczogQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+ID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsPigpO1xyXG5cclxuICBwdWJsaWMgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBhbW91bnRMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudFBlclBhZ2U6IG51bWJlciA9IDEwO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlZGl2JykgdGFibGVkaXY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogZmFsc2UsXHJcbiAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgIG1pbkhlaWdodDogJzAnLFxyXG4gICAgbWF4SGVpZ2h0OiAnYXV0bycsXHJcbiAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgbWluV2lkdGg6ICcwJyxcclxuICAgIHRyYW5zbGF0ZTogJ25vJyxcclxuICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICAgIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgICBzYW5pdGl6ZTogdHJ1ZSxcclxuICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICB0b29sYmFySGlkZGVuQnV0dG9uczogW1xyXG4gICAgICBbJ2ZvbnROYW1lJ11cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgVHJhbnNsYXRlQXBpQ2xpZW50OiBUcmFuc2xhdGVBcGlDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLlJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlRXZlbnQoZTogUGFnZUV2ZW50KSB7XHJcbiAgICAvL3RoaXMucGFnZUV2ZW50ID0gZTtcclxuICAgIC8vdGhpcy5sZW5ndGggPSBlLmxlbmd0aDtcclxuICAgIC8vdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGUucGFnZUluZGV4O1xyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLkFjdGl2ZVN1YnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuICAgIHZhciBlbmRJbmRleCA9ICh0aGlzLnBhZ2VJbmRleCArIDEpICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGl0ZW1zYWRkZWQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG5cclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHZhciBrZXlzID0gc3ViY2F0c1tpXS5rZXlzO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5BY3RpdmVTdWJzLnB1c2goc3ViY2F0KTtcclxuICAgICAgICAgICAgICAgICAgaXRlbXNhZGRlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQ/LmtleXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cy5wdXNoKGtleXNbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hbW91bnRMZW5ndGgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vdmFyIGZpbHRlcnMgPSBzdWJjYXRzW2ldLmZpbHRlcnM7XHJcblxyXG4gICAgICAgICAgLy9pZiAoZmlsdGVycyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgLy8gIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gIGZvciAodmFyIGogPSAwOyBqIDwgZmlsdGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgLy8gICAgdmFyIG9wdGlvbnMgPSBmaWx0ZXJzW2pdLm9wdGlvbnM7XHJcbiAgICAgICAgICAvLyAgICB2YXIgZmlsdGVybW9kZWw6IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBvcHRpb25zLmxlbmd0aDsgbysrKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQuZmlsdGVycyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNGaWx0ZXJWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgICB0aGlzLkFjdGl2ZVN1YnMucHVzaChzdWJjYXQpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICAgICAgICAgIGlmIChzdWJjYXQ/LmZpbHRlcnMgIT0gbnVsbCAmJiBmaWx0ZXJtb2RlbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGZpbHRlcm1vZGVsID0gbmV3IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbChmaWx0ZXJzW2pdKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5maWx0ZXJzLnB1c2goZmlsdGVybW9kZWwpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgaWYgKGZpbHRlcm1vZGVsPy5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucy5wdXNoKG9wdGlvbnNbb10pO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgLy8gICAgICB9XHJcbiAgICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVkaXY/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLklzSFRNTCgpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYW1vdW50UGVyUGFnZSAhPSAxKSB7XHJcbiAgICAgICAgICB0aGlzLmFtb3VudFBlclBhZ2UgPSAxO1xyXG5cclxuICAgICAgICAgIHRoaXMuZWRpdG9yQ29uZmlnLmhlaWdodCA9IE1hdGguZmxvb3IodGhpcy50YWJsZWRpdj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IC0gNDAwKSArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGl0ZW1jb3VudCA9IE1hdGguZmxvb3IoKHBhcnNlSW50KHRoaXMudGFibGVkaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gMjUwKSAvIDU3KTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1jb3VudCA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmFtb3VudFBlclBhZ2UgIT0gaXRlbWNvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW1vdW50UGVyUGFnZSA9IGl0ZW1jb3VudDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEVudHJ5KGVudHJpZXM6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsW10sIGxhbmd1YWdlOiBCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCk6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoZW50cmllcy5lbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGVudHJpZXNbaV0ubGFuZ3VhZ2VJZCA9PSBsYW5ndWFnZS5pZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGVudHJpZXNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFRyYW5zbGF0aW9ucyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmdldEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKS5zdWJzY3JpYmUoKG1vZGVsOiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzWzBdO1xyXG4gICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5zYXZlQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5PcGVuQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlQ2hhbmdlZChlbnRyeTogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwpOiB2b2lkIHtcclxuICAgIGVudHJ5LmNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuU2hvd1NuYWNrQmFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NuYWNrQmFyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLk9wZW5DaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuT3BlbkNoYW5nZXMgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHNuYWNrID0gdGhpcy5zbmFja0Jhci5vcGVuKFwiVW5zYXZlZCBjaGFuZ2VzLi4uXCIsIFwiU2F2ZVwiKTtcclxuXHJcbiAgICAgIHNuYWNrLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLlNhdmUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRXhwb3J0KCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgQ3JlYXRlRXhwb3J0UmVxdWVzdCgpO1xyXG5cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5jcmVhdGVFeHBvcnQocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQ3JlYXRlRXhwb3J0UmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQobW9kZWwudXJsKTtcclxuXHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEltcG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlYWRFeHBvcnRSZXF1ZXN0KCk7XHJcblxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnJlYWRFeHBvcnQocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIElzSFRNTCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgc3ViY2F0cyA9IHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC5zdWJDYXRlZ29yaWVzO1xyXG5cclxuICAgICAgaWYgKHN1YmNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ViY2F0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHN1YmNhdHNbaV0uaHRtbClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldExhbmd1YWdlQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHZhciBjb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgbGFuZ3VhZ2VzID0gdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzO1xyXG5cclxuICAgICAgaWYgKGxhbmd1YWdlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChsYW5ndWFnZXNbaV0uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWJlaGVlci1uYXY+PC9hcHAtYmVoZWVyLW5hdj5cclxuXHJcbjxhcHAtZmFiLWxvYWRlciAqbmdJZj1cIkxvYWRpbmdcIj48L2FwcC1mYWItbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cIiFMb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCIgI3RhYmxlZGl2ICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1haW4tYmFyXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Hcm91cDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWxcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMucGFnZUluZGV4ID0gMDsgUmVmcmVzaFBhZ2luYXRvcigpOyBSZXNpemUoKTtcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0IG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzXCIgW3ZhbHVlXT1cImNhdFwiPlxyXG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25DYXRlZ29yeVtjYXQudHJhbnNsYXRpb25DYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8IS0tPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiRXhwb3J0KClcIj5cclxuICAgICAgICAgICAgRXhwb3J0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkltcG9ydCgpXCI+XHJcbiAgICAgICAgICAgIEltcG9ydFxyXG4gICAgICAgICAgPC9idXR0b24+LS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZSgpXCIgY2xhc3M9XCJzYXZlLWJ1dHRvblwiIFtkaXNhYmxlZF09XCIhT3BlbkNoYW5nZXNcIj5cclxuICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8L21hdC1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhciBmbGV4YXV0b1wiPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LWhlaWdodFwiPlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPGgxPnt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fTwvaDE+XHJcblxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIUlzSFRNTCgpXCIgY29sc3Bhbj1cIjJcIiBjbGFzcz1cImNhdC1yb3dcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCIgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJjYXQgb2YgQWN0aXZlU3Vic1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJHZXRMYW5ndWFnZUNvdW50KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImtleS50ZXh0ICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGtleS50ZXh0IH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCIgW3N0eWxlLndpZHRoXT1cIic1MCUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbmd1bGFyLWVkaXRvciBbY29uZmlnXT1cImVkaXRvckNvbmZpZ1wiIFsobmdNb2RlbCldPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYW5ndWxhci1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmNhdCBvZiBBY3RpdmVTdWJzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQga2V5IG9mIHN1YmNhdC5rZXlzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJrZXkudGV4dCAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe3sga2V5LnRleHQgfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiZnVsbHdpZHRoXCIgKm5nSWY9XCJHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAoa2V5dXApPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS08bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2Ygc3ViY2F0LmZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlci5maWx0ZXIudGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KGZpbHRlci5maWx0ZXIuZW50cmllcywgbGFuZ3VhZ2UpLnZhbHVlXCIgKGtleXVwKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkoZmlsdGVyLmZpbHRlci5lbnRyaWVzLCBsYW5ndWFnZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlci5vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+e3sgb3B0aW9uLnRleHQgfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiR2V0RW50cnkob3B0aW9uLmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChrZXl1cCk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KG9wdGlvbi5lbnRyaWVzLCBsYW5ndWFnZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZSk9XCJoYW5kbGVQYWdlRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cImFtb3VudExlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiYW1vdW50UGVyUGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVBhZ2VTaXplXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCBwYWdlXCI+XHJcbiAgICAgICAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -5,7 +5,9 @@ import * as i1 from "../../services/fabrikanten.service";
5
5
  import * as i2 from "../../services/translate.service";
6
6
  import * as i3 from "@angular/common";
7
7
  import * as i4 from "@angular/forms";
8
- import * as i5 from "@angular/material/legacy-checkbox";
8
+ import * as i5 from "@angular/material/legacy-tooltip";
9
+ import * as i6 from "@angular/material/icon";
10
+ import * as i7 from "@angular/material/legacy-checkbox";
9
11
  class FabCheckboxComponent {
10
12
  FabrikantenService;
11
13
  TranslateService;
@@ -57,15 +59,15 @@ class FabCheckboxComponent {
57
59
  }
58
60
  }
59
61
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FabCheckboxComponent, deps: [{ token: i1.FabrikantenService }, { token: i2.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FabCheckboxComponent, selector: "app-fab-checkbox", inputs: { filter: "filter" }, outputs: { filterchanged: "filterchanged" }, ngImport: i0, template: "<div class=\"row\" *ngIf=\"!filter.hidden\">\r\n <div class=\"select\">\r\n <mat-checkbox [(ngModel)]=\"Checked\" (ngModelChange)=\"Changed()\">{{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}</mat-checkbox>\r\n <!--<mat-form-field appearance=\"fill\" class=\"full-width\">\r\n <mat-label class=\"select-mat-label filter-name\">\r\n \r\n <span *ngIf=\"filter.blocksProductSelect || filter.required\">*</span>\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedOptionId\" (selectionChange)=\"SelectOption()\" [disabled]=\"IsDisabled()\">\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <mat-option [value]=\"option.id\" class=\"select-mat-option\" *ngIf=\"!option.hidden\">\r\n <ng-container *ngIf=\"option.colour != null && option.colour != ''\">\r\n <span [ngStyle]=\"{'background-color': option.colour}\" class=\"colour-preview\">\r\n &nbsp;\r\n &nbsp;\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"option.imagePath != null && option.imagePath != ''\">\r\n <div class=\"filter-option-image-div\">\r\n <img src=\"{{ option.imagePath }}\" class=\"filter-option-image\" />\r\n </div>\r\n </ng-container>\r\n <span class=\"name-span\">{{ TranslateService.GetActiveValue(TranslationCategory.FilterOption, TranslationSubCategory.Name, option.id) }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>-->\r\n </div>\r\n</div>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
62
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FabCheckboxComponent, selector: "app-fab-checkbox", inputs: { filter: "filter" }, outputs: { filterchanged: "filterchanged" }, ngImport: i0, template: "<div class=\"row\" *ngIf=\"!filter.hidden\">\r\n <div class=\"select\">\r\n <mat-checkbox [(ngModel)]=\"Checked\" (ngModelChange)=\"Changed()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}\r\n <ng-container *ngIf=\"TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) != ''\">\r\n <span class=\"filter-label-tooltip\" matTooltip=\"{{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) }}\">\r\n <mat-icon class=\"expand_less\">info</mat-icon>\r\n </span>\r\n </ng-container>\r\n </mat-checkbox>\r\n \r\n <!--<mat-form-field appearance=\"fill\" class=\"full-width\">\r\n <mat-label class=\"select-mat-label filter-name\">\r\n\r\n <span *ngIf=\"filter.blocksProductSelect || filter.required\">*</span>\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedOptionId\" (selectionChange)=\"SelectOption()\" [disabled]=\"IsDisabled()\">\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <mat-option [value]=\"option.id\" class=\"select-mat-option\" *ngIf=\"!option.hidden\">\r\n <ng-container *ngIf=\"option.colour != null && option.colour != ''\">\r\n <span [ngStyle]=\"{'background-color': option.colour}\" class=\"colour-preview\">\r\n &nbsp;\r\n &nbsp;\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"option.imagePath != null && option.imagePath != ''\">\r\n <div class=\"filter-option-image-div\">\r\n <img src=\"{{ option.imagePath }}\" class=\"filter-option-image\" />\r\n </div>\r\n </ng-container>\r\n <span class=\"name-span\">{{ TranslateService.GetActiveValue(TranslationCategory.FilterOption, TranslationSubCategory.Name, option.id) }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>-->\r\n </div>\r\n</div>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
61
63
  }
62
64
  export { FabCheckboxComponent };
63
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FabCheckboxComponent, decorators: [{
64
66
  type: Component,
65
- args: [{ selector: 'app-fab-checkbox', template: "<div class=\"row\" *ngIf=\"!filter.hidden\">\r\n <div class=\"select\">\r\n <mat-checkbox [(ngModel)]=\"Checked\" (ngModelChange)=\"Changed()\">{{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}</mat-checkbox>\r\n <!--<mat-form-field appearance=\"fill\" class=\"full-width\">\r\n <mat-label class=\"select-mat-label filter-name\">\r\n \r\n <span *ngIf=\"filter.blocksProductSelect || filter.required\">*</span>\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedOptionId\" (selectionChange)=\"SelectOption()\" [disabled]=\"IsDisabled()\">\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <mat-option [value]=\"option.id\" class=\"select-mat-option\" *ngIf=\"!option.hidden\">\r\n <ng-container *ngIf=\"option.colour != null && option.colour != ''\">\r\n <span [ngStyle]=\"{'background-color': option.colour}\" class=\"colour-preview\">\r\n &nbsp;\r\n &nbsp;\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"option.imagePath != null && option.imagePath != ''\">\r\n <div class=\"filter-option-image-div\">\r\n <img src=\"{{ option.imagePath }}\" class=\"filter-option-image\" />\r\n </div>\r\n </ng-container>\r\n <span class=\"name-span\">{{ TranslateService.GetActiveValue(TranslationCategory.FilterOption, TranslationSubCategory.Name, option.id) }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>-->\r\n </div>\r\n</div>\r\n\r\n" }]
67
+ args: [{ selector: 'app-fab-checkbox', template: "<div class=\"row\" *ngIf=\"!filter.hidden\">\r\n <div class=\"select\">\r\n <mat-checkbox [(ngModel)]=\"Checked\" (ngModelChange)=\"Changed()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}\r\n <ng-container *ngIf=\"TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) != ''\">\r\n <span class=\"filter-label-tooltip\" matTooltip=\"{{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) }}\">\r\n <mat-icon class=\"expand_less\">info</mat-icon>\r\n </span>\r\n </ng-container>\r\n </mat-checkbox>\r\n \r\n <!--<mat-form-field appearance=\"fill\" class=\"full-width\">\r\n <mat-label class=\"select-mat-label filter-name\">\r\n\r\n <span *ngIf=\"filter.blocksProductSelect || filter.required\">*</span>\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedOptionId\" (selectionChange)=\"SelectOption()\" [disabled]=\"IsDisabled()\">\r\n <ng-container *ngFor=\"let option of filter.options\">\r\n <mat-option [value]=\"option.id\" class=\"select-mat-option\" *ngIf=\"!option.hidden\">\r\n <ng-container *ngIf=\"option.colour != null && option.colour != ''\">\r\n <span [ngStyle]=\"{'background-color': option.colour}\" class=\"colour-preview\">\r\n &nbsp;\r\n &nbsp;\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"option.imagePath != null && option.imagePath != ''\">\r\n <div class=\"filter-option-image-div\">\r\n <img src=\"{{ option.imagePath }}\" class=\"filter-option-image\" />\r\n </div>\r\n </ng-container>\r\n <span class=\"name-span\">{{ TranslateService.GetActiveValue(TranslationCategory.FilterOption, TranslationSubCategory.Name, option.id) }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>-->\r\n </div>\r\n</div>\r\n\r\n" }]
66
68
  }], ctorParameters: function () { return [{ type: i1.FabrikantenService }, { type: i2.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filter: [{
67
69
  type: Input
68
70
  }], filterchanged: [{
69
71
  type: Output
70
72
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItY2hlY2tib3gvZmFiLWNoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItY2hlY2tib3gvZmFiLWNoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUdySCxPQUFPLEVBQWdFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFHeEosTUFLYSxvQkFBb0I7SUFrQ3JCO0lBQ0Q7SUFDQztJQW5DSCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRWhDLE9BQU8sQ0FBNkI7SUFDcEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxLQUFpQztRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNyQjtRQUVELG1DQUFtQztRQUNuQyx1Q0FBdUM7UUFDdkMsaURBQWlEO1FBQ2pELDRDQUE0QztRQUM1QyxLQUFLO1FBQ0wsR0FBRztJQUNMLENBQUM7SUFFUyxhQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFFdkUsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFDVSxrQkFBc0MsRUFDdkMsZ0JBQWtDLEVBQ2pDLGlCQUFvQztRQUZwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFJLENBQUM7SUFFbkQsUUFBUTtJQUNSLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBRWxDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxLQUFLLEVBQUU7d0JBQ3JGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztxQkFDN0Y7aUJBQ0Y7YUFDRjtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNuRjtJQUNILENBQUM7dUdBeERVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLG1JQ1hqQyxrbURBOEJBOztTRG5CYSxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7d0tBWWYsTUFBTTtzQkFBbEIsS0FBSztnQkFlSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCwgRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWNoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFiLWNoZWNrYm94LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFiQ2hlY2tib3hDb21wb25lbnQge1xuICBwdWJsaWMgQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIF9maWx0ZXI6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsO1xuICBnZXQgZmlsdGVyKCk6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGZpbHRlcih2YWx1ZTogRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWwpIHtcbiAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLl9maWx0ZXIuc2VsZWN0ZWRPcHRpb24gIT0gMCkge1xuICAgICAgdGhpcy5DaGVja2VkID0gdHJ1ZTtcclxuICAgIH1cblxuICAgIC8vaWYgKHRoaXMuU2VsZWN0ZWRPcHRpb25JZCA9PSAwKSB7XG4gICAgLy8gIHZhciBvcHRpb25zID0gdGhpcy5fZmlsdGVyLm9wdGlvbnM7XG4gICAgLy8gIGlmIChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy5sZW5ndGggPT0gMSkge1xuICAgIC8vICAgIHRoaXMuU2VsZWN0ZWRPcHRpb25JZCA9IG9wdGlvbnNbMF0uaWQ7XG4gICAgLy8gIH1cbiAgICAvL31cbiAgfVxuXG4gIEBPdXRwdXQoKSBmaWx0ZXJjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCBUcmFuc2xhdGlvbkNhdGVnb3J5KCkge1xuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xuICB9XG5cbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5DaGVja2VkKSB7XHJcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5maWx0ZXIub3B0aW9ucztcclxuXHJcbiAgICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zW2ldLm5hbWU/LnRvTG93ZXJDYXNlKCkgPT0gXCJqYVwiIHx8IG9wdGlvbnNbaV0ubmFtZT8udG9Mb3dlckNhc2UoKSA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLlNlbGVjdE9wdGlvbih0aGlzLmZpbHRlci5pZCwgb3B0aW9uc1tpXS5pZCwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7ICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLlJlc2V0U2VsZWN0aW9uRmlsdGVyKHRoaXMuZmlsdGVyLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICB9XG5cbiAgLy9wdWJsaWMgU2VsZWN0T3B0aW9uKCk6IHZvaWQge1xuICAvLyAgXG4gIC8vfVxuXG4gIC8vcHVibGljIFJlc2V0U2VsZWN0aW9uKCk6IHZvaWQge1xuICBcbiAgLy99XG5cbiAgLy9wdWJsaWMgR2V0U2VsZWN0ZWRPcHRpb24oKTogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwgfCBudWxsIHtcbiAgLy8gIGlmICh0aGlzLl9maWx0ZXIub3B0aW9ucyAhPSBudWxsKSB7XG4gIC8vICAgIGlmICh0aGlzLl9maWx0ZXIub3B0aW9ucy5sZW5ndGggPT0gMSkge1xuICAvLyAgICAgIHJldHVybiB0aGlzLl9maWx0ZXIub3B0aW9uc1swXTtcbiAgLy8gICAgfVxuICAvLyAgICBlbHNlIHtcbiAgLy8gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2ZpbHRlci5vcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICAgICBpZiAodGhpcy5fZmlsdGVyLnNlbGVjdGVkT3B0aW9uID09IHRoaXMuX2ZpbHRlci5vcHRpb25zW2ldLmlkKSB7XG4gIC8vICAgICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXIub3B0aW9uc1tpXTtcbiAgLy8gICAgICAgIH1cbiAgLy8gICAgICB9XG4gIC8vICAgIH1cbiAgLy8gIH1cblxuICAvLyAgcmV0dXJuIG51bGw7XG4gIC8vfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIWZpbHRlci5oaWRkZW5cIj5cclxuICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XHJcbiAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiQ2hlY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cIkNoYW5nZWQoKVwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXIsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgZmlsdGVyLmlkKSB9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgPCEtLTxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWwgZmlsdGVyLW5hbWVcIj5cclxuICAgICAgXHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVyLmJsb2Nrc1Byb2R1Y3RTZWxlY3QgfHwgZmlsdGVyLnJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZE9wdGlvbklkXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJTZWxlY3RPcHRpb24oKVwiIFtkaXNhYmxlZF09XCJJc0Rpc2FibGVkKClcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlci5vcHRpb25zXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5pZFwiIGNsYXNzPVwic2VsZWN0LW1hdC1vcHRpb25cIiAqbmdJZj1cIiFvcHRpb24uaGlkZGVuXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uLmNvbG91ciAhPSBudWxsICYmIG9wdGlvbi5jb2xvdXIgIT0gJydcIj5cclxuICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogb3B0aW9uLmNvbG91cn1cIiBjbGFzcz1cImNvbG91ci1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbi5pbWFnZVBhdGggIT0gbnVsbCAmJiBvcHRpb24uaW1hZ2VQYXRoICE9ICcnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlLWRpdlwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwie3sgb3B0aW9uLmltYWdlUGF0aCB9fVwiIGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWUtc3BhblwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJPcHRpb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgb3B0aW9uLmlkKSB9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+LS0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItY2hlY2tib3gvZmFiLWNoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItY2hlY2tib3gvZmFiLWNoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUdySCxPQUFPLEVBQWdFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7OztBQUd4SixNQUthLG9CQUFvQjtJQWtDckI7SUFDRDtJQUNDO0lBbkNILE9BQU8sR0FBWSxLQUFLLENBQUM7SUFFaEMsT0FBTyxDQUE2QjtJQUNwQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLEtBQWlDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO1FBRUQsbUNBQW1DO1FBQ25DLHVDQUF1QztRQUN2QyxpREFBaUQ7UUFDakQsNENBQTRDO1FBQzVDLEtBQUs7UUFDTCxHQUFHO0lBQ0wsQ0FBQztJQUVTLGFBQWEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUV2RSxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUNVLGtCQUFzQyxFQUN2QyxnQkFBa0MsRUFDakMsaUJBQW9DO1FBRnBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUksQ0FBQztJQUVuRCxRQUFRO0lBQ1IsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFFbEMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO2dCQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEtBQUssRUFBRTt3QkFDckYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3FCQUM3RjtpQkFDRjthQUNGO1NBQ0Y7YUFDSTtZQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQzt1R0F4RFUsb0JBQW9COzJGQUFwQixvQkFBb0IsbUlDWGpDLDJoRUFzQ0E7O1NEM0JhLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjt3S0FZZixNQUFNO3NCQUFsQixLQUFLO2dCQWVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsLCBGYWJyaWthbnRlbkZpbHRlclZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZhYi1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItY2hlY2tib3guY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGYWJDaGVja2JveENvbXBvbmVudCB7XG4gIHB1YmxpYyBDaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgX2ZpbHRlcjogRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWw7XG4gIGdldCBmaWx0ZXIoKTogRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWwge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZmlsdGVyKHZhbHVlOiBGYWJyaWthbnRlbkZpbHRlclZpZXdNb2RlbCkge1xuICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX2ZpbHRlci5zZWxlY3RlZE9wdGlvbiAhPSAwKSB7XG4gICAgICB0aGlzLkNoZWNrZWQgPSB0cnVlO1xyXG4gICAgfVxuXG4gICAgLy9pZiAodGhpcy5TZWxlY3RlZE9wdGlvbklkID09IDApIHtcbiAgICAvLyAgdmFyIG9wdGlvbnMgPSB0aGlzLl9maWx0ZXIub3B0aW9ucztcbiAgICAvLyAgaWYgKG9wdGlvbnMgIT0gbnVsbCAmJiBvcHRpb25zLmxlbmd0aCA9PSAxKSB7XG4gICAgLy8gICAgdGhpcy5TZWxlY3RlZE9wdGlvbklkID0gb3B0aW9uc1swXS5pZDtcbiAgICAvLyAgfVxuICAgIC8vfVxuICB9XG5cbiAgQE91dHB1dCgpIGZpbHRlcmNoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIHB1YmxpYyBDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkNoZWNrZWQpIHtcclxuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmZpbHRlci5vcHRpb25zO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnNbaV0ubmFtZT8udG9Mb3dlckNhc2UoKSA9PSBcImphXCIgfHwgb3B0aW9uc1tpXS5uYW1lPy50b0xvd2VyQ2FzZSgpID09IFwieWVzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuU2VsZWN0T3B0aW9uKHRoaXMuZmlsdGVyLmlkLCBvcHRpb25zW2ldLmlkLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTsgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuUmVzZXRTZWxlY3Rpb25GaWx0ZXIodGhpcy5maWx0ZXIsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG4gIH1cblxuICAvL3B1YmxpYyBTZWxlY3RPcHRpb24oKTogdm9pZCB7XG4gIC8vICBcbiAgLy99XG5cbiAgLy9wdWJsaWMgUmVzZXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gIFxuICAvL31cblxuICAvL3B1YmxpYyBHZXRTZWxlY3RlZE9wdGlvbigpOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCB8IG51bGwge1xuICAvLyAgaWYgKHRoaXMuX2ZpbHRlci5vcHRpb25zICE9IG51bGwpIHtcbiAgLy8gICAgaWYgKHRoaXMuX2ZpbHRlci5vcHRpb25zLmxlbmd0aCA9PSAxKSB7XG4gIC8vICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlci5vcHRpb25zWzBdO1xuICAvLyAgICB9XG4gIC8vICAgIGVsc2Uge1xuICAvLyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZmlsdGVyLm9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgICAgIGlmICh0aGlzLl9maWx0ZXIuc2VsZWN0ZWRPcHRpb24gPT0gdGhpcy5fZmlsdGVyLm9wdGlvbnNbaV0uaWQpIHtcbiAgLy8gICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlci5vcHRpb25zW2ldO1xuICAvLyAgICAgICAgfVxuICAvLyAgICAgIH1cbiAgLy8gICAgfVxuICAvLyAgfVxuXG4gIC8vICByZXR1cm4gbnVsbDtcbiAgLy99XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhZmlsdGVyLmhpZGRlblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJzZWxlY3RcIj5cclxuICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJDaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwiQ2hhbmdlZCgpXCI+XHJcbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXIsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgZmlsdGVyLmlkKSB9fVxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZpbHRlciwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Ub29sdGlwLCBmaWx0ZXIuaWQpICE9ICcnXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItbGFiZWwtdG9vbHRpcFwiIG1hdFRvb2x0aXA9XCJ7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlRvb2x0aXAsIGZpbHRlci5pZCkgfX1cIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImV4cGFuZF9sZXNzXCI+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgXHJcbiAgICA8IS0tPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICA8bWF0LWxhYmVsIGNsYXNzPVwic2VsZWN0LW1hdC1sYWJlbCBmaWx0ZXItbmFtZVwiPlxyXG5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXIuYmxvY2tzUHJvZHVjdFNlbGVjdCB8fCBmaWx0ZXIucmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkT3B0aW9uSWRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlNlbGVjdE9wdGlvbigpXCIgW2Rpc2FibGVkXT1cIklzRGlzYWJsZWQoKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLmlkXCIgY2xhc3M9XCJzZWxlY3QtbWF0LW9wdGlvblwiICpuZ0lmPVwiIW9wdGlvbi5oaWRkZW5cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb24uY29sb3VyICE9IG51bGwgJiYgb3B0aW9uLmNvbG91ciAhPSAnJ1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiBvcHRpb24uY29sb3VyfVwiIGNsYXNzPVwiY29sb3VyLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uLmltYWdlUGF0aCAhPSBudWxsICYmIG9wdGlvbi5pbWFnZVBhdGggIT0gJydcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1vcHRpb24taW1hZ2UtZGl2XCI+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7eyBvcHRpb24uaW1hZ2VQYXRoIH19XCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZS1zcGFuXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZpbHRlck9wdGlvbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBvcHRpb24uaWQpIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1zZWxlY3Q+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD4tLT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
@@ -4,7 +4,9 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../services/fabrikanten.service";
5
5
  import * as i2 from "../../services/translate.service";
6
6
  import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/material/legacy-progress-spinner";
7
+ import * as i4 from "@angular/material/legacy-tooltip";
8
+ import * as i5 from "@angular/material/icon";
9
+ import * as i6 from "@angular/material/legacy-progress-spinner";
8
10
  class FabFilterDisplayValueComponent {
9
11
  FabrikantenService;
10
12
  TranslateService;
@@ -44,13 +46,13 @@ class FabFilterDisplayValueComponent {
44
46
  return "";
45
47
  }
46
48
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FabFilterDisplayValueComponent, deps: [{ token: i1.FabrikantenService }, { token: i2.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
47
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FabFilterDisplayValueComponent, selector: "app-fab-filter-display-value", inputs: { filter: "filter" }, ngImport: i0, template: "<div class=\"filter-display-div\">\n <div class=\"filter-display-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}\n </div>\n <div *ngIf=\"!IsLoaded()\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </div>\n <div *ngIf=\"IsLoaded()\" class=\"filter-display-value\">\n {{ GetText() }}\n <span class=\"filteroption-label-unit\" *ngIf=\"filter.unit != null && filter.unit != ''\"> {{ filter.unit }}</span>\n </div>\n</div>\n", styles: [".filter-display-div{display:flex}.filter-display-name{flex:auto}.filter-display-value{flex:auto;text-align:right}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }] });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FabFilterDisplayValueComponent, selector: "app-fab-filter-display-value", inputs: { filter: "filter" }, ngImport: i0, template: "<div class=\"filter-display-div\">\n <div class=\"filter-display-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}\n <ng-container *ngIf=\"TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) != ''\">\n <span class=\"filter-label-tooltip\" matTooltip=\"{{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) }}\">\n <mat-icon class=\"expand_less\">info</mat-icon>\n </span>\n </ng-container>\n </div>\n <div *ngIf=\"!IsLoaded()\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </div>\n <div *ngIf=\"IsLoaded()\" class=\"filter-display-value\">\n {{ GetText() }}\n <span class=\"filteroption-label-unit\" *ngIf=\"filter.unit != null && filter.unit != ''\"> {{ filter.unit }}</span>\n </div>\n</div>\n", styles: [".filter-display-div{display:flex}.filter-display-name{flex:auto}.filter-display-value{flex:auto;text-align:right}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }] });
48
50
  }
49
51
  export { FabFilterDisplayValueComponent };
50
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FabFilterDisplayValueComponent, decorators: [{
51
53
  type: Component,
52
- args: [{ selector: 'app-fab-filter-display-value', template: "<div class=\"filter-display-div\">\n <div class=\"filter-display-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}\n </div>\n <div *ngIf=\"!IsLoaded()\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </div>\n <div *ngIf=\"IsLoaded()\" class=\"filter-display-value\">\n {{ GetText() }}\n <span class=\"filteroption-label-unit\" *ngIf=\"filter.unit != null && filter.unit != ''\"> {{ filter.unit }}</span>\n </div>\n</div>\n", styles: [".filter-display-div{display:flex}.filter-display-name{flex:auto}.filter-display-value{flex:auto;text-align:right}\n"] }]
54
+ args: [{ selector: 'app-fab-filter-display-value', template: "<div class=\"filter-display-div\">\n <div class=\"filter-display-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.id) }}\n <ng-container *ngIf=\"TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) != ''\">\n <span class=\"filter-label-tooltip\" matTooltip=\"{{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Tooltip, filter.id) }}\">\n <mat-icon class=\"expand_less\">info</mat-icon>\n </span>\n </ng-container>\n </div>\n <div *ngIf=\"!IsLoaded()\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </div>\n <div *ngIf=\"IsLoaded()\" class=\"filter-display-value\">\n {{ GetText() }}\n <span class=\"filteroption-label-unit\" *ngIf=\"filter.unit != null && filter.unit != ''\"> {{ filter.unit }}</span>\n </div>\n</div>\n", styles: [".filter-display-div{display:flex}.filter-display-name{flex:auto}.filter-display-value{flex:auto;text-align:right}\n"] }]
53
55
  }], ctorParameters: function () { return [{ type: i1.FabrikantenService }, { type: i2.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filter: [{
54
56
  type: Input
55
57
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZpbHRlci1kaXNwbGF5LXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUvZmFiLWZpbHRlci1kaXNwbGF5LXZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUvZmFiLWZpbHRlci1kaXNwbGF5LXZhbHVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQThCLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztBQUV0SCxNQUthLDhCQUE4QjtJQW9CL0I7SUFDRDtJQUNDO0lBcEJWLE9BQU8sQ0FBNkI7SUFDcEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxLQUFpQztRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFDVSxrQkFBc0MsRUFDdkMsZ0JBQWtDLEVBQ2pDLGlCQUFvQztRQUZwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFJLENBQUM7SUFFNUMsUUFBUTtRQUNiLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBRWxDLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUVsQyxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUM3QjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt1R0E1Q1UsOEJBQThCOzJGQUE5Qiw4QkFBOEIsa0dDVjNDLGdnQkFZQTs7U0RGYSw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSw4QkFBOEI7d0tBVzNCLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZpbHRlclZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZhYi1maWx0ZXItZGlzcGxheS12YWx1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGYWJGaWx0ZXJEaXNwbGF5VmFsdWVDb21wb25lbnQge1xuXG4gIF9maWx0ZXI6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsO1xuICBnZXQgZmlsdGVyKCk6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGZpbHRlcih2YWx1ZTogRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWwpIHtcbiAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcclxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIHB1YmxpYyBJc0xvYWRlZCgpOiBib29sZWFuIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZmlsdGVyLm9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9ucyAhPSBudWxsICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKG9wdGlvbnNbMF0uaWQgIT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0VGV4dCgpOiBzdHJpbmcge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5maWx0ZXIub3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1swXS5uYW1lICsgXCJcIjtcclxuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItZGlzcGxheS1kaXZcIj5cbiAgPGRpdiBjbGFzcz1cImZpbHRlci1kaXNwbGF5LW5hbWVcIj5cbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIGZpbHRlci5pZCkgfX1cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhSXNMb2FkZWQoKVwiPlxuICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIklzTG9hZGVkKClcIiBjbGFzcz1cImZpbHRlci1kaXNwbGF5LXZhbHVlXCI+XG4gICAge3sgR2V0VGV4dCgpIH19XG4gICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXJvcHRpb24tbGFiZWwtdW5pdFwiICpuZ0lmPVwiZmlsdGVyLnVuaXQgIT0gbnVsbCAmJiBmaWx0ZXIudW5pdCAhPSAnJ1wiPiB7eyBmaWx0ZXIudW5pdCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZpbHRlci1kaXNwbGF5LXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUvZmFiLWZpbHRlci1kaXNwbGF5LXZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUvZmFiLWZpbHRlci1kaXNwbGF5LXZhbHVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQThCLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBRXRILE1BS2EsOEJBQThCO0lBb0IvQjtJQUNEO0lBQ0M7SUFwQlYsT0FBTyxDQUE2QjtJQUNwQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLEtBQWlDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUNVLGtCQUFzQyxFQUN2QyxnQkFBa0MsRUFDakMsaUJBQW9DO1FBRnBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUksQ0FBQztJQUU1QyxRQUFRO1FBQ2IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFbEMsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDdkIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBRWxDLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQzdCO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO3VHQTVDVSw4QkFBOEI7MkZBQTlCLDhCQUE4QixrR0NWM0MsaTVCQWlCQTs7U0RQYSw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSw4QkFBOEI7d0tBVzNCLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZpbHRlclZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZhYi1maWx0ZXItZGlzcGxheS12YWx1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItZmlsdGVyLWRpc3BsYXktdmFsdWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGYWJGaWx0ZXJEaXNwbGF5VmFsdWVDb21wb25lbnQge1xuXG4gIF9maWx0ZXI6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsO1xuICBnZXQgZmlsdGVyKCk6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGZpbHRlcih2YWx1ZTogRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWwpIHtcbiAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcclxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIHB1YmxpYyBJc0xvYWRlZCgpOiBib29sZWFuIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZmlsdGVyLm9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9ucyAhPSBudWxsICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKG9wdGlvbnNbMF0uaWQgIT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0VGV4dCgpOiBzdHJpbmcge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5maWx0ZXIub3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1swXS5uYW1lICsgXCJcIjtcclxuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItZGlzcGxheS1kaXZcIj5cbiAgPGRpdiBjbGFzcz1cImZpbHRlci1kaXNwbGF5LW5hbWVcIj5cbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIGZpbHRlci5pZCkgfX1cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZpbHRlciwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Ub29sdGlwLCBmaWx0ZXIuaWQpICE9ICcnXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1sYWJlbC10b29sdGlwXCIgbWF0VG9vbHRpcD1cInt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXIsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVG9vbHRpcCwgZmlsdGVyLmlkKSB9fVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJleHBhbmRfbGVzc1wiPmluZm88L21hdC1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFJc0xvYWRlZCgpXCI+XG4gICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIyMFwiPjwvbWF0LXNwaW5uZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiSXNMb2FkZWQoKVwiIGNsYXNzPVwiZmlsdGVyLWRpc3BsYXktdmFsdWVcIj5cbiAgICB7eyBHZXRUZXh0KCkgfX1cbiAgICA8c3BhbiBjbGFzcz1cImZpbHRlcm9wdGlvbi1sYWJlbC11bml0XCIgKm5nSWY9XCJmaWx0ZXIudW5pdCAhPSBudWxsICYmIGZpbHRlci51bml0ICE9ICcnXCI+IHt7IGZpbHRlci51bml0IH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19