@hivegpt/hiveai-angular 0.0.220 → 0.0.221
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hivegpt-hiveai-angular.umd.js +1 -0
- package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +2 -1
- package/fesm2015/hivegpt-hiveai-angular.js +1 -0
- package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
- package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -117,6 +117,7 @@ export class ChatDrawerComponent {
|
|
|
117
117
|
if (changes.s27Token.currentValue != changes.s27Token.previousValue) {
|
|
118
118
|
console.log('s27Token changed previous:', changes.s27Token.previousValue, ' current:', changes.s27Token.currentValue);
|
|
119
119
|
this.s27Token = changes.s27Token.currentValue;
|
|
120
|
+
console.log('isFetchDataFor: ', this.isFetchDataFor);
|
|
120
121
|
console.log('msg: ', this.msg);
|
|
121
122
|
console.log('chat: ', this.chat);
|
|
122
123
|
if (this.is401) {
|
|
@@ -1181,4 +1182,4 @@ ChatDrawerComponent.propDecorators = {
|
|
|
1181
1182
|
scheduleMeeting: [{ type: Output }],
|
|
1182
1183
|
refreshToken: [{ type: Output }]
|
|
1183
1184
|
};
|
|
1184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9tdWRkYXNzaXJuYXl5ZXIvRGV2ZWxvcG1lbnQvU29jaWFsMjcvSGl2ZUFJLVBhY2thZ2VzL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhdC1kcmF3ZXIvY2hhdC1kcmF3ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUVULFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFTMUQsTUFBTSxPQUFPLG1CQUFtQjtJQThGOUIsWUFDVSxHQUFzQixFQUN0QixJQUFnQixFQUNoQixTQUF1QixFQUN2QixVQUFzQixFQUN0QixRQUFtQixFQUNuQixhQUE0QixFQUM1QixtQkFB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TixNQUFNOzhCQUNOLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREcmF3ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZvcm1hdE5vdywgZm9ybWF0VGltZVN0YW1wcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IGRldl9lbnZpcm9ubWVudCwgcHJvZF9lbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ja2V0U2VydmljZSB9IGZyb20gJy4uL3NvY2tldC1zZXJ2aWNlLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hpdmVncHQtY2hhdC1kcmF3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LWRyYXdlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdERyYXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2hhdE1haW4nKSBwcml2YXRlIGNoYXRNYWluOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteUlucHV0JykgcHJpdmF0ZSBteUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKCdjbG9zZXBsYXlncm91bmRidXR0b24nKSBjbG9zZVBsYXlncm91bmRCdXR0b25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIEBWaWV3Q2hpbGQoJ2RyYXdlcicpIGRyYXdlciE6IE1hdERyYXdlcjtcbiAgQFZpZXdDaGlsZCgnc291cmNlc0RyYXdlcicpIHNvdXJjZXNEcmF3ZXIhOiBNYXREcmF3ZXI7XG4gIHByaXZhdGUgYm9keU92ZXJmbG93Q2xhc3MgPSAnYm9keS1vdmVyZmxvdy1oaWRkZW4nO1xuICBAVmlld0NoaWxkKCdteVRleHRhcmVhJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG15VGV4dGFyZWEhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+OyAvLyBSZWZlcmVuY2UgdG8gdGhlIHRleHRhcmVhXG4gIGlzQ29sbGFwc2VkVHJ1ZSA9IGZhbHNlO1xuICBASW5wdXQoKSBjb3BpbG90TmFtZTogc3RyaW5nID0gXCJIaXZlWEdQVFwiO1xuICBASW5wdXQoKSBmaXJzdE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhc3ROYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBhcGlLZXkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJnQnViYmxlQWkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJnQnViYmxlVXNlciE6IHN0cmluZztcbiAgQElucHV0KCkgYmdHcmFkaWVudCE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBib3ROYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBib3RTa2lsbHMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBjbG9zZUJ1dHRvbkNvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBjbG9zZUJ1dHRvbmJnQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNyZWRlbnRpYWxzITogW107XG4gIEBJbnB1dCgpIGRhdGVUaW1lQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGVUZXh0Q29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV2ZW50SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHMyN1Rva2VuITogc3RyaW5nO1xuICBASW5wdXQoKSBldmVudE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvdEljb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1GaWVsZEJnQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1GaWVsZFRleHRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZnVsbFZpZXchOiBib29sZWFuO1xuICBASW5wdXQoKSBncmFkaWVudENvbG9ycyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBncmVldGluZyE6IHN0cmluZztcbiAgQElucHV0KCkgbWVzc2FnZVRleHRDb2xvckFpITogc3RyaW5nO1xuICBASW5wdXQoKSBtZXNzYWdlVGV4dENvbG9yVXNlciE6IHN0cmluZztcbiAgQElucHV0KCkgcnVsZXMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbmRCdXR0b25Db2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgc2VuZEJ1dHRvblRleHRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd0Nsb3NlITogYm9vbGVhbjtcbiAgQElucHV0KCkgdGh1bWJzRG93bk1lc3NhZ2VzITogc3RyaW5nW107XG4gIEBJbnB1dCgpIHRodW1ic1VwTWVzc2FnZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGltZXpvbmUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVua25vd25SZXNwb25zZXMhOiBbXTtcbiAgQElucHV0KCkgdXNlT3BlbkFpITogYm9vbGVhbjtcbiAgQElucHV0KCkgdXNlcklkITogc3RyaW5nO1xuICBASW5wdXQoKSBpc0RldiE6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgYWdhaW5CdXR0b25Db2xvciE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBhZ2FpbkJ1dHRvblRleHRDb2xvciE6IHN0cmluZ1tdO1xuICBAT3V0cHV0KCkgZmVlZGJhY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25DbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb3BlblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlc3Npb25BY3Rpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZUJvdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY29ubmVjdFdpdGhVc2VyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzY2hlZHVsZU1lZXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlZnJlc2hUb2tlbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGF1dG9nZW5LZXkgPSBcIkF1dG9nZW5fZURKVHRFVS1OQjBSdElwenExd1wiXG4gIGFkZFRvTXlBZ2VuZGFBY3Rpb24gPSBcImFkZF90b19teV9hZ2VuZGFcIjtcbiAgbXlVcGNvbWluZ1Nlc3Npb25BY3Rpb24gPSBcIm15X3VwY29tbWluZ19zZXNzaW9uXCI7XG4gIGNvbm5lY3RPckZvbGxvd0FjdGlvbiA9IFwiY29ubmVjdF9vcl9mb2xsb3dcIjtcbiAgYWlSZXNwb25zZTogc3RyaW5nID0gJyc7XG4gIGNoYXRMb2c6IGFueVtdID0gW107XG4gIGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgZmVlZGJhY2tEb25lOiBib29sZWFuID0gZmFsc2U7XG4gIGdyZWV0aW5nTXNnOiBzdHJpbmcgPSAnJztcbiAgaGFzQmFja2Ryb3BWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpbnB1dDogc3RyaW5nID0gJyc7XG4gIGxpc3RlbmVyQWRkZWQgPSBmYWxzZTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBtb2RlOiBzdHJpbmcgPSAnb3Zlcic7XG4gIHF1aWNrUHJvbXB0czogYW55W10gPSBbXTtcbiAgdGh1bWJzRG93bk1zZ0luZGV4ID0gMDtcbiAgdXNlck5hbWU6IHN0cmluZyA9ICcnO1xuICBzaG93U3RhcnRBZ2FpbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0lPU0RldmljZTogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93RmVlZEJhY2tJY29uc0luZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgdGVtcGVyYXR1cmU6IG51bWJlciA9IDE7XG4gIHNwZWFrZXJzID0gW107XG4gIGVudmlyb25tZW50OiB7XG4gICAgVVNFUlNfQVBJLFxuICAgIEJBU0VfVVJMLFxuICAgIEFHRU5UU19BUElcbiAgfTtcbiAgcGVuZGluZ1JlcXVlc3RzOiBhbnk7XG4gIG15Q29ubmVjdGlvbnM6IGFueTtcbiAgY29udmVyc2F0aW9uS2V5OiBzdHJpbmc7XG4gIGlzRmV0Y2hEYXRhRm9yOiBib29sZWFuO1xuICBpczQwMTogYm9vbGVhbjtcbiAgbXNnOiBhbnk7XG4gIGNoYXQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNvY2tldFNlcnZpY2U6IFNvY2tldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlOiBDb252ZXJzYXRpb25TZXJ2aWNlXG4gICAgLy8gcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1cbiAgKSB7XG4gICAgdGhpcy5jaGF0TWFpbiA9IG5ldyBFbGVtZW50UmVmKG51bGwpO1xuXG4gICAgLy8gaWYgKHRoaXMucGxhdGZvcm0uSU9TKSB7XG4gICAgLy8gICB0aGlzLmlzSU9TRGV2aWNlID0gdHJ1ZTtcbiAgICAvLyB9XG5cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnbmcgb24gY2hhbmdlcycpO1xuICAgIGlmIChjaGFuZ2VzLnMyN1Rva2VuKSB7XG4gICAgICBjb25zb2xlLmxvZygnczI3VG9rZW4gY2hhbmdlZDonLCBjaGFuZ2VzLnMyN1Rva2VuKTtcbiAgICAgIGlmIChjaGFuZ2VzLnMyN1Rva2VuLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLnMyN1Rva2VuLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3MyN1Rva2VuIGNoYW5nZWQgcHJldmlvdXM6JywgY2hhbmdlcy5zMjdUb2tlbi5wcmV2aW91c1ZhbHVlLCAnIGN1cnJlbnQ6JywgY2hhbmdlcy5zMjdUb2tlbi5jdXJyZW50VmFsdWUsICk7XG4gICAgICAgIHRoaXMuczI3VG9rZW4gPSBjaGFuZ2VzLnMyN1Rva2VuLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICBjb25zb2xlLmxvZygnbXNnOiAnLCB0aGlzLm1zZyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjaGF0OiAnLCB0aGlzLmNoYXQpO1xuICAgICAgICBpZiAodGhpcy5pczQwMSkge1xuICAgICAgICAgIGlmICh0aGlzLmlzRmV0Y2hEYXRhRm9yKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRGF0YUZvcih0aGlzLm1zZywgdGhpcy5jaGF0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEodGhpcy5tc2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLmlzRGV2ID8gZGV2X2Vudmlyb25tZW50IDogcHJvZF9lbnZpcm9ubWVudDtcblxuICAgIC8vIHRoaXMuZmV0Y2hNeUNvbm5lY3Rpb25zKCkuc3Vic2NyaWJlKCk7XG4gICAgLy8gdGhpcy5mZXRjaFBlbmRpbmdSZXF1ZXN0cygpLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5jaGFuZ2VUZW1wZXJhdHVyZSh0aGlzLnRlbXBlcmF0dXJlKTtcbiAgICB0aGlzLmZldGNoQm90Q29uZmlnKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB0aGlzLmZldGNoQ2hhdEhpc3RvcnkoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWFwQ2hhdEhpc3RvcnkocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0IGhpc3Rvcnk6JywgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0IGhpc3Rvcnk6JywgZXJyKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuZmV0Y2hBZ2VudHMoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmluaXRpYWxpemVTb2NrZXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubGlzdGVuU29ja2V0cygpO1xuICAgIH0sIDIwMCk7XG4gIH1cbiAgcHJpdmF0ZSBldmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBpbml0aWFsaXplU29ja2V0KCkge1xuICAgIDtcbiAgICBjb25zdCBjb252ZXJzYXRpb25faWQgPSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuZ2V0S2V5KHRoaXMuYm90SWQpO1xuXG4gICAgdGhpcy5zb2NrZXRTZXJ2aWNlLnJlZ2lzdGVyVXNlclNwZWNpZmljSGl2ZVNvY2tldCh0aGlzLmJvdElkLCBjb252ZXJzYXRpb25faWQpO1xuICB9XG5cbiAgc3Vic2NyaXB0aW9uTmV3OiBhbnk7XG4gIHNvY2tldERhdGE6IGFueTtcblxuICBsaXN0ZW5Tb2NrZXRzKCkge1xuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2VcbiAgICAgIC5nZXRVc2VyU3BlY2lmaWNOb3RpZmljYXRpb24oKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgIC8vIENoZWNrIGlmIE90aGVyRmllbGRzIGV4aXN0cyBpbiB0aGUgcmVzcG9uc2VcbiAgICAgICAgICBpZiAocmVzPy5tPy5PdGhlckZpZWxkcykge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBjb252ZXJzYXRpb25faWQsXG4gICAgICAgICAgICAgIGJvdF9pZCxcbiAgICAgICAgICAgICAgbWVzc2FnZV9pZCxcbiAgICAgICAgICAgICAgYW5zd2VyLFxuICAgICAgICAgICAgICB3ZWJfcmVzdWx0cyxcbiAgICAgICAgICAgICAgZ3JhcGhzLFxuICAgICAgICAgICAgICBleGVjdXRpb25fZ3JhcGhzLFxuICAgICAgICAgICAgICBvbmxpbmVfc2VhcmNoX3Rlcm1zLFxuICAgICAgICAgICAgICBzdWdnZXN0aW9uc1xuICAgICAgICAgICAgfSA9IHJlcz8ubT8uT3RoZXJGaWVsZHM7XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhdE1lc3NhZ2UgPSB0aGlzLmNoYXRMb2cuZmluZChwID0+IHAuX2lkID09IG1lc3NhZ2VfaWQpO1xuXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRDaGF0TWVzc2FnZSkge1xuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgICAgX2lkOiBtZXNzYWdlX2lkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdhaScsXG4gICAgICAgICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goY3VycmVudENoYXRNZXNzYWdlKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZmllbGRzIGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlXG4gICAgICAgICAgICBpZiAob25saW5lX3NlYXJjaF90ZXJtcyAmJiBBcnJheS5pc0FycmF5KG9ubGluZV9zZWFyY2hfdGVybXMpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdPbmxpbmUgU2VhcmNoIFRlcm1zOicsIG9ubGluZV9zZWFyY2hfdGVybXMpO1xuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2Uuc2VhcmNoVGVybXMgPSBvbmxpbmVfc2VhcmNoX3Rlcm1zO1xuICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHdlYl9yZXN1bHRzICYmIEFycmF5LmlzQXJyYXkod2ViX3Jlc3VsdHMpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXZWIgUmVzdWx0czonLCB3ZWJfcmVzdWx0cyk7XG4gICAgICAgICAgICAgIGN1cnJlbnRDaGF0TWVzc2FnZS5zb3VyY2VzTGlzdCA9IHdlYl9yZXN1bHRzO1xuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2UuZGlzcGxheWVkU291cmNlcyA9IHdlYl9yZXN1bHRzPy5zbGljZSgwLCAzKTsgLy8gRmlyc3QgMyBjYXJkc1xuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2UucmVtYWluaW5nU291cmNlcyA9IHdlYl9yZXN1bHRzPy5zbGljZSgzKTsgLy8gUmVtYWluaW5nIGl0ZW1zXG4gICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhbnN3ZXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Fuc3dlcjonLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgIGN1cnJlbnRDaGF0TWVzc2FnZS5tZXNzYWdlID0gdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkoYW5zd2VyKTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGdyYXBocyAmJiBBcnJheS5pc0FycmF5KGdyYXBocykpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0dyYXBoczonLCBncmFwaHMpO1xuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2UuZ3JhcGhzID0gZ3JhcGhzO1xuICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbl9ncmFwaHMgJiYgQXJyYXkuaXNBcnJheShleGVjdXRpb25fZ3JhcGhzKSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXhlY3V0aW9uIEdyYXBoczonLCBleGVjdXRpb25fZ3JhcGhzKTtcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlLmV4ZWN1dGlvbkdyYXBocyA9IGV4ZWN1dGlvbl9ncmFwaHM7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbnMgJiYgQXJyYXkuaXNBcnJheShzdWdnZXN0aW9ucykpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3N1Z2dlc3Rpb25zOicsIHN1Z2dlc3Rpb25zKTtcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlLnJlbGF0ZWRMaXN0SXRlbXMgPSBzdWdnZXN0aW9ucztcbiAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgIC8vIFByb2Nlc3Mgb25saW5lIHNlYXJjaCB0ZXJtcyBhcyBuZWVkZWRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIGFueSBvdGhlciBmaWVsZHMgYW5kIHRoZWlyIHByb2Nlc3NpbmcgaGVyZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ090aGVyRmllbGRzIGlzIG1pc3NpbmcgaW4gdGhlIHJlc3BvbnNlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGZldGNoaW5nIGRhdGEgZnJvbSBzb2NrZXQnLCBlcnIpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVNvY2tldEFuZExpc3RlbigpIHtcblxuICB9XG4gIGhhbmRsZUV2ZW50KGRhdGE6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICd3ZWJyZXN1bHQnOlxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYW5zd2VyJzpcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyYXBoJzpcblxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICAvL3RoaXMuc29ja2V0U2VydmljZS5jbG9zZSgpO1xuICB9XG4gIGNoYW5nZVRlbXBlcmF0dXJlKG5ld1RlbXBlcmF0dXJlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XG4gICAgdGhpcy50ZW1wZXJhdHVyZSA9IG5ld1RlbXBlcmF0dXJlO1xuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGl2ZWdwdC1jaGF0LXdyYXBwZXInKVxuICAgIC8vIFJlbW92ZSBleGlzdGluZyB0aGVtZSBjbGFzc2VzIGZyb20gYm9keVxuICAgIHdyYXBwZXI/LmNsYXNzTGlzdC5yZW1vdmUoJ2NyZWF0aXZlJywgJ2JhbGFuY2VkJywgJ3ByZWNpc2UnKTtcblxuICAgIHN3aXRjaCAobmV3VGVtcGVyYXR1cmUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgd3JhcHBlcj8uY2xhc3NMaXN0LmFkZCgnY3JlYXRpdmUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHdyYXBwZXI/LmNsYXNzTGlzdC5hZGQoJ2JhbGFuY2VkJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICB3cmFwcGVyPy5jbGFzc0xpc3QuYWRkKCdwcmVjaXNlJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25TdGFydEFnYWluKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHJldHVybjtcbiAgICB0aGlzLnNob3dTdGFydEFnYWluID0gZmFsc2U7XG4gICAgdGhpcy5jaGF0TG9nID0gW107XG4gICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgdHlwZTogJ2FpJyxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIHRoaXMuZ3JlZXRpbmdNc2cgfHxcbiAgICAgICAgdGhpcy5wcm9jZXNzTWVzc2FnZShcbiAgICAgICAgICBcIkdyZWV0aW5ncyEgSSdtIHlvdXIgQ09QMjggdmlydHVhbCBhc3Npc3RhbnQuIEhhdmUgcXVlc3Rpb25zIGFib3V0IHRoZSBldmVudD8gSSdtIGhlcmUgdG8gaGVscC5cIlxuICAgICAgICApLFxuICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxuICAgIH0pO1xuICAgIHRoaXMuYXJjaGlldmVNZXNzYWdlcygpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYXJjaGlldmVNZXNzYWdlcygpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXG4gICAgfSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90L2NsZWFyLWhpc3RvcnkvJHt0aGlzLmJvdElkfS8ke3RoaXMudXNlcklkfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwge30sIHsgaGVhZGVycyB9KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gb2YocmVzKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hCb3RDb25maWcoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9ib3RzP2JvdF9pZD0ke3RoaXMuYm90SWR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYm90TmFtZSA9IHJlcy5OYW1lO1xuICAgICAgICB0aGlzLmJvdEljb24gPSByZXMuSWNvbjtcbiAgICAgICAgdGhpcy5ib3RTa2lsbHMgPSByZXM/LlNraWxscztcbiAgICAgICAgdGhpcy5ncmVldGluZ01zZyA9IHJlcy5HcmVldGluZztcblxuICAgICAgICB0aGlzLnRodW1ic0Rvd25NZXNzYWdlcyA9IHJlcz8uTmVnYXRpdmVSZXNwb25zZXM/Lmxlbmd0aFxuICAgICAgICAgID8gcmVzLk5lZ2F0aXZlUmVzcG9uc2VzXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICBcIldlIGFyZSBzb3JyeSB3ZSd2ZSBub3QgYmVlbiBhYmxlIHRvIGFuc3dlciB5b3VyIHF1ZXN0aW9uLjxici8+IEhvd2V2ZXIsIG91ciBkZWRpY2F0ZWQgc3VwcG9ydCB0ZWFtIGlzIGhhcHB5IHRvIGhlbHAuIDxzcGFuIGNsYXNzPSdmZWVkYmFjay1saW5rJyBzdHlsZT0nY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMxNzIzNUI7Jz5QbGVhc2UgY2xpY2sgaGVyZTwvc3Bhbj4gYW5kIGEgaHVtYW4gYWdlbnQgd2lsbCBhc3Npc3QgeW91IGFzIHNvb24gYXMgcG9zc2libGVcIixcbiAgICAgICAgICBdO1xuICAgICAgICB0aGlzLnF1aWNrUHJvbXB0cyA9IHJlcy5RdWlja1Byb21wdHM7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG9mKHJlcyk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXRib3QgY29uZmlnOiAnLCBlcnJvcik7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBmZXRjaENoYXRIaXN0b3J5KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbktleSA9IHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5nZXRLZXkodGhpcy5ib3RJZCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uS2V5fWA7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnYWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yPGFueT4oJ2ZldGNoQ29udmVyc2F0aW9uJykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3I8VD4ob3BlcmF0aW9uID0gJ29wZXJhdGlvbicsIHJlc3VsdD86IFQpIHtcbiAgICByZXR1cm4gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7b3BlcmF0aW9ufSBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybiBvZihyZXN1bHQgYXMgVCk7XG4gICAgfTtcbiAgfVxuICAvLyBmZXRjaENoYXRIaXN0b3J5KCkge1xuICAvLyAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gIC8vICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gIC8vICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAvLyAgICAgJ3gtYXBpLWtleSc6IHRoaXMuYXBpS2V5LFxuICAvLyAgIH0pO1xuICAvLyAgIHJldHVybiB0aGlzLmh0dHBcbiAgLy8gICAgIC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uS2V5fWAsIHsgaGVhZGVycyB9KVxuICAvLyAgICAgLnBpcGUoXG4gIC8vICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcbiAgLy8gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgLy8gICAgICAgICByZXR1cm4gb2YocmVzKTtcbiAgLy8gICAgICAgfSksXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgLy8gICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0IGhpc3Rvcnk6ICcsIGVycm9yKTtcbiAgLy8gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgLy8gICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gIC8vICAgICAgIH0pXG4gIC8vICAgICApO1xuICAvLyB9XG5cbiAgbWFwQ2hhdEhpc3RvcnkoY2hhdHM6IGFueSkge1xuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgIHR5cGU6ICdhaScsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICB0aGlzLmdyZWV0aW5nTXNnIHx8XG4gICAgICAgIHRoaXMucHJvY2Vzc01lc3NhZ2UoXG4gICAgICAgICAgXCJHcmVldGluZ3MhIEknbSB5b3VyIENPUDI4IHZpcnR1YWwgYXNzaXN0YW50LiBIYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgZXZlbnQ/IEknbSBoZXJlIHRvIGhlbHAuXCJcbiAgICAgICAgKSxcbiAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICB9KTtcbiAgICBpZiAoY2hhdHMgJiYgY2hhdHM/Lk1lc3NhZ2VzPy5sZW5ndGgpIHtcbiAgICAgIGNoYXRzPy5NZXNzYWdlcy5mb3JFYWNoKChjaGF0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNoYXQuVHlwZSA9PSBcInVzZXJcIikge1xuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGNoYXQuVGV4dCksXG4gICAgICAgICAgICB0aW1lOiBmb3JtYXRUaW1lU3RhbXBzKHRoaXMudGltZXpvbmUsIGNoYXQuSW5zZXJ0VGltZXN0YW1wKSxcbiAgICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgICBpc0NvbGxhcHNlZFRydWU6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXQuVHlwZSA9PSBcImFpXCIpIHtcbiAgICAgICAgICB2YXIgc291cmNlc0xpc3QgPSBjaGF0LldlYkxpbmtzIHx8IFtdO1xuICAgICAgICAgIHZhciBkaXNwbGF5ZWRTb3VyY2VzID0gY2hhdC5XZWJMaW5rcy5zbGljZSgwLCAzKTsgLy8gRmlyc3QgMyBjYXJkc1xuICAgICAgICAgIHZhciByZW1haW5pbmdTb3VyY2VzID0gY2hhdC5XZWJMaW5rcy5zbGljZSgzKTsgLy8gUmVtYWluaW5nIGl0ZW1zXG5cbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnYWknLFxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkoY2hhdC5UZXh0KSxcbiAgICAgICAgICAgIGV4ZWN1dGlvbkdyYXBoczogY2hhdC5FeGVjdXRpb25HcmFwaHMsXG4gICAgICAgICAgICBncmFwaHM6IGNoYXQuR3JhcGhzLFxuICAgICAgICAgICAgc2VhcmNoVGVybXM6IGNoYXQuU2VhcmNoVGVybXMsXG4gICAgICAgICAgICBzb3VyY2VzTGlzdDogc291cmNlc0xpc3QsXG4gICAgICAgICAgICBkaXNwbGF5ZWRTb3VyY2VzOiBkaXNwbGF5ZWRTb3VyY2VzLFxuICAgICAgICAgICAgcmVtYWluaW5nU291cmNlczogcmVtYWluaW5nU291cmNlcyxcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdFRpbWVTdGFtcHModGhpcy50aW1lem9uZSwgY2hhdC5JbnNlcnRUaW1lc3RhbXApLFxuICAgICAgICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzQ29sbGFwc2VkVHJ1ZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSB0aGlzLmNoYXRMb2cubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNob3dTdGFydEFnYWluID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvY2Vzc01lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGlmICghbWVzc2FnZSB8fCAhKG1lc3NhZ2U/Lmxlbmd0aCA+IDApKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coJ2hlcmUgaXMgbXkgbWVzc2FnZScpXG4gICAgLy8gY29uc29sZS5sb2cobWVzc2FnZSk7XG5cbiAgICBtZXNzYWdlID0gbWVzc2FnZS50cmltKCk7XG5cbiAgICBjb25zdCBtYXJrZG93bkxpbmtSZWdleCA9IC9cXFsoW15bXSspXVxcKChbXildKylcXCkvZztcbiAgICBjb25zdCB1cmxSZWdleCA9IC8oPzwhaHJlZj1cIilcXGJodHRwcz86XFwvXFwvXFxTKyg/PCFbLixdKS9naTtcblxuICAgIGlmIChtYXJrZG93bkxpbmtSZWdleC50ZXN0KG1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBodG1sID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgICBtYXJrZG93bkxpbmtSZWdleCxcbiAgICAgICAgJzxhIGhyZWY9XCIkMlwiIHRhcmdldD1cIl9ibGFua1wiPiQxPC9hPidcbiAgICAgICk7XG4gICAgICAvL2NvbnNvbGUubG9nKCdTYW5pdGl6ZWQgbWVzc2FnZTogJywgbWVzc2FnZSk7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZUh0bWwoaHRtbCk7XG4gICAgfVxuXG4gICAgaWYgKHVybFJlZ2V4LnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIGNvbnN0IGh0bWwgPSBtZXNzYWdlLnJlcGxhY2UoXG4gICAgICAgIHVybFJlZ2V4LFxuICAgICAgICAnPGEgaHJlZj1cIiQmXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JCY8L2E+J1xuICAgICAgKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdTYW5pdGl6ZWQgbWVzc2FnZTogJywgbWVzc2FnZSk7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZUh0bWwoaHRtbCk7XG4gICAgfVxuXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvKD86XFxyXFxufFxccnxcXG4pL2csICc8YnI+Jyk7XG5cbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXCpcXCooLio/KVxcKlxcKi9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpO1xuICAgIC8vIENvbnZlcnQgTWFya2Rvd24gaGVhZGVycyB0byBIVE1MIGhlYWRlcnNcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eKCN7MSw2fSlcXHMrKC4qKSQvZ20sIChtYXRjaCwgaGFzaGVzLCB0ZXh0KSA9PiB7XG4gICAgICBjb25zdCBsZXZlbCA9IGhhc2hlcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYDxoJHtsZXZlbH0+JHt0ZXh0fTwvaCR7bGV2ZWx9PmA7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICBjb25zdCBzYW5pdGl6ZWRNZXNzYWdlID0gdGhpcy5zYW5pdGl6ZUh0bWwobWVzc2FnZSk7XG4gICAgcmV0dXJuIHNhbml0aXplZE1lc3NhZ2U7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgY29uc3QgZmVlZGJhY2tMaW5rcyA9XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmVlZGJhY2stbGluaycpO1xuICAgIGZlZWRiYWNrTGlua3MuZm9yRWFjaCgobGluazogYW55KSA9PiB7XG4gICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdjbGljaycsXG4gICAgICAgIHRoaXMub25GZWVkYmFja0NsaWNrLmJpbmQodGhpcywgJ3plbmRlc2snKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICAvLyBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrLWxpbmsnKSkge1xuICAgIC8vICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAvLyAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1saW5rJylcbiAgICAvLyAgICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbkZlZWRiYWNrQ2xpY2suYmluZCh0aGlzLCAnemVuZGVzaycpKTtcbiAgICAvLyB9XG4gIH1cblxuICBzYW5pdGl6ZUh0bWwoaHRtbDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgfVxuXG4gIG9uRmVlZGJhY2tDbGljayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5mZWVkYmFja0V2ZW50LmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuYm9keU92ZXJmbG93Q2xhc3MpO1xuICAgIHRoaXMub25DbG9zZUV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIHNlbmRNZXNzYWdlV2l0aFRpbGUocHJvbXB0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlucHV0ID0gcHJvbXB0O1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICB9XG4gIGlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xuICBmZXRjaERhdGEobXNnPW51bGwpIHtcbiAgICB0aGlzLmlucHV0ID0gbXNnIHx8IHRoaXMuaW5wdXQ/LnRyaW0oKTtcbiAgICBpZiAoIXRoaXMuaW5wdXQgfHwgdGhpcy5sb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkodGhpcy5pbnB1dCksXG4gICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXG4gICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgaXNDb2xsYXBzZWRUcnVlOiBmYWxzZVxuICAgIH0pO1xuXG5cbiAgICB0cnkge1xuXG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IHRoaXMubXlJbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJ2hpZGRlbic7IC8vIFJlc2V0IHRoZSBoZWlnaHRcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IGA2MnB4YDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuXG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5haVJlc3BvbnNlID0gJyc7XG4gICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJsID1cbiAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2FpL2Fza2AvLyArXG4gICAgLy8gKHRoaXMudXNlT3BlbkFpID09PSBmYWxzZSA/ICcvbGxtLWhmJyA6ICcnKTtcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMuczI3VG9rZW4sXG4gICAgICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHVzZXJfcXVlc3Rpb246IHRoaXMuaW5wdXQsXG4gICAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcklkLFxuICAgICAgICBib3RfaWQ6IHRoaXMuYm90SWQsXG4gICAgICAgIG1lc3NhZ2VfaWQ6IHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5nZW5lcmF0ZUtleSgpLFxuICAgICAgICBhZ2VudHM6IHRoaXMuYWdlbnRzLmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpLm1hcChwID0+IHAuaWQpLFxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IHRoaXMuY29udmVyc2F0aW9uS2V5LFxuICAgICAgfSksXG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDEgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmlzNDAxID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLm1zZyA9IHRoaXMuaW5wdXQ7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4uZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7ICAvLyBDb250aW51ZSBwcm9jZXNzaW5nIHRoZSByZXNwb25zZVxuICAgICAgfSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSB0aGUgcmVzcG9uc2UgZGF0YVxuICAgICAgICB0aGlzLmlzNDAxID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiAnLCBlcnIpO1xuICAgICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xuICAgICAgfSk7ICAgIFxuXG4gICAgdGhpcy5pbnB1dCA9ICcnO1xuICB9XG4gIGZldGNoRGF0YUZvcihtc2csIGNoYXQpIHtcbiAgICBjb25zdCBpbnB1dE1zZyA9IG1zZz8udHJpbSgpO1xuICAgIGlmICghaW5wdXRNc2cgfHwgdGhpcy5sb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjaGF0LnJlbGF0ZWRMaXN0SXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyB9XG5cbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkoaW5wdXRNc2cpLFxuICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxuICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgIGlzQ29sbGFwc2VkVHJ1ZTogZmFsc2VcbiAgICB9KTtcblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5haVJlc3BvbnNlID0gJyc7XG4gICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJsID1cbiAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2FpL2Fza2AvLyArXG4gICAgLy8gKHRoaXMudXNlT3BlbkFpID09PSBmYWxzZSA/ICcvbGxtLWhmJyA6ICcnKTtcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMuczI3VG9rZW4sXG4gICAgICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHVzZXJfcXVlc3Rpb246IGlucHV0TXNnLFxuICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJJZCxcbiAgICAgICAgYm90X2lkOiB0aGlzLmJvdElkLFxuICAgICAgICBtZXNzYWdlX2lkOiB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuZ2VuZXJhdGVLZXkoKSxcbiAgICAgICAgYWdlbnRzOiB0aGlzLmFnZW50cy5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKS5tYXAocCA9PiBwLmlkKSxcbiAgICAgICAgY29udmVyc2F0aW9uX2lkOiB0aGlzLmNvbnZlcnNhdGlvbktleSxcbiAgICAgIH0pLFxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgdGhpcy5tc2cgPSBtc2c7XG4gICAgICAgICAgdGhpcy5jaGF0ID0gY2hhdDtcbiAgICAgICAgICB0aGlzLmlzNDAxID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzRmV0Y2hEYXRhRm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbi5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsgIC8vIENvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIHJlc3BvbnNlXG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIHRoZSByZXNwb25zZSBkYXRhXG4gICAgICAgIHRoaXMuaXM0MDEgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6ICcsIGVycik7XG4gICAgICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB0aGlzLmlucHV0ID0gJyc7XG4gIH1cbiAgZmV0Y2hTbWFsbFRhbGsoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2JvdC9zbWFsbC10YWxrLyR7dGhpcy5ib3RJZH0vJHt0aGlzLnVzZXJJZH1gO1xuXG4gICAgdGhpcy5odHRwXG4gICAgICAuZ2V0PHsgc21hbGxUYWxrOiBzdHJpbmcgfT4odXJsLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgZmV0Y2hpbmcgc21hbGwgdGFsazonLCBlcnJvcik7XG5cbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5zbWFsbFRhbGspIHtcbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnYWknLFxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZShyZXNwb25zZS5zbWFsbFRhbGspLFxuICAgICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxuICAgICAgICAgICAgaXNGZWVkYmFja01zZzogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSB0aGlzLmNoYXRMb2cubGVuZ3RoIC0gMjtcbiAgICAgICAgICAvLyB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcmVhZEFsbENodW5rcyA9IChzdHJlYW06IGFueSkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICBjb25zdCBhbGxTdWdnZXN0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIHJlYWRlci5jbG9zZWQuY2F0Y2goKGVycjogYW55KSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgc3RyZWFtOiAnLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICBzdGFydDogKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVtcChjb250cm9sbGVyLCByZWFkZXIsIGFsbFN1Z2dlc3Rpb25zKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgcHVtcChjb250cm9sbGVyOiBhbnksIHJlYWRlcjogYW55LCBhbGxTdWdnZXN0aW9uczogc3RyaW5nW10pIHtcbiAgICByZWFkZXIucmVhZCgpLnRoZW4oKHsgZG9uZSwgdmFsdWUgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBsYXN0SXRlbSA9IHRoaXMuY2hhdExvZ1t0aGlzLmNoYXRMb2cubGVuZ3RoIC0gMV07XG5cbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGxhc3RJdGVtLm1lc3NhZ2UgPSB0aGlzLnByb2Nlc3NNZXNzYWdlRm9yRGlzcGxheShsYXN0SXRlbS5tZXNzYWdlKTtcbiAgICAgICAgdGhpcy5jaGF0TG9nLnBvcCgpO1xuICAgICAgICB0aGlzLmNoYXRMb2cucHVzaChsYXN0SXRlbSk7XG4gICAgICAgIGlmIChhbGxTdWdnZXN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ3N1Z2dlc3Rpb25zJyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiBhbGxTdWdnZXN0aW9uc1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XG4gICAgICAgIC8vIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuc2hvd1N0YXJ0QWdhaW4gPSB0cnVlO1xuXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgIHRoaXMuZmV0Y2hTbWFsbFRhbGsoKTtcbiAgICAgICAgLy8gfSwxMDAwKVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWNvZGVkQ2h1bmsgPSB0aGlzLmRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuYWlSZXNwb25zZSArPSBkZWNvZGVkQ2h1bms7XG4gICAgICBpZiAobGFzdEl0ZW0udHlwZSA9PT0gJ2FpJykge1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9uc01hdGNoID0gdGhpcy5haVJlc3BvbnNlLm1hdGNoKC88c3VnPiguKj8pPFxcL3N1Zz4vZyk7XG4gICAgICAgIGlmIChzdWdnZXN0aW9uc01hdGNoKSB7XG4gICAgICAgICAgc3VnZ2VzdGlvbnNNYXRjaC5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5haVJlc3BvbnNlID0gdGhpcy5haVJlc3BvbnNlLnJlcGxhY2UobWF0Y2gsIFwiXCIpO1xuICAgICAgICAgICAgYWxsU3VnZ2VzdGlvbnMucHVzaChtYXRjaD8ucmVwbGFjZSgvPFxcLz9zdWc+L2csIFwiXCIpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhc3RJdGVtLm1lc3NhZ2UgPSB0aGlzLmFpUmVzcG9uc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcblxuICAgICAgICBsZXQgYWlGb3JtYXR0ZWREYXRhOiBhbnk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygncGFyc2luZyBqc29uICcpXG4gICAgICAgICAgYWlGb3JtYXR0ZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKHRoaXMuYWlSZXNwb25zZSkpXG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3BhcnNpbmcganNvbiAyJylcbiAgICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YSA9IEpTT04ucGFyc2UodGhpcy5haVJlc3BvbnNlKVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJ3BhcnNpbmcganNvbiBkb25lJylcblxuICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhICYmIGFpRm9ybWF0dGVkRGF0YT8uc2VjdGlvbl9pZD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSAnY29tcGFueV9zZWFyY2gnIHx8IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkID09ICd1c2VyX3NlYXJjaCcgfHwgYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gJ2luZHVzdHJ5X2NvbXBhbnlfc2VhcmNoJykge1xuICAgICAgICAgICAgdGhpcy5mZXRjaE15Q29ubmVjdGlvbnMoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gdGhpcy5teVVwY29taW5nU2Vzc2lvbkFjdGlvbikge1xuICAgICAgICAgICAgdmFyIHNwZWFrZXJJZHMgPSBbXTtcbiAgICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YS5jb250ZW50Py5mb3JFYWNoKHNlc3Npb24gPT4ge1xuICAgICAgICAgICAgICBzcGVha2VySWRzID0gWy4uLnNwZWFrZXJJZHMsIC4uLnNlc3Npb24uc3BlYWtlcnNdXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHNwZWFrZXJJZHM/Lmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgIHRoaXMuZ2V0U3BlYWtlcnNCeVN0YWZmSWRzKHNwZWFrZXJJZHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSB0aGlzLmFkZFRvTXlBZ2VuZGFBY3Rpb24gJiYgYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XG4gICAgICAgICAgICAgIHNlY3Rpb25JZDogYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQsXG4gICAgICAgICAgICAgIHNlc3Npb25JZHM6IGFpRm9ybWF0dGVkRGF0YS5jb250ZW50XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSB0aGlzLmNvbm5lY3RPckZvbGxvd0FjdGlvbikge1xuICAgICAgICAgICAgbGV0IHVzZXJzTGVuID0gYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnQ/Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmICh1c2Vyc0xlbiA+IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGFnZS5uZXh0KHtcbiAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IFwib3Blbl9uZXR3b3JraW5nX2RyYXdlclwiLFxuICAgICAgICAgICAgICAgIHNlYXJjaDogYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnRcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHVzZXJzTGVuID09IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGFnZS5uZXh0KHtcbiAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkLFxuICAgICAgICAgICAgICAgIGNvbm5ldFVzZXJJZHM6IFthaUZvcm1hdHRlZERhdGEuY29udGVudFswXS51c2VySWRdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFpRm9ybWF0dGVkRGF0YS5pc19vcGVuX3BhZ2UgPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XG4gICAgICAgICAgICAgIHNlY3Rpb25JZDogYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQsXG4gICAgICAgICAgICAgIHNlYXJjaDogYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyb3dzZXIoKSkge1xuICAgICAgICAgICAgICBhaUZvcm1hdHRlZERhdGEubWVzc2FnZSArPSBcIlxcblxcblwiICsgJzxhIGlkPVwiY2xvc2VCb3ROb3dcIj5DbGljayBIZXJlPC9hPiB0byBzZWUgcmVzdWx0cy4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdhaScsXG4gICAgICAgICAgICBtZXNzYWdlOiBhaUZvcm1hdHRlZERhdGEubWVzc2FnZSxcbiAgICAgICAgICAgIGFjdGlvbjogYWlGb3JtYXR0ZWREYXRhLFxuICAgICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyb3dzZXIoKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkQ2xvc2VCb3RDbGlja0V2ZW50KCk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuYWlSZXNwb25zZSA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ2FpJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuYWlSZXNwb25zZSxcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IHRoaXMuY2hhdExvZy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuXG4gICAgICAvLyBFbnF1ZXVlIHRoZSBuZXh0IGRhdGEgY2h1bmsgaW50byBvdXIgdGFyZ2V0IHN0cmVhbVxuICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKTtcbiAgICAgIHRoaXMucHVtcChjb250cm9sbGVyLCByZWFkZXIsIGFsbFN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1Ym1pdEZlZWRiYWNrKGZsYWc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmZlZWRiYWNrRG9uZSA9IHRydWU7XG4gICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gbnVsbDtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9ib3QvZmVlZGJhY2tgO1xuICAgIGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGZsYWcsIHVzZXJfaWQ6IHRoaXMudXNlcklkLCBib3RfaWQ6IHRoaXMuYm90SWQgfSksXG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2FpJyxcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgdGhpcy50aHVtYnNVcE1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGBHcmVhdC4gTWF5IEkgYXNzaXN0IHlvdSB3aXRoIGFueXRoaW5nIGVsc2U/YCxcbiAgICAgICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXG4gICAgICAgICAgaXNGZWVkYmFja01zZzogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5mZWVkYmFja0RvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICAgIHR5cGU6ICdhaScsXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2UoXG4gICAgICAgICAgdGhpcy50aHVtYnNEb3duTWVzc2FnZXNbdGhpcy50aHVtYnNEb3duTXNnSW5kZXhdXG4gICAgICAgICksXG4gICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICAgICAgaXNGZWVkYmFja01zZzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50aHVtYnNEb3duTXNnSW5kZXggPVxuICAgICAgICAodGhpcy50aHVtYnNEb3duTXNnSW5kZXggKyAxKSAlIHRoaXMudGh1bWJzRG93bk1lc3NhZ2VzLmxlbmd0aDtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5mZWVkYmFja0RvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQoKSB7XG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gIH1cblxuICBoYW5kbGVVcENsaWNrKGlkeDogYW55KSB7XG4gICAgaWYgKHRoaXMuZmVlZGJhY2tEb25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdWJtaXRGZWVkYmFjayh0cnVlKTtcbiAgICB0aGlzLmNoYXRMb2dbaWR4XS5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS5saWtlZDtcblxuICAgIGlmICh0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkKSB7XG4gICAgICB0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkID0gIXRoaXMuY2hhdExvZ1tpZHhdLnVubGlrZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVEb3duQ2xpY2soaWR4OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mZWVkYmFja0RvbmUpIHJldHVybjtcbiAgICB0aGlzLnN1Ym1pdEZlZWRiYWNrKGZhbHNlKTtcbiAgICB0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkID0gIXRoaXMuY2hhdExvZ1tpZHhdLnVubGlrZWQ7XG4gICAgaWYgKHRoaXMuY2hhdExvZ1tpZHhdLmxpa2VkKVxuICAgICAgdGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQgPSAhdGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQ7XG4gIH1cbiAgaGFuZGxlQ29weUNsaWNrKGluZGV4OiBhbnkpIHtcbiAgICAvLyBDb3B5IHRoZSBtZXNzYWdlIHRvIHRoZSBjbGlwYm9hcmRcbiAgICBjb25zdCBjb250ZW50VG9Db3B5ID0gdGhpcy5jaGF0TG9nW2luZGV4XS5tZXNzYWdlO1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnRUb0NvcHkpLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gSW5kaWNhdGUgdGhhdCB0aGUgbWVzc2FnZSB3YXMgY29waWVkXG4gICAgICB0aGlzLmNoYXRMb2dbaW5kZXhdLmNvcGllZCA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAvLyBSZXNldCB0aGUgY29waWVkIHN0YXRlIGFmdGVyIGEgZGVsYXlcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYXRMb2dbaW5kZXhdLmNvcGllZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LCAyMDAwKTsgLy8gUmVzZXQgYWZ0ZXIgMiBzZWNvbmRzXG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbSgpIHtcbiAgICBsZXQgY291bnRlciA9IDA7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmNoYXRNYWluLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICAgdGhpcy5jaGF0TWFpbi5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIGlmIChjb3VudGVyKysgPiA1KSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICB9LCA1KTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IGFueSkge1xuICAgIGNvbnNvbGUuaW5mbyhcImluY29taW5nIGFjdGlvbiBmcm9tIHRoZSBjaGF0Ym90IEFJXCIpXG4gICAgY29uc29sZS5pbmZvKGFjdGlvbilcblxuICAgIGlmIChhY3Rpb24/LmNvbnRlbnQpIHtcblxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgZHJhd2VyIGlzIGluaXRpYWxseSBvcGVuIGFuZCBhcHBseSBvdmVyZmxvdyBoaWRkZW4gdG8gYm9keSBpZiBzb1xuICAgIGlmICh0aGlzLmRyYXdlci5vcGVuZWQpIHtcbiAgICAgIHRoaXMuc2V0Qm9keU92ZXJmbG93KCk7XG4gICAgfVxuXG4gICAgLy8gTGlzdGVuIHRvIGNoYW5nZXMgaW4gdGhlIGRyYXdlciBiZWluZyBvcGVuZWQgb3IgY2xvc2VkXG4gICAgdGhpcy5kcmF3ZXIub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgob3BlbmVkOiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Qm9keU92ZXJmbG93KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUJvZHlPdmVyZmxvdygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kcmF3ZXIub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgob3BlbmVkKSA9PiB7XG4gICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLm15VGV4dGFyZWEgJiYgdGhpcy5teVRleHRhcmVhLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubXlUZXh0YXJlYS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7IC8vIEZvY3VzIG9uIHRoZSB0ZXh0YXJlYVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEJvZHlPdmVyZmxvdygpIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuYm9keU92ZXJmbG93Q2xhc3MpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCb2R5T3ZlcmZsb3coKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlPdmVyZmxvd0NsYXNzKTtcbiAgfVxuXG4gIGdldFNwZWFrZXJzQnlTdGFmZklkcyhpZHMpIHtcbiAgICBjb25zdCB1cmwgPVxuICAgICAgYCR7dGhpcy5lbnZpcm9ubWVudC5VU0VSU19BUEl9L2V2ZW50cy8ke3RoaXMuZXZlbnRJZH0vdXNlcnMvZ2V0LWJ5LXN0YWZmLWlkc2BcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IFwiQmVhcmVyIFwiICsgXCJ5b3VyX3Rva2VuX2hlcmVcIixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShpZHMpLFxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsgLy8gUGFyc2UgdGhlIEpTT04gYm9keSBvZiB0aGUgcmVzcG9uc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05ldHdvcmsgcmVzcG9uc2Ugd2FzIG5vdCBvay4nKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZGF0YS5mb3JFYWNoKHNwZWFrZXIgPT4ge1xuICAgICAgICAgICAgdGhpcy5zcGVha2Vyc1tzcGVha2VyLmlkXSA9IHNwZWFrZXI7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhdGE6JywgZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIHBlcmZvcm1TZXNzaW9uQWN0aW9uKHNlc3Npb25JZCwgYWN0aW9uKSB7XG4gICAgdGhpcy5zZXNzaW9uQWN0aW9ucy5uZXh0KHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIGFjdGlvblxuICAgIH0pO1xuICB9XG5cbiAgYWRkQ2xvc2VCb3RDbGlja0V2ZW50KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjY2xvc2VCb3ROb3cnKTtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oZWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlQm90Lm5leHQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlzTW9iaWxlQnJvd3NlcigpIHtcbiAgICByZXR1cm4gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICB9XG5cbiAgY29ubmVjdFRvVXNlcih1c2VySWQpIHtcbiAgICB0aGlzLmNvbm5lY3RXaXRoVXNlci5lbWl0KHtcbiAgICAgIGNvbm5lY3Q6ICF0aGlzLmNhbkRpc2Nvbm5lY3QodXNlcklkKSxcbiAgICAgIHVzZXJJZFxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZldGNoTXlDb25uZWN0aW9ucygpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mZXRjaFBlbmRpbmdSZXF1ZXN0cygpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBzY2hlZHVsZU1lZXRpbmdXaXRoVXNlcih1c2VyKSB7XG4gICAgdGhpcy5zY2hlZHVsZU1lZXRpbmcuZW1pdCh1c2VyKTtcbiAgfVxuXG4gIGNhbkNvbm5lY3QodXNlcklkKSB7XG4gICAgcmV0dXJuICEodGhpcy5jYW5EaXNjb25uZWN0KHVzZXJJZCkgfHwgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZmluZChhID0+IGEgPT0gdXNlcklkKSlcbiAgfVxuXG4gIGNhbkRpc2Nvbm5lY3QodXNlcklkKSB7XG4gICAgcmV0dXJuIHRoaXMubXlDb25uZWN0aW9ucy5maW5kKGNvbm4gPT4gY29ubi51c2VySWQgPT0gdXNlcklkKVxuICB9XG5cbiAgZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgJ2FwaUtleSc6IHRoaXMuYXV0b2dlbktleVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuVVNFUlNfQVBJfS9ldmVudHMvJHt0aGlzLmV2ZW50SWR9L2Nvbm5lY3Rpb24tcmVxdWVzdHMvYXV0b2dlbi9wZW5kaW5nLXNlbnQtcmVxdWVzdHM/dXNlcklkPSR7dGhpcy51c2VySWR9YCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMgPSByZXM7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcGVuZGluZyByZXF1ZXN0czogJywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBmZXRjaE15Q29ubmVjdGlvbnMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgJ2FwaUtleSc6IHRoaXMuYXV0b2dlbktleVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuVVNFUlNfQVBJfS9ldmVudHMvJHt0aGlzLmV2ZW50SWR9L3VzZXJzLWNvbm5lY3Rpb25zL2F1dG9nZW4/dXNlcklkPSR7dGhpcy51c2VySWR9YCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5teUNvbm5lY3Rpb25zID0gcmVzO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBlbmRpbmcgcmVxdWVzdHM6ICcsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cblxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBhZ2VudHM6IGFueTtcbiAgc2VsZWN0ZWRBZ2VudHMgPSBbXTtcbiAgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgLy8gVG9nZ2xlIHRoZSBkcm9wZG93biB2aXNpYmlsaXR5XG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbjtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXG4gICAgdGhpcy5hZ2VudHM/LmZvckVhY2goYWdlbnQgPT4gYWdlbnQuc2VsZWN0ZWQgPSBmYWxzZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gIH1cblxuICBvbkFnZW50Q2hhbmdlKGFnZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvL2FnZW50LnNlbGVjdGVkID0gIWFnZW50LnNlbGVjdGVkO1xuICAgIC8vY29uc29sZS5sb2coYWdlbnQpO1xuICAgIGxldCBhZ2VudEZvdW5kID0gdGhpcy5hZ2VudHMuZmlsdGVyKHAgPT4gcC5pZCA9PSBhZ2VudC5pZCk7XG4gICAgaWYgKGFnZW50Rm91bmQgJiYgYWdlbnRGb3VuZC5sZW5ndGggPiAwKSB7XG4gICAgICBhZ2VudEZvdW5kWzBdLnNlbGVjdGVkID0gIWFnZW50Rm91bmRbMF0uc2VsZWN0ZWQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFyZUFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50cz8uZXZlcnkoYWdlbnQgPT4gIWFnZW50LnNlbGVjdGVkKTtcbiAgfVxuXG4gIGdldERyb3Bkb3duSGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGVjdGVkQWdlbnRzID0gdGhpcy5hZ2VudHM/LmZpbHRlcihhZ2VudCA9PiBhZ2VudC5zZWxlY3RlZCk7XG4gICAgaWYgKHNlbGVjdGVkQWdlbnRzICYmIHNlbGVjdGVkQWdlbnRzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnQWxsIEFnZW50cyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEFnZW50cz8ubGVuZ3RoID4gMSA/IGAke3NlbGVjdGVkQWdlbnRzPy5sZW5ndGh9IEFnZW50cyBTZWxlY3RlZGAgOiBgJHtzZWxlY3RlZEFnZW50cz8ubGVuZ3RofSBBZ2VudCBTZWxlY3RlZGA7XG4gICAgfVxuICB9XG4gIGZldGNoQWdlbnRzX2h0dHAoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkFHRU5UU19BUEl9L0NvUGlsb3QvJHt0aGlzLmJvdElkfS9hY3RpdmUtYWdlbnRzYDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHt9LCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMuYWdlbnRzID0gcmVzLm1hcChhZ2VudCA9PiAoe1xuICAgICAgICAgICAgLi4uYWdlbnQsXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2VcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgcmV0dXJuIG9mKHJlcyk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXRib3QgY29uZmlnOiAnLCBlcnJvcik7XG5cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cblxuICBmZXRjaEFnZW50cygpIHtcbiAgICB0aGlzLmZldGNoQWdlbnRzX2h0dHAoKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cblxuXG4gIC8vIGV2ZW50cy8ke2V2ZW50SWR9L3VzZXJzLWNvbm5lY3Rpb25zXG4gIHByb2Nlc3NNZXNzYWdlRm9yRGlzcGxheShtYXJrZG93bjogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGlmICghbWFya2Rvd24gfHwgIShtYXJrZG93bi5sZW5ndGggPiAwKSkge1xuICAgICAgY29uc29sZS5lcnJvcignSW5wdXQgTWFya2Rvd24gaXMgbnVsbCBvciBlbXB0eScpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vY29uc29sZS5sb2coJ01hcmtkb3duIGlucHV0OicsIG1hcmtkb3duKTtcblxuICAgIC8vIENvbnZlcnQgTWFya2Rvd24gaGVhZGVycyB0byBIVE1MIGhlYWRlcnNcbiAgICBsZXQgaHRtbCA9IG1hcmtkb3duLnJlcGxhY2UoL14oI3sxLDZ9KVxccysoLiopJC9nbSwgKG1hdGNoLCBoYXNoZXMsIHRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxldmVsID0gaGFzaGVzLmxlbmd0aDtcbiAgICAgIHJldHVybiBgPGgke2xldmVsfT4ke3RleHR9PC9oJHtsZXZlbH0+YDtcbiAgICB9KTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCdBZnRlciBoZWFkZXIgY29udmVyc2lvbjonLCBodG1sKTtcblxuICAgIC8vIENvbnZlcnQgTWFya2Rvd24gbGlua3MgdG8gSFRNTCBsaW5rc1xuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcWyhbXlxcXV0rKV1cXCgoW14pXSspXFwpL2csICc8YSBocmVmPVwiJDJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT4nKTtcblxuICAgIC8vICBjb25zb2xlLmxvZygnQWZ0ZXIgbGluayBjb252ZXJzaW9uOicsIGh0bWwpO1xuXG4gICAgLy8gQ29udmVydCBNYXJrZG93biBib2xkIHRvIEhUTUwgc3Ryb25nXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvXFwqXFwqKC4qPylcXCpcXCovZywgJzxzdHJvbmc+JDE8L3N0cm9uZz4nKTtcblxuICAgIC8vY29uc29sZS5sb2coJ0FmdGVyIGJvbGQgY29udmVyc2lvbjonLCBodG1sKTtcblxuICAgIC8vIENvbnZlcnQgbmV3IGxpbmVzIHRvIDxicj4gdGFnc1xuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLyg/OlxcclxcbnxcXHJ8XFxuKS9nLCAnPGJyPicpO1xuXG4gICAgLy8gIGNvbnNvbGUubG9nKCdBZnRlciBsaW5lIGJyZWFrcyBjb252ZXJzaW9uOicsIGh0bWwpO1xuXG4gICAgLy8gT3B0aW9uYWw6IFNhbml0aXplIHRoZSBIVE1MIHRvIHByZXZlbnQgWFNTXG4gICAgY29uc3Qgc2FuaXRpemVkSHRtbCA9IHRoaXMuc2FuaXRpemVIdG1sKGh0bWwpO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ1Nhbml0aXplZCBIVE1MOicsIHNhbml0aXplZEh0bWwpO1xuXG4gICAgcmV0dXJuIHNhbml0aXplZEh0bWw7XG4gIH1cbiAgaXNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgaXNDb2xsYXBzZWRGb3JHcmFwaCA9IGZhbHNlO1xuICBpc0NvbGxhcHNlZEZvckZHcmFwaCA9IGZhbHNlO1xuICB0b2dnbGVDb2xsYXBzZSgpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQ29sbGFwc2VHcmFwaCgpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkRm9yR3JhcGggPSAhdGhpcy5pc0NvbGxhcHNlZEZvckdyYXBoO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICB0b2dnbGVDb2xsYXBzZUZHcmFwaCgpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkRm9yRkdyYXBoID0gIXRoaXMuaXNDb2xsYXBzZWRGb3JGR3JhcGg7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIC8vICAgW1xuICAvLyAgIHtcbiAgLy8gICAgIFwidGl0bGVcIjogXCJBSSBOZXdzIEphbnVhcnkgMjAyNDogSW4tRGVwdGggYW5kIENvbmNpc2UgLSBUaGUgQUkgVHJhY2tcIixcbiAgLy8gICAgIFwiZGVzY1wiOiBcIkVhY2ggbW9udGgsIHdlIGNvbXBpbGUgc2lnbmlmaWNhbnQgbmV3cywgdHJlbmRzLCBhbmQgaGFwcGVuaW5ncyBpbiBBSSwgcHJvdmlkaW5nIGRldGFpbGVkIHN1bW1hcmllcyB3aXRoIGtleSBwb2ludHMgaW4gYnVsbGV0IGZvcm0gZm9yIGNvbmNpc2UgeWV0IGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcuXCIsXG4gIC8vICAgICBcImxpbmtcIjogXCJodHRwczovL3RoZWFpdHJhY2suY29tL2FpLW5ld3MtamFudWFyeS0yMDI0L1wiXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICBcInRpdGxlXCI6IFwiVG9wIEFJIE5ld3MsIEphbnVhcnkgMjAyNCAtIEV2ZXJ5cGl4ZWwgSm91cm5hbFwiLFxuICAvLyAgICAgXCJkZXNjXCI6IFwiSW4gdGhpcyBtb250aGx5IHJvdW5kdXAsIHdlIHNwb3RsaWdodCB0aGUgdG9wIEFJIG5ld3Mgc3RvcmllcyBmcm9tIEphbnVhcnksIGluY2x1ZGluZyB0aGUgT3BlbkFJIHZzLiBUaGUgTmV3IFlvcmsgVGltZXMgTGF3c3VpdC5cIixcbiAgLy8gICAgIFwibGlua1wiOiBcImh0dHBzOi8vam91cm5hbC5ldmVyeXBpeGVsLmNvbS90b3AtYWktbmV3cy1qYW51YXJ5LTIwMjRcIlxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgXCJ0aXRsZVwiOiBcIkFJIE5ld3MgSnVseSAyMDI0OiBJbi1EZXB0aCBhbmQgQ29uY2lzZSAtIFRoZSBBSSBUcmFja1wiLFxuICAvLyAgICAgXCJkZXNjXCI6IFwiVGhpcyBwYWdlIGZlYXR1cmVzIEFJIE5ld3MgZm9yIEp1bHkgMjAyNCwgaGlnaGxpZ2h0aW5nIHNpZ25pZmljYW50IGV2ZW50cyBzdWNoIGFzIENhbnZhIGFjcXVpcmluZyBMZW9uYXJkbyBBSS5cIixcbiAgLy8gICAgIFwibGlua1wiOiBcImh0dHBzOi8vdGhlYWl0cmFjay5jb20vYWktbmV3cy1qdWx5LTIwMjQtaW4tZGVwdGgtYW5kLWNvbmNpc2UvXCJcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIFwidGl0bGVcIjogXCJKYW51YXJ5IG5ld3Mgcm91bmR1cDogV2hhdCdzIG5ldyBpbiB0aGUgd29ybGQgb2YgQUk/IC0gUGx1cmFsc2lnaHRcIixcbiAgLy8gICAgIFwiZGVzY1wiOiBcIk9wZW5BSeKAmXMgbmV3IEdQVCBzdG9yZSwgYnVzaW5lc3MtcmVhZHkgQ2hhdEdQVCBwbGFucywgYW5kIGEgcHJlZGljdGVkIHJpc2UgaW4gQUktcG93ZXJlZCBjeWJlcmNyaW1lLlwiLFxuICAvLyAgICAgXCJsaW5rXCI6IFwiaHR0cHM6Ly93d3cucGx1cmFsc2lnaHQuY29tL3Jlc291cmNlcy9ibG9nL2RhdGEvYWktdGhpcy1tb250aC1qYW51YXJ5LTIwMjRcIlxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgXCJ0aXRsZVwiOiBcIkFJIE5ld3MgQXVndXN0IDIwMjQ6IEluLURlcHRoIGFuZCBDb25jaXNlIC0gVGhlIEFJIFRyYWNrXCIsXG4gIC8vICAgICBcImRlc2NcIjogXCJUaGlzIHBhZ2UgZmVhdHVyZXMgQUkgTmV3cyBmb3IgQXVndXN0IDIwMjQsIHdpdGggaGlnaGxpZ2h0cyBzdWNoIGFzIE52aWRpYSBkZWxheWluZyB0aGUg4oCcQmxhY2t3ZWxs4oCdIEIyMDAgQUkgY2hpcHMgZGVsaXZlcnkuXCIsXG4gIC8vICAgICBcImxpbmtcIjogXCJodHRwczovL3RoZWFpdHJhY2suY29tL2FpLW5ld3MtYXVndXN0LTIwMjQtaW4tZGVwdGgtYW5kLWNvbmNpc2UtZHVwbGljYXRlL1wiXG4gIC8vICAgfVxuICAvLyBdXG4gIGRhdGVUaW1lID0geyBub3c6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9O1xuICAvLyBFeHRyYWN0cyB0aGUgZG9tYWluIGZyb20gYSBVUkxcbiAgZ2V0RG9tYWluTmFtZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgaG9zdG5hbWUgfSA9IG5ldyBVUkwodXJsKTtcbiAgICAgIHJldHVybiBob3N0bmFtZS5yZXBsYWNlKC9ed3d3XFwuLywgJycpOyAvLyBSZW1vdmUgJ3d3dy4nIGlmIHByZXNlbnRcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGVzIHRoZSBmYXZpY29uIFVSTFxuICBnZXRGYXZpY29uVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkb21haW4gPSB0aGlzLmdldERvbWFpbk5hbWUodXJsKTtcbiAgICByZXR1cm4gYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vczIvZmF2aWNvbnM/c3o9MTI4JmRvbWFpbj0ke2RvbWFpbn1gO1xuICB9XG4gIG9uQ2FyZENsaWNrKCk6IHZvaWQge1xuXG4gICAgdGhpcy5zb3VyY2VzRHJhd2VyLm9wZW4oKTtcbiAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90Y2xvc2VwbGF5Z3JvdW5kYnV0dG9uJyk7XG4gICAgaWYgKGJ1dHRvbikge1xuICAgICAgYnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICB9XG4gIG9uQ2xvc2VTb3VyY2UoKSB7XG4gICAgdGhpcy5zb3VyY2VzRHJhd2VyLmNsb3NlKCk7XG4gICAgdGhpcy5pc0RyYXdlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWVkZWRcbiAgICB0aGlzLm9uRHJhd2VyQ2xvc2VkKCk7XG4gIH1cbiAgb25EcmF3ZXJDbG9zZWQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzRHJhd2VyT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWVkZWRcbiAgICAgIC8vIFVzZSBuZ0NsYXNzIHRvIGR5bmFtaWNhbGx5IGFwcGx5IHRoZSBjbGFzc1xuICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdGNsb3NlcGxheWdyb3VuZGJ1dHRvbicpO1xuICAgICAgaWYgKGJ1dHRvbikge1xuICAgICAgICBidXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cbiAgaXNEcmF3ZXJPcGVuID0gdHJ1ZTtcblxuICB0b2dnbGVEcmF3ZXIodG9kbykge1xuICAgIHRoaXMuaXNEcmF3ZXJPcGVuID0gdG9kbztcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy51cGRhdGVCdXR0b25WaXNpYmlsaXR5KCk7XG4gIH1cbiAgdXBkYXRlQnV0dG9uVmlzaWJpbGl0eSgpIHtcbiAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90Y2xvc2VwbGF5Z3JvdW5kYnV0dG9uJyk7XG4gICAgaWYgKGJ1dHRvbikge1xuICAgICAgYnV0dG9uLnN0eWxlLmRpc3BsYXkgPSB0aGlzLmlzRHJhd2VyT3BlbiA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuICB9XG4gIG9wZW5MaW5rSW5OZXdUYWIobGluazogc3RyaW5nKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4obGluaywgJ19ibGFuaycpO1xuICB9XG4gIGFkanVzdFRleHRhcmVhSGVpZ2h0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRleHRhcmVhID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nOyAvLyBSZXNldCB0aGUgaGVpZ2h0XG4gICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gYCR7dGV4dGFyZWEuc2Nyb2xsSGVpZ2h0fXB4YDsgLy8gQWRqdXN0IGhlaWdodCB0byBtYXRjaCBjb250ZW50XG4gICAgLy8gRW5zdXJlIHRoZSBoZWlnaHQgZG9lc24ndCBleGNlZWQgdGhlIG1heC1oZWlnaHQgc2V0IGluIENTU1xuICAgIGlmICh0ZXh0YXJlYS5zY3JvbGxIZWlnaHQgPiAxNTApIHtcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IGAxNTBweGA7IC8vIEFkanVzdCBoZWlnaHQgdG8gbWF0Y2ggY29udGVudFxuICAgICAgdGV4dGFyZWEuc3R5bGUub3ZlcmZsb3dZID0gJ2F1dG8nOyAvLyBFbmFibGUgc2Nyb2xsaW5nIGlmIGNvbnRlbnQgZXhjZWVkcyA0MDBweFxuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJzsgLy8gSGlkZSBzY3JvbGxiYXIgaWYgY29udGVudCBpcyB3aXRoaW4gbGltaXRzXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
1185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9tdWRkYXNzaXJuYXl5ZXIvRGV2ZWxvcG1lbnQvU29jaWFsMjcvSGl2ZUFJLVBhY2thZ2VzL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhdC1kcmF3ZXIvY2hhdC1kcmF3ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUVULFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFTMUQsTUFBTSxPQUFPLG1CQUFtQjtJQThGOUIsWUFDVSxHQUFzQixFQUN0QixJQUFnQixFQUNoQixTQUF1QixFQUN2QixVQUFzQixFQUN0QixRQUFtQixFQUNuQixhQUE0QixFQUM1QixtQkFB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S0FBSzs0QkFDTCxNQUFNOzJCQUNOLE1BQU07dUJBQ04sTUFBTTs2QkFDTixNQUFNO3VCQUNOLE1BQU07OEJBQ04sTUFBTTs4QkFDTixNQUFNOzJCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RHJhd2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmb3JtYXROb3csIGZvcm1hdFRpbWVTdGFtcHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBkZXZfZW52aXJvbm1lbnQsIHByb2RfZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNvY2tldFNlcnZpY2UgfSBmcm9tICcuLi9zb2NrZXQtc2VydmljZS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoaXZlZ3B0LWNoYXQtZHJhd2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtZHJhd2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1kcmF3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXREcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NoYXRNYWluJykgcHJpdmF0ZSBjaGF0TWFpbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlJbnB1dCcpIHByaXZhdGUgbXlJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZHJlbignY2xvc2VwbGF5Z3JvdW5kYnV0dG9uJykgY2xvc2VQbGF5Z3JvdW5kQnV0dG9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkKCdkcmF3ZXInKSBkcmF3ZXIhOiBNYXREcmF3ZXI7XG4gIEBWaWV3Q2hpbGQoJ3NvdXJjZXNEcmF3ZXInKSBzb3VyY2VzRHJhd2VyITogTWF0RHJhd2VyO1xuICBwcml2YXRlIGJvZHlPdmVyZmxvd0NsYXNzID0gJ2JvZHktb3ZlcmZsb3ctaGlkZGVuJztcbiAgQFZpZXdDaGlsZCgnbXlUZXh0YXJlYScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBteVRleHRhcmVhITogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PjsgLy8gUmVmZXJlbmNlIHRvIHRoZSB0ZXh0YXJlYVxuICBpc0NvbGxhcHNlZFRydWUgPSBmYWxzZTtcbiAgQElucHV0KCkgY29waWxvdE5hbWU6IHN0cmluZyA9IFwiSGl2ZVhHUFRcIjtcbiAgQElucHV0KCkgZmlyc3ROYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBsYXN0TmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgYXBpS2V5ITogc3RyaW5nO1xuICBASW5wdXQoKSBiZ0J1YmJsZUFpITogc3RyaW5nO1xuICBASW5wdXQoKSBiZ0J1YmJsZVVzZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJnR3JhZGllbnQhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgYm90TmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgYm90U2tpbGxzITogc3RyaW5nO1xuICBASW5wdXQoKSBib3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY2xvc2VCdXR0b25Db2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgY2xvc2VCdXR0b25iZ0NvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBjcmVkZW50aWFscyE6IFtdO1xuICBASW5wdXQoKSBkYXRlVGltZUNvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRlVGV4dENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBldmVudElkITogc3RyaW5nO1xuICBASW5wdXQoKSBzMjdUb2tlbiE6IHN0cmluZztcbiAgQElucHV0KCkgZXZlbnROYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBib3RJY29uITogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtRmllbGRCZ0NvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtRmllbGRUZXh0Q29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZ1bGxWaWV3ITogYm9vbGVhbjtcbiAgQElucHV0KCkgZ3JhZGllbnRDb2xvcnMhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgZ3JlZXRpbmchOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0Q29sb3JBaSE6IHN0cmluZztcbiAgQElucHV0KCkgbWVzc2FnZVRleHRDb2xvclVzZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJ1bGVzITogc3RyaW5nO1xuICBASW5wdXQoKSBzZW5kQnV0dG9uQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbmRCdXR0b25UZXh0Q29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dDbG9zZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRodW1ic0Rvd25NZXNzYWdlcyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSB0aHVtYnNVcE1lc3NhZ2UhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpbWV6b25lITogc3RyaW5nO1xuICBASW5wdXQoKSB1bmtub3duUmVzcG9uc2VzITogW107XG4gIEBJbnB1dCgpIHVzZU9wZW5BaSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHVzZXJJZCE6IHN0cmluZztcbiAgQElucHV0KCkgaXNEZXYhOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGFnYWluQnV0dG9uQ29sb3IhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgYWdhaW5CdXR0b25UZXh0Q29sb3IhOiBzdHJpbmdbXTtcbiAgQE91dHB1dCgpIGZlZWRiYWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQ2xvc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9wZW5QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZXNzaW9uQWN0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xvc2VCb3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNvbm5lY3RXaXRoVXNlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2NoZWR1bGVNZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZWZyZXNoVG9rZW4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBhdXRvZ2VuS2V5ID0gXCJBdXRvZ2VuX2VESlR0RVUtTkIwUnRJcHpxMXdcIlxuICBhZGRUb015QWdlbmRhQWN0aW9uID0gXCJhZGRfdG9fbXlfYWdlbmRhXCI7XG4gIG15VXBjb21pbmdTZXNzaW9uQWN0aW9uID0gXCJteV91cGNvbW1pbmdfc2Vzc2lvblwiO1xuICBjb25uZWN0T3JGb2xsb3dBY3Rpb24gPSBcImNvbm5lY3Rfb3JfZm9sbG93XCI7XG4gIGFpUmVzcG9uc2U6IHN0cmluZyA9ICcnO1xuICBjaGF0TG9nOiBhbnlbXSA9IFtdO1xuICBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG4gIGZlZWRiYWNrRG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuICBncmVldGluZ01zZzogc3RyaW5nID0gJyc7XG4gIGhhc0JhY2tkcm9wVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW5wdXQ6IHN0cmluZyA9ICcnO1xuICBsaXN0ZW5lckFkZGVkID0gZmFsc2U7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbW9kZTogc3RyaW5nID0gJ292ZXInO1xuICBxdWlja1Byb21wdHM6IGFueVtdID0gW107XG4gIHRodW1ic0Rvd25Nc2dJbmRleCA9IDA7XG4gIHVzZXJOYW1lOiBzdHJpbmcgPSAnJztcbiAgc2hvd1N0YXJ0QWdhaW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJT1NEZXZpY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0ZlZWRCYWNrSWNvbnNJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXIgPSAxO1xuICBzcGVha2VycyA9IFtdO1xuICBlbnZpcm9ubWVudDoge1xuICAgIFVTRVJTX0FQSSxcbiAgICBCQVNFX1VSTCxcbiAgICBBR0VOVFNfQVBJXG4gIH07XG4gIHBlbmRpbmdSZXF1ZXN0czogYW55O1xuICBteUNvbm5lY3Rpb25zOiBhbnk7XG4gIGNvbnZlcnNhdGlvbktleTogc3RyaW5nO1xuICBpc0ZldGNoRGF0YUZvcjogYm9vbGVhbjtcbiAgaXM0MDE6IGJvb2xlYW47XG4gIG1zZzogYW55O1xuICBjaGF0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzb2NrZXRTZXJ2aWNlOiBTb2NrZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udmVyc2F0aW9uU2VydmljZTogQ29udmVyc2F0aW9uU2VydmljZVxuICAgIC8vIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtXG4gICkge1xuICAgIHRoaXMuY2hhdE1haW4gPSBuZXcgRWxlbWVudFJlZihudWxsKTtcblxuICAgIC8vIGlmICh0aGlzLnBsYXRmb3JtLklPUykge1xuICAgIC8vICAgdGhpcy5pc0lPU0RldmljZSA9IHRydWU7XG4gICAgLy8gfVxuXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ25nIG9uIGNoYW5nZXMnKTtcbiAgICBpZiAoY2hhbmdlcy5zMjdUb2tlbikge1xuICAgICAgY29uc29sZS5sb2coJ3MyN1Rva2VuIGNoYW5nZWQ6JywgY2hhbmdlcy5zMjdUb2tlbik7XG4gICAgICBpZiAoY2hhbmdlcy5zMjdUb2tlbi5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5zMjdUb2tlbi5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzMjdUb2tlbiBjaGFuZ2VkIHByZXZpb3VzOicsIGNoYW5nZXMuczI3VG9rZW4ucHJldmlvdXNWYWx1ZSwgJyBjdXJyZW50OicsIGNoYW5nZXMuczI3VG9rZW4uY3VycmVudFZhbHVlLCApO1xuICAgICAgICB0aGlzLnMyN1Rva2VuID0gY2hhbmdlcy5zMjdUb2tlbi5jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgY29uc29sZS5sb2coJ2lzRmV0Y2hEYXRhRm9yOiAnLCB0aGlzLmlzRmV0Y2hEYXRhRm9yKTtcbiAgICAgICAgY29uc29sZS5sb2coJ21zZzogJywgdGhpcy5tc2cpO1xuICAgICAgICBjb25zb2xlLmxvZygnY2hhdDogJywgdGhpcy5jaGF0KTtcbiAgICAgICAgaWYgKHRoaXMuaXM0MDEpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc0ZldGNoRGF0YUZvcikge1xuICAgICAgICAgICAgdGhpcy5mZXRjaERhdGFGb3IodGhpcy5tc2csIHRoaXMuY2hhdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hEYXRhKHRoaXMubXNnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy5pc0RldiA/IGRldl9lbnZpcm9ubWVudCA6IHByb2RfZW52aXJvbm1lbnQ7XG5cbiAgICAvLyB0aGlzLmZldGNoTXlDb25uZWN0aW9ucygpLnN1YnNjcmliZSgpO1xuICAgIC8vIHRoaXMuZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKS5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuY2hhbmdlVGVtcGVyYXR1cmUodGhpcy50ZW1wZXJhdHVyZSk7XG4gICAgdGhpcy5mZXRjaEJvdENvbmZpZygpLnN1YnNjcmliZShcbiAgICAgIChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5mZXRjaENoYXRIaXN0b3J5KCkuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1hcENoYXRIaXN0b3J5KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdCBoaXN0b3J5OicsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdCBoaXN0b3J5OicsIGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmZldGNoQWdlbnRzKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5pbml0aWFsaXplU29ja2V0KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxpc3RlblNvY2tldHMoKTtcbiAgICB9LCAyMDApO1xuICB9XG4gIHByaXZhdGUgZXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgaW5pdGlhbGl6ZVNvY2tldCgpIHtcbiAgICA7XG4gICAgY29uc3QgY29udmVyc2F0aW9uX2lkID0gdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmdldEtleSh0aGlzLmJvdElkKTtcblxuICAgIHRoaXMuc29ja2V0U2VydmljZS5yZWdpc3RlclVzZXJTcGVjaWZpY0hpdmVTb2NrZXQodGhpcy5ib3RJZCwgY29udmVyc2F0aW9uX2lkKTtcbiAgfVxuXG4gIHN1YnNjcmlwdGlvbk5ldzogYW55O1xuICBzb2NrZXREYXRhOiBhbnk7XG5cbiAgbGlzdGVuU29ja2V0cygpIHtcbiAgICB0aGlzLmV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlXG4gICAgICAuZ2V0VXNlclNwZWNpZmljTm90aWZpY2F0aW9uKClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBPdGhlckZpZWxkcyBleGlzdHMgaW4gdGhlIHJlc3BvbnNlXG4gICAgICAgICAgaWYgKHJlcz8ubT8uT3RoZXJGaWVsZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgY29udmVyc2F0aW9uX2lkLFxuICAgICAgICAgICAgICBib3RfaWQsXG4gICAgICAgICAgICAgIG1lc3NhZ2VfaWQsXG4gICAgICAgICAgICAgIGFuc3dlcixcbiAgICAgICAgICAgICAgd2ViX3Jlc3VsdHMsXG4gICAgICAgICAgICAgIGdyYXBocyxcbiAgICAgICAgICAgICAgZXhlY3V0aW9uX2dyYXBocyxcbiAgICAgICAgICAgICAgb25saW5lX3NlYXJjaF90ZXJtcyxcbiAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIH0gPSByZXM/Lm0/Lk90aGVyRmllbGRzO1xuXG4gICAgICAgICAgICB2YXIgY3VycmVudENoYXRNZXNzYWdlID0gdGhpcy5jaGF0TG9nLmZpbmQocCA9PiBwLl9pZCA9PSBtZXNzYWdlX2lkKTtcblxuICAgICAgICAgICAgaWYgKCFjdXJyZW50Q2hhdE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICAgIF9pZDogbWVzc2FnZV9pZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYWknLFxuICAgICAgICAgICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKGN1cnJlbnRDaGF0TWVzc2FnZSk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IHRoaXMuY2hhdExvZy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGZpZWxkcyBiYXNlZCBvbiB0aGVpciBwcmVzZW5jZVxuICAgICAgICAgICAgaWYgKG9ubGluZV9zZWFyY2hfdGVybXMgJiYgQXJyYXkuaXNBcnJheShvbmxpbmVfc2VhcmNoX3Rlcm1zKSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnT25saW5lIFNlYXJjaCBUZXJtczonLCBvbmxpbmVfc2VhcmNoX3Rlcm1zKTtcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlLnNlYXJjaFRlcm1zID0gb25saW5lX3NlYXJjaF90ZXJtcztcbiAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh3ZWJfcmVzdWx0cyAmJiBBcnJheS5pc0FycmF5KHdlYl9yZXN1bHRzKSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnV2ViIFJlc3VsdHM6Jywgd2ViX3Jlc3VsdHMpO1xuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2Uuc291cmNlc0xpc3QgPSB3ZWJfcmVzdWx0cztcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlLmRpc3BsYXllZFNvdXJjZXMgPSB3ZWJfcmVzdWx0cz8uc2xpY2UoMCwgMyk7IC8vIEZpcnN0IDMgY2FyZHNcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlLnJlbWFpbmluZ1NvdXJjZXMgPSB3ZWJfcmVzdWx0cz8uc2xpY2UoMyk7IC8vIFJlbWFpbmluZyBpdGVtc1xuICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYW5zd2VyKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBbnN3ZXI6JywgYW5zd2VyKTtcblxuICAgICAgICAgICAgICBjdXJyZW50Q2hhdE1lc3NhZ2UubWVzc2FnZSA9IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGFuc3dlcik7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChncmFwaHMgJiYgQXJyYXkuaXNBcnJheShncmFwaHMpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdHcmFwaHM6JywgZ3JhcGhzKTtcbiAgICAgICAgICAgICAgY3VycmVudENoYXRNZXNzYWdlLmdyYXBocyA9IGdyYXBocztcbiAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleGVjdXRpb25fZ3JhcGhzICYmIEFycmF5LmlzQXJyYXkoZXhlY3V0aW9uX2dyYXBocykpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0V4ZWN1dGlvbiBHcmFwaHM6JywgZXhlY3V0aW9uX2dyYXBocyk7XG4gICAgICAgICAgICAgIGN1cnJlbnRDaGF0TWVzc2FnZS5leGVjdXRpb25HcmFwaHMgPSBleGVjdXRpb25fZ3JhcGhzO1xuICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN1Z2dlc3Rpb25zICYmIEFycmF5LmlzQXJyYXkoc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzdWdnZXN0aW9uczonLCBzdWdnZXN0aW9ucyk7XG4gICAgICAgICAgICAgIGN1cnJlbnRDaGF0TWVzc2FnZS5yZWxhdGVkTGlzdEl0ZW1zID0gc3VnZ2VzdGlvbnM7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAvLyBQcm9jZXNzIG9ubGluZSBzZWFyY2ggdGVybXMgYXMgbmVlZGVkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCBhbnkgb3RoZXIgZmllbGRzIGFuZCB0aGVpciBwcm9jZXNzaW5nIGhlcmVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdPdGhlckZpZWxkcyBpcyBtaXNzaW5nIGluIHRoZSByZXNwb25zZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBmZXRjaGluZyBkYXRhIGZyb20gc29ja2V0JywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemVTb2NrZXRBbmRMaXN0ZW4oKSB7XG5cbiAgfVxuICBoYW5kbGVFdmVudChkYXRhOiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnd2VicmVzdWx0JzpcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fuc3dlcic6XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncmFwaCc6XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgLy90aGlzLnNvY2tldFNlcnZpY2UuY2xvc2UoKTtcbiAgfVxuICBjaGFuZ2VUZW1wZXJhdHVyZShuZXdUZW1wZXJhdHVyZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuO1xuICAgIHRoaXMudGVtcGVyYXR1cmUgPSBuZXdUZW1wZXJhdHVyZTtcbiAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhpdmVncHQtY2hhdC13cmFwcGVyJylcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgdGhlbWUgY2xhc3NlcyBmcm9tIGJvZHlcbiAgICB3cmFwcGVyPy5jbGFzc0xpc3QucmVtb3ZlKCdjcmVhdGl2ZScsICdiYWxhbmNlZCcsICdwcmVjaXNlJyk7XG5cbiAgICBzd2l0Y2ggKG5ld1RlbXBlcmF0dXJlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHdyYXBwZXI/LmNsYXNzTGlzdC5hZGQoJ2NyZWF0aXZlJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICB3cmFwcGVyPy5jbGFzc0xpc3QuYWRkKCdiYWxhbmNlZCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgd3JhcHBlcj8uY2xhc3NMaXN0LmFkZCgncHJlY2lzZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU3RhcnRBZ2FpbigpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XG4gICAgdGhpcy5zaG93U3RhcnRBZ2FpbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhdExvZyA9IFtdO1xuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgIHR5cGU6ICdhaScsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICB0aGlzLmdyZWV0aW5nTXNnIHx8XG4gICAgICAgIHRoaXMucHJvY2Vzc01lc3NhZ2UoXG4gICAgICAgICAgXCJHcmVldGluZ3MhIEknbSB5b3VyIENPUDI4IHZpcnR1YWwgYXNzaXN0YW50LiBIYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgZXZlbnQ/IEknbSBoZXJlIHRvIGhlbHAuXCJcbiAgICAgICAgKSxcbiAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICB9KTtcbiAgICB0aGlzLmFyY2hpZXZlTWVzc2FnZXMoKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFyY2hpZXZlTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgJ3gtYXBpLWtleSc6IHRoaXMuYXBpS2V5LFxuICAgIH0pO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2JvdC9jbGVhci1oaXN0b3J5LyR7dGhpcy5ib3RJZH0vJHt0aGlzLnVzZXJJZH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHt9LCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKHJlcyk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGZldGNoQm90Q29uZmlnKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90cz9ib3RfaWQ9JHt0aGlzLmJvdElkfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmJvdE5hbWUgPSByZXMuTmFtZTtcbiAgICAgICAgdGhpcy5ib3RJY29uID0gcmVzLkljb247XG4gICAgICAgIHRoaXMuYm90U2tpbGxzID0gcmVzPy5Ta2lsbHM7XG4gICAgICAgIHRoaXMuZ3JlZXRpbmdNc2cgPSByZXMuR3JlZXRpbmc7XG5cbiAgICAgICAgdGhpcy50aHVtYnNEb3duTWVzc2FnZXMgPSByZXM/Lk5lZ2F0aXZlUmVzcG9uc2VzPy5sZW5ndGhcbiAgICAgICAgICA/IHJlcy5OZWdhdGl2ZVJlc3BvbnNlc1xuICAgICAgICAgIDogW1xuICAgICAgICAgICAgXCJXZSBhcmUgc29ycnkgd2UndmUgbm90IGJlZW4gYWJsZSB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbi48YnIvPiBIb3dldmVyLCBvdXIgZGVkaWNhdGVkIHN1cHBvcnQgdGVhbSBpcyBoYXBweSB0byBoZWxwLiA8c3BhbiBjbGFzcz0nZmVlZGJhY2stbGluaycgc3R5bGU9J2N1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjMTcyMzVCOyc+UGxlYXNlIGNsaWNrIGhlcmU8L3NwYW4+IGFuZCBhIGh1bWFuIGFnZW50IHdpbGwgYXNzaXN0IHlvdSBhcyBzb29uIGFzIHBvc3NpYmxlXCIsXG4gICAgICAgICAgXTtcbiAgICAgICAgdGhpcy5xdWlja1Byb21wdHMgPSByZXMuUXVpY2tQcm9tcHRzO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBvZihyZXMpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0Ym90IGNvbmZpZzogJywgZXJyb3IpO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hDaGF0SGlzdG9yeSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jb252ZXJzYXRpb25LZXkgPSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuZ2V0S2V5KHRoaXMuYm90SWQpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbktleX1gO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ2FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcjxhbnk+KCdmZXRjaENvbnZlcnNhdGlvbicpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yPFQ+KG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLCByZXN1bHQ/OiBUKSB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke29wZXJhdGlvbn0gZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICByZXR1cm4gb2YocmVzdWx0IGFzIFQpO1xuICAgIH07XG4gIH1cbiAgLy8gZmV0Y2hDaGF0SGlzdG9yeSgpIHtcbiAgLy8gICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAvLyAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgLy8gICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcbiAgLy8gICB9KTtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwXG4gIC8vICAgICAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbktleX1gLCB7IGhlYWRlcnMgfSlcbiAgLy8gICAgIC5waXBlKFxuICAvLyAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIC8vICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XG4gIC8vICAgICAgIH0pLFxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdCBoaXN0b3J5OiAnLCBlcnJvcik7XG4gIC8vICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIC8vICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAvLyAgICAgICB9KVxuICAvLyAgICAgKTtcbiAgLy8gfVxuXG4gIG1hcENoYXRIaXN0b3J5KGNoYXRzOiBhbnkpIHtcbiAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICB0eXBlOiAnYWknLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgdGhpcy5ncmVldGluZ01zZyB8fFxuICAgICAgICB0aGlzLnByb2Nlc3NNZXNzYWdlKFxuICAgICAgICAgIFwiR3JlZXRpbmdzISBJJ20geW91ciBDT1AyOCB2aXJ0dWFsIGFzc2lzdGFudC4gSGF2ZSBxdWVzdGlvbnMgYWJvdXQgdGhlIGV2ZW50PyBJJ20gaGVyZSB0byBoZWxwLlwiXG4gICAgICAgICksXG4gICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXG4gICAgfSk7XG4gICAgaWYgKGNoYXRzICYmIGNoYXRzPy5NZXNzYWdlcz8ubGVuZ3RoKSB7XG4gICAgICBjaGF0cz8uTWVzc2FnZXMuZm9yRWFjaCgoY2hhdDogYW55KSA9PiB7XG4gICAgICAgIGlmIChjaGF0LlR5cGUgPT0gXCJ1c2VyXCIpIHtcbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAndXNlcicsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnByb2Nlc3NNZXNzYWdlRm9yRGlzcGxheShjaGF0LlRleHQpLFxuICAgICAgICAgICAgdGltZTogZm9ybWF0VGltZVN0YW1wcyh0aGlzLnRpbWV6b25lLCBjaGF0Lkluc2VydFRpbWVzdGFtcCksXG4gICAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNDb2xsYXBzZWRUcnVlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGF0LlR5cGUgPT0gXCJhaVwiKSB7XG4gICAgICAgICAgdmFyIHNvdXJjZXNMaXN0ID0gY2hhdC5XZWJMaW5rcyB8fCBbXTtcbiAgICAgICAgICB2YXIgZGlzcGxheWVkU291cmNlcyA9IGNoYXQuV2ViTGlua3Muc2xpY2UoMCwgMyk7IC8vIEZpcnN0IDMgY2FyZHNcbiAgICAgICAgICB2YXIgcmVtYWluaW5nU291cmNlcyA9IGNoYXQuV2ViTGlua3Muc2xpY2UoMyk7IC8vIFJlbWFpbmluZyBpdGVtc1xuXG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ2FpJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGNoYXQuVGV4dCksXG4gICAgICAgICAgICBleGVjdXRpb25HcmFwaHM6IGNoYXQuRXhlY3V0aW9uR3JhcGhzLFxuICAgICAgICAgICAgZ3JhcGhzOiBjaGF0LkdyYXBocyxcbiAgICAgICAgICAgIHNlYXJjaFRlcm1zOiBjaGF0LlNlYXJjaFRlcm1zLFxuICAgICAgICAgICAgc291cmNlc0xpc3Q6IHNvdXJjZXNMaXN0LFxuICAgICAgICAgICAgZGlzcGxheWVkU291cmNlczogZGlzcGxheWVkU291cmNlcyxcbiAgICAgICAgICAgIHJlbWFpbmluZ1NvdXJjZXM6IHJlbWFpbmluZ1NvdXJjZXMsXG4gICAgICAgICAgICB0aW1lOiBmb3JtYXRUaW1lU3RhbXBzKHRoaXMudGltZXpvbmUsIGNoYXQuSW5zZXJ0VGltZXN0YW1wKSxcbiAgICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgICBpc0NvbGxhcHNlZFRydWU6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zaG93U3RhcnRBZ2FpbiA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb2Nlc3NNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgIShtZXNzYWdlPy5sZW5ndGggPiAwKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKCdoZXJlIGlzIG15IG1lc3NhZ2UnKVxuICAgIC8vIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UudHJpbSgpO1xuXG4gICAgY29uc3QgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteW10rKV1cXCgoW14pXSspXFwpL2c7XG4gICAgY29uc3QgdXJsUmVnZXggPSAvKD88IWhyZWY9XCIpXFxiaHR0cHM/OlxcL1xcL1xcUysoPzwhWy4sXSkvZ2k7XG5cbiAgICBpZiAobWFya2Rvd25MaW5rUmVnZXgudGVzdChtZXNzYWdlKSkge1xuICAgICAgY29uc3QgaHRtbCA9IG1lc3NhZ2UucmVwbGFjZShcbiAgICAgICAgbWFya2Rvd25MaW5rUmVnZXgsXG4gICAgICAgICc8YSBocmVmPVwiJDJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT4nXG4gICAgICApO1xuICAgICAgLy9jb25zb2xlLmxvZygnU2FuaXRpemVkIG1lc3NhZ2U6ICcsIG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVIdG1sKGh0bWwpO1xuICAgIH1cblxuICAgIGlmICh1cmxSZWdleC50ZXN0KG1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBodG1sID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgICB1cmxSZWdleCxcbiAgICAgICAgJzxhIGhyZWY9XCIkJlwiIHRhcmdldD1cIl9ibGFua1wiPiQmPC9hPidcbiAgICAgICk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnU2FuaXRpemVkIG1lc3NhZ2U6ICcsIG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVIdG1sKGh0bWwpO1xuICAgIH1cblxuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoLyg/OlxcclxcbnxcXHJ8XFxuKS9nLCAnPGJyPicpO1xuXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXFwqXFwqKC4qPylcXCpcXCovZywgJzxzdHJvbmc+JDE8L3N0cm9uZz4nKTtcbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGhlYWRlcnMgdG8gSFRNTCBoZWFkZXJzXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXigjezEsNn0pXFxzKyguKikkL2dtLCAobWF0Y2gsIGhhc2hlcywgdGV4dCkgPT4ge1xuICAgICAgY29uc3QgbGV2ZWwgPSBoYXNoZXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIGA8aCR7bGV2ZWx9PiR7dGV4dH08L2gke2xldmVsfT5gO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgY29uc3Qgc2FuaXRpemVkTWVzc2FnZSA9IHRoaXMuc2FuaXRpemVIdG1sKG1lc3NhZ2UpO1xuICAgIHJldHVybiBzYW5pdGl6ZWRNZXNzYWdlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGNvbnN0IGZlZWRiYWNrTGlua3MgPVxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZlZWRiYWNrLWxpbmsnKTtcbiAgICBmZWVkYmFja0xpbmtzLmZvckVhY2goKGxpbms6IGFueSkgPT4ge1xuICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnY2xpY2snLFxuICAgICAgICB0aGlzLm9uRmVlZGJhY2tDbGljay5iaW5kKHRoaXMsICd6ZW5kZXNrJylcbiAgICAgICk7XG4gICAgfSk7XG4gICAgLy8gaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1saW5rJykpIHtcbiAgICAvLyAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgLy8gICAgIC5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2stbGluaycpXG4gICAgLy8gICAgIC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25GZWVkYmFja0NsaWNrLmJpbmQodGhpcywgJ3plbmRlc2snKSk7XG4gICAgLy8gfVxuICB9XG5cbiAgc2FuaXRpemVIdG1sKGh0bWw6IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCk7XG4gIH1cblxuICBvbkZlZWRiYWNrQ2xpY2sodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZmVlZGJhY2tFdmVudC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlPdmVyZmxvd0NsYXNzKTtcbiAgICB0aGlzLm9uQ2xvc2VFdmVudC5lbWl0KCk7XG4gIH1cblxuICBzZW5kTWVzc2FnZVdpdGhUaWxlKHByb21wdDogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnB1dCA9IHByb21wdDtcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgfVxuICBpc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcbiAgZmV0Y2hEYXRhKG1zZz1udWxsKSB7XG4gICAgdGhpcy5pbnB1dCA9IG1zZyB8fCB0aGlzLmlucHV0Py50cmltKCk7XG4gICAgaWYgKCF0aGlzLmlucHV0IHx8IHRoaXMubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KHRoaXMuaW5wdXQpLFxuICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxuICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgIGlzQ29sbGFwc2VkVHJ1ZTogZmFsc2VcbiAgICB9KTtcblxuXG4gICAgdHJ5IHtcblxuICAgICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLm15SW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICdoaWRkZW4nOyAvLyBSZXNldCB0aGUgaGVpZ2h0XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBgNjJweGA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcblxuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuYWlSZXNwb25zZSA9ICcnO1xuICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVybCA9XG4gICAgICBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9haS9hc2tgLy8gK1xuICAgIC8vICh0aGlzLnVzZU9wZW5BaSA9PT0gZmFsc2UgPyAnL2xsbS1oZicgOiAnJyk7XG4gICAgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiB0aGlzLnMyN1Rva2VuLFxuICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB1c2VyX3F1ZXN0aW9uOiB0aGlzLmlucHV0LFxuICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJJZCxcbiAgICAgICAgYm90X2lkOiB0aGlzLmJvdElkLFxuICAgICAgICBtZXNzYWdlX2lkOiB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuZ2VuZXJhdGVLZXkoKSxcbiAgICAgICAgYWdlbnRzOiB0aGlzLmFnZW50cy5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKS5tYXAocCA9PiBwLmlkKSxcbiAgICAgICAgY29udmVyc2F0aW9uX2lkOiB0aGlzLmNvbnZlcnNhdGlvbktleSxcbiAgICAgIH0pLFxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgdGhpcy5pczQwMSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5tc2cgPSB0aGlzLmlucHV0O1xuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOyAgLy8gQ29udGludWUgcHJvY2Vzc2luZyB0aGUgcmVzcG9uc2VcbiAgICAgIH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgdGhlIHJlc3BvbnNlIGRhdGFcbiAgICAgICAgdGhpcy5pczQwMSA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogJywgZXJyKTtcbiAgICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcbiAgICAgIH0pOyAgICBcblxuICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgfVxuICBmZXRjaERhdGFGb3IobXNnLCBjaGF0KSB7XG4gICAgY29uc3QgaW5wdXRNc2cgPSBtc2c/LnRyaW0oKTtcbiAgICBpZiAoIWlucHV0TXNnIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY2hhdC5yZWxhdGVkTGlzdEl0ZW1zID0gW107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxuXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGlucHV0TXNnKSxcbiAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICBpc0NvbGxhcHNlZFRydWU6IGZhbHNlXG4gICAgfSk7XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuYWlSZXNwb25zZSA9ICcnO1xuICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVybCA9XG4gICAgICBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9haS9hc2tgLy8gK1xuICAgIC8vICh0aGlzLnVzZU9wZW5BaSA9PT0gZmFsc2UgPyAnL2xsbS1oZicgOiAnJyk7XG4gICAgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiB0aGlzLnMyN1Rva2VuLFxuICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB1c2VyX3F1ZXN0aW9uOiBpbnB1dE1zZyxcbiAgICAgICAgdXNlcl9pZDogdGhpcy51c2VySWQsXG4gICAgICAgIGJvdF9pZDogdGhpcy5ib3RJZCxcbiAgICAgICAgbWVzc2FnZV9pZDogdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmdlbmVyYXRlS2V5KCksXG4gICAgICAgIGFnZW50czogdGhpcy5hZ2VudHMuZmlsdGVyKHAgPT4gcC5zZWxlY3RlZCkubWFwKHAgPT4gcC5pZCksXG4gICAgICAgIGNvbnZlcnNhdGlvbl9pZDogdGhpcy5jb252ZXJzYXRpb25LZXksXG4gICAgICB9KSxcbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSB8fCByZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgIHRoaXMubXNnID0gbXNnO1xuICAgICAgICAgIHRoaXMuY2hhdCA9IGNoYXQ7XG4gICAgICAgICAgdGhpcy5pczQwMSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc0ZldGNoRGF0YUZvciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4uZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7ICAvLyBDb250aW51ZSBwcm9jZXNzaW5nIHRoZSByZXNwb25zZVxuICAgICAgfSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSB0aGUgcmVzcG9uc2UgZGF0YVxuICAgICAgICB0aGlzLmlzNDAxID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiAnLCBlcnIpO1xuICAgICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgdGhpcy5pbnB1dCA9ICcnO1xuICB9XG4gIGZldGNoU21hbGxUYWxrKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9ib3Qvc21hbGwtdGFsay8ke3RoaXMuYm90SWR9LyR7dGhpcy51c2VySWR9YDtcblxuICAgIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IHNtYWxsVGFsazogc3RyaW5nIH0+KHVybCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ3gtYXBpLWtleSc6IHRoaXMuYXBpS2V5LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGZldGNoaW5nIHNtYWxsIHRhbGs6JywgZXJyb3IpO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2Uuc21hbGxUYWxrKSB7XG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ2FpJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2UocmVzcG9uc2Uuc21hbGxUYWxrKSxcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcbiAgICAgICAgICAgIGlzRmVlZGJhY2tNc2c6IHRydWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDI7XG4gICAgICAgICAgLy8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHJlYWRBbGxDaHVua3MgPSAoc3RyZWFtOiBhbnkpID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7XG4gICAgY29uc3QgYWxsU3VnZ2VzdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZWFkZXIuY2xvc2VkLmNhdGNoKChlcnI6IGFueSkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWFkaW5nIHN0cmVhbTogJywgZXJyKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgIHJldHVybjtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgc3RhcnQ6IChjb250cm9sbGVyKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1bXAoY29udHJvbGxlciwgcmVhZGVyLCBhbGxTdWdnZXN0aW9ucyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuXG4gIHB1bXAoY29udHJvbGxlcjogYW55LCByZWFkZXI6IGFueSwgYWxsU3VnZ2VzdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgcmVhZGVyLnJlYWQoKS50aGVuKCh7IGRvbmUsIHZhbHVlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLmNoYXRMb2dbdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICBsYXN0SXRlbS5tZXNzYWdlID0gdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkobGFzdEl0ZW0ubWVzc2FnZSk7XG4gICAgICAgIHRoaXMuY2hhdExvZy5wb3AoKTtcbiAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2gobGFzdEl0ZW0pO1xuICAgICAgICBpZiAoYWxsU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWdnZXN0aW9ucycsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogYWxsU3VnZ2VzdGlvbnNcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xuICAgICAgICAvLyB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLnNob3dTdGFydEFnYWluID0gdHJ1ZTtcblxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gICB0aGlzLmZldGNoU21hbGxUYWxrKCk7XG4gICAgICAgIC8vIH0sMTAwMClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGVjb2RlZENodW5rID0gdGhpcy5kZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSk7XG4gICAgICB0aGlzLmFpUmVzcG9uc2UgKz0gZGVjb2RlZENodW5rO1xuICAgICAgaWYgKGxhc3RJdGVtLnR5cGUgPT09ICdhaScpIHtcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnNNYXRjaCA9IHRoaXMuYWlSZXNwb25zZS5tYXRjaCgvPHN1Zz4oLio/KTxcXC9zdWc+L2cpO1xuICAgICAgICBpZiAoc3VnZ2VzdGlvbnNNYXRjaCkge1xuICAgICAgICAgIHN1Z2dlc3Rpb25zTWF0Y2guZm9yRWFjaCgobWF0Y2gpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWlSZXNwb25zZSA9IHRoaXMuYWlSZXNwb25zZS5yZXBsYWNlKG1hdGNoLCBcIlwiKTtcbiAgICAgICAgICAgIGFsbFN1Z2dlc3Rpb25zLnB1c2gobWF0Y2g/LnJlcGxhY2UoLzxcXC8/c3VnPi9nLCBcIlwiKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBsYXN0SXRlbS5tZXNzYWdlID0gdGhpcy5haVJlc3BvbnNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGFpRm9ybWF0dGVkRGF0YTogYW55O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3BhcnNpbmcganNvbiAnKVxuICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZSh0aGlzLmFpUmVzcG9uc2UpKVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJzaW5nIGpzb24gMicpXG4gICAgICAgICAgICBhaUZvcm1hdHRlZERhdGEgPSBKU09OLnBhcnNlKHRoaXMuYWlSZXNwb25zZSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdwYXJzaW5nIGpzb24gZG9uZScpXG5cbiAgICAgICAgaWYgKGFpRm9ybWF0dGVkRGF0YSAmJiBhaUZvcm1hdHRlZERhdGE/LnNlY3Rpb25faWQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gJ2NvbXBhbnlfc2VhcmNoJyB8fCBhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSAndXNlcl9zZWFyY2gnIHx8IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkID09ICdpbmR1c3RyeV9jb21wYW55X3NlYXJjaCcpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hNeUNvbm5lY3Rpb25zKCkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmZldGNoUGVuZGluZ1JlcXVlc3RzKCkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkID09IHRoaXMubXlVcGNvbWluZ1Nlc3Npb25BY3Rpb24pIHtcbiAgICAgICAgICAgIHZhciBzcGVha2VySWRzID0gW107XG4gICAgICAgICAgICBhaUZvcm1hdHRlZERhdGEuY29udGVudD8uZm9yRWFjaChzZXNzaW9uID0+IHtcbiAgICAgICAgICAgICAgc3BlYWtlcklkcyA9IFsuLi5zcGVha2VySWRzLCAuLi5zZXNzaW9uLnNwZWFrZXJzXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChzcGVha2VySWRzPy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICB0aGlzLmdldFNwZWFrZXJzQnlTdGFmZklkcyhzcGVha2VySWRzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gdGhpcy5hZGRUb015QWdlbmRhQWN0aW9uICYmIGFpRm9ybWF0dGVkRGF0YS5jb250ZW50Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5QYWdlLm5leHQoe1xuICAgICAgICAgICAgICBzZWN0aW9uSWQ6IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkLFxuICAgICAgICAgICAgICBzZXNzaW9uSWRzOiBhaUZvcm1hdHRlZERhdGEuY29udGVudFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gdGhpcy5jb25uZWN0T3JGb2xsb3dBY3Rpb24pIHtcbiAgICAgICAgICAgIGxldCB1c2Vyc0xlbiA9IGFpRm9ybWF0dGVkRGF0YS5jb250ZW50Py5sZW5ndGg7XG4gICAgICAgICAgICBpZiAodXNlcnNMZW4gPiAxKSB7XG4gICAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XG4gICAgICAgICAgICAgICAgc2VjdGlvbklkOiBcIm9wZW5fbmV0d29ya2luZ19kcmF3ZXJcIixcbiAgICAgICAgICAgICAgICBzZWFyY2g6IGFpRm9ybWF0dGVkRGF0YS5jb250ZW50XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh1c2Vyc0xlbiA9PSAxKSB7XG4gICAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XG4gICAgICAgICAgICAgICAgc2VjdGlvbklkOiBhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCxcbiAgICAgICAgICAgICAgICBjb25uZXRVc2VySWRzOiBbYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnRbMF0udXNlcklkXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEuaXNfb3Blbl9wYWdlID09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5QYWdlLm5leHQoe1xuICAgICAgICAgICAgICBzZWN0aW9uSWQ6IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkLFxuICAgICAgICAgICAgICBzZWFyY2g6IGFpRm9ybWF0dGVkRGF0YS5jb250ZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcm93c2VyKCkpIHtcbiAgICAgICAgICAgICAgYWlGb3JtYXR0ZWREYXRhLm1lc3NhZ2UgKz0gXCJcXG5cXG5cIiArICc8YSBpZD1cImNsb3NlQm90Tm93XCI+Q2xpY2sgSGVyZTwvYT4gdG8gc2VlIHJlc3VsdHMuJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnYWknLFxuICAgICAgICAgICAgbWVzc2FnZTogYWlGb3JtYXR0ZWREYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICBhY3Rpb246IGFpRm9ybWF0dGVkRGF0YSxcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcm93c2VyKCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFkZENsb3NlQm90Q2xpY2tFdmVudCgpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmFpUmVzcG9uc2UgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdhaScsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmFpUmVzcG9uc2UsXG4gICAgICAgICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSB0aGlzLmNoYXRMb2cubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcblxuICAgICAgLy8gRW5xdWV1ZSB0aGUgbmV4dCBkYXRhIGNodW5rIGludG8gb3VyIHRhcmdldCBzdHJlYW1cbiAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnB1bXAoY29udHJvbGxlciwgcmVhZGVyLCBhbGxTdWdnZXN0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICBzdWJtaXRGZWVkYmFjayhmbGFnOiBib29sZWFuKSB7XG4gICAgdGhpcy5mZWVkYmFja0RvbmUgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IG51bGw7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90L2ZlZWRiYWNrYDtcbiAgICBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBmbGFnLCB1c2VyX2lkOiB0aGlzLnVzZXJJZCwgYm90X2lkOiB0aGlzLmJvdElkIH0pLFxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdhaScsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIHRoaXMudGh1bWJzVXBNZXNzYWdlIHx8XG4gICAgICAgICAgICBgR3JlYXQuIE1heSBJIGFzc2lzdCB5b3Ugd2l0aCBhbnl0aGluZyBlbHNlP2AsXG4gICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxuICAgICAgICAgIGlzRmVlZGJhY2tNc2c6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuZmVlZGJhY2tEb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xuICAgICAgICB0eXBlOiAnYWknLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLnByb2Nlc3NNZXNzYWdlKFxuICAgICAgICAgIHRoaXMudGh1bWJzRG93bk1lc3NhZ2VzW3RoaXMudGh1bWJzRG93bk1zZ0luZGV4XVxuICAgICAgICApLFxuICAgICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXG4gICAgICAgIGlzRmVlZGJhY2tNc2c6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGh1bWJzRG93bk1zZ0luZGV4ID1cbiAgICAgICAgKHRoaXMudGh1bWJzRG93bk1zZ0luZGV4ICsgMSkgJSB0aGlzLnRodW1ic0Rvd25NZXNzYWdlcy5sZW5ndGg7XG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuZmVlZGJhY2tEb25lID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VibWl0KCkge1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICB9XG5cbiAgaGFuZGxlVXBDbGljayhpZHg6IGFueSkge1xuICAgIGlmICh0aGlzLmZlZWRiYWNrRG9uZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VibWl0RmVlZGJhY2sodHJ1ZSk7XG4gICAgdGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQgPSAhdGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQ7XG5cbiAgICBpZiAodGhpcy5jaGF0TG9nW2lkeF0udW5saWtlZCkge1xuICAgICAgdGhpcy5jaGF0TG9nW2lkeF0udW5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgaGFuZGxlRG93bkNsaWNrKGlkeDogYW55KSB7XG4gICAgaWYgKHRoaXMuZmVlZGJhY2tEb25lKSByZXR1cm47XG4gICAgdGhpcy5zdWJtaXRGZWVkYmFjayhmYWxzZSk7XG4gICAgdGhpcy5jaGF0TG9nW2lkeF0udW5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkO1xuICAgIGlmICh0aGlzLmNoYXRMb2dbaWR4XS5saWtlZClcbiAgICAgIHRoaXMuY2hhdExvZ1tpZHhdLmxpa2VkID0gIXRoaXMuY2hhdExvZ1tpZHhdLmxpa2VkO1xuICB9XG4gIGhhbmRsZUNvcHlDbGljayhpbmRleDogYW55KSB7XG4gICAgLy8gQ29weSB0aGUgbWVzc2FnZSB0byB0aGUgY2xpcGJvYXJkXG4gICAgY29uc3QgY29udGVudFRvQ29weSA9IHRoaXMuY2hhdExvZ1tpbmRleF0ubWVzc2FnZTtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50VG9Db3B5KS50aGVuKCgpID0+IHtcbiAgICAgIC8vIEluZGljYXRlIHRoYXQgdGhlIG1lc3NhZ2Ugd2FzIGNvcGllZFxuICAgICAgdGhpcy5jaGF0TG9nW2luZGV4XS5jb3BpZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgLy8gUmVzZXQgdGhlIGNvcGllZCBzdGF0ZSBhZnRlciBhIGRlbGF5XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGF0TG9nW2luZGV4XS5jb3BpZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMjAwMCk7IC8vIFJlc2V0IGFmdGVyIDIgc2Vjb25kc1xuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKSB7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5jaGF0TWFpbi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgIHRoaXMuY2hhdE1haW4ubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICBpZiAoY291bnRlcisrID4gNSkgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfSwgNSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oYWN0aW9uOiBhbnkpIHtcbiAgICBjb25zb2xlLmluZm8oXCJpbmNvbWluZyBhY3Rpb24gZnJvbSB0aGUgY2hhdGJvdCBBSVwiKVxuICAgIGNvbnNvbGUuaW5mbyhhY3Rpb24pXG5cbiAgICBpZiAoYWN0aW9uPy5jb250ZW50KSB7XG5cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRyYXdlciBpcyBpbml0aWFsbHkgb3BlbiBhbmQgYXBwbHkgb3ZlcmZsb3cgaGlkZGVuIHRvIGJvZHkgaWYgc29cbiAgICBpZiAodGhpcy5kcmF3ZXIub3BlbmVkKSB7XG4gICAgICB0aGlzLnNldEJvZHlPdmVyZmxvdygpO1xuICAgIH1cblxuICAgIC8vIExpc3RlbiB0byBjaGFuZ2VzIGluIHRoZSBkcmF3ZXIgYmVpbmcgb3BlbmVkIG9yIGNsb3NlZFxuICAgIHRoaXMuZHJhd2VyLm9wZW5lZENoYW5nZS5zdWJzY3JpYmUoKG9wZW5lZDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICB0aGlzLnNldEJvZHlPdmVyZmxvdygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVCb2R5T3ZlcmZsb3coKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhd2VyLm9wZW5lZENoYW5nZS5zdWJzY3JpYmUoKG9wZW5lZCkgPT4ge1xuICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5teVRleHRhcmVhICYmIHRoaXMubXlUZXh0YXJlYS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm15VGV4dGFyZWEubmF0aXZlRWxlbWVudC5mb2N1cygpOyAvLyBGb2N1cyBvbiB0aGUgdGV4dGFyZWFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCb2R5T3ZlcmZsb3coKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlPdmVyZmxvd0NsYXNzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQm9keU92ZXJmbG93KCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5ib2R5T3ZlcmZsb3dDbGFzcyk7XG4gIH1cblxuICBnZXRTcGVha2Vyc0J5U3RhZmZJZHMoaWRzKSB7XG4gICAgY29uc3QgdXJsID1cbiAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuVVNFUlNfQVBJfS9ldmVudHMvJHt0aGlzLmV2ZW50SWR9L3VzZXJzL2dldC1ieS1zdGFmZi1pZHNgXG4gICAgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBcIkJlYXJlciBcIiArIFwieW91cl90b2tlbl9oZXJlXCIsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaWRzKSxcbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7IC8vIFBhcnNlIHRoZSBKU09OIGJvZHkgb2YgdGhlIHJlc3BvbnNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2suJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRhdGEuZm9yRWFjaChzcGVha2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3BlYWtlcnNbc3BlYWtlci5pZF0gPSBzcGVha2VyO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYXRhOicsIGVycik7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBwZXJmb3JtU2Vzc2lvbkFjdGlvbihzZXNzaW9uSWQsIGFjdGlvbikge1xuICAgIHRoaXMuc2Vzc2lvbkFjdGlvbnMubmV4dCh7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBhY3Rpb25cbiAgICB9KTtcbiAgfVxuXG4gIGFkZENsb3NlQm90Q2xpY2tFdmVudCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI2Nsb3NlQm90Tm93Jyk7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdjbGljaycsICgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZUJvdC5uZXh0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpc01vYmlsZUJyb3dzZXIoKSB7XG4gICAgcmV0dXJuIC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgfVxuXG4gIGNvbm5lY3RUb1VzZXIodXNlcklkKSB7XG4gICAgdGhpcy5jb25uZWN0V2l0aFVzZXIuZW1pdCh7XG4gICAgICBjb25uZWN0OiAhdGhpcy5jYW5EaXNjb25uZWN0KHVzZXJJZCksXG4gICAgICB1c2VySWRcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaE15Q29ubmVjdGlvbnMoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgc2NoZWR1bGVNZWV0aW5nV2l0aFVzZXIodXNlcikge1xuICAgIHRoaXMuc2NoZWR1bGVNZWV0aW5nLmVtaXQodXNlcik7XG4gIH1cblxuICBjYW5Db25uZWN0KHVzZXJJZCkge1xuICAgIHJldHVybiAhKHRoaXMuY2FuRGlzY29ubmVjdCh1c2VySWQpIHx8IHRoaXMucGVuZGluZ1JlcXVlc3RzLmZpbmQoYSA9PiBhID09IHVzZXJJZCkpXG4gIH1cblxuICBjYW5EaXNjb25uZWN0KHVzZXJJZCkge1xuICAgIHJldHVybiB0aGlzLm15Q29ubmVjdGlvbnMuZmluZChjb25uID0+IGNvbm4udXNlcklkID09IHVzZXJJZClcbiAgfVxuXG4gIGZldGNoUGVuZGluZ1JlcXVlc3RzKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICdhcGlLZXknOiB0aGlzLmF1dG9nZW5LZXlcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICBgJHt0aGlzLmVudmlyb25tZW50LlVTRVJTX0FQSX0vZXZlbnRzLyR7dGhpcy5ldmVudElkfS9jb25uZWN0aW9uLXJlcXVlc3RzL2F1dG9nZW4vcGVuZGluZy1zZW50LXJlcXVlc3RzP3VzZXJJZD0ke3RoaXMudXNlcklkfWAsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucGVuZGluZ1JlcXVlc3RzID0gcmVzO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBlbmRpbmcgcmVxdWVzdHM6ICcsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZmV0Y2hNeUNvbm5lY3Rpb25zKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICdhcGlLZXknOiB0aGlzLmF1dG9nZW5LZXlcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICBgJHt0aGlzLmVudmlyb25tZW50LlVTRVJTX0FQSX0vZXZlbnRzLyR7dGhpcy5ldmVudElkfS91c2Vycy1jb25uZWN0aW9ucy9hdXRvZ2VuP3VzZXJJZD0ke3RoaXMudXNlcklkfWAsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubXlDb25uZWN0aW9ucyA9IHJlcztcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBwZW5kaW5nIHJlcXVlc3RzOiAnLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG5cbiAgaXNEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWdlbnRzOiBhbnk7XG4gIHNlbGVjdGVkQWdlbnRzID0gW107XG4gIGFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIC8vIFRvZ2dsZSB0aGUgZHJvcGRvd24gdmlzaWJpbGl0eVxuICB0b2dnbGVEcm9wZG93bigpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gIXRoaXMuaXNEcm9wZG93bk9wZW47XG4gIH1cblxuICBvblNlbGVjdEFsbChldmVudDogRXZlbnQpOiB2b2lkIHtcblxuICAgIHRoaXMuYWdlbnRzPy5mb3JFYWNoKGFnZW50ID0+IGFnZW50LnNlbGVjdGVkID0gZmFsc2UpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICB9XG5cbiAgb25BZ2VudENoYW5nZShhZ2VudDogYW55KTogdm9pZCB7XG4gICAgLy9hZ2VudC5zZWxlY3RlZCA9ICFhZ2VudC5zZWxlY3RlZDtcbiAgICAvL2NvbnNvbGUubG9nKGFnZW50KTtcbiAgICBsZXQgYWdlbnRGb3VuZCA9IHRoaXMuYWdlbnRzLmZpbHRlcihwID0+IHAuaWQgPT0gYWdlbnQuaWQpO1xuICAgIGlmIChhZ2VudEZvdW5kICYmIGFnZW50Rm91bmQubGVuZ3RoID4gMCkge1xuICAgICAgYWdlbnRGb3VuZFswXS5zZWxlY3RlZCA9ICFhZ2VudEZvdW5kWzBdLnNlbGVjdGVkO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhcmVBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudHM/LmV2ZXJ5KGFnZW50ID0+ICFhZ2VudC5zZWxlY3RlZCk7XG4gIH1cblxuICBnZXREcm9wZG93bkhlYWRlclRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWxlY3RlZEFnZW50cyA9IHRoaXMuYWdlbnRzPy5maWx0ZXIoYWdlbnQgPT4gYWdlbnQuc2VsZWN0ZWQpO1xuICAgIGlmIChzZWxlY3RlZEFnZW50cyAmJiBzZWxlY3RlZEFnZW50cz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJ0FsbCBBZ2VudHMnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRBZ2VudHM/Lmxlbmd0aCA+IDEgPyBgJHtzZWxlY3RlZEFnZW50cz8ubGVuZ3RofSBBZ2VudHMgU2VsZWN0ZWRgIDogYCR7c2VsZWN0ZWRBZ2VudHM/Lmxlbmd0aH0gQWdlbnQgU2VsZWN0ZWRgO1xuICAgIH1cbiAgfVxuICBmZXRjaEFnZW50c19odHRwKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5BR0VOVFNfQVBJfS9Db1BpbG90LyR7dGhpcy5ib3RJZH0vYWN0aXZlLWFnZW50c2A7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCB7fSwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLmFnZW50cyA9IHJlcy5tYXAoYWdlbnQgPT4gKHtcbiAgICAgICAgICAgIC4uLmFnZW50LFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHJldHVybiBvZihyZXMpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0Ym90IGNvbmZpZzogJywgZXJyb3IpO1xuXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG5cbiAgZmV0Y2hBZ2VudHMoKSB7XG4gICAgdGhpcy5mZXRjaEFnZW50c19odHRwKClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG5cblxuICAvLyBldmVudHMvJHtldmVudElkfS91c2Vycy1jb25uZWN0aW9uc1xuICBwcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkobWFya2Rvd246IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICBpZiAoIW1hcmtkb3duIHx8ICEobWFya2Rvd24ubGVuZ3RoID4gMCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0lucHV0IE1hcmtkb3duIGlzIG51bGwgb3IgZW1wdHknKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvL2NvbnNvbGUubG9nKCdNYXJrZG93biBpbnB1dDonLCBtYXJrZG93bik7XG5cbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGhlYWRlcnMgdG8gSFRNTCBoZWFkZXJzXG4gICAgbGV0IGh0bWwgPSBtYXJrZG93bi5yZXBsYWNlKC9eKCN7MSw2fSlcXHMrKC4qKSQvZ20sIChtYXRjaCwgaGFzaGVzLCB0ZXh0KSA9PiB7XG4gICAgICBjb25zdCBsZXZlbCA9IGhhc2hlcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYDxoJHtsZXZlbH0+JHt0ZXh0fTwvaCR7bGV2ZWx9PmA7XG4gICAgfSk7XG5cbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXIgaGVhZGVyIGNvbnZlcnNpb246JywgaHRtbCk7XG5cbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGxpbmtzIHRvIEhUTUwgbGlua3NcbiAgICBodG1sID0gaHRtbC5yZXBsYWNlKC9cXFsoW15cXF1dKyldXFwoKFteKV0rKVxcKS9nLCAnPGEgaHJlZj1cIiQyXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JDE8L2E+Jyk7XG5cbiAgICAvLyAgY29uc29sZS5sb2coJ0FmdGVyIGxpbmsgY29udmVyc2lvbjonLCBodG1sKTtcblxuICAgIC8vIENvbnZlcnQgTWFya2Rvd24gYm9sZCB0byBIVE1MIHN0cm9uZ1xuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcKlxcKiguKj8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+Jyk7XG5cbiAgICAvL2NvbnNvbGUubG9nKCdBZnRlciBib2xkIGNvbnZlcnNpb246JywgaHRtbCk7XG5cbiAgICAvLyBDb252ZXJ0IG5ldyBsaW5lcyB0byA8YnI+IHRhZ3NcbiAgICBodG1sID0gaHRtbC5yZXBsYWNlKC8oPzpcXHJcXG58XFxyfFxcbikvZywgJzxicj4nKTtcblxuICAgIC8vICBjb25zb2xlLmxvZygnQWZ0ZXIgbGluZSBicmVha3MgY29udmVyc2lvbjonLCBodG1sKTtcblxuICAgIC8vIE9wdGlvbmFsOiBTYW5pdGl6ZSB0aGUgSFRNTCB0byBwcmV2ZW50IFhTU1xuICAgIGNvbnN0IHNhbml0aXplZEh0bWwgPSB0aGlzLnNhbml0aXplSHRtbChodG1sKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCdTYW5pdGl6ZWQgSFRNTDonLCBzYW5pdGl6ZWRIdG1sKTtcblxuICAgIHJldHVybiBzYW5pdGl6ZWRIdG1sO1xuICB9XG4gIGlzQ29sbGFwc2VkID0gZmFsc2U7XG4gIGlzQ29sbGFwc2VkRm9yR3JhcGggPSBmYWxzZTtcbiAgaXNDb2xsYXBzZWRGb3JGR3JhcGggPSBmYWxzZTtcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9ICF0aGlzLmlzQ29sbGFwc2VkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbGxhcHNlR3JhcGgoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZEZvckdyYXBoID0gIXRoaXMuaXNDb2xsYXBzZWRGb3JHcmFwaDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgdG9nZ2xlQ29sbGFwc2VGR3JhcGgoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZEZvckZHcmFwaCA9ICF0aGlzLmlzQ29sbGFwc2VkRm9yRkdyYXBoO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICAvLyAgIFtcbiAgLy8gICB7XG4gIC8vICAgICBcInRpdGxlXCI6IFwiQUkgTmV3cyBKYW51YXJ5IDIwMjQ6IEluLURlcHRoIGFuZCBDb25jaXNlIC0gVGhlIEFJIFRyYWNrXCIsXG4gIC8vICAgICBcImRlc2NcIjogXCJFYWNoIG1vbnRoLCB3ZSBjb21waWxlIHNpZ25pZmljYW50IG5ld3MsIHRyZW5kcywgYW5kIGhhcHBlbmluZ3MgaW4gQUksIHByb3ZpZGluZyBkZXRhaWxlZCBzdW1tYXJpZXMgd2l0aCBrZXkgcG9pbnRzIGluIGJ1bGxldCBmb3JtIGZvciBjb25jaXNlIHlldCBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nLlwiLFxuICAvLyAgICAgXCJsaW5rXCI6IFwiaHR0cHM6Ly90aGVhaXRyYWNrLmNvbS9haS1uZXdzLWphbnVhcnktMjAyNC9cIlxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgXCJ0aXRsZVwiOiBcIlRvcCBBSSBOZXdzLCBKYW51YXJ5IDIwMjQgLSBFdmVyeXBpeGVsIEpvdXJuYWxcIixcbiAgLy8gICAgIFwiZGVzY1wiOiBcIkluIHRoaXMgbW9udGhseSByb3VuZHVwLCB3ZSBzcG90bGlnaHQgdGhlIHRvcCBBSSBuZXdzIHN0b3JpZXMgZnJvbSBKYW51YXJ5LCBpbmNsdWRpbmcgdGhlIE9wZW5BSSB2cy4gVGhlIE5ldyBZb3JrIFRpbWVzIExhd3N1aXQuXCIsXG4gIC8vICAgICBcImxpbmtcIjogXCJodHRwczovL2pvdXJuYWwuZXZlcnlwaXhlbC5jb20vdG9wLWFpLW5ld3MtamFudWFyeS0yMDI0XCJcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIFwidGl0bGVcIjogXCJBSSBOZXdzIEp1bHkgMjAyNDogSW4tRGVwdGggYW5kIENvbmNpc2UgLSBUaGUgQUkgVHJhY2tcIixcbiAgLy8gICAgIFwiZGVzY1wiOiBcIlRoaXMgcGFnZSBmZWF0dXJlcyBBSSBOZXdzIGZvciBKdWx5IDIwMjQsIGhpZ2hsaWdodGluZyBzaWduaWZpY2FudCBldmVudHMgc3VjaCBhcyBDYW52YSBhY3F1aXJpbmcgTGVvbmFyZG8gQUkuXCIsXG4gIC8vICAgICBcImxpbmtcIjogXCJodHRwczovL3RoZWFpdHJhY2suY29tL2FpLW5ld3MtanVseS0yMDI0LWluLWRlcHRoLWFuZC1jb25jaXNlL1wiXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICBcInRpdGxlXCI6IFwiSmFudWFyeSBuZXdzIHJvdW5kdXA6IFdoYXQncyBuZXcgaW4gdGhlIHdvcmxkIG9mIEFJPyAtIFBsdXJhbHNpZ2h0XCIsXG4gIC8vICAgICBcImRlc2NcIjogXCJPcGVuQUnigJlzIG5ldyBHUFQgc3RvcmUsIGJ1c2luZXNzLXJlYWR5IENoYXRHUFQgcGxhbnMsIGFuZCBhIHByZWRpY3RlZCByaXNlIGluIEFJLXBvd2VyZWQgY3liZXJjcmltZS5cIixcbiAgLy8gICAgIFwibGlua1wiOiBcImh0dHBzOi8vd3d3LnBsdXJhbHNpZ2h0LmNvbS9yZXNvdXJjZXMvYmxvZy9kYXRhL2FpLXRoaXMtbW9udGgtamFudWFyeS0yMDI0XCJcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIFwidGl0bGVcIjogXCJBSSBOZXdzIEF1Z3VzdCAyMDI0OiBJbi1EZXB0aCBhbmQgQ29uY2lzZSAtIFRoZSBBSSBUcmFja1wiLFxuICAvLyAgICAgXCJkZXNjXCI6IFwiVGhpcyBwYWdlIGZlYXR1cmVzIEFJIE5ld3MgZm9yIEF1Z3VzdCAyMDI0LCB3aXRoIGhpZ2hsaWdodHMgc3VjaCBhcyBOdmlkaWEgZGVsYXlpbmcgdGhlIOKAnEJsYWNrd2VsbOKAnSBCMjAwIEFJIGNoaXBzIGRlbGl2ZXJ5LlwiLFxuICAvLyAgICAgXCJsaW5rXCI6IFwiaHR0cHM6Ly90aGVhaXRyYWNrLmNvbS9haS1uZXdzLWF1Z3VzdC0yMDI0LWluLWRlcHRoLWFuZC1jb25jaXNlLWR1cGxpY2F0ZS9cIlxuICAvLyAgIH1cbiAgLy8gXVxuICBkYXRlVGltZSA9IHsgbm93OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfTtcbiAgLy8gRXh0cmFjdHMgdGhlIGRvbWFpbiBmcm9tIGEgVVJMXG4gIGdldERvbWFpbk5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGhvc3RuYW1lIH0gPSBuZXcgVVJMKHVybCk7XG4gICAgICByZXR1cm4gaG9zdG5hbWUucmVwbGFjZSgvXnd3d1xcLi8sICcnKTsgLy8gUmVtb3ZlICd3d3cuJyBpZiBwcmVzZW50XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlcyB0aGUgZmF2aWNvbiBVUkxcbiAgZ2V0RmF2aWNvblVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZG9tYWluID0gdGhpcy5nZXREb21haW5OYW1lKHVybCk7XG4gICAgcmV0dXJuIGBodHRwczovL3d3dy5nb29nbGUuY29tL3MyL2Zhdmljb25zP3N6PTEyOCZkb21haW49JHtkb21haW59YDtcbiAgfVxuICBvbkNhcmRDbGljaygpOiB2b2lkIHtcblxuICAgIHRoaXMuc291cmNlc0RyYXdlci5vcGVuKCk7XG4gICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdGNsb3NlcGxheWdyb3VuZGJ1dHRvbicpO1xuICAgIGlmIChidXR0b24pIHtcbiAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cbiAgfVxuICBvbkNsb3NlU291cmNlKCkge1xuICAgIHRoaXMuc291cmNlc0RyYXdlci5jbG9zZSgpO1xuICAgIHRoaXMuaXNEcmF3ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaWYgbmVlZGVkXG4gICAgdGhpcy5vbkRyYXdlckNsb3NlZCgpO1xuICB9XG4gIG9uRHJhd2VyQ2xvc2VkKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc0RyYXdlck9wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaWYgbmVlZGVkXG4gICAgICAvLyBVc2UgbmdDbGFzcyB0byBkeW5hbWljYWxseSBhcHBseSB0aGUgY2xhc3NcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3RjbG9zZXBsYXlncm91bmRidXR0b24nKTtcbiAgICAgIGlmIChidXR0b24pIHtcbiAgICAgICAgYnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG4gIGlzRHJhd2VyT3BlbiA9IHRydWU7XG5cbiAgdG9nZ2xlRHJhd2VyKHRvZG8pIHtcbiAgICB0aGlzLmlzRHJhd2VyT3BlbiA9IHRvZG87XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMudXBkYXRlQnV0dG9uVmlzaWJpbGl0eSgpO1xuICB9XG4gIHVwZGF0ZUJ1dHRvblZpc2liaWxpdHkoKSB7XG4gICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdGNsb3NlcGxheWdyb3VuZGJ1dHRvbicpO1xuICAgIGlmIChidXR0b24pIHtcbiAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gdGhpcy5pc0RyYXdlck9wZW4gPyAnYmxvY2snIDogJ25vbmUnO1xuICAgIH1cbiAgfVxuICBvcGVuTGlua0luTmV3VGFiKGxpbms6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcbiAgfVxuICBhZGp1c3RUZXh0YXJlYUhlaWdodChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICdhdXRvJzsgLy8gUmVzZXQgdGhlIGhlaWdodFxuICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IGAke3RleHRhcmVhLnNjcm9sbEhlaWdodH1weGA7IC8vIEFkanVzdCBoZWlnaHQgdG8gbWF0Y2ggY29udGVudFxuICAgIC8vIEVuc3VyZSB0aGUgaGVpZ2h0IGRvZXNuJ3QgZXhjZWVkIHRoZSBtYXgtaGVpZ2h0IHNldCBpbiBDU1NcbiAgICBpZiAodGV4dGFyZWEuc2Nyb2xsSGVpZ2h0ID4gMTUwKSB7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBgMTUwcHhgOyAvLyBBZGp1c3QgaGVpZ2h0IHRvIG1hdGNoIGNvbnRlbnRcbiAgICAgIHRleHRhcmVhLnN0eWxlLm92ZXJmbG93WSA9ICdhdXRvJzsgLy8gRW5hYmxlIHNjcm9sbGluZyBpZiBjb250ZW50IGV4Y2VlZHMgNDAwcHhcbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dGFyZWEuc3R5bGUub3ZlcmZsb3dZID0gJ2hpZGRlbic7IC8vIEhpZGUgc2Nyb2xsYmFyIGlmIGNvbnRlbnQgaXMgd2l0aGluIGxpbWl0c1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -309,6 +309,7 @@ class ChatDrawerComponent {
|
|
|
309
309
|
if (changes.s27Token.currentValue != changes.s27Token.previousValue) {
|
|
310
310
|
console.log('s27Token changed previous:', changes.s27Token.previousValue, ' current:', changes.s27Token.currentValue);
|
|
311
311
|
this.s27Token = changes.s27Token.currentValue;
|
|
312
|
+
console.log('isFetchDataFor: ', this.isFetchDataFor);
|
|
312
313
|
console.log('msg: ', this.msg);
|
|
313
314
|
console.log('chat: ', this.chat);
|
|
314
315
|
if (this.is401) {
|