@wemake4u/form-player-se 1.0.37 → 1.0.39
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/LICENSE +21 -0
- package/esm2022/lib/controls/table.mjs +4 -1
- package/esm2022/lib/directives/alert.directive.mjs +44 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +5 -4
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +32 -7
- package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +2 -1
- package/esm2022/lib/services/compute.service.mjs +6 -2
- package/esm2022/lib/services/disable.service.mjs +7 -5
- package/esm2022/lib/services/feel.service.mjs +24 -1
- package/esm2022/lib/services/grid.service.mjs +42 -15
- package/esm2022/lib/services/programmability.service.mjs +8 -1
- package/esm2022/lib/services/sanitize.service.mjs +2 -2
- package/esm2022/lib/services/scope.service.mjs +6 -1
- package/esm2022/lib/services/validation.service.mjs +9 -2
- package/esm2022/lib/utils/string.mjs +6 -0
- package/fesm2022/wemake4u-form-player-se.mjs +207 -57
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/controls/table.d.ts +1 -0
- package/lib/directives/alert.directive.d.ts +15 -0
- package/lib/dynamic-form/dynamic-form.component.d.ts +4 -0
- package/lib/services/compute.service.d.ts +1 -0
- package/lib/services/disable.service.d.ts +1 -1
- package/lib/services/feel.service.d.ts +2 -0
- package/lib/services/grid.service.d.ts +6 -2
- package/lib/services/programmability.service.d.ts +1 -0
- package/lib/services/scope.service.d.ts +1 -0
- package/lib/services/validation.service.d.ts +1 -0
- package/lib/utils/string.d.ts +1 -0
- package/package.json +1 -1
|
@@ -223,6 +223,7 @@ export class DynamicFormComponent {
|
|
|
223
223
|
if (this.initialized)
|
|
224
224
|
this.initialized.emit(this.formGroup);
|
|
225
225
|
this.registerHandlers();
|
|
226
|
+
this.assignActivaNav();
|
|
226
227
|
}
|
|
227
228
|
onChangeValue() {
|
|
228
229
|
try {
|
|
@@ -242,6 +243,12 @@ export class DynamicFormComponent {
|
|
|
242
243
|
this.suspendValueChanges = false;
|
|
243
244
|
this.emitValueChange();
|
|
244
245
|
}
|
|
246
|
+
this.assignActivaNav();
|
|
247
|
+
}
|
|
248
|
+
assignActivaNav() {
|
|
249
|
+
if (!this.isFormActivable(this._activeNav)) {
|
|
250
|
+
this._activeNav = this.getNextFrom(-1);
|
|
251
|
+
}
|
|
245
252
|
}
|
|
246
253
|
suspendValueChanges = false;
|
|
247
254
|
registerHandlers() {
|
|
@@ -284,10 +291,13 @@ export class DynamicFormComponent {
|
|
|
284
291
|
}
|
|
285
292
|
}
|
|
286
293
|
getNext() {
|
|
287
|
-
|
|
294
|
+
return this.getNextFrom(this.activeNav);
|
|
295
|
+
}
|
|
296
|
+
getNextFrom(from) {
|
|
297
|
+
let index = from + 1;
|
|
288
298
|
const max = this.getMaxNav();
|
|
289
299
|
while (index < max) {
|
|
290
|
-
if (
|
|
300
|
+
if (this.isFormActivable(index)) {
|
|
291
301
|
return index;
|
|
292
302
|
}
|
|
293
303
|
index++;
|
|
@@ -295,9 +305,12 @@ export class DynamicFormComponent {
|
|
|
295
305
|
return -1;
|
|
296
306
|
}
|
|
297
307
|
getPrevious() {
|
|
298
|
-
|
|
308
|
+
return this.getPreviousFrom(this.activeNav);
|
|
309
|
+
}
|
|
310
|
+
getPreviousFrom(from) {
|
|
311
|
+
let index = from - 1;
|
|
299
312
|
while (index >= 0) {
|
|
300
|
-
if (
|
|
313
|
+
if (this.isFormActivable(index)) {
|
|
301
314
|
return index;
|
|
302
315
|
}
|
|
303
316
|
index--;
|
|
@@ -308,6 +321,12 @@ export class DynamicFormComponent {
|
|
|
308
321
|
return this._forms.length ?? 0;
|
|
309
322
|
}
|
|
310
323
|
;
|
|
324
|
+
isFormActivable(index) {
|
|
325
|
+
return index >= 0
|
|
326
|
+
&& index < this.getMaxNav()
|
|
327
|
+
&& !this.isDisabled(index)
|
|
328
|
+
&& !this.isInactive(index);
|
|
329
|
+
}
|
|
311
330
|
isDisabled(index) {
|
|
312
331
|
var form = this._forms[index];
|
|
313
332
|
if (!form)
|
|
@@ -375,10 +394,10 @@ export class DynamicFormComponent {
|
|
|
375
394
|
};
|
|
376
395
|
const control = formBuilder.control(defaultValue, options);
|
|
377
396
|
currentGroup.addControl(component.key, control);
|
|
397
|
+
this.validationService.addToCollection(validationCollection, control, currentGroup, component);
|
|
378
398
|
this.statusService.addToCollection(statusCollection, control);
|
|
379
399
|
this.disableService.addToCollection(disableCollection, control, formGroup, component);
|
|
380
400
|
this.computeService.addToCollection(computeCollection, control, formGroup, component);
|
|
381
|
-
this.validationService.addToCollection(validationCollection, control, currentGroup, component);
|
|
382
401
|
this.eventService.addToCollection(eventCollection, control, currentGroup, component);
|
|
383
402
|
}
|
|
384
403
|
}
|
|
@@ -399,19 +418,25 @@ export class DynamicFormComponent {
|
|
|
399
418
|
if (itemComponent.key) {
|
|
400
419
|
const currentGroup = this.applyPath(formBuilder, formGroup, itemComponent.path);
|
|
401
420
|
const formArray = this.createFormArray(formBuilder, currentGroup, itemComponent);
|
|
421
|
+
this.validationService.addToCollection(validationCollection, formArray, currentGroup, component);
|
|
402
422
|
this.statusService.addToCollection(statusCollection, formArray);
|
|
403
423
|
}
|
|
404
424
|
}
|
|
405
425
|
else if (this.isComponentWithInput(component)) {
|
|
406
426
|
const currentGroup = this.applyPath(this.fb, formGroup, component.path);
|
|
407
427
|
if (currentGroup.contains(component.key)) {
|
|
408
|
-
|
|
428
|
+
const control = currentGroup.get(component.key);
|
|
429
|
+
this.validationService.addToCollection(validationCollection, control, currentGroup, component);
|
|
430
|
+
this.statusService.addToCollection(statusCollection, control);
|
|
431
|
+
this.disableService.addToCollection(disableCollection, control, currentGroup, component);
|
|
409
432
|
return;
|
|
410
433
|
}
|
|
411
434
|
else {
|
|
412
435
|
const control = formBuilder.control(null);
|
|
413
436
|
currentGroup.addControl(component.key, control);
|
|
437
|
+
this.validationService.addToCollection(validationCollection, control, currentGroup, component);
|
|
414
438
|
this.statusService.addToCollection(statusCollection, control);
|
|
439
|
+
this.disableService.addToCollection(disableCollection, control, currentGroup, component);
|
|
415
440
|
}
|
|
416
441
|
}
|
|
417
442
|
});
|
|
@@ -668,4 +693,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
668
693
|
}], activeNav: [{
|
|
669
694
|
type: Input
|
|
670
695
|
}] } });
|
|
671
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDOUMsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsU0FBUyxFQUF1QyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQXNCLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBb0IsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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O2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDZSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBOEVoQixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHlwZXMvdHlwaW5ncy5kLnRzXCIgLz5cclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSBcclxuICAsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBFdmVudEVtaXR0ZXJcclxuICAsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSW5qZWN0b3JcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2xPcHRpb25zLCBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciwgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UsIFZhbGlkYXRpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlzYWJsZVNlcnZpY2UsIERpc2FibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvZGlzYWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RhdHVzU2VydmljZSwgU3RhdHVzQ29sbGVjdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlLCBFdmVudENvbGxlY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcHV0ZVNlcnZpY2UsIENvbXB1dGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcHV0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ3JvdXBCeVJvdyB9IGZyb20gJy4uL3V0aWxzL2dyb3VwQnlSb3cnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGdW5jdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mdW5jdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRm9ybURpYWxvZ09wdGlvbnMgfSBmcm9tICcuLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNGaWVsZHNDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZpZWxkcy9keW5hbWljLWZpZWxkcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIFNpcmlvU2lkZW5hdk1vYmlsZUNvbXBvbmVudCwgU2lyaW9TaWRlbmF2Q29tcG9uZW50LCBTaXJpb1NpZGVuYXZJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb0J1dHRvbkNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NCYXJDb21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzSXRlbUNvbXBvbmVudFxyXG4gICwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXMsIE5neFNpcmlvRXZlbnRcclxufSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVnaXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yZWdpc3Rlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3JtSW5kZXhEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm1JbmRleC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUb0JvdW5kQXJyb3dzIH0gZnJvbSAnLi4vdXRpbHMvYm91bmQnO1xyXG5cclxuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uL2NvbnRyb2xzL2NvbnRyb2wnOyBcclxuaW1wb3J0IHsgc2V0Rm9jdXMgfSBmcm9tICcuLi91dGlscy9mb2N1c2FibGUnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQHdlbWFrZTR1L2ludGVyYWN0JztcclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlJztcclxuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxpemUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZHluYW1pYy1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuLi9zaGFyZWQvYm9vdHN0cmFwLWdyaWQuc2NzcycsXHJcbiAgICAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcydcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gICAgLCBSZWdpc3RlckRpcmVjdGl2ZSwgRm9ybUluZGV4RGlyZWN0aXZlXHJcbiAgICAsIFNpcmlvU2lkZW5hdk1vYmlsZUNvbXBvbmVudCwgU2lyaW9TaWRlbmF2Q29tcG9uZW50LCBTaXJpb1NpZGVuYXZJdGVtQ29tcG9uZW50XHJcbiAgICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0JhckNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NJdGVtQ29tcG9uZW50XHJcbiAgICAsIER5bmFtaWNGaWVsZHNDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBWYWxpZGF0aW9uU2VydmljZVxyXG4gICAgLCBEaXNhYmxlU2VydmljZVxyXG4gICAgLCBDb21wdXRlU2VydmljZVxyXG4gICAgLCBTdGF0dXNTZXJ2aWNlXHJcbiAgICAsIEV2ZW50U2VydmljZVxyXG4gICAgLCBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgTWV0YWRhdGFTZXJ2aWNlXHJcbiAgICAsIEZ1bmN0aW9uU2VydmljZVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuICBASW5wdXQoKSBzY2hlbWE6IGFueTtcclxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgcmVhZE9ubHk6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSB2YWx1ZTogYW55ID0ge307XHJcbiAgQElucHV0KCkgc3RyaWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd05hdjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd05hdkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1Byb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0Zvcm1UaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByb2dyZXNzU3RhdHVzOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcclxuICBAT3V0cHV0KCkgYWN0aXZlTmF2Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdCcpIGZvcm1EaXYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICAgICwgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBkaXNhYmxlU2VydmljZTogRGlzYWJsZVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBjb21wdXRlU2VydmljZTogQ29tcHV0ZVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBzdGF0dXNTZXJ2aWNlOiBTdGF0dXNTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSByZWdpc3RlclNlcnZpY2U6IFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgdGhpcy5wcm9ncmFtbWFiaWxpdHkuYWRkRXZhbHVhdG9yUHJvdmlkZXJzKHRoaXMpO1xyXG4gIH1cclxuICBcclxuICBUZXh0cyA9IFRleHRzO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJIYW5kbGVycygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlU2NoZW1hKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10gJiYgIXRoaXMuaXNFbWl0dGVkVmFsdWUodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1zKCk6IEFycmF5PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1zO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgY2FuUHJldmlvdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91cygpICE9IC0xOyBcclxuICB9XHJcblxyXG4gIGdvUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aW91cygpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXRQcmV2aW91cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuTmV4dCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldE5leHQoKSAhPSAtMTsgICAgXHJcbiAgfVxyXG5cclxuICBnb05leHQoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5OZXh0KCkpIHsgXHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXROZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZyk6IENvbnRyb2wgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyU2VydmljZS5nZXRDb250cm9sKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbEFzPFQgZXh0ZW5kcyBDb250cm9sPihuYW1lOiBzdHJpbmcsIHR5cGU6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBUIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlclNlcnZpY2UuZ2V0Q29udHJvbEFzKG5hbWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZU5hdigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZU5hdjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGl2ZU5hdih2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8IHRoaXMuZ2V0TWF4TmF2KCkpIHtcclxuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh2YWx1ZSkgfHwgdGhpcy5pc0luYWN0aXZlKHZhbHVlKSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIHRoaXMuX2FjdGl2ZU5hdiA9IHZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtRGl2Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICBzZXRGb2N1cyh0aGlzLmZvcm1EaXYubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWN0aXZlTmF2Q2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlTmF2KTtcclxuICAgICAgfSk7XHJcbiAgICB9ICAgICAgICBcclxuICB9XHJcblxyXG4gIGdldEZvcm1Hcm91cChwYXRoOiBzdHJpbmcgfCBudWxsKTogRm9ybUdyb3VwIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBwYXRoID8gdGhpcy5mb3JtR3JvdXAuZ2V0KHBhdGgpIDogdGhpcy5mb3JtR3JvdXA7XHJcbiAgICBpZiAoIShjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRyb2wgaXMgbm90IGEgRm9ybUdyb3VwJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldEZvcm1TdGF0dXMoZm9ybTogYW55LCBpbmRleDogbnVtYmVyKTogU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXMge1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnQgPSBpbmRleCA9PSB0aGlzLmFjdGl2ZU5hdjtcclxuXHJcbiAgICBpZiAodGhpcy5pc0luYWN0aXZlKGluZGV4KSkge1xyXG4gICAgICByZXR1cm4gXCJpbmFjdGl2ZVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5wcm9ncmVzc1N0YXR1cyAmJiAhY3VycmVudCkge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmNvdW50SW52YWxpZHMoZm9ybSk7XHJcbiAgICAgIHJldHVybiBlcnJvcnMgPiAwID8gXCJlcnJvclwiIDogXCJzdWNjZXNzXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFwiYWN0aXZlXCI7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgY291bnRJbnZhbGlkcyhmb3JtOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzU2VydmljZS5jb3VudEludmFsaWQoZm9ybSk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZUZvcm0oZXZlbnQ6IE5neFNpcmlvRXZlbnQ8U2lyaW9TdGVwcGVyUHJvZ3Jlc3NCYXJDb21wb25lbnQ+KSB7XHJcbiAgICBjb25zdCBmb3JtSW5kZXggPSAoZXZlbnQuY29tcG9uZW50IGFzIGFueSkuZm9ybUluZGV4O1xyXG4gICAgaWYgKHR5cGVvZiBmb3JtSW5kZXggPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gZm9ybUluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZUJvb2xlYW4odGhpcy5mb3JtR3JvdXAsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVGVtcGxhdGUodmFsdWU6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlVGVtcGxhdGUodGhpcy5mb3JtR3JvdXAsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9wZW5Gb3JtKHRlbXBsYXRlOiBzdHJpbmcsIG9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5tZXRhZGF0YS5nZXRUZW1wbGF0ZUJ5TmFtZSh0ZW1wbGF0ZSk7XHJcbiAgICBpZiAoZm9ybVNjaGVtYSkge1xyXG4gICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZyhmb3JtU2NoZW1hLCBvcHRpb25zKTtcclxuICAgIH0gICAgICAgIFxyXG4gIH1cclxuXHJcbiAgaXNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmRpcnR5O1xyXG4gIH1cclxuXHJcbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC52YWxpZDtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdjYW5QcmV2aW91cycsXHJcbiAgICAgICdnb1ByZXZpb3VzJyxcclxuICAgICAgJ2Nhbk5leHQnLFxyXG4gICAgICAnZ29OZXh0JyxcclxuICAgICAgJ2FjdGl2ZU5hdidcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIHByaXZhdGUgX2Zvcm1zOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZU5hdjogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueSA9IHsgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZVNjaGVtYSgpIHtcclxuICAgIGlmICghdGhpcy5mb3JtR3JvdXApIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsZWFyQ29udHJvbHMoKTtcclxuXHJcbiAgICB0aGlzLmNsZWFySGFuZGxlcnMoKTtcclxuXHJcbiAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnNjaGVtYTtcclxuXHJcbiAgICBjb25zdCBhbGxGb3JtcyA9IGdyb3VwQnlSb3coc2NoZW1hLmZvcm1zID8/IFtdKTtcclxuXHJcbiAgICB0aGlzLm1ldGFkYXRhLnNldFNjaGVtYShzY2hlbWEpO1xyXG5cclxuICAgIHRoaXMubWV0YWRhdGEuc2V0Rm9ybXMoYWxsRm9ybXMpO1xyXG5cclxuICAgIHRoaXMuX2Zvcm1zID0gYWxsRm9ybXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1RlbXBsYXRlICE9PSB0cnVlKTtcclxuXHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgdGhpcy5mb3JtU2VydmljZS5wYXRjaCh0aGlzLmZvcm1Hcm91cCwgdGhpcy52YWx1ZSwge1xyXG4gICAgICAgIHN0cmljdDogdGhpcy5zdHJpY3RcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpXHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgdGhpcy5yZWdpc3RlckhhbmRsZXJzKCk7ICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VWYWx1ZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc3VwcHJlc3MgPSB0cnVlO1xyXG4gICAgICB0aGlzLnN1c3BlbmRWYWx1ZUNoYW5nZXMgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3QgZW1pdEV2ZW50ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVzZXQodGhpcy5kZWZhdWx0VmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgICB0aGlzLmNsZWFyRm9ybUFycmF5cyh0aGlzLmZvcm1Hcm91cCwgZW1pdEV2ZW50KTtcclxuICAgICAgdGhpcy5mb3JtU2VydmljZS5wYXRjaCh0aGlzLmZvcm1Hcm91cCwgdGhpcy52YWx1ZSwge1xyXG4gICAgICAgIGVtaXRFdmVudCxcclxuICAgICAgICBzdHJpY3Q6IHRoaXMuc3RyaWN0XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc3VwcHJlc3MgPSBmYWxzZTtcclxuICAgICAgdGhpcy5mb3JtU2VydmljZS51cGRhdGVBbGxWYWx1ZUFuZFZhbGlkaXR5KHRoaXMuZm9ybUdyb3VwLCB0cnVlKTtcclxuICAgICAgdGhpcy5zdXNwZW5kVmFsdWVDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW1pdFZhbHVlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1c3BlbmRWYWx1ZUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdXNwZW5kVmFsdWVDaGFuZ2VzKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2UoKTsgICAgICBcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgY2xlYXJIYW5kbGVycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0dGVkVmFsdWVzID0gbmV3IFdlYWtNYXA8b2JqZWN0LCB0cnVlPigpO1xyXG5cclxuICBwcml2YXRlIGlzRW1pdHRlZFZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHRoaXMuZW1pdHRlZFZhbHVlcy5oYXModmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuZW1pdHRlZFZhbHVlcy5kZWxldGUodmFsdWUpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XHJcbiAgICB0aGlzLmVtaXR0ZWRWYWx1ZXMuc2V0KG5ld1ZhbHVlLCB0cnVlKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zdXNwZW5kVmFsdWVDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mb3JtU2VydmljZS5wYXRjaCh0aGlzLmZvcm1Hcm91cCwgdGhpcy52YWx1ZSwge1xyXG4gICAgICAgIHN0cmljdDogdGhpcy5zdHJpY3RcclxuICAgICAgfSk7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLnN1c3BlbmRWYWx1ZUNoYW5nZXMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmV4dCgpOiBudW1iZXIge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hY3RpdmVOYXYgKyAxO1xyXG4gICAgY29uc3QgbWF4ID0gdGhpcy5nZXRNYXhOYXYoKTtcclxuXHJcbiAgICB3aGlsZSAoaW5kZXggPCBtYXgpIHtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoaW5kZXgpICYmICF0aGlzLmlzSW5hY3RpdmUoaW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIGluZGV4Kys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91cygpOiBudW1iZXIge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hY3RpdmVOYXYgLSAxO1xyXG5cclxuICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKGluZGV4KSAmJiAhdGhpcy5pc0luYWN0aXZlKGluZGV4KSkge1xyXG4gICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgfVxyXG4gICAgICBpbmRleC0tO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TWF4TmF2KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybXMubGVuZ3RoID8/IDA7ICAgIFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaXNEaXNhYmxlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICB2YXIgZm9ybSA9IHRoaXMuX2Zvcm1zW2luZGV4XTtcclxuXHJcbiAgICBpZiAoIWZvcm0pXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZCkgPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW5hY3RpdmUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgdmFyIGZvcm0gPSB0aGlzLl9mb3Jtc1tpbmRleF07XHJcblxyXG4gICAgaWYgKCFmb3JtKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVCb29sZWFuKGZvcm0uaW5hY3RpdmUpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckNvbnRyb2xzKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbChrZXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyRm9ybUFycmF5cyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGVtaXRFdmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkgJiYgY29udHJvbC5jb250cm9scy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnRyb2wuY2xlYXIoeyBlbWl0RXZlbnQgfSk7XHJcbiAgICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goY2hpbGRDb250cm9sID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyRm9ybUFycmF5cyhjaGlsZENvbnRyb2wsIGVtaXRFdmVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZvcm0oKSB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uQ29sbGVjdGlvbiA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgY29uc3QgZGlzYWJsZUNvbGxlY3Rpb24gPSB0aGlzLmRpc2FibGVTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgIGNvbnN0IGV2ZW50Q29sbGVjdGlvbiA9IHRoaXMuZXZlbnRTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgIGNvbnN0IGNvbXB1dGVDb2xsZWN0aW9uID0gdGhpcy5jb21wdXRlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICB0aGlzLmZvcm1zLmZvckVhY2goKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2xsZWN0aW9uID0gdGhpcy5zdGF0dXNTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgodGhpcy5mYiwgdGhpcy5mb3JtR3JvdXAsIGZvcm0ucGF0aCk7XHJcbiAgICAgIGlmICh0aGlzLmhhc1BhdGgoZm9ybS5wYXRoKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjdXJyZW50R3JvdXAsIHRoaXMuZm9ybUdyb3VwLCBmb3JtKTtcclxuICAgICAgfVxyXG4gICAgICBmb3JtLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRDb250cm9scyh0aGlzLmZiLCBjdXJyZW50R3JvdXAsIHJvdy5jb21wb25lbnRzXHJcbiAgICAgICAgICAsIGRpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGNvbXB1dGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgICAgICwgZXZlbnRDb2xsZWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXR1cENvbGxlY3Rpb24oZm9ybSwgc3RhdHVzQ29sbGVjdGlvbik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlzYWJsZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMuY29tcHV0ZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGNvbXB1dGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihldmVudENvbGxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRDb250cm9scyhmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXJcclxuICAgICwgZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50czogQXJyYXk8YW55PlxyXG4gICAgLCBkaXNhYmxlQ29sbGVjdGlvbjogRGlzYWJsZUNvbGxlY3Rpb25cclxuICAgICwgY29tcHV0ZUNvbGxlY3Rpb246IENvbXB1dGVDb2xsZWN0aW9uXHJcbiAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uOiBWYWxpZGF0aW9uQ29sbGVjdGlvblxyXG4gICAgLCBzdGF0dXNDb2xsZWN0aW9uOiBTdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAsIGV2ZW50Q29sbGVjdGlvbjogRXZlbnRDb2xsZWN0aW9uKSB7XHJcbiAgICBsZXQgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29tcG9uZW50cz8uZm9yRWFjaCgoY29tcG9uZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aCh0aGlzLmZiLCBmb3JtR3JvdXAsIGNvbXBvbmVudC5wYXRoKTtcclxuICAgICAgICBpZiAoY3VycmVudEdyb3VwLmNvbnRhaW5zKGNvbXBvbmVudC5rZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHN0YXR1c0NvbGxlY3Rpb24sIGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoY29tcG9uZW50KTtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IEZvcm1Db250cm9sT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgdXBkYXRlT246IHRoaXMuZ2V0VXBkYXRlT24oY29tcG9uZW50KSB8fCBcImNoYW5nZVwiLFxyXG4gICAgICAgICAgICBub25OdWxsYWJsZTogKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUJ1aWxkZXIuY29udHJvbChkZWZhdWx0VmFsdWUsIG9wdGlvbnMpOyAgICAgICAgICBcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihzdGF0dXNDb2xsZWN0aW9uLCBjb250cm9sKTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbiwgY29udHJvbCwgZm9ybUdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihldmVudENvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5pc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVycyA9IHRoaXMuZ2V0Q29udGFpbmVycyhjb21wb25lbnQpO1xyXG4gICAgICAgIGNvbnRhaW5lcnM/LmZvckVhY2goKGNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgY29udGFpbmVyLnBhdGgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGFzUGF0aChjb250YWluZXIucGF0aCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24sIGN1cnJlbnRHcm91cCwgZm9ybUdyb3VwLCBjb250YWluZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGFpbmVyLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHNcclxuICAgICAgICAgICAgICAsIGRpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBjb21wdXRlQ29sbGVjdGlvblxyXG4gICAgICAgICAgICAgICwgdmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICAgICAgICAgICAsIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgICAgICAgICAsIGV2ZW50Q29sbGVjdGlvbik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQXJyYXlDb21wb25lbnQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSB0aGlzLmdldEFycmF5SXRlbShjb21wb25lbnQpO1xyXG4gICAgICAgIGlmIChpdGVtQ29tcG9uZW50LmtleSkge1xyXG4gICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgaXRlbUNvbXBvbmVudC5wYXRoKTtcclxuICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuY3JlYXRlRm9ybUFycmF5KGZvcm1CdWlsZGVyLCBjdXJyZW50R3JvdXAsIGl0ZW1Db21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihzdGF0dXNDb2xsZWN0aW9uLCBmb3JtQXJyYXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQ29tcG9uZW50V2l0aElucHV0KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aCh0aGlzLmZiLCBmb3JtR3JvdXAsIGNvbXBvbmVudC5wYXRoKTtcclxuICAgICAgICBpZiAoY3VycmVudEdyb3VwLmNvbnRhaW5zKGNvbXBvbmVudC5rZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHN0YXR1c0NvbGxlY3Rpb24sIGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihzdGF0dXNDb2xsZWN0aW9uLCBjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtQXJyYXkoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXHJcbiAgICAsIGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW1Db21wb25lbnQ6IGFueSk6IEZvcm1BcnJheSB7XHJcbiAgICBjb25zdCBmb3JtQ29tcG9uZW50ID0gdGhpcztcclxuXHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtQnVpbGRlci5hcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LmtleSwgZm9ybUFycmF5KTtcclxuXHJcbiAgICBjb25zdCBjcmVhdGVJdGVtID0gZnVuY3Rpb24gKHRhcmdldDogRm9ybUFycmF5IHwgbnVsbCk6IEZvcm1Hcm91cCB7XHJcbiAgICAgIGNvbnN0IHN0YXR1c0NvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LnN0YXR1c1NlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQudmFsaWRhdGlvblNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCBldmVudENvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LmV2ZW50U2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGRpc2FibGVDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5kaXNhYmxlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGNvbXB1dGVDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5jb21wdXRlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGxldCBuZXdHcm91cCA9IGZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgdGFyZ2V0Py5wdXNoKG5ld0dyb3VwKTtcclxuICAgICAgaXRlbUNvbXBvbmVudC5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIG5ld0dyb3VwLCByb3cuY29tcG9uZW50c1xyXG4gICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBjb21wdXRlQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGV2ZW50Q29sbGVjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBpZ25vcmUgc3RhdHVzQ29sbGVjdGlvblxyXG4gICAgICBmb3JtQ29tcG9uZW50LmRpc2FibGVTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihkaXNhYmxlQ29sbGVjdGlvbik7XHJcbiAgICAgIGZvcm1Db21wb25lbnQuY29tcHV0ZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGNvbXB1dGVDb2xsZWN0aW9uKTtcclxuICAgICAgZm9ybUNvbXBvbmVudC52YWxpZGF0aW9uU2VydmljZS5zZXR1cENvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24pO1xyXG4gICAgICBmb3JtQ29tcG9uZW50LmV2ZW50U2VydmljZS5zZXR1cENvbGxlY3Rpb24oZXZlbnRDb2xsZWN0aW9uKTtcclxuICAgICAgcmV0dXJuIG5ld0dyb3VwO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZXNpemVGb3JtQXJyYXkgPSB0aGlzLnJlc2l6ZUZvcm1BcnJheTtcclxuXHJcbiAgICBjb25zdCBhZGRJdGVtID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSkge1xyXG4gICAgICByZXR1cm4gY3JlYXRlSXRlbSh0aGlzKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY3JlYXRlTmV3QXJyYXkgPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gbmV3IEZvcm1BcnJheShbXSk7XHJcbiAgICAgIHByZXBhcmVBcnJheShuZXdBcnJheSk7XHJcbiAgICAgIHJldHVybiBuZXdBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmVwYXJlQXJyYXkgPSAoYXJyYXk6IGFueSkgPT4ge1xyXG4gICAgICBhcnJheS5hZGRJdGVtID0gYWRkSXRlbTtcclxuICAgICAgYXJyYXkuY3JlYXRlSXRlbSA9IGNyZWF0ZUl0ZW07XHJcbiAgICAgIGFycmF5LnJlc2l6ZSA9IHJlc2l6ZTtcclxuICAgICAgYXJyYXkuY3JlYXRlTmV3QXJyYXkgPSBjcmVhdGVOZXdBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNpemUgPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5LCBzaXplOiBudW1iZXIpIHtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSByZXNpemVGb3JtQXJyYXkodGhpcywgc2l6ZSwgY3JlYXRlSXRlbSk7XHJcbiAgICAgIHByZXBhcmVBcnJheShuZXdBcnJheSk7XHJcbiAgICAgIGZvcm1Hcm91cC5zZXRDb250cm9sKGl0ZW1Db21wb25lbnQua2V5LCBuZXdBcnJheSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHByZXBhcmVBcnJheShmb3JtQXJyYXkpO1xyXG5cclxuICAgIC8vIHVzZWQgZXh0ZXJuYWxseTogYWRkSXRlbSwgcmVzaXplXHJcblxyXG4gICAgcmV0dXJuIGZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplRm9ybUFycmF5KGZvcm1BcnJheTogRm9ybUFycmF5LCBzaXplOiBudW1iZXIsIGNyZWF0ZUl0ZW06ICh0YXJnZXQ6IEZvcm1BcnJheSB8IG51bGwpID0+IEZvcm1Hcm91cCkgOiBGb3JtQXJyYXkge1xyXG4gICAgaWYgKGZvcm1BcnJheS5sZW5ndGggPCBzaXplKSB7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gbmV3IEZvcm1BcnJheShmb3JtQXJyYXkuY29udHJvbHMpO1xyXG4gICAgICB3aGlsZSAoZm9ybUFycmF5Lmxlbmd0aCA8IHNpemUpIHtcclxuICAgICAgICBjcmVhdGVJdGVtKG5ld0FycmF5KTsgICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdBcnJheTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvcm1BcnJheS5sZW5ndGggPiBzaXplKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scy5zbGljZSgwLCBzaXplKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1BcnJheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzUGF0aCh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UGF0aChmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5oYXNQYXRoKHBhdGgpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtR3JvdXA7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudEdyb3VwOiBGb3JtR3JvdXAgPSBmb3JtR3JvdXA7XHJcbiAgICB0aGlzLnNwbGl0UGF0aChwYXRoKS5mb3JFYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0R3JvdXAgPSBjdXJyZW50R3JvdXAuZ2V0KHNlZ21lbnQpO1xyXG4gICAgICBpZiAoZXhpc3RHcm91cCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgIGN1cnJlbnRHcm91cCA9IGV4aXN0R3JvdXA7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGV4aXN0R3JvdXApIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgZm9ybSBncm91cCBiZWNhdXNlIGFuIGVsZW1lbnQgd2l0aCBwYXRoICR7c2VnbWVudH0gYWxyZWFkeSBleGlzdHNgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBzZWdtZW50R3JvdXAgPSBmb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woc2VnbWVudCwgc2VnbWVudEdyb3VwKTtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBzZWdtZW50R3JvdXA7XHJcbiAgICAgIH0gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjdXJyZW50R3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRm9ybUNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgY2FzZSBcImNoZWNrbGlzdFwiOlxyXG4gICAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcclxuICAgICAgY2FzZSBcImZpbGVwaWNrZXJcIjpcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICBjYXNlIFwicmFkaW9cIjpcclxuICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICBjYXNlIFwidGFnbGlzdFwiOlxyXG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgY2FzZSBcInRleHRmaWVsZFwiOlxyXG4gICAgICBjYXNlIFwicmFuZ2VcIjpcclxuICAgICAgY2FzZSBcImV4cHJlc3Npb25cIjpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29udGFpbmVyQ29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJncm91cFwiOlxyXG4gICAgICBjYXNlIFwidGFiXCI6XHJcbiAgICAgIGNhc2UgXCJhY2NvcmRpb25cIjpcclxuICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICBcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29tcG9uZW50V2l0aElucHV0KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29tcG9uZW50LnR5cGUgPT09IFwiY29tcG9uZW50XCJcclxuICAgICAgJiYgY29tcG9uZW50LmlzSW5wdXQgPT09IHRydWVcclxuICAgICAgJiYgY29tcG9uZW50LmtleTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNBcnJheUNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiZHluYW1pY2xpc3RcIjpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgZ2V0QXJyYXlJdGVtKGNvbXBvbmVudDogYW55KTogeyBrZXk6IGFueTsgcGF0aDogYW55OyByb3dzOiBhbnkgfSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdkeW5hbWljbGlzdCcpIHtcclxuICAgICAgcmV0dXJuIHsga2V5OiBjb21wb25lbnQua2V5LCBwYXRoOiBjb21wb25lbnQucGF0aCwgcm93czogY29tcG9uZW50LnJvd3MgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBrZXk6IG51bGwsIHBhdGg6IG51bGwsIHJvd3M6IFtdIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRhaW5lcnMoY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55LCBkaXNhYmxlZDogYW55IH1bXSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgcmV0dXJuIFt7XHJcbiAgICAgICAgcGF0aDogY29tcG9uZW50LnBhdGgsXHJcbiAgICAgICAgcm93czogY29tcG9uZW50LnJvd3MsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGNvbXBvbmVudC5kaXNhYmxlZFxyXG4gICAgICB9XTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJ1xyXG4gICAgICB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXSxcclxuICAgICAgICBkaXNhYmxlZDogcGFuZWwuZGlzYWJsZWRcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VXBkYXRlT24oY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiYmx1clwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWUoY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgY2FzZSBcInRleHRmaWVsZFwiOlxyXG4gICAgICBjYXNlIFwicmFkaW9cIjpcclxuICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIG51bWJlcjtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgICAgcmV0dXJuIChjb21wb25lbnQuZGVmYXVsdFZhbHVlID8/IGZhbHNlKSBhcyBib29sZWFuO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJuZ3NcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgPCEtLSAjcmVnaW9uIHByb2dyZXNzIC0tPlxyXG4gICAgICA8bmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtYmFyICpuZ0lmPVwic2hvd1Byb2dyZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRDbGljayk9XCJhY3RpdmF0ZUZvcm0oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhc0Ryb3Bkb3duXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wRG93bkxhYmVsXT1cImxvY2FsZShUZXh0cywgJ1Nob3cnKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMsIGxldCBmb3JtSW5kZXggPSBpbmRleFwiPiAgICAgICAgICBcclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRGb3JtU3RhdHVzKGZvcm0sIGZvcm1JbmRleCkgYXMgc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1zdGVwcGVyLXByb2dyZXNzLWl0ZW0gW2hhc05hdmlnYXRpb25dPVwic3RhdHVzICE9PSAnaW5hY3RpdmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImV2YWx1YXRlVGVtcGxhdGUobG9jYWxlKGZvcm0sICd0aXRsZScpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Byb2dyZXNzSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRSZWZdPVwicHJvZ3Jlc3NJdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUluZGV4XT1cImZvcm1JbmRleFwiLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2XCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gI3JlZ2lvbiBzaWRlbmF2IC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzaWRlbmF2VGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgZm9ybUluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRGb3JtU3RhdHVzKGZvcm0sIGZvcm1JbmRleCkgYXMgc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInsgY291bnQ6IGNvdW50SW52YWxpZHMoZm9ybSkgfSBhcyBlcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdi1pdGVtIFtpc0FjdGl2ZV09XCJhY3RpdmVOYXYgPT0gZm9ybUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVOYXYgPSBmb3JtSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkU3RhdGVdPVwic3RhdHVzID09PSAnaW5hY3RpdmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFjdGl2ZU5hdiA9IGZvcm1JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2l0aFRhZ109XCJlcnJvcnMuY291bnQgPiAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ1R5cGU9XCJkYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ1ZhbHVlXT1cImVycm9ycy5jb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZXZhbHVhdGVUZW1wbGF0ZShsb2NhbGUoZm9ybSwgJ3RpdGxlJykpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdi1tb2JpbGUgY2xhc3M9XCJkLWJsb2NrIGQtbGctbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcGVuTWVudUxhYmVsXT1cImxvY2FsZShUZXh0cywgJ09wZW5NZW51JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3Blbk1lbnVBcmlhTGFiZWxdPVwibG9jYWxlKFRleHRzLCAnT3Blbk1lbnUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU1lbnVMYWJlbF09XCJsb2NhbGUoVGV4dHMsICdDbG9zZU1lbnUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlTWVudUFyaWFMYWJlbD1cImxvY2FsZShUZXh0cywgJ0Nsb3NlTWVudScpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtbW9iaWxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLWxnLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWhvcml6b250YWxcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZWxlbWVudC1mb3JtXCIgW25nQ2xhc3NdPVwic2hvd05hdiA/ICdjb2wtbWQtMTEnIDogJ2NvbC1tZC0xNidcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IHNlY3Rpb25JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlTmF2ID09IHNlY3Rpb25JbmRleCAmJiAhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCJcclxuICAgICAgICAgICAgICAgI2RlZmF1bHRcclxuICAgICAgICAgICAgICAgW3JlZ2lzdGVyXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cImRlZmF1bHRcIj5cclxuICAgICAgICAgICAgPGgxICpuZ0lmPVwic2hvd0Zvcm1UaXRsZSAmJiBmb3JtLnRpdGxlXCIgY2xhc3M9XCJoMyBmb3JtLXRpdGxlXCI+e3sgZXZhbHVhdGVUZW1wbGF0ZShsb2NhbGUoZm9ybSwgJ3RpdGxlJykpIH19PC9oMT5cclxuICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcyBbZm9ybV09XCJ0aGlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImdldEZvcm1Hcm91cChmb3JtLnBhdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHkgfHwgZXZhbHVhdGVCb29sZWFuKGZvcm0ucmVhZG9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93c109XCJmb3JtLnJvd3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGlnbm1lbnRdPVwiZm9ybS52ZXJ0aWNhbEFsaWdubWVudFwiPjwvYXBwLWR5bmFtaWMtZmllbGRzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2QnV0dG9uICYmIChjYW5OZXh0KCkgfHwgY2FuUHJldmlvdXMoKSlcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHNlY3Rpb24tbmF2c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiICpuZ0lmPVwiY2FuTmV4dCgpXCIgKGNsaWNrKT1cImdvTmV4dCgpXCIgY2xhc3M9XCJuZXh0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgbG9jYWxlKFRleHRzLCAnTmV4dFNlY3Rpb24nKSB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLXJpZ2h0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiICpuZ0lmPVwiY2FuUHJldmlvdXMoKVwiIChjbGljayk9XCJnb1ByZXZpb3VzKClcIiBjbGFzcz1cInByZXZTZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tbGVmdFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge3sgbG9jYWxlKFRleHRzLCAnUHJldmlvdXNTZWN0aW9uJykgfX1cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcblxyXG5cclxuIl19
|
|
696
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDOUMsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsU0FBUyxFQUF1QyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQXNCLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBb0IsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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QUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNlLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkE4RWhCLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi90eXBlcy90eXBpbmdzLmQudHNcIiAvPlxyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IFxyXG4gICwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIEV2ZW50RW1pdHRlclxyXG4gICwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbmplY3RvclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbE9wdGlvbnMsIEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSUV2YWx1YXRvclByb3ZpZGVyLCBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSwgVmFsaWRhdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXNhYmxlU2VydmljZSwgRGlzYWJsZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9kaXNhYmxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGF0dXNTZXJ2aWNlLCBTdGF0dXNDb2xsZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvc3RhdHVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UsIEV2ZW50Q29sbGVjdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wdXRlU2VydmljZSwgQ29tcHV0ZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wdXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBncm91cEJ5Um93IH0gZnJvbSAnLi4vdXRpbHMvZ3JvdXBCeVJvdyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBGb3JtRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZmllbGRzL2R5bmFtaWMtZmllbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0JhckNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb1N0ZXBwZXJQcm9ncmVzc1N0YXR1cywgTmd4U2lyaW9FdmVudFxyXG59IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JlZ2lzdGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1JbmRleERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9ybUluZGV4LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRvQm91bmRBcnJvd3MgfSBmcm9tICcuLi91dGlscy9ib3VuZCc7XHJcblxyXG5pbXBvcnQgeyBDb250cm9sIH0gZnJvbSAnLi4vY29udHJvbHMvY29udHJvbCc7IFxyXG5pbXBvcnQgeyBzZXRGb2N1cyB9IGZyb20gJy4uL3V0aWxzL2ZvY3VzYWJsZSc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1keW5hbWljLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4uL3NoYXJlZC9ib290c3RyYXAtZ3JpZC5zY3NzJyxcclxuICAgICcuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuY3NzJ1xyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgICAsIFJlZ2lzdGVyRGlyZWN0aXZlLCBGb3JtSW5kZXhEaXJlY3RpdmVcclxuICAgICwgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAgICwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0l0ZW1Db21wb25lbnRcclxuICAgICwgRHluYW1pY0ZpZWxkc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlXHJcbiAgICAsIFZhbGlkYXRpb25TZXJ2aWNlXHJcbiAgICAsIERpc2FibGVTZXJ2aWNlXHJcbiAgICAsIENvbXB1dGVTZXJ2aWNlXHJcbiAgICAsIFN0YXR1c1NlcnZpY2VcclxuICAgICwgRXZlbnRTZXJ2aWNlXHJcbiAgICAsIFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBNZXRhZGF0YVNlcnZpY2VcclxuICAgICwgRnVuY3Rpb25TZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG4gIEBJbnB1dCgpIHNjaGVtYTogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSByZWFkT25seTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBzdHJpY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93TmF2OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93TmF2QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Rm9ybVRpdGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJvZ3Jlc3NTdGF0dXM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBpbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xyXG4gIEBPdXRwdXQoKSBhY3RpdmVOYXZDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0JykgZm9ybURpdiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxyXG4gICAgLCBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpc2FibGVTZXJ2aWNlOiBEaXNhYmxlU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGNvbXB1dGVTZXJ2aWNlOiBDb21wdXRlU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHN0YXR1c1NlcnZpY2U6IFN0YXR1c1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZVxyXG4gICAgLCBwcml2YXRlIHJlZ2lzdGVyU2VydmljZTogUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBtZXRhZGF0YTogTWV0YWRhdGFTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7XHJcbiAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS5hZGRFdmFsdWF0b3JQcm92aWRlcnModGhpcyk7XHJcbiAgfVxyXG4gIFxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoY2hhbmdlc1snc2NoZW1hJ10pIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZVNjaGVtYSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddICYmICF0aGlzLmlzRW1pdHRlZFZhbHVlKHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldCBmb3JtcygpOiBBcnJheTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtcztcclxuICB9XHJcblxyXG4gIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKHRoaXMubGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcblxyXG4gIGNhblByZXZpb3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJldmlvdXMoKSAhPSAtMTsgXHJcbiAgfVxyXG5cclxuICBnb1ByZXZpb3VzKCkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlvdXMoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IHRoaXMuZ2V0UHJldmlvdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbk5leHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0KCkgIT0gLTE7ICAgIFxyXG4gIH1cclxuXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuY2FuTmV4dCgpKSB7IFxyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IHRoaXMuZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBDb250cm9sIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlclNlcnZpY2UuZ2V0Q29udHJvbChuYW1lKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2xBczxUIGV4dGVuZHMgQ29udHJvbD4obmFtZTogc3RyaW5nLCB0eXBlOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogVCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2xBcyhuYW1lLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVOYXYoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVOYXY7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhY3RpdmVOYXYodmFsdWU6IG51bWJlcikge1xyXG4gICAgaWYgKHZhbHVlID49IDAgJiYgdmFsdWUgPCB0aGlzLmdldE1heE5hdigpKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQodmFsdWUpIHx8IHRoaXMuaXNJbmFjdGl2ZSh2YWx1ZSkpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB0aGlzLl9hY3RpdmVOYXYgPSB2YWx1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybURpdj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgc2V0Rm9jdXModGhpcy5mb3JtRGl2Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFjdGl2ZU5hdkNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZU5hdik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSAgICAgICAgXHJcbiAgfVxyXG5cclxuICBnZXRGb3JtR3JvdXAocGF0aDogc3RyaW5nIHwgbnVsbCk6IEZvcm1Hcm91cCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gcGF0aCA/IHRoaXMuZm9ybUdyb3VwLmdldChwYXRoKSA6IHRoaXMuZm9ybUdyb3VwO1xyXG4gICAgaWYgKCEoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb250cm9sIGlzIG5vdCBhIEZvcm1Hcm91cCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtU3RhdHVzKGZvcm06IGFueSwgaW5kZXg6IG51bWJlcik6IFNpcmlvU3RlcHBlclByb2dyZXNzU3RhdHVzIHtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50ID0gaW5kZXggPT0gdGhpcy5hY3RpdmVOYXY7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJbmFjdGl2ZShpbmRleCkpIHtcclxuICAgICAgcmV0dXJuIFwiaW5hY3RpdmVcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMucHJvZ3Jlc3NTdGF0dXMgJiYgIWN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5jb3VudEludmFsaWRzKGZvcm0pO1xyXG4gICAgICByZXR1cm4gZXJyb3JzID4gMCA/IFwiZXJyb3JcIiA6IFwic3VjY2Vzc1wiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBcImFjdGl2ZVwiO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGNvdW50SW52YWxpZHMoZm9ybTogYW55KTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1c1NlcnZpY2UuY291bnRJbnZhbGlkKGZvcm0pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVGb3JtKGV2ZW50OiBOZ3hTaXJpb0V2ZW50PFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50Pikge1xyXG4gICAgY29uc3QgZm9ybUluZGV4ID0gKGV2ZW50LmNvbXBvbmVudCBhcyBhbnkpLmZvcm1JbmRleDtcclxuICAgIGlmICh0eXBlb2YgZm9ybUluZGV4ID09PSAnbnVtYmVyJykge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IGZvcm1JbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV2YWx1YXRlQm9vbGVhbih2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVCb29sZWFuKHRoaXMuZm9ybUdyb3VwLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVRlbXBsYXRlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVRlbXBsYXRlKHRoaXMuZm9ybUdyb3VwLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvcGVuRm9ybSh0ZW1wbGF0ZTogc3RyaW5nLCBvcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMubWV0YWRhdGEuZ2V0VGVtcGxhdGVCeU5hbWUodGVtcGxhdGUpO1xyXG4gICAgaWYgKGZvcm1TY2hlbWEpIHtcclxuICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2coZm9ybVNjaGVtYSwgb3B0aW9ucyk7XHJcbiAgICB9ICAgICAgICBcclxuICB9XHJcblxyXG4gIGlzQ2hhbmdlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5kaXJ0eTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAudmFsaWQ7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIFRvQm91bmRBcnJvd3ModGhpcywgW1xyXG4gICAgICAnY2FuUHJldmlvdXMnLFxyXG4gICAgICAnZ29QcmV2aW91cycsXHJcbiAgICAgICdjYW5OZXh0JyxcclxuICAgICAgJ2dvTmV4dCcsXHJcbiAgICAgICdhY3RpdmVOYXYnXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBcclxuICBwcml2YXRlIF9mb3JtczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9hY3RpdmVOYXY6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFZhbHVlOiBhbnkgPSB7IH07XHJcblxyXG4gIHByaXZhdGUgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VTY2hlbWEoKSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhckNvbnRyb2xzKCk7XHJcblxyXG4gICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcblxyXG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWE7XHJcblxyXG4gICAgY29uc3QgYWxsRm9ybXMgPSBncm91cEJ5Um93KHNjaGVtYS5mb3JtcyA/PyBbXSk7XHJcblxyXG4gICAgdGhpcy5tZXRhZGF0YS5zZXRTY2hlbWEoc2NoZW1hKTtcclxuXHJcbiAgICB0aGlzLm1ldGFkYXRhLnNldEZvcm1zKGFsbEZvcm1zKTtcclxuXHJcbiAgICB0aGlzLl9mb3JtcyA9IGFsbEZvcm1zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNUZW1wbGF0ZSAhPT0gdHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UucGF0Y2godGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUsIHtcclxuICAgICAgICBzdHJpY3Q6IHRoaXMuc3RyaWN0XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxyXG4gICAgICB0aGlzLmluaXRpYWxpemVkLmVtaXQodGhpcy5mb3JtR3JvdXApO1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJIYW5kbGVycygpO1xyXG5cclxuICAgIHRoaXMuYXNzaWduQWN0aXZhTmF2KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnN1cHByZXNzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdXNwZW5kVmFsdWVDaGFuZ2VzID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbnN0IGVtaXRFdmVudCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KHRoaXMuZGVmYXVsdFZhbHVlLCB7IGVtaXRFdmVudCB9KTtcclxuICAgICAgdGhpcy5jbGVhckZvcm1BcnJheXModGhpcy5mb3JtR3JvdXAsIGVtaXRFdmVudCk7XHJcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UucGF0Y2godGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUsIHtcclxuICAgICAgICBlbWl0RXZlbnQsXHJcbiAgICAgICAgc3RyaWN0OiB0aGlzLnN0cmljdFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnN1cHByZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlQWxsVmFsdWVBbmRWYWxpZGl0eSh0aGlzLmZvcm1Hcm91cCwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc3VzcGVuZFZhbHVlQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVtaXRWYWx1ZUNoYW5nZSgpOyAgICAgIFxyXG4gICAgfVxyXG4gICAgdGhpcy5hc3NpZ25BY3RpdmFOYXYoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduQWN0aXZhTmF2KCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRm9ybUFjdGl2YWJsZSh0aGlzLl9hY3RpdmVOYXYpKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZU5hdiA9IHRoaXMuZ2V0TmV4dEZyb20oLTEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdXNwZW5kVmFsdWVDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJIYW5kbGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3VzcGVuZFZhbHVlQ2hhbmdlcylcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIHRoaXMuZW1pdFZhbHVlQ2hhbmdlKCk7ICAgICAgXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNsZWFySGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdHRlZFZhbHVlcyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgdHJ1ZT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBpc0VtaXR0ZWRWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLmVtaXR0ZWRWYWx1ZXMuaGFzKHZhbHVlKSkge1xyXG4gICAgICB0aGlzLmVtaXR0ZWRWYWx1ZXMuZGVsZXRlKHZhbHVlKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0VmFsdWVDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xyXG4gICAgdGhpcy5lbWl0dGVkVmFsdWVzLnNldChuZXdWYWx1ZSwgdHJ1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc3VzcGVuZFZhbHVlQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UucGF0Y2godGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUsIHtcclxuICAgICAgICBzdHJpY3Q6IHRoaXMuc3RyaWN0XHJcbiAgICAgIH0pO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5zdXNwZW5kVmFsdWVDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5leHQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmdldE5leHRGcm9tKHRoaXMuYWN0aXZlTmF2KTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5leHRGcm9tKGZyb206IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgaW5kZXggPSBmcm9tICsgMTtcclxuICAgIGNvbnN0IG1heCA9IHRoaXMuZ2V0TWF4TmF2KCk7XHJcblxyXG4gICAgd2hpbGUgKGluZGV4IDwgbWF4KSB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUFjdGl2YWJsZShpbmRleCkpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgaW5kZXgrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZXZpb3VzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91c0Zyb20odGhpcy5hY3RpdmVOYXYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c0Zyb20oZnJvbTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBpbmRleCA9IGZyb20gLSAxO1xyXG5cclxuICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUFjdGl2YWJsZShpbmRleCkpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgaW5kZXgtLTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1heE5hdigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1zLmxlbmd0aCA/PyAwOyAgICBcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGlzRm9ybUFjdGl2YWJsZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5kZXggPj0gMFxyXG4gICAgICAmJiBpbmRleCA8IHRoaXMuZ2V0TWF4TmF2KClcclxuICAgICAgJiYgIXRoaXMuaXNEaXNhYmxlZChpbmRleClcclxuICAgICAgJiYgIXRoaXMuaXNJbmFjdGl2ZShpbmRleCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRGlzYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgdmFyIGZvcm0gPSB0aGlzLl9mb3Jtc1tpbmRleF07XHJcblxyXG4gICAgaWYgKCFmb3JtKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0luYWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHZhciBmb3JtID0gdGhpcy5fZm9ybXNbaW5kZXhdO1xyXG5cclxuICAgIGlmICghZm9ybSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQm9vbGVhbihmb3JtLmluYWN0aXZlKSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJDb250cm9scygpOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckZvcm1BcnJheXMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlbWl0RXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIGNvbnRyb2wuY29udHJvbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb250cm9sLmNsZWFyKHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIGNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgT2JqZWN0LnZhbHVlcyhjb250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGNoaWxkQ29udHJvbCA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhckZvcm1BcnJheXMoY2hpbGRDb250cm9sLCBlbWl0RXZlbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3QgdmFsaWRhdGlvbkNvbGxlY3Rpb24gPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgIGNvbnN0IGRpc2FibGVDb2xsZWN0aW9uID0gdGhpcy5kaXNhYmxlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICBjb25zdCBldmVudENvbGxlY3Rpb24gPSB0aGlzLmV2ZW50U2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICBjb25zdCBjb21wdXRlQ29sbGVjdGlvbiA9IHRoaXMuY29tcHV0ZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgdGhpcy5mb3Jtcy5mb3JFYWNoKChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgc3RhdHVzQ29sbGVjdGlvbiA9IHRoaXMuc3RhdHVzU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKHRoaXMuZmIsIHRoaXMuZm9ybUdyb3VwLCBmb3JtLnBhdGgpO1xyXG4gICAgICBpZiAodGhpcy5oYXNQYXRoKGZvcm0ucGF0aCkpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihkaXNhYmxlQ29sbGVjdGlvbiwgY3VycmVudEdyb3VwLCB0aGlzLmZvcm1Hcm91cCwgZm9ybSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybS5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkQ29udHJvbHModGhpcy5mYiwgY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50c1xyXG4gICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBjb21wdXRlQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGV2ZW50Q29sbGVjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnN0YXR1c1NlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGZvcm0sIHN0YXR1c0NvbGxlY3Rpb24pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpc2FibGVTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihkaXNhYmxlQ29sbGVjdGlvbik7XHJcbiAgICB0aGlzLmNvbXB1dGVTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbik7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnNldHVwQ29sbGVjdGlvbih2YWxpZGF0aW9uQ29sbGVjdGlvbik7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZS5zZXR1cENvbGxlY3Rpb24oZXZlbnRDb2xsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXHJcbiAgICAsIGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGNvbXBvbmVudHM6IEFycmF5PGFueT5cclxuICAgICwgZGlzYWJsZUNvbGxlY3Rpb246IERpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAsIGNvbXB1dGVDb2xsZWN0aW9uOiBDb21wdXRlQ29sbGVjdGlvblxyXG4gICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICwgc3RhdHVzQ29sbGVjdGlvbjogU3RhdHVzQ29sbGVjdGlvblxyXG4gICAgLCBldmVudENvbGxlY3Rpb246IEV2ZW50Q29sbGVjdGlvbikge1xyXG4gICAgbGV0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgodGhpcy5mYiwgZm9ybUdyb3VwLCBjb21wb25lbnQucGF0aCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb250YWlucyhjb21wb25lbnQua2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihzdGF0dXNDb2xsZWN0aW9uLCBjdXJyZW50R3JvdXAuZ2V0KGNvbXBvbmVudC5rZXkpIGFzIEFic3RyYWN0Q29udHJvbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGNvbXBvbmVudCk7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25zOiBGb3JtQ29udHJvbE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZU9uOiB0aGlzLmdldFVwZGF0ZU9uKGNvbXBvbmVudCkgfHwgXCJjaGFuZ2VcIixcclxuICAgICAgICAgICAgbm9uTnVsbGFibGU6IChkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1CdWlsZGVyLmNvbnRyb2woZGVmYXVsdFZhbHVlLCBvcHRpb25zKTsgICAgICAgICAgXHJcbiAgICAgICAgICBjdXJyZW50R3JvdXAuYWRkQ29udHJvbChjb21wb25lbnQua2V5LCBjb250cm9sKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHN0YXR1c0NvbGxlY3Rpb24sIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24sIGNvbnRyb2wsIGZvcm1Hcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuY29tcHV0ZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGNvbXB1dGVDb2xsZWN0aW9uLCBjb250cm9sLCBmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5hZGRUb0NvbGxlY3Rpb24oZXZlbnRDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNDb250YWluZXJDb21wb25lbnQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSB0aGlzLmdldENvbnRhaW5lcnMoY29tcG9uZW50KTtcclxuICAgICAgICBjb250YWluZXJzPy5mb3JFYWNoKChjb250YWluZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1CdWlsZGVyLCBmb3JtR3JvdXAsIGNvbnRhaW5lci5wYXRoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmhhc1BhdGgoY29udGFpbmVyLnBhdGgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjdXJyZW50R3JvdXAsIGZvcm1Hcm91cCwgY29udGFpbmVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRhaW5lci5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1CdWlsZGVyLCBjdXJyZW50R3JvdXAsIHJvdy5jb21wb25lbnRzXHJcbiAgICAgICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgICAgICwgY29tcHV0ZUNvbGxlY3Rpb25cclxuICAgICAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5pc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBpdGVtQ29tcG9uZW50ID0gdGhpcy5nZXRBcnJheUl0ZW0oY29tcG9uZW50KTtcclxuICAgICAgICBpZiAoaXRlbUNvbXBvbmVudC5rZXkpIHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1CdWlsZGVyLCBmb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQucGF0aCk7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmNyZWF0ZUZvcm1BcnJheShmb3JtQnVpbGRlciwgY3VycmVudEdyb3VwLCBpdGVtQ29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uLCBmb3JtQXJyYXksIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgZm9ybUFycmF5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5pc0NvbXBvbmVudFdpdGhJbnB1dChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgodGhpcy5mYiwgZm9ybUdyb3VwLCBjb21wb25lbnQucGF0aCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb250YWlucyhjb21wb25lbnQua2V5KSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCk7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihkaXNhYmxlQ29sbGVjdGlvbiwgY29udHJvbCwgY3VycmVudEdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gICAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woY29tcG9uZW50LmtleSwgY29udHJvbCk7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbih2YWxpZGF0aW9uQ29sbGVjdGlvbiwgY29udHJvbCwgY3VycmVudEdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihzdGF0dXNDb2xsZWN0aW9uLCBjb250cm9sKTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUFycmF5KGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxyXG4gICAgLCBmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtQ29tcG9uZW50OiBhbnkpOiBGb3JtQXJyYXkge1xyXG4gICAgY29uc3QgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybUJ1aWxkZXIuYXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcblxyXG4gICAgZm9ybUdyb3VwLmFkZENvbnRyb2woaXRlbUNvbXBvbmVudC5rZXksIGZvcm1BcnJheSk7XHJcblxyXG4gICAgY29uc3QgY3JlYXRlSXRlbSA9IGZ1bmN0aW9uICh0YXJnZXQ6IEZvcm1BcnJheSB8IG51bGwpOiBGb3JtR3JvdXAge1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5zdGF0dXNTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbkNvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LnZhbGlkYXRpb25TZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgZXZlbnRDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5ldmVudFNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCBkaXNhYmxlQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQuZGlzYWJsZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCBjb21wdXRlQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQuY29tcHV0ZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBsZXQgbmV3R3JvdXAgPSBmb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgIHRhcmdldD8ucHVzaChuZXdHcm91cCk7XHJcbiAgICAgIGl0ZW1Db21wb25lbnQucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1CdWlsZGVyLCBuZXdHcm91cCwgcm93LmNvbXBvbmVudHNcclxuICAgICAgICAgICwgZGlzYWJsZUNvbGxlY3Rpb25cclxuICAgICAgICAgICwgY29tcHV0ZUNvbGxlY3Rpb25cclxuICAgICAgICAgICwgdmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICAgICAgICwgc3RhdHVzQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgICAgLy8gaWdub3JlIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgZm9ybUNvbXBvbmVudC5kaXNhYmxlU2VydmljZS5zZXR1cENvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24pO1xyXG4gICAgICBmb3JtQ29tcG9uZW50LmNvbXB1dGVTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbik7XHJcbiAgICAgIGZvcm1Db21wb25lbnQudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uKTtcclxuICAgICAgZm9ybUNvbXBvbmVudC5ldmVudFNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbik7XHJcbiAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVzaXplRm9ybUFycmF5ID0gdGhpcy5yZXNpemVGb3JtQXJyYXk7XHJcblxyXG4gICAgY29uc3QgYWRkSXRlbSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXkpIHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZUl0ZW0odGhpcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNyZWF0ZU5ld0FycmF5ID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSkge1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gICAgICBwcmVwYXJlQXJyYXkobmV3QXJyYXkpO1xyXG4gICAgICByZXR1cm4gbmV3QXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJlcGFyZUFycmF5ID0gKGFycmF5OiBhbnkpID0+IHtcclxuICAgICAgYXJyYXkuYWRkSXRlbSA9IGFkZEl0ZW07XHJcbiAgICAgIGFycmF5LmNyZWF0ZUl0ZW0gPSBjcmVhdGVJdGVtO1xyXG4gICAgICBhcnJheS5yZXNpemUgPSByZXNpemU7XHJcbiAgICAgIGFycmF5LmNyZWF0ZU5ld0FycmF5ID0gY3JlYXRlTmV3QXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzaXplID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSwgc2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gcmVzaXplRm9ybUFycmF5KHRoaXMsIHNpemUsIGNyZWF0ZUl0ZW0pO1xyXG4gICAgICBwcmVwYXJlQXJyYXkobmV3QXJyYXkpO1xyXG4gICAgICBmb3JtR3JvdXAuc2V0Q29udHJvbChpdGVtQ29tcG9uZW50LmtleSwgbmV3QXJyYXkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcmVwYXJlQXJyYXkoZm9ybUFycmF5KTtcclxuXHJcbiAgICAvLyB1c2VkIGV4dGVybmFsbHk6IGFkZEl0ZW0sIHJlc2l6ZVxyXG5cclxuICAgIHJldHVybiBmb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZUZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgc2l6ZTogbnVtYmVyLCBjcmVhdGVJdGVtOiAodGFyZ2V0OiBGb3JtQXJyYXkgfCBudWxsKSA9PiBGb3JtR3JvdXApIDogRm9ybUFycmF5IHtcclxuICAgIGlmIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IG5ldyBGb3JtQXJyYXkoZm9ybUFycmF5LmNvbnRyb2xzKTtcclxuICAgICAgd2hpbGUgKGZvcm1BcnJheS5sZW5ndGggPCBzaXplKSB7XHJcbiAgICAgICAgY3JlYXRlSXRlbShuZXdBcnJheSk7ICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3QXJyYXk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3JtQXJyYXkubGVuZ3RoID4gc2l6ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IEZvcm1BcnJheShmb3JtQXJyYXkuY29udHJvbHMuc2xpY2UoMCwgc2l6ZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JtQXJyYXk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1BhdGgodmFsdWU6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVBhdGgoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgcGF0aDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuaGFzUGF0aChwYXRoKSkge1xyXG4gICAgICByZXR1cm4gZm9ybUdyb3VwO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnRHcm91cDogRm9ybUdyb3VwID0gZm9ybUdyb3VwO1xyXG4gICAgdGhpcy5zcGxpdFBhdGgocGF0aCkuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdEdyb3VwID0gY3VycmVudEdyb3VwLmdldChzZWdtZW50KTtcclxuICAgICAgaWYgKGV4aXN0R3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBleGlzdEdyb3VwO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChleGlzdEdyb3VwKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGZvcm0gZ3JvdXAgYmVjYXVzZSBhbiBlbGVtZW50IHdpdGggcGF0aCAke3NlZ21lbnR9IGFscmVhZHkgZXhpc3RzYCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc2VnbWVudEdyb3VwID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKHNlZ21lbnQsIHNlZ21lbnRHcm91cCk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gc2VnbWVudEdyb3VwO1xyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY3VycmVudEdyb3VwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Zvcm1Db21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgIGNhc2UgXCJjaGVja2xpc3RcIjpcclxuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgY2FzZSBcInRhZ2xpc3RcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhbmdlXCI6XHJcbiAgICAgIGNhc2UgXCJleHByZXNzaW9uXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiZ3JvdXBcIjpcclxuICAgICAgY2FzZSBcInRhYlwiOlxyXG4gICAgICBjYXNlIFwiYWNjb3JkaW9uXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbXBvbmVudFdpdGhJbnB1dChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC50eXBlID09PSBcImNvbXBvbmVudFwiXHJcbiAgICAgICYmIGNvbXBvbmVudC5pc0lucHV0ID09PSB0cnVlXHJcbiAgICAgICYmIGNvbXBvbmVudC5rZXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQXJyYXlDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImR5bmFtaWNsaXN0XCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGdldEFycmF5SXRlbShjb21wb25lbnQ6IGFueSk6IHsga2V5OiBhbnk7IHBhdGg6IGFueTsgcm93czogYW55IH0ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZHluYW1pY2xpc3QnKSB7XHJcbiAgICAgIHJldHVybiB7IGtleTogY29tcG9uZW50LmtleSwgcGF0aDogY29tcG9uZW50LnBhdGgsIHJvd3M6IGNvbXBvbmVudC5yb3dzIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsga2V5OiBudWxsLCBwYXRoOiBudWxsLCByb3dzOiBbXSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250YWluZXJzKGNvbXBvbmVudDogYW55KTogeyBwYXRoOiBhbnk7IHJvd3M6IGFueSwgZGlzYWJsZWQ6IGFueSB9W10ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZ3JvdXAnKSB7XHJcbiAgICAgIHJldHVybiBbe1xyXG4gICAgICAgIHBhdGg6IGNvbXBvbmVudC5wYXRoLFxyXG4gICAgICAgIHJvd3M6IGNvbXBvbmVudC5yb3dzLFxyXG4gICAgICAgIGRpc2FibGVkOiBjb21wb25lbnQuZGlzYWJsZWRcclxuICAgICAgfV07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ3RhYidcclxuICAgICAgfHwgY29tcG9uZW50LnR5cGUgPT09ICdhY2NvcmRpb24nKSB7XHJcbiAgICAgIHJldHVybiBjb21wb25lbnQucGFuZWxzLm1hcCgocGFuZWw6IGFueSkgPT4gKHtcclxuICAgICAgICBwYXRoOiBwYW5lbC5wYXRoLFxyXG4gICAgICAgIHJvd3M6IHRoaXMubWV0YWRhdGEuZ2V0Rm9ybUJ5TmFtZShwYW5lbC50ZW1wbGF0ZSk/LnJvd3MgPz8gW10sXHJcbiAgICAgICAgZGlzYWJsZWQ6IHBhbmVsLmRpc2FibGVkXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFVwZGF0ZU9uKGNvbXBvbmVudDogYW55KTogYW55IHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgY2FzZSBcInRleHRmaWVsZFwiOlxyXG4gICAgICAgIHJldHVybiBcImJsdXJcIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFZhbHVlKGNvbXBvbmVudDogYW55KTogYW55IHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBudW1iZXI7XHJcbiAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgIHJldHVybiAoY29tcG9uZW50LmRlZmF1bHRWYWx1ZSA/PyBmYWxzZSkgYXMgYm9vbGVhbjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aFxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAubWFwKHNlZ21lbnQgPT4gc2VnbWVudC50cmltKCkpXHJcbiAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibmdzXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgIDwhLS0gI3JlZ2lvbiBwcm9ncmVzcyAtLT5cclxuICAgICAgPG5neC1zaXJpby1zdGVwcGVyLXByb2dyZXNzLWJhciAqbmdJZj1cInNob3dQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Q2xpY2spPVwiYWN0aXZhdGVGb3JtKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNEcm9wZG93bl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcERvd25MYWJlbF09XCJsb2NhbGUoVGV4dHMsICdTaG93JylcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgZm9ybUluZGV4ID0gaW5kZXhcIj4gICAgICAgICAgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Rm9ybVN0YXR1cyhmb3JtLCBmb3JtSW5kZXgpIGFzIHN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1pdGVtIFtoYXNOYXZpZ2F0aW9uXT1cInN0YXR1cyAhPT0gJ2luYWN0aXZlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJzdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJldmFsdWF0ZVRlbXBsYXRlKGxvY2FsZShmb3JtLCAndGl0bGUnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcm9ncmVzc0l0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cInByb2dyZXNzSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1JbmRleF09XCJmb3JtSW5kZXhcIi8+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd05hdlwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuXHJcbiAgICAgICAgICA8IS0tICNyZWdpb24gc2lkZW5hdiAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2lkZW5hdlRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8bmd4LXNpcmlvLXNpZGVuYXY+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IGZvcm1JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Rm9ybVN0YXR1cyhmb3JtLCBmb3JtSW5kZXgpIGFzIHN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ7IGNvdW50OiBjb3VudEludmFsaWRzKGZvcm0pIH0gYXMgZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNpcmlvLXNpZGVuYXYtaXRlbSBbaXNBY3RpdmVdPVwiYWN0aXZlTmF2ID09IGZvcm1JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlTmF2ID0gZm9ybUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZFN0YXRlXT1cInN0YXR1cyA9PT0gJ2luYWN0aXZlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhY3RpdmVOYXYgPSBmb3JtSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpdGhUYWddPVwiZXJyb3JzLmNvdW50ID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdUeXBlPVwiZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWdWYWx1ZV09XCJlcnJvcnMuY291bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGV2YWx1YXRlVGVtcGxhdGUobG9jYWxlKGZvcm0sICd0aXRsZScpKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdi1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8bmd4LXNpcmlvLXNpZGVuYXYtbW9iaWxlIGNsYXNzPVwiZC1ibG9jayBkLWxnLW5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3Blbk1lbnVMYWJlbF09XCJsb2NhbGUoVGV4dHMsICdPcGVuTWVudScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wZW5NZW51QXJpYUxhYmVsXT1cImxvY2FsZShUZXh0cywgJ09wZW5NZW51JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VNZW51TGFiZWxdPVwibG9jYWxlKFRleHRzLCAnQ2xvc2VNZW51JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZU1lbnVBcmlhTGFiZWw9XCJsb2NhbGUoVGV4dHMsICdDbG9zZU1lbnUnKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZW5hdlRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2LW1vYmlsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLW5vbmUgZC1sZy1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZW5hdlRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvci1ob3Jpem9udGFsXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWVsZW1lbnQtZm9ybVwiIFtuZ0NsYXNzXT1cInNob3dOYXYgPyAnY29sLW1kLTExJyA6ICdjb2wtbWQtMTYnXCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMsIGxldCBzZWN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZU5hdiA9PSBzZWN0aW9uSW5kZXggJiYgIWV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgICNkZWZhdWx0XHJcbiAgICAgICAgICAgICAgIFtyZWdpc3Rlcl09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgW2NvbXBvbmVudFJlZl09XCJkZWZhdWx0XCI+XHJcbiAgICAgICAgICAgIDxoMSAqbmdJZj1cInNob3dGb3JtVGl0bGUgJiYgZm9ybS50aXRsZVwiIGNsYXNzPVwiaDMgZm9ybS10aXRsZVwiPnt7IGV2YWx1YXRlVGVtcGxhdGUobG9jYWxlKGZvcm0sICd0aXRsZScpKSB9fTwvaDE+XHJcbiAgICAgICAgICAgIDxhcHAtZHluYW1pYy1maWVsZHMgW2Zvcm1dPVwidGhpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoZm9ybS5wYXRoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5IHx8IGV2YWx1YXRlQm9vbGVhbihmb3JtLnJlYWRvbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiZm9ybS5yb3dzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxpZ25tZW50XT1cImZvcm0udmVydGljYWxBbGlnbm1lbnRcIj48L2FwcC1keW5hbWljLWZpZWxkcz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd05hdkJ1dHRvbiAmJiAoY2FuTmV4dCgpIHx8IGNhblByZXZpb3VzKCkpXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzZWN0aW9uLW5hdnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1idXR0b24gW2NvbG9yXT1cIm51bGxcIiAqbmdJZj1cImNhbk5leHQoKVwiIChjbGljayk9XCJnb05leHQoKVwiIGNsYXNzPVwibmV4dFNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIHt7IGxvY2FsZShUZXh0cywgJ05leHRTZWN0aW9uJykgfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1idXR0b24gW2NvbG9yXT1cIm51bGxcIiAqbmdJZj1cImNhblByZXZpb3VzKClcIiAoY2xpY2spPVwiZ29QcmV2aW91cygpXCIgY2xhc3M9XCJwcmV2U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLWxlZnRcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7IGxvY2FsZShUZXh0cywgJ1ByZXZpb3VzU2VjdGlvbicpIH19XHJcbiAgICAgICAgICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -75,6 +75,7 @@ export class DynamicHostComponent {
|
|
|
75
75
|
.subscribe(isDisabled => {
|
|
76
76
|
invoke(isDisabled);
|
|
77
77
|
});
|
|
78
|
+
invoke(formControl.disabled);
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
setProperties() {
|
|
@@ -129,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
129
130
|
type: ViewChild,
|
|
130
131
|
args: ['container', { read: ViewContainerRef, static: true }]
|
|
131
132
|
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1ob3N0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtaG9zdC9keW5hbWljLWhvc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1ob3N0L2R5bmFtaWMtaG9zdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBaUIsU0FBUyxFQUFFLGdCQUFnQixFQUc3RCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQWMsWUFBWSxFQUFnQixvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFVdEMsTUFBTSxPQUFPLG9CQUFvQjtJQU1YO0lBQ1Y7SUFOUyxTQUFTLENBQU87SUFDMUIsVUFBVSxHQUErQixJQUFJLENBQUM7SUFDOUMsU0FBUyxDQUFhO0lBQ21DLFNBQVMsQ0FBb0I7SUFFL0YsWUFBb0IsUUFBa0IsRUFDNUIsYUFBNEI7UUFEbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtnQkFDaEUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixDQUFDO1lBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQseUJBQXlCO0lBRWpCLFlBQVksR0FBNkIsSUFBSSxDQUFDO0lBRTlDLFNBQVMsR0FBd0IsSUFBSSxDQUFDO0lBRXRDLFVBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87ZUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHO2VBQ2xCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPO1FBRW5ELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUVELFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3ZDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBRW5ELElBQUksT0FBTyxnQkFBZ0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMzQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYTtpQkFDdkMsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQy9CLG9CQUFvQixFQUFFLENBQ3ZCO2lCQUNBLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDdEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFFekMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBUTtRQUNyQyxPQUFPLENBQ0wsR0FBRztZQUNILE9BQU8sR0FBRyxDQUFDLFVBQVUsS0FBSyxVQUFVO1lBQ3BDLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixLQUFLLFVBQVU7WUFDMUMsT0FBTyxHQUFHLENBQUMsaUJBQWlCLEtBQUssVUFBVSxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVk7UUFDdkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWM7UUFDcEMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUUsQ0FBQzt3R0FwSVUsb0JBQW9COzRGQUFwQixvQkFBb0IsbVFBSUMsZ0JBQWdCLGdFQ3RCbEQsOENBQ0E7OzRGRGlCYSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBSWhCLElBQUk7eUdBR0csU0FBUztzQkFBM0IsS0FBSzt1QkFBQyxVQUFVO2dCQUNSLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDNEQsU0FBUztzQkFBMUUsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3RvclxyXG4gICwgVHlwZSwgQ29tcG9uZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25EZXN0cm95XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWR5bmFtaWMtaG9zdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtaG9zdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9keW5hbWljLWhvc3QuY29tcG9uZW50LmNzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNIb3N0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dChcInJlZ2lzdGVyXCIpIGNvbXBvbmVudCE6IGFueTtcclxuICBASW5wdXQoKSBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXJ2aWNlOiBHbG9iYWxTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN0YXR1c1N1Yikge1xyXG4gICAgICB0aGlzLnN0YXR1c1N1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH0gICAgXHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wicHJvcGVydGllc1wiXSkge1xyXG4gICAgICB0aGlzLnNldFByb3BlcnRpZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLnJlc29sdmVDb21wb25lbnRUeXBlKHRoaXMuY29tcG9uZW50LmNvbXBvbmVudCk7XHJcbiAgICBpZiAoY29tcG9uZW50VHlwZSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlLCB7XHJcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNCaW5kYWJsZSgpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRCaW5kaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuc2V0UHJvcGVydGllcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcG9uZW50UmVmKCk6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gUHJpdmF0ZSBNZW1iZXJzXHJcblxyXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHN0YXR1c1N1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgaXNCaW5kYWJsZSgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5pc0lucHV0XHJcbiAgICAgICYmIHRoaXMuY29tcG9uZW50LmtleVxyXG4gICAgICAmJiB0aGlzLmlzQ29udHJvbFZhbHVlQWNjZXNzb3IodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRCaW5kaW5nKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGtleSA9IHRoaXMuY29tcG9uZW50LmtleTtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzQ29udHJvbFZhbHVlQWNjZXNzb3IoaW5zdGFuY2UpKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KGtleSk7XHJcblxyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaW5zdGFuY2Uud3JpdGVWYWx1ZShmb3JtQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgaW5zdGFuY2UucmVnaXN0ZXJPbkNoYW5nZSgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpbnN0YW5jZS5yZWdpc3Rlck9uVG91Y2hlZCgoKSA9PiB7XHJcbiAgICAgIGZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHNldERpc2FibGVkU3RhdGUgPSBpbnN0YW5jZS5zZXREaXNhYmxlZFN0YXRlO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygc2V0RGlzYWJsZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBpbnZva2UgPSBzZXREaXNhYmxlZFN0YXRlLmJpbmQoaW5zdGFuY2UpO1xyXG4gICAgICB0aGlzLnN0YXR1c1N1YiA9IGZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIG1hcCgoKSA9PiBmb3JtQ29udHJvbC5kaXNhYmxlZCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoaXNEaXNhYmxlZCA9PiB7XHJcbiAgICAgICAgICBpbnZva2UoaXNEaXNhYmxlZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFByb3BlcnRpZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSByZXR1cm47XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wcm9wZXJ0aWVzID8/IHt9O1xyXG4gICAgaWYgKHRoaXMudmFsaWRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHByb3BlcnRpZXMpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wZXJ0aWVzW2tleV07XHJcbiAgICAgICAgaWYgKGtleSBpbiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xyXG4gICAgICAgICAgdGhpcy5hc3NpZ25WYWx1ZShrZXksIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpXHJcbiAge1xyXG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZSkpIHtcclxuICAgICAgdmFsdWUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0Py4oa2V5LCB2KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZj8uc2V0SW5wdXQ/LihrZXksIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNDb250cm9sVmFsdWVBY2Nlc3NvcihvYmo6IGFueSk6IG9iaiBpcyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBvYmogJiZcclxuICAgICAgdHlwZW9mIG9iai53cml0ZVZhbHVlID09PSAnZnVuY3Rpb24nICYmXHJcbiAgICAgIHR5cGVvZiBvYmoucmVnaXN0ZXJPbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJyAmJlxyXG4gICAgICB0eXBlb2Ygb2JqLnJlZ2lzdGVyT25Ub3VjaGVkID09PSAnZnVuY3Rpb24nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlQ29tcG9uZW50VHlwZSh0eXBlOiBzdHJpbmcpOiBUeXBlPGFueT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdsb2JhbFNlcnZpY2UuZ2V0Q29tcG9uZW50KHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZFByb3BlcnRpZXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1ob3N0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtaG9zdC9keW5hbWljLWhvc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1ob3N0L2R5bmFtaWMtaG9zdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBaUIsU0FBUyxFQUFFLGdCQUFnQixFQUc3RCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsWUFBWSxFQUFnQixvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFVdEMsTUFBTSxPQUFPLG9CQUFvQjtJQU1YO0lBQ1Y7SUFOUyxTQUFTLENBQU87SUFDMUIsVUFBVSxHQUErQixJQUFJLENBQUM7SUFDOUMsU0FBUyxDQUFhO0lBQ21DLFNBQVMsQ0FBb0I7SUFFL0YsWUFBb0IsUUFBa0IsRUFDNUIsYUFBNEI7UUFEbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdB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QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO3dHQXJJVSxvQkFBb0I7NEZBQXBCLG9CQUFvQixtUUFJQyxnQkFBZ0IsZ0VDdEJsRCw4Q0FDQTs7NEZEaUJhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FJaEIsSUFBSTt5R0FHRyxTQUFTO3NCQUEzQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUM0RCxTQUFTO3NCQUExRSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIElucHV0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIEluamVjdG9yXHJcbiAgLCBUeXBlLCBDb21wb25lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1keW5hbWljLWhvc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWhvc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vZHluYW1pYy1ob3N0LmNvbXBvbmVudC5jc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljSG9zdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoXCJyZWdpc3RlclwiKSBjb21wb25lbnQhOiBhbnk7XHJcbiAgQElucHV0KCkgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgZ2xvYmFsU2VydmljZTogR2xvYmFsU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdGF0dXNTdWIpIHtcclxuICAgICAgdGhpcy5zdGF0dXNTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9ICAgIFxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcInByb3BlcnRpZXNcIl0pIHtcclxuICAgICAgdGhpcy5zZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5yZXNvbHZlQ29tcG9uZW50VHlwZSh0aGlzLmNvbXBvbmVudC5jb21wb25lbnQpO1xyXG4gICAgaWYgKGNvbXBvbmVudFR5cGUpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50VHlwZSwge1xyXG4gICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzQmluZGFibGUoKSkge1xyXG4gICAgICAgIHRoaXMuc2V0QmluZGluZygpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnNldFByb3BlcnRpZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudFJlZigpOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFByaXZhdGUgTWVtYmVyc1xyXG5cclxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0dXNTdWI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGlzQmluZGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuaXNJbnB1dFxyXG4gICAgICAmJiB0aGlzLmNvbXBvbmVudC5rZXlcclxuICAgICAgJiYgdGhpcy5pc0NvbnRyb2xWYWx1ZUFjY2Vzc29yKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QmluZGluZygpIHtcclxuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNvbXBvbmVudC5rZXk7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xyXG5cclxuICAgIGlmICghdGhpcy5pc0NvbnRyb2xWYWx1ZUFjY2Vzc29yKGluc3RhbmNlKSkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldChrZXkpO1xyXG5cclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGluc3RhbmNlLndyaXRlVmFsdWUoZm9ybUNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgIGluc3RhbmNlLnJlZ2lzdGVyT25DaGFuZ2UoKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaW5zdGFuY2UucmVnaXN0ZXJPblRvdWNoZWQoKCkgPT4ge1xyXG4gICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzZXREaXNhYmxlZFN0YXRlID0gaW5zdGFuY2Uuc2V0RGlzYWJsZWRTdGF0ZTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHNldERpc2FibGVkU3RhdGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgaW52b2tlID0gc2V0RGlzYWJsZWRTdGF0ZS5iaW5kKGluc3RhbmNlKTtcclxuICAgICAgdGhpcy5zdGF0dXNTdWIgPSBmb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4gZm9ybUNvbnRyb2wuZGlzYWJsZWQpLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKGlzRGlzYWJsZWQgPT4ge1xyXG4gICAgICAgICAgaW52b2tlKGlzRGlzYWJsZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBpbnZva2UoZm9ybUNvbnRyb2wuZGlzYWJsZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllcyA/PyB7fTtcclxuICAgIGlmICh0aGlzLnZhbGlkUHJvcGVydGllcyhwcm9wZXJ0aWVzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcGVydGllc1trZXldO1xyXG4gICAgICAgIGlmIChrZXkgaW4gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcclxuICAgICAgICAgIHRoaXMuYXNzaWduVmFsdWUoa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnblZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KVxyXG4gIHtcclxuICAgIGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XHJcbiAgICAgIHZhbHVlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dD8uKGtleSwgdik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0Py4oa2V5LCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29udHJvbFZhbHVlQWNjZXNzb3Iob2JqOiBhbnkpOiBvYmogaXMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgb2JqICYmXHJcbiAgICAgIHR5cGVvZiBvYmoud3JpdGVWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxyXG4gICAgICB0eXBlb2Ygb2JqLnJlZ2lzdGVyT25DaGFuZ2UgPT09ICdmdW5jdGlvbicgJiZcclxuICAgICAgdHlwZW9mIG9iai5yZWdpc3Rlck9uVG91Y2hlZCA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZUNvbXBvbmVudFR5cGUodHlwZTogc3RyaW5nKTogVHlwZTxhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxTZXJ2aWNlLmdldENvbXBvbmVudCh0eXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRQcm9wZXJ0aWVzKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8bmctY29udGFpbmVyICNjb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
@@ -14,7 +14,7 @@ export class ComputeService {
|
|
|
14
14
|
return new Map();
|
|
15
15
|
}
|
|
16
16
|
addToCollection(collection, control, parentGroup, component) {
|
|
17
|
-
if (this.
|
|
17
|
+
if (!collection.has(control) && this.canAddToCollection(component)) {
|
|
18
18
|
collection.set(control, { component, parentGroup });
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -23,6 +23,10 @@ export class ComputeService {
|
|
|
23
23
|
this.applyExpression(control, computeContext);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
+
canAddToCollection(component) {
|
|
27
|
+
const expression = component?.expression;
|
|
28
|
+
return this.programmability.isExpression(expression);
|
|
29
|
+
}
|
|
26
30
|
applyExpression(control, context) {
|
|
27
31
|
const formGroup = context.parentGroup;
|
|
28
32
|
const { key, expression, conditional } = context.component ?? {};
|
|
@@ -70,4 +74,4 @@ export class ComputeService {
|
|
|
70
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComputeService, decorators: [{
|
|
71
75
|
type: Injectable
|
|
72
76
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.FormService }] });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvY29tcHV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRy9DLE1BQU0sT0FBTyxjQUFjO0lBR2Y7SUFDRTtJQUZaLFlBQ1UsZUFBdUMsRUFDckMsV0FBd0I7UUFEMUIsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFtQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBNkIsRUFBRSxPQUF3QixFQUNuRSxXQUFzQixFQUFFLFNBQWM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUE2QjtRQUMzQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQWM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsU0FBUyxFQUFFLFVBQVUsQ0FBQztRQUN6QyxPQUFP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Yzs7NEZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4vcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHRvRmVlbGFibGUgfSBmcm9tICcuLi91dGlscy9mZWVsYWJsZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wdXRlU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcHJvZ3JhbW1hYmlsaXR5OiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb2xsZWN0aW9uKCk6IENvbXB1dGVDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgTWFwPEFic3RyYWN0Q29udHJvbCwgQ29tcHV0ZUNvbnRleHQ+KCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0NvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29tcHV0ZUNvbGxlY3Rpb24sIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgLCBwYXJlbnRHcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnQ6IGFueSlcclxuICB7XHJcbiAgICBpZiAoIWNvbGxlY3Rpb24uaGFzKGNvbnRyb2wpICYmIHRoaXMuY2FuQWRkVG9Db2xsZWN0aW9uKGNvbXBvbmVudCkpIHtcclxuICAgICAgY29sbGVjdGlvbi5zZXQoY29udHJvbCwgeyBjb21wb25lbnQsIHBhcmVudEdyb3VwIH0pO1xyXG4gICAgfSAgICAgIFxyXG4gIH1cclxuXHJcbiAgc2V0dXBDb2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbXB1dGVDb2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXB1dGVDb250ZXh0LCBjb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBwbHlFeHByZXNzaW9uKGNvbnRyb2wsIGNvbXB1dGVDb250ZXh0KTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5BZGRUb0NvbGxlY3Rpb24oY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSBjb21wb25lbnQ/LmV4cHJlc3Npb247XHJcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUV4cHJlc3Npb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb250ZXh0OiBDb21wdXRlQ29udGV4dCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udGV4dC5wYXJlbnRHcm91cDtcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGtleVxyXG4gICAgICAsIGV4cHJlc3Npb25cclxuICAgICAgLCBjb25kaXRpb25hbCB9ID0gY29udGV4dC5jb21wb25lbnQgPz8ge307XHJcblxyXG4gICAgY29uc3QgZGVhY3RpdmF0ZSA9IGNvbmRpdGlvbmFsPy5oaWRlO1xyXG5cclxuICAgIGNvbnN0IGxvZ0NvbXB1dGVkID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnByb2dyYW1tYWJpbGl0eS52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQ29tcHV0ZVwiLCBjb250cm9sLCB7IHZhbHVlOiB2YWx1ZSwgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgYXNzaWduVmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBsb2dDb21wdXRlZCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UucGF0Y2goY29udHJvbCwgdmFsdWUsIHsgc3RyaWN0OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgaWYgKHRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xyXG4gICAgICAgIGNvbnN0IGFwcGx5RXhwcmVzc2lvbiA9ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oZGVhY3RpdmF0ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaXNEZWFjdGl2YXRlID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cCwgZGVhY3RpdmF0ZSwgeyBjYWNoZWFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICBpZiAoISFpc0RlYWN0aXZhdGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgZXhwcmVzc2lvbiwgeyBjYWNoZWFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgYXNzaWduVmFsdWUocmVzdWx0KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldERlcGVuZGVuY2llcyh0b0ZlZWxhYmxlKHtcclxuICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24sXHJcbiAgICAgICAgICBkZWFjdGl2YXRlOiBkZWFjdGl2YXRlXHJcbiAgICAgICAgfSkpLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG5cclxuICAgICAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LndhdGNoKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gYXBwbHlFeHByZXNzaW9uKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gYXBwbHlFeHByZXNzaW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVDb250ZXh0IHtcclxuICBwYXJlbnRHcm91cDogRm9ybUdyb3VwO1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb21wdXRlQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXB1dGVDb250ZXh0PjtcclxuIl19
|