@smartbit4all/ng-client 3.3.163 → 3.3.164

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.
@@ -274,6 +274,7 @@ export class SmartformwidgetComponent {
274
274
  }
275
275
  ngOnDestroy() {
276
276
  this._destroy$.next();
277
+ this._destroy$.complete();
277
278
  }
278
279
  onKeydown() {
279
280
  this.isEnterPressed = true;
@@ -729,4 +730,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
729
730
  type: ViewChild,
730
731
  args: ['timeInput']
731
732
  }] } });
732
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBR1QsS0FBSyxFQUdMLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBYyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUYsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsMkJBQTJCLEdBQzVCLE1BQU0sd0JBQXdCLENBQUM7QUFHaEMsT0FBTyxFQUNMLG9DQUFvQyxHQUlyQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0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QUMsYUFBYTtnQkFTRixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBaUhJLGNBQWM7c0JBQXJDLFNBQVM7dUJBQUMsV0FBVztnQkFDRSxjQUFjO3NCQUFyQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0Q2hpcElucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnZmFzdC1lcXVhbHMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRDaGFuZ2UsIFF1aWxsRWRpdG9yQ29tcG9uZW50LCBRdWlsbE1vZHVsZXMgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLFxyXG4gIFNtYXJ0Rm9ybVdpZGdldFR5cGUsXHJcbiAgU21hcnRXaWRnZXRIaW50UG9zaXRpb25FbnVtLFxyXG59IGZyb20gJy4uLy4uL2FwaS9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc21hcnRmb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEJ1dHRvbiwgU21hcnRGb3JtV2lkZ2V0LCBTbWFydEl0ZW0sIFNtYXJ0TWF0cml4IH0gZnJvbSAnLi4vLi4vc21hcnRmb3JtLmZvcm0tbW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbixcclxuICBTbWFydFZhbGlkYXRvcixcclxuICBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UsXHJcbiAgVmFsdWUsXHJcbn0gZnJvbSAnLi4vLi4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1zdHlsZS11dGlsaXR5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTbWFydFdpZGdldFNldHRpbmdzIHtcclxuICBwdWJsaWMgc3RhdGljIHVzZVV0YyA9IGZhbHNlO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0Zm9ybXdpZGdldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0Zm9ybXdpZGdldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRmb3Jtd2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgaGlkZVBhc3N3b3JkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSB3aWRnZXRJbnN0YW5jZSE6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+O1xyXG4gIEBJbnB1dCgpIG9uQmx1cj86IFN1YmplY3Q8YW55PjtcclxuICBASW5wdXQoKSBvblZhbHVlQ2hhbmdlPzogU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIGxhYmVsQ29sb3I/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc29waGlzdGljYXRlZFZhbHVlQ2hhbmdlITogU3ViamVjdDxTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2U+O1xyXG5cclxuICBzbWFydEZvcm1XaWRnZXRUeXBlID0gU21hcnRGb3JtV2lkZ2V0VHlwZTtcclxuXHJcbiAgY2Fwc09uOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NoaXBJbnB1dCcpIGNoaXBJbnB1dENoaWxkPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgZmlsdGVyZWRWYWx1ZUxpc3Q/OiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvcktleT86IHN0cmluZztcclxuXHJcbiAgaW5kaWNhdG9ySXRlbXM/OiBhbnlbXTtcclxuXHJcbiAgLy8gY3VzdG9tQ29tcG9uZW50XHJcbiAgQFZpZXdDaGlsZCgnY3VzdG9tQ29tcG9uZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgY3VzdG9tQ29tcG9uZW50VmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIGN1c3RvbUNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xyXG5cclxuICBmaWx0ZXJlZE9wdGlvbnM/OiBPYnNlcnZhYmxlPFNtYXJ0SXRlbTxhbnk+W10+O1xyXG4gIHRvSGlnaGxpZ2h0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgncXVpbGxFZGl0b3InKSBxdWlsbD86IFF1aWxsRWRpdG9yQ29tcG9uZW50O1xyXG5cclxuICBpc0VudGVyUHJlc3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc0RhdGVQaWNrZXJSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBTbWFydFdpZGdldEhpbnRQb3NpdGlvbiA9IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uRW51bTtcclxuXHJcbiAgLy8gdG9vbGJhclxyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInKSB0b29sYmFyPzogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50O1xyXG5cclxuICBlbXB0eVF1aWxsVG9vbGJhcjogUXVpbGxNb2R1bGVzID0ge1xyXG4gICAgdG9vbGJhcjogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFNtYXJ0Rm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNmU2VydmljZTogQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XHJcbiAgICApIHtcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZUxpc3QgPSB0aGlzLnNlcnZpY2UuZmlsdGVyV2lkZ2V0c0J5VmlzaWJpbGl0eShcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlTGlzdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRoaXMud2lkZ2V0SW5zdGFuY2UpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9uQmx1cj8ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldEVycm9yTWVzc2FnZSh0aGlzLndpZGdldEluc3RhbmNlKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yPy5pbmRpY2F0b3JMZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmluZGljYXRvckl0ZW1zID0gbmV3IEFycmF5PGFueT4odGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3IuaW5kaWNhdG9yTGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3IhLmluZGljYXRlUHJvcGVydHldLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IpIHtcclxuICAgICAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3IhLmluZGljYXRvclZhbHVlID1cclxuICAgICAgICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuY2hhbmdlSW5kaWNhdG9yU3RhdHVzKHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2Uuc2VsZWN0aW9uXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9uVmFsdWVDaGFuZ2UhLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9maWx0ZXIodmFsdWUgfHwgJycpKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUikge1xyXG4gICAgICBsZXQgdmlkZW9JZCA9IHRoaXMucGFyc2VZb3V0dWJlVXJsKHRoaXMud2lkZ2V0SW5zdGFuY2UubGluayEpO1xyXG4gICAgICBpZiAodmlkZW9JZCkgdGhpcy53aWRnZXRJbnN0YW5jZS52aWRlb0lkID0gdmlkZW9JZDtcclxuICAgICAgY29uc3QgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblxyXG4gICAgICB0YWcuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGknO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhZyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZvcm1Db250cm9sczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZpbHRlcihcclxuICAgICAgKGtleTogc3RyaW5nKSA9PlxyXG4gICAgICAgIGtleSA9PT0gdGhpcy53aWRnZXRJbnN0YW5jZS5rZXkgfHwga2V5LnN0YXJ0c1dpdGgoYCR7dGhpcy53aWRnZXRJbnN0YW5jZS5rZXl9LmApXHJcbiAgICApO1xyXG5cclxuICAgIGZvcm1Db250cm9scy5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1trZXldLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2U6IFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSA9IHtcclxuICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAga2luZDpcclxuICAgICAgICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSB8fFxyXG4gICAgICAgICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT05cclxuICAgICAgICAgICAgICAgID8gJ3NlbGVjdGlvbidcclxuICAgICAgICAgICAgICAgIDogJ2Jhc2ljJyxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UubmV4dCh2YWx1ZUNoYW5nZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhcnNlWW91dHViZVVybCh1cmw6IHN0cmluZykge1xyXG4gICAgdXJsLnJlcGxhY2UoJy9zaG9ydHMvJywgJy93YXRjaD92PScpO1xyXG5cclxuICAgIHZhciByZWdFeHAgPSAvXi4qKCh5b3V0dS5iZVxcLyl8KHZcXC8pfChcXC91XFwvXFx3XFwvKXwoZW1iZWRcXC8pfCh3YXRjaFxcPykpXFw/P3Y/PT8oW14jJj9dKikuKi87XHJcbiAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2gocmVnRXhwKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbN10ubGVuZ3RoID09IDExID8gbWF0Y2hbN10gOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIF9oYXNKdXN0Q2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgaGFzSnVzdENoYW5nZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faGFzSnVzdENoYW5nZWQ7XHJcbiAgfVxyXG4gIHNldCBoYXNKdXN0Q2hhbmdlZChoYXNKdXN0Q2hhbmdlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faGFzSnVzdENoYW5nZWQgPSBoYXNKdXN0Q2hhbmdlZDtcclxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDI1MCkpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLl9oYXNKdXN0Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYXNDcmVhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dENoaWxkPzogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0aW1lSW5wdXQnKSB0aW1lSW5wdXRDaGlsZD86IEVsZW1lbnRSZWY7XHJcblxyXG4gIG9uRGF0ZVBpY2tlckJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5vbkJsdXI/Lm5leHQodGhpcy53aWRnZXRJbnN0YW5jZSk7XHJcbiAgICB0aGlzLmhhbmRsZURhdGVDaGFuZ2VkKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleSFdLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uVGltZVBpY2tlckJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5vbkJsdXI/Lm5leHQodGhpcy53aWRnZXRJbnN0YW5jZSk7XHJcbiAgICB0aGlzLmhhbmRsZVRpbWVDaGFuZ2VkKHRoaXMuZm9ybS5jb250cm9sc1tgJHt0aGlzLndpZGdldEluc3RhbmNlLmtleX0tdGltZWBdLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50UmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50VmNSZWYhLFxyXG4gICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UuY29tcG9uZW50LFxyXG4gICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5wdXRcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSIHx8XHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzRGF0ZVBpY2tlclJlcXVpcmVkID0gISF0aGlzLndpZGdldEluc3RhbmNlLnZhbGlkYXRvcnM/LnNvbWUoXHJcbiAgICAgICAgKHNtYXJ0VmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4gc21hcnRWYWxpZGF0b3IudmFsaWRhdG9yID09PSBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBsZXQgdGltZTtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWUpIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gICAgICAgIGxldCBob3VyID0gU21hcnRXaWRnZXRTZXR0aW5ncy51c2VVdGMgPyBkYXRlLmdldFVUQ0hvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCk7XHJcbiAgICAgICAgbGV0IG1pbiA9IFNtYXJ0V2lkZ2V0U2V0dGluZ3MudXNlVXRjID8gZGF0ZS5nZXRVVENNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgICB0aW1lID0gU3RyaW5nKGhvdXIpLnBhZFN0YXJ0KDIsICcwJykgKyAnOicgKyBTdHJpbmcobWluKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWUgPSBtb21lbnQoZGF0ZSk7XHJcbiAgICAgICAgY29uc3QgZGF0ZUZvcm1Db250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5XTtcclxuICAgICAgICBpZiAoZGF0ZUZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICBkYXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpbWUgPSAnJztcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsaWRhdG9ycykge1xyXG4gICAgICAgIHZhbGlkYXRvcnMgPSB0aGlzLndpZGdldEluc3RhbmNlLnZhbGlkYXRvcnM/Lm1hcCgodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRvci52YWxpZGF0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHRpbWVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aW1lLCB2YWxpZGF0b3JzKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICB0aW1lRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChgJHt0aGlzLndpZGdldEluc3RhbmNlLmtleX0tdGltZWAsIHRpbWVGb3JtQ29udHJvbCk7XHJcblxyXG4gICAgICB0aGlzLmhhc0NyZWF0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5IV0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChfbW9tZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRGF0ZUNoYW5nZWQoX21vbWVudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tgJHt0aGlzLndpZGdldEluc3RhbmNlLmtleX0tdGltZWBdLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodGltZVZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlVGltZUNoYW5nZWQodGltZVZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZURhdGVDaGFuZ2VkKF9tb21lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNEYXRlRm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuZGF0ZUlucHV0Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc1RpbWVGb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy50aW1lSW5wdXRDaGlsZD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGRhdGVGb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleSFdO1xyXG4gICAgY29uc3QgdGltZUZvcm1Db250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW2Ake3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5fS10aW1lYF07XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5pc0RhdGVQaWNrZXJSZXF1aXJlZCAmJlxyXG4gICAgICB0aW1lRm9ybUNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpICYmXHJcbiAgICAgICFfbW9tZW50XHJcbiAgICApIHtcclxuICAgICAgdGltZUZvcm1Db250cm9sLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIHRpbWVGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAhdGhpcy5pc0RhdGVQaWNrZXJSZXF1aXJlZCAmJlxyXG4gICAgICAhdGltZUZvcm1Db250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSAmJlxyXG4gICAgICBfbW9tZW50XHJcbiAgICApIHtcclxuICAgICAgdGltZUZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICBpZiAodGltZUZvcm1Db250cm9sLnZhbHVlID09PSAnJykge1xyXG4gICAgICAgIHRpbWVGb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xyXG4gICAgICAgIHRpbWVGb3JtQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghX21vbWVudCB8fCBpc0RhdGVGb2N1c2VkIHx8IGlzVGltZUZvY3VzZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhhc0p1c3RDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuaGFzSnVzdENoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRpbWVWYWx1ZSA9IHRpbWVGb3JtQ29udHJvbC52YWx1ZSB8fCAnMDA6MDAnO1xyXG4gICAgdGhpcy5oYXNKdXN0Q2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZUZvcm1Db250cm9sKGRhdGVGb3JtQ29udHJvbCwgX21vbWVudCwgdGltZVZhbHVlKTtcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSA9IGRhdGVGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVRpbWVDaGFuZ2VkKHRpbWVWYWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0ZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnRpbWVJbnB1dENoaWxkPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgZGF0ZUZvcm1Db250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5IV07XHJcbiAgICBjb25zdCB0aW1lRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbYCR7dGhpcy53aWRnZXRJbnN0YW5jZS5rZXl9LXRpbWVgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmlzRGF0ZVBpY2tlclJlcXVpcmVkICYmXHJcbiAgICAgIGRhdGVGb3JtQ29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgJiZcclxuICAgICAgIXRpbWVWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIGRhdGVGb3JtQ29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBkYXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUoZGF0ZUZvcm1Db250cm9sLnZhbHVlID8/ICcnKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICF0aGlzLmlzRGF0ZVBpY2tlclJlcXVpcmVkICYmXHJcbiAgICAgICFkYXRlRm9ybUNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpICYmXHJcbiAgICAgIHRpbWVWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIGRhdGVGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0ZvY3VzZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhhc0p1c3RDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuaGFzSnVzdENoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGltZVZhbHVlKSB7XHJcbiAgICAgIGlmICh0aW1lRm9ybUNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XHJcbiAgICAgICAgdGltZUZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBfbW9tZW50ID0gZGF0ZUZvcm1Db250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghX21vbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYXNKdXN0Q2hhbmdlZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVIpIHtcclxuICAgICAgdGhpcy5zZXREYXRlRm9ybUNvbnRyb2woZGF0ZUZvcm1Db250cm9sLCBfbW9tZW50LCB0aW1lVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRlRm9ybUNvbnRyb2woZGF0ZUZvcm1Db250cm9sOiBhbnksIF9tb21lbnQ6IGFueSwgdGltZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmIChfbW9tZW50KSB7XHJcbiAgICAgIGxldCBob3VyID0gdGltZVZhbHVlLnN1YnN0cmluZygwLCAyKTtcclxuICAgICAgbGV0IG1pbiA9IHRpbWVWYWx1ZS5zdWJzdHJpbmcoMywgNSk7XHJcbiAgICAgIF9tb21lbnQuaG91cihob3VyKTtcclxuICAgICAgX21vbWVudC5taW51dGUobWluKTtcclxuICAgICAgZGF0ZUZvcm1Db250cm9sLnNldFZhbHVlKF9tb21lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VGltZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVsxXS5zdWJzdHJpbmcoMCwgNSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG9uS2V5ZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNFbnRlclByZXNzZWQgPSB0cnVlO1xyXG5cclxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMCkpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzRW50ZXJQcmVzc2VkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNFbnRlclByZXNzZWQpIHtcclxuICAgICAgdGhpcy5oaWRlUGFzc3dvcmQgPSAhdGhpcy5oaWRlUGFzc3dvcmQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZ0NsYXNzKCk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXModGhpcy53aWRnZXRJbnN0YW5jZS5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIGlmICghdGhpcy53aWRnZXRJbnN0YW5jZS5zdHlsZSkge1xyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnN0eWxlID0ge1xyXG4gICAgICAgIGNsYXNzZXNUb0FkZDogW10sXHJcbiAgICAgICAgY2xhc3Nlc1RvUmVtb3ZlOiBbXSxcclxuICAgICAgICBzdHlsZToge30sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEoJ3dpZHRoJyBpbiB0aGlzLndpZGdldEluc3RhbmNlLnN0eWxlLnN0eWxlKSAmJiAnbWluV2lkdGgnIGluIHRoaXMud2lkZ2V0SW5zdGFuY2UpIHtcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5zdHlsZS5zdHlsZVsnd2lkdGgnXSA9IGAke3RoaXMud2lkZ2V0SW5zdGFuY2UubWluV2lkdGh9cHhgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKHRoaXMud2lkZ2V0SW5zdGFuY2Uuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxOZ0NsYXNzKCk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICgnbGFiZWxTdHlsZScgaW4gdGhpcy53aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHRoaXMud2lkZ2V0SW5zdGFuY2UubGFiZWxTdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIGlmICgnbGFiZWxTdHlsZScgaW4gdGhpcy53aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXModGhpcy53aWRnZXRJbnN0YW5jZS5sYWJlbFN0eWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFuZ2UgaGFuZGxlciBmb3IgdGhlIHBvdGVudGlhbGx5IHByZXNlbnQgUXVpbGwgZWRpdG9yLCBlbmZvcmNpbmcgbWF4IGxlbmd0aCBsaW1pdHMgaWZcclxuICAgKiBuZWNlc3NhcnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2hhbmdlIHRoZSB7QGxpbmsgQ29udGVudENoYW5nZX0gdGhlIFF1aWxsIGVkaXRvciBlbWl0c1xyXG4gICAqIEByZXR1cm5zIHtAY29kZSB2b2lkfVxyXG4gICAqL1xyXG4gIG9uUmljaFRleHRFZGl0b3JDb250ZW50Q2hhbmdlZChjaGFuZ2U6IENvbnRlbnRDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMud2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyB3ZSBhcmUgcGVybWl0dGVkIGEgbnVtYmVyIG9uZSBncmVhdGVyIHRoYW4gdGhlIHJlcXVlc3RlZDogVGhlIHF1aWxsIGVkaXRvciBjb250YWlucyBhblxyXG4gICAgLy8gdW5yZW1vdmFibGUgbmV3LWxpbmUgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgaXRzIGNvbnRlbnQuXHJcbiAgICBjb25zdCBtYXhMZW5ndGg6IG51bWJlciA9IHRoaXMud2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoICsgMTtcclxuICAgIGlmIChjaGFuZ2UudGV4dC5sZW5ndGggPD0gbWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbnNlcnRPcENvdW50OiBudW1iZXIgPSBjaGFuZ2UuZGVsdGEub3BzPy5maWx0ZXIoKGl0KSA9PiAhIWl0Lmluc2VydCkubGVuZ3RoID8/IDA7XHJcbiAgICBpZiAoaW5zZXJ0T3BDb3VudCA+IDApIHtcclxuICAgICAgdGhpcy5xdWlsbD8ucXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY2hhbmdlLm9sZERlbHRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiByZW1haW5pbmcgdXNlci1zcGFjZSBjaGFyYWN0ZXJzIGFsbG93ZWQgdG8gYmUgZW50ZXJlZCBpbnRvIHRoZSBRdWlsbFxyXG4gICAqIGVkaXRvci5cclxuICAgKlxyXG4gICAqIDxwPlxyXG4gICAqIFRoZSByZWFsIGxlbmd0aCBvZiB0aGUgZWRpdG9yJ3MgY29udGVudCBtYXkgYmUgbXVjaCBsb25nZXIgLSBhcyBpdCBpcyBwZXJzaXN0ZWQgYXMgYW4gSFRNTFxyXG4gICAqIGRvY3VtZW50IGZyYWdtZW50IGJlaGluZCB0aGUgc2NlbmVzLiBUaGlzIG1ldGhvZCBpcyBjb25jZXJuZWQgYnkgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoZVxyXG4gICAqIHVzZXIgcGVyY2VpdmVzLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgdGhlIHtAbGluayBudW1iZXJ9IG9mIHJlbWFpbmluZyBwZXJtaXR0ZWQgY2hhcmFjdGVycyB0aGUgdXNlciBtYXkgaW5wdXQsIG9yIHtAY29kZSAtMX1cclxuICAgKiAgICAgICAgICBpZiB0aGUgbGVld2F5IGlzIG5vdCBpbnRlcnByZXRlZCBpbiB0aGUgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZVxyXG4gICAqL1xyXG4gIGdldFJpY2hUZXh0RWRpdG9yTGVuZ3RoTGVld2F5KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVCkge1xyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGdldEluc3RhbmNlLm1heExlbmd0aCkge1xyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gd2UgYXJlIHBlcm1pdHRlZCBhIG51bWJlciBvbmUgZ3JlYXRlciB0aGFuIHRoZSByZXF1ZXN0ZWQ6IFRoZSBxdWlsbCBlZGl0b3IgY29udGFpbnMgYW5cclxuICAgIC8vIHVucmVtb3ZhYmxlIG5ldy1saW5lIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIGl0cyBjb250ZW50LlxyXG4gICAgY29uc3QgbWF4TGVuZ3RoOiBudW1iZXIgPSB0aGlzLndpZGdldEluc3RhbmNlLm1heExlbmd0aCArIDE7XHJcbiAgICBpZiAodGhpcy5xdWlsbCkge1xyXG4gICAgICAvLyB0aGlzIGlzIHRoZSBpbnRlbmRlZCBwYXRoICh1c2VyIGlucHV0KTpcclxuICAgICAgcmV0dXJuIG1heExlbmd0aCAtIHRoaXMucXVpbGwucXVpbGxFZGl0b3IuZ2V0VGV4dCgpLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBmYWxsYmFjayB0byB0aGUgcmF3IEhUTUwgY29udGVudDpcclxuICAgIHJldHVybiBtYXhMZW5ndGggLSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLnZhbHVlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGFkZE9uQmx1ciA9IHRydWU7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzID0gW0VOVEVSLCBDT01NQV0gYXMgY29uc3Q7XHJcblxyXG4gIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKTtcclxuICAgIHRoaXMuc2V0VGV4dEZpZWxkQ2hpcHNWYWx1ZSh2YWx1ZSk7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIGlucHV0IHZhbHVlXHJcbiAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XHJcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh2YWx1ZTogU21hcnRGb3JtV2lkZ2V0PGFueT4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udmFsdWUuaW5kZXhPZih2YWx1ZSk7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5XS52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCB3aWRnZXRJbnN0YW5jZTogU21hcnRGb3JtV2lkZ2V0PGFueT4pOiB2b2lkIHtcclxuICAgIGxldCB2YWx1ZSA9IGV2ZW50Lm9wdGlvbi52aWV3VmFsdWU7XHJcbiAgICB0aGlzLnNldFRleHRGaWVsZENoaXBzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUZXh0RmllbGRDaGlwc1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAodGhpcy53aWRnZXRJbnN0YW5jZS5tYXhWYWx1ZXMgJiZcclxuICAgICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWUhLmxlbmd0aCA8IHRoaXMud2lkZ2V0SW5zdGFuY2UubWF4VmFsdWVzKSB8fFxyXG4gICAgICAgICF0aGlzLndpZGdldEluc3RhbmNlLm1heFZhbHVlc1xyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udmFsdWUpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBuZXcgQXJyYXk8T2JqZWN0PigpO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSA9IHZhbHVlcztcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0uc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLnZhbHVlLnB1c2godmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREaXJlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT05cclxuICAgICkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS5kaXJlY3Rpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gJ2RpcmVjdGlvbi1yb3cnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLndpZGdldEluc3RhbmNlLmRpcmVjdGlvbiA9PT0gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCkge1xyXG4gICAgICByZXR1cm4gJ2RpcmVjdGlvbi1jb2wnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdkaXJlY3Rpb24tcm93JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbigpOiB0eXBlb2YgU21hcnRGb3JtVGV4dEZpZWxkQnV0dG9uSWNvblBvc2l0aW9uIHtcclxuICAgIHJldHVybiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHR5cGVvZiBTbWFydEZvcm1XaWRnZXRUeXBlIHtcclxuICAgIHJldHVybiBTbWFydEZvcm1XaWRnZXRUeXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55Pik6IHN0cmluZyB7XHJcbiAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGlmICh3aWRnZXQubGFiZWwgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB3aWRnZXQubGFiZWw7XHJcbiAgICB9XHJcbiAgICBsZXQgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5USU1FICYmXHJcbiAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRSAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcclxuICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcclxuICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UXHJcbiAgICApIHtcclxuICAgICAgaXNSZXF1aXJlZCA9IHdpZGdldC52YWxpZGF0b3JzPy5sZW5ndGggPyB0aGlzLmZpZWxkSXNSZXF1aXJlZCgpICYmICEhd2lkZ2V0LnNob3dMYWJlbCA6IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCkge1xyXG4gICAgICBpc1JlcXVpcmVkID0gd2lkZ2V0Lm1hcmtBc1JlcXVpcmVkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3dpZGdldC5sYWJlbH0ke2lzUmVxdWlyZWQgPyAnIConIDogJyd9YDtcclxuICB9XHJcblxyXG4gIGdldFdpZGdldFN2Zyh2YWx1ZT86IHN0cmluZyk6IFNhZmVIdG1sIHwgbnVsbCB7XHJcbiAgICBsZXQgc2FmZVZhbHVlID0gdmFsdWUgPz8gJyc7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc2FmZVZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmllbGRJc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbHVlID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5USU1FICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5UT0dHTEUgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICApIHtcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWxpZGF0b3JzPy5mb3JFYWNoKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRvci52YWxpZGF0b3IgPT0gVmFsaWRhdG9ycy5yZXF1aXJlZCkgdmFsdWUgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNDdXN0b21FcnJvcih3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+LCB2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbd2lkZ2V0LmtleV0gJiYgdGhpcy5mb3JtLmNvbnRyb2xzW3dpZGdldC5rZXldLmVycm9ycykge1xyXG4gICAgICAgIGxldCBoYXNFcnJvciA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXQua2V5XS5lcnJvcnMhKS5sZW5ndGhcclxuICAgICAgICAgID8gdGhpcy5mb3JtLmNvbnRyb2xzW3dpZGdldC5rZXldPy5kaXJ0eSB8fFxyXG4gICAgICAgICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3dpZGdldC5rZXldPy50b3VjaGVkICYmXHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yICYmXHJcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXQua2V5XT8uZXJyb3JzKSFbdmFsaWRhdG9yLm5hbWVdKVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAodmFsaWRhdG9yICYmIGhhc0Vycm9yICYmICF0aGlzLmVycm9yS2V5KSB8fFxyXG4gICAgICAgICAgKHZhbGlkYXRvciAmJiBoYXNFcnJvciAmJiB0aGlzLmVycm9yS2V5ID09PSB2YWxpZGF0b3IubmFtZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcktleSA9IHZhbGlkYXRvci5uYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0Vycm9yICYmIHZhbGlkYXRvciAmJiB0aGlzLmVycm9yS2V5ID09PSB2YWxpZGF0b3IubmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcktleSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhc0Vycm9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2Uod2lkZ2V0SW5zdGFuY2U6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBsZXQgZXJyb3JJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBsZXQgZXJyb3JJY29uQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIGxldCB2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yO1xyXG4gICAgaWYgKFxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXRJbnN0YW5jZS5rZXldICYmIHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXRJbnN0YW5jZS5rZXldLmVycm9ycykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuZXJyb3JLZXkgJiZcclxuICAgICAgICAgICFPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHNbd2lkZ2V0SW5zdGFuY2Uua2V5XS5lcnJvcnMhKS5pbmNsdWRlcyh0aGlzLmVycm9yS2V5ISlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JLZXkgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoXHJcbiAgICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgICAgaW5kZXggPCBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHNbd2lkZ2V0SW5zdGFuY2Uua2V5XS5lcnJvcnMhKS5sZW5ndGg7XHJcbiAgICAgICAgICBpbmRleCsrXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvcktleSA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXRJbnN0YW5jZS5rZXldLmVycm9ycyEpW2luZGV4XTtcclxuICAgICAgICAgIGxldCBjdXN0b21WYWxpZGF0b3JPbldpZGdldCA9IHdpZGdldEluc3RhbmNlLnZhbGlkYXRvcnM/LmZpbHRlcihcclxuICAgICAgICAgICAgKHZhbGlkYXRvcjogU21hcnRWYWxpZGF0b3IpID0+IHZhbGlkYXRvci5uYW1lID09PSBlcnJvcktleVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChjdXN0b21WYWxpZGF0b3JPbldpZGdldCAmJiBjdXN0b21WYWxpZGF0b3JPbldpZGdldC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gY3VzdG9tVmFsaWRhdG9yT25XaWRnZXRbMF0uZXJyb3JNZXNzYWdlITtcclxuICAgICAgICAgICAgZXJyb3JJY29uID0gY3VzdG9tVmFsaWRhdG9yT25XaWRnZXRbMF0uaWNvbjtcclxuICAgICAgICAgICAgZXJyb3JJY29uQ29sb3IgPSBjdXN0b21WYWxpZGF0b3JPbldpZGdldFswXS5pY29uQ29sb3I7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvciA9IGN1c3RvbVZhbGlkYXRvck9uV2lkZ2V0WzBdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBjdXN0b21WYWxpZGF0b3JPbkZvcm0gPSB0aGlzLnNlcnZpY2Uuc21hcnRGb3JtPy52YWxpZGF0b3JzPy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB2YWxpZGF0b3IubmFtZSA9PT0gZXJyb3JLZXlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoY3VzdG9tVmFsaWRhdG9yT25Gb3JtICYmIGN1c3RvbVZhbGlkYXRvck9uRm9ybS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gY3VzdG9tVmFsaWRhdG9yT25Gb3JtWzBdLmVycm9yTWVzc2FnZSE7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvciA9IGN1c3RvbVZhbGlkYXRvck9uRm9ybVswXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5oYXNDdXN0b21FcnJvcih3aWRnZXRJbnN0YW5jZSwgdmFsaWRhdG9yISkpIHtcclxuICAgICAgICB3aWRnZXRJbnN0YW5jZS5lcnJvciA9IGVycm9yTWVzc2FnZSE7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uID0gZXJyb3JJY29uO1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID0gZXJyb3JJY29uQ29sb3I7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLmVycm9yID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kaWNhdG9ySXRlbUNsYXNzKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IpIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yLmluZGljYXRvclZhbHVlID49IGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGBzbWFydC1pbmRpY2F0b3ItJHtpbmRleH1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRJbmRpY2F0b3JTdGF0dXNMYWJlbENvbG9yKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBNYXRoLmZsb29yKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JWYWx1ZSk7XHJcbiAgICBpZiAodmFsdWUgPiB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yTGVuZ3RoIC0gMSkge1xyXG4gICAgICByZXR1cm4gYHNtYXJ0LWluZGljYXRvci1sYWJlbC0ke3RoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JMZW5ndGggLSAxfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYHNtYXJ0LWluZGljYXRvci1sYWJlbC0ke3ZhbHVlfWA7XHJcbiAgfVxyXG4gIGdldEluZGljYXRvclN0YXR1c0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBNYXRoLmZsb29yKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JWYWx1ZSk7XHJcbiAgICBpZiAodmFsdWUgPiB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yTGVuZ3RoIC0gMSkge1xyXG4gICAgICByZXR1cm4gdGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3IhLmluZGljYXRvclN0YXR1c0xhYmVsc1tcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yTGVuZ3RoIC0gMVxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JTdGF0dXNMYWJlbHNbdmFsdWVdO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGZpbGVzOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSKSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudXBsb2FkQ2FsbGJhY2sodGhpcy53aWRnZXRJbnN0YW5jZS5rZXksIGZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJ1dHRvblR5cGUoZGVzY3JpcHRvcjogYW55KTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZGVzY3JpcHRvci50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ05PUk1BTCc6XHJcbiAgICAgICAgcmV0dXJuICdtYXQtYnV0dG9uJztcclxuICAgICAgY2FzZSAnRkxBVCc6XHJcbiAgICAgICAgcmV0dXJuICdtYXQtZmxhdC1idXR0b24nO1xyXG4gICAgICBjYXNlICdSQUlTRUQnOlxyXG4gICAgICAgIHJldHVybiAnbWF0LXJhaXNlZC1idXR0b24nO1xyXG4gICAgICBjYXNlICdTVFJPS0VEJzpcclxuICAgICAgICByZXR1cm4gJ21hdC1zdHJva2VkLWJ1dHRvbic7XHJcbiAgICAgIGNhc2UgJ0lDT04nOlxyXG4gICAgICAgIHJldHVybiAnbWF0LWljb24tYnV0dG9uJztcclxuICAgICAgY2FzZSAnTUlOSV9GQUInOlxyXG4gICAgICAgIHJldHVybiAnbWF0LW1pbmktZmFiJztcclxuICAgICAgY2FzZSAnRkFCJzpcclxuICAgICAgICByZXR1cm4gJ21hdC1mYWInO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUubG9nKGBVbmhhbmRsZWQgYWN0aW9uIGJ1dHRvbiB0eXBlIGNhc2U6ICR7ZGVzY3JpcHRvci50eXBlfWApO1xyXG4gICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbmA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc09ubHlJY29uKGRlc2NyaXB0b3I6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGVzY3JpcHRvci50eXBlID09PSAnSUNPTicgfHwgZGVzY3JpcHRvci50eXBlID09PSAnTUlOSV9GQUInIHx8IGRlc2NyaXB0b3IudHlwZSA9PT0gJ0ZBQidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrZWQoaW5zdGFuY2U6IFNtYXJ0QnV0dG9uKTogdm9pZCB7XHJcbiAgICBpZiAoaW5zdGFuY2UudWlBY3Rpb24pIHtcclxuICAgICAgaW5zdGFuY2UuY2FsbGJhY2soaW5zdGFuY2UudWlBY3Rpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW5zdGFuY2UuY2FsbGJhY2soaW5zdGFuY2Uua2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogSW5wdXRFdmVudCk6IFNtYXJ0SXRlbTxhbnk+W10ge1xyXG4gICAgbGV0IGZpbHRlclZhbHVlID0gKHZhbHVlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWU7XHJcbiAgICB0aGlzLnRvSGlnaGxpZ2h0ID0gZmlsdGVyVmFsdWU7XHJcblxyXG4gICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICBmaWx0ZXJWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLnRvSGlnaGxpZ2h0ID0gZmlsdGVyVmFsdWU7XHJcbiAgICB9XHJcbiAgICBmaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlTGlzdFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogU21hcnRJdGVtPGFueT5bXSA9IGZpbHRlclZhbHVlXHJcbiAgICAgICAgPyB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlTGlzdC5maWx0ZXIoKG9wdGlvbjogU21hcnRJdGVtPGFueT4pID0+XHJcbiAgICAgICAgICAgIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZUxpc3Q7XHJcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwICYmIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIHZhbHVlcyBhZnRlciB0aGUgZmlsdGVyIG9wZXJhdGlvbiBidXQgd2UgZm91bmQgbm9uZTpcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmVycm9yID0gdGhpcy53aWRnZXRJbnN0YW5jZS5maWx0ZXJFcnJvck1lc3NhZ2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gd2UgZWl0aGVyIGZvdW5kIHZhbHVlcywgb3IgdGhlcmUgd2VyZSBubyB2YWx1ZXMgdG8gYmVnaW4gd2l0aDpcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmVycm9yID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUZpbHRlcihkOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXRNYXRyaXhEaXNwbGF5VmFsdWUocXVlc3Rpb246IFZhbHVlLCBrZXk6IHN0cmluZykge1xyXG4gICAgKHRoaXMud2lkZ2V0SW5zdGFuY2UgYXMgU21hcnRNYXRyaXgpLnZhbHVlW2tleV0uZmluZCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZS5jb2RlID09IHF1ZXN0aW9uLmNvZGUpIHJldHVybiBxdWVzdGlvbi5kaXNwbGF5VmFsdWU7XHJcbiAgICAgIGVsc2UgcmV0dXJuIHF1ZXN0aW9uLmNvZGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVllYXJNb250aFBpY2tlZCh5ZWFyTW9udGhWYWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbCh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXkhXSwgeWVhck1vbnRoVmFsdWUsICcwMDowMCcpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZUl0ZW1zKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGZ1bmN0aW9uIGNvbnZlcnQob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIG9iai5yZXBsYWNlKC9cXC52WzAtOV0rJC8sICcnKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gICAgLy8gY2FsbGluZyB0aGlzLnRydW5jYXRlVXJpIGRpZG4ndCB3b3JrXHJcbiAgICAvLyBUT0RPOiB1c2Ugd2lkZ2V0LnNlbGVjdGlvbi5wYXJhbWV0ZXIgZm9yIGlnbm9yZVVyaVZlcnNpb24gLyBzdHJpY3RVcmlDb21wYXJpc29uO1xyXG5cclxuICAgIGxldCB2MSA9IGNvbnZlcnQobzEpO1xyXG4gICAgbGV0IHYyID0gY29udmVydChvMik7XHJcbiAgICByZXR1cm4gZGVlcEVxdWFsKHYxLCB2Mik7XHJcbiAgfVxyXG5cclxuICB0cnVuY2F0ZVVyaSh1cmk6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodXJpICYmIHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB1cmkucmVwbGFjZSgvXFwudlswLTldKyQvLCAnJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTWF0cml4Um93KHF1ZXN0aW9uOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcclxuICAgICh0aGlzLndpZGdldEluc3RhbmNlIGFzIFNtYXJ0TWF0cml4KS5idXR0b24/LmNhbGxiYWNrKHRoaXMud2lkZ2V0SW5zdGFuY2UsIHF1ZXN0aW9uKTtcclxuICB9XHJcblxyXG4gIGlzVG9vbGJhclByZXNlbnQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCkge1xyXG4gICAgICByZXR1cm4gdGhpcy53aWRnZXRJbnN0YW5jZS50b29sYmFySWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLndpZGdldEluc3RhbmNlLnRvb2xiYXJJZCAhPT0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gIDxkaXZcclxuICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnXCJcclxuICAgIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuaXNWaXNpYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogd2lkZ2V0SW5zdGFuY2UuaXNWaXNpYmxlXCJcclxuICA+XHJcbiAgICA8ZGl2ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVJcIiBbbmdDbGFzc109XCJnZXREaXJlY3Rpb24oKVwiPlxyXG4gICAgICA8c21hcnRmb3Jtd2lkZ2V0XHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRJbnN0YW5jZS52YWx1ZUxpc3RcIlxyXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFt3aWRnZXRJbnN0YW5jZV09XCJ3aWRnZXRcIlxyXG4gICAgICAgIGNsYXNzPVwiY29udGFpbmVyLWl0ZW1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldC5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgW29uQmx1cl09XCJvbkJsdXJcIlxyXG4gICAgICAgIFtvblZhbHVlQ2hhbmdlXT1cIm9uVmFsdWVDaGFuZ2VcIlxyXG4gICAgICAgIFtzb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VdPVwic29waGlzdGljYXRlZFZhbHVlQ2hhbmdlXCJcclxuICAgICAgICBjbGFzcz1cInt7IHdpZGdldC5rZXkgfX1cIlxyXG4gICAgICAgIFtsYWJlbENvbG9yXT1cImxhYmVsQ29sb3JcIlxyXG4gICAgICA+PC9zbWFydGZvcm13aWRnZXQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIChjYXBzTG9jayk9XCJjYXBzT24gPSAkZXZlbnRcIlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRFwiXHJcbiAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICBjbGFzcz1cImlucHV0IHRleHRGaWVsZCB3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwid2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlLnNlbGVjdGlvblwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidzdHJpbmcnXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ3aWRnZXRJbnN0YW5jZS52YWx1ZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwid2lkZ2V0SW5zdGFuY2UuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJ7eyB3aWRnZXRJbnN0YW5jZS5pc1Bhc3N3b3JkID8gKGhpZGVQYXNzd29yZCA/ICdwYXNzd29yZCcgOiAndGV4dCcpIDogJycgfX1cIlxyXG4gICAgICAgICAgW21hc2tdPVwid2lkZ2V0SW5zdGFuY2UubWFzayA/PyAnJ1wiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleWRvd24oKVwiXHJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyB3aWRnZXRJbnN0YW5jZS5tYXhMZW5ndGggfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNlbGVjdGlvblwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidzdHJpbmcnXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ3aWRnZXRJbnN0YW5jZS52YWx1ZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwid2lkZ2V0SW5zdGFuY2UuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJ7eyB3aWRnZXRJbnN0YW5jZS5pc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICcnIH19XCJcclxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwidGV4dEZpZWxkQXV0b1wiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleWRvd24oKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmlzUGFzc3dvcmRcIlxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPnt7IGhpZGVQYXNzd29yZCA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eScgfX08L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICN0ZXh0RmllbGRBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvbi5sYWJlbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbCB8IGhpZ2hsaWdodCA6IHRvSGlnaGxpZ2h0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1lcnJvclwiICpuZ0lmPVwiY2Fwc09uICYmIHdpZGdldEluc3RhbmNlLmlzUGFzc3dvcmRcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmNhcHNMb2NrV2FybmluZyB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8c3BhbiBtYXRQcmVmaXg+XHJcbiAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cImNhcHNPbiAmJiB3aWRnZXRJbnN0YW5jZS5pc1Bhc3N3b3JkXCJcclxuICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuY2Fwc0xvY2tXYXJuaW5nSWNvbiA/PyAna2V5Ym9hcmRfY2Fwc2xvY2snXCJcclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmljb24gJiYgd2lkZ2V0SW5zdGFuY2UuaWNvblBvc2l0aW9uID09PSAnUFJFJ1wiXHJcbiAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmljb25cIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuaWNvbkNvbG9yID8/ICdwcmltYXJ5J1wiXHJcbiAgICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UucHJlZml4IH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIG1hdFN1ZmZpeD5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLnN1ZmZpeCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaWNvbiAmJlxyXG4gICAgICAgICAgICAoIXdpZGdldEluc3RhbmNlLmljb25Qb3NpdGlvbiB8fCB3aWRnZXRJbnN0YW5jZS5pY29uUG9zaXRpb24gPT09ICdQT1NUJylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5pY29uXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5pY29uQ29sb3IgPz8gJ3ByaW1hcnknXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uQ29sb3IgPz8gJ3dhcm4nXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcblxyXG4gICAgICAgIDxzbWFydC11aS1hY3Rpb24tdG9vbGJhclxyXG4gICAgICAgICAgI3Rvb2xiYXJcclxuICAgICAgICAgICpuZ0lmPVwiaXNUb29sYmFyUHJlc2VudCgpXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLnRvb2xiYXJJZFwiXHJcbiAgICAgICAgPjwvc21hcnQtdWktYWN0aW9uLXRvb2xiYXI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b25cIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBjb2xvcj1cInt7IHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5jb2xvciB9fVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwid2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmNhbGxiYWNrKHdpZGdldEluc3RhbmNlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uaWNvblBvc2l0aW9uID09PVxyXG4gICAgICAgICAgICAgICAgc21hcnRGb3JtVGV4dEZpZWxkQnV0dG9uSWNvblBvc2l0aW9uKCkuUFJFICYmIHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmxhYmVsIH19XHJcbiAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uUG9zaXRpb24gPT09XHJcbiAgICAgICAgICAgICAgICBzbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb24oKS5QT1NUICYmIHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvc21hcnQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8bWF0LWhpbnRcclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4ICYmIHdpZGdldEluc3RhbmNlLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIGFsaWduPVwiZW5kXCJcclxuICAgICAgICAgID57eyB3aWRnZXRJbnN0YW5jZS5tYXhMZW5ndGggLSBmb3JtLmNvbnRyb2xzW3dpZGdldEluc3RhbmNlLmtleV0udmFsdWUubGVuZ3RoIH19PC9tYXQtaGludFxyXG4gICAgICAgID5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1oaW50XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICF3aWRnZXRJbnN0YW5jZT8uaGludCB8fCB3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+e3sgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dCB9fTwvbWF0LWhpbnRcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVJcIlxyXG4gICAgICBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCB0ZXh0RmllbGQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cIndpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJ3aWRnZXRJbnN0YW5jZS5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgW21pbl09XCJ3aWRnZXRJbnN0YW5jZS5taW5WYWx1ZXMgPz8gbnVsbFwiXHJcbiAgICAgICAgICBbbWF4XT1cIndpZGdldEluc3RhbmNlLm1heFZhbHVlcyA/PyBudWxsXCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBtYXRQcmVmaXg+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5wcmVmaXggfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gbWF0U3VmZml4PlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2Uuc3VmZml4IH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuaWNvblwiIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmljb25cIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgY29sb3I9XCJ7eyB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uY29sb3IgfX1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5jYWxsYmFjayh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25Qb3NpdGlvbiA9PT1cclxuICAgICAgICAgICAgICAgIHNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbigpLlBSRSAmJiB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uaWNvblxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uaWNvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24ubGFiZWwgfX1cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25Qb3NpdGlvbiA9PT1cclxuICAgICAgICAgICAgICAgIHNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbigpLlBPU1QgJiYgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQU1wiXHJcbiAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICBjbGFzcz1cImlucHV0IHdpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1sYWJlbFxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnXCJcclxuICAgICAgICAgICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1jaGlwLWxpc3QgI2NoaXBMaXN0IGFyaWEtbGFiZWw9XCJ7eyB3aWRnZXRJbnN0YW5jZS5sYWJlbCB9fVwiPlxyXG4gICAgICAgICAgPG1hdC1jaGlwXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlKHZhbHVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHZhbHVlIH19XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNjaGlwSW5wdXRcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB3aWRnZXRJbnN0YW5jZS5wbGFjZWhvbGRlciB9fVwiXHJcbiAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxyXG4gICAgICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJhZGRPbkJsdXJcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwid2lkZ2V0SW5zdGFuY2UuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiY2hpcEF1dG9cIlxyXG4gICAgICAgICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkKCRldmVudClcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgICAgICAgI2NoaXBBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudCwgd2lkZ2V0SW5zdGFuY2UpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1hcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiJ3N0cmluZydcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cIndpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJ3aWRnZXRJbnN0YW5jZS5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cj8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgIG1heGxlbmd0aD1cInt7IHdpZGdldEluc3RhbmNlLm1heExlbmd0aCB9fVwiXHJcbiAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxtYXQtaGludFxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXggJiYgd2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgYWxpZ249XCJlbmRcIlxyXG4gICAgICAgICAgPnt7IHdpZGdldEluc3RhbmNlLm1heExlbmd0aCAtIGZvcm0uY29udHJvbHNbd2lkZ2V0SW5zdGFuY2Uua2V5XS52YWx1ZS5sZW5ndGggfX08L21hdC1oaW50XHJcbiAgICAgICAgPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWhpbnRcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgIXdpZGdldEluc3RhbmNlLmhpbnQgfHwgd2lkZ2V0SW5zdGFuY2UuaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+e3sgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dCB9fTwvbWF0LWhpbnRcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXCIgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCBjaGVja2JveCB3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJyYWRpb0xhYmVsXCIgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZWNrYm94LXNlY3Rpb25cIiBbbmdDbGFzc109XCJnZXREaXJlY3Rpb24oKVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWl0ZW0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoZWNrYm94IG9mIHdpZGdldEluc3RhbmNlLnZhbHVlTGlzdDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAqbmdJZj1cImNoZWNrYm94LmltYWdlVXJsXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHdpZGdldEluc3RhbmNlLmtleSB9fVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC1pdGVtLWltYWdlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cImNoZWNrYm94LmltYWdlVXJsXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWNhdGJsZU9iamVjdFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjaGVja2JveC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KGNoZWNrYm94KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBjaGVja2JveC5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWVycm9yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UuZXJyb3IgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25Db2xvciA/PyAnd2FybidcIlxyXG4gICAgICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzJcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImlucHV0IGNoZWNrYm94IHdpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInJhZGlvTGFiZWxcIiAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlY2tib3gtc2VjdGlvblwiIFtuZ0NsYXNzXT1cImdldERpcmVjdGlvbigpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3gtaXRlbS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hlY2tib3ggb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tib3guaW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWl0ZW0taW1hZ2VcIlxyXG4gICAgICAgICAgICAgIFtzcmNdPVwiY2hlY2tib3guaW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY2F0YmxlT2JqZWN0XCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyB3aWRnZXRJbnN0YW5jZS5rZXkgKyAnLicgKyBjaGVja2JveC5rZXkgfX1cIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGVja2JveC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KGNoZWNrYm94KVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIndpZGdldEluc3RhbmNlLmlzRGlzYWJsZWQhXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGNoZWNrYm94LmxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZXJyb3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5lcnJvciAmJiB3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OXCIgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCByYWRpby1zZWN0aW9uIHdpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cInt7IHdpZGdldEluc3RhbmNlLmxhYmVsIH19XCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJyYWRpb0xhYmVsXCIgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdldERpcmVjdGlvbigpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8taXRlbS1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgcmFkaW8gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAqbmdJZj1cInJhZGlvLmltYWdlVXJsXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHdpZGdldEluc3RhbmNlLmtleSB9fVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyYWRpby1pdGVtLWltYWdlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cInJhZGlvLmltYWdlVXJsXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjYXRibGVPYmplY3RcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwie3sgcmFkaW8udmFsdWUgfX1cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldERpcmVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2U/Lm5leHQocmFkaW8udmFsdWUpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyByYWRpby5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1lcnJvclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uQ29sb3IgPz8gJ3dhcm4nXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSXCJcclxuICAgICAgY2xhc3M9XCJkYXRlUGlja2VyIHdpZGdldENvbnRhaW5lclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCB3aWRnZXRDb250ZW50IGRhdGUge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1sYWJlbFxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnXCJcclxuICAgICAgICAgICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlciAoY2xvc2VkKT1cIm9uQmx1cj8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cIndpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgIFttaW5dPVwid2lkZ2V0SW5zdGFuY2UubWluRGF0ZSA/PyBudWxsXCJcclxuICAgICAgICAgIFttYXhdPVwid2lkZ2V0SW5zdGFuY2UubWF4RGF0ZSA/PyBudWxsXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cj8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwid2lkZ2V0SW5zdGFuY2UuZmlsdGVyID8/IGRhdGVGaWx0ZXJcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmRhdGVGb3JtYXRIaW50IH19XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUlwiXHJcbiAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsXCI+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCB3aWRnZXRDb250ZW50XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkZ2V0SW5zdGFuY2UubWluV2lkdGggKyAncHgnIH1cIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwid2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiJGFueShwaWNrZXIpXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgPG5neC1tYXQtZGF0ZXRpbWUtcGlja2VyXHJcbiAgICAgICAgICAjcGlja2VyXHJcbiAgICAgICAgICBbc2hvd1NwaW5uZXJzXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzdGVwSG91cl09XCIxXCJcclxuICAgICAgICAgIFtzdGVwTWludXRlXT1cIjFcIlxyXG4gICAgICAgICAgW3N0ZXBTZWNvbmRdPVwiMTBcIlxyXG4gICAgICAgICAgW3RvdWNoVWldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICBbZW5hYmxlTWVyaWRpYW5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVNaW51dGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2hpZGVUaW1lXT1cImZhbHNlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ3aWRnZXRJbnN0YW5jZS52YWx1ZVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIFtuZ3hNYXREYXRldGltZVBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyRmlsdGVyXT1cIndpZGdldEluc3RhbmNlLmZpbHRlciA/PyBkYXRlRmlsdGVyXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cj8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmRhdGVGb3JtYXRIaW50IH19XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSXCJcclxuICAgICAgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlVGltZVBpY2tlckNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgICAgY2xhc3M9XCJpbnB1dCB3aWRnZXRDb250ZW50IGRhdGUge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyIChjbG9zZWQpPVwib25CbHVyPy5uZXh0KHdpZGdldEluc3RhbmNlKVwiPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2RhdGVJbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwid2lkZ2V0SW5zdGFuY2UudmFsdWVcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwib25EYXRlUGlja2VyQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJ3aWRnZXRJbnN0YW5jZS5maWx0ZXIgPz8gZGF0ZUZpbHRlclwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UuZGF0ZUZvcm1hdEhpbnQgfX1cclxuICAgICAgICAgIDwvbWF0LWhpbnQ+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICAgICpuZ0lmPVwiaGFzQ3JlYXRlZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImlucHV0IHdpZGdldENvbnRlbnQgdGltZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiB3aWRnZXRJbnN0YW5jZS5taW5XaWR0aCArICdweCcgfVwiXHJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICN0aW1lSW5wdXRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXkgKyAnLXRpbWUnXCJcclxuICAgICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICAgIFt0eXBlXT1cIid0aW1lJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvblRpbWVQaWNrZXJCbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KCRldmVudC52YWx1ZSlcIlxyXG4gICAgICAgICAgKGNsb3NlZCk9XCJvbkJsdXI/Lm5leHQod2lkZ2V0SW5zdGFuY2UpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkIVwiXHJcbiAgICAgICAgICBbY29tcGFyZVdpdGhdPVwiXHJcbiAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLmNvbXBhcmVXaXRoID09IG51bGwgPyBjb21wYXJlSXRlbXMgOiB3aWRnZXRJbnN0YW5jZS5jb21wYXJlV2l0aFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgPyB3aWRnZXRJbnN0YW5jZS5wbGFjZWhvbGRlciA6ICcnIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXBcclxuICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi50eXBlID09PSBnZXRUeXBlKCkuSVRFTV9HUk9VUFwiXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW5uZXJPcHRpb24gb2Ygb3B0aW9uLnZhbHVlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaW5uZXJPcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlubmVyT3B0aW9uLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5uZXJPcHRpb24uaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cImlubmVyT3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaW5uZXJPcHRpb24uaWNvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgICAgICB7eyBpbm5lck9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udHlwZSA9PT0gZ2V0VHlwZSgpLklURU1cIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJvcHRpb24uaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwib3B0aW9uLmljb25Db2xvclwiXHJcbiAgICAgICAgICAgICAgPjwvc21hcnQtaWNvblxyXG4gICAgICAgICAgICAgID57eyBvcHRpb24ubGFiZWwgfX08L21hdC1vcHRpb25cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5lcnJvciAmJiB3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25Db2xvciA/PyAnd2FybidcIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1oaW50XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICF3aWRnZXRJbnN0YW5jZT8uaGludCB8fCB3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+e3sgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dCB9fTwvbWF0LWhpbnRcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFXCJcclxuICAgICAgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgbXVsdGlwbGVcclxuICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgIChjbG9zZWQpPVwib25CbHVyPy5uZXh0KHdpZGdldEluc3RhbmNlKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZCFcIlxyXG4gICAgICAgICAgW2NvbXBhcmVXaXRoXT1cIlxyXG4gICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5jb21wYXJlV2l0aCA9PSBudWxsID8gY29tcGFyZUl0ZW1zIDogd2lkZ2V0SW5zdGFuY2UuY29tcGFyZVdpdGhcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyID8gd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgOiAnJyB9fVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlTGlzdFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udHlwZSA9PT0gZ2V0VHlwZSgpLklURU1fR1JPVVBcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlubmVyT3B0aW9uIG9mIG9wdGlvbi52YWx1ZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlubmVyT3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbm5lck9wdGlvbi5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlubmVyT3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJpbm5lck9wdGlvbi5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImlubmVyT3B0aW9uLmljb25Db2xvclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgICA+e3sgaW5uZXJPcHRpb24ubGFiZWwgfX08L21hdC1vcHRpb25cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLnR5cGUgPT09IGdldFR5cGUoKS5JVEVNXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIm9wdGlvbi5pY29uQ29sb3JcIlxyXG4gICAgICAgICAgICAgID48L3NtYXJ0LWljb25cclxuICAgICAgICAgICAgICA+e3sgb3B0aW9uLmxhYmVsIH19PC9tYXQtb3B0aW9uXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UuZXJyb3IgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uQ29sb3IgPz8gJ3dhcm4nXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtaGludFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAhd2lkZ2V0SW5zdGFuY2U/LmhpbnQgfHwgd2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5JTlBVVFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgPnt7IHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHQgfX08L21hdC1oaW50XHJcbiAgICAgID5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMXCJcclxuICAgICAgY2xhc3M9XCJsYWJlbCB3aWRnZXRDb250YWluZXJcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiB3aWRnZXRJbnN0YW5jZS5taW5XaWR0aCArICdweCcgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC10aXRsZSBsYWJlbENvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxwPnt7IHdpZGdldEluc3RhbmNlLndpZGdldERlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLlRJTUVcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB0aW1lIHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwid2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbdHlwZV09XCIndGltZSdcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cImdldFRpbWUoKVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQod2lkZ2V0SW5zdGFuY2UpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5lcnJvciAmJiB3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25Db2xvciA/PyAnd2FybidcIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRVwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGVudCAge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICAgIHZhbHVlPVwie3sgd2lkZ2V0SW5zdGFuY2UudmFsdWUgfX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwid2lkZ2V0SW5zdGFuY2UudG9nZ2xlTGFiZWxQb3NpdGlvbiA/PyAnYmVmb3JlJ1wiXHJcbiAgICAgICAgICA+e3sgIXdpZGdldEluc3RhbmNlLnNob3dMYWJlbCA/IHdpZGdldEluc3RhbmNlLmxhYmVsIDogJycgfX08L21hdC1zbGlkZS10b2dnbGVcclxuICAgICAgICA+PHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1JcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8aDRcclxuICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IGxhYmVsQ29udGFpbmVyIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzbWFydEluZGljYXRvciB3aWRnZXRDb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvckl0ZW1zIHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCIgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGluZGljYXRvckl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpbmRpY2F0b3JJdGVtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SW5kaWNhdG9ySXRlbUNsYXNzKGkpXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCBbbmdDbGFzc109XCJnZXRJbmRpY2F0b3JTdGF0dXNMYWJlbENvbG9yKClcIj5cclxuICAgICAgICAgIHt7IGdldEluZGljYXRvclN0YXR1c0xhYmVsKCkgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUlwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxoNFxyXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICBjbGFzcz1cImxhYmVsQ29udGFpbmVyIHt7IGxhYmVsQ29sb3IgfX0ge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPHNtYXJ0ZmlsZXVwbG9hZGVyXHJcbiAgICAgICAgY2xhc3M9XCJ3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIFt1cGxvYWRDYWxsYmFja109XCJ1cGxvYWQuYmluZCh0aGlzKVwiXHJcbiAgICAgICAgW2ZpbGVGb3JtYXRzXT1cIndpZGdldEluc3RhbmNlLmZpbGVGb3JtYXRzXCJcclxuICAgICAgICBbbWF4U2l6ZU1iXT1cIndpZGdldEluc3RhbmNlLm1heFNpemVNYlwiXHJcbiAgICAgICAgW2kxOG5dPVwid2lkZ2V0SW5zdGFuY2UuaTE4blwiXHJcbiAgICAgID48L3NtYXJ0ZmlsZXVwbG9hZGVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0VcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8aDRcclxuICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgY2xhc3M9XCJsYWJlbENvbnRhaW5lciB7eyBsYWJlbENvbG9yIH19IHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBjbGFzcz1cIndpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuaW1hZ2VDc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIHRpdGxlPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIFtzcmNdPVwid2lkZ2V0SW5zdGFuY2UudmFsdWVcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHXCIgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGg0XHJcbiAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgIGNsYXNzPVwibGFiZWxDb250YWluZXIge3sgbGFiZWxDb2xvciB9fSB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICA8L2g0PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cImdldFdpZGdldFN2Zyh3aWRnZXRJbnN0YW5jZS52YWx1ZSlcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVJcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8aHJcclxuICAgICAgICBjbGFzcz1cInNtYXJ0RGl2aWRlciB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTlwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxoNFxyXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICBjbGFzcz1cImxhYmVsQ29udGFpbmVyIHt7IGxhYmVsQ29sb3IgfX0ge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEJ1dHRvblR5cGUod2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yKVwiXHJcbiAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5jb2xvclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKHdpZGdldEluc3RhbmNlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzT25seUljb24od2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yKTsgdGhlbiBpY29uT25seTsgZWxzZSB0ZXh0XCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbk9ubHk+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25cIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvciEuaWNvbiFcIlxyXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJcclxuICAgICAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvcj8uaWNvbkNvbG9yID8/XHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/LmNvbG9yXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RleHQ+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvcj8uaWNvbiAmJlxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5pY29uUG9zaXRpb24gPT09ICdQUkUnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3IhLmljb24hXCJcclxuICAgICAgICAgICAgICBbY29sb3JdPVwiXHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25Db2xvciA/P1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5jb2xvclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvcj8udGl0bGUgfX1cclxuICAgICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5pY29uICYmXHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25Qb3NpdGlvbiA9PT0gJ1BPU1QnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3IhLmljb24hXCJcclxuICAgICAgICAgICAgICBbY29sb3JdPVwiXHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25Db2xvciA/P1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5jb2xvclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGg0XHJcbiAgICAgICAgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiXHJcbiAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJiB3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPGRpdiBjbGFzcz1cIndpZGdldENvbnRlbnRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbUNvbXBvbmVudD48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVFwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiPlxyXG4gICAgICAgIDxoNCAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fVwiPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0Q29udGVudFwiPlxyXG4gICAgICAgIDxxdWlsbC1lZGl0b3JcclxuICAgICAgICAgICNxdWlsbEVkaXRvclxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbbW9kdWxlc109XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkID8gZW1wdHlRdWlsbFRvb2xiYXIgOiB3aWRnZXRJbnN0YW5jZS5xdWlsbE1vZHVsZXNcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIndpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFtyZWFkT25seV09XCJ3aWRnZXRJbnN0YW5jZS5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwid2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoXCJcclxuICAgICAgICAgIChvbkNvbnRlbnRDaGFuZ2VkKT1cIm9uUmljaFRleHRFZGl0b3JDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9xdWlsbC1lZGl0b3I+XHJcbiAgICAgICAgPG1hdC1oaW50XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAhd2lkZ2V0SW5zdGFuY2U/LmhpbnQgfHxcclxuICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5JTlBVVFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgID57eyB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0IH19PC9tYXQtaGludFxyXG4gICAgICAgID5cclxuICAgICAgICA8bWF0LWhpbnRcclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4ICYmIHdpZGdldEluc3RhbmNlLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIGFsaWduPVwiZW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwicmljaC10ZXh0LWVkaXRvci1sZWV3YXktY291bnRlclwiXHJcbiAgICAgICAgICA+e3sgZ2V0UmljaFRleHRFZGl0b3JMZW5ndGhMZWV3YXkoKSB9fTwvbWF0LWhpbnRcclxuICAgICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuU09SVEFCTEVcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIj5cclxuICAgICAgICA8aDQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIiBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX1cIj5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndpZGdldENvbnRlbnRcIj5cclxuICAgICAgICA8bGliLXNvcnRhYmxlLXdpZGdldFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3dpZGdldEluc3RhbmNlXT1cIndpZGdldEluc3RhbmNlXCJcclxuICAgICAgICA+PC9saWItc29ydGFibGUtd2lkZ2V0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWFwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIj5cclxuICAgICAgPGg0ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCIgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19XCI+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwibWF0cml4VGFibGUgd2lkZ2V0Q29udGVudFwiPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoIGNsYXNzPVwib3B0aW9uTGFiZWxcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlLmNvbHVtbnNcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VmFsdWUgfX1cclxuICAgICAgICA8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlLnJvd3M7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8dGggY2xhc3M9XCJxdWVzdGlvbkxhYmVsXCI+XHJcbiAgICAgICAgICA8bGFiZWw+e3sgcXVlc3Rpb24uZGlzcGxheVZhbHVlIH19PC9sYWJlbD5cclxuICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RUZFwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWUuY29sdW1uczsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgPG1hdC1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXkgKyAnLicgKyBxdWVzdGlvbi5jb2RlXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3EnICsgaVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPiA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5pc011bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleSArICcuZGF0YS4nICsgcXVlc3Rpb24uY29kZSArICcuJyArIG9wdGlvbi5jb2RlXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwid2lkZ2V0SW5zdGFuY2UudmFsdWVbJ2RhdGEnXVtxdWVzdGlvbi5jb2RlXVtvcHRpb24uY29kZV1cIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDxiciAvPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5idXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZU1hdHJpeFJvdyhxdWVzdGlvbilcIlxyXG4gICAgICAgICAgPjxzbWFydC1pY29uIGljb249XCJjbG9zZVwiPjwvc21hcnQtaWNvblxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCI+XHJcbiAgICAgIDxoNFxyXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0ge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx5b3V0dWJlLXBsYXllclxyXG4gICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgdmlkZW9JZD1cInt7IHdpZGdldEluc3RhbmNlLnZpZGVvSWQgfX1cIlxyXG4gICAgICBbd2lkdGhdPVwid2lkZ2V0SW5zdGFuY2Uud2lkdGhcIlxyXG4gICAgICBbaGVpZ2h0XT1cIndpZGdldEluc3RhbmNlLmhlaWdodFwiXHJcbiAgICAgIFtzdGFydFNlY29uZHNdPVwid2lkZ2V0SW5zdGFuY2Uuc3RhcnRTZWNvbmRzXCJcclxuICAgICAgW2VuZFNlY29uZHNdPVwid2lkZ2V0SW5zdGFuY2UuZW5kU2Vjb25kc1wiXHJcbiAgICA+PC95b3V0dWJlLXBsYXllcj5cclxuICAgIDxtYXQtaGludFxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgICF3aWRnZXRJbnN0YW5jZT8uaGludCB8fCB3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgIFwiXHJcbiAgICAgID57eyB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0IH19PC9tYXQtaGludFxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUlwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICA8aDQgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsXCI+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bGliLXNtYXJ0LW1vbnRoLXBpY2tlclxyXG4gICAgICBbd2lkZ2V0SW5zdGFuY2VdPVwid2lkZ2V0SW5zdGFuY2VcIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlWWVhck1vbnRoUGlja2VkKCRldmVudClcIlxyXG4gICAgPjwvbGliLXNtYXJ0LW1vbnRoLXBpY2tlcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
733
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBR1QsS0FBSyxFQUdMLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBYyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUYsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsMkJBQTJCLEdBQzVCLE1BQU0sd0JBQXdCLENBQUM7QUFHaEMsT0FBTyxFQUNMLG9DQUFvQyxHQUlyQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0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RSxnQkFBZ0IsRUFBRTtnQkFPOUIsS0FBSztzQkFBOUIsU0FBUzt1QkFBQyxhQUFhO2dCQVNGLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFpSEksY0FBYztzQkFBckMsU0FBUzt1QkFBQyxXQUFXO2dCQUNFLGNBQWM7c0JBQXJDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICdmYXN0LWVxdWFscyc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQ29udGVudENoYW5nZSwgUXVpbGxFZGl0b3JDb21wb25lbnQsIFF1aWxsTW9kdWxlcyB9IGZyb20gJ25neC1xdWlsbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24sXHJcbiAgU21hcnRGb3JtV2lkZ2V0VHlwZSxcclxuICBTbWFydFdpZGdldEhpbnRQb3NpdGlvbkVudW0sXHJcbn0gZnJvbSAnLi4vLi4vYXBpL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zbWFydGZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0QnV0dG9uLCBTbWFydEZvcm1XaWRnZXQsIFNtYXJ0SXRlbSwgU21hcnRNYXRyaXggfSBmcm9tICcuLi8uLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRGb3JtVGV4dEZpZWxkQnV0dG9uSWNvblBvc2l0aW9uLFxyXG4gIFNtYXJ0VmFsaWRhdG9yLFxyXG4gIFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSxcclxuICBWYWx1ZSxcclxufSBmcm9tICcuLi8uLi9zbWFydGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uLy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNtYXJ0V2lkZ2V0U2V0dGluZ3Mge1xyXG4gIHB1YmxpYyBzdGF0aWMgdXNlVXRjID0gZmFsc2U7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnRmb3Jtd2lkZ2V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydGZvcm13aWRnZXQuY29tcG9uZW50LmNzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydGZvcm13aWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBoaWRlUGFzc3dvcmQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBmb3JtITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHdpZGdldEluc3RhbmNlITogU21hcnRGb3JtV2lkZ2V0PGFueT47XHJcbiAgQElucHV0KCkgb25CbHVyPzogU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIG9uVmFsdWVDaGFuZ2U/OiBTdWJqZWN0PGFueT47XHJcbiAgQElucHV0KCkgbGFiZWxDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBzb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UhOiBTdWJqZWN0PFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZT47XHJcblxyXG4gIHNtYXJ0Rm9ybVdpZGdldFR5cGUgPSBTbWFydEZvcm1XaWRnZXRUeXBlO1xyXG5cclxuICBjYXBzT246IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2hpcElucHV0JykgY2hpcElucHV0Q2hpbGQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBmaWx0ZXJlZFZhbHVlTGlzdD86IE9ic2VydmFibGU8c3RyaW5nW10gfCB1bmRlZmluZWQ+O1xyXG5cclxuICBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVycm9yS2V5Pzogc3RyaW5nO1xyXG5cclxuICBpbmRpY2F0b3JJdGVtcz86IGFueVtdO1xyXG5cclxuICAvLyBjdXN0b21Db21wb25lbnRcclxuICBAVmlld0NoaWxkKCdjdXN0b21Db21wb25lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBjdXN0b21Db21wb25lbnRWY1JlZj86IFZpZXdDb250YWluZXJSZWY7XHJcbiAgY3VzdG9tQ29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XHJcblxyXG4gIGZpbHRlcmVkT3B0aW9ucz86IE9ic2VydmFibGU8U21hcnRJdGVtPGFueT5bXT47XHJcbiAgdG9IaWdobGlnaHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCdxdWlsbEVkaXRvcicpIHF1aWxsPzogUXVpbGxFZGl0b3JDb21wb25lbnQ7XHJcblxyXG4gIGlzRW50ZXJQcmVzc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzRGF0ZVBpY2tlclJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uID0gU21hcnRXaWRnZXRIaW50UG9zaXRpb25FbnVtO1xyXG5cclxuICAvLyB0b29sYmFyXHJcbiAgQFZpZXdDaGlsZCgndG9vbGJhcicpIHRvb2xiYXI/OiBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQ7XHJcblxyXG4gIGVtcHR5UXVpbGxUb29sYmFyOiBRdWlsbE1vZHVsZXMgPSB7XHJcbiAgICB0b29sYmFyOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogU21hcnRGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZUxpc3RcclxuICAgICkge1xyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlTGlzdCA9IHRoaXMuc2VydmljZS5maWx0ZXJXaWRnZXRzQnlWaXNpYmlsaXR5KFxyXG4gICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5nZXRFcnJvck1lc3NhZ2UodGhpcy53aWRnZXRJbnN0YW5jZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMub25CbHVyPy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRoaXMud2lkZ2V0SW5zdGFuY2UpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3JcclxuICAgICkge1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3I/LmluZGljYXRvckxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaW5kaWNhdG9ySXRlbXMgPSBuZXcgQXJyYXk8YW55Pih0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvci5pbmRpY2F0b3JMZW5ndGgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdGVQcm9wZXJ0eV0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUikge1xyXG4gICAgICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yVmFsdWUgPVxyXG4gICAgICAgICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5jaGFuZ2VJbmRpY2F0b3JTdGF0dXModmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5zZWxlY3Rpb25cclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub25WYWx1ZUNoYW5nZSEucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoJycpLFxyXG4gICAgICAgIG1hcCgodmFsdWUpID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSB8fCAnJykpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSKSB7XHJcbiAgICAgIGxldCB2aWRlb0lkID0gdGhpcy5wYXJzZVlvdXR1YmVVcmwodGhpcy53aWRnZXRJbnN0YW5jZS5saW5rISk7XHJcbiAgICAgIGlmICh2aWRlb0lkKSB0aGlzLndpZGdldEluc3RhbmNlLnZpZGVvSWQgPSB2aWRlb0lkO1xyXG4gICAgICBjb25zdCB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHJcbiAgICAgIHRhZy5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSc7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFnKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZm9ybUNvbnRyb2xzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZmlsdGVyKFxyXG4gICAgICAoa2V5OiBzdHJpbmcpID0+XHJcbiAgICAgICAga2V5ID09PSB0aGlzLndpZGdldEluc3RhbmNlLmtleSB8fCBrZXkuc3RhcnRzV2l0aChgJHt0aGlzLndpZGdldEluc3RhbmNlLmtleX0uYClcclxuICAgICk7XHJcblxyXG4gICAgZm9ybUNvbnRyb2xzLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZTogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlID0ge1xyXG4gICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICBraW5kOlxyXG4gICAgICAgICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcclxuICAgICAgICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTlxyXG4gICAgICAgICAgICAgICAgPyAnc2VsZWN0aW9uJ1xyXG4gICAgICAgICAgICAgICAgOiAnYmFzaWMnLFxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZS5uZXh0KHZhbHVlQ2hhbmdlKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VZb3V0dWJlVXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICB1cmwucmVwbGFjZSgnL3Nob3J0cy8nLCAnL3dhdGNoP3Y9Jyk7XHJcblxyXG4gICAgdmFyIHJlZ0V4cCA9IC9eLiooKHlvdXR1LmJlXFwvKXwodlxcLyl8KFxcL3VcXC9cXHdcXC8pfChlbWJlZFxcLyl8KHdhdGNoXFw/KSlcXD8/dj89PyhbXiMmP10qKS4qLztcclxuICAgIHZhciBtYXRjaCA9IHVybC5tYXRjaChyZWdFeHApO1xyXG5cclxuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaFs3XS5sZW5ndGggPT0gMTEgPyBtYXRjaFs3XSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgX2hhc0p1c3RDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBoYXNKdXN0Q2hhbmdlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNKdXN0Q2hhbmdlZDtcclxuICB9XHJcbiAgc2V0IGhhc0p1c3RDaGFuZ2VkKGhhc0p1c3RDaGFuZ2VkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9oYXNKdXN0Q2hhbmdlZCA9IGhhc0p1c3RDaGFuZ2VkO1xyXG4gICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMjUwKSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2hhc0p1c3RDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhc0NyZWF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JykgZGF0ZUlucHV0Q2hpbGQ/OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RpbWVJbnB1dCcpIHRpbWVJbnB1dENoaWxkPzogRWxlbWVudFJlZjtcclxuXHJcbiAgb25EYXRlUGlja2VyQmx1cihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLm9uQmx1cj8ubmV4dCh0aGlzLndpZGdldEluc3RhbmNlKTtcclxuICAgIHRoaXMuaGFuZGxlRGF0ZUNoYW5nZWQodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5IV0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25UaW1lUGlja2VyQmx1cihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLm9uQmx1cj8ubmV4dCh0aGlzLndpZGdldEluc3RhbmNlKTtcclxuICAgIHRoaXMuaGFuZGxlVGltZUNoYW5nZWQodGhpcy5mb3JtLmNvbnRyb2xzW2Ake3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5fS10aW1lYF0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQpIHtcclxuICAgICAgdGhpcy5jdXN0b21Db21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgdGhpcy5jdXN0b21Db21wb25lbnRWY1JlZiEsXHJcbiAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5jb21wb25lbnQsXHJcbiAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5pbnB1dFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVIgfHxcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNEYXRlUGlja2VyUmVxdWlyZWQgPSAhIXRoaXMud2lkZ2V0SW5zdGFuY2UudmFsaWRhdG9ycz8uc29tZShcclxuICAgICAgICAoc21hcnRWYWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiBzbWFydFZhbGlkYXRvci52YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGxldCB0aW1lO1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSkge1xyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSk7XHJcbiAgICAgICAgbGV0IGhvdXIgPSBTbWFydFdpZGdldFNldHRpbmdzLnVzZVV0YyA/IGRhdGUuZ2V0VVRDSG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgICAgICBsZXQgbWluID0gU21hcnRXaWRnZXRTZXR0aW5ncy51c2VVdGMgPyBkYXRlLmdldFVUQ01pbnV0ZXMoKSA6IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgICAgIHRpbWUgPSBTdHJpbmcoaG91cikucGFkU3RhcnQoMiwgJzAnKSArICc6JyArIFN0cmluZyhtaW4pLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSA9IG1vbWVudChkYXRlKTtcclxuICAgICAgICBjb25zdCBkYXRlRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldO1xyXG4gICAgICAgIGlmIChkYXRlRm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgIGRhdGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGltZSA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS52YWxpZGF0b3JzKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycyA9IHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsaWRhdG9ycz8ubWFwKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsaWRhdG9yLnZhbGlkYXRvcjtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdGltZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHRpbWUsIHZhbGlkYXRvcnMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZCkge1xyXG4gICAgICAgIHRpbWVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGAke3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5fS10aW1lYCwgdGltZUZvcm1Db250cm9sKTtcclxuXHJcbiAgICAgIHRoaXMuaGFzQ3JlYXRlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXkhXS52YWx1ZUNoYW5nZXNcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKF9tb21lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXRlQ2hhbmdlZChfbW9tZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2Ake3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5fS10aW1lYF0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh0aW1lVmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVUaW1lQ2hhbmdlZCh0aW1lVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGF0ZUNoYW5nZWQoX21vbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0RhdGVGb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5kYXRlSW5wdXRDaGlsZD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGlzVGltZUZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnRpbWVJbnB1dENoaWxkPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgZGF0ZUZvcm1Db250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5IV07XHJcbiAgICBjb25zdCB0aW1lRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbYCR7dGhpcy53aWRnZXRJbnN0YW5jZS5rZXl9LXRpbWVgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmlzRGF0ZVBpY2tlclJlcXVpcmVkICYmXHJcbiAgICAgIHRpbWVGb3JtQ29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgJiZcclxuICAgICAgIV9tb21lbnRcclxuICAgICkge1xyXG4gICAgICB0aW1lRm9ybUNvbnRyb2wucmVtb3ZlVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgdGltZUZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICF0aGlzLmlzRGF0ZVBpY2tlclJlcXVpcmVkICYmXHJcbiAgICAgICF0aW1lRm9ybUNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpICYmXHJcbiAgICAgIF9tb21lbnRcclxuICAgICkge1xyXG4gICAgICB0aW1lRm9ybUNvbnRyb2wuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgIGlmICh0aW1lRm9ybUNvbnRyb2wudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgdGltZUZvcm1Db250cm9sLnNldFZhbHVlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGltZUZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFfbW9tZW50IHx8IGlzRGF0ZUZvY3VzZWQgfHwgaXNUaW1lRm9jdXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzSnVzdENoYW5nZWQpIHtcclxuICAgICAgdGhpcy5oYXNKdXN0Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGltZVZhbHVlID0gdGltZUZvcm1Db250cm9sLnZhbHVlIHx8ICcwMDowMCc7XHJcbiAgICB0aGlzLmhhc0p1c3RDaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVIpIHtcclxuICAgICAgdGhpcy5zZXREYXRlRm9ybUNvbnRyb2woZGF0ZUZvcm1Db250cm9sLCBfbW9tZW50LCB0aW1lVmFsdWUpO1xyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlID0gZGF0ZUZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlVGltZUNoYW5nZWQodGltZVZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlzRm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudGltZUlucHV0Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBkYXRlRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXkhXTtcclxuICAgIGNvbnN0IHRpbWVGb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1tgJHt0aGlzLndpZGdldEluc3RhbmNlLmtleX0tdGltZWBdO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuaXNEYXRlUGlja2VyUmVxdWlyZWQgJiZcclxuICAgICAgZGF0ZUZvcm1Db250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSAmJlxyXG4gICAgICAhdGltZVZhbHVlXHJcbiAgICApIHtcclxuICAgICAgZGF0ZUZvcm1Db250cm9sLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIGRhdGVGb3JtQ29udHJvbC5zZXRWYWx1ZShkYXRlRm9ybUNvbnRyb2wudmFsdWUgPz8gJycpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgIXRoaXMuaXNEYXRlUGlja2VyUmVxdWlyZWQgJiZcclxuICAgICAgIWRhdGVGb3JtQ29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgJiZcclxuICAgICAgdGltZVZhbHVlXHJcbiAgICApIHtcclxuICAgICAgZGF0ZUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzRm9jdXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzSnVzdENoYW5nZWQpIHtcclxuICAgICAgdGhpcy5oYXNKdXN0Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aW1lVmFsdWUpIHtcclxuICAgICAgaWYgKHRpbWVGb3JtQ29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpIHtcclxuICAgICAgICB0aW1lRm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IF9tb21lbnQgPSBkYXRlRm9ybUNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCFfbW9tZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhc0p1c3RDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUikge1xyXG4gICAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbChkYXRlRm9ybUNvbnRyb2wsIF9tb21lbnQsIHRpbWVWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGVGb3JtQ29udHJvbChkYXRlRm9ybUNvbnRyb2w6IGFueSwgX21vbWVudDogYW55LCB0aW1lVmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKF9tb21lbnQpIHtcclxuICAgICAgbGV0IGhvdXIgPSB0aW1lVmFsdWUuc3Vic3RyaW5nKDAsIDIpO1xyXG4gICAgICBsZXQgbWluID0gdGltZVZhbHVlLnN1YnN0cmluZygzLCA1KTtcclxuICAgICAgX21vbWVudC5ob3VyKGhvdXIpO1xyXG4gICAgICBfbW9tZW50Lm1pbnV0ZShtaW4pO1xyXG4gICAgICBkYXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUoX21vbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaW1lKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzFdLnN1YnN0cmluZygwLCA1KTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG9uS2V5ZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNFbnRlclByZXNzZWQgPSB0cnVlO1xyXG5cclxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMCkpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzRW50ZXJQcmVzc2VkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNFbnRlclByZXNzZWQpIHtcclxuICAgICAgdGhpcy5oaWRlUGFzc3dvcmQgPSAhdGhpcy5oaWRlUGFzc3dvcmQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZ0NsYXNzKCk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXModGhpcy53aWRnZXRJbnN0YW5jZS5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIGlmICghdGhpcy53aWRnZXRJbnN0YW5jZS5zdHlsZSkge1xyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnN0eWxlID0ge1xyXG4gICAgICAgIGNsYXNzZXNUb0FkZDogW10sXHJcbiAgICAgICAgY2xhc3Nlc1RvUmVtb3ZlOiBbXSxcclxuICAgICAgICBzdHlsZToge30sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEoJ3dpZHRoJyBpbiB0aGlzLndpZGdldEluc3RhbmNlLnN0eWxlLnN0eWxlKSAmJiAnbWluV2lkdGgnIGluIHRoaXMud2lkZ2V0SW5zdGFuY2UpIHtcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS5zdHlsZS5zdHlsZVsnd2lkdGgnXSA9IGAke3RoaXMud2lkZ2V0SW5zdGFuY2UubWluV2lkdGh9cHhgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKHRoaXMud2lkZ2V0SW5zdGFuY2Uuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxOZ0NsYXNzKCk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGlmICgnbGFiZWxTdHlsZScgaW4gdGhpcy53aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHRoaXMud2lkZ2V0SW5zdGFuY2UubGFiZWxTdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIGlmICgnbGFiZWxTdHlsZScgaW4gdGhpcy53aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXModGhpcy53aWRnZXRJbnN0YW5jZS5sYWJlbFN0eWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFuZ2UgaGFuZGxlciBmb3IgdGhlIHBvdGVudGlhbGx5IHByZXNlbnQgUXVpbGwgZWRpdG9yLCBlbmZvcmNpbmcgbWF4IGxlbmd0aCBsaW1pdHMgaWZcclxuICAgKiBuZWNlc3NhcnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2hhbmdlIHRoZSB7QGxpbmsgQ29udGVudENoYW5nZX0gdGhlIFF1aWxsIGVkaXRvciBlbWl0c1xyXG4gICAqIEByZXR1cm5zIHtAY29kZSB2b2lkfVxyXG4gICAqL1xyXG4gIG9uUmljaFRleHRFZGl0b3JDb250ZW50Q2hhbmdlZChjaGFuZ2U6IENvbnRlbnRDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMud2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyB3ZSBhcmUgcGVybWl0dGVkIGEgbnVtYmVyIG9uZSBncmVhdGVyIHRoYW4gdGhlIHJlcXVlc3RlZDogVGhlIHF1aWxsIGVkaXRvciBjb250YWlucyBhblxyXG4gICAgLy8gdW5yZW1vdmFibGUgbmV3LWxpbmUgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgaXRzIGNvbnRlbnQuXHJcbiAgICBjb25zdCBtYXhMZW5ndGg6IG51bWJlciA9IHRoaXMud2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoICsgMTtcclxuICAgIGlmIChjaGFuZ2UudGV4dC5sZW5ndGggPD0gbWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbnNlcnRPcENvdW50OiBudW1iZXIgPSBjaGFuZ2UuZGVsdGEub3BzPy5maWx0ZXIoKGl0KSA9PiAhIWl0Lmluc2VydCkubGVuZ3RoID8/IDA7XHJcbiAgICBpZiAoaW5zZXJ0T3BDb3VudCA+IDApIHtcclxuICAgICAgdGhpcy5xdWlsbD8ucXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY2hhbmdlLm9sZERlbHRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiByZW1haW5pbmcgdXNlci1zcGFjZSBjaGFyYWN0ZXJzIGFsbG93ZWQgdG8gYmUgZW50ZXJlZCBpbnRvIHRoZSBRdWlsbFxyXG4gICAqIGVkaXRvci5cclxuICAgKlxyXG4gICAqIDxwPlxyXG4gICAqIFRoZSByZWFsIGxlbmd0aCBvZiB0aGUgZWRpdG9yJ3MgY29udGVudCBtYXkgYmUgbXVjaCBsb25nZXIgLSBhcyBpdCBpcyBwZXJzaXN0ZWQgYXMgYW4gSFRNTFxyXG4gICAqIGRvY3VtZW50IGZyYWdtZW50IGJlaGluZCB0aGUgc2NlbmVzLiBUaGlzIG1ldGhvZCBpcyBjb25jZXJuZWQgYnkgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoZVxyXG4gICAqIHVzZXIgcGVyY2VpdmVzLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgdGhlIHtAbGluayBudW1iZXJ9IG9mIHJlbWFpbmluZyBwZXJtaXR0ZWQgY2hhcmFjdGVycyB0aGUgdXNlciBtYXkgaW5wdXQsIG9yIHtAY29kZSAtMX1cclxuICAgKiAgICAgICAgICBpZiB0aGUgbGVld2F5IGlzIG5vdCBpbnRlcnByZXRlZCBpbiB0aGUgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZVxyXG4gICAqL1xyXG4gIGdldFJpY2hUZXh0RWRpdG9yTGVuZ3RoTGVld2F5KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVCkge1xyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGdldEluc3RhbmNlLm1heExlbmd0aCkge1xyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gd2UgYXJlIHBlcm1pdHRlZCBhIG51bWJlciBvbmUgZ3JlYXRlciB0aGFuIHRoZSByZXF1ZXN0ZWQ6IFRoZSBxdWlsbCBlZGl0b3IgY29udGFpbnMgYW5cclxuICAgIC8vIHVucmVtb3ZhYmxlIG5ldy1saW5lIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIGl0cyBjb250ZW50LlxyXG4gICAgY29uc3QgbWF4TGVuZ3RoOiBudW1iZXIgPSB0aGlzLndpZGdldEluc3RhbmNlLm1heExlbmd0aCArIDE7XHJcbiAgICBpZiAodGhpcy5xdWlsbCkge1xyXG4gICAgICAvLyB0aGlzIGlzIHRoZSBpbnRlbmRlZCBwYXRoICh1c2VyIGlucHV0KTpcclxuICAgICAgcmV0dXJuIG1heExlbmd0aCAtIHRoaXMucXVpbGwucXVpbGxFZGl0b3IuZ2V0VGV4dCgpLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBmYWxsYmFjayB0byB0aGUgcmF3IEhUTUwgY29udGVudDpcclxuICAgIHJldHVybiBtYXhMZW5ndGggLSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLnZhbHVlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGFkZE9uQmx1ciA9IHRydWU7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzID0gW0VOVEVSLCBDT01NQV0gYXMgY29uc3Q7XHJcblxyXG4gIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKTtcclxuICAgIHRoaXMuc2V0VGV4dEZpZWxkQ2hpcHNWYWx1ZSh2YWx1ZSk7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIGlucHV0IHZhbHVlXHJcbiAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XHJcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh2YWx1ZTogU21hcnRGb3JtV2lkZ2V0PGFueT4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udmFsdWUuaW5kZXhPZih2YWx1ZSk7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMud2lkZ2V0SW5zdGFuY2Uua2V5XS52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCB3aWRnZXRJbnN0YW5jZTogU21hcnRGb3JtV2lkZ2V0PGFueT4pOiB2b2lkIHtcclxuICAgIGxldCB2YWx1ZSA9IGV2ZW50Lm9wdGlvbi52aWV3VmFsdWU7XHJcbiAgICB0aGlzLnNldFRleHRGaWVsZENoaXBzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUZXh0RmllbGRDaGlwc1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAodGhpcy53aWRnZXRJbnN0YW5jZS5tYXhWYWx1ZXMgJiZcclxuICAgICAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWUhLmxlbmd0aCA8IHRoaXMud2lkZ2V0SW5zdGFuY2UubWF4VmFsdWVzKSB8fFxyXG4gICAgICAgICF0aGlzLndpZGdldEluc3RhbmNlLm1heFZhbHVlc1xyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udmFsdWUpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBuZXcgQXJyYXk8T2JqZWN0PigpO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZSA9IHZhbHVlcztcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0uc2V0VmFsdWUodmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXldLnZhbHVlLnB1c2godmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLndpZGdldEluc3RhbmNlLmtleV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREaXJlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT05cclxuICAgICkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS5kaXJlY3Rpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gJ2RpcmVjdGlvbi1yb3cnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLndpZGdldEluc3RhbmNlLmRpcmVjdGlvbiA9PT0gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCkge1xyXG4gICAgICByZXR1cm4gJ2RpcmVjdGlvbi1jb2wnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdkaXJlY3Rpb24tcm93JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbigpOiB0eXBlb2YgU21hcnRGb3JtVGV4dEZpZWxkQnV0dG9uSWNvblBvc2l0aW9uIHtcclxuICAgIHJldHVybiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHR5cGVvZiBTbWFydEZvcm1XaWRnZXRUeXBlIHtcclxuICAgIHJldHVybiBTbWFydEZvcm1XaWRnZXRUeXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55Pik6IHN0cmluZyB7XHJcbiAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGlmICh3aWRnZXQubGFiZWwgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB3aWRnZXQubGFiZWw7XHJcbiAgICB9XHJcbiAgICBsZXQgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5USU1FICYmXHJcbiAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRSAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcclxuICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcclxuICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UXHJcbiAgICApIHtcclxuICAgICAgaXNSZXF1aXJlZCA9IHdpZGdldC52YWxpZGF0b3JzPy5sZW5ndGggPyB0aGlzLmZpZWxkSXNSZXF1aXJlZCgpICYmICEhd2lkZ2V0LnNob3dMYWJlbCA6IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCkge1xyXG4gICAgICBpc1JlcXVpcmVkID0gd2lkZ2V0Lm1hcmtBc1JlcXVpcmVkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3dpZGdldC5sYWJlbH0ke2lzUmVxdWlyZWQgPyAnIConIDogJyd9YDtcclxuICB9XHJcblxyXG4gIGdldFdpZGdldFN2Zyh2YWx1ZT86IHN0cmluZyk6IFNhZmVIdG1sIHwgbnVsbCB7XHJcbiAgICBsZXQgc2FmZVZhbHVlID0gdmFsdWUgPz8gJyc7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc2FmZVZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmllbGRJc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbHVlID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5USU1FICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5UT0dHTEUgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICApIHtcclxuICAgICAgdGhpcy53aWRnZXRJbnN0YW5jZS52YWxpZGF0b3JzPy5mb3JFYWNoKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRvci52YWxpZGF0b3IgPT0gVmFsaWRhdG9ycy5yZXF1aXJlZCkgdmFsdWUgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNDdXN0b21FcnJvcih3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+LCB2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbd2lkZ2V0LmtleV0gJiYgdGhpcy5mb3JtLmNvbnRyb2xzW3dpZGdldC5rZXldLmVycm9ycykge1xyXG4gICAgICAgIGxldCBoYXNFcnJvciA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXQua2V5XS5lcnJvcnMhKS5sZW5ndGhcclxuICAgICAgICAgID8gdGhpcy5mb3JtLmNvbnRyb2xzW3dpZGdldC5rZXldPy5kaXJ0eSB8fFxyXG4gICAgICAgICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3dpZGdldC5rZXldPy50b3VjaGVkICYmXHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yICYmXHJcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXQua2V5XT8uZXJyb3JzKSFbdmFsaWRhdG9yLm5hbWVdKVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAodmFsaWRhdG9yICYmIGhhc0Vycm9yICYmICF0aGlzLmVycm9yS2V5KSB8fFxyXG4gICAgICAgICAgKHZhbGlkYXRvciAmJiBoYXNFcnJvciAmJiB0aGlzLmVycm9yS2V5ID09PSB2YWxpZGF0b3IubmFtZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcktleSA9IHZhbGlkYXRvci5uYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0Vycm9yICYmIHZhbGlkYXRvciAmJiB0aGlzLmVycm9yS2V5ID09PSB2YWxpZGF0b3IubmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcktleSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhc0Vycm9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2Uod2lkZ2V0SW5zdGFuY2U6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBsZXQgZXJyb3JJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBsZXQgZXJyb3JJY29uQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIGxldCB2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yO1xyXG4gICAgaWYgKFxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICB3aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXRJbnN0YW5jZS5rZXldICYmIHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXRJbnN0YW5jZS5rZXldLmVycm9ycykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuZXJyb3JLZXkgJiZcclxuICAgICAgICAgICFPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHNbd2lkZ2V0SW5zdGFuY2Uua2V5XS5lcnJvcnMhKS5pbmNsdWRlcyh0aGlzLmVycm9yS2V5ISlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JLZXkgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoXHJcbiAgICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgICAgaW5kZXggPCBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHNbd2lkZ2V0SW5zdGFuY2Uua2V5XS5lcnJvcnMhKS5sZW5ndGg7XHJcbiAgICAgICAgICBpbmRleCsrXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvcktleSA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9sc1t3aWRnZXRJbnN0YW5jZS5rZXldLmVycm9ycyEpW2luZGV4XTtcclxuICAgICAgICAgIGxldCBjdXN0b21WYWxpZGF0b3JPbldpZGdldCA9IHdpZGdldEluc3RhbmNlLnZhbGlkYXRvcnM/LmZpbHRlcihcclxuICAgICAgICAgICAgKHZhbGlkYXRvcjogU21hcnRWYWxpZGF0b3IpID0+IHZhbGlkYXRvci5uYW1lID09PSBlcnJvcktleVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChjdXN0b21WYWxpZGF0b3JPbldpZGdldCAmJiBjdXN0b21WYWxpZGF0b3JPbldpZGdldC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gY3VzdG9tVmFsaWRhdG9yT25XaWRnZXRbMF0uZXJyb3JNZXNzYWdlITtcclxuICAgICAgICAgICAgZXJyb3JJY29uID0gY3VzdG9tVmFsaWRhdG9yT25XaWRnZXRbMF0uaWNvbjtcclxuICAgICAgICAgICAgZXJyb3JJY29uQ29sb3IgPSBjdXN0b21WYWxpZGF0b3JPbldpZGdldFswXS5pY29uQ29sb3I7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvciA9IGN1c3RvbVZhbGlkYXRvck9uV2lkZ2V0WzBdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBjdXN0b21WYWxpZGF0b3JPbkZvcm0gPSB0aGlzLnNlcnZpY2Uuc21hcnRGb3JtPy52YWxpZGF0b3JzPy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB2YWxpZGF0b3IubmFtZSA9PT0gZXJyb3JLZXlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoY3VzdG9tVmFsaWRhdG9yT25Gb3JtICYmIGN1c3RvbVZhbGlkYXRvck9uRm9ybS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gY3VzdG9tVmFsaWRhdG9yT25Gb3JtWzBdLmVycm9yTWVzc2FnZSE7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvciA9IGN1c3RvbVZhbGlkYXRvck9uRm9ybVswXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5oYXNDdXN0b21FcnJvcih3aWRnZXRJbnN0YW5jZSwgdmFsaWRhdG9yISkpIHtcclxuICAgICAgICB3aWRnZXRJbnN0YW5jZS5lcnJvciA9IGVycm9yTWVzc2FnZSE7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uID0gZXJyb3JJY29uO1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID0gZXJyb3JJY29uQ29sb3I7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLmVycm9yID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kaWNhdG9ySXRlbUNsYXNzKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IpIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yLmluZGljYXRvclZhbHVlID49IGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGBzbWFydC1pbmRpY2F0b3ItJHtpbmRleH1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRJbmRpY2F0b3JTdGF0dXNMYWJlbENvbG9yKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBNYXRoLmZsb29yKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JWYWx1ZSk7XHJcbiAgICBpZiAodmFsdWUgPiB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yTGVuZ3RoIC0gMSkge1xyXG4gICAgICByZXR1cm4gYHNtYXJ0LWluZGljYXRvci1sYWJlbC0ke3RoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JMZW5ndGggLSAxfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYHNtYXJ0LWluZGljYXRvci1sYWJlbC0ke3ZhbHVlfWA7XHJcbiAgfVxyXG4gIGdldEluZGljYXRvclN0YXR1c0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBNYXRoLmZsb29yKHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JWYWx1ZSk7XHJcbiAgICBpZiAodmFsdWUgPiB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yTGVuZ3RoIC0gMSkge1xyXG4gICAgICByZXR1cm4gdGhpcy53aWRnZXRJbnN0YW5jZS5pbmRpY2F0b3IhLmluZGljYXRvclN0YXR1c0xhYmVsc1tcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmluZGljYXRvciEuaW5kaWNhdG9yTGVuZ3RoIC0gMVxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0SW5zdGFuY2UuaW5kaWNhdG9yIS5pbmRpY2F0b3JTdGF0dXNMYWJlbHNbdmFsdWVdO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGZpbGVzOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSKSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0SW5zdGFuY2UudXBsb2FkQ2FsbGJhY2sodGhpcy53aWRnZXRJbnN0YW5jZS5rZXksIGZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJ1dHRvblR5cGUoZGVzY3JpcHRvcjogYW55KTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZGVzY3JpcHRvci50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ05PUk1BTCc6XHJcbiAgICAgICAgcmV0dXJuICdtYXQtYnV0dG9uJztcclxuICAgICAgY2FzZSAnRkxBVCc6XHJcbiAgICAgICAgcmV0dXJuICdtYXQtZmxhdC1idXR0b24nO1xyXG4gICAgICBjYXNlICdSQUlTRUQnOlxyXG4gICAgICAgIHJldHVybiAnbWF0LXJhaXNlZC1idXR0b24nO1xyXG4gICAgICBjYXNlICdTVFJPS0VEJzpcclxuICAgICAgICByZXR1cm4gJ21hdC1zdHJva2VkLWJ1dHRvbic7XHJcbiAgICAgIGNhc2UgJ0lDT04nOlxyXG4gICAgICAgIHJldHVybiAnbWF0LWljb24tYnV0dG9uJztcclxuICAgICAgY2FzZSAnTUlOSV9GQUInOlxyXG4gICAgICAgIHJldHVybiAnbWF0LW1pbmktZmFiJztcclxuICAgICAgY2FzZSAnRkFCJzpcclxuICAgICAgICByZXR1cm4gJ21hdC1mYWInO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUubG9nKGBVbmhhbmRsZWQgYWN0aW9uIGJ1dHRvbiB0eXBlIGNhc2U6ICR7ZGVzY3JpcHRvci50eXBlfWApO1xyXG4gICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbmA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc09ubHlJY29uKGRlc2NyaXB0b3I6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGVzY3JpcHRvci50eXBlID09PSAnSUNPTicgfHwgZGVzY3JpcHRvci50eXBlID09PSAnTUlOSV9GQUInIHx8IGRlc2NyaXB0b3IudHlwZSA9PT0gJ0ZBQidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrZWQoaW5zdGFuY2U6IFNtYXJ0QnV0dG9uKTogdm9pZCB7XHJcbiAgICBpZiAoaW5zdGFuY2UudWlBY3Rpb24pIHtcclxuICAgICAgaW5zdGFuY2UuY2FsbGJhY2soaW5zdGFuY2UudWlBY3Rpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW5zdGFuY2UuY2FsbGJhY2soaW5zdGFuY2Uua2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogSW5wdXRFdmVudCk6IFNtYXJ0SXRlbTxhbnk+W10ge1xyXG4gICAgbGV0IGZpbHRlclZhbHVlID0gKHZhbHVlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWU7XHJcbiAgICB0aGlzLnRvSGlnaGxpZ2h0ID0gZmlsdGVyVmFsdWU7XHJcblxyXG4gICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICBmaWx0ZXJWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLnRvSGlnaGxpZ2h0ID0gZmlsdGVyVmFsdWU7XHJcbiAgICB9XHJcbiAgICBmaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCAmJlxyXG4gICAgICB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlTGlzdFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogU21hcnRJdGVtPGFueT5bXSA9IGZpbHRlclZhbHVlXHJcbiAgICAgICAgPyB0aGlzLndpZGdldEluc3RhbmNlLnZhbHVlTGlzdC5maWx0ZXIoKG9wdGlvbjogU21hcnRJdGVtPGFueT4pID0+XHJcbiAgICAgICAgICAgIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogdGhpcy53aWRnZXRJbnN0YW5jZS52YWx1ZUxpc3Q7XHJcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwICYmIHRoaXMud2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIHZhbHVlcyBhZnRlciB0aGUgZmlsdGVyIG9wZXJhdGlvbiBidXQgd2UgZm91bmQgbm9uZTpcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmVycm9yID0gdGhpcy53aWRnZXRJbnN0YW5jZS5maWx0ZXJFcnJvck1lc3NhZ2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gd2UgZWl0aGVyIGZvdW5kIHZhbHVlcywgb3IgdGhlcmUgd2VyZSBubyB2YWx1ZXMgdG8gYmVnaW4gd2l0aDpcclxuICAgICAgICB0aGlzLndpZGdldEluc3RhbmNlLmVycm9yID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUZpbHRlcihkOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXRNYXRyaXhEaXNwbGF5VmFsdWUocXVlc3Rpb246IFZhbHVlLCBrZXk6IHN0cmluZykge1xyXG4gICAgKHRoaXMud2lkZ2V0SW5zdGFuY2UgYXMgU21hcnRNYXRyaXgpLnZhbHVlW2tleV0uZmluZCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZS5jb2RlID09IHF1ZXN0aW9uLmNvZGUpIHJldHVybiBxdWVzdGlvbi5kaXNwbGF5VmFsdWU7XHJcbiAgICAgIGVsc2UgcmV0dXJuIHF1ZXN0aW9uLmNvZGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVllYXJNb250aFBpY2tlZCh5ZWFyTW9udGhWYWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbCh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy53aWRnZXRJbnN0YW5jZS5rZXkhXSwgeWVhck1vbnRoVmFsdWUsICcwMDowMCcpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZUl0ZW1zKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGZ1bmN0aW9uIGNvbnZlcnQob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIG9iai5yZXBsYWNlKC9cXC52WzAtOV0rJC8sICcnKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gICAgLy8gY2FsbGluZyB0aGlzLnRydW5jYXRlVXJpIGRpZG4ndCB3b3JrXHJcbiAgICAvLyBUT0RPOiB1c2Ugd2lkZ2V0LnNlbGVjdGlvbi5wYXJhbWV0ZXIgZm9yIGlnbm9yZVVyaVZlcnNpb24gLyBzdHJpY3RVcmlDb21wYXJpc29uO1xyXG5cclxuICAgIGxldCB2MSA9IGNvbnZlcnQobzEpO1xyXG4gICAgbGV0IHYyID0gY29udmVydChvMik7XHJcbiAgICByZXR1cm4gZGVlcEVxdWFsKHYxLCB2Mik7XHJcbiAgfVxyXG5cclxuICB0cnVuY2F0ZVVyaSh1cmk6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodXJpICYmIHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB1cmkucmVwbGFjZSgvXFwudlswLTldKyQvLCAnJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTWF0cml4Um93KHF1ZXN0aW9uOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcclxuICAgICh0aGlzLndpZGdldEluc3RhbmNlIGFzIFNtYXJ0TWF0cml4KS5idXR0b24/LmNhbGxiYWNrKHRoaXMud2lkZ2V0SW5zdGFuY2UsIHF1ZXN0aW9uKTtcclxuICB9XHJcblxyXG4gIGlzVG9vbGJhclByZXNlbnQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZS50eXBlID09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCkge1xyXG4gICAgICByZXR1cm4gdGhpcy53aWRnZXRJbnN0YW5jZS50b29sYmFySWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLndpZGdldEluc3RhbmNlLnRvb2xiYXJJZCAhPT0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gIDxkaXZcclxuICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnXCJcclxuICAgIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuaXNWaXNpYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogd2lkZ2V0SW5zdGFuY2UuaXNWaXNpYmxlXCJcclxuICA+XHJcbiAgICA8ZGl2ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVJcIiBbbmdDbGFzc109XCJnZXREaXJlY3Rpb24oKVwiPlxyXG4gICAgICA8c21hcnRmb3Jtd2lkZ2V0XHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRJbnN0YW5jZS52YWx1ZUxpc3RcIlxyXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFt3aWRnZXRJbnN0YW5jZV09XCJ3aWRnZXRcIlxyXG4gICAgICAgIGNsYXNzPVwiY29udGFpbmVyLWl0ZW1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldC5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgW29uQmx1cl09XCJvbkJsdXJcIlxyXG4gICAgICAgIFtvblZhbHVlQ2hhbmdlXT1cIm9uVmFsdWVDaGFuZ2VcIlxyXG4gICAgICAgIFtzb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VdPVwic29waGlzdGljYXRlZFZhbHVlQ2hhbmdlXCJcclxuICAgICAgICBjbGFzcz1cInt7IHdpZGdldC5rZXkgfX1cIlxyXG4gICAgICAgIFtsYWJlbENvbG9yXT1cImxhYmVsQ29sb3JcIlxyXG4gICAgICA+PC9zbWFydGZvcm13aWRnZXQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIChjYXBzTG9jayk9XCJjYXBzT24gPSAkZXZlbnRcIlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRFwiXHJcbiAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICBjbGFzcz1cImlucHV0IHRleHRGaWVsZCB3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwid2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlLnNlbGVjdGlvblwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidzdHJpbmcnXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ3aWRnZXRJbnN0YW5jZS52YWx1ZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwid2lkZ2V0SW5zdGFuY2UuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJ7eyB3aWRnZXRJbnN0YW5jZS5pc1Bhc3N3b3JkID8gKGhpZGVQYXNzd29yZCA/ICdwYXNzd29yZCcgOiAndGV4dCcpIDogJycgfX1cIlxyXG4gICAgICAgICAgW21hc2tdPVwid2lkZ2V0SW5zdGFuY2UubWFzayA/PyAnJ1wiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleWRvd24oKVwiXHJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyB3aWRnZXRJbnN0YW5jZS5tYXhMZW5ndGggfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNlbGVjdGlvblwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidzdHJpbmcnXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ3aWRnZXRJbnN0YW5jZS52YWx1ZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwid2lkZ2V0SW5zdGFuY2UuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJ7eyB3aWRnZXRJbnN0YW5jZS5pc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICcnIH19XCJcclxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwidGV4dEZpZWxkQXV0b1wiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleWRvd24oKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmlzUGFzc3dvcmRcIlxyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1pY29uPnt7IGhpZGVQYXNzd29yZCA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eScgfX08L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICN0ZXh0RmllbGRBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvbi5sYWJlbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbCB8IGhpZ2hsaWdodCA6IHRvSGlnaGxpZ2h0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1lcnJvclwiICpuZ0lmPVwiY2Fwc09uICYmIHdpZGdldEluc3RhbmNlLmlzUGFzc3dvcmRcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmNhcHNMb2NrV2FybmluZyB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8c3BhbiBtYXRQcmVmaXg+XHJcbiAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cImNhcHNPbiAmJiB3aWRnZXRJbnN0YW5jZS5pc1Bhc3N3b3JkXCJcclxuICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuY2Fwc0xvY2tXYXJuaW5nSWNvbiA/PyAna2V5Ym9hcmRfY2Fwc2xvY2snXCJcclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmljb24gJiYgd2lkZ2V0SW5zdGFuY2UuaWNvblBvc2l0aW9uID09PSAnUFJFJ1wiXHJcbiAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmljb25cIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuaWNvbkNvbG9yID8/ICdwcmltYXJ5J1wiXHJcbiAgICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UucHJlZml4IH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIG1hdFN1ZmZpeD5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLnN1ZmZpeCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaWNvbiAmJlxyXG4gICAgICAgICAgICAoIXdpZGdldEluc3RhbmNlLmljb25Qb3NpdGlvbiB8fCB3aWRnZXRJbnN0YW5jZS5pY29uUG9zaXRpb24gPT09ICdQT1NUJylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5pY29uXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5pY29uQ29sb3IgPz8gJ3ByaW1hcnknXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uQ29sb3IgPz8gJ3dhcm4nXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcblxyXG4gICAgICAgIDxzbWFydC11aS1hY3Rpb24tdG9vbGJhclxyXG4gICAgICAgICAgI3Rvb2xiYXJcclxuICAgICAgICAgICpuZ0lmPVwiaXNUb29sYmFyUHJlc2VudCgpXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLnRvb2xiYXJJZFwiXHJcbiAgICAgICAgPjwvc21hcnQtdWktYWN0aW9uLXRvb2xiYXI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b25cIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBjb2xvcj1cInt7IHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5jb2xvciB9fVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwid2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmNhbGxiYWNrKHdpZGdldEluc3RhbmNlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uaWNvblBvc2l0aW9uID09PVxyXG4gICAgICAgICAgICAgICAgc21hcnRGb3JtVGV4dEZpZWxkQnV0dG9uSWNvblBvc2l0aW9uKCkuUFJFICYmIHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmxhYmVsIH19XHJcbiAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uUG9zaXRpb24gPT09XHJcbiAgICAgICAgICAgICAgICBzbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb24oKS5QT1NUICYmIHdpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5pY29uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvc21hcnQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8bWF0LWhpbnRcclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4ICYmIHdpZGdldEluc3RhbmNlLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIGFsaWduPVwiZW5kXCJcclxuICAgICAgICAgID57eyB3aWRnZXRJbnN0YW5jZS5tYXhMZW5ndGggLSBmb3JtLmNvbnRyb2xzW3dpZGdldEluc3RhbmNlLmtleV0udmFsdWUubGVuZ3RoIH19PC9tYXQtaGludFxyXG4gICAgICAgID5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1oaW50XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICF3aWRnZXRJbnN0YW5jZT8uaGludCB8fCB3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+e3sgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dCB9fTwvbWF0LWhpbnRcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVJcIlxyXG4gICAgICBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCB0ZXh0RmllbGQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cIndpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJ3aWRnZXRJbnN0YW5jZS5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgW21pbl09XCJ3aWRnZXRJbnN0YW5jZS5taW5WYWx1ZXMgPz8gbnVsbFwiXHJcbiAgICAgICAgICBbbWF4XT1cIndpZGdldEluc3RhbmNlLm1heFZhbHVlcyA/PyBudWxsXCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBtYXRQcmVmaXg+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5wcmVmaXggfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gbWF0U3VmZml4PlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2Uuc3VmZml4IH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuaWNvblwiIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmljb25cIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgY29sb3I9XCJ7eyB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uY29sb3IgfX1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIndpZGdldEluc3RhbmNlLnRleHRGaWVsZEJ1dHRvbi5jYWxsYmFjayh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25Qb3NpdGlvbiA9PT1cclxuICAgICAgICAgICAgICAgIHNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbigpLlBSRSAmJiB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uaWNvblxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24uaWNvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS50ZXh0RmllbGRCdXR0b24ubGFiZWwgfX1cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25Qb3NpdGlvbiA9PT1cclxuICAgICAgICAgICAgICAgIHNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbigpLlBPU1QgJiYgd2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UudGV4dEZpZWxkQnV0dG9uLmljb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQU1wiXHJcbiAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICBjbGFzcz1cImlucHV0IHdpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1sYWJlbFxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnXCJcclxuICAgICAgICAgICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1jaGlwLWxpc3QgI2NoaXBMaXN0IGFyaWEtbGFiZWw9XCJ7eyB3aWRnZXRJbnN0YW5jZS5sYWJlbCB9fVwiPlxyXG4gICAgICAgICAgPG1hdC1jaGlwXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlKHZhbHVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHZhbHVlIH19XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNjaGlwSW5wdXRcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB3aWRnZXRJbnN0YW5jZS5wbGFjZWhvbGRlciB9fVwiXHJcbiAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxyXG4gICAgICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJhZGRPbkJsdXJcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwid2lkZ2V0SW5zdGFuY2UuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiY2hpcEF1dG9cIlxyXG4gICAgICAgICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkKCRldmVudClcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgICAgICAgI2NoaXBBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudCwgd2lkZ2V0SW5zdGFuY2UpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1hcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiJ3N0cmluZydcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cIndpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJ3aWRnZXRJbnN0YW5jZS5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cj8ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgIG1heGxlbmd0aD1cInt7IHdpZGdldEluc3RhbmNlLm1heExlbmd0aCB9fVwiXHJcbiAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxtYXQtaGludFxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXggJiYgd2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgYWxpZ249XCJlbmRcIlxyXG4gICAgICAgICAgPnt7IHdpZGdldEluc3RhbmNlLm1heExlbmd0aCAtIGZvcm0uY29udHJvbHNbd2lkZ2V0SW5zdGFuY2Uua2V5XS52YWx1ZS5sZW5ndGggfX08L21hdC1oaW50XHJcbiAgICAgICAgPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWhpbnRcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgIXdpZGdldEluc3RhbmNlLmhpbnQgfHwgd2lkZ2V0SW5zdGFuY2UuaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+e3sgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dCB9fTwvbWF0LWhpbnRcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXCIgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCBjaGVja2JveCB3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJyYWRpb0xhYmVsXCIgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZWNrYm94LXNlY3Rpb25cIiBbbmdDbGFzc109XCJnZXREaXJlY3Rpb24oKVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWl0ZW0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoZWNrYm94IG9mIHdpZGdldEluc3RhbmNlLnZhbHVlTGlzdDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAqbmdJZj1cImNoZWNrYm94LmltYWdlVXJsXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHdpZGdldEluc3RhbmNlLmtleSB9fVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC1pdGVtLWltYWdlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cImNoZWNrYm94LmltYWdlVXJsXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWNhdGJsZU9iamVjdFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjaGVja2JveC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KGNoZWNrYm94KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBjaGVja2JveC5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWVycm9yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UuZXJyb3IgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25Db2xvciA/PyAnd2FybidcIlxyXG4gICAgICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzJcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImlucHV0IGNoZWNrYm94IHdpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInJhZGlvTGFiZWxcIiAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlY2tib3gtc2VjdGlvblwiIFtuZ0NsYXNzXT1cImdldERpcmVjdGlvbigpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3gtaXRlbS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hlY2tib3ggb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tib3guaW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWl0ZW0taW1hZ2VcIlxyXG4gICAgICAgICAgICAgIFtzcmNdPVwiY2hlY2tib3guaW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY2F0YmxlT2JqZWN0XCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyB3aWRnZXRJbnN0YW5jZS5rZXkgKyAnLicgKyBjaGVja2JveC5rZXkgfX1cIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGVja2JveC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KGNoZWNrYm94KVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIndpZGdldEluc3RhbmNlLmlzRGlzYWJsZWQhXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGNoZWNrYm94LmxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZXJyb3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5lcnJvciAmJiB3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OXCIgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDRcclxuICAgICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fSBzbWFydC1mb3JtLXdpZGdldC1sYWJlbCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzIH19XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCByYWRpby1zZWN0aW9uIHdpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cInt7IHdpZGdldEluc3RhbmNlLmxhYmVsIH19XCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJyYWRpb0xhYmVsXCIgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdldERpcmVjdGlvbigpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8taXRlbS1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgcmFkaW8gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAqbmdJZj1cInJhZGlvLmltYWdlVXJsXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHdpZGdldEluc3RhbmNlLmtleSB9fVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyYWRpby1pdGVtLWltYWdlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cInJhZGlvLmltYWdlVXJsXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjYXRibGVPYmplY3RcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwie3sgcmFkaW8udmFsdWUgfX1cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldERpcmVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2U/Lm5leHQocmFkaW8udmFsdWUpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyByYWRpby5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1lcnJvclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uQ29sb3IgPz8gJ3dhcm4nXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSXCJcclxuICAgICAgY2xhc3M9XCJkYXRlUGlja2VyIHdpZGdldENvbnRhaW5lclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCB3aWRnZXRDb250ZW50IGRhdGUge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1sYWJlbFxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnXCJcclxuICAgICAgICAgICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlciAoY2xvc2VkKT1cIm9uQmx1cj8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cIndpZGdldEluc3RhbmNlLnZhbHVlXCJcclxuICAgICAgICAgIFttaW5dPVwid2lkZ2V0SW5zdGFuY2UubWluRGF0ZSA/PyBudWxsXCJcclxuICAgICAgICAgIFttYXhdPVwid2lkZ2V0SW5zdGFuY2UubWF4RGF0ZSA/PyBudWxsXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cj8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwid2lkZ2V0SW5zdGFuY2UuZmlsdGVyID8/IGRhdGVGaWx0ZXJcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmRhdGVGb3JtYXRIaW50IH19XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUlwiXHJcbiAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsXCI+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dCB3aWRnZXRDb250ZW50XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkZ2V0SW5zdGFuY2UubWluV2lkdGggKyAncHgnIH1cIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwid2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiJGFueShwaWNrZXIpXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgPG5neC1tYXQtZGF0ZXRpbWUtcGlja2VyXHJcbiAgICAgICAgICAjcGlja2VyXHJcbiAgICAgICAgICBbc2hvd1NwaW5uZXJzXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzdGVwSG91cl09XCIxXCJcclxuICAgICAgICAgIFtzdGVwTWludXRlXT1cIjFcIlxyXG4gICAgICAgICAgW3N0ZXBTZWNvbmRdPVwiMTBcIlxyXG4gICAgICAgICAgW3RvdWNoVWldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICBbZW5hYmxlTWVyaWRpYW5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVNaW51dGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2hpZGVUaW1lXT1cImZhbHNlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2Uua2V5XCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ3aWRnZXRJbnN0YW5jZS52YWx1ZVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIFtuZ3hNYXREYXRldGltZVBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyRmlsdGVyXT1cIndpZGdldEluc3RhbmNlLmZpbHRlciA/PyBkYXRlRmlsdGVyXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cj8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmRhdGVGb3JtYXRIaW50IH19XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSXCJcclxuICAgICAgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlVGltZVBpY2tlckNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgICAgY2xhc3M9XCJpbnB1dCB3aWRnZXRDb250ZW50IGRhdGUge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyIChjbG9zZWQpPVwib25CbHVyPy5uZXh0KHdpZGdldEluc3RhbmNlKVwiPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2RhdGVJbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICAgIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwid2lkZ2V0SW5zdGFuY2UudmFsdWVcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwib25EYXRlUGlja2VyQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCh3aWRnZXRJbnN0YW5jZSlcIlxyXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJ3aWRnZXRJbnN0YW5jZS5maWx0ZXIgPz8gZGF0ZUZpbHRlclwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UuZGF0ZUZvcm1hdEhpbnQgfX1cclxuICAgICAgICAgIDwvbWF0LWhpbnQ+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICAgICpuZ0lmPVwiaGFzQ3JlYXRlZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImlucHV0IHdpZGdldENvbnRlbnQgdGltZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiB3aWRnZXRJbnN0YW5jZS5taW5XaWR0aCArICdweCcgfVwiXHJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICN0aW1lSW5wdXRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXkgKyAnLXRpbWUnXCJcclxuICAgICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICAgIFt0eXBlXT1cIid0aW1lJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgfX1cIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvblRpbWVQaWNrZXJCbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KCRldmVudC52YWx1ZSlcIlxyXG4gICAgICAgICAgKGNsb3NlZCk9XCJvbkJsdXI/Lm5leHQod2lkZ2V0SW5zdGFuY2UpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkIVwiXHJcbiAgICAgICAgICBbY29tcGFyZVdpdGhdPVwiXHJcbiAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLmNvbXBhcmVXaXRoID09IG51bGwgPyBjb21wYXJlSXRlbXMgOiB3aWRnZXRJbnN0YW5jZS5jb21wYXJlV2l0aFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgPyB3aWRnZXRJbnN0YW5jZS5wbGFjZWhvbGRlciA6ICcnIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWVMaXN0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXBcclxuICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi50eXBlID09PSBnZXRUeXBlKCkuSVRFTV9HUk9VUFwiXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW5uZXJPcHRpb24gb2Ygb3B0aW9uLnZhbHVlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaW5uZXJPcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlubmVyT3B0aW9uLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5uZXJPcHRpb24uaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cImlubmVyT3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaW5uZXJPcHRpb24uaWNvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgICAgICB7eyBpbm5lck9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udHlwZSA9PT0gZ2V0VHlwZSgpLklURU1cIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJvcHRpb24uaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwib3B0aW9uLmljb25Db2xvclwiXHJcbiAgICAgICAgICAgICAgPjwvc21hcnQtaWNvblxyXG4gICAgICAgICAgICAgID57eyBvcHRpb24ubGFiZWwgfX08L21hdC1vcHRpb25cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5lcnJvciAmJiB3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25Db2xvciA/PyAnd2FybidcIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1oaW50XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICF3aWRnZXRJbnN0YW5jZT8uaGludCB8fCB3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+e3sgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dCB9fTwvbWF0LWhpbnRcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFXCJcclxuICAgICAgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhd2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgbXVsdGlwbGVcclxuICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25WYWx1ZUNoYW5nZT8ubmV4dCgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgIChjbG9zZWQpPVwib25CbHVyPy5uZXh0KHdpZGdldEluc3RhbmNlKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwid2lkZ2V0SW5zdGFuY2UuaXNEaXNhYmxlZCFcIlxyXG4gICAgICAgICAgW2NvbXBhcmVXaXRoXT1cIlxyXG4gICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5jb21wYXJlV2l0aCA9PSBudWxsID8gY29tcGFyZUl0ZW1zIDogd2lkZ2V0SW5zdGFuY2UuY29tcGFyZVdpdGhcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyID8gd2lkZ2V0SW5zdGFuY2UucGxhY2Vob2xkZXIgOiAnJyB9fVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlTGlzdFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udHlwZSA9PT0gZ2V0VHlwZSgpLklURU1fR1JPVVBcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlubmVyT3B0aW9uIG9mIG9wdGlvbi52YWx1ZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlubmVyT3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbm5lck9wdGlvbi5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlubmVyT3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJpbm5lck9wdGlvbi5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImlubmVyT3B0aW9uLmljb25Db2xvclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgICA+e3sgaW5uZXJPcHRpb24ubGFiZWwgfX08L21hdC1vcHRpb25cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLnR5cGUgPT09IGdldFR5cGUoKS5JVEVNXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uLmljb25cIlxyXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIm9wdGlvbi5pY29uQ29sb3JcIlxyXG4gICAgICAgICAgICAgID48L3NtYXJ0LWljb25cclxuICAgICAgICAgICAgICA+e3sgb3B0aW9uLmxhYmVsIH19PC9tYXQtb3B0aW9uXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAge3sgd2lkZ2V0SW5zdGFuY2UuZXJyb3IgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3IgJiYgd2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uQ29sb3IgPz8gJ3dhcm4nXCJcclxuICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtaGludFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAhd2lkZ2V0SW5zdGFuY2U/LmhpbnQgfHwgd2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5JTlBVVFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgPnt7IHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHQgfX08L21hdC1oaW50XHJcbiAgICAgID5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMXCJcclxuICAgICAgY2xhc3M9XCJsYWJlbCB3aWRnZXRDb250YWluZXJcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiB3aWRnZXRJbnN0YW5jZS5taW5XaWR0aCArICdweCcgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC10aXRsZSBsYWJlbENvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIndpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxwPnt7IHdpZGdldEluc3RhbmNlLndpZGdldERlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLlRJTUVcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICAgIDxoNFxyXG4gICAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICAgIH19PC9tYXQtaGludD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQgd2lkZ2V0Q29udGVudCB0aW1lIHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwid2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbdHlwZV09XCIndGltZSdcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cImdldFRpbWUoKVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHdpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXI/Lm5leHQod2lkZ2V0SW5zdGFuY2UpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICB7eyB3aWRnZXRJbnN0YW5jZS5lcnJvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5lcnJvciAmJiB3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2ljb25dPVwid2lkZ2V0SW5zdGFuY2UuZXJyb3JJY29uXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25Db2xvciA/PyAnd2FybidcIlxyXG4gICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRVwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCI+XHJcbiAgICAgICAgPGg0XHJcbiAgICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0gc21hcnQtZm9ybS13aWRnZXQtbGFiZWwge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGVudCAge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICAgIHZhbHVlPVwie3sgd2lkZ2V0SW5zdGFuY2UudmFsdWUgfX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlPy5uZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwid2lkZ2V0SW5zdGFuY2UudG9nZ2xlTGFiZWxQb3NpdGlvbiA/PyAnYmVmb3JlJ1wiXHJcbiAgICAgICAgICA+e3sgIXdpZGdldEluc3RhbmNlLnNob3dMYWJlbCA/IHdpZGdldEluc3RhbmNlLmxhYmVsIDogJycgfX08L21hdC1zbGlkZS10b2dnbGVcclxuICAgICAgICA+PHNwYW4gY2xhc3M9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLmVycm9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLmVycm9yICYmIHdpZGdldEluc3RhbmNlLmVycm9ySWNvblwiXHJcbiAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS5lcnJvckljb25cIlxyXG4gICAgICAgICAgW2NvbG9yXT1cIndpZGdldEluc3RhbmNlLmVycm9ySWNvbkNvbG9yID8/ICd3YXJuJ1wiXHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2UudHlwZSA9PT0gc21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1JcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8aDRcclxuICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IGxhYmVsQ29udGFpbmVyIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzbWFydEluZGljYXRvciB3aWRnZXRDb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvckl0ZW1zIHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCIgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGluZGljYXRvckl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpbmRpY2F0b3JJdGVtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SW5kaWNhdG9ySXRlbUNsYXNzKGkpXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCBbbmdDbGFzc109XCJnZXRJbmRpY2F0b3JTdGF0dXNMYWJlbENvbG9yKClcIj5cclxuICAgICAgICAgIHt7IGdldEluZGljYXRvclN0YXR1c0xhYmVsKCkgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUlwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxoNFxyXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICBjbGFzcz1cImxhYmVsQ29udGFpbmVyIHt7IGxhYmVsQ29sb3IgfX0ge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPHNtYXJ0ZmlsZXVwbG9hZGVyXHJcbiAgICAgICAgY2xhc3M9XCJ3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIFt1cGxvYWRDYWxsYmFja109XCJ1cGxvYWQuYmluZCh0aGlzKVwiXHJcbiAgICAgICAgW2ZpbGVGb3JtYXRzXT1cIndpZGdldEluc3RhbmNlLmZpbGVGb3JtYXRzXCJcclxuICAgICAgICBbbWF4U2l6ZU1iXT1cIndpZGdldEluc3RhbmNlLm1heFNpemVNYlwiXHJcbiAgICAgICAgW2kxOG5dPVwid2lkZ2V0SW5zdGFuY2UuaTE4blwiXHJcbiAgICAgID48L3NtYXJ0ZmlsZXVwbG9hZGVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0VcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8aDRcclxuICAgICAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICAgICAgY2xhc3M9XCJsYWJlbENvbnRhaW5lciB7eyBsYWJlbENvbG9yIH19IHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsTmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBjbGFzcz1cIndpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuaW1hZ2VDc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIHRpdGxlPVwie3sgd2lkZ2V0SW5zdGFuY2Uua2V5IH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKClcIlxyXG4gICAgICAgIFtzcmNdPVwid2lkZ2V0SW5zdGFuY2UudmFsdWVcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHXCIgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGg0XHJcbiAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgIGNsYXNzPVwibGFiZWxDb250YWluZXIge3sgbGFiZWxDb2xvciB9fSB7eyB3aWRnZXRJbnN0YW5jZS5jc3NMYWJlbENsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICA8L2g0PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3aWRnZXRDb250ZW50IHt7IHdpZGdldEluc3RhbmNlLmNzc0NsYXNzID8/ICcnIH19XCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cImdldFdpZGdldFN2Zyh3aWRnZXRJbnN0YW5jZS52YWx1ZSlcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVJcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8aHJcclxuICAgICAgICBjbGFzcz1cInNtYXJ0RGl2aWRlciB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTlwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxoNFxyXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICBjbGFzcz1cImxhYmVsQ29udGFpbmVyIHt7IGxhYmVsQ29sb3IgfX0ge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwid2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TmdDbGFzcygpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEJ1dHRvblR5cGUod2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yKVwiXHJcbiAgICAgICAgICBbY29sb3JdPVwid2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5jb2xvclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKHdpZGdldEluc3RhbmNlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzT25seUljb24od2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yKTsgdGhlbiBpY29uT25seTsgZWxzZSB0ZXh0XCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbk9ubHk+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25cIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cIndpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvciEuaWNvbiFcIlxyXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJcclxuICAgICAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvcj8uaWNvbkNvbG9yID8/XHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/LmNvbG9yXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RleHQ+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHdpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvcj8uaWNvbiAmJlxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5pY29uUG9zaXRpb24gPT09ICdQUkUnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3IhLmljb24hXCJcclxuICAgICAgICAgICAgICBbY29sb3JdPVwiXHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25Db2xvciA/P1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5jb2xvclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgIHt7IHdpZGdldEluc3RhbmNlLnVpQWN0aW9uRGVzY3JpcHRvcj8udGl0bGUgfX1cclxuICAgICAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5pY29uICYmXHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25Qb3NpdGlvbiA9PT0gJ1BPU1QnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJ3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3IhLmljb24hXCJcclxuICAgICAgICAgICAgICBbY29sb3JdPVwiXHJcbiAgICAgICAgICAgICAgICB3aWRnZXRJbnN0YW5jZS51aUFjdGlvbkRlc2NyaXB0b3I/Lmljb25Db2xvciA/P1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2UudWlBY3Rpb25EZXNjcmlwdG9yPy5jb2xvclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXRDb250YWluZXJcIj5cclxuICAgICAgPGg0XHJcbiAgICAgICAgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiXHJcbiAgICAgICAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJiB3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gICAgICAgIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPGRpdiBjbGFzcz1cIndpZGdldENvbnRlbnRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbUNvbXBvbmVudD48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVFwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbnRhaW5lclwiPlxyXG4gICAgICAgIDxoNCAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiIGNsYXNzPVwie3sgbGFiZWxDb2xvciB9fVwiPlxyXG4gICAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgICAgPC9oND5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLkxBQkVMXCI+e3tcclxuICAgICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0Q29udGVudFwiPlxyXG4gICAgICAgIDxxdWlsbC1lZGl0b3JcclxuICAgICAgICAgICNxdWlsbEVkaXRvclxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLmtleVwiXHJcbiAgICAgICAgICBbbW9kdWxlc109XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkID8gZW1wdHlRdWlsbFRvb2xiYXIgOiB3aWRnZXRJbnN0YW5jZS5xdWlsbE1vZHVsZXNcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIndpZGdldEluc3RhbmNlLnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFtyZWFkT25seV09XCJ3aWRnZXRJbnN0YW5jZS5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwid2lkZ2V0SW5zdGFuY2UubWF4TGVuZ3RoXCJcclxuICAgICAgICAgIChvbkNvbnRlbnRDaGFuZ2VkKT1cIm9uUmljaFRleHRFZGl0b3JDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9xdWlsbC1lZGl0b3I+XHJcbiAgICAgICAgPG1hdC1oaW50XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAhd2lkZ2V0SW5zdGFuY2U/LmhpbnQgfHxcclxuICAgICAgICAgICAgd2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5JTlBVVFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgID57eyB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0IH19PC9tYXQtaGludFxyXG4gICAgICAgID5cclxuICAgICAgICA8bWF0LWhpbnRcclxuICAgICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4ICYmIHdpZGdldEluc3RhbmNlLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIGFsaWduPVwiZW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwicmljaC10ZXh0LWVkaXRvci1sZWV3YXktY291bnRlclwiXHJcbiAgICAgICAgICA+e3sgZ2V0UmljaFRleHRFZGl0b3JMZW5ndGhMZWV3YXkoKSB9fTwvbWF0LWhpbnRcclxuICAgICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuU09SVEFCTEVcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIj5cclxuICAgICAgICA8aDQgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIiBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX1cIj5cclxuICAgICAgICAgIHt7IGdldFdpZGdldExhYmVsKHdpZGdldEluc3RhbmNlKSB9fVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgICB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0XHJcbiAgICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndpZGdldENvbnRlbnRcIj5cclxuICAgICAgICA8bGliLXNvcnRhYmxlLXdpZGdldFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXlcIlxyXG4gICAgICAgICAgW3dpZGdldEluc3RhbmNlXT1cIndpZGdldEluc3RhbmNlXCJcclxuICAgICAgICA+PC9saWItc29ydGFibGUtd2lkZ2V0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWFwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIj5cclxuICAgICAgPGg0ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCIgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19XCI+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwibWF0cml4VGFibGUgd2lkZ2V0Q29udGVudFwiPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoIGNsYXNzPVwib3B0aW9uTGFiZWxcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlLmNvbHVtbnNcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VmFsdWUgfX1cclxuICAgICAgICA8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlLnJvd3M7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8dGggY2xhc3M9XCJxdWVzdGlvbkxhYmVsXCI+XHJcbiAgICAgICAgICA8bGFiZWw+e3sgcXVlc3Rpb24uZGlzcGxheVZhbHVlIH19PC9sYWJlbD5cclxuICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RUZFwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygd2lkZ2V0SW5zdGFuY2UudmFsdWUuY29sdW1uczsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgPG1hdC1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZS5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ3aWRnZXRJbnN0YW5jZS5rZXkgKyAnLicgKyBxdWVzdGlvbi5jb2RlXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3EnICsgaVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPiA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5pc011bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIndpZGdldEluc3RhbmNlLmtleSArICcuZGF0YS4nICsgcXVlc3Rpb24uY29kZSArICcuJyArIG9wdGlvbi5jb2RlXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwid2lkZ2V0SW5zdGFuY2UudmFsdWVbJ2RhdGEnXVtxdWVzdGlvbi5jb2RlXVtvcHRpb24uY29kZV1cIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDxiciAvPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5idXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZU1hdHJpeFJvdyhxdWVzdGlvbilcIlxyXG4gICAgICAgICAgPjxzbWFydC1pY29uIGljb249XCJjbG9zZVwiPjwvc21hcnQtaWNvblxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnR5cGUgPT09IHNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcIiBjbGFzcz1cIndpZGdldENvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxhYmVsQ29udGFpbmVyXCI+XHJcbiAgICAgIDxoNFxyXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgICAgICBjbGFzcz1cInt7IGxhYmVsQ29sb3IgfX0ge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyB9fVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRXaWRnZXRMYWJlbCh3aWRnZXRJbnN0YW5jZSkgfX1cclxuICAgICAgPC9oND5cclxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2U/LmhpbnQ/LnBvc2l0aW9uID09PSBTbWFydFdpZGdldEhpbnRQb3NpdGlvbi5MQUJFTFwiPnt7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2UuaGludD8udGV4dFxyXG4gICAgICB9fTwvbWF0LWhpbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx5b3V0dWJlLXBsYXllclxyXG4gICAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZSgpXCJcclxuICAgICAgdmlkZW9JZD1cInt7IHdpZGdldEluc3RhbmNlLnZpZGVvSWQgfX1cIlxyXG4gICAgICBbd2lkdGhdPVwid2lkZ2V0SW5zdGFuY2Uud2lkdGhcIlxyXG4gICAgICBbaGVpZ2h0XT1cIndpZGdldEluc3RhbmNlLmhlaWdodFwiXHJcbiAgICAgIFtzdGFydFNlY29uZHNdPVwid2lkZ2V0SW5zdGFuY2Uuc3RhcnRTZWNvbmRzXCJcclxuICAgICAgW2VuZFNlY29uZHNdPVwid2lkZ2V0SW5zdGFuY2UuZW5kU2Vjb25kc1wiXHJcbiAgICA+PC95b3V0dWJlLXBsYXllcj5cclxuICAgIDxtYXQtaGludFxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgICF3aWRnZXRJbnN0YW5jZT8uaGludCB8fCB3aWRnZXRJbnN0YW5jZT8uaGludD8ucG9zaXRpb24gPT09IFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uLklOUFVUXHJcbiAgICAgIFwiXHJcbiAgICAgID57eyB3aWRnZXRJbnN0YW5jZS5oaW50Py50ZXh0IH19PC9tYXQtaGludFxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS50eXBlID09PSBzbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUlwiIGNsYXNzPVwid2lkZ2V0Q29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb250YWluZXJcIiAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiPlxyXG4gICAgICA8aDQgY2xhc3M9XCJ7eyBsYWJlbENvbG9yIH19IHNtYXJ0LWZvcm0td2lkZ2V0LWxhYmVsXCI+XHJcbiAgICAgICAge3sgZ2V0V2lkZ2V0TGFiZWwod2lkZ2V0SW5zdGFuY2UpIH19XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIndpZGdldEluc3RhbmNlPy5oaW50Py5wb3NpdGlvbiA9PT0gU21hcnRXaWRnZXRIaW50UG9zaXRpb24uTEFCRUxcIj57e1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLmhpbnQ/LnRleHRcclxuICAgICAgfX08L21hdC1oaW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bGliLXNtYXJ0LW1vbnRoLXBpY2tlclxyXG4gICAgICBbd2lkZ2V0SW5zdGFuY2VdPVwid2lkZ2V0SW5zdGFuY2VcIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlWWVhck1vbnRoUGlja2VkKCRldmVudClcIlxyXG4gICAgPjwvbGliLXNtYXJ0LW1vbnRoLXBpY2tlcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==