@libs-ui/components-draw-line 0.2.356-12 → 0.2.356-14
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.
|
@@ -100,6 +100,7 @@ export class LibsUiComponentsDrawLineDirective {
|
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
startProcessDataRow(dataDraw) {
|
|
103
|
+
console.log('12121212dataDraw', dataDraw);
|
|
103
104
|
this.zone.runOutsideAngular(() => {
|
|
104
105
|
dataDraw.forEach((item) => {
|
|
105
106
|
const { pathElement, arrowElement, circleStartElement, circleEndElement } = this.createPathAndArrowElement(item.id);
|
|
@@ -687,4 +688,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
687
688
|
}], outConnected: [{
|
|
688
689
|
type: Output
|
|
689
690
|
}] } });
|
|
690
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1saW5lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmF3LWxpbmUvc3JjL2RyYXctbGluZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9DLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVyRyxjQUFjLHVCQUF1QixDQUFDO0FBTXRDLE1BQU0sT0FBTyxpQ0FBaUM7SUFDbEMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyx1QkFBdUIsQ0FBVTtJQUNuQyxRQUFRLEdBQThCLEVBQUUsQ0FBQztJQUN6Qyx1QkFBdUIsR0FBZ0MsRUFBRSxDQUFDO0lBQzFELGFBQWEsR0FHaEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVWLGFBQWEsQ0FBa0I7SUFDL0IsVUFBVSxDQUFpQjtJQUMzQixhQUFhLENBQVc7SUFFdkIsMEJBQTBCLEdBQTZDLElBQUksWUFBWSxFQUFFLENBQUM7SUFDMUYsWUFB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QUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwSCxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1NBQ3JILENBQUM7UUFDRixLQUFLLENBQUMsRUFBRSxHQUFHO1lBQ1QsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsSCxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUF3QixFQUFFLE1BQWU7UUFDckUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMxRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsS0FBSyxDQUFDLENBQUMsR0FBRztZQUNSLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUU7WUFDMUMsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRTtZQUMxQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFTyx1Q0FBdUMsQ0FBQyxLQUF3QixFQUFFLE1BQWUsRUFBRSxhQUFxQixFQUFFLEtBQWEsRUFBRSxJQUFlO1FBQzlJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTdCLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDdkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRztZQUNSLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxXQUFXLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzdFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxXQUFXLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxFQUFF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QUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhHLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7d0dBdHhCVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQzs7NEZBQWpDLGlDQUFpQztrQkFMN0MsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxxQ0FBcUM7b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFhVSxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSwwQkFBMEI7c0JBQW5DLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIsIGNsb25lRGVlcCwgZ2V0LCBnZXREcmFnRXZlbnRCeUVsZW1lbnQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUF0dHJpYnV0ZURPblBhdGgsIElDaXJjbGVTdHlsZSwgSURyYXdMaW5lRGF0YUlucHV0LCBJTW9EcmF3TGluZUZ1bmN0aW9uQ29udHJvbCwgSVBvaW50LCBJUG9pbnRzLCBJUmVhY2hhYmxlUG9pbnRSYW5nZSwgSVJlY3QsIElWaWV3Qm94Q29uZmlnLCBUWVBFX0RJUkVDVElPTiwgVFlQRV9NT0RFIH0gZnJvbSAnLi9kcmF3LWxpbmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbCB9IGZyb20gJy4vdXRpbC9jb25uZWN0LW5hdmlnYXRpb24tbmV3LWVsZW1lbnQudXRpbCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZHJhdy1saW5lLmludGVyZmFjZSc7XG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpQ29tcG9uZW50c0RyYXdMaW5lRGlyZWN0aXZlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEcmF3TGluZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJvdGVjdGVkIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBpbnRlcnZhbFNjcm9sbFRvRWxlbWVudD86IG51bWJlcjtcbiAgcHJpdmF0ZSBkYXRhRHJhdzogQXJyYXk8SURyYXdMaW5lRGF0YUlucHV0PiA9IFtdO1xuICBwcml2YXRlIGRhdGFSZWFjaGFibGVQb2ludFJhbmdlOiBBcnJheTxJUmVhY2hhYmxlUG9pbnRSYW5nZT4gPSBbXTtcbiAgcHJpdmF0ZSBvbkRyYXdMaW5lRW5kOiBTdWJqZWN0PHtcbiAgICBkYXRhTGluZTogSURyYXdMaW5lRGF0YUlucHV0O1xuICAgIGV2ZW50OiBNb3VzZUV2ZW50O1xuICB9PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KCkgdmlld0JveENvbmZpZz86IElWaWV3Qm94Q29uZmlnO1xuICBASW5wdXQoKSBzdmdFbGVtZW50ITogU1ZHU1ZHRWxlbWVudDtcbiAgQElucHV0KCkgZHJhd1JlY3REZWJ1Zz86IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIG91dERyYXdMaW5lRnVuY3Rpb25Db250cm9sOiBFdmVudEVtaXR0ZXI8SU1vRHJhd0xpbmVGdW5jdGlvbkNvbnRyb2w+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb3V0Q29ubmVjdGVkOiBFdmVudEVtaXR0ZXI8eyBkYXRhTGluZTogSURyYXdMaW5lRGF0YUlucHV0OyBkYXRhUmVhY2hhYmxlUG9pbnRSYW5nZTogSVJlYWNoYWJsZVBvaW50UmFuZ2UgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdmdFbGVtZW50ID0gdGhpcy5zdmdFbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnc3ZnJyk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kKHRoaXMuc3ZnRWxlbWVudCk7XG4gICAgdGhpcy5vdXREcmF3TGluZUZ1bmN0aW9uQ29udHJvbC5lbWl0KHRoaXMuRnVuY3Rpb25zQ29udHJvbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZ1bmN0aW9uc0NvbnRyb2woKTogSU1vRHJhd0xpbmVGdW5jdGlvbkNvbnRyb2wge1xuICAgIHJldHVybiB7XG4gICAgICBzZXREYXRhOiB0aGlzLnNldERhdGEuYmluZCh0aGlzKSxcbiAgICAgIHNldFJlYWNoYWJsZVBvaW50UmFuZ2U6IHRoaXMuc2V0UmVhY2hhYmxlUG9pbnRSYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgcmVtb3ZlTGluZTogdGhpcy5yZW1vdmVMaW5lLmJpbmQodGhpcyksXG4gICAgICByZW1vdmVSZWFjaGFibGVQb2ludFJhbmdlOiB0aGlzLnJlbW92ZVJlYWNoYWJsZVBvaW50UmFuZ2UuYmluZCh0aGlzKSxcbiAgICAgIHVwZGF0ZVZpZXdCb3g6IHRoaXMudXBkYXRlVmlld0JveC5iaW5kKHRoaXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldERhdGEoZGF0YTogQXJyYXk8SURyYXdMaW5lRGF0YUlucHV0Pikge1xuICAgIGNvbnN0IG5ld0RhdGE6IEFycmF5PElEcmF3TGluZURhdGFJbnB1dD4gPSBbXTtcblxuICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmRhdGFEcmF3LmZpbmQoXG4gICAgICAgICAgKGRhdGFEcmF3KSA9PiBkYXRhRHJhdy5pZCA9PT0gaXRlbS5pZCAmJiBpdGVtLnBvaW50cy5zdGFydC54ID09PSBkYXRhRHJhdy5wb2ludHMuc3RhcnQueCAmJiBpdGVtLnBvaW50cy5zdGFydC55ID09PSBkYXRhRHJhdy5wb2ludHMuc3RhcnQueSAmJiBpdGVtLnBvaW50cy5lbmQueCA9PT0gZGF0YURyYXcucG9pbnRzLmVuZC54ICYmIGl0ZW0ucG9pbnRzLmVuZC55ID09PSBkYXRhRHJhdy5wb2ludHMuZW5kLnlcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW1DbG9uZSA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgaXRlbUNsb25lLnJlZiA9IGl0ZW07XG4gICAgICBuZXdEYXRhLnB1c2goaXRlbUNsb25lKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YURyYXcucHVzaCguLi5uZXdEYXRhKTtcbiAgICB0aGlzLnN0YXJ0UHJvY2Vzc0RhdGFSb3cobmV3RGF0YSk7XG4gIH1cblxuICBzZXRSZWFjaGFibGVQb2ludFJhbmdlKGRhdGE6IEFycmF5PElSZWFjaGFibGVQb2ludFJhbmdlPikge1xuICAgIGNvbnN0IG5ld0RhdGE6IEFycmF5PElSZWFjaGFibGVQb2ludFJhbmdlPiA9IFtdO1xuXG4gICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAodGhpcy5kYXRhUmVhY2hhYmxlUG9pbnRSYW5nZS5maW5kKChkYXRhRHJhdykgPT4gZGF0YURyYXcuaWQgPT09IGl0ZW0uaWQgfHwgKGl0ZW0ueCA9PT0gZGF0YURyYXcueCAmJiBpdGVtLnkgPT09IGRhdGFEcmF3LnkpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtQ2xvbmUgPSBjbG9uZURlZXAoaXRlbSk7XG5cbiAgICAgIGl0ZW1DbG9uZS5yZWYgPSBpdGVtO1xuICAgICAgbmV3RGF0YS5wdXNoKGl0ZW1DbG9uZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFSZWFjaGFibGVQb2ludFJhbmdlLnB1c2goLi4ubmV3RGF0YSk7XG4gICAgdGhpcy5zdGFydFByb2Nlc3NEYXRhUmVhY2hhYmxlUG9pbnRSYW5nZShuZXdEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGluZShpZDogc3RyaW5nLCBwb2ludHM/OiBBcnJheTxJUG9pbnRzPikge1xuICAgIGNvbnN0IGRhdGFEcmF3QnlJZCA9IHRoaXMuZGF0YURyYXcuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCk7XG5cbiAgICBpZiAoIWRhdGFEcmF3QnlJZD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVtb3ZlQnlJdGVtID0gKGl0ZW06IElEcmF3TGluZURhdGFJbnB1dCkgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVFbGVtZW50T2ZQb2ludHMoaXRlbS5wb2ludHMpO1xuICAgICAgaXRlbS5wb2ludHMuc2VwYXJhdGVkUG9pbnRzPy5mb3JFYWNoKChzZXBhcmF0ZWRQb2ludHMpID0+IHRoaXMucmVtb3ZlRWxlbWVudE9mUG9pbnRzKHNlcGFyYXRlZFBvaW50cykpO1xuICAgIH07XG5cbiAgICBpZiAoIXBvaW50cz8ubGVuZ3RoKSB7XG4gICAgICBkYXRhRHJhd0J5SWQuZm9yRWFjaCgoaXRlbSkgPT4gcmVtb3ZlQnlJdGVtKGl0ZW0pKTtcbiAgICAgIHRoaXMuZGF0YURyYXcgPSB0aGlzLmRhdGFEcmF3LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gaWQpO1xuICAgICAgdGhpcy51cGRhdGVWaWV3Qm94KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwb2ludHMuZm9yRWFjaCgocG9pbnQpID0+IHtcbiAgICAgIGNvbnN0IGRhdGFEcmF3UmVtb3ZlQnlQb2ludCA9IGRhdGFEcmF3QnlJZC5maW5kKChpdGVtKSA9PiBpdGVtLnBvaW50cy5zdGFydC54ID09PSBwb2ludC5zdGFydC54ICYmIGl0ZW0ucG9pbnRzLnN0YXJ0LnkgPT09IHBvaW50LnN0YXJ0LnkgJiYgaXRlbS5wb2ludHMuZW5kLnggPT09IHBvaW50LmVuZC54ICYmIGl0ZW0ucG9pbnRzLmVuZC55ID09PSBwb2ludC5lbmQueSk7XG5cbiAgICAgIGlmIChkYXRhRHJhd1JlbW92ZUJ5UG9pbnQpIHtcbiAgICAgICAgZGF0YURyYXdSZW1vdmVCeVBvaW50LmlzUmVtb3ZlID0gdHJ1ZTtcbiAgICAgICAgcmVtb3ZlQnlJdGVtKGRhdGFEcmF3UmVtb3ZlQnlQb2ludCk7XG4gICAgICAgIHRoaXMuZGF0YURyYXcgPSB0aGlzLmRhdGFEcmF3LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gaWQgJiYgIWl0ZW0uaXNSZW1vdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVmlld0JveCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVSZWFjaGFibGVQb2ludFJhbmdlKGlkczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuY2xlYXJSZWN0KCk7XG4gICAgaWYgKCFpZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICBjb25zdCBpdGVtUmVtb3ZlID0gdGhpcy5kYXRhUmVhY2hhYmxlUG9pbnRSYW5nZT8uZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xuXG4gICAgICBpZiAoIWl0ZW1SZW1vdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXRlbVJlbW92ZS5vbkRlc3Ryb3lFdmVudD8ubmV4dCgpO1xuICAgICAgaXRlbVJlbW92ZS5lbGVtZW50Py5yZW1vdmUoKTtcbiAgICAgIHRoaXMuZGF0YVJlYWNoYWJsZVBvaW50UmFuZ2UgPSB0aGlzLmRhdGFSZWFjaGFibGVQb2ludFJhbmdlPy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQcm9jZXNzRGF0YVJvdyhkYXRhRHJhdzogQXJyYXk8SURyYXdMaW5lRGF0YUlucHV0Pikge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBkYXRhRHJhdy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcGF0aEVsZW1lbnQsIGFycm93RWxlbWVudCwgY2lyY2xlU3RhcnRFbGVtZW50LCBjaXJjbGVFbmRFbGVtZW50IH0gPSB0aGlzLmNyZWF0ZVBhdGhBbmRBcnJvd0VsZW1lbnQoaXRlbS5pZCk7XG5cbiAgICAgICAgaXRlbS5wb2ludHMub2JzdGFjbGVSZWN0Py5mb3JFYWNoKChkYXRhKSA9PiB0aGlzLmFkZFJlY3QoJ3JlY3QnLCBkYXRhKSk7XG4gICAgICAgIGl0ZW0ucG9pbnRzLnBhdGhFbGVtZW50ID0gcGF0aEVsZW1lbnQ7XG4gICAgICAgIGl0ZW0ucG9pbnRzLmFycm93RWxlbWVudCA9IGFycm93RWxlbWVudDtcbiAgICAgICAgaWYgKGl0ZW0uc3RhcnRDaXJjbGUpIHtcbiAgICAgICAgICBpdGVtLnBvaW50cy5jaXJjbGVTdGFydEVsZW1lbnQgPSBjaXJjbGVTdGFydEVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZChjaXJjbGVTdGFydEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmVuZENpcmNsZSkge1xuICAgICAgICAgIGl0ZW0ucG9pbnRzLmNpcmNsZUVuZEVsZW1lbnQgPSBjaXJjbGVFbmRFbGVtZW50O1xuICAgICAgICAgIHRoaXMuc3ZnRWxlbWVudC5hcHBlbmQoY2lyY2xlRW5kRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbS5wb2ludHMub25EZXN0cm95RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICB0aGlzLmRyYXdMaW5lKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdCb3goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQcm9jZXNzRGF0YVJlYWNoYWJsZVBvaW50UmFuZ2UoZGF0YTogQXJyYXk8SVJlYWNoYWJsZVBvaW50UmFuZ2U+KSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLm9uRGVzdHJveUV2ZW50ID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgaXRlbS5lbGVtZW50ID0gdGhpcy5jcmVhdGVQYXRoQW5kQXJyb3dFbGVtZW50KGl0ZW0uaWQpLmNpcmNsZUVuZEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc3ZnRWxlbWVudC5hcHBlbmQoaXRlbS5lbGVtZW50KTtcbiAgICAgICAgdGhpcy51cGRhdGVBdHRyaWJ1dGVDaXJjbGUoaXRlbS5lbGVtZW50LCBpdGVtLmlkLCBpdGVtLCBpdGVtLnN0eWxlKTtcbiAgICAgICAgdGhpcy5vbkRyYXdMaW5lRW5kLnBpcGUodGFrZVVudGlsKGl0ZW0ub25EZXN0cm95RXZlbnQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudERhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGRhdGFMaW5lLCBldmVudCB9ID0gZXZlbnREYXRhO1xuXG4gICAgICAgICAgaWYgKCFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50LCBpdGVtLmVsZW1lbnQgYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudCkgfHwgIWRhdGFMaW5lLnJlZiB8fCAhaXRlbS5yZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpdGVtLmlkQ29ubmVjdGVkID0gZXZlbnREYXRhLmRhdGFMaW5lLmlkO1xuICAgICAgICAgIGV2ZW50RGF0YS5kYXRhTGluZS5pZENvbm5lY3RlZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgdGhpcy5vdXRDb25uZWN0ZWQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhTGluZTogZGF0YUxpbmUucmVmLFxuICAgICAgICAgICAgZGF0YVJlYWNoYWJsZVBvaW50UmFuZ2U6IGl0ZW0ucmVmLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy51cGRhdGVWaWV3Qm94KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUVsZW1lbnRPZlBvaW50cyhwb2ludHM6IElQb2ludHMpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgcG9pbnRzLm9uRGVzdHJveUV2ZW50Py5uZXh0KCk7XG4gICAgICBwb2ludHMub25EZXN0cm95RXZlbnQ/LmNvbXBsZXRlKCk7XG4gICAgICBwb2ludHM/LnBhdGhFbGVtZW50Py5yZW1vdmUoKTtcbiAgICAgIHBvaW50cz8uYXJyb3dFbGVtZW50Py5yZW1vdmUoKTtcbiAgICAgIHBvaW50cz8uY2lyY2xlU3RhcnRFbGVtZW50Py5yZW1vdmUoKTtcbiAgICAgIHBvaW50cy5jaXJjbGVFbmRFbGVtZW50Py5yZW1vdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd0xpbmUoZGF0YTogSURyYXdMaW5lRGF0YUlucHV0KSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IHsgcG9pbnRzLCBtb2RlIH0gPSBkYXRhO1xuICAgICAgbGV0IHsgY3VydmUgfSA9IGRhdGE/LmxpbmVTdHlsZSB8fCB7fTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdxdWFydC1pbicpIHtcbiAgICAgICAgY3VydmUgPSBjdXJ2ZSA/PyAxMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByZUxlbmd0aFNlcGFyYXRlZFBvaW50cyA9IHBvaW50cy5zZXBhcmF0ZWRQb2ludHM/Lmxlbmd0aDtcblxuICAgICAgcG9pbnRzLnNlcGFyYXRlZFBvaW50cz8uZm9yRWFjaCgoc2VwYXJhdGVkUG9pbnRzKSA9PiB0aGlzLnJlbW92ZUVsZW1lbnRPZlBvaW50cyhzZXBhcmF0ZWRQb2ludHMpKTtcbiAgICAgIHBvaW50cy5zZXBhcmF0ZWRQb2ludHMgPSBbXTtcbiAgICAgIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbC5TVEFSVF9NT0RFID0gJ3JpZ2h0LWxlZnQnO1xuICAgICAgaWYgKGRhdGEuc3RhcnRFbmRNb2RlKSB7XG4gICAgICAgIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbC5TVEFSVF9NT0RFID0gZGF0YS5zdGFydEVuZE1vZGU7XG4gICAgICB9XG4gICAgICB0aGlzLmNhbGN1bGF0b3JTZXBhcmF0ZWRQb2ludHMoZGF0YS5pZCwgcG9pbnRzLCBjdXJ2ZSB8fCAxMCwgcG9pbnRzLnNlcGFyYXRlZFBvaW50cywgcG9pbnRzLm9ic3RhY2xlUmVjdCB8fCBbXSk7XG4gICAgICBpZiAoIXByZUxlbmd0aFNlcGFyYXRlZFBvaW50cyAmJiBwb2ludHMuc2VwYXJhdGVkUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnJlbW92ZUVsZW1lbnRPZlBvaW50cyhwb2ludHMpO1xuICAgICAgICBjb25zdCB7IHBhdGhFbGVtZW50LCBhcnJvd0VsZW1lbnQsIGNpcmNsZVN0YXJ0RWxlbWVudCwgY2lyY2xlRW5kRWxlbWVudCB9ID0gdGhpcy5jcmVhdGVQYXRoQW5kQXJyb3dFbGVtZW50KGRhdGEuaWQpO1xuXG4gICAgICAgIHBvaW50cy5wYXRoRWxlbWVudCA9IHBhdGhFbGVtZW50O1xuICAgICAgICBwb2ludHMuYXJyb3dFbGVtZW50ID0gYXJyb3dFbGVtZW50O1xuICAgICAgICBpZiAoZGF0YS5zdGFydENpcmNsZSkge1xuICAgICAgICAgIHBvaW50cy5jaXJjbGVTdGFydEVsZW1lbnQgPSBjaXJjbGVTdGFydEVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZChjaXJjbGVTdGFydEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmVuZENpcmNsZSkge1xuICAgICAgICAgIHBvaW50cy5jaXJjbGVFbmRFbGVtZW50ID0gY2lyY2xlRW5kRWxlbWVudDtcbiAgICAgICAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kKGNpcmNsZUVuZEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50cy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFwb2ludHMuc2VwYXJhdGVkUG9pbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5idWlsZFBhdGhBbmREcmF3KGRhdGEsIHBvaW50cywgbW9kZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGF0aCA9ICcnO1xuXG4gICAgICBwb2ludHMuc2VwYXJhdGVkUG9pbnRzLmZvckVhY2goKHNlcGFyYXRlZFBvaW50cykgPT4ge1xuICAgICAgICBwYXRoICs9IHRoaXMuYnVpbGRQYXRoQW5kRHJhd1NlcGFyYXRlZFBvaW50cyhkYXRhLCBzZXBhcmF0ZWRQb2ludHMsIHNlcGFyYXRlZFBvaW50cy5tb2RlIHx8IG1vZGUpO1xuICAgICAgfSk7XG4gICAgICBpZiAoIXBvaW50cy5wYXRoRWxlbWVudCB8fCAhcG9pbnRzLnBhdGhFbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgY29uc3QgcGF0aEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BhdGgnKTtcblxuICAgICAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kKHBhdGhFbGVtZW50KTtcbiAgICAgICAgcG9pbnRzLnBhdGhFbGVtZW50ID0gcGF0aEVsZW1lbnQ7XG4gICAgICB9XG4gICAgICBjb25zdCBzdHlsZUNvbmZpZyA9IHtcbiAgICAgICAgc3Ryb2tlOiBkYXRhLmxpbmVTdHlsZT8uc3Ryb2tlID8/ICcjOUNBMkFEJyxcbiAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBkYXRhLmxpbmVTdHlsZT8uc3Ryb2tlRGFzaGFycmF5LFxuICAgICAgICBzdHJva2VXaWR0aDogZGF0YS5saW5lU3R5bGU/LnN0cm9rZVdpZHRoID8/ICcxcHgnLFxuICAgICAgICBmaWxsOiBkYXRhLmxpbmVTdHlsZT8uZmlsbCA/PyAnbm9uZScsXG4gICAgICAgIGN1cnZlOiBkYXRhLmxpbmVTdHlsZT8uY3VydmUgPz8gMTAsXG4gICAgICAgIGRpc3RhbmNlUG9pbnQ6IGRhdGEubGluZVN0eWxlPy5kaXN0YW5jZVBvaW50ID8/IDEwLFxuICAgICAgfTtcblxuICAgICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHN0eWxlQ29uZmlnLnN0cm9rZSk7XG4gICAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHN0eWxlQ29uZmlnLmZpbGwpO1xuICAgICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsIHN0eWxlQ29uZmlnLnN0cm9rZVdpZHRoKTtcbiAgICAgIGlmIChzdHlsZUNvbmZpZy5zdHJva2VEYXNoYXJyYXkpIHtcbiAgICAgICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1kYXNoYXJyYXknLCBzdHlsZUNvbmZpZy5zdHJva2VEYXNoYXJyYXkpO1xuICAgICAgfVxuICAgICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2QnLCBwYXRoKTtcbiAgICAgIHRoaXMuZHJhd1JlY3RBbmRJbml0RXZlbnQoZGF0YSwgbW9kZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZpZXdCb3godmlld0JveENvbmZpZz86IElWaWV3Qm94Q29uZmlnKSB7XG4gICAgaWYgKHZpZXdCb3hDb25maWcpIHtcbiAgICAgIHRoaXMudmlld0JveENvbmZpZyA9IHZpZXdCb3hDb25maWc7XG4gICAgfVxuICAgIGNvbnN0IHhQb2ludHM6IFNldDxudW1iZXI+ID0gbmV3IFNldChbMF0pO1xuICAgIGNvbnN0IHlQb2ludHM6IFNldDxudW1iZXI+ID0gbmV3IFNldChbMF0pO1xuXG4gICAgY29uc3QgYWRkUG9pbnRzID0gKHBvaW50czogSVBvaW50cykgPT4ge1xuICAgICAgeFBvaW50cy5hZGQocG9pbnRzLnN0YXJ0LngpO1xuICAgICAgeFBvaW50cy5hZGQocG9pbnRzLmVuZC54KTtcbiAgICAgIHlQb2ludHMuYWRkKHBvaW50cy5zdGFydC55KTtcbiAgICAgIHlQb2ludHMuYWRkKHBvaW50cy5lbmQueSk7XG4gICAgfTtcblxuICAgIHRoaXMuZGF0YURyYXc/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHBvaW50cyA9IGl0ZW0ucG9pbnRzO1xuXG4gICAgICBhZGRQb2ludHMocG9pbnRzKTtcbiAgICAgIHBvaW50cy5zZXBhcmF0ZWRQb2ludHM/LmZvckVhY2goKHNlcGFyYXRlZFBvaW50cykgPT4gYWRkUG9pbnRzKHNlcGFyYXRlZFBvaW50cykpO1xuICAgICAgcG9pbnRzLm9ic3RhY2xlUmVjdD8uZm9yRWFjaCgob2JzdGFjbGVSZWN0KSA9PiB7XG4gICAgICAgIGFkZFBvaW50cyh7XG4gICAgICAgICAgc3RhcnQ6IHsgeDogb2JzdGFjbGVSZWN0LnggLSAob2JzdGFjbGVSZWN0LmdhcFhPYnN0YWNsZVJlY3QgfHwgOCksIHk6IG9ic3RhY2xlUmVjdC55IC0gKG9ic3RhY2xlUmVjdC5nYXBZT2JzdGFjbGVSZWN0IHx8IDgpIH0sXG4gICAgICAgICAgZW5kOiB7IHg6IG9ic3RhY2xlUmVjdC54ICsgb2JzdGFjbGVSZWN0LndpZHRoICsgKG9ic3RhY2xlUmVjdC5nYXBYT2JzdGFjbGVSZWN0IHx8IDgpICogMiwgeTogb2JzdGFjbGVSZWN0LnkgKyBvYnN0YWNsZVJlY3QuaGVpZ2h0ICsgKG9ic3RhY2xlUmVjdC5nYXBZT2JzdGFjbGVSZWN0IHx8IDgpICogMiB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgeE1heCA9IHRoaXMudmlld0JveENvbmZpZz8ud2lkdGggPz8gKCh4UG9pbnRzLnNpemUgPyBNYXRoLm1heCguLi54UG9pbnRzKSA6IDApICsgMTQpO1xuICAgIGNvbnN0IHlNYXggPSB0aGlzLnZpZXdCb3hDb25maWc/LmhlaWdodCA/PyAoKHlQb2ludHMuc2l6ZSA/IE1hdGgubWF4KC4uLnlQb2ludHMpIDogMCkgKyAxNCk7XG5cbiAgICBpZiAoIXRoaXMudmlld0JveENvbmZpZz8uaWdub3JlVmlld0JveCkge1xuICAgICAgY29uc3QgcmVjdFN2Z0VsZW1lbnQgPSB0aGlzLnN2Z0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIHRoaXMuc3ZnRWxlbWVudD8uc2V0QXR0cmlidXRlKCd2aWV3Qm94JywgYCR7dGhpcy52aWV3Qm94Q29uZmlnPy5taW5YID8/IHJlY3RTdmdFbGVtZW50Lnh9ICR7dGhpcy52aWV3Qm94Q29uZmlnPy5taW5ZID8/IHJlY3RTdmdFbGVtZW50Lnl9ICR7eE1heH0gJHt5TWF4fWApO1xuICAgIH1cbiAgICB0aGlzLnN2Z0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHt4TWF4ID8/IDB9YCk7XG4gICAgdGhpcy5zdmdFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke3lNYXggPz8gMH1gKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQb2ludEluc2lkZVNxdWFyZShwb2ludDogSVBvaW50LCBzcXVhcmU6IElSZWN0KTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBwb2ludDtcbiAgICBjb25zdCB7IHg6IHNxdWFyZVgsIHk6IHNxdWFyZVksIHdpZHRoLCBoZWlnaHQgfSA9IHNxdWFyZTtcblxuICAgIHJldHVybiB4ID49IHNxdWFyZVggJiYgeCA8PSBzcXVhcmVYICsgd2lkdGggJiYgeSA+PSBzcXVhcmVZICYmIHkgPD0gc3F1YXJlWSArIGhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRvclNlcGFyYXRlZFBvaW50cyhuYW1lOiBzdHJpbmcsIHBvaW50czogSVBvaW50cywgY3VydmU6IG51bWJlciwgc2VwYXJhdGVkUG9pbnRzOiBBcnJheTxJUG9pbnRzPiwgb2JzdGFjbGVSZWN0czogQXJyYXk8SVJlY3Q+KSB7XG4gICAgaWYgKCFvYnN0YWNsZVJlY3RzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRTdGFydCA9IG9ic3RhY2xlUmVjdHMuZmluZCgoaXRlbSkgPT4gdGhpcy5pc1BvaW50SW5zaWRlU3F1YXJlKHBvaW50cy5zdGFydCwgaXRlbSkpO1xuICAgIGNvbnN0IGVsZW1lbnRFbmQgPSBvYnN0YWNsZVJlY3RzLmZpbmQoKGl0ZW0pID0+IHRoaXMuaXNQb2ludEluc2lkZVNxdWFyZShwb2ludHMuZW5kLCBpdGVtKSk7XG5cbiAgICBpZiAodGhpcy52aWV3Qm94Q29uZmlnPy5tYXJnaW5CZXR3ZWVuRWxlbWVudCkge1xuICAgICAgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsLkVMRU1FTlRfTUFSR0lOX0JFVFdFRU5fQlJBTkNIX0RFRkFVTFQgPSB0aGlzLnZpZXdCb3hDb25maWc/Lm1hcmdpbkJldHdlZW5FbGVtZW50ID8/IDMyO1xuICAgIH1cbiAgICBNb0NhbnZhc0Nvbm5lY3ROYXZpZ2F0aW9uTmV3RWxlbWVudFV0aWwuc2V0WFlDb25uZWN0RWxlbWVudHMoZWxlbWVudFN0YXJ0ID8/IHsgLi4ucG9pbnRzLnN0YXJ0LCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0sIGVsZW1lbnRFbmQgPz8geyAuLi5wb2ludHMuZW5kLCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0sIG9ic3RhY2xlUmVjdHMsIHNlcGFyYXRlZFBvaW50cywgY3VydmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBhdGhBbmREcmF3KGRhdGE6IElEcmF3TGluZURhdGFJbnB1dCwgcG9pbnRzOiBJUG9pbnRzLCBtb2RlPzogVFlQRV9NT0RFKSB7XG4gICAgbGV0IGRQYXRoID0ge30gYXMgSUF0dHJpYnV0ZURPblBhdGg7XG4gICAgY29uc3Qgc3R5bGVDb25maWcgPSB7XG4gICAgICBzdHJva2U6IGRhdGEubGluZVN0eWxlPy5zdHJva2UgPz8gJyM5Q0EyQUQnLFxuICAgICAgc3Ryb2tlRGFzaGFycmF5OiBkYXRhLmxpbmVTdHlsZT8uc3Ryb2tlRGFzaGFycmF5LFxuICAgICAgc3Ryb2tlV2lkdGg6IGRhdGEubGluZVN0eWxlPy5zdHJva2VXaWR0aCA/PyAnMXB4JyxcbiAgICAgIGZpbGw6IGRhdGEubGluZVN0eWxlPy5maWxsID8/ICdub25lJyxcbiAgICAgIGN1cnZlOiBkYXRhLmxpbmVTdHlsZT8uY3VydmUgPz8gMTAsXG4gICAgICBkaXN0YW5jZVBvaW50OiBkYXRhLmxpbmVTdHlsZT8uZGlzdGFuY2VQb2ludCA/PyAxMCxcbiAgICB9O1xuXG4gICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHN0eWxlQ29uZmlnLnN0cm9rZSk7XG4gICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBzdHlsZUNvbmZpZy5maWxsKTtcbiAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgc3R5bGVDb25maWcuc3Ryb2tlV2lkdGgpO1xuICAgIGlmIChzdHlsZUNvbmZpZy5zdHJva2VEYXNoYXJyYXkpIHtcbiAgICAgIHBvaW50cy5wYXRoRWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaGFycmF5Jywgc3R5bGVDb25maWcuc3Ryb2tlRGFzaGFycmF5KTtcbiAgICB9XG4gICAgbGV0IHsgY3VydmUsIGRpc3RhbmNlUG9pbnQgfSA9IHN0eWxlQ29uZmlnO1xuXG4gICAgbW9kZSA9IG1vZGUgfHwgJ3F1YXJ0LWluJztcbiAgICBpZiAobW9kZSAhPT0gJ3F1YXJ0LWluJykge1xuICAgICAgY3VydmUgPSBjdXJ2ZSA/PyAxMDtcbiAgICAgIGRpc3RhbmNlUG9pbnQgPSBkaXN0YW5jZVBvaW50ID8/IDEwO1xuICAgIH1cbiAgICBpZiAobW9kZSA9PT0gJ3F1YXJ0LWluJyB8fCBwb2ludHMuc3RhcnQueCA9PT0gcG9pbnRzLmVuZC54IHx8IHBvaW50cy5zdGFydC55ID09PSBwb2ludHMuZW5kLnkpIHtcbiAgICAgIHRoaXMuZHJhd0JhbGFuY2VkQ3VydmUoZFBhdGgsIHBvaW50cyk7XG5cbiAgICAgIGlmIChtb2RlID09PSAncXVhcnQtaW4nKSB7XG4gICAgICAgIGRQYXRoID0ge30gYXMgSUF0dHJpYnV0ZURPblBhdGg7XG4gICAgICAgIHRoaXMuZHJhd0JlbmRCb3RoRW5kc0N1cnZlKGRQYXRoLCBwb2ludHMpO1xuICAgICAgfVxuICAgICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2QnLCB0aGlzLmJ1aWxEQXR0cmlidXRlVG9TdHJpbmcoZFBhdGgpKTtcbiAgICAgIHRoaXMuZHJhd1JlY3RBbmRJbml0RXZlbnQoZGF0YSwgbW9kZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jYWxjdWxhdG9yRGlzdGFuY2VQb2ludEFuZEN1cnZlKHBvaW50cywgZGlzdGFuY2VQb2ludCwgY3VydmUsIG1vZGUpO1xuXG4gICAgZGlzdGFuY2VQb2ludCA9IHJlc3VsdC5kaXN0YW5jZVBvaW50O1xuICAgIGN1cnZlID0gcmVzdWx0LmN1cnZlO1xuXG4gICAgdGhpcy5idWlsZERBdHRyaWJ1dGVCeVBvaW50RW5kTW9kZUhvcml6b250YWwoZFBhdGgsIHBvaW50cywgZGlzdGFuY2VQb2ludCB8fCAwLCBjdXJ2ZSB8fCAwLCBtb2RlKTtcbiAgICB0aGlzLmJ1aWxkREF0dHJpYnV0ZUJ5UG9pbnRFbmRNb2RlVmVydGljYWwoZFBhdGgsIHBvaW50cywgZGlzdGFuY2VQb2ludCB8fCAwLCBjdXJ2ZSB8fCAwLCBtb2RlKTtcbiAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZCcsIHRoaXMuYnVpbERBdHRyaWJ1dGVUb1N0cmluZyhkUGF0aCkpO1xuICAgIHRoaXMuZHJhd1JlY3RBbmRJbml0RXZlbnQoZGF0YSwgbW9kZSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0b3JEaXN0YW5jZVBvaW50QW5kQ3VydmUocG9pbnRzOiBJUG9pbnRzLCBkaXN0YW5jZVBvaW50OiBudW1iZXIsIGN1cnZlOiBudW1iZXIsIG1vZGU6IFRZUEVfTU9ERSkge1xuICAgIGlmICghbW9kZS5pbmNsdWRlcygndmVydGljYWwnKSAmJiAhbW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpKSB7XG4gICAgICByZXR1cm4geyBjdXJ2ZSwgZGlzdGFuY2VQb2ludCB9O1xuICAgIH1cbiAgICBjb25zdCBnYXBYID0gTWF0aC5hYnMocG9pbnRzLnN0YXJ0LnggLSBwb2ludHMuZW5kLngpO1xuICAgIGNvbnN0IGdhcFkgPSBNYXRoLmFicyhwb2ludHMuc3RhcnQueSAtIHBvaW50cy5lbmQueSk7XG4gICAgY29uc3QgbXVsdGlwbGllckN1cnZlID0gbW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpID8gMSA6IDI7XG4gICAgY29uc3QgbXVsdGlwbGllckRpc3RhbmNlID0gbW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpID8gMiA6IDE7XG5cbiAgICBpZiAoIW1vZGUuaW5jbHVkZXMoJ3NpbmdsZS1jdXJ2ZScpKSB7XG4gICAgICBpZiAoZ2FwWCA8IGRpc3RhbmNlUG9pbnQgKiBtdWx0aXBsaWVyRGlzdGFuY2UgKyBjdXJ2ZSAqIG11bHRpcGxpZXJDdXJ2ZSkge1xuICAgICAgICBkaXN0YW5jZVBvaW50ID0gY3VydmUgPSBnYXBYIC8gMztcbiAgICAgIH1cbiAgICAgIGlmIChnYXBZIDwgZGlzdGFuY2VQb2ludCAqIG11bHRpcGxpZXJEaXN0YW5jZSArIGN1cnZlICogbXVsdGlwbGllckN1cnZlKSB7XG4gICAgICAgIGRpc3RhbmNlUG9pbnQgPSBjdXJ2ZSA9IGdhcFkgLyAzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjdXJ2ZSwgZGlzdGFuY2VQb2ludCB9O1xuICAgIH1cbiAgICBjb25zdCBtaW5HYXAgPSBNYXRoLm1pbihnYXBYLCBnYXBZKTtcblxuICAgIGlmIChtaW5HYXAgPCBkaXN0YW5jZVBvaW50KSB7XG4gICAgICBkaXN0YW5jZVBvaW50ID0gbWluR2FwO1xuICAgIH1cbiAgICBpZiAobWluR2FwIDwgY3VydmUpIHtcbiAgICAgIGN1cnZlID0gbWluR2FwO1xuICAgIH1cblxuICAgIHJldHVybiB7IGN1cnZlLCBkaXN0YW5jZVBvaW50IH07XG4gIH1cblxuICBwcml2YXRlIGRyYXdSZWN0QW5kSW5pdEV2ZW50KGRhdGE6IElEcmF3TGluZURhdGFJbnB1dCwgbW9kZTogVFlQRV9NT0RFKSB7XG4gICAgY29uc3QgcG9pbnRzID0gZGF0YS5wb2ludHM7XG5cbiAgICB0aGlzLnVwZGF0ZVN0eWxlQXJyb3cocG9pbnRzLCBtb2RlLCBkYXRhKTtcbiAgICBpZiAoZGF0YS5zdGFydENpcmNsZSAmJiBwb2ludHMuY2lyY2xlU3RhcnRFbGVtZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZUF0dHJpYnV0ZUNpcmNsZShwb2ludHMuY2lyY2xlU3RhcnRFbGVtZW50LCBkYXRhLmlkLCBwb2ludHMuc3RhcnQsIGRhdGEuc3RhcnRDaXJjbGVTdHlsZSk7XG4gICAgfVxuICAgIGlmIChkYXRhLmVuZENpcmNsZSAmJiBwb2ludHMuY2lyY2xlRW5kRWxlbWVudCkge1xuICAgICAgdGhpcy51cGRhdGVBdHRyaWJ1dGVDaXJjbGUocG9pbnRzLmNpcmNsZUVuZEVsZW1lbnQsIGRhdGEuaWQsIHBvaW50cy5lbmQsIGRhdGEuZW5kQ2lyY2xlU3R5bGUpO1xuICAgIH1cbiAgICB0aGlzLmluaXRFdmVudChkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd0JhbGFuY2VkQ3VydmUoZFBhdGg6IElBdHRyaWJ1dGVET25QYXRoLCBwb2ludHM6IElQb2ludHMpIHtcbiAgICBkUGF0aC5NID0geyB4OiBwb2ludHMuc3RhcnQueCwgeTogcG9pbnRzLnN0YXJ0LnkgfTtcbiAgICBkUGF0aC5RID0gW1xuICAgICAgeyB4OiBwb2ludHMuc3RhcnQueCArIChwb2ludHMuZW5kLnggLSBwb2ludHMuc3RhcnQueCkgLyA0LCB5OiBwb2ludHMuc3RhcnQueSArIChwb2ludHMuZW5kLnkgLSBwb2ludHMuc3RhcnQueSkgLyAyIH0sXG4gICAgICB7IHg6IHBvaW50cy5zdGFydC54ICsgKHBvaW50cy5lbmQueCAtIHBvaW50cy5zdGFydC54KSAvIDIsIHk6IHBvaW50cy5zdGFydC55ICsgKHBvaW50cy5lbmQueSAtIHBvaW50cy5zdGFydC55KSAvIDIgfSxcbiAgICBdO1xuICAgIGRQYXRoLlEyID0gW1xuICAgICAgeyB4OiBwb2ludHMuZW5kLnggLSAocG9pbnRzLmVuZC54IC0gcG9pbnRzLnN0YXJ0LngpIC8gNCwgeTogcG9pbnRzLnN0YXJ0LnkgKyAocG9pbnRzLmVuZC55IC0gcG9pbnRzLnN0YXJ0LnkpIC8gMiB9LFxuICAgICAgeyB4OiBwb2ludHMuZW5kLngsIHk6IHBvaW50cy5lbmQueSB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGRyYXdCZW5kQm90aEVuZHNDdXJ2ZShkUGF0aDogSUF0dHJpYnV0ZURPblBhdGgsIHBvaW50czogSVBvaW50cykge1xuICAgIGNvbnN0IHBvaW50WEN1cnZlID0gKHBvaW50cy5zdGFydC54ICsgcG9pbnRzLmVuZC54KSAqIDAuNTtcbiAgICBjb25zdCBwb2ludENvbnRyb2wxID0geyB4OiBwb2ludFhDdXJ2ZSwgeTogcG9pbnRzLnN0YXJ0LnkgfTtcbiAgICBjb25zdCBwb2ludENvbnRyb2wyID0geyB4OiBwb2ludFhDdXJ2ZSwgeTogcG9pbnRzLmVuZC55IH07XG5cbiAgICBkUGF0aC5NID0geyB4OiBwb2ludHMuc3RhcnQueCwgeTogcG9pbnRzLnN0YXJ0LnkgfTtcbiAgICBkUGF0aC5DID0gW1xuICAgICAgeyB4OiBwb2ludENvbnRyb2wxLngsIHk6IHBvaW50Q29udHJvbDEueSB9LFxuICAgICAgeyB4OiBwb2ludENvbnRyb2wyLngsIHk6IHBvaW50Q29udHJvbDIueSB9LFxuICAgICAgeyB4OiBwb2ludHMuZW5kLngsIHk6IHBvaW50cy5lbmQueSB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkREF0dHJpYnV0ZUJ5UG9pbnRFbmRNb2RlSG9yaXpvbnRhbChkUGF0aDogSUF0dHJpYnV0ZURPblBhdGgsIHBvaW50czogSVBvaW50cywgZGlzdGFuY2VQb2ludDogbnVtYmVyLCBjdXJ2ZTogbnVtYmVyLCBtb2RlOiBUWVBFX01PREUpIHtcbiAgICBpZiAoIW1vZGUuaW5jbHVkZXMoJ2hvcml6b250YWwnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aXBsaWVyWCA9IHBvaW50cy5zdGFydC54IDwgcG9pbnRzLmVuZC54ID8gLTEgOiAxO1xuICAgIGNvbnN0IG11bHRpcGxpZXJZID0gcG9pbnRzLnN0YXJ0LnkgPCBwb2ludHMuZW5kLnkgPyAxIDogLTE7XG4gICAgY29uc3QgcmV2ZXJzZU11bHRpcGxpZXIgPSAtMTtcblxuICAgIGRQYXRoLk0gPSB7IHg6IHBvaW50cy5zdGFydC54LCB5OiBwb2ludHMuc3RhcnQueSB9O1xuICAgIGRQYXRoLkwgPSB7IHg6IHBvaW50cy5lbmQueCArIChkaXN0YW5jZVBvaW50ICogMiArIGN1cnZlKSAqIG11bHRpcGxpZXJYLCB5OiBwb2ludHMuc3RhcnQueSB9O1xuICAgIGlmIChtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsLXNpbmdsZScpKSB7XG4gICAgICBkUGF0aC5MLnggPSBwb2ludHMuZW5kLnggKyBjdXJ2ZSAqIG11bHRpcGxpZXJYO1xuICAgIH1cbiAgICBkUGF0aC5RID0gW1xuICAgICAgeyB4OiBkUGF0aC5MLnggKyBjdXJ2ZSAqIG11bHRpcGxpZXJYICogcmV2ZXJzZU11bHRpcGxpZXIsIHk6IHBvaW50cy5zdGFydC55IH0sXG4gICAgICB7IHg6IGRQYXRoLkwueCArIGN1cnZlICogbXVsdGlwbGllclggKiByZXZlcnNlTXVsdGlwbGllciwgeTogcG9pbnRzLnN0YXJ0LnkgKyBjdXJ2ZSAqIG11bHRpcGxpZXJZIH0sXG4gICAgXTtcbiAgICBkUGF0aC5MMiA9IHsgeDogZFBhdGguUVsxXS54LCB5OiBwb2ludHMuZW5kLnkgKyBjdXJ2ZSAqIG11bHRpcGxpZXJZICogcmV2ZXJzZU11bHRpcGxpZXIgfTtcbiAgICBpZiAobW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbC1zaW5nbGUnKSkge1xuICAgICAgZFBhdGguTDIgPSBwb2ludHMuZW5kO1xuICAgIH1cbiAgICBpZiAobW9kZSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICBkUGF0aC5RMiA9IFtcbiAgICAgICAgeyB4OiBkUGF0aC5MMi54LCB5OiBwb2ludHMuZW5kLnkgfSxcbiAgICAgICAgeyB4OiBkUGF0aC5MMi54ICsgZGlzdGFuY2VQb2ludCAqIG11bHRpcGxpZXJYICogcmV2ZXJzZU11bHRpcGxpZXIsIHk6IHBvaW50cy5lbmQueSB9LFxuICAgICAgXTtcbiAgICAgIGRQYXRoLkwzID0geyB4OiBwb2ludHMuZW5kLngsIHk6IHBvaW50cy5lbmQueSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREQXR0cmlidXRlQnlQb2ludEVuZE1vZGVWZXJ0aWNhbChkUGF0aDogSUF0dHJpYnV0ZURPblBhdGgsIHBvaW50czogSVBvaW50cywgZGlzdGFuY2VQb2ludDogbnVtYmVyLCBjdXJ2ZTogbnVtYmVyLCBtb2RlOiBUWVBFX01PREUpIHtcbiAgICBpZiAoIW1vZGUuaW5jbHVkZXMoJ3ZlcnRpY2FsJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbXVsdGlwbGllclggPSBwb2ludHMuc3RhcnQueCA8IHBvaW50cy5lbmQueCA/IC0xIDogMTtcbiAgICBjb25zdCBtdWx0aXBsaWVyWSA9IHBvaW50cy5zdGFydC55IDwgcG9pbnRzLmVuZC55ID8gMSA6IC0xO1xuICAgIGNvbnN0IHJldmVyc2VNdWx0aXBsaWVyID0gLTE7XG5cbiAgICBkUGF0aC5NID0gcG9pbnRzLnN0YXJ0O1xuICAgIGRQYXRoLkwgPSB7IHg6IHBvaW50cy5zdGFydC54LCB5OiBwb2ludHMuc3RhcnQueSArIGRpc3RhbmNlUG9pbnQgKiBtdWx0aXBsaWVyWSB9O1xuICAgIGlmIChtb2RlLmluY2x1ZGVzKCd2ZXJ0aWNhbC1zaW5nbGUnKSkge1xuICAgICAgZFBhdGguTC55ID0gcG9pbnRzLmVuZC55ICsgZGlzdGFuY2VQb2ludCAqIG11bHRpcGxpZXJZICogcmV2ZXJzZU11bHRpcGxpZXI7XG4gICAgfVxuICAgIGRQYXRoLlEgPSBbXG4gICAgICB7IHg6IGRQYXRoLkwueCwgeTogZFBhdGguTC55ICsgY3VydmUgKiBtdWx0aXBsaWVyWSB9LFxuICAgICAgeyB4OiBkUGF0aC5MLnggKyBjdXJ2ZSAqIG11bHRpcGxpZXJYICogcmV2ZXJzZU11bHRpcGxpZXIsIHk6IGRQYXRoLkwueSArIGN1cnZlICogbXVsdGlwbGllclkgfSxcbiAgICBdO1xuICAgIGRQYXRoLkwyID0geyB4OiBwb2ludHMuZW5kLnggKyBjdXJ2ZSAqIDIgKiBtdWx0aXBsaWVyWCwgeTogZFBhdGguUVsxXS55IH07XG4gICAgaWYgKG1vZGUuaW5jbHVkZXMoJ3ZlcnRpY2FsLXNpbmdsZScpKSB7XG4gICAgICBkUGF0aC5MMiA9IHBvaW50cy5lbmQ7XG4gICAgfVxuICAgIGlmIChtb2RlID09PSAndmVydGljYWwnKSB7XG4gICAgICBkUGF0aC5RMiA9IFtcbiAgICAgICAgeyB4OiBwb2ludHMuZW5kLngsIHk6IGRQYXRoLkwyLnkgfSxcbiAgICAgICAgeyB4OiBwb2ludHMuZW5kLngsIHk6IGRQYXRoLkwyLnkgKyBjdXJ2ZSAqIG11bHRpcGxpZXJZIH0sXG4gICAgICBdO1xuICAgICAgZFBhdGguTDMgPSB7IHg6IHBvaW50cy5lbmQueCwgeTogcG9pbnRzLmVuZC55IH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsREF0dHJpYnV0ZVRvU3RyaW5nKGRBdHRyaWJ1dGU6IElBdHRyaWJ1dGVET25QYXRoKTogc3RyaW5nIHtcbiAgICBsZXQgZFN0cmluZyA9ICcnO1xuXG4gICAgT2JqZWN0LmtleXMoZEF0dHJpYnV0ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gZ2V0KGRBdHRyaWJ1dGUsIGtleSBhcyBrZXlvZiBJQXR0cmlidXRlRE9uUGF0aCk7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIGNvbnN0IFtwb2ludDEsIHBvaW50MiwgcG9pbnQzXSA9IGRhdGE7XG5cbiAgICAgICAgZFN0cmluZyA9IGAke2RTdHJpbmd9JHtrZXkucmVwbGFjZSgvXFxkL2csICcnKX0ke3BvaW50MS54fSwke3BvaW50MS55fSAke3BvaW50Mi54fSwke3BvaW50Mi55fSR7cG9pbnQzID8gJyAnICsgcG9pbnQzLnggKyAnLCcgKyBwb2ludDMueSA6ICcnfVxuICAgICAgICBgO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRTdHJpbmcgPSBgJHtkU3RyaW5nfSR7a2V5LnJlcGxhY2UoL1xcZC9nLCAnJyl9JHtkYXRhPy54fSwke2RhdGE/Lnl9XG4gICAgICBgO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRTdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlQXJyb3cocG9pbnRzOiBJUG9pbnRzLCBtb2RlOiBUWVBFX01PREUsIGRhdGE6IElEcmF3TGluZURhdGFJbnB1dCkge1xuICAgIGlmICghcG9pbnRzLmFycm93RWxlbWVudCB8fCBkYXRhLmlnbm9yZURyYXdBcnJvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdHlsZUNvbmZpZyA9IHtcbiAgICAgIGZpbGw6IGRhdGEuYXJyb3dTdHlsZT8uZmlsbCA/PyAnIzlDQTJBRCcsXG4gICAgICBzdHJva2U6IGRhdGEuYXJyb3dTdHlsZT8uc3Ryb2tlID8/ICdub25lJyxcbiAgICAgIHN0cm9rZVdpZHRoOiBkYXRhLmFycm93U3R5bGU/LnN0cm9rZVdpZHRoID8/ICcwJyxcbiAgICAgIHdpZHRoOiBkYXRhLmFycm93U3R5bGU/LndpZHRoID8/IDYsXG4gICAgICBoZWlnaHQ6IGRhdGEuYXJyb3dTdHlsZT8uaGVpZ2h0ID8/IDgsXG4gICAgfTtcbiAgICBjb25zdCBwb2ludEVuZCA9IGNsb25lRGVlcChwb2ludHMuZW5kKTtcbiAgICBjb25zdCBhcnJvd0VsZW1lbnQgPSBwb2ludHMuYXJyb3dFbGVtZW50O1xuICAgIGNvbnN0IGhhc1NlcGFyYXRlZFBvaW50cyA9ICEhcG9pbnRzLnNlcGFyYXRlZFBvaW50cz8ubGVuZ3RoO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGRhdGEuYXJyb3dEaXJlY3Rpb24gfHwgdGhpcy5nZXREaXJlY3Rpb24ocG9pbnRzLCBkYXRhLnN0YXJ0RW5kTW9kZSwgbW9kZSk7XG5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBpZiAoIWhhc1NlcGFyYXRlZFBvaW50cyAmJiAobW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpIHx8IG1vZGUuaW5jbHVkZXMoJ3ZlcnRpY2FsJykpKSB7XG4gICAgICAgICAgcG9pbnRFbmQueCAtPSBzdHlsZUNvbmZpZy5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgYXJyb3dFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGAke3BvaW50RW5kLnh9LCR7cG9pbnRFbmQueSAtIHN0eWxlQ29uZmlnLndpZHRofSAgJHtwb2ludEVuZC54ICsgc3R5bGVDb25maWcuaGVpZ2h0fSwke3BvaW50RW5kLnl9ICR7cG9pbnRFbmQueH0sJHtwb2ludEVuZC55ICsgc3R5bGVDb25maWcud2lkdGh9IGApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGlmICghaGFzU2VwYXJhdGVkUG9pbnRzICYmIChtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsJykgfHwgbW9kZS5pbmNsdWRlcygndmVydGljYWwnKSkpIHtcbiAgICAgICAgICBwb2ludEVuZC54ICs9IHN0eWxlQ29uZmlnLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgncG9pbnRzJywgYCR7cG9pbnRFbmQueH0sJHtwb2ludEVuZC55IC0gc3R5bGVDb25maWcud2lkdGh9ICAke3BvaW50RW5kLnggLSBzdHlsZUNvbmZpZy5oZWlnaHR9LCR7cG9pbnRFbmQueX0gJHtwb2ludEVuZC54fSwke3BvaW50RW5kLnkgKyBzdHlsZUNvbmZpZy53aWR0aH0gYCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBpZiAoIWhhc1NlcGFyYXRlZFBvaW50cyAmJiAobW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpIHx8IG1vZGUuaW5jbHVkZXMoJ3ZlcnRpY2FsJykpKSB7XG4gICAgICAgICAgcG9pbnRFbmQueSArPSBzdHlsZUNvbmZpZy5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgYXJyb3dFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGAke3BvaW50RW5kLnggLSBzdHlsZUNvbmZpZy53aWR0aH0sJHtwb2ludEVuZC55fSAgJHtwb2ludEVuZC54fSwke3BvaW50RW5kLnkgLSBzdHlsZUNvbmZpZy5oZWlnaHR9ICR7cG9pbnRFbmQueCArIHN0eWxlQ29uZmlnLndpZHRofSwke3BvaW50RW5kLnl9IGApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgaWYgKCFoYXNTZXBhcmF0ZWRQb2ludHMgJiYgKG1vZGUuaW5jbHVkZXMoJ2hvcml6b250YWwnKSB8fCBtb2RlLmluY2x1ZGVzKCd2ZXJ0aWNhbCcpKSkge1xuICAgICAgICAgIHBvaW50RW5kLnkgLT0gc3R5bGVDb25maWcuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGFycm93RWxlbWVudD8uc2V0QXR0cmlidXRlKCdwb2ludHMnLCBgJHtwb2ludEVuZC54IC0gc3R5bGVDb25maWcud2lkdGh9LCR7cG9pbnRFbmQueX0gICR7cG9pbnRFbmQueH0sJHtwb2ludEVuZC55ICsgc3R5bGVDb25maWcuaGVpZ2h0fSAke3BvaW50RW5kLnggKyBzdHlsZUNvbmZpZy53aWR0aH0sJHtwb2ludEVuZC55fSBgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXJyb3dFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBzdHlsZUNvbmZpZy5maWxsKTtcbiAgICBhcnJvd0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgc3R5bGVDb25maWcuc3Ryb2tlKTtcbiAgICBhcnJvd0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgc3R5bGVDb25maWcuc3Ryb2tlV2lkdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBdHRyaWJ1dGVDaXJjbGUoY2lyY2xlRWxlbWVudDogU1ZHQ2lyY2xlRWxlbWVudCwgbmFtZTogc3RyaW5nLCBwb2ludDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LCBjaXJjbGVTdHlsZT86IElDaXJjbGVTdHlsZSkge1xuICAgIGNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCduYW1lJywgbmFtZSk7XG4gICAgY2lyY2xlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N4JywgYCR7cG9pbnQueH1gKTtcbiAgICBjaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnY3knLCBgJHtwb2ludC55fWApO1xuICAgIGNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyJywgYCR7Y2lyY2xlU3R5bGU/LnIgPz8gMn1gKTtcbiAgICBjaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZmlsbCcsIGAke2NpcmNsZVN0eWxlPy5maWxsID8/ICdncmVlbid9YCk7XG4gICAgY2lyY2xlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGAke2NpcmNsZVN0eWxlPy5zdHJva2UgPz8gJyM5Q0EyQUQnfWApO1xuICAgIGNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBgJHtjaXJjbGVTdHlsZT8uc3Ryb2tlV2lkdGggPz8gJzFweCd9YCk7XG5cbiAgICByZXR1cm4gY2lyY2xlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlyZWN0aW9uKHBvaW50czogSVBvaW50cywgc3RhcnRFbmRNb2RlOiAncmlnaHQtbGVmdCcgfCAnYm90dG9tLXRvcCcgfCAnYm90dG9tLWxlZnQnIHwgdW5kZWZpbmVkLCBtb2RlPzogVFlQRV9NT0RFKTogVFlQRV9ESVJFQ1RJT04ge1xuICAgIGxldCBwb2ludFN0YXJ0ID0geyAuLi5wb2ludHMuc3RhcnQgfTtcblxuICAgIGlmIChwb2ludHMuc2VwYXJhdGVkUG9pbnRzKSB7XG4gICAgICBjb25zdCBsaW5lVG9FbmQgPSBwb2ludHMuc2VwYXJhdGVkUG9pbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZW5kLnggPT09IHBvaW50cy5lbmQueCAmJiBpdGVtLmVuZC55ID09PSBwb2ludHMuZW5kLnkpO1xuXG4gICAgICBpZiAobGluZVRvRW5kKSB7XG4gICAgICAgIHBvaW50U3RhcnQgPSBsaW5lVG9FbmQuc3RhcnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG1vZGVIb3Jpem9udGFsID0gcG9pbnRTdGFydC54IDwgcG9pbnRzLmVuZC54ID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICBjb25zdCBtb2RlVmVydGljYWwgPSBwb2ludFN0YXJ0LnkgPCBwb2ludHMuZW5kLnkgPyAnYm90dG9tJyA6ICd0b3AnO1xuXG4gICAgaWYgKG1vZGU/LmluY2x1ZGVzKCd2ZXJ0aWNhbCcpICYmICFtb2RlLmluY2x1ZGVzKCdzaW5nbGUtY3VydmUnKSkge1xuICAgICAgcmV0dXJuIG1vZGVWZXJ0aWNhbDtcbiAgICB9XG4gICAgaWYgKG1vZGU/LmluY2x1ZGVzKCdob3Jpem9udGFsJykgJiYgIW1vZGUuaW5jbHVkZXMoJ3NpbmdsZS1jdXJ2ZScpKSB7XG4gICAgICByZXR1cm4gbW9kZUhvcml6b250YWw7XG4gICAgfVxuXG4gICAgaWYgKCFzdGFydEVuZE1vZGUpIHtcbiAgICAgIGlmIChNYXRoLmFicyhwb2ludHMuZW5kLnggLSBwb2ludFN0YXJ0LngpID4gTWF0aC5hYnMocG9pbnRzLmVuZC55IC0gcG9pbnRTdGFydC55KSkge1xuICAgICAgICByZXR1cm4gbW9kZUhvcml6b250YWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb2RlVmVydGljYWw7XG4gICAgfVxuXG4gICAgc3dpdGNoIChzdGFydEVuZE1vZGUpIHtcbiAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgICAgcmV0dXJuIG1vZGVIb3Jpem9udGFsO1xuXG4gICAgICBjYXNlICdyaWdodC1sZWZ0JzpcbiAgICAgICAgcmV0dXJuIG1vZGVIb3Jpem9udGFsO1xuXG4gICAgICBjYXNlICdib3R0b20tdG9wJzpcbiAgICAgICAgcmV0dXJuIG1vZGVWZXJ0aWNhbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRFdmVudChkYXRhOiBJRHJhd0xpbmVEYXRhSW5wdXQpIHtcbiAgICBjb25zdCBwb2ludHM6IElQb2ludHMgPSBkYXRhLnBvaW50cztcbiAgICBsZXQgcHJlRXZlbnQ6IE1vdXNlRXZlbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoKCFwb2ludHMuYXJyb3dFbGVtZW50ICYmICFwb2ludHMuY2lyY2xlRW5kRWxlbWVudCkgfHwgIXBvaW50cy5vbkRlc3Ryb3lFdmVudCB8fCBwb2ludHMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwb2ludHMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIGNvbnN0IGZ1bmN0aW9uTW91c2VVcCA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAocHJlRXZlbnQpIHtcbiAgICAgICAgcHJlRXZlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25EcmF3TGluZUVuZC5uZXh0KHsgZGF0YUxpbmU6IGRhdGEsIGV2ZW50OiBtb3VzZUV2ZW50IH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyRHJhZyA9IChkcmFnTW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKCFwcmVFdmVudCkge1xuICAgICAgICBwcmVFdmVudCA9IGRyYWdNb3VzZUV2ZW50O1xuICAgICAgfVxuICAgICAgY29uc3QgcG9pbnRFbmQgPSBjbG9uZURlZXAocG9pbnRzLmVuZCk7XG5cbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLnN2Z0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB2aWV3Qm94ID0gdGhpcy5zdmdFbGVtZW50LnZpZXdCb3g/LmJhc2VWYWw7XG4gICAgICBjb25zdCBzY2FsZVggPSB2aWV3Qm94Py53aWR0aCA/IHZpZXdCb3gud2lkdGggLyByZWN0LndpZHRoIDogMTtcbiAgICAgIGNvbnN0IHNjYWxlWSA9IHZpZXdCb3g/LmhlaWdodCA/IHZpZXdCb3guaGVpZ2h0IC8gcmVjdC5oZWlnaHQgOiAxO1xuXG4gICAgICBjb25zdCBtb3ZlbWVudFggPSAoZHJhZ01vdXNlRXZlbnQuY2xpZW50WCAtIHByZUV2ZW50LmNsaWVudFgpICogc2NhbGVYO1xuICAgICAgY29uc3QgbW92ZW1lbnRZID0gKGRyYWdNb3VzZUV2ZW50LmNsaWVudFkgLSBwcmVFdmVudC5jbGllbnRZKSAqIHNjYWxlWTtcblxuICAgICAgcHJlRXZlbnQgPSBkcmFnTW91c2VFdmVudDtcbiAgICAgIHBvaW50RW5kLnggKz0gbW92ZW1lbnRYO1xuICAgICAgcG9pbnRFbmQueSArPSBtb3ZlbWVudFk7XG4gICAgICBpZiAoZGF0YS5wb2ludHM/Lm9ic3RhY2xlUmVjdD8ubGVuZ3RoICYmIGRhdGEucG9pbnRzPy5vYnN0YWNsZVJlY3Quc29tZSgob2JzdGFjbGVSZWN0KSA9PiB0aGlzLmNoZWNrUG9pbnRJbmNsdWRlUmVjdChwb2ludEVuZCwgb2JzdGFjbGVSZWN0KSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcG9pbnRzLmVuZC54ID0gcG9pbnRFbmQueDtcbiAgICAgIHBvaW50cy5lbmQueSA9IHBvaW50RW5kLnk7XG4gICAgICB0aGlzLmRyYXdMaW5lKGRhdGEpO1xuICAgICAgdGhpcy51cGRhdGVWaWV3Qm94KCk7XG4gICAgfTtcblxuICAgIGlmIChwb2ludHMuYXJyb3dFbGVtZW50KSB7XG4gICAgICBnZXREcmFnRXZlbnRCeUVsZW1lbnQoe1xuICAgICAgICBlbGVtZW50TW91c2VEb3duOiBwb2ludHMuYXJyb3dFbGVtZW50IGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgIGZ1bmN0aW9uTW91c2VVcDogZnVuY3Rpb25Nb3VzZVVwLFxuICAgICAgICBkZXN0cm95UmVmOiB0aGlzLmRlc3Ryb3lSZWYsXG4gICAgICB9KVxuICAgICAgICAucGlwZSh0YXAoaGFuZGxlckRyYWcpLCB0YWtlVW50aWwocG9pbnRzLm9uRGVzdHJveUV2ZW50KSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmIChwb2ludHMuY2lyY2xlRW5kRWxlbWVudCkge1xuICAgICAgZ2V0RHJhZ0V2ZW50QnlFbGVtZW50KHtcbiAgICAgICAgZWxlbWVudE1vdXNlRG93bjogcG9pbnRzLmNpcmNsZUVuZEVsZW1lbnQgYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgZnVuY3Rpb25Nb3VzZVVwOiBmdW5jdGlvbk1vdXNlVXAsXG4gICAgICAgIGRlc3Ryb3lSZWY6IHRoaXMuZGVzdHJveVJlZixcbiAgICAgIH0pXG4gICAgICAgIC5waXBlKHRhcChoYW5kbGVyRHJhZyksIHRha2VVbnRpbChwb2ludHMub25EZXN0cm95RXZlbnQpKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1BvaW50SW5jbHVkZVJlY3QocG9pbnQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSwgb2JzdGFjbGVSZWN0OiBJUmVjdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhcERlZmF1bHQgPSA4O1xuXG4gICAgb2JzdGFjbGVSZWN0ID0ge1xuICAgICAgeDogb2JzdGFjbGVSZWN0LnggLSAob2JzdGFjbGVSZWN0LmdhcFhPYnN0YWNsZVJlY3QgfHwgZ2FwRGVmYXVsdCksXG4gICAgICB5OiBvYnN0YWNsZVJlY3QueSAtIChvYnN0YWNsZVJlY3QuZ2FwWU9ic3RhY2xlUmVjdCB8fCBnYXBEZWZhdWx0KSxcbiAgICAgIHdpZHRoOiBvYnN0YWNsZVJlY3Qud2lkdGggKyAob2JzdGFjbGVSZWN0LmdhcFhPYnN0YWNsZVJlY3QgfHwgZ2FwRGVmYXVsdCkgKiAyLFxuICAgICAgaGVpZ2h0OiBvYnN0YWNsZVJlY3QuaGVpZ2h0ICsgKG9ic3RhY2xlUmVjdC5nYXBZT2JzdGFjbGVSZWN0IHx8IGdhcERlZmF1bHQpICogMixcbiAgICB9O1xuICAgIGlmIChvYnN0YWNsZVJlY3QueCA8PSBwb2ludC54ICYmIHBvaW50LnggPD0gb2JzdGFjbGVSZWN0LnggKyBvYnN0YWNsZVJlY3Qud2lkdGggJiYgb2JzdGFjbGVSZWN0LnkgPD0gcG9pbnQueSAmJiBwb2ludC55IDw9IG9ic3RhY2xlUmVjdC55ICsgb2JzdGFjbGVSZWN0LmhlaWdodCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYXRoQW5kQXJyb3dFbGVtZW50KG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdwYXRoJyk7XG4gICAgY29uc3QgYXJyb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdwb2x5bGluZScpO1xuICAgIGNvbnN0IGNpcmNsZVN0YXJ0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnY2lyY2xlJyk7XG4gICAgY29uc3QgY2lyY2xlRW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnY2lyY2xlJyk7XG5cbiAgICBwYXRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBuYW1lKTtcbiAgICBhcnJvd0VsZW1lbnQuc2V0QXR0cmlidXRlKCduYW1lJywgbmFtZSk7XG4gICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZChwYXRoRWxlbWVudCk7XG4gICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZChhcnJvd0VsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHsgcGF0aEVsZW1lbnQsIGFycm93RWxlbWVudCwgY2lyY2xlU3RhcnRFbGVtZW50LCBjaXJjbGVFbmRFbGVtZW50IH07XG4gIH1cblxuICBwcml2YXRlIGFkZENpcmNsZShuYW1lOiBzdHJpbmcsIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pIHtcbiAgICBpZiAoIXRoaXMuZHJhd1JlY3REZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjaXJjbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ2NpcmNsZScpO1xuXG4gICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgnbmFtZScsIG5hbWUpO1xuICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoJ2N4JywgYCR7cG9pbnQueH1gKTtcbiAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCdjeScsIGAke3BvaW50Lnl9YCk7XG4gICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgncicsICcyJyk7XG4gICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZmlsbDogbm9uZTsgc3Ryb2tlOiBibHVlOyBzdHJva2Utd2lkdGg6IDFweDsnKTtcbiAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDaXJjbGUoKSB7XG4gICAgaWYgKCF0aGlzLmRyYXdSZWN0RGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgQXJyYXkuZnJvbSh0aGlzLnN2Z0VsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NpcmNsZScpKT8uZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5yZW1vdmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJlY3QobmFtZTogc3RyaW5nLCByZWN0OiBJUmVjdCkge1xuICAgIGlmICghdGhpcy5kcmF3UmVjdERlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdyZWN0Jyk7XG4gICAgY29uc3QgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3RleHQnKTtcblxuICAgIHJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgnbmFtZScsIG5hbWUpO1xuICAgIHJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgneCcsIGAke3JlY3QueH1gKTtcbiAgICByZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3knLCBgJHtyZWN0Lnl9YCk7XG4gICAgcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3JlY3Qud2lkdGh9YCk7XG4gICAgcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtyZWN0LmhlaWdodH1gKTtcbiAgICByZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2ZpbGw6IGJsdWU7IHN0cm9rZTogYmx1ZTsnKTtcbiAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdEVsZW1lbnQpO1xuXG4gICAgdGV4dEVsZW1lbnQuc2V0QXR0cmlidXRlKCd4JywgYCR7cmVjdC54fWApO1xuICAgIHRleHRFbGVtZW50LnNldEF0dHJpYnV0ZSgneScsIGAke3JlY3QueX1gKTtcbiAgICB0ZXh0RWxlbWVudC50ZXh0Q29udGVudCA9IHJlY3QuaWQgPz8gJyc7XG4gICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZENoaWxkKHRleHRFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJSZWN0KCkge1xuICAgIGlmICghdGhpcy5kcmF3UmVjdERlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIEFycmF5LmZyb20odGhpcy5zdmdFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdyZWN0JykpPy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnJlbW92ZSgpKTtcbiAgICBBcnJheS5mcm9tKHRoaXMuc3ZnRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGV4dCcpKT8uZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5yZW1vdmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGF0aEFuZERyYXdTZXBhcmF0ZWRQb2ludHMoZGF0YTogSURyYXdMaW5lRGF0YUlucHV0LCBwb2ludHM6IElQb2ludHMsIG1vZGU/OiBUWVBFX01PREUpIHtcbiAgICBsZXQgZFBhdGggPSB7fSBhcyBJQXR0cmlidXRlRE9uUGF0aDtcbiAgICBjb25zdCBzdHlsZUNvbmZpZyA9IHtcbiAgICAgIGN1cnZlOiBkYXRhLmxpbmVTdHlsZT8uY3VydmUgPz8gMTAsXG4gICAgICBkaXN0YW5jZVBvaW50OiBkYXRhLmxpbmVTdHlsZT8uZGlzdGFuY2VQb2ludCA/PyAxMCxcbiAgICB9O1xuXG4gICAgbGV0IHsgY3VydmUsIGRpc3RhbmNlUG9pbnQgfSA9IHN0eWxlQ29uZmlnO1xuXG4gICAgbW9kZSA9IG1vZGUgfHwgJ3F1YXJ0LWluJztcbiAgICBpZiAobW9kZSAhPT0gJ3F1YXJ0LWluJykge1xuICAgICAgY3VydmUgPSBjdXJ2ZSA/PyAxMDtcbiAgICAgIGRpc3RhbmNlUG9pbnQgPSBkaXN0YW5jZVBvaW50ID8/IDEwO1xuICAgIH1cbiAgICBpZiAobW9kZSA9PT0gJ3F1YXJ0LWluJyB8fCBwb2ludHMuc3RhcnQueCA9PT0gcG9pbnRzLmVuZC54IHx8IHBvaW50cy5zdGFydC55ID09PSBwb2ludHMuZW5kLnkpIHtcbiAgICAgIHRoaXMuZHJhd0JhbGFuY2VkQ3VydmUoZFBhdGgsIHBvaW50cyk7XG5cbiAgICAgIGlmIChtb2RlID09PSAncXVhcnQtaW4nKSB7XG4gICAgICAgIGRQYXRoID0ge30gYXMgSUF0dHJpYnV0ZURPblBhdGg7XG4gICAgICAgIHRoaXMuZHJhd0JlbmRCb3RoRW5kc0N1cnZlKGRQYXRoLCBwb2ludHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5idWlsREF0dHJpYnV0ZVRvU3RyaW5nKGRQYXRoKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jYWxjdWxhdG9yRGlzdGFuY2VQb2ludEFuZEN1cnZlKHBvaW50cywgZGlzdGFuY2VQb2ludCwgY3VydmUsIG1vZGUpO1xuXG4gICAgZGlzdGFuY2VQb2ludCA9IHJlc3VsdC5kaXN0YW5jZVBvaW50O1xuICAgIGN1cnZlID0gcmVzdWx0LmN1cnZlO1xuXG4gICAgdGhpcy5idWlsZERBdHRyaWJ1dGVCeVBvaW50RW5kTW9kZUhvcml6b250YWwoZFBhdGgsIHBvaW50cywgZGlzdGFuY2VQb2ludCB8fCAwLCBjdXJ2ZSB8fCAwLCBtb2RlKTtcbiAgICB0aGlzLmJ1aWxkREF0dHJpYnV0ZUJ5UG9pbnRFbmRNb2RlVmVydGljYWwoZFBhdGgsIHBvaW50cywgZGlzdGFuY2VQb2ludCB8fCAwLCBjdXJ2ZSB8fCAwLCBtb2RlKTtcblxuICAgIHJldHVybiB0aGlzLmJ1aWxEQXR0cmlidXRlVG9TdHJpbmcoZFBhdGgpO1xuICB9XG59XG4iXX0=
|
|
691
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1saW5lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmF3LWxpbmUvc3JjL2RyYXctbGluZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9DLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVyRyxjQUFjLHVCQUF1QixDQUFDO0FBTXRDLE1BQU0sT0FBTyxpQ0FBaUM7SUFDbEMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyx1QkFBdUIsQ0FBVTtJQUNuQyxRQUFRLEdBQThCLEVBQUUsQ0FBQztJQUN6Qyx1QkFBdUIsR0FBZ0MsRUFBRSxDQUFDO0lBQzFELGFBQWEsR0FHaEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVWLGFBQWEsQ0FBa0I7SUFDL0IsVUFBVSxDQUFpQjtJQUMzQixhQUFhLENBQVc7SUFFdkIsMEJBQTBCLEdBQTZDLElBQUksWUFBWSxFQUFFLENBQUM7SUFDMUYsWUFB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LENBQUMsRUFBRSxDQUFDO1FBQ25ELEtBQUssQ0FBQyxDQUFDLEdBQUc7WUFDUixFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BILEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDckgsQ0FBQztRQUNGLEtBQUssQ0FBQyxFQUFFLEdBQUc7WUFDVCxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xILEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMs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cUNBQXFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEcsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQzt3R0F2eEJVLGlDQUFpQzs0RkFBakMsaUNBQWlDOzs0RkFBakMsaUNBQWlDO2tCQUw3QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHFDQUFxQztvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQWFVLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLDBCQUEwQjtzQkFBbkMsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgY2xvbmVEZWVwLCBnZXQsIGdldERyYWdFdmVudEJ5RWxlbWVudCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQXR0cmlidXRlRE9uUGF0aCwgSUNpcmNsZVN0eWxlLCBJRHJhd0xpbmVEYXRhSW5wdXQsIElNb0RyYXdMaW5lRnVuY3Rpb25Db250cm9sLCBJUG9pbnQsIElQb2ludHMsIElSZWFjaGFibGVQb2ludFJhbmdlLCBJUmVjdCwgSVZpZXdCb3hDb25maWcsIFRZUEVfRElSRUNUSU9OLCBUWVBFX01PREUgfSBmcm9tICcuL2RyYXctbGluZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsIH0gZnJvbSAnLi91dGlsL2Nvbm5lY3QtbmF2aWdhdGlvbi1uZXctZWxlbWVudC51dGlsJztcblxuZXhwb3J0ICogZnJvbSAnLi9kcmF3LWxpbmUuaW50ZXJmYWNlJztcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tMaWJzVWlDb21wb25lbnRzRHJhd0xpbmVEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RyYXdMaW5lRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcm90ZWN0ZWQgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJvdGVjdGVkIGludGVydmFsU2Nyb2xsVG9FbGVtZW50PzogbnVtYmVyO1xuICBwcml2YXRlIGRhdGFEcmF3OiBBcnJheTxJRHJhd0xpbmVEYXRhSW5wdXQ+ID0gW107XG4gIHByaXZhdGUgZGF0YVJlYWNoYWJsZVBvaW50UmFuZ2U6IEFycmF5PElSZWFjaGFibGVQb2ludFJhbmdlPiA9IFtdO1xuICBwcml2YXRlIG9uRHJhd0xpbmVFbmQ6IFN1YmplY3Q8e1xuICAgIGRhdGFMaW5lOiBJRHJhd0xpbmVEYXRhSW5wdXQ7XG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQ7XG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSB2aWV3Qm94Q29uZmlnPzogSVZpZXdCb3hDb25maWc7XG4gIEBJbnB1dCgpIHN2Z0VsZW1lbnQhOiBTVkdTVkdFbGVtZW50O1xuICBASW5wdXQoKSBkcmF3UmVjdERlYnVnPzogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgb3V0RHJhd0xpbmVGdW5jdGlvbkNvbnRyb2w6IEV2ZW50RW1pdHRlcjxJTW9EcmF3TGluZUZ1bmN0aW9uQ29udHJvbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvdXRDb25uZWN0ZWQ6IEV2ZW50RW1pdHRlcjx7IGRhdGFMaW5lOiBJRHJhd0xpbmVEYXRhSW5wdXQ7IGRhdGFSZWFjaGFibGVQb2ludFJhbmdlOiBJUmVhY2hhYmxlUG9pbnRSYW5nZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN2Z0VsZW1lbnQgPSB0aGlzLnN2Z0VsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnKTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmQodGhpcy5zdmdFbGVtZW50KTtcbiAgICB0aGlzLm91dERyYXdMaW5lRnVuY3Rpb25Db250cm9sLmVtaXQodGhpcy5GdW5jdGlvbnNDb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRnVuY3Rpb25zQ29udHJvbCgpOiBJTW9EcmF3TGluZUZ1bmN0aW9uQ29udHJvbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldERhdGE6IHRoaXMuc2V0RGF0YS5iaW5kKHRoaXMpLFxuICAgICAgc2V0UmVhY2hhYmxlUG9pbnRSYW5nZTogdGhpcy5zZXRSZWFjaGFibGVQb2ludFJhbmdlLmJpbmQodGhpcyksXG4gICAgICByZW1vdmVMaW5lOiB0aGlzLnJlbW92ZUxpbmUuYmluZCh0aGlzKSxcbiAgICAgIHJlbW92ZVJlYWNoYWJsZVBvaW50UmFuZ2U6IHRoaXMucmVtb3ZlUmVhY2hhYmxlUG9pbnRSYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgdXBkYXRlVmlld0JveDogdGhpcy51cGRhdGVWaWV3Qm94LmJpbmQodGhpcyksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YShkYXRhOiBBcnJheTxJRHJhd0xpbmVEYXRhSW5wdXQ+KSB7XG4gICAgY29uc3QgbmV3RGF0YTogQXJyYXk8SURyYXdMaW5lRGF0YUlucHV0PiA9IFtdO1xuXG4gICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuZGF0YURyYXcuZmluZChcbiAgICAgICAgICAoZGF0YURyYXcpID0+IGRhdGFEcmF3LmlkID09PSBpdGVtLmlkICYmIGl0ZW0ucG9pbnRzLnN0YXJ0LnggPT09IGRhdGFEcmF3LnBvaW50cy5zdGFydC54ICYmIGl0ZW0ucG9pbnRzLnN0YXJ0LnkgPT09IGRhdGFEcmF3LnBvaW50cy5zdGFydC55ICYmIGl0ZW0ucG9pbnRzLmVuZC54ID09PSBkYXRhRHJhdy5wb2ludHMuZW5kLnggJiYgaXRlbS5wb2ludHMuZW5kLnkgPT09IGRhdGFEcmF3LnBvaW50cy5lbmQueVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaXRlbUNsb25lID0gY2xvbmVEZWVwKGl0ZW0pO1xuXG4gICAgICBpdGVtQ2xvbmUucmVmID0gaXRlbTtcbiAgICAgIG5ld0RhdGEucHVzaChpdGVtQ2xvbmUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhRHJhdy5wdXNoKC4uLm5ld0RhdGEpO1xuICAgIHRoaXMuc3RhcnRQcm9jZXNzRGF0YVJvdyhuZXdEYXRhKTtcbiAgfVxuXG4gIHNldFJlYWNoYWJsZVBvaW50UmFuZ2UoZGF0YTogQXJyYXk8SVJlYWNoYWJsZVBvaW50UmFuZ2U+KSB7XG4gICAgY29uc3QgbmV3RGF0YTogQXJyYXk8SVJlYWNoYWJsZVBvaW50UmFuZ2U+ID0gW107XG5cbiAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFSZWFjaGFibGVQb2ludFJhbmdlLmZpbmQoKGRhdGFEcmF3KSA9PiBkYXRhRHJhdy5pZCA9PT0gaXRlbS5pZCB8fCAoaXRlbS54ID09PSBkYXRhRHJhdy54ICYmIGl0ZW0ueSA9PT0gZGF0YURyYXcueSkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW1DbG9uZSA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgaXRlbUNsb25lLnJlZiA9IGl0ZW07XG4gICAgICBuZXdEYXRhLnB1c2goaXRlbUNsb25lKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVJlYWNoYWJsZVBvaW50UmFuZ2UucHVzaCguLi5uZXdEYXRhKTtcbiAgICB0aGlzLnN0YXJ0UHJvY2Vzc0RhdGFSZWFjaGFibGVQb2ludFJhbmdlKG5ld0RhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaW5lKGlkOiBzdHJpbmcsIHBvaW50cz86IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZGF0YURyYXdCeUlkID0gdGhpcy5kYXRhRHJhdy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKTtcblxuICAgIGlmICghZGF0YURyYXdCeUlkPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZW1vdmVCeUl0ZW0gPSAoaXRlbTogSURyYXdMaW5lRGF0YUlucHV0KSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZUVsZW1lbnRPZlBvaW50cyhpdGVtLnBvaW50cyk7XG4gICAgICBpdGVtLnBvaW50cy5zZXBhcmF0ZWRQb2ludHM/LmZvckVhY2goKHNlcGFyYXRlZFBvaW50cykgPT4gdGhpcy5yZW1vdmVFbGVtZW50T2ZQb2ludHMoc2VwYXJhdGVkUG9pbnRzKSk7XG4gICAgfTtcblxuICAgIGlmICghcG9pbnRzPy5sZW5ndGgpIHtcbiAgICAgIGRhdGFEcmF3QnlJZC5mb3JFYWNoKChpdGVtKSA9PiByZW1vdmVCeUl0ZW0oaXRlbSkpO1xuICAgICAgdGhpcy5kYXRhRHJhdyA9IHRoaXMuZGF0YURyYXcuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdCb3goKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBvaW50cy5mb3JFYWNoKChwb2ludCkgPT4ge1xuICAgICAgY29uc3QgZGF0YURyYXdSZW1vdmVCeVBvaW50ID0gZGF0YURyYXdCeUlkLmZpbmQoKGl0ZW0pID0+IGl0ZW0ucG9pbnRzLnN0YXJ0LnggPT09IHBvaW50LnN0YXJ0LnggJiYgaXRlbS5wb2ludHMuc3RhcnQueSA9PT0gcG9pbnQuc3RhcnQueSAmJiBpdGVtLnBvaW50cy5lbmQueCA9PT0gcG9pbnQuZW5kLnggJiYgaXRlbS5wb2ludHMuZW5kLnkgPT09IHBvaW50LmVuZC55KTtcblxuICAgICAgaWYgKGRhdGFEcmF3UmVtb3ZlQnlQb2ludCkge1xuICAgICAgICBkYXRhRHJhd1JlbW92ZUJ5UG9pbnQuaXNSZW1vdmUgPSB0cnVlO1xuICAgICAgICByZW1vdmVCeUl0ZW0oZGF0YURyYXdSZW1vdmVCeVBvaW50KTtcbiAgICAgICAgdGhpcy5kYXRhRHJhdyA9IHRoaXMuZGF0YURyYXcuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCAmJiAhaXRlbS5pc1JlbW92ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVWaWV3Qm94KCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJlYWNoYWJsZVBvaW50UmFuZ2UoaWRzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jbGVhclJlY3QoKTtcbiAgICBpZiAoIWlkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1SZW1vdmUgPSB0aGlzLmRhdGFSZWFjaGFibGVQb2ludFJhbmdlPy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCk7XG5cbiAgICAgIGlmICghaXRlbVJlbW92ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpdGVtUmVtb3ZlLm9uRGVzdHJveUV2ZW50Py5uZXh0KCk7XG4gICAgICBpdGVtUmVtb3ZlLmVsZW1lbnQ/LnJlbW92ZSgpO1xuICAgICAgdGhpcy5kYXRhUmVhY2hhYmxlUG9pbnRSYW5nZSA9IHRoaXMuZGF0YVJlYWNoYWJsZVBvaW50UmFuZ2U/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFByb2Nlc3NEYXRhUm93KGRhdGFEcmF3OiBBcnJheTxJRHJhd0xpbmVEYXRhSW5wdXQ+KSB7XG4gICAgY29uc29sZS5sb2coJzEyMTIxMjEyZGF0YURyYXcnLCBkYXRhRHJhdyk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGRhdGFEcmF3LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgeyBwYXRoRWxlbWVudCwgYXJyb3dFbGVtZW50LCBjaXJjbGVTdGFydEVsZW1lbnQsIGNpcmNsZUVuZEVsZW1lbnQgfSA9IHRoaXMuY3JlYXRlUGF0aEFuZEFycm93RWxlbWVudChpdGVtLmlkKTtcblxuICAgICAgICBpdGVtLnBvaW50cy5vYnN0YWNsZVJlY3Q/LmZvckVhY2goKGRhdGEpID0+IHRoaXMuYWRkUmVjdCgncmVjdCcsIGRhdGEpKTtcbiAgICAgICAgaXRlbS5wb2ludHMucGF0aEVsZW1lbnQgPSBwYXRoRWxlbWVudDtcbiAgICAgICAgaXRlbS5wb2ludHMuYXJyb3dFbGVtZW50ID0gYXJyb3dFbGVtZW50O1xuICAgICAgICBpZiAoaXRlbS5zdGFydENpcmNsZSkge1xuICAgICAgICAgIGl0ZW0ucG9pbnRzLmNpcmNsZVN0YXJ0RWxlbWVudCA9IGNpcmNsZVN0YXJ0RWxlbWVudDtcbiAgICAgICAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kKGNpcmNsZVN0YXJ0RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0uZW5kQ2lyY2xlKSB7XG4gICAgICAgICAgaXRlbS5wb2ludHMuY2lyY2xlRW5kRWxlbWVudCA9IGNpcmNsZUVuZEVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZChjaXJjbGVFbmRFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLnBvaW50cy5vbkRlc3Ryb3lFdmVudCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmUoaXRlbSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudXBkYXRlVmlld0JveCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFByb2Nlc3NEYXRhUmVhY2hhYmxlUG9pbnRSYW5nZShkYXRhOiBBcnJheTxJUmVhY2hhYmxlUG9pbnRSYW5nZT4pIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0ub25EZXN0cm95RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICBpdGVtLmVsZW1lbnQgPSB0aGlzLmNyZWF0ZVBhdGhBbmRBcnJvd0VsZW1lbnQoaXRlbS5pZCkuY2lyY2xlRW5kRWxlbWVudDtcbiAgICAgICAgdGhpcy5zdmdFbGVtZW50LmFwcGVuZChpdGVtLmVsZW1lbnQpO1xuICAgICAgICB0aGlzLnVwZGF0ZUF0dHJpYnV0ZUNpcmNsZShpdGVtLmVsZW1lbnQsIGl0ZW0uaWQsIGl0ZW0sIGl0ZW0uc3R5bGUpO1xuICAgICAgICB0aGlzLm9uRHJhd0xpbmVFbmQucGlwZSh0YWtlVW50aWwoaXRlbS5vbkRlc3Ryb3lFdmVudCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0YUxpbmUsIGV2ZW50IH0gPSBldmVudERhdGE7XG5cbiAgICAgICAgICBpZiAoIWNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZXZlbnQsIGl0ZW0uZWxlbWVudCBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50KSB8fCAhZGF0YUxpbmUucmVmIHx8ICFpdGVtLnJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGl0ZW0uaWRDb25uZWN0ZWQgPSBldmVudERhdGEuZGF0YUxpbmUuaWQ7XG4gICAgICAgICAgZXZlbnREYXRhLmRhdGFMaW5lLmlkQ29ubmVjdGVkID0gaXRlbS5pZDtcbiAgICAgICAgICB0aGlzLm91dENvbm5lY3RlZC5lbWl0KHtcbiAgICAgICAgICAgIGRhdGFMaW5lOiBkYXRhTGluZS5yZWYsXG4gICAgICAgICAgICBkYXRhUmVhY2hhYmxlUG9pbnRSYW5nZTogaXRlbS5yZWYsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdCb3goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRWxlbWVudE9mUG9pbnRzKHBvaW50czogSVBvaW50cykge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBwb2ludHMub25EZXN0cm95RXZlbnQ/Lm5leHQoKTtcbiAgICAgIHBvaW50cy5vbkRlc3Ryb3lFdmVudD8uY29tcGxldGUoKTtcbiAgICAgIHBvaW50cz8ucGF0aEVsZW1lbnQ/LnJlbW92ZSgpO1xuICAgICAgcG9pbnRzPy5hcnJvd0VsZW1lbnQ/LnJlbW92ZSgpO1xuICAgICAgcG9pbnRzPy5jaXJjbGVTdGFydEVsZW1lbnQ/LnJlbW92ZSgpO1xuICAgICAgcG9pbnRzLmNpcmNsZUVuZEVsZW1lbnQ/LnJlbW92ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3TGluZShkYXRhOiBJRHJhd0xpbmVEYXRhSW5wdXQpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgeyBwb2ludHMsIG1vZGUgfSA9IGRhdGE7XG4gICAgICBsZXQgeyBjdXJ2ZSB9ID0gZGF0YT8ubGluZVN0eWxlIHx8IHt9O1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ3F1YXJ0LWluJykge1xuICAgICAgICBjdXJ2ZSA9IGN1cnZlID8/IDEwO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJlTGVuZ3RoU2VwYXJhdGVkUG9pbnRzID0gcG9pbnRzLnNlcGFyYXRlZFBvaW50cz8ubGVuZ3RoO1xuXG4gICAgICBwb2ludHMuc2VwYXJhdGVkUG9pbnRzPy5mb3JFYWNoKChzZXBhcmF0ZWRQb2ludHMpID0+IHRoaXMucmVtb3ZlRWxlbWVudE9mUG9pbnRzKHNlcGFyYXRlZFBvaW50cykpO1xuICAgICAgcG9pbnRzLnNlcGFyYXRlZFBvaW50cyA9IFtdO1xuICAgICAgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsLlNUQVJUX01PREUgPSAncmlnaHQtbGVmdCc7XG4gICAgICBpZiAoZGF0YS5zdGFydEVuZE1vZGUpIHtcbiAgICAgICAgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsLlNUQVJUX01PREUgPSBkYXRhLnN0YXJ0RW5kTW9kZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FsY3VsYXRvclNlcGFyYXRlZFBvaW50cyhkYXRhLmlkLCBwb2ludHMsIGN1cnZlIHx8IDEwLCBwb2ludHMuc2VwYXJhdGVkUG9pbnRzLCBwb2ludHMub2JzdGFjbGVSZWN0IHx8IFtdKTtcbiAgICAgIGlmICghcHJlTGVuZ3RoU2VwYXJhdGVkUG9pbnRzICYmIHBvaW50cy5zZXBhcmF0ZWRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRWxlbWVudE9mUG9pbnRzKHBvaW50cyk7XG4gICAgICAgIGNvbnN0IHsgcGF0aEVsZW1lbnQsIGFycm93RWxlbWVudCwgY2lyY2xlU3RhcnRFbGVtZW50LCBjaXJjbGVFbmRFbGVtZW50IH0gPSB0aGlzLmNyZWF0ZVBhdGhBbmRBcnJvd0VsZW1lbnQoZGF0YS5pZCk7XG5cbiAgICAgICAgcG9pbnRzLnBhdGhFbGVtZW50ID0gcGF0aEVsZW1lbnQ7XG4gICAgICAgIHBvaW50cy5hcnJvd0VsZW1lbnQgPSBhcnJvd0VsZW1lbnQ7XG4gICAgICAgIGlmIChkYXRhLnN0YXJ0Q2lyY2xlKSB7XG4gICAgICAgICAgcG9pbnRzLmNpcmNsZVN0YXJ0RWxlbWVudCA9IGNpcmNsZVN0YXJ0RWxlbWVudDtcbiAgICAgICAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kKGNpcmNsZVN0YXJ0RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuZW5kQ2lyY2xlKSB7XG4gICAgICAgICAgcG9pbnRzLmNpcmNsZUVuZEVsZW1lbnQgPSBjaXJjbGVFbmRFbGVtZW50O1xuICAgICAgICAgIHRoaXMuc3ZnRWxlbWVudC5hcHBlbmQoY2lyY2xlRW5kRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXBvaW50cy5zZXBhcmF0ZWRQb2ludHM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmJ1aWxkUGF0aEFuZERyYXcoZGF0YSwgcG9pbnRzLCBtb2RlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXRoID0gJyc7XG5cbiAgICAgIHBvaW50cy5zZXBhcmF0ZWRQb2ludHMuZm9yRWFjaCgoc2VwYXJhdGVkUG9pbnRzKSA9PiB7XG4gICAgICAgIHBhdGggKz0gdGhpcy5idWlsZFBhdGhBbmREcmF3U2VwYXJhdGVkUG9pbnRzKGRhdGEsIHNlcGFyYXRlZFBvaW50cywgc2VwYXJhdGVkUG9pbnRzLm1vZGUgfHwgbW9kZSk7XG4gICAgICB9KTtcbiAgICAgIGlmICghcG9pbnRzLnBhdGhFbGVtZW50IHx8ICFwb2ludHMucGF0aEVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICBjb25zdCBwYXRoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncGF0aCcpO1xuXG4gICAgICAgIHRoaXMuc3ZnRWxlbWVudC5hcHBlbmQocGF0aEVsZW1lbnQpO1xuICAgICAgICBwb2ludHMucGF0aEVsZW1lbnQgPSBwYXRoRWxlbWVudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0eWxlQ29uZmlnID0ge1xuICAgICAgICBzdHJva2U6IGRhdGEubGluZVN0eWxlPy5zdHJva2UgPz8gJyM5Q0EyQUQnLFxuICAgICAgICBzdHJva2VEYXNoYXJyYXk6IGRhdGEubGluZVN0eWxlPy5zdHJva2VEYXNoYXJyYXksXG4gICAgICAgIHN0cm9rZVdpZHRoOiBkYXRhLmxpbmVTdHlsZT8uc3Ryb2tlV2lkdGggPz8gJzFweCcsXG4gICAgICAgIGZpbGw6IGRhdGEubGluZVN0eWxlPy5maWxsID8/ICdub25lJyxcbiAgICAgICAgY3VydmU6IGRhdGEubGluZVN0eWxlPy5jdXJ2ZSA/PyAxMCxcbiAgICAgICAgZGlzdGFuY2VQb2ludDogZGF0YS5saW5lU3R5bGU/LmRpc3RhbmNlUG9pbnQgPz8gMTAsXG4gICAgICB9O1xuXG4gICAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgc3R5bGVDb25maWcuc3Ryb2tlKTtcbiAgICAgIHBvaW50cy5wYXRoRWxlbWVudD8uc2V0QXR0cmlidXRlKCdmaWxsJywgc3R5bGVDb25maWcuZmlsbCk7XG4gICAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgc3R5bGVDb25maWcuc3Ryb2tlV2lkdGgpO1xuICAgICAgaWYgKHN0eWxlQ29uZmlnLnN0cm9rZURhc2hhcnJheSkge1xuICAgICAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIHN0eWxlQ29uZmlnLnN0cm9rZURhc2hhcnJheSk7XG4gICAgICB9XG4gICAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZCcsIHBhdGgpO1xuICAgICAgdGhpcy5kcmF3UmVjdEFuZEluaXRFdmVudChkYXRhLCBtb2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmlld0JveCh2aWV3Qm94Q29uZmlnPzogSVZpZXdCb3hDb25maWcpIHtcbiAgICBpZiAodmlld0JveENvbmZpZykge1xuICAgICAgdGhpcy52aWV3Qm94Q29uZmlnID0gdmlld0JveENvbmZpZztcbiAgICB9XG4gICAgY29uc3QgeFBvaW50czogU2V0PG51bWJlcj4gPSBuZXcgU2V0KFswXSk7XG4gICAgY29uc3QgeVBvaW50czogU2V0PG51bWJlcj4gPSBuZXcgU2V0KFswXSk7XG5cbiAgICBjb25zdCBhZGRQb2ludHMgPSAocG9pbnRzOiBJUG9pbnRzKSA9PiB7XG4gICAgICB4UG9pbnRzLmFkZChwb2ludHMuc3RhcnQueCk7XG4gICAgICB4UG9pbnRzLmFkZChwb2ludHMuZW5kLngpO1xuICAgICAgeVBvaW50cy5hZGQocG9pbnRzLnN0YXJ0LnkpO1xuICAgICAgeVBvaW50cy5hZGQocG9pbnRzLmVuZC55KTtcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhRHJhdz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgcG9pbnRzID0gaXRlbS5wb2ludHM7XG5cbiAgICAgIGFkZFBvaW50cyhwb2ludHMpO1xuICAgICAgcG9pbnRzLnNlcGFyYXRlZFBvaW50cz8uZm9yRWFjaCgoc2VwYXJhdGVkUG9pbnRzKSA9PiBhZGRQb2ludHMoc2VwYXJhdGVkUG9pbnRzKSk7XG4gICAgICBwb2ludHMub2JzdGFjbGVSZWN0Py5mb3JFYWNoKChvYnN0YWNsZVJlY3QpID0+IHtcbiAgICAgICAgYWRkUG9pbnRzKHtcbiAgICAgICAgICBzdGFydDogeyB4OiBvYnN0YWNsZVJlY3QueCAtIChvYnN0YWNsZVJlY3QuZ2FwWE9ic3RhY2xlUmVjdCB8fCA4KSwgeTogb2JzdGFjbGVSZWN0LnkgLSAob2JzdGFjbGVSZWN0LmdhcFlPYnN0YWNsZVJlY3QgfHwgOCkgfSxcbiAgICAgICAgICBlbmQ6IHsgeDogb2JzdGFjbGVSZWN0LnggKyBvYnN0YWNsZVJlY3Qud2lkdGggKyAob2JzdGFjbGVSZWN0LmdhcFhPYnN0YWNsZVJlY3QgfHwgOCkgKiAyLCB5OiBvYnN0YWNsZVJlY3QueSArIG9ic3RhY2xlUmVjdC5oZWlnaHQgKyAob2JzdGFjbGVSZWN0LmdhcFlPYnN0YWNsZVJlY3QgfHwgOCkgKiAyIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB4TWF4ID0gdGhpcy52aWV3Qm94Q29uZmlnPy53aWR0aCA/PyAoKHhQb2ludHMuc2l6ZSA/IE1hdGgubWF4KC4uLnhQb2ludHMpIDogMCkgKyAxNCk7XG4gICAgY29uc3QgeU1heCA9IHRoaXMudmlld0JveENvbmZpZz8uaGVpZ2h0ID8/ICgoeVBvaW50cy5zaXplID8gTWF0aC5tYXgoLi4ueVBvaW50cykgOiAwKSArIDE0KTtcblxuICAgIGlmICghdGhpcy52aWV3Qm94Q29uZmlnPy5pZ25vcmVWaWV3Qm94KSB7XG4gICAgICBjb25zdCByZWN0U3ZnRWxlbWVudCA9IHRoaXMuc3ZnRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgdGhpcy5zdmdFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCBgJHt0aGlzLnZpZXdCb3hDb25maWc/Lm1pblggPz8gcmVjdFN2Z0VsZW1lbnQueH0gJHt0aGlzLnZpZXdCb3hDb25maWc/Lm1pblkgPz8gcmVjdFN2Z0VsZW1lbnQueX0gJHt4TWF4fSAke3lNYXh9YCk7XG4gICAgfVxuICAgIHRoaXMuc3ZnRWxlbWVudD8uc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3hNYXggPz8gMH1gKTtcbiAgICB0aGlzLnN2Z0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7eU1heCA/PyAwfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BvaW50SW5zaWRlU3F1YXJlKHBvaW50OiBJUG9pbnQsIHNxdWFyZTogSVJlY3QpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IHgsIHkgfSA9IHBvaW50O1xuICAgIGNvbnN0IHsgeDogc3F1YXJlWCwgeTogc3F1YXJlWSwgd2lkdGgsIGhlaWdodCB9ID0gc3F1YXJlO1xuXG4gICAgcmV0dXJuIHggPj0gc3F1YXJlWCAmJiB4IDw9IHNxdWFyZVggKyB3aWR0aCAmJiB5ID49IHNxdWFyZVkgJiYgeSA8PSBzcXVhcmVZICsgaGVpZ2h0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdG9yU2VwYXJhdGVkUG9pbnRzKG5hbWU6IHN0cmluZywgcG9pbnRzOiBJUG9pbnRzLCBjdXJ2ZTogbnVtYmVyLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+LCBvYnN0YWNsZVJlY3RzOiBBcnJheTxJUmVjdD4pIHtcbiAgICBpZiAoIW9ic3RhY2xlUmVjdHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudFN0YXJ0ID0gb2JzdGFjbGVSZWN0cy5maW5kKChpdGVtKSA9PiB0aGlzLmlzUG9pbnRJbnNpZGVTcXVhcmUocG9pbnRzLnN0YXJ0LCBpdGVtKSk7XG4gICAgY29uc3QgZWxlbWVudEVuZCA9IG9ic3RhY2xlUmVjdHMuZmluZCgoaXRlbSkgPT4gdGhpcy5pc1BvaW50SW5zaWRlU3F1YXJlKHBvaW50cy5lbmQsIGl0ZW0pKTtcblxuICAgIGlmICh0aGlzLnZpZXdCb3hDb25maWc/Lm1hcmdpbkJldHdlZW5FbGVtZW50KSB7XG4gICAgICBNb0NhbnZhc0Nvbm5lY3ROYXZpZ2F0aW9uTmV3RWxlbWVudFV0aWwuRUxFTUVOVF9NQVJHSU5fQkVUV0VFTl9CUkFOQ0hfREVGQVVMVCA9IHRoaXMudmlld0JveENvbmZpZz8ubWFyZ2luQmV0d2VlbkVsZW1lbnQgPz8gMzI7XG4gICAgfVxuICAgIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbC5zZXRYWUNvbm5lY3RFbGVtZW50cyhlbGVtZW50U3RhcnQgPz8geyAuLi5wb2ludHMuc3RhcnQsIHdpZHRoOiAxLCBoZWlnaHQ6IDEgfSwgZWxlbWVudEVuZCA/PyB7IC4uLnBvaW50cy5lbmQsIHdpZHRoOiAxLCBoZWlnaHQ6IDEgfSwgb2JzdGFjbGVSZWN0cywgc2VwYXJhdGVkUG9pbnRzLCBjdXJ2ZSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGF0aEFuZERyYXcoZGF0YTogSURyYXdMaW5lRGF0YUlucHV0LCBwb2ludHM6IElQb2ludHMsIG1vZGU/OiBUWVBFX01PREUpIHtcbiAgICBsZXQgZFBhdGggPSB7fSBhcyBJQXR0cmlidXRlRE9uUGF0aDtcbiAgICBjb25zdCBzdHlsZUNvbmZpZyA9IHtcbiAgICAgIHN0cm9rZTogZGF0YS5saW5lU3R5bGU/LnN0cm9rZSA/PyAnIzlDQTJBRCcsXG4gICAgICBzdHJva2VEYXNoYXJyYXk6IGRhdGEubGluZVN0eWxlPy5zdHJva2VEYXNoYXJyYXksXG4gICAgICBzdHJva2VXaWR0aDogZGF0YS5saW5lU3R5bGU/LnN0cm9rZVdpZHRoID8/ICcxcHgnLFxuICAgICAgZmlsbDogZGF0YS5saW5lU3R5bGU/LmZpbGwgPz8gJ25vbmUnLFxuICAgICAgY3VydmU6IGRhdGEubGluZVN0eWxlPy5jdXJ2ZSA/PyAxMCxcbiAgICAgIGRpc3RhbmNlUG9pbnQ6IGRhdGEubGluZVN0eWxlPy5kaXN0YW5jZVBvaW50ID8/IDEwLFxuICAgIH07XG5cbiAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgc3R5bGVDb25maWcuc3Ryb2tlKTtcbiAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHN0eWxlQ29uZmlnLmZpbGwpO1xuICAgIHBvaW50cy5wYXRoRWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBzdHlsZUNvbmZpZy5zdHJva2VXaWR0aCk7XG4gICAgaWYgKHN0eWxlQ29uZmlnLnN0cm9rZURhc2hhcnJheSkge1xuICAgICAgcG9pbnRzLnBhdGhFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1kYXNoYXJyYXknLCBzdHlsZUNvbmZpZy5zdHJva2VEYXNoYXJyYXkpO1xuICAgIH1cbiAgICBsZXQgeyBjdXJ2ZSwgZGlzdGFuY2VQb2ludCB9ID0gc3R5bGVDb25maWc7XG5cbiAgICBtb2RlID0gbW9kZSB8fCAncXVhcnQtaW4nO1xuICAgIGlmIChtb2RlICE9PSAncXVhcnQtaW4nKSB7XG4gICAgICBjdXJ2ZSA9IGN1cnZlID8/IDEwO1xuICAgICAgZGlzdGFuY2VQb2ludCA9IGRpc3RhbmNlUG9pbnQgPz8gMTA7XG4gICAgfVxuICAgIGlmIChtb2RlID09PSAncXVhcnQtaW4nIHx8IHBvaW50cy5zdGFydC54ID09PSBwb2ludHMuZW5kLnggfHwgcG9pbnRzLnN0YXJ0LnkgPT09IHBvaW50cy5lbmQueSkge1xuICAgICAgdGhpcy5kcmF3QmFsYW5jZWRDdXJ2ZShkUGF0aCwgcG9pbnRzKTtcblxuICAgICAgaWYgKG1vZGUgPT09ICdxdWFydC1pbicpIHtcbiAgICAgICAgZFBhdGggPSB7fSBhcyBJQXR0cmlidXRlRE9uUGF0aDtcbiAgICAgICAgdGhpcy5kcmF3QmVuZEJvdGhFbmRzQ3VydmUoZFBhdGgsIHBvaW50cyk7XG4gICAgICB9XG4gICAgICBwb2ludHMucGF0aEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZCcsIHRoaXMuYnVpbERBdHRyaWJ1dGVUb1N0cmluZyhkUGF0aCkpO1xuICAgICAgdGhpcy5kcmF3UmVjdEFuZEluaXRFdmVudChkYXRhLCBtb2RlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNhbGN1bGF0b3JEaXN0YW5jZVBvaW50QW5kQ3VydmUocG9pbnRzLCBkaXN0YW5jZVBvaW50LCBjdXJ2ZSwgbW9kZSk7XG5cbiAgICBkaXN0YW5jZVBvaW50ID0gcmVzdWx0LmRpc3RhbmNlUG9pbnQ7XG4gICAgY3VydmUgPSByZXN1bHQuY3VydmU7XG5cbiAgICB0aGlzLmJ1aWxkREF0dHJpYnV0ZUJ5UG9pbnRFbmRNb2RlSG9yaXpvbnRhbChkUGF0aCwgcG9pbnRzLCBkaXN0YW5jZVBvaW50IHx8IDAsIGN1cnZlIHx8IDAsIG1vZGUpO1xuICAgIHRoaXMuYnVpbGREQXR0cmlidXRlQnlQb2ludEVuZE1vZGVWZXJ0aWNhbChkUGF0aCwgcG9pbnRzLCBkaXN0YW5jZVBvaW50IHx8IDAsIGN1cnZlIHx8IDAsIG1vZGUpO1xuICAgIHBvaW50cy5wYXRoRWxlbWVudD8uc2V0QXR0cmlidXRlKCdkJywgdGhpcy5idWlsREF0dHJpYnV0ZVRvU3RyaW5nKGRQYXRoKSk7XG4gICAgdGhpcy5kcmF3UmVjdEFuZEluaXRFdmVudChkYXRhLCBtb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRvckRpc3RhbmNlUG9pbnRBbmRDdXJ2ZShwb2ludHM6IElQb2ludHMsIGRpc3RhbmNlUG9pbnQ6IG51bWJlciwgY3VydmU6IG51bWJlciwgbW9kZTogVFlQRV9NT0RFKSB7XG4gICAgaWYgKCFtb2RlLmluY2x1ZGVzKCd2ZXJ0aWNhbCcpICYmICFtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsJykpIHtcbiAgICAgIHJldHVybiB7IGN1cnZlLCBkaXN0YW5jZVBvaW50IH07XG4gICAgfVxuICAgIGNvbnN0IGdhcFggPSBNYXRoLmFicyhwb2ludHMuc3RhcnQueCAtIHBvaW50cy5lbmQueCk7XG4gICAgY29uc3QgZ2FwWSA9IE1hdGguYWJzKHBvaW50cy5zdGFydC55IC0gcG9pbnRzLmVuZC55KTtcbiAgICBjb25zdCBtdWx0aXBsaWVyQ3VydmUgPSBtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsJykgPyAxIDogMjtcbiAgICBjb25zdCBtdWx0aXBsaWVyRGlzdGFuY2UgPSBtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsJykgPyAyIDogMTtcblxuICAgIGlmICghbW9kZS5pbmNsdWRlcygnc2luZ2xlLWN1cnZlJykpIHtcbiAgICAgIGlmIChnYXBYIDwgZGlzdGFuY2VQb2ludCAqIG11bHRpcGxpZXJEaXN0YW5jZSArIGN1cnZlICogbXVsdGlwbGllckN1cnZlKSB7XG4gICAgICAgIGRpc3RhbmNlUG9pbnQgPSBjdXJ2ZSA9IGdhcFggLyAzO1xuICAgICAgfVxuICAgICAgaWYgKGdhcFkgPCBkaXN0YW5jZVBvaW50ICogbXVsdGlwbGllckRpc3RhbmNlICsgY3VydmUgKiBtdWx0aXBsaWVyQ3VydmUpIHtcbiAgICAgICAgZGlzdGFuY2VQb2ludCA9IGN1cnZlID0gZ2FwWSAvIDM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGN1cnZlLCBkaXN0YW5jZVBvaW50IH07XG4gICAgfVxuICAgIGNvbnN0IG1pbkdhcCA9IE1hdGgubWluKGdhcFgsIGdhcFkpO1xuXG4gICAgaWYgKG1pbkdhcCA8IGRpc3RhbmNlUG9pbnQpIHtcbiAgICAgIGRpc3RhbmNlUG9pbnQgPSBtaW5HYXA7XG4gICAgfVxuICAgIGlmIChtaW5HYXAgPCBjdXJ2ZSkge1xuICAgICAgY3VydmUgPSBtaW5HYXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY3VydmUsIGRpc3RhbmNlUG9pbnQgfTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd1JlY3RBbmRJbml0RXZlbnQoZGF0YTogSURyYXdMaW5lRGF0YUlucHV0LCBtb2RlOiBUWVBFX01PREUpIHtcbiAgICBjb25zdCBwb2ludHMgPSBkYXRhLnBvaW50cztcblxuICAgIHRoaXMudXBkYXRlU3R5bGVBcnJvdyhwb2ludHMsIG1vZGUsIGRhdGEpO1xuICAgIGlmIChkYXRhLnN0YXJ0Q2lyY2xlICYmIHBvaW50cy5jaXJjbGVTdGFydEVsZW1lbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlQXR0cmlidXRlQ2lyY2xlKHBvaW50cy5jaXJjbGVTdGFydEVsZW1lbnQsIGRhdGEuaWQsIHBvaW50cy5zdGFydCwgZGF0YS5zdGFydENpcmNsZVN0eWxlKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZW5kQ2lyY2xlICYmIHBvaW50cy5jaXJjbGVFbmRFbGVtZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZUF0dHJpYnV0ZUNpcmNsZShwb2ludHMuY2lyY2xlRW5kRWxlbWVudCwgZGF0YS5pZCwgcG9pbnRzLmVuZCwgZGF0YS5lbmRDaXJjbGVTdHlsZSk7XG4gICAgfVxuICAgIHRoaXMuaW5pdEV2ZW50KGRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3QmFsYW5jZWRDdXJ2ZShkUGF0aDogSUF0dHJpYnV0ZURPblBhdGgsIHBvaW50czogSVBvaW50cykge1xuICAgIGRQYXRoLk0gPSB7IHg6IHBvaW50cy5zdGFydC54LCB5OiBwb2ludHMuc3RhcnQueSB9O1xuICAgIGRQYXRoLlEgPSBbXG4gICAgICB7IHg6IHBvaW50cy5zdGFydC54ICsgKHBvaW50cy5lbmQueCAtIHBvaW50cy5zdGFydC54KSAvIDQsIHk6IHBvaW50cy5zdGFydC55ICsgKHBvaW50cy5lbmQueSAtIHBvaW50cy5zdGFydC55KSAvIDIgfSxcbiAgICAgIHsgeDogcG9pbnRzLnN0YXJ0LnggKyAocG9pbnRzLmVuZC54IC0gcG9pbnRzLnN0YXJ0LngpIC8gMiwgeTogcG9pbnRzLnN0YXJ0LnkgKyAocG9pbnRzLmVuZC55IC0gcG9pbnRzLnN0YXJ0LnkpIC8gMiB9LFxuICAgIF07XG4gICAgZFBhdGguUTIgPSBbXG4gICAgICB7IHg6IHBvaW50cy5lbmQueCAtIChwb2ludHMuZW5kLnggLSBwb2ludHMuc3RhcnQueCkgLyA0LCB5OiBwb2ludHMuc3RhcnQueSArIChwb2ludHMuZW5kLnkgLSBwb2ludHMuc3RhcnQueSkgLyAyIH0sXG4gICAgICB7IHg6IHBvaW50cy5lbmQueCwgeTogcG9pbnRzLmVuZC55IH0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd0JlbmRCb3RoRW5kc0N1cnZlKGRQYXRoOiBJQXR0cmlidXRlRE9uUGF0aCwgcG9pbnRzOiBJUG9pbnRzKSB7XG4gICAgY29uc3QgcG9pbnRYQ3VydmUgPSAocG9pbnRzLnN0YXJ0LnggKyBwb2ludHMuZW5kLngpICogMC41O1xuICAgIGNvbnN0IHBvaW50Q29udHJvbDEgPSB7IHg6IHBvaW50WEN1cnZlLCB5OiBwb2ludHMuc3RhcnQueSB9O1xuICAgIGNvbnN0IHBvaW50Q29udHJvbDIgPSB7IHg6IHBvaW50WEN1cnZlLCB5OiBwb2ludHMuZW5kLnkgfTtcblxuICAgIGRQYXRoLk0gPSB7IHg6IHBvaW50cy5zdGFydC54LCB5OiBwb2ludHMuc3RhcnQueSB9O1xuICAgIGRQYXRoLkMgPSBbXG4gICAgICB7IHg6IHBvaW50Q29udHJvbDEueCwgeTogcG9pbnRDb250cm9sMS55IH0sXG4gICAgICB7IHg6IHBvaW50Q29udHJvbDIueCwgeTogcG9pbnRDb250cm9sMi55IH0sXG4gICAgICB7IHg6IHBvaW50cy5lbmQueCwgeTogcG9pbnRzLmVuZC55IH0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREQXR0cmlidXRlQnlQb2ludEVuZE1vZGVIb3Jpem9udGFsKGRQYXRoOiBJQXR0cmlidXRlRE9uUGF0aCwgcG9pbnRzOiBJUG9pbnRzLCBkaXN0YW5jZVBvaW50OiBudW1iZXIsIGN1cnZlOiBudW1iZXIsIG1vZGU6IFRZUEVfTU9ERSkge1xuICAgIGlmICghbW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG11bHRpcGxpZXJYID0gcG9pbnRzLnN0YXJ0LnggPCBwb2ludHMuZW5kLnggPyAtMSA6IDE7XG4gICAgY29uc3QgbXVsdGlwbGllclkgPSBwb2ludHMuc3RhcnQueSA8IHBvaW50cy5lbmQueSA/IDEgOiAtMTtcbiAgICBjb25zdCByZXZlcnNlTXVsdGlwbGllciA9IC0xO1xuXG4gICAgZFBhdGguTSA9IHsgeDogcG9pbnRzLnN0YXJ0LngsIHk6IHBvaW50cy5zdGFydC55IH07XG4gICAgZFBhdGguTCA9IHsgeDogcG9pbnRzLmVuZC54ICsgKGRpc3RhbmNlUG9pbnQgKiAyICsgY3VydmUpICogbXVsdGlwbGllclgsIHk6IHBvaW50cy5zdGFydC55IH07XG4gICAgaWYgKG1vZGUuaW5jbHVkZXMoJ2hvcml6b250YWwtc2luZ2xlJykpIHtcbiAgICAgIGRQYXRoLkwueCA9IHBvaW50cy5lbmQueCArIGN1cnZlICogbXVsdGlwbGllclg7XG4gICAgfVxuICAgIGRQYXRoLlEgPSBbXG4gICAgICB7IHg6IGRQYXRoLkwueCArIGN1cnZlICogbXVsdGlwbGllclggKiByZXZlcnNlTXVsdGlwbGllciwgeTogcG9pbnRzLnN0YXJ0LnkgfSxcbiAgICAgIHsgeDogZFBhdGguTC54ICsgY3VydmUgKiBtdWx0aXBsaWVyWCAqIHJldmVyc2VNdWx0aXBsaWVyLCB5OiBwb2ludHMuc3RhcnQueSArIGN1cnZlICogbXVsdGlwbGllclkgfSxcbiAgICBdO1xuICAgIGRQYXRoLkwyID0geyB4OiBkUGF0aC5RWzFdLngsIHk6IHBvaW50cy5lbmQueSArIGN1cnZlICogbXVsdGlwbGllclkgKiByZXZlcnNlTXVsdGlwbGllciB9O1xuICAgIGlmIChtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsLXNpbmdsZScpKSB7XG4gICAgICBkUGF0aC5MMiA9IHBvaW50cy5lbmQ7XG4gICAgfVxuICAgIGlmIChtb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIGRQYXRoLlEyID0gW1xuICAgICAgICB7IHg6IGRQYXRoLkwyLngsIHk6IHBvaW50cy5lbmQueSB9LFxuICAgICAgICB7IHg6IGRQYXRoLkwyLnggKyBkaXN0YW5jZVBvaW50ICogbXVsdGlwbGllclggKiByZXZlcnNlTXVsdGlwbGllciwgeTogcG9pbnRzLmVuZC55IH0sXG4gICAgICBdO1xuICAgICAgZFBhdGguTDMgPSB7IHg6IHBvaW50cy5lbmQueCwgeTogcG9pbnRzLmVuZC55IH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZERBdHRyaWJ1dGVCeVBvaW50RW5kTW9kZVZlcnRpY2FsKGRQYXRoOiBJQXR0cmlidXRlRE9uUGF0aCwgcG9pbnRzOiBJUG9pbnRzLCBkaXN0YW5jZVBvaW50OiBudW1iZXIsIGN1cnZlOiBudW1iZXIsIG1vZGU6IFRZUEVfTU9ERSkge1xuICAgIGlmICghbW9kZS5pbmNsdWRlcygndmVydGljYWwnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aXBsaWVyWCA9IHBvaW50cy5zdGFydC54IDwgcG9pbnRzLmVuZC54ID8gLTEgOiAxO1xuICAgIGNvbnN0IG11bHRpcGxpZXJZID0gcG9pbnRzLnN0YXJ0LnkgPCBwb2ludHMuZW5kLnkgPyAxIDogLTE7XG4gICAgY29uc3QgcmV2ZXJzZU11bHRpcGxpZXIgPSAtMTtcblxuICAgIGRQYXRoLk0gPSBwb2ludHMuc3RhcnQ7XG4gICAgZFBhdGguTCA9IHsgeDogcG9pbnRzLnN0YXJ0LngsIHk6IHBvaW50cy5zdGFydC55ICsgZGlzdGFuY2VQb2ludCAqIG11bHRpcGxpZXJZIH07XG4gICAgaWYgKG1vZGUuaW5jbHVkZXMoJ3ZlcnRpY2FsLXNpbmdsZScpKSB7XG4gICAgICBkUGF0aC5MLnkgPSBwb2ludHMuZW5kLnkgKyBkaXN0YW5jZVBvaW50ICogbXVsdGlwbGllclkgKiByZXZlcnNlTXVsdGlwbGllcjtcbiAgICB9XG4gICAgZFBhdGguUSA9IFtcbiAgICAgIHsgeDogZFBhdGguTC54LCB5OiBkUGF0aC5MLnkgKyBjdXJ2ZSAqIG11bHRpcGxpZXJZIH0sXG4gICAgICB7IHg6IGRQYXRoLkwueCArIGN1cnZlICogbXVsdGlwbGllclggKiByZXZlcnNlTXVsdGlwbGllciwgeTogZFBhdGguTC55ICsgY3VydmUgKiBtdWx0aXBsaWVyWSB9LFxuICAgIF07XG4gICAgZFBhdGguTDIgPSB7IHg6IHBvaW50cy5lbmQueCArIGN1cnZlICogMiAqIG11bHRpcGxpZXJYLCB5OiBkUGF0aC5RWzFdLnkgfTtcbiAgICBpZiAobW9kZS5pbmNsdWRlcygndmVydGljYWwtc2luZ2xlJykpIHtcbiAgICAgIGRQYXRoLkwyID0gcG9pbnRzLmVuZDtcbiAgICB9XG4gICAgaWYgKG1vZGUgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIGRQYXRoLlEyID0gW1xuICAgICAgICB7IHg6IHBvaW50cy5lbmQueCwgeTogZFBhdGguTDIueSB9LFxuICAgICAgICB7IHg6IHBvaW50cy5lbmQueCwgeTogZFBhdGguTDIueSArIGN1cnZlICogbXVsdGlwbGllclkgfSxcbiAgICAgIF07XG4gICAgICBkUGF0aC5MMyA9IHsgeDogcG9pbnRzLmVuZC54LCB5OiBwb2ludHMuZW5kLnkgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxEQXR0cmlidXRlVG9TdHJpbmcoZEF0dHJpYnV0ZTogSUF0dHJpYnV0ZURPblBhdGgpOiBzdHJpbmcge1xuICAgIGxldCBkU3RyaW5nID0gJyc7XG5cbiAgICBPYmplY3Qua2V5cyhkQXR0cmlidXRlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBnZXQoZEF0dHJpYnV0ZSwga2V5IGFzIGtleW9mIElBdHRyaWJ1dGVET25QYXRoKTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgY29uc3QgW3BvaW50MSwgcG9pbnQyLCBwb2ludDNdID0gZGF0YTtcblxuICAgICAgICBkU3RyaW5nID0gYCR7ZFN0cmluZ30ke2tleS5yZXBsYWNlKC9cXGQvZywgJycpfSR7cG9pbnQxLnh9LCR7cG9pbnQxLnl9ICR7cG9pbnQyLnh9LCR7cG9pbnQyLnl9JHtwb2ludDMgPyAnICcgKyBwb2ludDMueCArICcsJyArIHBvaW50My55IDogJyd9XG4gICAgICAgIGA7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZFN0cmluZyA9IGAke2RTdHJpbmd9JHtrZXkucmVwbGFjZSgvXFxkL2csICcnKX0ke2RhdGE/Lnh9LCR7ZGF0YT8ueX1cbiAgICAgIGA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZFN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3R5bGVBcnJvdyhwb2ludHM6IElQb2ludHMsIG1vZGU6IFRZUEVfTU9ERSwgZGF0YTogSURyYXdMaW5lRGF0YUlucHV0KSB7XG4gICAgaWYgKCFwb2ludHMuYXJyb3dFbGVtZW50IHx8IGRhdGEuaWdub3JlRHJhd0Fycm93KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlQ29uZmlnID0ge1xuICAgICAgZmlsbDogZGF0YS5hcnJvd1N0eWxlPy5maWxsID8/ICcjOUNBMkFEJyxcbiAgICAgIHN0cm9rZTogZGF0YS5hcnJvd1N0eWxlPy5zdHJva2UgPz8gJ25vbmUnLFxuICAgICAgc3Ryb2tlV2lkdGg6IGRhdGEuYXJyb3dTdHlsZT8uc3Ryb2tlV2lkdGggPz8gJzAnLFxuICAgICAgd2lkdGg6IGRhdGEuYXJyb3dTdHlsZT8ud2lkdGggPz8gNixcbiAgICAgIGhlaWdodDogZGF0YS5hcnJvd1N0eWxlPy5oZWlnaHQgPz8gOCxcbiAgICB9O1xuICAgIGNvbnN0IHBvaW50RW5kID0gY2xvbmVEZWVwKHBvaW50cy5lbmQpO1xuICAgIGNvbnN0IGFycm93RWxlbWVudCA9IHBvaW50cy5hcnJvd0VsZW1lbnQ7XG4gICAgY29uc3QgaGFzU2VwYXJhdGVkUG9pbnRzID0gISFwb2ludHMuc2VwYXJhdGVkUG9pbnRzPy5sZW5ndGg7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gZGF0YS5hcnJvd0RpcmVjdGlvbiB8fCB0aGlzLmdldERpcmVjdGlvbihwb2ludHMsIGRhdGEuc3RhcnRFbmRNb2RlLCBtb2RlKTtcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGlmICghaGFzU2VwYXJhdGVkUG9pbnRzICYmIChtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsJykgfHwgbW9kZS5pbmNsdWRlcygndmVydGljYWwnKSkpIHtcbiAgICAgICAgICBwb2ludEVuZC54IC09IHN0eWxlQ29uZmlnLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgncG9pbnRzJywgYCR7cG9pbnRFbmQueH0sJHtwb2ludEVuZC55IC0gc3R5bGVDb25maWcud2lkdGh9ICAke3BvaW50RW5kLnggKyBzdHlsZUNvbmZpZy5oZWlnaHR9LCR7cG9pbnRFbmQueX0gJHtwb2ludEVuZC54fSwke3BvaW50RW5kLnkgKyBzdHlsZUNvbmZpZy53aWR0aH0gYCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgaWYgKCFoYXNTZXBhcmF0ZWRQb2ludHMgJiYgKG1vZGUuaW5jbHVkZXMoJ2hvcml6b250YWwnKSB8fCBtb2RlLmluY2x1ZGVzKCd2ZXJ0aWNhbCcpKSkge1xuICAgICAgICAgIHBvaW50RW5kLnggKz0gc3R5bGVDb25maWcuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGFycm93RWxlbWVudD8uc2V0QXR0cmlidXRlKCdwb2ludHMnLCBgJHtwb2ludEVuZC54fSwke3BvaW50RW5kLnkgLSBzdHlsZUNvbmZpZy53aWR0aH0gICR7cG9pbnRFbmQueCAtIHN0eWxlQ29uZmlnLmhlaWdodH0sJHtwb2ludEVuZC55fSAke3BvaW50RW5kLnh9LCR7cG9pbnRFbmQueSArIHN0eWxlQ29uZmlnLndpZHRofSBgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIGlmICghaGFzU2VwYXJhdGVkUG9pbnRzICYmIChtb2RlLmluY2x1ZGVzKCdob3Jpem9udGFsJykgfHwgbW9kZS5pbmNsdWRlcygndmVydGljYWwnKSkpIHtcbiAgICAgICAgICBwb2ludEVuZC55ICs9IHN0eWxlQ29uZmlnLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgncG9pbnRzJywgYCR7cG9pbnRFbmQueCAtIHN0eWxlQ29uZmlnLndpZHRofSwke3BvaW50RW5kLnl9ICAke3BvaW50RW5kLnh9LCR7cG9pbnRFbmQueSAtIHN0eWxlQ29uZmlnLmhlaWdodH0gJHtwb2ludEVuZC54ICsgc3R5bGVDb25maWcud2lkdGh9LCR7cG9pbnRFbmQueX0gYCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBpZiAoIWhhc1NlcGFyYXRlZFBvaW50cyAmJiAobW9kZS5pbmNsdWRlcygnaG9yaXpvbnRhbCcpIHx8IG1vZGUuaW5jbHVkZXMoJ3ZlcnRpY2FsJykpKSB7XG4gICAgICAgICAgcG9pbnRFbmQueSAtPSBzdHlsZUNvbmZpZy5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgYXJyb3dFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGAke3BvaW50RW5kLnggLSBzdHlsZUNvbmZpZy53aWR0aH0sJHtwb2ludEVuZC55fSAgJHtwb2ludEVuZC54fSwke3BvaW50RW5kLnkgKyBzdHlsZUNvbmZpZy5oZWlnaHR9ICR7cG9pbnRFbmQueCArIHN0eWxlQ29uZmlnLndpZHRofSwke3BvaW50RW5kLnl9IGApO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhcnJvd0VsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHN0eWxlQ29uZmlnLmZpbGwpO1xuICAgIGFycm93RWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHJva2UnLCBzdHlsZUNvbmZpZy5zdHJva2UpO1xuICAgIGFycm93RWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBzdHlsZUNvbmZpZy5zdHJva2VXaWR0aCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUF0dHJpYnV0ZUNpcmNsZShjaXJjbGVFbGVtZW50OiBTVkdDaXJjbGVFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sIGNpcmNsZVN0eWxlPzogSUNpcmNsZVN0eWxlKSB7XG4gICAgY2lyY2xlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBuYW1lKTtcbiAgICBjaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnY3gnLCBgJHtwb2ludC54fWApO1xuICAgIGNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdjeScsIGAke3BvaW50Lnl9YCk7XG4gICAgY2lyY2xlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3InLCBgJHtjaXJjbGVTdHlsZT8uciA/PyAyfWApO1xuICAgIGNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWxsJywgYCR7Y2lyY2xlU3R5bGU/LmZpbGwgPz8gJ2dyZWVuJ31gKTtcbiAgICBjaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgYCR7Y2lyY2xlU3R5bGU/LnN0cm9rZSA/PyAnIzlDQTJBRCd9YCk7XG4gICAgY2lyY2xlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsIGAke2NpcmNsZVN0eWxlPy5zdHJva2VXaWR0aCA/PyAnMXB4J31gKTtcblxuICAgIHJldHVybiBjaXJjbGVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXJlY3Rpb24ocG9pbnRzOiBJUG9pbnRzLCBzdGFydEVuZE1vZGU6ICdyaWdodC1sZWZ0JyB8ICdib3R0b20tdG9wJyB8ICdib3R0b20tbGVmdCcgfCB1bmRlZmluZWQsIG1vZGU/OiBUWVBFX01PREUpOiBUWVBFX0RJUkVDVElPTiB7XG4gICAgbGV0IHBvaW50U3RhcnQgPSB7IC4uLnBvaW50cy5zdGFydCB9O1xuXG4gICAgaWYgKHBvaW50cy5zZXBhcmF0ZWRQb2ludHMpIHtcbiAgICAgIGNvbnN0IGxpbmVUb0VuZCA9IHBvaW50cy5zZXBhcmF0ZWRQb2ludHMuZmluZCgoaXRlbSkgPT4gaXRlbS5lbmQueCA9PT0gcG9pbnRzLmVuZC54ICYmIGl0ZW0uZW5kLnkgPT09IHBvaW50cy5lbmQueSk7XG5cbiAgICAgIGlmIChsaW5lVG9FbmQpIHtcbiAgICAgICAgcG9pbnRTdGFydCA9IGxpbmVUb0VuZC5zdGFydDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbW9kZUhvcml6b250YWwgPSBwb2ludFN0YXJ0LnggPCBwb2ludHMuZW5kLnggPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1vZGVWZXJ0aWNhbCA9IHBvaW50U3RhcnQueSA8IHBvaW50cy5lbmQueSA/ICdib3R0b20nIDogJ3RvcCc7XG5cbiAgICBpZiAobW9kZT8uaW5jbHVkZXMoJ3ZlcnRpY2FsJykgJiYgIW1vZGUuaW5jbHVkZXMoJ3NpbmdsZS1jdXJ2ZScpKSB7XG4gICAgICByZXR1cm4gbW9kZVZlcnRpY2FsO1xuICAgIH1cbiAgICBpZiAobW9kZT8uaW5jbHVkZXMoJ2hvcml6b250YWwnKSAmJiAhbW9kZS5pbmNsdWRlcygnc2luZ2xlLWN1cnZlJykpIHtcbiAgICAgIHJldHVybiBtb2RlSG9yaXpvbnRhbDtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXJ0RW5kTW9kZSkge1xuICAgICAgaWYgKE1hdGguYWJzKHBvaW50cy5lbmQueCAtIHBvaW50U3RhcnQueCkgPiBNYXRoLmFicyhwb2ludHMuZW5kLnkgLSBwb2ludFN0YXJ0LnkpKSB7XG4gICAgICAgIHJldHVybiBtb2RlSG9yaXpvbnRhbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vZGVWZXJ0aWNhbDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHN0YXJ0RW5kTW9kZSkge1xuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICByZXR1cm4gbW9kZUhvcml6b250YWw7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0LWxlZnQnOlxuICAgICAgICByZXR1cm4gbW9kZUhvcml6b250YWw7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbS10b3AnOlxuICAgICAgICByZXR1cm4gbW9kZVZlcnRpY2FsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEV2ZW50KGRhdGE6IElEcmF3TGluZURhdGFJbnB1dCkge1xuICAgIGNvbnN0IHBvaW50czogSVBvaW50cyA9IGRhdGEucG9pbnRzO1xuICAgIGxldCBwcmVFdmVudDogTW91c2VFdmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmICgoIXBvaW50cy5hcnJvd0VsZW1lbnQgJiYgIXBvaW50cy5jaXJjbGVFbmRFbGVtZW50KSB8fCAhcG9pbnRzLm9uRGVzdHJveUV2ZW50IHx8IHBvaW50cy5pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBvaW50cy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgY29uc3QgZnVuY3Rpb25Nb3VzZVVwID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwcmVFdmVudCkge1xuICAgICAgICBwcmVFdmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5vbkRyYXdMaW5lRW5kLm5leHQoeyBkYXRhTGluZTogZGF0YSwgZXZlbnQ6IG1vdXNlRXZlbnQgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXJEcmFnID0gKGRyYWdNb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXByZUV2ZW50KSB7XG4gICAgICAgIHByZUV2ZW50ID0gZHJhZ01vdXNlRXZlbnQ7XG4gICAgICB9XG4gICAgICBjb25zdCBwb2ludEVuZCA9IGNsb25lRGVlcChwb2ludHMuZW5kKTtcblxuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuc3ZnRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHZpZXdCb3ggPSB0aGlzLnN2Z0VsZW1lbnQudmlld0JveD8uYmFzZVZhbDtcbiAgICAgIGNvbnN0IHNjYWxlWCA9IHZpZXdCb3g/LndpZHRoID8gdmlld0JveC53aWR0aCAvIHJlY3Qud2lkdGggOiAxO1xuICAgICAgY29uc3Qgc2NhbGVZID0gdmlld0JveD8uaGVpZ2h0ID8gdmlld0JveC5oZWlnaHQgLyByZWN0LmhlaWdodCA6IDE7XG5cbiAgICAgIGNvbnN0IG1vdmVtZW50WCA9IChkcmFnTW91c2VFdmVudC5jbGllbnRYIC0gcHJlRXZlbnQuY2xpZW50WCkgKiBzY2FsZVg7XG4gICAgICBjb25zdCBtb3ZlbWVudFkgPSAoZHJhZ01vdXNlRXZlbnQuY2xpZW50WSAtIHByZUV2ZW50LmNsaWVudFkpICogc2NhbGVZO1xuXG4gICAgICBwcmVFdmVudCA9IGRyYWdNb3VzZUV2ZW50O1xuICAgICAgcG9pbnRFbmQueCArPSBtb3ZlbWVudFg7XG4gICAgICBwb2ludEVuZC55ICs9IG1vdmVtZW50WTtcbiAgICAgIGlmIChkYXRhLnBvaW50cz8ub2JzdGFjbGVSZWN0Py5sZW5ndGggJiYgZGF0YS5wb2ludHM/Lm9ic3RhY2xlUmVjdC5zb21lKChvYnN0YWNsZVJlY3QpID0+IHRoaXMuY2hlY2tQb2ludEluY2x1ZGVSZWN0KHBvaW50RW5kLCBvYnN0YWNsZVJlY3QpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwb2ludHMuZW5kLnggPSBwb2ludEVuZC54O1xuICAgICAgcG9pbnRzLmVuZC55ID0gcG9pbnRFbmQueTtcbiAgICAgIHRoaXMuZHJhd0xpbmUoZGF0YSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdCb3goKTtcbiAgICB9O1xuXG4gICAgaWYgKHBvaW50cy5hcnJvd0VsZW1lbnQpIHtcbiAgICAgIGdldERyYWdFdmVudEJ5RWxlbWVudCh7XG4gICAgICAgIGVsZW1lbnRNb3VzZURvd246IHBvaW50cy5hcnJvd0VsZW1lbnQgYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgZnVuY3Rpb25Nb3VzZVVwOiBmdW5jdGlvbk1vdXNlVXAsXG4gICAgICAgIGRlc3Ryb3lSZWY6IHRoaXMuZGVzdHJveVJlZixcbiAgICAgIH0pXG4gICAgICAgIC5waXBlKHRhcChoYW5kbGVyRHJhZyksIHRha2VVbnRpbChwb2ludHMub25EZXN0cm95RXZlbnQpKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHBvaW50cy5jaXJjbGVFbmRFbGVtZW50KSB7XG4gICAgICBnZXREcmFnRXZlbnRCeUVsZW1lbnQoe1xuICAgICAgICBlbGVtZW50TW91c2VEb3duOiBwb2ludHMuY2lyY2xlRW5kRWxlbWVudCBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICBmdW5jdGlvbk1vdXNlVXA6IGZ1bmN0aW9uTW91c2VVcCxcbiAgICAgICAgZGVzdHJveVJlZjogdGhpcy5kZXN0cm95UmVmLFxuICAgICAgfSlcbiAgICAgICAgLnBpcGUodGFwKGhhbmRsZXJEcmFnKSwgdGFrZVVudGlsKHBvaW50cy5vbkRlc3Ryb3lFdmVudCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUG9pbnRJbmNsdWRlUmVjdChwb2ludDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LCBvYnN0YWNsZVJlY3Q6IElSZWN0KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FwRGVmYXVsdCA9IDg7XG5cbiAgICBvYnN0YWNsZVJlY3QgPSB7XG4gICAgICB4OiBvYnN0YWNsZVJlY3QueCAtIChvYnN0YWNsZVJlY3QuZ2FwWE9ic3RhY2xlUmVjdCB8fCBnYXBEZWZhdWx0KSxcbiAgICAgIHk6IG9ic3RhY2xlUmVjdC55IC0gKG9ic3RhY2xlUmVjdC5nYXBZT2JzdGFjbGVSZWN0IHx8IGdhcERlZmF1bHQpLFxuICAgICAgd2lkdGg6IG9ic3RhY2xlUmVjdC53aWR0aCArIChvYnN0YWNsZVJlY3QuZ2FwWE9ic3RhY2xlUmVjdCB8fCBnYXBEZWZhdWx0KSAqIDIsXG4gICAgICBoZWlnaHQ6IG9ic3RhY2xlUmVjdC5oZWlnaHQgKyAob2JzdGFjbGVSZWN0LmdhcFlPYnN0YWNsZVJlY3QgfHwgZ2FwRGVmYXVsdCkgKiAyLFxuICAgIH07XG4gICAgaWYgKG9ic3RhY2xlUmVjdC54IDw9IHBvaW50LnggJiYgcG9pbnQueCA8PSBvYnN0YWNsZVJlY3QueCArIG9ic3RhY2xlUmVjdC53aWR0aCAmJiBvYnN0YWNsZVJlY3QueSA8PSBwb2ludC55ICYmIHBvaW50LnkgPD0gb2JzdGFjbGVSZWN0LnkgKyBvYnN0YWNsZVJlY3QuaGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBhdGhBbmRBcnJvd0VsZW1lbnQobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0aEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BhdGgnKTtcbiAgICBjb25zdCBhcnJvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BvbHlsaW5lJyk7XG4gICAgY29uc3QgY2lyY2xlU3RhcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdjaXJjbGUnKTtcbiAgICBjb25zdCBjaXJjbGVFbmRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdjaXJjbGUnKTtcblxuICAgIHBhdGhFbGVtZW50LnNldEF0dHJpYnV0ZSgnbmFtZScsIG5hbWUpO1xuICAgIGFycm93RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBuYW1lKTtcbiAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kKHBhdGhFbGVtZW50KTtcbiAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kKGFycm93RWxlbWVudCk7XG5cbiAgICByZXR1cm4geyBwYXRoRWxlbWVudCwgYXJyb3dFbGVtZW50LCBjaXJjbGVTdGFydEVsZW1lbnQsIGNpcmNsZUVuZEVsZW1lbnQgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2lyY2xlKG5hbWU6IHN0cmluZywgcG9pbnQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSkge1xuICAgIGlmICghdGhpcy5kcmF3UmVjdERlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnY2lyY2xlJyk7XG5cbiAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCduYW1lJywgbmFtZSk7XG4gICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgnY3gnLCBgJHtwb2ludC54fWApO1xuICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoJ2N5JywgYCR7cG9pbnQueX1gKTtcbiAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCdyJywgJzInKTtcbiAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCdzdHlsZScsICdmaWxsOiBub25lOyBzdHJva2U6IGJsdWU7IHN0cm9rZS13aWR0aDogMXB4OycpO1xuICAgIHRoaXMuc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNpcmNsZSgpIHtcbiAgICBpZiAoIXRoaXMuZHJhd1JlY3REZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBBcnJheS5mcm9tKHRoaXMuc3ZnRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2lyY2xlJykpPy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnJlbW92ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUmVjdChuYW1lOiBzdHJpbmcsIHJlY3Q6IElSZWN0KSB7XG4gICAgaWYgKCF0aGlzLmRyYXdSZWN0RGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3JlY3QnKTtcbiAgICBjb25zdCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAndGV4dCcpO1xuXG4gICAgcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCduYW1lJywgbmFtZSk7XG4gICAgcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCd4JywgYCR7cmVjdC54fWApO1xuICAgIHJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgneScsIGAke3JlY3QueX1gKTtcbiAgICByZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7cmVjdC53aWR0aH1gKTtcbiAgICByZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke3JlY3QuaGVpZ2h0fWApO1xuICAgIHJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZmlsbDogYmx1ZTsgc3Ryb2tlOiBibHVlOycpO1xuICAgIHRoaXMuc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChyZWN0RWxlbWVudCk7XG5cbiAgICB0ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHtyZWN0Lnh9YCk7XG4gICAgdGV4dEVsZW1lbnQuc2V0QXR0cmlidXRlKCd5JywgYCR7cmVjdC55fWApO1xuICAgIHRleHRFbGVtZW50LnRleHRDb250ZW50ID0gcmVjdC5pZCA/PyAnJztcbiAgICB0aGlzLnN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dEVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclJlY3QoKSB7XG4gICAgaWYgKCF0aGlzLmRyYXdSZWN0RGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgQXJyYXkuZnJvbSh0aGlzLnN2Z0VsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3JlY3QnKSk/LmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ucmVtb3ZlKCkpO1xuICAgIEFycmF5LmZyb20odGhpcy5zdmdFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0JykpPy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnJlbW92ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYXRoQW5kRHJhd1NlcGFyYXRlZFBvaW50cyhkYXRhOiBJRHJhd0xpbmVEYXRhSW5wdXQsIHBvaW50czogSVBvaW50cywgbW9kZT86IFRZUEVfTU9ERSkge1xuICAgIGxldCBkUGF0aCA9IHt9IGFzIElBdHRyaWJ1dGVET25QYXRoO1xuICAgIGNvbnN0IHN0eWxlQ29uZmlnID0ge1xuICAgICAgY3VydmU6IGRhdGEubGluZVN0eWxlPy5jdXJ2ZSA/PyAxMCxcbiAgICAgIGRpc3RhbmNlUG9pbnQ6IGRhdGEubGluZVN0eWxlPy5kaXN0YW5jZVBvaW50ID8/IDEwLFxuICAgIH07XG5cbiAgICBsZXQgeyBjdXJ2ZSwgZGlzdGFuY2VQb2ludCB9ID0gc3R5bGVDb25maWc7XG5cbiAgICBtb2RlID0gbW9kZSB8fCAncXVhcnQtaW4nO1xuICAgIGlmIChtb2RlICE9PSAncXVhcnQtaW4nKSB7XG4gICAgICBjdXJ2ZSA9IGN1cnZlID8/IDEwO1xuICAgICAgZGlzdGFuY2VQb2ludCA9IGRpc3RhbmNlUG9pbnQgPz8gMTA7XG4gICAgfVxuICAgIGlmIChtb2RlID09PSAncXVhcnQtaW4nIHx8IHBvaW50cy5zdGFydC54ID09PSBwb2ludHMuZW5kLnggfHwgcG9pbnRzLnN0YXJ0LnkgPT09IHBvaW50cy5lbmQueSkge1xuICAgICAgdGhpcy5kcmF3QmFsYW5jZWRDdXJ2ZShkUGF0aCwgcG9pbnRzKTtcblxuICAgICAgaWYgKG1vZGUgPT09ICdxdWFydC1pbicpIHtcbiAgICAgICAgZFBhdGggPSB7fSBhcyBJQXR0cmlidXRlRE9uUGF0aDtcbiAgICAgICAgdGhpcy5kcmF3QmVuZEJvdGhFbmRzQ3VydmUoZFBhdGgsIHBvaW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmJ1aWxEQXR0cmlidXRlVG9TdHJpbmcoZFBhdGgpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNhbGN1bGF0b3JEaXN0YW5jZVBvaW50QW5kQ3VydmUocG9pbnRzLCBkaXN0YW5jZVBvaW50LCBjdXJ2ZSwgbW9kZSk7XG5cbiAgICBkaXN0YW5jZVBvaW50ID0gcmVzdWx0LmRpc3RhbmNlUG9pbnQ7XG4gICAgY3VydmUgPSByZXN1bHQuY3VydmU7XG5cbiAgICB0aGlzLmJ1aWxkREF0dHJpYnV0ZUJ5UG9pbnRFbmRNb2RlSG9yaXpvbnRhbChkUGF0aCwgcG9pbnRzLCBkaXN0YW5jZVBvaW50IHx8IDAsIGN1cnZlIHx8IDAsIG1vZGUpO1xuICAgIHRoaXMuYnVpbGREQXR0cmlidXRlQnlQb2ludEVuZE1vZGVWZXJ0aWNhbChkUGF0aCwgcG9pbnRzLCBkaXN0YW5jZVBvaW50IHx8IDAsIGN1cnZlIHx8IDAsIG1vZGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuYnVpbERBdHRyaWJ1dGVUb1N0cmluZyhkUGF0aCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -991,6 +991,7 @@ class LibsUiComponentsDrawLineDirective {
|
|
|
991
991
|
});
|
|
992
992
|
}
|
|
993
993
|
startProcessDataRow(dataDraw) {
|
|
994
|
+
console.log('12121212dataDraw', dataDraw);
|
|
994
995
|
this.zone.runOutsideAngular(() => {
|
|
995
996
|
dataDraw.forEach((item) => {
|
|
996
997
|
const { pathElement, arrowElement, circleStartElement, circleEndElement } = this.createPathAndArrowElement(item.id);
|