emanate-ai-chat-lib 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/emanate-ai-chat-lib.umd.js +2 -4
- package/bundles/emanate-ai-chat-lib.umd.js.map +1 -1
- package/esm2015/lib/components/ai-chat.component.js +2 -2
- package/esm2015/lib/services/ai-agent.service.js +2 -4
- package/fesm2015/emanate-ai-chat-lib.js +2 -4
- package/fesm2015/emanate-ai-chat-lib.js.map +1 -1
- package/package.json +1 -1
|
@@ -289,7 +289,7 @@ export class AiChatComponent {
|
|
|
289
289
|
this.authorName = '';
|
|
290
290
|
this.intent = '';
|
|
291
291
|
this.isLoading = true;
|
|
292
|
-
const request = Object.assign(Object.assign(Object.assign(Object.assign({ query: inquiry }, (this.conversationId && { conversationId: String(this.conversationId) })), (this.userId && { userId: this.userId })), (this.userName && { userName: this.userName })), (this.appSource && { appSource: this.appSource }));
|
|
292
|
+
const request = Object.assign(Object.assign(Object.assign(Object.assign({ query: inquiry }, (this.conversationId !== undefined && this.conversationId !== null ? { conversationId: String(this.conversationId) } : {})), (this.userId !== undefined && this.userId !== null ? { userId: this.userId } : {})), (this.userName !== undefined && this.userName !== null ? { userName: this.userName } : {})), (this.appSource !== undefined && this.appSource !== null ? { appSource: this.appSource } : {}));
|
|
293
293
|
this.aiAgentService.processInquiry(request)
|
|
294
294
|
.pipe(takeUntil(this.destroy$))
|
|
295
295
|
.subscribe({
|
|
@@ -740,4 +740,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
740
740
|
}], sizeChanged: [{
|
|
741
741
|
type: Output
|
|
742
742
|
}] } });
|
|
743
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbWFuYXRlLWFpLWNoYXQtbGliL3NyYy9saWIvY29tcG9uZW50cy9haS1jaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VtYW5hdGUtYWktY2hhdC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FpLWNoYXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUErQixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBZ0MxRixNQUFNLE9BQU8sZUFBZTtJQStEMUIsWUFDVSxjQUE4QixFQUM5QixTQUF1QjtRQUR2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWhFeEIsVUFBSyxHQUFXLG1CQUFtQixDQUFDO1FBQ3BDLGdCQUFXLEdBQVcsMkVBQTJFLENBQUM7UUFDbEcsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFXL0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDLENBQUMscUNBQXFDO1FBQ3pFLHFCQUFnQixHQUFZLEtBQUssQ0FBQyxDQUFFLG9DQUFvQztRQUN4RSxZQUFPLEdBQWdCLFNBQVMsQ0FBQyxDQUFHLHFCQUFxQjtRQUV6RCxxQkFBZ0IsR0FBWSxJQUFJLENBQUMsQ0FBRyxnQ0FBZ0M7UUFDcEUsbUJBQWMsR0FBK0IsUUFBUSxDQUFDLENBQUMsMEJBQTBCO1FBQ2pGLDRCQUF1QixHQUFZLElBQUksQ0FBQyxDQUFDLDhDQUE4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QkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFpQWdlbnRTZXJ2aWNlLCBBZ2VudFJlc3BvbnNlLCBTdXBwb3J0Qm90UmVxdWVzdCwgU3VwcG9ydEJvdFJlc3BvbnNlLCBDaGF0Q29udGVudCB9IGZyb20gJy4uL3NlcnZpY2VzL2FpLWFnZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJY29uU2V0VHlwZSwgQ2hhdEljb25Db25maWcsIGdldEljb25TZXQgfSBmcm9tICcuLi9tb2RlbHMvaWNvbi1jb25maWcuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdE1lc3NhZ2Uge1xyXG4gIG1lc3NhZ2VJZD86IHN0cmluZzsgICAgICAgICAgIC8vIFVuaXF1ZSBtZXNzYWdlIGlkZW50aWZpZXJcclxuICBjb252ZXJzYXRpb25JZD86IHN0cmluZzsgICAgICAgLy8gQ29udmVyc2F0aW9uL3Nlc3Npb24gaWRlbnRpZmllclxyXG4gIGlzVXNlcjogYm9vbGVhbjtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgc2VuZGVyPzogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIFNlbmRlciBuYW1lIChtYXBzIHRvIHlvdXIgJ3NlbmRlcicgZmllbGQpXHJcbiAgaW50ZW50Pzogc3RyaW5nO1xyXG4gIGF1dGhvck5hbWU/OiBzdHJpbmc7XHJcbiAgY29uZmlkZW5jZVNjb3JlPzogbnVtYmVyOyAgICAgIC8vIEFJIGNvbmZpZGVuY2Ugc2NvcmVcclxuICB0aW1lc3RhbXA6IERhdGU7XHJcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcclxuICBhdHRhY2htZW50cz86IEZpbGVBdHRhY2htZW50W107IC8vIEZpbGUvSW1hZ2UgYXR0YWNobWVudHNcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlQXR0YWNobWVudCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIHNpemU6IG51bWJlcjtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgZGF0YT86IHN0cmluZyB8IEFycmF5QnVmZmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDaGF0U2l6ZSA9ICdjb21wYWN0JyB8ICdkZWZhdWx0JyB8ICdleHBhbmRlZCcgfCAnZnVsbHNjcmVlbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VtYW5hdGUtYWktY2hhdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FpLWNoYXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FpLWNoYXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWlDaGF0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdDaGF0IHdpdGggTWFlc3Rybyc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdUeXBlIHlvdXIgaW5xdWlyeSBoZXJlLi4uIChQcmVzcyBFbnRlciB0byBzZW5kLCBTaGlmdCtFbnRlciBmb3IgbmV3IGxpbmUpJztcclxuICBASW5wdXQoKSBzaG93RGVidWdJbmZvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXBpVXJsPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFwcEtleT86IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBTb3VyY2U/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlcklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZpcnN0TmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VyTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSB0ZW1wbGF0ZURlc2lnbj86IHN0cmluZztcclxuICBASW5wdXQoKSB3ZWxjb21lTWVzc2FnZT86IHN0cmluZztcclxuICBASW5wdXQoKSBoaXN0b3JpY2FsTWVzc2FnZXM/OiBhbnlbXTsgLy8gSGlzdG9yaWNhbCBtZXNzYWdlcyBmcm9tIHBhcmVudFxyXG4gIEBJbnB1dCgpIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nOyAgICAvLyBDdXJyZW50IGNvbnZlcnNhdGlvbiBJRFxyXG4gIEBJbnB1dCgpIGVuYWJsZUltYWdlVXBsb2FkOiBib29sZWFuID0gZmFsc2U7IC8vIEVuYWJsZS9kaXNhYmxlIGltYWdlIHVwbG9hZCBidXR0b25cclxuICBASW5wdXQoKSBlbmFibGVGaWxlVXBsb2FkOiBib29sZWFuID0gZmFsc2U7ICAvLyBFbmFibGUvZGlzYWJsZSBmaWxlIHVwbG9hZCBidXR0b25cclxuICBASW5wdXQoKSBpY29uU2V0OiBJY29uU2V0VHlwZSA9ICdmZWF0aGVyJzsgICAvLyBJY29uIHNldCBzZWxlY3Rpb25cclxuICBASW5wdXQoKSBjdXN0b21JY29ucz86IFBhcnRpYWw8Q2hhdEljb25Db25maWc+OyAvLyBDdXN0b20gaWNvbiBvdmVycmlkZXNcclxuICBASW5wdXQoKSBlbmFibGVBbmltYXRpb25zOiBib29sZWFuID0gdHJ1ZTsgICAvLyBFbmFibGUvZGlzYWJsZSBhbGwgYW5pbWF0aW9uc1xyXG4gIEBJbnB1dCgpIGFuaW1hdGlvblNwZWVkOiAnc2xvdycgfCAnbm9ybWFsJyB8ICdmYXN0JyA9ICdub3JtYWwnOyAvLyBBbmltYXRpb24gc3BlZWQgY29udHJvbFxyXG4gIEBJbnB1dCgpIGVuYWJsZVN0YXR1c1RyYW5zaXRpb25zOiBib29sZWFuID0gdHJ1ZTsgLy8gRW5hYmxlL2Rpc2FibGUgc3RhdHVzIGluZGljYXRvciB0cmFuc2l0aW9uc1xyXG4gIEBPdXRwdXQoKSBtZXNzYWdlUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xyXG4gIEBPdXRwdXQoKSBtZXNzYWdlU2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZUF0dGFjaG1lbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNpemVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHNpemU6IENoYXRTaXplLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9PigpO1xyXG5cclxuICBtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSA9IFtdO1xyXG4gIGN1cnJlbnRJbnF1aXJ5ID0gJyc7XHJcbiAgYXV0aG9yTmFtZSA9ICcnO1xyXG4gIGludGVudCA9ICcnO1xyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIGNvbmZpZ3VyYXRpb25TdGF0dXMgPSAnJztcclxuICBwcmV2aW91c1N0YXR1cyA9ICcnOyAvLyBUcmFjayBwcmV2aW91cyBzdGF0dXMgZm9yIHRyYW5zaXRpb25zXHJcbiAgXHJcbiAgLy8gUmVzaXppbmcgcHJvcGVydGllc1xyXG4gIGN1cnJlbnRTaXplOiBDaGF0U2l6ZSA9ICdkZWZhdWx0JztcclxuICBpc0Z1bGxzY3JlZW4gPSBmYWxzZTtcclxuICBpc1Jlc2l6aW5nID0gZmFsc2U7XHJcbiAgY29udGFpbmVyV2lkdGggPSA4MDA7XHJcbiAgY29udGFpbmVySGVpZ2h0ID0gNjAwO1xyXG4gIG1pbldpZHRoID0gNDAwO1xyXG4gIG1heFdpZHRoID0gMTQwMDtcclxuICBtaW5IZWlnaHQgPSA0MDA7XHJcbiAgbWF4SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gMTAwO1xyXG4gIHN0YXJ0WCA9IDA7XHJcbiAgc3RhcnRZID0gMDtcclxuICBzdGFydFdpZHRoID0gMDtcclxuICBzdGFydEhlaWdodCA9IDA7XHJcbiAgXHJcbiAgLy8gRmlsZSB1cGxvYWQgcHJvcGVydGllc1xyXG4gIG1heEZpbGVTaXplID0gMTAgKiAxMDI0ICogMTAyNDsgLy8gMTBNQlxyXG4gIGFsbG93ZWRJbWFnZVR5cGVzID0gWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZycsICdpbWFnZS9qcGcnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXTtcclxuICBhbGxvd2VkRmlsZVR5cGVzID0gWydhcHBsaWNhdGlvbi9wZGYnLCAnYXBwbGljYXRpb24vbXN3b3JkJywgXHJcbiAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxyXG4gICAgJ3RleHQvcGxhaW4nLCAndGV4dC9jc3YnXTtcclxuICBzZWxlY3RlZEZpbGVzOiBGaWxlQXR0YWNobWVudFtdID0gW107XHJcbiAgXHJcbiAgLy8gSWNvbiBjb25maWd1cmF0aW9uXHJcbiAgaWNvbnM6IENoYXRJY29uQ29uZmlnID0gZ2V0SWNvblNldCgnZmVhdGhlcicpO1xyXG4gIHNhbml0aXplZEljb25zOiB7IFtrZXk6IHN0cmluZ106IFNhZmVIdG1sIH0gPSB7fTtcclxuICBcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFpQWdlbnRTZXJ2aWNlOiBBaUFnZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0dXMoJ0luaXRpYWxpemluZy4uLicpO1xyXG4gICAgY29uc29sZS5sb2coJ0FJIENoYXQgQ29tcG9uZW50IGluaXRpYWxpemVkJyk7XHJcbiAgICBcclxuICAgIC8vIExvYWQgaWNvbiBzZXRcclxuICAgIHRoaXMuaWNvbnMgPSBnZXRJY29uU2V0KHRoaXMuaWNvblNldCwgdGhpcy5jdXN0b21JY29ucyk7XHJcbiAgICB0aGlzLnNhbml0aXplSWNvbnMoKTtcclxuICAgIFxyXG4gICAgLy8gQ29uZmlndXJlIEFQSSBVUkwgYW5kIEFwcCBLZXkgaWYgcHJvdmlkZWRcclxuICAgIGlmICh0aGlzLmFwaVVybCB8fCB0aGlzLmFwcEtleSkge1xyXG4gICAgICB0aGlzLmFpQWdlbnRTZXJ2aWNlLmNvbmZpZ3VyZSh7IFxyXG4gICAgICAgIGFwaVVybDogdGhpcy5hcGlVcmwsXHJcbiAgICAgICAgYXBwS2V5OiB0aGlzLmFwcEtleSBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIExvYWQgaGlzdG9yaWNhbCBtZXNzYWdlcyBpZiBwcm92aWRlZFxyXG4gICAgICBpZiAodGhpcy5oaXN0b3JpY2FsTWVzc2FnZXMgJiYgdGhpcy5oaXN0b3JpY2FsTWVzc2FnZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubG9hZEhpc3RvcmljYWxNZXNzYWdlcyh0aGlzLmhpc3RvcmljYWxNZXNzYWdlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hZGRXZWxjb21lTWVzc2FnZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnRlc3RDb25maWd1cmF0aW9uKCk7XHJcbiAgICAgIHRoaXMubG9hZFNhdmVkU2l6ZSgpO1xyXG4gICAgICB0aGlzLmFwcGx5U2l6ZVByZXNldCh0aGlzLmN1cnJlbnRTaXplKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGl6YXRpb246JywgZXJyb3IpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVN0YXR1cygnSW5pdGlhbGl6YXRpb24gZXJyb3InKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vIERldGVjdCB3aGVuIGhpc3RvcmljYWxNZXNzYWdlcyBpbnB1dCBjaGFuZ2VzXHJcbiAgICBpZiAoY2hhbmdlc1snaGlzdG9yaWNhbE1lc3NhZ2VzJ10gJiYgIWNoYW5nZXNbJ2hpc3RvcmljYWxNZXNzYWdlcyddLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VzID0gY2hhbmdlc1snaGlzdG9yaWNhbE1lc3NhZ2VzJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnSGlzdG9yaWNhbCBtZXNzYWdlcyBjaGFuZ2VkOicsIG5ld01lc3NhZ2VzKTtcclxuICAgICAgXHJcbiAgICAgIC8vIENsZWFyIGV4aXN0aW5nIG1lc3NhZ2VzIGFuZCByZWxvYWRcclxuICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYgKG5ld01lc3NhZ2VzICYmIG5ld01lc3NhZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmxvYWRIaXN0b3JpY2FsTWVzc2FnZXMobmV3TWVzc2FnZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWRkV2VsY29tZU1lc3NhZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBEZXRlY3Qgd2hlbiBjb252ZXJzYXRpb25JZCBjaGFuZ2VzXHJcbiAgICBpZiAoY2hhbmdlc1snY29udmVyc2F0aW9uSWQnXSAmJiAhY2hhbmdlc1snY29udmVyc2F0aW9uSWQnXS5maXJzdENoYW5nZSkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnQ29udmVyc2F0aW9uIElEIGNoYW5nZWQ6JywgY2hhbmdlc1snY29udmVyc2F0aW9uSWQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAvLyBVcGRhdGUgYWxsIGV4aXN0aW5nIG1lc3NhZ2VzIHdpdGggbmV3IGNvbnZlcnNhdGlvbklkIGlmIG5lZWRlZFxyXG4gICAgICB0aGlzLm1lc3NhZ2VzLmZvckVhY2gobXNnID0+IHtcclxuICAgICAgICBpZiAobXNnLmNvbnZlcnNhdGlvbklkICE9PSB0aGlzLmNvbnZlcnNhdGlvbklkKSB7XHJcbiAgICAgICAgICBtc2cuY29udmVyc2F0aW9uSWQgPSB0aGlzLmNvbnZlcnNhdGlvbklkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIERldGVjdCB3aGVuIGljb24gc2V0IGNoYW5nZXNcclxuICAgIGlmIChjaGFuZ2VzWydpY29uU2V0J10gfHwgY2hhbmdlc1snY3VzdG9tSWNvbnMnXSkge1xyXG4gICAgICB0aGlzLmljb25zID0gZ2V0SWNvblNldCh0aGlzLmljb25TZXQsIHRoaXMuY3VzdG9tSWNvbnMpO1xyXG4gICAgICB0aGlzLnNhbml0aXplSWNvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYW5pbWF0aW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyBiYXNlZCBvbiBzcGVlZCBzZXR0aW5nXHJcbiAgICovXHJcbiAgZ2V0QW5pbWF0aW9uRHVyYXRpb24oKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVBbmltYXRpb25zKSByZXR1cm4gMDtcclxuICAgIHN3aXRjaCAodGhpcy5hbmltYXRpb25TcGVlZCkge1xyXG4gICAgICBjYXNlICdzbG93JzogcmV0dXJuIDUwMDtcclxuICAgICAgY2FzZSAnZmFzdCc6IHJldHVybiAxNTA7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAyNTA7IC8vIG5vcm1hbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFuaW1hdGlvbiBDU1MgY2xhc3MgYmFzZWQgb24gc2V0dGluZ3NcclxuICAgKi9cclxuICBnZXRBbmltYXRpb25DbGFzcygpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLmVuYWJsZUFuaW1hdGlvbnMpIHJldHVybiAnbm8tYW5pbWF0aW9ucyc7XHJcbiAgICByZXR1cm4gYGFuaW1hdGlvbi1zcGVlZC0ke3RoaXMuYW5pbWF0aW9uU3BlZWR9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBzdGF0dXMgd2l0aCB0cmFuc2l0aW9uIHRyYWNraW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTdGF0dXMobmV3U3RhdHVzOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZVN0YXR1c1RyYW5zaXRpb25zICYmIHRoaXMuY29uZmlndXJhdGlvblN0YXR1cyAhPT0gbmV3U3RhdHVzKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNTdGF0dXMgPSB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0dXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0dXMgPSBuZXdTdGF0dXM7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFNhbml0aXplIGljb24gU1ZHIHN0cmluZ3MgZm9yIHNhZmUgcmVuZGVyaW5nIGluIGlubmVySFRNTCBiaW5kaW5nc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2FuaXRpemVJY29ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2FuaXRpemVkSWNvbnMgPSB7fTtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuaWNvbnMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgY29uc3Qgc3ZnU3RyaW5nID0gdGhpcy5pY29uc1trZXkgYXMga2V5b2YgQ2hhdEljb25Db25maWddO1xyXG4gICAgICBpZiAoc3ZnU3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5zYW5pdGl6ZWRJY29uc1trZXldID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnU3RyaW5nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0ZXN0Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlU3RhdHVzKCdUZXN0aW5nIGNvbm5lY3Rpb24uLi4nKTtcclxuICAgIFxyXG4gICAgdGhpcy5haUFnZW50U2VydmljZS50ZXN0Q29uZmlndXJhdGlvbigpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBBZ2VudFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cygnQUkgQWdlbnQgaXMgcmVhZHknKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdHVzKGBDb25maWd1cmF0aW9uIGVycm9yOiAke3Jlc3BvbnNlLmVycm9yfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvclJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlU3RhdHVzKGBDb25uZWN0aW9uIGVycm9yOiBDYW5ub3QgY29ubmVjdCB0byBiYWNrZW5kIHNlcnZpY2VgKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FQSSBjb25uZWN0aW9uIHRlc3QgZmFpbGVkOicsIGVycm9yUmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRXZWxjb21lTWVzc2FnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdlbGNvbWVUZXh0ID0gdGhpcy53ZWxjb21lTWVzc2FnZSB8fCBcclxuICAgICAgYDxoMz5IZWxsbyAke3RoaXMuZmlyc3ROYW1lfSE8L2gzPkhpLCBJJ20gTWFlc3Ryb+KAlHlvdXIgQUkgYXNzaXN0YW50LiBJJ20gaGVyZSB0byBoZWxwIHdpdGggeW91ciBwb2xpY3ktcmVsYXRlZCBpbnF1aXJpZXMuPGJyPjxicj5Ib3cgY2FuIEkgYXNzaXN0IHlvdSB0b2RheT9gO1xyXG4gICAgXHJcbiAgICB0aGlzLm1lc3NhZ2VzLnB1c2goe1xyXG4gICAgICBpc1VzZXI6IGZhbHNlLFxyXG4gICAgICBjb250ZW50OiB3ZWxjb21lVGV4dCwgLy8gRG9uJ3QgZm9ybWF0IEhUTUwgY29udGVudCwgdXNlIGl0IGRpcmVjdGx5XHJcbiAgICAgIGludGVudDogJ3dlbGNvbWUnLFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBhbmQgdHJhbnNmb3JtIGhpc3RvcmljYWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICogQWNjZXB0cyBtZXNzYWdlcyBpbiB0aGUgZm9ybWF0IGZyb20geW91ciBiYWNrZW5kL3N0YXRlIG1hbmFnZW1lbnRcclxuICAgKi9cclxuICBsb2FkSGlzdG9yaWNhbE1lc3NhZ2VzKGhpc3RvcmljYWxNZXNzYWdlczogYW55W10pOiB2b2lkIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdMb2FkaW5nIGhpc3RvcmljYWwgbWVzc2FnZXM6JywgaGlzdG9yaWNhbE1lc3NhZ2VzKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdOdW1iZXIgb2YgbWVzc2FnZXMgdG8gbG9hZDonLCBoaXN0b3JpY2FsTWVzc2FnZXMubGVuZ3RoKTtcclxuICAgIFxyXG4gICAgLy8gVHJhbnNmb3JtIHlvdXIgYmFja2VuZCBmb3JtYXQgdG8gQ2hhdE1lc3NhZ2UgZm9ybWF0XHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZE1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdID0gaGlzdG9yaWNhbE1lc3NhZ2VzLm1hcCgobXNnOiBhbnkpID0+IHtcclxuICAgICAgLy8gRGV0ZXJtaW5lIGlmIG1lc3NhZ2UgaXMgZnJvbSB1c2VyIGJhc2VkIG9uIHNlbmRlciBvciByb2xlXHJcbiAgICAgIGNvbnN0IGlzVXNlck1lc3NhZ2UgPSB0aGlzLmlzVXNlck1lc3NhZ2UobXNnKTtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0ge1xyXG4gICAgICAgIG1lc3NhZ2VJZDogbXNnLm1lc3NhZ2VJZCB8fCBtc2cuaWQsXHJcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IG1zZy5jb252ZXJzYXRpb25JZCB8fCB0aGlzLmNvbnZlcnNhdGlvbklkLFxyXG4gICAgICAgIGlzVXNlcjogaXNVc2VyTWVzc2FnZSxcclxuICAgICAgICBjb250ZW50OiBtc2cubWVzc2FnZVRleHQgfHwgbXNnLm1lc3NhZ2UgfHwgbXNnLnRleHQgfHwgbXNnLmNvbnRlbnQgfHwgJycsXHJcbiAgICAgICAgc2VuZGVyOiBtc2cuc2VuZGVyIHx8IChpc1VzZXJNZXNzYWdlID8gdGhpcy51c2VyTmFtZSB8fCAnVXNlcicgOiAnTWFlc3RybycpLFxyXG4gICAgICAgIGludGVudDogbXNnLmludGVudCB8fCAnJyxcclxuICAgICAgICBhdXRob3JOYW1lOiBtc2cuYXV0aG9yTmFtZSB8fCBtc2cuc2VuZGVyLFxyXG4gICAgICAgIGNvbmZpZGVuY2VTY29yZTogbXNnLmNvbmZpZGVuY2VTY29yZSB8fCBtc2cuY29uZmlkZW5jZSB8fCAwLFxyXG4gICAgICAgIHRpbWVzdGFtcDogbXNnLnRpbWVzdGFtcCB8fCBtc2cuY3JlYXRlZEF0IFxyXG4gICAgICAgICAgPyBuZXcgRGF0ZShtc2cudGltZXN0YW1wIHx8IG1zZy5jcmVhdGVkQXQpIFxyXG4gICAgICAgICAgOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2VcclxuICAgICAgfSBhcyBDaGF0TWVzc2FnZTtcclxuICAgICAgXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdUcmFuc2Zvcm1lZCBtZXNzYWdlOicsIHRyYW5zZm9ybWVkKTtcclxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIC8vIFNvcnQgbWVzc2FnZXMgYnkgdGltZXN0YW1wIHRvIG1haW50YWluIGNocm9ub2xvZ2ljYWwgb3JkZXJcclxuICAgIHRyYW5zZm9ybWVkTWVzc2FnZXMuc29ydCgoYSwgYikgPT4gXHJcbiAgICAgIGEudGltZXN0YW1wLmdldFRpbWUoKSAtIGIudGltZXN0YW1wLmdldFRpbWUoKVxyXG4gICAgKTtcclxuICAgIFxyXG4gICAgLy8gY29uc29sZS5sb2coJ1NvcnRlZCBtZXNzYWdlcyBjb3VudDonLCB0cmFuc2Zvcm1lZE1lc3NhZ2VzLmxlbmd0aCk7XHJcbiAgICBcclxuICAgIC8vIEFkZCB3ZWxjb21lIG1lc3NhZ2UgZmlyc3QgaWYgbm8gbWVzc2FnZXMgb3IgbG9hZCBoaXN0b3JpY2FsIG1lc3NhZ2VzXHJcbiAgICBpZiAodHJhbnNmb3JtZWRNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ05vIG1lc3NhZ2VzIHRvIGxvYWQsIGFkZGluZyB3ZWxjb21lIG1lc3NhZ2UnKTtcclxuICAgICAgdGhpcy5hZGRXZWxjb21lTWVzc2FnZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgZmlyc3QgbWVzc2FnZSBpcyBhIHdlbGNvbWUgbWVzc2FnZSwgaWYgbm90IGFkZCBvbmVcclxuICAgICAgY29uc3QgaGFzV2VsY29tZSA9IHRyYW5zZm9ybWVkTWVzc2FnZXMuc29tZShtc2cgPT4gXHJcbiAgICAgICAgbXNnLmludGVudCA9PT0gJ3dlbGNvbWUnIHx8IG1zZy5jb250ZW50LmluY2x1ZGVzKCdIZWxsbycpXHJcbiAgICAgICk7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoIWhhc1dlbGNvbWUpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnTm8gd2VsY29tZSBtZXNzYWdlIGZvdW5kLCBhZGRpbmcgb25lJyk7XHJcbiAgICAgICAgdGhpcy5hZGRXZWxjb21lTWVzc2FnZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnUHVzaGluZyB0cmFuc2Zvcm1lZCBtZXNzYWdlcyB0byBtZXNzYWdlcyBhcnJheScpO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goLi4udHJhbnNmb3JtZWRNZXNzYWdlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ1RvdGFsIGxvYWRlZCBtZXNzYWdlcyBpbiBjb21wb25lbnQ6JywgdGhpcy5tZXNzYWdlcy5sZW5ndGgpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ01lc3NhZ2VzIGFycmF5OicsIHRoaXMubWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGVscGVyIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgYSBtZXNzYWdlIGlzIGZyb20gdGhlIHVzZXJcclxuICAgKi9cclxuICBwcml2YXRlIGlzVXNlck1lc3NhZ2UobXNnOiBhbnkpOiBib29sZWFuIHtcclxuICAgIC8vIENoZWNrIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IG1pZ2h0IGluZGljYXRlIHVzZXIgbWVzc2FnZVxyXG4gICAgaWYgKG1zZy5pc1VzZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIG1zZy5pc1VzZXI7XHJcbiAgICBpZiAobXNnLnJvbGUpIHJldHVybiBtc2cucm9sZS50b0xvd2VyQ2FzZSgpID09PSAndXNlcic7XHJcbiAgICBpZiAobXNnLnNlbmRlcikge1xyXG4gICAgICBjb25zdCBzZW5kZXIgPSBtc2cuc2VuZGVyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBzZW5kZXIgPT09ICd1c2VyJyB8fCBcclxuICAgICAgICAgICAgIHNlbmRlciA9PT0gdGhpcy51c2VyTmFtZT8udG9Mb3dlckNhc2UoKSB8fFxyXG4gICAgICAgICAgICAgc2VuZGVyID09PSB0aGlzLnVzZXJJZD8udG9Mb3dlckNhc2UoKSB8fFxyXG4gICAgICAgICAgICAgc2VuZGVyLmluY2x1ZGVzKCd1c2VyJyk7XHJcbiAgICB9XHJcbiAgICAvLyBEZWZhdWx0IHRvIGZhbHNlIChib3QgbWVzc2FnZSkgaWYgY2FuJ3QgZGV0ZXJtaW5lXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZW5kSW5xdWlyeSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jdXJyZW50SW5xdWlyeS50cmltKCkgfHwgdGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVzZXJNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgbWVzc2FnZUlkOiB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmNvbnZlcnNhdGlvbklkLFxyXG4gICAgICBpc1VzZXI6IHRydWUsXHJcbiAgICAgIHNlbmRlcjogdGhpcy51c2VyTmFtZSB8fCAnVXNlcicsXHJcbiAgICAgIGludGVudDogdGhpcy5pbnRlbnQsXHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMuY3VycmVudElucXVpcnksXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgdGhpcy5tZXNzYWdlcy5wdXNoKHVzZXJNZXNzYWdlKTtcclxuICAgIHRoaXMubWVzc2FnZVNlbnQuZW1pdCh1c2VyTWVzc2FnZSk7XHJcblxyXG4gICAgLy8gQWRkIGxvYWRpbmcgbWVzc2FnZVxyXG4gICAgY29uc3QgbG9hZGluZ01lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xyXG4gICAgICBpc1VzZXI6IGZhbHNlLFxyXG4gICAgICBpbnRlbnQ6ICcnLFxyXG4gICAgICBjb250ZW50OiAnUHJvY2Vzc2luZyB5b3VyIGlucXVpcnkuLi4nLFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgIGlzTG9hZGluZzogdHJ1ZVxyXG4gICAgfTtcclxuICAgIHRoaXMubWVzc2FnZXMucHVzaChsb2FkaW5nTWVzc2FnZSk7XHJcblxyXG4gICAgY29uc3QgaW5xdWlyeSA9IHRoaXMuY3VycmVudElucXVpcnkudHJpbSgpO1xyXG4gICAgdGhpcy5jdXJyZW50SW5xdWlyeSA9ICcnO1xyXG4gICAgdGhpcy5hdXRob3JOYW1lID0gJyc7XHJcbiAgICB0aGlzLmludGVudCA9ICcnO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3Q6IFN1cHBvcnRCb3RSZXF1ZXN0ID0ge1xyXG4gICAgICBxdWVyeTogaW5xdWlyeSxcclxuICAgICAgLi4uKHRoaXMuY29udmVyc2F0aW9uSWQgJiYgeyBjb252ZXJzYXRpb25JZDogU3RyaW5nKHRoaXMuY29udmVyc2F0aW9uSWQpIH0pLFxyXG4gICAgICAuLi4odGhpcy51c2VySWQgJiYgeyB1c2VySWQ6IHRoaXMudXNlcklkIH0pLFxyXG4gICAgICAuLi4odGhpcy51c2VyTmFtZSAmJiB7IHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lIH0pLFxyXG4gICAgICAuLi4odGhpcy5hcHBTb3VyY2UgJiYgeyBhcHBTb3VyY2U6IHRoaXMuYXBwU291cmNlIH0pXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuYWlBZ2VudFNlcnZpY2UucHJvY2Vzc0lucXVpcnkocmVxdWVzdClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IFN1cHBvcnRCb3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gVXBkYXRlIGNvbnZlcnNhdGlvbklkIGlmIHByb3ZpZGVkIGluIHJlc3BvbnNlXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuY29udmVyc2F0aW9uSWQgJiYgIXRoaXMuY29udmVyc2F0aW9uSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IHJlc3BvbnNlLmNvbnZlcnNhdGlvbklkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBtZXNzYWdlXHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcy5maWx0ZXIobXNnID0+ICFtc2cuaXNMb2FkaW5nKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmFuc3dlciB8fCAocmVzcG9uc2UuY29udGVudHMgJiYgcmVzcG9uc2UuY29udGVudHMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmFuc3dlcikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJvdE1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICAgICAgICAgICAgICBjb252ZXJzYXRpb25JZDogdGhpcy5jb252ZXJzYXRpb25JZCxcclxuICAgICAgICAgICAgICAgIGlzVXNlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBzZW5kZXI6ICdNYWVzdHJvJyxcclxuICAgICAgICAgICAgICAgIGludGVudDogcmVzcG9uc2Uuc2VhcmNoSW50ZW50IHx8IGlucXVpcnksXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0aGlzLmZvcm1hdE1lc3NhZ2VDb250ZW50KHJlc3BvbnNlLmFuc3dlciksXHJcbiAgICAgICAgICAgICAgICBhdXRob3JOYW1lOiByZXNwb25zZS5jb250ZW50cyAmJiByZXNwb25zZS5jb250ZW50cy5sZW5ndGggPiAwID8gcmVzcG9uc2UuY29udGVudHNbMF0uYXV0aG9yTmFtZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKGJvdE1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVJlY2VpdmVkLmVtaXQoYm90TWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuY29udGVudHMgJiYgcmVzcG9uc2UuY29udGVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIC8vIFB1c2ggZWFjaCBjb250ZW50IGFzIGEgc2VwYXJhdGUgbWVzc2FnZVxyXG4gICAgICAgICAgICAgIHJlc3BvbnNlLmNvbnRlbnRzLmZvckVhY2goY29udGVudEl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRJdGVtLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgYm90TWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUlkOiB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNVc2VyOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBzZW5kZXI6IGNvbnRlbnRJdGVtLmF1dGhvck5hbWUgfHwgJ01hZXN0cm8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGludGVudDogcmVzcG9uc2Uuc2VhcmNoSW50ZW50IHx8IGlucXVpcnksXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5mb3JtYXRNZXNzYWdlQ29udGVudChjb250ZW50SXRlbS5jb250ZW50IHx8ICdObyBjb250ZW50IGF2YWlsYWJsZScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dGhvck5hbWU6IGNvbnRlbnRJdGVtLmF1dGhvck5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaChib3RNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlUmVjZWl2ZWQuZW1pdChib3RNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IHRoaXMuZ2VuZXJhdGVNZXNzYWdlSWQoKSxcclxuICAgICAgICAgICAgICBjb252ZXJzYXRpb25JZDogdGhpcy5jb252ZXJzYXRpb25JZCxcclxuICAgICAgICAgICAgICBpc1VzZXI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHNlbmRlcjogJ01hZXN0cm8nLFxyXG4gICAgICAgICAgICAgIGludGVudDogaW5xdWlyeSxcclxuICAgICAgICAgICAgICBjb250ZW50OiBgU29ycnksIEkgZGlkbid0IHJlY2VpdmUgYSB2YWxpZCByZXNwb25zZS5gLFxyXG4gICAgICAgICAgICAgIGF1dGhvck5hbWU6IHRoaXMuYXV0aG9yTmFtZSxcclxuICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKGVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVJlY2VpdmVkLmVtaXQoZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIG1lc3NhZ2VcclxuICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gIW1zZy5pc0xvYWRpbmcpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IHRoaXMuZ2VuZXJhdGVNZXNzYWdlSWQoKSxcclxuICAgICAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uSWQsXHJcbiAgICAgICAgICAgIGlzVXNlcjogZmFsc2UsXHJcbiAgICAgICAgICAgIHNlbmRlcjogJ01hZXN0cm8nLFxyXG4gICAgICAgICAgICBpbnRlbnQ6IGlucXVpcnksXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdTb3JyeSwgSSBlbmNvdW50ZXJlZCBhbiBlcnJvciBwcm9jZXNzaW5nIHlvdXIgcmVxdWVzdC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxyXG4gICAgICAgICAgICBhdXRob3JOYW1lOiB0aGlzLmF1dGhvck5hbWUsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlUmVjZWl2ZWQuZW1pdChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGlucXVpcnk6JywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckNoYXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICB0aGlzLmFkZFdlbGNvbWVNZXNzYWdlKCk7XHJcbiAgfVxyXG5cclxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnNlbmRJbnF1aXJ5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICAvLyBEZWZhdWx0IHRoZW1lIGlmIG5vIHRlbXBsYXRlIGRlc2lnbiBpcyBzcGVjaWZpZWRcclxuICAgIGlmICghdGhpcy50ZW1wbGF0ZURlc2lnbikge1xyXG4gICAgICByZXR1cm4gJ3RoZW1lLWRlZmF1bHQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYXRlIGFuZCByZXR1cm4gdGhlbWUgY2xhc3NcclxuICAgIGNvbnN0IHZhbGlkVGhlbWVzID0gWydkZWZhdWx0JywgJ2RhcmsnLCAnYmx1ZScsICdncmVlbicsICdwdXJwbGUnLCAnbWluaW1hbCcsICdjb3Jwb3JhdGUnLCAncmVkJywgJ3llbGxvdycsICdvcmFuZ2UnXTtcclxuICAgIGNvbnN0IHRoZW1lID0gdGhpcy50ZW1wbGF0ZURlc2lnbi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgXHJcbiAgICBpZiAodmFsaWRUaGVtZXMuaW5jbHVkZXModGhlbWUpKSB7XHJcbiAgICAgIHJldHVybiBgdGhlbWUtJHt0aGVtZX1gO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBGYWxsYmFjayB0byBkZWZhdWx0IGlmIGludmFsaWQgdGhlbWVcclxuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCB0aGVtZSAnJHt0aGlzLnRlbXBsYXRlRGVzaWdufScgcHJvdmlkZWQuIFVzaW5nIGRlZmF1bHQgdGhlbWUuYCk7XHJcbiAgICByZXR1cm4gJ3RoZW1lLWRlZmF1bHQnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRNZXNzYWdlQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFjb250ZW50KSByZXR1cm4gJyc7XHJcbiAgICBcclxuICAgIC8vIElmIGNvbnRlbnQgYWxyZWFkeSBjb250YWlucyBIVE1MIHRhZ3MsIHJldHVybiBhcy1pc1xyXG4gICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoJzwnKSAmJiBjb250ZW50LmluY2x1ZGVzKCc+JykpIHtcclxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIENvbnZlcnQgbmV3bGluZXMgdG8gSFRNTCBicmVha3NcclxuICAgIGxldCBmb3JtYXR0ZWQgPSBjb250ZW50LnJlcGxhY2UoL1xcbi9nLCAnPGJyPicpO1xyXG4gICAgXHJcbiAgICAvLyBDb252ZXJ0IGVzY2FwZWQgbmV3bGluZXMgdG8gSFRNTCBicmVha3NcclxuICAgIGZvcm1hdHRlZCA9IGZvcm1hdHRlZC5yZXBsYWNlKC9cXFxcbi9nLCAnPGJyPicpO1xyXG4gICAgXHJcbiAgICAvLyBDb252ZXJ0IG1hcmtkb3duLXN0eWxlIGJvbGQgdG8gSFRNTFxyXG4gICAgZm9ybWF0dGVkID0gZm9ybWF0dGVkLnJlcGxhY2UoL1xcKlxcKiguKj8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+Jyk7XHJcbiAgICBcclxuICAgIC8vIENvbnZlcnQgYnVsbGV0IHBvaW50cyB0byBIVE1MIGxpc3RzXHJcbiAgICBjb25zdCBsaW5lcyA9IGZvcm1hdHRlZC5zcGxpdCgnPGJyPicpO1xyXG4gICAgbGV0IGluTGlzdCA9IGZhbHNlO1xyXG4gICAgY29uc3QgcHJvY2Vzc2VkTGluZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcclxuICAgICAgaWYgKGxpbmUudHJpbSgpLnN0YXJ0c1dpdGgoJ+KAoiAnKSkge1xyXG4gICAgICAgIGlmICghaW5MaXN0KSB7XHJcbiAgICAgICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKCc8dWw+Jyk7XHJcbiAgICAgICAgICBpbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKCc8bGk+JyArIGxpbmUucmVwbGFjZSgvXuKAoiAvLCAnJykgKyAnPC9saT4nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaW5MaXN0KSB7XHJcbiAgICAgICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKCc8L3VsPicpO1xyXG4gICAgICAgICAgaW5MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb2Nlc3NlZExpbmVzLnB1c2gobGluZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGluTGlzdCkge1xyXG4gICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKCc8L3VsPicpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gcHJvY2Vzc2VkTGluZXMuam9pbignPGJyPicpLnJlcGxhY2UoLzxicj48dWw+L2csICc8dWw+JykucmVwbGFjZSgvPFxcL3VsPjxicj4vZywgJzwvdWw+Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlU2Vzc2lvbklkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJ3Nlc3Npb25fJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KSArICdfJyArIERhdGUubm93KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlTWVzc2FnZUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJ21zZ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpICsgJ18nICsgRGF0ZS5ub3coKTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1hdHRlZFRpbWUodGltZXN0YW1wOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aW1lc3RhbXAudG9Mb2NhbGVUaW1lU3RyaW5nKFtdLCB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7XHJcbiAgfVxyXG5cclxuICAvLyA9PT09PT09PT09PT09IFJlc2l6ZSBNZXRob2RzID09PT09PT09PT09PT1cclxuICBcclxuICBzdGFydFJlc2l6ZShldmVudDogTW91c2VFdmVudCwgZGlyZWN0aW9uOiAnd2lkdGgnIHwgJ2JvdGgnKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuc3RhcnRXaWR0aCA9IHRoaXMuY29udGFpbmVyV2lkdGg7XHJcbiAgICB0aGlzLnN0YXJ0SGVpZ2h0ID0gdGhpcy5jb250YWluZXJIZWlnaHQ7XHJcbiAgICBcclxuICAgIGNvbnN0IG1vdXNlTW92ZUhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5vblJlc2l6ZShlLCBkaXJlY3Rpb24pO1xyXG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAoKSA9PiB0aGlzLnN0b3BSZXNpemUobW91c2VNb3ZlSGFuZGxlciwgbW91c2VVcEhhbmRsZXIpO1xyXG4gICAgXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50LCBkaXJlY3Rpb246ICd3aWR0aCcgfCAnYm90aCcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKSByZXR1cm47XHJcbiAgICBcclxuICAgIGNvbnN0IGRlbHRhWCA9IGV2ZW50LmNsaWVudFggLSB0aGlzLnN0YXJ0WDtcclxuICAgIGNvbnN0IGRlbHRhWSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLnN0YXJ0WTtcclxuICAgIFxyXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3dpZHRoJyB8fCBkaXJlY3Rpb24gPT09ICdib3RoJykge1xyXG4gICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWluKFxyXG4gICAgICAgIE1hdGgubWF4KHRoaXMuc3RhcnRXaWR0aCArIGRlbHRhWCwgdGhpcy5taW5XaWR0aCksXHJcbiAgICAgICAgdGhpcy5tYXhXaWR0aFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gbmV3V2lkdGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdib3RoJykge1xyXG4gICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1pbihcclxuICAgICAgICBNYXRoLm1heCh0aGlzLnN0YXJ0SGVpZ2h0ICsgZGVsdGFZLCB0aGlzLm1pbkhlaWdodCksXHJcbiAgICAgICAgdGhpcy5tYXhIZWlnaHRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSBuZXdIZWlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3BSZXNpemUobW91c2VNb3ZlSGFuZGxlcjogKGU6IE1vdXNlRXZlbnQpID0+IHZvaWQsIG1vdXNlVXBIYW5kbGVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzUmVzaXppbmcgPSBmYWxzZTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIFxyXG4gICAgdGhpcy5zYXZlU2l6ZVByZWZlcmVuY2UoKTtcclxuICAgIHRoaXMuZW1pdFNpemVDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2l6ZVByZXNldChzaXplOiBDaGF0U2l6ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50U2l6ZSA9IHNpemU7XHJcbiAgICBcclxuICAgIHN3aXRjaCAoc2l6ZSkge1xyXG4gICAgICBjYXNlICdjb21wYWN0JzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gNDAwO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gNTAwO1xyXG4gICAgICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RlZmF1bHQnOlxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSA4MDA7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSA2MDA7XHJcbiAgICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXhwYW5kZWQnOlxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSAxMjAwO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gODAwO1xyXG4gICAgICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Z1bGxzY3JlZW4nOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlRnVsbHNjcmVlbigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5zYXZlU2l6ZVByZWZlcmVuY2UoKTtcclxuICAgIHRoaXMuZW1pdFNpemVDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNGdWxsc2NyZWVuKSB7XHJcbiAgICAgIC8vIEVudGVyaW5nIGZ1bGxzY3JlZW4gLSBzYXZlIGN1cnJlbnQgc3RhdGUgZmlyc3RcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hhdGJveC1wcmV2aW91cy1zaXplJywgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5jb250YWluZXJIZWlnaHQsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5jdXJyZW50U2l6ZSxcclxuICAgICAgICB3YXNGdWxsc2NyZWVuOiB0aGlzLmlzRnVsbHNjcmVlblxyXG4gICAgICB9KSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuY3VycmVudFNpemUgPSAnZnVsbHNjcmVlbic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBFeGl0aW5nIGZ1bGxzY3JlZW4gLSByZXN0b3JlIHByZXZpb3VzIHN0YXRlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGF0Ym94LXByZXZpb3VzLXNpemUnKTtcclxuICAgICAgICBpZiAocHJldmlvdXMpIHtcclxuICAgICAgICAgIGNvbnN0IHByZXZEYXRhID0gSlNPTi5wYXJzZShwcmV2aW91cyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gcHJldkRhdGEud2lkdGggfHwgODAwO1xyXG4gICAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSBwcmV2RGF0YS5oZWlnaHQgfHwgNjAwO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U2l6ZSA9IHByZXZEYXRhLnNpemUgPT09ICdmdWxsc2NyZWVuJyA/ICdkZWZhdWx0JyA6IHByZXZEYXRhLnNpemU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNpemUgPSAnZGVmYXVsdCc7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gODAwO1xyXG4gICAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSA2MDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNpemUgPSAnZGVmYXVsdCc7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IDgwMDtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IDYwMDtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5zYXZlU2l6ZVByZWZlcmVuY2UoKTtcclxuICAgIHRoaXMuZW1pdFNpemVDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZVNpemVQcmVmZXJlbmNlKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2l6ZURhdGEgPSB7XHJcbiAgICAgIHNpemU6IHRoaXMuY3VycmVudFNpemUsXHJcbiAgICAgIHdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuY29udGFpbmVySGVpZ2h0LFxyXG4gICAgICBpc0Z1bGxzY3JlZW46IHRoaXMuaXNGdWxsc2NyZWVuXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICB0cnkge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGF0Ym94LXNpemUtcHJlZmVyZW5jZScsIEpTT04uc3RyaW5naWZ5KHNpemVEYXRhKSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIHNpemUgcHJlZmVyZW5jZTonLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRTYXZlZFNpemUoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzYXZlZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXRib3gtc2l6ZS1wcmVmZXJlbmNlJyk7XHJcbiAgICAgIGlmIChzYXZlZCkge1xyXG4gICAgICAgIGNvbnN0IHNpemVEYXRhID0gSlNPTi5wYXJzZShzYXZlZCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U2l6ZSA9IHNpemVEYXRhLnNpemUgfHwgJ2RlZmF1bHQnO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSBzaXplRGF0YS53aWR0aCB8fCA4MDA7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSBzaXplRGF0YS5oZWlnaHQgfHwgNjAwO1xyXG4gICAgICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gc2l6ZURhdGEuaXNGdWxsc2NyZWVuIHx8IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIHNpemUgcHJlZmVyZW5jZTonLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRTaXplQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXplQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgc2l6ZTogdGhpcy5jdXJyZW50U2l6ZSxcclxuICAgICAgd2lkdGg6IHRoaXMuY29udGFpbmVyV2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5jb250YWluZXJIZWlnaHRcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGFpbmVyU3R5bGUoKTogYW55IHtcclxuICAgIGlmICh0aGlzLmlzRnVsbHNjcmVlbikge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHdpZHRoOiAnMTAwdncgIWltcG9ydGFudCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnMTAwdmggIWltcG9ydGFudCcsXHJcbiAgICAgICAgbWF4V2lkdGg6ICcxMDB2dyAhaW1wb3J0YW50JyxcclxuICAgICAgICBtYXhIZWlnaHQ6ICcxMDB2aCAhaW1wb3J0YW50JyxcclxuICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcclxuICAgICAgICB0b3A6ICcwJyxcclxuICAgICAgICBsZWZ0OiAnMCcsXHJcbiAgICAgICAgcmlnaHQ6ICcwJyxcclxuICAgICAgICBib3R0b206ICcwJyxcclxuICAgICAgICBtYXJnaW46ICcwJyxcclxuICAgICAgICB6SW5kZXg6IDk5OTk5XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHdpZHRoOiBgJHt0aGlzLmNvbnRhaW5lcldpZHRofXB4YCxcclxuICAgICAgaGVpZ2h0OiBgJHt0aGlzLmNvbnRhaW5lckhlaWdodH1weGAsXHJcbiAgICAgIG1heFdpZHRoOiBgJHt0aGlzLm1heFdpZHRofXB4YFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vID09PT09PT09PT09PT0gRmlsZSBVcGxvYWQgTWV0aG9kcyA9PT09PT09PT09PT09XHJcbiAgXHJcbiAgb25JbWFnZVVwbG9hZChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbGVTZWxlY3Rpb24oQXJyYXkuZnJvbShpbnB1dC5maWxlcyksICdpbWFnZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlVXBsb2FkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChpbnB1dC5maWxlcyAmJiBpbnB1dC5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZVNlbGVjdGlvbihBcnJheS5mcm9tKGlucHV0LmZpbGVzKSwgJ2ZpbGUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRmlsZVNlbGVjdGlvbihmaWxlczogRmlsZVtdLCB0eXBlOiAnaW1hZ2UnIHwgJ2ZpbGUnKTogdm9pZCB7XHJcbiAgICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgICAvLyBWYWxpZGF0ZSBmaWxlIHR5cGVcclxuICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gdHlwZSA9PT0gJ2ltYWdlJyA/IHRoaXMuYWxsb3dlZEltYWdlVHlwZXMgOiB0aGlzLmFsbG93ZWRGaWxlVHlwZXM7XHJcbiAgICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYEZpbGUgdHlwZSAke2ZpbGUudHlwZX0gbm90IGFsbG93ZWRgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFZhbGlkYXRlIGZpbGUgc2l6ZVxyXG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgRmlsZSAke2ZpbGUubmFtZX0gZXhjZWVkcyBtYXhpbXVtIHNpemUgb2YgJHt0aGlzLm1heEZpbGVTaXplIC8gMTAyNCAvIDEwMjR9TUJgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnQ6IEZpbGVBdHRhY2htZW50ID0ge1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVNZXNzYWdlSWQoKSxcclxuICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcclxuICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcclxuICAgICAgICAgIGRhdGE6IGUudGFyZ2V0Py5yZXN1bHQgfHwgdW5kZWZpbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZXMucHVzaChhdHRhY2htZW50KTtcclxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRlZC5lbWl0KGF0dGFjaG1lbnQpO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQXR0YWNobWVudChhdHRhY2htZW50SWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gdGhpcy5zZWxlY3RlZEZpbGVzLmZpbHRlcihmID0+IGYuaWQgIT09IGF0dGFjaG1lbnRJZCk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VySW1hZ2VVcGxvYWQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZS11cGxvYWQtaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKGlucHV0KSB7XHJcbiAgICAgIGlucHV0LmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyRmlsZVVwbG9hZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUtdXBsb2FkLWlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpbnB1dC5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZUljb24oZmlsZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoZmlsZVR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHJldHVybiAn8J+WvO+4jyc7XHJcbiAgICBpZiAoZmlsZVR5cGUuaW5jbHVkZXMoJ3BkZicpKSByZXR1cm4gJ/Cfk4QnO1xyXG4gICAgaWYgKGZpbGVUeXBlLmluY2x1ZGVzKCd3b3JkJykgfHwgZmlsZVR5cGUuaW5jbHVkZXMoJ2RvY3VtZW50JykpIHJldHVybiAn8J+TnSc7XHJcbiAgICBpZiAoZmlsZVR5cGUuaW5jbHVkZXMoJ3RleHQnKSkgcmV0dXJuICfwn5ODJztcclxuICAgIHJldHVybiAn8J+Tjic7XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlU2l6ZUZvcm1hdHRlZChieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBieXRlcyArICcgQic7XHJcbiAgICBpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIChieXRlcyAvIDEwMjQpLnRvRml4ZWQoMSkgKyAnIEtCJztcclxuICAgIHJldHVybiAoYnl0ZXMgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDEpICsgJyBNQic7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImFpLWNoYXQtY29udGFpbmVyXCIgXHJcbiAgICAgW25nQ2xhc3NdPVwiZ2V0VGhlbWVDbGFzcygpXCIgXHJcbiAgICAgW25nU3R5bGVdPVwiZ2V0Q29udGFpbmVyU3R5bGUoKVwiXHJcbiAgICAgW2NsYXNzLmZ1bGxzY3JlZW5dPVwiaXNGdWxsc2NyZWVuXCJcclxuICAgICBbY2xhc3MucmVzaXppbmddPVwiaXNSZXNpemluZ1wiXHJcbiAgICAgW2NsYXNzXT1cImdldEFuaW1hdGlvbkNsYXNzKClcIj5cclxuICBcclxuICA8IS0tIFJlc2l6ZSBIYW5kbGVzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXNpemUtaGFuZGxlIHJlc2l6ZS1oYW5kbGUtcmlnaHRcIiBcclxuICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCAnd2lkdGgnKVwiXHJcbiAgICAgICAqbmdJZj1cIiFpc0Z1bGxzY3JlZW5cIlxyXG4gICAgICAgdGl0bGU9XCJEcmFnIHRvIHJlc2l6ZSB3aWR0aFwiPlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJyZXNpemUtaGFuZGxlIHJlc2l6ZS1oYW5kbGUtY29ybmVyXCIgXHJcbiAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgJ2JvdGgnKVwiXHJcbiAgICAgICAqbmdJZj1cIiFpc0Z1bGxzY3JlZW5cIlxyXG4gICAgICAgdGl0bGU9XCJEcmFnIHRvIHJlc2l6ZVwiPlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDwhLS0gRGVidWcgSW5mb3JtYXRpb24gKG9ubHkgc2hvd24gd2hlbiBzaG93RGVidWdJbmZvIGlzIHRydWUpIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVidWdJbmZvXCIgY2xhc3M9XCJkZWJ1Zy1pbmZvXCI+XHJcbiAgICA8aDM+REVCVUc6IEFJIENoYXQgQ29tcG9uZW50IExvYWRlZDwvaDM+XHJcbiAgICA8cD5TdGF0dXM6IHt7IGNvbmZpZ3VyYXRpb25TdGF0dXMgfHwgJ0xvYWRpbmcuLi4nIH19PC9wPlxyXG4gICAgPHA+TWVzc2FnZXMgY291bnQ6IHt7IG1lc3NhZ2VzLmxlbmd0aCB8fCAwIH19PC9wPlxyXG4gICAgPHA+VGhlbWU6IHt7IHRlbXBsYXRlRGVzaWduIHx8ICdkZWZhdWx0JyB9fTwvcD5cclxuICAgIDxwPlNpemU6IHt7IGN1cnJlbnRTaXplIH19ICh7eyBjb250YWluZXJXaWR0aCB9fXh7eyBjb250YWluZXJIZWlnaHQgfX0pPC9wPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2hhdC1oZWFkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItbGVmdFwiPlxyXG4gICAgICA8aDI+e3sgdGl0bGUgfX08L2gyPlxyXG4gICAgICA8IS0tIEljb24tb25seSBzdGF0dXMgaW5kaWNhdG9yIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWluZGljYXRvci1pY29uXCIgXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydzdGF0dXMtcmVhZHknOiBjb25maWd1cmF0aW9uU3RhdHVzID09PSAnQUkgQWdlbnQgaXMgcmVhZHknLCBcclxuICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMtZXJyb3InOiBjb25maWd1cmF0aW9uU3RhdHVzICE9PSAnQUkgQWdlbnQgaXMgcmVhZHknICYmIGNvbmZpZ3VyYXRpb25TdGF0dXMgIT09ICdJbml0aWFsaXppbmcuLi4nICYmIGNvbmZpZ3VyYXRpb25TdGF0dXMgIT09ICdUZXN0aW5nIGNvbm5lY3Rpb24uLi4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cy1sb2FkaW5nJzogY29uZmlndXJhdGlvblN0YXR1cyA9PT0gJ0luaXRpYWxpemluZy4uLicgfHwgY29uZmlndXJhdGlvblN0YXR1cyA9PT0gJ1Rlc3RpbmcgY29ubmVjdGlvbi4uLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1lbmFibGVkJzogZW5hYmxlU3RhdHVzVHJhbnNpdGlvbnN9XCJcclxuICAgICAgICAgICBbdGl0bGVdPVwiY29uZmlndXJhdGlvblN0YXR1c1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRyb2xzXCI+XHJcbiAgICAgIDwhLS0gU2l6ZSBQcmVzZXQgQnV0dG9ucyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInNpemUtY29udHJvbHNcIiAqbmdJZj1cIiFpc0Z1bGxzY3JlZW5cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udHJvbC1idXR0b24gc2l6ZS1idXR0b25cIiBcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVNpemVQcmVzZXQoJ2NvbXBhY3QnKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRTaXplID09PSAnY29tcGFjdCdcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJDb21wYWN0IFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQ29tcGFjdCBWaWV3XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tc3ZnXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRJY29ucy5jb21wYWN0Vmlld1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udHJvbC1idXR0b24gc2l6ZS1idXR0b25cIiBcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVNpemVQcmVzZXQoJ2RlZmF1bHQnKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRTaXplID09PSAnZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJEZWZhdWx0IFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiRGVmYXVsdCBWaWV3XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tc3ZnXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRJY29ucy5kZWZhdWx0Vmlld1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udHJvbC1idXR0b24gc2l6ZS1idXR0b25cIiBcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVNpemVQcmVzZXQoJ2V4cGFuZGVkJylcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U2l6ZSA9PT0gJ2V4cGFuZGVkJ1wiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkV4cGFuZGVkIFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiRXhwYW5kZWQgVmlld1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXN2Z1wiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuZXhwYW5kZWRWaWV3XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2hhdC1tZXNzYWdlc1wiICNtZXNzYWdlc0NvbnRhaW5lcj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiIGNsYXNzPVwibWVzc2FnZS13cmFwcGVyXCI+XHJcbiAgICAgIDwhLS0gTWVzc2FnZSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIiBcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItbWVzc2FnZSc6IG1lc3NhZ2UuaXNVc2VyLCAnYWktbWVzc2FnZSc6ICFtZXNzYWdlLmlzVXNlciwgJ2xvYWRpbmctbWVzc2FnZSc6IG1lc3NhZ2UuaXNMb2FkaW5nfVwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJtZXNzYWdlLmNvbnRlbnRcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLXRpbWVzdGFtcFwiPnt7IGdldEZvcm1hdHRlZFRpbWUobWVzc2FnZS50aW1lc3RhbXApIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtYXZhdGFyXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lc3NhZ2UuaXNVc2VyXCIgY2xhc3M9XCJhdmF0YXItaWNvblwiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMudXNlckF2YXRhclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW1lc3NhZ2UuaXNVc2VyICYmICFtZXNzYWdlLmlzTG9hZGluZ1wiIGNsYXNzPVwiYXZhdGFyLWljb25cIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZEljb25zLmFpQXZhdGFyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlLmlzTG9hZGluZ1wiIGNsYXNzPVwiYXZhdGFyLWljb24gbG9hZGluZy1zcGlubmVyXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRJY29ucy5sb2FkaW5nQXZhdGFyXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2hhdC1pbnB1dFwiPlxyXG4gICAgPCEtLSBBdHRhY2htZW50cyBQcmV2aWV3IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLXByZXZpZXdcIiAqbmdJZj1cInNlbGVjdGVkRmlsZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudC1pdGVtXCIgKm5nRm9yPVwibGV0IGZpbGUgb2Ygc2VsZWN0ZWRGaWxlc1wiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJhdHRhY2htZW50LWljb25cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcIj48L3BhdGg+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdHRhY2htZW50LW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdHRhY2htZW50LXNpemVcIj57eyBnZXRGaWxlU2l6ZUZvcm1hdHRlZChmaWxlLnNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJyZW1vdmUtYXR0YWNobWVudFwiIChjbGljayk9XCJyZW1vdmVBdHRhY2htZW50KGZpbGUuaWQpXCIgdGl0bGU9XCJSZW1vdmVcIiBhdHRyLmFyaWEtbGFiZWw9XCJSZW1vdmUgYXR0YWNobWVudFwiPlxyXG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+XHJcbiAgICAgICAgICAgIDxsaW5lIHgxPVwiMThcIiB5MT1cIjZcIiB4Mj1cIjZcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiPjwvbGluZT5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS0gRmlsZSBVcGxvYWQgSW5wdXRzIChIaWRkZW4pIC0tPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBcclxuICAgICAgICAgICAgIGlkPVwiaW1hZ2UtdXBsb2FkLWlucHV0XCIgXHJcbiAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCIgXHJcbiAgICAgICAgICAgICBtdWx0aXBsZSBcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbWFnZVVwbG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxyXG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVJbWFnZVVwbG9hZFwiPlxyXG4gICAgICBcclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgXHJcbiAgICAgICAgICAgICBpZD1cImZpbGUtdXBsb2FkLWlucHV0XCIgXHJcbiAgICAgICAgICAgICBhY2NlcHQ9XCIucGRmLC5kb2MsLmRvY3gsLnR4dCwuY3N2XCIgXHJcbiAgICAgICAgICAgICBtdWx0aXBsZSBcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlVXBsb2FkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiXHJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZUZpbGVVcGxvYWRcIj5cclxuICAgICAgXHJcbiAgICAgIDwhLS0gVXBsb2FkIEJ1dHRvbnMgKENvbmRpdGlvbmFsbHkgcmVuZGVyZWQpIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJ1dHRvbnNcIiAqbmdJZj1cImVuYWJsZUltYWdlVXBsb2FkIHx8IGVuYWJsZUZpbGVVcGxvYWRcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZW5hYmxlSW1hZ2VVcGxvYWRcIiBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLWJ1dHRvbiBpbWFnZS11cGxvYWRcIiBcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VySW1hZ2VVcGxvYWQoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwiVXBsb2FkIEltYWdlXCJcclxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIlVwbG9hZCBJbWFnZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXN2Z1wiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuaW1hZ2VVcGxvYWRcIj48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVuYWJsZUZpbGVVcGxvYWRcIiBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLWJ1dHRvbiBmaWxlLXVwbG9hZFwiIFxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJGaWxlVXBsb2FkKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkF0dGFjaCBGaWxlXCJcclxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF0dGFjaCBGaWxlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tc3ZnXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRJY29ucy5maWxlVXBsb2FkXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgXHJcbiAgICAgIDx0ZXh0YXJlYSBcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRJbnF1aXJ5XCIgXHJcbiAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICByb3dzPVwiMlwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgY2xhc3M9XCJpbnF1aXJ5LXRleHRhcmVhXCJcclxuICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJUeXBlIHlvdXIgbWVzc2FnZVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgIFxyXG4gICAgICA8YnV0dG9uIFxyXG4gICAgICAgIChjbGljayk9XCJzZW5kSW5xdWlyeSgpXCIgXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjdXJyZW50SW5xdWlyeS50cmltKCkgfHwgaXNMb2FkaW5nXCJcclxuICAgICAgICBjbGFzcz1cInNlbmQtYnV0dG9uXCJcclxuICAgICAgICB0aXRsZT1cIlNlbmQgTWVzc2FnZVwiXHJcbiAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiU2VuZCBNZXNzYWdlXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNMb2FkaW5nXCIgY2xhc3M9XCJpY29uLXN2Z1wiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuc2VuZFwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiaWNvbi1zdmcgbG9hZGluZy1pY29uXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRJY29ucy5zZW5kTG9hZGluZ1wiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj57eyBpc0xvYWRpbmcgPyAnU2VuZGluZy4uLicgOiAnU2VuZCcgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
743
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbWFuYXRlLWFpLWNoYXQtbGliL3NyYy9saWIvY29tcG9uZW50cy9haS1jaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VtYW5hdGUtYWktY2hhdC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FpLWNoYXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUErQixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBZ0MxRixNQUFNLE9BQU8sZUFBZTtJQStEMUIsWUFDVSxjQUE4QixFQUM5QixTQUF1QjtRQUR2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWhFeEIsVUFBSyxHQUFXLG1CQUFtQixDQUFDO1FBQ3BDLGdCQUFXLEdBQVcsMkVBQTJFLENBQUM7UUFDbEcsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFXL0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDLENBQUMscUNBQXFDO1FBQ3pFLHFCQUFnQixHQUFZLEtBQUssQ0FBQyxDQUFFLG9DQUFvQztRQUN4RSxZQUFPLEdBQWdCLFNBQVMsQ0FBQyxDQUFHLHFCQUFxQjtRQUV6RCxxQkFBZ0IsR0FBWSxJQUFJLENBQUMsQ0FBRyxnQ0FBZ0M7UUFDcEUsbUJBQWMsR0FBK0IsUUFBUSxDQUFDLENBQUMsMEJBQTBCO1FBQ2pGLDRCQUF1QixHQUFZLElBQUksQ0FBQyxDQUFDLDhDQUE4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LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBaUFnZW50U2VydmljZSwgQWdlbnRSZXNwb25zZSwgU3VwcG9ydEJvdFJlcXVlc3QsIFN1cHBvcnRCb3RSZXNwb25zZSwgQ2hhdENvbnRlbnQgfSBmcm9tICcuLi9zZXJ2aWNlcy9haS1hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSWNvblNldFR5cGUsIENoYXRJY29uQ29uZmlnLCBnZXRJY29uU2V0IH0gZnJvbSAnLi4vbW9kZWxzL2ljb24tY29uZmlnLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIHtcclxuICBtZXNzYWdlSWQ/OiBzdHJpbmc7ICAgICAgICAgICAvLyBVbmlxdWUgbWVzc2FnZSBpZGVudGlmaWVyXHJcbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7ICAgICAgIC8vIENvbnZlcnNhdGlvbi9zZXNzaW9uIGlkZW50aWZpZXJcclxuICBpc1VzZXI6IGJvb2xlYW47XHJcbiAgY29udGVudDogc3RyaW5nO1xyXG4gIHNlbmRlcj86IHN0cmluZzsgICAgICAgICAgICAgICAvLyBTZW5kZXIgbmFtZSAobWFwcyB0byB5b3VyICdzZW5kZXInIGZpZWxkKVxyXG4gIGludGVudD86IHN0cmluZztcclxuICBhdXRob3JOYW1lPzogc3RyaW5nO1xyXG4gIGNvbmZpZGVuY2VTY29yZT86IG51bWJlcjsgICAgICAvLyBBSSBjb25maWRlbmNlIHNjb3JlXHJcbiAgdGltZXN0YW1wOiBEYXRlO1xyXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XHJcbiAgYXR0YWNobWVudHM/OiBGaWxlQXR0YWNobWVudFtdOyAvLyBGaWxlL0ltYWdlIGF0dGFjaG1lbnRzXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUF0dGFjaG1lbnQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBzaXplOiBudW1iZXI7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIGRhdGE/OiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2hhdFNpemUgPSAnY29tcGFjdCcgfCAnZGVmYXVsdCcgfCAnZXhwYW5kZWQnIHwgJ2Z1bGxzY3JlZW4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlbWFuYXRlLWFpLWNoYXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9haS1jaGF0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9haS1jaGF0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFpQ2hhdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnQ2hhdCB3aXRoIE1hZXN0cm8nO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnVHlwZSB5b3VyIGlucXVpcnkgaGVyZS4uLiAoUHJlc3MgRW50ZXIgdG8gc2VuZCwgU2hpZnQrRW50ZXIgZm9yIG5ldyBsaW5lKSc7XHJcbiAgQElucHV0KCkgc2hvd0RlYnVnSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwaVVybD86IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBLZXk/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBwU291cmNlPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJJZD86IHN0cmluZztcclxuICBASW5wdXQoKSBmaXJzdE5hbWU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlck5hbWU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGVtcGxhdGVEZXNpZ24/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2VsY29tZU1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGlzdG9yaWNhbE1lc3NhZ2VzPzogYW55W107IC8vIEhpc3RvcmljYWwgbWVzc2FnZXMgZnJvbSBwYXJlbnRcclxuICBASW5wdXQoKSBjb252ZXJzYXRpb25JZD86IHN0cmluZzsgICAgLy8gQ3VycmVudCBjb252ZXJzYXRpb24gSURcclxuICBASW5wdXQoKSBlbmFibGVJbWFnZVVwbG9hZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBFbmFibGUvZGlzYWJsZSBpbWFnZSB1cGxvYWQgYnV0dG9uXHJcbiAgQElucHV0KCkgZW5hYmxlRmlsZVVwbG9hZDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gRW5hYmxlL2Rpc2FibGUgZmlsZSB1cGxvYWQgYnV0dG9uXHJcbiAgQElucHV0KCkgaWNvblNldDogSWNvblNldFR5cGUgPSAnZmVhdGhlcic7ICAgLy8gSWNvbiBzZXQgc2VsZWN0aW9uXHJcbiAgQElucHV0KCkgY3VzdG9tSWNvbnM/OiBQYXJ0aWFsPENoYXRJY29uQ29uZmlnPjsgLy8gQ3VzdG9tIGljb24gb3ZlcnJpZGVzXHJcbiAgQElucHV0KCkgZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbiA9IHRydWU7ICAgLy8gRW5hYmxlL2Rpc2FibGUgYWxsIGFuaW1hdGlvbnNcclxuICBASW5wdXQoKSBhbmltYXRpb25TcGVlZDogJ3Nsb3cnIHwgJ25vcm1hbCcgfCAnZmFzdCcgPSAnbm9ybWFsJzsgLy8gQW5pbWF0aW9uIHNwZWVkIGNvbnRyb2xcclxuICBASW5wdXQoKSBlbmFibGVTdGF0dXNUcmFuc2l0aW9uczogYm9vbGVhbiA9IHRydWU7IC8vIEVuYWJsZS9kaXNhYmxlIHN0YXR1cyBpbmRpY2F0b3IgdHJhbnNpdGlvbnNcclxuICBAT3V0cHV0KCkgbWVzc2FnZVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcclxuICBAT3V0cHV0KCkgbWVzc2FnZVNlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xyXG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVBdHRhY2htZW50PigpO1xyXG4gIEBPdXRwdXQoKSBzaXplQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzaXplOiBDaGF0U2l6ZSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfT4oKTtcclxuXHJcbiAgbWVzc2FnZXM6IENoYXRNZXNzYWdlW10gPSBbXTtcclxuICBjdXJyZW50SW5xdWlyeSA9ICcnO1xyXG4gIGF1dGhvck5hbWUgPSAnJztcclxuICBpbnRlbnQgPSAnJztcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICBjb25maWd1cmF0aW9uU3RhdHVzID0gJyc7XHJcbiAgcHJldmlvdXNTdGF0dXMgPSAnJzsgLy8gVHJhY2sgcHJldmlvdXMgc3RhdHVzIGZvciB0cmFuc2l0aW9uc1xyXG4gIFxyXG4gIC8vIFJlc2l6aW5nIHByb3BlcnRpZXNcclxuICBjdXJyZW50U2l6ZTogQ2hhdFNpemUgPSAnZGVmYXVsdCc7XHJcbiAgaXNGdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgaXNSZXNpemluZyA9IGZhbHNlO1xyXG4gIGNvbnRhaW5lcldpZHRoID0gODAwO1xyXG4gIGNvbnRhaW5lckhlaWdodCA9IDYwMDtcclxuICBtaW5XaWR0aCA9IDQwMDtcclxuICBtYXhXaWR0aCA9IDE0MDA7XHJcbiAgbWluSGVpZ2h0ID0gNDAwO1xyXG4gIG1heEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDEwMDtcclxuICBzdGFydFggPSAwO1xyXG4gIHN0YXJ0WSA9IDA7XHJcbiAgc3RhcnRXaWR0aCA9IDA7XHJcbiAgc3RhcnRIZWlnaHQgPSAwO1xyXG4gIFxyXG4gIC8vIEZpbGUgdXBsb2FkIHByb3BlcnRpZXNcclxuICBtYXhGaWxlU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7IC8vIDEwTUJcclxuICBhbGxvd2VkSW1hZ2VUeXBlcyA9IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL2dpZicsICdpbWFnZS93ZWJwJ107XHJcbiAgYWxsb3dlZEZpbGVUeXBlcyA9IFsnYXBwbGljYXRpb24vcGRmJywgJ2FwcGxpY2F0aW9uL21zd29yZCcsIFxyXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcclxuICAgICd0ZXh0L3BsYWluJywgJ3RleHQvY3N2J107XHJcbiAgc2VsZWN0ZWRGaWxlczogRmlsZUF0dGFjaG1lbnRbXSA9IFtdO1xyXG4gIFxyXG4gIC8vIEljb24gY29uZmlndXJhdGlvblxyXG4gIGljb25zOiBDaGF0SWNvbkNvbmZpZyA9IGdldEljb25TZXQoJ2ZlYXRoZXInKTtcclxuICBzYW5pdGl6ZWRJY29uczogeyBba2V5OiBzdHJpbmddOiBTYWZlSHRtbCB9ID0ge307XHJcbiAgXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhaUFnZW50U2VydmljZTogQWlBZ2VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlU3RhdHVzKCdJbml0aWFsaXppbmcuLi4nKTtcclxuICAgIGNvbnNvbGUubG9nKCdBSSBDaGF0IENvbXBvbmVudCBpbml0aWFsaXplZCcpO1xyXG4gICAgXHJcbiAgICAvLyBMb2FkIGljb24gc2V0XHJcbiAgICB0aGlzLmljb25zID0gZ2V0SWNvblNldCh0aGlzLmljb25TZXQsIHRoaXMuY3VzdG9tSWNvbnMpO1xyXG4gICAgdGhpcy5zYW5pdGl6ZUljb25zKCk7XHJcbiAgICBcclxuICAgIC8vIENvbmZpZ3VyZSBBUEkgVVJMIGFuZCBBcHAgS2V5IGlmIHByb3ZpZGVkXHJcbiAgICBpZiAodGhpcy5hcGlVcmwgfHwgdGhpcy5hcHBLZXkpIHtcclxuICAgICAgdGhpcy5haUFnZW50U2VydmljZS5jb25maWd1cmUoeyBcclxuICAgICAgICBhcGlVcmw6IHRoaXMuYXBpVXJsLFxyXG4gICAgICAgIGFwcEtleTogdGhpcy5hcHBLZXkgXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBMb2FkIGhpc3RvcmljYWwgbWVzc2FnZXMgaWYgcHJvdmlkZWRcclxuICAgICAgaWYgKHRoaXMuaGlzdG9yaWNhbE1lc3NhZ2VzICYmIHRoaXMuaGlzdG9yaWNhbE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmxvYWRIaXN0b3JpY2FsTWVzc2FnZXModGhpcy5oaXN0b3JpY2FsTWVzc2FnZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWRkV2VsY29tZU1lc3NhZ2UoKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy50ZXN0Q29uZmlndXJhdGlvbigpO1xyXG4gICAgICB0aGlzLmxvYWRTYXZlZFNpemUoKTtcclxuICAgICAgdGhpcy5hcHBseVNpemVQcmVzZXQodGhpcy5jdXJyZW50U2l6ZSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgY29tcG9uZW50IGluaXRpYWxpemF0aW9uOicsIGVycm9yKTtcclxuICAgICAgdGhpcy51cGRhdGVTdGF0dXMoJ0luaXRpYWxpemF0aW9uIGVycm9yJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvLyBEZXRlY3Qgd2hlbiBoaXN0b3JpY2FsTWVzc2FnZXMgaW5wdXQgY2hhbmdlc1xyXG4gICAgaWYgKGNoYW5nZXNbJ2hpc3RvcmljYWxNZXNzYWdlcyddICYmICFjaGFuZ2VzWydoaXN0b3JpY2FsTWVzc2FnZXMnXS5maXJzdENoYW5nZSkge1xyXG4gICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IGNoYW5nZXNbJ2hpc3RvcmljYWxNZXNzYWdlcyddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ0hpc3RvcmljYWwgbWVzc2FnZXMgY2hhbmdlZDonLCBuZXdNZXNzYWdlcyk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBDbGVhciBleGlzdGluZyBtZXNzYWdlcyBhbmQgcmVsb2FkXHJcbiAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcclxuICAgICAgXHJcbiAgICAgIGlmIChuZXdNZXNzYWdlcyAmJiBuZXdNZXNzYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkSGlzdG9yaWNhbE1lc3NhZ2VzKG5ld01lc3NhZ2VzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkZFdlbGNvbWVNZXNzYWdlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gRGV0ZWN0IHdoZW4gY29udmVyc2F0aW9uSWQgY2hhbmdlc1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbnZlcnNhdGlvbklkJ10gJiYgIWNoYW5nZXNbJ2NvbnZlcnNhdGlvbklkJ10uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ0NvbnZlcnNhdGlvbiBJRCBjaGFuZ2VkOicsIGNoYW5nZXNbJ2NvbnZlcnNhdGlvbklkJ10uY3VycmVudFZhbHVlKTtcclxuICAgICAgLy8gVXBkYXRlIGFsbCBleGlzdGluZyBtZXNzYWdlcyB3aXRoIG5ldyBjb252ZXJzYXRpb25JZCBpZiBuZWVkZWRcclxuICAgICAgdGhpcy5tZXNzYWdlcy5mb3JFYWNoKG1zZyA9PiB7XHJcbiAgICAgICAgaWYgKG1zZy5jb252ZXJzYXRpb25JZCAhPT0gdGhpcy5jb252ZXJzYXRpb25JZCkge1xyXG4gICAgICAgICAgbXNnLmNvbnZlcnNhdGlvbklkID0gdGhpcy5jb252ZXJzYXRpb25JZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBEZXRlY3Qgd2hlbiBpY29uIHNldCBjaGFuZ2VzXHJcbiAgICBpZiAoY2hhbmdlc1snaWNvblNldCddIHx8IGNoYW5nZXNbJ2N1c3RvbUljb25zJ10pIHtcclxuICAgICAgdGhpcy5pY29ucyA9IGdldEljb25TZXQodGhpcy5pY29uU2V0LCB0aGlzLmN1c3RvbUljb25zKTtcclxuICAgICAgdGhpcy5zYW5pdGl6ZUljb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFuaW1hdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgYmFzZWQgb24gc3BlZWQgc2V0dGluZ1xyXG4gICAqL1xyXG4gIGdldEFuaW1hdGlvbkR1cmF0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAoIXRoaXMuZW5hYmxlQW5pbWF0aW9ucykgcmV0dXJuIDA7XHJcbiAgICBzd2l0Y2ggKHRoaXMuYW5pbWF0aW9uU3BlZWQpIHtcclxuICAgICAgY2FzZSAnc2xvdyc6IHJldHVybiA1MDA7XHJcbiAgICAgIGNhc2UgJ2Zhc3QnOiByZXR1cm4gMTUwO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gMjUwOyAvLyBub3JtYWxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbmltYXRpb24gQ1NTIGNsYXNzIGJhc2VkIG9uIHNldHRpbmdzXHJcbiAgICovXHJcbiAgZ2V0QW5pbWF0aW9uQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVBbmltYXRpb25zKSByZXR1cm4gJ25vLWFuaW1hdGlvbnMnO1xyXG4gICAgcmV0dXJuIGBhbmltYXRpb24tc3BlZWQtJHt0aGlzLmFuaW1hdGlvblNwZWVkfWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgc3RhdHVzIHdpdGggdHJhbnNpdGlvbiB0cmFja2luZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlU3RhdHVzKG5ld1N0YXR1czogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTdGF0dXNUcmFuc2l0aW9ucyAmJiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0dXMgIT09IG5ld1N0YXR1cykge1xyXG4gICAgICB0aGlzLnByZXZpb3VzU3RhdHVzID0gdGhpcy5jb25maWd1cmF0aW9uU3RhdHVzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdHVzID0gbmV3U3RhdHVzO1xyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBTYW5pdGl6ZSBpY29uIFNWRyBzdHJpbmdzIGZvciBzYWZlIHJlbmRlcmluZyBpbiBpbm5lckhUTUwgYmluZGluZ3NcclxuICAgKi9cclxuICBwcml2YXRlIHNhbml0aXplSWNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNhbml0aXplZEljb25zID0ge307XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmljb25zKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGNvbnN0IHN2Z1N0cmluZyA9IHRoaXMuaWNvbnNba2V5IGFzIGtleW9mIENoYXRJY29uQ29uZmlnXTtcclxuICAgICAgaWYgKHN2Z1N0cmluZykge1xyXG4gICAgICAgIHRoaXMuc2FuaXRpemVkSWNvbnNba2V5XSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHN2Z1N0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdGVzdENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXR1cygnVGVzdGluZyBjb25uZWN0aW9uLi4uJyk7XHJcbiAgICBcclxuICAgIHRoaXMuYWlBZ2VudFNlcnZpY2UudGVzdENvbmZpZ3VyYXRpb24oKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogQWdlbnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0dXMoJ0FJIEFnZW50IGlzIHJlYWR5Jyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhgQ29uZmlndXJhdGlvbiBlcnJvcjogJHtyZXNwb25zZS5lcnJvcn1gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3JSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhgQ29ubmVjdGlvbiBlcnJvcjogQ2Fubm90IGNvbm5lY3QgdG8gYmFja2VuZCBzZXJ2aWNlYCk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBUEkgY29ubmVjdGlvbiB0ZXN0IGZhaWxlZDonLCBlcnJvclJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkV2VsY29tZU1lc3NhZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCB3ZWxjb21lVGV4dCA9IHRoaXMud2VsY29tZU1lc3NhZ2UgfHwgXHJcbiAgICAgIGA8aDM+SGVsbG8gJHt0aGlzLmZpcnN0TmFtZX0hPC9oMz5IaSwgSSdtIE1hZXN0cm/igJR5b3VyIEFJIGFzc2lzdGFudC4gSSdtIGhlcmUgdG8gaGVscCB3aXRoIHlvdXIgcG9saWN5LXJlbGF0ZWQgaW5xdWlyaWVzLjxicj48YnI+SG93IGNhbiBJIGFzc2lzdCB5b3UgdG9kYXk/YDtcclxuICAgIFxyXG4gICAgdGhpcy5tZXNzYWdlcy5wdXNoKHtcclxuICAgICAgaXNVc2VyOiBmYWxzZSxcclxuICAgICAgY29udGVudDogd2VsY29tZVRleHQsIC8vIERvbid0IGZvcm1hdCBIVE1MIGNvbnRlbnQsIHVzZSBpdCBkaXJlY3RseVxyXG4gICAgICBpbnRlbnQ6ICd3ZWxjb21lJyxcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgYW5kIHRyYW5zZm9ybSBoaXN0b3JpY2FsIG1lc3NhZ2VzIGZyb20gcGFyZW50IGNvbXBvbmVudFxyXG4gICAqIEFjY2VwdHMgbWVzc2FnZXMgaW4gdGhlIGZvcm1hdCBmcm9tIHlvdXIgYmFja2VuZC9zdGF0ZSBtYW5hZ2VtZW50XHJcbiAgICovXHJcbiAgbG9hZEhpc3RvcmljYWxNZXNzYWdlcyhoaXN0b3JpY2FsTWVzc2FnZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnTG9hZGluZyBoaXN0b3JpY2FsIG1lc3NhZ2VzOicsIGhpc3RvcmljYWxNZXNzYWdlcyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnTnVtYmVyIG9mIG1lc3NhZ2VzIHRvIGxvYWQ6JywgaGlzdG9yaWNhbE1lc3NhZ2VzLmxlbmd0aCk7XHJcbiAgICBcclxuICAgIC8vIFRyYW5zZm9ybSB5b3VyIGJhY2tlbmQgZm9ybWF0IHRvIENoYXRNZXNzYWdlIGZvcm1hdFxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRNZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSA9IGhpc3RvcmljYWxNZXNzYWdlcy5tYXAoKG1zZzogYW55KSA9PiB7XHJcbiAgICAgIC8vIERldGVybWluZSBpZiBtZXNzYWdlIGlzIGZyb20gdXNlciBiYXNlZCBvbiBzZW5kZXIgb3Igcm9sZVxyXG4gICAgICBjb25zdCBpc1VzZXJNZXNzYWdlID0gdGhpcy5pc1VzZXJNZXNzYWdlKG1zZyk7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHtcclxuICAgICAgICBtZXNzYWdlSWQ6IG1zZy5tZXNzYWdlSWQgfHwgbXNnLmlkLFxyXG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiBtc2cuY29udmVyc2F0aW9uSWQgfHwgdGhpcy5jb252ZXJzYXRpb25JZCxcclxuICAgICAgICBpc1VzZXI6IGlzVXNlck1lc3NhZ2UsXHJcbiAgICAgICAgY29udGVudDogbXNnLm1lc3NhZ2VUZXh0IHx8IG1zZy5tZXNzYWdlIHx8IG1zZy50ZXh0IHx8IG1zZy5jb250ZW50IHx8ICcnLFxyXG4gICAgICAgIHNlbmRlcjogbXNnLnNlbmRlciB8fCAoaXNVc2VyTWVzc2FnZSA/IHRoaXMudXNlck5hbWUgfHwgJ1VzZXInIDogJ01hZXN0cm8nKSxcclxuICAgICAgICBpbnRlbnQ6IG1zZy5pbnRlbnQgfHwgJycsXHJcbiAgICAgICAgYXV0aG9yTmFtZTogbXNnLmF1dGhvck5hbWUgfHwgbXNnLnNlbmRlcixcclxuICAgICAgICBjb25maWRlbmNlU2NvcmU6IG1zZy5jb25maWRlbmNlU2NvcmUgfHwgbXNnLmNvbmZpZGVuY2UgfHwgMCxcclxuICAgICAgICB0aW1lc3RhbXA6IG1zZy50aW1lc3RhbXAgfHwgbXNnLmNyZWF0ZWRBdCBcclxuICAgICAgICAgID8gbmV3IERhdGUobXNnLnRpbWVzdGFtcCB8fCBtc2cuY3JlYXRlZEF0KSBcclxuICAgICAgICAgIDogbmV3IERhdGUoKSxcclxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlXHJcbiAgICAgIH0gYXMgQ2hhdE1lc3NhZ2U7XHJcbiAgICAgIFxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnVHJhbnNmb3JtZWQgbWVzc2FnZTonLCB0cmFuc2Zvcm1lZCk7XHJcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1lZDtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICAvLyBTb3J0IG1lc3NhZ2VzIGJ5IHRpbWVzdGFtcCB0byBtYWludGFpbiBjaHJvbm9sb2dpY2FsIG9yZGVyXHJcbiAgICB0cmFuc2Zvcm1lZE1lc3NhZ2VzLnNvcnQoKGEsIGIpID0+IFxyXG4gICAgICBhLnRpbWVzdGFtcC5nZXRUaW1lKCkgLSBiLnRpbWVzdGFtcC5nZXRUaW1lKClcclxuICAgICk7XHJcbiAgICBcclxuICAgIC8vIGNvbnNvbGUubG9nKCdTb3J0ZWQgbWVzc2FnZXMgY291bnQ6JywgdHJhbnNmb3JtZWRNZXNzYWdlcy5sZW5ndGgpO1xyXG4gICAgXHJcbiAgICAvLyBBZGQgd2VsY29tZSBtZXNzYWdlIGZpcnN0IGlmIG5vIG1lc3NhZ2VzIG9yIGxvYWQgaGlzdG9yaWNhbCBtZXNzYWdlc1xyXG4gICAgaWYgKHRyYW5zZm9ybWVkTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdObyBtZXNzYWdlcyB0byBsb2FkLCBhZGRpbmcgd2VsY29tZSBtZXNzYWdlJyk7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1lc3NhZ2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIENoZWNrIGlmIGZpcnN0IG1lc3NhZ2UgaXMgYSB3ZWxjb21lIG1lc3NhZ2UsIGlmIG5vdCBhZGQgb25lXHJcbiAgICAgIGNvbnN0IGhhc1dlbGNvbWUgPSB0cmFuc2Zvcm1lZE1lc3NhZ2VzLnNvbWUobXNnID0+IFxyXG4gICAgICAgIG1zZy5pbnRlbnQgPT09ICd3ZWxjb21lJyB8fCBtc2cuY29udGVudC5pbmNsdWRlcygnSGVsbG8nKVxyXG4gICAgICApO1xyXG4gICAgICBcclxuICAgICAgaWYgKCFoYXNXZWxjb21lKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ05vIHdlbGNvbWUgbWVzc2FnZSBmb3VuZCwgYWRkaW5nIG9uZScpO1xyXG4gICAgICAgIHRoaXMuYWRkV2VsY29tZU1lc3NhZ2UoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2coJ1B1c2hpbmcgdHJhbnNmb3JtZWQgbWVzc2FnZXMgdG8gbWVzc2FnZXMgYXJyYXknKTtcclxuICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKC4uLnRyYW5zZm9ybWVkTWVzc2FnZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdUb3RhbCBsb2FkZWQgbWVzc2FnZXMgaW4gY29tcG9uZW50OicsIHRoaXMubWVzc2FnZXMubGVuZ3RoKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdNZXNzYWdlcyBhcnJheTonLCB0aGlzLm1lc3NhZ2VzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIGEgbWVzc2FnZSBpcyBmcm9tIHRoZSB1c2VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc1VzZXJNZXNzYWdlKG1zZzogYW55KTogYm9vbGVhbiB7XHJcbiAgICAvLyBDaGVjayB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBtaWdodCBpbmRpY2F0ZSB1c2VyIG1lc3NhZ2VcclxuICAgIGlmIChtc2cuaXNVc2VyICE9PSB1bmRlZmluZWQpIHJldHVybiBtc2cuaXNVc2VyO1xyXG4gICAgaWYgKG1zZy5yb2xlKSByZXR1cm4gbXNnLnJvbGUudG9Mb3dlckNhc2UoKSA9PT0gJ3VzZXInO1xyXG4gICAgaWYgKG1zZy5zZW5kZXIpIHtcclxuICAgICAgY29uc3Qgc2VuZGVyID0gbXNnLnNlbmRlci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gc2VuZGVyID09PSAndXNlcicgfHwgXHJcbiAgICAgICAgICAgICBzZW5kZXIgPT09IHRoaXMudXNlck5hbWU/LnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgICAgICAgIHNlbmRlciA9PT0gdGhpcy51c2VySWQ/LnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgICAgICAgIHNlbmRlci5pbmNsdWRlcygndXNlcicpO1xyXG4gICAgfVxyXG4gICAgLy8gRGVmYXVsdCB0byBmYWxzZSAoYm90IG1lc3NhZ2UpIGlmIGNhbid0IGRldGVybWluZVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2VuZElucXVpcnkoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudElucXVpcnkudHJpbSgpIHx8IHRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1c2VyTWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XHJcbiAgICAgIG1lc3NhZ2VJZDogdGhpcy5nZW5lcmF0ZU1lc3NhZ2VJZCgpLFxyXG4gICAgICBjb252ZXJzYXRpb25JZDogdGhpcy5jb252ZXJzYXRpb25JZCxcclxuICAgICAgaXNVc2VyOiB0cnVlLFxyXG4gICAgICBzZW5kZXI6IHRoaXMudXNlck5hbWUgfHwgJ1VzZXInLFxyXG4gICAgICBpbnRlbnQ6IHRoaXMuaW50ZW50LFxyXG4gICAgICBjb250ZW50OiB0aGlzLmN1cnJlbnRJbnF1aXJ5LFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcclxuICAgIH07XHJcbiAgICBcclxuICAgIHRoaXMubWVzc2FnZXMucHVzaCh1c2VyTWVzc2FnZSk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZW50LmVtaXQodXNlck1lc3NhZ2UpO1xyXG5cclxuICAgIC8vIEFkZCBsb2FkaW5nIG1lc3NhZ2VcclxuICAgIGNvbnN0IGxvYWRpbmdNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgaXNVc2VyOiBmYWxzZSxcclxuICAgICAgaW50ZW50OiAnJyxcclxuICAgICAgY29udGVudDogJ1Byb2Nlc3NpbmcgeW91ciBpbnF1aXJ5Li4uJyxcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICBpc0xvYWRpbmc6IHRydWVcclxuICAgIH07XHJcbiAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobG9hZGluZ01lc3NhZ2UpO1xyXG5cclxuICAgIGNvbnN0IGlucXVpcnkgPSB0aGlzLmN1cnJlbnRJbnF1aXJ5LnRyaW0oKTtcclxuICAgIHRoaXMuY3VycmVudElucXVpcnkgPSAnJztcclxuICAgIHRoaXMuYXV0aG9yTmFtZSA9ICcnO1xyXG4gICAgdGhpcy5pbnRlbnQgPSAnJztcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0OiBTdXBwb3J0Qm90UmVxdWVzdCA9IHtcclxuICAgICAgcXVlcnk6IGlucXVpcnksXHJcbiAgICAgICAgLi4uKHRoaXMuY29udmVyc2F0aW9uSWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbnZlcnNhdGlvbklkICE9PSBudWxsID8geyBjb252ZXJzYXRpb25JZDogU3RyaW5nKHRoaXMuY29udmVyc2F0aW9uSWQpIH0gOiB7fSksXHJcbiAgICAgICAgLi4uKHRoaXMudXNlcklkICE9PSB1bmRlZmluZWQgJiYgdGhpcy51c2VySWQgIT09IG51bGwgPyB7IHVzZXJJZDogdGhpcy51c2VySWQgfSA6IHt9KSxcclxuICAgICAgICAuLi4odGhpcy51c2VyTmFtZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMudXNlck5hbWUgIT09IG51bGwgPyB7IHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lIH0gOiB7fSksXHJcbiAgICAgICAgLi4uKHRoaXMuYXBwU291cmNlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5hcHBTb3VyY2UgIT09IG51bGwgPyB7IGFwcFNvdXJjZTogdGhpcy5hcHBTb3VyY2UgfSA6IHt9KVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmFpQWdlbnRTZXJ2aWNlLnByb2Nlc3NJbnF1aXJ5KHJlcXVlc3QpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBTdXBwb3J0Qm90UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIFVwZGF0ZSBjb252ZXJzYXRpb25JZCBpZiBwcm92aWRlZCBpbiByZXNwb25zZVxyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmNvbnZlcnNhdGlvbklkICYmICF0aGlzLmNvbnZlcnNhdGlvbklkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSByZXNwb25zZS5jb252ZXJzYXRpb25JZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gUmVtb3ZlIGxvYWRpbmcgbWVzc2FnZVxyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMuZmlsdGVyKG1zZyA9PiAhbXNnLmlzTG9hZGluZyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5hbnN3ZXIgfHwgKHJlc3BvbnNlLmNvbnRlbnRzICYmIHJlc3BvbnNlLmNvbnRlbnRzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5hbnN3ZXIpIHtcclxuICAgICAgICAgICAgICBjb25zdCBib3RNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogdGhpcy5nZW5lcmF0ZU1lc3NhZ2VJZCgpLFxyXG4gICAgICAgICAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICBpc1VzZXI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2VuZGVyOiAnTWFlc3RybycsXHJcbiAgICAgICAgICAgICAgICBpbnRlbnQ6IHJlc3BvbnNlLnNlYXJjaEludGVudCB8fCBpbnF1aXJ5LFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5mb3JtYXRNZXNzYWdlQ29udGVudChyZXNwb25zZS5hbnN3ZXIpLFxyXG4gICAgICAgICAgICAgICAgYXV0aG9yTmFtZTogcmVzcG9uc2UuY29udGVudHMgJiYgcmVzcG9uc2UuY29udGVudHMubGVuZ3RoID4gMCA/IHJlc3BvbnNlLmNvbnRlbnRzWzBdLmF1dGhvck5hbWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaChib3RNZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VSZWNlaXZlZC5lbWl0KGJvdE1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmNvbnRlbnRzICYmIHJlc3BvbnNlLmNvbnRlbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAvLyBQdXNoIGVhY2ggY29udGVudCBhcyBhIHNlcGFyYXRlIG1lc3NhZ2VcclxuICAgICAgICAgICAgICByZXNwb25zZS5jb250ZW50cy5mb3JFYWNoKGNvbnRlbnRJdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZW50SXRlbS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdE1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogdGhpcy5nZW5lcmF0ZU1lc3NhZ2VJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmNvbnZlcnNhdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVXNlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZGVyOiBjb250ZW50SXRlbS5hdXRob3JOYW1lIHx8ICdNYWVzdHJvJyxcclxuICAgICAgICAgICAgICAgICAgICBpbnRlbnQ6IHJlc3BvbnNlLnNlYXJjaEludGVudCB8fCBpbnF1aXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuZm9ybWF0TWVzc2FnZUNvbnRlbnQoY29udGVudEl0ZW0uY29udGVudCB8fCAnTm8gY29udGVudCBhdmFpbGFibGUnKSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRob3JOYW1lOiBjb250ZW50SXRlbS5hdXRob3JOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goYm90TWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVJlY2VpdmVkLmVtaXQoYm90TWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICAgICAgICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgaXNVc2VyOiBmYWxzZSxcclxuICAgICAgICAgICAgICBzZW5kZXI6ICdNYWVzdHJvJyxcclxuICAgICAgICAgICAgICBpbnRlbnQ6IGlucXVpcnksXHJcbiAgICAgICAgICAgICAgY29udGVudDogYFNvcnJ5LCBJIGRpZG4ndCByZWNlaXZlIGEgdmFsaWQgcmVzcG9uc2UuYCxcclxuICAgICAgICAgICAgICBhdXRob3JOYW1lOiB0aGlzLmF1dGhvck5hbWUsXHJcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaChlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VSZWNlaXZlZC5lbWl0KGVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBtZXNzYWdlXHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcy5maWx0ZXIobXNnID0+ICFtc2cuaXNMb2FkaW5nKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZUlkOiB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICAgICAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmNvbnZlcnNhdGlvbklkLFxyXG4gICAgICAgICAgICBpc1VzZXI6IGZhbHNlLFxyXG4gICAgICAgICAgICBzZW5kZXI6ICdNYWVzdHJvJyxcclxuICAgICAgICAgICAgaW50ZW50OiBpbnF1aXJ5LFxyXG4gICAgICAgICAgICBjb250ZW50OiAnU29ycnksIEkgZW5jb3VudGVyZWQgYW4gZXJyb3IgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QuIFBsZWFzZSB0cnkgYWdhaW4uJyxcclxuICAgICAgICAgICAgYXV0aG9yTmFtZTogdGhpcy5hdXRob3JOYW1lLFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVJlY2VpdmVkLmVtaXQoZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyBpbnF1aXJ5OicsIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGF0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgdGhpcy5hZGRXZWxjb21lTWVzc2FnZSgpO1xyXG4gIH1cclxuXHJcbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5zZW5kSW5xdWlyeSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgZ2V0VGhlbWVDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgLy8gRGVmYXVsdCB0aGVtZSBpZiBubyB0ZW1wbGF0ZSBkZXNpZ24gaXMgc3BlY2lmaWVkXHJcbiAgICBpZiAoIXRoaXMudGVtcGxhdGVEZXNpZ24pIHtcclxuICAgICAgcmV0dXJuICd0aGVtZS1kZWZhdWx0JztcclxuICAgIH1cclxuXHJcbiAgICAvLyBWYWxpZGF0ZSBhbmQgcmV0dXJuIHRoZW1lIGNsYXNzXHJcbiAgICBjb25zdCB2YWxpZFRoZW1lcyA9IFsnZGVmYXVsdCcsICdkYXJrJywgJ2JsdWUnLCAnZ3JlZW4nLCAncHVycGxlJywgJ21pbmltYWwnLCAnY29ycG9yYXRlJywgJ3JlZCcsICd5ZWxsb3cnLCAnb3JhbmdlJ107XHJcbiAgICBjb25zdCB0aGVtZSA9IHRoaXMudGVtcGxhdGVEZXNpZ24udG9Mb3dlckNhc2UoKTtcclxuICAgIFxyXG4gICAgaWYgKHZhbGlkVGhlbWVzLmluY2x1ZGVzKHRoZW1lKSkge1xyXG4gICAgICByZXR1cm4gYHRoZW1lLSR7dGhlbWV9YDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gRmFsbGJhY2sgdG8gZGVmYXVsdCBpZiBpbnZhbGlkIHRoZW1lXHJcbiAgICBjb25zb2xlLndhcm4oYEludmFsaWQgdGhlbWUgJyR7dGhpcy50ZW1wbGF0ZURlc2lnbn0nIHByb3ZpZGVkLiBVc2luZyBkZWZhdWx0IHRoZW1lLmApO1xyXG4gICAgcmV0dXJuICd0aGVtZS1kZWZhdWx0JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0TWVzc2FnZUNvbnRlbnQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghY29udGVudCkgcmV0dXJuICcnO1xyXG4gICAgXHJcbiAgICAvLyBJZiBjb250ZW50IGFscmVhZHkgY29udGFpbnMgSFRNTCB0YWdzLCByZXR1cm4gYXMtaXNcclxuICAgIGlmIChjb250ZW50LmluY2x1ZGVzKCc8JykgJiYgY29udGVudC5pbmNsdWRlcygnPicpKSB7XHJcbiAgICAgIHJldHVybiBjb250ZW50O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBDb252ZXJ0IG5ld2xpbmVzIHRvIEhUTUwgYnJlYWtzXHJcbiAgICBsZXQgZm9ybWF0dGVkID0gY29udGVudC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcclxuICAgIFxyXG4gICAgLy8gQ29udmVydCBlc2NhcGVkIG5ld2xpbmVzIHRvIEhUTUwgYnJlYWtzXHJcbiAgICBmb3JtYXR0ZWQgPSBmb3JtYXR0ZWQucmVwbGFjZSgvXFxcXG4vZywgJzxicj4nKTtcclxuICAgIFxyXG4gICAgLy8gQ29udmVydCBtYXJrZG93bi1zdHlsZSBib2xkIHRvIEhUTUxcclxuICAgIGZvcm1hdHRlZCA9IGZvcm1hdHRlZC5yZXBsYWNlKC9cXCpcXCooLio/KVxcKlxcKi9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpO1xyXG4gICAgXHJcbiAgICAvLyBDb252ZXJ0IGJ1bGxldCBwb2ludHMgdG8gSFRNTCBsaXN0c1xyXG4gICAgY29uc3QgbGluZXMgPSBmb3JtYXR0ZWQuc3BsaXQoJzxicj4nKTtcclxuICAgIGxldCBpbkxpc3QgPSBmYWxzZTtcclxuICAgIGNvbnN0IHByb2Nlc3NlZExpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XHJcbiAgICAgIGlmIChsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCfigKIgJykpIHtcclxuICAgICAgICBpZiAoIWluTGlzdCkge1xyXG4gICAgICAgICAgcHJvY2Vzc2VkTGluZXMucHVzaCgnPHVsPicpO1xyXG4gICAgICAgICAgaW5MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHJvY2Vzc2VkTGluZXMucHVzaCgnPGxpPicgKyBsaW5lLnJlcGxhY2UoL17igKIgLywgJycpICsgJzwvbGk+Jyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGluTGlzdCkge1xyXG4gICAgICAgICAgcHJvY2Vzc2VkTGluZXMucHVzaCgnPC91bD4nKTtcclxuICAgICAgICAgIGluTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKGxpbmUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChpbkxpc3QpIHtcclxuICAgICAgcHJvY2Vzc2VkTGluZXMucHVzaCgnPC91bD4nKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIHByb2Nlc3NlZExpbmVzLmpvaW4oJzxicj4nKS5yZXBsYWNlKC88YnI+PHVsPi9nLCAnPHVsPicpLnJlcGxhY2UoLzxcXC91bD48YnI+L2csICc8L3VsPicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVNlc3Npb25JZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdzZXNzaW9uXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSkgKyAnXycgKyBEYXRlLm5vdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZU1lc3NhZ2VJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdtc2dfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KSArICdfJyArIERhdGUubm93KCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtYXR0ZWRUaW1lKHRpbWVzdGFtcDogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGltZXN0YW1wLnRvTG9jYWxlVGltZVN0cmluZyhbXSwgeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gPT09PT09PT09PT09PSBSZXNpemUgTWV0aG9kcyA9PT09PT09PT09PT09XHJcbiAgXHJcbiAgc3RhcnRSZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQsIGRpcmVjdGlvbjogJ3dpZHRoJyB8ICdib3RoJyk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICB0aGlzLnN0YXJ0V2lkdGggPSB0aGlzLmNvbnRhaW5lcldpZHRoO1xyXG4gICAgdGhpcy5zdGFydEhlaWdodCA9IHRoaXMuY29udGFpbmVySGVpZ2h0O1xyXG4gICAgXHJcbiAgICBjb25zdCBtb3VzZU1vdmVIYW5kbGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMub25SZXNpemUoZSwgZGlyZWN0aW9uKTtcclxuICAgIGNvbnN0IG1vdXNlVXBIYW5kbGVyID0gKCkgPT4gdGhpcy5zdG9wUmVzaXplKG1vdXNlTW92ZUhhbmRsZXIsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIFxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJlc2l6ZShldmVudDogTW91c2VFdmVudCwgZGlyZWN0aW9uOiAnd2lkdGgnIHwgJ2JvdGgnKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZXNpemluZykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICBjb25zdCBkZWx0YVggPSBldmVudC5jbGllbnRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICBjb25zdCBkZWx0YVkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5zdGFydFk7XHJcbiAgICBcclxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd3aWR0aCcgfHwgZGlyZWN0aW9uID09PSAnYm90aCcpIHtcclxuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1pbihcclxuICAgICAgICBNYXRoLm1heCh0aGlzLnN0YXJ0V2lkdGggKyBkZWx0YVgsIHRoaXMubWluV2lkdGgpLFxyXG4gICAgICAgIHRoaXMubWF4V2lkdGhcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSAnYm90aCcpIHtcclxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5taW4oXHJcbiAgICAgICAgTWF0aC5tYXgodGhpcy5zdGFydEhlaWdodCArIGRlbHRhWSwgdGhpcy5taW5IZWlnaHQpLFxyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gbmV3SGVpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdG9wUmVzaXplKG1vdXNlTW92ZUhhbmRsZXI6IChlOiBNb3VzZUV2ZW50KSA9PiB2b2lkLCBtb3VzZVVwSGFuZGxlcjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XHJcbiAgICBcclxuICAgIHRoaXMuc2F2ZVNpemVQcmVmZXJlbmNlKCk7XHJcbiAgICB0aGlzLmVtaXRTaXplQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNpemVQcmVzZXQoc2l6ZTogQ2hhdFNpemUpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFNpemUgPSBzaXplO1xyXG4gICAgXHJcbiAgICBzd2l0Y2ggKHNpemUpIHtcclxuICAgICAgY2FzZSAnY29tcGFjdCc6XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IDQwMDtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IDUwMDtcclxuICAgICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkZWZhdWx0JzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gODAwO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gNjAwO1xyXG4gICAgICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V4cGFuZGVkJzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gMTIwMDtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IDgwMDtcclxuICAgICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdmdWxsc2NyZWVuJzpcclxuICAgICAgICB0aGlzLnRvZ2dsZUZ1bGxzY3JlZW4oKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuc2F2ZVNpemVQcmVmZXJlbmNlKCk7XHJcbiAgICB0aGlzLmVtaXRTaXplQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGdWxsc2NyZWVuKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRnVsbHNjcmVlbikge1xyXG4gICAgICAvLyBFbnRlcmluZyBmdWxsc2NyZWVuIC0gc2F2ZSBjdXJyZW50IHN0YXRlIGZpcnN0XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NoYXRib3gtcHJldmlvdXMtc2l6ZScsIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICB3aWR0aDogdGhpcy5jb250YWluZXJXaWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMuY29udGFpbmVySGVpZ2h0LFxyXG4gICAgICAgIHNpemU6IHRoaXMuY3VycmVudFNpemUsXHJcbiAgICAgICAgd2FzRnVsbHNjcmVlbjogdGhpcy5pc0Z1bGxzY3JlZW5cclxuICAgICAgfSkpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTaXplID0gJ2Z1bGxzY3JlZW4nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRXhpdGluZyBmdWxsc2NyZWVuIC0gcmVzdG9yZSBwcmV2aW91cyBzdGF0ZVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhdGJveC1wcmV2aW91cy1zaXplJyk7XHJcbiAgICAgICAgaWYgKHByZXZpb3VzKSB7XHJcbiAgICAgICAgICBjb25zdCBwcmV2RGF0YSA9IEpTT04ucGFyc2UocHJldmlvdXMpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHByZXZEYXRhLndpZHRoIHx8IDgwMDtcclxuICAgICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gcHJldkRhdGEuaGVpZ2h0IHx8IDYwMDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNpemUgPSBwcmV2RGF0YS5zaXplID09PSAnZnVsbHNjcmVlbicgPyAnZGVmYXVsdCcgOiBwcmV2RGF0YS5zaXplO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTaXplID0gJ2RlZmF1bHQnO1xyXG4gICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IDgwMDtcclxuICAgICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gNjAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTaXplID0gJ2RlZmF1bHQnO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSA4MDA7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSA2MDA7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuc2F2ZVNpemVQcmVmZXJlbmNlKCk7XHJcbiAgICB0aGlzLmVtaXRTaXplQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmVTaXplUHJlZmVyZW5jZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNpemVEYXRhID0ge1xyXG4gICAgICBzaXplOiB0aGlzLmN1cnJlbnRTaXplLFxyXG4gICAgICB3aWR0aDogdGhpcy5jb250YWluZXJXaWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmNvbnRhaW5lckhlaWdodCxcclxuICAgICAgaXNGdWxsc2NyZWVuOiB0aGlzLmlzRnVsbHNjcmVlblxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hhdGJveC1zaXplLXByZWZlcmVuY2UnLCBKU09OLnN0cmluZ2lmeShzaXplRGF0YSkpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2F2ZSBzaXplIHByZWZlcmVuY2U6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkU2F2ZWRTaXplKCk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc2F2ZWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGF0Ym94LXNpemUtcHJlZmVyZW5jZScpO1xyXG4gICAgICBpZiAoc2F2ZWQpIHtcclxuICAgICAgICBjb25zdCBzaXplRGF0YSA9IEpTT04ucGFyc2Uoc2F2ZWQpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNpemUgPSBzaXplRGF0YS5zaXplIHx8ICdkZWZhdWx0JztcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gc2l6ZURhdGEud2lkdGggfHwgODAwO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gc2l6ZURhdGEuaGVpZ2h0IHx8IDYwMDtcclxuICAgICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IHNpemVEYXRhLmlzRnVsbHNjcmVlbiB8fCBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBzaXplIHByZWZlcmVuY2U6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0U2l6ZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2l6ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgIHNpemU6IHRoaXMuY3VycmVudFNpemUsXHJcbiAgICAgIHdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuY29udGFpbmVySGVpZ2h0XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENvbnRhaW5lclN0eWxlKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4pIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB3aWR0aDogJzEwMHZ3ICFpbXBvcnRhbnQnLFxyXG4gICAgICAgIGhlaWdodDogJzEwMHZoICFpbXBvcnRhbnQnLFxyXG4gICAgICAgIG1heFdpZHRoOiAnMTAwdncgIWltcG9ydGFudCcsXHJcbiAgICAgICAgbWF4SGVpZ2h0OiAnMTAwdmggIWltcG9ydGFudCcsXHJcbiAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXHJcbiAgICAgICAgdG9wOiAnMCcsXHJcbiAgICAgICAgbGVmdDogJzAnLFxyXG4gICAgICAgIHJpZ2h0OiAnMCcsXHJcbiAgICAgICAgYm90dG9tOiAnMCcsXHJcbiAgICAgICAgbWFyZ2luOiAnMCcsXHJcbiAgICAgICAgekluZGV4OiA5OTk5OVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB3aWR0aDogYCR7dGhpcy5jb250YWluZXJXaWR0aH1weGAsXHJcbiAgICAgIGhlaWdodDogYCR7dGhpcy5jb250YWluZXJIZWlnaHR9cHhgLFxyXG4gICAgICBtYXhXaWR0aDogYCR7dGhpcy5tYXhXaWR0aH1weGBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvLyA9PT09PT09PT09PT09IEZpbGUgVXBsb2FkIE1ldGhvZHMgPT09PT09PT09PT09PVxyXG4gIFxyXG4gIG9uSW1hZ2VVcGxvYWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oYW5kbGVGaWxlU2VsZWN0aW9uKEFycmF5LmZyb20oaW5wdXQuZmlsZXMpLCAnaW1hZ2UnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRmlsZVVwbG9hZChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbGVTZWxlY3Rpb24oQXJyYXkuZnJvbShpbnB1dC5maWxlcyksICdmaWxlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUZpbGVTZWxlY3Rpb24oZmlsZXM6IEZpbGVbXSwgdHlwZTogJ2ltYWdlJyB8ICdmaWxlJyk6IHZvaWQge1xyXG4gICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgLy8gVmFsaWRhdGUgZmlsZSB0eXBlXHJcbiAgICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IHR5cGUgPT09ICdpbWFnZScgPyB0aGlzLmFsbG93ZWRJbWFnZVR5cGVzIDogdGhpcy5hbGxvd2VkRmlsZVR5cGVzO1xyXG4gICAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhmaWxlLnR5cGUpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBGaWxlIHR5cGUgJHtmaWxlLnR5cGV9IG5vdCBhbGxvd2VkYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBWYWxpZGF0ZSBmaWxlIHNpemVcclxuICAgICAgaWYgKGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemUpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYEZpbGUgJHtmaWxlLm5hbWV9IGV4Y2VlZHMgbWF4aW11bSBzaXplIG9mICR7dGhpcy5tYXhGaWxlU2l6ZSAvIDEwMjQgLyAxMDI0fU1CYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IFByb2dyZXNzRXZlbnQ8RmlsZVJlYWRlcj4pID0+IHtcclxuICAgICAgICBjb25zdCBhdHRhY2htZW50OiBGaWxlQXR0YWNobWVudCA9IHtcclxuICAgICAgICAgIGlkOiB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXHJcbiAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXHJcbiAgICAgICAgICBkYXRhOiBlLnRhcmdldD8ucmVzdWx0IHx8IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzLnB1c2goYXR0YWNobWVudCk7XHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkZWQuZW1pdChhdHRhY2htZW50KTtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIGlmICh0eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUF0dGFjaG1lbnQoYXR0YWNobWVudElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IHRoaXMuc2VsZWN0ZWRGaWxlcy5maWx0ZXIoZiA9PiBmLmlkICE9PSBhdHRhY2htZW50SWQpO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlckltYWdlVXBsb2FkKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UtdXBsb2FkLWlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpbnB1dC5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJpZ2dlckZpbGVVcGxvYWQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlLXVwbG9hZC1pbnB1dCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAoaW5wdXQpIHtcclxuICAgICAgaW5wdXQuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpbGVJY29uKGZpbGVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGZpbGVUeXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSByZXR1cm4gJ/CflrzvuI8nO1xyXG4gICAgaWYgKGZpbGVUeXBlLmluY2x1ZGVzKCdwZGYnKSkgcmV0dXJuICfwn5OEJztcclxuICAgIGlmIChmaWxlVHlwZS5pbmNsdWRlcygnd29yZCcpIHx8IGZpbGVUeXBlLmluY2x1ZGVzKCdkb2N1bWVudCcpKSByZXR1cm4gJ/Cfk50nO1xyXG4gICAgaWYgKGZpbGVUeXBlLmluY2x1ZGVzKCd0ZXh0JykpIHJldHVybiAn8J+Tgyc7XHJcbiAgICByZXR1cm4gJ/Cfk44nO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZVNpemVGb3JtYXR0ZWQoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPCAxMDI0KSByZXR1cm4gYnl0ZXMgKyAnIEInO1xyXG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiAoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpICsgJyBLQic7XHJcbiAgICByZXR1cm4gKGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKSArICcgTUInO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJhaS1jaGF0LWNvbnRhaW5lclwiIFxyXG4gICAgIFtuZ0NsYXNzXT1cImdldFRoZW1lQ2xhc3MoKVwiIFxyXG4gICAgIFtuZ1N0eWxlXT1cImdldENvbnRhaW5lclN0eWxlKClcIlxyXG4gICAgIFtjbGFzcy5mdWxsc2NyZWVuXT1cImlzRnVsbHNjcmVlblwiXHJcbiAgICAgW2NsYXNzLnJlc2l6aW5nXT1cImlzUmVzaXppbmdcIlxyXG4gICAgIFtjbGFzc109XCJnZXRBbmltYXRpb25DbGFzcygpXCI+XHJcbiAgXHJcbiAgPCEtLSBSZXNpemUgSGFuZGxlcyAtLT5cclxuICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZSByZXNpemUtaGFuZGxlLXJpZ2h0XCIgXHJcbiAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgJ3dpZHRoJylcIlxyXG4gICAgICAgKm5nSWY9XCIhaXNGdWxsc2NyZWVuXCJcclxuICAgICAgIHRpdGxlPVwiRHJhZyB0byByZXNpemUgd2lkdGhcIj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZSByZXNpemUtaGFuZGxlLWNvcm5lclwiIFxyXG4gICAgICAgKG1vdXNlZG93bik9XCJzdGFydFJlc2l6ZSgkZXZlbnQsICdib3RoJylcIlxyXG4gICAgICAgKm5nSWY9XCIhaXNGdWxsc2NyZWVuXCJcclxuICAgICAgIHRpdGxlPVwiRHJhZyB0byByZXNpemVcIj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8IS0tIERlYnVnIEluZm9ybWF0aW9uIChvbmx5IHNob3duIHdoZW4gc2hvd0RlYnVnSW5mbyBpcyB0cnVlKSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0RlYnVnSW5mb1wiIGNsYXNzPVwiZGVidWctaW5mb1wiPlxyXG4gICAgPGgzPkRFQlVHOiBBSSBDaGF0IENvbXBvbmVudCBMb2FkZWQ8L2gzPlxyXG4gICAgPHA+U3RhdHVzOiB7eyBjb25maWd1cmF0aW9uU3RhdHVzIHx8ICdMb2FkaW5nLi4uJyB9fTwvcD5cclxuICAgIDxwPk1lc3NhZ2VzIGNvdW50OiB7eyBtZXNzYWdlcy5sZW5ndGggfHwgMCB9fTwvcD5cclxuICAgIDxwPlRoZW1lOiB7eyB0ZW1wbGF0ZURlc2lnbiB8fCAnZGVmYXVsdCcgfX08L3A+XHJcbiAgICA8cD5TaXplOiB7eyBjdXJyZW50U2l6ZSB9fSAoe3sgY29udGFpbmVyV2lkdGggfX14e3sgY29udGFpbmVySGVpZ2h0IH19KTwvcD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNoYXQtaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWxlZnRcIj5cclxuICAgICAgPGgyPnt7IHRpdGxlIH19PC9oMj5cclxuICAgICAgPCEtLSBJY29uLW9ubHkgc3RhdHVzIGluZGljYXRvciAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1pbmRpY2F0b3ItaWNvblwiIFxyXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc3RhdHVzLXJlYWR5JzogY29uZmlndXJhdGlvblN0YXR1cyA9PT0gJ0FJIEFnZW50IGlzIHJlYWR5JywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzLWVycm9yJzogY29uZmlndXJhdGlvblN0YXR1cyAhPT0gJ0FJIEFnZW50IGlzIHJlYWR5JyAmJiBjb25maWd1cmF0aW9uU3RhdHVzICE9PSAnSW5pdGlhbGl6aW5nLi4uJyAmJiBjb25maWd1cmF0aW9uU3RhdHVzICE9PSAnVGVzdGluZyBjb25uZWN0aW9uLi4uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMtbG9hZGluZyc6IGNvbmZpZ3VyYXRpb25TdGF0dXMgPT09ICdJbml0aWFsaXppbmcuLi4nIHx8IGNvbmZpZ3VyYXRpb25TdGF0dXMgPT09ICdUZXN0aW5nIGNvbm5lY3Rpb24uLi4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tZW5hYmxlZCc6IGVuYWJsZVN0YXR1c1RyYW5zaXRpb25zfVwiXHJcbiAgICAgICAgICAgW3RpdGxlXT1cImNvbmZpZ3VyYXRpb25TdGF0dXNcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250cm9sc1wiPlxyXG4gICAgICA8IS0tIFNpemUgUHJlc2V0IEJ1dHRvbnMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWNvbnRyb2xzXCIgKm5nSWY9XCIhaXNGdWxsc2NyZWVuXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRyb2wtYnV0dG9uIHNpemUtYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTaXplUHJlc2V0KCdjb21wYWN0JylcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U2l6ZSA9PT0gJ2NvbXBhY3QnXCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQ29tcGFjdCBWaWV3XCJcclxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkNvbXBhY3QgVmlld1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXN2Z1wiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuY29tcGFjdFZpZXdcIj48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRyb2wtYnV0dG9uIHNpemUtYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTaXplUHJlc2V0KCdkZWZhdWx0JylcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U2l6ZSA9PT0gJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRGVmYXVsdCBWaWV3XCJcclxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkRlZmF1bHQgVmlld1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXN2Z1wiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuZGVmYXVsdFZpZXdcIj48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRyb2wtYnV0dG9uIHNpemUtYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTaXplUHJlc2V0KCdleHBhbmRlZCcpXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFNpemUgPT09ICdleHBhbmRlZCdcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFeHBhbmRlZCBWaWV3XCJcclxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkV4cGFuZGVkIFZpZXdcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1zdmdcIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZEljb25zLmV4cGFuZGVkVmlld1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNoYXQtbWVzc2FnZXNcIiAjbWVzc2FnZXNDb250YWluZXI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cIm1lc3NhZ2Utd3JhcHBlclwiPlxyXG4gICAgICA8IS0tIE1lc3NhZ2UgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlXCIgXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyd1c2VyLW1lc3NhZ2UnOiBtZXNzYWdlLmlzVXNlciwgJ2FpLW1lc3NhZ2UnOiAhbWVzc2FnZS5pc1VzZXIsICdsb2FkaW5nLW1lc3NhZ2UnOiBtZXNzYWdlLmlzTG9hZGluZ31cIj5cclxuICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwibWVzc2FnZS5jb250ZW50XCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS10aW1lc3RhbXBcIj57eyBnZXRGb3JtYXR0ZWRUaW1lKG1lc3NhZ2UudGltZXN0YW1wKSB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWF2YXRhclwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlLmlzVXNlclwiIGNsYXNzPVwiYXZhdGFyLWljb25cIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZEljb25zLnVzZXJBdmF0YXJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFtZXNzYWdlLmlzVXNlciAmJiAhbWVzc2FnZS5pc0xvYWRpbmdcIiBjbGFzcz1cImF2YXRhci1pY29uXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRJY29ucy5haUF2YXRhclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVzc2FnZS5pc0xvYWRpbmdcIiBjbGFzcz1cImF2YXRhci1pY29uIGxvYWRpbmctc3Bpbm5lclwiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMubG9hZGluZ0F2YXRhclwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNoYXQtaW5wdXRcIj5cclxuICAgIDwhLS0gQXR0YWNobWVudHMgUHJldmlldyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50cy1wcmV2aWV3XCIgKm5nSWY9XCJzZWxlY3RlZEZpbGVzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQtaXRlbVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIHNlbGVjdGVkRmlsZXNcIj5cclxuICAgICAgICA8c3ZnIGNsYXNzPVwiYXR0YWNobWVudC1pY29uXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0yMS40NCAxMS4wNWwtOS4xOSA5LjE5YTYgNiAwIDAgMS04LjQ5LTguNDlsOS4xOS05LjE5YTQgNCAwIDAgMSA1LjY2IDUuNjZsLTkuMiA5LjE5YTIgMiAwIDAgMS0yLjgzLTIuODNsOC40OS04LjQ4XCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXR0YWNobWVudC1uYW1lXCI+e3sgZmlsZS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXR0YWNobWVudC1zaXplXCI+e3sgZ2V0RmlsZVNpemVGb3JtYXR0ZWQoZmlsZS5zaXplKSB9fTwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVtb3ZlLWF0dGFjaG1lbnRcIiAoY2xpY2spPVwicmVtb3ZlQXR0YWNobWVudChmaWxlLmlkKVwiIHRpdGxlPVwiUmVtb3ZlXCIgYXR0ci5hcmlhLWxhYmVsPVwiUmVtb3ZlIGF0dGFjaG1lbnRcIj5cclxuICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxyXG4gICAgICAgICAgICA8bGluZSB4MT1cIjE4XCIgeTE9XCI2XCIgeDI9XCI2XCIgeTI9XCIxOFwiPjwvbGluZT5cclxuICAgICAgICAgICAgPGxpbmUgeDE9XCI2XCIgeTE9XCI2XCIgeDI9XCIxOFwiIHkyPVwiMThcIj48L2xpbmU+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0tIEZpbGUgVXBsb2FkIElucHV0cyAoSGlkZGVuKSAtLT5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgXHJcbiAgICAgICAgICAgICBpZD1cImltYWdlLXVwbG9hZC1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiIFxyXG4gICAgICAgICAgICAgbXVsdGlwbGUgXHJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VVcGxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCJcclxuICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5hYmxlSW1hZ2VVcGxvYWRcIj5cclxuICAgICAgXHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIFxyXG4gICAgICAgICAgICAgaWQ9XCJmaWxlLXVwbG9hZC1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgYWNjZXB0PVwiLnBkZiwuZG9jLC5kb2N4LC50eHQsLmNzdlwiIFxyXG4gICAgICAgICAgICAgbXVsdGlwbGUgXHJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVVwbG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxyXG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVGaWxlVXBsb2FkXCI+XHJcbiAgICAgIFxyXG4gICAgICA8IS0tIFVwbG9hZCBCdXR0b25zIChDb25kaXRpb25hbGx5IHJlbmRlcmVkKSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1idXR0b25zXCIgKm5nSWY9XCJlbmFibGVJbWFnZVVwbG9hZCB8fCBlbmFibGVGaWxlVXBsb2FkXCI+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVuYWJsZUltYWdlVXBsb2FkXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInVwbG9hZC1idXR0b24gaW1hZ2UtdXBsb2FkXCIgXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckltYWdlVXBsb2FkKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlVwbG9hZCBJbWFnZVwiXHJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJVcGxvYWQgSW1hZ2VcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1zdmdcIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZEljb25zLmltYWdlVXBsb2FkXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJlbmFibGVGaWxlVXBsb2FkXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInVwbG9hZC1idXR0b24gZmlsZS11cGxvYWRcIiBcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyRmlsZVVwbG9hZCgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJBdHRhY2ggRmlsZVwiXHJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBdHRhY2ggRmlsZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXN2Z1wiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuZmlsZVVwbG9hZFwiPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICA8dGV4dGFyZWEgXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50SW5xdWlyeVwiIFxyXG4gICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgcm93cz1cIjJcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5xdWlyeS10ZXh0YXJlYVwiXHJcbiAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiVHlwZSB5b3VyIG1lc3NhZ2VcIj48L3RleHRhcmVhPlxyXG4gICAgICBcclxuICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAoY2xpY2spPVwic2VuZElucXVpcnkoKVwiIFxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudElucXVpcnkudHJpbSgpIHx8IGlzTG9hZGluZ1wiXHJcbiAgICAgICAgY2xhc3M9XCJzZW5kLWJ1dHRvblwiXHJcbiAgICAgICAgdGl0bGU9XCJTZW5kIE1lc3NhZ2VcIlxyXG4gICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIlNlbmQgTWVzc2FnZVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTG9hZGluZ1wiIGNsYXNzPVwiaWNvbi1zdmdcIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZEljb25zLnNlbmRcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImljb24tc3ZnIGxvYWRpbmctaWNvblwiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkSWNvbnMuc2VuZExvYWRpbmdcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3sgaXNMb2FkaW5nID8gJ1NlbmRpbmcuLi4nIDogJ1NlbmQnIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -34,9 +34,7 @@ export class AiAgentService {
|
|
|
34
34
|
}
|
|
35
35
|
processInquiry(request) {
|
|
36
36
|
const headers = new HttpHeaders(Object.assign({ 'Content-Type': 'application/json' }, (this.config.appKey && { 'x-api-key': this.config.appKey })));
|
|
37
|
-
|
|
38
|
-
const cleanedRequest = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (request.query && { query: request.query })), (request.conversationId && { conversationId: String(request.conversationId) })), (request.userId && { userId: request.userId })), (request.userName && { userName: request.userName })), (request.appSource && { appSource: request.appSource }));
|
|
39
|
-
return this.http.post(`${this.config.apiUrl}/ProcessInquiry`, cleanedRequest, { headers })
|
|
37
|
+
return this.http.post(`${this.config.apiUrl}/ProcessInquiry`, request, { headers })
|
|
40
38
|
.pipe(timeout(this.config.timeout || 30000), catchError((error) => {
|
|
41
39
|
console.log('ProcessInquiry API not available, returning demo response:', error);
|
|
42
40
|
// Return a mock response for demo purposes
|
|
@@ -85,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
85
83
|
providedIn: 'root'
|
|
86
84
|
}]
|
|
87
85
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VtYW5hdGUtYWktY2hhdC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9haS1hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFdBQVcsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUEyRHJELE1BQU0sT0FBTyxjQUFjO0lBU3pCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFSbkIsa0JBQWEsR0FBaUI7WUFDN0MsTUFBTSxFQUFFLG9DQUFvQztZQUM1QyxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQUVNLFdBQU0scUJBQXNCLElBQUksQ0FBQyxhQUFhLEVBQUc7SUFFbEIsQ0FBQztJQUV4QyxTQUFTLENBQUMsTUFBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sbUNBQVEsSUFBSSxDQUFDLGFBQWEsR0FBSyxNQUFNLENBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsNkRBQTZEO1FBQzdELG9DQUFvQztRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixDQUFDLENBQUM7UUFFcEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLGlCQUM3QixjQUFjLEVBQUUsa0JBQWtCLElBQy9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxXQUFXLEVBQUUs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RyxrREFBa0QsQ0FBQztRQUV0RSxJQUFJLEtBQUssQ0FBQyxLQUFLLFlBQVksVUFBVSxFQUFFO1lBQ3JDLG9CQUFvQjtZQUNwQixZQUFZLEdBQUcsaUJBQWlCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdkQ7YUFBTTtZQUNMLG9CQUFvQjtZQUNwQixZQUFZLEdBQUcsaUJBQWlCLEtBQUssQ0FBQyxNQUFNLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDdEMsWUFBWSxJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM3QztTQUNGO1FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5QyxPQUFPLFVBQVUsQ0FBQztZQUNoQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxZQUFZO1NBQ0gsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7OzRHQXRHVSxjQUFjO2dIQUFkLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGltZW91dCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW5xdWlyeVJlcXVlc3Qge1xyXG4gIGlucXVpcnk6IHN0cmluZztcclxuICBhZGRpdGlvbmFsSW5wdXRzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydEJvdFJlcXVlc3Qge1xyXG4gIHF1ZXJ5Pzogc3RyaW5nO1xyXG4gIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nO1xyXG4gIHVzZXJJZD86IHN0cmluZztcclxuICB1c2VyTmFtZT86IHN0cmluZztcclxuICBhcHBTb3VyY2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydEJvdENoYXRIaXN0b3J5SXRlbSB7XHJcbiAgcXVlcnk/OiBzdHJpbmc7XHJcbiAgcmVzcG9uc2U/OiBTdXBwb3J0Qm90UmVzcG9uc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydEJvdFJlc3BvbnNlIHtcclxuICBhbnN3ZXI/OiBzdHJpbmc7XHJcbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7XHJcbiAgc2VhcmNoSW50ZW50Pzogc3RyaW5nO1xyXG4gIGNvbnRlbnRzPzogQ2hhdENvbnRlbnRbXTtcclxuICByZWZlcmVuY2VzPzogS25vd2xlZGdlQmFzZUl0ZW1bXTtcclxuICBzZWFyY2hEb2N1bWVudHM/OiBLbm93bGVkZ2VCYXNlSXRlbVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRDb250ZW50IHtcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XHJcbiAgYXV0aG9yTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLbm93bGVkZ2VCYXNlSXRlbSB7XHJcbiAgZmlsZVVSTD86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBjb250ZW50Pzogc3RyaW5nO1xyXG4gIHNjb3JlOiBudW1iZXI7XHJcbiAga2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50UmVzcG9uc2Uge1xyXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XHJcbiAgcmVzdWx0Pzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFpQ2hhdENvbmZpZyB7XHJcbiAgYXBpVXJsPzogc3RyaW5nO1xyXG4gIGFwcEtleT86IHN0cmluZztcclxuICB0aW1lb3V0PzogbnVtYmVyO1xyXG4gIHJldHJpZXM/OiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFpQWdlbnRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRDb25maWc6IEFpQ2hhdENvbmZpZyA9IHtcclxuICAgIGFwaVVybDogJ2h0dHBzOi8vbG9jYWxob3N0OjcyMzcvYXBpL0FJQWdlbnQnLFxyXG4gICAgdGltZW91dDogMzAwMDAsXHJcbiAgICByZXRyaWVzOiAzXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBjb25maWc6IEFpQ2hhdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgY29uZmlndXJlKGNvbmZpZzogUGFydGlhbDxBaUNoYXRDb25maWc+KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfTtcclxuICB9XHJcblxyXG4gIHRlc3RDb25maWd1cmF0aW9uKCk6IE9ic2VydmFibGU8QWdlbnRSZXNwb25zZT4ge1xyXG4gICAgLy8gRm9yIGRldmVsb3BtZW50IHB1cnBvc2VzLCBzaW11bGF0ZSBhIHN1Y2Nlc3NmdWwgY29ubmVjdGlvblxyXG4gICAgLy8gd2hlbiB0aGUgYmFja2VuZCBpcyBub3QgYXZhaWxhYmxlXHJcbiAgICBjb25zb2xlLmxvZygnVGVzdGluZyBjb25maWd1cmF0aW9uIGF0OicsIGAke3RoaXMuY29uZmlnLmFwaVVybH0vVGVzdENvbmZpZ3VyYXRpb25gKTtcclxuICAgIFxyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIC4uLih0aGlzLmNvbmZpZy5hcHBLZXkgJiYgeyAneC1hcGkta2V5JzogdGhpcy5jb25maWcuYXBwS2V5IH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBZ2VudFJlc3BvbnNlPihgJHt0aGlzLmNvbmZpZy5hcGlVcmx9L1Rlc3RDb25maWd1cmF0aW9uYCwgeyBoZWFkZXJzIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRpbWVvdXQodGhpcy5jb25maWcudGltZW91dCB8fCAzMDAwMCksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdCYWNrZW5kIEFQSSBub3QgYXZhaWxhYmxlLCBydW5uaW5nIGluIGRlbW8gbW9kZTonLCBlcnJvcik7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIFJldHVybiBhIG1vY2sgc3VjY2Vzc2Z1bCByZXNwb25zZSBmb3IgZGVtbyBwdXJwb3Nlc1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Ioe1xyXG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcclxuICAgICAgICAgICAgZXJyb3I6ICdCYWNrZW5kIEFQSSBub3QgYXZhaWxhYmxlIChEZW1vIE1vZGUpJ1xyXG4gICAgICAgICAgfSBhcyBBZ2VudFJlc3BvbnNlKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0lucXVpcnkocmVxdWVzdDogU3VwcG9ydEJvdFJlcXVlc3QpOiBPYnNlcnZhYmxlPFN1cHBvcnRCb3RSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIC4uLih0aGlzLmNvbmZpZy5hcHBLZXkgJiYgeyAneC1hcGkta2V5JzogdGhpcy5jb25maWcuYXBwS2V5IH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDbGVhbiB0aGUgcmVxdWVzdCBvYmplY3QgdG8gcmVtb3ZlIHVuZGVmaW5lZC9udWxsIHZhbHVlcyBhbmQgZW5zdXJlIGNvbnZlcnNhdGlvbklkIGlzIGEgc3RyaW5nXHJcbiAgICBjb25zdCBjbGVhbmVkUmVxdWVzdDogU3VwcG9ydEJvdFJlcXVlc3QgPSB7XHJcbiAgICAgIC4uLihyZXF1ZXN0LnF1ZXJ5ICYmIHsgcXVlcnk6IHJlcXVlc3QucXVlcnkgfSksXHJcbiAgICAgIC4uLihyZXF1ZXN0LmNvbnZlcnNhdGlvbklkICYmIHsgY29udmVyc2F0aW9uSWQ6IFN0cmluZyhyZXF1ZXN0LmNvbnZlcnNhdGlvbklkKSB9KSxcclxuICAgICAgLi4uKHJlcXVlc3QudXNlcklkICYmIHsgdXNlcklkOiByZXF1ZXN0LnVzZXJJZCB9KSxcclxuICAgICAgLi4uKHJlcXVlc3QudXNlck5hbWUgJiYgeyB1c2VyTmFtZTogcmVxdWVzdC51c2VyTmFtZSB9KSxcclxuICAgICAgLi4uKHJlcXVlc3QuYXBwU291cmNlICYmIHsgYXBwU291cmNlOiByZXF1ZXN0LmFwcFNvdXJjZSB9KVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U3VwcG9ydEJvdFJlc3BvbnNlPihgJHt0aGlzLmNvbmZpZy5hcGlVcmx9L1Byb2Nlc3NJbnF1aXJ5YCwgY2xlYW5lZFJlcXVlc3QsIHsgaGVhZGVycyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0aW1lb3V0KHRoaXMuY29uZmlnLnRpbWVvdXQgfHwgMzAwMDApLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUHJvY2Vzc0lucXVpcnkgQVBJIG5vdCBhdmFpbGFibGUsIHJldHVybmluZyBkZW1vIHJlc3BvbnNlOicsIGVycm9yKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gUmV0dXJuIGEgbW9jayByZXNwb25zZSBmb3IgZGVtbyBwdXJwb3Nlc1xyXG4gICAgICAgICAgY29uc3QgbW9ja1Jlc3BvbnNlOiBTdXBwb3J0Qm90UmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogYERlbW8gTW9kZTogSSByZWNlaXZlZCB5b3VyIHF1ZXJ5IFwiJHtyZXF1ZXN0LnF1ZXJ5fVwiLiBUaGUgYmFja2VuZCBBUEkgaXMgY3VycmVudGx5IG5vdCBhdmFpbGFibGUsIGJ1dCB0aGUgVUkgaXMgd29ya2luZyBjb3JyZWN0bHkhYCxcclxuICAgICAgICAgICAgY29udGVudHM6IFt7XHJcbiAgICAgICAgICAgICAgY29udGVudDogYERlbW8gTW9kZTogSSByZWNlaXZlZCB5b3VyIHF1ZXJ5IFwiJHtyZXF1ZXN0LnF1ZXJ5fVwiLiBUaGUgYmFja2VuZCBBUEkgaXMgY3VycmVudGx5IG5vdCBhdmFpbGFibGUsIGJ1dCB0aGUgVUkgaXMgd29ya2luZyBjb3JyZWN0bHkhYCxcclxuICAgICAgICAgICAgICByb2xlOiAnYXNzaXN0YW50JyxcclxuICAgICAgICAgICAgICBhdXRob3JOYW1lOiAnTWFlc3RybyAoRGVtbyknXHJcbiAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBSZXR1cm4gdGhlIG1vY2sgcmVzcG9uc2UgYXMgYW4gT2JzZXJ2YWJsZVxyXG4gICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFN1cHBvcnRCb3RSZXNwb25zZT4ob2JzZXJ2ZXIgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG1vY2tSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSwgMTAwMCk7IC8vIFNpbXVsYXRlIG5ldHdvcmsgZGVsYXlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IE9ic2VydmFibGU8QWdlbnRSZXNwb25zZT4ge1xyXG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHlvdXIgcmVxdWVzdC4nO1xyXG4gICAgXHJcbiAgICBpZiAoZXJyb3IuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XHJcbiAgICAgIC8vIENsaWVudC1zaWRlIGVycm9yXHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBDbGllbnQgRXJyb3I6ICR7ZXJyb3IuZXJyb3IubWVzc2FnZX1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU2VydmVyLXNpZGUgZXJyb3JcclxuICAgICAgZXJyb3JNZXNzYWdlID0gYFNlcnZlciBFcnJvcjogJHtlcnJvci5zdGF0dXN9IC0gJHtlcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIGlmIChlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5tZXNzYWdlKSB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlICs9IGAgLSAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnNvbGUuZXJyb3IoJ0FpQWdlbnRTZXJ2aWNlIEVycm9yOicsIGVycm9yKTtcclxuICAgIFxyXG4gICAgcmV0dXJuIHRocm93RXJyb3Ioe1xyXG4gICAgICBzdWNjZXNzOiBmYWxzZSxcclxuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZVxyXG4gICAgfSBhcyBBZ2VudFJlc3BvbnNlKTtcclxuICB9XHJcbn0iXX0=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VtYW5hdGUtYWktY2hhdC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9haS1hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFdBQVcsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUEyRHJELE1BQU0sT0FBTyxjQUFjO0lBU3pCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFSbkIsa0JBQWEsR0FBaUI7WUFDN0MsTUFBTSxFQUFFLG9DQUFvQztZQUM1QyxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQUVNLFdBQU0scUJBQXNCLElBQUksQ0FBQyxhQUFhLEVBQUc7SUFFbEIsQ0FBQztJQUV4QyxTQUFTLENBQUMsTUFBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sbUNBQVEsSUFBSSxDQUFDLGFBQWEsR0FBSyxNQUFNLENBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsNkRBQTZEO1FBQzdELG9DQUFvQztRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixDQUFDLENBQUM7UUFFcEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLGlCQUM3QixjQUFjLEVBQUUsa0JBQWtCLElBQy9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxXQUFXLEVBQUUs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VUFBVSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLFlBQVk7U0FDSCxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7NEdBN0ZVLGNBQWM7Z0hBQWQsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0aW1lb3V0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnF1aXJ5UmVxdWVzdCB7XHJcbiAgaW5xdWlyeTogc3RyaW5nO1xyXG4gIGFkZGl0aW9uYWxJbnB1dHM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Qm90UmVxdWVzdCB7XHJcbiAgcXVlcnk/OiBzdHJpbmc7XHJcbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7XHJcbiAgdXNlcklkPzogc3RyaW5nO1xyXG4gIHVzZXJOYW1lPzogc3RyaW5nO1xyXG4gIGFwcFNvdXJjZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Qm90Q2hhdEhpc3RvcnlJdGVtIHtcclxuICBxdWVyeT86IHN0cmluZztcclxuICByZXNwb25zZT86IFN1cHBvcnRCb3RSZXNwb25zZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Qm90UmVzcG9uc2Uge1xyXG4gIGFuc3dlcj86IHN0cmluZztcclxuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcclxuICBzZWFyY2hJbnRlbnQ/OiBzdHJpbmc7XHJcbiAgY29udGVudHM/OiBDaGF0Q29udGVudFtdO1xyXG4gIHJlZmVyZW5jZXM/OiBLbm93bGVkZ2VCYXNlSXRlbVtdO1xyXG4gIHNlYXJjaERvY3VtZW50cz86IEtub3dsZWRnZUJhc2VJdGVtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbnRlbnQge1xyXG4gIHJvbGU/OiBzdHJpbmc7XHJcbiAgY29udGVudD86IHN0cmluZztcclxuICBhdXRob3JOYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEtub3dsZWRnZUJhc2VJdGVtIHtcclxuICBmaWxlVVJMPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XHJcbiAgc2NvcmU6IG51bWJlcjtcclxuICBrZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRSZXNwb25zZSB7XHJcbiAgc3VjY2VzczogYm9vbGVhbjtcclxuICByZXN1bHQ/OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWlDaGF0Q29uZmlnIHtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgYXBwS2V5Pzogc3RyaW5nO1xyXG4gIHRpbWVvdXQ/OiBudW1iZXI7XHJcbiAgcmV0cmllcz86IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWlBZ2VudFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdENvbmZpZzogQWlDaGF0Q29uZmlnID0ge1xyXG4gICAgYXBpVXJsOiAnaHR0cHM6Ly9sb2NhbGhvc3Q6NzIzNy9hcGkvQUlBZ2VudCcsXHJcbiAgICB0aW1lb3V0OiAzMDAwMCxcclxuICAgIHJldHJpZXM6IDNcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNvbmZpZzogQWlDaGF0Q29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICBjb25maWd1cmUoY29uZmlnOiBQYXJ0aWFsPEFpQ2hhdENvbmZpZz4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xyXG4gIH1cclxuXHJcbiAgdGVzdENvbmZpZ3VyYXRpb24oKTogT2JzZXJ2YWJsZTxBZ2VudFJlc3BvbnNlPiB7XHJcbiAgICAvLyBGb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMsIHNpbXVsYXRlIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uXHJcbiAgICAvLyB3aGVuIHRoZSBiYWNrZW5kIGlzIG5vdCBhdmFpbGFibGVcclxuICAgIGNvbnNvbGUubG9nKCdUZXN0aW5nIGNvbmZpZ3VyYXRpb24gYXQ6JywgYCR7dGhpcy5jb25maWcuYXBpVXJsfS9UZXN0Q29uZmlndXJhdGlvbmApO1xyXG4gICAgXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFwcEtleSAmJiB7ICd4LWFwaS1rZXknOiB0aGlzLmNvbmZpZy5hcHBLZXkgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFnZW50UmVzcG9uc2U+KGAke3RoaXMuY29uZmlnLmFwaVVybH0vVGVzdENvbmZpZ3VyYXRpb25gLCB7IGhlYWRlcnMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGltZW91dCh0aGlzLmNvbmZpZy50aW1lb3V0IHx8IDMwMDAwKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0JhY2tlbmQgQVBJIG5vdCBhdmFpbGFibGUsIHJ1bm5pbmcgaW4gZGVtbyBtb2RlOicsIGVycm9yKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gUmV0dXJuIGEgbW9jayBzdWNjZXNzZnVsIHJlc3BvbnNlIGZvciBkZW1vIHB1cnBvc2VzXHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgICAgICAgICBlcnJvcjogJ0JhY2tlbmQgQVBJIG5vdCBhdmFpbGFibGUgKERlbW8gTW9kZSknXHJcbiAgICAgICAgICB9IGFzIEFnZW50UmVzcG9uc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzSW5xdWlyeShyZXF1ZXN0OiBTdXBwb3J0Qm90UmVxdWVzdCk6IE9ic2VydmFibGU8U3VwcG9ydEJvdFJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFwcEtleSAmJiB7ICd4LWFwaS1rZXknOiB0aGlzLmNvbmZpZy5hcHBLZXkgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTdXBwb3J0Qm90UmVzcG9uc2U+KGAke3RoaXMuY29uZmlnLmFwaVVybH0vUHJvY2Vzc0lucXVpcnlgLCByZXF1ZXN0LCB7IGhlYWRlcnMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGltZW91dCh0aGlzLmNvbmZpZy50aW1lb3V0IHx8IDMwMDAwKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1Byb2Nlc3NJbnF1aXJ5IEFQSSBub3QgYXZhaWxhYmxlLCByZXR1cm5pbmcgZGVtbyByZXNwb25zZTonLCBlcnJvcik7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIFJldHVybiBhIG1vY2sgcmVzcG9uc2UgZm9yIGRlbW8gcHVycG9zZXNcclxuICAgICAgICAgIGNvbnN0IG1vY2tSZXNwb25zZTogU3VwcG9ydEJvdFJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IGBEZW1vIE1vZGU6IEkgcmVjZWl2ZWQgeW91ciBxdWVyeSBcIiR7cmVxdWVzdC5xdWVyeX1cIi4gVGhlIGJhY2tlbmQgQVBJIGlzIGN1cnJlbnRseSBub3QgYXZhaWxhYmxlLCBidXQgdGhlIFVJIGlzIHdvcmtpbmcgY29ycmVjdGx5IWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnRzOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGBEZW1vIE1vZGU6IEkgcmVjZWl2ZWQgeW91ciBxdWVyeSBcIiR7cmVxdWVzdC5xdWVyeX1cIi4gVGhlIGJhY2tlbmQgQVBJIGlzIGN1cnJlbnRseSBub3QgYXZhaWxhYmxlLCBidXQgdGhlIFVJIGlzIHdvcmtpbmcgY29ycmVjdGx5IWAsXHJcbiAgICAgICAgICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXHJcbiAgICAgICAgICAgICAgYXV0aG9yTmFtZTogJ01hZXN0cm8gKERlbW8pJ1xyXG4gICAgICAgICAgICB9XVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBtb2NrIHJlc3BvbnNlIGFzIGFuIE9ic2VydmFibGVcclxuICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTdXBwb3J0Qm90UmVzcG9uc2U+KG9ic2VydmVyID0+IHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChtb2NrUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMDApOyAvLyBTaW11bGF0ZSBuZXR3b3JrIGRlbGF5XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPEFnZW50UmVzcG9uc2U+IHtcclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QuJztcclxuICAgIFxyXG4gICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAvLyBDbGllbnQtc2lkZSBlcnJvclxyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQ2xpZW50IEVycm9yOiAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFNlcnZlci1zaWRlIGVycm9yXHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBTZXJ2ZXIgRXJyb3I6ICR7ZXJyb3Iuc3RhdHVzfSAtICR7ZXJyb3IubWVzc2FnZX1gO1xyXG4gICAgICBpZiAoZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IubWVzc2FnZSkge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZSArPSBgIC0gJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmVycm9yKCdBaUFnZW50U2VydmljZSBFcnJvcjonLCBlcnJvcik7XHJcbiAgICBcclxuICAgIHJldHVybiB0aHJvd0Vycm9yKHtcclxuICAgICAgc3VjY2VzczogZmFsc2UsXHJcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcclxuICAgIH0gYXMgQWdlbnRSZXNwb25zZSk7XHJcbiAgfVxyXG59Il19
|
|
@@ -189,9 +189,7 @@ class AiAgentService {
|
|
|
189
189
|
}
|
|
190
190
|
processInquiry(request) {
|
|
191
191
|
const headers = new HttpHeaders(Object.assign({ 'Content-Type': 'application/json' }, (this.config.appKey && { 'x-api-key': this.config.appKey })));
|
|
192
|
-
|
|
193
|
-
const cleanedRequest = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (request.query && { query: request.query })), (request.conversationId && { conversationId: String(request.conversationId) })), (request.userId && { userId: request.userId })), (request.userName && { userName: request.userName })), (request.appSource && { appSource: request.appSource }));
|
|
194
|
-
return this.http.post(`${this.config.apiUrl}/ProcessInquiry`, cleanedRequest, { headers })
|
|
192
|
+
return this.http.post(`${this.config.apiUrl}/ProcessInquiry`, request, { headers })
|
|
195
193
|
.pipe(timeout(this.config.timeout || 30000), catchError((error) => {
|
|
196
194
|
console.log('ProcessInquiry API not available, returning demo response:', error);
|
|
197
195
|
// Return a mock response for demo purposes
|
|
@@ -523,7 +521,7 @@ class AiChatComponent {
|
|
|
523
521
|
this.authorName = '';
|
|
524
522
|
this.intent = '';
|
|
525
523
|
this.isLoading = true;
|
|
526
|
-
const request = Object.assign(Object.assign(Object.assign(Object.assign({ query: inquiry }, (this.conversationId && { conversationId: String(this.conversationId) })), (this.userId && { userId: this.userId })), (this.userName && { userName: this.userName })), (this.appSource && { appSource: this.appSource }));
|
|
524
|
+
const request = Object.assign(Object.assign(Object.assign(Object.assign({ query: inquiry }, (this.conversationId !== undefined && this.conversationId !== null ? { conversationId: String(this.conversationId) } : {})), (this.userId !== undefined && this.userId !== null ? { userId: this.userId } : {})), (this.userName !== undefined && this.userName !== null ? { userName: this.userName } : {})), (this.appSource !== undefined && this.appSource !== null ? { appSource: this.appSource } : {}));
|
|
527
525
|
this.aiAgentService.processInquiry(request)
|
|
528
526
|
.pipe(takeUntil(this.destroy$))
|
|
529
527
|
.subscribe({
|