@openziti/ziti-console-lib 0.6.3 → 0.6.5

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 (85) hide show
  1. package/assets/styles/global.scss +130 -5
  2. package/assets/styles/ziti.css +2 -2
  3. package/esm2022/lib/features/config-editor/config-editor.component.mjs +76 -15
  4. package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +7 -3
  5. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +22 -1
  6. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +10 -9
  7. package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +2 -2
  8. package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +4 -1
  9. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +28 -6
  10. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +102 -39
  11. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +33 -8
  12. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +9 -5
  13. package/esm2022/lib/features/json-view/json-view.component.mjs +3 -3
  14. package/esm2022/lib/features/messaging/growler.component.mjs +4 -4
  15. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +33 -4
  16. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -4
  17. package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -1
  18. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +7 -1
  19. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +10 -3
  20. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +7 -1
  21. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +2 -2
  22. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -17
  23. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
  24. package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +22 -32
  25. package/esm2022/lib/pages/identities/identities-page.component.mjs +2 -2
  26. package/esm2022/lib/pages/identities/identities-page.service.mjs +19 -30
  27. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +2 -2
  28. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +3 -18
  29. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -3
  30. package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -17
  31. package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
  32. package/esm2022/lib/pages/services/services-page.service.mjs +9 -17
  33. package/esm2022/lib/services/schema.service.mjs +2 -2
  34. package/esm2022/lib/services/settings-service.class.mjs +2 -2
  35. package/esm2022/lib/shared/list-page-component.class.mjs +17 -2
  36. package/esm2022/lib/shared/list-page-service.class.mjs +22 -4
  37. package/esm2022/lib/version.mjs +2 -2
  38. package/fesm2022/openziti-ziti-console-lib.mjs +425 -220
  39. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  40. package/lib/features/config-editor/config-editor.component.d.ts +7 -3
  41. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  42. package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +2 -0
  43. package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -1
  44. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +5 -0
  45. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -1
  46. package/lib/features/dynamic-widgets/number/number-input.component.d.ts +2 -0
  47. package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -1
  48. package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +1 -0
  49. package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -1
  50. package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +8 -6
  51. package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -1
  52. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +9 -2
  53. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -1
  54. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +4 -1
  55. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
  56. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +2 -0
  57. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -1
  58. package/lib/features/json-view/json-view.component.d.ts +2 -2
  59. package/lib/features/json-view/json-view.component.d.ts.map +1 -1
  60. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +3 -0
  61. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  62. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  63. package/lib/features/qr-code/qr-code.component.d.ts.map +1 -1
  64. package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -1
  65. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
  66. package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
  67. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -2
  68. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +1 -1
  69. package/lib/pages/edge-routers/edge-routers-page.service.d.ts +5 -3
  70. package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
  71. package/lib/pages/identities/identities-page.service.d.ts +4 -2
  72. package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
  73. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -2
  74. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +1 -1
  75. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  76. package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -2
  77. package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -1
  78. package/lib/pages/services/services-page.service.d.ts +4 -2
  79. package/lib/pages/services/services-page.service.d.ts.map +1 -1
  80. package/lib/services/settings-service.class.d.ts +1 -1
  81. package/lib/shared/list-page-component.class.d.ts +2 -0
  82. package/lib/shared/list-page-component.class.d.ts.map +1 -1
  83. package/lib/shared/list-page-service.class.d.ts +6 -0
  84. package/lib/shared/list-page-service.class.d.ts.map +1 -1
  85. package/package.json +1 -1
@@ -1,16 +1,17 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Subject } from "rxjs";
3
- import { debounce } from "lodash";
3
+ import { debounce, defer } from "lodash";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/tooltip";
7
8
  class SelectorInputComponent {
8
9
  constructor() {
9
10
  this._fieldName = 'Field Label';
10
11
  this._idName = 'fieldname';
11
12
  this._valueList = [];
12
13
  this.listIsObject = false;
13
- this.fieldValue = '';
14
+ this.hideSelect = false;
14
15
  this.placeholder = '';
15
16
  this.parentage = [];
16
17
  this.labelColor = '#000000';
@@ -18,74 +19,136 @@ class SelectorInputComponent {
18
19
  this.error = '';
19
20
  this.fieldValueChange = new EventEmitter();
20
21
  this.valueChange = new Subject();
22
+ this._isValid = true;
21
23
  }
22
24
  set fieldName(name) {
23
25
  this._fieldName = name;
24
26
  this._idName = name.replace(/\s/g, '').toLowerCase();
25
27
  }
28
+ set fieldValue(val) {
29
+ this._fieldValue = val;
30
+ }
31
+ get fieldValue() {
32
+ return this._fieldValue;
33
+ }
26
34
  set valueList(list) {
27
35
  this.listIsObject = list?.length > 0 && typeof list[0] !== 'string';
28
36
  this._valueList = list;
29
- list.forEach(val => {
30
- if (val.default)
31
- this.fieldValue = val;
37
+ let valToSet;
38
+ list.forEach(item => {
39
+ if (item.default) {
40
+ valToSet = item.value;
41
+ }
32
42
  });
43
+ valToSet = valToSet || this.fieldValue;
44
+ this.reInitSelect();
33
45
  }
34
46
  ;
47
+ setIsValid(isValid) {
48
+ this._isValid = isValid;
49
+ }
35
50
  selected() {
36
51
  debounce(() => {
52
+ if (this.fieldValue === 'undefined') {
53
+ this.fieldValue = undefined;
54
+ }
37
55
  this.fieldValueChange.emit(this.fieldValue);
38
56
  this.valueChange.next(this.fieldValue);
39
57
  }, 500)();
40
58
  }
59
+ reInitSelect() {
60
+ this.hideSelect = true;
61
+ defer(() => {
62
+ this.hideSelect = false;
63
+ });
64
+ }
41
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectorInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectorInputComponent, selector: "lib-selector-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", valueList: "valueList", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
43
- <div [ngClass]="fieldClass">
44
- <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
45
- <select id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
46
- class="jsonEntry"
47
- [ngClass]="{'error': error}"
48
- [(ngModel)]="fieldValue" (change)="selected()">
49
- <option value="" *ngIf="placeholder">{{placeholder}}</option>
50
- <ng-container *ngIf="!listIsObject">
51
- <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
52
- </ng-container>
53
- <ng-container *ngIf="listIsObject">
54
- <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
55
- </ng-container>
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectorInputComponent, selector: "lib-selector-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", helpText: "helpText", placeholder: "placeholder", parentage: "parentage", valueList: "valueList", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
67
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="selector-input-container">
68
+ <div class="label-container">
69
+ <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
70
+ <div
71
+ *ngIf="helpText"
72
+ class="form-field-info infoicon"
73
+ matTooltip="{{helpText}}"
74
+ matTooltipPosition="above"
75
+ matTooltipClass="wide-tooltip"
76
+ ></div>
77
+ </div>
78
+ <select
79
+ *ngIf="!hideSelect"
80
+ id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
81
+ class="jsonEntry"
82
+ [ngClass]="{'error': error}"
83
+ [(ngModel)]="fieldValue"
84
+ (change)="selected()"
85
+ >
86
+ <option [value]="undefined" *ngIf="placeholder">{{placeholder}}</option>
87
+ <ng-container *ngIf="!listIsObject">
88
+ <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
89
+ </ng-container>
90
+ <ng-container *ngIf="listIsObject">
91
+ <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
92
+ </ng-container>
93
+ </select>
94
+ <select
95
+ *ngIf="hideSelect"
96
+ class="placeholder-select"
97
+ [ngClass]="{'error': error}"
98
+ [(ngModel)]="fieldValue"
99
+ >
56
100
  </select>
57
101
  <div *ngIf="error" class="error">{{error}}</div>
58
102
  </div>
59
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
103
+ `, isInline: true, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
60
104
  }
61
105
  export { SelectorInputComponent };
62
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectorInputComponent, decorators: [{
63
107
  type: Component,
64
- args: [{
65
- selector: 'lib-selector-input',
66
- template: `
67
- <div [ngClass]="fieldClass">
68
- <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
69
- <select id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
70
- class="jsonEntry"
71
- [ngClass]="{'error': error}"
72
- [(ngModel)]="fieldValue" (change)="selected()">
73
- <option value="" *ngIf="placeholder">{{placeholder}}</option>
74
- <ng-container *ngIf="!listIsObject">
75
- <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
76
- </ng-container>
77
- <ng-container *ngIf="listIsObject">
78
- <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
79
- </ng-container>
108
+ args: [{ selector: 'lib-selector-input', template: `
109
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="selector-input-container">
110
+ <div class="label-container">
111
+ <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
112
+ <div
113
+ *ngIf="helpText"
114
+ class="form-field-info infoicon"
115
+ matTooltip="{{helpText}}"
116
+ matTooltipPosition="above"
117
+ matTooltipClass="wide-tooltip"
118
+ ></div>
119
+ </div>
120
+ <select
121
+ *ngIf="!hideSelect"
122
+ id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
123
+ class="jsonEntry"
124
+ [ngClass]="{'error': error}"
125
+ [(ngModel)]="fieldValue"
126
+ (change)="selected()"
127
+ >
128
+ <option [value]="undefined" *ngIf="placeholder">{{placeholder}}</option>
129
+ <ng-container *ngIf="!listIsObject">
130
+ <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
131
+ </ng-container>
132
+ <ng-container *ngIf="listIsObject">
133
+ <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
134
+ </ng-container>
135
+ </select>
136
+ <select
137
+ *ngIf="hideSelect"
138
+ class="placeholder-select"
139
+ [ngClass]="{'error': error}"
140
+ [(ngModel)]="fieldValue"
141
+ >
80
142
  </select>
81
143
  <div *ngIf="error" class="error">{{error}}</div>
82
144
  </div>
83
- `
84
- }]
145
+ `, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"] }]
85
146
  }], propDecorators: { fieldName: [{
86
147
  type: Input
87
148
  }], fieldValue: [{
88
149
  type: Input
150
+ }], helpText: [{
151
+ type: Input
89
152
  }], placeholder: [{
90
153
  type: Input
91
154
  }], parentage: [{
@@ -101,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
101
164
  }], fieldValueChange: [{
102
165
  type: Output
103
166
  }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9zZWxlY3Rvci9zZWxlY3Rvci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFxQmEsc0JBQXNCO0lBckJuQztRQXNCRSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFDdEIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUtaLGVBQVUsR0FBTyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQVF6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0tBUXRDO0lBMUJDLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBSUQsSUFBYSxTQUFTLENBQUMsSUFBVztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUcsR0FBRyxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQU9GLFFBQVE7UUFDTixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0E5QlUsc0JBQXNCO21HQUF0QixzQkFBc0IsMlRBbkJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQlg7O1NBRVksc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBckJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQlg7aUJBQ0E7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZWxlY3Rvci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICA8bGFiZWwgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgPHNlbGVjdCBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIiAoY2hhbmdlKT1cInNlbGVjdGVkKClcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgKm5nSWY9XCJwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvb3B0aW9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxpc3RJc09iamVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG5hbWUgb2YgX3ZhbHVlTGlzdFwiIFt2YWx1ZV09XCJuYW1lXCI+e3tuYW1lfX08L29wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0SXNPYmplY3RcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIF92YWx1ZUxpc3RcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiPnt7ZGF0YS5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JJbnB1dENvbXBvbmVudCB7XG4gIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gIF92YWx1ZUxpc3Q6IGFueVtdID0gW107XG4gIGxpc3RJc09iamVjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgQElucHV0KCkgZmllbGRWYWx1ZTphbnkgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgdmFsdWVMaXN0KGxpc3Q6IGFueVtdKSB7XG4gICAgdGhpcy5saXN0SXNPYmplY3QgPSBsaXN0Py5sZW5ndGggPiAwICYmIHR5cGVvZiBsaXN0WzBdICE9PSAnc3RyaW5nJztcbiAgICB0aGlzLl92YWx1ZUxpc3QgPSBsaXN0O1xuICAgIGxpc3QuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgaWYodmFsLmRlZmF1bHQpIHRoaXMuZmllbGRWYWx1ZSA9IHZhbDtcbiAgICB9KTtcbiAgfTtcbiAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgc2VsZWN0ZWQoKSB7XG4gICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgdGhpcy5maWVsZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIH0sIDUwMCkoKTtcbiAgfVxufVxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9zZWxlY3Rvci9zZWxlY3Rvci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQUV2QyxNQTBDYSxzQkFBc0I7SUExQ25DO1FBMkNFLGVBQVUsR0FBRyxhQUFhLENBQUM7UUFDM0IsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFlVixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBY3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQXFCakI7SUF2REMsSUFBYSxTQUFTLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxHQUFXO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUtELElBQWEsU0FBUyxDQUFDLElBQVc7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQUEsQ0FBQztJQVNLLFVBQVUsQ0FBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2FBQzdCO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdEVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpVkF4Q3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNUOztTQUdVLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQTFDbEMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7OEJBVVksU0FBUztzQkFBckIsS0FBSztnQkFLTyxVQUFVO3NCQUF0QixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBYUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2UsIGRlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZWxlY3Rvci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzICsgKCFfaXNWYWxpZCA/ICdpbnZhbGlkJyA6ICcnKVwiIGNsYXNzPVwic2VsZWN0b3ItaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxsYWJlbCBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWluZm8gaW5mb2ljb25cIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7aGVscFRleHR9fVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ3aWRlLXRvb2x0aXBcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0XCJcbiAgICAgICAgICBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZCgpXCJcbiAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ1bmRlZmluZWRcIiAqbmdJZj1cInBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9vcHRpb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaXN0SXNPYmplY3RcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG5hbWUgb2YgX3ZhbHVlTGlzdFwiIFt2YWx1ZV09XCJuYW1lXCI+e3tuYW1lfX08L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdElzT2JqZWN0XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIF92YWx1ZUxpc3RcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiPnt7ZGF0YS5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPHNlbGVjdFxuICAgICAgICAgICpuZ0lmPVwiaGlkZVNlbGVjdFwiXG4gICAgICAgICAgY2xhc3M9XCJwbGFjZWhvbGRlci1zZWxlY3RcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiXG4gICAgICA+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ3NlbGVjdG9yLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JJbnB1dENvbXBvbmVudCB7XG4gIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gIF92YWx1ZUxpc3Q6IGFueVtdID0gW107XG4gIGxpc3RJc09iamVjdCA9IGZhbHNlO1xuICBoaWRlU2VsZWN0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIF9maWVsZFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNldCBmaWVsZFZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbDtcbiAgfVxuICBnZXQgZmllbGRWYWx1ZSgpOnN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gIH1cblxuICBASW5wdXQoKSBoZWxwVGV4dDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgdmFsdWVMaXN0KGxpc3Q6IGFueVtdKSB7XG4gICAgdGhpcy5saXN0SXNPYmplY3QgPSBsaXN0Py5sZW5ndGggPiAwICYmIHR5cGVvZiBsaXN0WzBdICE9PSAnc3RyaW5nJztcbiAgICB0aGlzLl92YWx1ZUxpc3QgPSBsaXN0O1xuICAgIGxldCB2YWxUb1NldDtcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZihpdGVtLmRlZmF1bHQpIHtcbiAgICAgICAgdmFsVG9TZXQgPSBpdGVtLnZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZhbFRvU2V0ID0gdmFsVG9TZXQgfHwgdGhpcy5maWVsZFZhbHVlO1xuICAgIHRoaXMucmVJbml0U2VsZWN0KCk7XG4gIH07XG5cbiAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkO1xuICB9XG5cbiAgc2VsZWN0ZWQoKSB7XG4gICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdGhpcy5maWVsZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIH0sIDUwMCkoKTtcbiAgfVxuXG4gIHJlSW5pdFNlbGVjdCgpIHtcbiAgICB0aGlzLmhpZGVTZWxlY3QgPSB0cnVlO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuaGlkZVNlbGVjdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -4,6 +4,7 @@ import { debounce } from "lodash";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/tooltip";
7
8
  class StringInputComponent {
8
9
  constructor() {
9
10
  this._fieldName = 'Field Label';
@@ -16,11 +17,15 @@ class StringInputComponent {
16
17
  this.error = '';
17
18
  this.fieldValueChange = new EventEmitter();
18
19
  this.valueChange = new Subject();
20
+ this._isValid = true;
19
21
  }
20
22
  set fieldName(name) {
21
23
  this._fieldName = name;
22
24
  this._idName = name.replace(/\s/g, '').toLowerCase();
23
25
  }
26
+ setIsValid(isValid) {
27
+ this._isValid = isValid;
28
+ }
24
29
  onKeyup() {
25
30
  debounce(() => {
26
31
  this.fieldValueChange.emit(this.fieldValue);
@@ -28,32 +33,52 @@ class StringInputComponent {
28
33
  }, 500)();
29
34
  }
30
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
32
- <div [ngClass]="fieldClass">
33
- <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
37
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
38
+ <div class="label-container">
39
+ <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
40
+ <div
41
+ *ngIf="helpText"
42
+ class="form-field-info infoicon"
43
+ matTooltip="{{helpText}}"
44
+ matTooltipPosition="above"
45
+ matTooltipClass="wide-tooltip"
46
+ ></div>
47
+ </div>
34
48
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
35
49
  type="text" class="jsonEntry"
36
50
  [ngClass]="{'error': error}"
37
51
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
38
52
  <div *ngIf="error" class="error">{{error}}</div>
39
53
  </div>
40
- `, isInline: true, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
54
+ `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
41
55
  }
42
56
  export { StringInputComponent };
43
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, decorators: [{
44
58
  type: Component,
45
59
  args: [{ selector: 'lib-string-input', template: `
46
- <div [ngClass]="fieldClass">
47
- <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
60
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
61
+ <div class="label-container">
62
+ <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
63
+ <div
64
+ *ngIf="helpText"
65
+ class="form-field-info infoicon"
66
+ matTooltip="{{helpText}}"
67
+ matTooltipPosition="above"
68
+ matTooltipClass="wide-tooltip"
69
+ ></div>
70
+ </div>
48
71
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
49
72
  type="text" class="jsonEntry"
50
73
  [ngClass]="{'error': error}"
51
74
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
52
75
  <div *ngIf="error" class="error">{{error}}</div>
53
76
  </div>
54
- `, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"] }]
77
+ `, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"] }]
55
78
  }], propDecorators: { fieldName: [{
56
79
  type: Input
80
+ }], helpText: [{
81
+ type: Input
57
82
  }], fieldValue: [{
58
83
  type: Input
59
84
  }], placeholder: [{
@@ -69,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
69
94
  }], fieldValueChange: [{
70
95
  type: Output
71
96
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxvQkFBb0I7SUFkakM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQVF4QztJQW5CRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVVELE9BQU87UUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0FyQlEsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWnJCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzc1wiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIiAgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVzOlsnaW5wdXQuZXJyb3Ige2JvcmRlci1jb2xvcjpyZWQ7fScsJ2Rpdi5lcnJvciB7Y29sb3I6cmVkfSddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IHtcbiAgICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gICAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGZpZWxkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICAgIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICAgIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gICAgb25LZXl1cCgpIHtcbiAgICAgICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB9LCA1MDApKCk7XG4gICAgfVxufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BdUJhLG9CQUFvQjtJQXZCakM7UUF3QkksZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTWIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQVduQjtJQXpCRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVlNLFVBQVUsQ0FBRSxPQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0gsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNkLENBQUM7K0dBM0JRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVUQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkF2QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN0cmluZy1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzdHJpbmctaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5mbyBpbmZvaWNvblwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3toZWxwVGV4dH19XCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cIndpZGUtdG9vbHRpcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIvPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBgLFxuICAgIHN0eWxlVXJsczogWydzdHJpbmctaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBoZWxwVGV4dDtcbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgICB9XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=
@@ -32,6 +32,7 @@ class TextListInputComponent {
32
32
  this.error = '';
33
33
  this.fieldValueChange = new EventEmitter();
34
34
  this.valueChange = new Subject();
35
+ this._isValid = true;
35
36
  }
36
37
  set fieldName(name) {
37
38
  this._fieldName = name;
@@ -61,9 +62,12 @@ class TextListInputComponent {
61
62
  this.valueChange.next(this.fieldValue);
62
63
  }, 500)();
63
64
  }
65
+ setIsValid(isValid) {
66
+ this._isValid = isValid;
67
+ }
64
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextListInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
69
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextListInputComponent, selector: "lib-text-list-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
66
- <div [ngClass]="fieldClass">
70
+ <div [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')">
67
71
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
68
72
  <p-chips id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
69
73
  (keyup)="onKeyup($event)"
@@ -71,7 +75,7 @@ class TextListInputComponent {
71
75
  [allowDuplicate]="false"
72
76
  [placeholder]="placeholder"
73
77
  [addOnBlur]="true"
74
- [ngClass]="fieldClass"
78
+ [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')"
75
79
  (onBlur)="emitEvents()"
76
80
  separator=",">
77
81
  </p-chips>
@@ -83,7 +87,7 @@ export { TextListInputComponent };
83
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextListInputComponent, decorators: [{
84
88
  type: Component,
85
89
  args: [{ selector: 'lib-text-list-input', template: `
86
- <div [ngClass]="fieldClass">
90
+ <div [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')">
87
91
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
88
92
  <p-chips id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
89
93
  (keyup)="onKeyup($event)"
@@ -91,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
91
95
  [allowDuplicate]="false"
92
96
  [placeholder]="placeholder"
93
97
  [addOnBlur]="true"
94
- [ngClass]="fieldClass"
98
+ [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')"
95
99
  (onBlur)="emitEvents()"
96
100
  separator=",">
97
101
  </p-chips>
@@ -116,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
116
120
  }], fieldValueChange: [{
117
121
  type: Output
118
122
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1saXN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvdGV4dC1saXN0L3RleHQtbGlzdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRXpDLE1Bb0JhLHNCQUFzQjtJQXBCbkM7UUFxQkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTXRCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBV2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0tBb0J0QztJQTFDQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUdELElBQ0ksVUFBVSxDQUFDLEdBQUc7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFVRCxPQUFPLENBQUMsS0FBVTtRQUNoQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDNUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNaLENBQUM7K0dBNUNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG9TQWxCdkI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOztTQUdXLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQXBCbEMsU0FBUzsrQkFDRSxxQkFBcUIsWUFDckI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOzhCQU1hLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT0YsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFlBQVk7Z0JBVVYsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlLCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10ZXh0LWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzc1wiPlxuICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICA8cC1jaGlwcyBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgKGtleXVwKT1cIm9uS2V5dXAoJGV2ZW50KVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCJcbiAgICAgICAgICBbYWxsb3dEdXBsaWNhdGVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2FkZE9uQmx1cl09XCJ0cnVlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJmaWVsZENsYXNzXCIgXG4gICAgICAgICAgKG9uQmx1cik9XCJlbWl0RXZlbnRzKClcIlxuICAgICAgICAgIHNlcGFyYXRvcj1cIixcIj5cbiAgICAgIDwvcC1jaGlwcz5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiBgLFxuICBzdHlsZVVybHM6WycuL3RleHQtbGlzdC1pbnB1dC5jb21wb25lbnQuc2NzcycgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dExpc3RJbnB1dENvbXBvbmVudCB7XG4gIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIF9maWVsZFZhbHVlOiBhbnkgPSAnJztcbiAgQElucHV0KCdmaWVsZFZhbHVlJylcbiAgc2V0IGZpZWxkVmFsdWUodmFsKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbDtcbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIGNvbnN0IHZhbCA9IGlzRW1wdHkodGhpcy5fZmllbGRWYWx1ZSkgPyB1bmRlZmluZWQgOiB0aGlzLl9maWVsZFZhbHVlO1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gIG9uS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoa2V5ID09PSBcIiBcIiB8fCBrZXkgPT09ICdlbnRlcicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0RXZlbnRzKCk7XG4gIH1cblxuICBlbWl0RXZlbnRzKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1saXN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvdGV4dC1saXN0L3RleHQtbGlzdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRXpDLE1Bb0JhLHNCQUFzQjtJQXBCbkM7UUFxQkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTXRCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBV2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBcUJyQyxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBS2pCO0lBaERDLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBR0QsSUFDSSxVQUFVLENBQUMsR0FBRztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JFLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDbEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUdNLFVBQVUsQ0FBQyxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7K0dBakRVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG9TQWxCdkI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOztTQUdXLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQXBCbEMsU0FBUzsrQkFDRSxxQkFBcUIsWUFDckI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOzhCQU1hLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT0YsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFlBQVk7Z0JBVVYsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlLCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10ZXh0LWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzcyArICghX2lzVmFsaWQgPyAnIGludmFsaWQnIDogJycpXCI+XG4gICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgIDxwLWNoaXBzIGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIlxuICAgICAgICAgIFthbGxvd0R1cGxpY2F0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbYWRkT25CbHVyXT1cInRydWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJyBpbnZhbGlkJyA6ICcnKVwiIFxuICAgICAgICAgIChvbkJsdXIpPVwiZW1pdEV2ZW50cygpXCJcbiAgICAgICAgICBzZXBhcmF0b3I9XCIsXCI+XG4gICAgICA8L3AtY2hpcHM+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCI+e3tlcnJvcn19PC9kaXY+XG4gICAgPC9kaXY+XG4gYCxcbiAgc3R5bGVVcmxzOlsnLi90ZXh0LWxpc3QtaW5wdXQuY29tcG9uZW50LnNjc3MnICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRMaXN0SW5wdXRDb21wb25lbnQge1xuICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBfZmllbGRWYWx1ZTogYW55ID0gJyc7XG4gIEBJbnB1dCgnZmllbGRWYWx1ZScpXG4gIHNldCBmaWVsZFZhbHVlKHZhbCkge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWw7XG4gIH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHtcbiAgICBjb25zdCB2YWwgPSBpc0VtcHR5KHRoaXMuX2ZpZWxkVmFsdWUpID8gdW5kZWZpbmVkIDogdGhpcy5fZmllbGRWYWx1ZTtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICBvbktleXVwKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGtleSA9PT0gXCIgXCIgfHwga2V5ID09PSAnZW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgZWxlbWVudC5ibHVyKCk7XG4gICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdEV2ZW50cygpO1xuICB9XG5cbiAgZW1pdEV2ZW50cygpIHtcbiAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfSwgNTAwKSgpO1xuICB9XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZChpc1ZhbGlkKSB7XG4gICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxufVxuIl19
@@ -16,7 +16,7 @@
16
16
  import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
17
17
  import { GrowlerModel } from '../messaging/growler.model';
18
18
  import _ from 'lodash';
19
- import { createAjvValidator, JSONEditor, Mode } from "vanilla-jsoneditor";
19
+ import { createAjvValidator, createJSONEditor, Mode } from "vanilla-jsoneditor";
20
20
  import * as i0 from "@angular/core";
21
21
  import * as i1 from "../messaging/growler.service";
22
22
  import * as i2 from "@angular/common";
@@ -56,7 +56,7 @@ class JsonViewComponent {
56
56
  text: undefined,
57
57
  json: this.data || {}
58
58
  };
59
- this.editor = new JSONEditor({
59
+ this.editor = createJSONEditor({
60
60
  target: this.editorDiv.nativeElement,
61
61
  props: {
62
62
  validator: this.validator,
@@ -207,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
207
207
  type: ViewChild,
208
208
  args: ['editor', { static: false }]
209
209
  }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9qc29uLXZpZXcvanNvbi12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9qc29uLXZpZXcvanNvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7O0FBRXhFLE1BS2EsaUJBQWlCO0lBcUI1QixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFuQnpDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUN6QixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBVXBFLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDO2dCQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3pDLFVBQVUsRUFBRSxFQUFFO2FBQ2YsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEQsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7U0FDdEIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYTtZQUNwQyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFFBQVEsRUFBRSxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDLEVBQUUsRUFBRTtvQkFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUE7b0JBQzdCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7cUJBQ3RDO3lCQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7d0JBQzdCLElBQUk7NEJBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBOzRCQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7eUJBQzVCO3dCQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3BDO3FCQUNGO29CQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNwQzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNuQztnQkFDSCxDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFO1NBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLFlBQVksR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDcEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxFQUFFO29CQUN6QyxRQUFRLEVBQUUsQ0FBQztvQkFDWCxZQUFZLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLE9BQU8sQ0FBQztRQUNaLElBQUk7WUFDRixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUM3QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjtRQUVELElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRTdDLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUM7d0JBQ2xDLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWTt3QkFDdEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjt3QkFDekMsVUFBVSxFQUFFLEVBQUU7cUJBQ2YsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjthQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7U0FDRjtJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsVUFBZSxTQUFTO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDbkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQ2hDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsYUFBYSxFQUNiLHdDQUF3QyxDQUMzQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0FyTFUsaUJBQWlCO21HQUFqQixpQkFBaUIsNFlDdEM5Qiw2T0FDOEU7O1NEcUNqRSxpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlO3FHQU1oQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBSStCLFNBQVM7c0JBQTlDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCwgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tICcuLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlJztcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tICcuLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbCc7XG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2NyZWF0ZUFqdlZhbGlkYXRvciwgSlNPTkVkaXRvciwgTW9kZX0gZnJvbSBcInZhbmlsbGEtanNvbmVkaXRvclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItanNvbi12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2pzb24tdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2pzb24tdmlldy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBKc29uVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgZGF0YTogYW55ID0ge307XG4gIEBJbnB1dCgpIHNjaGVtYTogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGpzb25JbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dDb3B5OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBkYXRhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGpzb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkganNvbkludmFsaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbkNoYW5nZURlYm91bmNlZDtcbiAgc2NoZW1hUmVmczogYW55O1xuICBjb250ZW50OiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHtzdGF0aWM6IGZhbHNlfSkgZWRpdG9yRGl2ITogRWxlbWVudFJlZjtcbiAgdmFsaWRhdG9yOiBhbnk7XG4gIHByaXZhdGUgZWRpdG9yOiBKU09ORWRpdG9yO1xuICBwcml2YXRlIHNjaGVtYURlZmluaXRpb25zOiBhbnk7XG4gIG9sZERhdGE6IGFueTtcbiAgY3VycmVudERhdGE6IGFueTtcbiAgZWRpdG9ySW5pdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5vbkNoYW5nZURlYm91bmNlZCA9IF8uZGVib3VuY2UodGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpLCA0MDApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnNjaGVtYSkge1xuICAgICAgdGhpcy52YWxpZGF0b3IgPSBjcmVhdGVBanZWYWxpZGF0b3Ioe1xuICAgICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgICBzY2hlbWFEZWZpbml0aW9uczogdGhpcy5zY2hlbWFEZWZpbml0aW9ucyxcbiAgICAgICAgYWp2T3B0aW9uczoge31cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmluaXRFZGl0b3IoKTtcbiAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgdGhpcy53YXRjaERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBpbml0RWRpdG9yKCkge1xuICAgIGlmICghdGhpcy5lZGl0b3JEaXYgfHwgIXRoaXMuZGF0YSB8fCB0aGlzLmVkaXRvckluaXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50RGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmNvbnRlbnQgPSB7XG4gICAgICB0ZXh0OiB1bmRlZmluZWQsXG4gICAgICBqc29uOiB0aGlzLmRhdGEgfHwge31cbiAgICB9O1xuICAgIHRoaXMuZWRpdG9yID0gbmV3IEpTT05FZGl0b3Ioe1xuICAgICAgdGFyZ2V0OiB0aGlzLmVkaXRvckRpdi5uYXRpdmVFbGVtZW50LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFsaWRhdG9yOiB0aGlzLnZhbGlkYXRvcixcbiAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICByZWFkT25seTogdGhpcy5yZWFkT25seSxcbiAgICAgICAgbW9kZTogTW9kZS50ZXh0LFxuICAgICAgICBvbkNoYW5nZTogKHVwZGF0ZWRDb250ZW50LCBwcmV2aW91c0NvbnRlbnQsIHtjb250ZW50RXJyb3JzLCBwYXRjaFJlc3VsdH0pID0+IHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB1cGRhdGVkQ29udGVudFxuICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQ/Lmpzb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMuY29udGVudC5qc29uKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNvbnRlbnQuanNvbjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudD8udGV4dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IEpTT04ucGFyc2UodGhpcy5jb250ZW50LnRleHQpXG4gICAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KG5ld0RhdGEpO1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhID0gbmV3RGF0YTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy52YWxpZGF0ZSh0aGlzLmN1cnJlbnREYXRhKTtcbiAgICAgICAgICBpZiAoIWVycm9ycyAmJiAhXy5pc0VtcHR5KHRoaXMuY29udGVudC50ZXh0KSkge1xuICAgICAgICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZWRpdG9ySW5pdCA9IHRydWU7XG4gIH1cblxuICB1cGRhdGVFZGl0b3IoKSB7XG4gICAgaWYgKF8uaXNFcXVhbCh0aGlzLm9sZERhdGEsIHRoaXMuZGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbGREYXRhID0gXy5jbG9uZURlZXAodGhpcy5kYXRhKTtcbiAgICB0aGlzLmNvbnRlbnQgPSB7XG4gICAgICBqc29uOiB0aGlzLm9sZERhdGEgfHwge31cbiAgICB9O1xuICAgIHRoaXMuZWRpdG9yLnVwZGF0ZSh0aGlzLmNvbnRlbnQpO1xuICB9XG5cbiAgd2F0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHdhdGNoRGF0YU9iaiA9IChvcmlnaW5hbERhdGEsIHNlbGYsIGNhbGxiYWNrKSA9PiB7XG4gICAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBzZWxmLmRhdGE7XG4gICAgICAgIGlmICghXy5pc0VxdWFsKG9yaWdpbmFsRGF0YSwgY3VycmVudERhdGEpKSB7XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICBvcmlnaW5hbERhdGEgPSBfLmNsb25lRGVlcChjdXJyZW50RGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgd2F0Y2hEYXRhT2JqKG9yaWdpbmFsRGF0YSwgc2VsZiwgY2FsbGJhY2spO1xuICAgICAgfSwgMTAwKTtcbiAgICB9O1xuICAgIGNvbnN0IG9yaWdpbmFsRGF0YSA9IF8uY2xvbmVEZWVwKHRoaXMuZGF0YSk7XG4gICAgd2F0Y2hEYXRhT2JqKG9yaWdpbmFsRGF0YSwgdGhpcywgKHZhbCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVFZGl0b3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uQ2hhbmdlKCkge1xuICAgIGxldCBuZXdEYXRhO1xuICAgIHRyeSB7XG4gICAgICBuZXdEYXRhID0gdGhpcy5lZGl0b3IuZ2V0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuXG4gICAgaWYgKG5ld0RhdGEpIHtcbiAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KG5ld0RhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IHRoaXMudmFsaWRhdGUobmV3RGF0YSk7XG4gICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgIGlmIChuZXdEYXRhKSB7XG4gICAgICAgIHRoaXMuanNvbkNoYW5nZS5lbWl0KG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snc2NoZW1hJ10pIHtcbiAgICAgIHRoaXMuc2NoZW1hID0gY2hhbmdlc1snc2NoZW1hJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICBpZih0aGlzLnNjaGVtYSkge1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0b3IpIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvci5zY2hlbWEgPSB0aGlzLnNjaGVtYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvciA9IGNyZWF0ZUFqdlZhbGlkYXRvcih7XG4gICAgICAgICAgICBzY2hlbWE6IGNoYW5nZXNbJ3NjaGVtYSddLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHNjaGVtYURlZmluaXRpb25zOiB0aGlzLnNjaGVtYURlZmluaXRpb25zLFxuICAgICAgICAgICAgYWp2T3B0aW9uczoge31cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICBpZiAoIXRoaXMuZWRpdG9ySW5pdCkge1xuICAgICAgICB0aGlzLmluaXRFZGl0b3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUobmV3RGF0YTogYW55ID0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnZhbGlkYXRlKCk7XG4gIH1cblxuICBlbnRlcktleVByZXNzZWQoZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAganNvbkNoYW5nZWQoZXZlbnQpIHtcbiAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYWQoKSB7XG4gICAgdmFyIGNsaXBEYXRhID0gSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKSxudWxsLDIpO1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNsaXBEYXRhKTtcbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICBgQVBJIGNhbGwgSlNPTiBib2R5IGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICk7XG4gICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgfVxufVxuIiwiPGRpdiBpZD1cImpzb25lZGl0b3JcIiBbbmdDbGFzc109XCJ7J3JlYWQtb25seSc6IHJlYWRPbmx5fVwiICNlZGl0b3IgKGtleXVwLmVudGVyKT1cImVudGVyS2V5UHJlc3NlZCgkZXZlbnQpXCIgKGtleXVwKT1cImpzb25DaGFuZ2VkKCRldmVudClcIj48L2Rpdj5cbjxkaXYgKm5nSWY9XCJzaG93Q29weVwiIGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYWQoKVwiPjwvZGl2PiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9qc29uLXZpZXcvanNvbi12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9qc29uLXZpZXcvanNvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFOUUsTUFLYSxpQkFBaUI7SUFxQjVCLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQW5CekMsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFVcEUsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUdqQixJQUFJLENBQUMsaUJBQWlCLEdBQUcs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QzlCLDZPQUM4RTs7U0RxQ2pFLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7cUdBTWhCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFJK0IsU0FBUztzQkFBOUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LCBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gJy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gJy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsJztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Y3JlYXRlQWp2VmFsaWRhdG9yLCBjcmVhdGVKU09ORWRpdG9yLCBNb2RlfSBmcm9tIFwidmFuaWxsYS1qc29uZWRpdG9yXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1qc29uLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vanNvbi12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vanNvbi12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEpzb25WaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgc2NoZW1hOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkganNvbkludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NvcHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGRhdGFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkganNvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBqc29uSW52YWxpZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uQ2hhbmdlRGVib3VuY2VkO1xuICBzY2hlbWFSZWZzOiBhbnk7XG4gIGNvbnRlbnQ6IGFueTtcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJywge3N0YXRpYzogZmFsc2V9KSBlZGl0b3JEaXYhOiBFbGVtZW50UmVmO1xuICB2YWxpZGF0b3I6IGFueTtcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBzY2hlbWFEZWZpbml0aW9uczogYW55O1xuICBvbGREYXRhOiBhbnk7XG4gIGN1cnJlbnREYXRhOiBhbnk7XG4gIGVkaXRvckluaXQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSkge1xuICAgIHRoaXMub25DaGFuZ2VEZWJvdW5jZWQgPSBfLmRlYm91bmNlKHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSwgNDAwKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yID0gY3JlYXRlQWp2VmFsaWRhdG9yKHtcbiAgICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgICAgc2NoZW1hRGVmaW5pdGlvbnM6IHRoaXMuc2NoZW1hRGVmaW5pdGlvbnMsXG4gICAgICAgIGFqdk9wdGlvbnM6IHt9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5pbml0RWRpdG9yKCk7XG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgIHRoaXMud2F0Y2hEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgaW5pdEVkaXRvcigpIHtcbiAgICBpZiAoIXRoaXMuZWRpdG9yRGl2IHx8ICF0aGlzLmRhdGEgfHwgdGhpcy5lZGl0b3JJbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5jb250ZW50ID0ge1xuICAgICAgdGV4dDogdW5kZWZpbmVkLFxuICAgICAganNvbjogdGhpcy5kYXRhIHx8IHt9XG4gICAgfTtcbiAgICB0aGlzLmVkaXRvciA9IGNyZWF0ZUpTT05FZGl0b3Ioe1xuICAgICAgdGFyZ2V0OiB0aGlzLmVkaXRvckRpdi5uYXRpdmVFbGVtZW50LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFsaWRhdG9yOiB0aGlzLnZhbGlkYXRvcixcbiAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICByZWFkT25seTogdGhpcy5yZWFkT25seSxcbiAgICAgICAgbW9kZTogTW9kZS50ZXh0LFxuICAgICAgICBvbkNoYW5nZTogKHVwZGF0ZWRDb250ZW50LCBwcmV2aW91c0NvbnRlbnQsIHtjb250ZW50RXJyb3JzLCBwYXRjaFJlc3VsdH0pID0+IHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB1cGRhdGVkQ29udGVudFxuICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQ/Lmpzb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMuY29udGVudC5qc29uKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNvbnRlbnQuanNvbjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudD8udGV4dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IEpTT04ucGFyc2UodGhpcy5jb250ZW50LnRleHQpXG4gICAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KG5ld0RhdGEpO1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhID0gbmV3RGF0YTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy52YWxpZGF0ZSh0aGlzLmN1cnJlbnREYXRhKTtcbiAgICAgICAgICBpZiAoIWVycm9ycyAmJiAhXy5pc0VtcHR5KHRoaXMuY29udGVudC50ZXh0KSkge1xuICAgICAgICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZWRpdG9ySW5pdCA9IHRydWU7XG4gIH1cblxuICB1cGRhdGVFZGl0b3IoKSB7XG4gICAgaWYgKF8uaXNFcXVhbCh0aGlzLm9sZERhdGEsIHRoaXMuZGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbGREYXRhID0gXy5jbG9uZURlZXAodGhpcy5kYXRhKTtcbiAgICB0aGlzLmNvbnRlbnQgPSB7XG4gICAgICBqc29uOiB0aGlzLm9sZERhdGEgfHwge31cbiAgICB9O1xuICAgIHRoaXMuZWRpdG9yLnVwZGF0ZSh0aGlzLmNvbnRlbnQpO1xuICB9XG5cbiAgd2F0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHdhdGNoRGF0YU9iaiA9IChvcmlnaW5hbERhdGEsIHNlbGYsIGNhbGxiYWNrKSA9PiB7XG4gICAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBzZWxmLmRhdGE7XG4gICAgICAgIGlmICghXy5pc0VxdWFsKG9yaWdpbmFsRGF0YSwgY3VycmVudERhdGEpKSB7XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICBvcmlnaW5hbERhdGEgPSBfLmNsb25lRGVlcChjdXJyZW50RGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgd2F0Y2hEYXRhT2JqKG9yaWdpbmFsRGF0YSwgc2VsZiwgY2FsbGJhY2spO1xuICAgICAgfSwgMTAwKTtcbiAgICB9O1xuICAgIGNvbnN0IG9yaWdpbmFsRGF0YSA9IF8uY2xvbmVEZWVwKHRoaXMuZGF0YSk7XG4gICAgd2F0Y2hEYXRhT2JqKG9yaWdpbmFsRGF0YSwgdGhpcywgKHZhbCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVFZGl0b3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uQ2hhbmdlKCkge1xuICAgIGxldCBuZXdEYXRhO1xuICAgIHRyeSB7XG4gICAgICBuZXdEYXRhID0gdGhpcy5lZGl0b3IuZ2V0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuXG4gICAgaWYgKG5ld0RhdGEpIHtcbiAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KG5ld0RhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IHRoaXMudmFsaWRhdGUobmV3RGF0YSk7XG4gICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgIGlmIChuZXdEYXRhKSB7XG4gICAgICAgIHRoaXMuanNvbkNoYW5nZS5lbWl0KG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qc29uSW52YWxpZENoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snc2NoZW1hJ10pIHtcbiAgICAgIHRoaXMuc2NoZW1hID0gY2hhbmdlc1snc2NoZW1hJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICBpZih0aGlzLnNjaGVtYSkge1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0b3IpIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvci5zY2hlbWEgPSB0aGlzLnNjaGVtYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvciA9IGNyZWF0ZUFqdlZhbGlkYXRvcih7XG4gICAgICAgICAgICBzY2hlbWE6IGNoYW5nZXNbJ3NjaGVtYSddLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHNjaGVtYURlZmluaXRpb25zOiB0aGlzLnNjaGVtYURlZmluaXRpb25zLFxuICAgICAgICAgICAgYWp2T3B0aW9uczoge31cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICBpZiAoIXRoaXMuZWRpdG9ySW5pdCkge1xuICAgICAgICB0aGlzLmluaXRFZGl0b3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUobmV3RGF0YTogYW55ID0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnZhbGlkYXRlKCk7XG4gIH1cblxuICBlbnRlcktleVByZXNzZWQoZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAganNvbkNoYW5nZWQoZXZlbnQpIHtcbiAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYWQoKSB7XG4gICAgdmFyIGNsaXBEYXRhID0gSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKSxudWxsLDIpO1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNsaXBEYXRhKTtcbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICBgQVBJIGNhbGwgSlNPTiBib2R5IGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICk7XG4gICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgfVxufVxuIiwiPGRpdiBpZD1cImpzb25lZGl0b3JcIiBbbmdDbGFzc109XCJ7J3JlYWQtb25seSc6IHJlYWRPbmx5fVwiICNlZGl0b3IgKGtleXVwLmVudGVyKT1cImVudGVyS2V5UHJlc3NlZCgkZXZlbnQpXCIgKGtleXVwKT1cImpzb25DaGFuZ2VkKCRldmVudClcIj48L2Rpdj5cbjxkaXYgKm5nSWY9XCJzaG93Q29weVwiIGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYWQoKVwiPjwvZGl2PiJdfQ==