@eqproject/eqp-dynamic-module 2.10.104 → 2.11.1

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.
Files changed (65) hide show
  1. package/README.md +35 -15
  2. package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +2 -2
  3. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +26 -26
  4. package/esm2020/lib/components/private/action-button-creator/action-button-creator.component.mjs +4 -4
  5. package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +18 -18
  6. package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +7 -7
  7. package/esm2020/lib/components/private/dbg-templates/list-value-dbg-template/list-value-dbg-template.component.mjs +4 -4
  8. package/esm2020/lib/components/private/dbgetter/dbgetter.component.mjs +5 -5
  9. package/esm2020/lib/components/private/dynamic-module-field-extra-fix/dynamic-module-field-extra-fix.component.mjs +5 -5
  10. package/esm2020/lib/components/private/field-templates/action-button-field-template/action-button-field-template.component.mjs +5 -5
  11. package/esm2020/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.mjs +10 -10
  12. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +3 -3
  13. package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +11 -11
  14. package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +16 -9
  15. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +6 -6
  16. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +6 -6
  17. package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +5 -5
  18. package/esm2020/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.mjs +16 -16
  19. package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +19 -19
  20. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +18 -18
  21. package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +32 -9
  22. package/esm2020/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.mjs +7 -7
  23. package/esm2020/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.mjs +8 -8
  24. package/esm2020/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.mjs +4 -4
  25. package/esm2020/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.mjs +7 -7
  26. package/esm2020/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.mjs +18 -11
  27. package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +7 -7
  28. package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +7 -7
  29. package/esm2020/lib/components/private/graphs/graphs.component.mjs +4 -4
  30. package/esm2020/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.mjs +5 -5
  31. package/esm2020/lib/components/private/tmw-image-marker/tmw-image-marker.component.mjs +6 -6
  32. package/esm2020/lib/components/private/trigger-creator/trigger-creator.component.mjs +8 -10
  33. package/esm2020/lib/components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component.mjs +5 -5
  34. package/esm2020/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.mjs +5 -5
  35. package/esm2020/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.mjs +4 -4
  36. package/esm2020/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.mjs +15 -8
  37. package/esm2020/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +7 -7
  38. package/esm2020/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +7 -7
  39. package/esm2020/lib/eqp-dynamic-module.module.mjs +22 -44
  40. package/esm2020/lib/models/dynAttachment.mjs +1 -1
  41. package/fesm2015/eqproject-eqp-dynamic-module.mjs +275 -253
  42. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  43. package/fesm2020/eqproject-eqp-dynamic-module.mjs +274 -253
  44. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  45. package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +1 -1
  46. package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +8 -8
  47. package/lib/components/private/add-form-field/add-form-field.component.d.ts +14 -14
  48. package/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.d.ts +2 -2
  49. package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +1 -1
  50. package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +2 -2
  51. package/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.d.ts +11 -11
  52. package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +11 -11
  53. package/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.d.ts +9 -9
  54. package/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.d.ts +4 -3
  55. package/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.d.ts +1 -1
  56. package/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.d.ts +1 -1
  57. package/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.d.ts +1 -1
  58. package/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.d.ts +3 -3
  59. package/lib/components/private/trigger-creator/trigger-creator.component.d.ts +0 -2
  60. package/lib/components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component.d.ts +1 -1
  61. package/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.d.ts +1 -1
  62. package/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.d.ts +3 -3
  63. package/lib/eqp-dynamic-module.module.d.ts +9 -26
  64. package/lib/models/dynAttachment.d.ts +2 -2
  65. package/package.json +8 -15
@@ -4,9 +4,9 @@ import { NotNumberAggregationFunctionEnum, NumberAggregationFunctionEnum } from
4
4
  import { UtilityHelperService } from '../../../../../services/utilityHelper.services';
5
5
  import { GlobalService } from '../../../../../services/global.service';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/icon";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@eqproject/eqp-select";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "tmw-select";
9
+ import * as i3 from "tmw-icons";
10
10
  export class ListValueFilterTemplateComponent {
11
11
  constructor() {
12
12
  this.Statistic = null;
@@ -70,7 +70,7 @@ export class ListValueFilterTemplateComponent {
70
70
  this.field.FormFormGroup.get([this.field.Name]).setValidators(this.validatorsArray);
71
71
  }
72
72
  /**
73
- * Metodo per creare un array di oggetti del tipo { Key: string, Value: any } da usare come sorgente dati per la eqp-select.
73
+ * Metodo per creare un array di oggetti del tipo { Key: string, Value: any } da usare come sorgente dati per la select.
74
74
  */
75
75
  setArrayData() {
76
76
  this.prepareValuePairs();
@@ -132,10 +132,10 @@ export class ListValueFilterTemplateComponent {
132
132
  }
133
133
  }
134
134
  ListValueFilterTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueFilterTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
135
- ListValueFilterTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListValueFilterTemplateComponent, selector: "list-value-filter-template", inputs: { field: "field", record: "record", Statistic: "Statistic" }, outputs: { filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <mat-icon *ngIf=\"visible\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"!visible\">visibility_off</mat-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <!-- Come faccio a fare il groupBy di una lista? -->\r\n <eqp-select\r\n [isDisabled]=\"true\"\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"true\" [arrayValueProperty]=\"'Key'\"\r\n [formGroupInput]=\"field.FormFormGroup\" [formControlNameInput]=\"field.Name\" [placeholder]=\"field.Description\"\r\n [includeFullObject]=\"false\" [isRequired]=\"false\" [isDisabled]=\"false\"\r\n [(ngModelInput)]=\"record[field.Name]\" [isMultiSelect]=\"true\"\r\n (ngModelInputChange)=\"onFilterChange()\">\r\n </eqp-select>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></eqp-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <eqp-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }] });
135
+ ListValueFilterTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListValueFilterTemplateComponent, selector: "list-value-filter-template", inputs: { field: "field", record: "record", Statistic: "Statistic" }, outputs: { filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"visible\" name=\"eye\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!visible\" name=\"eye-off\"></tmw-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <!-- Come faccio a fare il groupBy di una lista? -->\r\n <tmw-select\r\n [isDisabled]=\"true\"\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <tmw-select [ngStyle]=\"FieldstyleObj\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"true\" [arrayValueProperty]=\"'Key'\"\r\n [formGroupInput]=\"field.FormFormGroup\" [formControlNameInput]=\"field.Name\" [placeholder]=\"field.Description\"\r\n [includeFullObject]=\"false\" [isRequired]=\"false\" [isDisabled]=\"false\"\r\n [(ngModelInput)]=\"record[field.Name]\" [isMultiSelect]=\"true\"\r\n (ngModelInputChange)=\"onFilterChange()\">\r\n </tmw-select>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <tmw-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></tmw-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <tmw-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i3.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }] });
136
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueFilterTemplateComponent, decorators: [{
137
137
  type: Component,
138
- args: [{ selector: 'list-value-filter-template', template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <mat-icon *ngIf=\"visible\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"!visible\">visibility_off</mat-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <!-- Come faccio a fare il groupBy di una lista? -->\r\n <eqp-select\r\n [isDisabled]=\"true\"\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <eqp-select [ngStyle]=\"FieldstyleObj\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"true\" [arrayValueProperty]=\"'Key'\"\r\n [formGroupInput]=\"field.FormFormGroup\" [formControlNameInput]=\"field.Name\" [placeholder]=\"field.Description\"\r\n [includeFullObject]=\"false\" [isRequired]=\"false\" [isDisabled]=\"false\"\r\n [(ngModelInput)]=\"record[field.Name]\" [isMultiSelect]=\"true\"\r\n (ngModelInputChange)=\"onFilterChange()\">\r\n </eqp-select>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></eqp-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <eqp-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"] }]
138
+ args: [{ selector: 'list-value-filter-template', template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"visible\" name=\"eye\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!visible\" name=\"eye-off\"></tmw-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <!-- Come faccio a fare il groupBy di una lista? -->\r\n <tmw-select\r\n [isDisabled]=\"true\"\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <tmw-select [ngStyle]=\"FieldstyleObj\" [arrayData]=\"arrayData\"\r\n [arrayKeyProperty]=\"'Value'\" [showCancelButton]=\"true\" [arrayValueProperty]=\"'Key'\"\r\n [formGroupInput]=\"field.FormFormGroup\" [formControlNameInput]=\"field.Name\" [placeholder]=\"field.Description\"\r\n [includeFullObject]=\"false\" [isRequired]=\"false\" [isDisabled]=\"false\"\r\n [(ngModelInput)]=\"record[field.Name]\" [isMultiSelect]=\"true\"\r\n (ngModelInputChange)=\"onFilterChange()\">\r\n </tmw-select>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <tmw-select [enumData]=\"logicOperatorListValue\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></tmw-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <tmw-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"] }]
139
139
  }], ctorParameters: function () { return []; }, propDecorators: { field: [{
140
140
  type: Input
141
141
  }], record: [{
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
145
145
  }], filterChange: [{
146
146
  type: Output
147
147
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQztBQUVuSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBTXZFLE1BQU0sT0FBTyxnQ0FBZ0M7SUEwQjdDO1FBdEJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFDM0IsaUJBQVksR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNoRixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1QiwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztR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QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4RyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQztTQUMzRDtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDOzs4SEFwSlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0Msd01DWjdDLDZ1RUF5Q007NEZEN0JPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSw0QkFBNEI7MEVBTTdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgU3RhdGlzdGljIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3N0YXRpc3RpYy5tb2RlbCc7XHJcbmltcG9ydCB7IExpc3RWYWx1ZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9saXN0VmFsdWVGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdFZhbHVlRmlsdGVyVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZDogTGlzdFZhbHVlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgU3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGxvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgPSBMb2dpY09wZXJhdG9yTGlzdFZhbHVlO1xyXG4gIHNlbGVjdGVkTG9naWNPcGVyYXRvcjogTG9naWNPcGVyYXRvckxpc3RWYWx1ZSA9IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWVbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT4gfCBBcnJheTxOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbiAgYWdncmVnYXRpb25GdW5jdGlvbkVudW0gPSBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bTtcclxuXHJcbiAgb3BlcmF0b3JzR3JvdXBCeTogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG4gIG9wZXJhdG9yc0dyb3VwQnlFbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG4gIC8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG4gIEZpZWxkc3R5bGVPYmo6IGFueTtcclxuICBMYWJlbHN0eWxlT2JqOiBhbnk7XHJcblxyXG4gIGFycmF5RGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSwgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG5jb25zdHJ1Y3RvcigpIHtcclxufVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIGlmICh0aGlzLlN0YXRpc3RpYyAhPSBudWxsKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yID0gKHRoaXMuU3RhdGlzdGljLmxvZ2ljb3BlcmF0b3IgYXMgTG9naWNPcGVyYXRvckxpc3RWYWx1ZSk7XHJcbiAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gdGhpcy5TdGF0aXN0aWMudmFsdWU7XHJcbiAgICB0aGlzLnZpc2libGUgPSB0aGlzLlN0YXRpc3RpYy52aXNpYmxlO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSB0aGlzLlN0YXRpc3RpYy5hZ2dyZWdhdGlvbnM7XHJcbiAgICB0aGlzLm9wZXJhdG9yc0dyb3VwQnkgPSB0aGlzLlN0YXRpc3RpYy5vcGVyYXRvcnNHcm91cEJ5O1xyXG4gIH0gXHJcblxyXG4gIHRoaXMuY29uZmlndXJlQ29udHJvbGxlcnMoKTtcclxuICB0aGlzLmluaXRTdHlsZXMoKTtcclxuICB0aGlzLnNldEFycmF5RGF0YSgpO1xyXG59XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH1cclxuICB9IFxyXG5cclxuICAvL0Z1bnppb25lIHBlciBwYXJzYXJlIGlsIGNhbXBvIHN0eWxlY3NzIGRlbGwnb2dnZXR0byBmaWVsZCBlZCBhcHBsaWNhcmxvIGFsbCdodG1sXHJcbiAgaW5pdFN0eWxlcygpIHtcclxuICAgIGlmKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICB0aGlzLkZpZWxkc3R5bGVPYmo9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTKTtcclxufVxyXG5cclxuLyoqXHJcbiogTWV0b2RvIHBlciBlbWV0dGVyZSBsJ2V2ZW50byBjaGUgaWwgdmFsb3JlIGRlbCByZWNvcmQgw6ggY2FtYmlhdG8uXHJcbiovXHJcbm9uRmlsdGVyQ2hhbmdlKCkge1xyXG4gICAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8ICh0aGlzLm9wZXJhdG9yc0dyb3VwQnkgIT0gbnVsbCAmJiB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCkpeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcblxyXG4gICAgdmFyIHN0YXRpc3RpYzogU3RhdGlzdGljID0ge1xyXG4gICAgICBrZXk6IHRoaXMuZmllbGQuTmFtZSxcclxuICAgICAgdmFsdWU6IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0sXHJcbiAgICAgIGxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yLFxyXG4gICAgICBmaWVsZHR5cGU6IHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICAgIGFnZ3JlZ2F0aW9uczogdGhpcy5hZ2dyZWdhdGlvbnMsXHJcbiAgICAgIG9wZXJhdG9yc0dyb3VwQnk6IHRoaXMub3BlcmF0b3JzR3JvdXBCeVxyXG4gICAgfSAgICBcclxuXHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHN0YXRpc3RpYyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbnRyb2xsZXJzKCkge1xyXG4gICAgdGhpcy52YWxpZGF0b3JzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5nZXQoW3RoaXMuZmllbGQuTmFtZV0pLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSB9IGRhIHVzYXJlIGNvbWUgc29yZ2VudGUgZGF0aSBwZXIgbGEgZXFwLXNlbGVjdC5cclxuICAgKi9cclxuICAgcHJpdmF0ZSBzZXRBcnJheURhdGEoKSB7XHJcbiAgICB0aGlzLnByZXBhcmVWYWx1ZVBhaXJzKCk7XHJcbiAgICBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwpe1xyXG4gICAgICBpZiAoVXRpbGl0eUhlbHBlclNlcnZpY2UuaXNOdW1lcmljKHRoaXMuZmllbGQuVmFsdWVQYWlyc1tPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpWzBdXSkpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpLmZvckVhY2hcclxuICAgICAgICAgIChrID0+IHRoaXMuY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrLCBOdW1iZXIodGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdKSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycykuZm9yRWFjaFxyXG4gICAgICAgICAgKGsgPT4gdGhpcy5jcmVhdGVBcnJheURhdGFFbGVtZW50KGssIHRoaXMuZmllbGQuVmFsdWVQYWlyc1trXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlVmFsdWVQYWlycygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgIGNvbnN0IHRlbXA6IHN0cmluZyA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgICAvLyB0ZW1wIGRvdnJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSBkZWwgdGlwbyBcImNoaWF2ZTEhIHZhbG9yZSAxIDsgY2hpYXZlMiB8IHZhbG9yZSAyIFwiXHJcbiAgICAgIC8vIGRvYmJpYW1vIG90dGVuZXJlIHVuIGRpemlvbmFyaW8gZGkgcXVlaSB2YWxvcmlcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGVtcCk7XHJcblxyXG4gICAgICAvL3RoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwgJiYgdGhpcy5maWVsZC5WYWx1ZVBhaXJzLmxlbmdodCA+IDApIHtcclxuICAgICAgLy8gdmEgYmVuZSBjb3PDrFxyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVN0cmluZyAhPSBudWxsICYmIHRoaXMuZmllbGQuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICAvLyB2YSBwcmVzYSBsYSBzdHJpZ25hIGUgcmltYXBwYXRhIG5lbCBkaWFyaW9cclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGhpcy5maWVsZC5WYWx1ZVN0cmluZyk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlvbmUgdmlzaWJpbGl0w6BcclxuICAgKi9cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eSgpe1xyXG4gICAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xyXG4gICAgICBpZiAoKHRoaXMuYWdncmVnYXRpb25zICE9IG51bGwgJiYgdGhpcy5hZ2dyZWdhdGlvbnMubGVuZ3RoID4gMCkgfHwgKHRoaXMub3BlcmF0b3JzR3JvdXBCeSAhPSBudWxsICYmIHRoaXMub3BlcmF0b3JzR3JvdXBCeS5sZW5ndGggPiAwKSl7IHRoaXMudmlzaWJsZSA9IHRydWU7IH1cclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICBcclxuICBwcml2YXRlIGNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU51bWJlckFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd0NvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXNpYmxlQ29sXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZpc2libGVcIj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiF2aXNpYmxlXCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwQnlDb2xcIj5cclxuICAgICAgICAgICAgPCEtLSBDb21lIGZhY2NpbyBhIGZhcmUgaWwgZ3JvdXBCeSBkaSB1bmEgbGlzdGE/IC0tPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ09wZXJhdG9yaSBkaSBjb25mcm9udG8nXCJcclxuICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cIm9wZXJhdG9yc0dyb3VwQnlFbnVtXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJvcGVyYXRvcnNHcm91cEJ5XCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgID48L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZUNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdCBbbmdTdHlsZV09XCJGaWVsZHN0eWxlT2JqXCIgW2FycmF5RGF0YV09XCJhcnJheURhdGFcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ1ZhbHVlJ1wiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidLZXknXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cImZpZWxkLk5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQuRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW2lzUmVxdWlyZWRdPVwiZmFsc2VcIiBbaXNEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCIgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvckNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwibG9naWNPcGVyYXRvckxpc3RWYWx1ZVwiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZExvZ2ljT3BlcmF0b3JcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWdncmVnYXRvckNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZ2dyZWdhemlvbmknXCJcclxuICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cImFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJhZ2dyZWdhdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcclxuICAgICAgICAgICAgPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQztBQUVuSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBTXZFLE1BQU0sT0FBTyxnQ0FBZ0M7SUEwQjdDO1FBdEJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFDM0IsaUJBQVksR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNoRixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1QiwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztR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QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4RyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQztTQUMzRDtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDOzs4SEFwSlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0Msd01DWjdDLHl4RUF5Q007NEZEN0JPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSw0QkFBNEI7MEVBTTdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgU3RhdGlzdGljIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3N0YXRpc3RpYy5tb2RlbCc7XHJcbmltcG9ydCB7IExpc3RWYWx1ZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9saXN0VmFsdWVGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdFZhbHVlRmlsdGVyVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZDogTGlzdFZhbHVlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgU3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGxvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgPSBMb2dpY09wZXJhdG9yTGlzdFZhbHVlO1xyXG4gIHNlbGVjdGVkTG9naWNPcGVyYXRvcjogTG9naWNPcGVyYXRvckxpc3RWYWx1ZSA9IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWVbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT4gfCBBcnJheTxOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbiAgYWdncmVnYXRpb25GdW5jdGlvbkVudW0gPSBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bTtcclxuXHJcbiAgb3BlcmF0b3JzR3JvdXBCeTogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG4gIG9wZXJhdG9yc0dyb3VwQnlFbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG4gIC8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG4gIEZpZWxkc3R5bGVPYmo6IGFueTtcclxuICBMYWJlbHN0eWxlT2JqOiBhbnk7XHJcblxyXG4gIGFycmF5RGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSwgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG5jb25zdHJ1Y3RvcigpIHtcclxufVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIGlmICh0aGlzLlN0YXRpc3RpYyAhPSBudWxsKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yID0gKHRoaXMuU3RhdGlzdGljLmxvZ2ljb3BlcmF0b3IgYXMgTG9naWNPcGVyYXRvckxpc3RWYWx1ZSk7XHJcbiAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gdGhpcy5TdGF0aXN0aWMudmFsdWU7XHJcbiAgICB0aGlzLnZpc2libGUgPSB0aGlzLlN0YXRpc3RpYy52aXNpYmxlO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSB0aGlzLlN0YXRpc3RpYy5hZ2dyZWdhdGlvbnM7XHJcbiAgICB0aGlzLm9wZXJhdG9yc0dyb3VwQnkgPSB0aGlzLlN0YXRpc3RpYy5vcGVyYXRvcnNHcm91cEJ5O1xyXG4gIH0gXHJcblxyXG4gIHRoaXMuY29uZmlndXJlQ29udHJvbGxlcnMoKTtcclxuICB0aGlzLmluaXRTdHlsZXMoKTtcclxuICB0aGlzLnNldEFycmF5RGF0YSgpO1xyXG59XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH1cclxuICB9IFxyXG5cclxuICAvL0Z1bnppb25lIHBlciBwYXJzYXJlIGlsIGNhbXBvIHN0eWxlY3NzIGRlbGwnb2dnZXR0byBmaWVsZCBlZCBhcHBsaWNhcmxvIGFsbCdodG1sXHJcbiAgaW5pdFN0eWxlcygpIHtcclxuICAgIGlmKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICB0aGlzLkZpZWxkc3R5bGVPYmo9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTKTtcclxufVxyXG5cclxuLyoqXHJcbiogTWV0b2RvIHBlciBlbWV0dGVyZSBsJ2V2ZW50byBjaGUgaWwgdmFsb3JlIGRlbCByZWNvcmQgw6ggY2FtYmlhdG8uXHJcbiovXHJcbm9uRmlsdGVyQ2hhbmdlKCkge1xyXG4gICAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8ICh0aGlzLm9wZXJhdG9yc0dyb3VwQnkgIT0gbnVsbCAmJiB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCkpeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcblxyXG4gICAgdmFyIHN0YXRpc3RpYzogU3RhdGlzdGljID0ge1xyXG4gICAgICBrZXk6IHRoaXMuZmllbGQuTmFtZSxcclxuICAgICAgdmFsdWU6IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0sXHJcbiAgICAgIGxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yLFxyXG4gICAgICBmaWVsZHR5cGU6IHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICAgIGFnZ3JlZ2F0aW9uczogdGhpcy5hZ2dyZWdhdGlvbnMsXHJcbiAgICAgIG9wZXJhdG9yc0dyb3VwQnk6IHRoaXMub3BlcmF0b3JzR3JvdXBCeVxyXG4gICAgfSAgICBcclxuXHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHN0YXRpc3RpYyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbnRyb2xsZXJzKCkge1xyXG4gICAgdGhpcy52YWxpZGF0b3JzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5nZXQoW3RoaXMuZmllbGQuTmFtZV0pLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSB9IGRhIHVzYXJlIGNvbWUgc29yZ2VudGUgZGF0aSBwZXIgbGEgc2VsZWN0LlxyXG4gICAqL1xyXG4gICBwcml2YXRlIHNldEFycmF5RGF0YSgpIHtcclxuICAgIHRoaXMucHJlcGFyZVZhbHVlUGFpcnMoKTtcclxuICAgIGlmICh0aGlzLmZpZWxkLlZhbHVlUGFpcnMgIT0gbnVsbCl7XHJcbiAgICAgIGlmIChVdGlsaXR5SGVscGVyU2VydmljZS5pc051bWVyaWModGhpcy5maWVsZC5WYWx1ZVBhaXJzW09iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycylbMF1dKSkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycykuZm9yRWFjaFxyXG4gICAgICAgICAgKGsgPT4gdGhpcy5jcmVhdGVOdW1iZXJBcnJheURhdGFFbGVtZW50KGssIE51bWJlcih0aGlzLmZpZWxkLlZhbHVlUGFpcnNba10pKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5maWVsZC5WYWx1ZVBhaXJzKS5mb3JFYWNoXHJcbiAgICAgICAgICAoayA9PiB0aGlzLmNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoaywgdGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXBhcmVWYWx1ZVBhaXJzKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLmZpZWxkLlZhbHVlUGFpcnMgPSB7fTtcclxuICAgICAgY29uc3QgdGVtcDogc3RyaW5nID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEodGhpcy5maWVsZC5Gb3JtdWxhLCB0aGlzLnJlY29yZCwgbnVsbCk7XHJcbiAgICAgIC8vIHRlbXAgZG92cmViYmUgZXNzZXJlIHVuYSBzdHJpbmdhIGRlbCB0aXBvIFwiY2hpYXZlMSEgdmFsb3JlIDEgOyBjaGlhdmUyIHwgdmFsb3JlIDIgXCJcclxuICAgICAgLy8gZG9iYmlhbW8gb3R0ZW5lcmUgdW4gZGl6aW9uYXJpbyBkaSBxdWVpIHZhbG9yaVxyXG4gICAgICB0aGlzLmZpZWxkLlZhbHVlUGFpcnMgPSBHbG9iYWxTZXJ2aWNlLnN0cmluZ1RvVmFsdWVQYWlycyh0ZW1wKTtcclxuXHJcbiAgICAgIC8vdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkLlZhbHVlUGFpcnMgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLlZhbHVlUGFpcnMubGVuZ2h0ID4gMCkge1xyXG4gICAgICAvLyB2YSBiZW5lIGNvc8OsXHJcblxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkLlZhbHVlU3RyaW5nICE9IG51bGwgJiYgdGhpcy5maWVsZC5WYWx1ZVN0cmluZyAhPSBcIlwiKSB7XHJcbiAgICAgIC8vIHZhIHByZXNhIGxhIHN0cmlnbmEgZSByaW1hcHBhdGEgbmVsIGRpYXJpb1xyXG4gICAgICB0aGlzLmZpZWxkLlZhbHVlUGFpcnMgPSBHbG9iYWxTZXJ2aWNlLnN0cmluZ1RvVmFsdWVQYWlycyh0aGlzLmZpZWxkLlZhbHVlU3RyaW5nKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXN0aW9uZSB2aXNpYmlsaXTDoFxyXG4gICAqL1xyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VWaXNpYmlsaXR5KCl7XHJcbiAgICAgIHRoaXMudmlzaWJsZSA9ICF0aGlzLnZpc2libGU7XHJcbiAgICAgIGlmICgodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKSB8fCAodGhpcy5vcGVyYXRvcnNHcm91cEJ5ICE9IG51bGwgJiYgdGhpcy5vcGVyYXRvcnNHcm91cEJ5Lmxlbmd0aCA+IDApKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gIFxyXG4gIHByaXZhdGUgY3JlYXRlQXJyYXlEYXRhRWxlbWVudChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgaW1nVXJsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgaXNPcHRpb25TZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSAhIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZmluZCh2ID0+IHYgPT0gdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNPcHRpb25TZWxlY3RlZCA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcnJheURhdGEucHVzaCh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUsIFNlbGVjdGVkOiBpc09wdGlvblNlbGVjdGVkLCBJbWdVcmw6IGltZ1VybCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrZXk6IHN0cmluZywgdmFsdWU6IG51bWJlciwgaW1nVXJsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgaXNPcHRpb25TZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSAhIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZmluZCh2ID0+IHYgPT0gdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNPcHRpb25TZWxlY3RlZCA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcnJheURhdGEucHVzaCh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUsIFNlbGVjdGVkOiBpc09wdGlvblNlbGVjdGVkLCBJbWdVcmw6IGltZ1VybCB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcm93Q29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpc2libGVDb2xcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIFtuZ0NsYXNzXT1cInsnYnRuLXN1Y2Nlc3MnOiB2aXNpYmxlICwgJ2J0bi1kYW5nZXInOiAhdmlzaWJsZSB9XCIgKGNsaWNrKT1cImNoYW5nZVZpc2liaWxpdHkoKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cInZpc2libGVcIiBuYW1lPVwiZXllXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgKm5nSWY9XCIhdmlzaWJsZVwiIG5hbWU9XCJleWUtb2ZmXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm91cEJ5Q29sXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQ29tZSBmYWNjaW8gYSBmYXJlIGlsIGdyb3VwQnkgZGkgdW5hIGxpc3RhPyAtLT5cclxuICAgICAgICAgICAgPHRtdy1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidPcGVyYXRvcmkgZGkgY29uZnJvbnRvJ1wiXHJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJvcGVyYXRvcnNHcm91cEJ5RW51bVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwib3BlcmF0b3JzR3JvdXBCeVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICA+PC90bXctc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVDb2xcIj5cclxuICAgICAgICAgICAgPHRtdy1zZWxlY3QgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiIFthcnJheURhdGFdPVwiYXJyYXlEYXRhXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidWYWx1ZSdcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInS2V5J1wiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGQuRm9ybUZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCJmaWVsZC5OYW1lXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkLkRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtpc1JlcXVpcmVkXT1cImZhbHNlXCIgW2lzRGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInJlY29yZFtmaWVsZC5OYW1lXVwiIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgIDwvdG13LXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3BlcmF0b3JDb2xcIj5cclxuICAgICAgICAgICAgPHRtdy1zZWxlY3QgW2VudW1EYXRhXT1cImxvZ2ljT3BlcmF0b3JMaXN0VmFsdWVcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRMb2dpY09wZXJhdG9yXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIj48L3Rtdy1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZ3JlZ2F0b3JDb2xcIj5cclxuICAgICAgICAgICAgPHRtdy1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWdncmVnYXppb25pJ1wiXHJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJhZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWdncmVnYXRpb25zXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgID48L3Rtdy1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,17 +1,17 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
- import { EqpNumericInputMode } from '@eqproject/eqp-numeric';
3
+ import { TmwNumericInputMode } from 'tmw-numeric';
4
4
  import { UtilityHelperService } from '../../../../../services/utilityHelper.services';
5
5
  import { LogicOperatorNumeric } from '../../../../../models/logicOperator.model';
6
6
  import { NumberAggregationFunctionEnum } from '../../../../../models/statistic.model';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/material/input";
9
9
  import * as i2 from "@angular/material/form-field";
10
- import * as i3 from "@angular/material/icon";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "@angular/common";
13
- import * as i6 from "@eqproject/eqp-select";
14
- import * as i7 from "@eqproject/eqp-numeric";
10
+ import * as i3 from "@angular/forms";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "tmw-select";
13
+ import * as i6 from "tmw-numeric";
14
+ import * as i7 from "tmw-icons";
15
15
  export class NumericFilterTemplateComponent {
16
16
  constructor() {
17
17
  this.Statistic = null;
@@ -74,12 +74,19 @@ export class NumericFilterTemplateComponent {
74
74
  return statistic;
75
75
  }
76
76
  /**
77
- * Metodo per configurare eqp-numeric
77
+ * Metodo per configurare le opzioni numeriche
78
78
  */
79
79
  configureEqpNumericOptions() {
80
+ // align/nullable/min/max: replicano i default globali del vecchio EqpNumericModule.forRoot(),
81
+ // che tmw-numeric non ha (nessun forRoot) — vanno impostati esplicitamente per non cambiare
82
+ // comportamento silenziosamente.
83
+ this.eqpNumericOptions.align = "left";
84
+ this.eqpNumericOptions.nullable = true;
85
+ this.eqpNumericOptions.min = null;
86
+ this.eqpNumericOptions.max = null;
80
87
  this.eqpNumericOptions.suffix = this.field.MeasureUnit ? " " + this.field.MeasureUnit + " " : "";
81
88
  this.eqpNumericOptions.prefix = this.field.CurrencySymbol ? this.field.CurrencySymbol + " " : "";
82
- this.eqpNumericOptions.inputMode = this.field.CurrencySymbol ? EqpNumericInputMode.FINANCIAL : EqpNumericInputMode.NATURAL;
89
+ this.eqpNumericOptions.inputMode = this.field.CurrencySymbol ? TmwNumericInputMode.FINANCIAL : TmwNumericInputMode.NATURAL;
83
90
  this.eqpNumericOptions.allowNegative = true;
84
91
  if (this.field.DecimalSeparator != null && this.field.DecimalSeparator != undefined)
85
92
  this.eqpNumericOptions.decimal = this.field.DecimalSeparator;
@@ -121,10 +128,10 @@ export class NumericFilterTemplateComponent {
121
128
  }
122
129
  }
123
130
  NumericFilterTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFilterTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
124
- NumericFilterTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NumericFilterTemplateComponent, selector: "numeric-filter-template", inputs: { field: "field", record: "record", Statistic: "Statistic", filterResultViewMode: "filterResultViewMode" }, outputs: { filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <mat-icon *ngIf=\"visible\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"!visible\">visibility_off</mat-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <eqp-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\"> {{field.Description}} </mat-label>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput eqpNumericMask [formControlName]=\"field.Name\" [readonly]=\"false\"\r\n [required]=\"false\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (ngModelChange)=\"onFilterChange()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorNumeric\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></eqp-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <eqp-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;border-top-left-radius:0;border-bottom-left-radius:0;width:35px;min-width:35px}.rowCol .coordinatesCol button{height:30px;width:30px;margin:1px;padding:0}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select mat-form-field.mat-mdc-form-field{margin-top:initial!important}::ng-deep eqp-select mat-form-field .mdc-text-field{padding-top:initial!important;height:56px}\n"], dependencies: [{ kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "directive", type: i7.EqpNumericDirective, selector: "[eqpNumericMask]", inputs: ["options"] }] });
131
+ NumericFilterTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NumericFilterTemplateComponent, selector: "numeric-filter-template", inputs: { field: "field", record: "record", Statistic: "Statistic", filterResultViewMode: "filterResultViewMode" }, outputs: { filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"visible\" name=\"eye\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!visible\" name=\"eye-off\"></tmw-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <tmw-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\"> {{field.Description}} </mat-label>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput tmwNumericMask [formControlName]=\"field.Name\" [readonly]=\"false\"\r\n [required]=\"false\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (ngModelChange)=\"onFilterChange()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <tmw-select [enumData]=\"logicOperatorNumeric\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></tmw-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <tmw-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;border-top-left-radius:0;border-bottom-left-radius:0;width:35px;min-width:35px}.rowCol .coordinatesCol button{height:30px;width:30px;margin:1px;padding:0}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep tmw-select mat-form-field.mat-mdc-form-field{margin-top:initial!important}::ng-deep tmw-select mat-form-field .mdc-text-field{padding-top:initial!important;height:56px}\n"], dependencies: [{ kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "directive", type: i6.TmwNumericMaskDirective, selector: "[tmwNumericMask]", inputs: ["options"] }, { kind: "component", type: i7.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }] });
125
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFilterTemplateComponent, decorators: [{
126
133
  type: Component,
127
- args: [{ selector: 'numeric-filter-template', template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <mat-icon *ngIf=\"visible\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"!visible\">visibility_off</mat-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <eqp-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\"> {{field.Description}} </mat-label>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput eqpNumericMask [formControlName]=\"field.Name\" [readonly]=\"false\"\r\n [required]=\"false\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (ngModelChange)=\"onFilterChange()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <eqp-select [enumData]=\"logicOperatorNumeric\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></eqp-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <eqp-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;border-top-left-radius:0;border-bottom-left-radius:0;width:35px;min-width:35px}.rowCol .coordinatesCol button{height:30px;width:30px;margin:1px;padding:0}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep eqp-select mat-form-field.mat-mdc-form-field{margin-top:initial!important}::ng-deep eqp-select mat-form-field .mdc-text-field{padding-top:initial!important;height:56px}\n"] }]
134
+ args: [{ selector: 'numeric-filter-template', template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"visible\" name=\"eye\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!visible\" name=\"eye-off\"></tmw-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <tmw-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\"> {{field.Description}} </mat-label>\r\n <input [ngStyle]=\"FieldstyleObj\" matInput tmwNumericMask [formControlName]=\"field.Name\" [readonly]=\"false\"\r\n [required]=\"false\" [(ngModel)]=\"record[field.Name]\" [options]=\"eqpNumericOptions\"\r\n [step]=\"field.IsInteger ? 1 : null\" (ngModelChange)=\"onFilterChange()\" />\r\n <mat-error *ngIf=\"!field.FormFormGroup.valid && field.FormFormGroup.controls[field.Name].touched\">\r\n Min: {{field.MinValue}} - Max: {{field.MaxValue}}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <tmw-select [enumData]=\"logicOperatorNumeric\" [(ngModelInput)]=\"selectedLogicOperator\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onFilterChange()\"></tmw-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <tmw-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n </div>\r\n</div>", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;border-top-left-radius:0;border-bottom-left-radius:0;width:35px;min-width:35px}.rowCol .coordinatesCol button{height:30px;width:30px;margin:1px;padding:0}.rowCol .aggregatorCol{min-width:219px}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}::ng-deep tmw-select mat-form-field.mat-mdc-form-field{margin-top:initial!important}::ng-deep tmw-select mat-form-field .mdc-text-field{padding-top:initial!important;height:56px}\n"] }]
128
135
  }], ctorParameters: function () { return []; }, propDecorators: { field: [{
129
136
  type: Input
130
137
  }], record: [{
@@ -136,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
136
143
  }], filterChange: [{
137
144
  type: Output
138
145
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBb0MsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBUW5JLE1BQU0sT0FBTyw4QkFBOEI7SUF5QjNDO1FBckJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFFM0IsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwRSxvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1Qixz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QUksU0FBUztZQUNuRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxTQUFTO1lBQ25FLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUM7WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUFFO1FBQy9KLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs0SEE3SFUsOEJBQThCO2dIQUE5Qiw4QkFBOEIsbVBDZjNDLCsxRUF5Q007NEZEMUJPLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSx5QkFBeUI7MEVBTTFCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXFwTnVtZXJpY0lucHV0TW9kZSwgTnVtZXJpY01hc2tDb25maWcgfSBmcm9tICdAZXFwcm9qZWN0L2VxcC1udW1lcmljJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgTG9naWNPcGVyYXRvck51bWVyaWMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgU3RhdGlzdGljIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3N0YXRpc3RpYy5tb2RlbCc7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVGaWx0ZXJSZXN1bHRWaWV3TW9kZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUZpbHRlclJlc3VsdFZpZXdNb2RlRW51bS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ251bWVyaWMtZmlsdGVyLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE51bWVyaWNGaWx0ZXJUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBOdW1lcmljRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgU3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGZpbHRlclJlc3VsdFZpZXdNb2RlOiBEeW5hbWljTW9kdWxlRmlsdGVyUmVzdWx0Vmlld01vZGVFbnVtO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGVxcE51bWVyaWNPcHRpb25zOiBQYXJ0aWFsPE51bWVyaWNNYXNrQ29uZmlnPiA9IHt9O1xyXG4gIGxvZ2ljT3BlcmF0b3JOdW1lcmljID0gTG9naWNPcGVyYXRvck51bWVyaWM7XHJcbiAgc2VsZWN0ZWRMb2dpY09wZXJhdG9yOiBMb2dpY09wZXJhdG9yTnVtZXJpYyA9IExvZ2ljT3BlcmF0b3JOdW1lcmljWycnXTtcclxuICBhY3RpdmVDb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbi8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG5GaWVsZHN0eWxlT2JqOiBhbnk7XHJcbkxhYmVsc3R5bGVPYmo6IGFueTtcclxuXHJcbmFnZ3JlZ2F0aW9uczogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+IHwgQXJyYXk8Tm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG5hZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSA9IE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtO1xyXG5cclxub3BlcmF0b3JzR3JvdXBCeTogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG5vcGVyYXRvcnNHcm91cEJ5RW51bSA9IE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtO1xyXG5cclxuY29uc3RydWN0b3IoKSB7XHJcbn1cclxuXHJcbm5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICBpZiAodGhpcy5TdGF0aXN0aWMgIT0gbnVsbCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvciA9ICh0aGlzLlN0YXRpc3RpYy5sb2dpY29wZXJhdG9yIGFzIExvZ2ljT3BlcmF0b3JOdW1lcmljKTtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB0aGlzLlN0YXRpc3RpYy52YWx1ZTtcclxuICAgIHRoaXMudmlzaWJsZSA9IHRoaXMuU3RhdGlzdGljLnZpc2libGU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuU3RhdGlzdGljLmFnZ3JlZ2F0aW9ucztcclxuICAgIHRoaXMub3BlcmF0b3JzR3JvdXBCeSA9IHRoaXMuU3RhdGlzdGljLm9wZXJhdG9yc0dyb3VwQnk7IFxyXG4gIH0gIFxyXG4gIFxyXG4gIHRoaXMuY29uZmlndXJlRXFwTnVtZXJpY09wdGlvbnMoKTtcclxuICB0aGlzLmNvbmZpZ3VyZUNvbnRyb2xsZXJzKCk7XHJcbiAgdGhpcy5pbml0U3R5bGVzKCk7XHJcblxyXG59XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH0gICBcclxuICB9ICBcclxuXHJcbiAgLy9GdW56aW9uZSBwZXIgcGFyc2FyZSBpbCBjYW1wbyBzdHlsZWNzcyBkZWxsJ29nZ2V0dG8gZmllbGQgZWQgYXBwbGljYXJsbyBhbGwnaHRtbFxyXG4gIGluaXRTdHlsZXMoKSB7XHJcbiAgICBpZih0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gdW5kZWZpbmVkKSAgIFxyXG4gICAgdGhpcy5GaWVsZHN0eWxlT2JqPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyk7XHJcbiAgICBpZih0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MgIT0gdW5kZWZpbmVkKSAgIFxyXG4gICAgdGhpcy5MYWJlbHN0eWxlT2JqID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MpO1xyXG59XHJcblxyXG4vKipcclxuKiBNZXRvZG8gcGVyIGVtZXR0ZXJlIGwnZXZlbnRvIGNoZSBpbCB2YWxvcmUgZGVsIHJlY29yZCDDqCBjYW1iaWF0by5cclxuKi9cclxub25GaWx0ZXJDaGFuZ2UoKSB7ICAgXHJcbiAgICB2YXIgc3RhdGlzdGljID0gdGhpcy5jcmVhdGVTdGF0aXN0aWMoKTtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoc3RhdGlzdGljKTtcclxufVxyXG5cclxuY3JlYXRlU3RhdGlzdGljKCl7XHJcbiAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8ICh0aGlzLm9wZXJhdG9yc0dyb3VwQnkgIT0gbnVsbCAmJiB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCkpeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcblxyXG4gIHZhciBzdGF0aXN0aWM6IFN0YXRpc3RpYyA9IHtcclxuICAgIGtleTogdGhpcy5maWVsZC5OYW1lLFxyXG4gICAgdmFsdWU6IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0sXHJcbiAgICBsb2dpY29wZXJhdG9yOiB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvcixcclxuICAgIGZpZWxkdHlwZTogdGhpcy5maWVsZC5GaWVsZFR5cGUsXHJcbiAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICBhZ2dyZWdhdGlvbnM6IHRoaXMuYWdncmVnYXRpb25zLFxyXG4gICAgb3BlcmF0b3JzR3JvdXBCeTogdGhpcy5vcGVyYXRvcnNHcm91cEJ5XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc3RhdGlzdGljO1xyXG59XHJcblxyXG4vKipcclxuKiBNZXRvZG8gcGVyIGNvbmZpZ3VyYXJlIGVxcC1udW1lcmljXHJcbiovXHJcbnByaXZhdGUgY29uZmlndXJlRXFwTnVtZXJpY09wdGlvbnMoKSB7XHJcblxyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuc3VmZml4ID0gdGhpcy5maWVsZC5NZWFzdXJlVW5pdCA/IFwiICBcIit0aGlzLmZpZWxkLk1lYXN1cmVVbml0K1wiICBcIiA6IFwiXCI7XHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5wcmVmaXggPSB0aGlzLmZpZWxkLkN1cnJlbmN5U3ltYm9sID8gdGhpcy5maWVsZC5DdXJyZW5jeVN5bWJvbCtcIiBcIiA6IFwiXCI7XHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5pbnB1dE1vZGUgPSB0aGlzLmZpZWxkLkN1cnJlbmN5U3ltYm9sID8gRXFwTnVtZXJpY0lucHV0TW9kZS5GSU5BTkNJQUwgOiBFcXBOdW1lcmljSW5wdXRNb2RlLk5BVFVSQUw7XHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5hbGxvd05lZ2F0aXZlPXRydWU7XHJcbiAgaWYgKHRoaXMuZmllbGQuRGVjaW1hbFNlcGFyYXRvciAhPSBudWxsICYmIHRoaXMuZmllbGQuRGVjaW1hbFNlcGFyYXRvciAhPSB1bmRlZmluZWQpXHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5kZWNpbWFsID0gdGhpcy5maWVsZC5EZWNpbWFsU2VwYXJhdG9yO1xyXG4gIGVsc2VcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLmRlY2ltYWw9XCIuXCI7XHJcbiAgaWYgKHRoaXMuZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yICE9IG51bGwgJiYgdGhpcy5maWVsZC5UaG91c2FuZHNTZXBhcmF0b3IgIT0gdW5kZWZpbmVkKVxyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMudGhvdXNhbmRzID0gdGhpcy5maWVsZC5UaG91c2FuZHNTZXBhcmF0b3I7XHJcbiAgaWYodGhpcy5maWVsZC5Jc0ludGVnZXI9PSBmYWxzZSl7XHJcbiAgICBpZiAodGhpcy5maWVsZC5EZWNpbWFsUHJlY2lzaW9uICE9IG51bGwgJiYgdGhpcy5maWVsZC5EZWNpbWFsUHJlY2lzaW9uICE9IHVuZGVmaW5lZCkgeyB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnByZWNpc2lvbiA9IHRoaXMuZmllbGQuRGVjaW1hbFByZWNpc2lvbjsgfVxyXG4gICAgZWxzZSB7IHRoaXMuZXFwTnVtZXJpY09wdGlvbnMucHJlY2lzaW9uID0gMjsgfVxyXG4gIH1lbHNle1xyXG4gICAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5wcmVjaXNpb24gPSAwO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiogTWV0b2RvIGRpIGFnZ2l1bnRhIGRlaSB2YWxpZGF0b3IgZGVsbCdpbnB1dFxyXG4qL1xyXG5wcml2YXRlIGNvbmZpZ3VyZUNvbnRyb2xsZXJzKCkge1xyXG4gIHRoaXMudmFsaWRhdG9yc0FycmF5ID0gW107XHJcbiAgaWYgKHRoaXMuZmllbGQuTWluVmFsdWUgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLk1pblZhbHVlICE9IHVuZGVmaW5lZClcclxuICB0aGlzLnZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMubWluKHRoaXMuZmllbGQuTWluVmFsdWUpKTtcclxuICBpZiAodGhpcy5maWVsZC5NYXhWYWx1ZSAhPSBudWxsICYmIHRoaXMuZmllbGQuTWF4VmFsdWUgIT0gdW5kZWZpbmVkKVxyXG4gIHRoaXMudmFsaWRhdG9yc0FycmF5LnB1c2goVmFsaWRhdG9ycy5tYXgodGhpcy5maWVsZC5NYXhWYWx1ZSkpO1xyXG59XHJcblxyXG4vKipcclxuICogR2VzdGlvbmUgdmlzaWJpbGl0w6BcclxuICovXHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VWaXNpYmlsaXR5KCl7XHJcbiAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xyXG4gICAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8ICh0aGlzLm9wZXJhdG9yc0dyb3VwQnkgIT0gbnVsbCAmJiB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCkpeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XHJcbiAgfVxyXG4gIFxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcm93Q29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpc2libGVDb2xcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIFtuZ0NsYXNzXT1cInsnYnRuLXN1Y2Nlc3MnOiB2aXNpYmxlICwgJ2J0bi1kYW5nZXInOiAhdmlzaWJsZSB9XCIgKGNsaWNrKT1cImNoYW5nZVZpc2liaWxpdHkoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidmlzaWJsZVwiPnZpc2liaWxpdHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXZpc2libGVcIj52aXNpYmlsaXR5X29mZjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBCeUNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidPcGVyYXRvcmkgZGkgY29uZnJvbnRvJ1wiXHJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJvcGVyYXRvcnNHcm91cEJ5RW51bVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwib3BlcmF0b3JzR3JvdXBCeVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICA+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlQ29sXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImZpZWxkLkZvcm1Gb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiIFtuZ1N0eWxlXT1cIkxhYmVsc3R5bGVPYmpcIj4ge3tmaWVsZC5EZXNjcmlwdGlvbn19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiIG1hdElucHV0IGVxcE51bWVyaWNNYXNrIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuTmFtZVwiIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCIgW29wdGlvbnNdPVwiZXFwTnVtZXJpY09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJmaWVsZC5Jc0ludGVnZXIgPyAxIDogbnVsbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiIWZpZWxkLkZvcm1Gb3JtR3JvdXAudmFsaWQgJiYgZmllbGQuRm9ybUZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5OYW1lXS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW46IHt7ZmllbGQuTWluVmFsdWV9fSAtIE1heDoge3tmaWVsZC5NYXhWYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvckNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwibG9naWNPcGVyYXRvck51bWVyaWNcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRMb2dpY09wZXJhdG9yXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIj48L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZ3JlZ2F0b3JDb2xcIj5cclxuICAgICAgICAgICAgPGVxcC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWdncmVnYXppb25pJ1wiXHJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJhZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWdncmVnYXRpb25zXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgID48L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLGFBQWEsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUd0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQW9DLDZCQUE2QixFQUFhLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7OztBQVFuSSxNQUFNLE9BQU8sOEJBQThCO0lBeUIzQztRQXJCVyxjQUFTLEdBQWMsSUFBSSxDQUFDO1FBRTNCLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsc0JBQWlCLEdBQStCLEVBQUUsQ0FBQztRQUNuRCx5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QywwQkFBcUIsR0FBeUIsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkUsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixxQkFBZ0IsR0FBYyxJQUFJLENBQUM7UUFPckMsNEJBQXVCLEdBQUcsNkJBQTZCLENBQUM7UUFHeEQseUJBQW9CLEdBQUcsNkJBQTZCLENBQUM7SUFHckQsQ0FBQztJQUVELFFBQVE7UUFFTixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFDO1lBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQXNDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztTQUN6RDtRQUVELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVwQixDQUFDO0lBRUMsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUM7WUFDM0UsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUM3SSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzFKO0lBQ0wsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixVQUFVO1FBQ1IsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUztZQUM1RSxJQUFJLENBQUMsYUFBYSxHQUFFLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlFLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLFNBQVM7WUFDNUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O01BRUU7SUFDRixjQUFjO1FBQ1YsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFDO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FBRTtRQUUvSixJQUFJLFNBQVMsR0FBYztZQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ25DLGFBQWEsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQ3hDLENBQUE7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O01BRUU7SUFDTSwwQkFBMEI7UUFFaEMsOEZBQThGO1FBQzlGLDRGQUE0RjtRQUM1RixpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBQzNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUMsSUFBSSxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTO1lBQ25GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7WUFFN0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBQyxHQUFHLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLFNBQVM7WUFDdkYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUcsS0FBSyxFQUFDO1lBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2FBQUU7aUJBQ25KO2dCQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2FBQUU7U0FDL0M7YUFBSTtZQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVEOztNQUVFO0lBQ00sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLFNBQVM7WUFDbkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksU0FBUztZQUNuRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFDO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FBRTtRQUMvSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7NEhBcElVLDhCQUE4QjtnSEFBOUIsOEJBQThCLG1QQ2YzQywyNEVBeUNNOzRGRDFCTyw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UseUJBQXlCOzBFQU0xQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRtd051bWVyaWNJbnB1dE1vZGUsIFRtd051bWVyaWNPcHRpb25zIH0gZnJvbSAndG13LW51bWVyaWMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9udW1lcmljRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpY09wZXJhdG9yTnVtZXJpYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9sb2dpY09wZXJhdG9yLm1vZGVsJztcclxuaW1wb3J0IHsgTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBTdGF0aXN0aWMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvc3RhdGlzdGljLm1vZGVsJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUZpbHRlclJlc3VsdFZpZXdNb2RlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlRmlsdGVyUmVzdWx0Vmlld01vZGVFbnVtLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbnVtZXJpYy1maWx0ZXItdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnVtZXJpY0ZpbHRlclRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZmllbGQ6IE51bWVyaWNGaWVsZDtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBASW5wdXQoKSBTdGF0aXN0aWM6IFN0YXRpc3RpYyA9IG51bGw7XHJcbiAgQElucHV0KCkgZmlsdGVyUmVzdWx0Vmlld01vZGU6IER5bmFtaWNNb2R1bGVGaWx0ZXJSZXN1bHRWaWV3TW9kZUVudW07XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICB2YWxpZGF0b3JzQXJyYXk6IGFueVtdID0gW107XHJcbiAgZXFwTnVtZXJpY09wdGlvbnM6IFBhcnRpYWw8VG13TnVtZXJpY09wdGlvbnM+ID0ge307XHJcbiAgbG9naWNPcGVyYXRvck51bWVyaWMgPSBMb2dpY09wZXJhdG9yTnVtZXJpYztcclxuICBzZWxlY3RlZExvZ2ljT3BlcmF0b3I6IExvZ2ljT3BlcmF0b3JOdW1lcmljID0gTG9naWNPcGVyYXRvck51bWVyaWNbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW50U3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG5cclxuLy92YXJpYWJpbGkgcGVyIGdlc3RpcmUgaWwgY3NzIGRlbGxhIGxhYmVsIGUgZGVsIGZpZWxkXHJcbkZpZWxkc3R5bGVPYmo6IGFueTtcclxuTGFiZWxzdHlsZU9iajogYW55O1xyXG5cclxuYWdncmVnYXRpb25zOiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT4gfCBBcnJheTxOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbmFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG5vcGVyYXRvcnNHcm91cEJ5OiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbm9wZXJhdG9yc0dyb3VwQnlFbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG5jb25zdHJ1Y3RvcigpIHtcclxufVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIGlmICh0aGlzLlN0YXRpc3RpYyAhPSBudWxsKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yID0gKHRoaXMuU3RhdGlzdGljLmxvZ2ljb3BlcmF0b3IgYXMgTG9naWNPcGVyYXRvck51bWVyaWMpO1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuU3RhdGlzdGljLnZhbHVlO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdGhpcy5TdGF0aXN0aWMudmlzaWJsZTtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zID0gdGhpcy5TdGF0aXN0aWMuYWdncmVnYXRpb25zO1xyXG4gICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gdGhpcy5TdGF0aXN0aWMub3BlcmF0b3JzR3JvdXBCeTsgXHJcbiAgfSAgXHJcbiAgXHJcbiAgdGhpcy5jb25maWd1cmVFcXBOdW1lcmljT3B0aW9ucygpO1xyXG4gIHRoaXMuY29uZmlndXJlQ29udHJvbGxlcnMoKTtcclxuICB0aGlzLmluaXRTdHlsZXMoKTtcclxuXHJcbn1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnU3RhdGlzdGljJykgJiYgIWNoYW5nZXNbJ1N0YXRpc3RpYyddLmZpcnN0Q2hhbmdlKXtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgnYWdncmVnYXRpb25zJykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuYWdncmVnYXRpb25zIDogbnVsbDtcclxuICAgICAgICB0aGlzLm9wZXJhdG9yc0dyb3VwQnkgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yc0dyb3VwQnknKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5vcGVyYXRvcnNHcm91cEJ5IDogbnVsbDtcclxuICAgICAgfSAgIFxyXG4gIH0gIFxyXG5cclxuICAvL0Z1bnppb25lIHBlciBwYXJzYXJlIGlsIGNhbXBvIHN0eWxlY3NzIGRlbGwnb2dnZXR0byBmaWVsZCBlZCBhcHBsaWNhcmxvIGFsbCdodG1sXHJcbiAgaW5pdFN0eWxlcygpIHtcclxuICAgIGlmKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICB0aGlzLkZpZWxkc3R5bGVPYmo9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTKTtcclxuICAgIGlmKHRoaXMuZmllbGQuTGFiZWxzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuTGFiZWxzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICB0aGlzLkxhYmVsc3R5bGVPYmogPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuTGFiZWxzdHlsZUNTUyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4qL1xyXG5vbkZpbHRlckNoYW5nZSgpIHsgICBcclxuICAgIHZhciBzdGF0aXN0aWMgPSB0aGlzLmNyZWF0ZVN0YXRpc3RpYygpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdChzdGF0aXN0aWMpO1xyXG59XHJcblxyXG5jcmVhdGVTdGF0aXN0aWMoKXtcclxuICBpZiAoKHRoaXMuYWdncmVnYXRpb25zICE9IG51bGwgJiYgdGhpcy5hZ2dyZWdhdGlvbnMubGVuZ3RoID4gMCkgfHwgKHRoaXMub3BlcmF0b3JzR3JvdXBCeSAhPSBudWxsICYmIHRoaXMub3BlcmF0b3JzR3JvdXBCeS5sZW5ndGggPiAwKSl7IHRoaXMudmlzaWJsZSA9IHRydWU7IH1cclxuXHJcbiAgdmFyIHN0YXRpc3RpYzogU3RhdGlzdGljID0ge1xyXG4gICAga2V5OiB0aGlzLmZpZWxkLk5hbWUsXHJcbiAgICB2YWx1ZTogdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSxcclxuICAgIGxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yLFxyXG4gICAgZmllbGR0eXBlOiB0aGlzLmZpZWxkLkZpZWxkVHlwZSxcclxuICAgIHZpc2libGU6IHRoaXMudmlzaWJsZSxcclxuICAgIGFnZ3JlZ2F0aW9uczogdGhpcy5hZ2dyZWdhdGlvbnMsXHJcbiAgICBvcGVyYXRvcnNHcm91cEJ5OiB0aGlzLm9wZXJhdG9yc0dyb3VwQnlcclxuICB9XHJcblxyXG4gIHJldHVybiBzdGF0aXN0aWM7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgbGUgb3B6aW9uaSBudW1lcmljaGVcclxuKi9cclxucHJpdmF0ZSBjb25maWd1cmVFcXBOdW1lcmljT3B0aW9ucygpIHtcclxuXHJcbiAgLy8gYWxpZ24vbnVsbGFibGUvbWluL21heDogcmVwbGljYW5vIGkgZGVmYXVsdCBnbG9iYWxpIGRlbCB2ZWNjaGlvIEVxcE51bWVyaWNNb2R1bGUuZm9yUm9vdCgpLFxyXG4gIC8vIGNoZSB0bXctbnVtZXJpYyBub24gaGEgKG5lc3N1biBmb3JSb290KSDigJQgdmFubm8gaW1wb3N0YXRpIGVzcGxpY2l0YW1lbnRlIHBlciBub24gY2FtYmlhcmVcclxuICAvLyBjb21wb3J0YW1lbnRvIHNpbGVuemlvc2FtZW50ZS5cclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLmFsaWduID0gXCJsZWZ0XCI7XHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5udWxsYWJsZSA9IHRydWU7XHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5taW4gPSBudWxsO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMubWF4ID0gbnVsbDtcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnN1ZmZpeCA9IHRoaXMuZmllbGQuTWVhc3VyZVVuaXQgPyBcIiAgXCIrdGhpcy5maWVsZC5NZWFzdXJlVW5pdCtcIiAgXCIgOiBcIlwiO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMucHJlZml4ID0gdGhpcy5maWVsZC5DdXJyZW5jeVN5bWJvbCA/IHRoaXMuZmllbGQuQ3VycmVuY3lTeW1ib2wrXCIgXCIgOiBcIlwiO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuaW5wdXRNb2RlID0gdGhpcy5maWVsZC5DdXJyZW5jeVN5bWJvbCA/IFRtd051bWVyaWNJbnB1dE1vZGUuRklOQU5DSUFMIDogVG13TnVtZXJpY0lucHV0TW9kZS5OQVRVUkFMO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuYWxsb3dOZWdhdGl2ZT10cnVlO1xyXG4gIGlmICh0aGlzLmZpZWxkLkRlY2ltYWxTZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRlY2ltYWxTZXBhcmF0b3IgIT0gdW5kZWZpbmVkKVxyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuZGVjaW1hbCA9IHRoaXMuZmllbGQuRGVjaW1hbFNlcGFyYXRvcjtcclxuICBlbHNlXHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5kZWNpbWFsPVwiLlwiO1xyXG4gIGlmICh0aGlzLmZpZWxkLlRob3VzYW5kc1NlcGFyYXRvciAhPSBudWxsICYmIHRoaXMuZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yICE9IHVuZGVmaW5lZClcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnRob3VzYW5kcyA9IHRoaXMuZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yO1xyXG4gIGlmKHRoaXMuZmllbGQuSXNJbnRlZ2VyPT0gZmFsc2Upe1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRGVjaW1hbFByZWNpc2lvbiAhPSBudWxsICYmIHRoaXMuZmllbGQuRGVjaW1hbFByZWNpc2lvbiAhPSB1bmRlZmluZWQpIHsgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5wcmVjaXNpb24gPSB0aGlzLmZpZWxkLkRlY2ltYWxQcmVjaXNpb247IH1cclxuICAgIGVsc2UgeyB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnByZWNpc2lvbiA9IDI7IH1cclxuICB9ZWxzZXtcclxuICAgIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMucHJlY2lzaW9uID0gMDtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxucHJpdmF0ZSBjb25maWd1cmVDb250cm9sbGVycygpIHtcclxuICB0aGlzLnZhbGlkYXRvcnNBcnJheSA9IFtdO1xyXG4gIGlmICh0aGlzLmZpZWxkLk1pblZhbHVlICE9IG51bGwgJiYgdGhpcy5maWVsZC5NaW5WYWx1ZSAhPSB1bmRlZmluZWQpXHJcbiAgdGhpcy52YWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLmZpZWxkLk1pblZhbHVlKSk7XHJcbiAgaWYgKHRoaXMuZmllbGQuTWF4VmFsdWUgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLk1heFZhbHVlICE9IHVuZGVmaW5lZClcclxuICB0aGlzLnZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMubWF4KHRoaXMuZmllbGQuTWF4VmFsdWUpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdlc3Rpb25lIHZpc2liaWxpdMOgXHJcbiAqL1xyXG5cclxuICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eSgpe1xyXG4gICAgdGhpcy52aXNpYmxlID0gIXRoaXMudmlzaWJsZTtcclxuICAgIGlmICgodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKSB8fCAodGhpcy5vcGVyYXRvcnNHcm91cEJ5ICE9IG51bGwgJiYgdGhpcy5vcGVyYXRvcnNHcm91cEJ5Lmxlbmd0aCA+IDApKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG4gICAgdGhpcy5vbkZpbHRlckNoYW5nZSgpO1xyXG4gIH1cclxuICBcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd0NvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXNpYmxlQ29sXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgKm5nSWY9XCJ2aXNpYmxlXCIgbmFtZT1cImV5ZVwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiICpuZ0lmPVwiIXZpc2libGVcIiBuYW1lPVwiZXllLW9mZlwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBCeUNvbFwiPlxyXG4gICAgICAgICAgICA8dG13LXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidPcGVyYXRvcmkgZGkgY29uZnJvbnRvJ1wiXHJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJvcGVyYXRvcnNHcm91cEJ5RW51bVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwib3BlcmF0b3JzR3JvdXBCeVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICA+PC90bXctc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlQ29sXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImZpZWxkLkZvcm1Gb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiIFtuZ1N0eWxlXT1cIkxhYmVsc3R5bGVPYmpcIj4ge3tmaWVsZC5EZXNjcmlwdGlvbn19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiIG1hdElucHV0IHRtd051bWVyaWNNYXNrIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuTmFtZVwiIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCIgW29wdGlvbnNdPVwiZXFwTnVtZXJpY09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJmaWVsZC5Jc0ludGVnZXIgPyAxIDogbnVsbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiIWZpZWxkLkZvcm1Gb3JtR3JvdXAudmFsaWQgJiYgZmllbGQuRm9ybUZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5OYW1lXS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW46IHt7ZmllbGQuTWluVmFsdWV9fSAtIE1heDoge3tmaWVsZC5NYXhWYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvckNvbFwiPlxyXG4gICAgICAgICAgICA8dG13LXNlbGVjdCBbZW51bURhdGFdPVwibG9naWNPcGVyYXRvck51bWVyaWNcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRMb2dpY09wZXJhdG9yXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIj48L3Rtdy1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZ3JlZ2F0b3JDb2xcIj5cclxuICAgICAgICAgICAgPHRtdy1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWdncmVnYXppb25pJ1wiXHJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJhZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWdncmVnYXRpb25zXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgID48L3Rtdy1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -8,10 +8,10 @@ import { Capacitor } from '@capacitor/core';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/material/input";
10
10
  import * as i2 from "@angular/material/form-field";
11
- import * as i3 from "@angular/material/icon";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "@angular/common";
14
- import * as i6 from "@eqproject/eqp-select";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "@angular/common";
13
+ import * as i5 from "tmw-select";
14
+ import * as i6 from "tmw-icons";
15
15
  import * as i7 from "../../../../../directives/speech-to-text/speech-to-text.directive";
16
16
  export class TextFilterTemplateComponent {
17
17
  constructor() {
@@ -99,10 +99,10 @@ export class TextFilterTemplateComponent {
99
99
  }
100
100
  }
101
101
  TextFilterTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextFilterTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
- TextFilterTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextFilterTemplateComponent, selector: "text-filter-template", inputs: { field: "field", record: "record", Statistic: "Statistic" }, outputs: { recordChange: "recordChange", filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <mat-icon *ngIf=\"visible\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"!visible\">visibility_off</mat-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <eqp-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"false\"\r\n [required]=\"false\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onFilterChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <mat-icon\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"record[field.Name]\"\r\n style=\"cursor: pointer\"\r\n >keyboard_voice</mat-icon\r\n >\r\n\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <eqp-select\r\n [enumData]=\"logicOperatorText\"\r\n [(ngModelInput)]=\"selectedLogicOperator\"\r\n [showCancelButton]=\"false\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <eqp-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n \r\n </div>\r\n</div>\r\n", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}.keyboard_speaking{color:red}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"], dependencies: [{ kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "directive", type: i7.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }] });
102
+ TextFilterTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextFilterTemplateComponent, selector: "text-filter-template", inputs: { field: "field", record: "record", Statistic: "Statistic" }, outputs: { recordChange: "recordChange", filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"visible\" name=\"eye\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!visible\" name=\"eye-off\"></tmw-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <tmw-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"false\"\r\n [required]=\"false\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onFilterChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"record[field.Name]\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\"></tmw-icon>\r\n\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <tmw-select\r\n [enumData]=\"logicOperatorText\"\r\n [(ngModelInput)]=\"selectedLogicOperator\"\r\n [showCancelButton]=\"false\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <tmw-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n \r\n </div>\r\n</div>\r\n", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}.keyboard_speaking{color:red}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"], dependencies: [{ kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i6.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i7.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }] });
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextFilterTemplateComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'text-filter-template', template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <mat-icon *ngIf=\"visible\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"!visible\">visibility_off</mat-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <eqp-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"false\"\r\n [required]=\"false\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onFilterChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <mat-icon\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"record[field.Name]\"\r\n style=\"cursor: pointer\"\r\n >keyboard_voice</mat-icon\r\n >\r\n\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <eqp-select\r\n [enumData]=\"logicOperatorText\"\r\n [(ngModelInput)]=\"selectedLogicOperator\"\r\n [showCancelButton]=\"false\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <eqp-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></eqp-select>\r\n </div> \r\n \r\n </div>\r\n</div>\r\n", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}.keyboard_speaking{color:red}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"] }]
105
+ args: [{ selector: 'text-filter-template', template: "<div class=\"row\">\r\n <div class=\"col-12 rowCol\">\r\n <div class=\"visibleCol\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-success': visible , 'btn-danger': !visible }\" (click)=\"changeVisibility()\">\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"visible\" name=\"eye\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!visible\" name=\"eye-off\"></tmw-icon>\r\n </button>\r\n </div> \r\n <div class=\"groupByCol\">\r\n <tmw-select\r\n [placeholder]=\"'Operatori di confronto'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"operatorsGroupByEnum\"\r\n [(ngModelInput)]=\"operatorsGroupBy\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"valueCol\">\r\n <mat-form-field [formGroup]=\"field.FormFormGroup\">\r\n <mat-label class=\"pt-1\" [ngStyle]=\"LabelstyleObj\">\r\n {{ field.Description }}\r\n </mat-label>\r\n <input\r\n [ngStyle]=\"FieldstyleObj\"\r\n matInput\r\n [type]=\"getInputType()\"\r\n [formControlName]=\"field.Name\"\r\n [readonly]=\"false\"\r\n [required]=\"false\"\r\n [(ngModel)]=\"record[field.Name]\"\r\n (ngModelChange)=\"onFilterChange()\"\r\n />\r\n <mat-error\r\n *ngIf=\"\r\n !field.FormFormGroup.valid &&\r\n field.FormFormGroup.controls[field.Name].touched\r\n \"\r\n >\r\n Min. Caratteri: {{ field.MinLenght }} - Max. Caratteri:\r\n {{ field.MaxLenght }}\r\n </mat-error>\r\n <tmw-icon class=\"mat-icon\"\r\n [hidden]=\"!field.Microphone || platform != 'web'\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"record[field.Name]\"\r\n style=\"cursor: pointer\"\r\n name=\"microphone\"></tmw-icon>\r\n\r\n </mat-form-field>\r\n </div>\r\n <div class=\"operatorCol\">\r\n <tmw-select\r\n [enumData]=\"logicOperatorText\"\r\n [(ngModelInput)]=\"selectedLogicOperator\"\r\n [showCancelButton]=\"false\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n <div class=\"aggregatorCol\">\r\n <tmw-select\r\n [placeholder]=\"'Aggregazioni'\"\r\n [isMultiSelect]=\"true\"\r\n [enumData]=\"aggregationFunctionEnum\"\r\n [(ngModelInput)]=\"aggregations\"\r\n (ngModelInputChange)=\"onFilterChange()\"\r\n ></tmw-select>\r\n </div> \r\n \r\n </div>\r\n</div>\r\n", styles: [".rowCol{display:flex;height:56px}.rowCol>*{height:100%}.rowCol .valueCol{padding-right:0;width:100%}.rowCol .operatorCol{padding-left:0;padding-right:0;width:110px;min-width:110px}.rowCol .visibleCol{display:flex;justify-content:center;align-items:flex-start;border-top-left-radius:0;border-bottom-left-radius:0;width:50px;min-width:50px}.rowCol .visibleCol button{height:100%}.rowCol .coordinatesCol{width:35px;min-width:35px}.rowCol .aggregatorCol{min-width:219px}.keyboard_speaking{color:red}::ng-deep .operatorCol .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#a5afc0!important}::ng-deep .operatorCol .mat-mdc-select-value{color:#081c45;font-size:16px;font-weight:700;position:relative;top:-6px}\n"] }]
106
106
  }], ctorParameters: function () { return []; }, propDecorators: { field: [{
107
107
  type: Input
108
108
  }], record: [{
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
114
114
  }], filterChange: [{
115
115
  type: Output
116
116
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL3RleHQtZmlsdGVyLXRlbXBsYXRlL3RleHQtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy90ZXh0LWZpbHRlci10ZW1wbGF0ZS90ZXh0LWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFhLE1BQU0sdUNBQXVDLENBQUM7QUFDbkksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7QUFPNUMsTUFBTSxPQUFPLDJCQUEyQjtJQWtDdEM7UUFoQ0EsOEJBQThCO1FBQzlCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixXQUFNLEdBQUcsUUFBUSxD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SSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFDO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FBRTtRQUMvSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7eUhBMUdVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLGdPQ2R4QyxxakZBd0VBOzRGRDFEYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0Usc0JBQXNCOzBFQVl2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUksWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IFRleHRNYXNrRW51bSwgVGV4dEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy90ZXh0RmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JUZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2xvZ2ljT3BlcmF0b3IubW9kZWwnO1xyXG5pbXBvcnQgeyBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIFN0YXRpc3RpYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9zdGF0aXN0aWMubW9kZWwnO1xyXG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ZXh0LWZpbHRlci10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0RmlsdGVyVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICAvL1ZhcmlhYmlsaSBwZXIgbCdpbnB1dCB2b2NhbGVcclxuICBpc1N0aWxsUmVjb2dpbnplID0gZmFsc2U7XHJcbiAgc291cmNlID0gaW50ZXJ2YWwoMjAwKTtcclxuICBuZXd0ZXh0OiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgLy92YXJpYWJpbGkgZXN0ZXJuZSBwZXIgbCdpbnB1dCBkZWkgY2FtcGlcclxuICBASW5wdXQoKSBmaWVsZDogVGV4dEZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuICBTVFQ6Ym9vbGVhbiA9dHJ1ZTtcclxuICAvL3ZhcmlhYmlsaSBwZXIgZ2VzdGlyZSBpbCBjc3MgZGVsbGEgbGFiZWwgZSBkZWwgZmllbGRcclxuICBGaWVsZHN0eWxlT2JqOiBhbnk7XHJcbiAgTGFiZWxzdHlsZU9iajogYW55O1xyXG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW50U3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIElucHV0TWFza0VudW0gPSBUZXh0TWFza0VudW07XHJcblxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgbG9naWNPcGVyYXRvclRleHQgPSBMb2dpY09wZXJhdG9yVGV4dDtcclxuICBzZWxlY3RlZExvZ2ljT3BlcmF0b3I6IExvZ2ljT3BlcmF0b3JUZXh0ID0gTG9naWNPcGVyYXRvclRleHRbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwbGF0Zm9ybTogc3RyaW5nID0gQ2FwYWNpdG9yLmdldFBsYXRmb3JtKCk7XHJcblxyXG4gIGFnZ3JlZ2F0aW9uczogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+IHwgQXJyYXk8Tm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG4gIGFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtID0gTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG4gIG9wZXJhdG9yc0dyb3VwQnk6IEFycmF5PE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtPjtcclxuICBvcGVyYXRvcnNHcm91cEJ5RW51bSA9IE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljICE9IG51bGwpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvciA9ICh0aGlzLlN0YXRpc3RpYy5sb2dpY29wZXJhdG9yIGFzIExvZ2ljT3BlcmF0b3JUZXh0KTtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuU3RhdGlzdGljLnZhbHVlO1xyXG4gICAgICB0aGlzLnZpc2libGUgPSB0aGlzLlN0YXRpc3RpYy52aXNpYmxlO1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuU3RhdGlzdGljLmFnZ3JlZ2F0aW9ucztcclxuICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gdGhpcy5TdGF0aXN0aWMub3BlcmF0b3JzR3JvdXBCeTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRTdHlsZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH1cclxuICB9ICAgXHJcblxyXG4gIGluaXRTdHlsZXMoKSB7XHJcbiAgICAgIC8vRnVuemlvbmUgcGVyIHBhcnNhcmUgaWwgY2FtcG8gc3R5bGVjc3MgZGVsbCdvZ2dldHRvIGZpZWxkIGVkIGFwcGxpY2FybG8gYWxsJ2h0bWxcclxuICAgIGlmKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICAgIHRoaXMuRmllbGRzdHlsZU9iaj0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MpO1xyXG4gICAgaWYodGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IHVuZGVmaW5lZCkgICBcclxuICAgICAgdGhpcy5MYWJlbHN0eWxlT2JqID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MpO1xyXG4gfVxyXG5cclxuICBnZXRJbnB1dFR5cGUoKSB7XHJcbiAgICBzd2l0Y2ggKE51bWJlcih0aGlzLmZpZWxkLlRleHRNYXNrKSkge1xyXG4gICAgICBjYXNlIFRleHRNYXNrRW51bS5FbWFpbDpcclxuICAgICAgICByZXR1cm4gJ2VtYWlsJztcclxuICAgICAgY2FzZSBUZXh0TWFza0VudW0uUGFzc3dvcmQ6XHJcbiAgICAgICAgcmV0dXJuICdwYXNzd29yZCc7XHJcbiAgICAgIGNhc2UgVGV4dE1hc2tFbnVtLlRlbGVmb25vOlxyXG4gICAgICAgIHJldHVybiAndGVsJztcclxuICAgICAgY2FzZSBUZXh0TWFza0VudW0uVXJsOlxyXG4gICAgICAgIHJldHVybiAndXJsJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ3RleHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4qL1xyXG5vbkZpbHRlckNoYW5nZSgpIHtcclxuICAgIGlmICgodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKSB8fCAodGhpcy5vcGVyYXRvcnNHcm91cEJ5ICE9IG51bGwgJiYgdGhpcy5vcGVyYXRvcnNHcm91cEJ5Lmxlbmd0aCA+IDApKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG5cclxuICAgIHZhciBzdGF0aXN0aWM6IFN0YXRpc3RpYyA9IHtcclxuICAgICAga2V5OiB0aGlzLmZpZWxkLk5hbWUsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLFxyXG4gICAgICBsb2dpY29wZXJhdG9yOiB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvcixcclxuICAgICAgZmllbGR0eXBlOiB0aGlzLmZpZWxkLkZpZWxkVHlwZSxcclxuICAgICAgdmlzaWJsZTogdGhpcy52aXNpYmxlLFxyXG4gICAgICBhZ2dyZWdhdGlvbnM6IHRoaXMuYWdncmVnYXRpb25zLFxyXG4gICAgICBvcGVyYXRvcnNHcm91cEJ5OiB0aGlzLm9wZXJhdG9yc0dyb3VwQnlcclxuICAgIH0gICAgXHJcblxyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdChzdGF0aXN0aWMpO1xyXG59XHJcblxyXG4vKipcclxuICogR2VzdGlvbmUgdmlzaWJpbGl0w6BcclxuICovXHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VWaXNpYmlsaXR5KCl7XHJcbiAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xyXG4gICAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8ICh0aGlzLm9wZXJhdG9yc0dyb3VwQnkgIT0gbnVsbCAmJiB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCkpeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgcm93Q29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZUNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidmlzaWJsZVwiPnZpc2liaWxpdHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhdmlzaWJsZVwiPnZpc2liaWxpdHlfb2ZmPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PiAgICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBCeUNvbFwiPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInT3BlcmF0b3JpIGRpIGNvbmZyb250bydcIlxyXG4gICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2VudW1EYXRhXT1cIm9wZXJhdG9yc0dyb3VwQnlFbnVtXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm9wZXJhdG9yc0dyb3VwQnlcIlxyXG4gICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgID48L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj4gICAgICAgICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidmFsdWVDb2xcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZmllbGQuRm9ybUZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJwdC0xXCIgW25nU3R5bGVdPVwiTGFiZWxzdHlsZU9ialwiPlxyXG4gICAgICAgICAge3sgZmllbGQuRGVzY3JpcHRpb24gfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImdldElucHV0VHlwZSgpXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuTmFtZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCJcclxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgIWZpZWxkLkZvcm1Gb3JtR3JvdXAudmFsaWQgJiZcclxuICAgICAgICAgICAgZmllbGQuRm9ybUZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5OYW1lXS50b3VjaGVkXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIE1pbi4gQ2FyYXR0ZXJpOiB7eyBmaWVsZC5NaW5MZW5naHQgfX0gLSBNYXguIENhcmF0dGVyaTpcclxuICAgICAgICAgIHt7IGZpZWxkLk1heExlbmdodCB9fVxyXG4gICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgW2hpZGRlbl09XCIhZmllbGQuTWljcm9waG9uZSB8fCBwbGF0Zm9ybSAhPSAnd2ViJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIFNwZWVjaFRvVGV4dFxyXG4gICAgICAgICAgWyhiaW5kZWRUZXh0KV09XCJyZWNvcmRbZmllbGQuTmFtZV1cIlxyXG4gICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgPmtleWJvYXJkX3ZvaWNlPC9tYXQtaWNvblxyXG4gICAgICAgID5cclxuXHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvckNvbFwiPlxyXG4gICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgIFtlbnVtRGF0YV09XCJsb2dpY09wZXJhdG9yVGV4dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTG9naWNPcGVyYXRvclwiXHJcbiAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgID48L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj4gICAgICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiYWdncmVnYXRvckNvbFwiPlxyXG4gICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWdncmVnYXppb25pJ1wiXHJcbiAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2VudW1EYXRhXT1cImFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtXCJcclxuICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWdncmVnYXRpb25zXCJcclxuICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICA+PC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+ICBcclxuICAgICBcclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL3RleHQtZmlsdGVyLXRlbXBsYXRlL3RleHQtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy90ZXh0LWZpbHRlci10ZW1wbGF0ZS90ZXh0LWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFhLE1BQU0sdUNBQXVDLENBQUM7QUFDbkksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7QUFPNUMsTUFBTSxPQUFPLDJCQUEyQjtJQWtDdEM7UUFoQ0EsOEJBQThCO1FBQzlCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixXQUFNLEdBQUcsUUFBUSxD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SSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFDO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FBRTtRQUMvSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7eUhBMUdVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLGdPQ2R4Qyw2bUZBdUVBOzRGRHpEYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0Usc0JBQXNCOzBFQVl2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUksWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IFRleHRNYXNrRW51bSwgVGV4dEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy90ZXh0RmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JUZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2xvZ2ljT3BlcmF0b3IubW9kZWwnO1xyXG5pbXBvcnQgeyBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIFN0YXRpc3RpYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9zdGF0aXN0aWMubW9kZWwnO1xyXG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ZXh0LWZpbHRlci10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0RmlsdGVyVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICAvL1ZhcmlhYmlsaSBwZXIgbCdpbnB1dCB2b2NhbGVcclxuICBpc1N0aWxsUmVjb2dpbnplID0gZmFsc2U7XHJcbiAgc291cmNlID0gaW50ZXJ2YWwoMjAwKTtcclxuICBuZXd0ZXh0OiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgLy92YXJpYWJpbGkgZXN0ZXJuZSBwZXIgbCdpbnB1dCBkZWkgY2FtcGlcclxuICBASW5wdXQoKSBmaWVsZDogVGV4dEZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuICBTVFQ6Ym9vbGVhbiA9dHJ1ZTtcclxuICAvL3ZhcmlhYmlsaSBwZXIgZ2VzdGlyZSBpbCBjc3MgZGVsbGEgbGFiZWwgZSBkZWwgZmllbGRcclxuICBGaWVsZHN0eWxlT2JqOiBhbnk7XHJcbiAgTGFiZWxzdHlsZU9iajogYW55O1xyXG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW50U3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIElucHV0TWFza0VudW0gPSBUZXh0TWFza0VudW07XHJcblxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgbG9naWNPcGVyYXRvclRleHQgPSBMb2dpY09wZXJhdG9yVGV4dDtcclxuICBzZWxlY3RlZExvZ2ljT3BlcmF0b3I6IExvZ2ljT3BlcmF0b3JUZXh0ID0gTG9naWNPcGVyYXRvclRleHRbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwbGF0Zm9ybTogc3RyaW5nID0gQ2FwYWNpdG9yLmdldFBsYXRmb3JtKCk7XHJcblxyXG4gIGFnZ3JlZ2F0aW9uczogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+IHwgQXJyYXk8Tm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG4gIGFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtID0gTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG4gIG9wZXJhdG9yc0dyb3VwQnk6IEFycmF5PE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtPjtcclxuICBvcGVyYXRvcnNHcm91cEJ5RW51bSA9IE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljICE9IG51bGwpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvciA9ICh0aGlzLlN0YXRpc3RpYy5sb2dpY29wZXJhdG9yIGFzIExvZ2ljT3BlcmF0b3JUZXh0KTtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuU3RhdGlzdGljLnZhbHVlO1xyXG4gICAgICB0aGlzLnZpc2libGUgPSB0aGlzLlN0YXRpc3RpYy52aXNpYmxlO1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuU3RhdGlzdGljLmFnZ3JlZ2F0aW9ucztcclxuICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gdGhpcy5TdGF0aXN0aWMub3BlcmF0b3JzR3JvdXBCeTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRTdHlsZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH1cclxuICB9ICAgXHJcblxyXG4gIGluaXRTdHlsZXMoKSB7XHJcbiAgICAgIC8vRnVuemlvbmUgcGVyIHBhcnNhcmUgaWwgY2FtcG8gc3R5bGVjc3MgZGVsbCdvZ2dldHRvIGZpZWxkIGVkIGFwcGxpY2FybG8gYWxsJ2h0bWxcclxuICAgIGlmKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICAgIHRoaXMuRmllbGRzdHlsZU9iaj0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MpO1xyXG4gICAgaWYodGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IHVuZGVmaW5lZCkgICBcclxuICAgICAgdGhpcy5MYWJlbHN0eWxlT2JqID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MpO1xyXG4gfVxyXG5cclxuICBnZXRJbnB1dFR5cGUoKSB7XHJcbiAgICBzd2l0Y2ggKE51bWJlcih0aGlzLmZpZWxkLlRleHRNYXNrKSkge1xyXG4gICAgICBjYXNlIFRleHRNYXNrRW51bS5FbWFpbDpcclxuICAgICAgICByZXR1cm4gJ2VtYWlsJztcclxuICAgICAgY2FzZSBUZXh0TWFza0VudW0uUGFzc3dvcmQ6XHJcbiAgICAgICAgcmV0dXJuICdwYXNzd29yZCc7XHJcbiAgICAgIGNhc2UgVGV4dE1hc2tFbnVtLlRlbGVmb25vOlxyXG4gICAgICAgIHJldHVybiAndGVsJztcclxuICAgICAgY2FzZSBUZXh0TWFza0VudW0uVXJsOlxyXG4gICAgICAgIHJldHVybiAndXJsJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ3RleHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4qL1xyXG5vbkZpbHRlckNoYW5nZSgpIHtcclxuICAgIGlmICgodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKSB8fCAodGhpcy5vcGVyYXRvcnNHcm91cEJ5ICE9IG51bGwgJiYgdGhpcy5vcGVyYXRvcnNHcm91cEJ5Lmxlbmd0aCA+IDApKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG5cclxuICAgIHZhciBzdGF0aXN0aWM6IFN0YXRpc3RpYyA9IHtcclxuICAgICAga2V5OiB0aGlzLmZpZWxkLk5hbWUsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLFxyXG4gICAgICBsb2dpY29wZXJhdG9yOiB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvcixcclxuICAgICAgZmllbGR0eXBlOiB0aGlzLmZpZWxkLkZpZWxkVHlwZSxcclxuICAgICAgdmlzaWJsZTogdGhpcy52aXNpYmxlLFxyXG4gICAgICBhZ2dyZWdhdGlvbnM6IHRoaXMuYWdncmVnYXRpb25zLFxyXG4gICAgICBvcGVyYXRvcnNHcm91cEJ5OiB0aGlzLm9wZXJhdG9yc0dyb3VwQnlcclxuICAgIH0gICAgXHJcblxyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdChzdGF0aXN0aWMpO1xyXG59XHJcblxyXG4vKipcclxuICogR2VzdGlvbmUgdmlzaWJpbGl0w6BcclxuICovXHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VWaXNpYmlsaXR5KCl7XHJcbiAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xyXG4gICAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8ICh0aGlzLm9wZXJhdG9yc0dyb3VwQnkgIT0gbnVsbCAmJiB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCkpeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgcm93Q29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZUNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cInZpc2libGVcIiBuYW1lPVwiZXllXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiAqbmdJZj1cIiF2aXNpYmxlXCIgbmFtZT1cImV5ZS1vZmZcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+ICAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJncm91cEJ5Q29sXCI+XHJcbiAgICAgICAgPHRtdy1zZWxlY3RcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidPcGVyYXRvcmkgZGkgY29uZnJvbnRvJ1wiXHJcbiAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBbZW51bURhdGFdPVwib3BlcmF0b3JzR3JvdXBCeUVudW1cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwib3BlcmF0b3JzR3JvdXBCeVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgPjwvdG13LXNlbGVjdD5cclxuICAgIDwvZGl2PiAgICAgICAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZUNvbFwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInB0LTFcIiBbbmdTdHlsZV09XCJMYWJlbHN0eWxlT2JqXCI+XHJcbiAgICAgICAgICB7eyBmaWVsZC5EZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW3R5cGVdPVwiZ2V0SW5wdXRUeXBlKClcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5OYW1lXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyZWNvcmRbZmllbGQuTmFtZV1cIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAhZmllbGQuRm9ybUZvcm1Hcm91cC52YWxpZCAmJlxyXG4gICAgICAgICAgICBmaWVsZC5Gb3JtRm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLk5hbWVdLnRvdWNoZWRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgTWluLiBDYXJhdHRlcmk6IHt7IGZpZWxkLk1pbkxlbmdodCB9fSAtIE1heC4gQ2FyYXR0ZXJpOlxyXG4gICAgICAgICAge3sgZmllbGQuTWF4TGVuZ2h0IH19XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIlxyXG4gICAgICAgICAgW2hpZGRlbl09XCIhZmllbGQuTWljcm9waG9uZSB8fCBwbGF0Zm9ybSAhPSAnd2ViJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIFNwZWVjaFRvVGV4dFxyXG4gICAgICAgICAgWyhiaW5kZWRUZXh0KV09XCJyZWNvcmRbZmllbGQuTmFtZV1cIlxyXG4gICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgbmFtZT1cIm1pY3JvcGhvbmVcIj48L3Rtdy1pY29uPlxyXG5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm9wZXJhdG9yQ29sXCI+XHJcbiAgICAgIDx0bXctc2VsZWN0XHJcbiAgICAgICAgW2VudW1EYXRhXT1cImxvZ2ljT3BlcmF0b3JUZXh0XCJcclxuICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRMb2dpY09wZXJhdG9yXCJcclxuICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcclxuICAgICAgPjwvdG13LXNlbGVjdD5cclxuICAgIDwvZGl2PiAgICAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJhZ2dyZWdhdG9yQ29sXCI+XHJcbiAgICAgIDx0bXctc2VsZWN0XHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZ2dyZWdhemlvbmknXCJcclxuICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICBbZW51bURhdGFdPVwiYWdncmVnYXRpb25GdW5jdGlvbkVudW1cIlxyXG4gICAgICAgIFsobmdNb2RlbElucHV0KV09XCJhZ2dyZWdhdGlvbnNcIlxyXG4gICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgID48L3Rtdy1zZWxlY3Q+XHJcbiAgICA8L2Rpdj4gIFxyXG4gICAgIFxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19