@wavemaker/app-ng-runtime 11.14.1-18.6421 → 11.14.1-18.6428
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/base/bundles/index.umd.js +17 -81
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base.component.mjs +6 -61
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -7
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
- package/components/base/fesm2022/index.mjs +18 -82
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/basic/label/bundles/index.umd.js +1 -9
- package/components/basic/label/esm2022/label.directive.mjs +2 -10
- package/components/basic/label/fesm2022/index.mjs +1 -9
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/chart/bundles/index.umd.js +2 -2
- package/components/chart/esm2022/chart.utils.mjs +3 -3
- package/components/chart/fesm2022/index.mjs +2 -2
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/bundles/index.umd.js +2 -21
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +1 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +3 -20
- package/components/containers/wizard/fesm2022/index.mjs +2 -21
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +0 -2
- package/components/data/pagination/bundles/index.umd.js +0 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +1 -5
- package/components/data/pagination/fesm2022/index.mjs +0 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +14 -370
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -107
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +1 -9
- package/components/data/table/esm2022/table-cud.directive.mjs +2 -8
- package/components/data/table/esm2022/table-filter.directive.mjs +2 -12
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +1 -8
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table.component.mjs +12 -219
- package/components/data/table/fesm2022/index.mjs +15 -371
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +2 -3
- package/components/data/table/table-column/table-column.directive.d.ts +2 -3
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -3
- package/components/data/table/table-cud.directive.d.ts +1 -3
- package/components/data/table/table-filter.directive.d.ts +1 -3
- package/components/data/table/table-row/table-row.directive.d.ts +2 -3
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -3
- package/components/data/table/table.component.d.ts +2 -6
- package/components/navigation/menu/bundles/index.umd.js +0 -5
- package/components/navigation/menu/esm2022/menu.component.mjs +1 -6
- package/components/navigation/menu/fesm2022/index.mjs +0 -5
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +6 -6
- package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
- package/components/navigation/popover/fesm2022/index.mjs +3 -3
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +0 -6
- package/core/bundles/index.umd.js +15 -120
- package/core/esm2022/public_api.mjs +2 -2
- package/core/esm2022/utils/utils.mjs +2 -6
- package/core/esm2022/utils/watcher.mjs +15 -118
- package/core/fesm2022/index.mjs +15 -124
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +1 -1
- package/core/utils/utils.d.ts +0 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +2 -3
- package/runtime/base/esm2022/components/base-page.component.mjs +1 -2
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
- package/runtime/base/fesm2022/index.mjs +2 -3
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/bundles/index.umd.js +0 -4
- package/runtime/dynamic/esm2022/app/app.config.mjs +2 -6
- package/runtime/dynamic/fesm2022/index.mjs +1 -5
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +15 -103
|
@@ -136,8 +136,6 @@
|
|
|
136
136
|
this.ngForm = ngForm;
|
|
137
137
|
this.$lazyLoad = i1$1.noop;
|
|
138
138
|
this.isDone = false;
|
|
139
|
-
this.nextCBInProgress = false;
|
|
140
|
-
this.prevCBInProgress = false;
|
|
141
139
|
this.status = 2 /* STEP_STATUS.DISABLED */;
|
|
142
140
|
// If we inject directly as a param in the constructor, getting circular dependency error in unit testcases
|
|
143
141
|
this.wizardComponent = this.inj.get(WizardComponent);
|
|
@@ -481,17 +479,13 @@
|
|
|
481
479
|
handleNext(value, currentStep, currentStepIndex) {
|
|
482
480
|
if (this.isPromise(value)) {
|
|
483
481
|
value.then(response => {
|
|
484
|
-
this.currentStep.nextCBInProgress = false;
|
|
485
482
|
if (response === false) {
|
|
486
483
|
return;
|
|
487
484
|
}
|
|
488
485
|
this.extendNextFn(currentStep, currentStepIndex);
|
|
489
|
-
}, err =>
|
|
490
|
-
this.currentStep.nextCBInProgress = false;
|
|
491
|
-
});
|
|
486
|
+
}, err => err);
|
|
492
487
|
}
|
|
493
488
|
else {
|
|
494
|
-
this.currentStep.nextCBInProgress = false;
|
|
495
489
|
if (value === false) {
|
|
496
490
|
return;
|
|
497
491
|
}
|
|
@@ -499,19 +493,14 @@
|
|
|
499
493
|
}
|
|
500
494
|
}
|
|
501
495
|
next(eventName = 'next') {
|
|
502
|
-
if (this.currentStep.nextCBInProgress) {
|
|
503
|
-
return;
|
|
504
|
-
}
|
|
505
496
|
const currentStep = this.currentStep;
|
|
506
497
|
const currentStepIndex = this.getCurrentStepIndex();
|
|
507
498
|
// abort if onSkip method returns false
|
|
508
499
|
if (eventName === 'skip') {
|
|
509
|
-
this.currentStep.nextCBInProgress = true;
|
|
510
500
|
const response = currentStep.invokeSkipCB(currentStepIndex);
|
|
511
501
|
this.handleNext(response, currentStep, currentStepIndex);
|
|
512
502
|
}
|
|
513
503
|
else if (this.currentStep.isValid && eventName === 'next') {
|
|
514
|
-
this.currentStep.nextCBInProgress = true;
|
|
515
504
|
const response = currentStep.invokeNextCB(currentStepIndex);
|
|
516
505
|
this.handleNext(response, currentStep, currentStepIndex);
|
|
517
506
|
}
|
|
@@ -555,27 +544,19 @@
|
|
|
555
544
|
}
|
|
556
545
|
// Method to navigate to previous step
|
|
557
546
|
prev() {
|
|
558
|
-
if (this.currentStep.prevCBInProgress) {
|
|
559
|
-
return;
|
|
560
|
-
}
|
|
561
547
|
const currentStep = this.currentStep;
|
|
562
548
|
const currentStepIndex = this.getCurrentStepIndex();
|
|
563
|
-
this.currentStep.prevCBInProgress = true;
|
|
564
549
|
// abort if onPrev method returns false.
|
|
565
550
|
const response = currentStep.invokePrevCB(currentStepIndex);
|
|
566
551
|
if (this.isPromise(response)) {
|
|
567
552
|
response.then(response => {
|
|
568
|
-
this.currentStep.prevCBInProgress = false;
|
|
569
553
|
if (response === false) {
|
|
570
554
|
return;
|
|
571
555
|
}
|
|
572
556
|
this.extendPrevFn(currentStep, currentStepIndex);
|
|
573
|
-
}, err =>
|
|
574
|
-
this.currentStep.prevCBInProgress = false;
|
|
575
|
-
});
|
|
557
|
+
}, err => err);
|
|
576
558
|
}
|
|
577
559
|
else {
|
|
578
|
-
this.currentStep.prevCBInProgress = false;
|
|
579
560
|
if (response === false) {
|
|
580
561
|
return;
|
|
581
562
|
}
|
|
@@ -79,8 +79,6 @@ export class WizardStepComponent extends StylableComponent {
|
|
|
79
79
|
this.ngForm = ngForm;
|
|
80
80
|
this.$lazyLoad = noop;
|
|
81
81
|
this.isDone = false;
|
|
82
|
-
this.nextCBInProgress = false;
|
|
83
|
-
this.prevCBInProgress = false;
|
|
84
82
|
this.status = 2 /* STEP_STATUS.DISABLED */;
|
|
85
83
|
// If we inject directly as a param in the constructor, getting circular dependency error in unit testcases
|
|
86
84
|
this.wizardComponent = this.inj.get(WizardComponent);
|
|
@@ -162,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
162
160
|
type: HostBinding,
|
|
163
161
|
args: ['class.current']
|
|
164
162
|
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NvbnRhaW5lcnMvd2l6YXJkL3NyYy93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLElBQUksRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFcEQsTUFBTSxXQUFXLEdBQUcseUJBQXlCLENBQUM7QUFFOUMsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFrQkYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjthQUMvQyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQXFCekMsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFB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ckQsU0FBUztzQkFEWixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBJV2lkZ2V0Q29uZmlnLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBSZWRyYXdhYmxlRGlyZWN0aXZlLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50XG59IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNlXCI7XG5pbXBvcnQge05nRm9ybX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gXCIuL3dpemFyZC1zdGVwLnByb3BzXCI7XG5pbXBvcnQge25vb3B9IGZyb20gXCJAd20vY29yZVwiO1xuaW1wb3J0IHtXaXphcmRDb21wb25lbnR9IGZyb20gXCIuLi93aXphcmQuY29tcG9uZW50XCI7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC13aXphcmQtc3RlcC1jb250ZW50JztcblxuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20td2l6YXJkc3RlcCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMUyxcbn07XG5cbmNvbnN0IGVudW0gU1RFUF9TVEFUVVMge1xuICAgIENVUlJFTlQgPSAxLFxuICAgIERJU0FCTEVELFxuICAgIENPTVBMRVRFRFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnZm9ybVt3bVdpemFyZFN0ZXBdJyxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50IHBhcnRpYWwtY29udGFpbmVyLXRhcmdldD48L25nLWNvbnRlbnQ+YCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFdpemFyZFN0ZXBDb21wb25lbnQpLFxuICAgICAgICBOZ0Zvcm1cbiAgICBdLFxuICAgIGV4cG9ydEFzOiAnd21XaXphcmRTdGVwJ1xufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRTdGVwQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgc2hvdzogYm9vbGVhbjtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBlbmFibGVza2lwOiBhbnk7XG4gICAgcHVibGljIGRpc2FibGVuZXh0OiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNhYmxlZG9uZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlzYWJsZXByZXZpb3VzOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc0luaXRpYWxpemVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgaXNkeW5hbWljOiBib29sZWFuO1xuICAgIHB1YmxpYyAkbGF6eUxvYWQgPSBub29wO1xuICAgIGlzRG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG5leHRDQkluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcmV2Q0JJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHN0YXR1czogU1RFUF9TVEFUVVMgPSBTVEVQX1NUQVRVUy5ESVNBQkxFRDtcbiAgICBwcml2YXRlIHdpemFyZENvbXBvbmVudDogV2l6YXJkQ29tcG9uZW50O1xuXG4gICAgLy8gcmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnRzIHdoaWNoIG5lZWRzIGEgcmVkcmF3KGVnLCBncmlkLCBjaGFydCkgd2hlbiB0aGUgaGVpZ2h0IG9mIHRoaXMgY29tcG9uZW50IGNoYW5nZXNcbiAgICBAQ29udGVudENoaWxkcmVuKFJlZHJhd2FibGVEaXJlY3RpdmUsIHtkZXNjZW5kYW50czogdHJ1ZX0pIHJlRHJhd2FibGVDb21wb25lbnRzO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXJyZW50JylcbiAgICBnZXQgaXNDdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWxvbmcgd2l0aCB0aGUgd2l6YXJkIGZvcm0gLCBhbHNvIHZhbGlkYXRlIHRoZSBmb3Jtc1xuICAgICAqIGlmIHRoZXJlIGFyZSBhbnkgaW5zaWRlIHRoZSB3aXphcmRcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzVmFsaWQoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZ0Zvcm0udmFsaWQgfHwgdGhpcy5uZ0Zvcm0uZGlzYWJsZWQpICYmIHRoaXMuYXJlRW1iZWRkZWRGb3Jtc1ZhbGlkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IGFsbCB0aGUgZm9ybXMgaW5zaWRlIHRoZSB3aXphcmQgaWYgYW55IGFuZCB2YWxpZGF0ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHByaXZhdGUgYXJlRW1iZWRkZWRGb3Jtc1ZhbGlkKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm0gb2YgdGhpcy5nZXRBbGxFbWJlZGRlZEZvcm1zKCkpIHtcbiAgICAgICAgICAgIGlmIChmb3JtLndpZGdldCAmJiBmb3JtLndpZGdldC5uZ2Zvcm0gJiYgIWZvcm0ud2lkZ2V0Lm5nZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFsbEVtYmVkZGVkRm9ybXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LmZpbmQoJ2Zvcm0nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuYWJsZU5leHQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5kaXNhYmxlbmV4dDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuYWJsZURvbmUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5kaXNhYmxlZG9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuYWJsZVByZXYoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5kaXNhYmxlcHJldmlvdXM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBhY3RpdmUobnY6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmFjdGl2ZTtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBTVEVQX1NUQVRVUy5DVVJSRU5UO1xuICAgICAgICBpZiAobnYgJiYgIWlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZHJhd0NoaWxkcmVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBTVEVQX1NUQVRVUy5DVVJSRU5UO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZG9uZShudjogYm9vbGVhbikge1xuICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gU1RFUF9TVEFUVVMuQ09NUExFVEVEO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFNURVBfU1RBVFVTLkNPTVBMRVRFRDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRpc2FibGVkKG52OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBTVEVQX1NUQVRVUy5ESVNBQkxFRDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gU1RFUF9TVEFUVVMuRElTQUJMRUQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgQFNlbGYoKSBwcml2YXRlIG5nRm9ybTogTmdGb3JtLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICAvLyBJZiB3ZSBpbmplY3QgZGlyZWN0bHkgYXMgYSBwYXJhbSBpbiB0aGUgY29uc3RydWN0b3IsIGdldHRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jeSBlcnJvciBpbiB1bml0IHRlc3RjYXNlc1xuICAgICAgICB0aGlzLndpemFyZENvbXBvbmVudCA9IHRoaXMuaW5qLmdldChXaXphcmRDb21wb25lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VOZXh0Q0IoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnbmV4dCcsIHtjdXJyZW50U3RlcDogdGhpcywgc3RlcEluZGV4OiBpbmRleH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VQcmV2Q0IoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygncHJldicsIHtjdXJyZW50U3RlcDogdGhpcywgc3RlcEluZGV4OiBpbmRleH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VTa2lwQ0IoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2tpcCcsIHtjdXJyZW50U3RlcDogdGhpcywgc3RlcEluZGV4OiBpbmRleH0pO1xuICAgIH1cblxuICAgIC8vIHJlZHJhdyBhbGwgdGhlIHByb2plY3RlZCBjb21wb25lbnRzIHdoaWNoIGFyZSBwcm9qZWN0ZWQuXG4gICAgcHJpdmF0ZSByZWRyYXdDaGlsZHJlbigpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVEcmF3YWJsZUNvbXBvbmVudHMuZm9yRWFjaChjID0+IGMucmVkcmF3KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gKHRoaXMgYXMgYW55KS53aXphcmRDb21wb25lbnQuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdsb2FkJywgeyBzdGVwSW5kZXggfSk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzID09PSB0aGlzLndpemFyZENvbXBvbmVudC5zdGVwcy5sYXN0ID8gdGhpcy53aXphcmRDb21wb25lbnQucHJldigpIDogdGhpcy53aXphcmRDb21wb25lbnQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVBhbmVzID0gdGhpcy53aXphcmRDb21wb25lbnQuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBhdmFpbGFibGVQYW5lcy5zcGxpY2UoKHRoaXMgYXMgYW55KS53aXphcmRDb21wb25lbnQuZ2V0U3RlcEluZGV4QnlSZWYodGhpcyksIDEpO1xuICAgICAgICB0aGlzLndpemFyZENvbXBvbmVudC5zdGVwcy5yZXNldChbLi4uYXZhaWxhYmxlUGFuZXNdKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjb250ZW50Jykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLiRsYXp5TG9hZCgpLCAxMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5pc2R5bmFtaWMpIHtcbiAgICAgICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50LnJlZ2lzdGVyRHluYW1pY1N0ZXAodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NvbnRhaW5lcnMvd2l6YXJkL3NyYy93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLElBQUksRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFcEQsTUFBTSxXQUFXLEdBQUcseUJBQXlCLENBQUM7QUFFOUMsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFrQkYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjthQUMvQyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQW1CekMsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFB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IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgSVdpZGdldENvbmZpZyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgUmVkcmF3YWJsZURpcmVjdGl2ZSxcbiAgICBTdHlsYWJsZUNvbXBvbmVudFxufSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHtOZ0Zvcm19IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tIFwiLi93aXphcmQtc3RlcC5wcm9wc1wiO1xuaW1wb3J0IHtub29wfSBmcm9tIFwiQHdtL2NvcmVcIjtcbmltcG9ydCB7V2l6YXJkQ29tcG9uZW50fSBmcm9tIFwiLi4vd2l6YXJkLmNvbXBvbmVudFwiO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkLXN0ZXAtY29udGVudCc7XG5cbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZHN0ZXAnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFMsXG59O1xuXG5jb25zdCBlbnVtIFNURVBfU1RBVFVTIHtcbiAgICBDVVJSRU5UID0gMSxcbiAgICBESVNBQkxFRCxcbiAgICBDT01QTEVURURcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Zvcm1bd21XaXphcmRTdGVwXScsXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudCBwYXJ0aWFsLWNvbnRhaW5lci10YXJnZXQ+PC9uZy1jb250ZW50PmAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihXaXphcmRTdGVwQ29tcG9uZW50KSxcbiAgICAgICAgTmdGb3JtXG4gICAgXSxcbiAgICBleHBvcnRBczogJ3dtV2l6YXJkU3RlcCdcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkU3RlcENvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHNob3c6IGJvb2xlYW47XG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgZW5hYmxlc2tpcDogYW55O1xuICAgIHB1YmxpYyBkaXNhYmxlbmV4dDogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlzYWJsZWRvbmU6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVwcmV2aW91czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNJbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGlzZHluYW1pYzogYm9vbGVhbjtcbiAgICBwdWJsaWMgJGxhenlMb2FkID0gbm9vcDtcbiAgICBpc0RvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgc3RhdHVzOiBTVEVQX1NUQVRVUyA9IFNURVBfU1RBVFVTLkRJU0FCTEVEO1xuICAgIHByaXZhdGUgd2l6YXJkQ29tcG9uZW50OiBXaXphcmRDb21wb25lbnQ7XG5cbiAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudHMgd2hpY2ggbmVlZHMgYSByZWRyYXcoZWcsIGdyaWQsIGNoYXJ0KSB3aGVuIHRoZSBoZWlnaHQgb2YgdGhpcyBjb21wb25lbnQgY2hhbmdlc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oUmVkcmF3YWJsZURpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgcmVEcmF3YWJsZUNvbXBvbmVudHM7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmN1cnJlbnQnKVxuICAgIGdldCBpc0N1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhbG9uZyB3aXRoIHRoZSB3aXphcmQgZm9ybSAsIGFsc28gdmFsaWRhdGUgdGhlIGZvcm1zXG4gICAgICogaWYgdGhlcmUgYXJlIGFueSBpbnNpZGUgdGhlIHdpemFyZFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm5nRm9ybS52YWxpZCB8fCB0aGlzLm5nRm9ybS5kaXNhYmxlZCkgJiYgdGhpcy5hcmVFbWJlZGRlZEZvcm1zVmFsaWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgYWxsIHRoZSBmb3JtcyBpbnNpZGUgdGhlIHdpemFyZCBpZiBhbnkgYW5kIHZhbGlkYXRlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHJpdmF0ZSBhcmVFbWJlZGRlZEZvcm1zVmFsaWQoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZm9ybSBvZiB0aGlzLmdldEFsbEVtYmVkZGVkRm9ybXMoKSkge1xuICAgICAgICAgICAgaWYgKGZvcm0ud2lkZ2V0ICYmIGZvcm0ud2lkZ2V0Lm5nZm9ybSAmJiAhZm9ybS53aWRnZXQubmdmb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsRW1iZWRkZWRGb3JtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQuZmluZCgnZm9ybScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlTmV4dCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVuZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlRG9uZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVkb25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlUHJldigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVwcmV2aW91cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFjdGl2ZShudjogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuYWN0aXZlO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFNURVBfU1RBVFVTLkNVUlJFTlQ7XG4gICAgICAgIGlmIChudiAmJiAhaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVkcmF3Q2hpbGRyZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFNURVBfU1RBVFVTLkNVUlJFTlQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkb25lKG52OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBTVEVQX1NUQVRVUy5DT01QTEVURUQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gU1RFUF9TVEFUVVMuQ09NUExFVEVEO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQobnY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IFNURVBfU1RBVFVTLkRJU0FCTEVEO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBTVEVQX1NUQVRVUy5ESVNBQkxFRDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBAU2VsZigpIHByaXZhdGUgbmdGb3JtOiBOZ0Zvcm0sIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIC8vIElmIHdlIGluamVjdCBkaXJlY3RseSBhcyBhIHBhcmFtIGluIHRoZSBjb25zdHJ1Y3RvciwgZ2V0dGluZyBjaXJjdWxhciBkZXBlbmRlbmN5IGVycm9yIGluIHVuaXQgdGVzdGNhc2VzXG4gICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50ID0gdGhpcy5pbmouZ2V0KFdpemFyZENvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZU5leHRDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCduZXh0Jywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZVByZXZDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdwcmV2Jywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZVNraXBDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdza2lwJywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgLy8gcmVkcmF3IGFsbCB0aGUgcHJvamVjdGVkIGNvbXBvbmVudHMgd2hpY2ggYXJlIHByb2plY3RlZC5cbiAgICBwcml2YXRlIHJlZHJhd0NoaWxkcmVuKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlRHJhd2FibGVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4gYy5yZWRyYXcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGVwSW5kZXggPSAodGhpcyBhcyBhbnkpLndpemFyZENvbXBvbmVudC5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2xvYWQnLCB7IHN0ZXBJbmRleCB9KTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMgPT09IHRoaXMud2l6YXJkQ29tcG9uZW50LnN0ZXBzLmxhc3QgPyB0aGlzLndpemFyZENvbXBvbmVudC5wcmV2KCkgOiB0aGlzLndpemFyZENvbXBvbmVudC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUGFuZXMgPSB0aGlzLndpemFyZENvbXBvbmVudC5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGF2YWlsYWJsZVBhbmVzLnNwbGljZSgodGhpcyBhcyBhbnkpLndpemFyZENvbXBvbmVudC5nZXRTdGVwSW5kZXhCeVJlZih0aGlzKSwgMSk7XG4gICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50LnN0ZXBzLnJlc2V0KFsuLi5hdmFpbGFibGVQYW5lc10pO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuJGxhenlMb2FkKCksIDEwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmlzZHluYW1pYykge1xuICAgICAgICAgICAgdGhpcy53aXphcmRDb21wb25lbnQucmVnaXN0ZXJEeW5hbWljU3RlcCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -269,17 +269,13 @@ export class WizardComponent extends StylableComponent {
|
|
|
269
269
|
handleNext(value, currentStep, currentStepIndex) {
|
|
270
270
|
if (this.isPromise(value)) {
|
|
271
271
|
value.then(response => {
|
|
272
|
-
this.currentStep.nextCBInProgress = false;
|
|
273
272
|
if (response === false) {
|
|
274
273
|
return;
|
|
275
274
|
}
|
|
276
275
|
this.extendNextFn(currentStep, currentStepIndex);
|
|
277
|
-
}, err =>
|
|
278
|
-
this.currentStep.nextCBInProgress = false;
|
|
279
|
-
});
|
|
276
|
+
}, err => err);
|
|
280
277
|
}
|
|
281
278
|
else {
|
|
282
|
-
this.currentStep.nextCBInProgress = false;
|
|
283
279
|
if (value === false) {
|
|
284
280
|
return;
|
|
285
281
|
}
|
|
@@ -287,19 +283,14 @@ export class WizardComponent extends StylableComponent {
|
|
|
287
283
|
}
|
|
288
284
|
}
|
|
289
285
|
next(eventName = 'next') {
|
|
290
|
-
if (this.currentStep.nextCBInProgress) {
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
286
|
const currentStep = this.currentStep;
|
|
294
287
|
const currentStepIndex = this.getCurrentStepIndex();
|
|
295
288
|
// abort if onSkip method returns false
|
|
296
289
|
if (eventName === 'skip') {
|
|
297
|
-
this.currentStep.nextCBInProgress = true;
|
|
298
290
|
const response = currentStep.invokeSkipCB(currentStepIndex);
|
|
299
291
|
this.handleNext(response, currentStep, currentStepIndex);
|
|
300
292
|
}
|
|
301
293
|
else if (this.currentStep.isValid && eventName === 'next') {
|
|
302
|
-
this.currentStep.nextCBInProgress = true;
|
|
303
294
|
const response = currentStep.invokeNextCB(currentStepIndex);
|
|
304
295
|
this.handleNext(response, currentStep, currentStepIndex);
|
|
305
296
|
}
|
|
@@ -343,27 +334,19 @@ export class WizardComponent extends StylableComponent {
|
|
|
343
334
|
}
|
|
344
335
|
// Method to navigate to previous step
|
|
345
336
|
prev() {
|
|
346
|
-
if (this.currentStep.prevCBInProgress) {
|
|
347
|
-
return;
|
|
348
|
-
}
|
|
349
337
|
const currentStep = this.currentStep;
|
|
350
338
|
const currentStepIndex = this.getCurrentStepIndex();
|
|
351
|
-
this.currentStep.prevCBInProgress = true;
|
|
352
339
|
// abort if onPrev method returns false.
|
|
353
340
|
const response = currentStep.invokePrevCB(currentStepIndex);
|
|
354
341
|
if (this.isPromise(response)) {
|
|
355
342
|
response.then(response => {
|
|
356
|
-
this.currentStep.prevCBInProgress = false;
|
|
357
343
|
if (response === false) {
|
|
358
344
|
return;
|
|
359
345
|
}
|
|
360
346
|
this.extendPrevFn(currentStep, currentStepIndex);
|
|
361
|
-
}, err =>
|
|
362
|
-
this.currentStep.prevCBInProgress = false;
|
|
363
|
-
});
|
|
347
|
+
}, err => err);
|
|
364
348
|
}
|
|
365
349
|
else {
|
|
366
|
-
this.currentStep.prevCBInProgress = false;
|
|
367
350
|
if (response === false) {
|
|
368
351
|
return;
|
|
369
352
|
}
|
|
@@ -669,4 +652,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
669
652
|
type: ContentChild,
|
|
670
653
|
args: ['wizardAction', { read: TemplateRef, descendants: false }]
|
|
671
654
|
}] } });
|
|
672
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sb0JBQW9CLEVBQ3ZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUlILFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDVCxJQUFJLEVBQ0osV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7O0FBRTlGLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsV0FBVztJQUN2QixTQUFTLEVBQUUsV0FBVztD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Z0Msa0JBQWtCO21HQTFGbEosZUFBZSw0REFOYjtZQUNQLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztZQUNuQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDbkUsNEZBT3FDLFdBQVcsd0NBRGhDLG1CQUFtQiw0RUN0RHhDLDByR0FpRUEsMkNEdkJZLFlBQVksb1NBQUUsb0JBQW9COzs0RkFTakMsZUFBZTtrQkFYM0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsWUFDakMsZUFBZSxhQUVkO3dCQUNQLGtCQUFrQixpQkFBaUI7d0JBQ25DLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDbkUsWUFDUyxVQUFVOzswQkE0RitELElBQUk7OzBCQUFJLE1BQU07MkJBQUMsT0FBTzs7MEJBQXlCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQXZGaEksS0FBSztzQkFBMUMsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBQ3FDLFlBQVk7c0JBQXBGLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIENvbnRleHQsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50LFxuICAgIHN0eWxlcixcbiAgICBUZXh0Q29udGVudERpcmVjdGl2ZVxufSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0R5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgbm9vcH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vd2l6YXJkLnByb3BzJztcblxuaW1wb3J0IHtXaXphcmRTdGVwQ29tcG9uZW50fSBmcm9tIFwiLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnRcIjtcbmltcG9ydCB7ZmluZCwgZmluZEluZGV4LCBmb3JFYWNoLCBnZXQsIGluZGV4T2YsIGlzQXJyYXksIGlzTnVtYmVyLCBpc1N0cmluZ30gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkIHBhbmVsIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRleHRDb250ZW50RGlyZWN0aXZlXSxcbiAgICBzZWxlY3RvcjogJ2Rpdlt3bVdpemFyZF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoV2l6YXJkQ29tcG9uZW50KSxcbiAgICAgICAge3Byb3ZpZGU6IENvbnRleHQsIHVzZUZhY3Rvcnk6ICgpID0+IHsgcmV0dXJuIHt9IH0sIG11bHRpOiB0cnVlfVxuICAgIF0sXG4gICAgZXhwb3J0QXM6ICd3bVdpemFyZCdcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQpIHN0ZXBzOiBRdWVyeUxpc3Q8V2l6YXJkU3RlcENvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZCgnd2l6YXJkQWN0aW9uJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgZGVzY2VuZGFudHM6IGZhbHNlIH0pIHdpemFyZEFjdGlvbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBtZXNzYWdlOiB7Y2FwdGlvbjogc3RyaW5nLCB0eXBlOiBzdHJpbmd9O1xuICAgIHB1YmxpYyBjdXJyZW50U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudDtcblxuICAgIHB1YmxpYyBzdGVwQ2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgY2xhc3M7XG4gICAgcHVibGljIG5hbWU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9taXNlUmVzb2x2ZXJGbjogRnVuY3Rpb247XG4gICAgcHVibGljIGFjdGlvbnNhbGlnbm1lbnQ6IGFueTtcbiAgICBwdWJsaWMgY2FuY2VsYWJsZTogYW55O1xuICAgIHB1YmxpYyBlbmFibGVuZXh0OiBhbnk7XG4gICAgcHVibGljIHdpekNvbnRleHQ6IGFueTtcbiAgICBwdWJsaWMgY2FuY2VsYnRubGFiZWw6IGFueTtcbiAgICBwdWJsaWMgZG9uZWJ0bmxhYmVsOiBhbnk7XG4gICAgcHVibGljIHByZXZpb3VzYnRubGFiZWw6IGFueTtcbiAgICBwdWJsaWMgbmV4dGJ0bmxhYmVsOiBhbnk7XG4gICAgcHVibGljIGRlZmF1bHRzdGVwO1xuICAgIHB1YmxpYyBmaWVsZERlZnM7XG4gICAgcHVibGljIHR5cGU7XG4gICAgcHVibGljIG5vZGF0YW1lc3NhZ2U7XG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBfZHluYW1pY0NvbnRleHQ7XG4gICAgcHJpdmF0ZSBkeW5hbWljU3RlcEluZGV4O1xuICAgIHB1YmxpYyBkeW5hbWljV2l6YXJkO1xuICAgIHB1YmxpYyBkZWZhdWx0c3RlcGluZGV4O1xuICAgIHByaXZhdGUgX2lzRmlyc3RMb2FkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgYXV0b0FjdGl2YXRpb246Ym9vbGVhbjtcblxuICAgIGdldCBoYXNQcmV2U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9pc0ZpcnN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBnZXQgaGFzTmV4dFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5faXNMYXN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0RvbmVCdG4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0U3RlcCAmJiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZURvbmU7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZVByZXYoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZVByZXY7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZU5leHQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVuYWJsZW5leHQgPyB0cnVlIDogKHRoaXMuY3VycmVudFN0ZXAuZW5hYmxlTmV4dCAmJiB0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQpO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVEb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcC5lbmFibGVEb25lICYmIHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGN1cnJlbnQgc3RlcCBpbmRleCBvZiB0aGUgV2l6YXJkJ3MgY3VycmVudCBzdGVwXG4gICAgICovXG4gICAgZ2V0IGN1cnJlbnRTdGVwSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgd2VhdGhlciB0aGUgY3VycmVudCBzdGVwIGlzIGZpcnN0IHN0ZXAgb3Igbm90XG4gICAgICovXG4gICAgZ2V0IGlzRmlyc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGaXJzdFN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB3ZWF0aGVyIHRoZSBjdXJyZW50IHN0ZXAgaXMgbGFzdCBzdGVwIG9yIG5vdFxuICAgICAqL1xuICAgIGdldCBpc0xhc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMYXN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgQFNlbGYoKSBASW5qZWN0KENvbnRleHQpIGNvbnRleHRzOiBBcnJheTxhbnk+LCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gPSBub29wO1xuXG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0LCBuZXcgUHJvbWlzZShyZXMgPT4gcmVzb2x2ZUZuID0gcmVzKSk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLlNIRUxMKTtcblxuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuXG4gICAgICAgIC8vIGluaXRpYWxpemUgdGhlIG1lc3NhZ2Ugb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5tZXNzYWdlID0ge1xuICAgICAgICAgICAgY2FwdGlvbjogJycsXG4gICAgICAgICAgICB0eXBlOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndpekNvbnRleHQgPSBjb250ZXh0c1swXTtcbiAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIgPSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1dpemFyZCA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNTdGVwSW5kZXggPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGR5bmFtaWMgc3RlcHMuXG4gICAgICogQWZ0ZXIgYWxsIHN0ZXBzIGFyZSBpbml0aWFsemVkLCB1cGRhdGUgdGhlIHF1ZXJ5bGlzdCBtYW51YWxseSBiYXNlZCBvbiBpbmRleC5cbiAgICAgKiBAcGFyYW0gc3RlcFJlZiAtIHJlZnJlbmNlIG9mIHRoZSB3aXphcmRzdGVwXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRHluYW1pY1N0ZXAoc3RlcFJlZikge1xuICAgICAgICB0aGlzLmR5bmFtaWNXaXphcmQucHVzaChzdGVwUmVmKTtcbiAgICAgICAgY29uc3QgaXNMYXN0U3RlcCA9ICB0aGlzLmR5bmFtaWNXaXphcmQubGVuZ3RoID09PSB0aGlzLmR5bmFtaWNTdGVwSW5kZXg7XG4gICAgICAgIGlmIChpc0xhc3RTdGVwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZHluYW1pY1dpemFyZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0ZXBSZWYgID0gZmluZCh0aGlzLmR5bmFtaWNXaXphcmQsIHN0ZXAgPT4gc3RlcC5keW5hbWljU3RlcEluZGV4ID09PSBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1N0ZXBBbHJlYWR5RXhpc3QgPSBmaW5kKHRoaXMuc3RlcHMudG9BcnJheSgpLCBuZXdTdGVwUmVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3RlcEFscmVhZHlFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLnJlc2V0KFsuLi50aGlzLnN0ZXBzLnRvQXJyYXkoKSwgbmV3U3RlcFJlZl0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3RlcFJlZi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0ZXBSZWYuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byBhZGQgdGhlIHdpemFyZCBzdGVwIGR5bmFtaWNhbGx5XG4gICAgICogQHBhcmFtIHdpemFyZFN0ZXBzIC0gbGlzdCBvZiB3aXphcmRzdGVwc1xuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdGVwKHdpemFyZFN0ZXBzKSB7XG4gICAgICAgIGlmICghaXNBcnJheSh3aXphcmRTdGVwcykpIHtcbiAgICAgICAgICAgIHdpemFyZFN0ZXBzID0gW3dpemFyZFN0ZXBzXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGVwTmFtZXNMaXN0ID0gW107XG4gICAgICAgIGZvckVhY2god2l6YXJkU3RlcHMsIChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTdGVwQWxyZWFkeUNyZWF0ZWQgPSBmaW5kKHRoaXMuc3RlcHMudG9BcnJheSgpLCB7bmFtZTogc3RlcC5uYW1lfSk7XG4gICAgICAgICAgICBjb25zdCBpc1N0ZXBOYW1lRXhpc3QgPSBpbmRleE9mKHN0ZXBOYW1lc0xpc3QsIHN0ZXAubmFtZSk7XG4gICAgICAgICAgICAvLyBJZiB1c2VyIHRyaWVzIHRvIGFkZCB3aXphcmRzdGVwIHdpdGggdGhlIHNhbWUgbmFtZSB3aGljaCBpcyBhbHJlYWR5IGV4aXN0cyB0aGVuIGRvIG5vdCBjcmVhdGUgdGhlIHN0ZXBcbiAgICAgICAgICAgIGlmIChpc1N0ZXBBbHJlYWR5Q3JlYXRlZCB8fCBpc1N0ZXBOYW1lRXhpc3QgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBUaGUgd2l6YXJkIHN0ZXAgd2l0aCBuYW1lICR7c3RlcC5uYW1lfSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcmFtTWFya3VwID0gJyc7XG4gICAgICAgICAgICBsZXQgcHJvcHNUbXBsID0gJyc7XG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNTdGVwSW5kZXgrKztcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzdGVwLm5hbWUgPyBzdGVwLm5hbWUgOiBgd2l6YXJkc3RlcCR7dGhpcy5zdGVwcy50b0FycmF5KCkubGVuZ3RoICsgKGluZGV4ICsgMSl9YDtcbiAgICAgICAgICAgIHN0ZXBOYW1lc0xpc3QucHVzaChuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxQYXJhbXMgPSBnZXQoc3RlcCwgJ3BhcmFtcycpO1xuXG4gICAgICAgICAgICBmb3JFYWNoKHN0ZXAsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ3BhcmFtcycpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNUbXBsID0gYCR7cHJvcHNUbXBsfSAke2tleX09XCIke3ZhbHVlfVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yRWFjaChwYXJ0aWFsUGFyYW1zLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtTWFya3VwID0gYCR7cGFyYW1NYXJrdXB9IDx3bS1wYXJhbSBuYW1lPVwiJHtrZXl9XCIgdmFsdWU9XCIke3ZhbHVlfVwiPjwvd20tcGFyYW0+YDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbWFya3VwID0gYDx3bS13aXphcmRzdGVwIGR5bmFtaWNTdGVwSW5kZXg9XCIke3RoaXMuZHluYW1pY1N0ZXBJbmRleCAtIDF9XCIgaXNkeW5hbWljPVwidHJ1ZVwiIG5hbWU9XCIke25hbWV9XCIgJHtwcm9wc1RtcGx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFyYW1NYXJrdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3dtLXdpemFyZHN0ZXA+YDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljQ29udGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNDb250ZXh0ID0gT2JqZWN0LmNyZWF0ZSh0aGlzLnZpZXdQYXJlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNDb250ZXh0W3RoaXMuZ2V0QXR0cignd21XaXphcmQnKV0gPSB0aGlzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRQcm92aWRlci5hZGRDb21wb25lbnQodGhpcy5nZXROYXRpdmVFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmFwcC13aXphcmQtYm9keScpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7aW5qOiB0aGlzLmluan0pO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3RlcE5hbWVzTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byByZW1vdmUgdGhlIHdpemFyZCBzdGVwXG4gICAgICogQHBhcmFtIHN0ZXAgLSBpbmRleCBvciBuYW1lIG9mIHRoZSBzdGVwXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVN0ZXAoc3RlcDogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBSZWYgPSBpc1N0cmluZyhzdGVwKSA/IHRoaXMuZ2V0U3RlcFJlZkJ5TmFtZShzdGVwKSA6IGlzTnVtYmVyKHN0ZXApXG4gICAgICAgICAgICA/IHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgoc3RlcCkgOiBudWxsO1xuICAgICAgICBzdGVwUmVmID8gc3RlcFJlZi5yZW1vdmUoKSA6IGNvbnNvbGUud2FybihgQ291bGQgbm90IGZpbmQgc3RlcCB3aXRoIG5hbWUgb3IgaW5kZXggJyR7c3RlcH0nIHRvIHJlbW92ZWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgbmV4dCB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwQ29tcG9uZW50fVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuc3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGkpO1xuICAgICAgICAgICAgaWYgKHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBwcmV2aW91cyB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwQ29tcG9uZW50fVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmIChzdGVwLnNob3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgY3VycmVudCBzdGVwIGluZGV4IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50U3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgc3RlcFJlZiB3aGVuIGluZGV4IGlzIHBhc3NlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcENvbXBvbmVudH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRoZSBpbmRleCB2YWx1ZSBvZiB0aGUgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBDb21wb25lbnR9IHdpemFyZFN0ZXBcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RlcEluZGV4QnlSZWYod2l6YXJkU3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHdpemFyZFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHMgc3RlcFJlZiBieSBzZWFyY2hpbmcgb24gdGhlIG5hbWUgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcENvbXBvbmVudH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgZGVmYXVsdCBzdGVwIGFzIGN1cnJlbnQgc3RlcCBpZiBjb25maWd1cmVkXG4gICAgICogb3IgZmluZHMgZmlyc3QgdmFsaWQgc3RlcCBhbmQgc2V0IGl0IGFzIGN1cnJlbnQgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBDb21wb25lbnR9IHN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERlZmF1bHRTdGVwKHN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpIHtcbiAgICAgICAgLy8gSWYgdGhlIGRlZmF1bHQgc3RlcCBoYXMgc2hvdyB0cnVlIHRoZW4gb25seSB1cGRhdGUgdGhlIGN1cnJlbnRTdGVwXG4gICAgICAgIGlmIChzdGVwICYmIHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHN0ZXA7XG4gICAgICAgICAgICBzdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gTWFyayBhbGwgcHJldmlvdXMgc3RlcCBzdGF0dXMgQ09NUExFVEVEXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHN0ZXApIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2V0IG5leHQgdmFsaWQgc3RlcCBhcyBjdXJyZW50IHN0ZXBcbiAgICAgICAgICAgIHN0ZXAgPSB0aGlzLmdldE5leHRWYWxpZFN0ZXBGb3JtSW5kZXgoMCk7XG4gICAgICAgICAgICBpZiAoc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFN0ZXAoc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGFzc29jaWF0ZWQgc3RlcCB3aGVuIHRoZSB3aXphcmQgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAgICogQHBhcmFtICRldmVudFxuICAgICAqIEBwYXJhbSB7V2l6YXJkU3RlcENvbXBvbmVudH0gY3VycmVudFN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50OiBFdmVudCwgY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpIHtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBzdGVwIGlmIGl0J3Mgc3RhdHVzIGlzIGRvbmVcbiAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmRvbmUpIHtcbiAgICAgICAgICAgIC8vIHNldCBhbGwgdGhlIG5leHQgc3RlcHMgc3RhdHVzIGFzIGRpc2FibGVkIGFuZCBwcmV2aW91cyBzdGVwcyBhcyBkb25lXG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5nZXRTdGVwSW5kZXhCeVJlZihjdXJyZW50U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICBzdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgIHN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgc2VsZWN0ZWQgc3RlcCBhcyBjdXJyZW50IHN0ZXAgYW5kIG1ha2UgaXQgYWN0aXZlXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gY3VycmVudFN0ZXA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvbWlzZSA9IChvYmopID0+IG9iaiBpbnN0YW5jZW9mIFByb21pc2UgfHwgKG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5jYXRjaCA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gbmV4dCBzdGVwXG5cbiAgICBwcml2YXRlIGhhbmRsZU5leHQodmFsdWU6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+LCBjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCkge1xuICAgICAgICBpZiAodGhpcy5pc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgICAgICAodmFsdWUgYXMgUHJvbWlzZTxib29sZWFuPikudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5uZXh0Q0JJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5uZXh0Q0JJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5uZXh0Q0JJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRlbmROZXh0Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5leHQoZXZlbnROYW1lOiBzdHJpbmcgPSAnbmV4dCcpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAubmV4dENCSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcEluZGV4ID0gdGhpcy5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgLy8gYWJvcnQgaWYgb25Ta2lwIG1ldGhvZCByZXR1cm5zIGZhbHNlXG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdza2lwJykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5uZXh0Q0JJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gIGN1cnJlbnRTdGVwLmludm9rZVNraXBDQihjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTmV4dChyZXNwb25zZSwgY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBldmVudE5hbWUgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5uZXh0Q0JJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlICA9ICBjdXJyZW50U3RlcC5pbnZva2VOZXh0Q0IoY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU5leHQocmVzcG9uc2UsIGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVuYWJsZW5leHQgJiYgIXRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCl7XG4gICAgICAgICAgICBBcnJheS5mcm9tKCg8YW55PnRoaXMpLmN1cnJlbnRTdGVwLmdldEFsbEVtYmVkZGVkRm9ybXMoKSk/LmZvckVhY2goKGZvcm06YW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybS53aWRnZXQuaGlnaGxpZ2h0SW52YWxpZEZpZWxkcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkRm9ybUlucHV0RWxlbWVudCA9IHRoaXMuY3VycmVudFN0ZXAubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcImlucHV0Lm5nLWludmFsaWRcIikgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGludmFsaWRGb3JtSW5wdXRFbGVtZW50Py5mb2N1cygpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZE5leHRGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCkge1xuICAgICAgICBjb25zdCBuZXh0U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCA9IHRoaXMuZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChjdXJyZW50U3RlcEluZGV4ICsgMSk7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3RlcHMgd2hpY2ggaGFzIHNob3cgdGhlbiBvbmx5IGNoYW5nZSBzdGF0ZSBvZiBjdXJyZW50IHN0ZXAgZWxzZSByZW1haW4gc2FtZVxuICAgICAgICBpZiAobmV4dFN0ZXApIHtcbiAgICAgICAgICAgIG5leHRTdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgbmV4dFN0ZXAuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBuZXh0U3RlcDtcbiAgICAgICAgICAgIC8vIFJlbW92ZSAnY3VycmVudCcgY2xhc3MgZnJvbSBhbGwgd2l6YXJkIHN0ZXBzIGluIGhlYWRlclxuICAgICAgICAgICAgY29uc3QgYWxsU3RlcEl0ZW1zID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpW2RhdGEtc3RlcGlkXScpO1xuICAgICAgICAgICAgYWxsU3RlcEl0ZW1zLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnY3VycmVudCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGVsLnF1ZXJ5U2VsZWN0b3IoJ2EnKTtcbiAgICAgICAgICAgICAgICBpZiAoYW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBBZGQgJ2N1cnJlbnQnIHRvIG5leHQgc3RlcCBoZWFkZXIgaXRlbVxuICAgICAgICAgICAgY29uc3QgbmV3U3RlcExpID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpW2RhdGEtc3RlcGlkPVwiJHtuZXh0U3RlcC53aWRnZXRJZH1cIl1gKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ZXBBbmNob3IgPSBuZXdTdGVwTGk/LnF1ZXJ5U2VsZWN0b3IoJ2EnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChuZXdTdGVwTGkgJiYgbmV3U3RlcEFuY2hvcikge1xuICAgICAgICAgICAgICAgIG5ld1N0ZXBMaS5jbGFzc0xpc3QuYWRkKCdjdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgbmV3U3RlcEFuY2hvci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgICAgICAgICBuZXdTdGVwQW5jaG9yLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0ZXBGb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkTW9yZVRleHQoKTtcbiAgICB9XG4gICAgLy8gTWV0aG9kIHRvIG5hdmlnYXRlIHRvIHByZXZpb3VzIHN0ZXBcbiAgICBwdWJsaWMgcHJldigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAucHJldkNCSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcEluZGV4ID0gdGhpcy5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5wcmV2Q0JJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgLy8gYWJvcnQgaWYgb25QcmV2IG1ldGhvZCByZXR1cm5zIGZhbHNlLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGN1cnJlbnRTdGVwLmludm9rZVByZXZDQihjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgaWYgKHRoaXMuaXNQcm9taXNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgKHJlc3BvbnNlIGFzIFByb21pc2U8Ym9vbGVhbj4pLnRoZW4oIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLnByZXZDQkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbmRQcmV2Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLnByZXZDQkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5wcmV2Q0JJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRlbmRQcmV2Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRQcmV2Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpe1xuICAgICAgICBjb25zdCBwcmV2U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCA9IHRoaXMuZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoY3VycmVudFN0ZXBJbmRleCAtIDEpO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3RlcHMgd2hpY2ggaGFzIHNob3cgdGhlbiBvbmx5IGNoYW5nZSBzdGF0ZSBvZiBjdXJyZW50IHN0ZXAgZWxzZSByZW1haW4gc2FtZVxuICAgICAgICBpZiAocHJldlN0ZXApIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmlzRG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJldlN0ZXAuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBwcmV2U3RlcDtcbiAgICAgICAgICAgIC8vICBSZW1vdmUgJ2N1cnJlbnQnIGNsYXNzIGZyb20gYWxsIHN0ZXBzXG4gICAgICAgICAgICBjb25zdCBhbGxTdGVwSXRlbXMgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlbZGF0YS1zdGVwaWRdJyk7XG4gICAgICAgICAgICBhbGxTdGVwSXRlbXMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdjdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gZWwucXVlcnlTZWxlY3RvcignYScpO1xuICAgICAgICAgICAgICAgIGlmIChhbmNob3IpIHtcbiAgICAgICAgICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEFwcGx5ICdjdXJyZW50JyB0byBwcmV2IHN0ZXBcbiAgICAgICAgICAgIGNvbnN0IHByZXZTdGVwTGkgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1zdGVwaWQ9XCIke3ByZXZTdGVwLndpZGdldElkfVwiXWApO1xuICAgICAgICAgICAgY29uc3QgcHJldlN0ZXBBbmNob3IgPSBwcmV2U3RlcExpPy5xdWVyeVNlbGVjdG9yKCdhJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAocHJldlN0ZXBMaSAmJiBwcmV2U3RlcEFuY2hvcikge1xuICAgICAgICAgICAgICAgIHByZXZTdGVwTGkuY2xhc3NMaXN0LmFkZCgnY3VycmVudCcpO1xuICAgICAgICAgICAgICAgIHByZXZTdGVwQW5jaG9yLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgICAgIHByZXZTdGVwQW5jaG9yLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0ZXBGb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkTW9yZVRleHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2tpcCgpIHtcbiAgICAgICAgdGhpcy5uZXh0KCdza2lwJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIHRoZSBnaXZlbiBzdGVwIGJhc2VkIG9uIHN0ZXAgbmFtZSBvciBzdGVwIGluZGV4XG4gICAgICogVGhpcyB3aWxsIHdvcmsgb25seSBpZiB0aGUgc3RlcCBpcyBhbHJlYWR5IGluIGRvbmUgc3RhdGVcbiAgICAgKiBAcGFyYW0gc3RlcFxuICAgICAqL1xuICAgIHB1YmxpYyBnb3RvU3RlcChzdGVwOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgbGV0IGdvdG9TdGVwSW5kZXg6IG51bWJlcjtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHN0ZXApKSB7XG4gICAgICAgICAgICBnb3RvU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkubWFwKHN0ZXAgPT4gc3RlcC5uYW1lKS5pbmRleE9mKHN0ZXApO1xuICAgICAgICAgICAgaWYgKGdvdG9TdGVwSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQ291bGQgbm90IGZpbmQgc3RlcCAnJHtzdGVwfSdgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoc3RlcCkgJiYgc3RlcCA+PSAwKSB7XG4gICAgICAgICAgICBnb3RvU3RlcEluZGV4ID0gc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIHN0ZXAgbmFtZSBvciBpbmRleCBwcm92aWRlZFwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdvdG9TdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50ID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChnb3RvU3RlcEluZGV4KTtcblxuICAgICAgICBpZiAoZ290b1N0ZXA/LnNob3cpIHtcbiAgICAgICAgICAgIHRoaXMub25XaXphcmRIZWFkZXJDbGljayhldmVudCwgZ290b1N0ZXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZSBnb3RvU3RlcCBmdW5jdGlvbiBjYW5ub3QgbmF2aWdhdGUgdG8gaGlkZGVuIHN0ZXBzXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIGludm9rZSBvbi1Eb25lIGV2ZW50IG9uIHdpemFyZFxuICAgIHB1YmxpYyBkb25lKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZG9uZScsIHtzdGVwczogdGhpcy5zdGVwcy50b0FycmF5KCl9KTtcbiAgICB9XG4gICAgLy8gTWV0aG9kIHRvIGludm9rZSBvbi1DYW5jZWwgZXZlbnQgb24gd2l6YXJkXG4gICAgcHVibGljIGNhbmNlbCAoKSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2FuY2VsJywge3N0ZXBzOiB0aGlzLnN0ZXBzLnRvQXJyYXkoKX0pO1xuICAgIH1cbiAgICBwdWJsaWMgYWRkTW9yZVRleHQoKXtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG5cblxuICAgICAgICB2YXIgbmV3V2luZG93V2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICAgICAgaWYobmV3V2luZG93V2lkdGggPCA3Njgpe1xuICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmNzcyh7XCJoZWlnaHRcIjpcImF1dG9cIixcImRpc3BsYXlcIjpcImJsb2NrXCJ9KTtcbiAgICAgICAgdmFyIHN1YnRpdGxlVGV4dExlbmd0aCA9ICQoXCIuYXBwLXdpemFyZC1zdGVwLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXIgLnN0ZXAtdGl0bGVcIikuaGVpZ2h0KCk7XG4gICAgICAgICQoXCIucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5yZW1vdmVDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuXG4gICAgICAgIGlmKHN1YnRpdGxlVGV4dExlbmd0aD40NCl7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmNzcyh7XCJoZWlnaHRcIjpcIjQ0cHhcIixcImRpc3BsYXlcIjpcIi13ZWJraXQtYm94XCJ9KTtcbiAgICAgICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcImJsb2NrXCIpO1xuICAgICAgICAgICAgJChcIi5hY3RpdmUgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAgICAgJChcIi5kaXNhYmxlIC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgICAgICQoXCIuYXBwLXdpemFyZC1zdGVwPmFcIikuY3NzKFwiaGVpZ2h0XCIsXCIxMDBweFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB9XG4gICAgcHVibGljIHJlYWRNb3JlU3VidGl0bGUoKXtcbiAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLmFkZENsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG4gICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2V1cFwiLGZ1bmN0aW9uKGU6YW55KVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJChcIi5zdWJ0aXRsZS13cmFwcGVyXCIpO1xuICAgICAgICAgICAgLy8gaWYgdGhlIHRhcmdldCBvZiB0aGUgY2xpY2sgaXNuJ3QgdGhlIGNvbnRhaW5lciBub3IgYSBkZXNjZW5kYW50IG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyLmlzKGUudGFyZ2V0KSAmJiBjb250YWluZXIuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLnJlbW92ZUNsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgJChcIi5jdXJyZW50IC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwiYmxvY2tcIik7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2V1cFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNGaXJzdFN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcENvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maXJzdCA9PT0gc3RlcFJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0xhc3RTdGVwKHN0ZXBSZWY6IFdpemFyZFN0ZXBDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGFzdCA9PT0gc3RlcFJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGF0YUNoYW5nZShuZXdWYWwpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBjcmVhdGVBcnJheUZyb20obmV3VmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVN0ZXBGb2N1cygpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3RlcEVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5hcHAtd2l6YXJkLWhlYWRpbmcgbGkuY3VycmVudCBhXCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY3VycmVudFN0ZXBFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHByb3BlcnR5IGNoYW5nZSBoYW5kbGVyLiBUaGlzIE1ldGhvZCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSB3aWRnZXQgcHJvcGVydHlcbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICAvLyBNb25pdG9yaW5nIGNoYW5nZXMgZm9yIHByb3BlcnRpZXMgYW5kIGFjY29yZGluZ2x5IGhhbmRsaW5nIHJlc3BlY3RpdmUgY2hhbmdlc1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdzdGVwc3R5bGUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBDbGFzcyA9ICBudiA9PT0gJ2p1c3RpZmllZCcgPyAnbmF2LWp1c3RpZmllZCcgOiAnJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UobnYpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RlZmF1bHRzdGVwJykge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0U3RlcCh0aGlzLmdldFN0ZXBSZWZCeU5hbWUobnYpKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhY3Rpb25zYWxpZ25tZW50Jykge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5hcHAtd2l6YXJkLWFjdGlvbnMnKT8uY2xhc3NMaXN0LnJlcGxhY2Uob3YsIG52KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbigpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuaGFzTmV4dFN0ZXAgPSAoKSA9PiB0aGlzLmhhc05leHRTdGVwO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuaGFzUHJldmlvdXNTdGVwID0gKCkgPT4gdGhpcy5oYXNQcmV2U3RlcDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0Lmhhc05vTmV4dFN0ZXAgPSAoKSA9PiB0aGlzLnNob3dEb25lQnRuO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuY2FuY2VsYWJsZSA9ICgpID0+IHRoaXMuY2FuY2VsYWJsZTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LnNraXBwYWJsZSA9ICgpID0+IHRoaXMuY3VycmVudFN0ZXA/LmVuYWJsZXNraXA7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5uZXh0ID0gKCkgPT4gdGhpcy5uZXh0KCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5wcmV2aW91cyA9ICgpID0+IHRoaXMucHJldigpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZG9uZSA9ICgpID0+IHRoaXMuZG9uZSgpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuY2FuY2VsID0gKCkgPT4gdGhpcy5jYW5jZWwoKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LnNraXAgPSAoKSA9PiB0aGlzLnNraXAoKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0Lm5leHRidG5sYWJlbCA9ICgpID0+IHRoaXMubmV4dGJ0bmxhYmVsO1xuICAgICAgICB0aGlzLndpekNvbnRleHQucHJldmlvdXNidG5sYWJlbCA9ICgpID0+IHRoaXMucHJldmlvdXNidG5sYWJlbDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmRvbmVidG5sYWJlbCA9ICgpID0+IHRoaXMuZG9uZWJ0bmxhYmVsO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuY2FuY2VsYnRubGFiZWwgPSAoKSA9PiB0aGlzLmNhbmNlbGJ0bmxhYmVsO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuYWN0aW9uc2FsaWdubWVudCA9ICgpID0+IHRoaXMuYWN0aW9uc2FsaWdubWVudDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmRpc2FibGVOZXh0ID0gKCkgPT4gIXRoaXMuZW5hYmxlTmV4dDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmRpc2FibGVQcmV2aW91cyA9ICgpID0+ICF0aGlzLmVuYWJsZVByZXY7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5kaXNhYmxlRG9uZSA9ICgpID0+ICF0aGlzLmVuYWJsZURvbmU7XG4gICAgICAgIHRoaXMuc3RlcHMuY2hhbmdlcy5zdWJzY3JpYmUoIHNsaWRlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPiAxICYmIHRoaXMudHlwZSA9PT0gJ2R5bmFtaWMnICYmIHRoaXMuX2lzRmlyc3RMb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0U3RlcCh0aGlzLmdldFN0ZXBSZWZCeUluZGV4KHRoaXMuZGVmYXVsdHN0ZXBpbmRleCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGlzU2VsZWN0YWJsZVN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcENvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXBSZWYuc2hvdyAmJiAhc3RlcFJlZi5kaXNhYmxlZDtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RhYmxlU3RlcEJlZm9yZUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgoaSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlU3RlcChzdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleCh0aGlzLnN0ZXBzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVN0ZXAoc3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RhYmxlU3RlcEFmdGVySW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBpbmRleCArIDE7IGkgPCB0aGlzLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVTdGVwKHN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleCgwKTtcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVN0ZXAoc3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcihcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucGFuZWwtYm9keScpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIEFQUExZX1NUWUxFU19UWVBFLklOTkVSX1NIRUxMXG4gICAgICAgICk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBpZigkKHdpbmRvdykud2lkdGgoKTw3NjgpIHtcbiAgICAgICAgICAgICQoXCIuYXBwLXdpemFyZFwiKS5yZW1vdmVDbGFzcyhcInZlcnRpY2FsXCIpO1xuICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYuYXBwLXdpemFyZC1hY3Rpb25zJykuZm9yRWFjaChlbCA9PiBlbD8uY2xhc3NMaXN0LmFkZCh0aGlzLmFjdGlvbnNhbGlnbm1lbnQpKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Rpdi5hcHAtd2l6YXJkLWFjdGlvbnMtcmlnaHQnKS5mb3JFYWNoKGVsID0+IGVsPy5jbGFzc0xpc3QucmVtb3ZlKCdhcHAtY29udGFpbmVyJykpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0QWN0aXZlU3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBmaW5kSW5kZXgodGhpcy5zdGVwcy50b0FycmF5KCksIHtpc0N1cnJlbnQ6IHRydWV9KTtcbiAgICB9XG4gICAgb25rZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdTdGVwO1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbmV3U3RlcCA9IHRoaXMuYXV0b0FjdGl2YXRpb24gPyBudWxsIDogdGhpcy5nZXRTZWxlY3RhYmxlU3RlcEJlZm9yZUluZGV4KHRoaXMuZ2V0U2VsZWN0ZWRTdGVwSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIG5ld1N0ZXAgPSB0aGlzLmF1dG9BY3RpdmF0aW9uID8gbnVsbCA6IHRoaXMuZ2V0U2VsZWN0YWJsZVN0ZXBBZnRlckluZGV4KHRoaXMuZ2V0U2VsZWN0ZWRTdGVwSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlYmFyJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbGVtZW50ICA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdsaS5jdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBMaSA9IGFjdGl2ZUVsZW1lbnQuY2xvc2VzdCgnbGlbZGF0YS1zdGVwaWRdJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSW5XaXphcmRIZWFkZXIgPSBhY3RpdmVFbGVtZW50LmNsb3Nlc3QoJy5hcHAtd2l6YXJkLWhlYWRpbmcnKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcExpICYmIGlzSW5XaXphcmRIZWFkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcElkID0gc3RlcExpLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGVwaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC53aWRnZXRJZCA9PT0gc3RlcElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKVtzdGVwSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0ZXAgJiYgY3VycmVudFN0ZXAgIT09IHRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uV2l6YXJkSGVhZGVyQ2xpY2soZXZlbnQsIGN1cnJlbnRTdGVwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0YWJpbmRleCBmb3IgYWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbFN0ZXBJdGVtcyA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaVtkYXRhLXN0ZXBpZF0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxTdGVwSXRlbXMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBBbmNob3IgPSBzdGVwTGkucXVlcnlTZWxlY3RvcignYScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGVwQW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcEFuY2hvci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwQW5jaG9yLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgIGlmIChuZXdTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignbGkuY3VycmVudCcpPy5jbGFzc0xpc3QucmVtb3ZlKCdjdXJyZW50Jyk7XG4gICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpW2RhdGEtc3RlcGlkPVwiJHtuZXdTdGVwLndpZGdldElkfVwiXWApPy5jbGFzc0xpc3QuYWRkKCdjdXJyZW50Jyk7XG4gICAgICAgICAgICAgY29uc3Qgc3RlcExpID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYXBwLXdpemFyZC1oZWFkaW5nIGxpLmN1cnJlbnQgYVwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICBjb25zdCBhbGxTdGVwSXRlbXMgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlbZGF0YS1zdGVwaWRdIGEnKTtcbiAgICAgICAgICAgICBhbGxTdGVwSXRlbXMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIChzdGVwTGkpLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgc3RlcExpPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFNlbGVjdGVkU3RlcEluZGV4KCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLmZpbmRJbmRleChzdGVwID0+XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1zdGVwaWQ9XCIke3N0ZXAud2lkZ2V0SWR9XCJdYCk/LmNsYXNzTGlzdC5jb250YWlucyhcImN1cnJlbnRcIikpO1xuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGluZGV4IDogdGhpcy5nZXRBY3RpdmVTdGVwSW5kZXgoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1oZWFkaW5nXCI+XG4gIDx1bCBjbGFzcz1cImFwcC13aXphcmQtc3RlcHMgbmF2IG5hdi1waWxscyB7e3N0ZXBDbGFzc319XCI+XG4gICAgQGZvciAoc3RlcCBvZiBzdGVwczsgdHJhY2sgc3RlcDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgIDxsaSBjbGFzcz1cImFwcC13aXphcmQtc3RlcFwiIFtoaWRkZW5dPVwiIXN0ZXAuc2hvd1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHN0ZXAuZG9uZSwgY3VycmVudDogc3RlcC5hY3RpdmUsIGRpc2FibGVkOiBzdGVwLmRpc2FibGVkfVwiXG4gICAgICAgIChjbGljayk9XCJvbldpemFyZEhlYWRlckNsaWNrKCRldmVudCwgc3RlcClcIiBbYXR0ci5kYXRhLXN0ZXBpZF09XCJzdGVwLndpZGdldElkXCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwic3RlcC5hY3RpdmUgPyAnc3RlcCcgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInN0ZXAuZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT0nc3RlcC5zdWJ0aXRsZSA/IFwic3RlcCBcIiArIChpICsgMSkgKyBcIiBcIiArICBzdGVwLnRpdGxlICsgXCIgXCIgKyBzdGVwLnN1YnRpdGxlIDogXCJzdGVwIFwiICsgKGkgKyAxKSArIFwiIFwiICsgIHN0ZXAudGl0bGUnIFthdHRyLnRpdGxlXT0gXCJzdGVwLnRpdGxlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3RpdGxlLWNlbnRlci1hbGlnbic6Y2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2NsYXNzaWMnKSAmJiAhc3RlcC5zdWJ0aXRsZX1cIiBbdGFiaW5kZXhdPVwic3RlcC5hY3RpdmUgPyAnMCcgOiAnLTEnXCIgKGtleWRvd24pPVwib25rZXlkb3duKCRldmVudClcIj5cbiAgICAgICAgICBAaWYgKGNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdjbGFzc2ljJykpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2l6YXJkLXN0ZXAtbnVtYmVyXCI+XG4gICAgICAgICAgICBAaWYgKGNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdudW1iZXInKSAmJiAhc3RlcC5pc0RvbmUpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudFwiPnt7aSsxfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNsYXNzICYmIChjbGFzcy5pbmNsdWRlcygnZG90dGVkc3RlcHBlcicpIHx8IGNsYXNzLmluY2x1ZGVzKCd0ZXh0LWlubGluZScpICYmICFjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSkgJiYgIXN0ZXAuaXNEb25lKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZG90dGVkc3RlcHBlclwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2xhc3MgJiYgKGNsYXNzLmluY2x1ZGVzKCdkb3R0ZWRzdGVwcGVyJykgfHwgY2xhc3MuaW5jbHVkZXMoJ251bWJlcicpKSAmJiBzdGVwLmlzRG9uZSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIHdpLWRvbmVcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKChjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSkgJiYgKChzdGVwLmljb25jbGFzcyAmJiAhc3RlcC5pc0RvbmUpIHx8IChzdGVwLmljb25jbGFzcyAmJiBzdGVwLmlzRG9uZSAmJiBzdGVwLmRvbmVpY29uY2xhc3MgPT09JycpKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7c3RlcC5pY29uY2xhc3N9fVwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc3RlcC5kb25laWNvbmNsYXNzICYmIHN0ZXAuaXNEb25lICYmIChjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSkpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhcHAtaWNvbiB7e3N0ZXAuZG9uZWljb25jbGFzc319XCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIEBpZiAoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ3RleHQtaW5saW5lJykpIHtcbiAgICAgICAgICAgICAgPHNwYW4+e3snMCcgKyAoaSsxKX19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInN0ZXAudGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIEBpZiAoc3RlcC5zdWJ0aXRsZSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZS13cmFwcGVyXCIgW2F0dHIudGl0bGVdPVwic3RlcC5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3RlcC5zdWJ0aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJyZWFkX21vcmVcIiAoY2xpY2spPVwicmVhZE1vcmVTdWJ0aXRsZSgpXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5tb3JlPC9hPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICB9XG4gIDwvdWw+XG48L2Rpdj5cbkBpZiAodHlwZSAhPT0gJ2R5bmFtaWMnKSB7XG48ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1ib2R5IHBhbmVsLWJvZHlcIj5cbiAgQGlmIChtZXNzYWdlLmNhcHRpb24pIHtcbiAgICA8cCB3bU1lc3NhZ2UgY2FwdGlvbi5iaW5kPVwibWVzc2FnZS5jYXB0aW9uXCIgdHlwZS5iaW5kPVwibWVzc2FnZS50eXBlXCI+PC9wPlxuICB9XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiZm9ybVt3bVdpemFyZFN0ZXBdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG59XG5AaWYgKHR5cGUgPT09ICdkeW5hbWljJykge1xuPGRpdiBjbGFzcz1cImFwcC13aXphcmQtYm9keSBwYW5lbC1ib2R5XCI+XG4gICAgQGlmKCFmaWVsZERlZnM/Lmxlbmd0aCkge1xuICAgIDxkaXY+e3tub2RhdGFtZXNzYWdlfX08L2Rpdj5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2W3dtUmVwZWF0VGVtcGxhdGVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG59XG5AaWYoZmllbGREZWZzICYmIGZpZWxkRGVmcy5sZW5ndGggfHwgdHlwZSAhPT0gJ2R5bmFtaWMnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIndpemFyZEFjdGlvblwiPjwvbmctY29udGFpbmVyPlxufVxuIl19
|
|
655
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sb0JBQW9CLEVBQ3ZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUlILFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDVCxJQUFJLEVBQ0osV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7O0FBRTlGLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsV0FBVztJQUN2QixTQUFTLEVBQUUsV0FBVztD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QkFBbUI7Z0JBQ3FDLFlBQVk7c0JBQXBGLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIENvbnRleHQsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50LFxuICAgIHN0eWxlcixcbiAgICBUZXh0Q29udGVudERpcmVjdGl2ZVxufSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0R5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgbm9vcH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vd2l6YXJkLnByb3BzJztcblxuaW1wb3J0IHtXaXphcmRTdGVwQ29tcG9uZW50fSBmcm9tIFwiLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnRcIjtcbmltcG9ydCB7ZmluZCwgZmluZEluZGV4LCBmb3JFYWNoLCBnZXQsIGluZGV4T2YsIGlzQXJyYXksIGlzTnVtYmVyLCBpc1N0cmluZ30gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkIHBhbmVsIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRleHRDb250ZW50RGlyZWN0aXZlXSxcbiAgICBzZWxlY3RvcjogJ2Rpdlt3bVdpemFyZF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoV2l6YXJkQ29tcG9uZW50KSxcbiAgICAgICAge3Byb3ZpZGU6IENvbnRleHQsIHVzZUZhY3Rvcnk6ICgpID0+IHsgcmV0dXJuIHt9IH0sIG11bHRpOiB0cnVlfVxuICAgIF0sXG4gICAgZXhwb3J0QXM6ICd3bVdpemFyZCdcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQpIHN0ZXBzOiBRdWVyeUxpc3Q8V2l6YXJkU3RlcENvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZCgnd2l6YXJkQWN0aW9uJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgZGVzY2VuZGFudHM6IGZhbHNlIH0pIHdpemFyZEFjdGlvbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBtZXNzYWdlOiB7Y2FwdGlvbjogc3RyaW5nLCB0eXBlOiBzdHJpbmd9O1xuICAgIHB1YmxpYyBjdXJyZW50U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudDtcblxuICAgIHB1YmxpYyBzdGVwQ2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgY2xhc3M7XG4gICAgcHVibGljIG5hbWU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9taXNlUmVzb2x2ZXJGbjogRnVuY3Rpb247XG4gICAgcHVibGljIGFjdGlvbnNhbGlnbm1lbnQ6IGFueTtcbiAgICBwdWJsaWMgY2FuY2VsYWJsZTogYW55O1xuICAgIHB1YmxpYyBlbmFibGVuZXh0OiBhbnk7XG4gICAgcHVibGljIHdpekNvbnRleHQ6IGFueTtcbiAgICBwdWJsaWMgY2FuY2VsYnRubGFiZWw6IGFueTtcbiAgICBwdWJsaWMgZG9uZWJ0bmxhYmVsOiBhbnk7XG4gICAgcHVibGljIHByZXZpb3VzYnRubGFiZWw6IGFueTtcbiAgICBwdWJsaWMgbmV4dGJ0bmxhYmVsOiBhbnk7XG4gICAgcHVibGljIGRlZmF1bHRzdGVwO1xuICAgIHB1YmxpYyBmaWVsZERlZnM7XG4gICAgcHVibGljIHR5cGU7XG4gICAgcHVibGljIG5vZGF0YW1lc3NhZ2U7XG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBfZHluYW1pY0NvbnRleHQ7XG4gICAgcHJpdmF0ZSBkeW5hbWljU3RlcEluZGV4O1xuICAgIHB1YmxpYyBkeW5hbWljV2l6YXJkO1xuICAgIHB1YmxpYyBkZWZhdWx0c3RlcGluZGV4O1xuICAgIHByaXZhdGUgX2lzRmlyc3RMb2FkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgYXV0b0FjdGl2YXRpb246Ym9vbGVhbjtcblxuICAgIGdldCBoYXNQcmV2U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9pc0ZpcnN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBnZXQgaGFzTmV4dFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5faXNMYXN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0RvbmVCdG4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0U3RlcCAmJiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZURvbmU7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZVByZXYoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZVByZXY7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZU5leHQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVuYWJsZW5leHQgPyB0cnVlIDogKHRoaXMuY3VycmVudFN0ZXAuZW5hYmxlTmV4dCAmJiB0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQpO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVEb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcC5lbmFibGVEb25lICYmIHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGN1cnJlbnQgc3RlcCBpbmRleCBvZiB0aGUgV2l6YXJkJ3MgY3VycmVudCBzdGVwXG4gICAgICovXG4gICAgZ2V0IGN1cnJlbnRTdGVwSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgd2VhdGhlciB0aGUgY3VycmVudCBzdGVwIGlzIGZpcnN0IHN0ZXAgb3Igbm90XG4gICAgICovXG4gICAgZ2V0IGlzRmlyc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGaXJzdFN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB3ZWF0aGVyIHRoZSBjdXJyZW50IHN0ZXAgaXMgbGFzdCBzdGVwIG9yIG5vdFxuICAgICAqL1xuICAgIGdldCBpc0xhc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMYXN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgQFNlbGYoKSBASW5qZWN0KENvbnRleHQpIGNvbnRleHRzOiBBcnJheTxhbnk+LCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gPSBub29wO1xuXG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0LCBuZXcgUHJvbWlzZShyZXMgPT4gcmVzb2x2ZUZuID0gcmVzKSk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLlNIRUxMKTtcblxuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuXG4gICAgICAgIC8vIGluaXRpYWxpemUgdGhlIG1lc3NhZ2Ugb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5tZXNzYWdlID0ge1xuICAgICAgICAgICAgY2FwdGlvbjogJycsXG4gICAgICAgICAgICB0eXBlOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndpekNvbnRleHQgPSBjb250ZXh0c1swXTtcbiAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIgPSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1dpemFyZCA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNTdGVwSW5kZXggPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGR5bmFtaWMgc3RlcHMuXG4gICAgICogQWZ0ZXIgYWxsIHN0ZXBzIGFyZSBpbml0aWFsemVkLCB1cGRhdGUgdGhlIHF1ZXJ5bGlzdCBtYW51YWxseSBiYXNlZCBvbiBpbmRleC5cbiAgICAgKiBAcGFyYW0gc3RlcFJlZiAtIHJlZnJlbmNlIG9mIHRoZSB3aXphcmRzdGVwXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRHluYW1pY1N0ZXAoc3RlcFJlZikge1xuICAgICAgICB0aGlzLmR5bmFtaWNXaXphcmQucHVzaChzdGVwUmVmKTtcbiAgICAgICAgY29uc3QgaXNMYXN0U3RlcCA9ICB0aGlzLmR5bmFtaWNXaXphcmQubGVuZ3RoID09PSB0aGlzLmR5bmFtaWNTdGVwSW5kZXg7XG4gICAgICAgIGlmIChpc0xhc3RTdGVwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZHluYW1pY1dpemFyZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0ZXBSZWYgID0gZmluZCh0aGlzLmR5bmFtaWNXaXphcmQsIHN0ZXAgPT4gc3RlcC5keW5hbWljU3RlcEluZGV4ID09PSBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1N0ZXBBbHJlYWR5RXhpc3QgPSBmaW5kKHRoaXMuc3RlcHMudG9BcnJheSgpLCBuZXdTdGVwUmVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3RlcEFscmVhZHlFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLnJlc2V0KFsuLi50aGlzLnN0ZXBzLnRvQXJyYXkoKSwgbmV3U3RlcFJlZl0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3RlcFJlZi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0ZXBSZWYuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byBhZGQgdGhlIHdpemFyZCBzdGVwIGR5bmFtaWNhbGx5XG4gICAgICogQHBhcmFtIHdpemFyZFN0ZXBzIC0gbGlzdCBvZiB3aXphcmRzdGVwc1xuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdGVwKHdpemFyZFN0ZXBzKSB7XG4gICAgICAgIGlmICghaXNBcnJheSh3aXphcmRTdGVwcykpIHtcbiAgICAgICAgICAgIHdpemFyZFN0ZXBzID0gW3dpemFyZFN0ZXBzXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGVwTmFtZXNMaXN0ID0gW107XG4gICAgICAgIGZvckVhY2god2l6YXJkU3RlcHMsIChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTdGVwQWxyZWFkeUNyZWF0ZWQgPSBmaW5kKHRoaXMuc3RlcHMudG9BcnJheSgpLCB7bmFtZTogc3RlcC5uYW1lfSk7XG4gICAgICAgICAgICBjb25zdCBpc1N0ZXBOYW1lRXhpc3QgPSBpbmRleE9mKHN0ZXBOYW1lc0xpc3QsIHN0ZXAubmFtZSk7XG4gICAgICAgICAgICAvLyBJZiB1c2VyIHRyaWVzIHRvIGFkZCB3aXphcmRzdGVwIHdpdGggdGhlIHNhbWUgbmFtZSB3aGljaCBpcyBhbHJlYWR5IGV4aXN0cyB0aGVuIGRvIG5vdCBjcmVhdGUgdGhlIHN0ZXBcbiAgICAgICAgICAgIGlmIChpc1N0ZXBBbHJlYWR5Q3JlYXRlZCB8fCBpc1N0ZXBOYW1lRXhpc3QgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBUaGUgd2l6YXJkIHN0ZXAgd2l0aCBuYW1lICR7c3RlcC5uYW1lfSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcmFtTWFya3VwID0gJyc7XG4gICAgICAgICAgICBsZXQgcHJvcHNUbXBsID0gJyc7XG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNTdGVwSW5kZXgrKztcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzdGVwLm5hbWUgPyBzdGVwLm5hbWUgOiBgd2l6YXJkc3RlcCR7dGhpcy5zdGVwcy50b0FycmF5KCkubGVuZ3RoICsgKGluZGV4ICsgMSl9YDtcbiAgICAgICAgICAgIHN0ZXBOYW1lc0xpc3QucHVzaChuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxQYXJhbXMgPSBnZXQoc3RlcCwgJ3BhcmFtcycpO1xuXG4gICAgICAgICAgICBmb3JFYWNoKHN0ZXAsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ3BhcmFtcycpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNUbXBsID0gYCR7cHJvcHNUbXBsfSAke2tleX09XCIke3ZhbHVlfVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yRWFjaChwYXJ0aWFsUGFyYW1zLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtTWFya3VwID0gYCR7cGFyYW1NYXJrdXB9IDx3bS1wYXJhbSBuYW1lPVwiJHtrZXl9XCIgdmFsdWU9XCIke3ZhbHVlfVwiPjwvd20tcGFyYW0+YDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbWFya3VwID0gYDx3bS13aXphcmRzdGVwIGR5bmFtaWNTdGVwSW5kZXg9XCIke3RoaXMuZHluYW1pY1N0ZXBJbmRleCAtIDF9XCIgaXNkeW5hbWljPVwidHJ1ZVwiIG5hbWU9XCIke25hbWV9XCIgJHtwcm9wc1RtcGx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFyYW1NYXJrdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3dtLXdpemFyZHN0ZXA+YDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljQ29udGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNDb250ZXh0ID0gT2JqZWN0LmNyZWF0ZSh0aGlzLnZpZXdQYXJlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNDb250ZXh0W3RoaXMuZ2V0QXR0cignd21XaXphcmQnKV0gPSB0aGlzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRQcm92aWRlci5hZGRDb21wb25lbnQodGhpcy5nZXROYXRpdmVFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmFwcC13aXphcmQtYm9keScpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7aW5qOiB0aGlzLmluan0pO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3RlcE5hbWVzTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byByZW1vdmUgdGhlIHdpemFyZCBzdGVwXG4gICAgICogQHBhcmFtIHN0ZXAgLSBpbmRleCBvciBuYW1lIG9mIHRoZSBzdGVwXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVN0ZXAoc3RlcDogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBSZWYgPSBpc1N0cmluZyhzdGVwKSA/IHRoaXMuZ2V0U3RlcFJlZkJ5TmFtZShzdGVwKSA6IGlzTnVtYmVyKHN0ZXApXG4gICAgICAgICAgICA/IHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgoc3RlcCkgOiBudWxsO1xuICAgICAgICBzdGVwUmVmID8gc3RlcFJlZi5yZW1vdmUoKSA6IGNvbnNvbGUud2FybihgQ291bGQgbm90IGZpbmQgc3RlcCB3aXRoIG5hbWUgb3IgaW5kZXggJyR7c3RlcH0nIHRvIHJlbW92ZWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgbmV4dCB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwQ29tcG9uZW50fVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuc3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGkpO1xuICAgICAgICAgICAgaWYgKHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBwcmV2aW91cyB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwQ29tcG9uZW50fVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmIChzdGVwLnNob3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgY3VycmVudCBzdGVwIGluZGV4IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50U3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgc3RlcFJlZiB3aGVuIGluZGV4IGlzIHBhc3NlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcENvbXBvbmVudH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRoZSBpbmRleCB2YWx1ZSBvZiB0aGUgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBDb21wb25lbnR9IHdpemFyZFN0ZXBcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RlcEluZGV4QnlSZWYod2l6YXJkU3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHdpemFyZFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHMgc3RlcFJlZiBieSBzZWFyY2hpbmcgb24gdGhlIG5hbWUgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcENvbXBvbmVudH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgZGVmYXVsdCBzdGVwIGFzIGN1cnJlbnQgc3RlcCBpZiBjb25maWd1cmVkXG4gICAgICogb3IgZmluZHMgZmlyc3QgdmFsaWQgc3RlcCBhbmQgc2V0IGl0IGFzIGN1cnJlbnQgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBDb21wb25lbnR9IHN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERlZmF1bHRTdGVwKHN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpIHtcbiAgICAgICAgLy8gSWYgdGhlIGRlZmF1bHQgc3RlcCBoYXMgc2hvdyB0cnVlIHRoZW4gb25seSB1cGRhdGUgdGhlIGN1cnJlbnRTdGVwXG4gICAgICAgIGlmIChzdGVwICYmIHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHN0ZXA7XG4gICAgICAgICAgICBzdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gTWFyayBhbGwgcHJldmlvdXMgc3RlcCBzdGF0dXMgQ09NUExFVEVEXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHN0ZXApIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2V0IG5leHQgdmFsaWQgc3RlcCBhcyBjdXJyZW50IHN0ZXBcbiAgICAgICAgICAgIHN0ZXAgPSB0aGlzLmdldE5leHRWYWxpZFN0ZXBGb3JtSW5kZXgoMCk7XG4gICAgICAgICAgICBpZiAoc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFN0ZXAoc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGFzc29jaWF0ZWQgc3RlcCB3aGVuIHRoZSB3aXphcmQgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAgICogQHBhcmFtICRldmVudFxuICAgICAqIEBwYXJhbSB7V2l6YXJkU3RlcENvbXBvbmVudH0gY3VycmVudFN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50OiBFdmVudCwgY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpIHtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBzdGVwIGlmIGl0J3Mgc3RhdHVzIGlzIGRvbmVcbiAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmRvbmUpIHtcbiAgICAgICAgICAgIC8vIHNldCBhbGwgdGhlIG5leHQgc3RlcHMgc3RhdHVzIGFzIGRpc2FibGVkIGFuZCBwcmV2aW91cyBzdGVwcyBhcyBkb25lXG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5nZXRTdGVwSW5kZXhCeVJlZihjdXJyZW50U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICBzdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgIHN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgc2VsZWN0ZWQgc3RlcCBhcyBjdXJyZW50IHN0ZXAgYW5kIG1ha2UgaXQgYWN0aXZlXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gY3VycmVudFN0ZXA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvbWlzZSA9IChvYmopID0+IG9iaiBpbnN0YW5jZW9mIFByb21pc2UgfHwgKG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5jYXRjaCA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gbmV4dCBzdGVwXG5cbiAgICBwcml2YXRlIGhhbmRsZU5leHQodmFsdWU6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+LCBjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCkge1xuICAgICAgICBpZiAodGhpcy5pc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgICAgICAodmFsdWUgYXMgUHJvbWlzZTxib29sZWFuPikudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgICAgIH0sIGVyciA9PiBlcnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0KGV2ZW50TmFtZTogc3RyaW5nID0gJ25leHQnKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcDtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIC8vIGFib3J0IGlmIG9uU2tpcCBtZXRob2QgcmV0dXJucyBmYWxzZVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnc2tpcCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gIGN1cnJlbnRTdGVwLmludm9rZVNraXBDQihjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTmV4dChyZXNwb25zZSwgY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBldmVudE5hbWUgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgID0gIGN1cnJlbnRTdGVwLmludm9rZU5leHRDQihjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTmV4dChyZXNwb25zZSwgY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZW5hYmxlbmV4dCAmJiAhdGhpcy5jdXJyZW50U3RlcC5pc1ZhbGlkKXtcbiAgICAgICAgICAgIEFycmF5LmZyb20oKDxhbnk+dGhpcykuY3VycmVudFN0ZXAuZ2V0QWxsRW1iZWRkZWRGb3JtcygpKT8uZm9yRWFjaCgoZm9ybTphbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtLndpZGdldC5oaWdobGlnaHRJbnZhbGlkRmllbGRzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGludmFsaWRGb3JtSW5wdXRFbGVtZW50ID0gdGhpcy5jdXJyZW50U3RlcC5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFwiaW5wdXQubmctaW52YWxpZFwiKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgaW52YWxpZEZvcm1JbnB1dEVsZW1lbnQ/LmZvY3VzKCk7XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KSB7XG4gICAgICAgIGNvbnN0IG5leHRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50ID0gdGhpcy5nZXROZXh0VmFsaWRTdGVwRm9ybUluZGV4KGN1cnJlbnRTdGVwSW5kZXggKyAxKTtcbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBzdGVwcyB3aGljaCBoYXMgc2hvdyB0aGVuIG9ubHkgY2hhbmdlIHN0YXRlIG9mIGN1cnJlbnQgc3RlcCBlbHNlIHJlbWFpbiBzYW1lXG4gICAgICAgIGlmIChuZXh0U3RlcCkge1xuICAgICAgICAgICAgbmV4dFN0ZXAuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICBjdXJyZW50U3RlcC5pc0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICBuZXh0U3RlcC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IG5leHRTdGVwO1xuICAgICAgICAgICAgLy8gUmVtb3ZlICdjdXJyZW50JyBjbGFzcyBmcm9tIGFsbCB3aXphcmQgc3RlcHMgaW4gaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBhbGxTdGVwSXRlbXMgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlbZGF0YS1zdGVwaWRdJyk7XG4gICAgICAgICAgICBhbGxTdGVwSXRlbXMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdjdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gZWwucXVlcnlTZWxlY3RvcignYScpO1xuICAgICAgICAgICAgICAgIGlmIChhbmNob3IpIHtcbiAgICAgICAgICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEFkZCAnY3VycmVudCcgdG8gbmV4dCBzdGVwIGhlYWRlciBpdGVtXG4gICAgICAgICAgICBjb25zdCBuZXdTdGVwTGkgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1zdGVwaWQ9XCIke25leHRTdGVwLndpZGdldElkfVwiXWApO1xuICAgICAgICAgICAgY29uc3QgbmV3U3RlcEFuY2hvciA9IG5ld1N0ZXBMaT8ucXVlcnlTZWxlY3RvcignYScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKG5ld1N0ZXBMaSAmJiBuZXdTdGVwQW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgbmV3U3RlcExpLmNsYXNzTGlzdC5hZGQoJ2N1cnJlbnQnKTtcbiAgICAgICAgICAgICAgICBuZXdTdGVwQW5jaG9yLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgICAgIG5ld1N0ZXBBbmNob3IuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RlcEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gcHJldmlvdXMgc3RlcFxuICAgIHB1YmxpYyBwcmV2KCkge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuY3VycmVudFN0ZXA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcblxuICAgICAgICAvLyBhYm9ydCBpZiBvblByZXYgbWV0aG9kIHJldHVybnMgZmFsc2UuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gY3VycmVudFN0ZXAuaW52b2tlUHJldkNCKGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICBpZiAodGhpcy5pc1Byb21pc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAocmVzcG9uc2UgYXMgUHJvbWlzZTxib29sZWFuPikudGhlbiggcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuZFByZXZGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgICAgICB9LCBlcnIgPT4gZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZFByZXZGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZFByZXZGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCl7XG4gICAgICAgIGNvbnN0IHByZXZTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50ID0gdGhpcy5nZXRQcmV2aW91c1ZhbGlkU3RlcEZvcm1JbmRleChjdXJyZW50U3RlcEluZGV4IC0gMSk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBzdGVwcyB3aGljaCBoYXMgc2hvdyB0aGVuIG9ubHkgY2hhbmdlIHN0YXRlIG9mIGN1cnJlbnQgc3RlcCBlbHNlIHJlbWFpbiBzYW1lXG4gICAgICAgIGlmIChwcmV2U3RlcCkge1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuaXNEb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjdXJyZW50U3RlcC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICBwcmV2U3RlcC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHByZXZTdGVwO1xuICAgICAgICAgICAgLy8gIFJlbW92ZSAnY3VycmVudCcgY2xhc3MgZnJvbSBhbGwgc3RlcHNcbiAgICAgICAgICAgIGNvbnN0IGFsbFN0ZXBJdGVtcyA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaVtkYXRhLXN0ZXBpZF0nKTtcbiAgICAgICAgICAgIGFsbFN0ZXBJdGVtcy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2N1cnJlbnQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNob3IgPSBlbC5xdWVyeVNlbGVjdG9yKCdhJyk7XG4gICAgICAgICAgICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICAgICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXBwbHkgJ2N1cnJlbnQnIHRvIHByZXYgc3RlcFxuICAgICAgICAgICAgY29uc3QgcHJldlN0ZXBMaSA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBsaVtkYXRhLXN0ZXBpZD1cIiR7cHJldlN0ZXAud2lkZ2V0SWR9XCJdYCk7XG4gICAgICAgICAgICBjb25zdCBwcmV2U3RlcEFuY2hvciA9IHByZXZTdGVwTGk/LnF1ZXJ5U2VsZWN0b3IoJ2EnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChwcmV2U3RlcExpICYmIHByZXZTdGVwQW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXBMaS5jbGFzc0xpc3QuYWRkKCdjdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXBBbmNob3Iuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXBBbmNob3IuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RlcEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBza2lwKCkge1xuICAgICAgICB0aGlzLm5leHQoJ3NraXAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIGdpdmVuIHN0ZXAgYmFzZWQgb24gc3RlcCBuYW1lIG9yIHN0ZXAgaW5kZXhcbiAgICAgKiBUaGlzIHdpbGwgd29yayBvbmx5IGlmIHRoZSBzdGVwIGlzIGFscmVhZHkgaW4gZG9uZSBzdGF0ZVxuICAgICAqIEBwYXJhbSBzdGVwXG4gICAgICovXG4gICAgcHVibGljIGdvdG9TdGVwKHN0ZXA6IHN0cmluZyB8IG51bWJlcikge1xuICAgICAgICBsZXQgZ290b1N0ZXBJbmRleDogbnVtYmVyO1xuICAgICAgICBpZiAoaXNTdHJpbmcoc3RlcCkpIHtcbiAgICAgICAgICAgIGdvdG9TdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5tYXAoc3RlcCA9PiBzdGVwLm5hbWUpLmluZGV4T2Yoc3RlcCk7XG4gICAgICAgICAgICBpZiAoZ290b1N0ZXBJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgZmluZCBzdGVwICcke3N0ZXB9J2ApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcihzdGVwKSAmJiBzdGVwID49IDApIHtcbiAgICAgICAgICAgIGdvdG9TdGVwSW5kZXggPSBzdGVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgc3RlcCBuYW1lIG9yIGluZGV4IHByb3ZpZGVkXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ290b1N0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGdvdG9TdGVwSW5kZXgpO1xuXG4gICAgICAgIGlmIChnb3RvU3RlcD8uc2hvdykge1xuICAgICAgICAgICAgdGhpcy5vbldpemFyZEhlYWRlckNsaWNrKGV2ZW50LCBnb3RvU3RlcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGdvdG9TdGVwIGZ1bmN0aW9uIGNhbm5vdCBuYXZpZ2F0ZSB0byBoaWRkZW4gc3RlcHNcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gaW52b2tlIG9uLURvbmUgZXZlbnQgb24gd2l6YXJkXG4gICAgcHVibGljIGRvbmUoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdkb25lJywge3N0ZXBzOiB0aGlzLnN0ZXBzLnRvQXJyYXkoKX0pO1xuICAgIH1cbiAgICAvLyBNZXRob2QgdG8gaW52b2tlIG9uLUNhbmNlbCBldmVudCBvbiB3aXphcmRcbiAgICBwdWJsaWMgY2FuY2VsICgpIHtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjYW5jZWwnLCB7c3RlcHM6IHRoaXMuc3RlcHMudG9BcnJheSgpfSk7XG4gICAgfVxuICAgIHB1YmxpYyBhZGRNb3JlVGV4dCgpe1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuXG4gICAgICAgIHZhciBuZXdXaW5kb3dXaWR0aCA9ICQod2luZG93KS53aWR0aCgpO1xuICAgICAgICBpZihuZXdXaW5kb3dXaWR0aCA8IDc2OCl7XG4gICAgICAgICQoXCIuYXBwLXdpemFyZC1zdGVwLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXIgLnN0ZXAtdGl0bGVcIikuY3NzKHtcImhlaWdodFwiOlwiYXV0b1wiLFwiZGlzcGxheVwiOlwiYmxvY2tcIn0pO1xuICAgICAgICB2YXIgc3VidGl0bGVUZXh0TGVuZ3RoID0gJChcIi5hcHAtd2l6YXJkLXN0ZXAuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlciAuc3RlcC10aXRsZVwiKS5oZWlnaHQoKTtcbiAgICAgICAgJChcIi5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLnJlbW92ZUNsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG5cbiAgICAgICAgaWYoc3VidGl0bGVUZXh0TGVuZ3RoPjQ0KXtcbiAgICAgICAgICAgICQoXCIuYXBwLXdpemFyZC1zdGVwLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXIgLnN0ZXAtdGl0bGVcIikuY3NzKHtcImhlaWdodFwiOlwiNDRweFwiLFwiZGlzcGxheVwiOlwiLXdlYmtpdC1ib3hcIn0pO1xuICAgICAgICAgICAgJChcIi5jdXJyZW50IC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwiYmxvY2tcIik7XG4gICAgICAgICAgICAkKFwiLmFjdGl2ZSAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICAgICAkKFwiLmRpc2FibGUgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAgICAgJChcIi5hcHAtd2l6YXJkLXN0ZXA+YVwiKS5jc3MoXCJoZWlnaHRcIixcIjEwMHB4XCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIH1cbiAgICBwdWJsaWMgcmVhZE1vcmVTdWJ0aXRsZSgpe1xuICAgICAgICAkKFwiLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXJcIikuYWRkQ2xhc3MoXCJyZWFkbW9yZV9zdWJ0aXRsZVwiKTtcbiAgICAgICAgJChcIi5jdXJyZW50IC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZXVwXCIsZnVuY3Rpb24oZTphbnkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkKFwiLnN1YnRpdGxlLXdyYXBwZXJcIik7XG4gICAgICAgICAgICAvLyBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBjbGljayBpc24ndCB0aGUgY29udGFpbmVyIG5vciBhIGRlc2NlbmRhbnQgb2YgdGhlIGNvbnRhaW5lclxuICAgICAgICAgICAgaWYgKCFjb250YWluZXIuaXMoZS50YXJnZXQpICYmIGNvbnRhaW5lci5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkKFwiLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXJcIikucmVtb3ZlQ2xhc3MoXCJyZWFkbW9yZV9zdWJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICAkKFwiLmN1cnJlbnQgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZXVwXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0ZpcnN0U3RlcChzdGVwUmVmOiBXaXphcmRTdGVwQ29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpcnN0ID09PSBzdGVwUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzTGFzdFN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcENvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0ID09PSBzdGVwUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25EYXRhQ2hhbmdlKG5ld1ZhbCkge1xuICAgICAgICB0aGlzLmZpZWxkRGVmcyA9IGNyZWF0ZUFycmF5RnJvbShuZXdWYWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3RlcEZvY3VzKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwRWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmFwcC13aXphcmQtaGVhZGluZyBsaS5jdXJyZW50IGFcIikgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjdXJyZW50U3RlcEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgcHJvcGVydHkgY2hhbmdlIGhhbmRsZXIuIFRoaXMgTWV0aG9kIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIHdpZGdldCBwcm9wZXJ0eVxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIC8vIE1vbml0b3JpbmcgY2hhbmdlcyBmb3IgcHJvcGVydGllcyBhbmQgYWNjb3JkaW5nbHkgaGFuZGxpbmcgcmVzcGVjdGl2ZSBjaGFuZ2VzXG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ3N0ZXBzdHlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcENsYXNzID0gIG52ID09PSAnanVzdGlmaWVkJyA/ICduYXYtanVzdGlmaWVkJyA6ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZShudik7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGVmYXVsdHN0ZXAnKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTdGVwKHRoaXMuZ2V0U3RlcFJlZkJ5TmFtZShudikpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2FjdGlvbnNhbGlnbm1lbnQnKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmFwcC13aXphcmQtYWN0aW9ucycpPy5jbGFzc0xpc3QucmVwbGFjZShvdiwgbnYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5oYXNOZXh0U3RlcCA9ICgpID0+IHRoaXMuaGFzTmV4dFN0ZXA7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5oYXNQcmV2aW91c1N0ZXAgPSAoKSA9PiB0aGlzLmhhc1ByZXZTdGVwO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuaGFzTm9OZXh0U3RlcCA9ICgpID0+IHRoaXMuc2hvd0RvbmVCdG47XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5jYW5jZWxhYmxlID0gKCkgPT4gdGhpcy5jYW5jZWxhYmxlO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuc2tpcHBhYmxlID0gKCkgPT4gdGhpcy5jdXJyZW50U3RlcD8uZW5hYmxlc2tpcDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0Lm5leHQgPSAoKSA9PiB0aGlzLm5leHQoKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LnByZXZpb3VzID0gKCkgPT4gdGhpcy5wcmV2KCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5kb25lID0gKCkgPT4gdGhpcy5kb25lKCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5jYW5jZWwgPSAoKSA9PiB0aGlzLmNhbmNlbCgpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuc2tpcCA9ICgpID0+IHRoaXMuc2tpcCgpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQubmV4dGJ0bmxhYmVsID0gKCkgPT4gdGhpcy5uZXh0YnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5wcmV2aW91c2J0bmxhYmVsID0gKCkgPT4gdGhpcy5wcmV2aW91c2J0bmxhYmVsO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZG9uZWJ0bmxhYmVsID0gKCkgPT4gdGhpcy5kb25lYnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5jYW5jZWxidG5sYWJlbCA9ICgpID0+IHRoaXMuY2FuY2VsYnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5hY3Rpb25zYWxpZ25tZW50ID0gKCkgPT4gdGhpcy5hY3Rpb25zYWxpZ25tZW50O1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZGlzYWJsZU5leHQgPSAoKSA9PiAhdGhpcy5lbmFibGVOZXh0O1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZGlzYWJsZVByZXZpb3VzID0gKCkgPT4gIXRoaXMuZW5hYmxlUHJldjtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmRpc2FibGVEb25lID0gKCkgPT4gIXRoaXMuZW5hYmxlRG9uZTtcbiAgICAgICAgdGhpcy5zdGVwcy5jaGFuZ2VzLnN1YnNjcmliZSggc2xpZGVzID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxlbmd0aCA+IDEgJiYgdGhpcy50eXBlID09PSAnZHluYW1pYycgJiYgdGhpcy5faXNGaXJzdExvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTdGVwKHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgodGhpcy5kZWZhdWx0c3RlcGluZGV4KSk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgaXNTZWxlY3RhYmxlU3RlcChzdGVwUmVmOiBXaXphcmRTdGVwQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcFJlZi5zaG93ICYmICFzdGVwUmVmLmRpc2FibGVkO1xuICAgIH1cbiAgICBwcml2YXRlIGdldFNlbGVjdGFibGVTdGVwQmVmb3JlSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVTdGVwKHN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KHRoaXMuc3RlcHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlU3RlcChzdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBwcml2YXRlIGdldFNlbGVjdGFibGVTdGVwQWZ0ZXJJbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IHRoaXMuc3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgoaSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVN0ZXAoc3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KDApO1xuICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlU3RlcChzdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgc3R5bGVyKFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYW5lbC1ib2R5JykgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgQVBQTFlfU1RZTEVTX1RZUEUuSU5ORVJfU0hFTExcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGlmKCQod2luZG93KS53aWR0aCgpPDc2OCkge1xuICAgICAgICAgICAgJChcIi5hcHAtd2l6YXJkXCIpLnJlbW92ZUNsYXNzKFwidmVydGljYWxcIik7XG4gICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Rpdi5hcHAtd2l6YXJkLWFjdGlvbnMnKS5mb3JFYWNoKGVsID0+IGVsPy5jbGFzc0xpc3QuYWRkKHRoaXMuYWN0aW9uc2FsaWdubWVudCkpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGl2LmFwcC13aXphcmQtYWN0aW9ucy1yaWdodCcpLmZvckVhY2goZWwgPT4gZWw/LmNsYXNzTGlzdC5yZW1vdmUoJ2FwcC1jb250YWluZXInKSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBY3RpdmVTdGVwSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGZpbmRJbmRleCh0aGlzLnN0ZXBzLnRvQXJyYXkoKSwge2lzQ3VycmVudDogdHJ1ZX0pO1xuICAgIH1cbiAgICBvbmtleWRvd24oZXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld1N0ZXA7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBuZXdTdGVwID0gdGhpcy5hdXRvQWN0aXZhdGlvbiA/IG51bGwgOiB0aGlzLmdldFNlbGVjdGFibGVTdGVwQmVmb3JlSW5kZXgodGhpcy5nZXRTZWxlY3RlZFN0ZXBJbmRleCgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbmV3U3RlcCA9IHRoaXMuYXV0b0FjdGl2YXRpb24gPyBudWxsIDogdGhpcy5nZXRTZWxlY3RhYmxlU3RlcEFmdGVySW5kZXgodGhpcy5nZXRTZWxlY3RlZFN0ZXBJbmRleCgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpLmN1cnJlbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcExpID0gYWN0aXZlRWxlbWVudC5jbG9zZXN0KCdsaVtkYXRhLXN0ZXBpZF0nKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNJbldpemFyZEhlYWRlciA9IGFjdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLmFwcC13aXphcmQtaGVhZGluZycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGVwTGkgJiYgaXNJbldpemFyZEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwTGkuZ2V0QXR0cmlidXRlKCdkYXRhLXN0ZXBpZCcpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5maW5kSW5kZXgoc3RlcCA9PiBzdGVwLndpZGdldElkID09PSBzdGVwSWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuc3RlcHMudG9BcnJheSgpW3N0ZXBJbmRleF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCAmJiBjdXJyZW50U3RlcCAhPT0gdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25XaXphcmRIZWFkZXJDbGljayhldmVudCwgY3VycmVudFN0ZXApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRhYmluZGV4IGZvciBhY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsU3RlcEl0ZW1zID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpW2RhdGEtc3RlcGlkXScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbFN0ZXBJdGVtcy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcEFuY2hvciA9IHN0ZXBMaS5xdWVyeVNlbGVjdG9yKCdhJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ZXBBbmNob3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwQW5jaG9yLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBBbmNob3IuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgaWYgKG5ld1N0ZXApIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdsaS5jdXJyZW50Jyk/LmNsYXNzTGlzdC5yZW1vdmUoJ2N1cnJlbnQnKTtcbiAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1zdGVwaWQ9XCIke25ld1N0ZXAud2lkZ2V0SWR9XCJdYCk/LmNsYXNzTGlzdC5hZGQoJ2N1cnJlbnQnKTtcbiAgICAgICAgICAgICBjb25zdCBzdGVwTGkgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5hcHAtd2l6YXJkLWhlYWRpbmcgbGkuY3VycmVudCBhXCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgIGNvbnN0IGFsbFN0ZXBJdGVtcyA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaVtkYXRhLXN0ZXBpZF0gYScpO1xuICAgICAgICAgICAgIGFsbFN0ZXBJdGVtcy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgKHN0ZXBMaSkuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICBzdGVwTGk/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0U2VsZWN0ZWRTdGVwSW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuZmluZEluZGV4KHN0ZXAgPT5cbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBsaVtkYXRhLXN0ZXBpZD1cIiR7c3RlcC53aWRnZXRJZH1cIl1gKT8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiY3VycmVudFwiKSk7XG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gaW5kZXggOiB0aGlzLmdldEFjdGl2ZVN0ZXBJbmRleCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHAtd2l6YXJkLWhlYWRpbmdcIj5cbiAgPHVsIGNsYXNzPVwiYXBwLXdpemFyZC1zdGVwcyBuYXYgbmF2LXBpbGxzIHt7c3RlcENsYXNzfX1cIj5cbiAgICBAZm9yIChzdGVwIG9mIHN0ZXBzOyB0cmFjayBzdGVwOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGxpIGNsYXNzPVwiYXBwLXdpemFyZC1zdGVwXCIgW2hpZGRlbl09XCIhc3RlcC5zaG93XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogc3RlcC5kb25lLCBjdXJyZW50OiBzdGVwLmFjdGl2ZSwgZGlzYWJsZWQ6IHN0ZXAuZGlzYWJsZWR9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50LCBzdGVwKVwiIFthdHRyLmRhdGEtc3RlcGlkXT1cInN0ZXAud2lkZ2V0SWRcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFthdHRyLmFyaWEtY3VycmVudF09XCJzdGVwLmFjdGl2ZSA/ICdzdGVwJyA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwic3RlcC5kaXNhYmxlZFwiIFthdHRyLmFyaWEtbGFiZWxdPSdzdGVwLnN1YnRpdGxlID8gXCJzdGVwIFwiICsgKGkgKyAxKSArIFwiIFwiICsgIHN0ZXAudGl0bGUgKyBcIiBcIiArIHN0ZXAuc3VidGl0bGUgOiBcInN0ZXAgXCIgKyAoaSArIDEpICsgXCIgXCIgKyAgc3RlcC50aXRsZScgW2F0dHIudGl0bGVdPSBcInN0ZXAudGl0bGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGl0bGUtY2VudGVyLWFsaWduJzpjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnY2xhc3NpYycpICYmICFzdGVwLnN1YnRpdGxlfVwiIFt0YWJpbmRleF09XCJzdGVwLmFjdGl2ZSA/ICcwJyA6ICctMSdcIiAoa2V5ZG93bik9XCJvbmtleWRvd24oJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZiAoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2NsYXNzaWMnKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aXphcmQtc3RlcC1udW1iZXJcIj5cbiAgICAgICAgICAgIEBpZiAoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ251bWJlcicpICYmICFzdGVwLmlzRG9uZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3tpKzF9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2xhc3MgJiYgKGNsYXNzLmluY2x1ZGVzKCdkb3R0ZWRzdGVwcGVyJykgfHwgY2xhc3MuaW5jbHVkZXMoJ3RleHQtaW5saW5lJykgJiYgIWNsYXNzLmluY2x1ZGVzKCdpY29uc3RlcHBlcicpKSAmJiAhc3RlcC5pc0RvbmUpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJkb3R0ZWRzdGVwcGVyXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChjbGFzcyAmJiAoY2xhc3MuaW5jbHVkZXMoJ2RvdHRlZHN0ZXBwZXInKSB8fCBjbGFzcy5pbmNsdWRlcygnbnVtYmVyJykpICYmIHN0ZXAuaXNEb25lKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24gd2kgd2ktZG9uZVwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoKGNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdpY29uc3RlcHBlcicpKSAmJiAoKHN0ZXAuaWNvbmNsYXNzICYmICFzdGVwLmlzRG9uZSkgfHwgKHN0ZXAuaWNvbmNsYXNzICYmIHN0ZXAuaXNEb25lICYmIHN0ZXAuZG9uZWljb25jbGFzcyA9PT0nJykpKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24ge3tzdGVwLmljb25jbGFzc319XCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzdGVwLmRvbmVpY29uY2xhc3MgJiYgc3RlcC5pc0RvbmUgJiYgKGNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdpY29uc3RlcHBlcicpKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7c3RlcC5kb25laWNvbmNsYXNzfX1cIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgQGlmIChjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygndGV4dC1pbmxpbmUnKSkge1xuICAgICAgICAgICAgICA8c3Bhbj57eycwJyArIChpKzEpfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3RlcC50aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgQGlmIChzdGVwLnN1YnRpdGxlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnRpdGxlLXdyYXBwZXJcIiBbYXR0ci50aXRsZV09XCJzdGVwLnN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcC10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJzdGVwLnN1YnRpdGxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cInJlYWRfbW9yZVwiIChjbGljayk9XCJyZWFkTW9yZVN1YnRpdGxlKClcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPm1vcmU8L2E+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIH1cbiAgPC91bD5cbjwvZGl2PlxuQGlmICh0eXBlICE9PSAnZHluYW1pYycpIHtcbjxkaXYgY2xhc3M9XCJhcHAtd2l6YXJkLWJvZHkgcGFuZWwtYm9keVwiPlxuICBAaWYgKG1lc3NhZ2UuY2FwdGlvbikge1xuICAgIDxwIHdtTWVzc2FnZSBjYXB0aW9uLmJpbmQ9XCJtZXNzYWdlLmNhcHRpb25cIiB0eXBlLmJpbmQ9XCJtZXNzYWdlLnR5cGVcIj48L3A+XG4gIH1cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJmb3JtW3dtV2l6YXJkU3RlcF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbn1cbkBpZiAodHlwZSA9PT0gJ2R5bmFtaWMnKSB7XG48ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1ib2R5IHBhbmVsLWJvZHlcIj5cbiAgICBAaWYoIWZpZWxkRGVmcz8ubGVuZ3RoKSB7XG4gICAgPGRpdj57e25vZGF0YW1lc3NhZ2V9fTwvZGl2PlxuICAgIH1cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXZbd21SZXBlYXRUZW1wbGF0ZV1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbn1cbkBpZihmaWVsZERlZnMgJiYgZmllbGREZWZzLmxlbmd0aCB8fCB0eXBlICE9PSAnZHluYW1pYycpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwid2l6YXJkQWN0aW9uXCI+PC9uZy1jb250YWluZXI+XG59XG4iXX0=
|