@eqproject/eqp-dynamic-module 2.10.26 → 2.10.27

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 (35) hide show
  1. package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +3 -6
  2. package/esm2020/lib/components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component.mjs +3 -6
  3. package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +4 -18
  4. package/esm2020/lib/components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component.mjs +1 -5
  5. package/esm2020/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.mjs +5 -12
  6. package/esm2020/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.mjs +5 -31
  7. package/esm2020/lib/components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component.mjs +1 -5
  8. package/esm2020/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.mjs +1 -5
  9. package/esm2020/lib/components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component.mjs +1 -5
  10. package/esm2020/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.mjs +5 -12
  11. package/esm2020/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.mjs +5 -31
  12. package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +5 -12
  13. package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +5 -14
  14. package/esm2020/lib/components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component.mjs +1 -5
  15. package/esm2020/lib/models/statistic.model.mjs +1 -3
  16. package/fesm2015/eqproject-eqp-dynamic-module.mjs +31 -155
  17. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  18. package/fesm2020/eqproject-eqp-dynamic-module.mjs +31 -155
  19. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +1 -2
  21. package/lib/components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component.d.ts +1 -2
  22. package/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.d.ts +1 -2
  23. package/lib/components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component.d.ts +0 -2
  24. package/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.d.ts +1 -4
  25. package/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.d.ts +1 -5
  26. package/lib/components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component.d.ts +0 -2
  27. package/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.d.ts +0 -2
  28. package/lib/components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component.d.ts +0 -2
  29. package/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.d.ts +1 -4
  30. package/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.d.ts +1 -5
  31. package/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.d.ts +1 -4
  32. package/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.d.ts +1 -4
  33. package/lib/components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component.d.ts +0 -2
  34. package/lib/models/statistic.model.d.ts +0 -2
  35. package/package.json +1 -1
@@ -10,7 +10,6 @@ import * as i3 from "@eqproject/eqp-select";
10
10
  export class ListValueFilterTemplateComponent {
11
11
  constructor() {
12
12
  this.Statistic = null;
13
- this.showXY = true;
14
13
  this.filterChange = new EventEmitter();
15
14
  this.validatorsArray = [];
16
15
  this.logicOperatorListValue = LogicOperatorListValue;
@@ -36,8 +35,6 @@ export class ListValueFilterTemplateComponent {
36
35
  }
37
36
  ngOnChanges(changes) {
38
37
  if (changes.hasOwnProperty('Statistic') && !changes['Statistic'].firstChange) {
39
- this.isX = changes['Statistic'].currentValue.hasOwnProperty('isX') ? changes['Statistic'].currentValue.isX : null;
40
- this.isY = changes['Statistic'].currentValue.hasOwnProperty('isY') ? changes['Statistic'].currentValue.isY : null;
41
38
  this.aggregations = changes['Statistic'].currentValue.hasOwnProperty('aggregations') ? changes['Statistic'].currentValue.aggregations : null;
42
39
  this.operatorsGroupBy = changes['Statistic'].currentValue.hasOwnProperty('operatorsGroupBy') ? changes['Statistic'].currentValue.operatorsGroupBy : null;
43
40
  }
@@ -51,7 +48,7 @@ export class ListValueFilterTemplateComponent {
51
48
  * Metodo per emettere l'evento che il valore del record è cambiato.
52
49
  */
53
50
  onFilterChange() {
54
- if (this.aggregations != null && this.aggregations.length > 0) {
51
+ if ((this.aggregations != null && this.aggregations.length > 0) || this.operatorsGroupBy.length > 0) {
55
52
  this.visible = true;
56
53
  }
57
54
  var statistic = {
@@ -60,8 +57,6 @@ export class ListValueFilterTemplateComponent {
60
57
  logicoperator: this.selectedLogicOperator,
61
58
  fieldtype: this.field.FieldType,
62
59
  visible: this.visible,
63
- isX: this.isX === undefined ? false : this.isX,
64
- isY: this.isY === undefined ? false : this.isY,
65
60
  aggregations: this.aggregations,
66
61
  operatorsGroupBy: this.operatorsGroupBy
67
62
  };
@@ -110,7 +105,7 @@ export class ListValueFilterTemplateComponent {
110
105
  */
111
106
  changeVisibility() {
112
107
  this.visible = !this.visible;
113
- if (this.aggregations != null && this.aggregations.length > 0) {
108
+ if ((this.aggregations != null && this.aggregations.length > 0) || this.operatorsGroupBy.length > 0) {
114
109
  this.visible = true;
115
110
  }
116
111
  this.onFilterChange();
@@ -137,19 +132,17 @@ export class ListValueFilterTemplateComponent {
137
132
  }
138
133
  }
139
134
  ListValueFilterTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueFilterTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
- 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", showXY: "showXY" }, 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=\"coordinatesCol\" [hidden]=\"!showXY\">\r\n\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 <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"] }] });
141
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListValueFilterTemplateComponent, decorators: [{
142
137
  type: Component,
143
- 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=\"coordinatesCol\" [hidden]=\"!showXY\">\r\n\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 <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"] }]
144
139
  }], ctorParameters: function () { return []; }, propDecorators: { field: [{
145
140
  type: Input
146
141
  }], record: [{
147
142
  type: Input
148
143
  }], Statistic: [{
149
144
  type: Input
150
- }], showXY: [{
151
- type: Input
152
145
  }], filterChange: [{
153
146
  type: Output
154
147
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQztBQUVuSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBTXZFLE1BQU0sT0FBTyxnQ0FBZ0M7SUE4QjdDO1FBMUJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFDNUIsV0FBTSxHQUFZLElBQUksQ0FBQztRQUN0QixpQkFBWSxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBQ2hGLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVC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QWdDO2tIQUFoQyxnQ0FBZ0MsME5DWjdDLHUwRUE0Q007NEZEaENPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSw0QkFBNEI7MEVBTTdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpY09wZXJhdG9yTGlzdFZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2xvZ2ljT3BlcmF0b3IubW9kZWwnO1xyXG5pbXBvcnQgeyBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIFN0YXRpc3RpYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9zdGF0aXN0aWMubW9kZWwnO1xyXG5pbXBvcnQgeyBMaXN0VmFsdWVGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbGlzdFZhbHVlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RWYWx1ZUZpbHRlclRlbXBsYXRlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgZmllbGQ6IExpc3RWYWx1ZUZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuICBASW5wdXQoKSBzaG93WFk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGxvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgPSBMb2dpY09wZXJhdG9yTGlzdFZhbHVlO1xyXG4gIHNlbGVjdGVkTG9naWNPcGVyYXRvcjogTG9naWNPcGVyYXRvckxpc3RWYWx1ZSA9IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWVbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT4gfCBBcnJheTxOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbiAgYWdncmVnYXRpb25GdW5jdGlvbkVudW0gPSBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bTtcclxuXHJcbiAgb3BlcmF0b3JzR3JvdXBCeTogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG4gIG9wZXJhdG9yc0dyb3VwQnlFbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG4gIC8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG4gIEZpZWxkc3R5bGVPYmo6IGFueTtcclxuICBMYWJlbHN0eWxlT2JqOiBhbnk7XHJcblxyXG4gIGFycmF5RGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSwgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gIGlzWDogYm9vbGVhbjtcclxuICBpc1k6IGJvb2xlYW47IFxyXG5cclxuY29uc3RydWN0b3IoKSB7XHJcbn1cclxuXHJcbm5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICBpZiAodGhpcy5TdGF0aXN0aWMgIT0gbnVsbCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvciA9ICh0aGlzLlN0YXRpc3RpYy5sb2dpY29wZXJhdG9yIGFzIExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUpO1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuU3RhdGlzdGljLnZhbHVlO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdGhpcy5TdGF0aXN0aWMudmlzaWJsZTtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zID0gdGhpcy5TdGF0aXN0aWMuYWdncmVnYXRpb25zO1xyXG4gICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gdGhpcy5TdGF0aXN0aWMub3BlcmF0b3JzR3JvdXBCeTtcclxuICB9IFxyXG5cclxuICB0aGlzLmNvbmZpZ3VyZUNvbnRyb2xsZXJzKCk7XHJcbiAgdGhpcy5pbml0U3R5bGVzKCk7XHJcbiAgdGhpcy5zZXRBcnJheURhdGEoKTtcclxufVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdTdGF0aXN0aWMnKSAmJiAhY2hhbmdlc1snU3RhdGlzdGljJ10uZmlyc3RDaGFuZ2Upe1xyXG4gICAgICAgIHRoaXMuaXNYID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdpc1gnKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5pc1ggOiBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNZID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdpc1knKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5pc1kgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdhZ2dyZWdhdGlvbnMnKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5hZ2dyZWdhdGlvbnMgOiBudWxsO1xyXG4gICAgICAgIHRoaXMub3BlcmF0b3JzR3JvdXBCeSA9IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3JzR3JvdXBCeScpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLm9wZXJhdG9yc0dyb3VwQnkgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgfSBcclxuXHJcbiAgLy9GdW56aW9uZSBwZXIgcGFyc2FyZSBpbCBjYW1wbyBzdHlsZWNzcyBkZWxsJ29nZ2V0dG8gZmllbGQgZWQgYXBwbGljYXJsbyBhbGwnaHRtbFxyXG4gIGluaXRTdHlsZXMoKSB7XHJcbiAgICBpZih0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gdW5kZWZpbmVkKSAgIFxyXG4gICAgdGhpcy5GaWVsZHN0eWxlT2JqPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4qL1xyXG5vbkZpbHRlckNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcblxyXG4gICAgdmFyIHN0YXRpc3RpYzogU3RhdGlzdGljID0ge1xyXG4gICAgICBrZXk6IHRoaXMuZmllbGQuTmFtZSxcclxuICAgICAgdmFsdWU6IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0sXHJcbiAgICAgIGxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yLFxyXG4gICAgICBmaWVsZHR5cGU6IHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICAgIGlzWDogdGhpcy5pc1ggPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5pc1gsXHJcbiAgICAgIGlzWTogdGhpcy5pc1kgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5pc1ksXHJcbiAgICAgIGFnZ3JlZ2F0aW9uczogdGhpcy5hZ2dyZWdhdGlvbnMsXHJcbiAgICAgIG9wZXJhdG9yc0dyb3VwQnk6IHRoaXMub3BlcmF0b3JzR3JvdXBCeVxyXG4gICAgfSAgICBcclxuXHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHN0YXRpc3RpYyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbnRyb2xsZXJzKCkge1xyXG4gICAgdGhpcy52YWxpZGF0b3JzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5nZXQoW3RoaXMuZmllbGQuTmFtZV0pLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSB9IGRhIHVzYXJlIGNvbWUgc29yZ2VudGUgZGF0aSBwZXIgbGEgZXFwLXNlbGVjdC5cclxuICAgKi9cclxuICAgcHJpdmF0ZSBzZXRBcnJheURhdGEoKSB7XHJcbiAgICB0aGlzLnByZXBhcmVWYWx1ZVBhaXJzKCk7XHJcbiAgICBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwpe1xyXG4gICAgICBpZiAoVXRpbGl0eUhlbHBlclNlcnZpY2UuaXNOdW1lcmljKHRoaXMuZmllbGQuVmFsdWVQYWlyc1tPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpWzBdXSkpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpLmZvckVhY2hcclxuICAgICAgICAgIChrID0+IHRoaXMuY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrLCBOdW1iZXIodGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdKSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycykuZm9yRWFjaFxyXG4gICAgICAgICAgKGsgPT4gdGhpcy5jcmVhdGVBcnJheURhdGFFbGVtZW50KGssIHRoaXMuZmllbGQuVmFsdWVQYWlyc1trXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlVmFsdWVQYWlycygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgIGNvbnN0IHRlbXA6IHN0cmluZyA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgICAvLyB0ZW1wIGRvdnJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSBkZWwgdGlwbyBcImNoaWF2ZTEhIHZhbG9yZSAxIDsgY2hpYXZlMiB8IHZhbG9yZSAyIFwiXHJcbiAgICAgIC8vIGRvYmJpYW1vIG90dGVuZXJlIHVuIGRpemlvbmFyaW8gZGkgcXVlaSB2YWxvcmlcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGVtcCk7XHJcblxyXG4gICAgICAvL3RoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwgJiYgdGhpcy5maWVsZC5WYWx1ZVBhaXJzLmxlbmdodCA+IDApIHtcclxuICAgICAgLy8gdmEgYmVuZSBjb3PDrFxyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVN0cmluZyAhPSBudWxsICYmIHRoaXMuZmllbGQuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICAvLyB2YSBwcmVzYSBsYSBzdHJpZ25hIGUgcmltYXBwYXRhIG5lbCBkaWFyaW9cclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGhpcy5maWVsZC5WYWx1ZVN0cmluZyk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlvbmUgdmlzaWJpbGl0w6BcclxuICAgKi9cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eSgpe1xyXG4gICAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xyXG4gICAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gIFxyXG4gIHByaXZhdGUgY3JlYXRlQXJyYXlEYXRhRWxlbWVudChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgaW1nVXJsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgaXNPcHRpb25TZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSAhIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZmluZCh2ID0+IHYgPT0gdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNPcHRpb25TZWxlY3RlZCA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcnJheURhdGEucHVzaCh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUsIFNlbGVjdGVkOiBpc09wdGlvblNlbGVjdGVkLCBJbWdVcmw6IGltZ1VybCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrZXk6IHN0cmluZywgdmFsdWU6IG51bWJlciwgaW1nVXJsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgaXNPcHRpb25TZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSAhIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZmluZCh2ID0+IHYgPT0gdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNPcHRpb25TZWxlY3RlZCA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcnJheURhdGEucHVzaCh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUsIFNlbGVjdGVkOiBpc09wdGlvblNlbGVjdGVkLCBJbWdVcmw6IGltZ1VybCB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcm93Q29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpc2libGVDb2xcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIFtuZ0NsYXNzXT1cInsnYnRuLXN1Y2Nlc3MnOiB2aXNpYmxlICwgJ2J0bi1kYW5nZXInOiAhdmlzaWJsZSB9XCIgKGNsaWNrKT1cImNoYW5nZVZpc2liaWxpdHkoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidmlzaWJsZVwiPnZpc2liaWxpdHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXZpc2libGVcIj52aXNpYmlsaXR5X29mZjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29vcmRpbmF0ZXNDb2xcIiBbaGlkZGVuXT1cIiFzaG93WFlcIj5cclxuXHJcbiAgICAgICAgPC9kaXY+ICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBCeUNvbFwiPlxyXG4gICAgICAgICAgICA8IS0tIENvbWUgZmFjY2lvIGEgZmFyZSBpbCBncm91cEJ5IGRpIHVuYSBsaXN0YT8gLS0+XHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInT3BlcmF0b3JpIGRpIGNvbmZyb250bydcIlxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwib3BlcmF0b3JzR3JvdXBCeUVudW1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm9wZXJhdG9yc0dyb3VwQnlcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcclxuICAgICAgICAgICAgPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlQ29sXCI+XHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiBbYXJyYXlEYXRhXT1cImFycmF5RGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInVmFsdWUnXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ0tleSdcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkLkZvcm1Gb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiZmllbGQuTmFtZVwiIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5EZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbaXNSZXF1aXJlZF09XCJmYWxzZVwiIFtpc0Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJyZWNvcmRbZmllbGQuTmFtZV1cIiBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wZXJhdG9yQ29sXCI+XHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJsb2dpY09wZXJhdG9yTGlzdFZhbHVlXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTG9naWNPcGVyYXRvclwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCI+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZ2dyZWdhdG9yQ29sXCI+XHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FnZ3JlZ2F6aW9uaSdcIlxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWdncmVnYXRpb25GdW5jdGlvbkVudW1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImFnZ3JlZ2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICA+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlL2xpc3QtdmFsdWUtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQztBQUVuSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBTXZFLE1BQU0sT0FBTyxnQ0FBZ0M7SUEwQjdDO1FBdEJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFDM0IsaUJBQVksR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNoRixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1QiwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztR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QUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4RyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQztTQUMzRDtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDOzs4SEFwSlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0Msd01DWjdDLDZ1RUF5Q007NEZEN0JPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSw0QkFBNEI7MEVBTTdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgU3RhdGlzdGljIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3N0YXRpc3RpYy5tb2RlbCc7XHJcbmltcG9ydCB7IExpc3RWYWx1ZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9saXN0VmFsdWVGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZhbHVlLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12YWx1ZS1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdFZhbHVlRmlsdGVyVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZDogTGlzdFZhbHVlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgU3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGF0aXN0aWM+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGxvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgPSBMb2dpY09wZXJhdG9yTGlzdFZhbHVlO1xyXG4gIHNlbGVjdGVkTG9naWNPcGVyYXRvcjogTG9naWNPcGVyYXRvckxpc3RWYWx1ZSA9IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWVbJyddO1xyXG4gIGFjdGl2ZUNvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT4gfCBBcnJheTxOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbiAgYWdncmVnYXRpb25GdW5jdGlvbkVudW0gPSBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bTtcclxuXHJcbiAgb3BlcmF0b3JzR3JvdXBCeTogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG4gIG9wZXJhdG9yc0dyb3VwQnlFbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG4gIC8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG4gIEZpZWxkc3R5bGVPYmo6IGFueTtcclxuICBMYWJlbHN0eWxlT2JqOiBhbnk7XHJcblxyXG4gIGFycmF5RGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSwgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG5jb25zdHJ1Y3RvcigpIHtcclxufVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIGlmICh0aGlzLlN0YXRpc3RpYyAhPSBudWxsKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yID0gKHRoaXMuU3RhdGlzdGljLmxvZ2ljb3BlcmF0b3IgYXMgTG9naWNPcGVyYXRvckxpc3RWYWx1ZSk7XHJcbiAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gdGhpcy5TdGF0aXN0aWMudmFsdWU7XHJcbiAgICB0aGlzLnZpc2libGUgPSB0aGlzLlN0YXRpc3RpYy52aXNpYmxlO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSB0aGlzLlN0YXRpc3RpYy5hZ2dyZWdhdGlvbnM7XHJcbiAgICB0aGlzLm9wZXJhdG9yc0dyb3VwQnkgPSB0aGlzLlN0YXRpc3RpYy5vcGVyYXRvcnNHcm91cEJ5O1xyXG4gIH0gXHJcblxyXG4gIHRoaXMuY29uZmlndXJlQ29udHJvbGxlcnMoKTtcclxuICB0aGlzLmluaXRTdHlsZXMoKTtcclxuICB0aGlzLnNldEFycmF5RGF0YSgpO1xyXG59XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH1cclxuICB9IFxyXG5cclxuICAvL0Z1bnppb25lIHBlciBwYXJzYXJlIGlsIGNhbXBvIHN0eWxlY3NzIGRlbGwnb2dnZXR0byBmaWVsZCBlZCBhcHBsaWNhcmxvIGFsbCdodG1sXHJcbiAgaW5pdFN0eWxlcygpIHtcclxuICAgIGlmKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpICAgXHJcbiAgICB0aGlzLkZpZWxkc3R5bGVPYmo9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTKTtcclxufVxyXG5cclxuLyoqXHJcbiogTWV0b2RvIHBlciBlbWV0dGVyZSBsJ2V2ZW50byBjaGUgaWwgdmFsb3JlIGRlbCByZWNvcmQgw6ggY2FtYmlhdG8uXHJcbiovXHJcbm9uRmlsdGVyQ2hhbmdlKCkge1xyXG4gICAgICBpZiAoKHRoaXMuYWdncmVnYXRpb25zICE9IG51bGwgJiYgdGhpcy5hZ2dyZWdhdGlvbnMubGVuZ3RoID4gMCkgfHwgdGhpcy5vcGVyYXRvcnNHcm91cEJ5Lmxlbmd0aCA+IDApeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcblxyXG4gICAgdmFyIHN0YXRpc3RpYzogU3RhdGlzdGljID0ge1xyXG4gICAgICBrZXk6IHRoaXMuZmllbGQuTmFtZSxcclxuICAgICAgdmFsdWU6IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0sXHJcbiAgICAgIGxvZ2ljb3BlcmF0b3I6IHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yLFxyXG4gICAgICBmaWVsZHR5cGU6IHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICAgIGFnZ3JlZ2F0aW9uczogdGhpcy5hZ2dyZWdhdGlvbnMsXHJcbiAgICAgIG9wZXJhdG9yc0dyb3VwQnk6IHRoaXMub3BlcmF0b3JzR3JvdXBCeVxyXG4gICAgfSAgICBcclxuXHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHN0YXRpc3RpYyk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbnRyb2xsZXJzKCkge1xyXG4gICAgdGhpcy52YWxpZGF0b3JzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5nZXQoW3RoaXMuZmllbGQuTmFtZV0pLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSB9IGRhIHVzYXJlIGNvbWUgc29yZ2VudGUgZGF0aSBwZXIgbGEgZXFwLXNlbGVjdC5cclxuICAgKi9cclxuICAgcHJpdmF0ZSBzZXRBcnJheURhdGEoKSB7XHJcbiAgICB0aGlzLnByZXBhcmVWYWx1ZVBhaXJzKCk7XHJcbiAgICBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwpe1xyXG4gICAgICBpZiAoVXRpbGl0eUhlbHBlclNlcnZpY2UuaXNOdW1lcmljKHRoaXMuZmllbGQuVmFsdWVQYWlyc1tPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpWzBdXSkpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpLmZvckVhY2hcclxuICAgICAgICAgIChrID0+IHRoaXMuY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrLCBOdW1iZXIodGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdKSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycykuZm9yRWFjaFxyXG4gICAgICAgICAgKGsgPT4gdGhpcy5jcmVhdGVBcnJheURhdGFFbGVtZW50KGssIHRoaXMuZmllbGQuVmFsdWVQYWlyc1trXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlVmFsdWVQYWlycygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgIGNvbnN0IHRlbXA6IHN0cmluZyA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgICAvLyB0ZW1wIGRvdnJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSBkZWwgdGlwbyBcImNoaWF2ZTEhIHZhbG9yZSAxIDsgY2hpYXZlMiB8IHZhbG9yZSAyIFwiXHJcbiAgICAgIC8vIGRvYmJpYW1vIG90dGVuZXJlIHVuIGRpemlvbmFyaW8gZGkgcXVlaSB2YWxvcmlcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGVtcCk7XHJcblxyXG4gICAgICAvL3RoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwgJiYgdGhpcy5maWVsZC5WYWx1ZVBhaXJzLmxlbmdodCA+IDApIHtcclxuICAgICAgLy8gdmEgYmVuZSBjb3PDrFxyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVN0cmluZyAhPSBudWxsICYmIHRoaXMuZmllbGQuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICAvLyB2YSBwcmVzYSBsYSBzdHJpZ25hIGUgcmltYXBwYXRhIG5lbCBkaWFyaW9cclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnModGhpcy5maWVsZC5WYWx1ZVN0cmluZyk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlvbmUgdmlzaWJpbGl0w6BcclxuICAgKi9cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eSgpe1xyXG4gICAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xyXG4gICAgICAgIGlmICgodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKSB8fCB0aGlzLm9wZXJhdG9yc0dyb3VwQnkubGVuZ3RoID4gMCl7IHRoaXMudmlzaWJsZSA9IHRydWU7IH1cclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICBcclxuICBwcml2YXRlIGNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU51bWJlckFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd0NvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXNpYmxlQ29sXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZpc2libGVcIj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiF2aXNpYmxlXCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwQnlDb2xcIj5cclxuICAgICAgICAgICAgPCEtLSBDb21lIGZhY2NpbyBhIGZhcmUgaWwgZ3JvdXBCeSBkaSB1bmEgbGlzdGE/IC0tPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ09wZXJhdG9yaSBkaSBjb25mcm9udG8nXCJcclxuICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cIm9wZXJhdG9yc0dyb3VwQnlFbnVtXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJvcGVyYXRvcnNHcm91cEJ5XCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgID48L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZUNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdCBbbmdTdHlsZV09XCJGaWVsZHN0eWxlT2JqXCIgW2FycmF5RGF0YV09XCJhcnJheURhdGFcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ1ZhbHVlJ1wiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidLZXknXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cImZpZWxkLk5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQuRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW2lzUmVxdWlyZWRdPVwiZmFsc2VcIiBbaXNEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCIgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvckNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwibG9naWNPcGVyYXRvckxpc3RWYWx1ZVwiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZExvZ2ljT3BlcmF0b3JcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoKVwiPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWdncmVnYXRvckNvbFwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZ2dyZWdhemlvbmknXCJcclxuICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cImFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJhZ2dyZWdhdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcclxuICAgICAgICAgICAgPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -15,7 +15,6 @@ import * as i7 from "@eqproject/eqp-numeric";
15
15
  export class NumericFilterTemplateComponent {
16
16
  constructor() {
17
17
  this.Statistic = null;
18
- this.showXY = true;
19
18
  this.filterChange = new EventEmitter();
20
19
  this.validatorsArray = [];
21
20
  this.eqpNumericOptions = {};
@@ -32,16 +31,8 @@ export class NumericFilterTemplateComponent {
32
31
  this.selectedLogicOperator = this.Statistic.logicoperator;
33
32
  this.record[this.field.Name] = this.Statistic.value;
34
33
  this.visible = this.Statistic.visible;
35
- this.isX = this.Statistic.isX;
36
- this.isY = this.Statistic.isY;
37
34
  this.aggregations = this.Statistic.aggregations;
38
35
  this.operatorsGroupBy = this.Statistic.operatorsGroupBy;
39
- if (this.isX === undefined) {
40
- this.isX = false;
41
- }
42
- if (this.isY === undefined) {
43
- this.isY = false;
44
- }
45
36
  }
46
37
  this.configureEqpNumericOptions();
47
38
  this.configureControllers();
@@ -49,8 +40,6 @@ export class NumericFilterTemplateComponent {
49
40
  }
50
41
  ngOnChanges(changes) {
51
42
  if (changes.hasOwnProperty('Statistic') && !changes['Statistic'].firstChange) {
52
- this.isX = changes['Statistic'].currentValue.hasOwnProperty('isX') ? changes['Statistic'].currentValue.isX : null;
53
- this.isY = changes['Statistic'].currentValue.hasOwnProperty('isY') ? changes['Statistic'].currentValue.isY : null;
54
43
  this.aggregations = changes['Statistic'].currentValue.hasOwnProperty('aggregations') ? changes['Statistic'].currentValue.aggregations : null;
55
44
  this.operatorsGroupBy = changes['Statistic'].currentValue.hasOwnProperty('operatorsGroupBy') ? changes['Statistic'].currentValue.operatorsGroupBy : null;
56
45
  }
@@ -70,7 +59,7 @@ export class NumericFilterTemplateComponent {
70
59
  this.filterChange.emit(statistic);
71
60
  }
72
61
  createStatistic() {
73
- if (this.aggregations != null && this.aggregations.length > 0) {
62
+ if ((this.aggregations != null && this.aggregations.length > 0) || this.operatorsGroupBy.length > 0) {
74
63
  this.visible = true;
75
64
  }
76
65
  var statistic = {
@@ -79,8 +68,6 @@ export class NumericFilterTemplateComponent {
79
68
  logicoperator: this.selectedLogicOperator,
80
69
  fieldtype: this.field.FieldType,
81
70
  visible: this.visible,
82
- isX: this.isX === undefined ? false : this.isX,
83
- isY: this.isY === undefined ? false : this.isY,
84
71
  aggregations: this.aggregations,
85
72
  operatorsGroupBy: this.operatorsGroupBy
86
73
  };
@@ -127,39 +114,26 @@ export class NumericFilterTemplateComponent {
127
114
  */
128
115
  changeVisibility() {
129
116
  this.visible = !this.visible;
130
- if (this.aggregations != null && this.aggregations.length > 0) {
117
+ if ((this.aggregations != null && this.aggregations.length > 0) || this.operatorsGroupBy.length > 0) {
131
118
  this.visible = true;
132
119
  }
133
120
  this.onFilterChange();
134
121
  }
135
- becomeTheCoord(theCoord) {
136
- if (theCoord == "X") {
137
- this.isY = false;
138
- this.isX = !this.isX;
139
- }
140
- if (theCoord == "Y") {
141
- this.isX = false;
142
- this.isY = !this.isY;
143
- }
144
- this.onFilterChange();
145
- }
146
122
  }
147
123
  NumericFilterTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFilterTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
- 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", showXY: "showXY", 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=\"coordinatesCol\" [hidden]=\"!showXY\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-primary': !isX , 'btn-success': isX }\" (click)=\"becomeTheCoord('X')\">X</button>\r\n <button class=\"btn\" [ngClass]=\"{'btn-primary': !isY , 'btn-success': isY }\" (click)=\"becomeTheCoord('Y')\">Y</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"] }] });
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"] }] });
149
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumericFilterTemplateComponent, decorators: [{
150
126
  type: Component,
151
- 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=\"coordinatesCol\" [hidden]=\"!showXY\">\r\n <button class=\"btn\" [ngClass]=\"{'btn-primary': !isX , 'btn-success': isX }\" (click)=\"becomeTheCoord('X')\">X</button>\r\n <button class=\"btn\" [ngClass]=\"{'btn-primary': !isY , 'btn-success': isY }\" (click)=\"becomeTheCoord('Y')\">Y</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"] }]
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"] }]
152
128
  }], ctorParameters: function () { return []; }, propDecorators: { field: [{
153
129
  type: Input
154
130
  }], record: [{
155
131
  type: Input
156
132
  }], Statistic: [{
157
133
  type: Input
158
- }], showXY: [{
159
- type: Input
160
134
  }], filterResultViewMode: [{
161
135
  type: Input
162
136
  }], filterChange: [{
163
137
  type: Output
164
138
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBb0MsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBUW5JLE1BQU0sT0FBTyw4QkFBOEI7SUE2QjNDO1FBekJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFDNUIsV0FBTSxHQUFZLElBQUksQ0FBQztRQUV0QixpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BFLG9C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cnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVxcE51bWVyaWNJbnB1dE1vZGUsIE51bWVyaWNNYXNrQ29uZmlnIH0gZnJvbSAnQGVxcHJvamVjdC9lcXAtbnVtZXJpYyc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBOdW1lcmljRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL251bWVyaWNGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IExvZ2ljT3BlcmF0b3JOdW1lcmljIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2xvZ2ljT3BlcmF0b3IubW9kZWwnO1xyXG5pbXBvcnQgeyBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIFN0YXRpc3RpYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9zdGF0aXN0aWMubW9kZWwnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlRmlsdGVyUmVzdWx0Vmlld01vZGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVGaWx0ZXJSZXN1bHRWaWV3TW9kZUVudW0ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdudW1lcmljLWZpbHRlci10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOdW1lcmljRmlsdGVyVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZDogTnVtZXJpY0ZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuICBASW5wdXQoKSBzaG93WFk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZpbHRlclJlc3VsdFZpZXdNb2RlOiBEeW5hbWljTW9kdWxlRmlsdGVyUmVzdWx0Vmlld01vZGVFbnVtO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGVxcE51bWVyaWNPcHRpb25zOiBQYXJ0aWFsPE51bWVyaWNNYXNrQ29uZmlnPiA9IHt9O1xyXG4gIGxvZ2ljT3BlcmF0b3JOdW1lcmljID0gTG9naWNPcGVyYXRvck51bWVyaWM7XHJcbiAgc2VsZWN0ZWRMb2dpY09wZXJhdG9yOiBMb2dpY09wZXJhdG9yTnVtZXJpYyA9IExvZ2ljT3BlcmF0b3JOdW1lcmljWycnXTtcclxuICBhY3RpdmVDb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbi8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG5GaWVsZHN0eWxlT2JqOiBhbnk7XHJcbkxhYmVsc3R5bGVPYmo6IGFueTtcclxuXHJcbmlzWDogYm9vbGVhbjtcclxuaXNZOiBib29sZWFuO1xyXG5cclxuYWdncmVnYXRpb25zOiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT4gfCBBcnJheTxOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbmFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG5vcGVyYXRvcnNHcm91cEJ5OiBBcnJheTxOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bT47XHJcbm9wZXJhdG9yc0dyb3VwQnlFbnVtID0gTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW07XHJcblxyXG5jb25zdHJ1Y3RvcigpIHtcclxufVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIGlmICh0aGlzLlN0YXRpc3RpYyAhPSBudWxsKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRMb2dpY09wZXJhdG9yID0gKHRoaXMuU3RhdGlzdGljLmxvZ2ljb3BlcmF0b3IgYXMgTG9naWNPcGVyYXRvck51bWVyaWMpO1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuU3RhdGlzdGljLnZhbHVlO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdGhpcy5TdGF0aXN0aWMudmlzaWJsZTtcclxuICAgIHRoaXMuaXNYID0gdGhpcy5TdGF0aXN0aWMuaXNYO1xyXG4gICAgdGhpcy5pc1kgPSB0aGlzLlN0YXRpc3RpYy5pc1k7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuU3RhdGlzdGljLmFnZ3JlZ2F0aW9ucztcclxuICAgIHRoaXMub3BlcmF0b3JzR3JvdXBCeSA9IHRoaXMuU3RhdGlzdGljLm9wZXJhdG9yc0dyb3VwQnk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNYID09PSB1bmRlZmluZWQpeyB0aGlzLmlzWCA9IGZhbHNlOyB9XHJcbiAgICBpZiAodGhpcy5pc1kgPT09IHVuZGVmaW5lZCl7IHRoaXMuaXNZID0gZmFsc2U7IH0gICBcclxuICB9ICBcclxuICBcclxuICB0aGlzLmNvbmZpZ3VyZUVxcE51bWVyaWNPcHRpb25zKCk7XHJcbiAgdGhpcy5jb25maWd1cmVDb250cm9sbGVycygpO1xyXG4gIHRoaXMuaW5pdFN0eWxlcygpO1xyXG5cclxufVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdTdGF0aXN0aWMnKSAmJiAhY2hhbmdlc1snU3RhdGlzdGljJ10uZmlyc3RDaGFuZ2Upe1xyXG4gICAgICAgIHRoaXMuaXNYID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdpc1gnKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5pc1ggOiBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNZID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdpc1knKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5pc1kgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdhZ2dyZWdhdGlvbnMnKSA/IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5hZ2dyZWdhdGlvbnMgOiBudWxsO1xyXG4gICAgICAgIHRoaXMub3BlcmF0b3JzR3JvdXBCeSA9IGNoYW5nZXNbJ1N0YXRpc3RpYyddLmN1cnJlbnRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3JzR3JvdXBCeScpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLm9wZXJhdG9yc0dyb3VwQnkgOiBudWxsO1xyXG4gICAgICB9ICAgXHJcbiAgfSAgXHJcblxyXG4gIC8vRnVuemlvbmUgcGVyIHBhcnNhcmUgaWwgY2FtcG8gc3R5bGVjc3MgZGVsbCdvZ2dldHRvIGZpZWxkIGVkIGFwcGxpY2FybG8gYWxsJ2h0bWxcclxuICBpbml0U3R5bGVzKCkge1xyXG4gICAgaWYodGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTICE9IHVuZGVmaW5lZCkgICBcclxuICAgIHRoaXMuRmllbGRzdHlsZU9iaj0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MpO1xyXG4gICAgaWYodGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTICE9IHVuZGVmaW5lZCkgICBcclxuICAgIHRoaXMuTGFiZWxzdHlsZU9iaiA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTKTtcclxufVxyXG5cclxuLyoqXHJcbiogTWV0b2RvIHBlciBlbWV0dGVyZSBsJ2V2ZW50byBjaGUgaWwgdmFsb3JlIGRlbCByZWNvcmQgw6ggY2FtYmlhdG8uXHJcbiovXHJcbm9uRmlsdGVyQ2hhbmdlKCkgeyAgIFxyXG4gICAgdmFyIHN0YXRpc3RpYyA9IHRoaXMuY3JlYXRlU3RhdGlzdGljKCk7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHN0YXRpc3RpYyk7XHJcbn1cclxuXHJcbmNyZWF0ZVN0YXRpc3RpYygpe1xyXG4gIGlmICh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XHJcblxyXG4gIHZhciBzdGF0aXN0aWM6IFN0YXRpc3RpYyA9IHtcclxuICAgIGtleTogdGhpcy5maWVsZC5OYW1lLFxyXG4gICAgdmFsdWU6IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0sXHJcbiAgICBsb2dpY29wZXJhdG9yOiB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvcixcclxuICAgIGZpZWxkdHlwZTogdGhpcy5maWVsZC5GaWVsZFR5cGUsXHJcbiAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICBpc1g6IHRoaXMuaXNYID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IHRoaXMuaXNYLFxyXG4gICAgaXNZOiB0aGlzLmlzWSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB0aGlzLmlzWSxcclxuICAgIGFnZ3JlZ2F0aW9uczogdGhpcy5hZ2dyZWdhdGlvbnMsXHJcbiAgICBvcGVyYXRvcnNHcm91cEJ5OiB0aGlzLm9wZXJhdG9yc0dyb3VwQnlcclxuICB9XHJcblxyXG4gIHJldHVybiBzdGF0aXN0aWM7XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgZXFwLW51bWVyaWNcclxuKi9cclxucHJpdmF0ZSBjb25maWd1cmVFcXBOdW1lcmljT3B0aW9ucygpIHtcclxuXHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5zdWZmaXggPSB0aGlzLmZpZWxkLk1lYXN1cmVVbml0ID8gXCIgIFwiK3RoaXMuZmllbGQuTWVhc3VyZVVuaXQrXCIgIFwiIDogXCJcIjtcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnByZWZpeCA9IHRoaXMuZmllbGQuQ3VycmVuY3lTeW1ib2wgPyB0aGlzLmZpZWxkLkN1cnJlbmN5U3ltYm9sK1wiIFwiIDogXCJcIjtcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLmlucHV0TW9kZSA9IHRoaXMuZmllbGQuQ3VycmVuY3lTeW1ib2wgPyBFcXBOdW1lcmljSW5wdXRNb2RlLkZJTkFOQ0lBTCA6IEVxcE51bWVyaWNJbnB1dE1vZGUuTkFUVVJBTDtcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLmFsbG93TmVnYXRpdmU9dHJ1ZTtcclxuICBpZiAodGhpcy5maWVsZC5EZWNpbWFsU2VwYXJhdG9yICE9IG51bGwgJiYgdGhpcy5maWVsZC5EZWNpbWFsU2VwYXJhdG9yICE9IHVuZGVmaW5lZClcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLmRlY2ltYWwgPSB0aGlzLmZpZWxkLkRlY2ltYWxTZXBhcmF0b3I7XHJcbiAgZWxzZVxyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuZGVjaW1hbD1cIi5cIjtcclxuICBpZiAodGhpcy5maWVsZC5UaG91c2FuZHNTZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLlRob3VzYW5kc1NlcGFyYXRvciAhPSB1bmRlZmluZWQpXHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy50aG91c2FuZHMgPSB0aGlzLmZpZWxkLlRob3VzYW5kc1NlcGFyYXRvcjtcclxuICBpZih0aGlzLmZpZWxkLklzSW50ZWdlcj09IGZhbHNlKXtcclxuICAgIGlmICh0aGlzLmZpZWxkLkRlY2ltYWxQcmVjaXNpb24gIT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRlY2ltYWxQcmVjaXNpb24gIT0gdW5kZWZpbmVkKSB7IHRoaXMuZXFwTnVtZXJpY09wdGlvbnMucHJlY2lzaW9uID0gdGhpcy5maWVsZC5EZWNpbWFsUHJlY2lzaW9uOyB9XHJcbiAgICBlbHNlIHsgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5wcmVjaXNpb24gPSAyOyB9XHJcbiAgfWVsc2V7XHJcbiAgICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnByZWNpc2lvbiA9IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuKiBNZXRvZG8gZGkgYWdnaXVudGEgZGVpIHZhbGlkYXRvciBkZWxsJ2lucHV0XHJcbiovXHJcbnByaXZhdGUgY29uZmlndXJlQ29udHJvbGxlcnMoKSB7XHJcbiAgdGhpcy52YWxpZGF0b3JzQXJyYXkgPSBbXTtcclxuICBpZiAodGhpcy5maWVsZC5NaW5WYWx1ZSAhPSBudWxsICYmIHRoaXMuZmllbGQuTWluVmFsdWUgIT0gdW5kZWZpbmVkKVxyXG4gIHRoaXMudmFsaWRhdG9yc0FycmF5LnB1c2goVmFsaWRhdG9ycy5taW4odGhpcy5maWVsZC5NaW5WYWx1ZSkpO1xyXG4gIGlmICh0aGlzLmZpZWxkLk1heFZhbHVlICE9IG51bGwgJiYgdGhpcy5maWVsZC5NYXhWYWx1ZSAhPSB1bmRlZmluZWQpXHJcbiAgdGhpcy52YWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLm1heCh0aGlzLmZpZWxkLk1heFZhbHVlKSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXN0aW9uZSB2aXNpYmlsaXTDoFxyXG4gKi9cclxuXHJcbiAgcHVibGljIGNoYW5nZVZpc2liaWxpdHkoKXtcclxuICAgIHRoaXMudmlzaWJsZSA9ICF0aGlzLnZpc2libGU7XHJcbiAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmFnZ3JlZ2F0aW9ucy5sZW5ndGggPiAwKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG4gICAgdGhpcy5vbkZpbHRlckNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJlY29tZVRoZUNvb3JkKHRoZUNvb3JkOiBzdHJpbmcpe1xyXG4gICAgaWYgKHRoZUNvb3JkID09IFwiWFwiKXsgXHJcbiAgICAgIHRoaXMuaXNZID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNYID0gIXRoaXMuaXNYOyBcclxuICAgIH0gXHJcbiAgICBpZiAodGhlQ29vcmQgPT0gXCJZXCIpeyBcclxuICAgICAgdGhpcy5pc1ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1kgPSAhdGhpcy5pc1k7IFxyXG4gICAgfSBcclxuICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UoKTtcclxuICB9XHJcblxyXG5cclxuICBcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd0NvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXNpYmxlQ29sXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZpc2libGVcIj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiF2aXNpYmxlXCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb29yZGluYXRlc0NvbFwiIFtoaWRkZW5dPVwiIXNob3dYWVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwieydidG4tcHJpbWFyeSc6ICFpc1ggLCAnYnRuLXN1Y2Nlc3MnOiBpc1ggfVwiIChjbGljayk9XCJiZWNvbWVUaGVDb29yZCgnWCcpXCI+WDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwieydidG4tcHJpbWFyeSc6ICFpc1kgLCAnYnRuLXN1Y2Nlc3MnOiBpc1kgfVwiIChjbGljayk9XCJiZWNvbWVUaGVDb29yZCgnWScpXCI+WTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwQnlDb2xcIj5cclxuICAgICAgICAgICAgPGVxcC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInT3BlcmF0b3JpIGRpIGNvbmZyb250bydcIlxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwib3BlcmF0b3JzR3JvdXBCeUVudW1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm9wZXJhdG9yc0dyb3VwQnlcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcclxuICAgICAgICAgICAgPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZUNvbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIiBbbmdTdHlsZV09XCJMYWJlbHN0eWxlT2JqXCI+IHt7ZmllbGQuRGVzY3JpcHRpb259fSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiBtYXRJbnB1dCBlcXBOdW1lcmljTWFzayBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLk5hbWVcIiBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInJlY29yZFtmaWVsZC5OYW1lXVwiIFtvcHRpb25zXT1cImVxcE51bWVyaWNPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwiZmllbGQuSXNJbnRlZ2VyID8gMSA6IG51bGxcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIiFmaWVsZC5Gb3JtRm9ybUdyb3VwLnZhbGlkICYmIGZpZWxkLkZvcm1Gb3JtR3JvdXAuY29udHJvbHNbZmllbGQuTmFtZV0udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluOiB7e2ZpZWxkLk1pblZhbHVlfX0gLSBNYXg6IHt7ZmllbGQuTWF4VmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3BlcmF0b3JDb2xcIj5cclxuICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImxvZ2ljT3BlcmF0b3JOdW1lcmljXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTG9naWNPcGVyYXRvclwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCI+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZ2dyZWdhdG9yQ29sXCI+XHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FnZ3JlZ2F6aW9uaSdcIlxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWdncmVnYXRpb25GdW5jdGlvbkVudW1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImFnZ3JlZ2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICA+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tc3RhdGlzdGljcy9maWx0ZXItdGVtcGxhdGVzL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXN0YXRpc3RpY3MvZmlsdGVyLXRlbXBsYXRlcy9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS9udW1lcmljLWZpbHRlci10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBb0MsNkJBQTZCLEVBQWEsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBUW5JLE1BQU0sT0FBTyw4QkFBOEI7SUF5QjNDO1FBckJXLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFFM0IsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwRSxvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1Qixz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QyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxTQUFTO1lBQ25FLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUFFO1FBQzlILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs0SEE3SFUsOEJBQThCO2dIQUE5Qiw4QkFBOEIsbVBDZjNDLCsxRUF5Q007NEZEMUJPLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSx5QkFBeUI7MEVBTTFCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXFwTnVtZXJpY0lucHV0TW9kZSwgTnVtZXJpY01hc2tDb25maWcgfSBmcm9tICdAZXFwcm9qZWN0L2VxcC1udW1lcmljJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgTG9naWNPcGVyYXRvck51bWVyaWMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvbG9naWNPcGVyYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgU3RhdGlzdGljIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3N0YXRpc3RpYy5tb2RlbCc7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVGaWx0ZXJSZXN1bHRWaWV3TW9kZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUZpbHRlclJlc3VsdFZpZXdNb2RlRW51bS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ251bWVyaWMtZmlsdGVyLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbnVtZXJpYy1maWx0ZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL251bWVyaWMtZmlsdGVyLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE51bWVyaWNGaWx0ZXJUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBOdW1lcmljRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgU3RhdGlzdGljOiBTdGF0aXN0aWMgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGZpbHRlclJlc3VsdFZpZXdNb2RlOiBEeW5hbWljTW9kdWxlRmlsdGVyUmVzdWx0Vmlld01vZGVFbnVtO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgdmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGVxcE51bWVyaWNPcHRpb25zOiBQYXJ0aWFsPE51bWVyaWNNYXNrQ29uZmlnPiA9IHt9O1xyXG4gIGxvZ2ljT3BlcmF0b3JOdW1lcmljID0gTG9naWNPcGVyYXRvck51bWVyaWM7XHJcbiAgc2VsZWN0ZWRMb2dpY09wZXJhdG9yOiBMb2dpY09wZXJhdG9yTnVtZXJpYyA9IExvZ2ljT3BlcmF0b3JOdW1lcmljWycnXTtcclxuICBhY3RpdmVDb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFN0YXRpc3RpYzogU3RhdGlzdGljID0gbnVsbDtcclxuXHJcbi8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG5GaWVsZHN0eWxlT2JqOiBhbnk7XHJcbkxhYmVsc3R5bGVPYmo6IGFueTtcclxuXHJcbmFnZ3JlZ2F0aW9uczogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+IHwgQXJyYXk8Tm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG5hZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSA9IE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtO1xyXG5cclxub3BlcmF0b3JzR3JvdXBCeTogQXJyYXk8TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0+O1xyXG5vcGVyYXRvcnNHcm91cEJ5RW51bSA9IE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtO1xyXG5cclxuY29uc3RydWN0b3IoKSB7XHJcbn1cclxuXHJcbm5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICBpZiAodGhpcy5TdGF0aXN0aWMgIT0gbnVsbCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkTG9naWNPcGVyYXRvciA9ICh0aGlzLlN0YXRpc3RpYy5sb2dpY29wZXJhdG9yIGFzIExvZ2ljT3BlcmF0b3JOdW1lcmljKTtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB0aGlzLlN0YXRpc3RpYy52YWx1ZTtcclxuICAgIHRoaXMudmlzaWJsZSA9IHRoaXMuU3RhdGlzdGljLnZpc2libGU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuU3RhdGlzdGljLmFnZ3JlZ2F0aW9ucztcclxuICAgIHRoaXMub3BlcmF0b3JzR3JvdXBCeSA9IHRoaXMuU3RhdGlzdGljLm9wZXJhdG9yc0dyb3VwQnk7IFxyXG4gIH0gIFxyXG4gIFxyXG4gIHRoaXMuY29uZmlndXJlRXFwTnVtZXJpY09wdGlvbnMoKTtcclxuICB0aGlzLmNvbmZpZ3VyZUNvbnRyb2xsZXJzKCk7XHJcbiAgdGhpcy5pbml0U3R5bGVzKCk7XHJcblxyXG59XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ1N0YXRpc3RpYycpICYmICFjaGFuZ2VzWydTdGF0aXN0aWMnXS5maXJzdENoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJ2FnZ3JlZ2F0aW9ucycpID8gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmFnZ3JlZ2F0aW9ucyA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnNHcm91cEJ5ID0gY2hhbmdlc1snU3RhdGlzdGljJ10uY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCdvcGVyYXRvcnNHcm91cEJ5JykgPyBjaGFuZ2VzWydTdGF0aXN0aWMnXS5jdXJyZW50VmFsdWUub3BlcmF0b3JzR3JvdXBCeSA6IG51bGw7XHJcbiAgICAgIH0gICBcclxuICB9ICBcclxuXHJcbiAgLy9GdW56aW9uZSBwZXIgcGFyc2FyZSBpbCBjYW1wbyBzdHlsZWNzcyBkZWxsJ29nZ2V0dG8gZmllbGQgZWQgYXBwbGljYXJsbyBhbGwnaHRtbFxyXG4gIGluaXRTdHlsZXMoKSB7XHJcbiAgICBpZih0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gdW5kZWZpbmVkKSAgIFxyXG4gICAgdGhpcy5GaWVsZHN0eWxlT2JqPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyk7XHJcbiAgICBpZih0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MgIT0gdW5kZWZpbmVkKSAgIFxyXG4gICAgdGhpcy5MYWJlbHN0eWxlT2JqID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MpO1xyXG59XHJcblxyXG4vKipcclxuKiBNZXRvZG8gcGVyIGVtZXR0ZXJlIGwnZXZlbnRvIGNoZSBpbCB2YWxvcmUgZGVsIHJlY29yZCDDqCBjYW1iaWF0by5cclxuKi9cclxub25GaWx0ZXJDaGFuZ2UoKSB7ICAgXHJcbiAgICB2YXIgc3RhdGlzdGljID0gdGhpcy5jcmVhdGVTdGF0aXN0aWMoKTtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoc3RhdGlzdGljKTtcclxufVxyXG5cclxuY3JlYXRlU3RhdGlzdGljKCl7XHJcbiAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8IHRoaXMub3BlcmF0b3JzR3JvdXBCeS5sZW5ndGggPiAwKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG5cclxuICB2YXIgc3RhdGlzdGljOiBTdGF0aXN0aWMgPSB7XHJcbiAgICBrZXk6IHRoaXMuZmllbGQuTmFtZSxcclxuICAgIHZhbHVlOiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLFxyXG4gICAgbG9naWNvcGVyYXRvcjogdGhpcy5zZWxlY3RlZExvZ2ljT3BlcmF0b3IsXHJcbiAgICBmaWVsZHR5cGU6IHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgdmlzaWJsZTogdGhpcy52aXNpYmxlLFxyXG4gICAgYWdncmVnYXRpb25zOiB0aGlzLmFnZ3JlZ2F0aW9ucyxcclxuICAgIG9wZXJhdG9yc0dyb3VwQnk6IHRoaXMub3BlcmF0b3JzR3JvdXBCeVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHN0YXRpc3RpYztcclxufVxyXG5cclxuLyoqXHJcbiogTWV0b2RvIHBlciBjb25maWd1cmFyZSBlcXAtbnVtZXJpY1xyXG4qL1xyXG5wcml2YXRlIGNvbmZpZ3VyZUVxcE51bWVyaWNPcHRpb25zKCkge1xyXG5cclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnN1ZmZpeCA9IHRoaXMuZmllbGQuTWVhc3VyZVVuaXQgPyBcIiAgXCIrdGhpcy5maWVsZC5NZWFzdXJlVW5pdCtcIiAgXCIgOiBcIlwiO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMucHJlZml4ID0gdGhpcy5maWVsZC5DdXJyZW5jeVN5bWJvbCA/IHRoaXMuZmllbGQuQ3VycmVuY3lTeW1ib2wrXCIgXCIgOiBcIlwiO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuaW5wdXRNb2RlID0gdGhpcy5maWVsZC5DdXJyZW5jeVN5bWJvbCA/IEVxcE51bWVyaWNJbnB1dE1vZGUuRklOQU5DSUFMIDogRXFwTnVtZXJpY0lucHV0TW9kZS5OQVRVUkFMO1xyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuYWxsb3dOZWdhdGl2ZT10cnVlO1xyXG4gIGlmICh0aGlzLmZpZWxkLkRlY2ltYWxTZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRlY2ltYWxTZXBhcmF0b3IgIT0gdW5kZWZpbmVkKVxyXG4gIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMuZGVjaW1hbCA9IHRoaXMuZmllbGQuRGVjaW1hbFNlcGFyYXRvcjtcclxuICBlbHNlXHJcbiAgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5kZWNpbWFsPVwiLlwiO1xyXG4gIGlmICh0aGlzLmZpZWxkLlRob3VzYW5kc1NlcGFyYXRvciAhPSBudWxsICYmIHRoaXMuZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yICE9IHVuZGVmaW5lZClcclxuICB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnRob3VzYW5kcyA9IHRoaXMuZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yO1xyXG4gIGlmKHRoaXMuZmllbGQuSXNJbnRlZ2VyPT0gZmFsc2Upe1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRGVjaW1hbFByZWNpc2lvbiAhPSBudWxsICYmIHRoaXMuZmllbGQuRGVjaW1hbFByZWNpc2lvbiAhPSB1bmRlZmluZWQpIHsgdGhpcy5lcXBOdW1lcmljT3B0aW9ucy5wcmVjaXNpb24gPSB0aGlzLmZpZWxkLkRlY2ltYWxQcmVjaXNpb247IH1cclxuICAgIGVsc2UgeyB0aGlzLmVxcE51bWVyaWNPcHRpb25zLnByZWNpc2lvbiA9IDI7IH1cclxuICB9ZWxzZXtcclxuICAgIHRoaXMuZXFwTnVtZXJpY09wdGlvbnMucHJlY2lzaW9uID0gMDtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4qIE1ldG9kbyBkaSBhZ2dpdW50YSBkZWkgdmFsaWRhdG9yIGRlbGwnaW5wdXRcclxuKi9cclxucHJpdmF0ZSBjb25maWd1cmVDb250cm9sbGVycygpIHtcclxuICB0aGlzLnZhbGlkYXRvcnNBcnJheSA9IFtdO1xyXG4gIGlmICh0aGlzLmZpZWxkLk1pblZhbHVlICE9IG51bGwgJiYgdGhpcy5maWVsZC5NaW5WYWx1ZSAhPSB1bmRlZmluZWQpXHJcbiAgdGhpcy52YWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLmZpZWxkLk1pblZhbHVlKSk7XHJcbiAgaWYgKHRoaXMuZmllbGQuTWF4VmFsdWUgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLk1heFZhbHVlICE9IHVuZGVmaW5lZClcclxuICB0aGlzLnZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMubWF4KHRoaXMuZmllbGQuTWF4VmFsdWUpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdlc3Rpb25lIHZpc2liaWxpdMOgXHJcbiAqL1xyXG5cclxuICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eSgpe1xyXG4gICAgdGhpcy52aXNpYmxlID0gIXRoaXMudmlzaWJsZTtcclxuICAgICAgaWYgKCh0aGlzLmFnZ3JlZ2F0aW9ucyAhPSBudWxsICYmIHRoaXMuYWdncmVnYXRpb25zLmxlbmd0aCA+IDApIHx8IHRoaXMub3BlcmF0b3JzR3JvdXBCeS5sZW5ndGggPiAwKXsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxyXG4gICAgdGhpcy5vbkZpbHRlckNoYW5nZSgpO1xyXG4gIH1cclxuICBcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd0NvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXNpYmxlQ29sXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2J0bi1zdWNjZXNzJzogdmlzaWJsZSAsICdidG4tZGFuZ2VyJzogIXZpc2libGUgfVwiIChjbGljayk9XCJjaGFuZ2VWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZpc2libGVcIj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiF2aXNpYmxlXCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwQnlDb2xcIj5cclxuICAgICAgICAgICAgPGVxcC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInT3BlcmF0b3JpIGRpIGNvbmZyb250bydcIlxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwib3BlcmF0b3JzR3JvdXBCeUVudW1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIm9wZXJhdG9yc0dyb3VwQnlcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcclxuICAgICAgICAgICAgPjwvZXFwLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZUNvbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIiBbbmdTdHlsZV09XCJMYWJlbHN0eWxlT2JqXCI+IHt7ZmllbGQuRGVzY3JpcHRpb259fSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiBtYXRJbnB1dCBlcXBOdW1lcmljTWFzayBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLk5hbWVcIiBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInJlY29yZFtmaWVsZC5OYW1lXVwiIFtvcHRpb25zXT1cImVxcE51bWVyaWNPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwiZmllbGQuSXNJbnRlZ2VyID8gMSA6IG51bGxcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIiFmaWVsZC5Gb3JtRm9ybUdyb3VwLnZhbGlkICYmIGZpZWxkLkZvcm1Gb3JtR3JvdXAuY29udHJvbHNbZmllbGQuTmFtZV0udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluOiB7e2ZpZWxkLk1pblZhbHVlfX0gLSBNYXg6IHt7ZmllbGQuTWF4VmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3BlcmF0b3JDb2xcIj5cclxuICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImxvZ2ljT3BlcmF0b3JOdW1lcmljXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTG9naWNPcGVyYXRvclwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCI+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZ2dyZWdhdG9yQ29sXCI+XHJcbiAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FnZ3JlZ2F6aW9uaSdcIlxyXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWdncmVnYXRpb25GdW5jdGlvbkVudW1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImFnZ3JlZ2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICA+PC9lcXAtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=