@huntsman-cancer-institute/cod 17.4.0 → 17.6.0
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.
- package/components/attribute-absolute.component.d.ts +1 -0
- package/components/attribute-edit.component.d.ts +1 -0
- package/components/attribute-flex.component.d.ts +1 -0
- package/esm2022/components/attribute-absolute.component.mjs +26 -22
- package/esm2022/components/attribute-default.component.mjs +17 -17
- package/esm2022/components/attribute-edit.component.mjs +264 -260
- package/esm2022/components/attribute-flex.component.mjs +71 -63
- package/fesm2022/huntsman-cancer-institute-cod.mjs +374 -358
- package/fesm2022/huntsman-cancer-institute-cod.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -15,12 +15,16 @@ import * as i7 from "@angular-material-components/datetime-picker";
|
|
|
15
15
|
* This is different from the flex attribute because components such as the grid need extra configuration for editing.
|
|
16
16
|
*/
|
|
17
17
|
export class AttributeEditComponent extends AttributeBase {
|
|
18
|
-
//dictionaryEndpoint = this.attributeService.dictionaryEndpoint;
|
|
18
|
+
// dictionaryEndpoint = this.attributeService.dictionaryEndpoint;
|
|
19
19
|
constructor(attributeService, elementRef, renderer, modalService) {
|
|
20
20
|
super(attributeService, elementRef, renderer, modalService);
|
|
21
|
+
this.hciNgAttributeAbsoluteInputDisplayName = "";
|
|
21
22
|
}
|
|
22
23
|
init() {
|
|
23
24
|
super.init();
|
|
25
|
+
if (this.attribute && this.attribute.displayName) {
|
|
26
|
+
this.hciNgAttributeAbsoluteInputDisplayName = this.attribute.displayName;
|
|
27
|
+
}
|
|
24
28
|
}
|
|
25
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AttributeEditComponent, deps: [{ token: i1.AttributeService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
30
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AttributeEditComponent, selector: "hci-attribute-edit", usesInheritance: true, ngImport: i0, template: `
|
|
@@ -33,13 +37,13 @@ export class AttributeEditComponent extends AttributeBase {
|
|
|
33
37
|
</div>
|
|
34
38
|
|
|
35
39
|
<div *ngIf="(attribute.h == undefined || (attribute.h && attribute.h <= 25))" class="d-flex col-md-6">
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
<input #inputRef
|
|
41
|
+
type="text"
|
|
42
|
+
[ngModel]="attributeValues[0].valueString"
|
|
43
|
+
(ngModelChange)="valueStringChange($event)"
|
|
44
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'" attr.aria-label="hci-ng-attribute-edit-input-string-{{hciNgAttributeAbsoluteInputDisplayName}}"
|
|
45
|
+
/>
|
|
46
|
+
</div>
|
|
43
47
|
|
|
44
48
|
<div *ngIf="(attribute.h && attribute.h > 25)" class="d-flex col-md-6">
|
|
45
49
|
<textarea
|
|
@@ -83,53 +87,53 @@ export class AttributeEditComponent extends AttributeBase {
|
|
|
83
87
|
</div>
|
|
84
88
|
</ng-container>
|
|
85
89
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
90
|
+
<!-- Numeric -->
|
|
91
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'N'">
|
|
92
|
+
<div #attributeRef
|
|
93
|
+
class="d-flex flex-row">
|
|
94
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
95
|
+
{{attribute.displayName}}
|
|
96
|
+
</div>
|
|
97
|
+
<div class="d-flex col-md-6">
|
|
98
|
+
<input #inputRef
|
|
99
|
+
type="number"
|
|
100
|
+
[ngModel]="attributeValues[0].valueNumeric"
|
|
101
|
+
(ngModelChange)="valueNumericChange($event)" attr.aria-label="hci-ng-attribute-edit-input-numeric-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
</ng-container>
|
|
101
105
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
<!-- Integer -->
|
|
107
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'I'">
|
|
108
|
+
<div #attributeRef
|
|
109
|
+
class="d-flex flex-row">
|
|
110
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
111
|
+
{{attribute.displayName}}
|
|
112
|
+
</div>
|
|
113
|
+
<div class="d-flex col-md-6">
|
|
114
|
+
<input #inputRef
|
|
115
|
+
type="number"
|
|
116
|
+
[ngModel]="attributeValues[0].valueInteger"
|
|
117
|
+
(ngModelChange)="valueIntegerChange($event)" attr.aria-label="hci-ng-attribute-edit-input-integer-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</ng-container>
|
|
117
121
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
122
|
+
<!-- Date -->
|
|
123
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'D'">
|
|
124
|
+
<div #attributeRef
|
|
125
|
+
class="d-flex flex-row">
|
|
126
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
127
|
+
{{attribute.displayName}}
|
|
128
|
+
</div>
|
|
129
|
+
<div class="d-flex col-md-6">
|
|
130
|
+
<input #inputRef
|
|
131
|
+
matInput
|
|
132
|
+
name="valueDate"
|
|
133
|
+
[(ngModel)]="attributeValues[0].valueDate"
|
|
134
|
+
(ngModelChange)="valueDateChange($event)"
|
|
135
|
+
[matDatepicker]="valueDate"
|
|
136
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'" attr.aria-label="hci-ng-attribute-edit-input-date-{{hciNgAttributeAbsoluteInputDisplayName}}"
|
|
133
137
|
>
|
|
134
138
|
<mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
135
139
|
<mat-datepicker #valueDate></mat-datepicker>
|
|
@@ -137,44 +141,44 @@ export class AttributeEditComponent extends AttributeBase {
|
|
|
137
141
|
</div>
|
|
138
142
|
</ng-container>
|
|
139
143
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
144
|
+
<!-- Date Time -->
|
|
145
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'DT'">
|
|
146
|
+
<div #attributeRef
|
|
147
|
+
class="d-flex flex-row">
|
|
148
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
149
|
+
{{attribute.displayName}}
|
|
150
|
+
</div>
|
|
151
|
+
<div class="d-flex col-md-6">
|
|
152
|
+
<input #inputRef
|
|
153
|
+
matInput
|
|
154
|
+
name="valueDateTime"
|
|
155
|
+
[(ngModel)]="attributeValues[0].date"
|
|
156
|
+
(ngModelChange)="valueDateChange($event)"
|
|
157
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
158
|
+
[ngxMatDatetimePicker]="dtpicker" attr.aria-label="hci-ng-attribute-edit-input-date-time-{{hciNgAttributeAbsoluteInputDisplayName}}">
|
|
159
|
+
<mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
160
|
+
<ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</ng-container>
|
|
160
164
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
165
|
+
<!-- Checkbox -->
|
|
166
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'CB'">
|
|
167
|
+
<div #attributeRef
|
|
168
|
+
class="d-flex flex-row">
|
|
169
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
170
|
+
{{attribute.displayName}}
|
|
171
|
+
</div>
|
|
172
|
+
<div class="d-flex col-md-6">
|
|
173
|
+
<input #inputRef
|
|
174
|
+
type="checkbox"
|
|
175
|
+
[checked]="attributeValues[0].valueString === 'Y'"
|
|
176
|
+
(change)="valueCheckboxChange($event)"
|
|
177
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
178
|
+
class="form-control" attr.aria-label="hci-ng-attribute-edit-input-checkbox-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</ng-container>
|
|
178
182
|
|
|
179
183
|
<!-- Boolean -->
|
|
180
184
|
<ng-container *ngIf="attribute.codeAttributeDataType === 'B'">
|
|
@@ -237,47 +241,47 @@ export class AttributeEditComponent extends AttributeBase {
|
|
|
237
241
|
</div>
|
|
238
242
|
</ng-container>
|
|
239
243
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
</div>
|
|
247
|
-
<div class="d-flex flex-column col-md-6" style="row-gap: 5px">
|
|
248
|
-
<ng-container *ngFor="let attributeChoice of attributeChoices">
|
|
249
|
-
<div class="d-flex">
|
|
250
|
-
<input type="checkbox"
|
|
251
|
-
[checked]="attributeChoice.value"
|
|
252
|
-
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
253
|
-
(change)="valueMultiChoiceChange(attributeChoice)"
|
|
254
|
-
class="form-control checkbox mt-auto mb-auto me-2" />
|
|
255
|
-
<div class="cod-label ps-1">
|
|
256
|
-
{{attributeChoice.choice}}
|
|
257
|
-
</div>
|
|
244
|
+
<!-- Choice: Multi -->
|
|
245
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'Y'">
|
|
246
|
+
<div #attributeRef
|
|
247
|
+
class="d-flex flex-row">
|
|
248
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
249
|
+
{{attribute.displayName}}
|
|
258
250
|
</div>
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
251
|
+
<div class="d-flex flex-column col-md-6" style="row-gap: 5px">
|
|
252
|
+
<ng-container *ngFor="let attributeChoice of attributeChoices">
|
|
253
|
+
<div class="d-flex">
|
|
254
|
+
<input type="checkbox"
|
|
255
|
+
[checked]="attributeChoice.value"
|
|
256
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
257
|
+
(change)="valueMultiChoiceChange(attributeChoice)"
|
|
258
|
+
class="form-control checkbox mt-auto mb-auto me-2" attr.aria-label="hci-ng-attribute-edit-input-choice-multiple-{{attributeChoice.choice}}"/>
|
|
259
|
+
<div class="cod-label ps-1">
|
|
260
|
+
{{attributeChoice.choice}}
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</ng-container>
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
</ng-container>
|
|
267
|
+
|
|
268
|
+
<!-- Dictionary: Multi -->
|
|
269
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'Y'">
|
|
270
|
+
<div #attributeRef
|
|
271
|
+
class="d-flex flex-row">
|
|
272
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
273
|
+
{{attribute.displayName}}
|
|
274
|
+
</div>
|
|
275
|
+
<div class="d-flex flex-column col-md-6" style="row-gap: 5px">
|
|
276
|
+
<ng-container *ngFor="let entry of dictionaryEntries">
|
|
277
|
+
<div class="d-flex">
|
|
278
|
+
<input type="checkbox"
|
|
279
|
+
[checked]="entry.checked"
|
|
280
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
281
|
+
(change)="valueMultiDictChange(entry)"
|
|
282
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
283
|
+
class="form-control checkbox" attr.aria-label="hci-ng-attribute-edit-input-dictionary-choice-{{entry.display}}"/>
|
|
284
|
+
<div class="cod-label ps-1">
|
|
281
285
|
{{entry.display}}
|
|
282
286
|
</div>
|
|
283
287
|
</div>
|
|
@@ -379,13 +383,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
379
383
|
</div>
|
|
380
384
|
|
|
381
385
|
<div *ngIf="(attribute.h == undefined || (attribute.h && attribute.h <= 25))" class="d-flex col-md-6">
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
386
|
+
<input #inputRef
|
|
387
|
+
type="text"
|
|
388
|
+
[ngModel]="attributeValues[0].valueString"
|
|
389
|
+
(ngModelChange)="valueStringChange($event)"
|
|
390
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'" attr.aria-label="hci-ng-attribute-edit-input-string-{{hciNgAttributeAbsoluteInputDisplayName}}"
|
|
391
|
+
/>
|
|
392
|
+
</div>
|
|
389
393
|
|
|
390
394
|
<div *ngIf="(attribute.h && attribute.h > 25)" class="d-flex col-md-6">
|
|
391
395
|
<textarea
|
|
@@ -429,53 +433,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
429
433
|
</div>
|
|
430
434
|
</ng-container>
|
|
431
435
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
436
|
+
<!-- Numeric -->
|
|
437
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'N'">
|
|
438
|
+
<div #attributeRef
|
|
439
|
+
class="d-flex flex-row">
|
|
440
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
441
|
+
{{attribute.displayName}}
|
|
442
|
+
</div>
|
|
443
|
+
<div class="d-flex col-md-6">
|
|
444
|
+
<input #inputRef
|
|
445
|
+
type="number"
|
|
446
|
+
[ngModel]="attributeValues[0].valueNumeric"
|
|
447
|
+
(ngModelChange)="valueNumericChange($event)" attr.aria-label="hci-ng-attribute-edit-input-numeric-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
448
|
+
</div>
|
|
449
|
+
</div>
|
|
450
|
+
</ng-container>
|
|
447
451
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
452
|
+
<!-- Integer -->
|
|
453
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'I'">
|
|
454
|
+
<div #attributeRef
|
|
455
|
+
class="d-flex flex-row">
|
|
456
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
457
|
+
{{attribute.displayName}}
|
|
458
|
+
</div>
|
|
459
|
+
<div class="d-flex col-md-6">
|
|
460
|
+
<input #inputRef
|
|
461
|
+
type="number"
|
|
462
|
+
[ngModel]="attributeValues[0].valueInteger"
|
|
463
|
+
(ngModelChange)="valueIntegerChange($event)" attr.aria-label="hci-ng-attribute-edit-input-integer-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
464
|
+
</div>
|
|
465
|
+
</div>
|
|
466
|
+
</ng-container>
|
|
463
467
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
468
|
+
<!-- Date -->
|
|
469
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'D'">
|
|
470
|
+
<div #attributeRef
|
|
471
|
+
class="d-flex flex-row">
|
|
472
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
473
|
+
{{attribute.displayName}}
|
|
474
|
+
</div>
|
|
475
|
+
<div class="d-flex col-md-6">
|
|
476
|
+
<input #inputRef
|
|
477
|
+
matInput
|
|
478
|
+
name="valueDate"
|
|
479
|
+
[(ngModel)]="attributeValues[0].valueDate"
|
|
480
|
+
(ngModelChange)="valueDateChange($event)"
|
|
481
|
+
[matDatepicker]="valueDate"
|
|
482
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'" attr.aria-label="hci-ng-attribute-edit-input-date-{{hciNgAttributeAbsoluteInputDisplayName}}"
|
|
479
483
|
>
|
|
480
484
|
<mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
481
485
|
<mat-datepicker #valueDate></mat-datepicker>
|
|
@@ -483,44 +487,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
483
487
|
</div>
|
|
484
488
|
</ng-container>
|
|
485
489
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
490
|
+
<!-- Date Time -->
|
|
491
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'DT'">
|
|
492
|
+
<div #attributeRef
|
|
493
|
+
class="d-flex flex-row">
|
|
494
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
495
|
+
{{attribute.displayName}}
|
|
496
|
+
</div>
|
|
497
|
+
<div class="d-flex col-md-6">
|
|
498
|
+
<input #inputRef
|
|
499
|
+
matInput
|
|
500
|
+
name="valueDateTime"
|
|
501
|
+
[(ngModel)]="attributeValues[0].date"
|
|
502
|
+
(ngModelChange)="valueDateChange($event)"
|
|
503
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
504
|
+
[ngxMatDatetimePicker]="dtpicker" attr.aria-label="hci-ng-attribute-edit-input-date-time-{{hciNgAttributeAbsoluteInputDisplayName}}">
|
|
505
|
+
<mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
506
|
+
<ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
|
|
507
|
+
</div>
|
|
508
|
+
</div>
|
|
509
|
+
</ng-container>
|
|
506
510
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
511
|
+
<!-- Checkbox -->
|
|
512
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'CB'">
|
|
513
|
+
<div #attributeRef
|
|
514
|
+
class="d-flex flex-row">
|
|
515
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
516
|
+
{{attribute.displayName}}
|
|
517
|
+
</div>
|
|
518
|
+
<div class="d-flex col-md-6">
|
|
519
|
+
<input #inputRef
|
|
520
|
+
type="checkbox"
|
|
521
|
+
[checked]="attributeValues[0].valueString === 'Y'"
|
|
522
|
+
(change)="valueCheckboxChange($event)"
|
|
523
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
524
|
+
class="form-control" attr.aria-label="hci-ng-attribute-edit-input-checkbox-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
525
|
+
</div>
|
|
526
|
+
</div>
|
|
527
|
+
</ng-container>
|
|
524
528
|
|
|
525
529
|
<!-- Boolean -->
|
|
526
530
|
<ng-container *ngIf="attribute.codeAttributeDataType === 'B'">
|
|
@@ -583,47 +587,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
583
587
|
</div>
|
|
584
588
|
</ng-container>
|
|
585
589
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
</div>
|
|
593
|
-
<div class="d-flex flex-column col-md-6" style="row-gap: 5px">
|
|
594
|
-
<ng-container *ngFor="let attributeChoice of attributeChoices">
|
|
595
|
-
<div class="d-flex">
|
|
596
|
-
<input type="checkbox"
|
|
597
|
-
[checked]="attributeChoice.value"
|
|
598
|
-
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
599
|
-
(change)="valueMultiChoiceChange(attributeChoice)"
|
|
600
|
-
class="form-control checkbox mt-auto mb-auto me-2" />
|
|
601
|
-
<div class="cod-label ps-1">
|
|
602
|
-
{{attributeChoice.choice}}
|
|
603
|
-
</div>
|
|
590
|
+
<!-- Choice: Multi -->
|
|
591
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'Y'">
|
|
592
|
+
<div #attributeRef
|
|
593
|
+
class="d-flex flex-row">
|
|
594
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
595
|
+
{{attribute.displayName}}
|
|
604
596
|
</div>
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
597
|
+
<div class="d-flex flex-column col-md-6" style="row-gap: 5px">
|
|
598
|
+
<ng-container *ngFor="let attributeChoice of attributeChoices">
|
|
599
|
+
<div class="d-flex">
|
|
600
|
+
<input type="checkbox"
|
|
601
|
+
[checked]="attributeChoice.value"
|
|
602
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
603
|
+
(change)="valueMultiChoiceChange(attributeChoice)"
|
|
604
|
+
class="form-control checkbox mt-auto mb-auto me-2" attr.aria-label="hci-ng-attribute-edit-input-choice-multiple-{{attributeChoice.choice}}"/>
|
|
605
|
+
<div class="cod-label ps-1">
|
|
606
|
+
{{attributeChoice.choice}}
|
|
607
|
+
</div>
|
|
608
|
+
</div>
|
|
609
|
+
</ng-container>
|
|
610
|
+
</div>
|
|
611
|
+
</div>
|
|
612
|
+
</ng-container>
|
|
613
|
+
|
|
614
|
+
<!-- Dictionary: Multi -->
|
|
615
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'Y'">
|
|
616
|
+
<div #attributeRef
|
|
617
|
+
class="d-flex flex-row">
|
|
618
|
+
<div *ngIf="attribute.displayName" class="d-flex col-md-6">
|
|
619
|
+
{{attribute.displayName}}
|
|
620
|
+
</div>
|
|
621
|
+
<div class="d-flex flex-column col-md-6" style="row-gap: 5px">
|
|
622
|
+
<ng-container *ngFor="let entry of dictionaryEntries">
|
|
623
|
+
<div class="d-flex">
|
|
624
|
+
<input type="checkbox"
|
|
625
|
+
[checked]="entry.checked"
|
|
626
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
627
|
+
(change)="valueMultiDictChange(entry)"
|
|
628
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
629
|
+
class="form-control checkbox" attr.aria-label="hci-ng-attribute-edit-input-dictionary-choice-{{entry.display}}"/>
|
|
630
|
+
<div class="cod-label ps-1">
|
|
627
631
|
{{entry.display}}
|
|
628
632
|
</div>
|
|
629
633
|
</div>
|
|
@@ -713,4 +717,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
713
717
|
</ng-template>
|
|
714
718
|
`, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"] }]
|
|
715
719
|
}], ctorParameters: () => [{ type: i1.AttributeService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.NgbModal }] });
|
|
716
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1lZGl0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7O0FBRS9EOzs7R0FHRztBQXVYSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQUV2RCxnRUFBZ0U7SUFFaEUsWUFBWSxnQkFBa0MsRUFBRSxVQUFzQixFQUFFLFFBQW1CLEVBQUUsWUFBc0I7UUFDakgsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUk7UUFDRixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZixDQUFDOzhHQVZVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlGQWxYN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNWSCw2cVdBNEJVLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkF0WGxDLFNBQVM7K0JBRUksb0JBQW9CLFlBRTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzVkgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtOZ2JNb2RhbH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge0F0dHJpYnV0ZUJhc2V9IGZyb20gJy4vYXR0cmlidXRlLWJhc2UnO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZXhpc3QgaW4gYSBtb2RhbCBmb3IgZWRpdGluZy5cclxuICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZmxleCBhdHRyaWJ1dGUgYmVjYXVzZSBjb21wb25lbnRzIHN1Y2ggYXMgdGhlIGdyaWQgbmVlZCBleHRyYSBjb25maWd1cmF0aW9uIGZvciBlZGl0aW5nLlxyXG4gKi9cclxuQENvbXBvbmVudChcclxuICB7XHJcbiAgICBzZWxlY3RvcjogJ2hjaS1hdHRyaWJ1dGUtZWRpdCcsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgPCEtLSBTdHJpbmcgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ1MnXCI+XHJcbiAgICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGF0dHJpYnV0ZS5oID09IHVuZGVmaW5lZCB8fCAoYXR0cmlidXRlLmggJiYgYXR0cmlidXRlLmggPD0gMjUpKVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGF0dHJpYnV0ZS5oICYmIGF0dHJpYnV0ZS5oID4gMjUpXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgICAgICAgICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cInNwZWxsY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgbGFuZz1cImVuXCJcclxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGhlaWdodDogMTI1cHg7IHJlc2l6ZTogbm9uZTtcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFRleHQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ1RYVCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcblxyXG4gICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwic3BlbGxjaGVja1wiXHJcbiAgICAgICAgICAgICAgICAgbGFuZz1cImVuXCJcclxuICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVMb25nVGV4dC50ZXh0RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVUZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MDBweDsgaGVpZ2h0OiAxMjVweDsgcmVzaXplOiBub25lO1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3RleHRhcmVhPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIE51bWVyaWMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZU51bWVyaWNcIlxyXG4gICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlTnVtZXJpY0NoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gSW50ZWdlciAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnSSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSW50ZWdlclwiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVJbnRlZ2VyQ2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICBuYW1lPVwidmFsdWVEYXRlXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVcIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlRGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJ2YWx1ZURhdGVcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSAgbWF0U3VmZml4IFtmb3JdPVwidmFsdWVEYXRlXCIgY2xhc3M9XCJjb2QtZHAtdG9nZ2xlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjdmFsdWVEYXRlPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBEYXRlIFRpbWUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0RUJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgIG5hbWU9XCJ2YWx1ZURhdGVUaW1lXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlXCJcclxuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImR0cGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZHRwaWNrZXJcIiBjbGFzcz1cImNvZC1kcC10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgPG5neC1tYXQtZGF0ZXRpbWUtcGlja2VyICNkdHBpY2tlciBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiPjwvbmd4LW1hdC1kYXRldGltZS1waWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBDaGVja2JveCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQ0InXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVDaGVja2JveENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBCb29sZWFuIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxzZWxlY3QgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiPlllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdOJ1wiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEV4dGVuZGVkIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0VCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxzZWxlY3QgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiPlllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdOJ1wiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1UnXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1UnXCI+VW5rbm93bjwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBDaG9pY2U6IFNpbmdsZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCIoYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlQXR0cmlidXRlQ2hvaWNlKT9hdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVBdHRyaWJ1dGVDaG9pY2UuaWRBdHRyaWJ1dGVDaG9pY2U6dW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaG9pY2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGVDaG9pY2Ugb2YgYXR0cmlidXRlQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiYXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlXCI+XHJcbiAgICAgICAgICAgICAge3sgYXR0cmlidXRlQ2hvaWNlLmNob2ljZSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hvaWNlOiBNdWx0aSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdZJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLW1kLTZcIiBzdHlsZT1cInJvdy1nYXA6IDVweFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWJ1dGVDaG9pY2UudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ2YWx1ZU11bHRpQ2hvaWNlQ2hhbmdlKGF0dHJpYnV0ZUNob2ljZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjaGVja2JveCBtdC1hdXRvIG1iLWF1dG8gbWUtMlwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZC1sYWJlbCBwcy0xXCI+XHJcbiAgICAgICAgICAgICAgICB7e2F0dHJpYnV0ZUNob2ljZS5jaG9pY2V9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8IS0tIERpY3Rpb25hcnk6IE11bHRpIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdESUNUJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC1tZC02XCIgc3R5bGU9XCJyb3ctZ2FwOiA1cHhcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGRpY3Rpb25hcnlFbnRyaWVzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZW50cnkuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlTXVsdGlEaWN0Q2hhbmdlKGVudHJ5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZC1sYWJlbCBwcy0xXCI+XHJcbiAgICAgICAgICAgICAgICB7e2VudHJ5LmRpc3BsYXl9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPiAgIFxyXG5cclxuICAgIDwhLS0gRGljdGlvbmFyeSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRElDVCcgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPHNlbGVjdCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSWREaWN0aW9uYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVEaWN0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBkaWN0aW9uYXJ5RW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiZW50cnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICB7eyBlbnRyeS5kaXNwbGF5IH19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBHcmlkIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdHQSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1nYVwiIChjbGljayk9XCJhZGRHcmlkUm93KGVkaXRHcmlkTW9kYWwsIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdhLWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgZmEteHNcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1nYVwiIChjbGljayk9XCJyZW1vdmVHcmlkUm93KGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdhLWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzIGZhLXhzXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAjZ3JpZEF0dHJpYnV0ZVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lXCJcclxuICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cInRoaXMub25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG1vZGVsVXBkYXRlZCk9XCJvbk1vZGVsVXBkYXRlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChyb3dEb3VibGVDbGlja2VkKT1cImVkaXRHcmlkUm93KGVkaXRHcmlkTW9kYWwsIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cInRoaXMuZ3JpZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtyb3dTZWxlY3Rpb25dPVwiJ3NpbmdsZSdcIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImdyaWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbcm93RGF0YV09XCJncmlkRGF0YVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImF0dHJpYnV0ZS53ICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJhdHRyaWJ1dGUuaCArICdweCdcIj5cclxuICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWRpdEdyaWRNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fSBHcmlkIFJvd1xyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGhjaS1jb2QtZWRpdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHJpYnV0ZSBvZiBlZGl0R3JvdXBSb3dBdHRyaWJ1dGVzXCI+XHJcbiAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1lZGl0IFtpZF09XCInZWRpdC1pZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cEF0dHJpYnV0ZVJvd0lkXT1cImVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF0dHJpYnV0ZVwiPjwvaGNpLWF0dHJpYnV0ZS1lZGl0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ1NhdmUnKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdDYW5jZWwnKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICAgIHN0eWxlczogW1xyXG4gICAgICBgXHJcbiAgICAuaGNpLWNvZCBidXR0b24ubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tYmFzZSB7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiB1bnNldDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLWdhIHtcclxuICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICBoZWlnaHQ6IDE4cHg7XHJcbiAgICAgIHdpZHRoOiAxOHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5nYS1pY29uIHtcclxuICAgICAgZm9udC1zaXplOiAuOWVtO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29kIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUtZGVmYXVsdC1pY29uIHtcclxuICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICB3aWR0aDogMjBweDtcclxuICAgIH1cclxuICAgICAgYFxyXG4gICAgXVxyXG4gIH1cclxuKVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlRWRpdENvbXBvbmVudCBleHRlbmRzIEF0dHJpYnV0ZUJhc2Uge1xyXG5cclxuICAvL2RpY3Rpb25hcnlFbmRwb2ludCA9IHRoaXMuYXR0cmlidXRlU2VydmljZS5kaWN0aW9uYXJ5RW5kcG9pbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGF0dHJpYnV0ZVNlcnZpY2U6IEF0dHJpYnV0ZVNlcnZpY2UsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIsIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHtcclxuICAgIHN1cGVyKGF0dHJpYnV0ZVNlcnZpY2UsIGVsZW1lbnRSZWYsIHJlbmRlcmVyLCBtb2RhbFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLmluaXQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
720
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1lZGl0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7O0FBRS9EOzs7R0FHRztBQXVYSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQUV2RCxpRUFBaUU7SUFFakUsWUFBWSxnQkFBa0MsRUFBRSxVQUFzQixFQUFFLFFBQW1CLEVBQUUsWUFBc0I7UUFDakgsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFKOUQsMkNBQXNDLEdBQUcsRUFBRSxDQUFDO0lBSzVDLENBQUM7SUFFRCxJQUFJO1FBQ0YsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLHNDQUFzQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDOzhHQWJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlGQWxYN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNWSCw2cVdBNEJVLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkF0WGxDLFNBQVM7K0JBRUksb0JBQW9CLFlBRTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzVkgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtOZ2JNb2RhbH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge0F0dHJpYnV0ZUJhc2V9IGZyb20gJy4vYXR0cmlidXRlLWJhc2UnO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZXhpc3QgaW4gYSBtb2RhbCBmb3IgZWRpdGluZy5cclxuICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZmxleCBhdHRyaWJ1dGUgYmVjYXVzZSBjb21wb25lbnRzIHN1Y2ggYXMgdGhlIGdyaWQgbmVlZCBleHRyYSBjb25maWd1cmF0aW9uIGZvciBlZGl0aW5nLlxyXG4gKi9cclxuQENvbXBvbmVudChcclxuICB7XHJcbiAgICBzZWxlY3RvcjogJ2hjaS1hdHRyaWJ1dGUtZWRpdCcsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgPCEtLSBTdHJpbmcgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ1MnXCI+XHJcbiAgICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGF0dHJpYnV0ZS5oID09IHVuZGVmaW5lZCB8fCAoYXR0cmlidXRlLmggJiYgYXR0cmlidXRlLmggPD0gMjUpKVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1lZGl0LWlucHV0LXN0cmluZy17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihhdHRyaWJ1dGUuaCAmJiBhdHRyaWJ1dGUuaCA+IDI1KVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJzcGVsbGNoZWNrXCJcclxuICAgICAgICAgICAgICAgIGxhbmc9XCJlblwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDEyNXB4OyByZXNpemU6IG5vbmU7XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBUZXh0IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdUWFQnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG5cclxuICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cInNwZWxsY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgIGxhbmc9XCJlblwiXHJcbiAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQudGV4dERhdGFcIlxyXG4gICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlVGV4dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGhlaWdodDogMTI1cHg7IHJlc2l6ZTogbm9uZTtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gTnVtZXJpYyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ04nXCI+XHJcbiAgICAgICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZU51bWVyaWNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZU51bWVyaWNDaGFuZ2UoJGV2ZW50KVwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZWRpdC1pbnB1dC1udW1lcmljLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBJbnRlZ2VyIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnSSdcIj5cclxuICAgICAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSW50ZWdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlSW50ZWdlckNoYW5nZSgkZXZlbnQpXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1lZGl0LWlucHV0LWludGVnZXIte3toY2lOZ0F0dHJpYnV0ZUFic29sdXRlSW5wdXREaXNwbGF5TmFtZX19XCIvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIERhdGUgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdEJ1wiPlxyXG4gICAgICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ2YWx1ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInZhbHVlRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWVkaXQtaW5wdXQtZGF0ZS17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSAgbWF0U3VmZml4IFtmb3JdPVwidmFsdWVEYXRlXCIgY2xhc3M9XCJjb2QtZHAtdG9nZ2xlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjdmFsdWVEYXRlPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gRGF0ZSBUaW1lIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRFQnXCI+XHJcbiAgICAgICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInZhbHVlRGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVEYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImR0cGlja2VyXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1lZGl0LWlucHV0LWRhdGUtdGltZS17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIj5cclxuICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImR0cGlja2VyXCIgY2xhc3M9XCJjb2QtZHAtdG9nZ2xlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgICAgPG5neC1tYXQtZGF0ZXRpbWUtcGlja2VyICNkdHBpY2tlciBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiPjwvbmd4LW1hdC1kYXRldGltZS1waWNrZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdDQidcIj5cclxuICAgICAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVDaGVja2JveENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1lZGl0LWlucHV0LWNoZWNrYm94LXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0InXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPHNlbGVjdCBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1knXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ04nXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ04nXCI+Tm88L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRXh0ZW5kZWQgQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRUInXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPHNlbGVjdCBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1knXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ04nXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ04nXCI+Tm88L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCInVSdcIiBbc2VsZWN0ZWRdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nID09PSAnVSdcIj5Vbmtub3duPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENob2ljZTogU2luZ2xlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdBQycgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIihhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVBdHRyaWJ1dGVDaG9pY2UpP2F0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZTp1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNob2ljZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGF0dHJpYnV0ZUNob2ljZSBvZiBhdHRyaWJ1dGVDaG9pY2VzXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJhdHRyaWJ1dGVDaG9pY2UuaWRBdHRyaWJ1dGVDaG9pY2VcIj5cclxuICAgICAgICAgICAgICB7eyBhdHRyaWJ1dGVDaG9pY2UuY2hvaWNlIH19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gQ2hvaWNlOiBNdWx0aSAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0FDJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWSdcIj5cclxuICAgICAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC1tZC02XCIgc3R5bGU9XCJyb3ctZ2FwOiA1cHhcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGVDaG9pY2Ugb2YgYXR0cmlidXRlQ2hvaWNlc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYnV0ZUNob2ljZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVNdWx0aUNob2ljZUNoYW5nZShhdHRyaWJ1dGVDaG9pY2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGNoZWNrYm94IG10LWF1dG8gbWItYXV0byBtZS0yXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1lZGl0LWlucHV0LWNob2ljZS1tdWx0aXBsZS17e2F0dHJpYnV0ZUNob2ljZS5jaG9pY2V9fVwiLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZC1sYWJlbCBwcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3thdHRyaWJ1dGVDaG9pY2UuY2hvaWNlfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBEaWN0aW9uYXJ5OiBNdWx0aSAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0RJQ1QnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdZJ1wiPlxyXG4gICAgICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLW1kLTZcIiBzdHlsZT1cInJvdy1nYXA6IDVweFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGRpY3Rpb25hcnlFbnRyaWVzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZW50cnkuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVNdWx0aURpY3RDaGFuZ2UoZW50cnkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2hlY2tib3hcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWVkaXQtaW5wdXQtZGljdGlvbmFyeS1jaG9pY2Ute3tlbnRyeS5kaXNwbGF5fX1cIi8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2QtbGFiZWwgcHMtMVwiPlxyXG4gICAgICAgICAgICAgICAge3tlbnRyeS5kaXNwbGF5fX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj4gICBcclxuXHJcbiAgICA8IS0tIERpY3Rpb25hcnkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0RJQ1QnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxzZWxlY3QgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUlkRGljdGlvbmFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlRGljdENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZW50cnkgb2YgZGljdGlvbmFyeUVudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImVudHJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAge3sgZW50cnkuZGlzcGxheSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gR3JpZCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnR0EnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tZ2FcIiAoY2xpY2spPVwiYWRkR3JpZFJvdyhlZGl0R3JpZE1vZGFsLCBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnYS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIGZhLXhzXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tZ2FcIiAoY2xpY2spPVwicmVtb3ZlR3JpZFJvdyhhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnYS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51cyBmYS14c1wiPjwvaT5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgI2dyaWRBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWFscGluZVwiXHJcbiAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJ0aGlzLm9uR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChtb2RlbFVwZGF0ZWQpPVwib25Nb2RlbFVwZGF0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGdyaWRTaXplQ2hhbmdlZCk9XCJvbkdyaWRTaXplQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAocm93RG91YmxlQ2xpY2tlZCk9XCJlZGl0R3JpZFJvdyhlZGl0R3JpZE1vZGFsLCBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJ0aGlzLmdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICBbcm93U2VsZWN0aW9uXT1cIidzaW5nbGUnXCJcclxuICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJncmlkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ3JpZERhdGFcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJhdHRyaWJ1dGUudyArICdweCdcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYXR0cmlidXRlLmggKyAncHgnXCI+XHJcbiAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2VkaXRHcmlkTW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX0gR3JpZCBSb3dcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGQtZmxleCBmbGV4LWNvbHVtbiBoY2ktY29kLWVkaXRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2YgZWRpdEdyb3VwUm93QXR0cmlidXRlc1wiPlxyXG4gICAgICAgICAgPGhjaS1hdHRyaWJ1dGUtZWRpdCBbaWRdPVwiJ2VkaXQtaWQtYXR0cmlidXRlLScgKyBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBBdHRyaWJ1dGVSb3dJZF09XCJlZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVdPVwiYXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHRyaWJ1dGVcIj48L2hjaS1hdHRyaWJ1dGUtZWRpdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdTYXZlJylcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJjbG9zZSgnQ2FuY2VsJylcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgYFxyXG4gICAgLmhjaS1jb2QgYnV0dG9uLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWJhc2Uge1xyXG4gICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICBsaW5lLWhlaWdodDogdW5zZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1nYSB7XHJcbiAgICAgIHBhZGRpbmc6IDBweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICB3aWR0aDogMThweDtcclxuICAgIH1cclxuXHJcbiAgICAuZ2EtaWNvbiB7XHJcbiAgICAgIGZvbnQtc2l6ZTogLjllbTtcclxuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvZCAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWRlZmF1bHQtaWNvbiB7XHJcbiAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUVkaXRDb21wb25lbnQgZXh0ZW5kcyBBdHRyaWJ1dGVCYXNlIHtcclxuICBoY2lOZ0F0dHJpYnV0ZUFic29sdXRlSW5wdXREaXNwbGF5TmFtZSA9IFwiXCI7XHJcbiAgLy8gZGljdGlvbmFyeUVuZHBvaW50ID0gdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmRpY3Rpb25hcnlFbmRwb2ludDtcclxuXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcmVuZGVyZXI6IFJlbmRlcmVyMiwgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge1xyXG4gICAgc3VwZXIoYXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZiwgcmVuZGVyZXIsIG1vZGFsU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIuaW5pdCgpO1xyXG4gICAgaWYgKHRoaXMuYXR0cmlidXRlICYmIHRoaXMuYXR0cmlidXRlLmRpc3BsYXlOYW1lKSB7XHJcbiAgICAgIHRoaXMuaGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWUgPSB0aGlzLmF0dHJpYnV0ZS5kaXNwbGF5TmFtZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|