@tetacom/ng-components 1.0.11 → 1.0.15
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/component/chart/chart/chart.component.d.ts +2 -1
- package/component/chart/core/chart.d.ts +2 -0
- package/component/chart/model/enum/dispatch-type.d.ts +2 -1
- package/component/chart/model/enum/drag-point-type.d.ts +5 -0
- package/component/chart/model/enum/public-api.d.ts +1 -0
- package/component/chart/model/point/base-point.d.ts +2 -0
- package/component/chart/model/point/marker-options.d.ts +11 -0
- package/component/chart/model/point/public-api.d.ts +1 -0
- package/esm2020/component/chart/chart/chart.component.mjs +11 -4
- package/esm2020/component/chart/core/chart.mjs +13 -5
- package/esm2020/component/chart/drawer/line-drawer.mjs +49 -3
- package/esm2020/component/chart/drawer/spline-drawer.mjs +2 -1
- package/esm2020/component/chart/model/enum/dispatch-type.mjs +2 -1
- package/esm2020/component/chart/model/enum/drag-point-type.mjs +7 -0
- package/esm2020/component/chart/model/enum/public-api.mjs +2 -1
- package/esm2020/component/chart/model/point/base-point.mjs +1 -1
- package/esm2020/component/chart/model/point/marker-options.mjs +2 -0
- package/esm2020/component/chart/model/point/public-api.mjs +2 -1
- package/fesm2015/tetacom-ng-components.mjs +79 -11
- package/fesm2015/tetacom-ng-components.mjs.map +1 -1
- package/fesm2020/tetacom-ng-components.mjs +79 -10
- package/fesm2020/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@ export class TetaChart {
|
|
|
17
17
|
this.plotLinesMove$ = new Subject();
|
|
18
18
|
this.plotBandsMove$ = new Subject();
|
|
19
19
|
this.seriesMove$ = new Subject();
|
|
20
|
+
this.pointMove$ = new Subject();
|
|
20
21
|
this.zoom$ = new Subject();
|
|
21
22
|
this._container = null;
|
|
22
23
|
this._width = 0;
|
|
@@ -38,6 +39,7 @@ export class TetaChart {
|
|
|
38
39
|
this.plotLinesMove = this.plotLinesMove$.asObservable();
|
|
39
40
|
this.plotBandsMove = this.plotBandsMove$.asObservable();
|
|
40
41
|
this.seriesMove = this.seriesMove$.asObservable();
|
|
42
|
+
this.pointMove = this.pointMove$.asObservable();
|
|
41
43
|
this.zoom = this.zoom$.asObservable();
|
|
42
44
|
}
|
|
43
45
|
redraw(options) {
|
|
@@ -147,11 +149,11 @@ export class TetaChart {
|
|
|
147
149
|
this.visibleChartWindowWidth = this.caluclateChartWidth();
|
|
148
150
|
}
|
|
149
151
|
_redraw() {
|
|
152
|
+
this.drawPlotBands();
|
|
153
|
+
this.drawPlotLines();
|
|
150
154
|
this.drawChart();
|
|
151
155
|
this.drawAxis();
|
|
152
156
|
this.drawGridLines();
|
|
153
|
-
this.drawPlotBands();
|
|
154
|
-
this.drawPlotLines();
|
|
155
157
|
this.drawAnnotations();
|
|
156
158
|
}
|
|
157
159
|
addZoom() {
|
|
@@ -886,9 +888,15 @@ export class TetaChart {
|
|
|
886
888
|
const emit = (event) => {
|
|
887
889
|
this.seriesMove$.next(event);
|
|
888
890
|
};
|
|
891
|
+
const emitPoint = (event) => {
|
|
892
|
+
this.pointMove$.next(event);
|
|
893
|
+
};
|
|
889
894
|
drawer?.dispatch?.on(DispatchType.moveLine, function () {
|
|
890
895
|
emit(this);
|
|
891
896
|
});
|
|
897
|
+
drawer?.dispatch?.on(DispatchType.movePoint, function () {
|
|
898
|
+
emitPoint(this);
|
|
899
|
+
});
|
|
892
900
|
});
|
|
893
901
|
}
|
|
894
902
|
createTooltip() {
|
|
@@ -935,7 +943,7 @@ export class TetaChart {
|
|
|
935
943
|
color: d.color,
|
|
936
944
|
name: d.name,
|
|
937
945
|
});
|
|
938
|
-
return `translate(${!isNaN(data?.x) ? foundX(data.x) : -10}, ${!isNaN(data?.y) ? foundY(data.y) : -10})`;
|
|
946
|
+
return `translate(${!isNaN(data?.x) && data?.x != null ? foundX(data.x) : -10}, ${!isNaN(data?.y) && data?.y != null ? foundY(data.y) : -10})`;
|
|
939
947
|
}
|
|
940
948
|
if (this._options.tooltip.tracking === 'y') {
|
|
941
949
|
const sorted = [...d.data].sort((a, b) => d3.ascending(a.y, b.y));
|
|
@@ -948,7 +956,7 @@ export class TetaChart {
|
|
|
948
956
|
color: d.color,
|
|
949
957
|
name: d.name,
|
|
950
958
|
});
|
|
951
|
-
return `translate(${foundX(data.x)}, ${foundY(data.y)})`;
|
|
959
|
+
return `translate(${!isNaN(data?.x) && data?.x != null ? foundX(data.x) : -10}, ${!isNaN(data?.y) && data?.y != null ? foundY(data.y) : -10})`;
|
|
952
960
|
}
|
|
953
961
|
});
|
|
954
962
|
if (this._options.tooltip?.format) {
|
|
@@ -1326,4 +1334,4 @@ export class TetaChart {
|
|
|
1326
1334
|
});
|
|
1327
1335
|
}
|
|
1328
1336
|
}
|
|
1329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnQvY2hhcnQvY29yZS9jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBYyxZQUFZLEVBQWdCLE1BQU0sSUFBSSxDQUFDO0FBQzVELE9BQU8sS0FBSyxZQUFZLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBSzFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUdqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRWpELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUt6RCxNQUFNLE9BQU8sU0FBUztJQStDcEIsWUFBWSxPQUFxQixFQUFFLE9BQW1CO1FBeEM5QyxtQkFBYyxHQUFrQyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztRQUNwRixtQkFBYyxHQUFrQyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztRQUVwRixnQkFBVyxHQUEyQyxJQUFJLE9B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Q0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO29CQUVwRCxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNiLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDOzZCQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDOzZCQUNiLElBQUksQ0FDSCxJQUFJLEVBQ0osSUFBSSxDQUFDLE9BQU87NEJBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRzs0QkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUM1Qjs2QkFDQSxJQUFJLENBQ0gsV0FBVyxFQUNYLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUMvQzs2QkFDQSxLQUFLLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQzs2QkFDMUIsS0FBSyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO3FCQUM1QztnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RDNab29tRXZlbnQsIHpvb21JZGVudGl0eSwgWm9vbVRyYW5zZm9ybX0gZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgZDNhbm5vdGF0aW9uIGZyb20gJ2QzLXN2Zy1hbm5vdGF0aW9uJztcbmltcG9ydCB7U2NhbGV9IGZyb20gJy4uL21vZGVsL2VudW0vc2NhbGUnO1xuaW1wb3J0IHtDaGFydE9wdGlvbnN9IGZyb20gJy4uL21vZGVsL2NoYXJ0LW9wdGlvbnMnO1xuaW1wb3J0IHtBeGlzT3B0aW9uc30gZnJvbSAnLi4vbW9kZWwvYXhpcy1vcHRpb25zJztcbmltcG9ydCB7U2VyaWVzfSBmcm9tICcuLi9tb2RlbC9zZXJpZXMnO1xuaW1wb3J0IHtCYXNlUG9pbnR9IGZyb20gJy4uL21vZGVsL3BvaW50L2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHtTZXJpZXNUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Nlcmllcy10eXBlJztcbmltcG9ydCB7ZGVmYXVsdERyYXdlck1hcHBpbmd9IGZyb20gJy4uL2RyYXdlci9kZWZhdWx0LWRyYXdlci1tYXBwaW5nJztcbmltcG9ydCB7ZGVmYXVsdExlZ2VuZERyYXdlck1hcHBpbmd9IGZyb20gJy4uL2xlZ2VuZC1kcmF3ZXIvZGVmYXVsdC1kcmF3ZXItbGVnZW5kLW1hcHBpbmcnO1xuaW1wb3J0IHtMZWdlbmRUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2xlZ2VuZC10eXBlJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi9heGlzLWNyZWF0b3InO1xuaW1wb3J0IHtBeGlzVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLXR5cGUnO1xuaW1wb3J0IHtQbG90TGluZX0gZnJvbSAnLi4vbW9kZWwvcGxvdC1saW5lJztcbmltcG9ydCB7UGxvdEJhbmR9IGZyb20gJy4uL21vZGVsL3Bsb3QtYmFuZCc7XG5pbXBvcnQge1NjYWxlVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9zY2FsZS10eXBlJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7SURyYWdFdmVudH0gZnJvbSAnLi4vbW9kZWwvaS1kcmFnLWV2ZW50JztcbmltcG9ydCB7RGlzcGF0Y2hUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2Rpc3BhdGNoLXR5cGUnO1xuaW1wb3J0IHtJWm9vbUV2ZW50fSBmcm9tICcuLi9tb2RlbC9pLXpvb20tZXZlbnQnO1xuXG50eXBlIENoYXJ0U2l6ZSA9IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcblxuZXhwb3J0IGNsYXNzIFRldGFDaGFydCB7XG4gIHBsb3RMaW5lc01vdmU6IE9ic2VydmFibGU8SURyYWdFdmVudDxQbG90TGluZT4+O1xuICBwbG90QmFuZHNNb3ZlOiBPYnNlcnZhYmxlPElEcmFnRXZlbnQ8UGxvdEJhbmQ+PjtcblxuICB6b29tOiBPYnNlcnZhYmxlPElab29tRXZlbnQ+O1xuICBzZXJpZXNNb3ZlOiBPYnNlcnZhYmxlPElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+PjtcblxuICBwcml2YXRlIHBsb3RMaW5lc01vdmUkOiBTdWJqZWN0PElEcmFnRXZlbnQ8UGxvdExpbmU+PiA9IG5ldyBTdWJqZWN0PElEcmFnRXZlbnQ8UGxvdExpbmU+PigpO1xuICBwcml2YXRlIHBsb3RCYW5kc01vdmUkOiBTdWJqZWN0PElEcmFnRXZlbnQ8UGxvdEJhbmQ+PiA9IG5ldyBTdWJqZWN0PElEcmFnRXZlbnQ8UGxvdEJhbmQ+PigpO1xuXG4gIHByaXZhdGUgc2VyaWVzTW92ZSQ6IFN1YmplY3Q8SURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj4+ID0gbmV3IFN1YmplY3Q8SURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj4+KCk7XG5cbiAgcHJpdmF0ZSB6b29tJDogU3ViamVjdDxJWm9vbUV2ZW50PiA9IG5ldyBTdWJqZWN0PElab29tRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfY29udGFpbmVyOiBFbGVtZW50UmVmID0gbnVsbDtcbiAgcHJpdmF0ZSBfY2FudmFzOiBhbnk7XG4gIHByaXZhdGUgX3dpZHRoID0gMDtcbiAgcHJpdmF0ZSBfaGVpZ2h0ID0gMDtcblxuICBwcml2YXRlIF96b29tWUNhY2hlOiBNYXA8bnVtYmVyLCBab29tVHJhbnNmb3JtPiA9IG5ldyBNYXA8bnVtYmVyLFxuICAgIFpvb21UcmFuc2Zvcm0+KCk7XG5cbiAgcHJpdmF0ZSBfem9vbVhDYWNoZTogTWFwPG51bWJlciwgWm9vbVRyYW5zZm9ybT4gPSBuZXcgTWFwPG51bWJlcixcbiAgICBab29tVHJhbnNmb3JtPigpO1xuXG4gIHByaXZhdGUgX3pvb20gPSBkMy56b29tKCk7XG4gIHByaXZhdGUgX2NvbW1vblpvb21UcmFuc2Zvcm06IFpvb21UcmFuc2Zvcm07XG5cbiAgcHJpdmF0ZSB2aXNpYmxlQ2hhcnRXaW5kb3dXaWR0aCA9IDA7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uczogQ2hhcnRPcHRpb25zO1xuICBwcml2YXRlIF94QXhpc0xpc3Q6IEF4aXNbXTtcbiAgcHJpdmF0ZSBfeUF4aXNMaXN0OiBBeGlzW107XG4gIHByaXZhdGUgX3hTY2FsZXM6IE1hcDxudW1iZXIsIGFueT4gPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuICBwcml2YXRlIF95U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+ID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcblxuICBwcml2YXRlIF9jbG9uZWRYID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcbiAgcHJpdmF0ZSBfY2xvbmVkWSA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG5cbiAgcHJpdmF0ZSBfY2hhcnQ6IGQzLlNlbGVjdGlvbjxhbnksIHVua25vd24sIG51bGwsIHVuZGVmaW5lZD47XG5cbiAgcHJpdmF0ZSBvZmZzZXRPcHBvc2l0ZSA9IDA7XG4gIHByaXZhdGUgb2Zmc2V0Tm9uT3Bwb3NpdGUgPSAwO1xuXG4gIHByaXZhdGUgdW5pcUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3pvb21BZGRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENoYXJ0T3B0aW9ucywgZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0Tm9kZShlbGVtZW50KTtcbiAgICB0aGlzLmNyZWF0ZVRvb2x0aXAoKTtcblxuICAgIHRoaXMucGxvdExpbmVzTW92ZSA9IHRoaXMucGxvdExpbmVzTW92ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wbG90QmFuZHNNb3ZlID0gdGhpcy5wbG90QmFuZHNNb3ZlJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnNlcmllc01vdmUgPSB0aGlzLnNlcmllc01vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuem9vbSA9IHRoaXMuem9vbSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KG9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVBeGlzKCk7XG4gICAgdGhpcy5jcmVhdGVTY2FsZXMoKTtcbiAgICB0aGlzLmNyZWF0ZU1hcmtlcnMoKTtcbiAgICB0aGlzLmNyZWF0ZVZpc2libGVXaW5kb3coKTtcbiAgICB0aGlzLl9yZWRyYXcoKTtcbiAgICB0aGlzLmRyYXdMZWdlbmQoKTtcblxuICAgIGlmICh0aGlzLl9jb21tb25ab29tVHJhbnNmb3JtKSB7XG4gICAgICB0aGlzLl9jaGFydC5jYWxsKHRoaXMuX3pvb20udHJhbnNmb3JtLCB0aGlzLl9jb21tb25ab29tVHJhbnNmb3JtKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3pvb21BZGRlZCkge1xuICAgICAgdGhpcy5hZGRab29tKCk7XG4gICAgICB0aGlzLl96b29tQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQXhlc1pvb20oKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRab29tKHpvb206IElab29tRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuX3pvb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFydC5jYWxsKHRoaXMuX3pvb20udHJhbnNmb3JtLCB6b29tPy56b29tVHJhbnNmb3JtID8/IHpvb21JZGVudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2l6ZShzaXplOiBDaGFydFNpemUgPSB7d2lkdGg6IDAsIGhlaWdodDogMH0pIHtcbiAgICB0aGlzLl9oZWlnaHQgPSBzaXplLmhlaWdodDtcbiAgICB0aGlzLl93aWR0aCA9IHNpemUud2lkdGg7XG5cbiAgICB0aGlzLl9jaGFydC5hdHRyKCd3aWR0aCcsIHRoaXMuX3dpZHRoKS5hdHRyKCdoZWlnaHQnLCB0aGlzLl9oZWlnaHQpO1xuICAgIHRoaXMuX2NhbnZhcy5hdHRyKCd3aWR0aCcsIHRoaXMuX3dpZHRoKS5hdHRyKCdoZWlnaHQnLCB0aGlzLl9oZWlnaHQpO1xuXG4gICAgY29uc3QgZXh0ZW50ID0gW1xuICAgICAgW1xuICAgICAgICB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgICAgPyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgICAgOiB0aGlzLl9vcHRpb25zLmJvdW5kcy5sZWZ0LFxuICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB0aGlzLl93aWR0aCAtXG4gICAgICAgICh0aGlzLm9mZnNldE9wcG9zaXRlXG4gICAgICAgICAgPyB0aGlzLm9mZnNldE9wcG9zaXRlXG4gICAgICAgICAgOiB0aGlzLl9vcHRpb25zLmJvdW5kcy5yaWdodCksXG4gICAgICAgIHRoaXMuX2hlaWdodCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbSxcbiAgICAgIF0sXG4gICAgXSBhcyBhbnk7XG5cbiAgICB0aGlzLl96b29tXG4gICAgICAuc2NhbGVFeHRlbnQoWzEsIEluZmluaXR5XSlcbiAgICAgIC50cmFuc2xhdGVFeHRlbnQoZXh0ZW50KVxuICAgICAgLmV4dGVudChleHRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWaXNpYmxlV2luZG93KCkge1xuICAgIHRoaXMudW5pcUlkID0gKERhdGUubm93KCkgKyBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNik7XG5cbiAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJ2RlZnMnKS5yZW1vdmUoKTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdkZWZzJylcbiAgICAgIC5hcHBlbmQoJ2NsaXBQYXRoJylcbiAgICAgIC5hdHRyKCdpZCcsIGBkcmF3LXdpbmRvdy0ke3RoaXMudW5pcUlkfWApXG4gICAgICAuYXBwZW5kKCdyZWN0JylcbiAgICAgIC5hdHRyKFxuICAgICAgICAneCcsXG4gICAgICAgIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGUgPT09IDBcbiAgICAgICAgICA/IHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnRcbiAgICAgICAgICA6IHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgIClcbiAgICAgIC5hdHRyKCd5JywgdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wKVxuICAgICAgLmF0dHIoJ3dpZHRoJywgdGhpcy52aXNpYmxlQ2hhcnRXaW5kb3dXaWR0aCArIDEpXG4gICAgICAuYXR0cihcbiAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbSAtXG4gICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCArXG4gICAgICAgIDEgPlxuICAgICAgICAwXG4gICAgICAgICAgPyB0aGlzLl9oZWlnaHQgLVxuICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbSAtXG4gICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wICtcbiAgICAgICAgICAxXG4gICAgICAgICAgOiAwXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBeGlzKCkge1xuICAgIHRoaXMuX3hBeGlzTGlzdCA9IHRoaXMuX29wdGlvbnMueEF4aXMubWFwKFxuICAgICAgKF8sIGluZGV4KSA9PlxuICAgICAgICBuZXcgQXhpcyh7XG4gICAgICAgICAgdHlwZTogQXhpc1R5cGUuYWJzY2lzc2EsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgY2hhcnRPcHRpb25zOiB0aGlzLl9vcHRpb25zLFxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl95QXhpc0xpc3QgPSB0aGlzLl9vcHRpb25zLnlBeGlzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGF4aXMgPSBuZXcgQXhpcyh7XG4gICAgICAgIHR5cGU6IEF4aXNUeXBlLm9yZGluYXR1cyxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGNoYXJ0T3B0aW9uczogdGhpcy5fb3B0aW9ucyxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLl9oZWlnaHQsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBheGlzO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm9uVGl0bGVPZmZzZXQgPSA2O1xuXG4gICAgdGhpcy5vZmZzZXROb25PcHBvc2l0ZSA9IGQzLnJlZHVjZShcbiAgICAgIHRoaXMuX3lBeGlzTGlzdC5maWx0ZXIoXG4gICAgICAgIChfKSA9PiBfLm9wdGlvbnM/Lm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucz8udmlzaWJsZVxuICAgICAgKSxcbiAgICAgIChzdW0sIGF4aXMpID0+IHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgICAgICBzdW0gK1xuICAgICAgICAgIGF4aXMud2lkdGggK1xuICAgICAgICAgIChheGlzPy5vcHRpb25zPy50aXRsZSA/IEF4aXMub2Zmc2V0RmFjdG9yIDogbm9uVGl0bGVPZmZzZXQpO1xuICAgICAgICBheGlzLnNldE9mZnNldChvZmZzZXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgdGhpcy5vZmZzZXRPcHBvc2l0ZSA9IGQzLnJlZHVjZShcbiAgICAgIHRoaXMuX3lBeGlzTGlzdC5maWx0ZXIoXG4gICAgICAgIChfKSA9PiBfLm9wdGlvbnM/Lm9wcG9zaXRlID09PSB0cnVlICYmIF8ub3B0aW9ucz8udmlzaWJsZVxuICAgICAgKSxcbiAgICAgIChzdW0sIGF4aXMpID0+IHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgICAgICBzdW0gK1xuICAgICAgICAgIGF4aXMud2lkdGggK1xuICAgICAgICAgIChheGlzPy5vcHRpb25zPy50aXRsZSA/IEF4aXMub2Zmc2V0RmFjdG9yIDogbm9uVGl0bGVPZmZzZXQpO1xuICAgICAgICBheGlzLnNldE9mZnNldChvZmZzZXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgdGhpcy52aXNpYmxlQ2hhcnRXaW5kb3dXaWR0aCA9IHRoaXMuY2FsdWNsYXRlQ2hhcnRXaWR0aCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVkcmF3KCkge1xuICAgIHRoaXMuZHJhd0NoYXJ0KCk7XG4gICAgdGhpcy5kcmF3QXhpcygpO1xuICAgIHRoaXMuZHJhd0dyaWRMaW5lcygpO1xuICAgIHRoaXMuZHJhd1Bsb3RCYW5kcygpO1xuICAgIHRoaXMuZHJhd1Bsb3RMaW5lcygpO1xuICAgIHRoaXMuZHJhd0Fubm90YXRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFpvb20oKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnM/Lnpvb20/LmVuYWJsZSkge1xuICAgICAgY29uc3QgaGFzWFpvb20gPSBbWm9vbVR5cGUueCwgWm9vbVR5cGUueHldLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLl9vcHRpb25zLnpvb20uem9vbVR5cGVcbiAgICAgICk7XG4gICAgICBjb25zdCBoYXNZWm9vbSA9IFtab29tVHlwZS55LCBab29tVHlwZS54eV0uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuX29wdGlvbnMuem9vbS56b29tVHlwZVxuICAgICAgKTtcblxuICAgICAgdGhpcy5fY2hhcnQuY2FsbChcbiAgICAgICAgdGhpcy5fem9vbS5vbignc3RhcnQgZW5kIHpvb20nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoaGFzWFpvb20pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuX2Nsb25lZFguZW50cmllcygpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc2NhbGVkID0gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKHZhbHVlKTtcbiAgICAgICAgICAgICAgdGhpcy5feFNjYWxlcy5zZXQoa2V5LCByZXNjYWxlZCk7XG5cbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy56b29tJC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgIGRvbWFpbjogcmVzY2FsZWQuZG9tYWluKCksXG4gICAgICAgICAgICAgICAgICB6b29tVHJhbnNmb3JtOiBldmVudC50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgICAgICB6b29tVHlwZTogWm9vbVR5cGUueCxcbiAgICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc1lab29tKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLl9jbG9uZWRZLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICBjb25zdCByZXNjYWxlZCA9IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWSh2YWx1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuX3lTY2FsZXMuc2V0KGtleSwgcmVzY2FsZWQpO1xuXG4gICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnem9vbScpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuem9vbSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbjogcmVzY2FsZWQuZG9tYWluKCksXG4gICAgICAgICAgICAgICAgICAgIHpvb21UcmFuc2Zvcm06IGV2ZW50LnRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgem9vbVR5cGU6IFpvb21UeXBlLnksXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21tb25ab29tVHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX3JlZHJhdygpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEF4ZXNab29tKCkge1xuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLnpvb20tYmVoYXZpb3InKS5yZW1vdmUoKTtcblxuICAgIFsuLi50aGlzLl95QXhpc0xpc3QsIC4uLnRoaXMuX3hBeGlzTGlzdF1cbiAgICAgIC5maWx0ZXIoKGF4aXMpID0+IGF4aXMub3B0aW9ucy52aXNpYmxlICYmIGF4aXMub3B0aW9ucy56b29tKVxuICAgICAgLmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgICAgY29uc3QgZm91bmROb2RlID0gdGhpcy5fY2hhcnRcbiAgICAgICAgICAuc2VsZWN0KFxuICAgICAgICAgICAgYFtkYXRhLSR7YXhpcy50eXBlID09PSBBeGlzVHlwZS5hYnNjaXNzYSA/ICd4JyA6ICd5J30tc2NhbGUtaWQ9JyR7XG4gICAgICAgICAgICAgIGF4aXMuaW5kZXhcbiAgICAgICAgICAgIH0nXWBcbiAgICAgICAgICApXG4gICAgICAgICAgLm5vZGUoKSBhcyBhbnk7XG5cbiAgICAgICAgaWYgKCFmb3VuZE5vZGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiQm94ID0gZm91bmROb2RlLmdldEJCb3goKTtcblxuICAgICAgICBjb25zdCB0cmFuc2xhdGVYID1cbiAgICAgICAgICBheGlzLnR5cGUgPT09IEF4aXNUeXBlLmFic2Npc3NhXG4gICAgICAgICAgICA/IHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgICAgICAgPyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgICAgICAgIDogdGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdCArIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgICAgIDogYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gdGhpcy5fd2lkdGggLSBheGlzLm9mZnNldFxuICAgICAgICAgICAgICA6IGF4aXMub2Zmc2V0IC0gYkJveC53aWR0aDtcblxuICAgICAgICBjb25zdCB6b29tID0gZDNcbiAgICAgICAgICAuem9vbSgpXG4gICAgICAgICAgLnNjYWxlRXh0ZW50KFsxLCBJbmZpbml0eV0pXG4gICAgICAgICAgLm9uKCd6b29tIGVuZCcsIChldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+KSA9PiB7XG4gICAgICAgICAgICBpZiAoYXhpcy50eXBlID09PSBBeGlzVHlwZS5hYnNjaXNzYSkge1xuICAgICAgICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuX2Nsb25lZFguZ2V0KGF4aXMuaW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLl94U2NhbGVzLnNldChheGlzLmluZGV4LCBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVgoc2NhbGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gdGhpcy5fY2xvbmVkWS5nZXQoYXhpcy5pbmRleCk7XG4gICAgICAgICAgICAgIHRoaXMuX3lTY2FsZXMuc2V0KGF4aXMuaW5kZXgsIGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShzY2FsZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgICAgaWYgKGF4aXMudHlwZSA9PT0gQXhpc1R5cGUub3JkaW5hdHVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fem9vbVlDYWNoZS5zZXQoYXhpcy5pbmRleCwgZXZlbnQudHJhbnNmb3JtKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChheGlzLnR5cGUgPT09IEF4aXNUeXBlLmFic2Npc3NhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fem9vbVhDYWNoZS5zZXQoYXhpcy5pbmRleCwgZXZlbnQudHJhbnNmb3JtKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFydC5jYWxsKHRoaXMuX3pvb20udHJhbnNmb3JtLCBldmVudC50cmFuc2Zvcm0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3JlZHJhdygpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlc3RvcmVkVHJhbnNmb3JtOiBab29tVHJhbnNmb3JtID1cbiAgICAgICAgICBheGlzLnR5cGUgPT09IEF4aXNUeXBlLm9yZGluYXR1c1xuICAgICAgICAgICAgPyB0aGlzLl96b29tWUNhY2hlLmdldChheGlzLmluZGV4KVxuICAgICAgICAgICAgOiB0aGlzLl96b29tWENhY2hlLmdldChheGlzLmluZGV4KTtcblxuICAgICAgICB0aGlzLl9jaGFydFxuICAgICAgICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICd6b29tLWJlaGF2aW9yJylcbiAgICAgICAgICAuYXR0cignaGVpZ2h0JywgYkJveC5oZWlnaHQpXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgYkJveC53aWR0aClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgYHRyYW5zbGF0ZSgke3RyYW5zbGF0ZVh9LCAke1xuICAgICAgICAgICAgICBheGlzLnR5cGUgPT09IEF4aXNUeXBlLmFic2Npc3NhXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9oZWlnaHQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b21cbiAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcFxuICAgICAgICAgICAgfSlgXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdHlsZSgnb3BhY2l0eScsICcwJylcbiAgICAgICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ2FsbCcpXG4gICAgICAgICAgLmNhbGwoem9vbS50cmFuc2Zvcm0sIHJlc3RvcmVkVHJhbnNmb3JtID8/IGQzLnpvb21JZGVudGl0eSlcbiAgICAgICAgICAuY2FsbCh6b29tKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3ROb2RlKGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSBlbGVtZW50O1xuXG4gICAgZDMuc2VsZWN0KGVsZW1lbnQubmF0aXZlRWxlbWVudCkuc2VsZWN0QWxsKCcudG9vbHRpcC1jaGFydCcpLnJlbW92ZSgpO1xuXG4gICAgZDMuc2VsZWN0KGVsZW1lbnQubmF0aXZlRWxlbWVudCkuc2VsZWN0QWxsKCdzdmcnKS5yZW1vdmUoKTtcbiAgICBkMy5zZWxlY3QoZWxlbWVudC5uYXRpdmVFbGVtZW50KS5zZWxlY3RBbGwoJ2NhbnZhcycpLnJlbW92ZSgpO1xuXG4gICAgdGhpcy5fY2hhcnQgPSBkM1xuICAgICAgLnNlbGVjdChlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuYXBwZW5kKCdzdmcnKVxuICAgICAgLmF0dHIoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJylcbiAgICAgIC5zdHlsZSgnei1pbmRleCcsIDApO1xuXG4gICAgdGhpcy5fY2FudmFzID0gZDNcbiAgICAgIC5zZWxlY3QoZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLmFwcGVuZCgnY2FudmFzJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdtYWluLWNhbnZhcycpXG4gICAgICAuc3R5bGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMzUsIDApJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd6LWluZGV4JywgMSk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdBbm5vdGF0aW9ucygpIHtcbiAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5hbm5vdGF0aW9ucycpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLl9vcHRpb25zLmFubm90YXRpb25zPy5tYXAoKGFubm90YXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHggPSB0aGlzLl94U2NhbGVzLmdldChhbm5vdGF0aW9uLnhBeGlzSW5kZXgpO1xuICAgICAgY29uc3QgeSA9IHRoaXMuX3lTY2FsZXMuZ2V0KGFubm90YXRpb24ueUF4aXNJbmRleCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vdGU6IGFubm90YXRpb24ubm90ZSxcbiAgICAgICAgY29ubmVjdG9yOiBhbm5vdGF0aW9uLmNvbm5lY3RvcixcbiAgICAgICAgeDogeChhbm5vdGF0aW9uLnBvaW50Py54KSxcbiAgICAgICAgeTogeShhbm5vdGF0aW9uLnBvaW50Py55KSxcbiAgICAgICAgZHg6IGFubm90YXRpb24uZHgsXG4gICAgICAgIGR5OiBhbm5vdGF0aW9uLmR5LFxuICAgICAgICB0eXBlOiBhbm5vdGF0aW9uLnR5cGUsXG4gICAgICAgIGNsYXNzTmFtZTogYW5ub3RhdGlvbi5jbGFzc05hbWUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgbWFrZUFubm90YXRpb25zID0gZDNhbm5vdGF0aW9uXG4gICAgICAuYW5ub3RhdGlvbigpXG4gICAgICAuYW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMgPz8gW10pO1xuXG4gICAgdGhpcy5fY2hhcnRcbiAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2Fubm90YXRpb25zJylcbiAgICAgIC5hdHRyKCdjbGlwLXBhdGgnLCBgdXJsKCNkcmF3LXdpbmRvdy0ke3RoaXMudW5pcUlkfSlgKVxuICAgICAgLmNhbGwobWFrZUFubm90YXRpb25zIGFzIGFueSlcbiAgICAgIC5sb3dlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3UGxvdExpbmVzKCkge1xuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLnBsb3RsaW5lcycpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgcGxvdGxpbmVHcm91cCA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdwbG90bGluZXMnKVxuICAgICAgLnN0eWxlKCdzaGFwZS1yZW5kZXJpbmcnLCAnY3Jpc3BFZGdlcycpXG4gICAgICAuYXR0cignY2xpcC1wYXRoJywgYHVybCgjZHJhdy13aW5kb3ctJHt0aGlzLnVuaXFJZH0pYCk7XG5cbiAgICB0aGlzLl94QXhpc0xpc3RcbiAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5wbG90TGluZXMubGVuZ3RoID4gMClcbiAgICAgIC5mb3JFYWNoKChheGlzKSA9PiB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBheGlzLmV4dGVudDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuX3hTY2FsZXMuZ2V0KGF4aXMuaW5kZXgpO1xuXG4gICAgICAgIGNvbnN0IHBsb3RsaW5lc1BvaW50cyA9IGF4aXMub3B0aW9ucy5wbG90TGluZXM7XG5cbiAgICAgICAgY29uc3QgZ2V0VGV4dENlbnRlclBvaW50UHggPSAoZDogUGxvdExpbmUsIGlkeDogbnVtYmVyKSA9PlxuICAgICAgICAgIHgoXG4gICAgICAgICAgICAoZD8udmFsdWUgK1xuICAgICAgICAgICAgICAocGxvdGxpbmVzUG9pbnRzW2lkeCAtIDFdXG4gICAgICAgICAgICAgICAgPyBwbG90bGluZXNQb2ludHNbaWR4IC0gMV0/LnZhbHVlXG4gICAgICAgICAgICAgICAgOiAwKSkgL1xuICAgICAgICAgICAgMlxuICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IChkOiBQbG90TGluZSwgaWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5V2lkdGggPSAyMDtcblxuICAgICAgICAgIGNvbnN0IHdpZHRoID1cbiAgICAgICAgICAgIHgoZD8udmFsdWUpIC1cbiAgICAgICAgICAgIHgocGxvdGxpbmVzUG9pbnRzW2lkeCAtIDFdID8gcGxvdGxpbmVzUG9pbnRzW2lkeCAtIDFdPy52YWx1ZSA6IDApO1xuICAgICAgICAgIHJldHVybiB3aWR0aCA8PSBkaXNwbGF5V2lkdGggPyAwIDogMTtcbiAgICAgICAgfTtcblxuICAgICAgICBwbG90bGluZUdyb3VwXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLmxhYmVsJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ3RleHQnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsYWJlbCBmb250LWJvZHktMyBmaWxsLXRleHQtNzAnKVxuICAgICAgICAgIC5hdHRyKCd4JywgZ2V0VGV4dENlbnRlclBvaW50UHgpXG4gICAgICAgICAgLmF0dHIoJ3knLCAoZCkgPT4gdGhpcy5faGVpZ2h0IC8gMilcbiAgICAgICAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAgICAgICAuYXR0cignZG9taW5hbnQtYmFzZWxpbmUnLCAnY2VudHJhbCcpXG4gICAgICAgICAgLmF0dHIoXG4gICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgIChkLCBpZHgpID0+XG4gICAgICAgICAgICAgIGByb3RhdGUoLTkwLCAke2dldFRleHRDZW50ZXJQb2ludFB4KGQsIGlkeCl9LCAke1xuICAgICAgICAgICAgICAgIHRoaXMuX2hlaWdodCAvIDJcbiAgICAgICAgICAgICAgfSlgXG4gICAgICAgICAgKVxuICAgICAgICAgIC50ZXh0KChkKSA9PiBkPy5sYWJlbCA/PyAnJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCBvcGFjaXR5KTtcblxuICAgICAgICBwbG90bGluZUdyb3VwXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLnBsb3RsaW5lJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdwbG90bGluZScpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtcGxvdGxpbmUtaWQnLCAoZCkgPT4gZC5pZClcbiAgICAgICAgICAuYXR0cigneDEnLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneDInLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AgLVxuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7dGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wfSlgKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgKGQpID0+IGQud2lkdGgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAoZCkgPT4gZC5jb2xvcilcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAoZCkgPT4gKGQuZGFzaGVkID8gJzgsIDgnIDogJzAsIDAnKSk7XG5cbiAgICAgICAgY29uc3QgZW1pdCA9IChldmVudDogRHJhZ0V2ZW50LCBwbG90TGluZTogUGxvdExpbmUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsb3RMaW5lc01vdmUkLm5leHQoe2V2ZW50LCB0YXJnZXQ6IHBsb3RMaW5lfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGxvdGxpbmVHcm91cFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLXBsb3RsaW5lJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdkcmFnLXBsb3RsaW5lJylcbiAgICAgICAgICAuYXR0cigneDEnLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneDInLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AgLVxuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7dGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wfSlgKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgOClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICdyZ2JhKDAsIDAsIDAsIDApJylcbiAgICAgICAgICAuc3R5bGUoJ2N1cnNvcicsICdjb2wtcmVzaXplJylcbiAgICAgICAgICAuY2FsbChcbiAgICAgICAgICAgIGQzXG4gICAgICAgICAgICAgIC5kcmFnKClcbiAgICAgICAgICAgICAgLm9uKCdkcmFnJywgZnVuY3Rpb24gKGV2ZW50LCBkOiBQbG90TGluZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZDMuc2VsZWN0KHRoaXMpLm5vZGUoKS5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZHJhZ2dlZFBsb3RMaW5lID0gZDNcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGBbZGF0YS1wbG90bGluZS1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgICAgICBkLnZhbHVlID0geC5pbnZlcnQoZXZlbnQueCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IGQubWluID8/IG1pbjtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IGQubWF4ID8/IG1heDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlckxlZnRSZWFjaGVkID0gZC52YWx1ZSA8PSBtaW5WYWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJSaWdodFJlYWNoZWQgPSBkLnZhbHVlID49IG1heFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJvcmRlckxlZnRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICBkLnZhbHVlID0gbWluVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGJvcmRlclJpZ2h0UmVhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgZC52YWx1ZSA9IG1heFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGQzLnNlbGVjdCh0aGlzKS5hdHRyKCd4MScsIHgoZC52YWx1ZSkpLmF0dHIoJ3gyJywgeChkLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICBkcmFnZ2VkUGxvdExpbmUuYXR0cigneDEnLCB4KGQudmFsdWUpKS5hdHRyKCd4MicsIHgoZC52YWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgZW1pdChldmVudCwgZCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5vbignZW5kJywgKGV2ZW50OiBEcmFnRXZlbnQsIGQ6IFBsb3RMaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgZW1pdChldmVudCwgZCk7XG4gICAgICAgICAgICAgIH0pIGFzIGFueVxuICAgICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3lBeGlzTGlzdFxuICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnBsb3RMaW5lcy5sZW5ndGggPiAwKVxuICAgICAgLmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGF4aXMuZXh0ZW50O1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5feVNjYWxlcy5nZXQoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgY29uc3QgcGxvdGxpbmVzUG9pbnRzID0gYXhpcy5vcHRpb25zLnBsb3RMaW5lcztcblxuICAgICAgICBwbG90bGluZUdyb3VwXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLnBsb3RsaW5lJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdwbG90bGluZScpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtcGxvdGxpbmUtaWQnLCAoZCkgPT4gZC5pZClcbiAgICAgICAgICAuYXR0cigneTEnLCAoZCkgPT4geShkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneTInLCAoZCkgPT4geShkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneDEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3gyJyxcbiAgICAgICAgICAgIHRoaXMuX3dpZHRoIC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLnJpZ2h0XG4gICAgICAgICAgKVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7dGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdH0sIDApYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIChkKSA9PiBkLndpZHRoKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgKGQpID0+IGQuY29sb3IpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgKGQpID0+IChkLmRhc2hlZCA/ICc4LCA4JyA6ICcwLCAwJykpO1xuXG4gICAgICAgIGNvbnN0IGVtaXQgPSAoZXZlbnQ6IERyYWdFdmVudCwgcGxvdExpbmU6IFBsb3RMaW5lKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbG90TGluZXNNb3ZlJC5uZXh0KHtldmVudCwgdGFyZ2V0OiBwbG90TGluZX0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBsb3RsaW5lR3JvdXBcbiAgICAgICAgICAuc2VsZWN0QWxsKCcuZHJhZy1wbG90bGluZScpXG4gICAgICAgICAgLmRhdGEocGxvdGxpbmVzUG9pbnRzKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnZHJhZy1wbG90bGluZScpXG4gICAgICAgICAgLmF0dHIoJ3kxJywgKGQpID0+IHkoZC52YWx1ZSkpXG4gICAgICAgICAgLmF0dHIoJ3kyJywgKGQpID0+IHkoZC52YWx1ZSkpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgMClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd4MicsXG4gICAgICAgICAgICB0aGlzLl93aWR0aCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5yaWdodFxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3RoaXMuX29wdGlvbnMuYm91bmRzLmxlZnR9LCAwKWApXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCA4KVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3JnYmEoMCwgMCwgMCwgMCknKVxuICAgICAgICAgIC5zdHlsZSgnY3Vyc29yJywgJ3Jvdy1yZXNpemUnKVxuICAgICAgICAgIC5jYWxsKFxuICAgICAgICAgICAgZDNcbiAgICAgICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgICAgICAub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZlbnQsIGQ6IFBsb3RMaW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBkMy5zZWxlY3QodGhpcykubm9kZSgpLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnZ2VkUGxvdExpbmUgPSBkM1xuICAgICAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoYFtkYXRhLXBsb3RsaW5lLWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgICAgIGQudmFsdWUgPSB5LmludmVydChldmVudC55KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFZhbHVlID0gZC5tYXggPz8gbWF4O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyVG9wUmVhY2hlZCA9IGQudmFsdWUgPD0gbWluVmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyQm90dG9tUmVhY2hlZCA9IGQudmFsdWUgPj0gbWF4VmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoYm9yZGVyVG9wUmVhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgZC52YWx1ZSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChib3JkZXJCb3R0b21SZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICBkLnZhbHVlID0gbWF4VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3kxJywgeShkLnZhbHVlKSkuYXR0cigneTInLCB5KGQudmFsdWUpKTtcblxuICAgICAgICAgICAgICAgIGRyYWdnZWRQbG90TGluZS5hdHRyKCd5MScsIHkoZC52YWx1ZSkpLmF0dHIoJ3kyJywgeShkLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdExpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKTtcbiAgICAgICAgICAgICAgfSkgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3UGxvdEJhbmRzKCkge1xuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLnBsb3RiYW5kcycpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgcGxvdEJhbmRHcm91cCA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdwbG90YmFuZHMnKVxuICAgICAgLmF0dHIoJ2NsaXAtcGF0aCcsIGB1cmwoI2RyYXctd2luZG93LSR7dGhpcy51bmlxSWR9KWApO1xuXG4gICAgdGhpcy5feEF4aXNMaXN0XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMucGxvdEJhbmRzLmxlbmd0aCA+IDApXG4gICAgICAuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5feFNjYWxlcy5nZXQoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGF4aXMuZXh0ZW50O1xuXG4gICAgICAgIGNvbnN0IHBsb3RiYW5kID0gcGxvdEJhbmRHcm91cFxuICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgIC5zdHlsZSgnc2hhcGUtcmVuZGVyaW5nJywgJ2NyaXNwRWRnZXMnKTtcblxuICAgICAgICBjb25zdCBwbG90QmFuZEhlaWdodCA9XG4gICAgICAgICAgdGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wIC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tO1xuXG4gICAgICAgIGNvbnN0IGVtaXQgPSAoZXZlbnQ6IERyYWdFdmVudCwgcGxvdEJhbmQ6IFBsb3RCYW5kKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbG90QmFuZHNNb3ZlJC5uZXh0KHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiBwbG90QmFuZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJ3JlY3QnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMpXG4gICAgICAgICAgLm9uKCdzdGFydCcsIChfKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5tYXJrZXInKS5zdHlsZSgnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgIC5zZWxlY3QoJy50b29sdGlwLWNoYXJ0JylcbiAgICAgICAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5qb2luKCdyZWN0JylcbiAgICAgICAgICAuYXR0cignZGF0YS1wbG90YmFuZC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCd4JywgKGQpID0+IHgoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneScsIDApXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgKGQpID0+IE1hdGguYWJzKHgoZC50bykgLSB4KGQuZnJvbSkpKVxuICAgICAgICAgIC5hdHRyKCdmaWxsJywgKGQpID0+IHtcbiAgICAgICAgICAgIGlmIChkLmltYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBgdXJsKCMke2QuaW1hZ2V9KWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZC5jb2xvcjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zdHlsZSgnb3BhY2l0eScsIChkKSA9PiBkLm9wYWNpdHkgPz8gMSlcbiAgICAgICAgICAuYXR0cignaGVpZ2h0JywgcGxvdEJhbmRIZWlnaHQgPiAwID8gcGxvdEJhbmRIZWlnaHQgOiAwKVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7dGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wfSlgKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5saW5lLWxlZnQnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLWxpbmUtbGVmdC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lLWxlZnQnKVxuICAgICAgICAgIC5hdHRyKCd4MScsIChkKSA9PiB4KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3gyJywgKGQpID0+IHgoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AgLVxuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7dGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wfSlgKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgMSlcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAnOCwgOCcpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAndmFyKC0tY29sb3ItdGV4dC05MCknKVxuICAgICAgICAgIC5zdHlsZSgnb3BhY2l0eScsIChkKSA9PiAoZC5zaG93R3JhYmJlcnMgPyAxIDogMCkpO1xuXG4gICAgICAgIHBsb3RiYW5kXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLmRyYWctbGVmdCcpXG4gICAgICAgICAgLmRhdGEoYXhpcy5vcHRpb25zLnBsb3RCYW5kcylcbiAgICAgICAgICAuam9pbignbGluZScpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgKGQpID0+IHgoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneDInLCAoZCkgPT4geChkLmZyb20pKVxuICAgICAgICAgIC5hdHRyKCd5MScsIDApXG4gICAgICAgICAgLmF0dHIoXG4gICAgICAgICAgICAneTInLFxuICAgICAgICAgICAgdGhpcy5faGVpZ2h0IC1cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCAtXG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b21cbiAgICAgICAgICApXG4gICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHt0aGlzLl9vcHRpb25zLmJvdW5kcy50b3B9KWApXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCA4KVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3JnYmEoMCwgMCwgMCwgMCknKVxuICAgICAgICAgIC5zdHlsZSgnY3Vyc29yJywgJ2NvbC1yZXNpemUnKVxuICAgICAgICAgIC5jYWxsKFxuICAgICAgICAgICAgZDNcbiAgICAgICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgICAgICAub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGQzLnNlbGVjdCh0aGlzKS5ub2RlKCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnZ2VkQmFuZCA9IGQzXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGdyb3VwKVxuICAgICAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtcGxvdGJhbmQtaWQ9JyR7ZC5pZH0nXWApO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZHJhZ2dlZExpbmUgPSBkM1xuICAgICAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoYFtkYXRhLWxpbmUtbGVmdC1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgICAgICBkLmZyb20gPSB4LmludmVydChldmVudC54KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyUmVhY2hlZCA9IGQuZnJvbSA8PSBtaW5WYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChib3JkZXJSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICBkLmZyb20gPSBtaW5WYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZC5mcm9tID49IGQudG8pIHtcbiAgICAgICAgICAgICAgICAgIGQuZnJvbSA9IGQudG87XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3gxJywgeChkLmZyb20pKS5hdHRyKCd4MicsIHgoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgICAgICBkcmFnZ2VkQmFuZFxuICAgICAgICAgICAgICAgICAgLmF0dHIoJ3gnLCB4KGQuZnJvbSkpXG4gICAgICAgICAgICAgICAgICAuYXR0cignd2lkdGgnLCB4KGQudG8pIC0geChkLmZyb20pKTtcblxuICAgICAgICAgICAgICAgIGRyYWdnZWRMaW5lLmF0dHIoJ3gxJywgeChkLmZyb20pKS5hdHRyKCd4MicsIHgoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpID0+XG4gICAgICAgICAgICAgICAgZW1pdChldmVudCwgZClcbiAgICAgICAgICAgICAgKSBhcyBhbnlcbiAgICAgICAgICApO1xuXG4gICAgICAgIHBsb3RiYW5kXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLmxpbmUtcmlnaHQnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLWxpbmUtcmlnaHQtaWQnLCAoZCkgPT4gZC5pZClcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnbGluZS1yaWdodCcpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgKGQpID0+IHgoZC50bykpXG4gICAgICAgICAgLmF0dHIoJ3gyJywgKGQpID0+IHgoZC50bykpXG4gICAgICAgICAgLmF0dHIoJ3kxJywgMClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd5MicsXG4gICAgICAgICAgICB0aGlzLl9oZWlnaHQgLVxuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wIC1cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDEpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgJzgsIDgnKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtOTApJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAoZCkgPT4gKGQuc2hvd0dyYWJiZXJzID8gMSA6IDApKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLXJpZ2h0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnZHJhZy1yaWdodCcpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgKGQpID0+IHgoZC50bykpXG4gICAgICAgICAgLmF0dHIoJ3gyJywgKGQpID0+IHgoZC50bykpXG4gICAgICAgICAgLmF0dHIoJ3kxJywgMClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd5MicsXG4gICAgICAgICAgICB0aGlzLl9oZWlnaHQgLVxuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wIC1cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAncmdiYSgwLCAwLCAwLCAwKScpXG4gICAgICAgICAgLnN0eWxlKCdjdXJzb3InLCAnY29sLXJlc2l6ZScpXG4gICAgICAgICAgLmNhbGwoXG4gICAgICAgICAgICBkM1xuICAgICAgICAgICAgICAuZHJhZygpXG4gICAgICAgICAgICAgIC5vbignZHJhZycsIGZ1bmN0aW9uIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90QmFuZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZDMuc2VsZWN0KHRoaXMpLm5vZGUoKS5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZHJhZ2dlZEJhbmQgPSBkM1xuICAgICAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoYFtkYXRhLXBsb3RiYW5kLWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRMaW5lID0gZDNcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGBbZGF0YS1saW5lLXJpZ2h0LWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgICAgIGQudG8gPSB4LmludmVydChldmVudC54KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1heFZhbHVlID0gZC5tYXggPz8gbWF4O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyUmVhY2hlZCA9IGQudG8gPj0gbWF4VmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoYm9yZGVyUmVhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgZC50byA9IG1heFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkLnRvIDw9IGQuZnJvbSkge1xuICAgICAgICAgICAgICAgICAgZC50byA9IGQuZnJvbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkMy5zZWxlY3QodGhpcykuYXR0cigneDEnLCB4KGQudG8pKS5hdHRyKCd4MicsIHgoZC50bykpO1xuICAgICAgICAgICAgICAgIGRyYWdnZWRCYW5kLmF0dHIoJ3dpZHRoJywgeChkLnRvKSAtIHgoZC5mcm9tKSk7XG4gICAgICAgICAgICAgICAgZHJhZ2dlZExpbmUuYXR0cigneDEnLCB4KGQudG8pKS5hdHRyKCd4MicsIHgoZC50bykpO1xuXG4gICAgICAgICAgICAgICAgZW1pdChldmVudCwgZCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5vbignZW5kJywgKGV2ZW50OiBEcmFnRXZlbnQsIGQ6IFBsb3RCYW5kKSA9PlxuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpXG4gICAgICAgICAgICAgICkgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5feUF4aXNMaXN0XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMucGxvdEJhbmRzLmxlbmd0aCA+IDApXG4gICAgICAuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5feVNjYWxlcy5nZXQoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGF4aXMuZXh0ZW50O1xuXG4gICAgICAgIGNvbnN0IHBsb3RiYW5kID0gcGxvdEJhbmRHcm91cFxuICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgIC5zdHlsZSgnc2hhcGUtcmVuZGVyaW5nJywgJ2NyaXNwRWRnZXMnKTtcblxuICAgICAgICBjb25zdCBwbG90QmFuZFdpZHRoID1cbiAgICAgICAgICB0aGlzLl93aWR0aCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5yaWdodDsgLy8gVE9ETyBhZGQgbXVsdGlheGlzIHN1cHBvcnQgd2lkdGhcblxuICAgICAgICBjb25zdCBlbWl0ID0gKGV2ZW50OiBEcmFnRXZlbnQsIHBsb3RCYW5kOiBQbG90QmFuZCkgPT4ge1xuICAgICAgICAgIHRoaXMucGxvdEJhbmRzTW92ZSQubmV4dCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogcGxvdEJhbmQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZHJhZ1Bsb3RiYW5kID0gZDNcbiAgICAgICAgICAuZHJhZygpXG4gICAgICAgICAgLnN1YmplY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB7eTogZWxlbWVudC5hdHRyKCd5Jyl9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdzdGFydCBkcmFnIGVuZCcsIGZ1bmN0aW9uIChldmVudDogYW55LCBkOiBQbG90QmFuZCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGQzLnNlbGVjdCh0aGlzKTtcblxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VGbG9hdChlbGVtZW50LmF0dHIoJ2hlaWdodCcpKTtcblxuICAgICAgICAgICAgZC50byA9IHkuaW52ZXJ0KGV2ZW50LnkgKyBoZWlnaHQpO1xuICAgICAgICAgICAgZC5mcm9tID0geS5pbnZlcnQoZXZlbnQueSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuICAgICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgICAgIGNvbnN0IGJvcmRlclJlYWNoZWRNaW4gPSBkLmZyb20gPD0gbWluVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkTWF4ID0gZC50byA+PSBtYXhWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGJvcmRlclJlYWNoZWRNaW4pIHtcbiAgICAgICAgICAgICAgZC50byA9IHkuaW52ZXJ0KHkobWluVmFsdWUpICsgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgZC5mcm9tID0gbWluVmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChib3JkZXJSZWFjaGVkTWF4KSB7XG4gICAgICAgICAgICAgIGQudG8gPSBtYXhWYWx1ZTtcbiAgICAgICAgICAgICAgZC5mcm9tID0geS5pbnZlcnQoeShtYXhWYWx1ZSkgLSBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbGVtZW50LmF0dHIoJ3knLCB5KGQuZnJvbSkpO1xuXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGVsZW1lbnQubm9kZSgpLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1sZWZ0LWlkPScke2QuaWR9J11gKVxuICAgICAgICAgICAgICAuYXR0cigneTEnLCB5KGQuZnJvbSkpXG4gICAgICAgICAgICAgIC5hdHRyKCd5MicsIHkoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtZ3JhYi1sZWZ0LWlkPScke2QuaWR9J11gKVxuICAgICAgICAgICAgICAuYXR0cigneTEnLCB5KGQuZnJvbSkpXG4gICAgICAgICAgICAgIC5hdHRyKCd5MicsIHkoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1yaWdodC1pZD0nJHtkLmlkfSddYClcbiAgICAgICAgICAgICAgLmF0dHIoJ3kxJywgeShkLnRvKSlcbiAgICAgICAgICAgICAgLmF0dHIoJ3kyJywgeShkLnRvKSk7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtZ3JhYi1yaWdodC1pZD0nJHtkLmlkfSddYClcbiAgICAgICAgICAgICAgLmF0dHIoJ3kxJywgeShkLnRvKSlcbiAgICAgICAgICAgICAgLmF0dHIoJ3kyJywgeShkLnRvKSk7XG5cbiAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgIH0pIGFzIGFueTtcblxuICAgICAgICBjb25zdCBsZWZ0R3JhYkRyYWcgPSBkM1xuICAgICAgICAgIC5kcmFnKClcbiAgICAgICAgICAub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZDMuc2VsZWN0KHRoaXMpLm5vZGUoKS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgZHJhZ2dlZEJhbmQgPSBkM1xuICAgICAgICAgICAgICAuc2VsZWN0KGdyb3VwKVxuICAgICAgICAgICAgICAuc2VsZWN0KGBbZGF0YS1wbG90YmFuZC1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRMaW5lID0gZDNcbiAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1sZWZ0LWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgZC5mcm9tID0geS5pbnZlcnQoZXZlbnQueSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuXG4gICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkID0gZC5mcm9tIDw9IG1pblZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoYm9yZGVyUmVhY2hlZCkge1xuICAgICAgICAgICAgICBkLmZyb20gPSBtaW5WYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGQuZnJvbSA+PSBkLnRvKSB7XG4gICAgICAgICAgICAgIGQuZnJvbSA9IGQudG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdCh0aGlzKS5hdHRyKCd5MScsIHkoZC5mcm9tKSkuYXR0cigneTInLCB5KGQuZnJvbSkpO1xuXG4gICAgICAgICAgICBkcmFnZ2VkQmFuZFxuICAgICAgICAgICAgICAuYXR0cigneScsIHkoZC5mcm9tKSlcbiAgICAgICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIE1hdGguYWJzKHkoZC50bykgLSB5KGQuZnJvbSkpKTtcbiAgICAgICAgICAgIGRyYWdnZWRMaW5lLmF0dHIoJ3kxJywgeShkLmZyb20pKS5hdHRyKCd5MicsIHkoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpID0+IGVtaXQoZXZlbnQsIGQpKSBhcyBhbnk7XG5cbiAgICAgICAgY29uc3QgcmlnaHRHcmFiRHJhZyA9IGQzXG4gICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgIC5vbignZHJhZycsIGZ1bmN0aW9uIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90QmFuZCkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBkMy5zZWxlY3QodGhpcykubm9kZSgpLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRCYW5kID0gZDNcbiAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtcGxvdGJhbmQtaWQ9JyR7ZC5pZH0nXWApO1xuXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2VkTGluZSA9IGQzXG4gICAgICAgICAgICAgIC5zZWxlY3QoZ3JvdXApXG4gICAgICAgICAgICAgIC5zZWxlY3QoYFtkYXRhLWxpbmUtcmlnaHQtaWQ9JyR7ZC5pZH0nXWApO1xuXG4gICAgICAgICAgICBkLnRvID0geS5pbnZlcnQoZXZlbnQueSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1heFZhbHVlID0gZC5tYXggPz8gbWF4O1xuXG4gICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkID0gZC50byA+PSBtYXhWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGJvcmRlclJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgZC50byA9IG1heFZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZC50byA8PSBkLmZyb20pIHtcbiAgICAgICAgICAgICAgZC50byA9IGQuZnJvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3kxJywgeShkLnRvKSkuYXR0cigneTInLCB5KGQudG8pKTtcblxuICAgICAgICAgICAgZHJhZ2dlZEJhbmRcbiAgICAgICAgICAgICAgLmF0dHIoJ3knLCB5KGQuZnJvbSkpXG4gICAgICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBNYXRoLmFicyh5KGQudG8pIC0geShkLmZyb20pKSk7XG4gICAgICAgICAgICBkcmFnZ2VkTGluZS5hdHRyKCd5MScsIHkoZC50bykpLmF0dHIoJ3kyJywgeShkLnRvKSk7XG5cbiAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpID0+IGVtaXQoZXZlbnQsIGQpKSBhcyBhbnk7XG5cbiAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAuc2VsZWN0QWxsKCdyZWN0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzKVxuICAgICAgICAgIC5qb2luKCdyZWN0JylcbiAgICAgICAgICAuYXR0cignZGF0YS1wbG90YmFuZC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCd4JywgMClcbiAgICAgICAgICAuYXR0cigneScsIChkKSA9PiB5KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgKGQpID0+IHBsb3RCYW5kV2lkdGgpXG4gICAgICAgICAgLmF0dHIoJ2ZpbGwnLCAoZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGQuaW1hZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGB1cmwoIyR7ZC5pbWFnZX0pYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkLmNvbG9yO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnN0eWxlKCdvcGFjaXR5JywgKGQpID0+IGQub3BhY2l0eSA/PyAxKVxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCAoZCkgPT4gTWF0aC5hYnMoeShkLnRvKSAtIHkoZC5mcm9tKSkpXG4gICAgICAgICAgLmF0dHIoJ2N1cnNvcicsIChkKSA9PiAoZC5kcmFnZ2FibGUgPyAnbW92ZScgOiAnZGVmYXVsdCcpKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5saW5lLWxlZnQnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMuZmlsdGVyKChkKSA9PiBkLnJlc2l6YWJsZSkpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLWxpbmUtbGVmdC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lLWxlZnQnKVxuICAgICAgICAgIC5hdHRyKCd5MScsIChkKSA9PiB5KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3kyJywgKGQpID0+IHkoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneDEnLCAwKVxuICAgICAgICAgIC5hdHRyKCd4MicsIHBsb3RCYW5kV2lkdGgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAxKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsICc4LCA4JylcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICd2YXIoLS1jb2xvci10ZXh0LTkwKScpXG4gICAgICAgICAgLnN0eWxlKCdvcGFjaXR5JywgKGQpID0+IChkLnNob3dHcmFiYmVycyA/IDEgOiAwKSk7XG5cbiAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAuc2VsZWN0QWxsKCcuZHJhZy1sZWZ0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzLmZpbHRlcigoZCkgPT4gZC5yZXNpemFibGUpKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignZGF0YS1ncmFiLWxlZnQtaWQnLCAoZCkgPT4gZC5pZClcbiAgICAgICAgICAuYXR0cigneTEnLCAoZCkgPT4geShkLmZyb20pKVxuICAgICAgICAgIC5hdHRyKCd5MicsIChkKSA9PiB5KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgMClcbiAgICAgICAgICAuYXR0cigneDInLCBwbG90QmFuZFdpZHRoKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgOClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICdyZ2JhKDAsIDAsIDAsIDApJylcbiAgICAgICAgICAuc3R5bGUoJ2N1cnNvcicsIChkKSA9PiAoZC5yZXNpemFibGUgPyAncm93LXJlc2l6ZScgOiAnZGVmYXVsdCcpKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5saW5lLXJpZ2h0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzLmZpbHRlcigoZCkgPT4gZC5yZXNpemFibGUpKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignZGF0YS1saW5lLXJpZ2h0LWlkJywgKGQpID0+IGQuaWQpXG4gICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xpbmUtcmlnaHQnKVxuICAgICAgICAgIC5hdHRyKCd5MScsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd5MicsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd4MScsIDApXG4gICAgICAgICAgLmF0dHIoJ3gyJywgcGxvdEJhbmRXaWR0aClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDEpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgJzgsIDgnKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtOTApJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAoZCkgPT4gKGQuc2hvd0dyYWJiZXJzID8gMSA6IDApKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLXJpZ2h0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzLmZpbHRlcigoZCkgPT4gZC5yZXNpemFibGUpKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnZHJhZy1yaWdodCcpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtZ3JhYi1yaWdodC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCd5MScsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd5MicsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd4MScsIDApXG4gICAgICAgICAgLmF0dHIoJ3gyJywgcGxvdEJhbmRXaWR0aClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAncmdiYSgwLCAwLCAwLCAwKScpXG4gICAgICAgICAgLnN0eWxlKCdjdXJzb3InLCAoZCkgPT4gKGQucmVzaXphYmxlID8gJ3Jvdy1yZXNpemUnIDogJ2RlZmF1bHQnKSk7XG5cbiAgICAgICAgYXhpcy5vcHRpb25zLnBsb3RCYW5kcy5mb3JFYWNoKChfKSA9PiB7XG4gICAgICAgICAgaWYgKF8uZHJhZ2dhYmxlKSB7XG4gICAgICAgICAgICBwbG90YmFuZC5zZWxlY3QoYFtkYXRhLXBsb3RiYW5kLWlkPScke18uaWR9J11gKS5jYWxsKGRyYWdQbG90YmFuZCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8ucmVzaXphYmxlKSB7XG4gICAgICAgICAgICBwbG90YmFuZC5zZWxlY3QoYFtkYXRhLWdyYWItbGVmdC1pZD0nJHtfLmlkfSddYCkuY2FsbChsZWZ0R3JhYkRyYWcpO1xuICAgICAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtZ3JhYi1yaWdodC1pZD0nJHtfLmlkfSddYClcbiAgICAgICAgICAgICAgLmNhbGwocmlnaHRHcmFiRHJhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3Q2hhcnQoKSB7XG4gICAgY29uc3Qgc2VyaWVzID0gdGhpcy5fb3B0aW9ucy5zZXJpZXM/LmZpbHRlcigoXykgPT4gXy52aXNpYmxlKTtcblxuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLnNlcmllcycpLnJlbW92ZSgpO1xuXG4gICAgaWYgKCFzZXJpZXMgfHwgc2VyaWVzLmxlbmd0aCA8IDEpIHtcbiAgICAgIGQzLnNlbGVjdCh0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgICAgLnNlbGVjdCgnY2FudmFzJylcbiAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBncm91cCA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdzZXJpZXMnKVxuICAgICAgLmF0dHIoJ2NsaXAtcGF0aCcsIGB1cmwoI2RyYXctd2luZG93LSR7dGhpcy51bmlxSWR9KWApO1xuXG4gICAgc2VyaWVzPy5mb3JFYWNoKChzZXJpZXNJdGVtOiBTZXJpZXM8QmFzZVBvaW50PiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChzZXJpZXNJdGVtLnJlbmRlclRvID09PSAnY2FudmFzJykge1xuICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnNlbGVjdCgnY2FudmFzJylcbiAgICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCBudWxsKTtcblxuICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnNlbGVjdCgnc3ZnJylcbiAgICAgICAgICAuc3R5bGUoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnNlbGVjdCgnY2FudmFzJylcbiAgICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5feFNjYWxlcy5oYXMoc2VyaWVzSXRlbS54QXhpc0luZGV4KSB8fFxuICAgICAgICAhdGhpcy5feVNjYWxlcy5oYXMoc2VyaWVzSXRlbS55QXhpc0luZGV4KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRYID0gdGhpcy5feFNjYWxlcy5nZXQoc2VyaWVzSXRlbS54QXhpc0luZGV4KTtcbiAgICAgIGNvbnN0IGZvdW5kWSA9IHRoaXMuX3lTY2FsZXMuZ2V0KHNlcmllc0l0ZW0ueUF4aXNJbmRleCk7XG5cbiAgICAgIGNvbnN0IGRyYXdlciA9XG4gICAgICAgIHNlcmllc0l0ZW0uZHJhd2VyICE9IG51bGxcbiAgICAgICAgICA/IHNlcmllc0l0ZW0uZHJhd2VyXG4gICAgICAgICAgOiBkZWZhdWx0RHJhd2VyTWFwcGluZy5nZXQoc2VyaWVzSXRlbS50eXBlKTtcblxuICAgICAgaWYgKCFkcmF3ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBObyBkcmF3ZXIgZm9yIHNlcmllcyAke3Nlcmllc0l0ZW0ubmFtZX0sIHR5cGUgJHtcbiAgICAgICAgICAgIFNlcmllc1R5cGVbc2VyaWVzSXRlbS50eXBlXVxuICAgICAgICAgIH1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZXJpZXNJdGVtLnJlbmRlclRvID09PSAnY2FudmFzJykge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fY2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl93aWR0aCwgdGhpcy5faGVpZ2h0KTtcbiAgICAgIH1cblxuICAgICAgbGV0IFt4TWluLCB4TWF4XSA9IGZvdW5kWC5kb21haW4oKTtcbiAgICAgIGxldCBbeU1pbiwgeU1heF0gPSBmb3VuZFkuZG9tYWluKCk7XG5cbiAgICAgIHhNaW4gPSB4TWluIGluc3RhbmNlb2YgRGF0ZSA/IHhNaW4uZ2V0VGltZSgpIDogeE1pbjtcbiAgICAgIHhNYXggPSB4TWF4IGluc3RhbmNlb2YgRGF0ZSA/IHhNYXguZ2V0VGltZSgpIDogeE1heDtcblxuICAgICAgeU1pbiA9IHlNaW4gaW5zdGFuY2VvZiBEYXRlID8geU1pbi5nZXRUaW1lKCkgOiB5TWluO1xuICAgICAgeU1heCA9IHlNYXggaW5zdGFuY2VvZiBEYXRlID8geU1heC5nZXRUaW1lKCkgOiB5TWF4O1xuXG4gICAgICBjb25zdCB2aXNpYmxlUG9pbnRzID0gKFxuICAgICAgICBwb2ludDogQmFzZVBvaW50LFxuICAgICAgICBpZHg6IG51bWJlcixcbiAgICAgICAgYXJyOiBBcnJheTxCYXNlUG9pbnQ+XG4gICAgICApID0+XG4gICAgICAgIChwb2ludC54IDw9IHhNYXggfHxcbiAgICAgICAgICBwb2ludC54MSA8PSB4TWF4IHx8XG4gICAgICAgICAgKGFycltpZHggLSAxXSAmJiBhcnJbaWR4IC0gMV0ueCA8PSB4TWF4KSB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLngxIDw9IHhNYXgpKSAmJlxuICAgICAgICAocG9pbnQueCA+PSB4TWluIHx8XG4gICAgICAgICAgcG9pbnQueDEgPj0geE1pbiB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnggPj0geE1pbikgfHxcbiAgICAgICAgICAoYXJyW2lkeCArIDFdICYmIGFycltpZHggKyAxXS54MSA+PSB4TWluKSkgJiZcbiAgICAgICAgKHBvaW50LnkgPD0geU1heCB8fFxuICAgICAgICAgIHBvaW50LnkxIDw9IHlNYXggfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS55IDw9IHlNYXgpIHx8XG4gICAgICAgICAgKGFycltpZHggLSAxXSAmJiBhcnJbaWR4IC0gMV0ueTEgPD0geU1heCkpICYmXG4gICAgICAgIChwb2ludC55ID49IHlNaW4gfHxcbiAgICAgICAgICBwb2ludC55MSA+PSB5TWluIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueSA+PSB5TWluKSB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnkxID49IHlNaW4pKTtcblxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gc2VyaWVzSXRlbS5kYXRhOyAvLy5maWx0ZXIodmlzaWJsZVBvaW50cyk7XG5cbiAgICAgIGNvbnN0IHNlcmllID0ge1xuICAgICAgICAuLi5zZXJpZXNJdGVtLFxuICAgICAgICBkYXRhOiBmaWx0ZXJlZERhdGEsXG4gICAgICB9O1xuXG4gICAgICBkcmF3ZXIuZHJhdyhcbiAgICAgICAgc2VyaWUsXG4gICAgICAgIHNlcmllc0l0ZW0ucmVuZGVyVG8gPT09ICdjYW52YXMnID8gdGhpcy5fY2FudmFzIDogZ3JvdXAsXG4gICAgICAgIGZvdW5kWCxcbiAgICAgICAgZm91bmRZLFxuICAgICAgICB0aGlzLl9vcHRpb25zXG4gICAgICApO1xuXG4gICAgICBjb25zdCBlbWl0ID0gKGV2ZW50OiBJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+PikgPT4ge1xuICAgICAgICB0aGlzLnNlcmllc01vdmUkLm5leHQoZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgZHJhd2VyPy5kaXNwYXRjaD8ub24oRGlzcGF0Y2hUeXBlLm1vdmVMaW5lLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVtaXQodGhpcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVG9vbHRpcCgpIHtcbiAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuYXBwZW5kKCdkaXYnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ3Rvb2x0aXAtY2hhcnQgY29sb3ItdGV4dC05MCBiZy1iYWNrZ3JvdW5kLTUwIHNoYWRvdy0yJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnZml4ZWQnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAndW5zZXQnKVxuICAgICAgLnN0eWxlKCdyaWdodCcsICd1bnNldCcpXG4gICAgICAuc3R5bGUoJ2JvdHRvbScsICd1bnNldCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAndW5zZXQnKVxuICAgICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdub25lJylcbiAgICAgIC5zdHlsZSgnZGlzcGxheScsICdub25lJyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1vdXNlTW92ZShvcHRpb25zKSB7XG4gICAgY29uc3QgbW91c2UgPSBkMy5wb2ludGVyKG9wdGlvbnMuZXZlbnQpO1xuICAgIGNvbnN0IHt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnR9ID0gdGhpcy50b29sdGlwUG9zaXRpb24ob3B0aW9ucy5ldmVudCk7XG5cbiAgICBjb25zdCB0b29sdGlwc0RhdGEgPSBbXTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAuc2VsZWN0KCcubWFya2VyLWxpbmUnKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHswfSwgJHttb3VzZVsxXSAtIDJ9KWApO1xuXG4gICAgdGhpcy5fY2hhcnRcbiAgICAgIC5zZWxlY3RBbGwoJy5tYXJrZXInKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIChkOiBTZXJpZXM8QmFzZVBvaW50PikgPT4ge1xuICAgICAgICBpZiAoIWQuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuX3hTY2FsZXMuaGFzKGQueEF4aXNJbmRleCkgfHxcbiAgICAgICAgICAhdGhpcy5feVNjYWxlcy5oYXMoZC55QXhpc0luZGV4KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3VuZFggPSB0aGlzLl94U2NhbGVzLmdldChkLnhBeGlzSW5kZXgpO1xuICAgICAgICBjb25zdCBmb3VuZFkgPSB0aGlzLl95U2NhbGVzLmdldChkLnlBeGlzSW5kZXgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zLnRvb2x0aXAudHJhY2tpbmcgPT09ICd4Jykge1xuICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBmb3VuZFguZG9tYWluKCk7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gZC5kYXRhLmZpbHRlcihcbiAgICAgICAgICAgIChwb2ludCkgPT4gcG9pbnQueCA8PSBtYXggJiYgcG9pbnQueCA+PSBtaW5cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3Qgc29ydGVkID0gWy4uLmZpbHRlcmVkRGF0YV0uc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgIGQzLmFzY2VuZGluZyhhLngsIGIueClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgYmlzZWN0ID0gZDMuYmlzZWN0b3IoKGRkOiBhbnkpID0+IGRkLngpLmxlZnQ7XG4gICAgICAgICAgY29uc3QgeDAgPSBmb3VuZFguaW52ZXJ0KG1vdXNlWzBdKTtcblxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gYmlzZWN0KHNvcnRlZCwgeDApO1xuXG4gICAgICAgICAgY29uc3QgZGF0YSA9IHNvcnRlZFtpbmRleF0gPyBzb3J0ZWRbaW5kZXhdIDogc29ydGVkW2luZGV4IC0gMV07XG5cbiAgICAgICAgICB0b29sdGlwc0RhdGEucHVzaCh7XG4gICAgICAgICAgICBwb2ludDogZGF0YSxcbiAgICAgICAgICAgIGNvbG9yOiBkLmNvbG9yLFxuICAgICAgICAgICAgbmFtZTogZC5uYW1lLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHshaXNOYU4oZGF0YT8ueCkgPyBmb3VuZFgoZGF0YS54KSA6IC0xMH0sICR7XG4gICAgICAgICAgICAhaXNOYU4oZGF0YT8ueSkgPyBmb3VuZFkoZGF0YS55KSA6IC0xMFxuICAgICAgICAgIH0pYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zLnRvb2x0aXAudHJhY2tpbmcgPT09ICd5Jykge1xuICAgICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kLmRhdGFdLnNvcnQoKGEsIGIpID0+IGQzLmFzY2VuZGluZyhhLnksIGIueSkpO1xuICAgICAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChkZDogYW55KSA9PiBkZC55KS5sZWZ0O1xuICAgICAgICAgIGNvbnN0IHkwID0gZm91bmRZLmludmVydChtb3VzZVsxXSk7XG5cbiAgICAgICAgICBjb25zdCBpbmRleCA9IGJpc2VjdChzb3J0ZWQsIHkwLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBzb3J0ZWRbaW5kZXhdID8gc29ydGVkW2luZGV4XSA6IHNvcnRlZFtpbmRleCAtIDFdO1xuXG4gICAgICAgICAgdG9vbHRpcHNEYXRhLnB1c2goe1xuICAgICAgICAgICAgcG9pbnQ6IGRhdGEsXG4gICAgICAgICAgICBjb2xvcjogZC5jb2xvcixcbiAgICAgICAgICAgIG5hbWU6IGQubmFtZSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBgdHJhbnNsYXRlKCR7Zm91bmRYKGRhdGEueCl9LCAke2ZvdW5kWShkYXRhLnkpfSlgO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLl9vcHRpb25zLnRvb2x0aXA/LmZvcm1hdCkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5fb3B0aW9ucy50b29sdGlwPy5mb3JtYXQodG9vbHRpcHNEYXRhKTtcblxuICAgICAgZDMuc2VsZWN0KHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgICAuc2VsZWN0KCcudG9vbHRpcC1jaGFydCcpXG4gICAgICAgIC5zdHlsZSgndG9wJywgdG9wKVxuICAgICAgICAuc3R5bGUoJ3JpZ2h0JywgcmlnaHQpXG4gICAgICAgIC5zdHlsZSgnYm90dG9tJywgYm90dG9tKVxuICAgICAgICAuc3R5bGUoJ2xlZnQnLCBsZWZ0KVxuICAgICAgICAuaHRtbChmb3JtYXR0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9vbHRpcFBvc2l0aW9uKGV2ZW50KSB7XG4gICAgY29uc3QgY2VudGVyWCA9IHRoaXMuX3dpZHRoIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gdGhpcy5faGVpZ2h0IC8gMjtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSB7eDogMTAsIHk6IDEwfTtcblxuICAgIGNvbnN0IHNjZW5lID0ge1xuICAgICAgbGVmdDogZXZlbnQucGFnZVggPiBjZW50ZXJYID8gJ2luaXRpYWwnIDogYCR7ZXZlbnQucGFnZVggKyBwYWRkaW5nLnh9cHhgLFxuICAgICAgdG9wOiBldmVudC5wYWdlWSA+IGNlbnRlclkgPyAnaW5pdGlhbCcgOiBgJHtldmVudC5wYWdlWSArIHBhZGRpbmcueX1weGAsXG4gICAgICBib3R0b206XG4gICAgICAgIGV2ZW50LnBhZ2VZID4gY2VudGVyWVxuICAgICAgICAgID8gYCR7d2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQucGFnZVl9cHhgXG4gICAgICAgICAgOiAnaW5pdGlhbCcsXG4gICAgICByaWdodDpcbiAgICAgICAgZXZlbnQucGFnZVggPiBjZW50ZXJYXG4gICAgICAgICAgPyBgJHt3aW5kb3cuaW5uZXJXaWR0aCAtIGV2ZW50LnBhZ2VYICsgcGFkZGluZy54fXB4YFxuICAgICAgICAgIDogJ2luaXRpYWwnLFxuICAgIH07XG5cbiAgICByZXR1cm4gc2NlbmU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1hcmtlcnMoKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMudG9vbHRpcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9vcHRpb25zLnRvb2x0aXAuZW5hYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcubWFya2VyJykucmVtb3ZlKCk7XG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0KCcubWFya2VyLWxpbmUnKS5yZW1vdmUoKTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdtYXJrZXItbGluZScpXG4gICAgICAuYXR0cigneDEnLCAzNSlcbiAgICAgIC5hdHRyKCd4MicsIHRoaXMuX3dpZHRoKVxuICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAwLjUpXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsICd2YXIoLS1jb2xvci10ZXh0LTQwKScpXG4gICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgY29uc3Qge3Nlcmllc30gPSB0aGlzLl9vcHRpb25zO1xuXG4gICAgaWYgKCFzZXJpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXJrZXJzID0gdGhpcy5fY2hhcnRcbiAgICAgIC5zZWxlY3RBbGwoKVxuICAgICAgLmRhdGEoc2VyaWVzLmZpbHRlcigoXykgPT4gXy52aXNpYmxlKSk7XG4gICAgbWFya2Vyc1xuICAgICAgLmVudGVyKClcbiAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbWFya2VyJylcbiAgICAgIC5hdHRyKCdwb2ludGVyLWV2ZW50cycsICdub25lJylcbiAgICAgIC5hdHRyKCdyJywgMylcbiAgICAgIC5hdHRyKCdmaWxsJywgKF8sIGkpID0+IF8uY29sb3IpXG4gICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgY29uc3QgbW91c2VvdXRFdmVudCA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLm1hcmtlcicpLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgIHRoaXMuX2NoYXJ0LnNlbGVjdCgnLm1hcmtlci1saW5lJykuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIC5zZWxlY3QoJy50b29sdGlwLWNoYXJ0JylcbiAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbW91c2VNb3ZlRXZlbnQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBzZXJpZXMsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmhhbmRsZU1vdXNlTW92ZShvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbW91c2VPdmVyRXZlbnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fb3B0aW9ucy50b29sdGlwLnNob3dNYXJrZXJzKSB7XG4gICAgICAgIHRoaXMuX2NoYXJ0XG4gICAgICAgICAgLnNlbGVjdEFsbCgnLm1hcmtlcicpXG4gICAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgKGQ6IFNlcmllczxCYXNlUG9pbnQ+KSA9PiB7XG4gICAgICAgICAgICBpZiAoZC5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnbm9uZSc7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9vcHRpb25zLnRvb2x0aXAuc2hvd0xpbmUpIHtcbiAgICAgICAgdGhpcy5fY2hhcnQuc2VsZWN0KCcubWFya2VyLWxpbmUnKS5zdHlsZSgnZGlzcGxheScsIG51bGwpO1xuICAgICAgfVxuXG4gICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIC5zZWxlY3QoJy50b29sdGlwLWNoYXJ0JylcbiAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgbnVsbCk7XG4gICAgfTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAub24oJ21vdXNlb3ZlcicsIG1vdXNlT3ZlckV2ZW50KVxuICAgICAgLm9uKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVFdmVudClcbiAgICAgIC5vbignbW91c2VsZWF2ZScsIG1vdXNlb3V0RXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3TGVnZW5kKCkge1xuICAgIGlmICh0aGlzLl9vcHRpb25zLmxlZ2VuZD8udmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5sZWdlbmQnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IGRyYXdlciA9IHRoaXMuX29wdGlvbnMubGVnZW5kPy50eXBlXG4gICAgICA/IGRlZmF1bHRMZWdlbmREcmF3ZXJNYXBwaW5nLmdldCh0aGlzLl9vcHRpb25zLmxlZ2VuZC50eXBlKVxuICAgICAgOiBkZWZhdWx0TGVnZW5kRHJhd2VyTWFwcGluZy5nZXQoTGVnZW5kVHlwZS5zd2F0Y2hlcyk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIWRyYXdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTm8gZHJhd2VyIGZvciBsZWdlbmRcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZHJhd2VyLmRyYXcoe1xuICAgICAgY29udGV4dCxcbiAgICAgIHNlcmllczogdGhpcy5fb3B0aW9ucy5zZXJpZXMuZmlsdGVyKChfKSA9PiBfLnNob3dJbkxlZ2VuZCksXG4gICAgICB3aWR0aDogdGhpcy5fd2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMuX2hlaWdodCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsdWNsYXRlQ2hhcnRXaWR0aCgpIHtcbiAgICBsZXQgd2lkdGggPSAtdGhpcy5fd2lkdGg7XG5cbiAgICBpZiAodGhpcy5vZmZzZXRPcHBvc2l0ZSA+IDApIHtcbiAgICAgIHdpZHRoID0gLXRoaXMuX3dpZHRoICsgdGhpcy5vZmZzZXRPcHBvc2l0ZSArIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGUgPiAwKSB7XG4gICAgICB3aWR0aCA9XG4gICAgICAgIC10aGlzLl93aWR0aCArIHRoaXMuX29wdGlvbnMuYm91bmRzLnJpZ2h0ICsgdGhpcy5vZmZzZXROb25PcHBvc2l0ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9mZnNldE9wcG9zaXRlID49IEF4aXMub2Zmc2V0RmFjdG9yICYmXG4gICAgICB0aGlzLm9mZnNldE5vbk9wcG9zaXRlID09PSAwXG4gICAgKSB7XG4gICAgICB3aWR0aCA9IC10aGlzLl93aWR0aCArIHRoaXMub2Zmc2V0T3Bwb3NpdGUgKyB0aGlzLl9vcHRpb25zLmJvdW5kcy5sZWZ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9mZnNldE9wcG9zaXRlID4gMCAmJiB0aGlzLm9mZnNldE5vbk9wcG9zaXRlID4gMCkge1xuICAgICAgd2lkdGggPSAtdGhpcy5fd2lkdGggKyB0aGlzLm9mZnNldE9wcG9zaXRlICsgdGhpcy5vZmZzZXROb25PcHBvc2l0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5hYnMod2lkdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3R3JpZExpbmVzKCkge1xuICAgIGlmICh0aGlzLl9vcHRpb25zLmdyaWRMaW5lcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGVYID1cbiAgICAgIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGUgPiAwXG4gICAgICAgID8gdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgICA6IHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQgKyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlO1xuXG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcuZ3JpZCcpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgeUxpc3QgPSB0aGlzLl95QXhpc0xpc3QuZmlsdGVyKFxuICAgICAgKF8pID0+IF8ub3B0aW9ucy52aXNpYmxlICYmICFfLm9wdGlvbnMub3Bwb3NpdGVcbiAgICApO1xuXG4gICAgY29uc3QgeTogYW55ID1cbiAgICAgIHlMaXN0Py5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5feVNjYWxlcy5nZXQoeUxpc3RbeUxpc3QubGVuZ3RoIC0gMV0uaW5kZXgpXG4gICAgICAgIDogdGhpcy5feVNjYWxlcy5nZXQoMCk7XG5cbiAgICBjb25zdCB4ID0gdGhpcy5feFNjYWxlcy5nZXQoMCk7XG5cbiAgICBpZiAoIXkgfHwgIXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBUSUNLX0hFSUdIVCA9IDQwO1xuICAgIGNvbnN0IFRJQ0tfV0lEVEggPSA2MDtcblxuICAgIGNvbnN0IHRpY2tDb3VudCA9IE1hdGgucm91bmQodGhpcy5faGVpZ2h0IC8gVElDS19IRUlHSFQpO1xuICAgIGNvbnN0IHRpY2tDb3VudFggPSBNYXRoLnJvdW5kKHRoaXMuX3dpZHRoIC8gVElDS19XSURUSCk7XG5cbiAgICBjb25zdCBncmlkWSA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdncmlkIGNvbG9yLXRleHQtMTAnKVxuICAgICAgLnN0eWxlKCdzaGFwZS1yZW5kZXJpbmcnLCAnY3Jpc3BFZGdlcycpO1xuXG4gICAgY29uc3QgZ3JpZGxpbmVzWSA9IGQzXG4gICAgICAuYXhpc0xlZnQoeSlcbiAgICAgIC50aWNrRm9ybWF0KCcnIGFzIGFueSlcbiAgICAgIC50aWNrU2l6ZSgtdGhpcy52aXNpYmxlQ2hhcnRXaW5kb3dXaWR0aCk7XG5cbiAgICBjb25zdCBoYXNCYXJTZXJpZXNUeXBlID0gdGhpcy5fb3B0aW9ucy5zZXJpZXMuc29tZShcbiAgICAgIChfKSA9PiBfLnR5cGUgPT09IFNlcmllc1R5cGUuYmFyXG4gICAgKTtcblxuICAgIGlmICghaGFzQmFyU2VyaWVzVHlwZSkge1xuICAgICAgY29uc3QgZ3JpZFggPSB0aGlzLl9jaGFydFxuICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ2dyaWQgY29sb3ItdGV4dC0xMCcpXG4gICAgICAgIC5zdHlsZSgnc2hhcGUtcmVuZGVyaW5nJywgJ2NyaXNwRWRnZXMnKTtcblxuICAgICAgY29uc3QgZ3JpZGxpbmVzWCA9IGQzXG4gICAgICAgIC5heGlzQm90dG9tKHgpXG4gICAgICAgIC50aWNrcyh0aWNrQ291bnRYKVxuICAgICAgICAudGlja0Zvcm1hdCgnJyBhcyBhbnkpXG4gICAgICAgIC50aWNrU2l6ZShcbiAgICAgICAgICB0aGlzLl9oZWlnaHQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b20gLSB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3BcbiAgICAgICAgKTtcblxuICAgICAgZ3JpZFhcbiAgICAgICAgLmNhbGwoZ3JpZGxpbmVzWClcbiAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHt0aGlzLl9vcHRpb25zLmJvdW5kcy50b3B9KWApXG4gICAgICAgIC5sb3dlcigpO1xuICAgIH1cblxuICAgIGdyaWRZXG4gICAgICAuY2FsbChncmlkbGluZXNZKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHt0cmFuc2xhdGVYfSwgJHswfSlgKVxuICAgICAgLmxvd2VyKCk7XG5cbiAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5ncmlkIHBhdGgnKS5yZW1vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU2NhbGVzKCkge1xuICAgIHRoaXMuX3hTY2FsZXMuY2xlYXIoKTtcbiAgICB0aGlzLl95U2NhbGVzLmNsZWFyKCk7XG5cbiAgICBjb25zdCBkZWZhdWx0U2NhbGVNYXBwaW5nOiBNYXA8U2NhbGVUeXBlLCBhbnk+ID0gbmV3IE1hcDxTY2FsZVR5cGUsIGFueT4oKVxuICAgICAgLnNldChTY2FsZVR5cGUubGluZWFyLCBkMy5zY2FsZUxpbmVhcilcbiAgICAgIC5zZXQoU2NhbGVUeXBlLmxvZywgZDMuc2NhbGVMb2cpXG4gICAgICAuc2V0KFNjYWxlVHlwZS5zcXJ0LCBkMy5zY2FsZVNxcnQpXG4gICAgICAuc2V0KFNjYWxlVHlwZS5wb3csIGQzLnNjYWxlUG93KTtcblxuICAgIGNvbnN0IHhSYW5nZSA9IFtcbiAgICAgIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgPyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgIDogdGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdCxcbiAgICAgIHRoaXMuX3dpZHRoIC1cbiAgICAgICh0aGlzLm9mZnNldE9wcG9zaXRlXG4gICAgICAgID8gdGhpcy5vZmZzZXRPcHBvc2l0ZVxuICAgICAgICA6IHRoaXMuX29wdGlvbnMuYm91bmRzLnJpZ2h0KSxcbiAgICBdO1xuXG4gICAgY29uc3QgeVJhbmdlID0gW1xuICAgICAgdGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tLFxuICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wLFxuICAgIF07XG5cbiAgICB0aGlzLl94QXhpc0xpc3QuZm9yRWFjaCgoYXhpcywgaW5kZXgpID0+IHtcbiAgICAgIGxldCBzY2FsZSA9IG51bGw7XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMudHlwZSA9PT0gU2NhbGUudGltZSkge1xuICAgICAgICBzY2FsZSA9IGQzXG4gICAgICAgICAgLnNjYWxlVGltZSgpXG4gICAgICAgICAgLmRvbWFpbihheGlzLmV4dGVudClcbiAgICAgICAgICAucmFuZ2UoYXhpcy5vcHRpb25zLmludmVydGVkID8gWy4uLnhSYW5nZV0ucmV2ZXJzZSgpIDogeFJhbmdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy50eXBlID09PSBTY2FsZS5udW1iZXIpIHtcbiAgICAgICAgc2NhbGUgPSBkZWZhdWx0U2NhbGVNYXBwaW5nXG4gICAgICAgICAgLmdldChheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLnR5cGUpKClcbiAgICAgICAgICAuZG9tYWluKGF4aXMuZXh0ZW50KVxuICAgICAgICAgIC5yYW5nZShheGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBbLi4ueFJhbmdlXS5yZXZlcnNlKCkgOiB4UmFuZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zLm5pY2VUaWNrcykge1xuICAgICAgICBzY2FsZS5uaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgc2NhbGUuYmFzZShheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLmJhc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zLnNjYWxlT3B0aW9ucy50eXBlID09PSBTY2FsZVR5cGUucG93KSB7XG4gICAgICAgIHNjYWxlLmV4cG9uZW50KGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMuYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3hTY2FsZXMuc2V0KGluZGV4LCBzY2FsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl95QXhpc0xpc3QuZm9yRWFjaCgoYXhpcywgaW5kZXgpID0+IHtcbiAgICAgIGxldCBzY2FsZSA9IG51bGw7XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMudHlwZSA9PT0gU2NhbGUubnVtYmVyKSB7XG4gICAgICAgIHNjYWxlID0gZGVmYXVsdFNjYWxlTWFwcGluZ1xuICAgICAgICAgIC5nZXQoYXhpcy5vcHRpb25zLnNjYWxlT3B0aW9ucy50eXBlKSgpXG4gICAgICAgICAgLmRvbWFpbihheGlzLmV4dGVudClcbiAgICAgICAgICAucmFuZ2UoYXhpcy5vcHRpb25zLmludmVydGVkID8gWy4uLnlSYW5nZV0ucmV2ZXJzZSgpIDogeVJhbmdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy50eXBlID09PSBTY2FsZS50aW1lKSB7XG4gICAgICAgIHNjYWxlID0gZDNcbiAgICAgICAgICAuc2NhbGVUaW1lKClcbiAgICAgICAgICAuZG9tYWluKGF4aXMuZXh0ZW50KVxuICAgICAgICAgIC5yYW5nZShheGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBbLi4ueVJhbmdlXS5yZXZlcnNlKCkgOiB5UmFuZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zLm5pY2VUaWNrcykge1xuICAgICAgICBzY2FsZS5uaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgc2NhbGUuYmFzZShheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLmJhc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zLnNjYWxlT3B0aW9ucy50eXBlID09PSBTY2FsZVR5cGUucG93KSB7XG4gICAgICAgIHNjYWxlLmV4cG9uZW50KGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMuYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3lTY2FsZXMuc2V0KGluZGV4LCBzY2FsZSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLl95U2NhbGVzKSB7XG4gICAgICB0aGlzLl9jbG9uZWRZLnNldChrZXksIHZhbHVlLmNvcHkoKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5feFNjYWxlcykge1xuICAgICAgdGhpcy5fY2xvbmVkWC5zZXQoa2V5LCB2YWx1ZS5jb3B5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZHJhd0F4aXMoKSB7XG4gICAgY29uc3QgaGFzVmlzaWJsZUF4aXMgPSBbLi4udGhpcy5feEF4aXNMaXN0LCAuLi50aGlzLl95QXhpc0xpc3RdLmZpbHRlcihcbiAgICAgIChheGlzKSA9PiBheGlzLm9wdGlvbnMudmlzaWJsZVxuICAgICk7XG5cbiAgICBpZiAoIWhhc1Zpc2libGVBeGlzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmVnYXRpdmUgPSBmYWxzZTtcblxuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLmF4ZXMnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IGF4ZXMgPSB0aGlzLl9jaGFydFxuICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cignY2xhc3MnLCAnYXhlcycpXG4gICAgICAuc3R5bGUoJ3NoYXBlLXJlbmRlcmluZycsICdjcmlzcEVkZ2VzJyk7XG5cbiAgICBjb25zdCBUSUNLX0hFSUdIVCA9IDQwO1xuICAgIGNvbnN0IFRJQ0tfV0lEVEggPSA2MDtcblxuICAgIGNvbnN0IHRpY2tDb3VudCA9IE1hdGgucm91bmQodGhpcy5faGVpZ2h0IC8gVElDS19IRUlHSFQpO1xuICAgIGNvbnN0IHRpY2tDb3VudFggPSBNYXRoLnJvdW5kKHRoaXMuX3dpZHRoIC8gVElDS19XSURUSCk7XG5cbiAgICB0aGlzLl94QXhpc0xpc3QuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uczogQXhpc09wdGlvbnMgPSBheGlzLm9wdGlvbnM7XG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGB0cmFuc2xhdGUoJHswfSwgJHtcbiAgICAgICAgdGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tXG4gICAgICB9KWA7XG5cbiAgICAgIGNvbnN0IHggPSB0aGlzLl94U2NhbGVzLmdldChheGlzLmluZGV4KTtcblxuICAgICAgY29uc3QgeEF4aXMgPSBkMy5heGlzQm90dG9tKHgpLnRpY2tzKHRpY2tDb3VudFgpO1xuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zPy50aWNrRm9ybWF0KSB7XG4gICAgICAgIHhBeGlzLnRpY2tGb3JtYXQoYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy52aXNpYmxlICE9PSBmYWxzZSkge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVYID0gdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgICAgID8gdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgICAgIDogdGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdCArIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGU7XG5cbiAgICAgICAgYXhlc1xuICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICd4LWF4aXMtbGFiZWwnKVxuICAgICAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgICAgIC5zdHlsZSgnZmlsbCcsICd2YXIoLS1jb2xvci10ZXh0LTUwKScpXG4gICAgICAgICAgLmF0dHIoXG4gICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICd0cmFuc2xhdGUoJyArXG4gICAgICAgICAgICB0aGlzLl93aWR0aCAvIDIgK1xuICAgICAgICAgICAgJyAsJyArXG4gICAgICAgICAgICAodGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tKSArXG4gICAgICAgICAgICAnKSdcbiAgICAgICAgICApXG4gICAgICAgICAgLnN0eWxlKCd0ZXh0LWFuY2hvcicsICdtaWRkbGUnKVxuICAgICAgICAgIC5hdHRyKCdkeScsICczZW0nKVxuICAgICAgICAgIC50ZXh0KG9wdGlvbnMudGl0bGUgPz8gJycpO1xuXG4gICAgICAgIGF4ZXNcbiAgICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAneC1heGlzIGZvbnQtY2FwdGlvbicpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEteC1zY2FsZS1pZCcsIGF4aXMuaW5kZXgpXG4gICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZSlcbiAgICAgICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgICAgIC5jYWxsKHhBeGlzKVxuICAgICAgICAgIC5jYWxsKChfKSA9PiB7XG4gICAgICAgICAgICBfLnNlbGVjdCgnLmRvbWFpbicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgXy5zZWxlY3RBbGwoJy50aWNrJykuYXR0cignY2xhc3MnLCAnY29sb3ItdGV4dC01MCcpO1xuXG4gICAgICAgICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgXy5hcHBlbmQoJ2xpbmUnKVxuICAgICAgICAgICAgICAgIC5hdHRyKCd5MScsIDApXG4gICAgICAgICAgICAgICAgLmF0dHIoJ3kyJywgdGhpcy5faGVpZ2h0KVxuICAgICAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7eCgwKX0sIC0ke3RoaXMuX2hlaWdodH0pYClcbiAgICAgICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDAuNSlcbiAgICAgICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICd2YXIoLS1jb2xvci10ZXh0LTUwKScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLmFwcGVuZCgnbGluZScpXG4gICAgICAgICAgICAgIC5hdHRyKCd4MScsIDApXG4gICAgICAgICAgICAgIC5hdHRyKCd4MicsIHRoaXMudmlzaWJsZUNoYXJ0V2luZG93V2lkdGgpXG4gICAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7dHJhbnNsYXRlWH0sICR7MH0pYClcbiAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAwLjUpXG4gICAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtNTApJyk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl95QXhpc0xpc3QuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRlID0gYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgID8gYHRyYW5zbGF0ZSgke3RoaXMuX3dpZHRoIC0gYXhpcy5vZmZzZXR9LCAkezB9KWBcbiAgICAgICAgOiBgdHJhbnNsYXRlKCR7YXhpcy5vZmZzZXR9LCAkezB9KWA7XG5cbiAgICAgIGNvbnN0IHkgPSB0aGlzLl95U2NhbGVzLmdldChheGlzLmluZGV4KTtcblxuICAgICAgY29uc3QgeUF4aXMgPSBheGlzLm9wdGlvbnMub3Bwb3NpdGUgPyBkMy5heGlzUmlnaHQoeSkgOiBkMy5heGlzTGVmdCh5KTtcblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy52aXNpYmxlICE9PSBmYWxzZSkge1xuICAgICAgICBjb25zdCBsYWJlbE9mZnNldCA9IGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgID8gdGhpcy5fd2lkdGggLSBheGlzLm9mZnNldCArIGF4aXMud2lkdGhcbiAgICAgICAgICA6IGF4aXMub2Zmc2V0IC0gYXhpcy53aWR0aDtcblxuICAgICAgICBheGVzXG4gICAgICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3ktYXhpcy1sYWJlbCcpXG4gICAgICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAgICAgLnN0eWxlKCdmaWxsJywgJ3ZhcigtLWNvbG9yLXRleHQtNTApJylcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgJ3JvdGF0ZSgtOTApJylcbiAgICAgICAgICAuYXR0cigneScsIGxhYmVsT2Zmc2V0KVxuICAgICAgICAgIC5hdHRyKCd4JywgMCAtIHRoaXMuX2hlaWdodCAvIDIpXG4gICAgICAgICAgLmF0dHIoJ2R5JywgYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJzEycHgnIDogJy0zcHgnKVxuICAgICAgICAgIC5zdHlsZSgndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAgICAgICAudGV4dChheGlzLm9wdGlvbnMudGl0bGUgPz8gJycpO1xuXG4gICAgICAgIGF4ZXNcbiAgICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAneS1heGlzIGZvbnQtY2FwdGlvbicpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEteS1zY2FsZS1pZCcsIGF4aXMuaW5kZXgpXG4gICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZSlcbiAgICAgICAgICAuY2FsbCh5QXhpcylcbiAgICAgICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgICAgIC5jYWxsKChfKSA9PiB7XG4gICAgICAgICAgICBfLnNlbGVjdCgnLmRvbWFpbicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgXy5zZWxlY3RBbGwoJy50aWNrJykuYXR0cignY2xhc3MnLCAnY29sb3ItdGV4dC01MCcpO1xuXG4gICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKSB7XG4gICAgICAgICAgICAgIF8uYXBwZW5kKCdsaW5lJylcbiAgICAgICAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AgLVxuICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICBgdHJhbnNsYXRlKCR7MH0sICR7dGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wfSlgXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgMC41KVxuICAgICAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtNTApJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
1337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnQvY2hhcnQvY29yZS9jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBZSxZQUFZLEVBQWlCLE1BQU0sSUFBSSxDQUFDO0FBQzlELE9BQU8sS0FBSyxZQUFZLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUszRCxNQUFNLE9BQU8sU0FBUztJQTZEcEIsWUFBWSxPQUFxQixFQUFFLE9BQW1CO1FBckQ5QyxtQkFBYyxHQUFrQyxJQUFJLE9BQU8sRUFFaEUsQ0FBQztRQUNJLG1CQUFjLEdBQWtDLElBQUksT0FBTyxFQUVoRSxDQUFDO1FBRUksZ0JBQVcsR0FBMkMsSUFBSSxPQUFP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QUksSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDekQsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7YUFDbkU7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQzFDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuRCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVuQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFcEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRS9ELFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRSxJ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QVcsRUFDWCxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FDL0M7NkJBQ0EsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUM7NkJBQzFCLEtBQUssQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztxQkFDNUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIHpvb21JZGVudGl0eSwgWm9vbVRyYW5zZm9ybSB9IGZyb20gJ2QzJztcbmltcG9ydCAqIGFzIGQzYW5ub3RhdGlvbiBmcm9tICdkMy1zdmctYW5ub3RhdGlvbic7XG5pbXBvcnQgeyBTY2FsZSB9IGZyb20gJy4uL21vZGVsL2VudW0vc2NhbGUnO1xuaW1wb3J0IHsgQ2hhcnRPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWwvY2hhcnQtb3B0aW9ucyc7XG5pbXBvcnQgeyBBeGlzT3B0aW9ucyB9IGZyb20gJy4uL21vZGVsL2F4aXMtb3B0aW9ucyc7XG5pbXBvcnQgeyBTZXJpZXMgfSBmcm9tICcuLi9tb2RlbC9zZXJpZXMnO1xuaW1wb3J0IHsgQmFzZVBvaW50IH0gZnJvbSAnLi4vbW9kZWwvcG9pbnQvYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBTZXJpZXNUeXBlIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9zZXJpZXMtdHlwZSc7XG5pbXBvcnQgeyBkZWZhdWx0RHJhd2VyTWFwcGluZyB9IGZyb20gJy4uL2RyYXdlci9kZWZhdWx0LWRyYXdlci1tYXBwaW5nJztcbmltcG9ydCB7IGRlZmF1bHRMZWdlbmREcmF3ZXJNYXBwaW5nIH0gZnJvbSAnLi4vbGVnZW5kLWRyYXdlci9kZWZhdWx0LWRyYXdlci1sZWdlbmQtbWFwcGluZyc7XG5pbXBvcnQgeyBMZWdlbmRUeXBlIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9sZWdlbmQtdHlwZSc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi9heGlzLWNyZWF0b3InO1xuaW1wb3J0IHsgQXhpc1R5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtdHlwZSc7XG5pbXBvcnQgeyBQbG90TGluZSB9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQgeyBQbG90QmFuZCB9IGZyb20gJy4uL21vZGVsL3Bsb3QtYmFuZCc7XG5pbXBvcnQgeyBTY2FsZVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGUnO1xuaW1wb3J0IHsgWm9vbVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBJRHJhZ0V2ZW50IH0gZnJvbSAnLi4vbW9kZWwvaS1kcmFnLWV2ZW50JztcbmltcG9ydCB7IERpc3BhdGNoVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vZGlzcGF0Y2gtdHlwZSc7XG5pbXBvcnQgeyBJWm9vbUV2ZW50IH0gZnJvbSAnLi4vbW9kZWwvaS16b29tLWV2ZW50JztcblxudHlwZSBDaGFydFNpemUgPSB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG5cbmV4cG9ydCBjbGFzcyBUZXRhQ2hhcnQge1xuICBwbG90TGluZXNNb3ZlOiBPYnNlcnZhYmxlPElEcmFnRXZlbnQ8UGxvdExpbmU+PjtcbiAgcGxvdEJhbmRzTW92ZTogT2JzZXJ2YWJsZTxJRHJhZ0V2ZW50PFBsb3RCYW5kPj47XG5cbiAgem9vbTogT2JzZXJ2YWJsZTxJWm9vbUV2ZW50PjtcbiAgc2VyaWVzTW92ZTogT2JzZXJ2YWJsZTxJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+Pj47XG4gIHBvaW50TW92ZTogT2JzZXJ2YWJsZTxJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+Pj47XG5cbiAgcHJpdmF0ZSBwbG90TGluZXNNb3ZlJDogU3ViamVjdDxJRHJhZ0V2ZW50PFBsb3RMaW5lPj4gPSBuZXcgU3ViamVjdDxcbiAgICBJRHJhZ0V2ZW50PFBsb3RMaW5lPlxuICA+KCk7XG4gIHByaXZhdGUgcGxvdEJhbmRzTW92ZSQ6IFN1YmplY3Q8SURyYWdFdmVudDxQbG90QmFuZD4+ID0gbmV3IFN1YmplY3Q8XG4gICAgSURyYWdFdmVudDxQbG90QmFuZD5cbiAgPigpO1xuXG4gIHByaXZhdGUgc2VyaWVzTW92ZSQ6IFN1YmplY3Q8SURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj4+ID0gbmV3IFN1YmplY3Q8XG4gICAgSURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj5cbiAgPigpO1xuICBwcml2YXRlIHBvaW50TW92ZSQ6IFN1YmplY3Q8SURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj4+ID0gbmV3IFN1YmplY3Q8XG4gICAgSURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj5cbiAgPigpO1xuXG4gIHByaXZhdGUgem9vbSQ6IFN1YmplY3Q8SVpvb21FdmVudD4gPSBuZXcgU3ViamVjdDxJWm9vbUV2ZW50PigpO1xuXG4gIHByaXZhdGUgX2NvbnRhaW5lcjogRWxlbWVudFJlZiA9IG51bGw7XG4gIHByaXZhdGUgX2NhbnZhczogYW55O1xuICBwcml2YXRlIF93aWR0aCA9IDA7XG4gIHByaXZhdGUgX2hlaWdodCA9IDA7XG5cbiAgcHJpdmF0ZSBfem9vbVlDYWNoZTogTWFwPG51bWJlciwgWm9vbVRyYW5zZm9ybT4gPSBuZXcgTWFwPFxuICAgIG51bWJlcixcbiAgICBab29tVHJhbnNmb3JtXG4gID4oKTtcblxuICBwcml2YXRlIF96b29tWENhY2hlOiBNYXA8bnVtYmVyLCBab29tVHJhbnNmb3JtPiA9IG5ldyBNYXA8XG4gICAgbnVtYmVyLFxuICAgIFpvb21UcmFuc2Zvcm1cbiAgPigpO1xuXG4gIHByaXZhdGUgX3pvb20gPSBkMy56b29tKCk7XG4gIHByaXZhdGUgX2NvbW1vblpvb21UcmFuc2Zvcm06IFpvb21UcmFuc2Zvcm07XG5cbiAgcHJpdmF0ZSB2aXNpYmxlQ2hhcnRXaW5kb3dXaWR0aCA9IDA7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uczogQ2hhcnRPcHRpb25zO1xuICBwcml2YXRlIF94QXhpc0xpc3Q6IEF4aXNbXTtcbiAgcHJpdmF0ZSBfeUF4aXNMaXN0OiBBeGlzW107XG4gIHByaXZhdGUgX3hTY2FsZXM6IE1hcDxudW1iZXIsIGFueT4gPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuICBwcml2YXRlIF95U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+ID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcblxuICBwcml2YXRlIF9jbG9uZWRYID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcbiAgcHJpdmF0ZSBfY2xvbmVkWSA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG5cbiAgcHJpdmF0ZSBfY2hhcnQ6IGQzLlNlbGVjdGlvbjxhbnksIHVua25vd24sIG51bGwsIHVuZGVmaW5lZD47XG5cbiAgcHJpdmF0ZSBvZmZzZXRPcHBvc2l0ZSA9IDA7XG4gIHByaXZhdGUgb2Zmc2V0Tm9uT3Bwb3NpdGUgPSAwO1xuXG4gIHByaXZhdGUgdW5pcUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3pvb21BZGRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENoYXJ0T3B0aW9ucywgZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0Tm9kZShlbGVtZW50KTtcbiAgICB0aGlzLmNyZWF0ZVRvb2x0aXAoKTtcblxuICAgIHRoaXMucGxvdExpbmVzTW92ZSA9IHRoaXMucGxvdExpbmVzTW92ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wbG90QmFuZHNNb3ZlID0gdGhpcy5wbG90QmFuZHNNb3ZlJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnNlcmllc01vdmUgPSB0aGlzLnNlcmllc01vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMucG9pbnRNb3ZlID0gdGhpcy5wb2ludE1vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuem9vbSA9IHRoaXMuem9vbSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KG9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVBeGlzKCk7XG4gICAgdGhpcy5jcmVhdGVTY2FsZXMoKTtcbiAgICB0aGlzLmNyZWF0ZU1hcmtlcnMoKTtcbiAgICB0aGlzLmNyZWF0ZVZpc2libGVXaW5kb3coKTtcbiAgICB0aGlzLl9yZWRyYXcoKTtcbiAgICB0aGlzLmRyYXdMZWdlbmQoKTtcblxuICAgIGlmICh0aGlzLl9jb21tb25ab29tVHJhbnNmb3JtKSB7XG4gICAgICB0aGlzLl9jaGFydC5jYWxsKHRoaXMuX3pvb20udHJhbnNmb3JtLCB0aGlzLl9jb21tb25ab29tVHJhbnNmb3JtKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3pvb21BZGRlZCkge1xuICAgICAgdGhpcy5hZGRab29tKCk7XG4gICAgICB0aGlzLl96b29tQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQXhlc1pvb20oKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRab29tKHpvb206IElab29tRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuX3pvb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFydC5jYWxsKHRoaXMuX3pvb20udHJhbnNmb3JtLCB6b29tPy56b29tVHJhbnNmb3JtID8/IHpvb21JZGVudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2l6ZShzaXplOiBDaGFydFNpemUgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSkge1xuICAgIHRoaXMuX2hlaWdodCA9IHNpemUuaGVpZ2h0O1xuICAgIHRoaXMuX3dpZHRoID0gc2l6ZS53aWR0aDtcblxuICAgIHRoaXMuX2NoYXJ0LmF0dHIoJ3dpZHRoJywgdGhpcy5fd2lkdGgpLmF0dHIoJ2hlaWdodCcsIHRoaXMuX2hlaWdodCk7XG4gICAgdGhpcy5fY2FudmFzLmF0dHIoJ3dpZHRoJywgdGhpcy5fd2lkdGgpLmF0dHIoJ2hlaWdodCcsIHRoaXMuX2hlaWdodCk7XG5cbiAgICBjb25zdCBleHRlbnQgPSBbXG4gICAgICBbXG4gICAgICAgIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgICA/IHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgICA6IHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQsXG4gICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHRoaXMuX3dpZHRoIC1cbiAgICAgICAgICAodGhpcy5vZmZzZXRPcHBvc2l0ZVxuICAgICAgICAgICAgPyB0aGlzLm9mZnNldE9wcG9zaXRlXG4gICAgICAgICAgICA6IHRoaXMuX29wdGlvbnMuYm91bmRzLnJpZ2h0KSxcbiAgICAgICAgdGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tLFxuICAgICAgXSxcbiAgICBdIGFzIGFueTtcblxuICAgIHRoaXMuX3pvb21cbiAgICAgIC5zY2FsZUV4dGVudChbMSwgSW5maW5pdHldKVxuICAgICAgLnRyYW5zbGF0ZUV4dGVudChleHRlbnQpXG4gICAgICAuZXh0ZW50KGV4dGVudCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpc2libGVXaW5kb3coKSB7XG4gICAgdGhpcy51bmlxSWQgPSAoRGF0ZS5ub3coKSArIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KTtcblxuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnZGVmcycpLnJlbW92ZSgpO1xuXG4gICAgdGhpcy5fY2hhcnRcbiAgICAgIC5hcHBlbmQoJ2RlZnMnKVxuICAgICAgLmFwcGVuZCgnY2xpcFBhdGgnKVxuICAgICAgLmF0dHIoJ2lkJywgYGRyYXctd2luZG93LSR7dGhpcy51bmlxSWR9YClcbiAgICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgICAgLmF0dHIoXG4gICAgICAgICd4JyxcbiAgICAgICAgdGhpcy5vZmZzZXROb25PcHBvc2l0ZSA9PT0gMFxuICAgICAgICAgID8gdGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdFxuICAgICAgICAgIDogdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgKVxuICAgICAgLmF0dHIoJ3knLCB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3ApXG4gICAgICAuYXR0cignd2lkdGgnLCB0aGlzLnZpc2libGVDaGFydFdpbmRvd1dpZHRoICsgMSlcbiAgICAgIC5hdHRyKFxuICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgdGhpcy5faGVpZ2h0IC1cbiAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b20gLVxuICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCArXG4gICAgICAgICAgMSA+XG4gICAgICAgICAgMFxuICAgICAgICAgID8gdGhpcy5faGVpZ2h0IC1cbiAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tIC1cbiAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wICtcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgIDogMFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXhpcygpIHtcbiAgICB0aGlzLl94QXhpc0xpc3QgPSB0aGlzLl9vcHRpb25zLnhBeGlzLm1hcChcbiAgICAgIChfLCBpbmRleCkgPT5cbiAgICAgICAgbmV3IEF4aXMoe1xuICAgICAgICAgIHR5cGU6IEF4aXNUeXBlLmFic2Npc3NhLFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIGNoYXJ0T3B0aW9uczogdGhpcy5fb3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5feUF4aXNMaXN0ID0gdGhpcy5fb3B0aW9ucy55QXhpcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBheGlzID0gbmV3IEF4aXMoe1xuICAgICAgICB0eXBlOiBBeGlzVHlwZS5vcmRpbmF0dXMsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBjaGFydE9wdGlvbnM6IHRoaXMuX29wdGlvbnMsXG4gICAgICAgIGhlaWdodDogdGhpcy5faGVpZ2h0LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYXhpcztcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vblRpdGxlT2Zmc2V0ID0gNjtcblxuICAgIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGUgPSBkMy5yZWR1Y2UoXG4gICAgICB0aGlzLl95QXhpc0xpc3QuZmlsdGVyKFxuICAgICAgICAoXykgPT4gXy5vcHRpb25zPy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnM/LnZpc2libGVcbiAgICAgICksXG4gICAgICAoc3VtLCBheGlzKSA9PiB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgICAgc3VtICtcbiAgICAgICAgICBheGlzLndpZHRoICtcbiAgICAgICAgICAoYXhpcz8ub3B0aW9ucz8udGl0bGUgPyBBeGlzLm9mZnNldEZhY3RvciA6IG5vblRpdGxlT2Zmc2V0KTtcbiAgICAgICAgYXhpcy5zZXRPZmZzZXQob2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH0sXG4gICAgICAwXG4gICAgKTtcblxuICAgIHRoaXMub2Zmc2V0T3Bwb3NpdGUgPSBkMy5yZWR1Y2UoXG4gICAgICB0aGlzLl95QXhpc0xpc3QuZmlsdGVyKFxuICAgICAgICAoXykgPT4gXy5vcHRpb25zPy5vcHBvc2l0ZSA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnM/LnZpc2libGVcbiAgICAgICksXG4gICAgICAoc3VtLCBheGlzKSA9PiB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgICAgc3VtICtcbiAgICAgICAgICBheGlzLndpZHRoICtcbiAgICAgICAgICAoYXhpcz8ub3B0aW9ucz8udGl0bGUgPyBBeGlzLm9mZnNldEZhY3RvciA6IG5vblRpdGxlT2Zmc2V0KTtcbiAgICAgICAgYXhpcy5zZXRPZmZzZXQob2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH0sXG4gICAgICAwXG4gICAgKTtcblxuICAgIHRoaXMudmlzaWJsZUNoYXJ0V2luZG93V2lkdGggPSB0aGlzLmNhbHVjbGF0ZUNoYXJ0V2lkdGgoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZHJhdygpIHtcbiAgICB0aGlzLmRyYXdQbG90QmFuZHMoKTtcbiAgICB0aGlzLmRyYXdQbG90TGluZXMoKTtcblxuICAgIHRoaXMuZHJhd0NoYXJ0KCk7XG4gICAgdGhpcy5kcmF3QXhpcygpO1xuICAgIHRoaXMuZHJhd0dyaWRMaW5lcygpO1xuXG4gICAgdGhpcy5kcmF3QW5ub3RhdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkWm9vbSgpIHtcbiAgICBpZiAodGhpcy5fb3B0aW9ucz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICBjb25zdCBoYXNYWm9vbSA9IFtab29tVHlwZS54LCBab29tVHlwZS54eV0uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuX29wdGlvbnMuem9vbS56b29tVHlwZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGhhc1lab29tID0gW1pvb21UeXBlLnksIFpvb21UeXBlLnh5XS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5fb3B0aW9ucy56b29tLnpvb21UeXBlXG4gICAgICApO1xuXG4gICAgICB0aGlzLl9jaGFydC5jYWxsKFxuICAgICAgICB0aGlzLl96b29tLm9uKCdzdGFydCBlbmQgem9vbScsIChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChoYXNYWm9vbSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5fY2xvbmVkWC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzY2FsZWQgPSBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVgodmFsdWUpO1xuICAgICAgICAgICAgICB0aGlzLl94U2NhbGVzLnNldChrZXksIHJlc2NhbGVkKTtcblxuICAgICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvb20kLm5leHQoe1xuICAgICAgICAgICAgICAgICAgZG9tYWluOiByZXNjYWxlZC5kb21haW4oKSxcbiAgICAgICAgICAgICAgICAgIHpvb21UcmFuc2Zvcm06IGV2ZW50LnRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgICAgIHpvb21UeXBlOiBab29tVHlwZS54LFxuICAgICAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaGFzWVpvb20pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuX2Nsb25lZFkuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc2NhbGVkID0gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVZKHZhbHVlKTtcbiAgICAgICAgICAgICAgdGhpcy5feVNjYWxlcy5zZXQoa2V5LCByZXNjYWxlZCk7XG5cbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd6b29tJykge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2VFdmVudCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy56b29tJC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluOiByZXNjYWxlZC5kb21haW4oKSxcbiAgICAgICAgICAgICAgICAgICAgem9vbVRyYW5zZm9ybTogZXZlbnQudHJhbnNmb3JtLFxuICAgICAgICAgICAgICAgICAgICB6b29tVHlwZTogWm9vbVR5cGUueSxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbW1vblpvb21UcmFuc2Zvcm0gPSBldmVudC50cmFuc2Zvcm07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcmVkcmF3KCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQXhlc1pvb20oKSB7XG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcuem9vbS1iZWhhdmlvcicpLnJlbW92ZSgpO1xuXG4gICAgWy4uLnRoaXMuX3lBeGlzTGlzdCwgLi4udGhpcy5feEF4aXNMaXN0XVxuICAgICAgLmZpbHRlcigoYXhpcykgPT4gYXhpcy5vcHRpb25zLnZpc2libGUgJiYgYXhpcy5vcHRpb25zLnpvb20pXG4gICAgICAuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICBjb25zdCBmb3VuZE5vZGUgPSB0aGlzLl9jaGFydFxuICAgICAgICAgIC5zZWxlY3QoXG4gICAgICAgICAgICBgW2RhdGEtJHtheGlzLnR5cGUgPT09IEF4aXNUeXBlLmFic2Npc3NhID8gJ3gnIDogJ3knfS1zY2FsZS1pZD0nJHtcbiAgICAgICAgICAgICAgYXhpcy5pbmRleFxuICAgICAgICAgICAgfSddYFxuICAgICAgICAgIClcbiAgICAgICAgICAubm9kZSgpIGFzIGFueTtcblxuICAgICAgICBpZiAoIWZvdW5kTm9kZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJCb3ggPSBmb3VuZE5vZGUuZ2V0QkJveCgpO1xuXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZVggPVxuICAgICAgICAgIGF4aXMudHlwZSA9PT0gQXhpc1R5cGUuYWJzY2lzc2FcbiAgICAgICAgICAgID8gdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgICAgICAgICA/IHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zLmJvdW5kcy5sZWZ0ICsgdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgICAgICAgOiBheGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgICAgID8gdGhpcy5fd2lkdGggLSBheGlzLm9mZnNldFxuICAgICAgICAgICAgOiBheGlzLm9mZnNldCAtIGJCb3gud2lkdGg7XG5cbiAgICAgICAgY29uc3Qgem9vbSA9IGQzXG4gICAgICAgICAgLnpvb20oKVxuICAgICAgICAgIC5zY2FsZUV4dGVudChbMSwgSW5maW5pdHldKVxuICAgICAgICAgIC5vbignem9vbSBlbmQnLCAoZXZlbnQ6IEQzWm9vbUV2ZW50PGFueSwgYW55PikgPT4ge1xuICAgICAgICAgICAgaWYgKGF4aXMudHlwZSA9PT0gQXhpc1R5cGUuYWJzY2lzc2EpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLl9jbG9uZWRYLmdldChheGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgdGhpcy5feFNjYWxlcy5zZXQoYXhpcy5pbmRleCwgZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKHNjYWxlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuX2Nsb25lZFkuZ2V0KGF4aXMuaW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLl95U2NhbGVzLnNldChheGlzLmluZGV4LCBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkoc2NhbGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgICAgIGlmIChheGlzLnR5cGUgPT09IEF4aXNUeXBlLm9yZGluYXR1cykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3pvb21ZQ2FjaGUuc2V0KGF4aXMuaW5kZXgsIGV2ZW50LnRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoYXhpcy50eXBlID09PSBBeGlzVHlwZS5hYnNjaXNzYSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3pvb21YQ2FjaGUuc2V0KGF4aXMuaW5kZXgsIGV2ZW50LnRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhcnQuY2FsbCh0aGlzLl96b29tLnRyYW5zZm9ybSwgZXZlbnQudHJhbnNmb3JtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9yZWRyYXcoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXN0b3JlZFRyYW5zZm9ybTogWm9vbVRyYW5zZm9ybSA9XG4gICAgICAgICAgYXhpcy50eXBlID09PSBBeGlzVHlwZS5vcmRpbmF0dXNcbiAgICAgICAgICAgID8gdGhpcy5fem9vbVlDYWNoZS5nZXQoYXhpcy5pbmRleClcbiAgICAgICAgICAgIDogdGhpcy5fem9vbVhDYWNoZS5nZXQoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnRcbiAgICAgICAgICAuYXBwZW5kKCdyZWN0JylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnem9vbS1iZWhhdmlvcicpXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIGJCb3guaGVpZ2h0KVxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIGJCb3gud2lkdGgpXG4gICAgICAgICAgLmF0dHIoXG4gICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgIGB0cmFuc2xhdGUoJHt0cmFuc2xhdGVYfSwgJHtcbiAgICAgICAgICAgICAgYXhpcy50eXBlID09PSBBeGlzVHlwZS5hYnNjaXNzYVxuICAgICAgICAgICAgICAgID8gdGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3BcbiAgICAgICAgICAgIH0pYFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAnMCcpXG4gICAgICAgICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdhbGwnKVxuICAgICAgICAgIC5jYWxsKHpvb20udHJhbnNmb3JtLCByZXN0b3JlZFRyYW5zZm9ybSA/PyBkMy56b29tSWRlbnRpdHkpXG4gICAgICAgICAgLmNhbGwoem9vbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Tm9kZShlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fY29udGFpbmVyID0gZWxlbWVudDtcblxuICAgIGQzLnNlbGVjdChlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLnNlbGVjdEFsbCgnLnRvb2x0aXAtY2hhcnQnKS5yZW1vdmUoKTtcblxuICAgIGQzLnNlbGVjdChlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLnNlbGVjdEFsbCgnc3ZnJykucmVtb3ZlKCk7XG4gICAgZDMuc2VsZWN0KGVsZW1lbnQubmF0aXZlRWxlbWVudCkuc2VsZWN0QWxsKCdjYW52YXMnKS5yZW1vdmUoKTtcblxuICAgIHRoaXMuX2NoYXJ0ID0gZDNcbiAgICAgIC5zZWxlY3QoZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpXG4gICAgICAuc3R5bGUoJ3otaW5kZXgnLCAwKTtcblxuICAgIHRoaXMuX2NhbnZhcyA9IGQzXG4gICAgICAuc2VsZWN0KGVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgIC5hcHBlbmQoJ2NhbnZhcycpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbWFpbi1jYW52YXMnKVxuICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDM1LCAwKScpXG4gICAgICAuc3R5bGUoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJylcbiAgICAgIC5zdHlsZSgnei1pbmRleCcsIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3QW5ub3RhdGlvbnMoKSB7XG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcuYW5ub3RhdGlvbnMnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5fb3B0aW9ucy5hbm5vdGF0aW9ucz8ubWFwKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCB4ID0gdGhpcy5feFNjYWxlcy5nZXQoYW5ub3RhdGlvbi54QXhpc0luZGV4KTtcbiAgICAgIGNvbnN0IHkgPSB0aGlzLl95U2NhbGVzLmdldChhbm5vdGF0aW9uLnlBeGlzSW5kZXgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBub3RlOiBhbm5vdGF0aW9uLm5vdGUsXG4gICAgICAgIGNvbm5lY3RvcjogYW5ub3RhdGlvbi5jb25uZWN0b3IsXG4gICAgICAgIHg6IHgoYW5ub3RhdGlvbi5wb2ludD8ueCksXG4gICAgICAgIHk6IHkoYW5ub3RhdGlvbi5wb2ludD8ueSksXG4gICAgICAgIGR4OiBhbm5vdGF0aW9uLmR4LFxuICAgICAgICBkeTogYW5ub3RhdGlvbi5keSxcbiAgICAgICAgdHlwZTogYW5ub3RhdGlvbi50eXBlLFxuICAgICAgICBjbGFzc05hbWU6IGFubm90YXRpb24uY2xhc3NOYW1lLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG1ha2VBbm5vdGF0aW9ucyA9IGQzYW5ub3RhdGlvblxuICAgICAgLmFubm90YXRpb24oKVxuICAgICAgLmFubm90YXRpb25zKGFubm90YXRpb25zID8/IFtdKTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdhbm5vdGF0aW9ucycpXG4gICAgICAuYXR0cignY2xpcC1wYXRoJywgYHVybCgjZHJhdy13aW5kb3ctJHt0aGlzLnVuaXFJZH0pYClcbiAgICAgIC5jYWxsKG1ha2VBbm5vdGF0aW9ucyBhcyBhbnkpXG4gICAgICAubG93ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd1Bsb3RMaW5lcygpIHtcbiAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5wbG90bGluZXMnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IHBsb3RsaW5lR3JvdXAgPSB0aGlzLl9jaGFydFxuICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cignY2xhc3MnLCAncGxvdGxpbmVzJylcbiAgICAgIC5zdHlsZSgnc2hhcGUtcmVuZGVyaW5nJywgJ2NyaXNwRWRnZXMnKVxuICAgICAgLmF0dHIoJ2NsaXAtcGF0aCcsIGB1cmwoI2RyYXctd2luZG93LSR7dGhpcy51bmlxSWR9KWApO1xuXG4gICAgdGhpcy5feEF4aXNMaXN0XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMucGxvdExpbmVzLmxlbmd0aCA+IDApXG4gICAgICAuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gYXhpcy5leHRlbnQ7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLl94U2NhbGVzLmdldChheGlzLmluZGV4KTtcblxuICAgICAgICBjb25zdCBwbG90bGluZXNQb2ludHMgPSBheGlzLm9wdGlvbnMucGxvdExpbmVzO1xuXG4gICAgICAgIGNvbnN0IGdldFRleHRDZW50ZXJQb2ludFB4ID0gKGQ6IFBsb3RMaW5lLCBpZHg6IG51bWJlcikgPT5cbiAgICAgICAgICB4KFxuICAgICAgICAgICAgKGQ/LnZhbHVlICtcbiAgICAgICAgICAgICAgKHBsb3RsaW5lc1BvaW50c1tpZHggLSAxXVxuICAgICAgICAgICAgICAgID8gcGxvdGxpbmVzUG9pbnRzW2lkeCAtIDFdPy52YWx1ZVxuICAgICAgICAgICAgICAgIDogMCkpIC9cbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IChkOiBQbG90TGluZSwgaWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5V2lkdGggPSAyMDtcblxuICAgICAgICAgIGNvbnN0IHdpZHRoID1cbiAgICAgICAgICAgIHgoZD8udmFsdWUpIC1cbiAgICAgICAgICAgIHgocGxvdGxpbmVzUG9pbnRzW2lkeCAtIDFdID8gcGxvdGxpbmVzUG9pbnRzW2lkeCAtIDFdPy52YWx1ZSA6IDApO1xuICAgICAgICAgIHJldHVybiB3aWR0aCA8PSBkaXNwbGF5V2lkdGggPyAwIDogMTtcbiAgICAgICAgfTtcblxuICAgICAgICBwbG90bGluZUdyb3VwXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLmxhYmVsJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ3RleHQnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsYWJlbCBmb250LWJvZHktMyBmaWxsLXRleHQtNzAnKVxuICAgICAgICAgIC5hdHRyKCd4JywgZ2V0VGV4dENlbnRlclBvaW50UHgpXG4gICAgICAgICAgLmF0dHIoJ3knLCAoZCkgPT4gdGhpcy5faGVpZ2h0IC8gMilcbiAgICAgICAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAgICAgICAuYXR0cignZG9taW5hbnQtYmFzZWxpbmUnLCAnY2VudHJhbCcpXG4gICAgICAgICAgLmF0dHIoXG4gICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgIChkLCBpZHgpID0+XG4gICAgICAgICAgICAgIGByb3RhdGUoLTkwLCAke2dldFRleHRDZW50ZXJQb2ludFB4KGQsIGlkeCl9LCAke1xuICAgICAgICAgICAgICAgIHRoaXMuX2hlaWdodCAvIDJcbiAgICAgICAgICAgICAgfSlgXG4gICAgICAgICAgKVxuICAgICAgICAgIC50ZXh0KChkKSA9PiBkPy5sYWJlbCA/PyAnJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCBvcGFjaXR5KTtcblxuICAgICAgICBwbG90bGluZUdyb3VwXG4gICAgICAgICAgLnNlbGVjdEFsbCgnLnBsb3RsaW5lJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdwbG90bGluZScpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtcGxvdGxpbmUtaWQnLCAoZCkgPT4gZC5pZClcbiAgICAgICAgICAuYXR0cigneDEnLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneDInLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIChkKSA9PiBkLndpZHRoKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgKGQpID0+IGQuY29sb3IpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgKGQpID0+IChkLmRhc2hlZCA/ICc4LCA4JyA6ICcwLCAwJykpO1xuXG4gICAgICAgIGNvbnN0IGVtaXQgPSAoZXZlbnQ6IERyYWdFdmVudCwgcGxvdExpbmU6IFBsb3RMaW5lKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbG90TGluZXNNb3ZlJC5uZXh0KHsgZXZlbnQsIHRhcmdldDogcGxvdExpbmUgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGxvdGxpbmVHcm91cFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLXBsb3RsaW5lJylcbiAgICAgICAgICAuZGF0YShwbG90bGluZXNQb2ludHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdkcmFnLXBsb3RsaW5lJylcbiAgICAgICAgICAuYXR0cigneDEnLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneDInLCAoZCkgPT4geChkLnZhbHVlKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAncmdiYSgwLCAwLCAwLCAwKScpXG4gICAgICAgICAgLnN0eWxlKCdjdXJzb3InLCAnY29sLXJlc2l6ZScpXG4gICAgICAgICAgLmNhbGwoXG4gICAgICAgICAgICBkM1xuICAgICAgICAgICAgICAuZHJhZygpXG4gICAgICAgICAgICAgIC5vbignZHJhZycsIGZ1bmN0aW9uIChldmVudCwgZDogUGxvdExpbmUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGQzLnNlbGVjdCh0aGlzKS5ub2RlKCkucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRQbG90TGluZSA9IGQzXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGdyb3VwKVxuICAgICAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtcGxvdGxpbmUtaWQ9JyR7ZC5pZH0nXWApO1xuXG4gICAgICAgICAgICAgICAgZC52YWx1ZSA9IHguaW52ZXJ0KGV2ZW50LngpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbWluVmFsdWUgPSBkLm1pbiA/PyBtaW47XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJMZWZ0UmVhY2hlZCA9IGQudmFsdWUgPD0gbWluVmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyUmlnaHRSZWFjaGVkID0gZC52YWx1ZSA+PSBtYXhWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChib3JkZXJMZWZ0UmVhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgZC52YWx1ZSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChib3JkZXJSaWdodFJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgIGQudmFsdWUgPSBtYXhWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkMy5zZWxlY3QodGhpcykuYXR0cigneDEnLCB4KGQudmFsdWUpKS5hdHRyKCd4MicsIHgoZC52YWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFBsb3RMaW5lLmF0dHIoJ3gxJywgeChkLnZhbHVlKSkuYXR0cigneDInLCB4KGQudmFsdWUpKTtcblxuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAub24oJ2VuZCcsIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90TGluZSkgPT4ge1xuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgICAgICB9KSBhcyBhbnlcbiAgICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl95QXhpc0xpc3RcbiAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5wbG90TGluZXMubGVuZ3RoID4gMClcbiAgICAgIC5mb3JFYWNoKChheGlzKSA9PiB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBheGlzLmV4dGVudDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuX3lTY2FsZXMuZ2V0KGF4aXMuaW5kZXgpO1xuXG4gICAgICAgIGNvbnN0IHBsb3RsaW5lc1BvaW50cyA9IGF4aXMub3B0aW9ucy5wbG90TGluZXM7XG5cbiAgICAgICAgcGxvdGxpbmVHcm91cFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5wbG90bGluZScpXG4gICAgICAgICAgLmRhdGEocGxvdGxpbmVzUG9pbnRzKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAncGxvdGxpbmUnKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLXBsb3RsaW5lLWlkJywgKGQpID0+IGQuaWQpXG4gICAgICAgICAgLmF0dHIoJ3kxJywgKGQpID0+IHkoZC52YWx1ZSkpXG4gICAgICAgICAgLmF0dHIoJ3kyJywgKGQpID0+IHkoZC52YWx1ZSkpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgMClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd4MicsXG4gICAgICAgICAgICB0aGlzLl93aWR0aCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5yaWdodFxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3RoaXMuX29wdGlvbnMuYm91bmRzLmxlZnR9LCAwKWApXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAoZCkgPT4gZC53aWR0aClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsIChkKSA9PiBkLmNvbG9yKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIChkKSA9PiAoZC5kYXNoZWQgPyAnOCwgOCcgOiAnMCwgMCcpKTtcblxuICAgICAgICBjb25zdCBlbWl0ID0gKGV2ZW50OiBEcmFnRXZlbnQsIHBsb3RMaW5lOiBQbG90TGluZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGxvdExpbmVzTW92ZSQubmV4dCh7IGV2ZW50LCB0YXJnZXQ6IHBsb3RMaW5lIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBsb3RsaW5lR3JvdXBcbiAgICAgICAgICAuc2VsZWN0QWxsKCcuZHJhZy1wbG90bGluZScpXG4gICAgICAgICAgLmRhdGEocGxvdGxpbmVzUG9pbnRzKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnZHJhZy1wbG90bGluZScpXG4gICAgICAgICAgLmF0dHIoJ3kxJywgKGQpID0+IHkoZC52YWx1ZSkpXG4gICAgICAgICAgLmF0dHIoJ3kyJywgKGQpID0+IHkoZC52YWx1ZSkpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgMClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd4MicsXG4gICAgICAgICAgICB0aGlzLl93aWR0aCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5yaWdodFxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3RoaXMuX29wdGlvbnMuYm91bmRzLmxlZnR9LCAwKWApXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCA4KVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3JnYmEoMCwgMCwgMCwgMCknKVxuICAgICAgICAgIC5zdHlsZSgnY3Vyc29yJywgJ3Jvdy1yZXNpemUnKVxuICAgICAgICAgIC5jYWxsKFxuICAgICAgICAgICAgZDNcbiAgICAgICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgICAgICAub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZlbnQsIGQ6IFBsb3RMaW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBkMy5zZWxlY3QodGhpcykubm9kZSgpLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnZ2VkUGxvdExpbmUgPSBkM1xuICAgICAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoYFtkYXRhLXBsb3RsaW5lLWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgICAgIGQudmFsdWUgPSB5LmludmVydChldmVudC55KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFZhbHVlID0gZC5tYXggPz8gbWF4O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyVG9wUmVhY2hlZCA9IGQudmFsdWUgPD0gbWluVmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyQm90dG9tUmVhY2hlZCA9IGQudmFsdWUgPj0gbWF4VmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoYm9yZGVyVG9wUmVhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgZC52YWx1ZSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChib3JkZXJCb3R0b21SZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgICBkLnZhbHVlID0gbWF4VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3kxJywgeShkLnZhbHVlKSkuYXR0cigneTInLCB5KGQudmFsdWUpKTtcblxuICAgICAgICAgICAgICAgIGRyYWdnZWRQbG90TGluZS5hdHRyKCd5MScsIHkoZC52YWx1ZSkpLmF0dHIoJ3kyJywgeShkLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdExpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKTtcbiAgICAgICAgICAgICAgfSkgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3UGxvdEJhbmRzKCkge1xuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLnBsb3RiYW5kcycpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgcGxvdEJhbmRHcm91cCA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdwbG90YmFuZHMnKVxuICAgICAgLmF0dHIoJ2NsaXAtcGF0aCcsIGB1cmwoI2RyYXctd2luZG93LSR7dGhpcy51bmlxSWR9KWApO1xuXG4gICAgdGhpcy5feEF4aXNMaXN0XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMucGxvdEJhbmRzLmxlbmd0aCA+IDApXG4gICAgICAuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5feFNjYWxlcy5nZXQoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGF4aXMuZXh0ZW50O1xuXG4gICAgICAgIGNvbnN0IHBsb3RiYW5kID0gcGxvdEJhbmRHcm91cFxuICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgIC5zdHlsZSgnc2hhcGUtcmVuZGVyaW5nJywgJ2NyaXNwRWRnZXMnKTtcblxuICAgICAgICBjb25zdCBwbG90QmFuZEhlaWdodCA9XG4gICAgICAgICAgdGhpcy5faGVpZ2h0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wIC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMuYm90dG9tO1xuXG4gICAgICAgIGNvbnN0IGVtaXQgPSAoZXZlbnQ6IERyYWdFdmVudCwgcGxvdEJhbmQ6IFBsb3RCYW5kKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbG90QmFuZHNNb3ZlJC5uZXh0KHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiBwbG90QmFuZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJ3JlY3QnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMpXG4gICAgICAgICAgLm9uKCdzdGFydCcsIChfKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5tYXJrZXInKS5zdHlsZSgnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgIC5zZWxlY3QoJy50b29sdGlwLWNoYXJ0JylcbiAgICAgICAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5qb2luKCdyZWN0JylcbiAgICAgICAgICAuYXR0cignZGF0YS1wbG90YmFuZC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCd4JywgKGQpID0+IHgoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneScsIDApXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgKGQpID0+IE1hdGguYWJzKHgoZC50bykgLSB4KGQuZnJvbSkpKVxuICAgICAgICAgIC5hdHRyKCdmaWxsJywgKGQpID0+IHtcbiAgICAgICAgICAgIGlmIChkLmltYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBgdXJsKCMke2QuaW1hZ2V9KWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZC5jb2xvcjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zdHlsZSgnb3BhY2l0eScsIChkKSA9PiBkLm9wYWNpdHkgPz8gMSlcbiAgICAgICAgICAuYXR0cignaGVpZ2h0JywgcGxvdEJhbmRIZWlnaHQgPiAwID8gcGxvdEJhbmRIZWlnaHQgOiAwKVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7dGhpcy5fb3B0aW9ucy5ib3VuZHMudG9wfSlgKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5saW5lLWxlZnQnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLWxpbmUtbGVmdC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lLWxlZnQnKVxuICAgICAgICAgIC5hdHRyKCd4MScsIChkKSA9PiB4KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3gyJywgKGQpID0+IHgoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDEpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgJzgsIDgnKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtOTApJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAoZCkgPT4gKGQuc2hvd0dyYWJiZXJzID8gMSA6IDApKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLWxlZnQnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCd4MScsIChkKSA9PiB4KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3gyJywgKGQpID0+IHgoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAncmdiYSgwLCAwLCAwLCAwKScpXG4gICAgICAgICAgLnN0eWxlKCdjdXJzb3InLCAnY29sLXJlc2l6ZScpXG4gICAgICAgICAgLmNhbGwoXG4gICAgICAgICAgICBkM1xuICAgICAgICAgICAgICAuZHJhZygpXG4gICAgICAgICAgICAgIC5vbignZHJhZycsIGZ1bmN0aW9uIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90QmFuZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZDMuc2VsZWN0KHRoaXMpLm5vZGUoKS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRCYW5kID0gZDNcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGBbZGF0YS1wbG90YmFuZC1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnZ2VkTGluZSA9IGQzXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGdyb3VwKVxuICAgICAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1sZWZ0LWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgICAgIGQuZnJvbSA9IHguaW52ZXJ0KGV2ZW50LngpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbWluVmFsdWUgPSBkLm1pbiA/PyBtaW47XG5cbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkID0gZC5mcm9tIDw9IG1pblZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJvcmRlclJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgIGQuZnJvbSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkLmZyb20gPj0gZC50bykge1xuICAgICAgICAgICAgICAgICAgZC5mcm9tID0gZC50bztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkMy5zZWxlY3QodGhpcykuYXR0cigneDEnLCB4KGQuZnJvbSkpLmF0dHIoJ3gyJywgeChkLmZyb20pKTtcblxuICAgICAgICAgICAgICAgIGRyYWdnZWRCYW5kXG4gICAgICAgICAgICAgICAgICAuYXR0cigneCcsIHgoZC5mcm9tKSlcbiAgICAgICAgICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIHgoZC50bykgLSB4KGQuZnJvbSkpO1xuXG4gICAgICAgICAgICAgICAgZHJhZ2dlZExpbmUuYXR0cigneDEnLCB4KGQuZnJvbSkpLmF0dHIoJ3gyJywgeChkLmZyb20pKTtcblxuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAub24oJ2VuZCcsIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90QmFuZCkgPT5cbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKVxuICAgICAgICAgICAgICApIGFzIGFueVxuICAgICAgICAgICk7XG5cbiAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAuc2VsZWN0QWxsKCcubGluZS1yaWdodCcpXG4gICAgICAgICAgLmRhdGEoYXhpcy5vcHRpb25zLnBsb3RCYW5kcylcbiAgICAgICAgICAuam9pbignbGluZScpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtbGluZS1yaWdodC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lLXJpZ2h0JylcbiAgICAgICAgICAuYXR0cigneDEnLCAoZCkgPT4geChkLnRvKSlcbiAgICAgICAgICAuYXR0cigneDInLCAoZCkgPT4geChkLnRvKSlcbiAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgIC5hdHRyKFxuICAgICAgICAgICAgJ3kyJyxcbiAgICAgICAgICAgIHRoaXMuX2hlaWdodCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcCAtXG4gICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbVxuICAgICAgICAgIClcbiAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDEpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgJzgsIDgnKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtOTApJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAoZCkgPT4gKGQuc2hvd0dyYWJiZXJzID8gMSA6IDApKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLXJpZ2h0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnZHJhZy1yaWdodCcpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgKGQpID0+IHgoZC50bykpXG4gICAgICAgICAgLmF0dHIoJ3gyJywgKGQpID0+IHgoZC50bykpXG4gICAgICAgICAgLmF0dHIoJ3kxJywgMClcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd5MicsXG4gICAgICAgICAgICB0aGlzLl9oZWlnaHQgLVxuICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AgLVxuICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b21cbiAgICAgICAgICApXG4gICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHt0aGlzLl9vcHRpb25zLmJvdW5kcy50b3B9KWApXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCA4KVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3JnYmEoMCwgMCwgMCwgMCknKVxuICAgICAgICAgIC5zdHlsZSgnY3Vyc29yJywgJ2NvbC1yZXNpemUnKVxuICAgICAgICAgIC5jYWxsKFxuICAgICAgICAgICAgZDNcbiAgICAgICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgICAgICAub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGQzLnNlbGVjdCh0aGlzKS5ub2RlKCkucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRCYW5kID0gZDNcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3QoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGBbZGF0YS1wbG90YmFuZC1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnZ2VkTGluZSA9IGQzXG4gICAgICAgICAgICAgICAgICAuc2VsZWN0KGdyb3VwKVxuICAgICAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1yaWdodC1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgICAgICBkLnRvID0geC5pbnZlcnQoZXZlbnQueCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IGQubWF4ID8/IG1heDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclJlYWNoZWQgPSBkLnRvID49IG1heFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJvcmRlclJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgIGQudG8gPSBtYXhWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZC50byA8PSBkLmZyb20pIHtcbiAgICAgICAgICAgICAgICAgIGQudG8gPSBkLmZyb207XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3gxJywgeChkLnRvKSkuYXR0cigneDInLCB4KGQudG8pKTtcbiAgICAgICAgICAgICAgICBkcmFnZ2VkQmFuZC5hdHRyKCd3aWR0aCcsIHgoZC50bykgLSB4KGQuZnJvbSkpO1xuICAgICAgICAgICAgICAgIGRyYWdnZWRMaW5lLmF0dHIoJ3gxJywgeChkLnRvKSkuYXR0cigneDInLCB4KGQudG8pKTtcblxuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAub24oJ2VuZCcsIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90QmFuZCkgPT5cbiAgICAgICAgICAgICAgICBlbWl0KGV2ZW50LCBkKVxuICAgICAgICAgICAgICApIGFzIGFueVxuICAgICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3lBeGlzTGlzdFxuICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnBsb3RCYW5kcy5sZW5ndGggPiAwKVxuICAgICAgLmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuX3lTY2FsZXMuZ2V0KGF4aXMuaW5kZXgpO1xuXG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBheGlzLmV4dGVudDtcblxuICAgICAgICBjb25zdCBwbG90YmFuZCA9IHBsb3RCYW5kR3JvdXBcbiAgICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgICAuc3R5bGUoJ3NoYXBlLXJlbmRlcmluZycsICdjcmlzcEVkZ2VzJyk7XG5cbiAgICAgICAgY29uc3QgcGxvdEJhbmRXaWR0aCA9XG4gICAgICAgICAgdGhpcy5fd2lkdGggLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5sZWZ0IC0gdGhpcy5fb3B0aW9ucy5ib3VuZHMucmlnaHQ7IC8vIFRPRE8gYWRkIG11bHRpYXhpcyBzdXBwb3J0IHdpZHRoXG5cbiAgICAgICAgY29uc3QgZW1pdCA9IChldmVudDogRHJhZ0V2ZW50LCBwbG90QmFuZDogUGxvdEJhbmQpID0+IHtcbiAgICAgICAgICB0aGlzLnBsb3RCYW5kc01vdmUkLm5leHQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHBsb3RCYW5kLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRyYWdQbG90YmFuZCA9IGQzXG4gICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgIC5zdWJqZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgICAgICAgICByZXR1cm4geyB5OiBlbGVtZW50LmF0dHIoJ3knKSB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdzdGFydCBkcmFnIGVuZCcsIGZ1bmN0aW9uIChldmVudDogYW55LCBkOiBQbG90QmFuZCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGQzLnNlbGVjdCh0aGlzKTtcblxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VGbG9hdChlbGVtZW50LmF0dHIoJ2hlaWdodCcpKTtcblxuICAgICAgICAgICAgZC50byA9IHkuaW52ZXJ0KGV2ZW50LnkgKyBoZWlnaHQpO1xuICAgICAgICAgICAgZC5mcm9tID0geS5pbnZlcnQoZXZlbnQueSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuICAgICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgICAgIGNvbnN0IGJvcmRlclJlYWNoZWRNaW4gPSBkLmZyb20gPD0gbWluVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkTWF4ID0gZC50byA+PSBtYXhWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGJvcmRlclJlYWNoZWRNaW4pIHtcbiAgICAgICAgICAgICAgZC50byA9IHkuaW52ZXJ0KHkobWluVmFsdWUpICsgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgZC5mcm9tID0gbWluVmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChib3JkZXJSZWFjaGVkTWF4KSB7XG4gICAgICAgICAgICAgIGQudG8gPSBtYXhWYWx1ZTtcbiAgICAgICAgICAgICAgZC5mcm9tID0geS5pbnZlcnQoeShtYXhWYWx1ZSkgLSBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbGVtZW50LmF0dHIoJ3knLCB5KGQuZnJvbSkpO1xuXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGVsZW1lbnQubm9kZSgpLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1sZWZ0LWlkPScke2QuaWR9J11gKVxuICAgICAgICAgICAgICAuYXR0cigneTEnLCB5KGQuZnJvbSkpXG4gICAgICAgICAgICAgIC5hdHRyKCd5MicsIHkoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtZ3JhYi1sZWZ0LWlkPScke2QuaWR9J11gKVxuICAgICAgICAgICAgICAuYXR0cigneTEnLCB5KGQuZnJvbSkpXG4gICAgICAgICAgICAgIC5hdHRyKCd5MicsIHkoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1yaWdodC1pZD0nJHtkLmlkfSddYClcbiAgICAgICAgICAgICAgLmF0dHIoJ3kxJywgeShkLnRvKSlcbiAgICAgICAgICAgICAgLmF0dHIoJ3kyJywgeShkLnRvKSk7XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtZ3JhYi1yaWdodC1pZD0nJHtkLmlkfSddYClcbiAgICAgICAgICAgICAgLmF0dHIoJ3kxJywgeShkLnRvKSlcbiAgICAgICAgICAgICAgLmF0dHIoJ3kyJywgeShkLnRvKSk7XG5cbiAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgIH0pIGFzIGFueTtcblxuICAgICAgICBjb25zdCBsZWZ0R3JhYkRyYWcgPSBkM1xuICAgICAgICAgIC5kcmFnKClcbiAgICAgICAgICAub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZDMuc2VsZWN0KHRoaXMpLm5vZGUoKS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgZHJhZ2dlZEJhbmQgPSBkM1xuICAgICAgICAgICAgICAuc2VsZWN0KGdyb3VwKVxuICAgICAgICAgICAgICAuc2VsZWN0KGBbZGF0YS1wbG90YmFuZC1pZD0nJHtkLmlkfSddYCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRMaW5lID0gZDNcbiAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtbGluZS1sZWZ0LWlkPScke2QuaWR9J11gKTtcblxuICAgICAgICAgICAgZC5mcm9tID0geS5pbnZlcnQoZXZlbnQueSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuXG4gICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkID0gZC5mcm9tIDw9IG1pblZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoYm9yZGVyUmVhY2hlZCkge1xuICAgICAgICAgICAgICBkLmZyb20gPSBtaW5WYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGQuZnJvbSA+PSBkLnRvKSB7XG4gICAgICAgICAgICAgIGQuZnJvbSA9IGQudG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGQzLnNlbGVjdCh0aGlzKS5hdHRyKCd5MScsIHkoZC5mcm9tKSkuYXR0cigneTInLCB5KGQuZnJvbSkpO1xuXG4gICAgICAgICAgICBkcmFnZ2VkQmFuZFxuICAgICAgICAgICAgICAuYXR0cigneScsIHkoZC5mcm9tKSlcbiAgICAgICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIE1hdGguYWJzKHkoZC50bykgLSB5KGQuZnJvbSkpKTtcbiAgICAgICAgICAgIGRyYWdnZWRMaW5lLmF0dHIoJ3kxJywgeShkLmZyb20pKS5hdHRyKCd5MicsIHkoZC5mcm9tKSk7XG5cbiAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpID0+IGVtaXQoZXZlbnQsIGQpKSBhcyBhbnk7XG5cbiAgICAgICAgY29uc3QgcmlnaHRHcmFiRHJhZyA9IGQzXG4gICAgICAgICAgLmRyYWcoKVxuICAgICAgICAgIC5vbignZHJhZycsIGZ1bmN0aW9uIChldmVudDogRHJhZ0V2ZW50LCBkOiBQbG90QmFuZCkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBkMy5zZWxlY3QodGhpcykubm9kZSgpLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRCYW5kID0gZDNcbiAgICAgICAgICAgICAgLnNlbGVjdChncm91cClcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtcGxvdGJhbmQtaWQ9JyR7ZC5pZH0nXWApO1xuXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2VkTGluZSA9IGQzXG4gICAgICAgICAgICAgIC5zZWxlY3QoZ3JvdXApXG4gICAgICAgICAgICAgIC5zZWxlY3QoYFtkYXRhLWxpbmUtcmlnaHQtaWQ9JyR7ZC5pZH0nXWApO1xuXG4gICAgICAgICAgICBkLnRvID0geS5pbnZlcnQoZXZlbnQueSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1heFZhbHVlID0gZC5tYXggPz8gbWF4O1xuXG4gICAgICAgICAgICBjb25zdCBib3JkZXJSZWFjaGVkID0gZC50byA+PSBtYXhWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGJvcmRlclJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgZC50byA9IG1heFZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZC50byA8PSBkLmZyb20pIHtcbiAgICAgICAgICAgICAgZC50byA9IGQuZnJvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3kxJywgeShkLnRvKSkuYXR0cigneTInLCB5KGQudG8pKTtcblxuICAgICAgICAgICAgZHJhZ2dlZEJhbmRcbiAgICAgICAgICAgICAgLmF0dHIoJ3knLCB5KGQuZnJvbSkpXG4gICAgICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBNYXRoLmFicyh5KGQudG8pIC0geShkLmZyb20pKSk7XG4gICAgICAgICAgICBkcmFnZ2VkTGluZS5hdHRyKCd5MScsIHkoZC50bykpLmF0dHIoJ3kyJywgeShkLnRvKSk7XG5cbiAgICAgICAgICAgIGVtaXQoZXZlbnQsIGQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uKCdlbmQnLCAoZXZlbnQ6IERyYWdFdmVudCwgZDogUGxvdEJhbmQpID0+IGVtaXQoZXZlbnQsIGQpKSBhcyBhbnk7XG5cbiAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAuc2VsZWN0QWxsKCdyZWN0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzKVxuICAgICAgICAgIC5qb2luKCdyZWN0JylcbiAgICAgICAgICAuYXR0cignZGF0YS1wbG90YmFuZC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCd4JywgMClcbiAgICAgICAgICAuYXR0cigneScsIChkKSA9PiB5KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgKGQpID0+IHBsb3RCYW5kV2lkdGgpXG4gICAgICAgICAgLmF0dHIoJ2ZpbGwnLCAoZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGQuaW1hZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGB1cmwoIyR7ZC5pbWFnZX0pYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkLmNvbG9yO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnN0eWxlKCdvcGFjaXR5JywgKGQpID0+IGQub3BhY2l0eSA/PyAxKVxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCAoZCkgPT4gTWF0aC5hYnMoeShkLnRvKSAtIHkoZC5mcm9tKSkpXG4gICAgICAgICAgLmF0dHIoJ2N1cnNvcicsIChkKSA9PiAoZC5kcmFnZ2FibGUgPyAnbW92ZScgOiAnZGVmYXVsdCcpKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5saW5lLWxlZnQnKVxuICAgICAgICAgIC5kYXRhKGF4aXMub3B0aW9ucy5wbG90QmFuZHMuZmlsdGVyKChkKSA9PiBkLnJlc2l6YWJsZSkpXG4gICAgICAgICAgLmpvaW4oJ2xpbmUnKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLWxpbmUtbGVmdC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lLWxlZnQnKVxuICAgICAgICAgIC5hdHRyKCd5MScsIChkKSA9PiB5KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3kyJywgKGQpID0+IHkoZC5mcm9tKSlcbiAgICAgICAgICAuYXR0cigneDEnLCAwKVxuICAgICAgICAgIC5hdHRyKCd4MicsIHBsb3RCYW5kV2lkdGgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAxKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsICc4LCA4JylcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICd2YXIoLS1jb2xvci10ZXh0LTkwKScpXG4gICAgICAgICAgLnN0eWxlKCdvcGFjaXR5JywgKGQpID0+IChkLnNob3dHcmFiYmVycyA/IDEgOiAwKSk7XG5cbiAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAuc2VsZWN0QWxsKCcuZHJhZy1sZWZ0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzLmZpbHRlcigoZCkgPT4gZC5yZXNpemFibGUpKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignZGF0YS1ncmFiLWxlZnQtaWQnLCAoZCkgPT4gZC5pZClcbiAgICAgICAgICAuYXR0cigneTEnLCAoZCkgPT4geShkLmZyb20pKVxuICAgICAgICAgIC5hdHRyKCd5MicsIChkKSA9PiB5KGQuZnJvbSkpXG4gICAgICAgICAgLmF0dHIoJ3gxJywgMClcbiAgICAgICAgICAuYXR0cigneDInLCBwbG90QmFuZFdpZHRoKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgOClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICdyZ2JhKDAsIDAsIDAsIDApJylcbiAgICAgICAgICAuc3R5bGUoJ2N1cnNvcicsIChkKSA9PiAoZC5yZXNpemFibGUgPyAncm93LXJlc2l6ZScgOiAnZGVmYXVsdCcpKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5saW5lLXJpZ2h0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzLmZpbHRlcigoZCkgPT4gZC5yZXNpemFibGUpKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignZGF0YS1saW5lLXJpZ2h0LWlkJywgKGQpID0+IGQuaWQpXG4gICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xpbmUtcmlnaHQnKVxuICAgICAgICAgIC5hdHRyKCd5MScsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd5MicsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd4MScsIDApXG4gICAgICAgICAgLmF0dHIoJ3gyJywgcGxvdEJhbmRXaWR0aClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDEpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgJzgsIDgnKVxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3ZhcigtLWNvbG9yLXRleHQtOTApJylcbiAgICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAoZCkgPT4gKGQuc2hvd0dyYWJiZXJzID8gMSA6IDApKTtcblxuICAgICAgICBwbG90YmFuZFxuICAgICAgICAgIC5zZWxlY3RBbGwoJy5kcmFnLXJpZ2h0JylcbiAgICAgICAgICAuZGF0YShheGlzLm9wdGlvbnMucGxvdEJhbmRzLmZpbHRlcigoZCkgPT4gZC5yZXNpemFibGUpKVxuICAgICAgICAgIC5qb2luKCdsaW5lJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAnZHJhZy1yaWdodCcpXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtZ3JhYi1yaWdodC1pZCcsIChkKSA9PiBkLmlkKVxuICAgICAgICAgIC5hdHRyKCd5MScsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd5MicsIChkKSA9PiB5KGQudG8pKVxuICAgICAgICAgIC5hdHRyKCd4MScsIDApXG4gICAgICAgICAgLmF0dHIoJ3gyJywgcGxvdEJhbmRXaWR0aClcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDgpXG4gICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAncmdiYSgwLCAwLCAwLCAwKScpXG4gICAgICAgICAgLnN0eWxlKCdjdXJzb3InLCAoZCkgPT4gKGQucmVzaXphYmxlID8gJ3Jvdy1yZXNpemUnIDogJ2RlZmF1bHQnKSk7XG5cbiAgICAgICAgYXhpcy5vcHRpb25zLnBsb3RCYW5kcy5mb3JFYWNoKChfKSA9PiB7XG4gICAgICAgICAgaWYgKF8uZHJhZ2dhYmxlKSB7XG4gICAgICAgICAgICBwbG90YmFuZC5zZWxlY3QoYFtkYXRhLXBsb3RiYW5kLWlkPScke18uaWR9J11gKS5jYWxsKGRyYWdQbG90YmFuZCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8ucmVzaXphYmxlKSB7XG4gICAgICAgICAgICBwbG90YmFuZC5zZWxlY3QoYFtkYXRhLWdyYWItbGVmdC1pZD0nJHtfLmlkfSddYCkuY2FsbChsZWZ0R3JhYkRyYWcpO1xuICAgICAgICAgICAgcGxvdGJhbmRcbiAgICAgICAgICAgICAgLnNlbGVjdChgW2RhdGEtZ3JhYi1yaWdodC1pZD0nJHtfLmlkfSddYClcbiAgICAgICAgICAgICAgLmNhbGwocmlnaHRHcmFiRHJhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3Q2hhcnQoKSB7XG4gICAgY29uc3Qgc2VyaWVzID0gdGhpcy5fb3B0aW9ucy5zZXJpZXM/LmZpbHRlcigoXykgPT4gXy52aXNpYmxlKTtcblxuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLnNlcmllcycpLnJlbW92ZSgpO1xuXG4gICAgaWYgKCFzZXJpZXMgfHwgc2VyaWVzLmxlbmd0aCA8IDEpIHtcbiAgICAgIGQzLnNlbGVjdCh0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgICAgLnNlbGVjdCgnY2FudmFzJylcbiAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBncm91cCA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdzZXJpZXMnKVxuICAgICAgLmF0dHIoJ2NsaXAtcGF0aCcsIGB1cmwoI2RyYXctd2luZG93LSR7dGhpcy51bmlxSWR9KWApO1xuXG4gICAgc2VyaWVzPy5mb3JFYWNoKChzZXJpZXNJdGVtOiBTZXJpZXM8QmFzZVBvaW50PiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChzZXJpZXNJdGVtLnJlbmRlclRvID09PSAnY2FudmFzJykge1xuICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnNlbGVjdCgnY2FudmFzJylcbiAgICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCBudWxsKTtcblxuICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnNlbGVjdCgnc3ZnJylcbiAgICAgICAgICAuc3R5bGUoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkMy5zZWxlY3QodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnNlbGVjdCgnY2FudmFzJylcbiAgICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5feFNjYWxlcy5oYXMoc2VyaWVzSXRlbS54QXhpc0luZGV4KSB8fFxuICAgICAgICAhdGhpcy5feVNjYWxlcy5oYXMoc2VyaWVzSXRlbS55QXhpc0luZGV4KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRYID0gdGhpcy5feFNjYWxlcy5nZXQoc2VyaWVzSXRlbS54QXhpc0luZGV4KTtcbiAgICAgIGNvbnN0IGZvdW5kWSA9IHRoaXMuX3lTY2FsZXMuZ2V0KHNlcmllc0l0ZW0ueUF4aXNJbmRleCk7XG5cbiAgICAgIGNvbnN0IGRyYXdlciA9XG4gICAgICAgIHNlcmllc0l0ZW0uZHJhd2VyICE9IG51bGxcbiAgICAgICAgICA/IHNlcmllc0l0ZW0uZHJhd2VyXG4gICAgICAgICAgOiBkZWZhdWx0RHJhd2VyTWFwcGluZy5nZXQoc2VyaWVzSXRlbS50eXBlKTtcblxuICAgICAgaWYgKCFkcmF3ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBObyBkcmF3ZXIgZm9yIHNlcmllcyAke3Nlcmllc0l0ZW0ubmFtZX0sIHR5cGUgJHtcbiAgICAgICAgICAgIFNlcmllc1R5cGVbc2VyaWVzSXRlbS50eXBlXVxuICAgICAgICAgIH1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZXJpZXNJdGVtLnJlbmRlclRvID09PSAnY2FudmFzJykge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fY2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl93aWR0aCwgdGhpcy5faGVpZ2h0KTtcbiAgICAgIH1cblxuICAgICAgbGV0IFt4TWluLCB4TWF4XSA9IGZvdW5kWC5kb21haW4oKTtcbiAgICAgIGxldCBbeU1pbiwgeU1heF0gPSBmb3VuZFkuZG9tYWluKCk7XG5cbiAgICAgIHhNaW4gPSB4TWluIGluc3RhbmNlb2YgRGF0ZSA/IHhNaW4uZ2V0VGltZSgpIDogeE1pbjtcbiAgICAgIHhNYXggPSB4TWF4IGluc3RhbmNlb2YgRGF0ZSA/IHhNYXguZ2V0VGltZSgpIDogeE1heDtcblxuICAgICAgeU1pbiA9IHlNaW4gaW5zdGFuY2VvZiBEYXRlID8geU1pbi5nZXRUaW1lKCkgOiB5TWluO1xuICAgICAgeU1heCA9IHlNYXggaW5zdGFuY2VvZiBEYXRlID8geU1heC5nZXRUaW1lKCkgOiB5TWF4O1xuXG4gICAgICBjb25zdCB2aXNpYmxlUG9pbnRzID0gKFxuICAgICAgICBwb2ludDogQmFzZVBvaW50LFxuICAgICAgICBpZHg6IG51bWJlcixcbiAgICAgICAgYXJyOiBBcnJheTxCYXNlUG9pbnQ+XG4gICAgICApID0+XG4gICAgICAgIChwb2ludC54IDw9IHhNYXggfHxcbiAgICAgICAgICBwb2ludC54MSA8PSB4TWF4IHx8XG4gICAgICAgICAgKGFycltpZHggLSAxXSAmJiBhcnJbaWR4IC0gMV0ueCA8PSB4TWF4KSB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLngxIDw9IHhNYXgpKSAmJlxuICAgICAgICAocG9pbnQueCA+PSB4TWluIHx8XG4gICAgICAgICAgcG9pbnQueDEgPj0geE1pbiB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnggPj0geE1pbikgfHxcbiAgICAgICAgICAoYXJyW2lkeCArIDFdICYmIGFycltpZHggKyAxXS54MSA+PSB4TWluKSkgJiZcbiAgICAgICAgKHBvaW50LnkgPD0geU1heCB8fFxuICAgICAgICAgIHBvaW50LnkxIDw9IHlNYXggfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS55IDw9IHlNYXgpIHx8XG4gICAgICAgICAgKGFycltpZHggLSAxXSAmJiBhcnJbaWR4IC0gMV0ueTEgPD0geU1heCkpICYmXG4gICAgICAgIChwb2ludC55ID49IHlNaW4gfHxcbiAgICAgICAgICBwb2ludC55MSA+PSB5TWluIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueSA+PSB5TWluKSB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnkxID49IHlNaW4pKTtcblxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gc2VyaWVzSXRlbS5kYXRhOyAvLy5maWx0ZXIodmlzaWJsZVBvaW50cyk7XG5cbiAgICAgIGNvbnN0IHNlcmllID0ge1xuICAgICAgICAuLi5zZXJpZXNJdGVtLFxuICAgICAgICBkYXRhOiBmaWx0ZXJlZERhdGEsXG4gICAgICB9O1xuXG4gICAgICBkcmF3ZXIuZHJhdyhcbiAgICAgICAgc2VyaWUsXG4gICAgICAgIHNlcmllc0l0ZW0ucmVuZGVyVG8gPT09ICdjYW52YXMnID8gdGhpcy5fY2FudmFzIDogZ3JvdXAsXG4gICAgICAgIGZvdW5kWCxcbiAgICAgICAgZm91bmRZLFxuICAgICAgICB0aGlzLl9vcHRpb25zXG4gICAgICApO1xuXG4gICAgICBjb25zdCBlbWl0ID0gKGV2ZW50OiBJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+PikgPT4ge1xuICAgICAgICB0aGlzLnNlcmllc01vdmUkLm5leHQoZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZW1pdFBvaW50ID0gKGV2ZW50OiBJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+PikgPT4ge1xuICAgICAgICB0aGlzLnBvaW50TW92ZSQubmV4dChldmVudCk7XG4gICAgICB9O1xuXG4gICAgICBkcmF3ZXI/LmRpc3BhdGNoPy5vbihEaXNwYXRjaFR5cGUubW92ZUxpbmUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZW1pdCh0aGlzKTtcbiAgICAgIH0pO1xuXG4gICAgICBkcmF3ZXI/LmRpc3BhdGNoPy5vbihEaXNwYXRjaFR5cGUubW92ZVBvaW50LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVtaXRQb2ludCh0aGlzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUb29sdGlwKCkge1xuICAgIGQzLnNlbGVjdCh0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgIC5hcHBlbmQoJ2RpdicpXG4gICAgICAuYXR0cignY2xhc3MnLCAndG9vbHRpcC1jaGFydCBjb2xvci10ZXh0LTkwIGJnLWJhY2tncm91bmQtNTAgc2hhZG93LTInKVxuICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdmaXhlZCcpXG4gICAgICAuc3R5bGUoJ3RvcCcsICd1bnNldCcpXG4gICAgICAuc3R5bGUoJ3JpZ2h0JywgJ3Vuc2V0JylcbiAgICAgIC5zdHlsZSgnYm90dG9tJywgJ3Vuc2V0JylcbiAgICAgIC5zdHlsZSgnbGVmdCcsICd1bnNldCcpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VNb3ZlKG9wdGlvbnMpIHtcbiAgICBjb25zdCBtb3VzZSA9IGQzLnBvaW50ZXIob3B0aW9ucy5ldmVudCk7XG4gICAgY29uc3QgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQgfSA9IHRoaXMudG9vbHRpcFBvc2l0aW9uKG9wdGlvbnMuZXZlbnQpO1xuXG4gICAgY29uc3QgdG9vbHRpcHNEYXRhID0gW107XG5cbiAgICB0aGlzLl9jaGFydFxuICAgICAgLnNlbGVjdCgnLm1hcmtlci1saW5lJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7MH0sICR7bW91c2VbMV0gLSAyfSlgKTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAuc2VsZWN0QWxsKCcubWFya2VyJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAoZDogU2VyaWVzPEJhc2VQb2ludD4pID0+IHtcbiAgICAgICAgaWYgKCFkLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLl94U2NhbGVzLmhhcyhkLnhBeGlzSW5kZXgpIHx8XG4gICAgICAgICAgIXRoaXMuX3lTY2FsZXMuaGFzKGQueUF4aXNJbmRleClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm91bmRYID0gdGhpcy5feFNjYWxlcy5nZXQoZC54QXhpc0luZGV4KTtcbiAgICAgICAgY29uc3QgZm91bmRZID0gdGhpcy5feVNjYWxlcy5nZXQoZC55QXhpc0luZGV4KTtcblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy50b29sdGlwLnRyYWNraW5nID09PSAneCcpIHtcbiAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gZm91bmRYLmRvbWFpbigpO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IGQuZGF0YS5maWx0ZXIoXG4gICAgICAgICAgICAocG9pbnQpID0+IHBvaW50LnggPD0gbWF4ICYmIHBvaW50LnggPj0gbWluXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5maWx0ZXJlZERhdGFdLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICBkMy5hc2NlbmRpbmcoYS54LCBiLngpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChkZDogYW55KSA9PiBkZC54KS5sZWZ0O1xuICAgICAgICAgIGNvbnN0IHgwID0gZm91bmRYLmludmVydChtb3VzZVswXSk7XG5cbiAgICAgICAgICBjb25zdCBpbmRleCA9IGJpc2VjdChzb3J0ZWQsIHgwKTtcblxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBzb3J0ZWRbaW5kZXhdID8gc29ydGVkW2luZGV4XSA6IHNvcnRlZFtpbmRleCAtIDFdO1xuXG4gICAgICAgICAgdG9vbHRpcHNEYXRhLnB1c2goe1xuICAgICAgICAgICAgcG9pbnQ6IGRhdGEsXG4gICAgICAgICAgICBjb2xvcjogZC5jb2xvcixcbiAgICAgICAgICAgIG5hbWU6IGQubmFtZSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBgdHJhbnNsYXRlKCR7XG4gICAgICAgICAgICAhaXNOYU4oZGF0YT8ueCkgJiYgZGF0YT8ueCAhPSBudWxsID8gZm91bmRYKGRhdGEueCkgOiAtMTBcbiAgICAgICAgICB9LCAkeyFpc05hTihkYXRhPy55KSAmJiBkYXRhPy55ICE9IG51bGwgPyBmb3VuZFkoZGF0YS55KSA6IC0xMH0pYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zLnRvb2x0aXAudHJhY2tpbmcgPT09ICd5Jykge1xuICAgICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kLmRhdGFdLnNvcnQoKGEsIGIpID0+IGQzLmFzY2VuZGluZyhhLnksIGIueSkpO1xuICAgICAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChkZDogYW55KSA9PiBkZC55KS5sZWZ0O1xuICAgICAgICAgIGNvbnN0IHkwID0gZm91bmRZLmludmVydChtb3VzZVsxXSk7XG5cbiAgICAgICAgICBjb25zdCBpbmRleCA9IGJpc2VjdChzb3J0ZWQsIHkwLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBzb3J0ZWRbaW5kZXhdID8gc29ydGVkW2luZGV4XSA6IHNvcnRlZFtpbmRleCAtIDFdO1xuXG4gICAgICAgICAgdG9vbHRpcHNEYXRhLnB1c2goe1xuICAgICAgICAgICAgcG9pbnQ6IGRhdGEsXG4gICAgICAgICAgICBjb2xvcjogZC5jb2xvcixcbiAgICAgICAgICAgIG5hbWU6IGQubmFtZSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBgdHJhbnNsYXRlKCR7XG4gICAgICAgICAgICAhaXNOYU4oZGF0YT8ueCkgJiYgZGF0YT8ueCAhPSBudWxsID8gZm91bmRYKGRhdGEueCkgOiAtMTBcbiAgICAgICAgICB9LCAkeyFpc05hTihkYXRhPy55KSAmJiBkYXRhPy55ICE9IG51bGwgPyBmb3VuZFkoZGF0YS55KSA6IC0xMH0pYDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5fb3B0aW9ucy50b29sdGlwPy5mb3JtYXQpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuX29wdGlvbnMudG9vbHRpcD8uZm9ybWF0KHRvb2x0aXBzRGF0YSk7XG5cbiAgICAgIGQzLnNlbGVjdCh0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgICAgLnNlbGVjdCgnLnRvb2x0aXAtY2hhcnQnKVxuICAgICAgICAuc3R5bGUoJ3RvcCcsIHRvcClcbiAgICAgICAgLnN0eWxlKCdyaWdodCcsIHJpZ2h0KVxuICAgICAgICAuc3R5bGUoJ2JvdHRvbScsIGJvdHRvbSlcbiAgICAgICAgLnN0eWxlKCdsZWZ0JywgbGVmdClcbiAgICAgICAgLmh0bWwoZm9ybWF0dGVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvb2x0aXBQb3NpdGlvbihldmVudCkge1xuICAgIGNvbnN0IGNlbnRlclggPSB0aGlzLl93aWR0aCAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9IHRoaXMuX2hlaWdodCAvIDI7XG5cbiAgICBjb25zdCBwYWRkaW5nID0geyB4OiAxMCwgeTogMTAgfTtcblxuICAgIGNvbnN0IHNjZW5lID0ge1xuICAgICAgbGVmdDogZXZlbnQucGFnZVggPiBjZW50ZXJYID8gJ2luaXRpYWwnIDogYCR7ZXZlbnQucGFnZVggKyBwYWRkaW5nLnh9cHhgLFxuICAgICAgdG9wOiBldmVudC5wYWdlWSA+IGNlbnRlclkgPyAnaW5pdGlhbCcgOiBgJHtldmVudC5wYWdlWSArIHBhZGRpbmcueX1weGAsXG4gICAgICBib3R0b206XG4gICAgICAgIGV2ZW50LnBhZ2VZID4gY2VudGVyWVxuICAgICAgICAgID8gYCR7d2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQucGFnZVl9cHhgXG4gICAgICAgICAgOiAnaW5pdGlhbCcsXG4gICAgICByaWdodDpcbiAgICAgICAgZXZlbnQucGFnZVggPiBjZW50ZXJYXG4gICAgICAgICAgPyBgJHt3aW5kb3cuaW5uZXJXaWR0aCAtIGV2ZW50LnBhZ2VYICsgcGFkZGluZy54fXB4YFxuICAgICAgICAgIDogJ2luaXRpYWwnLFxuICAgIH07XG5cbiAgICByZXR1cm4gc2NlbmU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1hcmtlcnMoKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMudG9vbHRpcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9vcHRpb25zLnRvb2x0aXAuZW5hYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcubWFya2VyJykucmVtb3ZlKCk7XG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0KCcubWFya2VyLWxpbmUnKS5yZW1vdmUoKTtcblxuICAgIHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdtYXJrZXItbGluZScpXG4gICAgICAuYXR0cigneDEnLCAzNSlcbiAgICAgIC5hdHRyKCd4MicsIHRoaXMuX3dpZHRoKVxuICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAwLjUpXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsICd2YXIoLS1jb2xvci10ZXh0LTQwKScpXG4gICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgY29uc3QgeyBzZXJpZXMgfSA9IHRoaXMuX29wdGlvbnM7XG5cbiAgICBpZiAoIXNlcmllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcmtlcnMgPSB0aGlzLl9jaGFydFxuICAgICAgLnNlbGVjdEFsbCgpXG4gICAgICAuZGF0YShzZXJpZXMuZmlsdGVyKChfKSA9PiBfLnZpc2libGUpKTtcbiAgICBtYXJrZXJzXG4gICAgICAuZW50ZXIoKVxuICAgICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdtYXJrZXInKVxuICAgICAgLmF0dHIoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLmF0dHIoJ3InLCAzKVxuICAgICAgLmF0dHIoJ2ZpbGwnLCAoXywgaSkgPT4gXy5jb2xvcilcbiAgICAgIC5zdHlsZSgnZGlzcGxheScsICdub25lJyk7XG5cbiAgICBjb25zdCBtb3VzZW91dEV2ZW50ID0gKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcubWFya2VyJykuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgdGhpcy5fY2hhcnQuc2VsZWN0KCcubWFya2VyLWxpbmUnKS5zdHlsZSgnZGlzcGxheScsICdub25lJyk7XG5cbiAgICAgIGQzLnNlbGVjdCh0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgICAgLnNlbGVjdCgnLnRvb2x0aXAtY2hhcnQnKVxuICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIH07XG5cbiAgICBjb25zdCBtb3VzZU1vdmVFdmVudCA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHNlcmllcyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuaGFuZGxlTW91c2VNb3ZlKG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBjb25zdCBtb3VzZU92ZXJFdmVudCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9vcHRpb25zLnRvb2x0aXAuc2hvd01hcmtlcnMpIHtcbiAgICAgICAgdGhpcy5fY2hhcnRcbiAgICAgICAgICAuc2VsZWN0QWxsKCcubWFya2VyJylcbiAgICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCAoZDogU2VyaWVzPEJhc2VQb2ludD4pID0+IHtcbiAgICAgICAgICAgIGlmIChkLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdub25lJztcbiAgICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX29wdGlvbnMudG9vbHRpcC5zaG93TGluZSkge1xuICAgICAgICB0aGlzLl9jaGFydC5zZWxlY3QoJy5tYXJrZXItbGluZScpLnN0eWxlKCdkaXNwbGF5JywgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGQzLnNlbGVjdCh0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgICAgLnNlbGVjdCgnLnRvb2x0aXAtY2hhcnQnKVxuICAgICAgICAuc3R5bGUoJ2Rpc3BsYXknLCBudWxsKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fY2hhcnRcbiAgICAgIC5vbignbW91c2VvdmVyJywgbW91c2VPdmVyRXZlbnQpXG4gICAgICAub24oJ21vdXNlbW92ZScsIG1vdXNlTW92ZUV2ZW50KVxuICAgICAgLm9uKCdtb3VzZWxlYXZlJywgbW91c2VvdXRFdmVudCk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdMZWdlbmQoKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMubGVnZW5kPy52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLmxlZ2VuZCcpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgZHJhd2VyID0gdGhpcy5fb3B0aW9ucy5sZWdlbmQ/LnR5cGVcbiAgICAgID8gZGVmYXVsdExlZ2VuZERyYXdlck1hcHBpbmcuZ2V0KHRoaXMuX29wdGlvbnMubGVnZW5kLnR5cGUpXG4gICAgICA6IGRlZmF1bHRMZWdlbmREcmF3ZXJNYXBwaW5nLmdldChMZWdlbmRUeXBlLnN3YXRjaGVzKTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICghZHJhd2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBObyBkcmF3ZXIgZm9yIGxlZ2VuZFxuICAgICAgICB9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBkcmF3ZXIuZHJhdyh7XG4gICAgICBjb250ZXh0LFxuICAgICAgc2VyaWVzOiB0aGlzLl9vcHRpb25zLnNlcmllcy5maWx0ZXIoKF8pID0+IF8uc2hvd0luTGVnZW5kKSxcbiAgICAgIHdpZHRoOiB0aGlzLl93aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5faGVpZ2h0LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWx1Y2xhdGVDaGFydFdpZHRoKCkge1xuICAgIGxldCB3aWR0aCA9IC10aGlzLl93aWR0aDtcblxuICAgIGlmICh0aGlzLm9mZnNldE9wcG9zaXRlID4gMCkge1xuICAgICAgd2lkdGggPSAtdGhpcy5fd2lkdGggKyB0aGlzLm9mZnNldE9wcG9zaXRlICsgdGhpcy5vZmZzZXROb25PcHBvc2l0ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vZmZzZXROb25PcHBvc2l0ZSA+IDApIHtcbiAgICAgIHdpZHRoID1cbiAgICAgICAgLXRoaXMuX3dpZHRoICsgdGhpcy5fb3B0aW9ucy5ib3VuZHMucmlnaHQgKyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMub2Zmc2V0T3Bwb3NpdGUgPj0gQXhpcy5vZmZzZXRGYWN0b3IgJiZcbiAgICAgIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGUgPT09IDBcbiAgICApIHtcbiAgICAgIHdpZHRoID0gLXRoaXMuX3dpZHRoICsgdGhpcy5vZmZzZXRPcHBvc2l0ZSArIHRoaXMuX29wdGlvbnMuYm91bmRzLmxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub2Zmc2V0T3Bwb3NpdGUgPiAwICYmIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGUgPiAwKSB7XG4gICAgICB3aWR0aCA9IC10aGlzLl93aWR0aCArIHRoaXMub2Zmc2V0T3Bwb3NpdGUgKyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmFicyh3aWR0aCk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdHcmlkTGluZXMoKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZ3JpZExpbmVzID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zbGF0ZVggPVxuICAgICAgdGhpcy5vZmZzZXROb25PcHBvc2l0ZSA+IDBcbiAgICAgICAgPyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgIDogdGhpcy5fb3B0aW9ucy5ib3VuZHMubGVmdCArIHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGU7XG5cbiAgICB0aGlzLl9jaGFydC5zZWxlY3RBbGwoJy5ncmlkJykucmVtb3ZlKCk7XG5cbiAgICBjb25zdCB5TGlzdCA9IHRoaXMuX3lBeGlzTGlzdC5maWx0ZXIoXG4gICAgICAoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgIV8ub3B0aW9ucy5vcHBvc2l0ZVxuICAgICk7XG5cbiAgICBjb25zdCB5OiBhbnkgPVxuICAgICAgeUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLl95U2NhbGVzLmdldCh5TGlzdFt5TGlzdC5sZW5ndGggLSAxXS5pbmRleClcbiAgICAgICAgOiB0aGlzLl95U2NhbGVzLmdldCgwKTtcblxuICAgIGNvbnN0IHggPSB0aGlzLl94U2NhbGVzLmdldCgwKTtcblxuICAgIGlmICgheSB8fCAheCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFRJQ0tfSEVJR0hUID0gNDA7XG4gICAgY29uc3QgVElDS19XSURUSCA9IDYwO1xuXG4gICAgY29uc3QgdGlja0NvdW50ID0gTWF0aC5yb3VuZCh0aGlzLl9oZWlnaHQgLyBUSUNLX0hFSUdIVCk7XG4gICAgY29uc3QgdGlja0NvdW50WCA9IE1hdGgucm91bmQodGhpcy5fd2lkdGggLyBUSUNLX1dJRFRIKTtcblxuICAgIGNvbnN0IGdyaWRZID0gdGhpcy5fY2hhcnRcbiAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2dyaWQgY29sb3ItdGV4dC0xMCcpXG4gICAgICAuc3R5bGUoJ3NoYXBlLXJlbmRlcmluZycsICdjcmlzcEVkZ2VzJyk7XG5cbiAgICBjb25zdCBncmlkbGluZXNZID0gZDNcbiAgICAgIC5heGlzTGVmdCh5KVxuICAgICAgLnRpY2tGb3JtYXQoJycgYXMgYW55KVxuICAgICAgLnRpY2tTaXplKC10aGlzLnZpc2libGVDaGFydFdpbmRvd1dpZHRoKTtcblxuICAgIGNvbnN0IGhhc0JhclNlcmllc1R5cGUgPSB0aGlzLl9vcHRpb25zLnNlcmllcy5zb21lKFxuICAgICAgKF8pID0+IF8udHlwZSA9PT0gU2VyaWVzVHlwZS5iYXJcbiAgICApO1xuXG4gICAgaWYgKCFoYXNCYXJTZXJpZXNUeXBlKSB7XG4gICAgICBjb25zdCBncmlkWCA9IHRoaXMuX2NoYXJ0XG4gICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCAnZ3JpZCBjb2xvci10ZXh0LTEwJylcbiAgICAgICAgLnN0eWxlKCdzaGFwZS1yZW5kZXJpbmcnLCAnY3Jpc3BFZGdlcycpO1xuXG4gICAgICBjb25zdCBncmlkbGluZXNYID0gZDNcbiAgICAgICAgLmF4aXNCb3R0b20oeClcbiAgICAgICAgLnRpY2tzKHRpY2tDb3VudFgpXG4gICAgICAgIC50aWNrRm9ybWF0KCcnIGFzIGFueSlcbiAgICAgICAgLnRpY2tTaXplKFxuICAgICAgICAgIHRoaXMuX2hlaWdodCAtIHRoaXMuX29wdGlvbnMuYm91bmRzLmJvdHRvbSAtIHRoaXMuX29wdGlvbnMuYm91bmRzLnRvcFxuICAgICAgICApO1xuXG4gICAgICBncmlkWFxuICAgICAgICAuY2FsbChncmlkbGluZXNYKVxuICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke3RoaXMuX29wdGlvbnMuYm91bmRzLnRvcH0pYClcbiAgICAgICAgLmxvd2VyKCk7XG4gICAgfVxuXG4gICAgZ3JpZFlcbiAgICAgIC5jYWxsKGdyaWRsaW5lc1kpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3RyYW5zbGF0ZVh9LCAkezB9KWApXG4gICAgICAubG93ZXIoKTtcblxuICAgIHRoaXMuX2NoYXJ0LnNlbGVjdEFsbCgnLmdyaWQgcGF0aCcpLnJlbW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTY2FsZXMoKSB7XG4gICAgdGhpcy5feFNjYWxlcy5jbGVhcigpO1xuICAgIHRoaXMuX3lTY2FsZXMuY2xlYXIoKTtcblxuICAgIGNvbnN0IGRlZmF1bHRTY2FsZU1hcHBpbmc6IE1hcDxTY2FsZVR5cGUsIGFueT4gPSBuZXcgTWFwPFNjYWxlVHlwZSwgYW55PigpXG4gICAgICAuc2V0KFNjYWxlVHlwZS5saW5lYXIsIGQzLnNjYWxlTGluZWFyKVxuICAgICAgLnNldChTY2FsZVR5cGUubG9nLCBkMy5zY2FsZUxvZylcbiAgICAgIC5zZXQoU2NhbGVUeXBlLnNxcnQsIGQzLnNjYWxlU3FydClcbiAgICAgIC5zZXQoU2NhbGVUeXBlLnBvdywgZDMuc2NhbGVQb3cpO1xuXG4gICAgY29uc3QgeFJhbmdlID0gW1xuICAgICAgdGhpcy5vZmZzZXROb25PcHBvc2l0ZVxuICAgICAgICA/IHRoaXMub2Zmc2V0Tm9uT3Bwb3NpdGVcbiAgICAgICAgOiB0aGlzLl9vcHRpb25zLmJvdW5kcy5sZWZ0LFxuICAgICAgdGhpcy5fd2lkdGggLVxuICAgICAgICAodGhpcy5vZmZzZXRPcHBvc2l0ZVxuICAgICAgICAgID8gdGhpcy5vZmZzZXRPcHBvc2l0ZVxuICAgICAgICAgIDogdGhpcy5fb3B0aW9ucy5ib3VuZHMucmlnaHQpLFxuICAgIF07XG5cbiAgICBjb25zdCB5UmFuZ2UgPSBbXG4gICAgICB0aGlzLl9oZWlnaHQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b20sXG4gICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AsXG4gICAgXTtcblxuICAgIHRoaXMuX3hBeGlzTGlzdC5mb3JFYWNoKChheGlzLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IHNjYWxlID0gbnVsbDtcblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy50eXBlID09PSBTY2FsZS50aW1lKSB7XG4gICAgICAgIHNjYWxlID0gZDNcbiAgICAgICAgICAuc2NhbGVUaW1lKClcbiAgICAgICAgICAuZG9tYWluKGF4aXMuZXh0ZW50KVxuICAgICAgICAgIC5yYW5nZShheGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBbLi4ueFJhbmdlXS5yZXZlcnNlKCkgOiB4UmFuZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zLnR5cGUgPT09IFNjYWxlLm51bWJlcikge1xuICAgICAgICBzY2FsZSA9IGRlZmF1bHRTY2FsZU1hcHBpbmdcbiAgICAgICAgICAuZ2V0KGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMudHlwZSkoKVxuICAgICAgICAgIC5kb21haW4oYXhpcy5leHRlbnQpXG4gICAgICAgICAgLnJhbmdlKGF4aXMub3B0aW9ucy5pbnZlcnRlZCA/IFsuLi54UmFuZ2VdLnJldmVyc2UoKSA6IHhSYW5nZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMubmljZVRpY2tzKSB7XG4gICAgICAgIHNjYWxlLm5pY2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMudHlwZSA9PT0gU2NhbGVUeXBlLmxvZykge1xuICAgICAgICBzY2FsZS5iYXNlKGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMuYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLnR5cGUgPT09IFNjYWxlVHlwZS5wb3cpIHtcbiAgICAgICAgc2NhbGUuZXhwb25lbnQoYXhpcy5vcHRpb25zLnNjYWxlT3B0aW9ucy5iYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5feFNjYWxlcy5zZXQoaW5kZXgsIHNjYWxlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3lBeGlzTGlzdC5mb3JFYWNoKChheGlzLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IHNjYWxlID0gbnVsbDtcblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy50eXBlID09PSBTY2FsZS5udW1iZXIpIHtcbiAgICAgICAgc2NhbGUgPSBkZWZhdWx0U2NhbGVNYXBwaW5nXG4gICAgICAgICAgLmdldChheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLnR5cGUpKClcbiAgICAgICAgICAuZG9tYWluKGF4aXMuZXh0ZW50KVxuICAgICAgICAgIC5yYW5nZShheGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBbLi4ueVJhbmdlXS5yZXZlcnNlKCkgOiB5UmFuZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXhpcy5vcHRpb25zLnR5cGUgPT09IFNjYWxlLnRpbWUpIHtcbiAgICAgICAgc2NhbGUgPSBkM1xuICAgICAgICAgIC5zY2FsZVRpbWUoKVxuICAgICAgICAgIC5kb21haW4oYXhpcy5leHRlbnQpXG4gICAgICAgICAgLnJhbmdlKGF4aXMub3B0aW9ucy5pbnZlcnRlZCA/IFsuLi55UmFuZ2VdLnJldmVyc2UoKSA6IHlSYW5nZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMubmljZVRpY2tzKSB7XG4gICAgICAgIHNjYWxlLm5pY2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMudHlwZSA9PT0gU2NhbGVUeXBlLmxvZykge1xuICAgICAgICBzY2FsZS5iYXNlKGF4aXMub3B0aW9ucy5zY2FsZU9wdGlvbnMuYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVPcHRpb25zLnR5cGUgPT09IFNjYWxlVHlwZS5wb3cpIHtcbiAgICAgICAgc2NhbGUuZXhwb25lbnQoYXhpcy5vcHRpb25zLnNjYWxlT3B0aW9ucy5iYXNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5feVNjYWxlcy5zZXQoaW5kZXgsIHNjYWxlKTtcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuX3lTY2FsZXMpIHtcbiAgICAgIHRoaXMuX2Nsb25lZFkuc2V0KGtleSwgdmFsdWUuY29weSgpKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLl94U2NhbGVzKSB7XG4gICAgICB0aGlzLl9jbG9uZWRYLnNldChrZXksIHZhbHVlLmNvcHkoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkcmF3QXhpcygpIHtcbiAgICBjb25zdCBoYXNWaXNpYmxlQXhpcyA9IFsuLi50aGlzLl94QXhpc0xpc3QsIC4uLnRoaXMuX3lBeGlzTGlzdF0uZmlsdGVyKFxuICAgICAgKGF4aXMpID0+IGF4aXMub3B0aW9ucy52aXNpYmxlXG4gICAgKTtcblxuICAgIGlmICghaGFzVmlzaWJsZUF4aXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZWdhdGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fY2hhcnQuc2VsZWN0QWxsKCcuYXhlcycpLnJlbW92ZSgpO1xuXG4gICAgY29uc3QgYXhlcyA9IHRoaXMuX2NoYXJ0XG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdheGVzJylcbiAgICAgIC5zdHlsZSgnc2hhcGUtcmVuZGVyaW5nJywgJ2NyaXNwRWRnZXMnKTtcblxuICAgIGNvbnN0IFRJQ0tfSEVJR0hUID0gNDA7XG4gICAgY29uc3QgVElDS19XSURUSCA9IDYwO1xuXG4gICAgY29uc3QgdGlja0NvdW50ID0gTWF0aC5yb3VuZCh0aGlzLl9oZWlnaHQgLyBUSUNLX0hFSUdIVCk7XG4gICAgY29uc3QgdGlja0NvdW50WCA9IE1hdGgucm91bmQodGhpcy5fd2lkdGggLyBUSUNLX1dJRFRIKTtcblxuICAgIHRoaXMuX3hBeGlzTGlzdC5mb3JFYWNoKChheGlzKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zOiBBeGlzT3B0aW9ucyA9IGF4aXMub3B0aW9ucztcblxuICAgICAgY29uc3QgdHJhbnNsYXRlID0gYHRyYW5zbGF0ZSgkezB9LCAke1xuICAgICAgICB0aGlzLl9oZWlnaHQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b21cbiAgICAgIH0pYDtcblxuICAgICAgY29uc3QgeCA9IHRoaXMuX3hTY2FsZXMuZ2V0KGF4aXMuaW5kZXgpO1xuXG4gICAgICBjb25zdCB4QXhpcyA9IGQzLmF4aXNCb3R0b20oeCkudGlja3ModGlja0NvdW50WCk7XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnM/LnRpY2tGb3JtYXQpIHtcbiAgICAgICAgeEF4aXMudGlja0Zvcm1hdChheGlzLm9wdGlvbnMudGlja0Zvcm1hdCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnZpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZVggPSB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgICAgPyB0aGlzLm9mZnNldE5vbk9wcG9zaXRlXG4gICAgICAgICAgOiB0aGlzLl9vcHRpb25zLmJvdW5kcy5sZWZ0ICsgdGhpcy5vZmZzZXROb25PcHBvc2l0ZTtcblxuICAgICAgICBheGVzXG4gICAgICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3gtYXhpcy1sYWJlbCcpXG4gICAgICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAgICAgLnN0eWxlKCdmaWxsJywgJ3ZhcigtLWNvbG9yLXRleHQtNTApJylcbiAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgJ3RyYW5zbGF0ZSgnICtcbiAgICAgICAgICAgICAgdGhpcy5fd2lkdGggLyAyICtcbiAgICAgICAgICAgICAgJyAsJyArXG4gICAgICAgICAgICAgICh0aGlzLl9oZWlnaHQgLSB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b20pICtcbiAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdHlsZSgndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAgICAgICAuYXR0cignZHknLCAnM2VtJylcbiAgICAgICAgICAudGV4dChvcHRpb25zLnRpdGxlID8/ICcnKTtcblxuICAgICAgICBheGVzXG4gICAgICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3gtYXhpcyBmb250LWNhcHRpb24nKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLXgtc2NhbGUtaWQnLCBheGlzLmluZGV4KVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2xhdGUpXG4gICAgICAgICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdub25lJylcbiAgICAgICAgICAuY2FsbCh4QXhpcylcbiAgICAgICAgICAuY2FsbCgoXykgPT4ge1xuICAgICAgICAgICAgXy5zZWxlY3QoJy5kb21haW4nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIF8uc2VsZWN0QWxsKCcudGljaycpLmF0dHIoJ2NsYXNzJywgJ2NvbG9yLXRleHQtNTAnKTtcblxuICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgICAgICAgIF8uYXBwZW5kKCdsaW5lJylcbiAgICAgICAgICAgICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgICAgICAgICAgIC5hdHRyKCd5MicsIHRoaXMuX2hlaWdodClcbiAgICAgICAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3goMCl9LCAtJHt0aGlzLl9oZWlnaHR9KWApXG4gICAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAwLjUpXG4gICAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAndmFyKC0tY29sb3ItdGV4dC01MCknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy5hcHBlbmQoJ2xpbmUnKVxuICAgICAgICAgICAgICAuYXR0cigneDEnLCAwKVxuICAgICAgICAgICAgICAuYXR0cigneDInLCB0aGlzLnZpc2libGVDaGFydFdpbmRvd1dpZHRoKVxuICAgICAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3RyYW5zbGF0ZVh9LCAkezB9KWApXG4gICAgICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgMC41KVxuICAgICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICd2YXIoLS1jb2xvci10ZXh0LTUwKScpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5feUF4aXNMaXN0LmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICA/IGB0cmFuc2xhdGUoJHt0aGlzLl93aWR0aCAtIGF4aXMub2Zmc2V0fSwgJHswfSlgXG4gICAgICAgIDogYHRyYW5zbGF0ZSgke2F4aXMub2Zmc2V0fSwgJHswfSlgO1xuXG4gICAgICBjb25zdCB5ID0gdGhpcy5feVNjYWxlcy5nZXQoYXhpcy5pbmRleCk7XG5cbiAgICAgIGNvbnN0IHlBeGlzID0gYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gZDMuYXhpc1JpZ2h0KHkpIDogZDMuYXhpc0xlZnQoeSk7XG5cbiAgICAgIGlmIChheGlzLm9wdGlvbnMudmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgbGFiZWxPZmZzZXQgPSBheGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgICA/IHRoaXMuX3dpZHRoIC0gYXhpcy5vZmZzZXQgKyBheGlzLndpZHRoXG4gICAgICAgICAgOiBheGlzLm9mZnNldCAtIGF4aXMud2lkdGg7XG5cbiAgICAgICAgYXhlc1xuICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgIC5hdHRyKCdjbGFzcycsICd5LWF4aXMtbGFiZWwnKVxuICAgICAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgICAgIC5zdHlsZSgnZmlsbCcsICd2YXIoLS1jb2xvci10ZXh0LTUwKScpXG4gICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsICdyb3RhdGUoLTkwKScpXG4gICAgICAgICAgLmF0dHIoJ3knLCBsYWJlbE9mZnNldClcbiAgICAgICAgICAuYXR0cigneCcsIDAgLSB0aGlzLl9oZWlnaHQgLyAyKVxuICAgICAgICAgIC5hdHRyKCdkeScsIGF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/ICcxMnB4JyA6ICctM3B4JylcbiAgICAgICAgICAuc3R5bGUoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpXG4gICAgICAgICAgLnRleHQoYXhpcy5vcHRpb25zLnRpdGxlID8/ICcnKTtcblxuICAgICAgICBheGVzXG4gICAgICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3ktYXhpcyBmb250LWNhcHRpb24nKVxuICAgICAgICAgIC5hdHRyKCdkYXRhLXktc2NhbGUtaWQnLCBheGlzLmluZGV4KVxuICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2xhdGUpXG4gICAgICAgICAgLmNhbGwoeUF4aXMpXG4gICAgICAgICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdub25lJylcbiAgICAgICAgICAuY2FsbCgoXykgPT4ge1xuICAgICAgICAgICAgXy5zZWxlY3QoJy5kb21haW4nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIF8uc2VsZWN0QWxsKCcudGljaycpLmF0dHIoJ2NsYXNzJywgJ2NvbG9yLXRleHQtNTAnKTtcblxuICAgICAgICAgICAgaWYgKCFuZWdhdGl2ZSkge1xuICAgICAgICAgICAgICBfLmFwcGVuZCgnbGluZScpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ3kxJywgMClcbiAgICAgICAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICAgICAgICd5MicsXG4gICAgICAgICAgICAgICAgICB0aGlzLl9oZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy50b3AgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLmJvdW5kcy5ib3R0b21cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dHIoXG4gICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgIGB0cmFuc2xhdGUoJHswfSwgJHt0aGlzLl9vcHRpb25zLmJvdW5kcy50b3B9KWBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAwLjUpXG4gICAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UnLCAndmFyKC0tY29sb3ItdGV4dC01MCknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|