@adins/ucsearch 3.5.4 → 3.5.5
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.
|
@@ -723,6 +723,10 @@ export class UCSearchComponent {
|
|
|
723
723
|
}
|
|
724
724
|
return;
|
|
725
725
|
}
|
|
726
|
+
//handle if response data is null
|
|
727
|
+
if (response["Data"] === null) {
|
|
728
|
+
response["Data"] = [];
|
|
729
|
+
}
|
|
726
730
|
let qryPaging = {
|
|
727
731
|
response: response,
|
|
728
732
|
pageNow: pageNo
|
|
@@ -1218,4 +1222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1218
1222
|
}], reqGetAllData: [{
|
|
1219
1223
|
type: Output
|
|
1220
1224
|
}] } });
|
|
1221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWNzZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWNzZWFyY2gvc3JjL2xpYi91Y3NlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3NlYXJjaC9zcmMvbGliL3Vjc2VhcmNoLWxlZ2FjeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFdkksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVB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WixRQUFRLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0MsQ0FBQztLQUNIOzRGQUVVLGlCQUFpQjtrQkFyQjdCLFNBQVM7K0JBQ0UsY0FBYyxhQUdiLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLGNBQzVCO3dCQUNWLE9BQU8sQ0FBQyxlQUFlLEVBQUU7NEJBQ3ZCLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dDQUNyQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxPQUFPLEVBQUUsR0FBRzs2QkFDYixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7Z0NBQ25CLE1BQU0sRUFBRSxLQUFLO2dDQUNiLE9BQU8sRUFBRSxHQUFHO2dDQUNaLFFBQVEsRUFBRSxRQUFROzZCQUNuQixDQUFDLENBQUM7NEJBQ0gsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDOUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDL0MsQ0FBQztxQkFDSDs7MEJBdUdFLE1BQU07MkJBQUMsUUFBUTtnUEExRlMsT0FBTztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQU1NLE1BQU07c0JBQWhDLFNBQVM7dUJBQUMsY0FBYztnQkFDaEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEluamVjdCwgUmVuZGVyZXIyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5wdXRTZWFyY2hPYmogfSBmcm9tICcuL21vZGVsL2lucHV0LXNlYXJjaC1vYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBDcml0ZXJpYU9iaiB9IGZyb20gJy4vbW9kZWwvY3JpdGVyaWEtb2JqLm1vZGVsJztcclxuaW1wb3J0IHsgUmVxdWVzdENyaXRlcmlhT2JqIH0gZnJvbSAnLi9tb2RlbC9yZXF1ZXN0LWNyaXRlcmlhLW9iai5tb2RlbCc7XHJcbmltcG9ydCB7IEFkSW5zQ29uc3RhbnQsIEVYUE9SVF9EQVRBX1RZUEVTIH0gZnJvbSAnLi9tb2RlbC9hZGlucy1jb25zdGFudCc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIHN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgRXhwb3J0VHlwZUNvbnN0YW50LCBLZXlWYWx1ZVJlcG9ydE9iaiB9IGZyb20gJy4vbW9kZWwva2V5LXZhbHVlLXJlcG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llJztcclxuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcclxuaW1wb3J0IHsgS2V5VmFsdWVVQ1NlYXJjaE9iaiwgTGlzdEtleVZhbHVlTW9udGggfSBmcm9tICcuL21vZGVsL2tleS12YWx1ZS11Yy1zZWFyY2gubW9kZWwnO1xyXG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXhwb3J0LWZpbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmd4Um91dGVyU2VydmljZSB9IGZyb20gJ0BhZGlucy9mZS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLVVDU2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWNzZWFyY2gtbGVnYWN5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91Y3NlYXJjaC1sZWdhY3kuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBFeHBvcnRGaWxlU2VydmljZV0sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignY2hhbmdlRGl2U2l6ZScsIFtcclxuICAgICAgc3RhdGUoJ2luaXRpYWwnLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAnKicsXHJcbiAgICAgICAgb3BhY2l0eTogJzEnLFxyXG4gICAgICB9KSksXHJcbiAgICAgIHN0YXRlKCdmaW5hbCcsIHN0eWxlKHtcclxuICAgICAgICBoZWlnaHQ6ICcwcHgnLFxyXG4gICAgICAgIG9wYWNpdHk6ICcwJyxcclxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignaW5pdGlhbD0+ZmluYWwnLCBhbmltYXRlKCczMDBtcycpKSxcclxuICAgICAgdHJhbnNpdGlvbignZmluYWw9PmluaXRpYWwnLCBhbmltYXRlKCczMDBtcycpKVxyXG4gICAgXSksXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVUNTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvLyBpc0xpc3RIaWRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAvLyBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgLy8gb25DbGljayhldjogTW91c2VFdmVudCkge1xyXG4gIC8vICAgY29uc3QgY2xpY2tJbnNpZGUgPSB0aGlzLmVsZW1SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldi50YXJnZXQpO1xyXG4gIC8vICAgaWYgKCFjbGlja0luc2lkZSkge1xyXG4gIC8vICAgICB0aGlzLmlzTGlzdEhpZGUgPSB0cnVlO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZW5qaUZvcm0nKSBzZXQgY29udGVudChjb250ZW50OiBOZ0Zvcm0pIHtcclxuICAgIGlmIChjb250ZW50KSB7IC8vIGluaXRpYWxseSBzZXR0ZXIgZ2V0cyBjYWxsZWQgd2l0aCB1bmRlZmluZWRcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtID0gY29udGVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1JZFNlYXJjaCcpIG15Rm9ybTogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzZWFyY2hJbnB1dDogSW5wdXRTZWFyY2hPYmogPSBuZXcgSW5wdXRTZWFyY2hPYmooKTtcclxuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XHJcbiAgQElucHV0KCkgaXNSZXBvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmVzdWx0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ2VuUnB0OiBFdmVudEVtaXR0ZXI8eyBFeHBvcnRUeXBlOiBudW1iZXIsIEVsUmVmOiBFbGVtZW50UmVmIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IEV4cG9ydFR5cGU6IG51bWJlciwgRWxSZWY6IEVsZW1lbnRSZWYgfT4oKTtcclxuICBAT3V0cHV0KCkgcmVxR2V0QWxsRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgRXhwb3J0VHlwZUxpc3Q6IEFycmF5PEtleVZhbHVlUmVwb3J0T2JqPiA9IFtcclxuICAgIHtcclxuICAgICAga2V5OiBFeHBvcnRUeXBlQ29uc3RhbnQuRVhQX1RZUEVfUERGLFxyXG4gICAgICB2YWx1ZTogXCJQREZcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAga2V5OiBFeHBvcnRUeXBlQ29uc3RhbnQuRVhQX1RZUEVfWExTWCxcclxuICAgICAgdmFsdWU6IFwiRXhjZWwgMjAwN1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBrZXk6IEV4cG9ydFR5cGVDb25zdGFudC5FWFBfVFlQRV9ET0NYLFxyXG4gICAgICB2YWx1ZTogXCJEb2N1bWVudCBYTUxcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAga2V5OiBFeHBvcnRUeXBlQ29uc3RhbnQuRVhQX1RZUEVfSlBERixcclxuICAgICAgdmFsdWU6IFwiSnVzdGlmeSBQREZcIlxyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIGV4cG9ydEFzRmlsZUxpc3QgPSBbXHJcbiAgICB7XHJcbiAgICAgIGtleTogXCJjc3ZcIixcclxuICAgICAgdmFsdWU6IFwiYXMgQ1NWXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBrZXk6IFwiZXhjZWxcIixcclxuICAgICAgdmFsdWU6IFwiYXMgRVhDRUxcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGtleTogXCJqc29uXCIsXHJcbiAgICAgIHZhbHVlOiBcImFzIEpTT05cIixcclxuICAgIH1cclxuICBdO1xyXG5cclxuICBMaXN0T2ZNb250aDogTGlzdEtleVZhbHVlTW9udGggPSBuZXcgTGlzdEtleVZhbHVlTW9udGgoKTtcclxuICBMaXN0T2ZZZWFyOiBBcnJheTxLZXlWYWx1ZVVDU2VhcmNoT2JqPiA9IG5ldyBBcnJheTxLZXlWYWx1ZVVDU2VhcmNoT2JqPigpO1xyXG4gIENsYWltTGlzdDogQXJyYXk8YW55PiA9IFtcclxuICAgIHtcclxuICAgICAgS2V5OiBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uSXNOb3ROdWxsLFxyXG4gICAgICBWYWx1ZTogXCJDTEFJTUVEXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIEtleTogQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbklzTnVsbCxcclxuICAgICAgVmFsdWU6IFwiVU5DTEFJTUVEXCJcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgRXhwb3J0VHlwZTogbnVtYmVyID0gMDtcclxuXHJcbiAgcGFnZU5vdzogYW55ID0gMTtcclxuICBjb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgZXhwb3J0RGF0YTogYW55O1xyXG4gIEV4Y2VsRGF0YTogYW55O1xyXG4gIGlzRGF0YUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzSGlkZGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQmlzRHQ6IHN0cmluZztcclxuICBCdXNpbmVzc0R0OiBEYXRlID0gbmV3IERhdGUoKTtcclxuICBkYXRlV3Jvbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGN1cnJlbnRTdGF0ZSA9ICdpbml0aWFsJztcclxuXHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIGNvdW50Rm9ybSA9IDA7XHJcbiAgZm9ybWF0dGVkQW1vdW50ID0gJyc7XHJcbiAgYW1vdW50ID0gMDtcclxuICBhcGlVcmw6IHN0cmluZztcclxuICBhcnJDcml0OiBhbnk7XHJcbiAgc2VhcmNoRm9ybTogTmdGb3JtO1xyXG4gIHF1ZXJ5UGFyYW06IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcGVyc2lzdENyaXQ6IENyaXRlcmlhT2JqW107XHJcbiAgcGVyc2lzdEFkZFRvVGVtcENyaXQ6IENyaXRlcmlhT2JqW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXIyOiBSZW5kZXJlcjIsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudCxcclxuICAgIHB1YmxpYyB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgZWxlbVJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgZXhwb3J0RmlsZVNlcnZpY2U6IEV4cG9ydEZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIG5neFJvdXRlcjogTmd4Um91dGVyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5xdWVyeVBhcmFtID0gdGhpcy5uZ3hSb3V0ZXIuZ2V0UXVlcnlQYXJhbXMocGFyYW1zKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgIHRoaXMuY3VycmVudFN0YXRlID0gdGhpcy5jdXJyZW50U3RhdGUgPT0gJ2luaXRpYWwnID8gJ2ZpbmFsJyA6ICdpbml0aWFsJztcclxuICAgIHRoaXMuaXNIaWRkZW4gPSAhdGhpcy5pc0hpZGRlbiA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgY29uc29sZS5sb2coXCJ1Y3NlYXJjaFwiKTtcclxuICAgIHRoaXMuYXBpVXJsID0gdGhpcy5zZWFyY2hJbnB1dC5lbnZpcm9tZW50VXJsICsgdGhpcy5zZWFyY2hJbnB1dC5hcGlRcnlQYWdpbmc7XHJcbiAgICB0aGlzLmFyckNyaXQgPSB0aGlzLnNlYXJjaElucHV0LmFyckNyaXRPYmo7XHJcbiAgICBsZXQganMgPSB0aGlzLl9yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBqcy50ZXh0ID0gYFxyXG4gICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgJChcIiNmbGlwXCIpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgJChcIiNwYW5lbFwiKS5zbGlkZVRvZ2dsZShcInNsb3dcIik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgYDtcclxuICAgIHRoaXMuX3JlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLl9kb2N1bWVudC5ib2R5LCBqcyk7XHJcblxyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCgnQnVzaW5lc3NEYXRlUmF3Jyk7XHJcbiAgICB0aGlzLkJpc0R0ID0gdGhpcy5EZWNyeXB0U3RyaW5nKHZhbHVlLCBcIkFkSW5zRk9VMTIzNDU2NzhcIik7XHJcbiAgICB0aGlzLkJ1c2luZXNzRHQgPSBuZXcgRGF0ZSh0aGlzLkJpc0R0KTtcclxuICAgIGF3YWl0IHRoaXMuaW5pdGlhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0aWF0ZUZvcm0oKSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyh0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dCkubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2V0Q29uZmlndXJhdGlvbkRhdGEoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dCkpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5odHRwLmdldCh0aGlzLnNlYXJjaElucHV0Ll91cmwpLnRvUHJvbWlzZSgpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0Q29uZmlndXJhdGlvbkRhdGEoZGF0YSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0Q29uZmlndXJhdGlvbkRhdGEoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBkYXRhO1xyXG4gICAgdGhpcy5leHBvcnREYXRhID0gZGF0YS5leHBvcnRFeGNlbDtcclxuICAgIGlmIChkYXRhLmV4cG9ydFR5cGVMaXN0ICE9IHVuZGVmaW5lZCAmJiBkYXRhLmV4cG9ydFR5cGVMaXN0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMuRXhwb3J0VHlwZUxpc3QgPSBkYXRhLmV4cG9ydFR5cGVMaXN0O1xyXG4gICAgICB0aGlzLkV4cG9ydFR5cGUgPSB0aGlzLkV4cG9ydFR5cGVMaXN0WzBdLmtleTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YS5leHBvcnRBc0ZpbGVMaXN0ICE9IHVuZGVmaW5lZCAmJiBkYXRhLmV4cG9ydEFzRmlsZUxpc3QubGVuZ3RoICE9IDApIHtcclxuICAgICAgdGhpcy5leHBvcnRBc0ZpbGVMaXN0ID0gZGF0YS5leHBvcnRBc0ZpbGVMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY291bnRGb3JtID0gZGF0YS5jb21wb25lbnQubGVuZ3RoO1xyXG4gICAgdGhpcy5pc0RhdGFMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnRpdGxlICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0LnRpdGxlICE9IFwiXCIpIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnRpdGxlID0gdGhpcy5zZWFyY2hJbnB1dC50aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1c2VyQWNjZXNzID0gdGhpcy5nZXRVc2VyQWNjZXNzKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnRGb3JtOyBpKyspIHtcclxuICAgICAgLy9pbmkga2FsYXUgZGF0YW55YSBkaSBsb2FkIGRhcmkgVVJMXHJcbiAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5pc0Zyb21VUkwpIHtcclxuICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q3JpdGVyaWFPYmooKTtcclxuICAgICAgICBsZXQgYXJyYXlDcml0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgbGV0IGNyaXRlcmlhT2JqZWN0ID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgY3JpdGVyaWFPYmplY3QuRGF0YVR5cGUgPSBcInRleHRcIjtcclxuICAgICAgICBjcml0ZXJpYU9iamVjdC5wcm9wTmFtZSA9IGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcE5hbWU7XHJcbiAgICAgICAgY3JpdGVyaWFPYmplY3QudmFsdWUgPSB0aGlzLnF1ZXJ5UGFyYW1bZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wVmFsdWVdIHx8IGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcFZhbHVlO1xyXG4gICAgICAgIGNyaXRlcmlhT2JqZWN0LnJlc3RyaWN0aW9uID0gXCJlcVwiO1xyXG4gICAgICAgIGFycmF5Q3JpdC5wdXNoKGNyaXRlcmlhT2JqZWN0KTtcclxuICAgICAgICByZXF1ZXN0LmNyaXRlcmlhID0gYXJyYXlDcml0O1xyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lICE9PSBudWxsICYmIGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcE5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgY29uc3QgX2NyaXRQcm9wTmFtZUFyciA9IChkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lIGFzIHN0cmluZykuc3BsaXQoXCI7XCIpO1xyXG4gICAgICAgICAgY29uc3QgX2NyaXRQcm9wVmFsdWVBcnIgPSAoZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wVmFsdWUgYXMgc3RyaW5nKS5zcGxpdCAoXCI7XCIpO1xyXG5cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX2NyaXRQcm9wTmFtZUFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXF1ZXN0W19jcml0UHJvcE5hbWVBcnJbaV1dID0gdGhpcy5xdWVyeVBhcmFtW19jcml0UHJvcFZhbHVlQXJyW2ldXSB8fCB1c2VyQWNjZXNzW19jcml0UHJvcFZhbHVlQXJyW2ldXSAgfHwgX2NyaXRQcm9wVmFsdWVBcnJbaV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQZW5nZWNla2FuIHBlbmdndW5hYW4gdXJsIGF0YXUgcGF0aFxyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5wYXRoICE9IHVuZGVmaW5lZCAmJiBkYXRhLmNvbXBvbmVudFtpXS5wYXRoICE9IFwiXCIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Lmxpc3RFbnZpcm9ubWVudHMgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50cy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50cy5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5lbnZpcm9ubWVudCA9PSB0aGlzLnNlYXJjaElucHV0Lmxpc3RFbnZpcm9ubWVudHNbeV0uZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLmZ1bGxwYXRoID0gdGhpcy5zZWFyY2hJbnB1dC5saXN0RW52aXJvbm1lbnRzW3ldLnVybCArIGRhdGEuY29tcG9uZW50W2ldLnBhdGg7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLmZ1bGxwYXRoID0gZGF0YS5jb21wb25lbnRbaV0udXJsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0uZnVsbHBhdGggPSBkYXRhLmNvbXBvbmVudFtpXS51cmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vbGVtcGFyIG9iamVjdG55YSBzZWthbGlhbiBzYW1hIHVybG55YSwgbm50aSBkaSBiaW5kIGRpIGRhbGVtIGthcmVuYSBtYXNhbGFoIGRpIGFzeW5jbnlhXHJcbiAgICAgICAgLy9iaWFyIHRpYXAgZnVuY3Rpb24gYWRhIHN0YXRlMm55YSBzZW5kaXJpXHJcbiAgICAgICAgdGhpcy5yZXNvbHZlT2JqZWN0KGRhdGEuY29tcG9uZW50W2ldLCBkYXRhLmNvbXBvbmVudFtpXS5mdWxscGF0aCwgcmVxdWVzdCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwibnVtZXJpY1wiKSB7XHJcbiAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBwYXJzZUZsb2F0KGRhdGEuY29tcG9uZW50W2ldLnZhbHVlKS50b0xvY2FsZVN0cmluZygnZW4nKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy9wZW5nZWNla2FuIGRkbFxyXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcImRyb3Bkb3duXCIpIHtcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uZHRtVHlwZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5kdG1UeXBlLmluY2x1ZGVzKFwibW9udGhcIikpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnZhbHVlICE9IHVuZGVmaW5lZCAmJiBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5pbmNsdWRlcyhcIkJEXCIpKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSB0aGlzLnNldERlZmF1bHRWYWx1ZU1vbnRoKGRhdGEuY29tcG9uZW50W2ldLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5pdGVtcyA9IHRoaXMuc2V0TW9udGhEREwoZGF0YS5jb21wb25lbnRbaV0uZHRtVHlwZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uZHRtVHlwZS5pbmNsdWRlcyhcInllYXJcIikpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnZhbHVlICE9IHVuZGVmaW5lZCAmJiBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZS5pbmNsdWRlcyhcIkJEXCIpKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSB0aGlzLnNldERlZmF1bHRWYWx1ZVllYXIoZGF0YS5jb21wb25lbnRbaV0udmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLml0ZW1zID0gdGhpcy5zZXRZZWFyRERMKGRhdGEuY29tcG9uZW50W2ldLmR0bVR5cGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcImRyb3Bkb3duU2VhcmNoXCIgJiYgIWRhdGEuY29tcG9uZW50W2ldLmlzRnJvbVVSTCAmJiBkYXRhLmNvbXBvbmVudFtpXS5pdGVtcz8ubGVuZ3RoICE9IDEpIHtcclxuICAgICAgLy8gICBpZiAoZGF0YS5jb21wb25lbnRbaV0uZGRzVHlwZSA9PSB1bmRlZmluZWQgfHwgZGF0YS5jb21wb25lbnRbaV0uZGRzVHlwZSA9PSBcImFsbFwiKSB7XHJcbiAgICAgIC8vICAgICBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IFwiYWxsXCI7XHJcbiAgICAgIC8vICAgICBkYXRhLmNvbXBvbmVudFtpXS5kZXNjciA9IFwiQWxsXCI7XHJcbiAgICAgIC8vICAgfSBlbHNlIGlmIChkYXRhLmNvbXBvbmVudFtpXS5kZHNUeXBlID09IFwib25lXCIpIHtcclxuICAgICAgLy8gICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gXCJvbmVcIjtcclxuICAgICAgLy8gICAgIGRhdGEuY29tcG9uZW50W2ldLmRlc2NyID0gXCJTZWxlY3QgT25lXCI7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwiZHJvcGRvd25TZWFyY2hcIiAmJiAhZGF0YS5jb21wb25lbnRbaV0uaXNGcm9tVVJMICYmIGRhdGEuY29tcG9uZW50W2ldLml0ZW1zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBkYXRhLmNvbXBvbmVudFtpXS5pdGVtc1swXS5LZXk7XHJcbiAgICAgICAgZGF0YS5jb21wb25lbnRbaV0uZGVzY3IgPSBkYXRhLmNvbXBvbmVudFtpXS5pdGVtc1swXS5WYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSAhPSBcImRyb3Bkb3duU2VhcmNoXCIgJiYgIWRhdGEuY29tcG9uZW50W2ldLnZhbHVlKSB7XHJcbiAgICAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5kZGxUeXBlID09ICdhbGwnKSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IFwiYWxsXCI7XHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLmRkbFR5cGUgPT0gJ29uZScpIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gXCJvbmVcIjtcclxuICAgICAgfVxyXG4gICAgICAvL3BlbmdlY2VrYW4gdGFuZ2dhbFxyXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcImRhdGVwaWNrZXJcIikge1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPSBkYXRhLmNvbXBvbmVudFtpXS5yZWFkb25seVxyXG5cclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udmFsdWUuaW5jbHVkZXMoXCJCRFwiKSkge1xyXG4gICAgICAgICAgbGV0IGJ1c2luZXNzRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5CaXNEdCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGJ1c2luZXNzRGF0ZSA9IG5ldyBEYXRlKHRoaXMuQmlzRHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IG9wZXJhdG9yID0gZGF0YS5jb21wb25lbnRbaV0udmFsdWUuY2hhckF0KDIpO1xyXG4gICAgICAgICAgbGV0IGRhdGVTaG93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgIGlmIChvcGVyYXRvciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICBsZXQgdGVtcE1pbnVzID0gZGF0YS5jb21wb25lbnRbaV0udmFsdWUuc3BsaXQoXCItXCIsIDIpO1xyXG4gICAgICAgICAgICBsZXQgbnVtRGF5ID0gcGFyc2VJbnQodGVtcE1pbnVzWzFdKTtcclxuICAgICAgICAgICAgYnVzaW5lc3NEYXRlLnNldERhdGUoYnVzaW5lc3NEYXRlLmdldERhdGUoKSAtIG51bURheSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChvcGVyYXRvciA9PSBcIitcIikge1xyXG4gICAgICAgICAgICBsZXQgdGVtcE1pbnVzID0gZGF0YS5jb21wb25lbnRbaV0udmFsdWUuc3BsaXQoXCIrXCIsIDIpO1xyXG4gICAgICAgICAgICBsZXQgbnVtRGF5ID0gcGFyc2VJbnQodGVtcE1pbnVzWzFdKTtcclxuICAgICAgICAgICAgYnVzaW5lc3NEYXRlLnNldERhdGUoYnVzaW5lc3NEYXRlLmdldERhdGUoKSArIG51bURheSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRlU2hvdyA9IGJ1c2luZXNzRGF0ZTtcclxuICAgICAgICAgIGxldCBkYXRlVGV4dCA9IGZvcm1hdERhdGUoZGF0ZVNob3csICd5eXl5LU1NLWRkJywgJ2VuLVVTJylcclxuICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gZGF0ZVRleHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0ucmVzdHJpY3Rpb24gIT0gdW5kZWZpbmVkICYmIGRhdGEuY29tcG9uZW50W2ldLnJlc3RyaWN0aW9uICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSB7XHJcbiAgICAgICAgICAgICAgbGV0IG1pbkRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRhLmNvbXBvbmVudFtpXS5taW5EYXRlLCAneXl5eS1NTS1kZCcpKTtcclxuICAgICAgICAgICAgICBtaW5EYXRlLnNldERhdGUobWluRGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5taW5EYXRlID0gbWluRGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmNvbXBvbmVudFtpXS5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRcIikge1xyXG4gICAgICAgICAgICAgIGxldCBtYXhEYXRlID0gbmV3IERhdGUodGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0YS5jb21wb25lbnRbaV0ubWF4RGF0ZSwgJ3l5eXktTU0tZGQnKSk7XHJcbiAgICAgICAgICAgICAgbWF4RGF0ZS5zZXREYXRlKG1heERhdGUuZ2V0RGF0ZSgpIC0gMSk7XHJcbiAgICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0ubWF4RGF0ZSA9IG1heERhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJ0ZXh0Ym94XCIpIHtcclxuICAgICAgICBjb25zdCBpc1VwcGVyY2FzZSA9IGRhdGEuY29tcG9uZW50W2ldLmlzVXBwZXJjYXNlID09PSB1bmRlZmluZWQgPyB0cnVlIDogZGF0YS5jb21wb25lbnRbaV0uaXNVcHBlcmNhc2U7XHJcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5hdXRvZmlsbChkYXRhLmNvbXBvbmVudFtpXSk7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudFtpXS52YWx1ZSA9IGlzVXBwZXJjYXNlID8gX3ZhbHVlLnRvVXBwZXJDYXNlKCkgOiBfdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJkcm9wZG93blwiKSB7XHJcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5hdXRvZmlsbChkYXRhLmNvbXBvbmVudFtpXSwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0udmFsdWUgPSBfdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvdW50Rm9ybTsgaisrKSB7XHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2pdLmlzRXZlbnQgJiYgdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudFtqXS5pdGVtc1VybC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZUV2ZW50KGRhdGEuY29tcG9uZW50W2pdLml0ZW1zVXJsWzBdLktleSwgZGF0YS5jb21wb25lbnRbal0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbal0udHlwZSA9PSBcIm9mZmljZVJvbGVDb2Rlc1wiICYmIHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbal0uaXRlbXNVcmwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5TZXRSb2xlT2ZmaWNlQ29kZXMoaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBnZXRVc2VyQWNjZXNzKCkge1xyXG4gICAgY29uc3QgX3VzZXJBY2Nlc3M6IHN0cmluZyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJVc2VyQWNjZXNzXCIpO1xyXG4gICAgY29uc3QgdXNlckFjY2VzcyA9IEpTT04ucGFyc2UodGhpcy5EZWNyeXB0U3RyaW5nKF91c2VyQWNjZXNzLCBcIkFkSW5zRk9VMTIzNDU2NzhcIikpO1xyXG4gICAgcmV0dXJuIHVzZXJBY2Nlc3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGF1dG9maWxsKGRhdGE6IGFueSwgY2hlY2tWYWx1ZTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmIChjaGVja1ZhbHVlKSB7XHJcbiAgICAgIGlmIChkYXRhLnZhbHVlICE9IFwiXCIpIHJldHVybiBkYXRhLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXV0b2ZpbGw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBkYXRhLmF1dG9maWxsO1xyXG4gICAgaWYgKGF1dG9maWxsID09IHVuZGVmaW5lZCkgcmV0dXJuIGRhdGEudmFsdWU7XHJcbiAgICBpZiAoYXV0b2ZpbGwuc291cmNlID09IFwicGFyYW1cIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5xdWVyeVBhcmFtW2F1dG9maWxsLmtleV07XHJcbiAgICB9XHJcbiAgICBpZiAoYXV0b2ZpbGwuc291cmNlID09IFwidXNlcmFjY2Vzc1wiKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJBY2Nlc3MgPSB0aGlzLmdldFVzZXJBY2Nlc3MoKTtcclxuICAgICAgcmV0dXJuIHVzZXJBY2Nlc3NbYXV0b2ZpbGwua2V5XTtcclxuICAgIH1cclxuICAgIGlmIChhdXRvZmlsbC5zb3VyY2UgPT0gXCJkaWN0c1wiKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWFyY2hJbnB1dC5kaWN0cykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZGljdHMgdW5kZWZpbmVkLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiBhdXRvZmlsbC5rZXk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoSW5wdXQ/LmRpY3RzW2F1dG9maWxsLmtleV0gPz8gYXV0b2ZpbGwua2V5O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGEudmFsdWU7XHJcbiAgfVxyXG5cclxuICBTZXRSb2xlT2ZmaWNlQ29kZXMoaTogbnVtYmVyKSB7XHJcbiAgICBsZXQgdXNlckFjY2Vzczogc3RyaW5nID0gdGhpcy5nZXRVc2VyQWNjZXNzKCk7XHJcbiAgICBsZXQgcm9sZUNvZGU6IHN0cmluZyA9IHVzZXJBY2Nlc3NbXCJSb2xlQ29kZVwiXTtcclxuICAgIGxldCBsaXN0T2ZmaWNlUm9sZUNvZGVzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5KCk7XHJcbiAgICBsaXN0T2ZmaWNlUm9sZUNvZGVzLnB1c2gocm9sZUNvZGUpO1xyXG4gICAgbGV0IGNvbXBvbmVudCA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbaV07XHJcbiAgICBsZXQgZGRsID0gY29tcG9uZW50Lm9wdGlvbnM7XHJcbiAgICBsZXQgdGV4dCA9IGRkbFtkZGwuc2VsZWN0ZWRJbmRleF0udmFsdWUudHJpbSgpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0uaXRlbXNVcmwubGVuZ3RoID09IDEgfHwgKHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0uZGRsVHlwZSA9PSAnYWxsJyAmJiB0ZXh0ID09ICdhbGwnKSkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudFtpXS5pdGVtc1VybC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudFtpXS5pdGVtc1VybFtpbmRleF07XHJcbiAgICAgICAgbGlzdE9mZmljZVJvbGVDb2Rlcy5wdXNoKGVsZW1lbnQuS2V5KTtcclxuICAgICAgICBsaXN0T2ZmaWNlUm9sZUNvZGVzLnB1c2gocm9sZUNvZGUgKyBcIi1cIiArIGVsZW1lbnQuS2V5KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGlzdE9mZmljZVJvbGVDb2Rlcy5wdXNoKHRleHQpO1xyXG4gICAgICBsaXN0T2ZmaWNlUm9sZUNvZGVzLnB1c2gocm9sZUNvZGUgKyBcIi1cIiArIHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VhcmNoSW5wdXQuaW50ZWdyYXRpb25PYmoucmVxdWVzdE9ialtcIk9mZmljZVJvbGVDb2Rlc1wiXSA9IGxpc3RPZmZpY2VSb2xlQ29kZXM7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWVNb250aCh2YWx1ZSkge1xyXG4gICAgbGV0IGJ1c2luZXNzRGF0ZSA9IG5ldyBEYXRlKHRoaXMuQnVzaW5lc3NEdCk7XHJcbiAgICBsZXQgb3BlcmF0b3IgPSB2YWx1ZS5jaGFyQXQoMik7XHJcbiAgICBsZXQgdGVtcFZhbHVlID0gdmFsdWUuc3BsaXQob3BlcmF0b3IsIDIpO1xyXG4gICAgbGV0IG51bU1vbnRoID0gcGFyc2VJbnQodGVtcFZhbHVlWzFdKTtcclxuICAgIGlmICghbnVtTW9udGgpIG51bU1vbnRoID0gMTtcclxuICAgIGlmIChvcGVyYXRvciA9PSBcIi1cIikge1xyXG4gICAgICBidXNpbmVzc0RhdGUuc2V0TW9udGgoYnVzaW5lc3NEYXRlLmdldE1vbnRoKCkgLSBudW1Nb250aCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChvcGVyYXRvciA9PSBcIitcIikge1xyXG4gICAgICBidXNpbmVzc0RhdGUuc2V0TW9udGgoYnVzaW5lc3NEYXRlLmdldE1vbnRoKCkgKyBudW1Nb250aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnVzaW5lc3NEYXRlLmdldE1vbnRoKCk7XHJcbiAgfVxyXG4gIHNldE1vbnRoRERMKG1vbnRoKSB7XHJcbiAgICBpZiAobW9udGggPT0gXCJtb250aFwiKSByZXR1cm4gdGhpcy5MaXN0T2ZNb250aC5MaXN0T2ZNb250aDtcclxuICAgIGxldCBMaXN0T2ZNb250aDogQXJyYXk8S2V5VmFsdWVVQ1NlYXJjaE9iaj4gPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBlcXVhdGlvbiA9IG1vbnRoLm1hdGNoKFwiW1xcXFwrXVstXXxbLV1bXFxcXCtdfFxcXFwrfC1cIik7XHJcbiAgICBsZXQgdG9NaW46IG51bWJlciA9IHRoaXMuQnVzaW5lc3NEdC5nZXRNb250aCgpO1xyXG4gICAgbGV0IHRvTWF4OiBudW1iZXIgPSB0aGlzLkJ1c2luZXNzRHQuZ2V0TW9udGgoKTtcclxuICAgIGxldCBtaW5NYXg6IG51bWJlciA9IHBhcnNlSW50KG1vbnRoLnN1YnN0cmluZyhlcXVhdGlvbi5pbmRleCArIGVxdWF0aW9uWzBdLmxlbmd0aCkpO1xyXG4gICAgaWYgKG1pbk1heCA+PSAxMikgcmV0dXJuIHRoaXMuTGlzdE9mTW9udGguTGlzdE9mTW9udGg7XHJcbiAgICBpZiAoKGVxdWF0aW9uWzBdID09IFwiKy1cIiB8fCBlcXVhdGlvblswXSA9PSBcIi0rXCIpICYmIG1pbk1heCA+PSA2KSByZXR1cm4gdGhpcy5MaXN0T2ZNb250aC5MaXN0T2ZNb250aDtcclxuICAgIGxldCBkaWN0T2ZNb250aDogeyBbbW9udGg6IG51bWJlcl06IHN0cmluZyB9ID0gdGhpcy5MaXN0T2ZNb250aC5EaWN0T2ZNb250aDtcclxuICAgIExpc3RPZk1vbnRoLnB1c2goeyBrZXk6IHRvTWluLCB2YWx1ZTogZGljdE9mTW9udGhbdG9NaW5dIH0pO1xyXG5cclxuICAgIGZvciAobGV0IHEgPSAwOyBxIDwgbWluTWF4OyBxKyspIHtcclxuICAgICAgaWYgKGVxdWF0aW9uWzBdLmluY2x1ZGVzKFwiLVwiKSkge1xyXG4gICAgICAgIHRvTWluLS07XHJcbiAgICAgICAgaWYgKHRvTWluID09IDApIHRvTWluID0gMTI7XHJcbiAgICAgICAgTGlzdE9mTW9udGgucHVzaCh7IGtleTogdG9NaW4sIHZhbHVlOiBkaWN0T2ZNb250aFt0b01pbl0gfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVxdWF0aW9uWzBdLmluY2x1ZGVzKFwiK1wiKSkge1xyXG4gICAgICAgIHRvTWF4Kys7XHJcbiAgICAgICAgaWYgKHRvTWF4ID09IDEzKSB0b01heCA9IDE7XHJcbiAgICAgICAgTGlzdE9mTW9udGgucHVzaCh7IGtleTogdG9NYXgsIHZhbHVlOiBkaWN0T2ZNb250aFt0b01heF0gfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIExpc3RPZk1vbnRoLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgcmV0dXJuIGEua2V5IC0gYi5rZXk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBMaXN0T2ZNb250aDtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRWYWx1ZVllYXIodmFsdWUpIHtcclxuICAgIGxldCBidXNpbmVzc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLkJ1c2luZXNzRHQpO1xyXG4gICAgbGV0IG9wZXJhdG9yID0gdmFsdWUuY2hhckF0KDIpO1xyXG4gICAgbGV0IHRlbXBWYWx1ZSA9IHZhbHVlLnNwbGl0KG9wZXJhdG9yLCAyKTtcclxuICAgIGxldCBudW1ZZWFyID0gcGFyc2VJbnQodGVtcFZhbHVlWzFdKTtcclxuICAgIGlmICghbnVtWWVhcikgbnVtWWVhciA9IDE7XHJcbiAgICBpZiAob3BlcmF0b3IgPT0gXCItXCIpIHtcclxuICAgICAgYnVzaW5lc3NEYXRlLnNldEZ1bGxZZWFyKGJ1c2luZXNzRGF0ZS5nZXRGdWxsWWVhcigpIC0gbnVtWWVhcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChvcGVyYXRvciA9PSBcIitcIikge1xyXG4gICAgICBidXNpbmVzc0RhdGUuc2V0RnVsbFllYXIoYnVzaW5lc3NEYXRlLmdldEZ1bGxZZWFyKCkgKyBudW1ZZWFyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBidXNpbmVzc0RhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcbiAgc2V0WWVhckRETCh5ZWFyKSB7XHJcbiAgICB0aGlzLkxpc3RPZlllYXIgPSBuZXcgQXJyYXk8S2V5VmFsdWVVQ1NlYXJjaE9iaj4oKTtcclxuICAgIGxldCBlcXVhdGlvbiA9IHllYXIubWF0Y2goXCJbXFxcXCtdWy1dfFstXVtcXFxcK118XFxcXCt8LVwiKTtcclxuICAgIGxldCB0b01pbjogbnVtYmVyID0gdGhpcy5CdXNpbmVzc0R0LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBsZXQgdG9NYXg6IG51bWJlciA9IHRoaXMuQnVzaW5lc3NEdC5nZXRGdWxsWWVhcigpO1xyXG4gICAgbGV0IG1pbk1heDogbnVtYmVyID0gcGFyc2VJbnQoeWVhci5zdWJzdHJpbmcoZXF1YXRpb24uaW5kZXggKyBlcXVhdGlvblswXS5sZW5ndGgpKTtcclxuICAgIHRoaXMuTGlzdE9mWWVhci5wdXNoKHsga2V5OiB0aGlzLkJ1c2luZXNzRHQuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IHRoaXMuQnVzaW5lc3NEdC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkgfSk7XHJcblxyXG4gICAgZm9yIChsZXQgcSA9IDA7IHEgPCBtaW5NYXg7IHErKykge1xyXG4gICAgICBpZiAoZXF1YXRpb25bMF0gPT0gXCItK1wiIHx8IGVxdWF0aW9uWzBdID09IFwiKy1cIikge1xyXG4gICAgICAgIHRvTWluLS07XHJcbiAgICAgICAgdG9NYXgrKztcclxuICAgICAgICB0aGlzLkxpc3RPZlllYXIucHVzaCh7IGtleTogdG9NaW4sIHZhbHVlOiB0b01pbi50b1N0cmluZygpIH0sIHsga2V5OiB0b01heCwgdmFsdWU6IHRvTWF4LnRvU3RyaW5nKCkgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXF1YXRpb25bMF0gPT0gXCItXCIpIHtcclxuICAgICAgICB0b01pbi0tO1xyXG4gICAgICAgIHRoaXMuTGlzdE9mWWVhci5wdXNoKHsga2V5OiB0b01pbiwgdmFsdWU6IHRvTWluLnRvU3RyaW5nKCkgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXF1YXRpb25bMF0gPT0gXCIrXCIpIHtcclxuICAgICAgICB0b01heCsrO1xyXG4gICAgICAgIHRoaXMuTGlzdE9mWWVhci5wdXNoKHsga2V5OiB0b01heCwgdmFsdWU6IHRvTWF4LnRvU3RyaW5nKCkgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuTGlzdE9mWWVhci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIHJldHVybiBhLmtleSAtIGIua2V5O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5MaXN0T2ZZZWFyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEpTT04odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0SlNPTih1cmw6IHN0cmluZywgY3JpdGVyaWE6IGFueSA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgY3JpdGVyaWEpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQ2xpY2soSXNFeHBvcnRFeGNlbDogYm9vbGVhbiA9IGZhbHNlLCBFeHRGaWxlOiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICBsZXQgZmlsdGVyZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbHRlcigoaXRlbSwgaSwgYXJyKSA9PlxyXG4gICAgICBhcnIuZmluZEluZGV4KCh4KSA9PiAoeC5uYW1lID09PSBpdGVtLm5hbWUpKSA9PT0gaSk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoZmlsdGVyZWRbaV0udHlwZSA9PSBcIm51bWVyaWNcIikge1xyXG4gICAgICAgIGlmKCF0aGlzLmNoZWNrVmFsdWVHdGVMdGUoZmlsdGVyZWRbaV0pKSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgb3JkZXIgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5vcmRlcmJ5ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5vcmRlcmJ5LmtleSAhPT0gXCJcIiAmJiB0aGlzLmNvbmZpZ3VyYXRpb24ub3JkZXJieS52YWx1ZSAhPT0gXCJcIikge1xyXG4gICAgICAgIG9yZGVyID0ge1xyXG4gICAgICAgICAga2V5OiB0aGlzLmNvbmZpZ3VyYXRpb24ub3JkZXJieS5rZXksXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5jb25maWd1cmF0aW9uLm9yZGVyYnkudmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucGFnZU5vdyA9IDE7XHJcbiAgICBsZXQgcm93UGVyUGFnZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICBpZiAoSXNFeHBvcnRFeGNlbCkgcm93UGVyUGFnZSA9IDk5OTk7XHJcbiAgICB0aGlzLnNlYXJjaCh0aGlzLmFwaVVybCwgdGhpcy5wYWdlTm93LCByb3dQZXJQYWdlLCBvcmRlciwgdHJ1ZSwgdGhpcy5hcnJDcml0LCBJc0V4cG9ydEV4Y2VsLCBFeHRGaWxlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlc2V0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb3JtLnJlc2V0Rm9ybSh7XHJcbiAgICAgIEV4cG9ydFR5cGU6IHRoaXMuRXhwb3J0VHlwZUxpc3RbMF0ua2V5XHJcbiAgICB9KTtcclxuICAgIGF3YWl0IHRoaXMuaW5pdGlhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZWFyY2goYXBpVXJsOiBzdHJpbmcsIHBhZ2VObzogbnVtYmVyLCByb3dQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IGFueSwgaXNDbGlja1NlYXJjaDogYm9vbGVhbiwgYWRkQ3JpdDogQ3JpdGVyaWFPYmpbXSA9IG5ldyBBcnJheSgpLCBJc0V4cG9ydEV4Y2VsOiBib29sZWFuID0gZmFsc2UsIGV4dEZpbGU6IHN0cmluZyA9IFwiXCIsIGlzQWRkVG9UZW1wOiBib29sZWFuID0gZmFsc2UsIGFkZFRvVGVtcENyaXQ6IENyaXRlcmlhT2JqW10gPSBuZXcgQXJyYXkoKSkge1xyXG4gICAgbGV0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICBsZXQgYXJyQ3JpdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IElzUXVlcnlJbiA9IGZhbHNlO1xyXG4gICAgbGV0IElzQnJlYWsgPSBmYWxzZTtcclxuICAgIGxldCBib2R5TGlzdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGhlYWRlckxpc3QgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgbGV0IGJvZHlEYXRhID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgZGF0YUZpbGUgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBhZGRpdGlvbmFsRXhwb3J0TGlzdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGV4Y2x1ZGVFeHBvcnRMaXN0ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgY29uc3QgbWFwcGVkQ29uZk5hbWVWYWx1ZSA9IHt9O1xyXG4gICAgKHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQgYXMgW10pLmZvckVhY2goKHg6IGFueSkgPT4ge1xyXG4gICAgICBtYXBwZWRDb25mTmFtZVZhbHVlW3gubmFtZV0gPSB7XHJcbiAgICAgICAgdmFsdWU6IHgudmFsdWUsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gSW5qZWN0IHdoZXJlUXVlcnkgZm9yIHdoZXJlIGNyaXRlcmlhXHJcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC53aGVyZVZhbHVlICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0LndoZXJlVmFsdWUubGVuZ3RoICE9IDApIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nLndoZXJlUXVlcnkgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHRoaXMuc2VhcmNoSW5wdXQud2hlcmVWYWx1ZS5sZW5ndGg7IHgrKykge1xyXG4gICAgICAgIC8vIHJlYWQgdmFsdWUgYmFzZWQgb24gc2VhcmNoIGNvbXBvbmVudCB2YWx1ZSAtIGlmIG5vdCBmb3VuZCwgd2lsbCBoYXJkY29kZWRcclxuICAgICAgICBjb25zdCBfdmFsID0gbWFwcGVkQ29uZk5hbWVWYWx1ZVt0aGlzLnNlYXJjaElucHV0LndoZXJlVmFsdWVbeF0udmFsdWVdID8gbWFwcGVkQ29uZk5hbWVWYWx1ZVt0aGlzLnNlYXJjaElucHV0LndoZXJlVmFsdWVbeF0udmFsdWVdLnZhbHVlIDogdGhpcy5zZWFyY2hJbnB1dC53aGVyZVZhbHVlW3hdLnZhbHVlO1xyXG4gICAgICAgIC8vIHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5LnB1c2godGhpcy5zZWFyY2hJbnB1dC53aGVyZVZhbHVlW3hdLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmcud2hlcmVRdWVyeS5wdXNoKF92YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5mcm9tVmFsdWUgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZy5mcm9tUXVlcnkgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHRoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlLmxlbmd0aDsgeCsrKSB7XHJcbiAgICAgICAgLy8gcmVhZCB2YWx1ZSBiYXNlZCBvbiBzZWFyY2ggY29tcG9uZW50IHZhbHVlIC0gaWYgbm90IGZvdW5kLCB3aWxsIGhhcmRjb2RlZFxyXG4gICAgICAgIGNvbnN0IF92YWwgPSBtYXBwZWRDb25mTmFtZVZhbHVlW3RoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlW3hdLnZhbHVlXSA/IG1hcHBlZENvbmZOYW1lVmFsdWVbdGhpcy5zZWFyY2hJbnB1dC5mcm9tVmFsdWVbeF0udmFsdWVdLnZhbHVlIDogdGhpcy5zZWFyY2hJbnB1dC5mcm9tVmFsdWVbeF0udmFsdWU7XHJcbiAgICAgICAgLy8gdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nLmZyb21RdWVyeS5wdXNoKHRoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlW3hdLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmcuZnJvbVF1ZXJ5LnB1c2goX3ZhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJlcXVlc3QucGFnZU5vID0gcGFnZU5vO1xyXG4gICAgcmVxdWVzdC5yb3dQZXJQYWdlID0gcm93UGVyUGFnZTtcclxuICAgIHJlcXVlc3Qub3JkZXJCeSA9IG9yZGVyQnk7XHJcbiAgICByZXF1ZXN0LnF1ZXJ5U3RyaW5nID0gdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nO1xyXG5cclxuICAgIGxldCBmb3JtU2VxOiBudW1iZXIgPSAtMTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb3VudEZvcm07IGkrKykge1xyXG4gICAgICBsZXQgY3JpdE9iaiA9IG5ldyBDcml0ZXJpYU9iaigpO1xyXG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudFtpXS50eXBlID09IFwiZHJvcGRvd25TZWFyY2hcIikge1xyXG4gICAgICAgIGZvcm1TZXEgKz0gMztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3JtU2VxKys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbZm9ybVNlcV07XHJcblxyXG4gICAgICAvLyAvLyBwb3B1cCBtZXNzYWdlIGlmIHJlcXVpcmVkXHJcbiAgICAgIC8vIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVkJykgIT0gbnVsbCAmJiBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVkJykgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgLy8gICBsZXQgdmFsID0gY29tcG9uZW50LnZhbHVlLnRyaW0oKTtcclxuICAgICAgLy8gICBpZiAodmFsID09IFwiXCIpIHtcclxuICAgICAgLy8gICAgIElzQnJlYWsgPSB0cnVlO1xyXG4gICAgICAvLyAgICAgbGV0IGxhYmVsID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnbGFiZWwnKTtcclxuICAgICAgLy8gICAgIHRoaXMudG9hc3RyLndhcm5pbmcoXCJQbGVhc2UgaW5wdXQgXCIgKyBsYWJlbCk7XHJcbiAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGNyaXRPYmouRGF0YVR5cGUgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKTtcclxuICAgICAgaWYgKCFjcml0T2JqLkRhdGFUeXBlKSBjcml0T2JqLkRhdGFUeXBlID0gXCJcIjtcclxuICAgICAgLy9Jbmkga2h1c3VzIGthbGF1IGRhcmkgRHJvcCBEb3duXHJcbiAgICAgIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdxdWVyeS1pbicpICE9IG51bGwgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgncXVlcnktaW4nKSA9PSBcInRydWVcIikge1xyXG4gICAgICAgIElzUXVlcnlJbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgSXNRdWVyeUluID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC5ub2RlTmFtZSA9PSAnU0VMRUNUJykge1xyXG4gICAgICAgICAgbGV0IGRkbCA9IGNvbXBvbmVudC5vcHRpb25zO1xyXG4gICAgICAgICAgbGV0IHRleHQgPSBkZGxbZGRsLnNlbGVjdGVkSW5kZXhdLnZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgIGlmICh0ZXh0ID09IFwib25lXCIpIHtcclxuICAgICAgICAgICAgSXNCcmVhayA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJyk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcoXCJQbGVhc2Ugc2VsZWN0IFwiICsgbGFiZWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jcml0LWRhdGF0YWJsZScpICE9IFwiXCIgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jcml0LWRhdGF0YWJsZScpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5pc0NyaXRlcmlhRGF0YVRhYmxlID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jcml0LWRhdGF0YWJsZScpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2ldLnR5cGUgPT0gXCJ0YXNrRGVmaW5pdGlvbktleVwiIHx8XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0udHlwZSA9PSBcInByb2Nlc3NLZXlcIilcclxuICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0udHlwZSA9PSBcImNsYWltXCIpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpO1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gdGV4dDtcclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghaXNBZGRUb1RlbXApIHtcclxuICAgICAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0ZXh0ICE9IFwiYWxsXCIgJiYgdGV4dCAhPSBcIm9uZVwiKSB7XHJcbiAgICAgICAgICAgICAgLy9LYWxhdSBEYXJpIERyb3Bkb3duIHVkYWggcGFzdGkgcGFrZSBFcVxyXG4gICAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uRXE7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5uYW1lICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQubmFtZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjcml0T2JqLnZhbHVlID0gdGV4dDtcclxuICAgICAgICAgICAgICBpZiAoIWlzQWRkVG9UZW1wKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRleHQgPT0gXCJhbGxcIiAmJiBJc1F1ZXJ5SW4gJiYgY29tcG9uZW50Lm9wdGlvbnMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICBsZXQgZGRsTGlzdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgY29tcG9uZW50Lm9wdGlvbnMubGVuZ3RoOyB4KyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh4ICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgZGRsTGlzdC5wdXNoKGNvbXBvbmVudC5vcHRpb25zW3hdLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGRkbExpc3QubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uSW47XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50Lm5hbWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjcml0T2JqLmxpc3RWYWx1ZSA9IGRkbExpc3Q7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQWRkVG9UZW1wKSB7XHJcbiAgICAgICAgICAgICAgICAgIGFyckNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAvL0thbGF1IGFkYSBQZXJjZW50IG1ha2EgeWFuZyBkaXBha2Ugbm50aSBhZGFsYWggUmVzdHJpY3Rpb25zIExpa2VcclxuICAgICAgICAgIGlmIChjb21wb25lbnQubmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQubmFtZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNyaXRPYmoudmFsdWUgPSBjb21wb25lbnQudmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZS5pbmNsdWRlcyhcIiVcIikpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25MaWtlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9rYWxhdSBjb21wb25lbnRueWEgRGF0ZSwgcmVzdHJpY3Rpb25zbnlhIGxnc2cgYW1iaWwgZGFyaSBwcm9wZXJ0eSBKU09ObnlhXHJcbiAgICAgICAgICBlbHNlIGlmIChjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlc3RyaWN0aW9uJykgIT0gXCJcIiAmJiBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJlc3RyaWN0aW9uJykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpO1xyXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT0gJ251bWVyaWMnKSB7XHJcbiAgICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IHBhcnNlRmxvYXQoY29tcG9uZW50LnZhbHVlLnJlcGxhY2UoLywvZywgJycpKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjcml0T2JqLnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJMSUtFXCIpIHtcclxuICAgICAgICAgICAgICBjcml0T2JqLnZhbHVlID0gXCIlXCIgKyBjb21wb25lbnQudmFsdWUudHJpbSgpICsgXCIlXCI7XHJcbiAgICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25MaWtlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jcml0LWRhdGF0YWJsZScpICE9IFwiXCIgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jcml0LWRhdGF0YWJsZScpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5pc0NyaXRlcmlhRGF0YVRhYmxlID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jcml0LWRhdGF0YWJsZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFpc0FkZFRvVGVtcCkge1xyXG4gICAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKElzQnJlYWspIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhZGRDcml0ICE9IG51bGwgJiYgYWRkQ3JpdCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKGFkZENyaXQubGVuZ3RoICE9IDApIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZENyaXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGFyckNyaXQucHVzaChhZGRDcml0W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gbnVsbCB8fCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBhcnJDcml0LnB1c2godGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gbnVsbCB8fCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGFyckNyaXQucHVzaCh0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNDbGlja1NlYXJjaCkge1xyXG4gICAgICB0aGlzLnBlcnNpc3RDcml0ID0gYXJyQ3JpdDtcclxuICAgIH1cclxuICAgIHJlcXVlc3QuY3JpdGVyaWEgPSB0aGlzLnBlcnNpc3RDcml0O1xyXG5cclxuICAgIGlmIChpc0FkZFRvVGVtcCkge1xyXG4gICAgICB0aGlzLnBlcnNpc3RBZGRUb1RlbXBDcml0ID0gYWRkVG9UZW1wQ3JpdDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMucGVyc2lzdEFkZFRvVGVtcENyaXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXF1ZXN0LmNyaXRlcmlhID0gcmVxdWVzdC5jcml0ZXJpYS5jb25jYXQodGhpcy5wZXJzaXN0QWRkVG9UZW1wQ3JpdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZmlsdGVyIGR1cGxpY2F0ZSBkYXRhIGluIGFycmF5XHJcbiAgICByZXF1ZXN0LmNyaXRlcmlhID0gdGhpcy5maWx0ZXJEdXBsaWNhdGVEYXRhKHJlcXVlc3QuY3JpdGVyaWEpXHJcbiAgICBcclxuICAgIC8vIGZpbHRlciBlbXB0eSB2YWx1ZSBpbiBsaXN0VmFsdWVcclxuICAgIHJlcXVlc3QuY3JpdGVyaWEgPSB0aGlzLmZpbHRlckxpc3RWYWx1ZUVtcHR5KHJlcXVlc3QuY3JpdGVyaWEpO1xyXG5cclxuICAgIHJlcXVlc3QuaW50ZWdyYXRpb25PYmogPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuaXNKb2luRXhBUEkpIHtcclxuICAgICAgcmVxdWVzdC5pbnRlZ3JhdGlvbk9iaiA9IHRoaXMuc2VhcmNoSW5wdXQuaW50ZWdyYXRpb25PYmo7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1NlYXJjaCA9IHRydWU7IFxyXG5cclxuICAgIFxyXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuZGF0YUlucHV0ICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQpLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICBib2R5TGlzdCA9IHRoaXMuc2VhcmNoSW5wdXQuZGF0YUlucHV0LmJvZHlMaXN0O1xyXG4gICAgICBmaWxlTmFtZSA9IHRoaXMuc2VhcmNoSW5wdXQuZGF0YUlucHV0LnRpdGxlO1xyXG4gICAgICBoZWFkZXJMaXN0ID0gdGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQuaGVhZGVyTGlzdDtcclxuICAgICAgYWRkaXRpb25hbEV4cG9ydExpc3QgPSB0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dC5hZGRpdGlvbmFsRXhwb3J0TGlzdDtcclxuICAgICAgZXhjbHVkZUV4cG9ydExpc3QgPSB0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dC5leGNsdWRlRXhwb3J0TGlzdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaHR0cC5nZXQodGhpcy5zZWFyY2hJbnB1dC5fdXJsKS50b1Byb21pc2UoKS50aGVuKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBib2R5TGlzdCA9IGRhdGEuYm9keUxpc3RcclxuICAgICAgICBmaWxlTmFtZSA9IGRhdGEudGl0bGVcclxuICAgICAgICBoZWFkZXJMaXN0ID0gZGF0YS5oZWFkZXJMaXN0XHJcbiAgICAgICAgYWRkaXRpb25hbEV4cG9ydExpc3QgPSBkYXRhLmFkZGl0aW9uYWxFeHBvcnRMaXN0O1xyXG4gICAgICAgIGV4Y2x1ZGVFeHBvcnRMaXN0ID0gZGF0YS5leGNsdWRlRXhwb3J0TGlzdDtcclxuICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaVVybCwgcmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoSXNFeHBvcnRFeGNlbCkge1xyXG4gICAgICAgIGJvZHlEYXRhID0gcmVzcG9uc2VbXCJEYXRhXCJdO1xyXG4gICAgICAgIFtoZWFkZXJMaXN0LCBib2R5TGlzdF0gPSB0aGlzLmNoZWNrQWRkaXRpb25hbEV4cG9ydExpc3QoaGVhZGVyTGlzdCwgYm9keUxpc3QsIGFkZGl0aW9uYWxFeHBvcnRMaXN0KTtcclxuICAgICAgICBbaGVhZGVyTGlzdCwgYm9keUxpc3RdID0gdGhpcy5jaGVja0V4Y2x1ZGVFeHBvcnRMaXN0KGhlYWRlckxpc3QsIGJvZHlMaXN0LCBleGNsdWRlRXhwb3J0TGlzdCk7XHJcbiAgICAgICAgZGF0YUZpbGUgPSB0aGlzLm1hcERhdGFGaWxlKGJvZHlMaXN0LCBib2R5RGF0YSwgaGVhZGVyTGlzdCk7XHJcbiAgICAgICAgaWYgKGV4dEZpbGUgPT09IEVYUE9SVF9EQVRBX1RZUEVTLmV4Y2VsKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmV4cG9ydEZpbGVBc0V4Y2VsKGRhdGFGaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRGaWxlID09PSBFWFBPUlRfREFUQV9UWVBFUy5qc29uKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmV4cG9ydEZpbGVBc0pzb24oZGF0YUZpbGUsIGZpbGVOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dEZpbGUgPT09IEVYUE9SVF9EQVRBX1RZUEVTLmNzdikge1xyXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnRGaWxlQXNDc3YoZGF0YUZpbGUsIGZpbGVOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBxcnlQYWdpbmcgPSB7XHJcbiAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlLFxyXG4gICAgICAgIHBhZ2VOb3c6IHBhZ2VOb1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHFyeVBhZ2luZyk7XHJcbiAgICAgIHRoaXMucmVzdWx0LmVtaXQocXJ5UGFnaW5nKTtcclxuICAgICAgdGhpcy5yZXFHZXRBbGxEYXRhLmVtaXQocmVxdWVzdCk7XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJEdXBsaWNhdGVEYXRhKGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IF92YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgcmV0dXJuIGluZGV4ID09PSBkYXRhLmZpbmRJbmRleChvYmogPT4ge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopID09PSBfdmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxpc3RWYWx1ZUVtcHR5KGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLmZpbHRlcigodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLmxpc3RWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdmFsdWU7XHJcbiAgICAgIGlmICh2YWx1ZS5saXN0VmFsdWUubGVuZ3RoID09PSAwICkgcmV0dXJuO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrVmFsdWVHdGVMdGUoY29tcG9uZW50KXtcclxuICAgIC8vY2VrIHlnIHBha2FpIHJlc3RyaWN0aW9uIGd0ZS9sdGUvZ3QvbHRcclxuICAgIGxldCBNaW5Db21wb25lbnQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkdURVwiKSk7XHJcbiAgICBpZighTWluQ29tcG9uZW50KXtcclxuICAgICAgTWluQ29tcG9uZW50ID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maW5kKHggPT4geC5uYW1lID09IGNvbXBvbmVudC5uYW1lICYmICh4LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSlcclxuICAgIH1cclxuXHJcbiAgICBsZXQgTWF4Q29tcG9uZW50ID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maW5kKHggPT4geC5uYW1lID09IGNvbXBvbmVudC5uYW1lICYmICh4LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJMVEVcIikpO1xyXG4gICAgaWYoIU1heENvbXBvbmVudCl7XHJcbiAgICAgIE1heENvbXBvbmVudCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQuZmluZCh4ID0+IHgubmFtZSA9PSBjb21wb25lbnQubmFtZSAmJiAoeC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRcIikpXHJcbiAgICB9XHJcblxyXG4gICAgaWYoTWluQ29tcG9uZW50ICYmIE1heENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWluQ29tcG9uZW50LmlkXS52YWx1ZUFzTnVtYmVyO1xyXG4gICAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W01heENvbXBvbmVudC5pZF0udmFsdWVBc051bWJlcjtcclxuICAgICAgaWYobWluVmFsdWUgPiBtYXhWYWx1ZSl7XHJcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyhNaW5Db21wb25lbnQubGFiZWwgKyBcIiBtdXN0IGJlIGxlc3MgdGhhbiBcIiArIE1heENvbXBvbmVudC5sYWJlbCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBtYXBEYXRhRmlsZShib2R5TGlzdERhdGEsIGJvZHlEYXRhQXJyLCBoZWFkZXJMaXN0RGF0YSkge1xyXG4gICAgbGV0IGRhdGFFeGNlbCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGJvZHlEYXRhVGVtcCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGhlYWRlckRhdGFUZW1wID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib2R5TGlzdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgW2lzTmVlZFRvUHVzaCwgYm9keURhdGEsIGhlYWRlckRhdGFdID0gdGhpcy5jaGVja05lZWREYXRhVG9FeHBvcnQoYm9keUxpc3REYXRhLCBoZWFkZXJMaXN0RGF0YSwgaSk7XHJcbiAgICAgIGlmKGlzTmVlZFRvUHVzaCl7XHJcbiAgICAgICAgYm9keURhdGFUZW1wLnB1c2goYm9keURhdGEpO1xyXG4gICAgICAgIGhlYWRlckRhdGFUZW1wLnB1c2goaGVhZGVyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvZHlEYXRhQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaW5hbERhdGEgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYm9keURhdGFBcnJbaV0pKSB7XHJcbiAgICAgICAgICBjb25zdCBfaWR4ID0gYm9keURhdGFUZW1wLmluZGV4T2Yoa2V5KVxyXG4gICAgICAgICAgaWYgKF9pZHggIT0gLTEpIHtcclxuICAgICAgICAgICAgICBmaW5hbERhdGFbaGVhZGVyRGF0YVRlbXBbX2lkeF1dID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGF0YUV4Y2VsLnB1c2goZmluYWxEYXRhKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGFFeGNlbDtcclxuICB9XHJcblxyXG4gIGNoZWNrQWRkaXRpb25hbEV4cG9ydExpc3QoaGVhZGVyTGlzdERhdGEsIGJvZHlMaXN0RGF0YSwgYWRkaXRpb25hbEV4cG9ydExpc3QpIHtcclxuICAgIGlmIChhZGRpdGlvbmFsRXhwb3J0TGlzdCA9PSB1bmRlZmluZWQpIHJldHVybiBbaGVhZGVyTGlzdERhdGEsIGJvZHlMaXN0RGF0YV07XHJcbiAgICBpZiAoYWRkaXRpb25hbEV4cG9ydExpc3QubGVuZ3RoID09IDApIHJldHVybiBbaGVhZGVyTGlzdERhdGEsIGJvZHlMaXN0RGF0YV07XHJcblxyXG4gICAgY29uc3QgX2hlYWRlckxpc3QgPSBbLi4uaGVhZGVyTGlzdERhdGFdO1xyXG4gICAgY29uc3QgX2JvZHlMaXN0ID0gWy4uLmJvZHlMaXN0RGF0YV07XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRpdGlvbmFsRXhwb3J0TGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBfaGVhZGVyTGlzdC5wdXNoKHtsYWJlbDogYWRkaXRpb25hbEV4cG9ydExpc3RbaV0ubGFiZWx9KTtcclxuICAgICAgX2JvZHlMaXN0LnB1c2goe3Byb3BlcnR5OiBhZGRpdGlvbmFsRXhwb3J0TGlzdFtpXS5wcm9wZXJ0eX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbX2hlYWRlckxpc3QsIF9ib2R5TGlzdF07XHJcbiAgfVxyXG5cclxuICBjaGVja0V4Y2x1ZGVFeHBvcnRMaXN0KGhlYWRlckxpc3REYXRhLCBib2R5TGlzdERhdGEsIGV4Y2x1ZGVFeHBvcnRMaXN0KSB7XHJcbiAgICBpZiAoZXhjbHVkZUV4cG9ydExpc3QgPT0gdW5kZWZpbmVkKSByZXR1cm4gW2hlYWRlckxpc3REYXRhLCBib2R5TGlzdERhdGFdO1xyXG4gICAgaWYgKGV4Y2x1ZGVFeHBvcnRMaXN0Lmxlbmd0aCA9PSAwKSByZXR1cm4gW2hlYWRlckxpc3REYXRhLCBib2R5TGlzdERhdGFdO1xyXG5cclxuICAgIGNvbnN0IF9oZWFkZXJMaXN0ID0gWy4uLmhlYWRlckxpc3REYXRhXTtcclxuICAgIGNvbnN0IF9ib2R5TGlzdCA9IFsuLi5ib2R5TGlzdERhdGFdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhjbHVkZUV4cG9ydExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGluZGV4ID0gX2JvZHlMaXN0LmZpbmRJbmRleCgoZWxlbWVudCkgPT4gZWxlbWVudC5wcm9wZXJ0eSA9PSBleGNsdWRlRXhwb3J0TGlzdFtpXS5wcm9wZXJ0eSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICBfaGVhZGVyTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgX2JvZHlMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbX2hlYWRlckxpc3QsIF9ib2R5TGlzdF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrTmVlZERhdGFUb0V4cG9ydChib2R5TGlzdERhdGE6IEFycmF5PGFueT4sIGhlYWRlckxpc3REYXRhOiBBcnJheTxhbnk+LCBpZHg6IG51bWJlcikge1xyXG4gICAgLy8gYWRkIGpzb24gY2hlY2tlciBmb3IgZGF0YSB0byBleHBvcnQgaGVyZVxyXG4gICAgaWYgKGJvZHlMaXN0RGF0YVtpZHhdWyd0eXBlJ10gIT0gJ2FjdGlvbicpIHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIGJvZHlMaXN0RGF0YVtpZHhdWydwcm9wZXJ0eSddLFxyXG4gICAgICAgIGhlYWRlckxpc3REYXRhW2lkeF1bJ2xhYmVsJ11cclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIGlmIChib2R5TGlzdERhdGFbaWR4XVsndHlwZSddID09ICdhY3Rpb24nICYmIGJvZHlMaXN0RGF0YVtpZHhdWydhY3Rpb24nXVswXVsndHlwZSddID09ICdzd2l0Y2gnICYmIGJvZHlMaXN0RGF0YVtpZHhdWydhY3Rpb24nXVswXVsnY2FzZSddWzBdWydyZXN1bHQnXVsndHlwZSddID09ICdsaW5rJykge1xyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgYm9keUxpc3REYXRhW2lkeF1bJ2FjdGlvbiddWzBdWydjYXNlJ11bMF1bJ3Jlc3VsdCddWydwcm9wZXJ0eSddLFxyXG4gICAgICAgIGhlYWRlckxpc3REYXRhW2lkeF1bJ2xhYmVsJ11cclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIHJldHVybiBbZmFsc2UsIFtdLCBbXV07XHJcbiAgfVxyXG5cclxuICBHZW5lcmF0ZVJlcG9ydChlbmppRm9ybTogTmdGb3JtKSB7XHJcbiAgICBlbmppRm9ybS5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmKCFlbmppRm9ybS5mb3JtLnZhbGlkKSByZXR1cm47XHJcbiAgICB0aGlzLmdlblJwdC5lbWl0KHsgRXhwb3J0VHlwZTogdGhpcy5FeHBvcnRUeXBlLCBFbFJlZjogdGhpcy5teUZvcm0gfSk7XHJcbiAgfVxyXG5cclxuICBsZXNzVGhhbkZvdXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb3VudEZvcm0gPiAzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc29sdmVPYmplY3Qob2JqOiBhbnksIHVybDogc3RyaW5nLCBjcml0OiBSZXF1ZXN0Q3JpdGVyaWFPYmogPSBudWxsKSB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLnBvc3RKU09OKHVybCwgY3JpdCk7XHJcbiAgICB2YWwuc3Vic2NyaWJlKHRlbXBEYXRhID0+IHtcclxuICAgICAgb2JqLml0ZW1zVXJsID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIG9iai5pdGVtc1VybCA9IHRlbXBEYXRhLlJldHVybk9iamVjdDtcclxuXHJcbiAgICAgIGlmIChvYmouZXhjbHVkZSAhPSB1bmRlZmluZWQgJiYgb2JqLmV4Y2x1ZGUgIT0gXCJcIikge1xyXG4gICAgICAgIG9iai5pdGVtc1VybCA9IG9iai5pdGVtc1VybC5maWx0ZXIoKHZhbHVlKSA9PiAhb2JqLmV4Y2x1ZGUuaW5jbHVkZXModmFsdWUuS2V5KSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvYmoudHlwZSA9PSBcImRyb3Bkb3duU2VhcmNoXCIgJiYgb2JqLml0ZW1zVXJsLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgb2JqLnZhbHVlID0gb2JqLml0ZW1zVXJsWzBdLktleTtcclxuICAgICAgICBvYmouZGVzY3IgPSBvYmouaXRlbXNVcmxbMF0uVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9iai5hZmZlY3RlZEZpbHRlciAmJiBvYmouaXRlbXNVcmwubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlRXZlbnQob2JqLml0ZW1zVXJsWzBdLktleSwgb2JqKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Ub0RlY2ltYWwoZWxlbWVudDogYW55KSB7XHJcbiAgICBlbGVtZW50LnRhcmdldC52YWx1ZSA9IHBhcnNlRmxvYXQoZWxlbWVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRBc0ZpbGUoZXh0RmlsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaENsaWNrKHRydWUsIGV4dEZpbGUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VFdmVudChvcHRWYWx1ZSwgYWZGaWx0ZXIpIHtcclxuICAgIGxldCBqc29uQ29tcCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQ7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZkZpbHRlci5hZmZlY3RlZEZpbHRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGpzb25Db21wLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGpzb25Db21wW2pdLm5hbWUgPT0gYWZGaWx0ZXIuYWZmZWN0ZWRGaWx0ZXJbaV0pIHtcclxuICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgbGV0IGFycmF5Q3JpdCA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSAhPSBcImFsbFwiICYmIG9wdFZhbHVlICE9IFwib25lXCIpIHtcclxuICAgICAgICAgICAgbGV0IGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgICAgY3JpdE9iai5EYXRhVHlwZSA9IGFmRmlsdGVyLmRhdGF0eXBlO1xyXG4gICAgICAgICAgICBpZiAoYWZGaWx0ZXIuZmlsdGVyUHJvcE5hbWUgIT0gdW5kZWZpbmVkIHx8IGFmRmlsdGVyLmZpbHRlclByb3BOYW1lICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICByZXF1ZXN0W2FmRmlsdGVyLmZpbHRlclByb3BOYW1lXSA9IG9wdFZhbHVlO1xyXG4gICAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBhZkZpbHRlci5maWx0ZXJQcm9wTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gYWZGaWx0ZXIubmFtZTtcclxuICAgICAgICAgICAgICByZXF1ZXN0W2FmRmlsdGVyLm5hbWVdID0gb3B0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IG9wdFZhbHVlO1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxO1xyXG4gICAgICAgICAgICBhcnJheUNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSA9PSBcImFsbFwiKSB7XHJcbiAgICAgICAgICAgIGxldCBjcml0T2JqID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICAgIGFycmF5Q3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgICBqc29uQ29tcFtqXS52YWx1ZSA9IFwiYWxsXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXF1ZXN0LmNyaXRlcmlhID0gYXJyYXlDcml0O1xyXG4gICAgICAgICAgaWYgKGpzb25Db21wW2pdLnBhdGggIT0gdW5kZWZpbmVkICYmIGpzb25Db21wW2pdLnBhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5saXN0RW52aXJvbm1lbnRzICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0Lmxpc3RFbnZpcm9ubWVudHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50cy5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGpzb25Db21wW2pdLmVudmlyb25tZW50ID09IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50c1t5XS5lbnZpcm9ubWVudCkge1xyXG4gICAgICAgICAgICAgICAgICBqc29uQ29tcFtqXS5mdWxscGF0aCA9IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50c1t5XS51cmwgKyBqc29uQ29tcFtqXS5wYXRoO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAganNvbkNvbXBbal0uZnVsbHBhdGggPSBqc29uQ29tcFtqXS51cmw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBqc29uQ29tcFtqXS5mdWxscGF0aCA9IGpzb25Db21wW2pdLnVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVzb2x2ZU9iamVjdChqc29uQ29tcFtqXSwganNvbkNvbXBbal0uZnVsbHBhdGgsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgU2V0UHJvY2Vzc0tleShpZHg6IG51bWJlciwgd2ZLZXlGaWx0ZXI6IHN0cmluZykge1xyXG4gICAgbGV0IGNvbXBvbmVudCA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbaWR4XTtcclxuICAgIGxldCBkZGwgPSBjb21wb25lbnQub3B0aW9ucztcclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSBkZGxbZGRsLnNlbGVjdGVkSW5kZXhdLnZhbHVlLnRyaW0oKTtcclxuICAgIGxldCBsaXN0VmFsdWUgPSB0ZXh0LnNwbGl0KCc7Jyk7XHJcbiAgICBsZXQgbGlzdFdmS2V5ID0gd2ZLZXlGaWx0ZXIuc3BsaXQoJzsnKTtcclxuICAgIFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0VmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5pbnRlZ3JhdGlvbk9iai5yZXF1ZXN0T2JqW2xpc3RXZktleVtpXV0gPSBsaXN0VmFsdWVbaV07XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHN3aXRjaENhc2UoY29uZExpc3QpIHtcclxuICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRMaXN0LmNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGlkeCA9IHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWUuZmluZEluZGV4KHggPT4geC5wcm9wZXJ0eSA9PSBjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5KTtcclxuICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJFUVwiKSB7XHJcbiAgICAgICAgaWYgKCFjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlcikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA9PSBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VybmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlcm5hbWVcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlID09IHVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJORVFcIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlICE9IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHVzZXJuYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJVc2VybmFtZVwiKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnN3aXRjaFZhbHVlW2lkeF0udmFsdWUgIT0gdXNlcm5hbWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdUXCIpIHtcclxuICAgICAgICBpZiAoIWNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlID4gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgdXNlcm5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJuYW1lXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA+IHVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJHVEVcIikge1xyXG4gICAgICAgIGlmICghY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnN3aXRjaFZhbHVlW2lkeF0udmFsdWUgPj0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgdXNlcm5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJuYW1lXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA+PSB1c2VybmFtZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRcIikge1xyXG4gICAgICAgIGlmICghY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnN3aXRjaFZhbHVlW2lkeF0udmFsdWUgPCBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VybmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlcm5hbWVcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlIDwgdXNlcm5hbWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxURVwiKSB7XHJcbiAgICAgICAgaWYgKCFjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlcikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA8PSBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VybmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlcm5hbWVcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlIDw9IHVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZGl0aW9uO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgRGVjcnlwdFN0cmluZyhjaGlwcGVyVGV4dDogc3RyaW5nLCBjaGlwcGVyS2V5OiBzdHJpbmcpIHtcclxuICAgIGlmIChcclxuICAgICAgY2hpcHBlcktleSA9PSB1bmRlZmluZWQgfHwgY2hpcHBlcktleS50cmltKCkgPT0gJycgfHxcclxuICAgICAgY2hpcHBlclRleHQgPT0gdW5kZWZpbmVkIHx8IGNoaXBwZXJUZXh0LnRyaW0oKSA9PSAnJ1xyXG4gICAgKSByZXR1cm4gY2hpcHBlclRleHQ7XHJcbiAgICBsZXQgY2hpcHBlcktleUFyciA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGNoaXBwZXJLZXkpO1xyXG4gICAgbGV0IGl2ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDBdKTtcclxuICAgIGxldCBkZWNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChjaGlwcGVyVGV4dCwgY2hpcHBlcktleUFyciwgeyBpdjogaXYgfSk7XHJcbiAgICBsZXQgcGxhaW5UZXh0ID0gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICAgIHJldHVybiBwbGFpblRleHQ7XHJcbiAgfVxyXG5cclxuICBjaGVja0lucHV0RGF0ZShjb21wb25lbnQ6IGFueSkge1xyXG4gICAgbGV0IG1pbkRhdGVWYWw7XHJcbiAgICBsZXQgbWF4RGF0ZVZhbDtcclxuICAgIGxldCBsYWJlbDtcclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgIGxldCBNaW5Db21wb25lbnQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkdURVwiKSkgPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maW5kKHggPT4geC5uYW1lID09IGNvbXBvbmVudC5uYW1lICYmICh4LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSkgOiB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkdURVwiKSk7XHJcbiAgICBpZiAoTWluQ29tcG9uZW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBtaW5EYXRlVmFsID0gdGhpcy5teUZvcm0ubmF0aXZlRWxlbWVudFtNaW5Db21wb25lbnQuaWRdLm1pbiA9PSBcIlwiID8gbnVsbCA6IG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWluQ29tcG9uZW50LmlkXS5taW4pO1xyXG4gICAgICBsYWJlbCA9IE1pbkNvbXBvbmVudC5sYWJlbC5zcGxpdChcIj5cIiwgMik7XHJcbiAgICAgIGlmIChtaW5EYXRlVmFsICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoTWluQ29tcG9uZW50LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSB7XHJcbiAgICAgICAgICBtaW5EYXRlVmFsLnNldERhdGUobWluRGF0ZVZhbC5nZXREYXRlKCkgLSAxKTtcclxuICAgICAgICAgIGVycm9yTWVzc2FnZS5wdXNoKFwiIG11c3QgYmUgZ3JlYXRlciB0aGFuIFwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE1pbkNvbXBvbmVudC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiR1RFXCIpIHtcclxuICAgICAgICAgIGVycm9yTWVzc2FnZS5wdXNoKFwiIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFscyB0byBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IE1heENvbXBvbmVudCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQuZmluZCh4ID0+IHgubmFtZSA9PSBjb21wb25lbnQubmFtZSAmJiAoeC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRFXCIpKSA9PSB1bmRlZmluZWQgPyB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkxUXCIpKSA6IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQuZmluZCh4ID0+IHgubmFtZSA9PSBjb21wb25lbnQubmFtZSAmJiAoeC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRFXCIpKTtcclxuICAgIGlmIChNYXhDb21wb25lbnQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG1heERhdGVWYWwgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W01heENvbXBvbmVudC5pZF0ubWF4ID09IFwiXCIgPyBudWxsIDogbmV3IERhdGUodGhpcy5teUZvcm0ubmF0aXZlRWxlbWVudFtNYXhDb21wb25lbnQuaWRdLm1heCk7XHJcbiAgICAgIGxhYmVsID0gTWF4Q29tcG9uZW50LmxhYmVsLnNwbGl0KFwiPFwiLCAyKTtcclxuICAgICAgaWYgKG1heERhdGVWYWwgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChNYXhDb21wb25lbnQucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkxUXCIpIHtcclxuICAgICAgICAgIG1heERhdGVWYWwuc2V0RGF0ZShtYXhEYXRlVmFsLmdldERhdGUoKSArIDEpO1xyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlLnB1c2goXCIgbXVzdCBiZSBsZXNzIHRoYW4gXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTWF4Q29tcG9uZW50LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJMVEVcIikge1xyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlLnB1c2goXCIgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWxzIHRvIFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobWluRGF0ZVZhbCAhPSBudWxsICYmIG1heERhdGVWYWwgPT0gbnVsbCAmJiBuZXcgRGF0ZSh0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W01pbkNvbXBvbmVudC5pZF0udmFsdWUpIDwgbWluRGF0ZVZhbCkge1xyXG4gICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKGxhYmVsWzBdICsgZXJyb3JNZXNzYWdlWzBdICsgZm9ybWF0RGF0ZShtaW5EYXRlVmFsLCAnZGQgTU1NTSB5eXl5JywgJ2VuLVVTJykgKyBcIi5cIilcclxuICAgICAgdGhpcy5kYXRlV3JvbmcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChtYXhEYXRlVmFsICE9IG51bGwgJiYgbWluRGF0ZVZhbCA9PSBudWxsICYmIG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWF4Q29tcG9uZW50LmlkXS52YWx1ZSkgPiBtYXhEYXRlVmFsKSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcobGFiZWxbMF0gKyBlcnJvck1lc3NhZ2VbMF0gKyBmb3JtYXREYXRlKG1heERhdGVWYWwsICdkZCBNTU1NIHl5eXknLCAnZW4tVVMnKSArIFwiLlwiKVxyXG4gICAgICB0aGlzLmRhdGVXcm9uZyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1pbkRhdGVWYWwgIT0gbnVsbCAmJiBtYXhEYXRlVmFsICE9IG51bGwpIHtcclxuICAgICAgaWYgKG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWF4Q29tcG9uZW50LmlkXS52YWx1ZSkgPiBtYXhEYXRlVmFsIHx8IG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWluQ29tcG9uZW50LmlkXS52YWx1ZSkgPCBtaW5EYXRlVmFsKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyhsYWJlbFswXSArIGVycm9yTWVzc2FnZVswXSArIGZvcm1hdERhdGUobWluRGF0ZVZhbCwgJ2RkIE1NTU0geXl5eScsICdlbi1VUycpICsgXCIgYW5kXCIgKyBlcnJvck1lc3NhZ2VbMV0gKyBmb3JtYXREYXRlKG1heERhdGVWYWwsICdkZCBNTU1NIHl5eXknLCAnZW4tVVMnKSArIFwiLlwiKVxyXG4gICAgICAgIHRoaXMuZGF0ZVdyb25nID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGVXcm9uZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVXcm9uZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRPcHRpb24oaXRlbTogeyBLZXk6IHN0cmluZywgVmFsdWU6IHN0cmluZyB9LCBjcml0OiBhbnkpIHtcclxuICAgIGNyaXQuZGVzY3IgPSBpdGVtLlZhbHVlO1xyXG4gICAgY3JpdC5pc0xpc3RIaWRlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIE9uRm9jdXNDdXJyKGV2OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gXCJcIiAmJiB2YWx1ZSAhPT0gMCAmJiB2YWx1ZSAhPT0gXCIwXCIpIHJldHVybjtcclxuICAgIGV2LnRhcmdldC52YWx1ZSA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICBWYWxpZGF0ZURlZmF1bHRWYWx1ZShpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICBpZiAoaXRlbVZhbHVlICE9PSBcIlwiICYmIGl0ZW1WYWx1ZSAhPT0gMCAmJiBpdGVtVmFsdWUgIT09IFwiMFwiKSByZXR1cm47XHJcbiAgICBjb25zdCBfZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuZy1yZWZsZWN0LW5hbWU9XCIke2l0ZW0ubmFtZX1cIl1gKTtcclxuICAgIGlmIChfZWwgPT09IG51bGwpIHJldHVybjtcclxuXHJcbiAgICBsZXQgdmFsID0gdGhpcy5nZW5lcmF0ZUN1cnJGb2NFbFZhbHVlKGl0ZW0pO1xyXG4gICAgX2VsW1widmFsdWVcIl0gPSB2YWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlQ3VyckZvY0VsVmFsdWUoaXRlbTogYW55KSB7XHJcbiAgICBsZXQgdmFsID0gXCIwXCI7XHJcbiAgICBjb25zdCBwcmVjaXNpb24gPSBpdGVtPy5wcmVjaXNpb24gfHwgMjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlY2lzaW9uOyBpKyspIHtcclxuICAgICAgaWYgKGkgPT09IDApIHZhbCArPSBcIi5cIjtcclxuICAgICAgdmFsICs9IFwiMFwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcbn1cclxuIiwiPCEtLSBCYXNpYyBmb3JtIGxheW91dCBzZWN0aW9uIHN0YXJ0IC0tPlxyXG48c2VjdGlvbiBpZD1cImhvcml6b250YWwtZm9ybS1sYXlvdXRzXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxlZnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGwtMyBtYi0yIG10LTJcIiAqbmdJZj1cImNvbmZpZ3VyYXRpb24/LnRpdGxlICE9IHVuZGVmaW5lZCAmJiBjb25maWd1cmF0aW9uPy50aXRsZSAhPSAnJ1wiPlxyXG4gICAgICAgICAgPGg0IGNsYXNzPVwiY2FyZC10aXRsZSB1Y1NlYXJjaC10aXRsZVwiIHRyYW5zbGF0ZT57e2NvbmZpZ3VyYXRpb24udGl0bGV9fTwvaDQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTNcIj5cclxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtIGZvcm0taG9yaXpvbnRhbFwiIGlkPVwiZm9ybVNlYXJjaFwiICNmb3JtSWRTZWFyY2ggI2VuamlGb3JtPVwibmdGb3JtXCJcclxuICAgICAgICAgICAgICAobmdTdWJtaXQpPVwiZW5qaUZvcm0udmFsaWQgJiYgc2VhcmNoQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvcm0tc2VjdGlvbiBmb250LXdlaWdodC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImNoYW5nZVN0YXRlKClcIiBjbGFzcz1cImJ0biBuby1wYWRkaW5nIGN1cnNvci1wb2ludGVyIGZsaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhXCIgc3R5bGU9XCJmb250LXNpemU6IDE1cHg7IG1hcmdpbjogMHB4IDBweCA1cHggLTE1cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzSGlkZGVuID8gJ2ZhLWNoZXZyb24tcmlnaHQnIDogJ2ZhLWNoZXZyb24tZG93bidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlndXJhdGlvbj8uc2VjdGlvblRpdGxlICE9IHVuZGVmaW5lZCAmJiBjb25maWd1cmF0aW9uPy5zZWN0aW9uVGl0bGUgIT0gJyc7IHRoZW4gaW5wdXRTZWN0aW9uVGl0bGUgZWxzZSBkZWZhdWx0U2VjdGlvblRpdGxlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2lucHV0U2VjdGlvblRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Y29uZmlndXJhdGlvbj8uc2VjdGlvblRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VjdGlvblRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIFBhZ2luZ1xyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW5pIERpZ3VuYWthbiB1bnR1ayBHZW5lcmF0ZSBEeW5hbWljIENvbXBvbmVudCAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gW2hpZGRlbl09XCJpc0hpZGRlblwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWFjdGl2ZVwiIFtAY2hhbmdlRGl2U2l6ZV09Y3VycmVudFN0YXRlPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgY29uZmlndXJhdGlvbj8uY29tcG9uZW50OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNSBuby1wYWRkaW5nXCIgZm9yPVwie3txdWVzdGlvbi5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWRpbnMtcmVxdWlyZWQtbGFiZWwnOiAocXVlc3Rpb24uaXNSZXF1aXJlZCB8fCAocXVlc3Rpb24/LmRkbFR5cGUgIT0gdW5kZWZpbmVkICYmIHF1ZXN0aW9uLmRkbFR5cGUgPT0gJ29uZScpKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPnt7cXVlc3Rpb24ubGFiZWx9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03IG5vLXBhZGRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT0ndGV4dGJveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7e3F1ZXN0aW9uLmlkfX1cIiBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSXNVcHBlckNhc2VdPVwicXVlc3Rpb24uaXNVcHBlcmNhc2UgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBxdWVzdGlvbi5pc1VwcGVyY2FzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicXVlc3Rpb24udmFsdWVcIiBbcmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIG5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgdmFsdWU9XCJ7e3F1ZXN0aW9uLnZhbHVlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hDbGljaygpXCIgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1uYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy50b3VjaGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSd0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7e3F1ZXN0aW9uLmlkfX1cIiBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJxdWVzdGlvbi52YWx1ZVwiIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiIGF0dHIuZGF0YS10eXBlPVwie3txdWVzdGlvbi5kYXRhdHlwZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgdmFsdWU9XCJ7e3F1ZXN0aW9uLnZhbHVlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy50b3VjaGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5pbnZhbGlkIH1cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24udHlwZT09J251bWVyaWMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7e3F1ZXN0aW9uLmlkfX1cIiAoZm9jdXMpPVwidHJhbnNmb3JtVG9EZWNpbWFsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInRyYW5zZm9ybVRvRGVjaW1hbCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicXVlc3Rpb24udmFsdWVcIiBbcmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIG5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWUrW2ldfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgdmFsdWU9XCJ7e3F1ZXN0aW9uLnZhbHVlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hDbGljaygpXCIgYXR0ci5kYXRhLXJlc3RyaWN0aW9uPVwie3txdWVzdGlvbi5yZXN0cmljdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtdHlwZT1cInt7cXVlc3Rpb24uZGF0YXR5cGV9fVwiIGF0dHIuZGF0YS1uYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1udW1lcmljcGFpcj1cInt7cXVlc3Rpb24ubnVtZXJpY1BhaXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8uZGlydHkpICYmIGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZStbaV1dPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdjdXJyZW5jeSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uPy5pc0N1c3RvbSAhPSB1bmRlZmluZWQgJiYgcXVlc3Rpb24/LmlzQ3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJcIiBpZD1cInt7cXVlc3Rpb24uaWR9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1mb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaENsaWNrKClcIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIiBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgY3VycmVuY3lNYXNrIFtuZ01vZGVsXT1cInF1ZXN0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24udmFsdWVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ7IHRob3VzYW5kczogcXVlc3Rpb24udGhvdXNhbmRzLCBkZWNpbWFsOiBxdWVzdGlvbi5kZWNpbWFsLCBhbGlnbjogcXVlc3Rpb24uYWxpZ24sIGFsbG93TmVnYXRpdmU6IHF1ZXN0aW9uLmFsbG93TmVnYXRpdmUsIGFsbG93WmVybzogcXVlc3Rpb24uYWxsb3daZXJvLCBwcmVjaXNpb246IHF1ZXN0aW9uLnByZWNpc2lvbiwgbnVsbGFibGU6IHF1ZXN0aW9uLm51bGxhYmxlIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy50b3VjaGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbj8uaXNDdXN0b20gPT0gdW5kZWZpbmVkIHx8ICFxdWVzdGlvbj8uaXNDdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInt7cXVlc3Rpb24uaWR9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1mb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaENsaWNrKClcIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIiBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgY3VycmVuY3lNYXNrIFtuZ01vZGVsXT1cInF1ZXN0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24udmFsdWVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwieyB0aG91c2FuZHM6ICcsJywgZGVjaW1hbDogJy4nLCBhbGlnbjogJ3JpZ2h0JywgYWxsb3dOZWdhdGl2ZTogZmFsc2UsIGFsbG93WmVybzp0cnVlLCBwcmVjaXNpb246IDIsIG51bGxhYmxlOiBmYWxzZSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5kaXJ0eSkgJiYgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmQgSGFyZGNvZGUgTG9va3VwIGRpZGFsZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT0nZGF0ZXBpY2tlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ7e3F1ZXN0aW9uLmlzVGltZSA/ICdkYXRldGltZS1sb2NhbCcgOiAnZGF0ZSd9fVwiIGlkPVwie3txdWVzdGlvbi5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sIGJ0bi1sb29rdXBcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lK1tpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJxdWVzdGlvbi52YWx1ZVwiIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiIHZhbHVlPVwie3txdWVzdGlvbi52YWx1ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicXVlc3Rpb24ucmVhZG9ubHlcIiBhdHRyLmRhdGEtdHlwZT1cInt7cXVlc3Rpb24uZGF0YXR5cGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLW5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWRhdGVwaWNrZXJwYWlyPVwie3txdWVzdGlvbi5kYXRlcGlja2VyUGFpcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtY3JpdC1kYXRhdGFibGU9XCJ7e3F1ZXN0aW9uLmlzQ3JpdGVyaWFEYXRhVGFibGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaENsaWNrKClcIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBtaW49XCJ7e3F1ZXN0aW9uLm1pbkRhdGUgfCBkYXRlOid5eXl5LU1NLWRkJ319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCJ7e3F1ZXN0aW9uLm1heERhdGUgfCBkYXRlOid5eXl5LU1NLWRkJ319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwicXVlc3Rpb24ucmVzdHJpY3Rpb24gIT0gdW5kZWZpbmVkICYmIGNoZWNrSW5wdXREYXRlKHF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8uZGlydHkpICYmIGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZStbaV1dPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnR5cGUgPT0gJ3Rhc2tEZWZpbml0aW9uS2V5JyB8fCBxdWVzdGlvbi50eXBlID09ICdwcm9jZXNzS2V5JyB8fCBxdWVzdGlvbi50eXBlID09ICdvZmZpY2VSb2xlQ29kZXMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgYXR0ci5kYXRhLXJlcXVpcmVkPVwie3txdWVzdGlvbi5pc1JlcXVpcmVkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5xdWVyeS1pbj1cInt7cXVlc3Rpb24uaXNRdWVyeUlufX1cIiBhdHRyLmRhdGEtdHlwZT1cInt7cXVlc3Rpb24uZGF0YXR5cGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5sYWJlbD1cInt7cXVlc3Rpb24ubGFiZWx9fVwiIFtoaWRkZW5dPVwicXVlc3Rpb24/Lml0ZW1zVXJsPy5sZW5ndGggPT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIocXVlc3Rpb24udHlwZSA9PSAndGFza0RlZmluaXRpb25LZXknIHx8IHF1ZXN0aW9uLnR5cGUgPT0gJ3Byb2Nlc3NLZXknKSA/IFNldFByb2Nlc3NLZXkoaSxxdWVzdGlvbi53ZktleUZpbHRlcikgOiBTZXRSb2xlT2ZmaWNlQ29kZXMoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5kaXJ0eSkgJiYgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cInF1ZXN0aW9uLmRkbFR5cGUgPT0gJ29uZScgJiYgcXVlc3Rpb24/Lml0ZW1zVXJsPy5sZW5ndGggIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm9uZVwiPlNlbGVjdCBPbmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihxdWVzdGlvbj8uZGRsVHlwZSA9PSB1bmRlZmluZWQgfHwgcXVlc3Rpb24uZGRsVHlwZSA9PSAnYWxsJykgJiYgcXVlc3Rpb24/Lml0ZW1zVXJsPy5sZW5ndGggIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24/Lml0ZW1zVXJsXCIgdmFsdWU9XCJ7e2l0ZW0uS2V5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5WYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCI+e3txdWVzdGlvbi5pdGVtc1VybFswXS5WYWx1ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdkcm9wZG93bidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVzdGlvbi52YWx1ZVwiIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sXCIgYXR0ci5xdWVyeS1pbj1cInt7cXVlc3Rpb24uaXNRdWVyeUlufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS10eXBlPVwie3txdWVzdGlvbi5kYXRhdHlwZX19XCIgYXR0ci5kYXRhLW5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5sYWJlbD1cInt7cXVlc3Rpb24ubGFiZWx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoID09IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInF1ZXN0aW9uLmlzRXZlbnQgPyBvbkNoYW5nZUV2ZW50KCRldmVudC50YXJnZXQudmFsdWUsIHF1ZXN0aW9uKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZW5qaUZvcm0uc3VibWl0dGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LnRvdWNoZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uZGlydHkpICYmIGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZGRsVHlwZSA9PSAnb25lJyAmJiAoIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoICE9IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCAhPSAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IE9uZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHF1ZXN0aW9uPy5kZGxUeXBlID09IHVuZGVmaW5lZCB8fCBxdWVzdGlvbi5kZGxUeXBlID09ICdhbGwnKSAmJiAoIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoICE9IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCAhPSAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcyA6IHF1ZXN0aW9uPy5pdGVtc1VybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IXF1ZXN0aW9uLmlzRnJvbVVSTCA/IGl0ZW0ua2V5IDogaXRlbS5LZXl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shcXVlc3Rpb24uaXNGcm9tVVJMID8gaXRlbS52YWx1ZSA6IGl0ZW0uVmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcXVlc3Rpb24uaXNGcm9tVVJMID8gcXVlc3Rpb24/Lml0ZW1zPy5sZW5ndGggPT0gMSA6IHF1ZXN0aW9uPy5pdGVtc1VybD8ubGVuZ3RoID09IDFcIj57eyFxdWVzdGlvbi5pc0Zyb21VUkxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHF1ZXN0aW9uLml0ZW1zWzBdLnZhbHVlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5pdGVtc1VybFswXS5WYWx1ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdkcm9wZG93blNlYXJjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkcy1kaXNwbGF5LWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoID09IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbCBkZHMtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7J2Rkc1ZhbHVlJytxdWVzdGlvbi5uYW1lfX1cIiBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmRlc2NyXCIgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJxdWVzdGlvbi5pc0xpc3RIaWRlID0gIXF1ZXN0aW9uLmlzTGlzdEhpZGU7IHF1ZXN0aW9uLnNlYXJjaFRleHQ9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoID09IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCI+e3txdWVzdGlvbi5kZXNjcn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkcy1saXN0LWNvbnRhaW5lclwiIFtoaWRkZW5dPVwicXVlc3Rpb24uaXNMaXN0SGlkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1mb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7J3NlYXJjaFRleHQnK3F1ZXN0aW9uLm5hbWV9fVwiIFsobmdNb2RlbCldPVwicXVlc3Rpb24uc2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGRzLWl0ZW1zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZ1bGwtd2lkdGhcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiIFsobmdNb2RlbCldPVwicXVlc3Rpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIGF0dHIucXVlcnktaW49XCJ7e3F1ZXN0aW9uLmlzUXVlcnlJbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIiBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5sYWJlbD1cInt7cXVlc3Rpb24ubGFiZWx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1jcml0LWRhdGF0YWJsZT1cInt7cXVlc3Rpb24uaXNDcml0ZXJpYURhdGFUYWJsZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJxdWVzdGlvbi5pc0V2ZW50ID8gb25DaGFuZ2VFdmVudCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBxdWVzdGlvbikgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5kaXJ0eSkgJiYgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7cXVlc3Rpb24/LnNpemUgPT0gdW5kZWZpbmVkID8gcXVlc3Rpb24/LnNpemUgOiAxMH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKGNsaWNrKT1cInNlbGVjdGVkT3B0aW9uKHtLZXk6J29uZScsVmFsdWU6J1NlbGVjdCBPbmUnfSxxdWVzdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZGRzVHlwZSA9PSAnb25lJyAmJiAoIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoICE9IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCAhPSAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgT25lPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKGNsaWNrKT1cInNlbGVjdGVkT3B0aW9uKHtLZXk6J2FsbCcsVmFsdWU6J0FsbCd9LHF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocXVlc3Rpb24/LmRkc1R5cGUgPT0gdW5kZWZpbmVkIHx8IHF1ZXN0aW9uLmRkc1R5cGUgPT0gJ2FsbCcpICYmICghcXVlc3Rpb24uaXNGcm9tVVJMID8gcXVlc3Rpb24/Lml0ZW1zPy5sZW5ndGggIT0gMSA6IHF1ZXN0aW9uPy5pdGVtc1VybD8ubGVuZ3RoICE9IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24/Lml0ZW1zIHwgdGV4dFNlYXJjaCA6IHF1ZXN0aW9uLnNlYXJjaFRleHQ7IGxldCBpPWluZGV4XCIgW3ZhbHVlXT1cIml0ZW0/LmtleVwiIChjbGljayk9XCJzZWxlY3RlZE9wdGlvbihpdGVtLHF1ZXN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IChxdWVzdGlvbj8uaXRlbXMgfCB0ZXh0U2VhcmNoIDogcXVlc3Rpb24uc2VhcmNoVGV4dCkgOiBxdWVzdGlvbj8uaXRlbXNVcmwgfCB0ZXh0U2VhcmNoIDogcXVlc3Rpb24uc2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkT3B0aW9uKGl0ZW0scXVlc3Rpb24pXCIgdmFsdWU9XCJ7e2l0ZW0uS2V5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uVmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdjbGFpbSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwie3snY2xhaW0nK1tpXX19XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7eyd0ZXh0J319XCIgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1uYW1lPVwie3snQXNzaWduZWUnfX1cIiBbaGlkZGVuXT1cIkNsYWltTGlzdD8ubGVuZ3RoID09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1snY2xhaW0nK1tpXV0/LnRvdWNoZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1snY2xhaW0nK1tpXV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzWydjbGFpbScrW2ldXT8uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cInF1ZXN0aW9uLmRkbFR5cGUgPT0gJ29uZScgJiYgQ2xhaW1MaXN0Py5sZW5ndGggIT0gMVwiIHZhbHVlPVwib25lXCI+U2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihxdWVzdGlvbj8uZGRsVHlwZSA9PSB1bmRlZmluZWQgfHwgcXVlc3Rpb24uZGRsVHlwZSA9PSAnYWxsJykgJiYgQ2xhaW1MaXN0Py5sZW5ndGggIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgQ2xhaW1MaXN0XCIgdmFsdWU9XCJ7e2l0ZW0uS2V5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5WYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXVjLXNob3ctZXJyb3JzICpuZ0lmPVwicXVlc3Rpb24udHlwZSE9J2RhdGVwaWNrZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXVwiIFtzdWJtaXRdPVwiZW5qaUZvcm0uc3VibWl0dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi11Yy1zaG93LWVycm9ycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItdWMtc2hvdy1lcnJvcnMgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT0nZGF0ZXBpY2tlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXVwiIFtzdWJtaXRdPVwiZW5qaUZvcm0uc3VibWl0dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi11Yy1zaG93LWVycm9ycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cFwiICpuZ0lmPVwiKGlzUmVwb3J0ICE9IHVuZGVmaW5lZCAmJiBpc1JlcG9ydClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC01IG5vLXBhZGRpbmdcIiB0cmFuc2xhdGU+UmVwb3J0IFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNyBuby1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJFeHBvcnRUeXBlXCIgWyhuZ01vZGVsKV09XCJFeHBvcnRUeXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS10eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIEV4cG9ydFR5cGVMaXN0XCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3tpdGVtLnZhbHVlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBuby1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tYWN0aW9ucyByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cImJ0bi1ncm91cFwiICpuZ0lmPVwiZXhwb3J0RGF0YSA9PSB0cnVlICYmIGlzU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXJhaXNlZCBidG4tc3VjY2VzcyBtci0xIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIHRyYW5zbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZ0LWRvd25sb2FkXCI+PC9pPiZuYnNwOzxzcGFuIHRyYW5zbGF0ZT5FeHBvcnQgRmlsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImV4cG9ydEFzRmlsZSgnY3N2JylcIj5hcyBDU1Y8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImV4cG9ydEFzRmlsZSgnZXhjZWwnKVwiPmFzIEVYQ0VMPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJleHBvcnRBc0ZpbGUoJ2pzb24nKVwiPmFzIEpTT048L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1yYWlzZWQgYnRuLXdhcm5pbmcgbXItMVwiIHRyYW5zbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT4mbmJzcDs8c3BhbiB0cmFuc2xhdGU+UmVzZXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoaXNSZXBvcnQgPT0gdW5kZWZpbmVkIHx8ICFpc1JlcG9ydClcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXJhaXNlZCBidG4tcHJpbWFyeVwiICNVQ1NlYXJjaENsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT4mbmJzcDs8c3BhbiB0cmFuc2xhdGU+U2VhcmNoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGlzUmVwb3J0ICE9IHVuZGVmaW5lZCAmJiBpc1JlcG9ydClcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkdlbmVyYXRlUmVwb3J0KGVuamlGb3JtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1yYWlzZWQgYnRuLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmdC1kb3dubG9hZFwiPjwvaT4mbmJzcDs8c3BhbiB0cmFuc2xhdGU+R2VuZXJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuPGJyPlxyXG48IS0tIC8vIEJhc2ljIGZvcm0gbGF5b3V0IHNlY3Rpb24gZW5kIC0tPiJdfQ==
|
|
1225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWNzZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWNzZWFyY2gvc3JjL2xpYi91Y3NlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3NlYXJjaC9zcmMvbGliL3Vjc2VhcmNoLWxlZ2FjeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFdkksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVB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O1NBQ0Y7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwVyxJQUFJLFlBQVksSUFBSSxTQUFTLEVBQUU7WUFDN0IsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtnQkFDdEIsSUFBSSxZQUFZLENBQUMsV0FB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LE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbmplY3QsIFJlbmRlcmVyMiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElucHV0U2VhcmNoT2JqIH0gZnJvbSAnLi9tb2RlbC9pbnB1dC1zZWFyY2gtb2JqLm1vZGVsJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFPYmogfSBmcm9tICcuL21vZGVsL2NyaXRlcmlhLW9iai5tb2RlbCc7XHJcbmltcG9ydCB7IFJlcXVlc3RDcml0ZXJpYU9iaiB9IGZyb20gJy4vbW9kZWwvcmVxdWVzdC1jcml0ZXJpYS1vYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBBZEluc0NvbnN0YW50LCBFWFBPUlRfREFUQV9UWVBFUyB9IGZyb20gJy4vbW9kZWwvYWRpbnMtY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlLCBzdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEV4cG9ydFR5cGVDb25zdGFudCwgS2V5VmFsdWVSZXBvcnRPYmogfSBmcm9tICcuL21vZGVsL2tleS12YWx1ZS1yZXBvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZSc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcbmltcG9ydCB7IEtleVZhbHVlVUNTZWFyY2hPYmosIExpc3RLZXlWYWx1ZU1vbnRoIH0gZnJvbSAnLi9tb2RlbC9rZXktdmFsdWUtdWMtc2VhcmNoLm1vZGVsJztcclxuaW1wb3J0IHsgRXhwb3J0RmlsZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5neFJvdXRlclNlcnZpY2UgfSBmcm9tICdAYWRpbnMvZmUtY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1VQ1NlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Vjc2VhcmNoLWxlZ2FjeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWNzZWFyY2gtbGVnYWN5LmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtEYXRlUGlwZSwgRXhwb3J0RmlsZVNlcnZpY2VdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2NoYW5nZURpdlNpemUnLCBbXHJcbiAgICAgIHN0YXRlKCdpbml0aWFsJywgc3R5bGUoe1xyXG4gICAgICAgIGhlaWdodDogJyonLFxyXG4gICAgICAgIG9wYWNpdHk6ICcxJyxcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnZmluYWwnLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAnMHB4JyxcclxuICAgICAgICBvcGFjaXR5OiAnMCcsXHJcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2luaXRpYWw9PmZpbmFsJywgYW5pbWF0ZSgnMzAwbXMnKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2ZpbmFsPT5pbml0aWFsJywgYW5pbWF0ZSgnMzAwbXMnKSlcclxuICAgIF0pLFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVDU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLy8gaXNMaXN0SGlkZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIC8vIG9uQ2xpY2soZXY6IE1vdXNlRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGNsaWNrSW5zaWRlID0gdGhpcy5lbGVtUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXYudGFyZ2V0KTtcclxuICAvLyAgIGlmICghY2xpY2tJbnNpZGUpIHtcclxuICAvLyAgICAgdGhpcy5pc0xpc3RIaWRlID0gdHJ1ZTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VuamlGb3JtJykgc2V0IGNvbnRlbnQoY29udGVudDogTmdGb3JtKSB7XHJcbiAgICBpZiAoY29udGVudCkgeyAvLyBpbml0aWFsbHkgc2V0dGVyIGdldHMgY2FsbGVkIHdpdGggdW5kZWZpbmVkXHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybSA9IGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtSWRTZWFyY2gnKSBteUZvcm06IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgc2VhcmNoSW5wdXQ6IElucHV0U2VhcmNoT2JqID0gbmV3IElucHV0U2VhcmNoT2JqKCk7XHJcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDEwO1xyXG4gIEBJbnB1dCgpIGlzUmVwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJlc3VsdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGdlblJwdDogRXZlbnRFbWl0dGVyPHsgRXhwb3J0VHlwZTogbnVtYmVyLCBFbFJlZjogRWxlbWVudFJlZiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBFeHBvcnRUeXBlOiBudW1iZXIsIEVsUmVmOiBFbGVtZW50UmVmIH0+KCk7XHJcbiAgQE91dHB1dCgpIHJlcUdldEFsbERhdGE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEV4cG9ydFR5cGVMaXN0OiBBcnJheTxLZXlWYWx1ZVJlcG9ydE9iaj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGtleTogRXhwb3J0VHlwZUNvbnN0YW50LkVYUF9UWVBFX1BERixcclxuICAgICAgdmFsdWU6IFwiUERGXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGtleTogRXhwb3J0VHlwZUNvbnN0YW50LkVYUF9UWVBFX1hMU1gsXHJcbiAgICAgIHZhbHVlOiBcIkV4Y2VsIDIwMDdcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAga2V5OiBFeHBvcnRUeXBlQ29uc3RhbnQuRVhQX1RZUEVfRE9DWCxcclxuICAgICAgdmFsdWU6IFwiRG9jdW1lbnQgWE1MXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGtleTogRXhwb3J0VHlwZUNvbnN0YW50LkVYUF9UWVBFX0pQREYsXHJcbiAgICAgIHZhbHVlOiBcIkp1c3RpZnkgUERGXCJcclxuICAgIH1cclxuICBdO1xyXG5cclxuICBleHBvcnRBc0ZpbGVMaXN0ID0gW1xyXG4gICAge1xyXG4gICAgICBrZXk6IFwiY3N2XCIsXHJcbiAgICAgIHZhbHVlOiBcImFzIENTVlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAga2V5OiBcImV4Y2VsXCIsXHJcbiAgICAgIHZhbHVlOiBcImFzIEVYQ0VMXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBrZXk6IFwianNvblwiLFxyXG4gICAgICB2YWx1ZTogXCJhcyBKU09OXCIsXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgTGlzdE9mTW9udGg6IExpc3RLZXlWYWx1ZU1vbnRoID0gbmV3IExpc3RLZXlWYWx1ZU1vbnRoKCk7XHJcbiAgTGlzdE9mWWVhcjogQXJyYXk8S2V5VmFsdWVVQ1NlYXJjaE9iaj4gPSBuZXcgQXJyYXk8S2V5VmFsdWVVQ1NlYXJjaE9iaj4oKTtcclxuICBDbGFpbUxpc3Q6IEFycmF5PGFueT4gPSBbXHJcbiAgICB7XHJcbiAgICAgIEtleTogQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbklzTm90TnVsbCxcclxuICAgICAgVmFsdWU6IFwiQ0xBSU1FRFwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBLZXk6IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25Jc051bGwsXHJcbiAgICAgIFZhbHVlOiBcIlVOQ0xBSU1FRFwiXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIEV4cG9ydFR5cGU6IG51bWJlciA9IDA7XHJcblxyXG4gIHBhZ2VOb3c6IGFueSA9IDE7XHJcbiAgY29uZmlndXJhdGlvbjogYW55O1xyXG4gIGV4cG9ydERhdGE6IGFueTtcclxuICBFeGNlbERhdGE6IGFueTtcclxuICBpc0RhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0hpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEJpc0R0OiBzdHJpbmc7XHJcbiAgQnVzaW5lc3NEdDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZGF0ZVdyb25nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjdXJyZW50U3RhdGUgPSAnaW5pdGlhbCc7XHJcblxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBjb3VudEZvcm0gPSAwO1xyXG4gIGZvcm1hdHRlZEFtb3VudCA9ICcnO1xyXG4gIGFtb3VudCA9IDA7XHJcbiAgYXBpVXJsOiBzdHJpbmc7XHJcbiAgYXJyQ3JpdDogYW55O1xyXG4gIHNlYXJjaEZvcm06IE5nRm9ybTtcclxuICBxdWVyeVBhcmFtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHBlcnNpc3RDcml0OiBDcml0ZXJpYU9ialtdO1xyXG4gIHBlcnNpc3RBZGRUb1RlbXBDcml0OiBDcml0ZXJpYU9ialtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQsXHJcbiAgICBwdWJsaWMgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGV4cG9ydEZpbGVTZXJ2aWNlOiBFeHBvcnRGaWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBuZ3hSb3V0ZXI6IE5neFJvdXRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlQYXJhbSA9IHRoaXMubmd4Um91dGVyLmdldFF1ZXJ5UGFyYW1zKHBhcmFtcykgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RhdGUoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9IHRoaXMuY3VycmVudFN0YXRlID09ICdpbml0aWFsJyA/ICdmaW5hbCcgOiAnaW5pdGlhbCc7XHJcbiAgICB0aGlzLmlzSGlkZGVuID0gIXRoaXMuaXNIaWRkZW4gPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwidWNzZWFyY2hcIik7XHJcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuc2VhcmNoSW5wdXQuZW52aXJvbWVudFVybCArIHRoaXMuc2VhcmNoSW5wdXQuYXBpUXJ5UGFnaW5nO1xyXG4gICAgdGhpcy5hcnJDcml0ID0gdGhpcy5zZWFyY2hJbnB1dC5hcnJDcml0T2JqO1xyXG4gICAgbGV0IGpzID0gdGhpcy5fcmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAganMudGV4dCA9IGBcclxuICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoXCIjZmxpcFwiKS5jbGljayhmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICQoXCIjcGFuZWxcIikuc2xpZGVUb2dnbGUoXCJzbG93XCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGA7XHJcbiAgICB0aGlzLl9yZW5kZXJlcjIuYXBwZW5kQ2hpbGQodGhpcy5fZG9jdW1lbnQuYm9keSwganMpO1xyXG5cclxuICAgIGxldCB2YWx1ZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoJ0J1c2luZXNzRGF0ZVJhdycpO1xyXG4gICAgdGhpcy5CaXNEdCA9IHRoaXMuRGVjcnlwdFN0cmluZyh2YWx1ZSwgXCJBZEluc0ZPVTEyMzQ1Njc4XCIpO1xyXG4gICAgdGhpcy5CdXNpbmVzc0R0ID0gbmV3IERhdGUodGhpcy5CaXNEdCk7XHJcbiAgICBhd2FpdCB0aGlzLmluaXRpYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdGlhdGVGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuZGF0YUlucHV0ICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQpLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICB0aGlzLnNldENvbmZpZ3VyYXRpb25EYXRhKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQpKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuaHR0cC5nZXQodGhpcy5zZWFyY2hJbnB1dC5fdXJsKS50b1Byb21pc2UoKS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnNldENvbmZpZ3VyYXRpb25EYXRhKGRhdGEpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNldENvbmZpZ3VyYXRpb25EYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gZGF0YTtcclxuICAgIHRoaXMuZXhwb3J0RGF0YSA9IGRhdGEuZXhwb3J0RXhjZWw7XHJcbiAgICBpZiAoZGF0YS5leHBvcnRUeXBlTGlzdCAhPSB1bmRlZmluZWQgJiYgZGF0YS5leHBvcnRUeXBlTGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICB0aGlzLkV4cG9ydFR5cGVMaXN0ID0gZGF0YS5leHBvcnRUeXBlTGlzdDtcclxuICAgICAgdGhpcy5FeHBvcnRUeXBlID0gdGhpcy5FeHBvcnRUeXBlTGlzdFswXS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuZXhwb3J0QXNGaWxlTGlzdCAhPSB1bmRlZmluZWQgJiYgZGF0YS5leHBvcnRBc0ZpbGVMaXN0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0QXNGaWxlTGlzdCA9IGRhdGEuZXhwb3J0QXNGaWxlTGlzdDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvdW50Rm9ybSA9IGRhdGEuY29tcG9uZW50Lmxlbmd0aDtcclxuICAgIHRoaXMuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC50aXRsZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWFyY2hJbnB1dC50aXRsZSAhPSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi50aXRsZSA9IHRoaXMuc2VhcmNoSW5wdXQudGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXNlckFjY2VzcyA9IHRoaXMuZ2V0VXNlckFjY2VzcygpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvdW50Rm9ybTsgaSsrKSB7XHJcbiAgICAgIC8vaW5pIGthbGF1IGRhdGFueWEgZGkgbG9hZCBkYXJpIFVSTFxyXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uaXNGcm9tVVJMKSB7XHJcbiAgICAgICAgbGV0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgbGV0IGFycmF5Q3JpdCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgIGxldCBjcml0ZXJpYU9iamVjdCA9IG5ldyBDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgIGNyaXRlcmlhT2JqZWN0LkRhdGFUeXBlID0gXCJ0ZXh0XCI7XHJcbiAgICAgICAgY3JpdGVyaWFPYmplY3QucHJvcE5hbWUgPSBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lO1xyXG4gICAgICAgIGNyaXRlcmlhT2JqZWN0LnZhbHVlID0gdGhpcy5xdWVyeVBhcmFtW2RhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcFZhbHVlXSB8fCBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BWYWx1ZTtcclxuICAgICAgICBjcml0ZXJpYU9iamVjdC5yZXN0cmljdGlvbiA9IFwiZXFcIjtcclxuICAgICAgICBhcnJheUNyaXQucHVzaChjcml0ZXJpYU9iamVjdCk7XHJcbiAgICAgICAgcmVxdWVzdC5jcml0ZXJpYSA9IGFycmF5Q3JpdDtcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wTmFtZSAhPT0gbnVsbCAmJiBkYXRhLmNvbXBvbmVudFtpXS5jcml0ZXJpYVByb3BOYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGNvbnN0IF9jcml0UHJvcE5hbWVBcnIgPSAoZGF0YS5jb21wb25lbnRbaV0uY3JpdGVyaWFQcm9wTmFtZSBhcyBzdHJpbmcpLnNwbGl0KFwiO1wiKTtcclxuICAgICAgICAgIGNvbnN0IF9jcml0UHJvcFZhbHVlQXJyID0gKGRhdGEuY29tcG9uZW50W2ldLmNyaXRlcmlhUHJvcFZhbHVlIGFzIHN0cmluZykuc3BsaXQgKFwiO1wiKTtcclxuXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9jcml0UHJvcE5hbWVBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVxdWVzdFtfY3JpdFByb3BOYW1lQXJyW2ldXSA9IHRoaXMucXVlcnlQYXJhbVtfY3JpdFByb3BWYWx1ZUFycltpXV0gfHwgdXNlckFjY2Vzc1tfY3JpdFByb3BWYWx1ZUFycltpXV0gIHx8IF9jcml0UHJvcFZhbHVlQXJyW2ldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUGVuZ2VjZWthbiBwZW5nZ3VuYWFuIHVybCBhdGF1IHBhdGhcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0ucGF0aCAhPSB1bmRlZmluZWQgJiYgZGF0YS5jb21wb25lbnRbaV0ucGF0aCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5saXN0RW52aXJvbm1lbnRzICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0Lmxpc3RFbnZpcm9ubWVudHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aGlzLnNlYXJjaElucHV0Lmxpc3RFbnZpcm9ubWVudHMubGVuZ3RoOyB5KyspIHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uZW52aXJvbm1lbnQgPT0gdGhpcy5zZWFyY2hJbnB1dC5saXN0RW52aXJvbm1lbnRzW3ldLmVudmlyb25tZW50KSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5mdWxscGF0aCA9IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50c1t5XS51cmwgKyBkYXRhLmNvbXBvbmVudFtpXS5wYXRoO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5mdWxscGF0aCA9IGRhdGEuY29tcG9uZW50W2ldLnVybDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLmZ1bGxwYXRoID0gZGF0YS5jb21wb25lbnRbaV0udXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2xlbXBhciBvYmplY3RueWEgc2VrYWxpYW4gc2FtYSB1cmxueWEsIG5udGkgZGkgYmluZCBkaSBkYWxlbSBrYXJlbmEgbWFzYWxhaCBkaSBhc3luY255YVxyXG4gICAgICAgIC8vYmlhciB0aWFwIGZ1bmN0aW9uIGFkYSBzdGF0ZTJueWEgc2VuZGlyaVxyXG4gICAgICAgIHRoaXMucmVzb2x2ZU9iamVjdChkYXRhLmNvbXBvbmVudFtpXSwgZGF0YS5jb21wb25lbnRbaV0uZnVsbHBhdGgsIHJlcXVlc3QpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcIm51bWVyaWNcIikge1xyXG4gICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gcGFyc2VGbG9hdChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2VuJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vcGVuZ2VjZWthbiBkZGxcclxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJkcm9wZG93blwiKSB7XHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLmR0bVR5cGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uZHRtVHlwZS5pbmNsdWRlcyhcIm1vbnRoXCIpKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSAhPSB1bmRlZmluZWQgJiYgZGF0YS5jb21wb25lbnRbaV0udmFsdWUuaW5jbHVkZXMoXCJCRFwiKSkge1xyXG4gICAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gdGhpcy5zZXREZWZhdWx0VmFsdWVNb250aChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0uaXRlbXMgPSB0aGlzLnNldE1vbnRoRERMKGRhdGEuY29tcG9uZW50W2ldLmR0bVR5cGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLmR0bVR5cGUuaW5jbHVkZXMoXCJ5ZWFyXCIpKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSAhPSB1bmRlZmluZWQgJiYgZGF0YS5jb21wb25lbnRbaV0udmFsdWUuaW5jbHVkZXMoXCJCRFwiKSkge1xyXG4gICAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gdGhpcy5zZXREZWZhdWx0VmFsdWVZZWFyKGRhdGEuY29tcG9uZW50W2ldLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS5pdGVtcyA9IHRoaXMuc2V0WWVhckRETChkYXRhLmNvbXBvbmVudFtpXS5kdG1UeXBlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJkcm9wZG93blNlYXJjaFwiICYmICFkYXRhLmNvbXBvbmVudFtpXS5pc0Zyb21VUkwgJiYgZGF0YS5jb21wb25lbnRbaV0uaXRlbXM/Lmxlbmd0aCAhPSAxKSB7XHJcbiAgICAgIC8vICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLmRkc1R5cGUgPT0gdW5kZWZpbmVkIHx8IGRhdGEuY29tcG9uZW50W2ldLmRkc1R5cGUgPT0gXCJhbGxcIikge1xyXG4gICAgICAvLyAgICAgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBcImFsbFwiO1xyXG4gICAgICAvLyAgICAgZGF0YS5jb21wb25lbnRbaV0uZGVzY3IgPSBcIkFsbFwiO1xyXG4gICAgICAvLyAgIH0gZWxzZSBpZiAoZGF0YS5jb21wb25lbnRbaV0uZGRzVHlwZSA9PSBcIm9uZVwiKSB7XHJcbiAgICAgIC8vICAgICBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IFwib25lXCI7XHJcbiAgICAgIC8vICAgICBkYXRhLmNvbXBvbmVudFtpXS5kZXNjciA9IFwiU2VsZWN0IE9uZVwiO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0udHlwZSA9PSBcImRyb3Bkb3duU2VhcmNoXCIgJiYgIWRhdGEuY29tcG9uZW50W2ldLmlzRnJvbVVSTCAmJiBkYXRhLmNvbXBvbmVudFtpXS5pdGVtcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gZGF0YS5jb21wb25lbnRbaV0uaXRlbXNbMF0uS2V5O1xyXG4gICAgICAgIGRhdGEuY29tcG9uZW50W2ldLmRlc2NyID0gZGF0YS5jb21wb25lbnRbaV0uaXRlbXNbMF0uVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgIT0gXCJkcm9wZG93blNlYXJjaFwiICYmICFkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSkge1xyXG4gICAgICAgIGRhdGEuY29tcG9uZW50W2ldLnZhbHVlID0gXCJcIjtcclxuICAgICAgICBpZiAoZGF0YS5jb21wb25lbnRbaV0uZGRsVHlwZSA9PSAnYWxsJykgZGF0YS5jb21wb25lbnRbaV0udmFsdWUgPSBcImFsbFwiO1xyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5kZGxUeXBlID09ICdvbmUnKSBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IFwib25lXCI7XHJcbiAgICAgIH1cclxuICAgICAgLy9wZW5nZWNla2FuIHRhbmdnYWxcclxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnR5cGUgPT0gXCJkYXRlcGlja2VyXCIpIHtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gZGF0YS5jb21wb25lbnRbaV0ucmVhZG9ubHlcclxuXHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLmluY2x1ZGVzKFwiQkRcIikpIHtcclxuICAgICAgICAgIGxldCBidXNpbmVzc0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuQmlzRHQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBidXNpbmVzc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLkJpc0R0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBvcGVyYXRvciA9IGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLmNoYXJBdCgyKTtcclxuICAgICAgICAgIGxldCBkYXRlU2hvdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICBpZiAob3BlcmF0b3IgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgbGV0IHRlbXBNaW51cyA9IGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLnNwbGl0KFwiLVwiLCAyKTtcclxuICAgICAgICAgICAgbGV0IG51bURheSA9IHBhcnNlSW50KHRlbXBNaW51c1sxXSk7XHJcbiAgICAgICAgICAgIGJ1c2luZXNzRGF0ZS5zZXREYXRlKGJ1c2luZXNzRGF0ZS5nZXREYXRlKCkgLSBudW1EYXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAob3BlcmF0b3IgPT0gXCIrXCIpIHtcclxuICAgICAgICAgICAgbGV0IHRlbXBNaW51cyA9IGRhdGEuY29tcG9uZW50W2ldLnZhbHVlLnNwbGl0KFwiK1wiLCAyKTtcclxuICAgICAgICAgICAgbGV0IG51bURheSA9IHBhcnNlSW50KHRlbXBNaW51c1sxXSk7XHJcbiAgICAgICAgICAgIGJ1c2luZXNzRGF0ZS5zZXREYXRlKGJ1c2luZXNzRGF0ZS5nZXREYXRlKCkgKyBudW1EYXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGF0ZVNob3cgPSBidXNpbmVzc0RhdGU7XHJcbiAgICAgICAgICBsZXQgZGF0ZVRleHQgPSBmb3JtYXREYXRlKGRhdGVTaG93LCAneXl5eS1NTS1kZCcsICdlbi1VUycpXHJcbiAgICAgICAgICBkYXRhLmNvbXBvbmVudFtpXS52YWx1ZSA9IGRhdGVUZXh0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkgPSBmYWxzZSkge1xyXG4gICAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2ldLnJlc3RyaWN0aW9uICE9IHVuZGVmaW5lZCAmJiBkYXRhLmNvbXBvbmVudFtpXS5yZXN0cmljdGlvbiAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtpXS5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiR1RcIikge1xyXG4gICAgICAgICAgICAgIGxldCBtaW5EYXRlID0gbmV3IERhdGUodGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0YS5jb21wb25lbnRbaV0ubWluRGF0ZSwgJ3l5eXktTU0tZGQnKSk7XHJcbiAgICAgICAgICAgICAgbWluRGF0ZS5zZXREYXRlKG1pbkRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgICAgICAgICAgZGF0YS5jb21wb25lbnRbaV0ubWluRGF0ZSA9IG1pbkRhdGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5jb21wb25lbnRbaV0ucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkxUXCIpIHtcclxuICAgICAgICAgICAgICBsZXQgbWF4RGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGEuY29tcG9uZW50W2ldLm1heERhdGUsICd5eXl5LU1NLWRkJykpO1xyXG4gICAgICAgICAgICAgIG1heERhdGUuc2V0RGF0ZShtYXhEYXRlLmdldERhdGUoKSAtIDEpO1xyXG4gICAgICAgICAgICAgIGRhdGEuY29tcG9uZW50W2ldLm1heERhdGUgPSBtYXhEYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwidGV4dGJveFwiKSB7XHJcbiAgICAgICAgY29uc3QgaXNVcHBlcmNhc2UgPSBkYXRhLmNvbXBvbmVudFtpXS5pc1VwcGVyY2FzZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGRhdGEuY29tcG9uZW50W2ldLmlzVXBwZXJjYXNlO1xyXG4gICAgICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuYXV0b2ZpbGwoZGF0YS5jb21wb25lbnRbaV0pO1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0udmFsdWUgPSBpc1VwcGVyY2FzZSA/IF92YWx1ZS50b1VwcGVyQ2FzZSgpIDogX3ZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihkYXRhLmNvbXBvbmVudFtpXS50eXBlID09IFwiZHJvcGRvd25cIikge1xyXG4gICAgICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuYXV0b2ZpbGwoZGF0YS5jb21wb25lbnRbaV0sIGZhbHNlKTtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2ldLnZhbHVlID0gX3ZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb3VudEZvcm07IGorKykge1xyXG4gICAgICAgIGlmIChkYXRhLmNvbXBvbmVudFtqXS5pc0V2ZW50ICYmIHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbal0uaXRlbXNVcmwubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2VFdmVudChkYXRhLmNvbXBvbmVudFtqXS5pdGVtc1VybFswXS5LZXksIGRhdGEuY29tcG9uZW50W2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRhdGEuY29tcG9uZW50W2pdLnR5cGUgPT0gXCJvZmZpY2VSb2xlQ29kZXNcIiAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2pdLml0ZW1zVXJsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuU2V0Um9sZU9mZmljZUNvZGVzKGopO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgZ2V0VXNlckFjY2VzcygpIHtcclxuICAgIGNvbnN0IF91c2VyQWNjZXNzOiBzdHJpbmcgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiVXNlckFjY2Vzc1wiKTtcclxuICAgIGNvbnN0IHVzZXJBY2Nlc3MgPSBKU09OLnBhcnNlKHRoaXMuRGVjcnlwdFN0cmluZyhfdXNlckFjY2VzcywgXCJBZEluc0ZPVTEyMzQ1Njc4XCIpKTtcclxuICAgIHJldHVybiB1c2VyQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdXRvZmlsbChkYXRhOiBhbnksIGNoZWNrVmFsdWU6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBpZiAoY2hlY2tWYWx1ZSkge1xyXG4gICAgICBpZiAoZGF0YS52YWx1ZSAhPSBcIlwiKSByZXR1cm4gZGF0YS52YWx1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGF1dG9maWxsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gZGF0YS5hdXRvZmlsbDtcclxuICAgIGlmIChhdXRvZmlsbCA9PSB1bmRlZmluZWQpIHJldHVybiBkYXRhLnZhbHVlO1xyXG4gICAgaWYgKGF1dG9maWxsLnNvdXJjZSA9PSBcInBhcmFtXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbVthdXRvZmlsbC5rZXldO1xyXG4gICAgfVxyXG4gICAgaWYgKGF1dG9maWxsLnNvdXJjZSA9PSBcInVzZXJhY2Nlc3NcIikge1xyXG4gICAgICBjb25zdCB1c2VyQWNjZXNzID0gdGhpcy5nZXRVc2VyQWNjZXNzKCk7XHJcbiAgICAgIHJldHVybiB1c2VyQWNjZXNzW2F1dG9maWxsLmtleV07XHJcbiAgICB9XHJcbiAgICBpZiAoYXV0b2ZpbGwuc291cmNlID09IFwiZGljdHNcIikge1xyXG4gICAgICBpZiAoIXRoaXMuc2VhcmNoSW5wdXQuZGljdHMpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImRpY3RzIHVuZGVmaW5lZC4uLlwiKTtcclxuICAgICAgICByZXR1cm4gYXV0b2ZpbGwua2V5O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaElucHV0Py5kaWN0c1thdXRvZmlsbC5rZXldID8/IGF1dG9maWxsLmtleTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgU2V0Um9sZU9mZmljZUNvZGVzKGk6IG51bWJlcikge1xyXG4gICAgbGV0IHVzZXJBY2Nlc3M6IHN0cmluZyA9IHRoaXMuZ2V0VXNlckFjY2VzcygpO1xyXG4gICAgbGV0IHJvbGVDb2RlOiBzdHJpbmcgPSB1c2VyQWNjZXNzW1wiUm9sZUNvZGVcIl07XHJcbiAgICBsZXQgbGlzdE9mZmljZVJvbGVDb2RlczogQXJyYXk8c3RyaW5nPiA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGlzdE9mZmljZVJvbGVDb2Rlcy5wdXNoKHJvbGVDb2RlKTtcclxuICAgIGxldCBjb21wb25lbnQgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W2ldO1xyXG4gICAgbGV0IGRkbCA9IGNvbXBvbmVudC5vcHRpb25zO1xyXG4gICAgbGV0IHRleHQgPSBkZGxbZGRsLnNlbGVjdGVkSW5kZXhdLnZhbHVlLnRyaW0oKTtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2ldLml0ZW1zVXJsLmxlbmd0aCA9PSAxIHx8ICh0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2ldLmRkbFR5cGUgPT0gJ2FsbCcgJiYgdGV4dCA9PSAnYWxsJykpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0uaXRlbXNVcmwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0uaXRlbXNVcmxbaW5kZXhdO1xyXG4gICAgICAgIGxpc3RPZmZpY2VSb2xlQ29kZXMucHVzaChlbGVtZW50LktleSk7XHJcbiAgICAgICAgbGlzdE9mZmljZVJvbGVDb2Rlcy5wdXNoKHJvbGVDb2RlICsgXCItXCIgKyBlbGVtZW50LktleSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxpc3RPZmZpY2VSb2xlQ29kZXMucHVzaCh0ZXh0KTtcclxuICAgICAgbGlzdE9mZmljZVJvbGVDb2Rlcy5wdXNoKHJvbGVDb2RlICsgXCItXCIgKyB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LmludGVncmF0aW9uT2JqLnJlcXVlc3RPYmpbXCJPZmZpY2VSb2xlQ29kZXNcIl0gPSBsaXN0T2ZmaWNlUm9sZUNvZGVzO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFZhbHVlTW9udGgodmFsdWUpIHtcclxuICAgIGxldCBidXNpbmVzc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLkJ1c2luZXNzRHQpO1xyXG4gICAgbGV0IG9wZXJhdG9yID0gdmFsdWUuY2hhckF0KDIpO1xyXG4gICAgbGV0IHRlbXBWYWx1ZSA9IHZhbHVlLnNwbGl0KG9wZXJhdG9yLCAyKTtcclxuICAgIGxldCBudW1Nb250aCA9IHBhcnNlSW50KHRlbXBWYWx1ZVsxXSk7XHJcbiAgICBpZiAoIW51bU1vbnRoKSBudW1Nb250aCA9IDE7XHJcbiAgICBpZiAob3BlcmF0b3IgPT0gXCItXCIpIHtcclxuICAgICAgYnVzaW5lc3NEYXRlLnNldE1vbnRoKGJ1c2luZXNzRGF0ZS5nZXRNb250aCgpIC0gbnVtTW9udGgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3BlcmF0b3IgPT0gXCIrXCIpIHtcclxuICAgICAgYnVzaW5lc3NEYXRlLnNldE1vbnRoKGJ1c2luZXNzRGF0ZS5nZXRNb250aCgpICsgbnVtTW9udGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ1c2luZXNzRGF0ZS5nZXRNb250aCgpO1xyXG4gIH1cclxuICBzZXRNb250aERETChtb250aCkge1xyXG4gICAgaWYgKG1vbnRoID09IFwibW9udGhcIikgcmV0dXJuIHRoaXMuTGlzdE9mTW9udGguTGlzdE9mTW9udGg7XHJcbiAgICBsZXQgTGlzdE9mTW9udGg6IEFycmF5PEtleVZhbHVlVUNTZWFyY2hPYmo+ID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgZXF1YXRpb24gPSBtb250aC5tYXRjaChcIltcXFxcK11bLV18Wy1dW1xcXFwrXXxcXFxcK3wtXCIpO1xyXG4gICAgbGV0IHRvTWluOiBudW1iZXIgPSB0aGlzLkJ1c2luZXNzRHQuZ2V0TW9udGgoKTtcclxuICAgIGxldCB0b01heDogbnVtYmVyID0gdGhpcy5CdXNpbmVzc0R0LmdldE1vbnRoKCk7XHJcbiAgICBsZXQgbWluTWF4OiBudW1iZXIgPSBwYXJzZUludChtb250aC5zdWJzdHJpbmcoZXF1YXRpb24uaW5kZXggKyBlcXVhdGlvblswXS5sZW5ndGgpKTtcclxuICAgIGlmIChtaW5NYXggPj0gMTIpIHJldHVybiB0aGlzLkxpc3RPZk1vbnRoLkxpc3RPZk1vbnRoO1xyXG4gICAgaWYgKChlcXVhdGlvblswXSA9PSBcIistXCIgfHwgZXF1YXRpb25bMF0gPT0gXCItK1wiKSAmJiBtaW5NYXggPj0gNikgcmV0dXJuIHRoaXMuTGlzdE9mTW9udGguTGlzdE9mTW9udGg7XHJcbiAgICBsZXQgZGljdE9mTW9udGg6IHsgW21vbnRoOiBudW1iZXJdOiBzdHJpbmcgfSA9IHRoaXMuTGlzdE9mTW9udGguRGljdE9mTW9udGg7XHJcbiAgICBMaXN0T2ZNb250aC5wdXNoKHsga2V5OiB0b01pbiwgdmFsdWU6IGRpY3RPZk1vbnRoW3RvTWluXSB9KTtcclxuXHJcbiAgICBmb3IgKGxldCBxID0gMDsgcSA8IG1pbk1heDsgcSsrKSB7XHJcbiAgICAgIGlmIChlcXVhdGlvblswXS5pbmNsdWRlcyhcIi1cIikpIHtcclxuICAgICAgICB0b01pbi0tO1xyXG4gICAgICAgIGlmICh0b01pbiA9PSAwKSB0b01pbiA9IDEyO1xyXG4gICAgICAgIExpc3RPZk1vbnRoLnB1c2goeyBrZXk6IHRvTWluLCB2YWx1ZTogZGljdE9mTW9udGhbdG9NaW5dIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlcXVhdGlvblswXS5pbmNsdWRlcyhcIitcIikpIHtcclxuICAgICAgICB0b01heCsrO1xyXG4gICAgICAgIGlmICh0b01heCA9PSAxMykgdG9NYXggPSAxO1xyXG4gICAgICAgIExpc3RPZk1vbnRoLnB1c2goeyBrZXk6IHRvTWF4LCB2YWx1ZTogZGljdE9mTW9udGhbdG9NYXhdIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBMaXN0T2ZNb250aC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIHJldHVybiBhLmtleSAtIGIua2V5O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gTGlzdE9mTW9udGg7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWVZZWFyKHZhbHVlKSB7XHJcbiAgICBsZXQgYnVzaW5lc3NEYXRlID0gbmV3IERhdGUodGhpcy5CdXNpbmVzc0R0KTtcclxuICAgIGxldCBvcGVyYXRvciA9IHZhbHVlLmNoYXJBdCgyKTtcclxuICAgIGxldCB0ZW1wVmFsdWUgPSB2YWx1ZS5zcGxpdChvcGVyYXRvciwgMik7XHJcbiAgICBsZXQgbnVtWWVhciA9IHBhcnNlSW50KHRlbXBWYWx1ZVsxXSk7XHJcbiAgICBpZiAoIW51bVllYXIpIG51bVllYXIgPSAxO1xyXG4gICAgaWYgKG9wZXJhdG9yID09IFwiLVwiKSB7XHJcbiAgICAgIGJ1c2luZXNzRGF0ZS5zZXRGdWxsWWVhcihidXNpbmVzc0RhdGUuZ2V0RnVsbFllYXIoKSAtIG51bVllYXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3BlcmF0b3IgPT0gXCIrXCIpIHtcclxuICAgICAgYnVzaW5lc3NEYXRlLnNldEZ1bGxZZWFyKGJ1c2luZXNzRGF0ZS5nZXRGdWxsWWVhcigpICsgbnVtWWVhcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnVzaW5lc3NEYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG4gIHNldFllYXJEREwoeWVhcikge1xyXG4gICAgdGhpcy5MaXN0T2ZZZWFyID0gbmV3IEFycmF5PEtleVZhbHVlVUNTZWFyY2hPYmo+KCk7XHJcbiAgICBsZXQgZXF1YXRpb24gPSB5ZWFyLm1hdGNoKFwiW1xcXFwrXVstXXxbLV1bXFxcXCtdfFxcXFwrfC1cIik7XHJcbiAgICBsZXQgdG9NaW46IG51bWJlciA9IHRoaXMuQnVzaW5lc3NEdC5nZXRGdWxsWWVhcigpO1xyXG4gICAgbGV0IHRvTWF4OiBudW1iZXIgPSB0aGlzLkJ1c2luZXNzRHQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBtaW5NYXg6IG51bWJlciA9IHBhcnNlSW50KHllYXIuc3Vic3RyaW5nKGVxdWF0aW9uLmluZGV4ICsgZXF1YXRpb25bMF0ubGVuZ3RoKSk7XHJcbiAgICB0aGlzLkxpc3RPZlllYXIucHVzaCh7IGtleTogdGhpcy5CdXNpbmVzc0R0LmdldEZ1bGxZZWFyKCksIHZhbHVlOiB0aGlzLkJ1c2luZXNzRHQuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpIH0pO1xyXG5cclxuICAgIGZvciAobGV0IHEgPSAwOyBxIDwgbWluTWF4OyBxKyspIHtcclxuICAgICAgaWYgKGVxdWF0aW9uWzBdID09IFwiLStcIiB8fCBlcXVhdGlvblswXSA9PSBcIistXCIpIHtcclxuICAgICAgICB0b01pbi0tO1xyXG4gICAgICAgIHRvTWF4Kys7XHJcbiAgICAgICAgdGhpcy5MaXN0T2ZZZWFyLnB1c2goeyBrZXk6IHRvTWluLCB2YWx1ZTogdG9NaW4udG9TdHJpbmcoKSB9LCB7IGtleTogdG9NYXgsIHZhbHVlOiB0b01heC50b1N0cmluZygpIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGVxdWF0aW9uWzBdID09IFwiLVwiKSB7XHJcbiAgICAgICAgdG9NaW4tLTtcclxuICAgICAgICB0aGlzLkxpc3RPZlllYXIucHVzaCh7IGtleTogdG9NaW4sIHZhbHVlOiB0b01pbi50b1N0cmluZygpIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGVxdWF0aW9uWzBdID09IFwiK1wiKSB7XHJcbiAgICAgICAgdG9NYXgrKztcclxuICAgICAgICB0aGlzLkxpc3RPZlllYXIucHVzaCh7IGtleTogdG9NYXgsIHZhbHVlOiB0b01heC50b1N0cmluZygpIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLkxpc3RPZlllYXIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICByZXR1cm4gYS5rZXkgLSBiLmtleTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuTGlzdE9mWWVhcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRKU09OKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9zdEpTT04odXJsOiBzdHJpbmcsIGNyaXRlcmlhOiBhbnkgPSBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGNyaXRlcmlhKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWNrKElzRXhwb3J0RXhjZWw6IGJvb2xlYW4gPSBmYWxzZSwgRXh0RmlsZTogc3RyaW5nID0gXCJcIikge1xyXG4gICAgbGV0IGZpbHRlcmVkID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maWx0ZXIoKGl0ZW0sIGksIGFycikgPT5cclxuICAgICAgYXJyLmZpbmRJbmRleCgoeCkgPT4gKHgubmFtZSA9PT0gaXRlbS5uYW1lKSkgPT09IGkpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGZpbHRlcmVkW2ldLnR5cGUgPT0gXCJudW1lcmljXCIpIHtcclxuICAgICAgICBpZighdGhpcy5jaGVja1ZhbHVlR3RlTHRlKGZpbHRlcmVkW2ldKSkgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9yZGVyID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24ub3JkZXJieSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24ub3JkZXJieS5rZXkgIT09IFwiXCIgJiYgdGhpcy5jb25maWd1cmF0aW9uLm9yZGVyYnkudmFsdWUgIT09IFwiXCIpIHtcclxuICAgICAgICBvcmRlciA9IHtcclxuICAgICAgICAgIGtleTogdGhpcy5jb25maWd1cmF0aW9uLm9yZGVyYnkua2V5LFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlndXJhdGlvbi5vcmRlcmJ5LnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VOb3cgPSAxO1xyXG4gICAgbGV0IHJvd1BlclBhZ2UgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgaWYgKElzRXhwb3J0RXhjZWwpIHJvd1BlclBhZ2UgPSA5OTk5O1xyXG4gICAgdGhpcy5zZWFyY2godGhpcy5hcGlVcmwsIHRoaXMucGFnZU5vdywgcm93UGVyUGFnZSwgb3JkZXIsIHRydWUsIHRoaXMuYXJyQ3JpdCwgSXNFeHBvcnRFeGNlbCwgRXh0RmlsZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZXNldCgpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5yZXNldEZvcm0oe1xyXG4gICAgICBFeHBvcnRUeXBlOiB0aGlzLkV4cG9ydFR5cGVMaXN0WzBdLmtleVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCB0aGlzLmluaXRpYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VhcmNoKGFwaVVybDogc3RyaW5nLCBwYWdlTm86IG51bWJlciwgcm93UGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBhbnksIGlzQ2xpY2tTZWFyY2g6IGJvb2xlYW4sIGFkZENyaXQ6IENyaXRlcmlhT2JqW10gPSBuZXcgQXJyYXkoKSwgSXNFeHBvcnRFeGNlbDogYm9vbGVhbiA9IGZhbHNlLCBleHRGaWxlOiBzdHJpbmcgPSBcIlwiLCBpc0FkZFRvVGVtcDogYm9vbGVhbiA9IGZhbHNlLCBhZGRUb1RlbXBDcml0OiBDcml0ZXJpYU9ialtdID0gbmV3IEFycmF5KCkpIHtcclxuICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgbGV0IGFyckNyaXQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBJc1F1ZXJ5SW4gPSBmYWxzZTtcclxuICAgIGxldCBJc0JyZWFrID0gZmFsc2U7XHJcbiAgICBsZXQgYm9keUxpc3QgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBoZWFkZXJMaXN0ID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgZmlsZU5hbWU6IHN0cmluZztcclxuICAgIGxldCBib2R5RGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGRhdGFGaWxlID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgYWRkaXRpb25hbEV4cG9ydExpc3QgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCBleGNsdWRlRXhwb3J0TGlzdCA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgIGNvbnN0IG1hcHBlZENvbmZOYW1lVmFsdWUgPSB7fTtcclxuICAgICh0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50IGFzIFtdKS5mb3JFYWNoKCh4OiBhbnkpID0+IHtcclxuICAgICAgbWFwcGVkQ29uZk5hbWVWYWx1ZVt4Lm5hbWVdID0ge1xyXG4gICAgICAgIHZhbHVlOiB4LnZhbHVlLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIEluamVjdCB3aGVyZVF1ZXJ5IGZvciB3aGVyZSBjcml0ZXJpYVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQud2hlcmVWYWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWFyY2hJbnB1dC53aGVyZVZhbHVlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLnNlYXJjaElucHV0LndoZXJlVmFsdWUubGVuZ3RoOyB4KyspIHtcclxuICAgICAgICAvLyByZWFkIHZhbHVlIGJhc2VkIG9uIHNlYXJjaCBjb21wb25lbnQgdmFsdWUgLSBpZiBub3QgZm91bmQsIHdpbGwgaGFyZGNvZGVkXHJcbiAgICAgICAgY29uc3QgX3ZhbCA9IG1hcHBlZENvbmZOYW1lVmFsdWVbdGhpcy5zZWFyY2hJbnB1dC53aGVyZVZhbHVlW3hdLnZhbHVlXSA/IG1hcHBlZENvbmZOYW1lVmFsdWVbdGhpcy5zZWFyY2hJbnB1dC53aGVyZVZhbHVlW3hdLnZhbHVlXS52YWx1ZSA6IHRoaXMuc2VhcmNoSW5wdXQud2hlcmVWYWx1ZVt4XS52YWx1ZTtcclxuICAgICAgICAvLyB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmcud2hlcmVRdWVyeS5wdXNoKHRoaXMuc2VhcmNoSW5wdXQud2hlcmVWYWx1ZVt4XS52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nLndoZXJlUXVlcnkucHVzaChfdmFsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0LmZyb21WYWx1ZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ucXVlcnlzdHJpbmcuZnJvbVF1ZXJ5ID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLnNlYXJjaElucHV0LmZyb21WYWx1ZS5sZW5ndGg7IHgrKykge1xyXG4gICAgICAgIC8vIHJlYWQgdmFsdWUgYmFzZWQgb24gc2VhcmNoIGNvbXBvbmVudCB2YWx1ZSAtIGlmIG5vdCBmb3VuZCwgd2lsbCBoYXJkY29kZWRcclxuICAgICAgICBjb25zdCBfdmFsID0gbWFwcGVkQ29uZk5hbWVWYWx1ZVt0aGlzLnNlYXJjaElucHV0LmZyb21WYWx1ZVt4XS52YWx1ZV0gPyBtYXBwZWRDb25mTmFtZVZhbHVlW3RoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlW3hdLnZhbHVlXS52YWx1ZSA6IHRoaXMuc2VhcmNoSW5wdXQuZnJvbVZhbHVlW3hdLnZhbHVlO1xyXG4gICAgICAgIC8vIHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZy5mcm9tUXVlcnkucHVzaCh0aGlzLnNlYXJjaElucHV0LmZyb21WYWx1ZVt4XS52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5c3RyaW5nLmZyb21RdWVyeS5wdXNoKF92YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXF1ZXN0LnBhZ2VObyA9IHBhZ2VObztcclxuICAgIHJlcXVlc3Qucm93UGVyUGFnZSA9IHJvd1BlclBhZ2U7XHJcbiAgICByZXF1ZXN0Lm9yZGVyQnkgPSBvcmRlckJ5O1xyXG4gICAgcmVxdWVzdC5xdWVyeVN0cmluZyA9IHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeXN0cmluZztcclxuXHJcbiAgICBsZXQgZm9ybVNlcTogbnVtYmVyID0gLTE7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnRGb3JtOyBpKyspIHtcclxuICAgICAgbGV0IGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnRbaV0udHlwZSA9PSBcImRyb3Bkb3duU2VhcmNoXCIpIHtcclxuICAgICAgICBmb3JtU2VxICs9IDM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybVNlcSsrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W2Zvcm1TZXFdO1xyXG5cclxuICAgICAgLy8gLy8gcG9wdXAgbWVzc2FnZSBpZiByZXF1aXJlZFxyXG4gICAgICAvLyBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlZCcpICE9IG51bGwgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlZCcpID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgIC8vICAgbGV0IHZhbCA9IGNvbXBvbmVudC52YWx1ZS50cmltKCk7XHJcbiAgICAgIC8vICAgaWYgKHZhbCA9PSBcIlwiKSB7XHJcbiAgICAgIC8vICAgICBJc0JyZWFrID0gdHJ1ZTtcclxuICAgICAgLy8gICAgIGxldCBsYWJlbCA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJyk7XHJcbiAgICAgIC8vICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKFwiUGxlYXNlIGlucHV0IFwiICsgbGFiZWwpO1xyXG4gICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBjcml0T2JqLkRhdGFUeXBlID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJyk7XHJcbiAgICAgIGlmICghY3JpdE9iai5EYXRhVHlwZSkgY3JpdE9iai5EYXRhVHlwZSA9IFwiXCI7XHJcbiAgICAgIC8vSW5pIGtodXN1cyBrYWxhdSBkYXJpIERyb3AgRG93blxyXG4gICAgICBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgncXVlcnktaW4nKSAhPSBudWxsICYmIGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ3F1ZXJ5LWluJykgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICBJc1F1ZXJ5SW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIElzUXVlcnlJbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb21wb25lbnQudmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgIGlmIChjb21wb25lbnQubm9kZU5hbWUgPT0gJ1NFTEVDVCcpIHtcclxuICAgICAgICAgIGxldCBkZGwgPSBjb21wb25lbnQub3B0aW9ucztcclxuICAgICAgICAgIGxldCB0ZXh0ID0gZGRsW2RkbC5zZWxlY3RlZEluZGV4XS52YWx1ZS50cmltKCk7XHJcbiAgICAgICAgICBpZiAodGV4dCA9PSBcIm9uZVwiKSB7XHJcbiAgICAgICAgICAgIElzQnJlYWsgPSB0cnVlO1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKFwiUGxlYXNlIHNlbGVjdCBcIiArIGxhYmVsKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3JpdC1kYXRhdGFibGUnKSAhPSBcIlwiICYmIGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3JpdC1kYXRhdGFibGUnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmouaXNDcml0ZXJpYURhdGFUYWJsZSA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3JpdC1kYXRhdGFibGUnKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudFtpXS50eXBlID09IFwidGFza0RlZmluaXRpb25LZXlcIiB8fFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2ldLnR5cGUgPT0gXCJwcm9jZXNzS2V5XCIpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50W2ldLnR5cGUgPT0gXCJjbGFpbVwiKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnKTtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IHRleHQ7XHJcbiAgICAgICAgICAgIGNyaXRPYmoudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoIWlzQWRkVG9UZW1wKSB7XHJcbiAgICAgICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGV4dCAhPSBcImFsbFwiICYmIHRleHQgIT0gXCJvbmVcIikge1xyXG4gICAgICAgICAgICAgIC8vS2FsYXUgRGFyaSBEcm9wZG93biB1ZGFoIHBhc3RpIHBha2UgRXFcclxuICAgICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxO1xyXG4gICAgICAgICAgICAgIGlmIChjb21wb25lbnQubmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBjb21wb25lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IHRleHQ7XHJcbiAgICAgICAgICAgICAgaWYgKCFpc0FkZFRvVGVtcCkge1xyXG4gICAgICAgICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXh0ID09IFwiYWxsXCIgJiYgSXNRdWVyeUluICYmIGNvbXBvbmVudC5vcHRpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRkbExpc3QgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IGNvbXBvbmVudC5vcHRpb25zLmxlbmd0aDsgeCsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRkbExpc3QucHVzaChjb21wb25lbnQub3B0aW9uc1t4XS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChkZGxMaXN0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkluO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5uYW1lICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgY3JpdE9iai5wcm9wTmFtZSA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3JpdE9iai5saXN0VmFsdWUgPSBkZGxMaXN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FkZFRvVGVtcCkge1xyXG4gICAgICAgICAgICAgICAgICBhcnJDcml0LnB1c2goY3JpdE9iaik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy9LYWxhdSBhZGEgUGVyY2VudCBtYWthIHlhbmcgZGlwYWtlIG5udGkgYWRhbGFoIFJlc3RyaWN0aW9ucyBMaWtlXHJcbiAgICAgICAgICBpZiAoY29tcG9uZW50Lm5hbWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50Lm5hbWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjcml0T2JqLnZhbHVlID0gY29tcG9uZW50LnZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgIGlmIChjb21wb25lbnQudmFsdWUuaW5jbHVkZXMoXCIlXCIpKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uTGlrZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8va2FsYXUgY29tcG9uZW50bnlhIERhdGUsIHJlc3RyaWN0aW9uc255YSBsZ3NnIGFtYmlsIGRhcmkgcHJvcGVydHkgSlNPTm55YVxyXG4gICAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpICE9IFwiXCIgJiYgY29tcG9uZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yZXN0cmljdGlvbicpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVzdHJpY3Rpb24nKTtcclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpID09ICdudW1lcmljJykge1xyXG4gICAgICAgICAgICAgIGNyaXRPYmoudmFsdWUgPSBwYXJzZUZsb2F0KGNvbXBvbmVudC52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY3JpdE9iai5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTElLRVwiKSB7XHJcbiAgICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IFwiJVwiICsgY29tcG9uZW50LnZhbHVlLnRyaW0oKSArIFwiJVwiO1xyXG4gICAgICAgICAgICAgIGNyaXRPYmoucmVzdHJpY3Rpb24gPSBBZEluc0NvbnN0YW50LlJlc3RyaWN0aW9uTGlrZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY3JpdE9iai5yZXN0cmljdGlvbiA9IEFkSW5zQ29uc3RhbnQuUmVzdHJpY3Rpb25FcVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3JpdC1kYXRhdGFibGUnKSAhPSBcIlwiICYmIGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3JpdC1kYXRhdGFibGUnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNyaXRPYmouaXNDcml0ZXJpYURhdGFUYWJsZSA9IGNvbXBvbmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3JpdC1kYXRhdGFibGUnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXNBZGRUb1RlbXApIHtcclxuICAgICAgICAgICAgYXJyQ3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChJc0JyZWFrKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWRkQ3JpdCAhPSBudWxsICYmIGFkZENyaXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChhZGRDcml0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRDcml0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBhcnJDcml0LnB1c2goYWRkQ3JpdFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IG51bGwgfHwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaElucHV0LmFkZENyaXRJbnB1dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgYXJyQ3JpdC5wdXNoKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoSW5wdXQuYWRkQ3JpdElucHV0ICE9IG51bGwgfHwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhcnJDcml0LnB1c2godGhpcy5zZWFyY2hJbnB1dC5hZGRDcml0SW5wdXRbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzQ2xpY2tTZWFyY2gpIHtcclxuICAgICAgdGhpcy5wZXJzaXN0Q3JpdCA9IGFyckNyaXQ7XHJcbiAgICB9XHJcbiAgICByZXF1ZXN0LmNyaXRlcmlhID0gdGhpcy5wZXJzaXN0Q3JpdDtcclxuXHJcbiAgICBpZiAoaXNBZGRUb1RlbXApIHtcclxuICAgICAgdGhpcy5wZXJzaXN0QWRkVG9UZW1wQ3JpdCA9IGFkZFRvVGVtcENyaXQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICh0aGlzLnBlcnNpc3RBZGRUb1RlbXBDcml0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmVxdWVzdC5jcml0ZXJpYSA9IHJlcXVlc3QuY3JpdGVyaWEuY29uY2F0KHRoaXMucGVyc2lzdEFkZFRvVGVtcENyaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZpbHRlciBkdXBsaWNhdGUgZGF0YSBpbiBhcnJheVxyXG4gICAgcmVxdWVzdC5jcml0ZXJpYSA9IHRoaXMuZmlsdGVyRHVwbGljYXRlRGF0YShyZXF1ZXN0LmNyaXRlcmlhKVxyXG4gICAgXHJcbiAgICAvLyBmaWx0ZXIgZW1wdHkgdmFsdWUgaW4gbGlzdFZhbHVlXHJcbiAgICByZXF1ZXN0LmNyaXRlcmlhID0gdGhpcy5maWx0ZXJMaXN0VmFsdWVFbXB0eShyZXF1ZXN0LmNyaXRlcmlhKTtcclxuXHJcbiAgICByZXF1ZXN0LmludGVncmF0aW9uT2JqID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0LmlzSm9pbkV4QVBJKSB7XHJcbiAgICAgIHJlcXVlc3QuaW50ZWdyYXRpb25PYmogPSB0aGlzLnNlYXJjaElucHV0LmludGVncmF0aW9uT2JqO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNTZWFyY2ggPSB0cnVlOyBcclxuXHJcbiAgICBcclxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dCAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHRoaXMuc2VhcmNoSW5wdXQuZGF0YUlucHV0KS5sZW5ndGggIT09IDApIHtcclxuICAgICAgYm9keUxpc3QgPSB0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dC5ib2R5TGlzdDtcclxuICAgICAgZmlsZU5hbWUgPSB0aGlzLnNlYXJjaElucHV0LmRhdGFJbnB1dC50aXRsZTtcclxuICAgICAgaGVhZGVyTGlzdCA9IHRoaXMuc2VhcmNoSW5wdXQuZGF0YUlucHV0LmhlYWRlckxpc3Q7XHJcbiAgICAgIGFkZGl0aW9uYWxFeHBvcnRMaXN0ID0gdGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQuYWRkaXRpb25hbEV4cG9ydExpc3Q7XHJcbiAgICAgIGV4Y2x1ZGVFeHBvcnRMaXN0ID0gdGhpcy5zZWFyY2hJbnB1dC5kYXRhSW5wdXQuZXhjbHVkZUV4cG9ydExpc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLmh0dHAuZ2V0KHRoaXMuc2VhcmNoSW5wdXQuX3VybCkudG9Qcm9taXNlKCkudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgYm9keUxpc3QgPSBkYXRhLmJvZHlMaXN0XHJcbiAgICAgICAgZmlsZU5hbWUgPSBkYXRhLnRpdGxlXHJcbiAgICAgICAgaGVhZGVyTGlzdCA9IGRhdGEuaGVhZGVyTGlzdFxyXG4gICAgICAgIGFkZGl0aW9uYWxFeHBvcnRMaXN0ID0gZGF0YS5hZGRpdGlvbmFsRXhwb3J0TGlzdDtcclxuICAgICAgICBleGNsdWRlRXhwb3J0TGlzdCA9IGRhdGEuZXhjbHVkZUV4cG9ydExpc3Q7XHJcbiAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGlVcmwsIHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKElzRXhwb3J0RXhjZWwpIHtcclxuICAgICAgICBib2R5RGF0YSA9IHJlc3BvbnNlW1wiRGF0YVwiXTtcclxuICAgICAgICBbaGVhZGVyTGlzdCwgYm9keUxpc3RdID0gdGhpcy5jaGVja0FkZGl0aW9uYWxFeHBvcnRMaXN0KGhlYWRlckxpc3QsIGJvZHlMaXN0LCBhZGRpdGlvbmFsRXhwb3J0TGlzdCk7XHJcbiAgICAgICAgW2hlYWRlckxpc3QsIGJvZHlMaXN0XSA9IHRoaXMuY2hlY2tFeGNsdWRlRXhwb3J0TGlzdChoZWFkZXJMaXN0LCBib2R5TGlzdCwgZXhjbHVkZUV4cG9ydExpc3QpO1xyXG4gICAgICAgIGRhdGFGaWxlID0gdGhpcy5tYXBEYXRhRmlsZShib2R5TGlzdCwgYm9keURhdGEsIGhlYWRlckxpc3QpO1xyXG4gICAgICAgIGlmIChleHRGaWxlID09PSBFWFBPUlRfREFUQV9UWVBFUy5leGNlbCkge1xyXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnRGaWxlQXNFeGNlbChkYXRhRmlsZSwgZmlsZU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0RmlsZSA9PT0gRVhQT1JUX0RBVEFfVFlQRVMuanNvbikge1xyXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnRGaWxlQXNKc29uKGRhdGFGaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRGaWxlID09PSBFWFBPUlRfREFUQV9UWVBFUy5jc3YpIHtcclxuICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZVNlcnZpY2UuZXhwb3J0RmlsZUFzQ3N2KGRhdGFGaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy9oYW5kbGUgaWYgcmVzcG9uc2UgZGF0YSBpcyBudWxsXHJcbiAgICAgIGlmKHJlc3BvbnNlW1wiRGF0YVwiXSA9PT0gbnVsbCl7XHJcbiAgICAgICAgIHJlc3BvbnNlW1wiRGF0YVwiXSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBxcnlQYWdpbmcgPSB7XHJcbiAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlLFxyXG4gICAgICAgIHBhZ2VOb3c6IHBhZ2VOb1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHFyeVBhZ2luZyk7XHJcbiAgICAgIHRoaXMucmVzdWx0LmVtaXQocXJ5UGFnaW5nKTtcclxuICAgICAgdGhpcy5yZXFHZXRBbGxEYXRhLmVtaXQocmVxdWVzdCk7XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJEdXBsaWNhdGVEYXRhKGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IF92YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgcmV0dXJuIGluZGV4ID09PSBkYXRhLmZpbmRJbmRleChvYmogPT4ge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopID09PSBfdmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxpc3RWYWx1ZUVtcHR5KGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLmZpbHRlcigodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLmxpc3RWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdmFsdWU7XHJcbiAgICAgIGlmICh2YWx1ZS5saXN0VmFsdWUubGVuZ3RoID09PSAwICkgcmV0dXJuO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrVmFsdWVHdGVMdGUoY29tcG9uZW50KXtcclxuICAgIC8vY2VrIHlnIHBha2FpIHJlc3RyaWN0aW9uIGd0ZS9sdGUvZ3QvbHRcclxuICAgIGxldCBNaW5Db21wb25lbnQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkdURVwiKSk7XHJcbiAgICBpZighTWluQ29tcG9uZW50KXtcclxuICAgICAgTWluQ29tcG9uZW50ID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maW5kKHggPT4geC5uYW1lID09IGNvbXBvbmVudC5uYW1lICYmICh4LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSlcclxuICAgIH1cclxuXHJcbiAgICBsZXQgTWF4Q29tcG9uZW50ID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maW5kKHggPT4geC5uYW1lID09IGNvbXBvbmVudC5uYW1lICYmICh4LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJMVEVcIikpO1xyXG4gICAgaWYoIU1heENvbXBvbmVudCl7XHJcbiAgICAgIE1heENvbXBvbmVudCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQuZmluZCh4ID0+IHgubmFtZSA9PSBjb21wb25lbnQubmFtZSAmJiAoeC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRcIikpXHJcbiAgICB9XHJcblxyXG4gICAgaWYoTWluQ29tcG9uZW50ICYmIE1heENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWluQ29tcG9uZW50LmlkXS52YWx1ZUFzTnVtYmVyO1xyXG4gICAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W01heENvbXBvbmVudC5pZF0udmFsdWVBc051bWJlcjtcclxuICAgICAgaWYobWluVmFsdWUgPiBtYXhWYWx1ZSl7XHJcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyhNaW5Db21wb25lbnQubGFiZWwgKyBcIiBtdXN0IGJlIGxlc3MgdGhhbiBcIiArIE1heENvbXBvbmVudC5sYWJlbCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBtYXBEYXRhRmlsZShib2R5TGlzdERhdGEsIGJvZHlEYXRhQXJyLCBoZWFkZXJMaXN0RGF0YSkge1xyXG4gICAgbGV0IGRhdGFFeGNlbCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGJvZHlEYXRhVGVtcCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IGhlYWRlckRhdGFUZW1wID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib2R5TGlzdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgW2lzTmVlZFRvUHVzaCwgYm9keURhdGEsIGhlYWRlckRhdGFdID0gdGhpcy5jaGVja05lZWREYXRhVG9FeHBvcnQoYm9keUxpc3REYXRhLCBoZWFkZXJMaXN0RGF0YSwgaSk7XHJcbiAgICAgIGlmKGlzTmVlZFRvUHVzaCl7XHJcbiAgICAgICAgYm9keURhdGFUZW1wLnB1c2goYm9keURhdGEpO1xyXG4gICAgICAgIGhlYWRlckRhdGFUZW1wLnB1c2goaGVhZGVyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvZHlEYXRhQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaW5hbERhdGEgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYm9keURhdGFBcnJbaV0pKSB7XHJcbiAgICAgICAgICBjb25zdCBfaWR4ID0gYm9keURhdGFUZW1wLmluZGV4T2Yoa2V5KVxyXG4gICAgICAgICAgaWYgKF9pZHggIT0gLTEpIHtcclxuICAgICAgICAgICAgICBmaW5hbERhdGFbaGVhZGVyRGF0YVRlbXBbX2lkeF1dID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGF0YUV4Y2VsLnB1c2goZmluYWxEYXRhKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGFFeGNlbDtcclxuICB9XHJcblxyXG4gIGNoZWNrQWRkaXRpb25hbEV4cG9ydExpc3QoaGVhZGVyTGlzdERhdGEsIGJvZHlMaXN0RGF0YSwgYWRkaXRpb25hbEV4cG9ydExpc3QpIHtcclxuICAgIGlmIChhZGRpdGlvbmFsRXhwb3J0TGlzdCA9PSB1bmRlZmluZWQpIHJldHVybiBbaGVhZGVyTGlzdERhdGEsIGJvZHlMaXN0RGF0YV07XHJcbiAgICBpZiAoYWRkaXRpb25hbEV4cG9ydExpc3QubGVuZ3RoID09IDApIHJldHVybiBbaGVhZGVyTGlzdERhdGEsIGJvZHlMaXN0RGF0YV07XHJcblxyXG4gICAgY29uc3QgX2hlYWRlckxpc3QgPSBbLi4uaGVhZGVyTGlzdERhdGFdO1xyXG4gICAgY29uc3QgX2JvZHlMaXN0ID0gWy4uLmJvZHlMaXN0RGF0YV07XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRpdGlvbmFsRXhwb3J0TGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBfaGVhZGVyTGlzdC5wdXNoKHtsYWJlbDogYWRkaXRpb25hbEV4cG9ydExpc3RbaV0ubGFiZWx9KTtcclxuICAgICAgX2JvZHlMaXN0LnB1c2goe3Byb3BlcnR5OiBhZGRpdGlvbmFsRXhwb3J0TGlzdFtpXS5wcm9wZXJ0eX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbX2hlYWRlckxpc3QsIF9ib2R5TGlzdF07XHJcbiAgfVxyXG5cclxuICBjaGVja0V4Y2x1ZGVFeHBvcnRMaXN0KGhlYWRlckxpc3REYXRhLCBib2R5TGlzdERhdGEsIGV4Y2x1ZGVFeHBvcnRMaXN0KSB7XHJcbiAgICBpZiAoZXhjbHVkZUV4cG9ydExpc3QgPT0gdW5kZWZpbmVkKSByZXR1cm4gW2hlYWRlckxpc3REYXRhLCBib2R5TGlzdERhdGFdO1xyXG4gICAgaWYgKGV4Y2x1ZGVFeHBvcnRMaXN0Lmxlbmd0aCA9PSAwKSByZXR1cm4gW2hlYWRlckxpc3REYXRhLCBib2R5TGlzdERhdGFdO1xyXG5cclxuICAgIGNvbnN0IF9oZWFkZXJMaXN0ID0gWy4uLmhlYWRlckxpc3REYXRhXTtcclxuICAgIGNvbnN0IF9ib2R5TGlzdCA9IFsuLi5ib2R5TGlzdERhdGFdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhjbHVkZUV4cG9ydExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGluZGV4ID0gX2JvZHlMaXN0LmZpbmRJbmRleCgoZWxlbWVudCkgPT4gZWxlbWVudC5wcm9wZXJ0eSA9PSBleGNsdWRlRXhwb3J0TGlzdFtpXS5wcm9wZXJ0eSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICBfaGVhZGVyTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgX2JvZHlMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbX2hlYWRlckxpc3QsIF9ib2R5TGlzdF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrTmVlZERhdGFUb0V4cG9ydChib2R5TGlzdERhdGE6IEFycmF5PGFueT4sIGhlYWRlckxpc3REYXRhOiBBcnJheTxhbnk+LCBpZHg6IG51bWJlcikge1xyXG4gICAgLy8gYWRkIGpzb24gY2hlY2tlciBmb3IgZGF0YSB0byBleHBvcnQgaGVyZVxyXG4gICAgaWYgKGJvZHlMaXN0RGF0YVtpZHhdWyd0eXBlJ10gIT0gJ2FjdGlvbicpIHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIGJvZHlMaXN0RGF0YVtpZHhdWydwcm9wZXJ0eSddLFxyXG4gICAgICAgIGhlYWRlckxpc3REYXRhW2lkeF1bJ2xhYmVsJ11cclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIGlmIChib2R5TGlzdERhdGFbaWR4XVsndHlwZSddID09ICdhY3Rpb24nICYmIGJvZHlMaXN0RGF0YVtpZHhdWydhY3Rpb24nXVswXVsndHlwZSddID09ICdzd2l0Y2gnICYmIGJvZHlMaXN0RGF0YVtpZHhdWydhY3Rpb24nXVswXVsnY2FzZSddWzBdWydyZXN1bHQnXVsndHlwZSddID09ICdsaW5rJykge1xyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgYm9keUxpc3REYXRhW2lkeF1bJ2FjdGlvbiddWzBdWydjYXNlJ11bMF1bJ3Jlc3VsdCddWydwcm9wZXJ0eSddLFxyXG4gICAgICAgIGhlYWRlckxpc3REYXRhW2lkeF1bJ2xhYmVsJ11cclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIHJldHVybiBbZmFsc2UsIFtdLCBbXV07XHJcbiAgfVxyXG5cclxuICBHZW5lcmF0ZVJlcG9ydChlbmppRm9ybTogTmdGb3JtKSB7XHJcbiAgICBlbmppRm9ybS5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmKCFlbmppRm9ybS5mb3JtLnZhbGlkKSByZXR1cm47XHJcbiAgICB0aGlzLmdlblJwdC5lbWl0KHsgRXhwb3J0VHlwZTogdGhpcy5FeHBvcnRUeXBlLCBFbFJlZjogdGhpcy5teUZvcm0gfSk7XHJcbiAgfVxyXG5cclxuICBsZXNzVGhhbkZvdXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb3VudEZvcm0gPiAzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc29sdmVPYmplY3Qob2JqOiBhbnksIHVybDogc3RyaW5nLCBjcml0OiBSZXF1ZXN0Q3JpdGVyaWFPYmogPSBudWxsKSB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLnBvc3RKU09OKHVybCwgY3JpdCk7XHJcbiAgICB2YWwuc3Vic2NyaWJlKHRlbXBEYXRhID0+IHtcclxuICAgICAgb2JqLml0ZW1zVXJsID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIG9iai5pdGVtc1VybCA9IHRlbXBEYXRhLlJldHVybk9iamVjdDtcclxuXHJcbiAgICAgIGlmIChvYmouZXhjbHVkZSAhPSB1bmRlZmluZWQgJiYgb2JqLmV4Y2x1ZGUgIT0gXCJcIikge1xyXG4gICAgICAgIG9iai5pdGVtc1VybCA9IG9iai5pdGVtc1VybC5maWx0ZXIoKHZhbHVlKSA9PiAhb2JqLmV4Y2x1ZGUuaW5jbHVkZXModmFsdWUuS2V5KSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvYmoudHlwZSA9PSBcImRyb3Bkb3duU2VhcmNoXCIgJiYgb2JqLml0ZW1zVXJsLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgb2JqLnZhbHVlID0gb2JqLml0ZW1zVXJsWzBdLktleTtcclxuICAgICAgICBvYmouZGVzY3IgPSBvYmouaXRlbXNVcmxbMF0uVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9iai5hZmZlY3RlZEZpbHRlciAmJiBvYmouaXRlbXNVcmwubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlRXZlbnQob2JqLml0ZW1zVXJsWzBdLktleSwgb2JqKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Ub0RlY2ltYWwoZWxlbWVudDogYW55KSB7XHJcbiAgICBlbGVtZW50LnRhcmdldC52YWx1ZSA9IHBhcnNlRmxvYXQoZWxlbWVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRBc0ZpbGUoZXh0RmlsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaENsaWNrKHRydWUsIGV4dEZpbGUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VFdmVudChvcHRWYWx1ZSwgYWZGaWx0ZXIpIHtcclxuICAgIGxldCBqc29uQ29tcCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQ7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZkZpbHRlci5hZmZlY3RlZEZpbHRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGpzb25Db21wLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGpzb25Db21wW2pdLm5hbWUgPT0gYWZGaWx0ZXIuYWZmZWN0ZWRGaWx0ZXJbaV0pIHtcclxuICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3RDcml0ZXJpYU9iaigpO1xyXG4gICAgICAgICAgbGV0IGFycmF5Q3JpdCA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSAhPSBcImFsbFwiICYmIG9wdFZhbHVlICE9IFwib25lXCIpIHtcclxuICAgICAgICAgICAgbGV0IGNyaXRPYmogPSBuZXcgQ3JpdGVyaWFPYmooKTtcclxuICAgICAgICAgICAgY3JpdE9iai5EYXRhVHlwZSA9IGFmRmlsdGVyLmRhdGF0eXBlO1xyXG4gICAgICAgICAgICBpZiAoYWZGaWx0ZXIuZmlsdGVyUHJvcE5hbWUgIT0gdW5kZWZpbmVkIHx8IGFmRmlsdGVyLmZpbHRlclByb3BOYW1lICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICByZXF1ZXN0W2FmRmlsdGVyLmZpbHRlclByb3BOYW1lXSA9IG9wdFZhbHVlO1xyXG4gICAgICAgICAgICAgIGNyaXRPYmoucHJvcE5hbWUgPSBhZkZpbHRlci5maWx0ZXJQcm9wTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjcml0T2JqLnByb3BOYW1lID0gYWZGaWx0ZXIubmFtZTtcclxuICAgICAgICAgICAgICByZXF1ZXN0W2FmRmlsdGVyLm5hbWVdID0gb3B0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3JpdE9iai52YWx1ZSA9IG9wdFZhbHVlO1xyXG4gICAgICAgICAgICBjcml0T2JqLnJlc3RyaWN0aW9uID0gQWRJbnNDb25zdGFudC5SZXN0cmljdGlvbkVxO1xyXG4gICAgICAgICAgICBhcnJheUNyaXQucHVzaChjcml0T2JqKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSA9PSBcImFsbFwiKSB7XHJcbiAgICAgICAgICAgIGxldCBjcml0T2JqID0gbmV3IENyaXRlcmlhT2JqKCk7XHJcbiAgICAgICAgICAgIGFycmF5Q3JpdC5wdXNoKGNyaXRPYmopO1xyXG4gICAgICAgICAgICBqc29uQ29tcFtqXS52YWx1ZSA9IFwiYWxsXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXF1ZXN0LmNyaXRlcmlhID0gYXJyYXlDcml0O1xyXG4gICAgICAgICAgaWYgKGpzb25Db21wW2pdLnBhdGggIT0gdW5kZWZpbmVkICYmIGpzb25Db21wW2pdLnBhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5saXN0RW52aXJvbm1lbnRzICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaElucHV0Lmxpc3RFbnZpcm9ubWVudHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50cy5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGpzb25Db21wW2pdLmVudmlyb25tZW50ID09IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50c1t5XS5lbnZpcm9ubWVudCkge1xyXG4gICAgICAgICAgICAgICAgICBqc29uQ29tcFtqXS5mdWxscGF0aCA9IHRoaXMuc2VhcmNoSW5wdXQubGlzdEVudmlyb25tZW50c1t5XS51cmwgKyBqc29uQ29tcFtqXS5wYXRoO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAganNvbkNvbXBbal0uZnVsbHBhdGggPSBqc29uQ29tcFtqXS51cmw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBqc29uQ29tcFtqXS5mdWxscGF0aCA9IGpzb25Db21wW2pdLnVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVzb2x2ZU9iamVjdChqc29uQ29tcFtqXSwganNvbkNvbXBbal0uZnVsbHBhdGgsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgU2V0UHJvY2Vzc0tleShpZHg6IG51bWJlciwgd2ZLZXlGaWx0ZXI6IHN0cmluZykge1xyXG4gICAgbGV0IGNvbXBvbmVudCA9IHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbaWR4XTtcclxuICAgIGxldCBkZGwgPSBjb21wb25lbnQub3B0aW9ucztcclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSBkZGxbZGRsLnNlbGVjdGVkSW5kZXhdLnZhbHVlLnRyaW0oKTtcclxuICAgIGxldCBsaXN0VmFsdWUgPSB0ZXh0LnNwbGl0KCc7Jyk7XHJcbiAgICBsZXQgbGlzdFdmS2V5ID0gd2ZLZXlGaWx0ZXIuc3BsaXQoJzsnKTtcclxuICAgIFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0VmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5pbnRlZ3JhdGlvbk9iai5yZXF1ZXN0T2JqW2xpc3RXZktleVtpXV0gPSBsaXN0VmFsdWVbaV07XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHN3aXRjaENhc2UoY29uZExpc3QpIHtcclxuICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRMaXN0LmNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGlkeCA9IHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWUuZmluZEluZGV4KHggPT4geC5wcm9wZXJ0eSA9PSBjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5KTtcclxuICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJFUVwiKSB7XHJcbiAgICAgICAgaWYgKCFjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlcikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA9PSBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VybmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlcm5hbWVcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlID09IHVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJORVFcIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlICE9IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHVzZXJuYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJVc2VybmFtZVwiKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnN3aXRjaFZhbHVlW2lkeF0udmFsdWUgIT0gdXNlcm5hbWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdUXCIpIHtcclxuICAgICAgICBpZiAoIWNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlID4gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgdXNlcm5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJuYW1lXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA+IHVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJHVEVcIikge1xyXG4gICAgICAgIGlmICghY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnN3aXRjaFZhbHVlW2lkeF0udmFsdWUgPj0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgdXNlcm5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJuYW1lXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA+PSB1c2VybmFtZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRcIikge1xyXG4gICAgICAgIGlmICghY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0LnN3aXRjaFZhbHVlW2lkeF0udmFsdWUgPCBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VybmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlcm5hbWVcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlIDwgdXNlcm5hbWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxURVwiKSB7XHJcbiAgICAgICAgaWYgKCFjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlcikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQuc3dpdGNoVmFsdWVbaWR4XS52YWx1ZSA8PSBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB1c2VybmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlcm5hbWVcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5zd2l0Y2hWYWx1ZVtpZHhdLnZhbHVlIDw9IHVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZGl0aW9uO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgRGVjcnlwdFN0cmluZyhjaGlwcGVyVGV4dDogc3RyaW5nLCBjaGlwcGVyS2V5OiBzdHJpbmcpIHtcclxuICAgIGlmIChcclxuICAgICAgY2hpcHBlcktleSA9PSB1bmRlZmluZWQgfHwgY2hpcHBlcktleS50cmltKCkgPT0gJycgfHxcclxuICAgICAgY2hpcHBlclRleHQgPT0gdW5kZWZpbmVkIHx8IGNoaXBwZXJUZXh0LnRyaW0oKSA9PSAnJ1xyXG4gICAgKSByZXR1cm4gY2hpcHBlclRleHQ7XHJcbiAgICBsZXQgY2hpcHBlcktleUFyciA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGNoaXBwZXJLZXkpO1xyXG4gICAgbGV0IGl2ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDBdKTtcclxuICAgIGxldCBkZWNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChjaGlwcGVyVGV4dCwgY2hpcHBlcktleUFyciwgeyBpdjogaXYgfSk7XHJcbiAgICBsZXQgcGxhaW5UZXh0ID0gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICAgIHJldHVybiBwbGFpblRleHQ7XHJcbiAgfVxyXG5cclxuICBjaGVja0lucHV0RGF0ZShjb21wb25lbnQ6IGFueSkge1xyXG4gICAgbGV0IG1pbkRhdGVWYWw7XHJcbiAgICBsZXQgbWF4RGF0ZVZhbDtcclxuICAgIGxldCBsYWJlbDtcclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgIGxldCBNaW5Db21wb25lbnQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkdURVwiKSkgPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWd1cmF0aW9uLmNvbXBvbmVudC5maW5kKHggPT4geC5uYW1lID09IGNvbXBvbmVudC5uYW1lICYmICh4LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSkgOiB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkdURVwiKSk7XHJcbiAgICBpZiAoTWluQ29tcG9uZW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBtaW5EYXRlVmFsID0gdGhpcy5teUZvcm0ubmF0aXZlRWxlbWVudFtNaW5Db21wb25lbnQuaWRdLm1pbiA9PSBcIlwiID8gbnVsbCA6IG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWluQ29tcG9uZW50LmlkXS5taW4pO1xyXG4gICAgICBsYWJlbCA9IE1pbkNvbXBvbmVudC5sYWJlbC5zcGxpdChcIj5cIiwgMik7XHJcbiAgICAgIGlmIChtaW5EYXRlVmFsICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoTWluQ29tcG9uZW50LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJHVFwiKSB7XHJcbiAgICAgICAgICBtaW5EYXRlVmFsLnNldERhdGUobWluRGF0ZVZhbC5nZXREYXRlKCkgLSAxKTtcclxuICAgICAgICAgIGVycm9yTWVzc2FnZS5wdXNoKFwiIG11c3QgYmUgZ3JlYXRlciB0aGFuIFwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE1pbkNvbXBvbmVudC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiR1RFXCIpIHtcclxuICAgICAgICAgIGVycm9yTWVzc2FnZS5wdXNoKFwiIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFscyB0byBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IE1heENvbXBvbmVudCA9IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQuZmluZCh4ID0+IHgubmFtZSA9PSBjb21wb25lbnQubmFtZSAmJiAoeC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRFXCIpKSA9PSB1bmRlZmluZWQgPyB0aGlzLmNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmZpbmQoeCA9PiB4Lm5hbWUgPT0gY29tcG9uZW50Lm5hbWUgJiYgKHgucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkxUXCIpKSA6IHRoaXMuY29uZmlndXJhdGlvbi5jb21wb25lbnQuZmluZCh4ID0+IHgubmFtZSA9PSBjb21wb25lbnQubmFtZSAmJiAoeC5yZXN0cmljdGlvbi50b1VwcGVyQ2FzZSgpID09IFwiTFRFXCIpKTtcclxuICAgIGlmIChNYXhDb21wb25lbnQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG1heERhdGVWYWwgPSB0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W01heENvbXBvbmVudC5pZF0ubWF4ID09IFwiXCIgPyBudWxsIDogbmV3IERhdGUodGhpcy5teUZvcm0ubmF0aXZlRWxlbWVudFtNYXhDb21wb25lbnQuaWRdLm1heCk7XHJcbiAgICAgIGxhYmVsID0gTWF4Q29tcG9uZW50LmxhYmVsLnNwbGl0KFwiPFwiLCAyKTtcclxuICAgICAgaWYgKG1heERhdGVWYWwgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChNYXhDb21wb25lbnQucmVzdHJpY3Rpb24udG9VcHBlckNhc2UoKSA9PSBcIkxUXCIpIHtcclxuICAgICAgICAgIG1heERhdGVWYWwuc2V0RGF0ZShtYXhEYXRlVmFsLmdldERhdGUoKSArIDEpO1xyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlLnB1c2goXCIgbXVzdCBiZSBsZXNzIHRoYW4gXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTWF4Q29tcG9uZW50LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT0gXCJMVEVcIikge1xyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlLnB1c2goXCIgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWxzIHRvIFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobWluRGF0ZVZhbCAhPSBudWxsICYmIG1heERhdGVWYWwgPT0gbnVsbCAmJiBuZXcgRGF0ZSh0aGlzLm15Rm9ybS5uYXRpdmVFbGVtZW50W01pbkNvbXBvbmVudC5pZF0udmFsdWUpIDwgbWluRGF0ZVZhbCkge1xyXG4gICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKGxhYmVsWzBdICsgZXJyb3JNZXNzYWdlWzBdICsgZm9ybWF0RGF0ZShtaW5EYXRlVmFsLCAnZGQgTU1NTSB5eXl5JywgJ2VuLVVTJykgKyBcIi5cIilcclxuICAgICAgdGhpcy5kYXRlV3JvbmcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChtYXhEYXRlVmFsICE9IG51bGwgJiYgbWluRGF0ZVZhbCA9PSBudWxsICYmIG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWF4Q29tcG9uZW50LmlkXS52YWx1ZSkgPiBtYXhEYXRlVmFsKSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcobGFiZWxbMF0gKyBlcnJvck1lc3NhZ2VbMF0gKyBmb3JtYXREYXRlKG1heERhdGVWYWwsICdkZCBNTU1NIHl5eXknLCAnZW4tVVMnKSArIFwiLlwiKVxyXG4gICAgICB0aGlzLmRhdGVXcm9uZyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1pbkRhdGVWYWwgIT0gbnVsbCAmJiBtYXhEYXRlVmFsICE9IG51bGwpIHtcclxuICAgICAgaWYgKG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWF4Q29tcG9uZW50LmlkXS52YWx1ZSkgPiBtYXhEYXRlVmFsIHx8IG5ldyBEYXRlKHRoaXMubXlGb3JtLm5hdGl2ZUVsZW1lbnRbTWluQ29tcG9uZW50LmlkXS52YWx1ZSkgPCBtaW5EYXRlVmFsKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyhsYWJlbFswXSArIGVycm9yTWVzc2FnZVswXSArIGZvcm1hdERhdGUobWluRGF0ZVZhbCwgJ2RkIE1NTU0geXl5eScsICdlbi1VUycpICsgXCIgYW5kXCIgKyBlcnJvck1lc3NhZ2VbMV0gKyBmb3JtYXREYXRlKG1heERhdGVWYWwsICdkZCBNTU1NIHl5eXknLCAnZW4tVVMnKSArIFwiLlwiKVxyXG4gICAgICAgIHRoaXMuZGF0ZVdyb25nID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGVXcm9uZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVXcm9uZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRPcHRpb24oaXRlbTogeyBLZXk6IHN0cmluZywgVmFsdWU6IHN0cmluZyB9LCBjcml0OiBhbnkpIHtcclxuICAgIGNyaXQuZGVzY3IgPSBpdGVtLlZhbHVlO1xyXG4gICAgY3JpdC5pc0xpc3RIaWRlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIE9uRm9jdXNDdXJyKGV2OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gXCJcIiAmJiB2YWx1ZSAhPT0gMCAmJiB2YWx1ZSAhPT0gXCIwXCIpIHJldHVybjtcclxuICAgIGV2LnRhcmdldC52YWx1ZSA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICBWYWxpZGF0ZURlZmF1bHRWYWx1ZShpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICBpZiAoaXRlbVZhbHVlICE9PSBcIlwiICYmIGl0ZW1WYWx1ZSAhPT0gMCAmJiBpdGVtVmFsdWUgIT09IFwiMFwiKSByZXR1cm47XHJcbiAgICBjb25zdCBfZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuZy1yZWZsZWN0LW5hbWU9XCIke2l0ZW0ubmFtZX1cIl1gKTtcclxuICAgIGlmIChfZWwgPT09IG51bGwpIHJldHVybjtcclxuXHJcbiAgICBsZXQgdmFsID0gdGhpcy5nZW5lcmF0ZUN1cnJGb2NFbFZhbHVlKGl0ZW0pO1xyXG4gICAgX2VsW1widmFsdWVcIl0gPSB2YWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlQ3VyckZvY0VsVmFsdWUoaXRlbTogYW55KSB7XHJcbiAgICBsZXQgdmFsID0gXCIwXCI7XHJcbiAgICBjb25zdCBwcmVjaXNpb24gPSBpdGVtPy5wcmVjaXNpb24gfHwgMjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlY2lzaW9uOyBpKyspIHtcclxuICAgICAgaWYgKGkgPT09IDApIHZhbCArPSBcIi5cIjtcclxuICAgICAgdmFsICs9IFwiMFwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcbn1cclxuIiwiPCEtLSBCYXNpYyBmb3JtIGxheW91dCBzZWN0aW9uIHN0YXJ0IC0tPlxyXG48c2VjdGlvbiBpZD1cImhvcml6b250YWwtZm9ybS1sYXlvdXRzXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxlZnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGwtMyBtYi0yIG10LTJcIiAqbmdJZj1cImNvbmZpZ3VyYXRpb24/LnRpdGxlICE9IHVuZGVmaW5lZCAmJiBjb25maWd1cmF0aW9uPy50aXRsZSAhPSAnJ1wiPlxyXG4gICAgICAgICAgPGg0IGNsYXNzPVwiY2FyZC10aXRsZSB1Y1NlYXJjaC10aXRsZVwiIHRyYW5zbGF0ZT57e2NvbmZpZ3VyYXRpb24udGl0bGV9fTwvaDQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTNcIj5cclxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtIGZvcm0taG9yaXpvbnRhbFwiIGlkPVwiZm9ybVNlYXJjaFwiICNmb3JtSWRTZWFyY2ggI2VuamlGb3JtPVwibmdGb3JtXCJcclxuICAgICAgICAgICAgICAobmdTdWJtaXQpPVwiZW5qaUZvcm0udmFsaWQgJiYgc2VhcmNoQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvcm0tc2VjdGlvbiBmb250LXdlaWdodC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImNoYW5nZVN0YXRlKClcIiBjbGFzcz1cImJ0biBuby1wYWRkaW5nIGN1cnNvci1wb2ludGVyIGZsaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhXCIgc3R5bGU9XCJmb250LXNpemU6IDE1cHg7IG1hcmdpbjogMHB4IDBweCA1cHggLTE1cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzSGlkZGVuID8gJ2ZhLWNoZXZyb24tcmlnaHQnIDogJ2ZhLWNoZXZyb24tZG93bidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlndXJhdGlvbj8uc2VjdGlvblRpdGxlICE9IHVuZGVmaW5lZCAmJiBjb25maWd1cmF0aW9uPy5zZWN0aW9uVGl0bGUgIT0gJyc7IHRoZW4gaW5wdXRTZWN0aW9uVGl0bGUgZWxzZSBkZWZhdWx0U2VjdGlvblRpdGxlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2lucHV0U2VjdGlvblRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Y29uZmlndXJhdGlvbj8uc2VjdGlvblRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VjdGlvblRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIFBhZ2luZ1xyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW5pIERpZ3VuYWthbiB1bnR1ayBHZW5lcmF0ZSBEeW5hbWljIENvbXBvbmVudCAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gW2hpZGRlbl09XCJpc0hpZGRlblwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWFjdGl2ZVwiIFtAY2hhbmdlRGl2U2l6ZV09Y3VycmVudFN0YXRlPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgY29uZmlndXJhdGlvbj8uY29tcG9uZW50OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNSBuby1wYWRkaW5nXCIgZm9yPVwie3txdWVzdGlvbi5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWRpbnMtcmVxdWlyZWQtbGFiZWwnOiAocXVlc3Rpb24uaXNSZXF1aXJlZCB8fCAocXVlc3Rpb24/LmRkbFR5cGUgIT0gdW5kZWZpbmVkICYmIHF1ZXN0aW9uLmRkbFR5cGUgPT0gJ29uZScpKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPnt7cXVlc3Rpb24ubGFiZWx9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03IG5vLXBhZGRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT0ndGV4dGJveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7e3F1ZXN0aW9uLmlkfX1cIiBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSXNVcHBlckNhc2VdPVwicXVlc3Rpb24uaXNVcHBlcmNhc2UgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBxdWVzdGlvbi5pc1VwcGVyY2FzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicXVlc3Rpb24udmFsdWVcIiBbcmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIG5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgdmFsdWU9XCJ7e3F1ZXN0aW9uLnZhbHVlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hDbGljaygpXCIgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1uYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy50b3VjaGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSd0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7e3F1ZXN0aW9uLmlkfX1cIiBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJxdWVzdGlvbi52YWx1ZVwiIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiIGF0dHIuZGF0YS10eXBlPVwie3txdWVzdGlvbi5kYXRhdHlwZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgdmFsdWU9XCJ7e3F1ZXN0aW9uLnZhbHVlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy50b3VjaGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5pbnZhbGlkIH1cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24udHlwZT09J251bWVyaWMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7e3F1ZXN0aW9uLmlkfX1cIiAoZm9jdXMpPVwidHJhbnNmb3JtVG9EZWNpbWFsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInRyYW5zZm9ybVRvRGVjaW1hbCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicXVlc3Rpb24udmFsdWVcIiBbcmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIG5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWUrW2ldfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgdmFsdWU9XCJ7e3F1ZXN0aW9uLnZhbHVlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hDbGljaygpXCIgYXR0ci5kYXRhLXJlc3RyaWN0aW9uPVwie3txdWVzdGlvbi5yZXN0cmljdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtdHlwZT1cInt7cXVlc3Rpb24uZGF0YXR5cGV9fVwiIGF0dHIuZGF0YS1uYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1udW1lcmljcGFpcj1cInt7cXVlc3Rpb24ubnVtZXJpY1BhaXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8uZGlydHkpICYmIGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZStbaV1dPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdjdXJyZW5jeSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uPy5pc0N1c3RvbSAhPSB1bmRlZmluZWQgJiYgcXVlc3Rpb24/LmlzQ3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJcIiBpZD1cInt7cXVlc3Rpb24uaWR9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1mb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaENsaWNrKClcIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIiBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgY3VycmVuY3lNYXNrIFtuZ01vZGVsXT1cInF1ZXN0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24udmFsdWVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ7IHRob3VzYW5kczogcXVlc3Rpb24udGhvdXNhbmRzLCBkZWNpbWFsOiBxdWVzdGlvbi5kZWNpbWFsLCBhbGlnbjogcXVlc3Rpb24uYWxpZ24sIGFsbG93TmVnYXRpdmU6IHF1ZXN0aW9uLmFsbG93TmVnYXRpdmUsIGFsbG93WmVybzogcXVlc3Rpb24uYWxsb3daZXJvLCBwcmVjaXNpb246IHF1ZXN0aW9uLnByZWNpc2lvbiwgbnVsbGFibGU6IHF1ZXN0aW9uLm51bGxhYmxlIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy50b3VjaGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbj8uaXNDdXN0b20gPT0gdW5kZWZpbmVkIHx8ICFxdWVzdGlvbj8uaXNDdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInt7cXVlc3Rpb24uaWR9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1mb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaENsaWNrKClcIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIiBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1yZXF1aXJlZD1cInt7cXVlc3Rpb24uaXNSZXF1aXJlZH19XCIgY3VycmVuY3lNYXNrIFtuZ01vZGVsXT1cInF1ZXN0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24udmFsdWVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwieyB0aG91c2FuZHM6ICcsJywgZGVjaW1hbDogJy4nLCBhbGlnbjogJ3JpZ2h0JywgYWxsb3dOZWdhdGl2ZTogZmFsc2UsIGFsbG93WmVybzp0cnVlLCBwcmVjaXNpb246IDIsIG51bGxhYmxlOiBmYWxzZSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5kaXJ0eSkgJiYgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmQgSGFyZGNvZGUgTG9va3VwIGRpZGFsZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT0nZGF0ZXBpY2tlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ7e3F1ZXN0aW9uLmlzVGltZSA/ICdkYXRldGltZS1sb2NhbCcgOiAnZGF0ZSd9fVwiIGlkPVwie3txdWVzdGlvbi5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sIGJ0bi1sb29rdXBcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lK1tpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJxdWVzdGlvbi52YWx1ZVwiIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiIHZhbHVlPVwie3txdWVzdGlvbi52YWx1ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicXVlc3Rpb24ucmVhZG9ubHlcIiBhdHRyLmRhdGEtdHlwZT1cInt7cXVlc3Rpb24uZGF0YXR5cGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLW5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWRhdGVwaWNrZXJwYWlyPVwie3txdWVzdGlvbi5kYXRlcGlja2VyUGFpcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtY3JpdC1kYXRhdGFibGU9XCJ7e3F1ZXN0aW9uLmlzQ3JpdGVyaWFEYXRhVGFibGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaENsaWNrKClcIiBhdHRyLmRhdGEtcmVzdHJpY3Rpb249XCJ7e3F1ZXN0aW9uLnJlc3RyaWN0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIubGFiZWw9XCJ7e3F1ZXN0aW9uLmxhYmVsfX1cIiBtaW49XCJ7e3F1ZXN0aW9uLm1pbkRhdGUgfCBkYXRlOid5eXl5LU1NLWRkJ319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCJ7e3F1ZXN0aW9uLm1heERhdGUgfCBkYXRlOid5eXl5LU1NLWRkJ319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwicXVlc3Rpb24ucmVzdHJpY3Rpb24gIT0gdW5kZWZpbmVkICYmIGNoZWNrSW5wdXREYXRlKHF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGVuamlGb3JtLnN1Ym1pdHRlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXT8uZGlydHkpICYmIGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZStbaV1dPy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnR5cGUgPT0gJ3Rhc2tEZWZpbml0aW9uS2V5JyB8fCBxdWVzdGlvbi50eXBlID09ICdwcm9jZXNzS2V5JyB8fCBxdWVzdGlvbi50eXBlID09ICdvZmZpY2VSb2xlQ29kZXMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgYXR0ci5kYXRhLXJlcXVpcmVkPVwie3txdWVzdGlvbi5pc1JlcXVpcmVkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5xdWVyeS1pbj1cInt7cXVlc3Rpb24uaXNRdWVyeUlufX1cIiBhdHRyLmRhdGEtdHlwZT1cInt7cXVlc3Rpb24uZGF0YXR5cGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5sYWJlbD1cInt7cXVlc3Rpb24ubGFiZWx9fVwiIFtoaWRkZW5dPVwicXVlc3Rpb24/Lml0ZW1zVXJsPy5sZW5ndGggPT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIocXVlc3Rpb24udHlwZSA9PSAndGFza0RlZmluaXRpb25LZXknIHx8IHF1ZXN0aW9uLnR5cGUgPT0gJ3Byb2Nlc3NLZXknKSA/IFNldFByb2Nlc3NLZXkoaSxxdWVzdGlvbi53ZktleUZpbHRlcikgOiBTZXRSb2xlT2ZmaWNlQ29kZXMoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5kaXJ0eSkgJiYgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cInF1ZXN0aW9uLmRkbFR5cGUgPT0gJ29uZScgJiYgcXVlc3Rpb24/Lml0ZW1zVXJsPy5sZW5ndGggIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm9uZVwiPlNlbGVjdCBPbmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihxdWVzdGlvbj8uZGRsVHlwZSA9PSB1bmRlZmluZWQgfHwgcXVlc3Rpb24uZGRsVHlwZSA9PSAnYWxsJykgJiYgcXVlc3Rpb24/Lml0ZW1zVXJsPy5sZW5ndGggIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24/Lml0ZW1zVXJsXCIgdmFsdWU9XCJ7e2l0ZW0uS2V5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5WYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCI+e3txdWVzdGlvbi5pdGVtc1VybFswXS5WYWx1ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdkcm9wZG93bidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVzdGlvbi52YWx1ZVwiIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtZm9ybS1jb250cm9sXCIgYXR0ci5xdWVyeS1pbj1cInt7cXVlc3Rpb24uaXNRdWVyeUlufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS10eXBlPVwie3txdWVzdGlvbi5kYXRhdHlwZX19XCIgYXR0ci5kYXRhLW5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5sYWJlbD1cInt7cXVlc3Rpb24ubGFiZWx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoID09IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInF1ZXN0aW9uLmlzRXZlbnQgPyBvbkNoYW5nZUV2ZW50KCRldmVudC50YXJnZXQudmFsdWUsIHF1ZXN0aW9uKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZW5qaUZvcm0uc3VibWl0dGVkIHx8IGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LnRvdWNoZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uZGlydHkpICYmIGVuamlGb3JtLmZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZGRsVHlwZSA9PSAnb25lJyAmJiAoIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoICE9IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCAhPSAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IE9uZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHF1ZXN0aW9uPy5kZGxUeXBlID09IHVuZGVmaW5lZCB8fCBxdWVzdGlvbi5kZGxUeXBlID09ICdhbGwnKSAmJiAoIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoICE9IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCAhPSAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcyA6IHF1ZXN0aW9uPy5pdGVtc1VybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IXF1ZXN0aW9uLmlzRnJvbVVSTCA/IGl0ZW0ua2V5IDogaXRlbS5LZXl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shcXVlc3Rpb24uaXNGcm9tVVJMID8gaXRlbS52YWx1ZSA6IGl0ZW0uVmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcXVlc3Rpb24uaXNGcm9tVVJMID8gcXVlc3Rpb24/Lml0ZW1zPy5sZW5ndGggPT0gMSA6IHF1ZXN0aW9uPy5pdGVtc1VybD8ubGVuZ3RoID09IDFcIj57eyFxdWVzdGlvbi5pc0Zyb21VUkxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHF1ZXN0aW9uLml0ZW1zWzBdLnZhbHVlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5pdGVtc1VybFswXS5WYWx1ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdkcm9wZG93blNlYXJjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkcy1kaXNwbGF5LWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoID09IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbCBkZHMtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7J2Rkc1ZhbHVlJytxdWVzdGlvbi5uYW1lfX1cIiBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmRlc2NyXCIgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJxdWVzdGlvbi5pc0xpc3RIaWRlID0gIXF1ZXN0aW9uLmlzTGlzdEhpZGU7IHF1ZXN0aW9uLnNlYXJjaFRleHQ9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoID09IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCA9PSAxXCI+e3txdWVzdGlvbi5kZXNjcn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkcy1saXN0LWNvbnRhaW5lclwiIFtoaWRkZW5dPVwicXVlc3Rpb24uaXNMaXN0SGlkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1mb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7J3NlYXJjaFRleHQnK3F1ZXN0aW9uLm5hbWV9fVwiIFsobmdNb2RlbCldPVwicXVlc3Rpb24uc2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGRzLWl0ZW1zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZ1bGwtd2lkdGhcIiBuYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtcmVxdWlyZWQ9XCJ7e3F1ZXN0aW9uLmlzUmVxdWlyZWR9fVwiIFsobmdNb2RlbCldPVwicXVlc3Rpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIGF0dHIucXVlcnktaW49XCJ7e3F1ZXN0aW9uLmlzUXVlcnlJbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7e3F1ZXN0aW9uLmRhdGF0eXBlfX1cIiBhdHRyLmRhdGEtbmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5sYWJlbD1cInt7cXVlc3Rpb24ubGFiZWx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1jcml0LWRhdGF0YWJsZT1cInt7cXVlc3Rpb24uaXNDcml0ZXJpYURhdGFUYWJsZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJxdWVzdGlvbi5pc0V2ZW50ID8gb25DaGFuZ2VFdmVudCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBxdWVzdGlvbikgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8udG91Y2hlZCB8fCBlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdPy5kaXJ0eSkgJiYgZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7cXVlc3Rpb24/LnNpemUgPT0gdW5kZWZpbmVkID8gcXVlc3Rpb24/LnNpemUgOiAxMH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKGNsaWNrKT1cInNlbGVjdGVkT3B0aW9uKHtLZXk6J29uZScsVmFsdWU6J1NlbGVjdCBPbmUnfSxxdWVzdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZGRzVHlwZSA9PSAnb25lJyAmJiAoIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IHF1ZXN0aW9uPy5pdGVtcz8ubGVuZ3RoICE9IDEgOiBxdWVzdGlvbj8uaXRlbXNVcmw/Lmxlbmd0aCAhPSAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgT25lPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKGNsaWNrKT1cInNlbGVjdGVkT3B0aW9uKHtLZXk6J2FsbCcsVmFsdWU6J0FsbCd9LHF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocXVlc3Rpb24/LmRkc1R5cGUgPT0gdW5kZWZpbmVkIHx8IHF1ZXN0aW9uLmRkc1R5cGUgPT0gJ2FsbCcpICYmICghcXVlc3Rpb24uaXNGcm9tVVJMID8gcXVlc3Rpb24/Lml0ZW1zPy5sZW5ndGggIT0gMSA6IHF1ZXN0aW9uPy5pdGVtc1VybD8ubGVuZ3RoICE9IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb24/Lml0ZW1zIHwgdGV4dFNlYXJjaCA6IHF1ZXN0aW9uLnNlYXJjaFRleHQ7IGxldCBpPWluZGV4XCIgW3ZhbHVlXT1cIml0ZW0/LmtleVwiIChjbGljayk9XCJzZWxlY3RlZE9wdGlvbihpdGVtLHF1ZXN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgIXF1ZXN0aW9uLmlzRnJvbVVSTCA/IChxdWVzdGlvbj8uaXRlbXMgfCB0ZXh0U2VhcmNoIDogcXVlc3Rpb24uc2VhcmNoVGV4dCkgOiBxdWVzdGlvbj8uaXRlbXNVcmwgfCB0ZXh0U2VhcmNoIDogcXVlc3Rpb24uc2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkT3B0aW9uKGl0ZW0scXVlc3Rpb24pXCIgdmFsdWU9XCJ7e2l0ZW0uS2V5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uVmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PSdjbGFpbSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwie3snY2xhaW0nK1tpXX19XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXR5cGU9XCJ7eyd0ZXh0J319XCIgYXR0ci5kYXRhLWNyaXQtZGF0YXRhYmxlPVwie3txdWVzdGlvbi5pc0NyaXRlcmlhRGF0YVRhYmxlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1uYW1lPVwie3snQXNzaWduZWUnfX1cIiBbaGlkZGVuXT1cIkNsYWltTGlzdD8ubGVuZ3RoID09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihlbmppRm9ybS5zdWJtaXR0ZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1snY2xhaW0nK1tpXV0/LnRvdWNoZWQgfHwgZW5qaUZvcm0uZm9ybS5jb250cm9sc1snY2xhaW0nK1tpXV0/LmRpcnR5KSAmJiBlbmppRm9ybS5mb3JtLmNvbnRyb2xzWydjbGFpbScrW2ldXT8uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cInF1ZXN0aW9uLmRkbFR5cGUgPT0gJ29uZScgJiYgQ2xhaW1MaXN0Py5sZW5ndGggIT0gMVwiIHZhbHVlPVwib25lXCI+U2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihxdWVzdGlvbj8uZGRsVHlwZSA9PSB1bmRlZmluZWQgfHwgcXVlc3Rpb24uZGRsVHlwZSA9PSAnYWxsJykgJiYgQ2xhaW1MaXN0Py5sZW5ndGggIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgQ2xhaW1MaXN0XCIgdmFsdWU9XCJ7e2l0ZW0uS2V5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5WYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXVjLXNob3ctZXJyb3JzICpuZ0lmPVwicXVlc3Rpb24udHlwZSE9J2RhdGVwaWNrZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZW5qaUZvcm0uZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXVwiIFtzdWJtaXRdPVwiZW5qaUZvcm0uc3VibWl0dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi11Yy1zaG93LWVycm9ycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItdWMtc2hvdy1lcnJvcnMgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT0nZGF0ZXBpY2tlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJlbmppRm9ybS5mb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWUrW2ldXVwiIFtzdWJtaXRdPVwiZW5qaUZvcm0uc3VibWl0dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi11Yy1zaG93LWVycm9ycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cFwiICpuZ0lmPVwiKGlzUmVwb3J0ICE9IHVuZGVmaW5lZCAmJiBpc1JlcG9ydClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC01IG5vLXBhZGRpbmdcIiB0cmFuc2xhdGU+UmVwb3J0IFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNyBuby1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJFeHBvcnRUeXBlXCIgWyhuZ01vZGVsKV09XCJFeHBvcnRUeXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS10eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIEV4cG9ydFR5cGVMaXN0XCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3tpdGVtLnZhbHVlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBuby1wYWRkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tYWN0aW9ucyByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cImJ0bi1ncm91cFwiICpuZ0lmPVwiZXhwb3J0RGF0YSA9PSB0cnVlICYmIGlzU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXJhaXNlZCBidG4tc3VjY2VzcyBtci0xIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIHRyYW5zbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZ0LWRvd25sb2FkXCI+PC9pPiZuYnNwOzxzcGFuIHRyYW5zbGF0ZT5FeHBvcnQgRmlsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImV4cG9ydEFzRmlsZSgnY3N2JylcIj5hcyBDU1Y8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImV4cG9ydEFzRmlsZSgnZXhjZWwnKVwiPmFzIEVYQ0VMPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJleHBvcnRBc0ZpbGUoJ2pzb24nKVwiPmFzIEpTT048L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1yYWlzZWQgYnRuLXdhcm5pbmcgbXItMVwiIHRyYW5zbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT4mbmJzcDs8c3BhbiB0cmFuc2xhdGU+UmVzZXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoaXNSZXBvcnQgPT0gdW5kZWZpbmVkIHx8ICFpc1JlcG9ydClcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXJhaXNlZCBidG4tcHJpbWFyeVwiICNVQ1NlYXJjaENsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT4mbmJzcDs8c3BhbiB0cmFuc2xhdGU+U2VhcmNoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGlzUmVwb3J0ICE9IHVuZGVmaW5lZCAmJiBpc1JlcG9ydClcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkdlbmVyYXRlUmVwb3J0KGVuamlGb3JtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1yYWlzZWQgYnRuLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmdC1kb3dubG9hZFwiPjwvaT4mbmJzcDs8c3BhbiB0cmFuc2xhdGU+R2VuZXJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuPGJyPlxyXG48IS0tIC8vIEJhc2ljIGZvcm0gbGF5b3V0IHNlY3Rpb24gZW5kIC0tPiJdfQ==
|