mis-crystal-design-system 18.1.7-signal-16-test → 18.1.7-signal-16-test-2

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.
@@ -326,7 +326,7 @@ export class TzDrpContainerComponent {
326
326
  }, { allowSignalWrites: true });
327
327
  }
328
328
  ngOnInit() {
329
- console.log('ngOnInit');
329
+ console.log('ngOnInit 1');
330
330
  this.calculateMinMaxDays();
331
331
  this.initializeTimeValues();
332
332
  if (this.data()?.showPrevMonth && !this.isPreviousMonthDisabled) {
@@ -1073,4 +1073,4 @@ export class TzDrpContainerComponent {
1073
1073
  args: ["keydown.esc"]
1074
1074
  }] }); })();
1075
1075
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDrpContainerComponent, { className: "TzDrpContainerComponent" }); })();
1076
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotZHJwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcmFuZ2VwaWNrZXJfdjIvdHotZHJwLWNvbnRhaW5lci90ei1kcnAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVyYW5nZXBpY2tlcl92Mi90ei1kcnAtY29udGFpbmVyL3R6LWRycC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdwQyxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUE7QUFDOUQsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7SUNQdkMsQUFERiwyQkFBMEQsaUJBS3ZEO0lBRkMsb05BQVMsMkJBQWlCLEtBQUM7SUFHM0IsWUFDRjtJQUNGLEFBREUsaUJBQVMsRUFDTDs7OztJQU5KLGNBQWlFO0lBQWpFLGtHQUFpRTtJQUkvRCxjQUNGO0lBREUsOENBQ0Y7Ozs7SUFSSiwrQkFBNEY7SUFDMUYsK0VB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QUEwQztZQUExQyw4S0FBMEM7WUFvQjFDLGVBRUU7WUFGRixvRkFFRTtZQVNHLGVBQStDO1lBQS9DLGlGQUErQztZQVNwRCxlQUVFO1lBRkYsZ0ZBRUU7WUFZa0UsZUFBYTtZQUFiLHdDQUFhO1lBZS9ELGVBQXNCO1lBQXRCLGlEQUFzQjtZQWdCbkMsZUFBeUM7WUFBekMsMkVBQXlDO1lBTTlDLGNBRUU7WUFGRixnRkFFRTtZQVlrRSxlQUFhO1lBQWIsd0NBQWE7WUFlL0QsZUFBbUI7WUFBbkIsOENBQW1CO1lBZ0JDLGNBQXlDO1lBQXpDLDhEQUF5QztZQW9FTCxlQUE0QjtZQUE1Qiw4Q0FBNEI7OztpRkR0TG5HLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLFlBQVk7O3NCQXlFVCxNQUFNO3VCQUFDLGNBQWM7Z0RBNEZsQyxVQUFVO2tCQURULFlBQVk7bUJBQUMsYUFBYTs7a0ZBaEtoQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXJhbmdlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5LCBJU2VsZWN0ZWREYXRlc0NvbmZpZywgUmFuZ2VJdGVtIH0gZnJvbSBcIi4uL21vZGVscy9kcnAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcblxuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IGlzU2FtZU9yQWZ0ZXIgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQWZ0ZXInO1xuaW1wb3J0IGlzU2FtZU9yQmVmb3JlIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckJlZm9yZSc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0J1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcbmRheWpzLmV4dGVuZChpc0JldHdlZW4pO1xuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcbmRheWpzLmV4dGVuZChpc1NhbWVPckFmdGVyKTtcbmRheWpzLmV4dGVuZChpc1NhbWVPckJlZm9yZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdHotZHJwXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdHotZHJwLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdHotZHJwLWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUekRycENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ1VTVE9NX1JBTkdFX0xBQkVMID0gXCJDdXN0b20gUmFuZ2VcIjtcbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxJRGF0ZVBpY2tlckRhdGE+KHRoaXMuaW5qZWN0ZWREYXRhKTtcbiAgcHJpdmF0ZSBkYXlqc0luc3RhbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICByZXR1cm4gZGF5anMoLi4uYXJncyk7XG4gIH07XG4gIHByaXZhdGUgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuICBcbiAgLy8gU2lnbmFsLWJhc2VkIHN0YXRlIG1hbmFnZW1lbnRcbiAgcHJpdmF0ZSByZWFkb25seSB3ZWVrRGF5c1NpZ25hbCA9IHNpZ25hbDxJV2Vla0RheVtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudE1vbnRoU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGg+KFwiSmFudWFyeVwiKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50WWVhck51bWJlclNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRNb250aERhdGVzU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGhEYXRlc1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV4dE1vbnRoTnVtYmVyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV4dE1vbnRoU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGg+KFwiSmFudWFyeVwiKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXh0WWVhck51bWJlclNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IG5leHRNb250aERhdGVzU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGhEYXRlc1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNQcmV2aW91c01vbnRoRGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzTmV4dE1vbnRoRGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvblN0YXJ0ZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCA9IHNpZ25hbDxJU2VsZWN0ZWREYXRlc0NvbmZpZz4oeyBzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGwgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNEYXRlc1ZhbGlkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbCA9IHNpZ25hbDxzdHJpbmc+KHRoaXMuQ1VTVE9NX1JBTkdFX0xBQkVMKTtcbiAgXG4gIC8vIFRpbWUgc2VsZWN0aW9uIHNpZ25hbHNcbiAgcmVhZG9ubHkgc3RhcnRIb3VyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMTIpO1xuICByZWFkb25seSBzdGFydE1pbnV0ZVNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICByZWFkb25seSBzdGFydEFtUG1TaWduYWwgPSBzaWduYWw8c3RyaW5nPignQU0nKTtcbiAgcmVhZG9ubHkgZW5kSG91clNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDEyKTtcbiAgcmVhZG9ubHkgZW5kTWludXRlU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IGVuZEFtUG1TaWduYWwgPSBzaWduYWw8c3RyaW5nPignQU0nKTtcbiAgcmVhZG9ubHkgc3RhcnRIb3VyMjRTaWduYWwgPSBzaWduYWw8bnVtYmVyPigxMik7XG4gIHJlYWRvbmx5IGVuZEhvdXIyNFNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDEyKTtcbiAgXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXMgZm9yIHRlbXBsYXRlIGFjY2Vzc1xuICB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMud2Vla0RheXNTaWduYWwoKSk7XG4gIGN1cnJlbnRNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRNb250aFNpZ25hbCgpKTtcbiAgY3VycmVudFllYXJOdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpO1xuICBuZXh0TW9udGhOdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5leHRNb250aE51bWJlclNpZ25hbCgpKTtcbiAgbmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uZXh0TW9udGhTaWduYWwoKSk7XG4gIG5leHRZZWFyTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbCgpKTtcbiAgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkU2lnbmFsKCkpO1xuICBpc05leHRNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc05leHRNb250aERpc2FibGVkU2lnbmFsKCkpO1xuICBzZWxlY3Rpb25TdGFydGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3Rpb25TdGFydGVkU2lnbmFsKCkpO1xuICBsb2NhbFNlbGVjdGVkRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpKTtcbiAgaXNEYXRlc1ZhbGlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwoKSk7XG4gIHNlbGVjdGVkSXRlbUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbCgpKTtcbiAgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gRGVwZW5kZW5jaWVzOiBjdXJyZW50TW9udGhOdW1iZXJTaWduYWwsIGN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLCBsb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWxcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSk7XG4gIH0pO1xuICBuZXh0TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIC8vIERlcGVuZGVuY2llczogbmV4dE1vbnRoTnVtYmVyU2lnbmFsLCBuZXh0WWVhck51bWJlclNpZ25hbCwgbG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsXG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwoKSk7XG4gIH0pO1xuXG5cbiAgLy8gVGltZSBmdW5jdGlvbmFsaXR5IGNvbXB1dGVkIHByb3BlcnRpZXNcbiAgc3RhcnRIb3VyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFydEhvdXJTaWduYWwoKSk7XG4gIHN0YXJ0TWludXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFydE1pbnV0ZVNpZ25hbCgpKTtcbiAgc3RhcnRBbVBtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFydEFtUG1TaWduYWwoKSk7XG4gIGVuZEhvdXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVuZEhvdXJTaWduYWwoKSk7XG4gIGVuZE1pbnV0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW5kTWludXRlU2lnbmFsKCkpO1xuICBlbmRBbVBtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbmRBbVBtU2lnbmFsKCkpO1xuICBzdGFydEhvdXIyNCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhcnRIb3VyMjRTaWduYWwoKSk7XG4gIGVuZEhvdXIyNCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW5kSG91cjI0U2lnbmFsKCkpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIHByaXZhdGUgaW5qZWN0ZWREYXRhOiBJRGF0ZVBpY2tlckRhdGEsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSkge1xuICAgIHRoaXMuZGF0YSA9IHNpZ25hbDxJRGF0ZVBpY2tlckRhdGE+KHRoaXMuaW5qZWN0ZWREYXRhKTsgXG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwuc2V0KHRoaXMuZGF0YSgpLmRhdGVzKTtcbiAgICB0aGlzLmlzRGF0ZXNWYWxpZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLmRhdGEoKS5kYXRlcy5zdGFydERhdGUgJiYgdGhpcy5kYXRhKCkuZGF0ZXMuZW5kRGF0ZSkge1xuICAgICAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KHRydWUpO1xuICAgIH1cbiAgICBcbiAgICAvLyBJbml0aWFsaXplIHNlbGVjdGVkSXRlbUxhYmVsIGZyb20gZGF0YS5zZWxlY3RlZFJhbmdlTGFiZWwgaWYgYXZhaWxhYmxlXG4gICAgaWYgKHRoaXMuZGF0YSgpLnNlbGVjdGVkUmFuZ2VMYWJlbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbC5zZXQodGhpcy5kYXRhKCkuc2VsZWN0ZWRSYW5nZUxhYmVsKTtcbiAgICB9XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBkYXlqc0luc3RhbmNlIHdpdGggdGltZXpvbmUgaGFuZGxpbmdcbiAgICBpZiAodGhpcy5kYXRhKCk/LmRwQ29uZmlnPy50aW1lem9uZSkge1xuICAgICAgdGhpcy5kYXlqc0luc3RhbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZGF5anMudHooYXJnc1swXSwgYXJnc1sxXSB8fCAnREQvTU0vWVlZWScsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLnRpbWV6b25lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHBhcnNpbmcgZGF0ZSB3aXRoIHRpbWV6b25lOicsIGVycm9yLCAnYXJnczonLCBhcmdzKTtcbiAgICAgICAgICByZXR1cm4gZGF5anMoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzIHNhZmVseSB1c2luZyBzaWduYWxzXG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXMuZGF5anNJbnN0YW5jZSgpLm1vbnRoKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzLmRheWpzSW5zdGFuY2UoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMubmV4dE1vbnRoU2lnbmFsLnNldChnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlclNpZ25hbCgpKSk7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5kYXlqc0luc3RhbmNlKCkueWVhcigpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsLnNldCh0aGlzLmRheWpzSW5zdGFuY2UoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICAgIHRoaXMud2Vla0RheXNTaWduYWwuc2V0KHRoaXMucmF3V2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke2RheVswXX0ke2RheS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBpc0N1cnJlbnREYXk6IHRoaXMuZGF5anNJbnN0YW5jZSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKSk7XG4gICAgXG4gICAgaWYgKCF0aGlzLmRhdGEoKT8uZHBDb25maWc/LmZvcm1hdCkge1xuICAgICAgdGhpcy5kYXRhKCkuZHBDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGF0YSgpLmRwQ29uZmlnLFxuICAgICAgICBmb3JtYXQ6IERBVEVfRk9STUFUXG4gICAgICB9O1xuICAgIH1cblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBsb2NhbFNlbGVjdGVkRGF0ZXMgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpO1xuICAgICAgbGV0IHNlbGVjdGVkU3RhcnREYXRlOiBEYXlqcztcblxuICAgICAgaWYgKGxvY2FsU2VsZWN0ZWREYXRlcz8uc3RhcnREYXRlKSB7XG4gICAgICAgICAgLy8gVXNlIHRoZSByb2J1c3QgaGVscGVyIGZvciBwYXJzaW5nXG4gICAgICAgICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMobG9jYWxTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdGVkU3RhcnREYXRlID0gZGF5anMoJ2ludmFsaWQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGVkU3RhcnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHNlbGVjdGVkU3RhcnREYXRlLnllYXIoKSk7XG4gICAgICAgICAgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbC5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQoc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikpO1xuICAgICAgICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZEVuZERhdGUgPSBsb2NhbFNlbGVjdGVkRGF0ZXM/LmVuZERhdGUgPyB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMobG9jYWxTZWxlY3RlZERhdGVzLmVuZERhdGUpIDogbnVsbDtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBMb2dpYyBmb3IgbmV4dCBtb250aCBiZWluZyBzZXQgYnkgZW5kIGRhdGVcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRFbmREYXRlICYmIHNlbGVjdGVkRW5kRGF0ZS5pc1ZhbGlkKCkgJiYgc2VsZWN0ZWRFbmREYXRlLmlzQWZ0ZXIoc2VsZWN0ZWRTdGFydERhdGUsICdtb250aCcpKSB7XG4gICAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldChzZWxlY3RlZEVuZERhdGUubW9udGgoKSk7XG4gICAgICAgICAgICAgIHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwuc2V0KHNlbGVjdGVkRW5kRGF0ZS55ZWFyKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVwZGF0ZSBjYWxlbmRhciBkYXRlcyB0byByZWZsZWN0IHRoZSBzZWxlY3RlZCBkYXRlc1xuICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpKTtcbiAgICAgICAgICB0aGlzLm5leHRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXJTaWduYWwoKSwgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbCgpKSk7XG4gICAgICB9XG4gIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCduZ09uSW5pdCcpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRpbWVWYWx1ZXMoKTtcblxuICAgIGlmKHRoaXMuZGF0YSgpPy5zaG93UHJldk1vbnRoICYmICF0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkKXtcbiAgICAgIHRoaXMubmF2aWdhdGVNb250aCgnUFJFVklPVVMnKTtcbiAgICB9XG4gIH1cblxuICByZXRyYWN0RGF5TW9udGgoZGF5OiBhbnksIG1vbnRoOiBhbnksIHllYXI6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGAke2RheX0gJHttb250aH0gJHt5ZWFyfWA7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5lc2NcIilcbiAgY2xvc2VPbkVzYygpIHtcbiAgICB0aGlzLmNhbmNlbERhdGVQaWNrZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlTWluTWF4RGF5cygpIHtcbiAgICBjb25zdCBjdXJyZW50SW5zdGFuY2UgPSB0aGlzLmRheWpzSW5zdGFuY2UoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSk7XG4gICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICBpZiAobWluRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWRTaWduYWwuc2V0KG1pbkRhdGUuaXNTYW1lT3JBZnRlcihjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIikpO1xuICAgIH1cbiAgICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIGlmIChtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5pc05leHRNb250aERpc2FibGVkU2lnbmFsLnNldChtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKSk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVNb250aChkaXJlY3Rpb246IFwiTkVYVFwiIHwgXCJQUkVWSU9VU1wiKTogdm9pZCB7XG4gICAgbGV0IHRoaXNNb250aDogRGF5anMgPSBkYXlqcygpLnllYXIodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKS5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpKTtcbiAgICBpZiAoZGlyZWN0aW9uID09PSBcIk5FWFRcIikge1xuICAgICB0aGlzTW9udGggPSB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIik7XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiUFJFVklPVVNcIikge1xuICAgICB0aGlzTW9udGggPSB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXNNb250aC5tb250aCgpKTtcbiAgICB0aGlzLm5leHRNb250aE51bWJlclNpZ25hbC5zZXQodGhpc01vbnRoLmNsb25lKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gICAgdGhpcy5jdXJyZW50TW9udGhTaWduYWwuc2V0KGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpKTtcbiAgICB0aGlzLm5leHRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5uZXh0TW9udGhOdW1iZXIoKSkpO1xuICAgIGlmICh0aGlzLm5leHRNb250aE51bWJlclNpZ25hbCgpID09PSAwICYmIGRpcmVjdGlvbiA9PT0gXCJQUkVWSU9VU1wiKSB7XG4gICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSAtIDEpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSA9PT0gMTEgJiYgZGlyZWN0aW9uID09PSBcIk5FWFRcIikge1xuICAgICB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsLnNldCh0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsKCkgKyAxKTtcbiAgICB9ZWxzZSBpZiAodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSA9PT0gMCAmJiBkaXJlY3Rpb24gPT09IFwiTkVYVFwiKSB7XG4gICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSArIDEpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0TW9udGhOdW1iZXJTaWduYWwoKSA9PT0gMTEgJiYgZGlyZWN0aW9uID09PSBcIlBSRVZJT1VTXCIpIHtcbiAgICAgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5uZXh0WWVhck51bWJlclNpZ25hbCgpIC0gMSk7XG4gICAgfWVsc2V7XG4gICAgIHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpKTtcbiAgICB0aGlzLm5leHRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIoKSwgdGhpcy5uZXh0WWVhck51bWJlcigpKSk7XG4gICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMoZGF0ZVN0cmluZzogc3RyaW5nKTogZGF5anMuRGF5anMge1xuICAgIGlmICghZGF0ZVN0cmluZyB8fCBkYXRlU3RyaW5nID09PSAnSW52YWxpZCBEYXRlJyB8fCBkYXRlU3RyaW5nID09PSAndW5kZWZpbmVkJyB8fCBkYXRlU3RyaW5nID09PSAnbnVsbCcpIHtcbiAgICAgICAgcmV0dXJuIGRheWpzKCdpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJlZEZvcm1hdCA9IHRoaXMuZGF0YSgpPy5kcENvbmZpZz8uZm9ybWF0O1xuICAgIGlmIChjb25maWd1cmVkRm9ybWF0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhkYXRlU3RyaW5nLCBjb25maWd1cmVkRm9ybWF0KTtcbiAgICAgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIENvbnRpbnVlIHRvIGZhbGxiYWNrIGZvcm1hdHNcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZhbGxiYWNrRm9ybWF0cyA9IFtcbiAgICAgICAgJ0REL01NTS9ZWVlZJywgJ0REL01NL1lZWVknLCAnREQtTU1NLVlZWVknLCAnREQtTU0tWVlZWScsICdZWVlZLU1NLUREJ1xuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBmYWxsYmFja0Zvcm1hdHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IGRheWpzKGRhdGVTdHJpbmcsIGZvcm1hdCk7XG4gICAgICAgICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBDb250aW51ZSB0byBuZXh0IGZvcm1hdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gZGF5anMoZGF0ZVN0cmluZyk7XG4gICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gcGFyc2UgZGF0ZSB3aXRoIGFueSBmb3JtYXQ6JywgZGF0ZVN0cmluZywgZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXlqcygnaW52YWxpZCcpO1xufVxuXG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURhdGVzKG1vbnRoOiBudW1iZXIsIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXIpOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSB7XG4gICAgbGV0IGRhdGVzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSA9IFtdO1xuICAgIGNvbnN0IGRheXNJbk1vbnRoID0gZGF5anMoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF5c0luTW9udGgoKTtcbiAgICBmb3IgKGxldCBjdXJyZW50RGF0ZSA9IDE7IGN1cnJlbnREYXRlIDw9IGRheXNJbk1vbnRoOyBjdXJyZW50RGF0ZSsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gZGF5anMoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF0ZShjdXJyZW50RGF0ZSk7XG4gICAgICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGxldCBpc0Rpc2FibGVkRGF5ID0gdGhpcy5kYXRhKCkuZGF0ZXNEaXNhYmxlZC5zb21lKGQgPT4gZCA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICAvLyBQYXJzZSBtaW4vbWF4IGRhdGVzIHNhZmVseSAtIHRyeSBkYXRlLW9ubHkgZm9ybWF0IGZpcnN0LCB0aGVuIGZ1bGwgZm9ybWF0XG4gICAgICBsZXQgbWluRGF0ZSA9IG51bGw7XG4gICAgICBsZXQgbWF4RGF0ZSA9IG51bGw7XG4gICAgICBcbiAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbWluRGF0ZVN0ciA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUuc3BsaXQoJyAnKVswXTtcbiAgICAgICAgICBtaW5EYXRlID0gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKG1pbkRhdGVTdHIpO1xuICAgICAgICAgIGlmICghbWluRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIG1pbkRhdGUgPSBkYXlqcyh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHBhcnNpbmcgbWluIGRhdGU6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbWF4RGF0ZVN0ciA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUuc3BsaXQoJyAnKVswXTtcbiAgICAgICAgICBtYXhEYXRlID0gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKG1heERhdGVTdHIpO1xuICAgICAgICAgIGlmICghbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIG1heERhdGUgPSBkYXlqcyh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHBhcnNpbmcgbWF4IGRhdGU6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtaW5EYXRlICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNEaXNhYmxlZERheSA9IG1pbkRhdGUuaXNBZnRlcihkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtYXhEYXRlICYmIG1heERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5kYXRhKCk/LmRwQ29uZmlnPy5tYXhBbGxvd2VkUmFuZ2UgPiAwICYmXG4gICAgICAgICFpc0Rpc2FibGVkRGF5ICYmXG4gICAgICAgICh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpPy5zdGFydERhdGUgPz8gZmFsc2UpICYmICghKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuZW5kRGF0ZSA/PyBmYWxzZSkpXG4gICAgICApIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LnN0YXJ0RGF0ZSkuc3RhcnRPZignZGF5Jyk7XG4gICAgICAgIGNvbnN0IG1heEVuZERhdGUgPSBzdGFydERhdGUuY2xvbmUoKS5hZGQodGhpcy5kYXRhKCkuZHBDb25maWcubWF4QWxsb3dlZFJhbmdlIC0gMSwgJ2RheXMnKTtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IGRhdGUuaXNBZnRlcihtYXhFbmREYXRlLCAnZGF5JykgXG4gICAgICB9XG4gICAgICBjb25zdCBpc0N1cnJlbnREYXkgPVxuICAgICAgICB0aGlzLmRheWpzSW5zdGFuY2UoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF0ZShjdXJyZW50RGF0ZSkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09XG4gICAgICAgIHRoaXMuZGF5anNJbnN0YW5jZSgpLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgXG4gICAgICAvLyBFeHRyYWN0IGRhdGUgcGFydCBmb3IgY29tcGFyaXNvbiAoaGFuZGxlIGJvdGggZGF0ZS1vbmx5IGFuZCBkYXRldGltZSBmb3JtYXRzKVxuICAgICAgY29uc3Qgc3RhcnREYXRlU3RyaW5nID0gKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LnN0YXJ0RGF0ZSAmJiB0eXBlb2YgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKT8uc3RhcnREYXRlID09PSAnc3RyaW5nJykgXG4gICAgICAgID8gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5zdGFydERhdGUuc3BsaXQoJyAnKVswXSBcbiAgICAgICAgOiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpPy5zdGFydERhdGU7XG4gICAgICBjb25zdCBlbmREYXRlU3RyaW5nID0gKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LmVuZERhdGUgJiYgdHlwZW9mIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LmVuZERhdGUgPT09ICdzdHJpbmcnKSBcbiAgICAgICAgPyB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLmVuZERhdGUuc3BsaXQoJyAnKVswXSBcbiAgICAgICAgOiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpPy5lbmREYXRlO1xuICAgICAgXG4gICAgICAvLyBVc2UgdGhlIGN1c3RvbSBmb3JtYXQgZm9yIGNvbXBhcmlzb24gaW5zdGVhZCBvZiBoYXJkY29kZWQgREQvTU0vWVlZWVxuICAgICAgXG4gICAgICBjb25zdCBzdGFydERhdGVQYXJzZWQgPSBzdGFydERhdGVTdHJpbmcgPyB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMoc3RhcnREYXRlU3RyaW5nKSA6IG51bGw7XG4gICAgICBjb25zdCBlbmREYXRlUGFyc2VkID0gZW5kRGF0ZVN0cmluZyA/IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyhlbmREYXRlU3RyaW5nKSA6IG51bGw7XG4gICAgICBcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRTdGFydERheSA9XG4gICAgICAgICAgIWlzRGlzYWJsZWREYXkgJiZcbiAgICAgICAgICBzdGFydERhdGVQYXJzZWQgJiZcbiAgICAgICAgICBzdGFydERhdGVQYXJzZWQuaXNWYWxpZCgpICYmXG4gICAgICAgICAgZGF0ZS5pc1NhbWUoc3RhcnREYXRlUGFyc2VkLCAnZGF5Jyk7XG4gICAgICAgICAgXG4gICAgICBjb25zdCBpc1NlbGVjdGVkRW5kRGF5ID1cbiAgICAgICAgICAhaXNEaXNhYmxlZERheSAmJlxuICAgICAgICAgIGVuZERhdGVQYXJzZWQgJiZcbiAgICAgICAgICBlbmREYXRlUGFyc2VkLmlzVmFsaWQoKSAmJlxuICAgICAgICAgIGRhdGUuaXNTYW1lKGVuZERhdGVQYXJzZWQsICdkYXknKTtcblxuICAgICAgICBcbiAgICAgIC8vIEZvciByYW5nZSBjYWxjdWxhdGlvbiwgcGFyc2UgZGF0ZXMgcHJvcGVybHkgdXNpbmcgY3VzdG9tIGZvcm1hdFxuICAgICAgY29uc3QgaXNBZnRlclNlbGVjdGVkU3RhcnREYXRlID0gc3RhcnREYXRlUGFyc2VkID8gdGhpcy5kYXlqc0luc3RhbmNlKGRhdGUpLmlzQWZ0ZXIoc3RhcnREYXRlUGFyc2VkLCBcImRheVwiKSA6IGZhbHNlO1xuICAgICAgY29uc3QgaXNCZWZvcmVTZWxlY3RlZEVuZERhdGUgPSBlbmREYXRlUGFyc2VkID8gdGhpcy5kYXlqc0luc3RhbmNlKGRhdGUpLmlzQmVmb3JlKGVuZERhdGVQYXJzZWQsIFwiZGF5XCIpIDogZmFsc2U7XG5cbiAgICAgIFxuICAgICAgY29uc3QgaW5SYW5nZURheSA9XG4gICAgICBzdGFydERhdGVQYXJzZWQgJiYgZW5kRGF0ZVBhcnNlZCAmJlxuICAgICAgc3RhcnREYXRlUGFyc2VkLmlzVmFsaWQoKSAmJiBlbmREYXRlUGFyc2VkLmlzVmFsaWQoKSAmJlxuICAgICAgaXNBZnRlclNlbGVjdGVkU3RhcnREYXRlICYmXG4gICAgICBpc0JlZm9yZVNlbGVjdGVkRW5kRGF0ZTtcbiAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICBkYXRlOiBjdXJyZW50RGF0ZSxcbiAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICBpc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgIGluUmFuZ2VEYXksXG4gICAgICAgIHRvYXN0TWVzc2FnZTogdGhpcy5kYXRhKCkubWVzc2FnZXMuZmluZChxID0+IGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHEuZGF0ZSk/Lm1lc3NhZ2UgfHwgXCJcIixcbiAgICAgICAgaXNEaXNhYmxlZERheVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSBkYXRlc1swXS53ZWVrRGF5OyBpID4gMDsgaS0tKSB7XG4gICAgICBkYXRlcy51bnNoaWZ0KHsgZGF0ZTogMCwgd2Vla0RheTogaSAtIDEgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG5zZWxlY3REYXkoZnJvbTogXCJMRUZUXCIgfCBcIlJJR0hUXCIsIGRheTogSUN1cnJlbnRNb250aERhdGVzKSB7XG4gICAgXG4gIGlmIChkYXkuZGF0ZSA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFkYXkuaXNEaXNhYmxlZERheSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbC5zZXQodGhpcy5DVVNUT01fUkFOR0VfTEFCRUwpO1xuICAgICAgXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIGRheSBiZWluZyBzZWxlY3RlZFxuICAgICAgY29uc3QgZGF5anNEYXkgPSBkYXlqcygpXG4gICAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLmRhdGUoZGF5LmRhdGUpO1xuICAgICAgXG4gICAgICBsZXQgZm9ybWF0dGVkRGF0ZSA9IGRheWpzRGF5LmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgXG4gICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbC51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgICAgbGV0IHVwZGF0ZWREYXRlcyA9IHsgLi4uY3VycmVudCB9O1xuXG4gICAgICAgICAgLy8gU3RhcnQgRGF0ZSBmb3IgY29tcGFyaXNvbiAodXNpbmcgaGVscGVyIGZvciByb2J1c3QgY2hlY2spXG4gICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gY3VycmVudC5zdGFydERhdGUgPyB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMoY3VycmVudC5zdGFydERhdGUpIDogbnVsbDtcblxuICAgICAgICAgIC8vIEZJWCA0OiBBcHBlbmQgdGltZSBpZiBlbmFibGVkXG4gICAgICAgICAgaWYgKHRoaXMuZGF0YSgpLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgLy8gVGhlIHRpbWUgaXMgc2V0IHRvIE5PVywgYXMgcGVyIG9yaWdpbmFsIG5vbi1zaWduYWwgY29tcG9uZW50J3MgbG9naWNcbiAgICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuYXBwZW5kQ3VycmVudFRpbWUoZGF5anNEYXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydGVkKCkpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGVkIGRhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIHN0YXJ0IGRhdGUgKE5ldyBpbiB5b3VyIHByZXZpb3VzIHNpZ25hbCBjb2RlLCBidXQgdmFsaWQpXG4gICAgICAgICAgICAgIGlmIChzdGFydERhdGUgJiYgZGF5anNEYXkuaXNTYW1lKHN0YXJ0RGF0ZSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KHRydWUpOyAvLyBNYW51YWxseSBzZXR0aW5nIHZhbGlkaXR5IChjYW4gYmUgY29tcHV0ZWQgbGF0ZXIpXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZTogZm9ybWF0dGVkRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlOiBmb3JtYXR0ZWREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VMYWJlbDogdGhpcy5DVVNUT01fUkFOR0VfTEFCRUxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCBkYXRlIGlzIGJlZm9yZSB0aGUgc3RhcnQgZGF0ZSwgbWFrZSBpdCB0aGUgbmV3IHN0YXJ0IGRhdGVcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBkYXlqc0RheS5pc0JlZm9yZShzdGFydERhdGUsIFwiZGF5XCIpKSB7XG4gICAgICAgICAgICAgICAgICAvLyBTdGFydCBzZWxlY3Rpb24gb3ZlclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZTogZm9ybWF0dGVkRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VMYWJlbDogdGhpcy5DVVNUT01fUkFOR0VfTEFCRUxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vIEVuZCBzZWxlY3Rpb25cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICBlbmREYXRlOiBmb3JtYXR0ZWREYXRlLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZUxhYmVsOiB0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFN0YXJ0IHNlbGVjdGlvblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgc3RhcnREYXRlOiBmb3JtYXR0ZWREYXRlLFxuICAgICAgICAgICAgICAgICAgZW5kRGF0ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VMYWJlbDogdGhpcy5DVVNUT01fUkFOR0VfTEFCRUxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gVGhlIGRhdGUgYXJyYXlzIGFyZSBDT01QVVRFRCwgc28gbm8gbmVlZCBmb3IgbWFudWFsIHNldCgpXG4gICAgICB0aGlzLmlzRGF0ZXNWYWxpZFNpZ25hbC5zZXQoISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5lbmREYXRlKSk7XG4gIH1cbiAgaWYgKGRheS50b2FzdE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMudG9hc3QuZGlzcGxheU1zZyhkYXkudG9hc3RNZXNzYWdlLCA0MDAwKTtcbiAgfVxufVxuXG4vLyBIZWxwZXIgbWV0aG9kIHRvIGFwcGVuZCBjdXJyZW50IHRpbWUgKHJlcGxpY2F0ZXMgb3JpZ2luYWwgc2VsZWN0RGF5IGNvbXBsZXggZm9ybWF0dGluZyBsb2dpYylcbnByaXZhdGUgYXBwZW5kQ3VycmVudFRpbWUoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xuICBpZiAoIXRoaXMuZGF0YSgpLmRwQ29uZmlnLmVuYWJsZVRpbWUpIHJldHVybiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gIC8vIFRoaXMgY29tcGxleCBmb3JtYXR0aW5nIGxvZ2ljIG11c3QgYmUgcmVwbGljYXRlZCBleGFjdGx5IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IHRpbWVTdGFydE1hdGNoID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0Lm1hdGNoKC8oXFxzKykoSEh8bW18c3N8QXxhKS8pO1xuICBcbiAgaWYgKHRpbWVTdGFydE1hdGNoKSB7XG4gICAgICBjb25zdCB0aW1lU3RhcnRJbmRleCA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdC5pbmRleE9mKHRpbWVTdGFydE1hdGNoWzBdKTtcbiAgICAgIGNvbnN0IGRhdGVPbmx5Rm9ybWF0ID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LnN1YnN0cmluZygwLCB0aW1lU3RhcnRJbmRleCk7XG4gICAgICBjb25zdCB0aW1lT25seUZvcm1hdCA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdC5zdWJzdHJpbmcodGltZVN0YXJ0SW5kZXggKyB0aW1lU3RhcnRNYXRjaFsxXS5sZW5ndGgpO1xuICAgICAgXG4gICAgICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZS5mb3JtYXQoZGF0ZU9ubHlGb3JtYXQpO1xuICAgICAgY29uc3QgdGltZVN0cmluZyA9IG5vdy5mb3JtYXQodGltZU9ubHlGb3JtYXQpO1xuICAgICAgcmV0dXJuIGRhdGVTdHJpbmcgKyB0aW1lU3RhcnRNYXRjaFsxXSArIHRpbWVTdHJpbmc7XG4gIH1cbiAgLy8gRmFsbGJhY2sgaWYgbm8gdGltZSBwYXR0ZXJuIGZvdW5kXG4gIHJldHVybiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xufVxuXG5zZWxlY3RSYW5nZShpdGVtOiBSYW5nZUl0ZW0pIHtcbiAgaWYgKCFpdGVtKSByZXR1cm47XG5cbiAgbGV0IHN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZShpdGVtLnZhbHVlWzBdKTtcbiAgbGV0IGVuZERhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoaXRlbS52YWx1ZVsxXSk7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnREYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICBjb25zdCBlbmREYXRlU3RyID0gZW5kRGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcblxuICAvLyBOb3RlOiBUaGUgb3JpZ2luYWwgZGF0ZXNEaXNhYmxlZCBjaGVjayB1c2VzIHRoZSBjdXN0b20gZGF5anNJbnN0YW5jZSwgd2hpY2ggaXMgZ29vZC5cbiAgY29uc3QgaXNBbnlEYXRlRGlzYWJsZWQgPSB0aGlzLmRhdGEoKS5kYXRlc0Rpc2FibGVkLnNvbWUoKGRhdGUpID0+XG4gICAgICB0aGlzLmRheWpzSW5zdGFuY2UoZGF0ZSAsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkuaXNCZXR3ZWVuKHN0YXJ0RGF0ZVN0ciwgZW5kRGF0ZVN0ciwgbnVsbCwgJ1tdJylcbiAgKTtcbiAgXG4gIC8vIEZJWCA0OiBVc2Ugcm9idXN0IHBhcnNpbmcgZm9yIG1pbkRhdGUvbWF4RGF0ZSBjb21wYXJpc29uXG4gIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUgPyB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSkgOiBkYXlqcygnaW52YWxpZCcpO1xuICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUpIDogZGF5anMoJ2ludmFsaWQnKTtcblxuICBjb25zdCBpc1dpdGhpbkxpbWl0cyA9XG4gICAgICAoIW1pbkRhdGUuaXNWYWxpZCgpIHx8ICFzdGFydERhdGUuaXNCZWZvcmUobWluRGF0ZSwgXCJkYXlcIikpICYmXG4gICAgICAoIW1heERhdGUuaXNWYWxpZCgpIHx8ICFlbmREYXRlLmlzQWZ0ZXIobWF4RGF0ZSwgXCJkYXlcIikpO1xuXG4gIGlmICghaXNXaXRoaW5MaW1pdHMgfHwgaXNBbnlEYXRlRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudG9hc3QuZGlzcGxheU1zZyhcIlNlbGVjdGVkIHJhbmdlIGNvbnRhaW5zIGRpc2FibGVkIGRhdGVzIG9yIGlzIG91dCBvZiBib3VuZHMuXCIsIDQwMDApO1xuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbC5zZXQoaXRlbS5sYWJlbCk7XG4gIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldChzdGFydERhdGUubW9udGgoKSk7XG4gIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHN0YXJ0RGF0ZS55ZWFyKCkpO1xuXG4gIC8vIE1vbnRoL1llYXIgcm9sbG92ZXIgbG9naWMgaXMga2VwdCBhcyBpcyB0byBtYXRjaCBvcmlnaW5hbCBmdW5jdGlvbmFsaXR5XG4gIGlmICh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpID09PSAxMSkge1xuICAgICAgdGhpcy5uZXh0TW9udGhOdW1iZXJTaWduYWwuc2V0KDApO1xuICAgICAgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpICsgMSk7XG4gIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRNb250aE51bWJlclNpZ25hbC5zZXQodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSArIDEpO1xuICAgICAgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKTtcbiAgfVxuXG4gIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsLnNldCh7XG4gICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZVN0cixcbiAgICAgIGVuZERhdGU6IGVuZERhdGVTdHIsXG4gICAgICBzZWxlY3RlZFJhbmdlTGFiZWw6IGl0ZW0ubGFiZWxcbiAgfSk7XG4gIC8vIFRoZSBtb250aC9kYXRlIGNvbXB1dGVkIHByb3BlcnRpZXMgKGN1cnJlbnRNb250aCwgY3VycmVudE1vbnRoRGF0ZXMsIGV0Yy4pIFxuICAvLyB1cGRhdGUgYXV0b21hdGljYWxseSBub3cuXG5cbiAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KCEhKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuc3RhcnREYXRlICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuZW5kRGF0ZSkpO1xufVxuXG4gIHJlc2V0UmFuZ2UoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbC5zZXQodGhpcy5DVVNUT01fUkFOR0VfTEFCRUwpO1xuICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsLnNldCh7XG4gICAgICBzdGFydERhdGU6IG51bGwsXG4gICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgc2VsZWN0ZWRSYW5nZUxhYmVsOiB0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTFxuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXNEYXRlc1ZhbGlkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkpO1xuICAgIHRoaXMubmV4dE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlcigpLCB0aGlzLm5leHRZZWFyTnVtYmVyKCkpKTtcbiAgfVxuICBcbi8vIFR6RHJwQ29udGFpbmVyQ29tcG9uZW50IChTaWduYWwtTWlncmF0ZWQpXG5hcHBseURhdGVzKCkge1xuICAvLyBJZiB0aW1lIGlzIGVuYWJsZWQsIGFwcGVuZCB0aW1lIHRvIHRoZSBkYXRlcyBiZWZvcmUgYXBwbHlpbmdcbiAgaWYgKHRoaXMuZGF0YSgpLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgIGxldCBzdGFydFRpbWU6IHN0cmluZztcbiAgICAgIGxldCBlbmRUaW1lOiBzdHJpbmc7XG5cbiAgICAgIC8vIFVzZSBzaWduYWwgYWNjZXNzb3JzXG4gICAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAgICAgc3RhcnRUaW1lID0gdGhpcy5mb3JtYXRUaW1lKHRoaXMuc3RhcnRIb3VyKCksIHRoaXMuc3RhcnRNaW51dGUoKSwgdGhpcy5zdGFydEFtUG0oKSk7XG4gICAgICAgICAgZW5kVGltZSA9IHRoaXMuZm9ybWF0VGltZSh0aGlzLmVuZEhvdXIoKSwgdGhpcy5lbmRNaW51dGUoKSwgdGhpcy5lbmRBbVBtKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGFydFRpbWUgPSB0aGlzLmZvcm1hdFRpbWUodGhpcy5zdGFydEhvdXIyNCgpLCB0aGlzLnN0YXJ0TWludXRlKCksICcnKTtcbiAgICAgICAgICBlbmRUaW1lID0gdGhpcy5mb3JtYXRUaW1lKHRoaXMuZW5kSG91cjI0KCksIHRoaXMuZW5kTWludXRlKCksICcnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9jYWxEYXRlcyA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk7XG4gICAgICBsZXQgc3RhcnREYXRlT25seSA9IGxvY2FsRGF0ZXMuc3RhcnREYXRlO1xuICAgICAgbGV0IGVuZERhdGVPbmx5ID0gbG9jYWxEYXRlcy5lbmREYXRlO1xuICAgICAgXG4gICAgICAvLyBGSVggNDogVXNlIHJvYnVzdCBwYXJzaW5nL2Zvcm1hdHRpbmcgZm9yIGRhdGUgcGFydCBleHRyYWN0aW9uXG4gICAgICBpZiAoc3RhcnREYXRlT25seSkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZFN0YXJ0ID0gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKHN0YXJ0RGF0ZU9ubHkpO1xuICAgICAgICAgIC8vIFRoaXMgaXMgYSBjb21wbGV4IGRhdGUgZm9ybWF0IGV4dHJhY3Rpb24gaW4gdGhlIG9yaWdpbmFsLCBzaW1wbGlmaWVkIGhlcmUgXG4gICAgICAgICAgLy8gYnkgdGFraW5nIHRoZSBkYXRlIHBhcnQgb25seSAoYXNzdW1pbmcgdGltZSBpcyBhbHdheXMgc2VwYXJhdGVkIGJ5IHNwYWNlKVxuICAgICAgICAgIC8vIEZvciB0cnVlIGZpZGVsaXR5LCB0aGUgb3JpZ2luYWwgbG9naWMgZm9yIGRhdGUgcGFydCBleHRyYWN0aW9uIHdpdGggdGltZSBtdXN0IGJlIHByZXNlcnZlZC5cbiAgICAgICAgICBpZiAocGFyc2VkU3RhcnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIGRhdGUgZm9ybWF0dGluZyBsb2dpYzogZXh0cmFjdCBvbmx5IHRoZSBkYXRlIHBhcnQgXG4gICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBjb25maWd1cmVkIGZvcm1hdCBlbGVtZW50cyBCRUZPUkUgdGhlIHRpbWUgY29tcG9uZW50cy5cbiAgICAgICAgICAgICAgY29uc3QgdGltZVN0YXJ0TWF0Y2ggPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQubWF0Y2goLyhcXHMrKShISHxtbXxzc3xBfGEpLyk7XG4gICAgICAgICAgICAgIGlmICh0aW1lU3RhcnRNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVN0YXJ0SW5kZXggPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuaW5kZXhPZih0aW1lU3RhcnRNYXRjaFswXSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRlT25seUZvcm1hdCA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdC5zdWJzdHJpbmcoMCwgdGltZVN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgc3RhcnREYXRlT25seSA9IHBhcnNlZFN0YXJ0LmZvcm1hdChkYXRlT25seUZvcm1hdCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzcGxpdHRpbmcgaWYgZm9ybWF0IGlzIGRhdGUtb25seVxuICAgICAgICAgICAgICAgICAgc3RhcnREYXRlT25seSA9ICh0eXBlb2Ygc3RhcnREYXRlT25seSA9PT0gJ3N0cmluZycpID8gc3RhcnREYXRlT25seS5zcGxpdCgnICcpWzBdIDogc3RhcnREYXRlT25seTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlbmREYXRlT25seSkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZEVuZCA9IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyhlbmREYXRlT25seSk7XG4gICAgICAgICAgaWYgKHBhcnNlZEVuZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGltZVN0YXJ0TWF0Y2ggPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQubWF0Y2goLyhcXHMrKShISHxtbXxzc3xBfGEpLyk7XG4gICAgICAgICAgICAgIGlmICh0aW1lU3RhcnRNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVN0YXJ0SW5kZXggPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuaW5kZXhPZih0aW1lU3RhcnRNYXRjaFswXSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRlT25seUZvcm1hdCA9IHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdC5zdWJzdHJpbmcoMCwgdGltZVN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgZW5kRGF0ZU9ubHkgPSBwYXJzZWRFbmQuZm9ybWF0KGRhdGVPbmx5Rm9ybWF0KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGVuZERhdGVPbmx5ID0gKHR5cGVvZiBlbmREYXRlT25seSA9PT0gJ3N0cmluZycpID8gZW5kRGF0ZU9ubHkuc3BsaXQoJyAnKVswXSA6IGVuZERhdGVPbmx5O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBzdGFydERhdGVXaXRoVGltZSA9IHN0YXJ0RGF0ZU9ubHkgKyAnICcgKyBzdGFydFRpbWU7XG4gICAgICBjb25zdCBlbmREYXRlV2l0aFRpbWUgPSBlbmREYXRlT25seSArICcgJyArIGVuZFRpbWU7XG4gICAgICBcbiAgICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2Uoe1xuICAgICAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlV2l0aFRpbWUsXG4gICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZVdpdGhUaW1lXG4gICAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKSk7XG4gIH1cbn1cblxuICBcbiAgY2FuY2VsRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG4gIFxuICAvLyBUaW1lLXJlbGF0ZWQgbWV0aG9kc1xuICBvblN0YXJ0SG91cklucHV0KCkge1xuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldCh0aGlzLnZhbGlkYXRlSG91cklucHV0KHRoaXMuc3RhcnRIb3VyKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydEhvdXIyNFNpZ25hbC5zZXQodGhpcy52YWxpZGF0ZUhvdXJJbnB1dDI0KHRoaXMuc3RhcnRIb3VyMjQoKSkpO1xuICAgIH1cbiAgfVxuICBcbiAgb25TdGFydE1pbnV0ZUlucHV0KCkge1xuICAgIHRoaXMuc3RhcnRNaW51dGVTaWduYWwuc2V0KHRoaXMudmFsaWRhdGVNaW51dGVJbnB1dCh0aGlzLnN0YXJ0TWludXRlKCkpKTtcbiAgfVxuICBcbiAgb25FbmRIb3VySW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldCh0aGlzLnZhbGlkYXRlSG91cklucHV0KHRoaXMuZW5kSG91cigpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kSG91cjI0U2lnbmFsLnNldCh0aGlzLnZhbGlkYXRlSG91cklucHV0MjQodGhpcy5lbmRIb3VyMjQoKSkpO1xuICAgIH1cbiAgfVxuICBcbiAgb25FbmRNaW51dGVJbnB1dCgpIHtcbiAgICB0aGlzLmVuZE1pbnV0ZVNpZ25hbC5zZXQodGhpcy52YWxpZGF0ZU1pbnV0ZUlucHV0KHRoaXMuZW5kTWludXRlKCkpKTtcbiAgfVxuICBcbiAgdmFsaWRhdGVIb3VySW5wdXQoaG91cjogbnVtYmVyKSB7XG4gICAgLy8gQXBwbHkgYm91bmRzIGJhc2VkIG9uIGZvcm1hdFxuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIC8vIDEyLWhvdXIgZm9ybWF0OiAxLTEyXG4gICAgICBpZiAoaG91ciA8IDEpIGhvdXIgPSAxO1xuICAgICAgaWYgKGhvdXIgPiAxMikgaG91ciA9IDEyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAyNC1ob3VyIGZvcm1hdDogMC0yM1xuICAgICAgaWYgKGhvdXIgPCAwKSBob3VyID0gMDtcbiAgICAgIGlmIChob3VyID4gMjMpIGhvdXIgPSAyMztcbiAgICB9XG4gICAgcmV0dXJuIGhvdXI7XG4gIH1cbiAgXG4gIC8vIFNwZWNpYWwgdmFsaWRhdGlvbiBmb3IgMjQtaG91ciBmb3JtYXRcbiAgdmFsaWRhdGVIb3VySW5wdXQyNChob3VyOiBudW1iZXIpIHtcbiAgICBpZiAoaG91ciA8IDApIGhvdXIgPSAwO1xuICAgIGlmIChob3VyID4gMjMpIGhvdXIgPSAyMztcbiAgICByZXR1cm4gaG91cjtcbiAgfVxuICBcbiAgdmFsaWRhdGVNaW51dGVJbnB1dChtaW51dGU6IG51bWJlcikge1xuICAgIGlmIChtaW51dGUgPCAwKSBtaW51dGUgPSAwO1xuICAgIGlmIChtaW51dGUgPiA1OSkgbWludXRlID0gNTk7XG4gICAgcmV0dXJuIG1pbnV0ZTtcbiAgfVxuICBcbiAgcHVibGljIGlzMTJIb3VyRm9ybWF0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuaW5jbHVkZXMoJ0EnKSB8fCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuaW5jbHVkZXMoJ2EnKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIsIGFtUG06IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgcmV0dXJuIGAke2hvdXIudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9ICR7YW1QbX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3IgMjQtaG91ciBmb3JtYXQsIGp1c3QgcmV0dXJuIHRoZSBob3VyIGFuZCBtaW51dGVcbiAgICAgIHJldHVybiBgJHtob3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHttaW51dGUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGltZVZhbHVlcygpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsaXplIHRpbWUgdmFsdWVzIGZyb20gZXhpc3Rpbmcgc2VsZWN0ZWQgZGF0ZXMgaWYgdGhleSBjb250YWluIHRpbWVcbiAgICBsZXQgc3RhcnRUaW1lSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBsZXQgZW5kVGltZUluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgXG4gICAgaWYgKHRoaXMuZGF0YSgpLmRwQ29uZmlnLmVuYWJsZVRpbWUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5zdGFydERhdGUgJiYgdHlwZW9mIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuc3RhcnREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3Qgc3RhcnREYXRlUGFydHMgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLnN0YXJ0RGF0ZS5zcGxpdCgnICcpO1xuICAgICAgaWYgKHN0YXJ0RGF0ZVBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3QgdGltZVBhcnQgPSBzdGFydERhdGVQYXJ0cy5zbGljZSgxKS5qb2luKCcgJyk7IC8vIEhhbmRsZSBtdWx0aXBsZSBzcGFjZXNcbiAgICAgICAgdGhpcy5wYXJzZVRpbWVTdHJpbmcodGltZVBhcnQsIHRydWUpO1xuICAgICAgICBzdGFydFRpbWVJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmRhdGEoKS5kcENvbmZpZy5lbmFibGVUaW1lICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuZW5kRGF0ZSAmJiB0eXBlb2YgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5lbmREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgZW5kRGF0ZVBhcnRzID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5lbmREYXRlLnNwbGl0KCcgJyk7XG4gICAgICBpZiAoZW5kRGF0ZVBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3QgdGltZVBhcnQgPSBlbmREYXRlUGFydHMuc2xpY2UoMSkuam9pbignICcpOyAvLyBIYW5kbGUgbXVsdGlwbGUgc3BhY2VzXG4gICAgICAgIHRoaXMucGFyc2VUaW1lU3RyaW5nKHRpbWVQYXJ0LCBmYWxzZSk7XG4gICAgICAgIGVuZFRpbWVJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIElmIG5vIGV4aXN0aW5nIHRpbWUgZm91bmQsIHNldCBjdXJyZW50IHRpbWUgYXMgZGVmYXVsdFxuICAgIGlmICh0aGlzLmRhdGEoKS5kcENvbmZpZy5lbmFibGVUaW1lKSB7XG4gICAgICBpZiAoIXN0YXJ0VGltZUluaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFRpbWVBc0RlZmF1bHQodHJ1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoIWVuZFRpbWVJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRUaW1lQXNEZWZhdWx0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnJlbnRUaW1lQXNEZWZhdWx0KGlzU3RhcnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xuICAgIGNvbnN0IGN1cnJlbnRIb3VyID0gbm93LmhvdXIoKTtcbiAgICBjb25zdCBjdXJyZW50TWludXRlID0gbm93Lm1pbnV0ZSgpO1xuICAgIFxuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIC8vIENvbnZlcnQgY3VycmVudCB0aW1lIHRvIDEyLWhvdXIgZm9ybWF0XG4gICAgICBsZXQgaG91cjEyID0gY3VycmVudEhvdXI7XG4gICAgICBsZXQgYW1QbSA9ICdBTSc7XG4gICAgICBcbiAgICAgIGlmIChjdXJyZW50SG91ciA9PT0gMCkge1xuICAgICAgICBob3VyMTIgPSAxMjtcbiAgICAgICAgYW1QbSA9ICdBTSc7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID09PSAxMikge1xuICAgICAgICBob3VyMTIgPSAxMjtcbiAgICAgICAgYW1QbSA9ICdQTSc7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID4gMTIpIHtcbiAgICAgICAgaG91cjEyID0gY3VycmVudEhvdXIgLSAxMjtcbiAgICAgICAgYW1QbSA9ICdQTSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbVBtID0gJ0FNJztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGlzU3RhcnQpIHtcbiAgICAgICAgdGhpcy5zdGFydEhvdXJTaWduYWwuc2V0KGhvdXIxMik7XG4gICAgICAgIHRoaXMuc3RhcnRNaW51dGVTaWduYWwuc2V0KGN1cnJlbnRNaW51dGUpO1xuICAgICAgICB0aGlzLnN0YXJ0QW1QbVNpZ25hbC5zZXQoYW1QbSk7XG4gICAgICAgIHRoaXMuc3RhcnRIb3VyMjRTaWduYWwuc2V0KGN1cnJlbnRIb3VyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW5kSG91clNpZ25hbC5zZXQoaG91cjEyKTtcbiAgICAgICAgdGhpcy5lbmRNaW51dGVTaWduYWwuc2V0KGN1cnJlbnRNaW51dGUpO1xuICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KGFtUG0pO1xuICAgICAgICB0aGlzLmVuZEhvdXIyNFNpZ25hbC5zZXQoY3VycmVudEhvdXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgY3VycmVudCB0aW1lIGRpcmVjdGx5IGZvciAyNC1ob3VyIGZvcm1hdFxuICAgICAgaWYgKGlzU3RhcnQpIHtcbiAgICAgICAgdGhpcy5zdGFydEhvdXIyNFNpZ25hbC5zZXQoY3VycmVudEhvdXIpO1xuICAgICAgICB0aGlzLnN0YXJ0TWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgICAgLy8gQWxzbyBzZXQgMTItaG91ciB2YWx1ZXMgZm9yIGNvbnNpc3RlbmN5XG4gICAgICAgIGlmIChjdXJyZW50SG91ciA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldCgxMik7XG4gICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID09PSAxMikge1xuICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldCgxMik7XG4gICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID4gMTIpIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoY3VycmVudEhvdXIgLSAxMik7XG4gICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldChjdXJyZW50SG91cik7XG4gICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVuZEhvdXIyNFNpZ25hbC5zZXQoY3VycmVudEhvdXIpO1xuICAgICAgICB0aGlzLmVuZE1pbnV0ZVNpZ25hbC5zZXQoY3VycmVudE1pbnV0ZSk7XG4gICAgICAgIC8vIEFsc28gc2V0IDEyLWhvdXIgdmFsdWVzIGZvciBjb25zaXN0ZW5jeVxuICAgICAgICBpZiAoY3VycmVudEhvdXIgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KDEyKTtcbiAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID09PSAxMikge1xuICAgICAgICAgIHRoaXMuZW5kSG91clNpZ25hbC5zZXQoMTIpO1xuICAgICAgICAgIHRoaXMuZW5kQW1QbVNpZ25hbC5zZXQoJ1BNJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPiAxMikge1xuICAgICAgICAgIHRoaXMuZW5kSG91clNpZ25hbC5zZXQoY3VycmVudEhvdXIgLSAxMik7XG4gICAgICAgICAgdGhpcy5lbmRBbVBtU2lnbmFsLnNldCgnUE0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KGN1cnJlbnRIb3VyKTtcbiAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRpbWVTdHJpbmcodGltZVN0cmluZzogc3RyaW5nLCBpc1N0YXJ0OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgLy8gUGFyc2UgMTItaG91ciBmb3JtYXQ6IFwiMTA6MDAgUE1cIlxuICAgICAgY29uc3QgbWF0Y2ggPSB0aW1lU3RyaW5nLm1hdGNoKC8oXFxkKyk6KFxcZCspXFxzKihBTXxQTSkvaSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgaG91ciA9IHBhcnNlSW50KG1hdGNoWzFdKTtcbiAgICAgICAgY29uc3QgbWludXRlID0gcGFyc2VJbnQobWF0Y2hbMl0pO1xuICAgICAgICBjb25zdCBhbVBtID0gbWF0Y2hbM10udG9VcHBlckNhc2UoKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChpc1N0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5zdGFydEhvdXJTaWduYWwuc2V0KGhvdXIpO1xuICAgICAgICAgIHRoaXMuc3RhcnRNaW51dGVTaWduYWwuc2V0KG1pbnV0ZSk7XG4gICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KGFtUG0pO1xuICAgICAgICAgIC8vIEFsc28gc2V0IDI0LWhvdXIgdmFsdWUgZm9yIGNvbnNpc3RlbmN5XG4gICAgICAgICAgdGhpcy5zdGFydEhvdXIyNFNpZ25hbC5zZXQoaG91ciA9PT0gMTIgPyAoYW1QbSA9PT0gJ1BNJyA/IDEyIDogMCkgOiAoYW1QbSA9PT0gJ1BNJyA/IGhvdXIgKyAxMiA6IGhvdXIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KGhvdXIpO1xuICAgICAgICAgIHRoaXMuZW5kTWludXRlU2lnbmFsLnNldChtaW51dGUpO1xuICAgICAgICAgIHRoaXMuZW5kQW1QbVNpZ25hbC5zZXQoYW1QbSk7XG4gICAgICAgICAgLy8gQWxzbyBzZXQgMjQtaG91ciB2YWx1ZSBmb3IgY29uc2lzdGVuY3lcbiAgICAgICAgICB0aGlzLmVuZEhvdXIyNFNpZ25hbC5zZXQoaG91ciA9PT0gMTIgPyAoYW1QbSA9PT0gJ1BNJyA/IDEyIDogMCkgOiAoYW1QbSA9PT0gJ1BNJyA/IGhvdXIgKyAxMiA6IGhvdXIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQYXJzZSAyNC1ob3VyIGZvcm1hdDogXCIyMjowMFwiXG4gICAgICBjb25zdCBtYXRjaCA9IHRpbWVTdHJpbmcubWF0Y2goLyhcXGQrKTooXFxkKykvKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBob3VyMjQgPSBwYXJzZUludChtYXRjaFsxXSk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZSA9IHBhcnNlSW50KG1hdGNoWzJdKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChpc1N0YXJ0KSB7XG4gICAgICAgICAgLy8gU3RvcmUgZGlyZWN0bHkgaW4gMjQtaG91ciBmb3JtYXRcbiAgICAgICAgICB0aGlzLnN0YXJ0SG91cjI0U2lnbmFsLnNldChob3VyMjQpO1xuICAgICAgICAgIHRoaXMuc3RhcnRNaW51dGVTaWduYWwuc2V0KG1pbnV0ZSk7XG4gICAgICAgICAgLy8gQWxzbyBzZXQgMTItaG91ciB2YWx1ZXMgZm9yIGNvbnNpc3RlbmN5ICh0aG91Z2ggbm90IHVzZWQgaW4gMjQtaG91ciBtb2RlKVxuICAgICAgICAgIGlmIChob3VyMjQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldCgxMik7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QW1QbVNpZ25hbC5zZXQoJ0FNJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChob3VyMjQgPT09IDEyKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoMTIpO1xuICAgICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaG91cjI0ID4gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldChob3VyMjQgLSAxMik7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QW1QbVNpZ25hbC5zZXQoJ1BNJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldChob3VyMjQpO1xuICAgICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTdG9yZSBkaXJlY3RseSBpbiAyNC1ob3VyIGZvcm1hdFxuICAgICAgICAgIHRoaXMuZW5kSG91cjI0U2lnbmFsLnNldChob3VyMjQpO1xuICAgICAgICAgIHRoaXMuZW5kTWludXRlU2lnbmFsLnNldChtaW51dGUpO1xuICAgICAgICAgIC8vIEFsc28gc2V0IDEyLWhvdXIgdmFsdWVzIGZvciBjb25zaXN0ZW5jeSAodGhvdWdoIG5vdCB1c2VkIGluIDI0LWhvdXIgbW9kZSlcbiAgICAgICAgICBpZiAoaG91cjI0ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KDEyKTtcbiAgICAgICAgICAgIHRoaXMuZW5kQW1QbVNpZ25hbC5zZXQoJ0FNJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChob3VyMjQgPT09IDEyKSB7XG4gICAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KDEyKTtcbiAgICAgICAgICAgIHRoaXMuZW5kQW1QbVNpZ25hbC5zZXQoJ1BNJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChob3VyMjQgPiAxMikge1xuICAgICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldChob3VyMjQgLSAxMik7XG4gICAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KGhvdXIyNCk7XG4gICAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJcIiBhcmlhLWxhYmVsPVwiZGF0ZSByYW5nZSBwaWNrZXJcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIj5cbiAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3ZpZXdcIj5cbiAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImRhdGEoKT8uZHBDb25maWc/LnJhbmdlcz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fcmFuZ2VzXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEoKT8uZHBDb25maWc/LnJhbmdlcyA/PyBbXVwiID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZS1yYW5nZScgOiBzZWxlY3RlZEl0ZW1MYWJlbCgpID09PSBpdGVtLmxhYmVsfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJhbmdlKGl0ZW0pXCJcbiAgICAgICAgICBjbGFzcz1cIm1pcy1idG5cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj4gPGJ1dHRvbiBjbGFzcz1cIm1pcy1idG5cIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1yYW5nZScgOiBzZWxlY3RlZEl0ZW1MYWJlbCgpID09PSAnQ3VzdG9tIFJhbmdlJ31cIiAoY2xpY2spPVwicmVzZXRSYW5nZSgpXCI+Q3VzdG9tIFJhbmdlPC9idXR0b24+IDwvZGl2PlxuICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fbGVmdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2hlYWRlcl9fcHJhYnVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgKGNsaWNrKT1cIiFpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ1BSRVZJT1VTJylcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkKClcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBjdXJyZW50TW9udGgoKSB9fSB7eyBjdXJyZW50WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgPCEtLSBCdXR0b24gdmlzaWJsZSBpbiBtb2JpbGUgdmlldyAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb24gbW9iaWxlX3ZpZXdcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgKGNsaWNrKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IE1vbnRoXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkKClcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIiBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXNhbWUtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5LFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhKGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgZGF5LmlzU2VsZWN0ZWRFbmREYXkpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJywgZGF5KVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF5KCdMRUZUJywgZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXkuZGF0ZSA+IDBcIlxuICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZGF5LmlzRGlzYWJsZWREYXkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJldHJhY3REYXlNb250aChkYXkuZGF0ZSwgY3VycmVudE1vbnRoKCksIGN1cnJlbnRZZWFyTnVtYmVyKCkpXCI+XG4gICAgICAgICAgICAgIHt7IGRheS5kYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX3JpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgbmV4dE1vbnRoKCkgfX0ge3sgbmV4dFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2Fycm93X19pY29uIHBjX3ZpZXdcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgKGNsaWNrKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiIWlzTmV4dE1vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdORVhUJylcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdkaXNhYmxlZC1tb250aCc6IGlzTmV4dE1vbnRoRGlzYWJsZWQoKVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zYW1lLWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgZGF5LmlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zdGFydC1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5LFxuICAgICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAgICdpbi1yYW5nZS1kYXknOiBkYXkuaW5SYW5nZURheSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIG5leHRNb250aERhdGVzKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheSgnUklHSFQnLCBkYXkpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXkoJ1JJR0hUJywgZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXkuZGF0ZSA+IDBcIlxuICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZGF5LmlzRGlzYWJsZWREYXkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJldHJhY3REYXlNb250aChkYXkuZGF0ZSwgbmV4dE1vbnRoKCksIG5leHRZZWFyTnVtYmVyKCkpXCI+XG4gICAgICAgICAgICAgIHt7IGRheS5kYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBcbiAgPCEtLSBUaW1lIFNlbGVjdGlvbiBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fdGltZVwiICpuZ0lmPVwiZGF0YSgpLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1zZWN0aW9uXCI+XG4gICAgICA8aDQ+RnJvbTwvaDQ+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dHNcIj5cbiAgICAgICAgPGlucHV0IFxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcbiAgICAgICAgICBbbmdNb2RlbF09XCJpczEySG91ckZvcm1hdCgpID8gc3RhcnRIb3VyKCkgOiBzdGFydEhvdXIyNCgpXCIgXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaXMxMkhvdXJGb3JtYXQoKSA/IHN0YXJ0SG91clNpZ25hbC5zZXQoJGV2ZW50KSA6IHN0YXJ0SG91cjI0U2lnbmFsLnNldCgkZXZlbnQpOyBvblN0YXJ0SG91cklucHV0KClcIlxuICAgICAgICAgIFttaW5dPVwiaXMxMkhvdXJGb3JtYXQoKSA/IDEgOiAwXCIgXG4gICAgICAgICAgW21heF09XCJpczEySG91ckZvcm1hdCgpID8gMTIgOiAyM1wiIFxuICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICBjbGFzcz1cInRpbWUtaW5wdXQgaG91ci1pbnB1dFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJISFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtc2VwYXJhdG9yXCI+Ojwvc3Bhbj5cbiAgICAgICAgPGlucHV0IFxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcbiAgICAgICAgICBbbmdNb2RlbF09XCJzdGFydE1pbnV0ZSgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRNaW51dGVTaWduYWwuc2V0KCRldmVudClcIiBcbiAgICAgICAgICAoaW5wdXQpPVwib25TdGFydE1pbnV0ZUlucHV0KClcIlxuICAgICAgICAgIG1pbj1cIjBcIiBcbiAgICAgICAgICBtYXg9XCI1OVwiIFxuICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICBjbGFzcz1cInRpbWUtaW5wdXQgbWludXRlLWlucHV0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1NXCI+XG4gICAgICAgIDxzZWxlY3QgXG4gICAgICAgICAgW25nTW9kZWxdPVwic3RhcnRBbVBtKClcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydEFtUG1TaWduYWwuc2V0KCRldmVudClcIiBcbiAgICAgICAgICBjbGFzcz1cImFtLXBtLXNlbGVjdG9yXCJcbiAgICAgICAgICAqbmdJZj1cImlzMTJIb3VyRm9ybWF0KClcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQU1cIj5BTTwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJQTVwiPlBNPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cInRpbWUtc2VjdGlvblwiPlxuICAgICAgPGg0PlRvPC9oND5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0c1wiPlxuICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgIFtuZ01vZGVsXT1cImlzMTJIb3VyRm9ybWF0KCkgPyBlbmRIb3VyKCkgOiBlbmRIb3VyMjQoKVwiIFxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlzMTJIb3VyRm9ybWF0KCkgPyBlbmRIb3VyU2lnbmFsLnNldCgkZXZlbnQpIDogZW5kSG91cjI0U2lnbmFsLnNldCgkZXZlbnQpOyBvbkVuZEhvdXJJbnB1dCgpXCJcbiAgICAgICAgICBbbWluXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxIDogMFwiIFxuICAgICAgICAgIFttYXhdPVwiaXMxMkhvdXJGb3JtYXQoKSA/IDEyIDogMjNcIiBcbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgY2xhc3M9XCJ0aW1lLWlucHV0IGhvdXItaW5wdXRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSEhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXNlcGFyYXRvclwiPjo8L3NwYW4+XG4gICAgICAgIDxpbnB1dCBcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgW25nTW9kZWxdPVwiZW5kTWludXRlKClcIiAobmdNb2RlbENoYW5nZSk9XCJlbmRNaW51dGVTaWduYWwuc2V0KCRldmVudClcIiBcbiAgICAgICAgICAoaW5wdXQpPVwib25FbmRNaW51dGVJbnB1dCgpXCJcbiAgICAgICAgICBtaW49XCIwXCIgXG4gICAgICAgICAgbWF4PVwiNTlcIiBcbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgY2xhc3M9XCJ0aW1lLWlucHV0IG1pbnV0ZS1pbnB1dFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJNTVwiPlxuICAgICAgICA8c2VsZWN0IFxuICAgICAgICAgIFtuZ01vZGVsXT1cImVuZEFtUG0oKVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZEFtUG1TaWduYWwuc2V0KCRldmVudClcIiBcbiAgICAgICAgICBjbGFzcz1cImFtLXBtLXNlbGVjdG9yXCJcbiAgICAgICAgICAqbmdJZj1cImlzMTJIb3VyRm9ybWF0KClcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQU1cIj5BTTwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJQTVwiPlBNPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBcbiAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlcl9fZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBtaXMtYnV0dG9uIHR5cGU9XCJub25lXCIgaWQ9J21vYmlsZS1mb290ZXItYnRuJyAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtaXMtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgaWQ9XCJtb2JpbGUtZm9vdGVyLWJ0blwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCI+QXBwbHk8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
1076
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotZHJwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcmFuZ2VwaWNrZXJfdjIvdHotZHJwLWNvbnRhaW5lci90ei1kcnAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVyYW5nZXBpY2tlcl92Mi90ei1kcnAtY29udGFpbmVyL3R6LWRycC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdwQyxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUE7QUFDOUQsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7SUNQdkMsQUFERiwyQkFBMEQsaUJBS3ZEO0lBRkMsb05BQVMsMkJBQWlCLEtBQUM7SUFHM0IsWUFDRjtJQUNGLEFBREUsaUJBQVMsRUFDTDs7OztJQU5KLGNBQWlFO0lBQWpFLGtHQUFpRTtJQUkvRCxjQUNGO0lBREUsOENBQ0Y7Ozs7SUFSSiwrQkFBNEY7SUFDMUYsK0VB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QUEwQztZQUExQyw4S0FBMEM7WUFvQjFDLGVBRUU7WUFGRixvRkFFRTtZQVNHLGVBQStDO1lBQS9DLGlGQUErQztZQVNwRCxlQUVFO1lBRkYsZ0ZBRUU7WUFZa0UsZUFBYTtZQUFiLHdDQUFhO1lBZS9ELGVBQXNCO1lBQXRCLGlEQUFzQjtZQWdCbkMsZUFBeUM7WUFBekMsMkVBQXlDO1lBTTlDLGNBRUU7WUFGRixnRkFFRTtZQVlrRSxlQUFhO1lBQWIsd0NBQWE7WUFlL0QsZUFBbUI7WUFBbkIsOENBQW1CO1lBZ0JDLGNBQXlDO1lBQXpDLDhEQUF5QztZQW9FTCxlQUE0QjtZQUE1Qiw4Q0FBNEI7OztpRkR0TG5HLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLFlBQVk7O3NCQXlFVCxNQUFNO3VCQUFDLGNBQWM7Z0RBNEZsQyxVQUFVO2tCQURULFlBQVk7bUJBQUMsYUFBYTs7a0ZBaEtoQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXJhbmdlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5LCBJU2VsZWN0ZWREYXRlc0NvbmZpZywgUmFuZ2VJdGVtIH0gZnJvbSBcIi4uL21vZGVscy9kcnAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcblxuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IGlzU2FtZU9yQWZ0ZXIgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQWZ0ZXInO1xuaW1wb3J0IGlzU2FtZU9yQmVmb3JlIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckJlZm9yZSc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0J1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcbmRheWpzLmV4dGVuZChpc0JldHdlZW4pO1xuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcbmRheWpzLmV4dGVuZChpc1NhbWVPckFmdGVyKTtcbmRheWpzLmV4dGVuZChpc1NhbWVPckJlZm9yZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdHotZHJwXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdHotZHJwLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdHotZHJwLWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUekRycENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ1VTVE9NX1JBTkdFX0xBQkVMID0gXCJDdXN0b20gUmFuZ2VcIjtcbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxJRGF0ZVBpY2tlckRhdGE+KHRoaXMuaW5qZWN0ZWREYXRhKTtcbiAgcHJpdmF0ZSBkYXlqc0luc3RhbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICByZXR1cm4gZGF5anMoLi4uYXJncyk7XG4gIH07XG4gIHByaXZhdGUgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuICBcbiAgLy8gU2lnbmFsLWJhc2VkIHN0YXRlIG1hbmFnZW1lbnRcbiAgcHJpdmF0ZSByZWFkb25seSB3ZWVrRGF5c1NpZ25hbCA9IHNpZ25hbDxJV2Vla0RheVtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudE1vbnRoU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGg+KFwiSmFudWFyeVwiKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50WWVhck51bWJlclNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRNb250aERhdGVzU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGhEYXRlc1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV4dE1vbnRoTnVtYmVyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV4dE1vbnRoU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGg+KFwiSmFudWFyeVwiKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXh0WWVhck51bWJlclNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IG5leHRNb250aERhdGVzU2lnbmFsID0gc2lnbmFsPElDdXJyZW50TW9udGhEYXRlc1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNQcmV2aW91c01vbnRoRGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzTmV4dE1vbnRoRGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvblN0YXJ0ZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCA9IHNpZ25hbDxJU2VsZWN0ZWREYXRlc0NvbmZpZz4oeyBzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGwgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNEYXRlc1ZhbGlkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbCA9IHNpZ25hbDxzdHJpbmc+KHRoaXMuQ1VTVE9NX1JBTkdFX0xBQkVMKTtcbiAgXG4gIC8vIFRpbWUgc2VsZWN0aW9uIHNpZ25hbHNcbiAgcmVhZG9ubHkgc3RhcnRIb3VyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMTIpO1xuICByZWFkb25seSBzdGFydE1pbnV0ZVNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICByZWFkb25seSBzdGFydEFtUG1TaWduYWwgPSBzaWduYWw8c3RyaW5nPignQU0nKTtcbiAgcmVhZG9ubHkgZW5kSG91clNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDEyKTtcbiAgcmVhZG9ubHkgZW5kTWludXRlU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IGVuZEFtUG1TaWduYWwgPSBzaWduYWw8c3RyaW5nPignQU0nKTtcbiAgcmVhZG9ubHkgc3RhcnRIb3VyMjRTaWduYWwgPSBzaWduYWw8bnVtYmVyPigxMik7XG4gIHJlYWRvbmx5IGVuZEhvdXIyNFNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDEyKTtcbiAgXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXMgZm9yIHRlbXBsYXRlIGFjY2Vzc1xuICB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMud2Vla0RheXNTaWduYWwoKSk7XG4gIGN1cnJlbnRNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRNb250aFNpZ25hbCgpKTtcbiAgY3VycmVudFllYXJOdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpO1xuICBuZXh0TW9udGhOdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5leHRNb250aE51bWJlclNpZ25hbCgpKTtcbiAgbmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uZXh0TW9udGhTaWduYWwoKSk7XG4gIG5leHRZZWFyTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbCgpKTtcbiAgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkU2lnbmFsKCkpO1xuICBpc05leHRNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc05leHRNb250aERpc2FibGVkU2lnbmFsKCkpO1xuICBzZWxlY3Rpb25TdGFydGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3Rpb25TdGFydGVkU2lnbmFsKCkpO1xuICBsb2NhbFNlbGVjdGVkRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpKTtcbiAgaXNEYXRlc1ZhbGlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwoKSk7XG4gIHNlbGVjdGVkSXRlbUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbCgpKTtcbiAgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gRGVwZW5kZW5jaWVzOiBjdXJyZW50TW9udGhOdW1iZXJTaWduYWwsIGN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLCBsb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWxcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSk7XG4gIH0pO1xuICBuZXh0TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIC8vIERlcGVuZGVuY2llczogbmV4dE1vbnRoTnVtYmVyU2lnbmFsLCBuZXh0WWVhck51bWJlclNpZ25hbCwgbG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsXG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwoKSk7XG4gIH0pO1xuXG5cbiAgLy8gVGltZSBmdW5jdGlvbmFsaXR5IGNvbXB1dGVkIHByb3BlcnRpZXNcbiAgc3RhcnRIb3VyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFydEhvdXJTaWduYWwoKSk7XG4gIHN0YXJ0TWludXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFydE1pbnV0ZVNpZ25hbCgpKTtcbiAgc3RhcnRBbVBtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFydEFtUG1TaWduYWwoKSk7XG4gIGVuZEhvdXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVuZEhvdXJTaWduYWwoKSk7XG4gIGVuZE1pbnV0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW5kTWludXRlU2lnbmFsKCkpO1xuICBlbmRBbVBtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbmRBbVBtU2lnbmFsKCkpO1xuICBzdGFydEhvdXIyNCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhcnRIb3VyMjRTaWduYWwoKSk7XG4gIGVuZEhvdXIyNCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW5kSG91cjI0U2lnbmFsKCkpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIHByaXZhdGUgaW5qZWN0ZWREYXRhOiBJRGF0ZVBpY2tlckRhdGEsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSkge1xuICAgIHRoaXMuZGF0YSA9IHNpZ25hbDxJRGF0ZVBpY2tlckRhdGE+KHRoaXMuaW5qZWN0ZWREYXRhKTsgXG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwuc2V0KHRoaXMuZGF0YSgpLmRhdGVzKTtcbiAgICB0aGlzLmlzRGF0ZXNWYWxpZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLmRhdGEoKS5kYXRlcy5zdGFydERhdGUgJiYgdGhpcy5kYXRhKCkuZGF0ZXMuZW5kRGF0ZSkge1xuICAgICAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KHRydWUpO1xuICAgIH1cbiAgICBcbiAgICAvLyBJbml0aWFsaXplIHNlbGVjdGVkSXRlbUxhYmVsIGZyb20gZGF0YS5zZWxlY3RlZFJhbmdlTGFiZWwgaWYgYXZhaWxhYmxlXG4gICAgaWYgKHRoaXMuZGF0YSgpLnNlbGVjdGVkUmFuZ2VMYWJlbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1MYWJlbFNpZ25hbC5zZXQodGhpcy5kYXRhKCkuc2VsZWN0ZWRSYW5nZUxhYmVsKTtcbiAgICB9XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBkYXlqc0luc3RhbmNlIHdpdGggdGltZXpvbmUgaGFuZGxpbmdcbiAgICBpZiAodGhpcy5kYXRhKCk/LmRwQ29uZmlnPy50aW1lem9uZSkge1xuICAgICAgdGhpcy5kYXlqc0luc3RhbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZGF5anMudHooYXJnc1swXSwgYXJnc1sxXSB8fCAnREQvTU0vWVlZWScsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLnRpbWV6b25lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHBhcnNpbmcgZGF0ZSB3aXRoIHRpbWV6b25lOicsIGVycm9yLCAnYXJnczonLCBhcmdzKTtcbiAgICAgICAgICByZXR1cm4gZGF5anMoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzIHNhZmVseSB1c2luZyBzaWduYWxzXG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXMuZGF5anNJbnN0YW5jZSgpLm1vbnRoKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzLmRheWpzSW5zdGFuY2UoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMubmV4dE1vbnRoU2lnbmFsLnNldChnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlclNpZ25hbCgpKSk7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5kYXlqc0luc3RhbmNlKCkueWVhcigpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsLnNldCh0aGlzLmRheWpzSW5zdGFuY2UoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICAgIHRoaXMud2Vla0RheXNTaWduYWwuc2V0KHRoaXMucmF3V2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke2RheVswXX0ke2RheS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBpc0N1cnJlbnREYXk6IHRoaXMuZGF5anNJbnN0YW5jZSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKSk7XG4gICAgXG4gICAgaWYgKCF0aGlzLmRhdGEoKT8uZHBDb25maWc/LmZvcm1hdCkge1xuICAgICAgdGhpcy5kYXRhKCkuZHBDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGF0YSgpLmRwQ29uZmlnLFxuICAgICAgICBmb3JtYXQ6IERBVEVfRk9STUFUXG4gICAgICB9O1xuICAgIH1cblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBsb2NhbFNlbGVjdGVkRGF0ZXMgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpO1xuICAgICAgbGV0IHNlbGVjdGVkU3RhcnREYXRlOiBEYXlqcztcblxuICAgICAgaWYgKGxvY2FsU2VsZWN0ZWREYXRlcz8uc3RhcnREYXRlKSB7XG4gICAgICAgICAgLy8gVXNlIHRoZSByb2J1c3QgaGVscGVyIGZvciBwYXJzaW5nXG4gICAgICAgICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMobG9jYWxTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdGVkU3RhcnREYXRlID0gZGF5anMoJ2ludmFsaWQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGVkU3RhcnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHNlbGVjdGVkU3RhcnREYXRlLnllYXIoKSk7XG4gICAgICAgICAgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbC5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQoc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikpO1xuICAgICAgICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZEVuZERhdGUgPSBsb2NhbFNlbGVjdGVkRGF0ZXM/LmVuZERhdGUgPyB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMobG9jYWxTZWxlY3RlZERhdGVzLmVuZERhdGUpIDogbnVsbDtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBMb2dpYyBmb3IgbmV4dCBtb250aCBiZWluZyBzZXQgYnkgZW5kIGRhdGVcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRFbmREYXRlICYmIHNlbGVjdGVkRW5kRGF0ZS5pc1ZhbGlkKCkgJiYgc2VsZWN0ZWRFbmREYXRlLmlzQWZ0ZXIoc2VsZWN0ZWRTdGFydERhdGUsICdtb250aCcpKSB7XG4gICAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldChzZWxlY3RlZEVuZERhdGUubW9udGgoKSk7XG4gICAgICAgICAgICAgIHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwuc2V0KHNlbGVjdGVkRW5kRGF0ZS55ZWFyKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVwZGF0ZSBjYWxlbmRhciBkYXRlcyB0byByZWZsZWN0IHRoZSBzZWxlY3RlZCBkYXRlc1xuICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpKTtcbiAgICAgICAgICB0aGlzLm5leHRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXJTaWduYWwoKSwgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbCgpKSk7XG4gICAgICB9XG4gIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCduZ09uSW5pdCAxJyk7XG4gICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplVGltZVZhbHVlcygpO1xuXG4gICAgaWYodGhpcy5kYXRhKCk/LnNob3dQcmV2TW9udGggJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpe1xuICAgICAgdGhpcy5uYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHJhY3REYXlNb250aChkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcjogYW55KTogYW55IHtcbiAgICByZXR1cm4gYCR7ZGF5fSAke21vbnRofSAke3llYXJ9YDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVzY1wiKVxuICBjbG9zZU9uRXNjKCkge1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNaW5NYXhEYXlzKCkge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpLnllYXIodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKS5tb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpKTtcbiAgICBjb25zdCBtaW5EYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIGlmIChtaW5EYXRlLmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKSk7XG4gICAgfVxuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UodGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgaWYgKG1heERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLmlzTmV4dE1vbnRoRGlzYWJsZWRTaWduYWwuc2V0KG1heERhdGUuaXNTYW1lT3JCZWZvcmUoY3VycmVudEluc3RhbmNlLCBcIm1vbnRoXCIpKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICBsZXQgdGhpc01vbnRoOiBEYXlqcyA9IGRheWpzKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgIGlmIChkaXJlY3Rpb24gPT09IFwiTkVYVFwiKSB7XG4gICAgIHRoaXNNb250aCA9IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJQUkVWSU9VU1wiKSB7XG4gICAgIHRoaXNNb250aCA9IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQodGhpc01vbnRoLm1vbnRoKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSkpO1xuICAgIHRoaXMubmV4dE1vbnRoU2lnbmFsLnNldChnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcigpKSk7XG4gICAgaWYgKHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsKCkgPT09IDAgJiYgZGlyZWN0aW9uID09PSBcIlBSRVZJT1VTXCIpIHtcbiAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpIC0gMSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpID09PSAxMSAmJiBkaXJlY3Rpb24gPT09IFwiTkVYVFwiKSB7XG4gICAgIHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwoKSArIDEpO1xuICAgIH1lbHNlIGlmICh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpID09PSAwICYmIGRpcmVjdGlvbiA9PT0gXCJORVhUXCIpIHtcbiAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpICsgMSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHRNb250aE51bWJlclNpZ25hbCgpID09PSAxMSAmJiBkaXJlY3Rpb24gPT09IFwiUFJFVklPVVNcIikge1xuICAgICB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsLnNldCh0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsKCkgLSAxKTtcbiAgICB9ZWxzZXtcbiAgICAgdGhpcy5uZXh0WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkpO1xuICAgIHRoaXMubmV4dE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlcigpLCB0aGlzLm5leHRZZWFyTnVtYmVyKCkpKTtcbiAgICB0aGlzLmNhbGN1bGF0ZU1pbk1heERheXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBkYXlqcy5EYXlqcyB7XG4gICAgaWYgKCFkYXRlU3RyaW5nIHx8IGRhdGVTdHJpbmcgPT09ICdJbnZhbGlkIERhdGUnIHx8IGRhdGVTdHJpbmcgPT09ICd1bmRlZmluZWQnIHx8IGRhdGVTdHJpbmcgPT09ICdudWxsJykge1xuICAgICAgICByZXR1cm4gZGF5anMoJ2ludmFsaWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmVkRm9ybWF0ID0gdGhpcy5kYXRhKCk/LmRwQ29uZmlnPy5mb3JtYXQ7XG4gICAgaWYgKGNvbmZpZ3VyZWRGb3JtYXQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IGRheWpzKGRhdGVTdHJpbmcsIGNvbmZpZ3VyZWRGb3JtYXQpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gQ29udGludWUgdG8gZmFsbGJhY2sgZm9ybWF0c1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmFsbGJhY2tGb3JtYXRzID0gW1xuICAgICAgICAnREQvTU1NL1lZWVknLCAnREQvTU0vWVlZWScsICdERC1NTU0tWVlZWScsICdERC1NTS1ZWVlZJywgJ1lZWVktTU0tREQnXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgZm9ybWF0IG9mIGZhbGxiYWNrRm9ybWF0cykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gZGF5anMoZGF0ZVN0cmluZywgZm9ybWF0KTtcbiAgICAgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIENvbnRpbnVlIHRvIG5leHQgZm9ybWF0XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhkYXRlU3RyaW5nKTtcbiAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBkYXRlIHdpdGggYW55IGZvcm1hdDonLCBkYXRlU3RyaW5nLCBlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRheWpzKCdpbnZhbGlkJyk7XG59XG5cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0ZXMobW9udGg6IG51bWJlciwgY3VycmVudFllYXJOdW1iZXI6IG51bWJlcik6IElDdXJyZW50TW9udGhEYXRlc1tdIHtcbiAgICBsZXQgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgY29uc3QgZGF5c0luTW9udGggPSBkYXlqcygpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXlzSW5Nb250aCgpO1xuICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcygpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgbGV0IGlzRGlzYWJsZWREYXkgPSB0aGlzLmRhdGEoKS5kYXRlc0Rpc2FibGVkLnNvbWUoZCA9PiBkID09PSBkYXRlU3RyaW5nKTtcbiAgICAgIC8vIFBhcnNlIG1pbi9tYXggZGF0ZXMgc2FmZWx5IC0gdHJ5IGRhdGUtb25seSBmb3JtYXQgZmlyc3QsIHRoZW4gZnVsbCBmb3JtYXRcbiAgICAgIGxldCBtaW5EYXRlID0gbnVsbDtcbiAgICAgIGxldCBtYXhEYXRlID0gbnVsbDtcbiAgICAgIFxuICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtaW5EYXRlU3RyID0gdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZS5zcGxpdCgnICcpWzBdO1xuICAgICAgICAgIG1pbkRhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMobWluRGF0ZVN0cik7XG4gICAgICAgICAgaWYgKCFtaW5EYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgbWluRGF0ZSA9IGRheWpzKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3IgcGFyc2luZyBtaW4gZGF0ZTonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtYXhEYXRlU3RyID0gdGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZS5zcGxpdCgnICcpWzBdO1xuICAgICAgICAgIG1heERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMobWF4RGF0ZVN0cik7XG4gICAgICAgICAgaWYgKCFtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgbWF4RGF0ZSA9IGRheWpzKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3IgcGFyc2luZyBtYXggZGF0ZTonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUgJiYgbWluRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWluRGF0ZS5pc0FmdGVyKGRhdGUsIFwiZGF5XCIpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1heERhdGUgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWF4RGF0ZS5pc0JlZm9yZShkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmRhdGEoKT8uZHBDb25maWc/Lm1heEFsbG93ZWRSYW5nZSA+IDAgJiZcbiAgICAgICAgIWlzRGlzYWJsZWREYXkgJiZcbiAgICAgICAgKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LnN0YXJ0RGF0ZSA/PyBmYWxzZSkgJiYgKCEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5lbmREYXRlID8/IGZhbHNlKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKT8uc3RhcnREYXRlKS5zdGFydE9mKCdkYXknKTtcbiAgICAgICAgY29uc3QgbWF4RW5kRGF0ZSA9IHN0YXJ0RGF0ZS5jbG9uZSgpLmFkZCh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhBbGxvd2VkUmFuZ2UgLSAxLCAnZGF5cycpO1xuICAgICAgICBpc0Rpc2FibGVkRGF5ID0gZGF0ZS5pc0FmdGVyKG1heEVuZERhdGUsICdkYXknKSBcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9XG4gICAgICAgIHRoaXMuZGF5anNJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT1cbiAgICAgICAgdGhpcy5kYXlqc0luc3RhbmNlKCkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBcbiAgICAgIC8vIEV4dHJhY3QgZGF0ZSBwYXJ0IGZvciBjb21wYXJpc29uIChoYW5kbGUgYm90aCBkYXRlLW9ubHkgYW5kIGRhdGV0aW1lIGZvcm1hdHMpXG4gICAgICBjb25zdCBzdGFydERhdGVTdHJpbmcgPSAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKT8uc3RhcnREYXRlICYmIHR5cGVvZiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpPy5zdGFydERhdGUgPT09ICdzdHJpbmcnKSBcbiAgICAgICAgPyB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLnN0YXJ0RGF0ZS5zcGxpdCgnICcpWzBdIFxuICAgICAgICA6IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LnN0YXJ0RGF0ZTtcbiAgICAgIGNvbnN0IGVuZERhdGVTdHJpbmcgPSAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKT8uZW5kRGF0ZSAmJiB0eXBlb2YgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKT8uZW5kRGF0ZSA9PT0gJ3N0cmluZycpIFxuICAgICAgICA/IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuZW5kRGF0ZS5zcGxpdCgnICcpWzBdIFxuICAgICAgICA6IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCk/LmVuZERhdGU7XG4gICAgICBcbiAgICAgIC8vIFVzZSB0aGUgY3VzdG9tIGZvcm1hdCBmb3IgY29tcGFyaXNvbiBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBERC9NTS9ZWVlZXG4gICAgICBcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZVBhcnNlZCA9IHN0YXJ0RGF0ZVN0cmluZyA/IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyhzdGFydERhdGVTdHJpbmcpIDogbnVsbDtcbiAgICAgIGNvbnN0IGVuZERhdGVQYXJzZWQgPSBlbmREYXRlU3RyaW5nID8gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKGVuZERhdGVTdHJpbmcpIDogbnVsbDtcbiAgICAgIFxuICAgICAgY29uc3QgaXNTZWxlY3RlZFN0YXJ0RGF5ID1cbiAgICAgICAgICAhaXNEaXNhYmxlZERheSAmJlxuICAgICAgICAgIHN0YXJ0RGF0ZVBhcnNlZCAmJlxuICAgICAgICAgIHN0YXJ0RGF0ZVBhcnNlZC5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICBkYXRlLmlzU2FtZShzdGFydERhdGVQYXJzZWQsICdkYXknKTtcbiAgICAgICAgICBcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRFbmREYXkgPVxuICAgICAgICAgICFpc0Rpc2FibGVkRGF5ICYmXG4gICAgICAgICAgZW5kRGF0ZVBhcnNlZCAmJlxuICAgICAgICAgIGVuZERhdGVQYXJzZWQuaXNWYWxpZCgpICYmXG4gICAgICAgICAgZGF0ZS5pc1NhbWUoZW5kRGF0ZVBhcnNlZCwgJ2RheScpO1xuXG4gICAgICAgIFxuICAgICAgLy8gRm9yIHJhbmdlIGNhbGN1bGF0aW9uLCBwYXJzZSBkYXRlcyBwcm9wZXJseSB1c2luZyBjdXN0b20gZm9ybWF0XG4gICAgICBjb25zdCBpc0FmdGVyU2VsZWN0ZWRTdGFydERhdGUgPSBzdGFydERhdGVQYXJzZWQgPyB0aGlzLmRheWpzSW5zdGFuY2UoZGF0ZSkuaXNBZnRlcihzdGFydERhdGVQYXJzZWQsIFwiZGF5XCIpIDogZmFsc2U7XG4gICAgICBjb25zdCBpc0JlZm9yZVNlbGVjdGVkRW5kRGF0ZSA9IGVuZERhdGVQYXJzZWQgPyB0aGlzLmRheWpzSW5zdGFuY2UoZGF0ZSkuaXNCZWZvcmUoZW5kRGF0ZVBhcnNlZCwgXCJkYXlcIikgOiBmYWxzZTtcblxuICAgICAgXG4gICAgICBjb25zdCBpblJhbmdlRGF5ID1cbiAgICAgIHN0YXJ0RGF0ZVBhcnNlZCAmJiBlbmREYXRlUGFyc2VkICYmXG4gICAgICBzdGFydERhdGVQYXJzZWQuaXNWYWxpZCgpICYmIGVuZERhdGVQYXJzZWQuaXNWYWxpZCgpICYmXG4gICAgICBpc0FmdGVyU2VsZWN0ZWRTdGFydERhdGUgJiZcbiAgICAgIGlzQmVmb3JlU2VsZWN0ZWRFbmREYXRlO1xuICAgICAgZGF0ZXMucHVzaCh7XG4gICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICB3ZWVrRGF5OiBkYXRlLmRheSgpLFxuICAgICAgICBpc0N1cnJlbnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRTdGFydERheSxcbiAgICAgICAgaXNTZWxlY3RlZEVuZERheSxcbiAgICAgICAgaW5SYW5nZURheSxcbiAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEoKS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICB9KTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IGRhdGVzWzBdLndlZWtEYXk7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGRhdGVzLnVuc2hpZnQoeyBkYXRlOiAwLCB3ZWVrRGF5OiBpIC0gMSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGVzO1xuICB9XG5cbnNlbGVjdERheShmcm9tOiBcIkxFRlRcIiB8IFwiUklHSFRcIiwgZGF5OiBJQ3VycmVudE1vbnRoRGF0ZXMpIHtcbiAgICBcbiAgaWYgKGRheS5kYXRlIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUxhYmVsU2lnbmFsLnNldCh0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTCk7XG4gICAgICBcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZGF5IGJlaW5nIHNlbGVjdGVkXG4gICAgICBjb25zdCBkYXlqc0RheSA9IGRheWpzKClcbiAgICAgICAgICAueWVhcihmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSA6IHRoaXMubmV4dFllYXJOdW1iZXJTaWduYWwoKSlcbiAgICAgICAgICAubW9udGgoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpIDogdGhpcy5uZXh0TW9udGhOdW1iZXJTaWduYWwoKSlcbiAgICAgICAgICAuZGF0ZShkYXkuZGF0ZSk7XG4gICAgICBcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gZGF5anNEYXkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBcbiAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgICBsZXQgdXBkYXRlZERhdGVzID0geyAuLi5jdXJyZW50IH07XG5cbiAgICAgICAgICAvLyBTdGFydCBEYXRlIGZvciBjb21wYXJpc29uICh1c2luZyBoZWxwZXIgZm9yIHJvYnVzdCBjaGVjaylcbiAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBjdXJyZW50LnN0YXJ0RGF0ZSA/IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyhjdXJyZW50LnN0YXJ0RGF0ZSkgOiBudWxsO1xuXG4gICAgICAgICAgLy8gRklYIDQ6IEFwcGVuZCB0aW1lIGlmIGVuYWJsZWRcbiAgICAgICAgICBpZiAodGhpcy5kYXRhKCkuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAvLyBUaGUgdGltZSBpcyBzZXQgdG8gTk9XLCBhcyBwZXIgb3JpZ2luYWwgbm9uLXNpZ25hbCBjb21wb25lbnQncyBsb2dpY1xuICAgICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy5hcHBlbmRDdXJyZW50VGltZShkYXlqc0RheSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ZWQoKSkge1xuICAgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZGF0ZSBpcyB0aGUgc2FtZSBhcyB0aGUgc3RhcnQgZGF0ZSAoTmV3IGluIHlvdXIgcHJldmlvdXMgc2lnbmFsIGNvZGUsIGJ1dCB2YWxpZClcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBkYXlqc0RheS5pc1NhbWUoc3RhcnREYXRlLCBcImRheVwiKSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZFNpZ25hbC5zZXQodHJ1ZSk7IC8vIE1hbnVhbGx5IHNldHRpbmcgdmFsaWRpdHkgKGNhbiBiZSBjb21wdXRlZCBsYXRlcilcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlOiBmb3JtYXR0ZWREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGU6IGZvcm1hdHRlZERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZUxhYmVsOiB0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGVkIGRhdGUgaXMgYmVmb3JlIHRoZSBzdGFydCBkYXRlLCBtYWtlIGl0IHRoZSBuZXcgc3RhcnQgZGF0ZVxuICAgICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGRheWpzRGF5LmlzQmVmb3JlKHN0YXJ0RGF0ZSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHNlbGVjdGlvbiBvdmVyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlOiBmb3JtYXR0ZWREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZUxhYmVsOiB0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgLy8gRW5kIHNlbGVjdGlvblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWRTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgIGVuZERhdGU6IGZvcm1hdHRlZERhdGUsXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlTGFiZWw6IHRoaXMuQ1VTVE9NX1JBTkdFX0xBQkVMXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU3RhcnQgc2VsZWN0aW9uXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZFNpZ25hbC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBzdGFydERhdGU6IGZvcm1hdHRlZERhdGUsXG4gICAgICAgICAgICAgICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZUxhYmVsOiB0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBUaGUgZGF0ZSBhcnJheXMgYXJlIENPTVBVVEVELCBzbyBubyBuZWVkIGZvciBtYW51YWwgc2V0KClcbiAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkU2lnbmFsLnNldCghISh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLnN0YXJ0RGF0ZSAmJiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLmVuZERhdGUpKTtcbiAgfVxuICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkge1xuICAgICAgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICB9XG59XG5cbi8vIEhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGN1cnJlbnQgdGltZSAocmVwbGljYXRlcyBvcmlnaW5hbCBzZWxlY3REYXkgY29tcGxleCBmb3JtYXR0aW5nIGxvZ2ljKVxucHJpdmF0ZSBhcHBlbmRDdXJyZW50VGltZShkYXRlOiBEYXlqcyk6IHN0cmluZyB7XG4gIGlmICghdGhpcy5kYXRhKCkuZHBDb25maWcuZW5hYmxlVGltZSkgcmV0dXJuIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG5cbiAgLy8gVGhpcyBjb21wbGV4IGZvcm1hdHRpbmcgbG9naWMgbXVzdCBiZSByZXBsaWNhdGVkIGV4YWN0bHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgdGltZVN0YXJ0TWF0Y2ggPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQubWF0Y2goLyhcXHMrKShISHxtbXxzc3xBfGEpLyk7XG4gIFxuICBpZiAodGltZVN0YXJ0TWF0Y2gpIHtcbiAgICAgIGNvbnN0IHRpbWVTdGFydEluZGV4ID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LmluZGV4T2YodGltZVN0YXJ0TWF0Y2hbMF0pO1xuICAgICAgY29uc3QgZGF0ZU9ubHlGb3JtYXQgPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuc3Vic3RyaW5nKDAsIHRpbWVTdGFydEluZGV4KTtcbiAgICAgIGNvbnN0IHRpbWVPbmx5Rm9ybWF0ID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LnN1YnN0cmluZyh0aW1lU3RhcnRJbmRleCArIHRpbWVTdGFydE1hdGNoWzFdLmxlbmd0aCk7XG4gICAgICBcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdChkYXRlT25seUZvcm1hdCk7XG4gICAgICBjb25zdCB0aW1lU3RyaW5nID0gbm93LmZvcm1hdCh0aW1lT25seUZvcm1hdCk7XG4gICAgICByZXR1cm4gZGF0ZVN0cmluZyArIHRpbWVTdGFydE1hdGNoWzFdICsgdGltZVN0cmluZztcbiAgfVxuICAvLyBGYWxsYmFjayBpZiBubyB0aW1lIHBhdHRlcm4gZm91bmRcbiAgcmV0dXJuIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG59XG5cbnNlbGVjdFJhbmdlKGl0ZW06IFJhbmdlSXRlbSkge1xuICBpZiAoIWl0ZW0pIHJldHVybjtcblxuICBsZXQgc3RhcnREYXRlID0gdGhpcy5kYXlqc0luc3RhbmNlKGl0ZW0udmFsdWVbMF0pO1xuICBsZXQgZW5kRGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZShpdGVtLnZhbHVlWzFdKTtcblxuICBjb25zdCBzdGFydERhdGVTdHIgPSBzdGFydERhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gIGNvbnN0IGVuZERhdGVTdHIgPSBlbmREYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gIC8vIE5vdGU6IFRoZSBvcmlnaW5hbCBkYXRlc0Rpc2FibGVkIGNoZWNrIHVzZXMgdGhlIGN1c3RvbSBkYXlqc0luc3RhbmNlLCB3aGljaCBpcyBnb29kLlxuICBjb25zdCBpc0FueURhdGVEaXNhYmxlZCA9IHRoaXMuZGF0YSgpLmRhdGVzRGlzYWJsZWQuc29tZSgoZGF0ZSkgPT5cbiAgICAgIHRoaXMuZGF5anNJbnN0YW5jZShkYXRlICwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KS5pc0JldHdlZW4oc3RhcnREYXRlU3RyLCBlbmREYXRlU3RyLCBudWxsLCAnW10nKVxuICApO1xuICBcbiAgLy8gRklYIDQ6IFVzZSByb2J1c3QgcGFyc2luZyBmb3IgbWluRGF0ZS9tYXhEYXRlIGNvbXBhcmlzb25cbiAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlKSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSkgOiBkYXlqcygnaW52YWxpZCcpO1xuXG4gIGNvbnN0IGlzV2l0aGluTGltaXRzID1cbiAgICAgICghbWluRGF0ZS5pc1ZhbGlkKCkgfHwgIXN0YXJ0RGF0ZS5pc0JlZm9yZShtaW5EYXRlLCBcImRheVwiKSkgJiZcbiAgICAgICghbWF4RGF0ZS5pc1ZhbGlkKCkgfHwgIWVuZERhdGUuaXNBZnRlcihtYXhEYXRlLCBcImRheVwiKSk7XG5cbiAgaWYgKCFpc1dpdGhpbkxpbWl0cyB8fCBpc0FueURhdGVEaXNhYmxlZCkge1xuICAgICAgdGhpcy50b2FzdC5kaXNwbGF5TXNnKFwiU2VsZWN0ZWQgcmFuZ2UgY29udGFpbnMgZGlzYWJsZWQgZGF0ZXMgb3IgaXMgb3V0IG9mIGJvdW5kcy5cIiwgNDAwMCk7XG4gICAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnNlbGVjdGVkSXRlbUxhYmVsU2lnbmFsLnNldChpdGVtLmxhYmVsKTtcbiAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHN0YXJ0RGF0ZS5tb250aCgpKTtcbiAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQoc3RhcnREYXRlLnllYXIoKSk7XG5cbiAgLy8gTW9udGgvWWVhciByb2xsb3ZlciBsb2dpYyBpcyBrZXB0IGFzIGlzIHRvIG1hdGNoIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHlcbiAgaWYgKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkgPT09IDExKSB7XG4gICAgICB0aGlzLm5leHRNb250aE51bWJlclNpZ25hbC5zZXQoMCk7XG4gICAgICB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsLnNldCh0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkgKyAxKTtcbiAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpICsgMSk7XG4gICAgICB0aGlzLm5leHRZZWFyTnVtYmVyU2lnbmFsLnNldCh0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpO1xuICB9XG5cbiAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwuc2V0KHtcbiAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlU3RyLFxuICAgICAgZW5kRGF0ZTogZW5kRGF0ZVN0cixcbiAgICAgIHNlbGVjdGVkUmFuZ2VMYWJlbDogaXRlbS5sYWJlbFxuICB9KTtcbiAgLy8gVGhlIG1vbnRoL2RhdGUgY29tcHV0ZWQgcHJvcGVydGllcyAoY3VycmVudE1vbnRoLCBjdXJyZW50TW9udGhEYXRlcywgZXRjLikgXG4gIC8vIHVwZGF0ZSBhdXRvbWF0aWNhbGx5IG5vdy5cblxuICB0aGlzLmlzRGF0ZXNWYWxpZFNpZ25hbC5zZXQoISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5lbmREYXRlKSk7XG59XG5cbiAgcmVzZXRSYW5nZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbUxhYmVsU2lnbmFsLnNldCh0aGlzLkNVU1RPTV9SQU5HRV9MQUJFTCk7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwuc2V0KHtcbiAgICAgIHN0YXJ0RGF0ZTogbnVsbCxcbiAgICAgIGVuZERhdGU6IG51bGwsXG4gICAgICBzZWxlY3RlZFJhbmdlTGFiZWw6IHRoaXMuQ1VTVE9NX1JBTkdFX0xBQkVMXG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5pc0RhdGVzVmFsaWRTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSwgdGhpcy5jdXJyZW50WWVhck51bWJlcigpKSk7XG4gICAgdGhpcy5uZXh0TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMubmV4dE1vbnRoTnVtYmVyKCksIHRoaXMubmV4dFllYXJOdW1iZXIoKSkpO1xuICB9XG5cbiAgXG4vLyBUekRycENvbnRhaW5lckNvbXBvbmVudCAoU2lnbmFsLU1pZ3JhdGVkKVxuYXBwbHlEYXRlcygpIHtcbiAgLy8gSWYgdGltZSBpcyBlbmFibGVkLCBhcHBlbmQgdGltZSB0byB0aGUgZGF0ZXMgYmVmb3JlIGFwcGx5aW5nXG4gIGlmICh0aGlzLmRhdGEoKS5kcENvbmZpZy5lbmFibGVUaW1lID09PSB0cnVlKSB7XG4gICAgICBsZXQgc3RhcnRUaW1lOiBzdHJpbmc7XG4gICAgICBsZXQgZW5kVGltZTogc3RyaW5nO1xuXG4gICAgICAvLyBVc2Ugc2lnbmFsIGFjY2Vzc29yc1xuICAgICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgICAgIHN0YXJ0VGltZSA9IHRoaXMuZm9ybWF0VGltZSh0aGlzLnN0YXJ0SG91cigpLCB0aGlzLnN0YXJ0TWludXRlKCksIHRoaXMuc3RhcnRBbVBtKCkpO1xuICAgICAgICAgIGVuZFRpbWUgPSB0aGlzLmZvcm1hdFRpbWUodGhpcy5lbmRIb3VyKCksIHRoaXMuZW5kTWludXRlKCksIHRoaXMuZW5kQW1QbSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhcnRUaW1lID0gdGhpcy5mb3JtYXRUaW1lKHRoaXMuc3RhcnRIb3VyMjQoKSwgdGhpcy5zdGFydE1pbnV0ZSgpLCAnJyk7XG4gICAgICAgICAgZW5kVGltZSA9IHRoaXMuZm9ybWF0VGltZSh0aGlzLmVuZEhvdXIyNCgpLCB0aGlzLmVuZE1pbnV0ZSgpLCAnJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2FsRGF0ZXMgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpO1xuICAgICAgbGV0IHN0YXJ0RGF0ZU9ubHkgPSBsb2NhbERhdGVzLnN0YXJ0RGF0ZTtcbiAgICAgIGxldCBlbmREYXRlT25seSA9IGxvY2FsRGF0ZXMuZW5kRGF0ZTtcbiAgICAgIFxuICAgICAgLy8gRklYIDQ6IFVzZSByb2J1c3QgcGFyc2luZy9mb3JtYXR0aW5nIGZvciBkYXRlIHBhcnQgZXh0cmFjdGlvblxuICAgICAgaWYgKHN0YXJ0RGF0ZU9ubHkpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWRTdGFydCA9IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyhzdGFydERhdGVPbmx5KTtcbiAgICAgICAgICAvLyBUaGlzIGlzIGEgY29tcGxleCBkYXRlIGZvcm1hdCBleHRyYWN0aW9uIGluIHRoZSBvcmlnaW5hbCwgc2ltcGxpZmllZCBoZXJlIFxuICAgICAgICAgIC8vIGJ5IHRha2luZyB0aGUgZGF0ZSBwYXJ0IG9ubHkgKGFzc3VtaW5nIHRpbWUgaXMgYWx3YXlzIHNlcGFyYXRlZCBieSBzcGFjZSlcbiAgICAgICAgICAvLyBGb3IgdHJ1ZSBmaWRlbGl0eSwgdGhlIG9yaWdpbmFsIGxvZ2ljIGZvciBkYXRlIHBhcnQgZXh0cmFjdGlvbiB3aXRoIHRpbWUgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gICAgICAgICAgaWYgKHBhcnNlZFN0YXJ0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSBvcmlnaW5hbCBkYXRlIGZvcm1hdHRpbmcgbG9naWM6IGV4dHJhY3Qgb25seSB0aGUgZGF0ZSBwYXJ0IFxuICAgICAgICAgICAgICAvLyB1c2luZyB0aGUgY29uZmlndXJlZCBmb3JtYXQgZWxlbWVudHMgQkVGT1JFIHRoZSB0aW1lIGNvbXBvbmVudHMuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVTdGFydE1hdGNoID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0Lm1hdGNoKC8oXFxzKykoSEh8bW18c3N8QXxhKS8pO1xuICAgICAgICAgICAgICBpZiAodGltZVN0YXJ0TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVTdGFydEluZGV4ID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LmluZGV4T2YodGltZVN0YXJ0TWF0Y2hbMF0pO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZU9ubHlGb3JtYXQgPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuc3Vic3RyaW5nKDAsIHRpbWVTdGFydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZU9ubHkgPSBwYXJzZWRTdGFydC5mb3JtYXQoZGF0ZU9ubHlGb3JtYXQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc3BsaXR0aW5nIGlmIGZvcm1hdCBpcyBkYXRlLW9ubHlcbiAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZU9ubHkgPSAodHlwZW9mIHN0YXJ0RGF0ZU9ubHkgPT09ICdzdHJpbmcnKSA/IHN0YXJ0RGF0ZU9ubHkuc3BsaXQoJyAnKVswXSA6IHN0YXJ0RGF0ZU9ubHk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW5kRGF0ZU9ubHkpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWRFbmQgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMoZW5kRGF0ZU9ubHkpO1xuICAgICAgICAgIGlmIChwYXJzZWRFbmQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVTdGFydE1hdGNoID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0Lm1hdGNoKC8oXFxzKykoSEh8bW18c3N8QXxhKS8pO1xuICAgICAgICAgICAgICBpZiAodGltZVN0YXJ0TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVTdGFydEluZGV4ID0gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LmluZGV4T2YodGltZVN0YXJ0TWF0Y2hbMF0pO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZU9ubHlGb3JtYXQgPSB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQuc3Vic3RyaW5nKDAsIHRpbWVTdGFydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgIGVuZERhdGVPbmx5ID0gcGFyc2VkRW5kLmZvcm1hdChkYXRlT25seUZvcm1hdCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBlbmREYXRlT25seSA9ICh0eXBlb2YgZW5kRGF0ZU9ubHkgPT09ICdzdHJpbmcnKSA/IGVuZERhdGVPbmx5LnNwbGl0KCcgJylbMF0gOiBlbmREYXRlT25seTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3Qgc3RhcnREYXRlV2l0aFRpbWUgPSBzdGFydERhdGVPbmx5ICsgJyAnICsgc3RhcnRUaW1lO1xuICAgICAgY29uc3QgZW5kRGF0ZVdpdGhUaW1lID0gZW5kRGF0ZU9ubHkgKyAnICcgKyBlbmRUaW1lO1xuICAgICAgXG4gICAgICB0aGlzLmRhdGEoKS5kYXRlQ2hhbmdlKHtcbiAgICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZVdpdGhUaW1lLFxuICAgICAgICAgIGVuZERhdGU6IGVuZERhdGVXaXRoVGltZVxuICAgICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEoKS5kYXRlQ2hhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkpO1xuICB9XG59XG5cbiAgXG4gIGNhbmNlbERhdGVQaWNrZXIoKSB7XG4gICAgdGhpcy5kYXRhKCkuY2xvc2UoKTtcbiAgfVxuICBcbiAgLy8gVGltZS1yZWxhdGVkIG1ldGhvZHNcbiAgb25TdGFydEhvdXJJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQodGhpcy52YWxpZGF0ZUhvdXJJbnB1dCh0aGlzLnN0YXJ0SG91cigpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnRIb3VyMjRTaWduYWwuc2V0KHRoaXMudmFsaWRhdGVIb3VySW5wdXQyNCh0aGlzLnN0YXJ0SG91cjI0KCkpKTtcbiAgICB9XG4gIH1cbiAgXG4gIG9uU3RhcnRNaW51dGVJbnB1dCgpIHtcbiAgICB0aGlzLnN0YXJ0TWludXRlU2lnbmFsLnNldCh0aGlzLnZhbGlkYXRlTWludXRlSW5wdXQodGhpcy5zdGFydE1pbnV0ZSgpKSk7XG4gIH1cbiAgXG4gIG9uRW5kSG91cklucHV0KCkge1xuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIHRoaXMuZW5kSG91clNpZ25hbC5zZXQodGhpcy52YWxpZGF0ZUhvdXJJbnB1dCh0aGlzLmVuZEhvdXIoKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuZEhvdXIyNFNpZ25hbC5zZXQodGhpcy52YWxpZGF0ZUhvdXJJbnB1dDI0KHRoaXMuZW5kSG91cjI0KCkpKTtcbiAgICB9XG4gIH1cbiAgXG4gIG9uRW5kTWludXRlSW5wdXQoKSB7XG4gICAgdGhpcy5lbmRNaW51dGVTaWduYWwuc2V0KHRoaXMudmFsaWRhdGVNaW51dGVJbnB1dCh0aGlzLmVuZE1pbnV0ZSgpKSk7XG4gIH1cbiAgXG4gIHZhbGlkYXRlSG91cklucHV0KGhvdXI6IG51bWJlcikge1xuICAgIC8vIEFwcGx5IGJvdW5kcyBiYXNlZCBvbiBmb3JtYXRcbiAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAvLyAxMi1ob3VyIGZvcm1hdDogMS0xMlxuICAgICAgaWYgKGhvdXIgPCAxKSBob3VyID0gMTtcbiAgICAgIGlmIChob3VyID4gMTIpIGhvdXIgPSAxMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gMjQtaG91ciBmb3JtYXQ6IDAtMjNcbiAgICAgIGlmIChob3VyIDwgMCkgaG91ciA9IDA7XG4gICAgICBpZiAoaG91ciA+IDIzKSBob3VyID0gMjM7XG4gICAgfVxuICAgIHJldHVybiBob3VyO1xuICB9XG4gIFxuICAvLyBTcGVjaWFsIHZhbGlkYXRpb24gZm9yIDI0LWhvdXIgZm9ybWF0XG4gIHZhbGlkYXRlSG91cklucHV0MjQoaG91cjogbnVtYmVyKSB7XG4gICAgaWYgKGhvdXIgPCAwKSBob3VyID0gMDtcbiAgICBpZiAoaG91ciA+IDIzKSBob3VyID0gMjM7XG4gICAgcmV0dXJuIGhvdXI7XG4gIH1cbiAgXG4gIHZhbGlkYXRlTWludXRlSW5wdXQobWludXRlOiBudW1iZXIpIHtcbiAgICBpZiAobWludXRlIDwgMCkgbWludXRlID0gMDtcbiAgICBpZiAobWludXRlID4gNTkpIG1pbnV0ZSA9IDU5O1xuICAgIHJldHVybiBtaW51dGU7XG4gIH1cbiAgXG4gIHB1YmxpYyBpczEySG91ckZvcm1hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LmluY2x1ZGVzKCdBJykgfHwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0LmluY2x1ZGVzKCdhJyk7XG4gIH1cbiAgXG4gIHByaXZhdGUgZm9ybWF0VGltZShob3VyOiBudW1iZXIsIG1pbnV0ZTogbnVtYmVyLCBhbVBtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIHJldHVybiBgJHtob3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHttaW51dGUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfSAke2FtUG19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIDI0LWhvdXIgZm9ybWF0LCBqdXN0IHJldHVybiB0aGUgaG91ciBhbmQgbWludXRlXG4gICAgICByZXR1cm4gYCR7aG91ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRpbWVWYWx1ZXMoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aW1lIHZhbHVlcyBmcm9tIGV4aXN0aW5nIHNlbGVjdGVkIGRhdGVzIGlmIHRoZXkgY29udGFpbiB0aW1lXG4gICAgbGV0IHN0YXJ0VGltZUluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgbGV0IGVuZFRpbWVJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIFxuICAgIGlmICh0aGlzLmRhdGEoKS5kcENvbmZpZy5lbmFibGVUaW1lICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuc3RhcnREYXRlICYmIHR5cGVvZiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLnN0YXJ0RGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZVBhcnRzID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNTaWduYWwoKS5zdGFydERhdGUuc3BsaXQoJyAnKTtcbiAgICAgIGlmIChzdGFydERhdGVQYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHRpbWVQYXJ0ID0gc3RhcnREYXRlUGFydHMuc2xpY2UoMSkuam9pbignICcpOyAvLyBIYW5kbGUgbXVsdGlwbGUgc3BhY2VzXG4gICAgICAgIHRoaXMucGFyc2VUaW1lU3RyaW5nKHRpbWVQYXJ0LCB0cnVlKTtcbiAgICAgICAgc3RhcnRUaW1lSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5kYXRhKCkuZHBDb25maWcuZW5hYmxlVGltZSAmJiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1NpZ25hbCgpLmVuZERhdGUgJiYgdHlwZW9mIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuZW5kRGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGVuZERhdGVQYXJ0cyA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzU2lnbmFsKCkuZW5kRGF0ZS5zcGxpdCgnICcpO1xuICAgICAgaWYgKGVuZERhdGVQYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHRpbWVQYXJ0ID0gZW5kRGF0ZVBhcnRzLnNsaWNlKDEpLmpvaW4oJyAnKTsgLy8gSGFuZGxlIG11bHRpcGxlIHNwYWNlc1xuICAgICAgICB0aGlzLnBhcnNlVGltZVN0cmluZyh0aW1lUGFydCwgZmFsc2UpO1xuICAgICAgICBlbmRUaW1lSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBJZiBubyBleGlzdGluZyB0aW1lIGZvdW5kLCBzZXQgY3VycmVudCB0aW1lIGFzIGRlZmF1bHRcbiAgICBpZiAodGhpcy5kYXRhKCkuZHBDb25maWcuZW5hYmxlVGltZSkge1xuICAgICAgaWYgKCFzdGFydFRpbWVJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRUaW1lQXNEZWZhdWx0KHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKCFlbmRUaW1lSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50VGltZUFzRGVmYXVsdChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDdXJyZW50VGltZUFzRGVmYXVsdChpc1N0YXJ0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICBjb25zdCBjdXJyZW50SG91ciA9IG5vdy5ob3VyKCk7XG4gICAgY29uc3QgY3VycmVudE1pbnV0ZSA9IG5vdy5taW51dGUoKTtcbiAgICBcbiAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAvLyBDb252ZXJ0IGN1cnJlbnQgdGltZSB0byAxMi1ob3VyIGZvcm1hdFxuICAgICAgbGV0IGhvdXIxMiA9IGN1cnJlbnRIb3VyO1xuICAgICAgbGV0IGFtUG0gPSAnQU0nO1xuICAgICAgXG4gICAgICBpZiAoY3VycmVudEhvdXIgPT09IDApIHtcbiAgICAgICAgaG91cjEyID0gMTI7XG4gICAgICAgIGFtUG0gPSAnQU0nO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA9PT0gMTIpIHtcbiAgICAgICAgaG91cjEyID0gMTI7XG4gICAgICAgIGFtUG0gPSAnUE0nO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA+IDEyKSB7XG4gICAgICAgIGhvdXIxMiA9IGN1cnJlbnRIb3VyIC0gMTI7XG4gICAgICAgIGFtUG0gPSAnUE0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYW1QbSA9ICdBTSc7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChpc1N0YXJ0KSB7XG4gICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldChob3VyMTIpO1xuICAgICAgICB0aGlzLnN0YXJ0TWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KGFtUG0pO1xuICAgICAgICB0aGlzLnN0YXJ0SG91cjI0U2lnbmFsLnNldChjdXJyZW50SG91cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KGhvdXIxMik7XG4gICAgICAgIHRoaXMuZW5kTWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgICAgdGhpcy5lbmRBbVBtU2lnbmFsLnNldChhbVBtKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyMjRTaWduYWwuc2V0KGN1cnJlbnRIb3VyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIGN1cnJlbnQgdGltZSBkaXJlY3RseSBmb3IgMjQtaG91ciBmb3JtYXRcbiAgICAgIGlmIChpc1N0YXJ0KSB7XG4gICAgICAgIHRoaXMuc3RhcnRIb3VyMjRTaWduYWwuc2V0KGN1cnJlbnRIb3VyKTtcbiAgICAgICAgdGhpcy5zdGFydE1pbnV0ZVNpZ25hbC5zZXQoY3VycmVudE1pbnV0ZSk7XG4gICAgICAgIC8vIEFsc28gc2V0IDEyLWhvdXIgdmFsdWVzIGZvciBjb25zaXN0ZW5jeVxuICAgICAgICBpZiAoY3VycmVudEhvdXIgPT09IDApIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoMTIpO1xuICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA9PT0gMTIpIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoMTIpO1xuICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldCgnUE0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA+IDEyKSB7XG4gICAgICAgICAgdGhpcy5zdGFydEhvdXJTaWduYWwuc2V0KGN1cnJlbnRIb3VyIC0gMTIpO1xuICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldCgnUE0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoY3VycmVudEhvdXIpO1xuICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbmRIb3VyMjRTaWduYWwuc2V0KGN1cnJlbnRIb3VyKTtcbiAgICAgICAgdGhpcy5lbmRNaW51dGVTaWduYWwuc2V0KGN1cnJlbnRNaW51dGUpO1xuICAgICAgICAvLyBBbHNvIHNldCAxMi1ob3VyIHZhbHVlcyBmb3IgY29uc2lzdGVuY3lcbiAgICAgICAgaWYgKGN1cnJlbnRIb3VyID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldCgxMik7XG4gICAgICAgICAgdGhpcy5lbmRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA9PT0gMTIpIHtcbiAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KDEyKTtcbiAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID4gMTIpIHtcbiAgICAgICAgICB0aGlzLmVuZEhvdXJTaWduYWwuc2V0KGN1cnJlbnRIb3VyIC0gMTIpO1xuICAgICAgICAgIHRoaXMuZW5kQW1QbVNpZ25hbC5zZXQoJ1BNJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldChjdXJyZW50SG91cik7XG4gICAgICAgICAgdGhpcy5lbmRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUaW1lU3RyaW5nKHRpbWVTdHJpbmc6IHN0cmluZywgaXNTdGFydDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIC8vIFBhcnNlIDEyLWhvdXIgZm9ybWF0OiBcIjEwOjAwIFBNXCJcbiAgICAgIGNvbnN0IG1hdGNoID0gdGltZVN0cmluZy5tYXRjaCgvKFxcZCspOihcXGQrKVxccyooQU18UE0pL2kpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXIgPSBwYXJzZUludChtYXRjaFsxXSk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZSA9IHBhcnNlSW50KG1hdGNoWzJdKTtcbiAgICAgICAgY29uc3QgYW1QbSA9IG1hdGNoWzNdLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoaXNTdGFydCkge1xuICAgICAgICAgIHRoaXMuc3RhcnRIb3VyU2lnbmFsLnNldChob3VyKTtcbiAgICAgICAgICB0aGlzLnN0YXJ0TWludXRlU2lnbmFsLnNldChtaW51dGUpO1xuICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldChhbVBtKTtcbiAgICAgICAgICAvLyBBbHNvIHNldCAyNC1ob3VyIHZhbHVlIGZvciBjb25zaXN0ZW5jeVxuICAgICAgICAgIHRoaXMuc3RhcnRIb3VyMjRTaWduYWwuc2V0KGhvdXIgPT09IDEyID8gKGFtUG0gPT09ICdQTScgPyAxMiA6IDApIDogKGFtUG0gPT09ICdQTScgPyBob3VyICsgMTIgOiBob3VyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldChob3VyKTtcbiAgICAgICAgICB0aGlzLmVuZE1pbnV0ZVNpZ25hbC5zZXQobWludXRlKTtcbiAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KGFtUG0pO1xuICAgICAgICAgIC8vIEFsc28gc2V0IDI0LWhvdXIgdmFsdWUgZm9yIGNvbnNpc3RlbmN5XG4gICAgICAgICAgdGhpcy5lbmRIb3VyMjRTaWduYWwuc2V0KGhvdXIgPT09IDEyID8gKGFtUG0gPT09ICdQTScgPyAxMiA6IDApIDogKGFtUG0gPT09ICdQTScgPyBob3VyICsgMTIgOiBob3VyKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGFyc2UgMjQtaG91ciBmb3JtYXQ6IFwiMjI6MDBcIlxuICAgICAgY29uc3QgbWF0Y2ggPSB0aW1lU3RyaW5nLm1hdGNoKC8oXFxkKyk6KFxcZCspLyk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgaG91cjI0ID0gcGFyc2VJbnQobWF0Y2hbMV0pO1xuICAgICAgICBjb25zdCBtaW51dGUgPSBwYXJzZUludChtYXRjaFsyXSk7XG4gICAgICAgIFxuICAgICAgICBpZiAoaXNTdGFydCkge1xuICAgICAgICAgIC8vIFN0b3JlIGRpcmVjdGx5IGluIDI0LWhvdXIgZm9ybWF0XG4gICAgICAgICAgdGhpcy5zdGFydEhvdXIyNFNpZ25hbC5zZXQoaG91cjI0KTtcbiAgICAgICAgICB0aGlzLnN0YXJ0TWludXRlU2lnbmFsLnNldChtaW51dGUpO1xuICAgICAgICAgIC8vIEFsc28gc2V0IDEyLWhvdXIgdmFsdWVzIGZvciBjb25zaXN0ZW5jeSAodGhvdWdoIG5vdCB1c2VkIGluIDI0LWhvdXIgbW9kZSlcbiAgICAgICAgICBpZiAoaG91cjI0ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoMTIpO1xuICAgICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaG91cjI0ID09PSAxMikge1xuICAgICAgICAgICAgdGhpcy5zdGFydEhvdXJTaWduYWwuc2V0KDEyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldCgnUE0nKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIyNCA+IDEyKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoaG91cjI0IC0gMTIpO1xuICAgICAgICAgICAgdGhpcy5zdGFydEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0SG91clNpZ25hbC5zZXQoaG91cjI0KTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU3RvcmUgZGlyZWN0bHkgaW4gMjQtaG91ciBmb3JtYXRcbiAgICAgICAgICB0aGlzLmVuZEhvdXIyNFNpZ25hbC5zZXQoaG91cjI0KTtcbiAgICAgICAgICB0aGlzLmVuZE1pbnV0ZVNpZ25hbC5zZXQobWludXRlKTtcbiAgICAgICAgICAvLyBBbHNvIHNldCAxMi1ob3VyIHZhbHVlcyBmb3IgY29uc2lzdGVuY3kgKHRob3VnaCBub3QgdXNlZCBpbiAyNC1ob3VyIG1vZGUpXG4gICAgICAgICAgaWYgKGhvdXIyNCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldCgxMik7XG4gICAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaG91cjI0ID09PSAxMikge1xuICAgICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldCgxMik7XG4gICAgICAgICAgICB0aGlzLmVuZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaG91cjI0ID4gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kSG91clNpZ25hbC5zZXQoaG91cjI0IC0gMTIpO1xuICAgICAgICAgICAgdGhpcy5lbmRBbVBtU2lnbmFsLnNldCgnUE0nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbmRIb3VyU2lnbmFsLnNldChob3VyMjQpO1xuICAgICAgICAgICAgdGhpcy5lbmRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgYXJpYS1sYWJlbD1cImRhdGUgcmFuZ2UgcGlja2VyXCIgY2RrVHJhcEZvY3VzIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX192aWV3XCI+XG4gICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJkYXRhKCk/LmRwQ29uZmlnPy5yYW5nZXM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3Jhbmdlc1wiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhKCk/LmRwQ29uZmlnPy5yYW5nZXMgPz8gW11cIiA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtcmFuZ2UnIDogc2VsZWN0ZWRJdGVtTGFiZWwoKSA9PT0gaXRlbS5sYWJlbH1cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZShpdGVtKVwiXG4gICAgICAgICAgY2xhc3M9XCJtaXMtYnRuXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+IDxidXR0b24gY2xhc3M9XCJtaXMtYnRuXCIgW25nQ2xhc3NdPVwieydhY3RpdmUtcmFuZ2UnIDogc2VsZWN0ZWRJdGVtTGFiZWwoKSA9PT0gJ0N1c3RvbSBSYW5nZSd9XCIgKGNsaWNrKT1cInJlc2V0UmFuZ2UoKVwiPkN1c3RvbSBSYW5nZTwvYnV0dG9uPiA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2xlZnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2Fycm93X19pY29uXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIChjbGljayk9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiIWlzUHJldmlvdXNNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnUFJFVklPVVMnKVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIE1vbnRoXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDwhLS0gQnV0dG9uIHZpc2libGUgaW4gbW9iaWxlIHZpZXcgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2Fycm93X19pY29uIG1vYmlsZV92aWV3XCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGVkLW1vbnRoJzogaXNOZXh0TW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHdlZWtEYXkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5c1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5XCIgXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zYW1lLWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgZGF5LmlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1zdGFydC1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5LFxuICAgICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAgICdpbi1yYW5nZS1kYXknOiBkYXkuaW5SYW5nZURheSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGN1cnJlbnRNb250aERhdGVzKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheSgnTEVGVCcsIGRheSlcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlbGVjdERheSgnTEVGVCcsIGRheSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCJcbiAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImRheS5pc0Rpc2FibGVkRGF5ID8gLTEgOiAwXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXRyYWN0RGF5TW9udGgoZGF5LmRhdGUsIGN1cnJlbnRNb250aCgpLCBjdXJyZW50WWVhck51bWJlcigpKVwiPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19yaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2hlYWRlcl9fcHJhYnVcIj5cbiAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgPHNwYW4+IHt7IG5leHRNb250aCgpIH19IHt7IG5leHRZZWFyTnVtYmVyKCkgfX0gPC9zcGFuPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvbiBwY192aWV3XCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkKClcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc2FtZS1kYXknOiBkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLWVuZC1kYXknOiBkYXkuaXNTZWxlY3RlZEVuZERheSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXksXG4gICAgICAgICAgICAgICdpcy12YWxpZC1kYXRlJzogZGF5LmRhdGUgPiAwICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJywgZGF5KVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF5KCdSSUdIVCcsIGRheSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCJcbiAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImRheS5pc0Rpc2FibGVkRGF5ID8gLTEgOiAwXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXRyYWN0RGF5TW9udGgoZGF5LmRhdGUsIG5leHRNb250aCgpLCBuZXh0WWVhck51bWJlcigpKVwiPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDwhLS0gVGltZSBTZWxlY3Rpb24gU2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX3RpbWVcIiAqbmdJZj1cImRhdGEoKS5kcENvbmZpZy5lbmFibGVUaW1lID09PSB0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtc2VjdGlvblwiPlxuICAgICAgPGg0PkZyb208L2g0PlxuICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXRzXCI+XG4gICAgICAgIDxpbnB1dCBcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgW25nTW9kZWxdPVwiaXMxMkhvdXJGb3JtYXQoKSA/IHN0YXJ0SG91cigpIDogc3RhcnRIb3VyMjQoKVwiIFxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlzMTJIb3VyRm9ybWF0KCkgPyBzdGFydEhvdXJTaWduYWwuc2V0KCRldmVudCkgOiBzdGFydEhvdXIyNFNpZ25hbC5zZXQoJGV2ZW50KTsgb25TdGFydEhvdXJJbnB1dCgpXCJcbiAgICAgICAgICBbbWluXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxIDogMFwiIFxuICAgICAgICAgIFttYXhdPVwiaXMxMkhvdXJGb3JtYXQoKSA/IDEyIDogMjNcIiBcbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgY2xhc3M9XCJ0aW1lLWlucHV0IGhvdXItaW5wdXRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSEhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXNlcGFyYXRvclwiPjo8L3NwYW4+XG4gICAgICAgIDxpbnB1dCBcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgW25nTW9kZWxdPVwic3RhcnRNaW51dGUoKVwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0TWludXRlU2lnbmFsLnNldCgkZXZlbnQpXCIgXG4gICAgICAgICAgKGlucHV0KT1cIm9uU3RhcnRNaW51dGVJbnB1dCgpXCJcbiAgICAgICAgICBtaW49XCIwXCIgXG4gICAgICAgICAgbWF4PVwiNTlcIiBcbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgY2xhc3M9XCJ0aW1lLWlucHV0IG1pbnV0ZS1pbnB1dFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJNTVwiPlxuICAgICAgICA8c2VsZWN0IFxuICAgICAgICAgIFtuZ01vZGVsXT1cInN0YXJ0QW1QbSgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRBbVBtU2lnbmFsLnNldCgkZXZlbnQpXCIgXG4gICAgICAgICAgY2xhc3M9XCJhbS1wbS1zZWxlY3RvclwiXG4gICAgICAgICAgKm5nSWY9XCJpczEySG91ckZvcm1hdCgpXCI+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFNXCI+QU08L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiUE1cIj5QTTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXNlY3Rpb25cIj5cbiAgICAgIDxoND5UbzwvaDQ+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dHNcIj5cbiAgICAgICAgPGlucHV0IFxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcbiAgICAgICAgICBbbmdNb2RlbF09XCJpczEySG91ckZvcm1hdCgpID8gZW5kSG91cigpIDogZW5kSG91cjI0KClcIiBcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJpczEySG91ckZvcm1hdCgpID8gZW5kSG91clNpZ25hbC5zZXQoJGV2ZW50KSA6IGVuZEhvdXIyNFNpZ25hbC5zZXQoJGV2ZW50KTsgb25FbmRIb3VySW5wdXQoKVwiXG4gICAgICAgICAgW21pbl09XCJpczEySG91ckZvcm1hdCgpID8gMSA6IDBcIiBcbiAgICAgICAgICBbbWF4XT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxMiA6IDIzXCIgXG4gICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgIGNsYXNzPVwidGltZS1pbnB1dCBob3VyLWlucHV0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhIXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1zZXBhcmF0b3JcIj46PC9zcGFuPlxuICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgIFtuZ01vZGVsXT1cImVuZE1pbnV0ZSgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kTWludXRlU2lnbmFsLnNldCgkZXZlbnQpXCIgXG4gICAgICAgICAgKGlucHV0KT1cIm9uRW5kTWludXRlSW5wdXQoKVwiXG4gICAgICAgICAgbWluPVwiMFwiIFxuICAgICAgICAgIG1heD1cIjU5XCIgXG4gICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgIGNsYXNzPVwidGltZS1pbnB1dCBtaW51dGUtaW5wdXRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTU1cIj5cbiAgICAgICAgPHNlbGVjdCBcbiAgICAgICAgICBbbmdNb2RlbF09XCJlbmRBbVBtKClcIiAobmdNb2RlbENoYW5nZSk9XCJlbmRBbVBtU2lnbmFsLnNldCgkZXZlbnQpXCIgXG4gICAgICAgICAgY2xhc3M9XCJhbS1wbS1zZWxlY3RvclwiXG4gICAgICAgICAgKm5nSWY9XCJpczEySG91ckZvcm1hdCgpXCI+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFNXCI+QU08L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiUE1cIj5QTTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXJfX2Zvb3RlclwiPlxuICAgIDxidXR0b24gbWlzLWJ1dHRvbiB0eXBlPVwibm9uZVwiIGlkPSdtb2JpbGUtZm9vdGVyLWJ0bicgKGNsaWNrKT1cImNhbmNlbERhdGVQaWNrZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWlzLWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIGlkPVwibW9iaWxlLWZvb3Rlci1idG5cIiAoY2xpY2spPVwiYXBwbHlEYXRlcygpXCIgW2Rpc2FibGVkXT1cIiFpc0RhdGVzVmFsaWQoKVwiPkFwcGx5PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+Il19
@@ -384,7 +384,7 @@ class TzDrpContainerComponent {
384
384
  }, { allowSignalWrites: true });
385
385
  }
386
386
  ngOnInit() {
387
- console.log('ngOnInit');
387
+ console.log('ngOnInit 1');
388
388
  this.calculateMinMaxDays();
389
389
  this.initializeTimeValues();
390
390
  if (this.data()?.showPrevMonth && !this.isPreviousMonthDisabled) {
@@ -1198,16 +1198,19 @@ class TzDaterangepickerDirective {
1198
1198
  backdropClass: "cdk-overlay-transparent-backdrop"
1199
1199
  });
1200
1200
  this.overlayRef = this.overlay.create(config);
1201
+ // Get current values at the time of opening
1202
+ const currentSelectedDates = this.selectedDates();
1203
+ const currentSelectedRangeLabel = this.selectedRangeLabel();
1201
1204
  const tempRef = new ComponentPortal(TzDrpContainerComponent, this.viewContainerRef, Injector.create({
1202
1205
  providers: [
1203
1206
  {
1204
1207
  provide: CONTAINER_DATA,
1205
1208
  useValue: {
1206
1209
  messages: this.dateMessages(),
1207
- dates: this.selectedDates(),
1210
+ dates: currentSelectedDates,
1208
1211
  dpConfig: this.dpConfig(),
1209
1212
  datesDisabled: this.datesDisabled(),
1210
- selectedRangeLabel: this.selectedRangeLabel(),
1213
+ selectedRangeLabel: currentSelectedRangeLabel,
1211
1214
  dateChange: this.applyDate.bind(this),
1212
1215
  close: this.close.bind(this)
1213
1216
  }