@smarterplan/ngx-smarterplan-locations 0.2.32 → 0.2.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/zones/add-zone/add-zone.component.mjs +22 -9
- package/esm2020/lib/components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component.mjs +2 -2
- package/esm2020/lib/components/zones/zones.component.mjs +5 -2
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +33 -15
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +26 -10
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/lib/components/zones/add-zone/add-zone.component.d.ts +4 -2
- package/package.json +1 -1
|
@@ -45,7 +45,7 @@ export class SweepPlanSelectionComponent {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
setSweepsOfInputZone() {
|
|
48
|
-
this.navIDsZoneEdit = this.inputZone.sweepIDs;
|
|
48
|
+
this.navIDsZoneEdit = this.inputZone ? this.inputZone.sweepIDs : [];
|
|
49
49
|
}
|
|
50
50
|
async getPlans() {
|
|
51
51
|
this.plans = await this.planService.getSingedPlansForSpace(this.spaceID);
|
|
@@ -411,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
411
411
|
}], sweepsSelected: [{
|
|
412
412
|
type: Output
|
|
413
413
|
}] } });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvYWRkLXpvbmUvc3dlZXAtcGxhbi1zZWxlY3Rpb24vc3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvYWRkLXpvbmUvc3dlZXAtcGxhbi1zZWxlY3Rpb24vc3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUE2Qyx5QkFBeUIsRUFBNEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3TCxPQUFPLE9BQW9CLE1BQU0sU0FBUyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQWEsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBTy9JLE1BQU0sT0FBTywyQkFBMkI7SUE0Q3BDLFlBQ1ksV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLFdBQXdCO1FBRnhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF6QzNCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUsxQyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUU5Qixx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LDBCQUEwQjs0SkFRM0IsT0FBTztzQkFBZixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQWdCSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBnZXRDb2VmZmljaWVudHNGb3JJbWFnZSwgZ2V0TWV0YUZvckltYWdlLCBOYXZpZ2F0aW9uLCBOYXZpZ2F0aW9uU2VydmljZSwgUGxhbiwgWm9uZSwgc2hvd1NjYW5Qb2ludHNPblBsYW5JbkRpdiwgWm9uZVNlcnZpY2UsIFBsYW5TZXJ2aWNlIH0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcclxuaW1wb3J0IHBhbnpvb20sIHsgUGFuWm9vbSB9IGZyb20gJ3Bhbnpvb20nO1xyXG5pbXBvcnQgeyBidXR0b25Jc0luU2VsZWN0aW9uLCBpc0luUG9seWdvbiwgUmVjdGFuZ2xlLCByb3RhdGUsIHNldFZpc3VhbGx5U2VsZWN0ZWQsIHN0eWxlQnV0dG9uLCBTd2VlcFN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1zd2VlcC1wbGFuLXNlbGVjdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3dlZXBQbGFuU2VsZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBwbGFuczogUGxhbltdO1xyXG5cclxuICAgIEBJbnB1dCgpIHNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBjaG9zZW5TY2Fuc09uUGxhbjogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKiogaWYgY29tbWluZyBmcm9tIEVkaXQgUGxhbiBTVkcgWm9uZSBjcmVhdGlvbiAqL1xyXG4gICAgQElucHV0KCkgbmV3Wm9uZURhdGE6IGFueTtcclxuXHJcbiAgICBuYXZJRHNab25lRWRpdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvLyBzd2VlcHMgYmVsb25naW5nIHRvIGFueSBhdWRpbyB6b25lXHJcbiAgICBASW5wdXQoKSBvY2N1cGllZFN3ZWVwczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvLyBzd2VlcHMgdW5hdmFpbGFibGUgKGNhbm5vdCBiZSBjaG9zZW4pXHJcbiAgICBASW5wdXQoKSB1bmF2YWlsYWJsZVN3ZWVwczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvLyBpZiBjaG9vc2luZyBzd2VlcHMgZm9yIGF1ZGlvIHpvbmVcclxuICAgIEBJbnB1dCgpIGVkaXRpbmdBdWRpb1pvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBpbnB1dFpvbmU6IFpvbmU7XHJcblxyXG4gICAgY2hvc2VuUGxhbjogUGxhbjtcclxuXHJcbiAgICAvKiogcGFuWm9vbSBlbGVtZW50IGZvciBhZGRpbmcgc2NhbnMgKi9cclxuICAgIHBhblpvb206IFBhblpvb207XHJcblxyXG4gICAgLyoqIGRpdlBsYW4gKHVzZSBCeSBwYW5ab29tKSAqL1xyXG4gICAgZGl2UGxhbjogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqIGFsbCBzY2FuIGJ1dHRvbnMgRWxlbWVudCAqL1xyXG4gICAgYnV0dG9uRWxlbWVudHM6IEhUTUxCdXR0b25FbGVtZW50W10gPSBbXTtcclxuXHJcbiAgICAvKiogU2NhbiBidXR0b25zIHRoYXQgYXJlIGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbiAqL1xyXG4gICAgYnV0dG9uc0luU2VsZWN0aW9uOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XHJcblxyXG4gICAgQE91dHB1dCgpIHN3ZWVwc1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN3ZWVwczogc3RyaW5nW107IHN0YXJ0U3dlZXBJRDogc3RyaW5nOyB9PigpO1xyXG5cclxuICAgIGlzU2V0dGluZ1N0YXJ0U3dlZXAgPSBmYWxzZTtcclxuXHJcbiAgICBzdGFydFN3ZWVwSUQ6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHBsYW5TZXJ2aWNlOiBQbGFuU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nZXRQbGFucygpO1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0Wm9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN3ZWVwc09mSW5wdXRab25lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNob3NlblBsYW4pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTd2VlcHNPZklucHV0Wm9uZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJEaXZQbGFuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkU2NhblBvaW50cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRTd2VlcHNPZklucHV0Wm9uZSgpIHtcclxuICAgICAgICB0aGlzLm5hdklEc1pvbmVFZGl0ID0gdGhpcy5pbnB1dFpvbmUuc3dlZXBJRHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UGxhbnMoKSB7XHJcbiAgICAgICAgdGhpcy5wbGFucyA9IGF3YWl0IHRoaXMucGxhblNlcnZpY2UuZ2V0U2luZ2VkUGxhbnNGb3JTcGFjZShcclxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25QbGFuQ2xpY2socGxhbjogUGxhbikge1xyXG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbiA9IHBsYW47XHJcbiAgICAgICAgdGhpcy5jbGVhckRpdlBsYW4oKTtcclxuICAgICAgICB0aGlzLmFkZFNjYW5Qb2ludHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZGRTY2FuUG9pbnRzKCkge1xyXG4gICAgICAgIHRoaXMuZGl2UGxhbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjcGxhbkRpdlwiKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCB6b25lT2ZQbGFuID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lKFxyXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uem9uZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yWm9uZShcclxuICAgICAgICAgICAgem9uZU9mUGxhbixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLm5ld1pvbmVEYXRhKSBhd2FpdCB0aGlzLnNldFNjYW5CeURyYXcobmF2aWdhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uRWxlbWVudHMgPSBhd2FpdCBzaG93U2NhblBvaW50c09uUGxhbkluRGl2KFxyXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4sXHJcbiAgICAgICAgICAgIHRoaXMuZGl2UGxhbixcclxuICAgICAgICAgICAgbmF2aWdhdGlvbnMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5idXR0b25FbGVtZW50cykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy51bmF2YWlsYWJsZVN3ZWVwcyAmJiB0aGlzLnVuYXZhaWxhYmxlU3dlZXBzLmluY2x1ZGVzKGVsZW1lbnQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZUJ1dHRvbihlbGVtZW50LCBTd2VlcFN0YXRlLkRJU0FCTEVEKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5uYXZJRHNab25lRWRpdC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2SURzWm9uZUVkaXQuaW5jbHVkZXMoZWxlbWVudC5pZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhlbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlQnV0dG9uKGVsZW1lbnQsIFN3ZWVwU3RhdGUuQURERUQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhlbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuLnB1c2goZWxlbWVudC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9jY3VwaWVkU3dlZXBzICYmIHRoaXMub2NjdXBpZWRTd2VlcHMuaW5jbHVkZXMoZWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZUJ1dHRvbihlbGVtZW50LCBTd2VlcFN0YXRlLk9DQ1VQSUVEKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVCdXR0b24oZWxlbWVudCwgU3dlZXBTdGF0ZS5SRU1PVkVEKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vc3RhcnQgcG9pbnQgc2hvdWxkIGJlIGxhc3QgY29uZGl0aW9uIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRab25lICYmIHRoaXMuaW5wdXRab25lLnN0YXJ0U3dlZXBJRCA9PT0gZWxlbWVudC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic2V0dGluZyBzdGFydCBwb2ludFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZUJ1dHRvbihlbGVtZW50LCBTd2VlcFN0YXRlLlNUQVJUUE9JTlQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2ZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25CdXR0b25TY2FuQ2xpY2tlZChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBhblpvb20gPSBwYW56b29tKHRoaXMuZGl2UGxhbiwge1xyXG4gICAgICAgICAgICBib3VuZHM6IHRydWUsXHJcbiAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIG1heFpvb206IDMuNSxcclxuICAgICAgICAgICAgYmVmb3JlTW91c2VEb3duKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgZS5idXR0b24gPT09IDJcclxuICAgICAgICAgICAgICAgICk7IC8qKiBJZ25vcmUgZXZlbnQgZm9yIHJpZ2h0IGNsaWNrICh1c2UgZm9yIHNlbGVjdGluZykgKi9cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRnVuY3Rpb24gaWYgd2UgYXJlIGNvbWluZyBmb3Igc3ZnIGVkaXRvciB3b3JrZmxvdyAqL1xyXG4gICAgc2V0U2NhbkJ5RHJhdyhuYXZpZ2F0aW9uczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm5ld1pvbmVEYXRhLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm5ld1pvbmVEYXRhLmhlaWdodCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgaW1nID0gYXdhaXQgZ2V0TWV0YUZvckltYWdlKHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29lZmZYLCBjb2VmZlkgfSA9IGdldENvZWZmaWNpZW50c0ZvckltYWdlKGltZywgcmVjdCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkcmF3ID0gdGhpcy5uZXdab25lRGF0YS5lbGVtZW50cztcclxuXHJcbiAgICAgICAgICAgIGRyYXcubWFwKGFzeW5jIChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJyZWN0XCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2NhbkluUmVjdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2NhbkluQ2lyY2xlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZYLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInBhdGhcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRTY2FuSW5Qb2x5Z29uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZYLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0U2NhbkluUmVjdChpbWc6IGFueSwgY29lZmZYOiBudW1iZXIsIGNvZWZmWTogbnVtYmVyLFxyXG4gICAgICAgIGVsZW1lbnQ6IHsgYW5nbGU6IGFueTsgY3g6IGFueTsgY3k6IGFueTsgeDogbnVtYmVyOyB3aWR0aDogYW55OyB5OiBudW1iZXI7IGhlaWdodDogYW55OyB9LCBuYXZpZ2F0aW9uczogYW55W10pIHtcclxuICAgICAgICBjb25zdCBjYWxpYnJhZ2UgPSBKU09OLnBhcnNlKHRoaXMuY2hvc2VuUGxhbi5jYWxpYnJhdGlvbik7XHJcbiAgICAgICAgbmF2aWdhdGlvbnMubWFwKChuYXZpZ2F0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uc09uUGxhbiA9IG5hdmlnYXRpb24ucG9zaXRpb25PblBsYW4ubWFwKChlbnRyeSkgPT5cclxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uUGxhbiA9IHBvc2l0aW9uc09uUGxhbi5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEucGxhbklEID09PSB0aGlzLmNob3NlblBsYW4uaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbk9uUGxhbikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbFdpZHRoID0gaW1nLndpZHRoIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbEhlaWdodCA9IGltZy5oZWlnaHQgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYXZZID0gKHBvc2l0aW9uT25QbGFuLnkgKiByZWFsSGVpZ2h0KSAvIGNhbGlicmFnZS5pbWdIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYXZYID0gKHBvc2l0aW9uT25QbGFuLnggKiByZWFsV2lkdGgpIC8gY2FsaWJyYWdlLmltZ1dpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdlggPiBlbGVtZW50LnggJiZcclxuICAgICAgICAgICAgICAgICAgICBuYXZYIDwgZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG5hdlkgPiBlbGVtZW50LnkgJiZcclxuICAgICAgICAgICAgICAgICAgICBuYXZZIDwgZWxlbWVudC55ICsgZWxlbWVudC5oZWlnaHQgJiZcclxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZJRHNab25lRWRpdC5wdXNoKG5hdmlnYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBvbGQgY2FsaWJyYXRpb246XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcclxuICAgICAgICAgICAgLy8gbGV0IG5hdlggPSAoY2FsaWJyYWdlLm9mZnNldFggKyBwb3NpdGlvbi54ICogY2FsaWJyYWdlLngpIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmF2WSA9IChjYWxpYnJhZ2Uub2Zmc2V0WSArIHBvc2l0aW9uLnogKiBjYWxpYnJhZ2UueSkgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgIC8vIGlmIChlbGVtZW50LmFuZ2xlKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zdCByb3RhdGVQb3MgPSByb3RhdGUoXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBuYXZYLCB5OiBuYXZZIH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBlbGVtZW50LmN4LCB5OiBlbGVtZW50LmN5IH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgZWxlbWVudC5hbmdsZSxcclxuICAgICAgICAgICAgLy8gICAgICk7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYID0gcm90YXRlUG9zLng7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZZID0gcm90YXRlUG9zLnk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFRPRE8gY2FsY3VsZXIgbGEgcm90YXRpb24gZHUgcmVjdGFuZ2xlXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAvLyBpZiAoXHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYID4gZWxlbWVudC54ICYmXHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYIDwgZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCAmJlxyXG4gICAgICAgICAgICAvLyAgICAgbmF2WSA+IGVsZW1lbnQueSAmJlxyXG4gICAgICAgICAgICAvLyAgICAgbmF2WSA8IGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0ICYmXHJcbiAgICAgICAgICAgIC8vICAgICAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKVxyXG4gICAgICAgICAgICAvLyApIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMubmF2SURzWm9uZUVkaXQucHVzaChuYXZpZ2F0aW9uLmlkKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSAvLyBFT1xyXG5cclxuICAgIGFzeW5jIHNldFNjYW5JbkNpcmNsZShpbWc6IGFueSwgY29lZmZYOiBudW1iZXIsIGNvZWZmWTogbnVtYmVyLFxyXG4gICAgICAgIGVsZW1lbnQ6IHsgYW5nbGU6IGFueTsgY3g6IG51bWJlcjsgY3k6IG51bWJlcjsgcng6IG51bWJlcjsgcnk6IG51bWJlcjsgfSwgbmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXSkge1xyXG4gICAgICAgIGNvbnN0IGNhbGlicmFnZSA9IEpTT04ucGFyc2UodGhpcy5jaG9zZW5QbGFuLmNhbGlicmF0aW9uKTtcclxuICAgICAgICBuYXZpZ2F0aW9ucy5tYXAobmF2aWdhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uc09uUGxhbiA9IG5hdmlnYXRpb24ucG9zaXRpb25PblBsYW4ubWFwKChlbnRyeSkgPT5cclxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uUGxhbiA9IHBvc2l0aW9uc09uUGxhbi5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEucGxhbklEID09PSB0aGlzLmNob3NlblBsYW4uaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbk9uUGxhbikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbFdpZHRoID0gaW1nLndpZHRoIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbEhlaWdodCA9IGltZy5oZWlnaHQgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmF2WSA9IChwb3NpdGlvbk9uUGxhbi55ICogcmVhbEhlaWdodCkgLyBjYWxpYnJhZ2UuaW1nSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hdlggPSAocG9zaXRpb25PblBsYW4ueCAqIHJlYWxXaWR0aCkgLyBjYWxpYnJhZ2UuaW1nV2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdGF0ZVBvcyA9IHJvdGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyB4OiBuYXZYLCB5OiBuYXZZIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgeDogZWxlbWVudC5jeCwgeTogZWxlbWVudC5jeSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFuZ2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmF2WCA9IHJvdGF0ZVBvcy54O1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdlkgPSByb3RhdGVQb3MueTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVggPVxyXG4gICAgICAgICAgICAgICAgICAgIE1hdGgucG93KG5hdlggLSBlbGVtZW50LmN4LCAyKSAvIE1hdGgucG93KGVsZW1lbnQucngsIDIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVZID1cclxuICAgICAgICAgICAgICAgICAgICBNYXRoLnBvdyhuYXZZIC0gZWxlbWVudC5jeSwgMikgLyBNYXRoLnBvdyhlbGVtZW50LnJ5LCAyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlWCArIHZhbHVlWTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPD0gMSAmJiAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2SURzWm9uZUVkaXQucHVzaChuYXZpZ2F0aW9uLmlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gb2xkIGNhbGlicmF0aW9uXHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcclxuICAgICAgICAgICAgLy8gbGV0IG5hdlggPSAoY2FsaWJyYWdlLm9mZnNldFggKyBwb3NpdGlvbi54ICogY2FsaWJyYWdlLngpIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmF2WSA9IChjYWxpYnJhZ2Uub2Zmc2V0WSArIHBvc2l0aW9uLnogKiBjYWxpYnJhZ2UueSkgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgIC8vIGlmIChlbGVtZW50LmFuZ2xlKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zdCByb3RhdGVQb3MgPSByb3RhdGUoXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBuYXZYLCB5OiBuYXZZIH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBlbGVtZW50LmN4LCB5OiBlbGVtZW50LmN5IH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgZWxlbWVudC5hbmdsZSxcclxuICAgICAgICAgICAgLy8gICAgICk7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYID0gcm90YXRlUG9zLng7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZZID0gcm90YXRlUG9zLnk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHZhbHVlWCA9XHJcbiAgICAgICAgICAgIC8vICAgICBNYXRoLnBvdyhuYXZYIC0gZWxlbWVudC5jeCwgMikgLyBNYXRoLnBvdyhlbGVtZW50LnJ4LCAyKTtcclxuICAgICAgICAgICAgLy8gY29uc3QgdmFsdWVZID1cclxuICAgICAgICAgICAgLy8gICAgIE1hdGgucG93KG5hdlkgLSBlbGVtZW50LmN5LCAyKSAvIE1hdGgucG93KGVsZW1lbnQucnksIDIpO1xyXG4gICAgICAgICAgICAvLyBjb25zdCByZXN1bHQgPSB2YWx1ZVggKyB2YWx1ZVk7XHJcbiAgICAgICAgICAgIC8vIGlmIChyZXN1bHQgPD0gMSAmJiAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5uYXZJRHNab25lRWRpdC5wdXNoKG5hdmlnYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IC8vIEVPXHJcblxyXG4gICAgYXN5bmMgc2V0U2NhbkluUG9seWdvbihpbWc6IGFueSwgY29lZmZYOiBudW1iZXIsIGNvZWZmWTogbnVtYmVyLCBlbGVtZW50OiB7IHNlZ0xpc3Q6IGFueTsgfSwgbmF2aWdhdGlvbnM6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgY2FsaWJyYWdlID0gSlNPTi5wYXJzZSh0aGlzLmNob3NlblBsYW4uY2FsaWJyYXRpb24pO1xyXG4gICAgICAgIG5hdmlnYXRpb25zLm1hcChhc3luYyAobmF2aWdhdGlvbikgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25zT25QbGFuID0gbmF2aWdhdGlvbi5wb3NpdGlvbk9uUGxhbi5tYXAoKGVudHJ5KSA9PlxyXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShlbnRyeSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uT25QbGFuID0gcG9zaXRpb25zT25QbGFuLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4gZGF0YS5wbGFuSUQgPT09IHRoaXMuY2hvc2VuUGxhbi5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25QbGFuKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWFsV2lkdGggPSBpbWcud2lkdGggLyBjb2VmZlg7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWFsSGVpZ2h0ID0gaW1nLmhlaWdodCAvIGNvZWZmWTtcclxuICAgICAgICAgICAgICAgIGxldCBuYXZZID0gKHBvc2l0aW9uT25QbGFuLnkgKiByZWFsSGVpZ2h0KSAvIGNhbGlicmFnZS5pbWdIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmF2WCA9IChwb3NpdGlvbk9uUGxhbi54ICogcmVhbFdpZHRoKSAvIGNhbGlicmFnZS5pbWdXaWR0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IG5hdlgsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogbmF2WSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNJblBvbHlnb24ocCwgZWxlbWVudC5zZWdMaXN0KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLm5hdklEc1pvbmVFZGl0LmluY2x1ZGVzKG5hdmlnYXRpb24uaWQpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdklEc1pvbmVFZGl0LnB1c2gobmF2aWdhdGlvbi5pZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIG9sZCBjYWxpYnJhdGlvblxyXG4gICAgICAgICAgICAvLyBjb25zdCBwb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICAgIC8vICAgICB4OiAoY2FsaWJyYWdlLm9mZnNldFggKyBwb3NpdGlvbi54ICogY2FsaWJyYWdlLngpIC8gY29lZmZYLFxyXG4gICAgICAgICAgICAvLyAgICAgeTogKGNhbGlicmFnZS5vZmZzZXRZICsgcG9zaXRpb24ueiAqIGNhbGlicmFnZS55KSAvIGNvZWZmWSxcclxuICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgLy8gaWYgKGVsZW1lbnQuYW5nbGUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHAgPSB0aGlzLnJvdGF0ZShcclxuICAgICAgICAgICAgLy8gICAgICAgICBwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHsgeDogZWxlbWVudC5jeCwgeTogZWxlbWVudC5jeSB9LFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIGVsZW1lbnQuYW5nbGUsXHJcbiAgICAgICAgICAgIC8vICAgICApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGlmIChcclxuICAgICAgICAgICAgLy8gICAgIGlzSW5Qb2x5Z29uKHAsIGVsZW1lbnQuc2VnTGlzdCkgJiZcclxuICAgICAgICAgICAgLy8gICAgICF0aGlzLm5hdklEc1pvbmVFZGl0LmluY2x1ZGVzKG5hdmlnYXRpb24uaWQpXHJcbiAgICAgICAgICAgIC8vICkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5uYXZJRHNab25lRWRpdC5wdXNoKG5hdmlnYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJEaXZQbGFuKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRpdlBsYW4pIHRoaXMuZGl2UGxhbi5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgZWFjaCBieSB0aGUgc2VsZWN0aW9uQ29tcG9uZW50IHdoZW4gc2VsZWN0aW9uIGNoYW5nZVxyXG4gICAgICogVXBkYXRlIHRoZSBjdXJyZW50IHNlbGVjdGVkIHNjYW4gYnV0dG9uc1xyXG4gICAgICogQHBhcmFtIHNlbGVjdGlvbiBuZXcgc2VsZWN0aW9uXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb246IFJlY3RhbmdsZSkge1xyXG4gICAgICAgIGNvbnN0IHVuc2VsZWN0ZWRCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XHJcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRCdXR0b25zID0gW107XHJcblxyXG4gICAgICAgIC8qKiBGb3IgZWFjaCBidXR0b24sIGRlY2lkZSB3aGV0aGVyIHdpbGwgYmUgYWRkIHRvIHNlbGVjdGVkIGxpc3Qgb3IgdW5zZWxlY3RlZCBsaXN0ICovXHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5idXR0b25FbGVtZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gYnV0dG9uSXNJblNlbGVjdGlvbihidXR0b24sIHNlbGVjdGlvbik7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1dHRvbnNJblNlbGVjdGlvbi5pbmNsdWRlcyhidXR0b24pKSB7XHJcbiAgICAgICAgICAgICAgICAvKiogSWYgdGhlIGJ1dHRvbiBpcyBhbHJlYWR5IGluIHRoZSBzZWxlY3RlZCBsaXN0LCB3ZSBjaGVjayBpZiBpdCBzaG91bGQgYmUgdW5zZWxlY3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVuc2VsZWN0ZWRCdXR0b25zLnB1c2goYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEJ1dHRvbnMucHVzaChidXR0b24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiogVmlzdWFsbHkgVXBkYXRlIHVuc2VsZWN0ZWQgbGlzdCAqL1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHVuc2VsZWN0ZWRCdXR0b25zKSB7XHJcbiAgICAgICAgICAgIHNldFZpc3VhbGx5U2VsZWN0ZWQoYnV0dG9uLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiogVmlzdWFsbHkgVXBkYXRlIHNlbGVjdGVkIGxpc3QgKi9cclxuICAgICAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiBuZXdTZWxlY3RlZEJ1dHRvbnMpIHtcclxuICAgICAgICAgICAgc2V0VmlzdWFsbHlTZWxlY3RlZChidXR0b24sIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqIFJlbW92ZSAgdW5zZWxlY3RlZCBsaXN0ICovXHJcbiAgICAgICAgdGhpcy5idXR0b25zSW5TZWxlY3Rpb24gPSB0aGlzLmJ1dHRvbnNJblNlbGVjdGlvbi5maWx0ZXIoKGJ1dHRvbikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIXVuc2VsZWN0ZWRCdXR0b25zLmluY2x1ZGVzKGJ1dHRvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLyoqIEFkZCBuZXcgc2VsZWN0ZWQgYnV0dG9ucyAqL1xyXG4gICAgICAgIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uID0gW1xyXG4gICAgICAgICAgICAuLi50aGlzLmJ1dHRvbnNJblNlbGVjdGlvbixcclxuICAgICAgICAgICAgLi4ubmV3U2VsZWN0ZWRCdXR0b25zLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgd2hlbiB0aGUgdXNlciBjbGljayB0byBhZGQgdGhlIHNlbGVjdGVkIHNjYW5zXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0aW9uQWRkKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQnV0dG9uU2NhbkNsaWNrZWQoYnV0dG9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQoeyB0b3A6IDAsIGxlZnQ6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHVzZXIgY2xpY2sgdG8gcmVtb3ZlIHRoZSBzZWxlY3RlZCBzY2Fuc1xyXG4gICAgICovXHJcbiAgICBvblNlbGVjdGlvblJlbW92ZSgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiB0aGlzLmJ1dHRvbnNJblNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQnV0dG9uU2NhbkNsaWNrZWQoYnV0dG9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZCh7IHRvcDogMCwgbGVmdDogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgd2hlbiB0aGUgdXNlciBjbGljayB0byBzZWxlY3QgYWxsIHNjYW5zXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0QWxsKCkge1xyXG4gICAgICAgIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uID0gWy4uLnRoaXMuYnV0dG9uRWxlbWVudHNdO1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHNldFZpc3VhbGx5U2VsZWN0ZWQoYnV0dG9uLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHVzZXIgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBzY2FuIHBvaW50c1xyXG4gICAgICogQHBhcmFtIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIG9uQ2hhbmdlU2NhblNpemUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGZhY3RvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5idXR0b25FbGVtZW50cykge1xyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlKCR7ZmFjdG9yfSlgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gYSBidXR0b24gcmVwcmVzZW50aW5nIGEgc2NhbiBpcyBjbGlja2VkXHJcbiAgICAgKiBAcGFyYW0gYnV0dG9uXHJcbiAgICAgKi9cclxuICAgIG9uQnV0dG9uU2NhbkNsaWNrZWQoYnV0dG9uOiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2V0dGluZ1N0YXJ0U3dlZXApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRTd2VlcElEID09PSBidXR0b24uaWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIHdlIGRlc2VsZWN0IHRoZSBzdGFydGluZyBwb2ludFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFN3ZWVwSUQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCdodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9pYy9iYXNlbGluZS1mbGFnLWNpcmNsZS5zdmc/Y29sb3I9d2hpdGUmd2lkdGg9MTcmaGVpZ2h0PTE3JylgO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hvc2VuU2NhbnNPblBsYW4uaW5jbHVkZXMoYnV0dG9uLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5wdXNoKGJ1dHRvbi5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRTd2VlcElEKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgY2hhbmdpbmcgc3RhcnQgc3dlZXBcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJ0bkNoYW5nZWQgPSB0aGlzLmJ1dHRvbkVsZW1lbnRzLmZpbmQoKGJ0bikgPT4gYnRuLmlkID09PSB0aGlzLnN0YXJ0U3dlZXBJRCk7XHJcbiAgICAgICAgICAgICAgICBidG5DaGFuZ2VkLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTd2VlcElEID0gYnV0dG9uLmlkO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgIC8vIGFkZCB0byBzZWxlY3Rpb25cclxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuLnB1c2goYnV0dG9uLmlkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgZnJvbSBzZWxlY3Rpb25cclxuICAgICAgICAgICAgaWYgKHRoaXMub2NjdXBpZWRTd2VlcHMuaW5jbHVkZXMoYnV0dG9uLmlkKSAmJiAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgc3dlZXAgYmVsb25ncyB0byBhbm90aGVyIHpvbmUgPT4gc2V0IG9yYW5nZVxyXG4gICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1vcmFuZ2UmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmNsb3NlLWNpcmNsZS1vdXRsaW5lLnN2Zz9jb2xvcj1yZWQmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hvc2VuU2NhbnNPblBsYW4uaW5kZXhPZihidXR0b24uaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU2F2ZVNlbGVjdGlvbigpIHtcclxuICAgICAgICB0aGlzLnN3ZWVwc1NlbGVjdGVkLmVtaXQoeyBcInN3ZWVwc1wiOiB0aGlzLmNob3NlblNjYW5zT25QbGFuLCBcInN0YXJ0U3dlZXBJRFwiOiB0aGlzLnN0YXJ0U3dlZXBJRCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLnN3ZWVwc1NlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cInNwLXJvdyBkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCIgKm5nSWY9XCJwbGFuc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGxcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCJcclxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlPnt7Y2hvc2VuUGxhbiA/XHJcbiAgICAgICAgICAgICAgICBjaG9zZW5QbGFuLm5hbWUgOiAoJ0Nob29zZSBQbGFuJyB8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkRyb3Bkb3duSXRlbSAqbmdGb3I9XCJsZXQgcGxhbiBvZiBwbGFuc1wiIChjbGljayk9XCJvblBsYW5DbGljayhwbGFuKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwbGFuLmNhbGlicmF0aW9uXCI+e3sgcGxhbi5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJzcC1yb3dcIj5cclxuICAgIDxsaWItc2VsZWN0aW9uIGNsYXNzPVwiY29sLW1kLThcIiAob25TZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGxpYi1wbGFuLWxlZ2VuZCBbaXNBdWRpb1pvbmVdPVwiZWRpdGluZ0F1ZGlvWm9uZVwiICpuZ0lmPVwiYnV0dG9uRWxlbWVudHMubGVuZ3RoID4gMFwiPjwvbGliLXBsYW4tbGVnZW5kPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rab25lXCIgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47d2lkdGg6MTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiA0MDBweDsgd2lkdGg6IDEwMCU7XCIgaWQ9XCJwbGFuRGl2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2xpYi1zZWxlY3Rpb24+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzY2FuVG9vbFwiICpuZ0lmPVwiYnV0dG9uRWxlbWVudHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcC1yb3cgZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGgyPnt7J3NlbGVjdFRvb2wudGl0bGUnIHwgdHJhbnNsYXRlfX08L2gyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvdGlwXCI+e3snc2VsZWN0VG9vbC50aXAnIHwgdHJhbnNsYXRlfX0uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Atcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiIHN0eWxlPVwicGFkZGluZzowcHhcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRvb2wtbGFiZWxcIiBmb3I9XCJzY2FuU2l6ZVwiPnt7J3NlbGVjdFRvb2wuc2l6ZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2VcIiBtaW49XCIwLjAwMVwiIG1heD1cIjVcIiBzdGVwPVwiMC4wMVwiIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzY2FuU2l6ZVwiIChpbnB1dCk9XCJvbkNoYW5nZVNjYW5TaXplKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Atcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKClcIj57eydzZWxlY3RUb29sLnNlbGVjdEFsbCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImJ1dHRvbnNJblNlbGVjdGlvbi5sZW5ndGggPiAwXCIgY2xhc3M9XCJlZGl0LXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbC1sYWJlbFwiPnt7J3NlbGVjdFRvb2wuZWRpdCcgfCB0cmFuc2xhdGV9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biByb3VuZGVkLXBpbGwgYnRuLXByaW1hcnkgbXMtMyBtZS0yXCIgKGNsaWNrKT1cIm9uU2VsZWN0aW9uQWRkKClcIj57eydzZWxlY3RUb29sLmFkZCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25TZWxlY3Rpb25SZW1vdmUoKVwiPnt7J3NlbGVjdFRvb2wudW5kbycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICB7eyBjaG9zZW5TY2Fuc09uUGxhbi5sZW5ndGggfX0ge3snc2NhbiBwb2ludHMgY2hvc2VuJyB8IHRyYW5zbGF0ZX19ICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFlZGl0aW5nQXVkaW9ab25lXCIgY2xhc3M9XCJzcC1yb3dcIj5cclxuICAgICAgICAgICAgPGxpYi1yYWRpby1idXR0b24gIGxhYmVsPVwie3sgJ3NlbGVjdFRvb2wuY2hvb3NlU3RhcnRQb2ludCcgIHwgdHJhbnNsYXRlIH19XCIgKGlzQ2hlY2tlZEV2ZW50KT1cImlzU2V0dGluZ1N0YXJ0U3dlZXA9IWlzU2V0dGluZ1N0YXJ0U3dlZXBcIj48L2xpYi1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvblNhdmVTZWxlY3Rpb24oKVwiPnt7J3NlbGVjdFRvb2wuc2F2ZVNlbGVjdGlvbicgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eydzZWxlY3RUb29sLmNhbmNlbFNlbGVjdGlvbicgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuICAgXHJcbiJdfQ==
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvYWRkLXpvbmUvc3dlZXAtcGxhbi1zZWxlY3Rpb24vc3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvYWRkLXpvbmUvc3dlZXAtcGxhbi1zZWxlY3Rpb24vc3dlZXAtcGxhbi1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUE2Qyx5QkFBeUIsRUFBNEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3TCxPQUFPLE9BQW9CLE1BQU0sU0FBUyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQWEsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBTy9JLE1BQU0sT0FBTywyQkFBMkI7SUE0Q3BDLFlBQ1ksV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLFdBQXdCO1FBRnhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF6QzNCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUsxQyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUU5Qixx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QTJCLGdYQ1Z4Qyw2Z0hBb0VBOzJGRDFEYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0ksMEJBQTBCOzRKQVEzQixPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBZ0JJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGdldENvZWZmaWNpZW50c0ZvckltYWdlLCBnZXRNZXRhRm9ySW1hZ2UsIE5hdmlnYXRpb24sIE5hdmlnYXRpb25TZXJ2aWNlLCBQbGFuLCBab25lLCBzaG93U2NhblBvaW50c09uUGxhbkluRGl2LCBab25lU2VydmljZSwgUGxhblNlcnZpY2UgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xyXG5pbXBvcnQgcGFuem9vbSwgeyBQYW5ab29tIH0gZnJvbSAncGFuem9vbSc7XHJcbmltcG9ydCB7IGJ1dHRvbklzSW5TZWxlY3Rpb24sIGlzSW5Qb2x5Z29uLCBSZWN0YW5nbGUsIHJvdGF0ZSwgc2V0VmlzdWFsbHlTZWxlY3RlZCwgc3R5bGVCdXR0b24sIFN3ZWVwU3RhdGUgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXN3ZWVwLXBsYW4tc2VsZWN0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zd2VlcC1wbGFuLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zd2VlcC1wbGFuLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTd2VlcFBsYW5TZWxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIHBsYW5zOiBQbGFuW107XHJcblxyXG4gICAgQElucHV0KCkgc3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIGNob3NlblNjYW5zT25QbGFuOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKiBpZiBjb21taW5nIGZyb20gRWRpdCBQbGFuIFNWRyBab25lIGNyZWF0aW9uICovXHJcbiAgICBASW5wdXQoKSBuZXdab25lRGF0YTogYW55O1xyXG5cclxuICAgIG5hdklEc1pvbmVFZGl0OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIHN3ZWVwcyBiZWxvbmdpbmcgdG8gYW55IGF1ZGlvIHpvbmVcclxuICAgIEBJbnB1dCgpIG9jY3VwaWVkU3dlZXBzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIHN3ZWVwcyB1bmF2YWlsYWJsZSAoY2Fubm90IGJlIGNob3NlbilcclxuICAgIEBJbnB1dCgpIHVuYXZhaWxhYmxlU3dlZXBzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIGlmIGNob29zaW5nIHN3ZWVwcyBmb3IgYXVkaW8gem9uZVxyXG4gICAgQElucHV0KCkgZWRpdGluZ0F1ZGlvWm9uZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIGlucHV0Wm9uZTogWm9uZTtcclxuXHJcbiAgICBjaG9zZW5QbGFuOiBQbGFuO1xyXG5cclxuICAgIC8qKiBwYW5ab29tIGVsZW1lbnQgZm9yIGFkZGluZyBzY2FucyAqL1xyXG4gICAgcGFuWm9vbTogUGFuWm9vbTtcclxuXHJcbiAgICAvKiogZGl2UGxhbiAodXNlIEJ5IHBhblpvb20pICovXHJcbiAgICBkaXZQbGFuOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvKiogYWxsIHNjYW4gYnV0dG9ucyBFbGVtZW50ICovXHJcbiAgICBidXR0b25FbGVtZW50czogSFRNTEJ1dHRvbkVsZW1lbnRbXSA9IFtdO1xyXG5cclxuICAgIC8qKiBTY2FuIGJ1dHRvbnMgdGhhdCBhcmUgaW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uICovXHJcbiAgICBidXR0b25zSW5TZWxlY3Rpb246IEhUTUxCdXR0b25FbGVtZW50W10gPSBbXTtcclxuXHJcbiAgICBAT3V0cHV0KCkgc3dlZXBzU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3dlZXBzOiBzdHJpbmdbXTsgc3RhcnRTd2VlcElEOiBzdHJpbmc7IH0+KCk7XHJcblxyXG4gICAgaXNTZXR0aW5nU3RhcnRTd2VlcCA9IGZhbHNlO1xyXG5cclxuICAgIHN0YXJ0U3dlZXBJRDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldFBsYW5zKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRab25lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3dlZXBzT2ZJbnB1dFpvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hvc2VuUGxhbikge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN3ZWVwc09mSW5wdXRab25lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuU2NhbnNPblBsYW4gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckRpdlBsYW4oKTtcclxuICAgICAgICAgICAgdGhpcy5hZGRTY2FuUG9pbnRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFN3ZWVwc09mSW5wdXRab25lKCkge1xyXG4gICAgICAgIHRoaXMubmF2SURzWm9uZUVkaXQgPSB0aGlzLmlucHV0Wm9uZSA/IHRoaXMuaW5wdXRab25lLnN3ZWVwSURzIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UGxhbnMoKSB7XHJcbiAgICAgICAgdGhpcy5wbGFucyA9IGF3YWl0IHRoaXMucGxhblNlcnZpY2UuZ2V0U2luZ2VkUGxhbnNGb3JTcGFjZShcclxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25QbGFuQ2xpY2socGxhbjogUGxhbikge1xyXG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbiA9IHBsYW47XHJcbiAgICAgICAgdGhpcy5jbGVhckRpdlBsYW4oKTtcclxuICAgICAgICB0aGlzLmFkZFNjYW5Qb2ludHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZGRTY2FuUG9pbnRzKCkge1xyXG4gICAgICAgIHRoaXMuZGl2UGxhbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjcGxhbkRpdlwiKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCB6b25lT2ZQbGFuID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lKFxyXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uem9uZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yWm9uZShcclxuICAgICAgICAgICAgem9uZU9mUGxhbixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLm5ld1pvbmVEYXRhKSBhd2FpdCB0aGlzLnNldFNjYW5CeURyYXcobmF2aWdhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uRWxlbWVudHMgPSBhd2FpdCBzaG93U2NhblBvaW50c09uUGxhbkluRGl2KFxyXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4sXHJcbiAgICAgICAgICAgIHRoaXMuZGl2UGxhbixcclxuICAgICAgICAgICAgbmF2aWdhdGlvbnMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5idXR0b25FbGVtZW50cykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy51bmF2YWlsYWJsZVN3ZWVwcyAmJiB0aGlzLnVuYXZhaWxhYmxlU3dlZXBzLmluY2x1ZGVzKGVsZW1lbnQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZUJ1dHRvbihlbGVtZW50LCBTd2VlcFN0YXRlLkRJU0FCTEVEKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5uYXZJRHNab25lRWRpdC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2SURzWm9uZUVkaXQuaW5jbHVkZXMoZWxlbWVudC5pZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhlbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlQnV0dG9uKGVsZW1lbnQsIFN3ZWVwU3RhdGUuQURERUQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhlbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuLnB1c2goZWxlbWVudC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9jY3VwaWVkU3dlZXBzICYmIHRoaXMub2NjdXBpZWRTd2VlcHMuaW5jbHVkZXMoZWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZUJ1dHRvbihlbGVtZW50LCBTd2VlcFN0YXRlLk9DQ1VQSUVEKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVCdXR0b24oZWxlbWVudCwgU3dlZXBTdGF0ZS5SRU1PVkVEKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vc3RhcnQgcG9pbnQgc2hvdWxkIGJlIGxhc3QgY29uZGl0aW9uIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRab25lICYmIHRoaXMuaW5wdXRab25lLnN0YXJ0U3dlZXBJRCA9PT0gZWxlbWVudC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic2V0dGluZyBzdGFydCBwb2ludFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZUJ1dHRvbihlbGVtZW50LCBTd2VlcFN0YXRlLlNUQVJUUE9JTlQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2ZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25CdXR0b25TY2FuQ2xpY2tlZChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBhblpvb20gPSBwYW56b29tKHRoaXMuZGl2UGxhbiwge1xyXG4gICAgICAgICAgICBib3VuZHM6IHRydWUsXHJcbiAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIG1heFpvb206IDMuNSxcclxuICAgICAgICAgICAgYmVmb3JlTW91c2VEb3duKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgZS5idXR0b24gPT09IDJcclxuICAgICAgICAgICAgICAgICk7IC8qKiBJZ25vcmUgZXZlbnQgZm9yIHJpZ2h0IGNsaWNrICh1c2UgZm9yIHNlbGVjdGluZykgKi9cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRnVuY3Rpb24gaWYgd2UgYXJlIGNvbWluZyBmb3Igc3ZnIGVkaXRvciB3b3JrZmxvdyAqL1xyXG4gICAgc2V0U2NhbkJ5RHJhdyhuYXZpZ2F0aW9uczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm5ld1pvbmVEYXRhLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm5ld1pvbmVEYXRhLmhlaWdodCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgaW1nID0gYXdhaXQgZ2V0TWV0YUZvckltYWdlKHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29lZmZYLCBjb2VmZlkgfSA9IGdldENvZWZmaWNpZW50c0ZvckltYWdlKGltZywgcmVjdCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkcmF3ID0gdGhpcy5uZXdab25lRGF0YS5lbGVtZW50cztcclxuXHJcbiAgICAgICAgICAgIGRyYXcubWFwKGFzeW5jIChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJyZWN0XCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2NhbkluUmVjdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2NhbkluQ2lyY2xlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZYLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInBhdGhcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRTY2FuSW5Qb2x5Z29uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZYLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0U2NhbkluUmVjdChpbWc6IGFueSwgY29lZmZYOiBudW1iZXIsIGNvZWZmWTogbnVtYmVyLFxyXG4gICAgICAgIGVsZW1lbnQ6IHsgYW5nbGU6IGFueTsgY3g6IGFueTsgY3k6IGFueTsgeDogbnVtYmVyOyB3aWR0aDogYW55OyB5OiBudW1iZXI7IGhlaWdodDogYW55OyB9LCBuYXZpZ2F0aW9uczogYW55W10pIHtcclxuICAgICAgICBjb25zdCBjYWxpYnJhZ2UgPSBKU09OLnBhcnNlKHRoaXMuY2hvc2VuUGxhbi5jYWxpYnJhdGlvbik7XHJcbiAgICAgICAgbmF2aWdhdGlvbnMubWFwKChuYXZpZ2F0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uc09uUGxhbiA9IG5hdmlnYXRpb24ucG9zaXRpb25PblBsYW4ubWFwKChlbnRyeSkgPT5cclxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uUGxhbiA9IHBvc2l0aW9uc09uUGxhbi5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEucGxhbklEID09PSB0aGlzLmNob3NlblBsYW4uaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbk9uUGxhbikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbFdpZHRoID0gaW1nLndpZHRoIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbEhlaWdodCA9IGltZy5oZWlnaHQgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYXZZID0gKHBvc2l0aW9uT25QbGFuLnkgKiByZWFsSGVpZ2h0KSAvIGNhbGlicmFnZS5pbWdIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYXZYID0gKHBvc2l0aW9uT25QbGFuLnggKiByZWFsV2lkdGgpIC8gY2FsaWJyYWdlLmltZ1dpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdlggPiBlbGVtZW50LnggJiZcclxuICAgICAgICAgICAgICAgICAgICBuYXZYIDwgZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG5hdlkgPiBlbGVtZW50LnkgJiZcclxuICAgICAgICAgICAgICAgICAgICBuYXZZIDwgZWxlbWVudC55ICsgZWxlbWVudC5oZWlnaHQgJiZcclxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZJRHNab25lRWRpdC5wdXNoKG5hdmlnYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBvbGQgY2FsaWJyYXRpb246XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcclxuICAgICAgICAgICAgLy8gbGV0IG5hdlggPSAoY2FsaWJyYWdlLm9mZnNldFggKyBwb3NpdGlvbi54ICogY2FsaWJyYWdlLngpIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmF2WSA9IChjYWxpYnJhZ2Uub2Zmc2V0WSArIHBvc2l0aW9uLnogKiBjYWxpYnJhZ2UueSkgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgIC8vIGlmIChlbGVtZW50LmFuZ2xlKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zdCByb3RhdGVQb3MgPSByb3RhdGUoXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBuYXZYLCB5OiBuYXZZIH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBlbGVtZW50LmN4LCB5OiBlbGVtZW50LmN5IH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgZWxlbWVudC5hbmdsZSxcclxuICAgICAgICAgICAgLy8gICAgICk7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYID0gcm90YXRlUG9zLng7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZZID0gcm90YXRlUG9zLnk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFRPRE8gY2FsY3VsZXIgbGEgcm90YXRpb24gZHUgcmVjdGFuZ2xlXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAvLyBpZiAoXHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYID4gZWxlbWVudC54ICYmXHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYIDwgZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCAmJlxyXG4gICAgICAgICAgICAvLyAgICAgbmF2WSA+IGVsZW1lbnQueSAmJlxyXG4gICAgICAgICAgICAvLyAgICAgbmF2WSA8IGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0ICYmXHJcbiAgICAgICAgICAgIC8vICAgICAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKVxyXG4gICAgICAgICAgICAvLyApIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMubmF2SURzWm9uZUVkaXQucHVzaChuYXZpZ2F0aW9uLmlkKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSAvLyBFT1xyXG5cclxuICAgIGFzeW5jIHNldFNjYW5JbkNpcmNsZShpbWc6IGFueSwgY29lZmZYOiBudW1iZXIsIGNvZWZmWTogbnVtYmVyLFxyXG4gICAgICAgIGVsZW1lbnQ6IHsgYW5nbGU6IGFueTsgY3g6IG51bWJlcjsgY3k6IG51bWJlcjsgcng6IG51bWJlcjsgcnk6IG51bWJlcjsgfSwgbmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXSkge1xyXG4gICAgICAgIGNvbnN0IGNhbGlicmFnZSA9IEpTT04ucGFyc2UodGhpcy5jaG9zZW5QbGFuLmNhbGlicmF0aW9uKTtcclxuICAgICAgICBuYXZpZ2F0aW9ucy5tYXAobmF2aWdhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uc09uUGxhbiA9IG5hdmlnYXRpb24ucG9zaXRpb25PblBsYW4ubWFwKChlbnRyeSkgPT5cclxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uUGxhbiA9IHBvc2l0aW9uc09uUGxhbi5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEucGxhbklEID09PSB0aGlzLmNob3NlblBsYW4uaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbk9uUGxhbikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbFdpZHRoID0gaW1nLndpZHRoIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbEhlaWdodCA9IGltZy5oZWlnaHQgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmF2WSA9IChwb3NpdGlvbk9uUGxhbi55ICogcmVhbEhlaWdodCkgLyBjYWxpYnJhZ2UuaW1nSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hdlggPSAocG9zaXRpb25PblBsYW4ueCAqIHJlYWxXaWR0aCkgLyBjYWxpYnJhZ2UuaW1nV2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdGF0ZVBvcyA9IHJvdGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyB4OiBuYXZYLCB5OiBuYXZZIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgeDogZWxlbWVudC5jeCwgeTogZWxlbWVudC5jeSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFuZ2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmF2WCA9IHJvdGF0ZVBvcy54O1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdlkgPSByb3RhdGVQb3MueTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVggPVxyXG4gICAgICAgICAgICAgICAgICAgIE1hdGgucG93KG5hdlggLSBlbGVtZW50LmN4LCAyKSAvIE1hdGgucG93KGVsZW1lbnQucngsIDIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVZID1cclxuICAgICAgICAgICAgICAgICAgICBNYXRoLnBvdyhuYXZZIC0gZWxlbWVudC5jeSwgMikgLyBNYXRoLnBvdyhlbGVtZW50LnJ5LCAyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlWCArIHZhbHVlWTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPD0gMSAmJiAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2SURzWm9uZUVkaXQucHVzaChuYXZpZ2F0aW9uLmlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gb2xkIGNhbGlicmF0aW9uXHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcclxuICAgICAgICAgICAgLy8gbGV0IG5hdlggPSAoY2FsaWJyYWdlLm9mZnNldFggKyBwb3NpdGlvbi54ICogY2FsaWJyYWdlLngpIC8gY29lZmZYO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmF2WSA9IChjYWxpYnJhZ2Uub2Zmc2V0WSArIHBvc2l0aW9uLnogKiBjYWxpYnJhZ2UueSkgLyBjb2VmZlk7XHJcbiAgICAgICAgICAgIC8vIGlmIChlbGVtZW50LmFuZ2xlKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zdCByb3RhdGVQb3MgPSByb3RhdGUoXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBuYXZYLCB5OiBuYXZZIH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgeyB4OiBlbGVtZW50LmN4LCB5OiBlbGVtZW50LmN5IH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgZWxlbWVudC5hbmdsZSxcclxuICAgICAgICAgICAgLy8gICAgICk7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZYID0gcm90YXRlUG9zLng7XHJcbiAgICAgICAgICAgIC8vICAgICBuYXZZID0gcm90YXRlUG9zLnk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHZhbHVlWCA9XHJcbiAgICAgICAgICAgIC8vICAgICBNYXRoLnBvdyhuYXZYIC0gZWxlbWVudC5jeCwgMikgLyBNYXRoLnBvdyhlbGVtZW50LnJ4LCAyKTtcclxuICAgICAgICAgICAgLy8gY29uc3QgdmFsdWVZID1cclxuICAgICAgICAgICAgLy8gICAgIE1hdGgucG93KG5hdlkgLSBlbGVtZW50LmN5LCAyKSAvIE1hdGgucG93KGVsZW1lbnQucnksIDIpO1xyXG4gICAgICAgICAgICAvLyBjb25zdCByZXN1bHQgPSB2YWx1ZVggKyB2YWx1ZVk7XHJcbiAgICAgICAgICAgIC8vIGlmIChyZXN1bHQgPD0gMSAmJiAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhuYXZpZ2F0aW9uLmlkKSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5uYXZJRHNab25lRWRpdC5wdXNoKG5hdmlnYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IC8vIEVPXHJcblxyXG4gICAgYXN5bmMgc2V0U2NhbkluUG9seWdvbihpbWc6IGFueSwgY29lZmZYOiBudW1iZXIsIGNvZWZmWTogbnVtYmVyLCBlbGVtZW50OiB7IHNlZ0xpc3Q6IGFueTsgfSwgbmF2aWdhdGlvbnM6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgY2FsaWJyYWdlID0gSlNPTi5wYXJzZSh0aGlzLmNob3NlblBsYW4uY2FsaWJyYXRpb24pO1xyXG4gICAgICAgIG5hdmlnYXRpb25zLm1hcChhc3luYyAobmF2aWdhdGlvbikgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25zT25QbGFuID0gbmF2aWdhdGlvbi5wb3NpdGlvbk9uUGxhbi5tYXAoKGVudHJ5KSA9PlxyXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShlbnRyeSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uT25QbGFuID0gcG9zaXRpb25zT25QbGFuLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4gZGF0YS5wbGFuSUQgPT09IHRoaXMuY2hvc2VuUGxhbi5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25QbGFuKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWFsV2lkdGggPSBpbWcud2lkdGggLyBjb2VmZlg7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWFsSGVpZ2h0ID0gaW1nLmhlaWdodCAvIGNvZWZmWTtcclxuICAgICAgICAgICAgICAgIGxldCBuYXZZID0gKHBvc2l0aW9uT25QbGFuLnkgKiByZWFsSGVpZ2h0KSAvIGNhbGlicmFnZS5pbWdIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmF2WCA9IChwb3NpdGlvbk9uUGxhbi54ICogcmVhbFdpZHRoKSAvIGNhbGlicmFnZS5pbWdXaWR0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IG5hdlgsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogbmF2WSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNJblBvbHlnb24ocCwgZWxlbWVudC5zZWdMaXN0KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLm5hdklEc1pvbmVFZGl0LmluY2x1ZGVzKG5hdmlnYXRpb24uaWQpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdklEc1pvbmVFZGl0LnB1c2gobmF2aWdhdGlvbi5pZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIG9sZCBjYWxpYnJhdGlvblxyXG4gICAgICAgICAgICAvLyBjb25zdCBwb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICAgIC8vICAgICB4OiAoY2FsaWJyYWdlLm9mZnNldFggKyBwb3NpdGlvbi54ICogY2FsaWJyYWdlLngpIC8gY29lZmZYLFxyXG4gICAgICAgICAgICAvLyAgICAgeTogKGNhbGlicmFnZS5vZmZzZXRZICsgcG9zaXRpb24ueiAqIGNhbGlicmFnZS55KSAvIGNvZWZmWSxcclxuICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgLy8gaWYgKGVsZW1lbnQuYW5nbGUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHAgPSB0aGlzLnJvdGF0ZShcclxuICAgICAgICAgICAgLy8gICAgICAgICBwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHsgeDogZWxlbWVudC5jeCwgeTogZWxlbWVudC5jeSB9LFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIGVsZW1lbnQuYW5nbGUsXHJcbiAgICAgICAgICAgIC8vICAgICApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGlmIChcclxuICAgICAgICAgICAgLy8gICAgIGlzSW5Qb2x5Z29uKHAsIGVsZW1lbnQuc2VnTGlzdCkgJiZcclxuICAgICAgICAgICAgLy8gICAgICF0aGlzLm5hdklEc1pvbmVFZGl0LmluY2x1ZGVzKG5hdmlnYXRpb24uaWQpXHJcbiAgICAgICAgICAgIC8vICkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5uYXZJRHNab25lRWRpdC5wdXNoKG5hdmlnYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJEaXZQbGFuKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRpdlBsYW4pIHRoaXMuZGl2UGxhbi5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgZWFjaCBieSB0aGUgc2VsZWN0aW9uQ29tcG9uZW50IHdoZW4gc2VsZWN0aW9uIGNoYW5nZVxyXG4gICAgICogVXBkYXRlIHRoZSBjdXJyZW50IHNlbGVjdGVkIHNjYW4gYnV0dG9uc1xyXG4gICAgICogQHBhcmFtIHNlbGVjdGlvbiBuZXcgc2VsZWN0aW9uXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb246IFJlY3RhbmdsZSkge1xyXG4gICAgICAgIGNvbnN0IHVuc2VsZWN0ZWRCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XHJcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRCdXR0b25zID0gW107XHJcblxyXG4gICAgICAgIC8qKiBGb3IgZWFjaCBidXR0b24sIGRlY2lkZSB3aGV0aGVyIHdpbGwgYmUgYWRkIHRvIHNlbGVjdGVkIGxpc3Qgb3IgdW5zZWxlY3RlZCBsaXN0ICovXHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5idXR0b25FbGVtZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gYnV0dG9uSXNJblNlbGVjdGlvbihidXR0b24sIHNlbGVjdGlvbik7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1dHRvbnNJblNlbGVjdGlvbi5pbmNsdWRlcyhidXR0b24pKSB7XHJcbiAgICAgICAgICAgICAgICAvKiogSWYgdGhlIGJ1dHRvbiBpcyBhbHJlYWR5IGluIHRoZSBzZWxlY3RlZCBsaXN0LCB3ZSBjaGVjayBpZiBpdCBzaG91bGQgYmUgdW5zZWxlY3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVuc2VsZWN0ZWRCdXR0b25zLnB1c2goYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEJ1dHRvbnMucHVzaChidXR0b24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiogVmlzdWFsbHkgVXBkYXRlIHVuc2VsZWN0ZWQgbGlzdCAqL1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHVuc2VsZWN0ZWRCdXR0b25zKSB7XHJcbiAgICAgICAgICAgIHNldFZpc3VhbGx5U2VsZWN0ZWQoYnV0dG9uLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiogVmlzdWFsbHkgVXBkYXRlIHNlbGVjdGVkIGxpc3QgKi9cclxuICAgICAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiBuZXdTZWxlY3RlZEJ1dHRvbnMpIHtcclxuICAgICAgICAgICAgc2V0VmlzdWFsbHlTZWxlY3RlZChidXR0b24sIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqIFJlbW92ZSAgdW5zZWxlY3RlZCBsaXN0ICovXHJcbiAgICAgICAgdGhpcy5idXR0b25zSW5TZWxlY3Rpb24gPSB0aGlzLmJ1dHRvbnNJblNlbGVjdGlvbi5maWx0ZXIoKGJ1dHRvbikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIXVuc2VsZWN0ZWRCdXR0b25zLmluY2x1ZGVzKGJ1dHRvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLyoqIEFkZCBuZXcgc2VsZWN0ZWQgYnV0dG9ucyAqL1xyXG4gICAgICAgIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uID0gW1xyXG4gICAgICAgICAgICAuLi50aGlzLmJ1dHRvbnNJblNlbGVjdGlvbixcclxuICAgICAgICAgICAgLi4ubmV3U2VsZWN0ZWRCdXR0b25zLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgd2hlbiB0aGUgdXNlciBjbGljayB0byBhZGQgdGhlIHNlbGVjdGVkIHNjYW5zXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0aW9uQWRkKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQnV0dG9uU2NhbkNsaWNrZWQoYnV0dG9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQoeyB0b3A6IDAsIGxlZnQ6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHVzZXIgY2xpY2sgdG8gcmVtb3ZlIHRoZSBzZWxlY3RlZCBzY2Fuc1xyXG4gICAgICovXHJcbiAgICBvblNlbGVjdGlvblJlbW92ZSgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiB0aGlzLmJ1dHRvbnNJblNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQnV0dG9uU2NhbkNsaWNrZWQoYnV0dG9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZCh7IHRvcDogMCwgbGVmdDogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgd2hlbiB0aGUgdXNlciBjbGljayB0byBzZWxlY3QgYWxsIHNjYW5zXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0QWxsKCkge1xyXG4gICAgICAgIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uID0gWy4uLnRoaXMuYnV0dG9uRWxlbWVudHNdO1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHRoaXMuYnV0dG9uc0luU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHNldFZpc3VhbGx5U2VsZWN0ZWQoYnV0dG9uLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHVzZXIgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBzY2FuIHBvaW50c1xyXG4gICAgICogQHBhcmFtIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIG9uQ2hhbmdlU2NhblNpemUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGZhY3RvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5idXR0b25FbGVtZW50cykge1xyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlKCR7ZmFjdG9yfSlgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gYSBidXR0b24gcmVwcmVzZW50aW5nIGEgc2NhbiBpcyBjbGlja2VkXHJcbiAgICAgKiBAcGFyYW0gYnV0dG9uXHJcbiAgICAgKi9cclxuICAgIG9uQnV0dG9uU2NhbkNsaWNrZWQoYnV0dG9uOiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2V0dGluZ1N0YXJ0U3dlZXApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRTd2VlcElEID09PSBidXR0b24uaWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIHdlIGRlc2VsZWN0IHRoZSBzdGFydGluZyBwb2ludFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFN3ZWVwSUQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCdodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9pYy9iYXNlbGluZS1mbGFnLWNpcmNsZS5zdmc/Y29sb3I9d2hpdGUmd2lkdGg9MTcmaGVpZ2h0PTE3JylgO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hvc2VuU2NhbnNPblBsYW4uaW5jbHVkZXMoYnV0dG9uLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5wdXNoKGJ1dHRvbi5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRTd2VlcElEKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgY2hhbmdpbmcgc3RhcnQgc3dlZXBcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJ0bkNoYW5nZWQgPSB0aGlzLmJ1dHRvbkVsZW1lbnRzLmZpbmQoKGJ0bikgPT4gYnRuLmlkID09PSB0aGlzLnN0YXJ0U3dlZXBJRCk7XHJcbiAgICAgICAgICAgICAgICBidG5DaGFuZ2VkLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTd2VlcElEID0gYnV0dG9uLmlkO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jaG9zZW5TY2Fuc09uUGxhbi5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgIC8vIGFkZCB0byBzZWxlY3Rpb25cclxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuLnB1c2goYnV0dG9uLmlkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgZnJvbSBzZWxlY3Rpb25cclxuICAgICAgICAgICAgaWYgKHRoaXMub2NjdXBpZWRTd2VlcHMuaW5jbHVkZXMoYnV0dG9uLmlkKSAmJiAhdGhpcy5uYXZJRHNab25lRWRpdC5pbmNsdWRlcyhidXR0b24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgc3dlZXAgYmVsb25ncyB0byBhbm90aGVyIHpvbmUgPT4gc2V0IG9yYW5nZVxyXG4gICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1vcmFuZ2UmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmNsb3NlLWNpcmNsZS1vdXRsaW5lLnN2Zz9jb2xvcj1yZWQmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hvc2VuU2NhbnNPblBsYW4uaW5kZXhPZihidXR0b24uaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNob3NlblNjYW5zT25QbGFuLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU2F2ZVNlbGVjdGlvbigpIHtcclxuICAgICAgICB0aGlzLnN3ZWVwc1NlbGVjdGVkLmVtaXQoeyBcInN3ZWVwc1wiOiB0aGlzLmNob3NlblNjYW5zT25QbGFuLCBcInN0YXJ0U3dlZXBJRFwiOiB0aGlzLnN0YXJ0U3dlZXBJRCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLnN3ZWVwc1NlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cInNwLXJvdyBkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCIgKm5nSWY9XCJwbGFuc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGxcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCJcclxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlPnt7Y2hvc2VuUGxhbiA/XHJcbiAgICAgICAgICAgICAgICBjaG9zZW5QbGFuLm5hbWUgOiAoJ0Nob29zZSBQbGFuJyB8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkRyb3Bkb3duSXRlbSAqbmdGb3I9XCJsZXQgcGxhbiBvZiBwbGFuc1wiIChjbGljayk9XCJvblBsYW5DbGljayhwbGFuKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwbGFuLmNhbGlicmF0aW9uXCI+e3sgcGxhbi5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJzcC1yb3dcIj5cclxuICAgIDxsaWItc2VsZWN0aW9uIGNsYXNzPVwiY29sLW1kLThcIiAob25TZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGxpYi1wbGFuLWxlZ2VuZCBbaXNBdWRpb1pvbmVdPVwiZWRpdGluZ0F1ZGlvWm9uZVwiICpuZ0lmPVwiYnV0dG9uRWxlbWVudHMubGVuZ3RoID4gMFwiPjwvbGliLXBsYW4tbGVnZW5kPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rab25lXCIgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47d2lkdGg6MTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiA0MDBweDsgd2lkdGg6IDEwMCU7XCIgaWQ9XCJwbGFuRGl2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2xpYi1zZWxlY3Rpb24+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzY2FuVG9vbFwiICpuZ0lmPVwiYnV0dG9uRWxlbWVudHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcC1yb3cgZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGgyPnt7J3NlbGVjdFRvb2wudGl0bGUnIHwgdHJhbnNsYXRlfX08L2gyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvdGlwXCI+e3snc2VsZWN0VG9vbC50aXAnIHwgdHJhbnNsYXRlfX0uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Atcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiIHN0eWxlPVwicGFkZGluZzowcHhcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRvb2wtbGFiZWxcIiBmb3I9XCJzY2FuU2l6ZVwiPnt7J3NlbGVjdFRvb2wuc2l6ZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2VcIiBtaW49XCIwLjAwMVwiIG1heD1cIjVcIiBzdGVwPVwiMC4wMVwiIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzY2FuU2l6ZVwiIChpbnB1dCk9XCJvbkNoYW5nZVNjYW5TaXplKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Atcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKClcIj57eydzZWxlY3RUb29sLnNlbGVjdEFsbCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImJ1dHRvbnNJblNlbGVjdGlvbi5sZW5ndGggPiAwXCIgY2xhc3M9XCJlZGl0LXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbC1sYWJlbFwiPnt7J3NlbGVjdFRvb2wuZWRpdCcgfCB0cmFuc2xhdGV9fSA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biByb3VuZGVkLXBpbGwgYnRuLXByaW1hcnkgbXMtMyBtZS0yXCIgKGNsaWNrKT1cIm9uU2VsZWN0aW9uQWRkKClcIj57eydzZWxlY3RUb29sLmFkZCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25TZWxlY3Rpb25SZW1vdmUoKVwiPnt7J3NlbGVjdFRvb2wudW5kbycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICB7eyBjaG9zZW5TY2Fuc09uUGxhbi5sZW5ndGggfX0ge3snc2NhbiBwb2ludHMgY2hvc2VuJyB8IHRyYW5zbGF0ZX19ICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFlZGl0aW5nQXVkaW9ab25lXCIgY2xhc3M9XCJzcC1yb3dcIj5cclxuICAgICAgICAgICAgPGxpYi1yYWRpby1idXR0b24gIGxhYmVsPVwie3sgJ3NlbGVjdFRvb2wuY2hvb3NlU3RhcnRQb2ludCcgIHwgdHJhbnNsYXRlIH19XCIgKGlzQ2hlY2tlZEV2ZW50KT1cImlzU2V0dGluZ1N0YXJ0U3dlZXA9IWlzU2V0dGluZ1N0YXJ0U3dlZXBcIj48L2xpYi1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvblNhdmVTZWxlY3Rpb24oKVwiPnt7J3NlbGVjdFRvb2wuc2F2ZVNlbGVjdGlvbicgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eydzZWxlY3RUb29sLmNhbmNlbFNlbGVjdGlvbicgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuICAgXHJcbiJdfQ==
|
|
@@ -68,10 +68,13 @@ export class ZonesComponent {
|
|
|
68
68
|
this.allZones = await this.zoneService.getZonesBySpace(this.spaceID);
|
|
69
69
|
this.defaultZone = this.allZones.find((zone) => zone.layer && zone.layer.name === "BUILDING" && zone.sweepIDs);
|
|
70
70
|
this.floorZones = this.allZones.filter((zone) => zone.layer && zone.layer.name === "FLOOR");
|
|
71
|
+
// sort alphabetically
|
|
72
|
+
this.floorZones.sort((a, b) => a.name.localeCompare(b.name));
|
|
71
73
|
// we add only children zones that are not Floors
|
|
72
74
|
this.zonesMap.set(this.defaultZone.id, this.allZones.filter((zone) => zone.parentID === this.defaultZone.id && !this.floorZones.includes(zone)));
|
|
73
75
|
for (const floor of this.floorZones) {
|
|
74
|
-
|
|
76
|
+
const zonesForFloor = this.allZones.filter((zone) => zone.parentID === floor.id);
|
|
77
|
+
this.zonesMap.set(floor.id, zonesForFloor.sort((a, b) => a.name.localeCompare(b.name)));
|
|
75
78
|
}
|
|
76
79
|
this.resetNavigations();
|
|
77
80
|
this.images360 = await this.visitService.loadImagesForSpace(this.currentSpace);
|
|
@@ -239,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
239
242
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.ZoneService }, { type: i2.SpaceService }, { type: i2.VisitService }, { type: i2.NavigationService }, { type: i2.BaseUserService }, { type: i2.PlanService }, { type: i3.TranslateService }]; }, propDecorators: { updatedZone: [{
|
|
240
243
|
type: Output
|
|
241
244
|
}] } });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFFOEMsSUFBSSxFQUFjLHlCQUF5QixFQUFxQixRQUFRLEVBQzVILE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7QUFNOUIsTUFBTSxPQUFPLGNBQWM7SUFzRHZCLFlBQ1ksS0FBcUIsRUFDckIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3BDLFdBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLFNBQTJCO1FBUDNCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBNUR2QyxvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBSVgsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBTXBELGtCQUFhLEdBQUcsS0FBSyxD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LE9BQU8sRUFBRSxHQUFHO2FBQ2YsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDOzsyR0FyU1EsY0FBYzsrRkFBZCxjQUFjLCtHQ2IzQixpK1dBaUxBOzJGRHBLYSxjQUFjO2tCQUwxQixTQUFTOytCQUNJLFdBQVc7NFNBVVgsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIE1lbnVJdGVtLCBab25lU2VydmljZSwgU3BhY2VTZXJ2aWNlLCBWaXNpdFNlcnZpY2UsXHJcbiAgICBOYXZpZ2F0aW9uU2VydmljZSwgQmFzZVVzZXJTZXJ2aWNlLCBQbGFuU2VydmljZSwgd2FpdCwgTmF2aWdhdGlvbiwgc2hvd1NjYW5Qb2ludHNPblBsYW5JbkRpdiwgUGxhbiwgU3BhY2UsIFpvbmUsIFNwTW9kdWxlXHJcbn0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcclxuaW1wb3J0IHBhbnpvb20gZnJvbSBcInBhbnpvb21cIjtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi16b25lcycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vem9uZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vem9uZXMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIGxvdEluZGV4RGV0YWlscyA9IC0xO1xyXG5cclxuICAgIGN1cnJlbnRTcGFjZTogU3BhY2U7XHJcblxyXG4gICAgQE91dHB1dCgpIHVwZGF0ZWRab25lID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIHBsYW5zOiBQbGFuW107XHJcblxyXG4gICAgem9uZUZvckVkaXQ6IFpvbmU7XHJcblxyXG4gICAgaXNFZGl0aW5nWm9uZSA9IGZhbHNlO1xyXG5cclxuICAgIGNhcHR1cmVEYXRlOiBudW1iZXI7XHJcblxyXG4gICAgc3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICAgIG5hdmlnYXRpb25zOiBzdHJpbmdbXTtcclxuXHJcbiAgICBpbWFnZXMzNjA6IGFueVtdO1xyXG5cclxuICAgIGNhcm91c2VsSXNWaXNpYmxlID0gZmFsc2U7XHJcblxyXG4gICAgcGxhbklzVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIGN1cnJlbnRQbGFuOiBQbGFuO1xyXG5cclxuICAgIGN1cnJlbnRab25lOiBab25lO1xyXG5cclxuICAgIGxvYWRpbmdQbGFuID0gZmFsc2U7XHJcblxyXG4gICAgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblxyXG4gICAgaXNNdXNldW1WaXNpdCA9IGZhbHNlO1xyXG5cclxuICAgIGlzTXVzZXVtTW9kdWxlID0gZmFsc2U7XHJcblxyXG4gICAgYWxsWm9uZXM6IFpvbmVbXTtcclxuXHJcbiAgICBmbG9vclpvbmVzOiBab25lW10gPSBbXTtcclxuXHJcbiAgICB6b25lc01hcDogTWFwPHN0cmluZywgWm9uZVtdPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgICBmbG9vckRldGFpbHM6IG51bWJlciA9IC0xO1xyXG5cclxuICAgIGRlZmF1bHRab25lOiBab25lO1xyXG5cclxuICAgIGRlZmF1bHRTaG93aW5nID0gZmFsc2U7XHJcblxyXG4gICAgaXNBZGRpbmdBdWRpb1RyYWNrID0gZmFsc2U7XHJcblxyXG4gICAgcGFyZW50Wm9uZUZvckF1ZGlvOiBab25lO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgc3BhY2VTZXJ2aWNlOiBTcGFjZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB2aXNpdFNlcnZpY2U6IFZpc2l0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBwbGFuU2VydmljZTogUGxhblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc3BhY2VJRCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwiaWRcIik7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bU1vZHVsZSA9IHRoaXMudXNlclNlcnZpY2UuZ2V0U3BNb2R1bGUoKSA9PT0gU3BNb2R1bGUuTVVTRVVNO1xyXG4gICAgICAgIHRoaXMucmVzZXRab25lcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHVwTWVudUl0ZW1zKCkge1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIkxvY2F0aW9uc1wiLCB1cmw6IFwiL2xvY2FsaXNhdGlvblwiIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRTcGFjZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuc3BhY2VJRH1gLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJab25lc1wiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfS96b25lc2AsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBvbkdvQmFjaygpIHtcclxuICAgICAgICB0aGlzLmVkaXRDb21wbGV0ZWQobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldFpvbmVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcmVzZXRab25lcygpIHtcclxuICAgICAgICB0aGlzLmlzTXVzZXVtVmlzaXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZSA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLmdldFNwYWNlKHRoaXMuc3BhY2VJRCk7XHJcbiAgICAgICAgdGhpcy5zZXR1cE1lbnVJdGVtcygpO1xyXG5cclxuICAgICAgICB0aGlzLmFsbFpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5U3BhY2UodGhpcy5zcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmRlZmF1bHRab25lID0gdGhpcy5hbGxab25lcy5maW5kKFxyXG4gICAgICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09IFwiQlVJTERJTkdcIiAmJiB6b25lLnN3ZWVwSURzLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmxvb3Jab25lcyA9IHRoaXMuYWxsWm9uZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09IFwiRkxPT1JcIixcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHdlIGFkZCBvbmx5IGNoaWxkcmVuIHpvbmVzIHRoYXQgYXJlIG5vdCBGbG9vcnNcclxuICAgICAgICB0aGlzLnpvbmVzTWFwLnNldCh0aGlzLmRlZmF1bHRab25lLmlkLCB0aGlzLmFsbFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5wYXJlbnRJRCA9PT0gdGhpcy5kZWZhdWx0Wm9uZS5pZCAmJiAhdGhpcy5mbG9vclpvbmVzLmluY2x1ZGVzKHpvbmUpKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmbG9vciBvZiB0aGlzLmZsb29yWm9uZXMpIHtcclxuICAgICAgICAgICAgdGhpcy56b25lc01hcC5zZXQoXHJcbiAgICAgICAgICAgICAgICBmbG9vci5pZCxcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLnBhcmVudElEID09PSBmbG9vci5pZCksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVzZXROYXZpZ2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VzMzYwID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UubG9hZEltYWdlc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucGxhbnMgPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmdldFBsYW5zV2l0aFpvbmVzRm9yU3BhY2UoXHJcbiAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucGxhbnMgPSB0aGlzLnBsYW5zLmZpbHRlcigocGxhbikgPT4gcGxhbi5pc0N1cnJlbnRGb3Jab25lKTtcclxuICAgICAgICB0aGlzLm9uUGxhbnNMb2FkZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldE5hdmlnYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbnMgPSBbXTtcclxuICAgICAgICBjb25zdCB6b25lc1dpdGhTd2VlcHMgPSB0aGlzLmFsbFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5zd2VlcElEcyk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9ucyA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldCh6b25lc1dpdGhTd2VlcHMuZmxhdE1hcCgoem9uZSkgPT4gem9uZS5zd2VlcElEcykpLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25QbGFuc0xvYWRlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wbGFuSXNWaXNpYmxlICYmIHRoaXMuY3VycmVudFpvbmUpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGxhbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIG9uVG9nZ2xlRGV0YWlsIGZvbGRzL3VuZm9sZHMgZGV0YWlscyBmb3IgYSB6b25lXHJcbiAgICAgKiBAcGFyYW0gaSBpbmRleCBvZiB0aGUgbG90IHRvIGJlIHRvZ2dsZWRcclxuICAgICAqL1xyXG4gICAgYXN5bmMgb25Ub2dnbGVEZXRhaWwoaW5kZXg6IG51bWJlciwgem9uZTogWm9uZSkge1xyXG4gICAgICAgIHRoaXMubG90SW5kZXhEZXRhaWxzID0gaW5kZXggPT09IHRoaXMubG90SW5kZXhEZXRhaWxzID8gLTEgOiBpbmRleDtcclxuICAgICAgICBpZiAodGhpcy5sb3RJbmRleERldGFpbHMgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gem9uZTtcclxuICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5wbGFucykge1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIHdhaXQgdW50aWwgdGhlIHBsYW5zIGFyZSBzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZ1BsYW4pIHtcclxuICAgICAgICAgICAgLy8gYW5vdGhlciBwbGFuIGlzIGFscmVhZHkgbG9hZGluZ1xyXG4gICAgICAgICAgICBhd2FpdCB3YWl0KDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByZXBhcmVQbGFuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ub2dnbGVEZXRhaWxGbG9vcihpbmRleDogbnVtYmVyLCBmbG9vcjogWm9uZSkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNob3dpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZsb29yRGV0YWlscyA9IGluZGV4ID09PSB0aGlzLmZsb29yRGV0YWlscyA/IC0xIDogaW5kZXg7XHJcbiAgICAgICAgaWYgKHRoaXMuZmxvb3JEZXRhaWxzID09PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5wbGFuSXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IGZsb29yO1xyXG4gICAgICAgIHRoaXMucGxhbklzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYW5zKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicGxhbnMgbm90IHJlYWR5XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIHdhaXQgdW50aWwgdGhlIHBsYW5zIGFyZSBzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlUGxhbigpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVG9nZ2xlRGVmYXVsdFpvbmUoKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0U2hvd2luZyA9ICF0aGlzLmRlZmF1bHRTaG93aW5nO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSB0aGlzLmRlZmF1bHRTaG93aW5nID8gdGhpcy5kZWZhdWx0Wm9uZSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcHJlcGFyZVBsYW4oKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nUGxhbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGxhbiA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFpvbmUudmlydHVhbCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nUGxhbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFBsYW4gPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmdldENhbGlicmF0ZWRQbGFuRm9yWm9uZShcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRQbGFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjYW5zID0gYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0ZvclpvbmUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNob3dTY2FuUG9pbnRzT25QbGFuKHNjYW5zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nUGxhbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUNhcm91c2VsKCkge1xyXG4gICAgICAgIHRoaXMuY2Fyb3VzZWxJc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdCh6b25lOiBab25lKSB7XHJcbiAgICAgICAgdGhpcy56b25lRm9yRWRpdCA9IHpvbmU7XHJcbiAgICAgICAgaWYgKHRoaXMuem9uZUZvckVkaXQubGF5ZXIgJiYgdGhpcy56b25lRm9yRWRpdC5sYXllci5uYW1lID09PSBcIkFVRElPXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0FkZGluZ0F1ZGlvVHJhY2sgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0aW5nWm9uZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IGAke3pvbmUubmFtZX1gLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWRkTG90KCkge1xyXG4gICAgICAgIHRoaXMuaXNNdXNldW1WaXNpdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0aW5nWm9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBcIk5ld1wiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWRkTXVzZXVtWm9uZSgpIHtcclxuICAgICAgICB0aGlzLmlzTXVzZXVtVmlzaXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0aW5nWm9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBcIk5ldyBNdXNldW0gSXRpbmVyYXJ5XCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZGRBdWRpb1pvbmUocGFyZW50Wm9uZTogWm9uZSkge1xyXG4gICAgICAgIHRoaXMucGFyZW50Wm9uZUZvckF1ZGlvID0gcGFyZW50Wm9uZTtcclxuICAgICAgICB0aGlzLmlzQWRkaW5nQXVkaW9UcmFjayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBwYXJlbnRab25lLm5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBcImFkZC1hdWRpby5hZGRcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkRlbGV0ZSh6b25lOiBab25lKSB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJjb25maXJtLmRlbGV0ZVpvbmVcIik7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWFsZXJ0XHJcbiAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuWm9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlQYXJlbnRab25lKHpvbmUuaWQpO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChjaGlsZHJlblpvbmVzLm1hcChhc3luYyAoY2hpbGRab25lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmRlbGV0ZVpvbmUoY2hpbGRab25lLmlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsWm9uZXMuc3BsaWNlKHRoaXMuYWxsWm9uZXMuaW5kZXhPZihjaGlsZFpvbmUpLCAxKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmRlbGV0ZVpvbmUoem9uZS5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsWm9uZXMuc3BsaWNlKHRoaXMuYWxsWm9uZXMuaW5kZXhPZih6b25lKSwgMSk7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBjdXJyZW50IHpvbmUgZnJvbSBpdHMgcGFyZW50IGxpc3RcclxuICAgICAgICAgICAgaWYgKHpvbmUucGFyZW50SUQgJiYgQXJyYXkuZnJvbSh0aGlzLnpvbmVzTWFwLmtleXMoKSkuaW5jbHVkZXMoem9uZS5wYXJlbnRJRCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHpvbmVzRm9yUGFyZW50ID0gdGhpcy56b25lc01hcC5nZXQoem9uZS5wYXJlbnRJRCk7XHJcbiAgICAgICAgICAgICAgICB6b25lc0ZvclBhcmVudC5zcGxpY2Uoem9uZXNGb3JQYXJlbnQuaW5kZXhPZih6b25lKSwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVzTWFwLnNldCh6b25lLnBhcmVudElELCB6b25lc0ZvclBhcmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWRpdENvbXBsZXRlZChldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5sb3RJbmRleERldGFpbHMgPSAtMTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzQWRkaW5nQXVkaW9UcmFjayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuem9uZUZvckVkaXQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucGxhbklzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2Fyb3VzZWxJc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcbiAgICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRab25lcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2hvd1NjYW5Qb2ludHNPblBsYW4obmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXSkge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRQbGFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpdlBsYW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3BsYW5EaXZcIikgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGF3YWl0IHNob3dTY2FuUG9pbnRzT25QbGFuSW5EaXYodGhpcy5jdXJyZW50UGxhbiwgZGl2UGxhbiwgbmF2aWdhdGlvbnMpO1xyXG4gICAgICAgICAgICBwYW56b29tKGRpdlBsYW4sIHtcclxuICAgICAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgICAgICBtYXhab29tOiAzLjUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwiY3VycmVudFNwYWNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibS0zXCI+XHJcbiAgICAgIDxsaWItdGFiLW5hdmlnYXRpb24gW21lbnVJdGVtc109J21lbnVJdGVtcycgKG9uR29CYWNrKT1cIm9uR29CYWNrKClcIj48L2xpYi10YWItbmF2aWdhdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIWlzRWRpdGluZ1pvbmUgJiYgIWlzQWRkaW5nQXVkaW9UcmFja1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIiA+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZGVmYXVsdC16b25lLWxpbmUtaXRlbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIiAqbmdJZj1cImRlZmF1bHRab25lXCI+XHJcbiAgICAgICAgICAgICAge3tkZWZhdWx0Wm9uZS5uYW1lfX1cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC16b25lLWxhYmVsXCI+e3sgXCJ3aG9sZSBzcGFjZVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cImRlZmF1bHRTaG93aW5nXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGVmYXVsdFpvbmUoKVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGVmYXVsdFNob3dpbmdcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J1R5cGUgb2Ygem9uZScgfCB0cmFuc2xhdGV9fTogXHJcbiAgICAgICAgICAgICAgICAgIHt7ZGVmYXVsdFpvbmUubGF5ZXIgPyBkZWZhdWx0Wm9uZS5sYXllci5uYW1lIDogXCJObyB0eXBlXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJkZWZhdWx0Wm9uZS5zdXJmYWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J1N1cmZhY2UnIHwgdHJhbnNsYXRlfX0sIG08c3VwPjI8L3N1cD46IHt7ZGVmYXVsdFpvbmUuc3VyZmFjZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiIWRlZmF1bHRab25lLnZpcnR1YWxcIj57eydTY2FuIFBvaW50cycgfCB0cmFuc2xhdGV9fTpcclxuICAgICAgICAgICAgICAgICAge3tkZWZhdWx0Wm9uZS5zd2VlcElEcyA/IGRlZmF1bHRab25lLnN3ZWVwSURzLmxlbmd0aCA6IFwiTm8gc2NhbiBwb2ludHNcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWlyIG9mIHpvbmVzTWFwIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWlyLmtleSA9PSBkZWZhdWx0Wm9uZS5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDUgc3R5bGU9XCJtYXJnaW46IDhweDtcIiAqbmdJZj1cInBhaXIudmFsdWUubGVuZ3RoID4gMFwiPnt7J0NoaWxkcmVuIHpvbmVzJ3x0cmFuc2xhdGV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBsaXN0LWdyb3VwLWZsdXNoIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvdCBvZiBwYWlyLnZhbHVlOyBpbmRleCBhcyB6b25lSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHpvbmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11c2V1bS1sYWJlbFwiICpuZ0lmPVwibG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3sgXCJpdGluZXJhcnlcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoZXZyb24gW2NvbmRpdGlvblNob3dpbmddPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIiAoY2xpY2spPVwib25Ub2dnbGVEZXRhaWwoem9uZUluZGV4LCBsb3QpXCI+PC9saWItY2hldnJvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lSW5kZXg9PWxvdEluZGV4RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QuaXNNdXNldW1WaXNpdFpvbmVcIj57eydUeXBlIG9mIHpvbmUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19OiB7e2xvdC5sYXllciA/IGxvdC5sYXllci5uYW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm8gdHlwZVwiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC5zdXJmYWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydTdXJmYWNlJyB8IHRyYW5zbGF0ZX19LG08c3VwPjI8L3N1cD46IHt7bG90LnN1cmZhY2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiIWxvdC52aXJ0dWFsXCI+e3snU2NhbiBQb2ludHMnIHwgdHJhbnNsYXRlfX06XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5zd2VlcElEcyA/IGxvdC5zd2VlcElEcy5sZW5ndGggOiBcIk5vIHNjYW4gcG9pbnRzXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwibG90LnZpcnR1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1pvbmUgbm90IHZpc2libGUgaW4gM0QgdmlzaXQnIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KGxvdClcIj57eydFZGl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkFkZEF1ZGlvWm9uZShsb3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVzZXVtTW9kdWxlXCI+IHt7J2FkZC1hdWRpby5hZGQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShsb3QpXCI+e3snRGVsZXRlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCIgKm5nRm9yPVwibGV0IGZsb29yIG9mIGZsb29yWm9uZXM7IGluZGV4IGFzIGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHpvbmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7Zmxvb3IubmFtZX19XHJcbiAgICAgICAgICAgICAgPCEtLSA8c21hbGw+KHt7IGxvdC5tZXRhZGF0YSA/ICgnQ2FsaWJyYXRlZCcgfCB0cmFuc2xhdGUpIDogKCdOb3QgY2FsaWJyYXRlZCcgfCB0cmFuc2xhdGUpfX0pPC9zbWFsbD4gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11c2V1bS1sYWJlbFwiICpuZ0lmPVwiZmxvb3IuaXNNdXNldW1WaXNpdFpvbmVcIj57eyBcIml0aW5lcmFyeVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cImluZGV4PT1mbG9vckRldGFpbHNcIiAoY2xpY2spPVwib25Ub2dnbGVEZXRhaWxGbG9vcihpbmRleCwgZmxvb3IpXCI+PC9saWItY2hldnJvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbmRleD09Zmxvb3JEZXRhaWxzXCI+ICBcclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J1R5cGUgb2Ygem9uZScgfCB0cmFuc2xhdGV9fToge3tmbG9vci5sYXllciA/XHJcbiAgICAgICAgICAgICAgICAgIGZsb29yLmxheWVyLm5hbWUgOlxyXG4gICAgICAgICAgICAgICAgICBcIk5vIHR5cGVcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImZsb29yLnN1cmZhY2VcIj57eydTdXJmYWNlJyB8IHRyYW5zbGF0ZX19LCBtPHN1cD4yPC9zdXA+OlxyXG4gICAgICAgICAgICAgICAgICB7e2Zsb29yLnN1cmZhY2UgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFmbG9vci52aXJ0dWFsXCI+e3snU2NhbiBQb2ludHMnIHwgdHJhbnNsYXRlfX06XHJcbiAgICAgICAgICAgICAgICAgIHt7Zmxvb3Iuc3dlZXBJRHMgPyBmbG9vci5zd2VlcElEcy5sZW5ndGggOiBcIk5vIHNjYW4gcG9pbnRzXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJmbG9vci52aXJ0dWFsXCI+e3snWm9uZSBub3QgdmlzaWJsZSBpbiAzRCB2aXNpdCcgfFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCIgKGNsaWNrKT1cIm9uRWRpdChmbG9vcilcIj57eydFZGl0JyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIFxyXG4gICAgICAgICAgICAgIDwhLS0gTGlzdCBvZiBjaGlsZHJlbiB6b25lcyAtLT5cclxuICBcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWlyIG9mIHpvbmVzTWFwIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWlyLmtleSA9PSBmbG9vci5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDUgc3R5bGU9XCJtYXJnaW46IDhweDtcIiAqbmdJZj1cInBhaXIudmFsdWUubGVuZ3RoID4gMFwiPnt7J0NoaWxkcmVuIHpvbmVzJ3x0cmFuc2xhdGV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBsaXN0LWdyb3VwLWZsdXNoIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvdCBvZiBwYWlyLnZhbHVlOyBpbmRleCBhcyB6b25lSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHpvbmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11c2V1bS1sYWJlbFwiICpuZ0lmPVwibG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3sgXCJpdGluZXJhcnlcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoZXZyb24gW2NvbmRpdGlvblNob3dpbmddPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIiAoY2xpY2spPVwib25Ub2dnbGVEZXRhaWwoem9uZUluZGV4LCBsb3QpXCI+PC9saWItY2hldnJvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lSW5kZXg9PWxvdEluZGV4RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QuaXNNdXNldW1WaXNpdFpvbmVcIj57eydUeXBlIG9mIHpvbmUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19OiB7e2xvdC5sYXllciA/IGxvdC5sYXllci5uYW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm8gdHlwZVwiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC5zdXJmYWNlXCI+e3snU3VyZmFjZScgfCB0cmFuc2xhdGV9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG08c3VwPjI8L3N1cD46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5zdXJmYWNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QudmlydHVhbFwiPnt7J1NjYW4gUG9pbnRzJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsb3Quc3dlZXBJRHMgPyBsb3Quc3dlZXBJRHMubGVuZ3RoIDogXCJObyBzY2FuIHBvaW50c1wiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QudmlydHVhbCAmJiBsb3QuaXNNdXNldW1WaXNpdFpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1NjYW4gUG9pbnRzIHdpdGggYXVkaW8nIHwgdHJhbnNsYXRlfX06IHt7IGxvdCB8IGNvdW50QXVkaW9Td2VlcHMgfCBhc3luY319IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJsb3QudmlydHVhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snWm9uZSBub3QgdmlzaWJsZSBpbiAzRCB2aXNpdCcgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXQobG90KVwiPnt7J0VkaXQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCIgKGNsaWNrKT1cIm9uQWRkQXVkaW9ab25lKGxvdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNdXNldW1Nb2R1bGVcIj4ge3snYWRkLWF1ZGlvLmFkZCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKGxvdClcIj57eydEZWxldGUnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkFkZExvdCgpXCI+e3snQWRkIHpvbmUnIHxcclxuICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkFkZE11c2V1bVpvbmUoKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNNdXNldW1Nb2R1bGVcIj4ge3snQWRkIG11c2V1bSBpdGluZXJhcnknIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwicGxhbklzVmlzaWJsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwibG9hZGluZ1BsYW5cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlbjsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50UGxhblwiPlxyXG4gICAgICAgICAgICA8bGliLXBsYW4tbGVnZW5kIFtpc0F1ZGlvWm9uZV09XCJmYWxzZVwiPjwvbGliLXBsYW4tbGVnZW5kPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbkNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIG1zLTNcIiBzdHlsZT1cImhlaWdodDogNTAwcHg7IHdpZHRoOiAxMDAlO1wiIGlkPVwicGxhbkRpdlwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnRQbGFuICYmIHBsYW5zICYmICFsb2FkaW5nUGxhbiAmJiBjdXJyZW50Wm9uZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zXCIgaWQ9XCJuby1wbGFuXCIgKm5nSWY9XCIhY3VycmVudFpvbmUudmlydHVhbCAmJiAhY3VycmVudFpvbmUuaXNNdWx0aXBsZUZsb29yWm9uZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdQbGFuIGlzIG5vdCBjYWxpYnJhdGVkJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zXCIgaWQ9XCJuby1wbGFuXCIgKm5nSWY9XCJjdXJyZW50Wm9uZS52aXJ0dWFsXCI+XHJcbiAgICAgICAgICAgICAge3sgJ05vIHNjYW4gcG9pbnRzIGNob3NlbicgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIGlkPVwibm8tcGxhblwiICpuZ0lmPVwiY3VycmVudFpvbmUuaXNNdWx0aXBsZUZsb29yWm9uZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdUaGUgem9uZSBpcyBvbiBzZXZlcmFsIGZsb29ycycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwiaXNFZGl0aW5nWm9uZVwiPlxyXG4gICAgICA8bGliLWFkZC16b25lIFt6b25lRWRpdF09XCJ6b25lRm9yRWRpdFwiIFtzcGFjZUlEXT1cInNwYWNlSURcIiBbaW1hZ2VzMzYwXT1cImltYWdlczM2MFwiIFtuYXZpZ2F0aW9uSURzXT1cIm5hdmlnYXRpb25zXCJcclxuICAgICAgICBbem9uZXNdPVwiYWxsWm9uZXNcIiBbZGVmYXVsdFpvbmVdPVwiZGVmYXVsdFpvbmVcIiAodXBkYXRlZFpvbmUpPVwiZWRpdENvbXBsZXRlZCgkZXZlbnQpXCIgW2lzTXVzZXVtVmlzaXRdPVwiaXNNdXNldW1WaXNpdFwiPjwvbGliLWFkZC16b25lPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwiaXNBZGRpbmdBdWRpb1RyYWNrXCI+XHJcbiAgICAgIDxsaWItYWRkLWF1ZGlvLXpvbmUgW3NwYWNlSURdPVwic3BhY2VJRFwiIFtkZWZhdWx0Wm9uZV09XCJkZWZhdWx0Wm9uZVwiIFtwYXJlbnRab25lXT1cInBhcmVudFpvbmVGb3JBdWRpb1wiIFt6b25lc109XCJhbGxab25lc1wiIFtjdXJyZW50QXVkaW9ab25lXT1cInpvbmVGb3JFZGl0XCJcclxuICAgICAgKHVwZGF0ZWRab25lKT1cImVkaXRDb21wbGV0ZWQoJGV2ZW50KVwiPjwvbGliLWFkZC1hdWRpby16b25lPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiJdfQ==
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFFOEMsSUFBSSxFQUFjLHlCQUF5QixFQUFxQixRQUFRLEVBQzVILE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7QUFNOUIsTUFBTSxPQUFPLGNBQWM7SUFzRHZCLFlBQ1ksS0FBcUIsRUFDckIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3BDLFdBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLFNBQTJCO1FBUDNCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBNUR2QyxvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBSVgsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBTXBELGtCQUFhLEdBQUcsS0FBSyxD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O1NBQ3JCO0lBRUwsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxXQUF5QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQWdCLENBQUM7WUFDbEUsTUFBTSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN4RSxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNiLE1BQU0sRUFBRSxJQUFJO2dCQUNaLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixPQUFPLEVBQUUsR0FBRzthQUNmLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7MkdBeFNRLGNBQWM7K0ZBQWQsY0FBYywrR0NiM0IsaStXQWlMQTsyRkRwS2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDSSxXQUFXOzRTQVVYLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBNZW51SXRlbSwgWm9uZVNlcnZpY2UsIFNwYWNlU2VydmljZSwgVmlzaXRTZXJ2aWNlLFxyXG4gICAgTmF2aWdhdGlvblNlcnZpY2UsIEJhc2VVc2VyU2VydmljZSwgUGxhblNlcnZpY2UsIHdhaXQsIE5hdmlnYXRpb24sIHNob3dTY2FuUG9pbnRzT25QbGFuSW5EaXYsIFBsYW4sIFNwYWNlLCBab25lLCBTcE1vZHVsZVxyXG59IGZyb20gJ0BzbWFydGVycGxhbi9uZ3gtc21hcnRlcnBsYW4tY29yZSc7XHJcbmltcG9ydCBwYW56b29tIGZyb20gXCJwYW56b29tXCI7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItem9uZXMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3pvbmVzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3pvbmVzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFpvbmVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBsb3RJbmRleERldGFpbHMgPSAtMTtcclxuXHJcbiAgICBjdXJyZW50U3BhY2U6IFNwYWNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSB1cGRhdGVkWm9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwbGFuczogUGxhbltdO1xyXG5cclxuICAgIHpvbmVGb3JFZGl0OiBab25lO1xyXG5cclxuICAgIGlzRWRpdGluZ1pvbmUgPSBmYWxzZTtcclxuXHJcbiAgICBjYXB0dXJlRGF0ZTogbnVtYmVyO1xyXG5cclxuICAgIHNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgICBuYXZpZ2F0aW9uczogc3RyaW5nW107XHJcblxyXG4gICAgaW1hZ2VzMzYwOiBhbnlbXTtcclxuXHJcbiAgICBjYXJvdXNlbElzVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIHBsYW5Jc1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgICBjdXJyZW50UGxhbjogUGxhbjtcclxuXHJcbiAgICBjdXJyZW50Wm9uZTogWm9uZTtcclxuXHJcbiAgICBsb2FkaW5nUGxhbiA9IGZhbHNlO1xyXG5cclxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIGlzTXVzZXVtVmlzaXQgPSBmYWxzZTtcclxuXHJcbiAgICBpc011c2V1bU1vZHVsZSA9IGZhbHNlO1xyXG5cclxuICAgIGFsbFpvbmVzOiBab25lW107XHJcblxyXG4gICAgZmxvb3Jab25lczogWm9uZVtdID0gW107XHJcblxyXG4gICAgem9uZXNNYXA6IE1hcDxzdHJpbmcsIFpvbmVbXT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gICAgZmxvb3JEZXRhaWxzOiBudW1iZXIgPSAtMTtcclxuXHJcbiAgICBkZWZhdWx0Wm9uZTogWm9uZTtcclxuXHJcbiAgICBkZWZhdWx0U2hvd2luZyA9IGZhbHNlO1xyXG5cclxuICAgIGlzQWRkaW5nQXVkaW9UcmFjayA9IGZhbHNlO1xyXG5cclxuICAgIHBhcmVudFpvbmVGb3JBdWRpbzogWm9uZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNwYWNlSUQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcImlkXCIpO1xyXG4gICAgICAgIHRoaXMuaXNNdXNldW1Nb2R1bGUgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFNwTW9kdWxlKCkgPT09IFNwTW9kdWxlLk1VU0VVTTtcclxuICAgICAgICB0aGlzLnJlc2V0Wm9uZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cE1lbnVJdGVtcygpIHtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogXCJMb2NhdGlvbnNcIiwgdXJsOiBcIi9sb2NhbGlzYXRpb25cIiB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jdXJyZW50U3BhY2UubmFtZSxcclxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLnNwYWNlSUR9YCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiWm9uZXNcIixcclxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLmN1cnJlbnRTcGFjZS5pZH0vem9uZXNgLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgb25Hb0JhY2soKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0Q29tcGxldGVkKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgICAgIHRoaXMucmVzZXRab25lcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlc2V0Wm9uZXMoKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVZpc2l0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRTcGFjZSh0aGlzLnNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hbGxab25lcyA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlKHRoaXMuc3BhY2VJRCk7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Wm9uZSA9IHRoaXMuYWxsWm9uZXMuZmluZChcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lID09PSBcIkJVSUxESU5HXCIgJiYgem9uZS5zd2VlcElEcyxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZsb29yWm9uZXMgPSB0aGlzLmFsbFpvbmVzLmZpbHRlcihcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lID09PSBcIkZMT09SXCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBzb3J0IGFscGhhYmV0aWNhbGx5XHJcbiAgICAgICAgdGhpcy5mbG9vclpvbmVzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xyXG4gICAgICAgIC8vIHdlIGFkZCBvbmx5IGNoaWxkcmVuIHpvbmVzIHRoYXQgYXJlIG5vdCBGbG9vcnNcclxuICAgICAgICB0aGlzLnpvbmVzTWFwLnNldCh0aGlzLmRlZmF1bHRab25lLmlkLCB0aGlzLmFsbFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5wYXJlbnRJRCA9PT0gdGhpcy5kZWZhdWx0Wm9uZS5pZCAmJiAhdGhpcy5mbG9vclpvbmVzLmluY2x1ZGVzKHpvbmUpKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmbG9vciBvZiB0aGlzLmZsb29yWm9uZXMpIHtcclxuICAgICAgICAgICAgY29uc3Qgem9uZXNGb3JGbG9vciA9IHRoaXMuYWxsWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLnBhcmVudElEID09PSBmbG9vci5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZXNNYXAuc2V0KFxyXG4gICAgICAgICAgICAgICAgZmxvb3IuaWQsXHJcbiAgICAgICAgICAgICAgICB6b25lc0ZvckZsb29yLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc2V0TmF2aWdhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmltYWdlczM2MCA9IGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlLmxvYWRJbWFnZXNGb3JTcGFjZShcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBsYW5zID0gYXdhaXQgdGhpcy5wbGFuU2VydmljZS5nZXRQbGFuc1dpdGhab25lc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLnNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBsYW5zID0gdGhpcy5wbGFucy5maWx0ZXIoKHBsYW4pID0+IHBsYW4uaXNDdXJyZW50Rm9yWm9uZSk7XHJcbiAgICAgICAgdGhpcy5vblBsYW5zTG9hZGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXROYXZpZ2F0aW9ucygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25zID0gW107XHJcbiAgICAgICAgY29uc3Qgem9uZXNXaXRoU3dlZXBzID0gdGhpcy5hbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoem9uZXNXaXRoU3dlZXBzLmZsYXRNYXAoKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMpKSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uUGxhbnNMb2FkZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGxhbklzVmlzaWJsZSAmJiB0aGlzLmN1cnJlbnRab25lKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBsYW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBvblRvZ2dsZURldGFpbCBmb2xkcy91bmZvbGRzIGRldGFpbHMgZm9yIGEgem9uZVxyXG4gICAgICogQHBhcmFtIGkgaW5kZXggb2YgdGhlIGxvdCB0byBiZSB0b2dnbGVkXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIG9uVG9nZ2xlRGV0YWlsKGluZGV4OiBudW1iZXIsIHpvbmU6IFpvbmUpIHtcclxuICAgICAgICB0aGlzLmxvdEluZGV4RGV0YWlscyA9IGluZGV4ID09PSB0aGlzLmxvdEluZGV4RGV0YWlscyA/IC0xIDogaW5kZXg7XHJcbiAgICAgICAgaWYgKHRoaXMubG90SW5kZXhEZXRhaWxzID09PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5wbGFuSXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XHJcbiAgICAgICAgdGhpcy5wbGFuSXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMucGxhbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuOyAvLyB3YWl0IHVudGlsIHRoZSBwbGFucyBhcmUgc2V0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdQbGFuKSB7XHJcbiAgICAgICAgICAgIC8vIGFub3RoZXIgcGxhbiBpcyBhbHJlYWR5IGxvYWRpbmdcclxuICAgICAgICAgICAgYXdhaXQgd2FpdCgxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlUGxhbigpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVG9nZ2xlRGV0YWlsRmxvb3IoaW5kZXg6IG51bWJlciwgZmxvb3I6IFpvbmUpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRTaG93aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mbG9vckRldGFpbHMgPSBpbmRleCA9PT0gdGhpcy5mbG9vckRldGFpbHMgPyAtMSA6IGluZGV4O1xyXG4gICAgICAgIGlmICh0aGlzLmZsb29yRGV0YWlscyA9PT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMucGxhbklzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBmbG9vcjtcclxuICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5wbGFucykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInBsYW5zIG5vdCByZWFkeVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuOyAvLyB3YWl0IHVudGlsIHRoZSBwbGFucyBhcmUgc2V0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJlcGFyZVBsYW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRvZ2dsZURlZmF1bHRab25lKCkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNob3dpbmcgPSAhdGhpcy5kZWZhdWx0U2hvd2luZztcclxuICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gdGhpcy5kZWZhdWx0U2hvd2luZyA/IHRoaXMuZGVmYXVsdFpvbmUgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByZXBhcmVQbGFuKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBsYW4gPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRab25lLnZpcnR1YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGxhbiA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gYXdhaXQgdGhpcy5wbGFuU2VydmljZS5nZXRDYWxpYnJhdGVkUGxhbkZvclpvbmUoXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGxhbikge1xyXG4gICAgICAgICAgICBjb25zdCBzY2FucyA9IGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3Jab25lKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93U2NhblBvaW50c09uUGxhbihzY2Fucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVDYXJvdXNlbCgpIHtcclxuICAgICAgICB0aGlzLmNhcm91c2VsSXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVkaXQoem9uZTogWm9uZSkge1xyXG4gICAgICAgIHRoaXMuem9uZUZvckVkaXQgPSB6b25lO1xyXG4gICAgICAgIGlmICh0aGlzLnpvbmVGb3JFZGl0LmxheWVyICYmIHRoaXMuem9uZUZvckVkaXQubGF5ZXIubmFtZSA9PT0gXCJBVURJT1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNBZGRpbmdBdWRpb1RyYWNrID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBgJHt6b25lLm5hbWV9YCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFkZExvdCgpIHtcclxuICAgICAgICB0aGlzLmlzTXVzZXVtVmlzaXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogXCJOZXdcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFkZE11c2V1bVpvbmUoKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVZpc2l0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogXCJOZXcgTXVzZXVtIEl0aW5lcmFyeVwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWRkQXVkaW9ab25lKHBhcmVudFpvbmU6IFpvbmUpIHtcclxuICAgICAgICB0aGlzLnBhcmVudFpvbmVGb3JBdWRpbyA9IHBhcmVudFpvbmU7XHJcbiAgICAgICAgdGhpcy5pc0FkZGluZ0F1ZGlvVHJhY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogcGFyZW50Wm9uZS5uYW1lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogXCJhZGQtYXVkaW8uYWRkXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25EZWxldGUoem9uZTogWm9uZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiY29uZmlybS5kZWxldGVab25lXCIpO1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hbGVydFxyXG4gICAgICAgIGlmICh3aW5kb3cuY29uZmlybShtZXNzYWdlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlblpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5UGFyZW50Wm9uZSh6b25lLmlkKTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoY2hpbGRyZW5ab25lcy5tYXAoYXN5bmMgKGNoaWxkWm9uZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy56b25lU2VydmljZS5kZWxldGVab25lKGNoaWxkWm9uZS5pZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbFpvbmVzLnNwbGljZSh0aGlzLmFsbFpvbmVzLmluZGV4T2YoY2hpbGRab25lKSwgMSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy56b25lU2VydmljZS5kZWxldGVab25lKHpvbmUuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmFsbFpvbmVzLnNwbGljZSh0aGlzLmFsbFpvbmVzLmluZGV4T2Yoem9uZSksIDEpO1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgY3VycmVudCB6b25lIGZyb20gaXRzIHBhcmVudCBsaXN0XHJcbiAgICAgICAgICAgIGlmICh6b25lLnBhcmVudElEICYmIEFycmF5LmZyb20odGhpcy56b25lc01hcC5rZXlzKCkpLmluY2x1ZGVzKHpvbmUucGFyZW50SUQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB6b25lc0ZvclBhcmVudCA9IHRoaXMuem9uZXNNYXAuZ2V0KHpvbmUucGFyZW50SUQpO1xyXG4gICAgICAgICAgICAgICAgem9uZXNGb3JQYXJlbnQuc3BsaWNlKHpvbmVzRm9yUGFyZW50LmluZGV4T2Yoem9uZSksIDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lc01hcC5zZXQoem9uZS5wYXJlbnRJRCwgem9uZXNGb3JQYXJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVkaXRDb21wbGV0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMubG90SW5kZXhEZXRhaWxzID0gLTE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGxhbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRpbmdab25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0FkZGluZ0F1ZGlvVHJhY2sgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnpvbmVGb3JFZGl0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhcm91c2VsSXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR1cE1lbnVJdGVtcygpO1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Wm9uZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNob3dTY2FuUG9pbnRzT25QbGFuKG5hdmlnYXRpb25zOiBOYXZpZ2F0aW9uW10pIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGxhbikge1xyXG4gICAgICAgICAgICBjb25zdCBkaXZQbGFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNwbGFuRGl2XCIpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICBhd2FpdCBzaG93U2NhblBvaW50c09uUGxhbkluRGl2KHRoaXMuY3VycmVudFBsYW4sIGRpdlBsYW4sIG5hdmlnYXRpb25zKTtcclxuICAgICAgICAgICAgcGFuem9vbShkaXZQbGFuLCB7XHJcbiAgICAgICAgICAgICAgICBib3VuZHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBib3VuZHNQYWRkaW5nOiAwLFxyXG4gICAgICAgICAgICAgICAgbWF4Wm9vbTogMy41LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImN1cnJlbnRTcGFjZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm0tM1wiPlxyXG4gICAgICA8bGliLXRhYi1uYXZpZ2F0aW9uIFttZW51SXRlbXNdPSdtZW51SXRlbXMnIChvbkdvQmFjayk9XCJvbkdvQmFjaygpXCI+PC9saWItdGFiLW5hdmlnYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFpc0VkaXRpbmdab25lICYmICFpc0FkZGluZ0F1ZGlvVHJhY2tcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCIgPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGRlZmF1bHQtem9uZS1saW5lLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgem9uZS1uYW1lXCIgKm5nSWY9XCJkZWZhdWx0Wm9uZVwiPlxyXG4gICAgICAgICAgICAgIHt7ZGVmYXVsdFpvbmUubmFtZX19XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtem9uZS1sYWJlbFwiPnt7IFwid2hvbGUgc3BhY2VcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxsaWItY2hldnJvbiBbY29uZGl0aW9uU2hvd2luZ109XCJkZWZhdWx0U2hvd2luZ1wiIChjbGljayk9XCJvblRvZ2dsZURlZmF1bHRab25lKClcIj48L2xpYi1jaGV2cm9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRlZmF1bHRTaG93aW5nXCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIj57eydUeXBlIG9mIHpvbmUnIHwgdHJhbnNsYXRlfX06IFxyXG4gICAgICAgICAgICAgICAgICB7e2RlZmF1bHRab25lLmxheWVyID8gZGVmYXVsdFpvbmUubGF5ZXIubmFtZSA6IFwiTm8gdHlwZVwiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiZGVmYXVsdFpvbmUuc3VyZmFjZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydTdXJmYWNlJyB8IHRyYW5zbGF0ZX19LCBtPHN1cD4yPC9zdXA+OiB7e2RlZmF1bHRab25lLnN1cmZhY2UgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFkZWZhdWx0Wm9uZS52aXJ0dWFsXCI+e3snU2NhbiBQb2ludHMnIHwgdHJhbnNsYXRlfX06XHJcbiAgICAgICAgICAgICAgICAgIHt7ZGVmYXVsdFpvbmUuc3dlZXBJRHMgPyBkZWZhdWx0Wm9uZS5zd2VlcElEcy5sZW5ndGggOiBcIk5vIHNjYW4gcG9pbnRzXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiB6b25lc01hcCB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFpci5rZXkgPT0gZGVmYXVsdFpvbmUuaWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGg1IHN0eWxlPVwibWFyZ2luOiA4cHg7XCIgKm5nSWY9XCJwYWlyLnZhbHVlLmxlbmd0aCA+IDBcIj57eydDaGlsZHJlbiB6b25lcyd8dHJhbnNsYXRlfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1mbHVzaCBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb3Qgb2YgcGFpci52YWx1ZTsgaW5kZXggYXMgem9uZUluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsb3QubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdXNldW0tbGFiZWxcIiAqbmdJZj1cImxvdC5pc011c2V1bVZpc2l0Wm9uZVwiPnt7IFwiaXRpbmVyYXJ5XCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cInpvbmVJbmRleD09bG90SW5kZXhEZXRhaWxzXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGV0YWlsKHpvbmVJbmRleCwgbG90KVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3snVHlwZSBvZiB6b25lJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fToge3tsb3QubGF5ZXIgPyBsb3QubGF5ZXIubmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHR5cGVcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJsb3Quc3VyZmFjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snU3VyZmFjZScgfCB0cmFuc2xhdGV9fSxtPHN1cD4yPC9zdXA+OiB7e2xvdC5zdXJmYWNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QudmlydHVhbFwiPnt7J1NjYW4gUG9pbnRzJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsb3Quc3dlZXBJRHMgPyBsb3Quc3dlZXBJRHMubGVuZ3RoIDogXCJObyBzY2FuIHBvaW50c1wiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC52aXJ0dWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydab25lIG5vdCB2aXNpYmxlIGluIDNEIHZpc2l0JyB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdChsb3QpXCI+e3snRWRpdCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRBdWRpb1pvbmUobG90KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011c2V1bU1vZHVsZVwiPiB7eydhZGQtYXVkaW8uYWRkJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobG90KVwiPnt7J0RlbGV0ZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vclpvbmVzOyBpbmRleCBhcyBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIj5cclxuICAgICAgICAgICAgICB7e2Zsb29yLm5hbWV9fVxyXG4gICAgICAgICAgICAgIDwhLS0gPHNtYWxsPih7eyBsb3QubWV0YWRhdGEgPyAoJ0NhbGlicmF0ZWQnIHwgdHJhbnNsYXRlKSA6ICgnTm90IGNhbGlicmF0ZWQnIHwgdHJhbnNsYXRlKX19KTwvc21hbGw+IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdXNldW0tbGFiZWxcIiAqbmdJZj1cImZsb29yLmlzTXVzZXVtVmlzaXRab25lXCI+e3sgXCJpdGluZXJhcnlcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxsaWItY2hldnJvbiBbY29uZGl0aW9uU2hvd2luZ109XCJpbmRleD09Zmxvb3JEZXRhaWxzXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGV0YWlsRmxvb3IoaW5kZXgsIGZsb29yKVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5kZXg9PWZsb29yRGV0YWlsc1wiPiAgXHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIj57eydUeXBlIG9mIHpvbmUnIHwgdHJhbnNsYXRlfX06IHt7Zmxvb3IubGF5ZXIgP1xyXG4gICAgICAgICAgICAgICAgICBmbG9vci5sYXllci5uYW1lIDpcclxuICAgICAgICAgICAgICAgICAgXCJObyB0eXBlXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJmbG9vci5zdXJmYWNlXCI+e3snU3VyZmFjZScgfCB0cmFuc2xhdGV9fSwgbTxzdXA+Mjwvc3VwPjpcclxuICAgICAgICAgICAgICAgICAge3tmbG9vci5zdXJmYWNlIH19XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhZmxvb3IudmlydHVhbFwiPnt7J1NjYW4gUG9pbnRzJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICAgICAgICAgICAgICB7e2Zsb29yLnN3ZWVwSURzID8gZmxvb3Iuc3dlZXBJRHMubGVuZ3RoIDogXCJObyBzY2FuIHBvaW50c1wiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiZmxvb3IudmlydHVhbFwiPnt7J1pvbmUgbm90IHZpc2libGUgaW4gM0QgdmlzaXQnIHxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkVkaXQoZmxvb3IpXCI+e3snRWRpdCcgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICBcclxuICAgICAgICAgICAgICA8IS0tIExpc3Qgb2YgY2hpbGRyZW4gem9uZXMgLS0+XHJcbiAgXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiB6b25lc01hcCB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFpci5rZXkgPT0gZmxvb3IuaWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGg1IHN0eWxlPVwibWFyZ2luOiA4cHg7XCIgKm5nSWY9XCJwYWlyLnZhbHVlLmxlbmd0aCA+IDBcIj57eydDaGlsZHJlbiB6b25lcyd8dHJhbnNsYXRlfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1mbHVzaCBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb3Qgb2YgcGFpci52YWx1ZTsgaW5kZXggYXMgem9uZUluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsb3QubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdXNldW0tbGFiZWxcIiAqbmdJZj1cImxvdC5pc011c2V1bVZpc2l0Wm9uZVwiPnt7IFwiaXRpbmVyYXJ5XCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cInpvbmVJbmRleD09bG90SW5kZXhEZXRhaWxzXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGV0YWlsKHpvbmVJbmRleCwgbG90KVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3snVHlwZSBvZiB6b25lJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fToge3tsb3QubGF5ZXIgPyBsb3QubGF5ZXIubmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHR5cGVcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJsb3Quc3VyZmFjZVwiPnt7J1N1cmZhY2UnIHwgdHJhbnNsYXRlfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtPHN1cD4yPC9zdXA+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsb3Quc3VyZmFjZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LnZpcnR1YWxcIj57eydTY2FuIFBvaW50cycgfCB0cmFuc2xhdGV9fTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bG90LnN3ZWVwSURzID8gbG90LnN3ZWVwSURzLmxlbmd0aCA6IFwiTm8gc2NhbiBwb2ludHNcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LnZpcnR1YWwgJiYgbG90LmlzTXVzZXVtVmlzaXRab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydTY2FuIFBvaW50cyB3aXRoIGF1ZGlvJyB8IHRyYW5zbGF0ZX19OiB7eyBsb3QgfCBjb3VudEF1ZGlvU3dlZXBzIHwgYXN5bmN9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwibG90LnZpcnR1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1pvbmUgbm90IHZpc2libGUgaW4gM0QgdmlzaXQnIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KGxvdClcIj57eydFZGl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkFkZEF1ZGlvWm9uZShsb3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVzZXVtTW9kdWxlXCI+IHt7J2FkZC1hdWRpby5hZGQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShsb3QpXCI+e3snRGVsZXRlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gIFxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRMb3QoKVwiPnt7J0FkZCB6b25lJyB8XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRNdXNldW1ab25lKClcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzTXVzZXVtTW9kdWxlXCI+IHt7J0FkZCBtdXNldW0gaXRpbmVyYXJ5JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInBsYW5Jc1Zpc2libGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdQbGFuXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFBsYW5cIj5cclxuICAgICAgICAgICAgPGxpYi1wbGFuLWxlZ2VuZCBbaXNBdWRpb1pvbmVdPVwiZmFsc2VcIj48L2xpYi1wbGFuLWxlZ2VuZD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYW5Db250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zXCIgc3R5bGU9XCJoZWlnaHQ6IDUwMHB4OyB3aWR0aDogMTAwJTtcIiBpZD1cInBsYW5EaXZcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFjdXJyZW50UGxhbiAmJiBwbGFucyAmJiAhbG9hZGluZ1BsYW4gJiYgY3VycmVudFpvbmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIGlkPVwibm8tcGxhblwiICpuZ0lmPVwiIWN1cnJlbnRab25lLnZpcnR1YWwgJiYgIWN1cnJlbnRab25lLmlzTXVsdGlwbGVGbG9vclpvbmVcIj5cclxuICAgICAgICAgICAgICB7eyAnUGxhbiBpcyBub3QgY2FsaWJyYXRlZCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIGlkPVwibm8tcGxhblwiICpuZ0lmPVwiY3VycmVudFpvbmUudmlydHVhbFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdObyBzY2FuIHBvaW50cyBjaG9zZW4nIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIG1zLTNcIiBpZD1cIm5vLXBsYW5cIiAqbmdJZj1cImN1cnJlbnRab25lLmlzTXVsdGlwbGVGbG9vclpvbmVcIj5cclxuICAgICAgICAgICAgICB7eyAnVGhlIHpvbmUgaXMgb24gc2V2ZXJhbCBmbG9vcnMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cImlzRWRpdGluZ1pvbmVcIj5cclxuICAgICAgPGxpYi1hZGQtem9uZSBbem9uZUVkaXRdPVwiem9uZUZvckVkaXRcIiBbc3BhY2VJRF09XCJzcGFjZUlEXCIgW2ltYWdlczM2MF09XCJpbWFnZXMzNjBcIiBbbmF2aWdhdGlvbklEc109XCJuYXZpZ2F0aW9uc1wiXHJcbiAgICAgICAgW3pvbmVzXT1cImFsbFpvbmVzXCIgW2RlZmF1bHRab25lXT1cImRlZmF1bHRab25lXCIgKHVwZGF0ZWRab25lKT1cImVkaXRDb21wbGV0ZWQoJGV2ZW50KVwiIFtpc011c2V1bVZpc2l0XT1cImlzTXVzZXVtVmlzaXRcIj48L2xpYi1hZGQtem9uZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cImlzQWRkaW5nQXVkaW9UcmFja1wiPlxyXG4gICAgICA8bGliLWFkZC1hdWRpby16b25lIFtzcGFjZUlEXT1cInNwYWNlSURcIiBbZGVmYXVsdFpvbmVdPVwiZGVmYXVsdFpvbmVcIiBbcGFyZW50Wm9uZV09XCJwYXJlbnRab25lRm9yQXVkaW9cIiBbem9uZXNdPVwiYWxsWm9uZXNcIiBbY3VycmVudEF1ZGlvWm9uZV09XCJ6b25lRm9yRWRpdFwiXHJcbiAgICAgICh1cGRhdGVkWm9uZSk9XCJlZGl0Q29tcGxldGVkKCRldmVudClcIj48L2xpYi1hZGQtYXVkaW8tem9uZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4iXX0=
|