@eqproject/eqp-dynamic-module 2.11.4 → 2.11.6

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/README.md +4 -0
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +143 -13
  3. package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +76 -3
  4. package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +74 -13
  5. package/esm2020/lib/components/private/dynamic-module-field-extra-fix/dynamic-module-field-extra-fix.component.mjs +16 -4
  6. package/esm2020/lib/components/private/field-graphics-editor/field-graphics-editor.component.mjs +735 -0
  7. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +4 -4
  8. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +3 -3
  9. package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +3 -3
  10. package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +3 -3
  11. package/esm2020/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +3 -3
  12. package/esm2020/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +3 -3
  13. package/esm2020/lib/directives/speech-to-text/speech-to-text.directive.mjs +7 -2
  14. package/esm2020/lib/eqp-dynamic-module.module.mjs +4 -1
  15. package/esm2020/lib/utils/css-color.mjs +101 -0
  16. package/esm2020/lib/utils/css-declarations.mjs +119 -0
  17. package/esm2020/lib/utils/css-property-catalog.mjs +134 -0
  18. package/esm2020/lib/utils/field-style-catalog.mjs +491 -0
  19. package/esm2020/public-api.mjs +6 -1
  20. package/fesm2015/eqproject-eqp-dynamic-module.mjs +1947 -75
  21. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  22. package/fesm2020/eqproject-eqp-dynamic-module.mjs +1912 -82
  23. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  24. package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +39 -0
  25. package/lib/components/private/add-form-field/add-form-field.component.d.ts +19 -0
  26. package/lib/components/private/add-formula-field/add-formula-field.component.d.ts +5 -1
  27. package/lib/components/private/field-graphics-editor/field-graphics-editor.component.d.ts +192 -0
  28. package/lib/directives/speech-to-text/speech-to-text.directive.d.ts +3 -1
  29. package/lib/eqp-dynamic-module.module.d.ts +66 -65
  30. package/lib/utils/css-color.d.ts +15 -0
  31. package/lib/utils/css-declarations.d.ts +23 -0
  32. package/lib/utils/css-property-catalog.d.ts +36 -0
  33. package/lib/utils/field-style-catalog.d.ts +130 -0
  34. package/package.json +1 -1
  35. package/public-api.d.ts +5 -0
@@ -18,7 +18,19 @@ export class DynamicModuleFieldExtraFixComponent {
18
18
  this.loaded = false;
19
19
  }
20
20
  ngOnInit() {
21
- this.FieldExtraValues = this.form.FldExtraConfigValues.find(x => x.FieldConfigCode == this.fieldExtraConfig.FieldConfigCode && (x.FieldConfigParentFieldCode == this.field.Name || x.FieldConfigParentFieldCode === undefined));
21
+ this.FieldExtraValues = (this.form.FldExtraConfigValues ?? []).find(x => x.FieldConfigCode == this.fieldExtraConfig.FieldConfigCode && (x.FieldConfigParentFieldCode == this.field.Name || x.FieldConfigParentFieldCode === undefined));
22
+ // Su un campo appena aggiunto la voce può non esistere ancora (configureFieldsExtra gira
23
+ // in ngOnInit della dialog, quando il tipo non è ancora stato scelto): senza questa
24
+ // creazione le righe sotto andavano in errore e il resto della dialog non veniva disegnato.
25
+ if (!this.FieldExtraValues) {
26
+ this.FieldExtraValues = new FieldExtraValues();
27
+ this.FieldExtraValues.FieldConfigCode = this.fieldExtraConfig.FieldConfigCode;
28
+ this.FieldExtraValues.FieldConfigParentFieldCode = this.field?.Name;
29
+ if (this.form.FldExtraConfigValues == null) {
30
+ this.form.FldExtraConfigValues = new Array();
31
+ }
32
+ this.form.FldExtraConfigValues.push(this.FieldExtraValues);
33
+ }
22
34
  if (this.fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano']) {
23
35
  this.FieldExtraValues.FieldConfigValue = this.FieldExtraValues.FieldConfigValue == "false" || !this.FieldExtraValues.FieldConfigValue ? false : true;
24
36
  }
@@ -32,10 +44,10 @@ export class DynamicModuleFieldExtraFixComponent {
32
44
  }
33
45
  }
34
46
  DynamicModuleFieldExtraFixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldExtraFixComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
35
- DynamicModuleFieldExtraFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldExtraFixComponent, selector: "dynamic-module-field-extra-fix", inputs: { fieldExtraConfig: "fieldExtraConfig", form: "form", field: "field", endPointConfiguration: "endPointConfiguration" }, outputs: { configValueChange: "configValueChange" }, ngImport: i0, template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i7.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }] });
47
+ DynamicModuleFieldExtraFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldExtraFixComponent, selector: "dynamic-module-field-extra-fix", inputs: { fieldExtraConfig: "fieldExtraConfig", form: "form", field: "field", endPointConfiguration: "endPointConfiguration" }, outputs: { configValueChange: "configValueChange" }, ngImport: i0, template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i7.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }] });
36
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldExtraFixComponent, decorators: [{
37
49
  type: Component,
38
- args: [{ selector: 'dynamic-module-field-extra-fix', template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>" }]
50
+ args: [{ selector: 'dynamic-module-field-extra-fix', template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>" }]
39
51
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }]; }, propDecorators: { fieldExtraConfig: [{
40
52
  type: Input
41
53
  }], form: [{
@@ -47,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
47
59
  }], configValueChange: [{
48
60
  type: Output
49
61
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzVGLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxtQ0FBbUM7SUFjOUMsWUFDVSxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFSL0Isc0JBQWlCLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRW5HLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLHFCQUFnQixHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDNUQsV0FBTSxHQUFZLEtBQUssQ0FBQztJQUtyQixDQUFDO0lBRUosUUFBUTtRQUVOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsMEJBQTBCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVoTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFDO1lBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0SjtRQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDM0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1NBQ2xELENBQUMsQ0FBQztJQUNQLENBQUM7O2lJQWxDVSxtQ0FBbUM7cUhBQW5DLG1DQUFtQywyUENaaEQsKzlCQTJCTTs0RkRmTyxtQ0FBbUM7a0JBTC9DLFNBQVM7K0JBQ0UsZ0NBQWdDO3lHQU1qQyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUksaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRFeHRyYUNvbmZpZywgRmllbGRFeHRyYVZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maWVsZEV4dHJhQ29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2R5bmFtaWMtbW9kdWxlLWZpZWxkLWV4dHJhLWZpeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWV4dHJhLWZpeC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2R1bGVGaWVsZEV4dHJhRml4Q29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgZmllbGRFeHRyYUNvbmZpZzogRmllbGRFeHRyYUNvbmZpZztcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcblxyXG4gIEBPdXRwdXQoKSBjb25maWdWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEZpZWxkRXh0cmFWYWx1ZXM+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWVsZEV4dHJhVmFsdWVzPigpO1xyXG5cclxuICBGaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuICBGaWVsZEV4dHJhVmFsdWVzOiBGaWVsZEV4dHJhVmFsdWVzID0gbmV3IEZpZWxkRXh0cmFWYWx1ZXMoKTtcclxuICBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3JtRXh0cmFHcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXJcclxuICApIHt9ICBcclxuXHJcbiAgbmdPbkluaXQoKXtcclxuXHJcbiAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMgPSB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMuZmluZCh4ID0+IHguRmllbGRDb25maWdDb2RlID09IHRoaXMuZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ0NvZGUgJiYgKHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT0gdGhpcy5maWVsZC5OYW1lIHx8IHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT09IHVuZGVmaW5lZCkpO1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ10pe1xyXG4gICAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZSA9IHRoaXMuRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlID09IFwiZmFsc2VcIiB8fCAhdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWUgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWd1cmVGb3JtKCk7XHJcbiAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25maWd1cmVGb3JtKCl7XHJcbiAgICAgIHRoaXMuZm9ybUV4dHJhR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBlbGVtZW50OiBbdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVdXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiXHJcblxyXG48ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUV4dHJhR3JvdXBcIj5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBkaSB0ZXN0byddICYmIGxvYWRlZFwiPlxyXG4gICAgICA8bWF0LWxhYmVsIGNsYXNzPVwicHQtMVwiPlxyXG4gICAgICAgIHt7IGZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdMYWJlbCB9fVxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidlbGVtZW50J1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJGaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIlxyXG4gICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgIFNwZWVjaFRvVGV4dFxyXG4gICAgICAgIFsoYmluZGVkVGV4dCldPVwiRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIG5hbWU9XCJtaWNyb3Bob25lXCI+PC90bXctaWNvbj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cImZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ10gJiYgbG9hZGVkXCJcclxuICBbZm9ybUNvbnRyb2xOYW1lXT1cIidlbGVtZW50J1wiXHJcbiAgWyhuZ01vZGVsKV09XCJGaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVcIj5cclxuICB7eyBmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnTGFiZWwgfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG48L2Rpdj4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzVGLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxtQ0FBbUM7SUFjOUMsWUFDVSxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFSL0Isc0JBQWlCLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRW5HLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLHFCQUFnQixHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDNUQsV0FBTSxHQUFZLEtBQUssQ0FBQztJQUtyQixDQUFDO0lBRUosUUFBUTtRQUVOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQywwQkFBMEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXhPLHlGQUF5RjtRQUN6RixvRkFBb0Y7UUFDcEYsNEZBQTRGO1FBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7WUFDOUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEtBQUssRUFBb0IsQ0FBQzthQUFFO1lBQy9HLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBQztZQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdEo7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNsRCxDQUFDLENBQUM7SUFDUCxDQUFDOztpSUE3Q1UsbUNBQW1DO3FIQUFuQyxtQ0FBbUMsMlBDWmhELDRrQ0E2Qk07NEZEakJPLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxnQ0FBZ0M7eUdBTWpDLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnLCBGaWVsZEV4dHJhVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkRXh0cmFDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXguY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY01vZHVsZUZpZWxkRXh0cmFGaXhDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZEV4dHJhQ29uZmlnOiBGaWVsZEV4dHJhQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgZmllbGQ6IEJhc2VGaWVsZDtcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpIGNvbmZpZ1ZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmllbGRFeHRyYVZhbHVlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkRXh0cmFWYWx1ZXM+KCk7XHJcblxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIEZpZWxkRXh0cmFWYWx1ZXM6IEZpZWxkRXh0cmFWYWx1ZXMgPSBuZXcgRmllbGRFeHRyYVZhbHVlcygpO1xyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1FeHRyYUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxyXG4gICkge30gIFxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG5cclxuICAgIHRoaXMuRmllbGRFeHRyYVZhbHVlcyA9ICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPz8gW10pLmZpbmQoeCA9PiB4LkZpZWxkQ29uZmlnQ29kZSA9PSB0aGlzLmZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdDb2RlICYmICh4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09IHRoaXMuZmllbGQuTmFtZSB8fCB4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09PSB1bmRlZmluZWQpKTtcclxuXHJcbiAgICAvLyBTdSB1biBjYW1wbyBhcHBlbmEgYWdnaXVudG8gbGEgdm9jZSBwdcOyIG5vbiBlc2lzdGVyZSBhbmNvcmEgKGNvbmZpZ3VyZUZpZWxkc0V4dHJhIGdpcmFcclxuICAgIC8vIGluIG5nT25Jbml0IGRlbGxhIGRpYWxvZywgcXVhbmRvIGlsIHRpcG8gbm9uIMOoIGFuY29yYSBzdGF0byBzY2VsdG8pOiBzZW56YSBxdWVzdGFcclxuICAgIC8vIGNyZWF6aW9uZSBsZSByaWdoZSBzb3R0byBhbmRhdmFubyBpbiBlcnJvcmUgZSBpbCByZXN0byBkZWxsYSBkaWFsb2cgbm9uIHZlbml2YSBkaXNlZ25hdG8uXHJcbiAgICBpZiAoIXRoaXMuRmllbGRFeHRyYVZhbHVlcykge1xyXG4gICAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMgPSBuZXcgRmllbGRFeHRyYVZhbHVlcygpO1xyXG4gICAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdDb2RlID0gdGhpcy5maWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnQ29kZTtcclxuICAgICAgdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID0gdGhpcy5maWVsZD8uTmFtZTtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsKSB7IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IG5ldyBBcnJheTxGaWVsZEV4dHJhVmFsdWVzPigpOyB9XHJcbiAgICAgIHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5wdXNoKHRoaXMuRmllbGRFeHRyYVZhbHVlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ1R5cGUgPT0gRmllbGRUeXBlRW51bVsnQm9vbGVhbm8nXSl7XHJcbiAgICAgIHRoaXMuRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlID0gdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWUgPT0gXCJmYWxzZVwiIHx8ICF0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbmZpZ3VyZUZvcm0oKTtcclxuICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZUZvcm0oKXtcclxuICAgICAgdGhpcy5mb3JtRXh0cmFHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGVsZW1lbnQ6IFt0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZV1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuXHJcbjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtRXh0cmFHcm91cFwiPlxyXG5cclxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAqbmdJZj1cImZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ10gJiYgbG9hZGVkXCI+XHJcbiAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJwdC0xXCI+XHJcbiAgICAgICAge3sgZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ0xhYmVsIH19XHJcbiAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2VsZW1lbnQnXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cIkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiXHJcbiAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgU3BlZWNoVG9UZXh0XHJcbiAgICAgICAgI21pY1NwZWVjaD1cInNwZWVjaFRvVGV4dFwiXHJcbiAgICAgICAgWyhiaW5kZWRUZXh0KV09XCJGaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVcIlxyXG4gICAgICAgIFt2YXJpYW50XT1cIm1pY1NwZWVjaC5pc0xpc3RlbmluZyA/ICdmaWxsZWQnIDogJ291dGxpbmUnXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIG5hbWU9XCJtaWNyb3Bob25lXCI+PC90bXctaWNvbj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cImZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ10gJiYgbG9hZGVkXCJcclxuICBbZm9ybUNvbnRyb2xOYW1lXT1cIidlbGVtZW50J1wiXHJcbiAgWyhuZ01vZGVsKV09XCJGaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVcIj5cclxuICB7eyBmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnTGFiZWwgfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG48L2Rpdj4iXX0=