asap-feed-beta 12.7.2 → 12.7.4

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.
@@ -218,7 +218,7 @@ export class FeedCommentsComponent {
218
218
  * @return {?}
219
219
  */
220
220
  user => user.id));
221
- this.userService.usersChecked({ post_id: this.feed_id, user_id: selected_users, comment, type: 'post' }, { comments: true }).subscribe();
221
+ this.userService.usersChecked({ post_id: this.feed_id, user_id: selected_users, comment, type: 'comment' }, { comments: true }).subscribe();
222
222
  this.onLoadingComment = true;
223
223
  collection.add(data);
224
224
  /** @type {?} */
@@ -585,4 +585,4 @@ if (false) {
585
585
  /** @type {?} */
586
586
  FeedCommentsComponent.prototype.userService;
587
587
  }
588
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1jb21tZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLWNvbW1lbnRzL2ZlZWQtY29tbWVudHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRdkQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBMkJoQyxZQUNTLE1BQWMsRUFDZCxFQUFvQixFQUNwQixXQUE0QixFQUM1QixPQUFxQixFQUNyQixXQUF3QixFQUN4QixXQUF3QjtRQUx4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF2QjFCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFDcEIsa0JBQWEsR0FB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USxNQUFNO1lBSk4sZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixZQUFZO1lBRUosV0FBVztZQUNuQixXQUFXOzs7MkJBVWpCLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dDQUN6QyxTQUFTLFNBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO3lCQUM5QyxTQUFTLFNBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQzt1QkFFdkMsS0FBSztzQkFDTCxLQUFLO21CQUNMLEtBQUs7Ozs7SUFOTiw2Q0FBcUU7O0lBQ3JFLGtEQUErRTs7SUFDL0UsMkNBQWlFOztJQUVqRSx5Q0FBa0I7O0lBQ2xCLHdDQUFpQjs7SUFDakIscUNBQWM7O0lBRWQseUNBQXFCOztJQUNyQixnREFBNEI7O0lBQzVCLGlEQUE2Qjs7SUFDN0IsNkNBQW9COztJQUNwQixnREFBMkI7O0lBQzNCLDhDQUF5Qjs7SUFDekIsd0NBQWU7O0lBQ2Ysc0NBQWE7O0lBQ2IsOENBQXFCOztJQUNyQiw0Q0FBbUI7O0lBQ25CLDhDQUE2Qjs7SUFDN0IsK0NBQThCOztJQUM5QixpREFBZ0M7O0lBQ2hDLDBDQUF5Qjs7SUFDekIsc0NBQW9COztJQUNwQix3Q0FBdUI7O0lBR3JCLHVDQUFxQjs7SUFDckIsbUNBQTJCOztJQUMzQiw0Q0FBbUM7O0lBQ25DLHdDQUE0Qjs7SUFDNUIsNENBQStCOztJQUMvQiw0Q0FBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IEFzYXBGZWVkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FzYXAtZmVlZC5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgcGF0aCB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25zdGFudHMnO1xuaW1wb3J0IHsgR2xvYmFsLCBBc2FwU2VydmljZSB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlZWQtY29tbWVudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlZC1jb21tZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZlZWQtY29tbWVudHMuY29tcG9uZW50LnNjc3MnLCAnLi4vYXNhcC1mZWVkLmJldGEuY29tcG9uZW50ZS5zY3NzJ10sXG4gIHByb3ZpZGVyczogWyBVc2VyU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRDb21tZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRDb21tZW50Jywge3N0YXRpYzogZmFsc2V9KSBpbnB1dENvbW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3JlcGx5SW5wdXRDb21tZW50Jywge3N0YXRpYzogZmFsc2V9KSByZXBseUlucHV0Q29tbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRSZXBseScsIHtzdGF0aWM6IGZhbHNlfSkgaW5wdXRSZXBseTogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBzZXR0aW5ncztcbiAgQElucHV0KCkgZmVlZF9pZDtcbiAgQElucHV0KCkgdXNlcjtcblxuICBwdWJsaWMgY29tbWVudHMgPSBbXTtcbiAgcHVibGljIHJlcGx5aW5nQ29tbWVudCA9IFtdO1xuICBwdWJsaWMgcmVwbHlpbmdSZXNwb25zZSA9IFtdO1xuICBwdWJsaWMgbWVudGlvbnNMaXN0O1xuICBwdWJsaWMgbGltaXRDb21tZW50c1RvID0gMztcbiAgcHVibGljIGxpbWl0UmVwbHlzVG8gPSAxO1xuICBwdWJsaWMgY29tbWVudDtcbiAgcHVibGljIHJlcGx5O1xuICBwdWJsaWMgZWRpdGVkQ29tbWVudDtcbiAgcHVibGljIGVkaXRlZFJlcGx5O1xuICBwdWJsaWMgb25Mb2FkaW5nTGlrZSA9IGZhbHNlO1xuICBwdWJsaWMgb25Mb2FkaW5nUmVwbHkgPSBmYWxzZTtcbiAgcHVibGljIG9uTG9hZGluZ0NvbW1lbnQgPSBmYWxzZTtcbiAgcHVibGljIGlzTWFya2luZyA9IGZhbHNlO1xuICBwdWJsaWMgdXNlcnM6IGFueVtdO1xuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGZlZWRTZXJ2aWNlOiBBc2FwRmVlZFNlcnZpY2UsXG4gICAgcHVibGljIHNlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgYXNhcFNlcnZpY2U6IEFzYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldENvbW1lbnRzKHRoaXMuZmVlZF9pZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tbWVudHMoZmVlZF9pZCkge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAuZG9jKGZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnLCAocmVmOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gcmVmLm9yZGVyQnkoXCJ1cGRhdGVkX2F0XCIsIFwiZGVzY1wiKTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfSk7XG5cblxuICAgIGNvbGxlY3Rpb24uc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKChjb21tZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY29tbWVudHMgPSBbXTtcbiAgICAgIGNvbW1lbnQubWFwKGl0ZW0gPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IGl0ZW0ucGF5bG9hZC5kb2MuZGF0YSgpO1xuICAgICAgICBkYXRhLmlkID0gaXRlbS5wYXlsb2FkLmRvYy5pZDtcbiAgICAgICAgZGF0YS5saWtlRm9yTWUgPSBmYWxzZTtcbiAgICAgICAgZGF0YS5saW1pdFJlcGx5c1RvID0gMDtcblxuICAgICAgICBjb25zdCBsaWtlc0NvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgICAgLmRvYyhmZWVkX2lkKVxuICAgICAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAgICAgLmRvYyhkYXRhLmlkKVxuICAgICAgICAgIC5jb2xsZWN0aW9uKCdsaWtlJyk7XG5cblxuICAgICAgICBsaWtlc0NvbGxlY3Rpb24uc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKGxpa2UgPT4ge1xuICAgICAgICAgIGRhdGEubGlrZXMgPSBbXTtcbiAgICAgICAgICBsaWtlLm1hcChzdWJJdGVtTGlrZSA9PiB7XG4gICAgICAgICAgICBsZXQgbGlrZURhdGEgPSBzdWJJdGVtTGlrZS5wYXlsb2FkLmRvYy5kYXRhKCk7XG4gICAgICAgICAgICBsaWtlRGF0YS5pZCA9IHN1Ykl0ZW1MaWtlLnBheWxvYWQuZG9jWydpZCddO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpKSB7XG4gICAgICAgICAgICAgIGlmIChsaWtlRGF0YS51c2VyX2luZm8gJiYgbGlrZURhdGEudXNlcl9pbmZvLmlkID09PSB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuaWQpIHtcbiAgICAgICAgICAgICAgICBkYXRhLmxpa2VGb3JNZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZGF0YS5saWtlRm9yTWVJRCA9IGxpa2VEYXRhLmlkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEubGlrZXMucHVzaChsaWtlRGF0YSk7XG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVwbHlDb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgICAgIC5kb2MoZmVlZF9pZClcbiAgICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAgIC5kb2MoZGF0YS5pZClcbiAgICAgICAgICAuY29sbGVjdGlvbigncmVwbHknLCByZWYgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlZi5vcmRlckJ5KCd1cGRhdGVkX2F0JywgJ2Rlc2MnKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXBseUNvbGxlY3Rpb24uc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKHJlcGx5ID0+IHtcbiAgICAgICAgICBkYXRhLnJlcGx5cyA9IFtdO1xuICAgICAgICAgIHJlcGx5Lm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlcGx5RGF0YSA9IHN1Ykl0ZW0ucGF5bG9hZC5kb2MuZGF0YSgpO1xuICAgICAgICAgICAgcmVwbHlEYXRhLmlkID0gc3ViSXRlbS5wYXlsb2FkLmRvY1snaWQnXTtcblxuICAgICAgICAgICAgZGF0YS5yZXBseXMucHVzaChyZXBseURhdGEpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29tbWVudHMucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uUmVwbHlDb21tZW50KGkpIHtcbiAgICBpZiAoIXRoaXMucmVwbHlpbmdDb21tZW50W2ldKSB7XG4gICAgICB0aGlzLnJlcGx5aW5nQ29tbWVudFtpXSA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yZXBseWluZ0NvbW1lbnRbaV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25SZXBseVJlc3BvbnNlKGkpIHtcbiAgICBpZiAoIXRoaXMucmVwbHlpbmdSZXNwb25zZVtpXSkge1xuICAgICAgdGhpcy5yZXBseWluZ1Jlc3BvbnNlW2ldID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnJlcGx5aW5nUmVzcG9uc2VbaV0gPSBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTaG93QWxsUmVwbHlSZXNwb25zZShjb21tZW50SWR4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb21tZW50c1tjb21tZW50SWR4XS5saW1pdFJlcGx5c1RvID09PSAwKSB7XG4gICAgICB0aGlzLmNvbW1lbnRzW2NvbW1lbnRJZHhdLmxpbWl0UmVwbHlzVG8gPSB0aGlzLmNvbW1lbnRzW2NvbW1lbnRJZHhdLnJlcGx5cy5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tbWVudHNbY29tbWVudElkeF0ubGltaXRSZXBseXNUbyA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVubWVudGlvblJlbW92ZWRVc2Vycyhjb21tZW50OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZW50aW9uczogYW55ID0gW107XG4gICAgaWYgKHRoaXMubWVudGlvbnNMaXN0ICYmIGNvbW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgdXNlciBvZiB0aGlzLm1lbnRpb25zTGlzdCkge1xuICAgICAgICBpZiAoY29tbWVudC5pbmNsdWRlcyh1c2VyLm5hbWUpKSB7XG4gICAgICAgICAgbWVudGlvbnMucHVzaCh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm1lbnRpb25zTGlzdCA9IG1lbnRpb25zO1xuICB9XG5cbiAgcHVibGljIHNlbmRDb21tZW50KGNvbW1lbnQpIHtcbiAgICB0aGlzLnVubWVudGlvblJlbW92ZWRVc2Vycyhjb21tZW50KTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGNvbW1lbnQ6IGNvbW1lbnQsXG4gICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgY3JlYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgIHVzZXJfaW5mbzoge1xuICAgICAgICBpZDogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkLFxuICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKTtcblxuICAgIGlmIChjb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkX3VzZXJzID0gdGhpcy5tZW50aW9uc0xpc3QubWFwKHVzZXIgPT4gdXNlci5pZCk7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJzQ2hlY2tlZCh7cG9zdF9pZDogdGhpcy5mZWVkX2lkLCB1c2VyX2lkOiBzZWxlY3RlZF91c2VycywgY29tbWVudCwgdHlwZTogJ3Bvc3QnfSwge2NvbW1lbnRzOiB0cnVlfSkuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMub25Mb2FkaW5nQ29tbWVudCA9IHRydWU7XG4gICAgICBjb2xsZWN0aW9uLmFkZChkYXRhKTtcblxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0ge1xuICAgICAgICBzb3VyY2U6J3dlYicsXG4gICAgICAgIHRpdGxlOiBgTm92byBjb21lbnTDoXJpb2AsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZX06ICR7Y29tbWVudH1gLFxuICAgICAgICB1c2VyOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCksXG4gICAgICAgIGNsaWVudF9pZDp0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuY2xpZW50X2lkLFxuICAgICAgICByZWRpcmVjdDogYC9wb3J0YWwvJHt0aGlzLmZlZWRfaWR9YFxuICAgICAgfVxuXG4gICAgICB0aGlzLnNlcnZpY2Uuc2VuZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHRoaXMudXNlciwgJ2ZlZWQnKTtcblxuICAgICAgdGhpcy5jb21tZW50ID0gXCJcIjtcbiAgICAgIHRoaXMubWVudGlvbnNMaXN0ID0gW107XG4gICAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVwbHlDb21tZW50KGNvbW1lbnRfaWQsIGNvbW1lbnQsIHVzZXJfaW5mbywgaSkge1xuICAgIHRoaXMudW5tZW50aW9uUmVtb3ZlZFVzZXJzKGNvbW1lbnQpO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgY29tbWVudDogY29tbWVudCxcbiAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgdXNlcl9pbmZvOiB7XG4gICAgICAgIGlkOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuaWQsXG4gICAgICAgIG5hbWU6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5uYW1lLFxuICAgICAgICBwaWN0dXJlOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkucGljdHVyZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25Mb2FkaW5nUmVwbHkgPSB0cnVlO1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgICAgLmNvbGxlY3Rpb24oJ3JlcGx5Jyk7XG5cbiAgICAgIGNvbGxlY3Rpb24uYWRkKGRhdGEpO1xuXG4gICAgICBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgICAgIHNvdXJjZTond2ViJyxcbiAgICAgICAgdGl0bGU6IGBOb3ZhIFJlc3Bvc3RhYCxcbiAgICAgICAgZGVzY3JpcHRpb246IGAke3RoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5uYW1lfSByZXNwb25kZXU6ICR7Y29tbWVudH1gLFxuICAgICAgICBjbGllbnRfaWQ6dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmNsaWVudF9pZCxcbiAgICAgICAgdXNlcjogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLFxuICAgICAgICByZWRpcmVjdDogYC9wb3J0YWwvJHt0aGlzLmZlZWRfaWR9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZWxlY3RlZF91c2VycyA9IHRoaXMubWVudGlvbnNMaXN0Lm1hcCh1c2VyID0+IHVzZXIuaWQpO1xuICAgICAgdGhpcy51c2VyU2VydmljZS51c2Vyc0NoZWNrZWQoe3Bvc3RfaWQ6IHRoaXMuZmVlZF9pZCwgdXNlcl9pZDogc2VsZWN0ZWRfdXNlcnN9LCB7Y29tbWVudHM6IHRydWV9KS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc2VydmljZS5zZW5kTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgdXNlcl9pbmZvLCAnZmVlZCcpO1xuXG4gICAgICB0aGlzLnJlcGx5ID0gXCJcIjtcbiAgICAgIHRoaXMub25Mb2FkaW5nUmVwbHkgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVwbHlpbmdDb21tZW50W2ldID0gZmFsc2U7XG4gICAgICB0aGlzLnJlcGx5aW5nUmVzcG9uc2UgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlUmVwbHkoY29tbWVudF9pZCwgcmVwbHlfaWQpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgLmRvYyhjb21tZW50X2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ3JlcGx5JylcbiAgICAgIC5kb2MocmVwbHlfaWQpO1xuXG4gICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVDb21tZW50KGNvbW1lbnRfaWQpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgLmRvYyhjb21tZW50X2lkKTtcblxuICAgIGNvbGxlY3Rpb24uZGVsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZExpa2VDb21tZW50KGNvbW1lbnRfaWQsIGxpa2VfaWQgPSBudWxsLCBpdGVtKSB7XG4gICAgdGhpcy5vbkxvYWRpbmdMaWtlID0gdHJ1ZTtcbiAgICBpZiAoIWl0ZW0ubGlrZUZvck1lKSB7XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgICAgdXNlcl9pbmZvOiB7XG4gICAgICAgICAgaWQ6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5pZCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgICBwaWN0dXJlOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkucGljdHVyZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdsaWtlJyk7XG5cbiAgICAgIGNvbGxlY3Rpb24uYWRkKGRhdGEpO1xuXG5cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICAgICAgc291cmNlOid3ZWInLFxuICAgICAgICB0aXRsZTogYE5vdmEgQ3VydGlkYWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZX0gY3VydGl1IHNldSBjb21lbnTDoXJpbzogJHtpdGVtLmNvbW1lbnR9YCxcbiAgICAgICAgY2xpZW50X2lkOnRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5jbGllbnRfaWQsXG4gICAgICAgIHVzZXI6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSxcbiAgICAgICAgcmVkaXJlY3Q6IGAvcG9ydGFsLyR7dGhpcy5mZWVkX2lkfWBcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXJ2aWNlLnNlbmROb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBpdGVtLnVzZXJfaW5mbywgJ2ZlZWQnKTtcblxuICAgICAgaXRlbS5saWtlRm9yTWUgPSB0cnVlO1xuICAgICAgdGhpcy5vbkxvYWRpbmdMaWtlID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgICAgLmNvbGxlY3Rpb24oJ2xpa2UnKVxuICAgICAgICAuZG9jKGxpa2VfaWQpO1xuXG4gICAgICBjb2xsZWN0aW9uLmRlbGV0ZSgpO1xuICAgICAgaXRlbS5saWtlRm9yTWUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25Mb2FkaW5nTGlrZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkTW9yZUNvbW1lbnRzKCkge1xuICAgIHRoaXMubGltaXRDb21tZW50c1RvID0gdGhpcy5saW1pdENvbW1lbnRzVG8gKyAzO1xuICB9XG5cbiAgcHVibGljIGxvYWRNb3JlUmVwbHlzKGl0ZW0pIHtcbiAgICBpdGVtLmxpbWl0UmVwbHlzVG8gPSBpdGVtLmxpbWl0UmVwbHlzVG8gKyAzO1xuICB9XG5cbiAgcHVibGljIGxpbmtpZnkoc3RyKSB7XG4gICAgdmFyIHJlOiBhbnk7XG4gICAgcmUgPSBbXG4gICAgICBcIlxcXFxiKCg/Omh0dHBzP3xmdHApOi8vW15cXFxcc1xcXCInPD5dKylcXFxcYlwiLFxuICAgICAgXCJcXFxcYih3d3dcXFxcLlteXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIoXFxcXHdbXFxcXHcuKy1dKkBbXFxcXHcuLV0rXFxcXC5bYS16XXsyLDZ9KVxcXFxiXCIsXG4gICAgICBcIiMoW2EtejAtOV0rKVwiXTtcbiAgICByZSA9IG5ldyBSZWdFeHAocmUuam9pbignfCcpLCBcImdpXCIpO1xuXG4gICAgaWYgKHN0cikge1xuICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2gsIHVybCwgd3d3LCBtYWlsLCB0d2l0bGVyKSB7XG4gICAgICAgIGlmICh1cmwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgdGFyZ2V0PSdfYmxhbmsnIChjbGljayk9J3JlZGlyZWN0TmV3TGluayh1cmwpJyBocmVmPVxcXCJcIiArIHVybCArIFwiXFxcIj5cIiArIHVybCArIFwiPC9hPlwiO1xuICAgICAgICBpZiAod3d3KVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcImh0dHA6Ly9cIiArIHd3dyArIFwiXFxcIj5cIiArIHd3dyArIFwiPC9hPlwiO1xuICAgICAgICBpZiAobWFpbClcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCIjPC9hPlwiO1xuICAgICAgICBpZiAodHdpdGxlcilcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJwb3J0YWwvc2VhcmNoL1wiICsgZW5jb2RlVVJJQ29tcG9uZW50KCcjJyArIHR3aXRsZXIpICsgXCJcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcbiAgICAgICAgLy8gcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiI1xcXCI+I1wiICsgdHdpdGxlciArIFwiPC9hPlwiO1xuXG4gICAgICAgIC8vIHNob3VsZG50IGdldCBoZXJlLCBidXQganVzdCBpbiBjYXNlXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRSZXBseShyZXBseSkge1xuICAgIHRoaXMuZWRpdGVkUmVwbHkgPSByZXBseS5jb21tZW50O1xuICAgIGlmIChyZXBseS5vbkVkaXQpIHtcbiAgICAgIHJlcGx5Lm9uRWRpdCA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJlcGx5Lm9uRWRpdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRWRpdENvbW1lbnQoY29tbWVudCkge1xuICAgIHRoaXMuZWRpdGVkQ29tbWVudCA9IGNvbW1lbnQuY29tbWVudDtcblxuICAgIGlmIChjb21tZW50Lm9uRWRpdCkge1xuICAgICAgY29tbWVudC5vbkVkaXQgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb21tZW50Lm9uRWRpdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbW1lbnQoaWQsIGNvbW1lbnQpIHtcbiAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSB0cnVlO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgY29tbWVudDogdGhpcy5lZGl0ZWRDb21tZW50LFxuICAgICAgZWRpdGVkOiB0cnVlLFxuICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAuZG9jKHRoaXMuZmVlZF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAuZG9jKGlkKTtcblxuICAgIGlmIChjb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbGxlY3Rpb24udXBkYXRlKGRhdGEpO1xuICAgICAgdGhpcy5lZGl0ZWRDb21tZW50ID0gXCJcIjtcbiAgICAgIHRoaXMub25Mb2FkaW5nQ29tbWVudCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSZXBseShjb21tZW50X2lkLCBvbGRfcmVwbHksIHJlcGx5KSB7XG4gICAgdGhpcy5vbkxvYWRpbmdSZXBseSA9IHRydWU7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBjb21tZW50OiByZXBseSxcbiAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdyZXBseScpXG4gICAgICAuZG9jKG9sZF9yZXBseS5pZCk7XG4gICAgY29sbGVjdGlvbi51cGRhdGUoZGF0YSk7XG4gICAgdGhpcy5lZGl0ZWRDb21tZW50ID0gXCJcIjtcbiAgICB0aGlzLm9uTG9hZGluZ1JlcGx5ID0gZmFsc2U7XG4gICAgb2xkX3JlcGx5Lm9uRWRpdCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG1lbnRpb25Vc2VyKHVzZXI6IGFueSkge1xuICAgIHRoaXMubWVudGlvbnNMaXN0ID0gdGhpcy5tZW50aW9uc0xpc3QgfHwgW107XG4gICAgdGhpcy5tZW50aW9uc0xpc3QucHVzaCh1c2VyKTtcbiAgfVxuXG59XG4iXX0=
588
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1jb21tZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLWNvbW1lbnRzL2ZlZWQtY29tbWVudHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRdkQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBMkJoQyxZQUNTLE1BQWMsRUFDZCxFQUFvQixFQUNwQixXQUE0QixFQUM1QixPQUFxQixFQUNyQixXQUF3QixFQUN4QixXQUF3QjtRQUx4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF2QjFCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFDcEIsa0JBQWEsR0FB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USxNQUFNO1lBSk4sZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixZQUFZO1lBRUosV0FBVztZQUNuQixXQUFXOzs7MkJBVWpCLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dDQUN6QyxTQUFTLFNBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO3lCQUM5QyxTQUFTLFNBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQzt1QkFFdkMsS0FBSztzQkFDTCxLQUFLO21CQUNMLEtBQUs7Ozs7SUFOTiw2Q0FBcUU7O0lBQ3JFLGtEQUErRTs7SUFDL0UsMkNBQWlFOztJQUVqRSx5Q0FBa0I7O0lBQ2xCLHdDQUFpQjs7SUFDakIscUNBQWM7O0lBRWQseUNBQXFCOztJQUNyQixnREFBNEI7O0lBQzVCLGlEQUE2Qjs7SUFDN0IsNkNBQW9COztJQUNwQixnREFBMkI7O0lBQzNCLDhDQUF5Qjs7SUFDekIsd0NBQWU7O0lBQ2Ysc0NBQWE7O0lBQ2IsOENBQXFCOztJQUNyQiw0Q0FBbUI7O0lBQ25CLDhDQUE2Qjs7SUFDN0IsK0NBQThCOztJQUM5QixpREFBZ0M7O0lBQ2hDLDBDQUF5Qjs7SUFDekIsc0NBQW9COztJQUNwQix3Q0FBdUI7O0lBR3JCLHVDQUFxQjs7SUFDckIsbUNBQTJCOztJQUMzQiw0Q0FBbUM7O0lBQ25DLHdDQUE0Qjs7SUFDNUIsNENBQStCOztJQUMvQiw0Q0FBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IEFzYXBGZWVkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FzYXAtZmVlZC5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgcGF0aCB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25zdGFudHMnO1xuaW1wb3J0IHsgR2xvYmFsLCBBc2FwU2VydmljZSB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlZWQtY29tbWVudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlZC1jb21tZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZlZWQtY29tbWVudHMuY29tcG9uZW50LnNjc3MnLCAnLi4vYXNhcC1mZWVkLmJldGEuY29tcG9uZW50ZS5zY3NzJ10sXG4gIHByb3ZpZGVyczogWyBVc2VyU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRDb21tZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRDb21tZW50Jywge3N0YXRpYzogZmFsc2V9KSBpbnB1dENvbW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3JlcGx5SW5wdXRDb21tZW50Jywge3N0YXRpYzogZmFsc2V9KSByZXBseUlucHV0Q29tbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRSZXBseScsIHtzdGF0aWM6IGZhbHNlfSkgaW5wdXRSZXBseTogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBzZXR0aW5ncztcbiAgQElucHV0KCkgZmVlZF9pZDtcbiAgQElucHV0KCkgdXNlcjtcblxuICBwdWJsaWMgY29tbWVudHMgPSBbXTtcbiAgcHVibGljIHJlcGx5aW5nQ29tbWVudCA9IFtdO1xuICBwdWJsaWMgcmVwbHlpbmdSZXNwb25zZSA9IFtdO1xuICBwdWJsaWMgbWVudGlvbnNMaXN0O1xuICBwdWJsaWMgbGltaXRDb21tZW50c1RvID0gMztcbiAgcHVibGljIGxpbWl0UmVwbHlzVG8gPSAxO1xuICBwdWJsaWMgY29tbWVudDtcbiAgcHVibGljIHJlcGx5O1xuICBwdWJsaWMgZWRpdGVkQ29tbWVudDtcbiAgcHVibGljIGVkaXRlZFJlcGx5O1xuICBwdWJsaWMgb25Mb2FkaW5nTGlrZSA9IGZhbHNlO1xuICBwdWJsaWMgb25Mb2FkaW5nUmVwbHkgPSBmYWxzZTtcbiAgcHVibGljIG9uTG9hZGluZ0NvbW1lbnQgPSBmYWxzZTtcbiAgcHVibGljIGlzTWFya2luZyA9IGZhbHNlO1xuICBwdWJsaWMgdXNlcnM6IGFueVtdO1xuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGZlZWRTZXJ2aWNlOiBBc2FwRmVlZFNlcnZpY2UsXG4gICAgcHVibGljIHNlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgYXNhcFNlcnZpY2U6IEFzYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldENvbW1lbnRzKHRoaXMuZmVlZF9pZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tbWVudHMoZmVlZF9pZCkge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAuZG9jKGZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnLCAocmVmOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gcmVmLm9yZGVyQnkoXCJ1cGRhdGVkX2F0XCIsIFwiZGVzY1wiKTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfSk7XG5cblxuICAgIGNvbGxlY3Rpb24uc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKChjb21tZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY29tbWVudHMgPSBbXTtcbiAgICAgIGNvbW1lbnQubWFwKGl0ZW0gPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IGl0ZW0ucGF5bG9hZC5kb2MuZGF0YSgpO1xuICAgICAgICBkYXRhLmlkID0gaXRlbS5wYXlsb2FkLmRvYy5pZDtcbiAgICAgICAgZGF0YS5saWtlRm9yTWUgPSBmYWxzZTtcbiAgICAgICAgZGF0YS5saW1pdFJlcGx5c1RvID0gMDtcblxuICAgICAgICBjb25zdCBsaWtlc0NvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgICAgLmRvYyhmZWVkX2lkKVxuICAgICAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAgICAgLmRvYyhkYXRhLmlkKVxuICAgICAgICAgIC5jb2xsZWN0aW9uKCdsaWtlJyk7XG5cblxuICAgICAgICBsaWtlc0NvbGxlY3Rpb24uc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKGxpa2UgPT4ge1xuICAgICAgICAgIGRhdGEubGlrZXMgPSBbXTtcbiAgICAgICAgICBsaWtlLm1hcChzdWJJdGVtTGlrZSA9PiB7XG4gICAgICAgICAgICBsZXQgbGlrZURhdGEgPSBzdWJJdGVtTGlrZS5wYXlsb2FkLmRvYy5kYXRhKCk7XG4gICAgICAgICAgICBsaWtlRGF0YS5pZCA9IHN1Ykl0ZW1MaWtlLnBheWxvYWQuZG9jWydpZCddO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpKSB7XG4gICAgICAgICAgICAgIGlmIChsaWtlRGF0YS51c2VyX2luZm8gJiYgbGlrZURhdGEudXNlcl9pbmZvLmlkID09PSB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuaWQpIHtcbiAgICAgICAgICAgICAgICBkYXRhLmxpa2VGb3JNZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZGF0YS5saWtlRm9yTWVJRCA9IGxpa2VEYXRhLmlkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEubGlrZXMucHVzaChsaWtlRGF0YSk7XG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVwbHlDb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgICAgIC5kb2MoZmVlZF9pZClcbiAgICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAgIC5kb2MoZGF0YS5pZClcbiAgICAgICAgICAuY29sbGVjdGlvbigncmVwbHknLCByZWYgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlZi5vcmRlckJ5KCd1cGRhdGVkX2F0JywgJ2Rlc2MnKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXBseUNvbGxlY3Rpb24uc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKHJlcGx5ID0+IHtcbiAgICAgICAgICBkYXRhLnJlcGx5cyA9IFtdO1xuICAgICAgICAgIHJlcGx5Lm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlcGx5RGF0YSA9IHN1Ykl0ZW0ucGF5bG9hZC5kb2MuZGF0YSgpO1xuICAgICAgICAgICAgcmVwbHlEYXRhLmlkID0gc3ViSXRlbS5wYXlsb2FkLmRvY1snaWQnXTtcblxuICAgICAgICAgICAgZGF0YS5yZXBseXMucHVzaChyZXBseURhdGEpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29tbWVudHMucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uUmVwbHlDb21tZW50KGkpIHtcbiAgICBpZiAoIXRoaXMucmVwbHlpbmdDb21tZW50W2ldKSB7XG4gICAgICB0aGlzLnJlcGx5aW5nQ29tbWVudFtpXSA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yZXBseWluZ0NvbW1lbnRbaV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25SZXBseVJlc3BvbnNlKGkpIHtcbiAgICBpZiAoIXRoaXMucmVwbHlpbmdSZXNwb25zZVtpXSkge1xuICAgICAgdGhpcy5yZXBseWluZ1Jlc3BvbnNlW2ldID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnJlcGx5aW5nUmVzcG9uc2VbaV0gPSBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTaG93QWxsUmVwbHlSZXNwb25zZShjb21tZW50SWR4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb21tZW50c1tjb21tZW50SWR4XS5saW1pdFJlcGx5c1RvID09PSAwKSB7XG4gICAgICB0aGlzLmNvbW1lbnRzW2NvbW1lbnRJZHhdLmxpbWl0UmVwbHlzVG8gPSB0aGlzLmNvbW1lbnRzW2NvbW1lbnRJZHhdLnJlcGx5cy5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tbWVudHNbY29tbWVudElkeF0ubGltaXRSZXBseXNUbyA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVubWVudGlvblJlbW92ZWRVc2Vycyhjb21tZW50OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZW50aW9uczogYW55ID0gW107XG4gICAgaWYgKHRoaXMubWVudGlvbnNMaXN0ICYmIGNvbW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgdXNlciBvZiB0aGlzLm1lbnRpb25zTGlzdCkge1xuICAgICAgICBpZiAoY29tbWVudC5pbmNsdWRlcyh1c2VyLm5hbWUpKSB7XG4gICAgICAgICAgbWVudGlvbnMucHVzaCh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm1lbnRpb25zTGlzdCA9IG1lbnRpb25zO1xuICB9XG5cbiAgcHVibGljIHNlbmRDb21tZW50KGNvbW1lbnQpIHtcbiAgICB0aGlzLnVubWVudGlvblJlbW92ZWRVc2Vycyhjb21tZW50KTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGNvbW1lbnQ6IGNvbW1lbnQsXG4gICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgY3JlYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgIHVzZXJfaW5mbzoge1xuICAgICAgICBpZDogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkLFxuICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKTtcblxuICAgIGlmIChjb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkX3VzZXJzID0gdGhpcy5tZW50aW9uc0xpc3QubWFwKHVzZXIgPT4gdXNlci5pZCk7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJzQ2hlY2tlZCh7cG9zdF9pZDogdGhpcy5mZWVkX2lkLCB1c2VyX2lkOiBzZWxlY3RlZF91c2VycywgY29tbWVudCwgdHlwZTogJ2NvbW1lbnQnfSwge2NvbW1lbnRzOiB0cnVlfSkuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMub25Mb2FkaW5nQ29tbWVudCA9IHRydWU7XG4gICAgICBjb2xsZWN0aW9uLmFkZChkYXRhKTtcblxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0ge1xuICAgICAgICBzb3VyY2U6J3dlYicsXG4gICAgICAgIHRpdGxlOiBgTm92byBjb21lbnTDoXJpb2AsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZX06ICR7Y29tbWVudH1gLFxuICAgICAgICB1c2VyOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCksXG4gICAgICAgIGNsaWVudF9pZDp0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuY2xpZW50X2lkLFxuICAgICAgICByZWRpcmVjdDogYC9wb3J0YWwvJHt0aGlzLmZlZWRfaWR9YFxuICAgICAgfVxuXG4gICAgICB0aGlzLnNlcnZpY2Uuc2VuZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHRoaXMudXNlciwgJ2ZlZWQnKTtcblxuICAgICAgdGhpcy5jb21tZW50ID0gXCJcIjtcbiAgICAgIHRoaXMubWVudGlvbnNMaXN0ID0gW107XG4gICAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVwbHlDb21tZW50KGNvbW1lbnRfaWQsIGNvbW1lbnQsIHVzZXJfaW5mbywgaSkge1xuICAgIHRoaXMudW5tZW50aW9uUmVtb3ZlZFVzZXJzKGNvbW1lbnQpO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgY29tbWVudDogY29tbWVudCxcbiAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgdXNlcl9pbmZvOiB7XG4gICAgICAgIGlkOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuaWQsXG4gICAgICAgIG5hbWU6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5uYW1lLFxuICAgICAgICBwaWN0dXJlOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkucGljdHVyZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25Mb2FkaW5nUmVwbHkgPSB0cnVlO1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgICAgLmNvbGxlY3Rpb24oJ3JlcGx5Jyk7XG5cbiAgICAgIGNvbGxlY3Rpb24uYWRkKGRhdGEpO1xuXG4gICAgICBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgICAgIHNvdXJjZTond2ViJyxcbiAgICAgICAgdGl0bGU6IGBOb3ZhIFJlc3Bvc3RhYCxcbiAgICAgICAgZGVzY3JpcHRpb246IGAke3RoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5uYW1lfSByZXNwb25kZXU6ICR7Y29tbWVudH1gLFxuICAgICAgICBjbGllbnRfaWQ6dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmNsaWVudF9pZCxcbiAgICAgICAgdXNlcjogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLFxuICAgICAgICByZWRpcmVjdDogYC9wb3J0YWwvJHt0aGlzLmZlZWRfaWR9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZWxlY3RlZF91c2VycyA9IHRoaXMubWVudGlvbnNMaXN0Lm1hcCh1c2VyID0+IHVzZXIuaWQpO1xuICAgICAgdGhpcy51c2VyU2VydmljZS51c2Vyc0NoZWNrZWQoe3Bvc3RfaWQ6IHRoaXMuZmVlZF9pZCwgdXNlcl9pZDogc2VsZWN0ZWRfdXNlcnN9LCB7Y29tbWVudHM6IHRydWV9KS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc2VydmljZS5zZW5kTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgdXNlcl9pbmZvLCAnZmVlZCcpO1xuXG4gICAgICB0aGlzLnJlcGx5ID0gXCJcIjtcbiAgICAgIHRoaXMub25Mb2FkaW5nUmVwbHkgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVwbHlpbmdDb21tZW50W2ldID0gZmFsc2U7XG4gICAgICB0aGlzLnJlcGx5aW5nUmVzcG9uc2UgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlUmVwbHkoY29tbWVudF9pZCwgcmVwbHlfaWQpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgLmRvYyhjb21tZW50X2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ3JlcGx5JylcbiAgICAgIC5kb2MocmVwbHlfaWQpO1xuXG4gICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVDb21tZW50KGNvbW1lbnRfaWQpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgLmRvYyhjb21tZW50X2lkKTtcblxuICAgIGNvbGxlY3Rpb24uZGVsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZExpa2VDb21tZW50KGNvbW1lbnRfaWQsIGxpa2VfaWQgPSBudWxsLCBpdGVtKSB7XG4gICAgdGhpcy5vbkxvYWRpbmdMaWtlID0gdHJ1ZTtcbiAgICBpZiAoIWl0ZW0ubGlrZUZvck1lKSB7XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgICAgdXNlcl9pbmZvOiB7XG4gICAgICAgICAgaWQ6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5pZCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgICBwaWN0dXJlOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkucGljdHVyZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdsaWtlJyk7XG5cbiAgICAgIGNvbGxlY3Rpb24uYWRkKGRhdGEpO1xuXG5cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICAgICAgc291cmNlOid3ZWInLFxuICAgICAgICB0aXRsZTogYE5vdmEgQ3VydGlkYWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZX0gY3VydGl1IHNldSBjb21lbnTDoXJpbzogJHtpdGVtLmNvbW1lbnR9YCxcbiAgICAgICAgY2xpZW50X2lkOnRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5jbGllbnRfaWQsXG4gICAgICAgIHVzZXI6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSxcbiAgICAgICAgcmVkaXJlY3Q6IGAvcG9ydGFsLyR7dGhpcy5mZWVkX2lkfWBcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXJ2aWNlLnNlbmROb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBpdGVtLnVzZXJfaW5mbywgJ2ZlZWQnKTtcblxuICAgICAgaXRlbS5saWtlRm9yTWUgPSB0cnVlO1xuICAgICAgdGhpcy5vbkxvYWRpbmdMaWtlID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgICAgLmNvbGxlY3Rpb24oJ2xpa2UnKVxuICAgICAgICAuZG9jKGxpa2VfaWQpO1xuXG4gICAgICBjb2xsZWN0aW9uLmRlbGV0ZSgpO1xuICAgICAgaXRlbS5saWtlRm9yTWUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25Mb2FkaW5nTGlrZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkTW9yZUNvbW1lbnRzKCkge1xuICAgIHRoaXMubGltaXRDb21tZW50c1RvID0gdGhpcy5saW1pdENvbW1lbnRzVG8gKyAzO1xuICB9XG5cbiAgcHVibGljIGxvYWRNb3JlUmVwbHlzKGl0ZW0pIHtcbiAgICBpdGVtLmxpbWl0UmVwbHlzVG8gPSBpdGVtLmxpbWl0UmVwbHlzVG8gKyAzO1xuICB9XG5cbiAgcHVibGljIGxpbmtpZnkoc3RyKSB7XG4gICAgdmFyIHJlOiBhbnk7XG4gICAgcmUgPSBbXG4gICAgICBcIlxcXFxiKCg/Omh0dHBzP3xmdHApOi8vW15cXFxcc1xcXCInPD5dKylcXFxcYlwiLFxuICAgICAgXCJcXFxcYih3d3dcXFxcLlteXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIoXFxcXHdbXFxcXHcuKy1dKkBbXFxcXHcuLV0rXFxcXC5bYS16XXsyLDZ9KVxcXFxiXCIsXG4gICAgICBcIiMoW2EtejAtOV0rKVwiXTtcbiAgICByZSA9IG5ldyBSZWdFeHAocmUuam9pbignfCcpLCBcImdpXCIpO1xuXG4gICAgaWYgKHN0cikge1xuICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2gsIHVybCwgd3d3LCBtYWlsLCB0d2l0bGVyKSB7XG4gICAgICAgIGlmICh1cmwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgdGFyZ2V0PSdfYmxhbmsnIChjbGljayk9J3JlZGlyZWN0TmV3TGluayh1cmwpJyBocmVmPVxcXCJcIiArIHVybCArIFwiXFxcIj5cIiArIHVybCArIFwiPC9hPlwiO1xuICAgICAgICBpZiAod3d3KVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcImh0dHA6Ly9cIiArIHd3dyArIFwiXFxcIj5cIiArIHd3dyArIFwiPC9hPlwiO1xuICAgICAgICBpZiAobWFpbClcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCIjPC9hPlwiO1xuICAgICAgICBpZiAodHdpdGxlcilcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJwb3J0YWwvc2VhcmNoL1wiICsgZW5jb2RlVVJJQ29tcG9uZW50KCcjJyArIHR3aXRsZXIpICsgXCJcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcbiAgICAgICAgLy8gcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiI1xcXCI+I1wiICsgdHdpdGxlciArIFwiPC9hPlwiO1xuXG4gICAgICAgIC8vIHNob3VsZG50IGdldCBoZXJlLCBidXQganVzdCBpbiBjYXNlXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRSZXBseShyZXBseSkge1xuICAgIHRoaXMuZWRpdGVkUmVwbHkgPSByZXBseS5jb21tZW50O1xuICAgIGlmIChyZXBseS5vbkVkaXQpIHtcbiAgICAgIHJlcGx5Lm9uRWRpdCA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJlcGx5Lm9uRWRpdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRWRpdENvbW1lbnQoY29tbWVudCkge1xuICAgIHRoaXMuZWRpdGVkQ29tbWVudCA9IGNvbW1lbnQuY29tbWVudDtcblxuICAgIGlmIChjb21tZW50Lm9uRWRpdCkge1xuICAgICAgY29tbWVudC5vbkVkaXQgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb21tZW50Lm9uRWRpdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbW1lbnQoaWQsIGNvbW1lbnQpIHtcbiAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSB0cnVlO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgY29tbWVudDogdGhpcy5lZGl0ZWRDb21tZW50LFxuICAgICAgZWRpdGVkOiB0cnVlLFxuICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAuZG9jKHRoaXMuZmVlZF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAuZG9jKGlkKTtcblxuICAgIGlmIChjb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbGxlY3Rpb24udXBkYXRlKGRhdGEpO1xuICAgICAgdGhpcy5lZGl0ZWRDb21tZW50ID0gXCJcIjtcbiAgICAgIHRoaXMub25Mb2FkaW5nQ29tbWVudCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSZXBseShjb21tZW50X2lkLCBvbGRfcmVwbHksIHJlcGx5KSB7XG4gICAgdGhpcy5vbkxvYWRpbmdSZXBseSA9IHRydWU7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBjb21tZW50OiByZXBseSxcbiAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdyZXBseScpXG4gICAgICAuZG9jKG9sZF9yZXBseS5pZCk7XG4gICAgY29sbGVjdGlvbi51cGRhdGUoZGF0YSk7XG4gICAgdGhpcy5lZGl0ZWRDb21tZW50ID0gXCJcIjtcbiAgICB0aGlzLm9uTG9hZGluZ1JlcGx5ID0gZmFsc2U7XG4gICAgb2xkX3JlcGx5Lm9uRWRpdCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG1lbnRpb25Vc2VyKHVzZXI6IGFueSkge1xuICAgIHRoaXMubWVudGlvbnNMaXN0ID0gdGhpcy5tZW50aW9uc0xpc3QgfHwgW107XG4gICAgdGhpcy5tZW50aW9uc0xpc3QucHVzaCh1c2VyKTtcbiAgfVxuXG59XG4iXX0=
@@ -329,14 +329,13 @@ export class FeedPublicationComponent {
329
329
  }
330
330
  }));
331
331
  }
332
+ console.log("share", data);
332
333
  this.publish(data).then((/**
333
334
  * @param {?} id
334
335
  * @return {?}
335
336
  */
336
337
  (id) => {
337
- if (data.selected_users.length) {
338
- this.userService.usersChecked({ post_id: id, user_id: data.selected_users }).subscribe();
339
- }
338
+ this.userService.usersChecked({ post_id: id, user_id: data.selected_users, comment: data.title, type: 'post' }, { comments: true }).subscribe();
340
339
  }));
341
340
  this.selectedUsers = [];
342
341
  }
@@ -797,4 +796,4 @@ if (false) {
797
796
  /** @type {?} */
798
797
  FeedPublicationComponent.prototype.dialog;
799
798
  }
800
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtcHVibGljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFVL0IsTUFBTSxPQUFPLHdCQUF3Qjs7Ozs7Ozs7Ozs7OztJ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QUNqQyxzQ0FBMkI7O0lBQzNCLHdDQUF1Qjs7SUFDdkIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNhcFNlcnZpY2UsIEdsb2JhbCB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBBc2FwRmVlZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hc2FwLWZlZWQuc2VydmljZSc7XG5pbXBvcnQgeyBTdHJlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RyZWFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBGaWxlc01vZGVsLCBGZWVkTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4gfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kYWxBbm5vdW5jZUNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYW5ub3VuY2UvbW9kYWwtYW5ub3VuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmVlZC1wdWJsaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLXB1YmxpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuc2NzcycsICcuLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbIFN0cmVhbVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBBc2FwU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRQdWJsaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYW5ub3VuY2UgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZUZpbHRlckJ5TWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBPdXRwdXQoKSBmZWVkQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgdXNlcnMgPSBbXTtcblxuICBwdWJsaWMgdG1wRmlsZUFycmF5OiBBcnJheTxGaWxlc01vZGVsPjtcbiAgcHVibGljIHVwbG9hZGluZztcbiAgcHVibGljIHRpdGxlID0gbnVsbDtcbiAgcHVibGljIHByb2dyZXNzO1xuICBwdWJsaWMgbm90QW5ub3VuY2U7XG4gIHB1YmxpYyBuZXdQcm9kdWN0O1xuICBwdWJsaWMgRXhwYW5kSW1nO1xuICBwdWJsaWMgdHlwZSA9ICdwb3N0JztcbiAgcHVibGljIGVtYmVkRmlsZTtcbiAgcHVibGljIHRtcEVtYmVkRmlsZTtcbiAgcHVibGljIHZpZGVvU2VuZGVkSUQ7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgbmV3ZmVlZDogYW55O1xuXG4gIHB1YmxpYyBtZXNzYWdlID0gXCJEaWdpdGUgYWNpbWEgbyBub21lIGRhIHBlc3NvYSBxdWUgZGVzZWphIG1hcmNhciwgZW0gc2VndWlkYSBwcmVzc2lvbmUgW0VOVEVSXVwiO1xuICBwdWJsaWMgc2VsZWN0ZWRVc2VyczogYW55ID0ge307XG4gIHB1YmxpYyBsaXN0VHlwZTogJ2NoZWNrZWQnIHwgJ3NlYXJjaCcgPSAnc2VhcmNoJztcblxuICBwdWJsaWMgZmlsdGVyQnlNZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZmVlZFNlcnZpY2U6IEFzYXBGZWVkU2VydmljZSxcbiAgICBwdWJsaWMgYXNhcFNlcnZpY2U6IEFzYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBzdHJlYW1TZXJ2aWNlOiBTdHJlYW1TZXJ2aWNlLFxuICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgY29uc29sZS5sb2coJ1ByZWZpeCBQdWJsaWNhdGlvbiAtPicsIHBhdGgoKS5mZWVkKTtcbiAgICB0aGlzLmdldE5ld0ZlZWQoKTtcbiAgfVxuXG4gIGxvYWRVc2Vycyh2YWx1ZTogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoID0gdmFsdWU7XG4gICAgdGhpcy51c2VycyA9IG51bGw7XG4gICAgdGhpcy5saXN0VHlwZSA9ICdzZWFyY2gnO1xuICAgIGlmIChzZWFyY2ggIT0gJycpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IFwiTmVuaHVtIHVzdcOhcmlvIGVuY29udHJhZG8hXCI7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldEFsbFVzZXJzKHNlYXJjaCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJzID0gcmVzcG9uc2UuZGF0YS5tYXAoKHVzZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IHVzZXIudXNlcl9pbmZvLnVzZXJfaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyLnVzZXJfaW5mby51c2VyX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgICAgIHBpY3R1cmU6IHVzZXIucGljdHVyZVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBldmVudC50YXJnZXQuZmlsZXMpIHtcblxuICAgICAgY29uc3QgdG1wRmlsZTogRmlsZXNNb2RlbCA9IG5ldyBGaWxlc01vZGVsKCk7XG4gICAgICB0bXBGaWxlLnR5cGUgPSB0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSk7XG4gICAgICAvLyB0bXBGaWxlLnN0YXR1cyA9IDA7XG4gICAgICB0bXBGaWxlLnRodW1iX3JlbmRlcmluZyA9IGZhbHNlO1xuICAgICAgdG1wRmlsZS52aWRlb19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgIHRtcEZpbGUudmlkZW9fbG93X3JlbmRlcmluZyA9IGZhbHNlO1xuXG4gICAgICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICd2aWRlbycgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICd2aWRlbycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHPDsyBwb2RlIGVudmlhciB1bSB2w61kZW8gcG9yIFBvc3QnXG4gICAgICAgIH0pO1xuICAgICAgICBlcnJvciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICdpbWFnZScgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICdpbWFnZScpLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHBvZGUgdXRpbGl6YXIgYXTDqSBubyBtw6F4aW1vIDUgaW1hZ2VucyBubyBzZXUgUG9zdCdcbiAgICAgICAgfSk7XG4gICAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAvLyB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT0gJ2ltYWdlL2dpZicpIHtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uZ2lmYDtcbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZWFkR0lGKGZpbGUpO1xuICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkucHVzaCh0bXBGaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEV4dG5hbWUgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBnZXRFeHRuYW1lW2dldEV4dG5hbWUubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZXNpemVJbWFnZXMoZmlsZSwgODAwKTtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uJHtleHRuYW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVhbGl6YXIgVXBsb2FkIGRlIFZpZGVvJywgdG1wRmlsZSk7XG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gZmlsZTtcbiAgICAgICAgICBpZiAocmVhZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBibG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZWFkZXIpO1xuICAgICAgICAgICAgdG1wRmlsZS5uYW1lID0gYmxvYlVSTCBhcyBhbnk7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1t1cGxvYWRGaWxlXSBpZiByZWFkZXInLCBibG9iVVJMKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1TZXJ2aWNlLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3VwbG9hZEZpbGVdIFJlc3BvbnNlJywgdG1wRmlsZSk7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuYm9keSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZVsndG90YWwnXSkge1xuICAgICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAoKHJlc3BvbnNlWydsb2FkZWQnXSAqIDEwMCkgLyByZXNwb25zZVsndG90YWwnXSkudG9GaXhlZCgwKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0bXBGaWxlLnN0YXR1cztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5ib2R5ICYmIHJlc3BvbnNlLmJvZHkuZmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXBsb2FkRmlsZV0gUmVzcG9uc2UgVXBsb2FkZWQnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAxMDE7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS51cmwgPSByZXNwb25zZS5ib2R5LmZpbGUuc2VjdXJlX3VybDtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvU2VuZGVkSUQgPSB0bXBGaWxlLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0bXBGaWxlJywgdG1wRmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNpemVJbWFnZXMoZmlsZTogYW55LCB3aWR0aDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBjb25zdCBNQVhfV0lEVEggPSB3aWR0aDtcbiAgICAgIGNvbnN0IE1BWF9IRUlHSFQ6IGFueSA9IDEzMzQ7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTUFYX1dJRFRIIC8gaW1nLndpZHRoO1xuICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzY2FsZSAqIGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICBjYW52YXMud2lkdGggPSBNQVhfV0lEVEg7XG4gICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ0lNRycsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgICAgICBjb25zdCBkYXRhdXJsID0gY2FudmFzLnRvRGF0YVVSTChmaWxlLnR5cGUsIDAuNjUpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdDQU5WQVMgLT4nLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGF1cmwpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlYWRHSUYoZmlsZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0VHlwZUJ5TWltZVR5cGUobWltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzcGxpdCA9IG1pbWUuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gc3BsaXRbMF07XG4gIH1cblxuICBzaGFyZSgpOiBhbnkge1xuICAgIGNvbnN0IGRhdGE6IEZlZWRNb2RlbCA9IG5ldyBGZWVkTW9kZWwoKTtcbiAgICBkYXRhLnVwZGF0ZWRfYXQgPSBEYXRlLm5vdygpO1xuICAgIGRhdGEudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgIGRhdGEudHlwZSA9IHRoaXMudHlwZTtcbiAgICBkYXRhLnNlbGVjdGVkX3VzZXJzID0gW107XG4gICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuc2VsZWN0ZWRVc2Vycykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0pIHtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vycy5wdXNoKGlkKTtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhLnB1c2goe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0ubmFtZSxcbiAgICAgICAgICBwaWN0dXJlOiB0aGlzLnNlbGVjdGVkVXNlcnNbaWRdLnBpY3R1cmUsXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0uZW1haWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG1wRmlsZUFycmF5IHx8IHRoaXMudG1wRmlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRhdGEuZmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheTtcbiAgICAgIC8vIGNvbnN0IHZpZGVvRmlsdGVyID0gZGF0YS5maWxlcy5maWx0ZXIodG1wID0+IHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodG1wLnR5cGUpID09PSAndmlkZW8nKTtcbiAgICAgIC8vIGlmICh2aWRlb0ZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB9XG4gICAgICBkYXRhLmZpbGVzLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeGlzdGUgdW0gdmlkZW8gbm8gRmVlZCcsIGl0ZW0pO1xuICAgICAgICAgIGlmICghaXRlbS5pc0Nsb3VkaW5hcnkpIHtcbiAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0ZW0udGh1bWJfcmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFNldGFuZG8gbyBJRCBkbyBGZWVkIGlndWFsIGFvIElEIGRvIHbDrWRlb1xuICAgICAgICAgICAgZGF0YS5yZWYgPSBpdGVtLnVybDtcbiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0udXJsKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gIXJlcy5wNDgwO1xuICAgICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSAhcmVzLnA0ODBfbG93O1xuICAgICAgICAgICAgICBpdGVtLnRodW1iX3JlbmRlcmluZyA9ICFyZXMudGh1bWI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHVibGlzaChkYXRhKS50aGVuKChpZCkgPT4ge1xuICAgICAgaWYgKGRhdGEuc2VsZWN0ZWRfdXNlcnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlcnNDaGVja2VkKHtwb3N0X2lkOiBpZCwgdXNlcl9pZDogZGF0YS5zZWxlY3RlZF91c2Vyc30pLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW107XG4gIH1cblxuICBjb25maXJtU2hhcmUoKSB7XG4gICAgY29uc3Qgc3dhbGwgPSBTd2FsLmZpcmUoe1xuICAgICAgICB0aXRsZTogXCJQb2RlbW9zIGNvbXBhcnRpbGhhciBzZXUgcG9zdD9cIixcbiAgICAgICAgdHlwZTogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNpbVwiLFxuICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIk7Do29cIlxuICAgIH0pO1xuXG4gICAgc3dhbGwudGhlbigoY29uZmlybWVkKSA9PiB7XG4gICAgICBpZiAoY29uZmlybWVkLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2hhcmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1Ymxpc2goZGF0YTogRmVlZE1vZGVsKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cbiAgICAgIGxldCBpbWFnZTtcbiAgICAgIGxldCBpZDtcbiAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCAxLCBkYXRhKTtcbiAgXG4gICAgICBpZiAoIWRhdGEudGl0bGUgfHwgZGF0YS50aXRsZSA9PT0gJycpIHtcbiAgICAgICAgLy8gdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgLy8gICB0aXRsZTogJ09wcycsXG4gICAgICAgIC8vICAgbWVzc2FnZTogJ1ZvY8OqIHByZWNpc2EgYWRpY2lvbmFyIHVtIHRleHRvIMOgIHN1YSBpbWFnZW0vdsOtZGVvLicsXG4gICAgICAgIC8vIH0pO1xuICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICB0aXRsZTogXCJQb2RlbW9zIGNvbXBhcnRpbGhhciBzZXUgcG9zdD8/XCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJOw6NvXCJcbiAgICAgICAgICB9KVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAgXG4gIFxuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIGRhdGEudXNlcl9pbmZvID0ge1xuICAgICAgICBpZDogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkLFxuICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmUsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KClcbiAgICAgIH07XG4gIFxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnZW1iZWQnKSB7XG4gICAgICAgIGNvbnN0IGZpbGVFbWJlZDogYW55ID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuZW1iZWRGaWxlLFxuICAgICAgICAgIHVybDogdGhpcy5lbWJlZEZpbGUsXG4gICAgICAgICAgdHlwZTogJ2VtYmVkJ1xuICAgICAgICB9O1xuICBcbiAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkucHVzaChmaWxlRW1iZWQpO1xuICAgICAgfVxuICBcbiAgICAgIGlmICh0aGlzLnR5cGUgIT0gJ2VtYmVkJykge1xuICAgICAgICBpZiAodGhpcy50bXBGaWxlQXJyYXkgJiYgdGhpcy50bXBGaWxlQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnRtcEZpbGVBcnJheScsIHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodGhpcy50bXBGaWxlQXJyYXlbMF0udHlwZSkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCAyKTtcbiAgICAgICAgICBjb25zdCBpbWFnZXNGaWxlcyA9IHRoaXMudG1wRmlsZUFycmF5LmZpbHRlcihcbiAgICAgICAgICAgICh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICdpbWFnZSdcbiAgICAgICAgICApO1xuICBcbiAgXG4gICAgICAgICAgY29uc3Qgc3RlcCA9IDk4IC8gaW1hZ2VzRmlsZXMubGVuZ3RoO1xuICBcbiAgICAgICAgICBpZiAoKGltYWdlc0ZpbGVzLmxlbmd0aCAmJiBkYXRhLnRpdGxlID09PSAnJykpIHtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsLnRvYXN0U2VydmljZS5lcnJvcih7XG4gICAgICAgICAgICAgIHRpdGxlOiAnT3BzJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHByZWNpc2EgYWRpY2lvbmFyIHVtIHRleHRvIGp1bnRvIMOgIHN1YSBpbWFnZW0vdsOtZGVvLicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGlmIChpbWFnZXNGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgaW1hZ2VzRmlsZXMpIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UudXBsb2FkRmlsZShgaW1hZ2VzLyR7ZmlsZS5uYW1lfWAsIGZpbGUudXJsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWxzU2VydmljZS5wZXJjZW50YWdlLnN1YnNjcmliZShwZXJjZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzID0gcGVyY2VudDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UudGFzay5zbmFwc2hvdENoYW5nZXMoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICBhc3luYyBzbmFwID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXAuYnl0ZXNUcmFuc2ZlcnJlZCA9PT0gc25hcC50b3RhbEJ5dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzICs9IHN0ZXA7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1BST0dSRVNTJywgdGhpcy5wcm9ncmVzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbGVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubmFtZSA9PT0gZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFpbWFnZSkgJiYgKGRhdGEuZmlsZXNbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UuZ2V0RmlyZVN0b3JhZ2VVUkwoYGltYWdlcy8ke2RhdGEuZmlsZXNbaW5kZXhdLm5hbWV9YCkuc3Vic2NyaWJlKChpbWFnZVVSTCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA9IGltYWdlVVJMO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGF0YS5maWxlc1tpbmRleF0udXJsO1xuICBcbiAgXG4gIFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSBpbWFnZXNGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmlhbmRvIEZlZWQnKTtcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCkuZG9jKHJlc3BvbnNlLmlkKS51cGRhdGUoeyBpZDogcmVzcG9uc2UuaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVlZENyZWF0ZWQuZW1pdChyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aXRsZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheSA9IFtdO1xuICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCA0KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCA1KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEsIHRoaXMudG1wRmlsZUFycmF5KTtcbiAgXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCkuZG9jKHJlc3BvbnNlLmlkKS51cGRhdGUoeyBpZDogcmVzcG9uc2UuaWQgfSk7XG4gICAgICAgICAgICAgIHRoaXMuZmVlZENyZWF0ZWQuZW1pdChyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICB9KTtcbiAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCA1KTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLCB0aGlzLnRtcEZpbGVBcnJheSk7XG4gIFxuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpO1xuICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCkudXBkYXRlKHsgaWQ6IHJlc3BvbnNlLmlkIH0pO1xuICAgICAgICAgICAgdGhpcy5mZWVkQ3JlYXRlZC5lbWl0KHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZGF0YS5maWxlcyA9IHRoaXMudG1wRmlsZUFycmF5O1xuICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaChFbWJlZCknLCA2KTtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSwgdGhpcy50bXBGaWxlQXJyYXkpO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgY29sbGVjdGlvbi5hZGQoY2xhc3NUb1BsYWluKGRhdGEpKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBjb25zdCBkb2MgPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCk7XG4gICAgICAgICAgZG9jLnVwZGF0ZSh7IGlkOiByZXNwb25zZS5pZCB9KTtcbiAgICAgICAgICB0aGlzLmZlZWRDcmVhdGVkLmVtaXQocmVzcG9uc2UuaWQpO1xuICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICB0aGlzLnByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgICAgICB0aGlzLmVtYmVkRmlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy50eXBlID0gJ3Bvc3QnO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgXG4gIFxuICAgICAgY29uc29sZS5sb2coJ1B1Ymxpc2goKScsIDAsIHBhdGgoKS5mZWVkKTtcbiAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgIHRoaXMuZ2xvYmFsLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgdGl0bGU6ICdGZWl0byEnLFxuICAgICAgICBtZXNzYWdlOiAnU2V1IHBvc3QgZm9pIGNyaWFkbyBjb20gc3VjZXNzbycsXG4gICAgICAgIGxheW91dDogMlxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVUbXBGaWxlKHRtcEZpbGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50bXBGaWxlQXJyYXkuaW5kZXhPZih0bXBGaWxlKTtcbiAgICB0aGlzLnRtcEZpbGVBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgY2hlY2tQdWJsaWNhdGlvblR5cGUodGl0bGUpIHtcbiAgICBjb25zb2xlLmxvZygnRXZlbnQgLT4nLCBldmVudCk7XG4gICAgaWYgKHRpdGxlLmxlbmd0aCAmJiB0aXRsZS5sZW5ndGggPiAzNSkge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZFVybCh0aXRsZSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2NoZWNrUHVibGljYXRpb25UeXBlJywgdGl0bGUpO1xuICAgICAgICBpZiAodGl0bGUuaW5jbHVkZXMoJ3lvdXR1JykgfHwgdGl0bGUuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1iZWQnO1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lbWJlZEZpbGUgPSB0aXRsZS5yZXBsYWNlKCd3YXRjaD92PScsICdlbWJlZC8nKTtcbiAgICAgICAgICB0aGlzLnRtcEVtYmVkRmlsZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmVtYmVkRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGl0bGUuaW5jbHVkZXMoJ3Nwb3RpZnknKSkge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1iZWQnO1xuICAgICAgICAgIHRoaXMuZW1iZWRGaWxlID0gdGl0bGUucmVwbGFjZSgnL2VwaXNvZGUnLCAnL2VtYmVkLXBvZGNhc3QvZXBpc29kZScpO1xuICAgICAgICAgIHRoaXMudG1wRW1iZWRGaWxlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZW1iZWRGaWxlKTtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRW1iZWRGaWxlcygpIHtcbiAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgdGhpcy5lbWJlZEZpbGUgPSAnJztcbiAgICB0aGlzLnR5cGUgPSAncG9zdCc7XG4gIH1cblxuICBpc1ZhbGlkVXJsKHN0cikge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKCdeKGh0dHBzPzpcXFxcL1xcXFwvKT8nICsgLy8gcHJvdG9jb2xcbiAgICAgICcoKChbYS16XFxcXGRdKFthLXpcXFxcZC1dKlthLXpcXFxcZF0pKilcXFxcLikrW2Etel17Mix9fCcgKyAvLyBkb21haW4gbmFtZVxuICAgICAgJygoXFxcXGR7MSwzfVxcXFwuKXszfVxcXFxkezEsM30pKScgKyAvLyBPUiBpcCAodjQpIGFkZHJlc3NcbiAgICAgICcoXFxcXDpcXFxcZCspPyhcXFxcL1stYS16XFxcXGQlXy5+K10qKSonICsgLy8gcG9ydCBhbmQgcGF0aFxuICAgICAgJyhcXFxcP1s7JmEtelxcXFxkJV8ufis9LV0qKT8nICsgLy8gcXVlcnkgc3RyaW5nXG4gICAgICAnKFxcXFwjWy1hLXpcXFxcZF9dKik/JCcsICdpJyk7IC8vIGZyYWdtZW50IGxvY2F0b3JcbiAgICByZXR1cm4gISFwYXR0ZXJuLnRlc3Qoc3RyKTtcbiAgfVxuXG4gIG9wZW5Bbm5vdW5jZU1vZGFsKCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTW9kYWxBbm5vdW5jZUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc1NSUnLFxuICAgICAgbWluSGVpZ2h0OiAnOTUlJyxcbiAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgZGF0YTogeyBvd25lcjogdGhpcywgdG1wRmlsZUFycmF5OiB0aGlzLnRtcEZpbGVBcnJheSB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHRoaXMuZmlsdGVyQnlNZSk7XG4gIH1cblxuICBzZWxlY3RVc2VyKGV2dDogYW55LCB1c2VyOiBhbnkpIHtcbiAgICBpZiAoZXZ0LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnNbdXNlci5pZF0gPSB1c2VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGVkVXNlcnNbdXNlci5pZF07XG4gICAgfVxuICB9XG5cbiAgc2hvd1NlbGVjdGVkKCkge1xuICAgIHRoaXMubGlzdFR5cGUgPSAnY2hlY2tlZCc7XG4gICAgdGhpcy51c2VycyA9IFtdO1xuICAgIGZvciAoY29uc3QgaWQgaW4gdGhpcy5zZWxlY3RlZFVzZXJzKSB7XG4gICAgICB0aGlzLnVzZXJzLnB1c2godGhpcy5zZWxlY3RlZFVzZXJzW2lkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Nb2RhbCgpIHtcbiAgICBpZiAodGhpcy5uZXdmZWVkKSB7XG4gICAgICAkKCcjcHVibGljYXRpb25Nb2RhbCcpLm1vZGFsKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmNvbmZpcm1TaGFyZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXROZXdGZWVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICAgIHRoaXMuYXNhcFNlcnZpY2UuYmFzZVBhdGggPSBcImFwaS92Mi9hZG1pblwiO1xuICAgIHRoaXMuYXNhcFNlcnZpY2UuZW50aXR5TmFtZSA9IFwiY29sb3JcIjtcbiAgICB0aGlzLmFzYXBTZXJ2aWNlLmdldFJlc291cmNlKHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5jbGllbnRfaWQpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICB0aGlzLm5ld2ZlZWQgPSByZXNwb25zZS5kYXRhLm5ld2ZlZWQ7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
799
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtcHVibGljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFVL0IsTUFBTSxPQUFPLHdCQUF3Qjs7Ozs7Ozs7Ozs7OztJ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QUNyQiwrQ0FBbUM7O0lBQ25DLCtDQUErQjs7SUFDL0IsK0NBQStCOztJQUMvQiw2Q0FBOEI7O0lBQzlCLGlEQUFtQzs7SUFDbkMsZ0RBQWlDOztJQUNqQyxzQ0FBMkI7O0lBQzNCLHdDQUF1Qjs7SUFDdkIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNhcFNlcnZpY2UsIEdsb2JhbCB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBBc2FwRmVlZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hc2FwLWZlZWQuc2VydmljZSc7XG5pbXBvcnQgeyBTdHJlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RyZWFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBGaWxlc01vZGVsLCBGZWVkTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4gfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kYWxBbm5vdW5jZUNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYW5ub3VuY2UvbW9kYWwtYW5ub3VuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmVlZC1wdWJsaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLXB1YmxpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuc2NzcycsICcuLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbIFN0cmVhbVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBBc2FwU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRQdWJsaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYW5ub3VuY2UgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZUZpbHRlckJ5TWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBPdXRwdXQoKSBmZWVkQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgdXNlcnMgPSBbXTtcblxuICBwdWJsaWMgdG1wRmlsZUFycmF5OiBBcnJheTxGaWxlc01vZGVsPjtcbiAgcHVibGljIHVwbG9hZGluZztcbiAgcHVibGljIHRpdGxlID0gbnVsbDtcbiAgcHVibGljIHByb2dyZXNzO1xuICBwdWJsaWMgbm90QW5ub3VuY2U7XG4gIHB1YmxpYyBuZXdQcm9kdWN0O1xuICBwdWJsaWMgRXhwYW5kSW1nO1xuICBwdWJsaWMgdHlwZSA9ICdwb3N0JztcbiAgcHVibGljIGVtYmVkRmlsZTtcbiAgcHVibGljIHRtcEVtYmVkRmlsZTtcbiAgcHVibGljIHZpZGVvU2VuZGVkSUQ7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgbmV3ZmVlZDogYW55O1xuXG4gIHB1YmxpYyBtZXNzYWdlID0gXCJEaWdpdGUgYWNpbWEgbyBub21lIGRhIHBlc3NvYSBxdWUgZGVzZWphIG1hcmNhciwgZW0gc2VndWlkYSBwcmVzc2lvbmUgW0VOVEVSXVwiO1xuICBwdWJsaWMgc2VsZWN0ZWRVc2VyczogYW55ID0ge307XG4gIHB1YmxpYyBsaXN0VHlwZTogJ2NoZWNrZWQnIHwgJ3NlYXJjaCcgPSAnc2VhcmNoJztcblxuICBwdWJsaWMgZmlsdGVyQnlNZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZmVlZFNlcnZpY2U6IEFzYXBGZWVkU2VydmljZSxcbiAgICBwdWJsaWMgYXNhcFNlcnZpY2U6IEFzYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBzdHJlYW1TZXJ2aWNlOiBTdHJlYW1TZXJ2aWNlLFxuICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgY29uc29sZS5sb2coJ1ByZWZpeCBQdWJsaWNhdGlvbiAtPicsIHBhdGgoKS5mZWVkKTtcbiAgICB0aGlzLmdldE5ld0ZlZWQoKTtcbiAgfVxuXG4gIGxvYWRVc2Vycyh2YWx1ZTogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoID0gdmFsdWU7XG4gICAgdGhpcy51c2VycyA9IG51bGw7XG4gICAgdGhpcy5saXN0VHlwZSA9ICdzZWFyY2gnO1xuICAgIGlmIChzZWFyY2ggIT0gJycpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IFwiTmVuaHVtIHVzdcOhcmlvIGVuY29udHJhZG8hXCI7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldEFsbFVzZXJzKHNlYXJjaCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJzID0gcmVzcG9uc2UuZGF0YS5tYXAoKHVzZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IHVzZXIudXNlcl9pbmZvLnVzZXJfaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyLnVzZXJfaW5mby51c2VyX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgICAgIHBpY3R1cmU6IHVzZXIucGljdHVyZVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBldmVudC50YXJnZXQuZmlsZXMpIHtcblxuICAgICAgY29uc3QgdG1wRmlsZTogRmlsZXNNb2RlbCA9IG5ldyBGaWxlc01vZGVsKCk7XG4gICAgICB0bXBGaWxlLnR5cGUgPSB0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSk7XG4gICAgICAvLyB0bXBGaWxlLnN0YXR1cyA9IDA7XG4gICAgICB0bXBGaWxlLnRodW1iX3JlbmRlcmluZyA9IGZhbHNlO1xuICAgICAgdG1wRmlsZS52aWRlb19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgIHRtcEZpbGUudmlkZW9fbG93X3JlbmRlcmluZyA9IGZhbHNlO1xuXG4gICAgICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICd2aWRlbycgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICd2aWRlbycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHPDsyBwb2RlIGVudmlhciB1bSB2w61kZW8gcG9yIFBvc3QnXG4gICAgICAgIH0pO1xuICAgICAgICBlcnJvciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICdpbWFnZScgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICdpbWFnZScpLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHBvZGUgdXRpbGl6YXIgYXTDqSBubyBtw6F4aW1vIDUgaW1hZ2VucyBubyBzZXUgUG9zdCdcbiAgICAgICAgfSk7XG4gICAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAvLyB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT0gJ2ltYWdlL2dpZicpIHtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uZ2lmYDtcbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZWFkR0lGKGZpbGUpO1xuICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkucHVzaCh0bXBGaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEV4dG5hbWUgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBnZXRFeHRuYW1lW2dldEV4dG5hbWUubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZXNpemVJbWFnZXMoZmlsZSwgODAwKTtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uJHtleHRuYW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVhbGl6YXIgVXBsb2FkIGRlIFZpZGVvJywgdG1wRmlsZSk7XG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gZmlsZTtcbiAgICAgICAgICBpZiAocmVhZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBibG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZWFkZXIpO1xuICAgICAgICAgICAgdG1wRmlsZS5uYW1lID0gYmxvYlVSTCBhcyBhbnk7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1t1cGxvYWRGaWxlXSBpZiByZWFkZXInLCBibG9iVVJMKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1TZXJ2aWNlLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3VwbG9hZEZpbGVdIFJlc3BvbnNlJywgdG1wRmlsZSk7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuYm9keSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZVsndG90YWwnXSkge1xuICAgICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAoKHJlc3BvbnNlWydsb2FkZWQnXSAqIDEwMCkgLyByZXNwb25zZVsndG90YWwnXSkudG9GaXhlZCgwKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0bXBGaWxlLnN0YXR1cztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5ib2R5ICYmIHJlc3BvbnNlLmJvZHkuZmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXBsb2FkRmlsZV0gUmVzcG9uc2UgVXBsb2FkZWQnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAxMDE7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS51cmwgPSByZXNwb25zZS5ib2R5LmZpbGUuc2VjdXJlX3VybDtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvU2VuZGVkSUQgPSB0bXBGaWxlLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0bXBGaWxlJywgdG1wRmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNpemVJbWFnZXMoZmlsZTogYW55LCB3aWR0aDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBjb25zdCBNQVhfV0lEVEggPSB3aWR0aDtcbiAgICAgIGNvbnN0IE1BWF9IRUlHSFQ6IGFueSA9IDEzMzQ7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTUFYX1dJRFRIIC8gaW1nLndpZHRoO1xuICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzY2FsZSAqIGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICBjYW52YXMud2lkdGggPSBNQVhfV0lEVEg7XG4gICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ0lNRycsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgICAgICBjb25zdCBkYXRhdXJsID0gY2FudmFzLnRvRGF0YVVSTChmaWxlLnR5cGUsIDAuNjUpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdDQU5WQVMgLT4nLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGF1cmwpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlYWRHSUYoZmlsZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0VHlwZUJ5TWltZVR5cGUobWltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzcGxpdCA9IG1pbWUuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gc3BsaXRbMF07XG4gIH1cblxuICBzaGFyZSgpOiBhbnkge1xuICAgIGNvbnN0IGRhdGE6IEZlZWRNb2RlbCA9IG5ldyBGZWVkTW9kZWwoKTtcbiAgICBkYXRhLnVwZGF0ZWRfYXQgPSBEYXRlLm5vdygpO1xuICAgIGRhdGEudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgIGRhdGEudHlwZSA9IHRoaXMudHlwZTtcbiAgICBkYXRhLnNlbGVjdGVkX3VzZXJzID0gW107XG4gICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuc2VsZWN0ZWRVc2Vycykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0pIHtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vycy5wdXNoKGlkKTtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhLnB1c2goe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0ubmFtZSxcbiAgICAgICAgICBwaWN0dXJlOiB0aGlzLnNlbGVjdGVkVXNlcnNbaWRdLnBpY3R1cmUsXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0uZW1haWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG1wRmlsZUFycmF5IHx8IHRoaXMudG1wRmlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRhdGEuZmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheTtcbiAgICAgIC8vIGNvbnN0IHZpZGVvRmlsdGVyID0gZGF0YS5maWxlcy5maWx0ZXIodG1wID0+IHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodG1wLnR5cGUpID09PSAndmlkZW8nKTtcbiAgICAgIC8vIGlmICh2aWRlb0ZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB9XG4gICAgICBkYXRhLmZpbGVzLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeGlzdGUgdW0gdmlkZW8gbm8gRmVlZCcsIGl0ZW0pO1xuICAgICAgICAgIGlmICghaXRlbS5pc0Nsb3VkaW5hcnkpIHtcbiAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0ZW0udGh1bWJfcmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFNldGFuZG8gbyBJRCBkbyBGZWVkIGlndWFsIGFvIElEIGRvIHbDrWRlb1xuICAgICAgICAgICAgZGF0YS5yZWYgPSBpdGVtLnVybDtcbiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0udXJsKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gIXJlcy5wNDgwO1xuICAgICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSAhcmVzLnA0ODBfbG93O1xuICAgICAgICAgICAgICBpdGVtLnRodW1iX3JlbmRlcmluZyA9ICFyZXMudGh1bWI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcInNoYXJlXCIsIGRhdGEpO1xuICAgIFxuICAgIHRoaXMucHVibGlzaChkYXRhKS50aGVuKChpZCkgPT4ge1xuICAgICAgdGhpcy51c2VyU2VydmljZS51c2Vyc0NoZWNrZWQoe3Bvc3RfaWQ6IGlkLCB1c2VyX2lkOiBkYXRhLnNlbGVjdGVkX3VzZXJzLCBjb21tZW50OiBkYXRhLnRpdGxlLCB0eXBlOiAncG9zdCd9LCB7Y29tbWVudHM6IHRydWV9KS5zdWJzY3JpYmUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICB9XG5cbiAgY29uZmlybVNoYXJlKCkge1xuICAgIGNvbnN0IHN3YWxsID0gU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6IFwiUG9kZW1vcyBjb21wYXJ0aWxoYXIgc2V1IHBvc3Q/XCIsXG4gICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJOw6NvXCJcbiAgICB9KTtcblxuICAgIHN3YWxsLnRoZW4oKGNvbmZpcm1lZCkgPT4ge1xuICAgICAgaWYgKGNvbmZpcm1lZC52YWx1ZSkge1xuICAgICAgICB0aGlzLnNoYXJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaXNoKGRhdGE6IEZlZWRNb2RlbCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICBsZXQgaW1hZ2U7XG4gICAgICBsZXQgaWQ7XG4gICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgMSwgZGF0YSk7XG4gIFxuICAgICAgaWYgKCFkYXRhLnRpdGxlIHx8IGRhdGEudGl0bGUgPT09ICcnKSB7XG4gICAgICAgIC8vIHRoaXMuZ2xvYmFsLnRvYXN0U2VydmljZS5lcnJvcih7XG4gICAgICAgIC8vICAgdGl0bGU6ICdPcHMnLFxuICAgICAgICAvLyAgIG1lc3NhZ2U6ICdWb2PDqiBwcmVjaXNhIGFkaWNpb25hciB1bSB0ZXh0byDDoCBzdWEgaW1hZ2VtL3bDrWRlby4nLFxuICAgICAgICAvLyB9KTtcbiAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiUG9kZW1vcyBjb21wYXJ0aWxoYXIgc2V1IHBvc3Q/P1wiLFxuICAgICAgICAgICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU2ltXCIsXG4gICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiTsOjb1wiXG4gICAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IDA7XG4gIFxuICBcbiAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICBkYXRhLnVzZXJfaW5mbyA9IHtcbiAgICAgICAgaWQ6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5pZCxcbiAgICAgICAgbmFtZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWUsXG4gICAgICAgIHBpY3R1cmU6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5waWN0dXJlLFxuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpXG4gICAgICB9O1xuICBcbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ2VtYmVkJykge1xuICAgICAgICBjb25zdCBmaWxlRW1iZWQ6IGFueSA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmVtYmVkRmlsZSxcbiAgICAgICAgICB1cmw6IHRoaXMuZW1iZWRGaWxlLFxuICAgICAgICAgIHR5cGU6ICdlbWJlZCdcbiAgICAgICAgfTtcbiAgXG4gICAgICAgIHRoaXMudG1wRmlsZUFycmF5LnB1c2goZmlsZUVtYmVkKTtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAodGhpcy50eXBlICE9ICdlbWJlZCcpIHtcbiAgICAgICAgaWYgKHRoaXMudG1wRmlsZUFycmF5ICYmIHRoaXMudG1wRmlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy50bXBGaWxlQXJyYXknLCB0aGlzLmdldFR5cGVCeU1pbWVUeXBlKHRoaXMudG1wRmlsZUFycmF5WzBdLnR5cGUpKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgMik7XG4gICAgICAgICAgY29uc3QgaW1hZ2VzRmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheS5maWx0ZXIoXG4gICAgICAgICAgICAodG1wOiBhbnkpID0+IHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodG1wLnR5cGUpID09PSAnaW1hZ2UnXG4gICAgICAgICAgKTtcbiAgXG4gIFxuICAgICAgICAgIGNvbnN0IHN0ZXAgPSA5OCAvIGltYWdlc0ZpbGVzLmxlbmd0aDtcbiAgXG4gICAgICAgICAgaWYgKChpbWFnZXNGaWxlcy5sZW5ndGggJiYgZGF0YS50aXRsZSA9PT0gJycpKSB7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbC50b2FzdFNlcnZpY2UuZXJyb3Ioe1xuICAgICAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdWb2PDqiBwcmVjaXNhIGFkaWNpb25hciB1bSB0ZXh0byBqdW50byDDoCBzdWEgaW1hZ2VtL3bDrWRlby4nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBpZiAoaW1hZ2VzRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGltYWdlc0ZpbGVzKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnVwbG9hZEZpbGUoYGltYWdlcy8ke2ZpbGUubmFtZX1gLCBmaWxlLnVybCk7XG4gICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UucGVyY2VudGFnZS5zdWJzY3JpYmUocGVyY2VudCA9PiB7XG4gICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9IHBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnRhc2suc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgYXN5bmMgc25hcCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbmFwLmJ5dGVzVHJhbnNmZXJyZWQgPT09IHNuYXAudG90YWxCeXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyArPSBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQUk9HUkVTUycsIHRoaXMucHJvZ3Jlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5maWxlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLm5hbWUgPT09IGZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCghaW1hZ2UpICYmIChkYXRhLmZpbGVzW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLmdldEZpcmVTdG9yYWdlVVJMKGBpbWFnZXMvJHtkYXRhLmZpbGVzW2luZGV4XS5uYW1lfWApLnN1YnNjcmliZSgoaW1hZ2VVUkwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgPSBpbWFnZVVSTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICBcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEuZmlsZXNbaW5kZXhdLnVybDtcbiAgXG4gIFxuICBcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gaW1hZ2VzRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ3JpYW5kbyBGZWVkJyk7XG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLmFkZChjbGFzc1RvUGxhaW4oZGF0YSkpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCkudXBkYXRlKHsgaWQ6IHJlc3BvbnNlLmlkIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZlZWRDcmVhdGVkLmVtaXQocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgNCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgNSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLCB0aGlzLnRtcEZpbGVBcnJheSk7XG4gIFxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCk7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLmFkZChjbGFzc1RvUGxhaW4oZGF0YSkpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCkudXBkYXRlKHsgaWQ6IHJlc3BvbnNlLmlkIH0pO1xuICAgICAgICAgICAgICB0aGlzLmZlZWRDcmVhdGVkLmVtaXQocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgNSk7XG4gICAgICAgICAgY29uc29sZS5sb2coZGF0YSwgdGhpcy50bXBGaWxlQXJyYXkpO1xuICBcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgICBjb2xsZWN0aW9uLmFkZChjbGFzc1RvUGxhaW4oZGF0YSkpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKS5kb2MocmVzcG9uc2UuaWQpLnVwZGF0ZSh7IGlkOiByZXNwb25zZS5pZCB9KTtcbiAgICAgICAgICAgIHRoaXMuZmVlZENyZWF0ZWQuZW1pdChyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGRhdGEuZmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheTtcbiAgICAgICAgY29uc29sZS5sb2coJ1B1Ymxpc2goRW1iZWQpJywgNik7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEsIHRoaXMudG1wRmlsZUFycmF5KTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCk7XG4gICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgY29uc3QgZG9jID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKS5kb2MocmVzcG9uc2UuaWQpO1xuICAgICAgICAgIGRvYy51cGRhdGUoeyBpZDogcmVzcG9uc2UuaWQgfSk7XG4gICAgICAgICAgdGhpcy5mZWVkQ3JlYXRlZC5lbWl0KHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICAgICAgdGhpcy5lbWJlZEZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHlwZSA9ICdwb3N0JztcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gIFxuICBcbiAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCAwLCBwYXRoKCkuZmVlZCk7XG4gICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICB0aGlzLnByb2dyZXNzID0gbnVsbDtcbiAgICAgIHRoaXMudXBsb2FkaW5nID0gbnVsbDtcbiAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICB0aGlzLmdsb2JhbC50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIHRpdGxlOiAnRmVpdG8hJyxcbiAgICAgICAgbWVzc2FnZTogJ1NldSBwb3N0IGZvaSBjcmlhZG8gY29tIHN1Y2Vzc28nLFxuICAgICAgICBsYXlvdXQ6IDJcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlVG1wRmlsZSh0bXBGaWxlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudG1wRmlsZUFycmF5LmluZGV4T2YodG1wRmlsZSk7XG4gICAgdGhpcy50bXBGaWxlQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGNoZWNrUHVibGljYXRpb25UeXBlKHRpdGxlKSB7XG4gICAgY29uc29sZS5sb2coJ0V2ZW50IC0+JywgZXZlbnQpO1xuICAgIGlmICh0aXRsZS5sZW5ndGggJiYgdGl0bGUubGVuZ3RoID4gMzUpIHtcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRVcmwodGl0bGUpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjaGVja1B1YmxpY2F0aW9uVHlwZScsIHRpdGxlKTtcbiAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKCd5b3V0dScpIHx8IHRpdGxlLmluY2x1ZGVzKCd5b3V0dWJlJykpIHtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy50eXBlID0gJ2VtYmVkJztcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZW1iZWRGaWxlID0gdGl0bGUucmVwbGFjZSgnd2F0Y2g/dj0nLCAnZW1iZWQvJyk7XG4gICAgICAgICAgdGhpcy50bXBFbWJlZEZpbGUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5lbWJlZEZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRpdGxlLmluY2x1ZGVzKCdzcG90aWZ5JykpIHtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy50eXBlID0gJ2VtYmVkJztcbiAgICAgICAgICB0aGlzLmVtYmVkRmlsZSA9IHRpdGxlLnJlcGxhY2UoJy9lcGlzb2RlJywgJy9lbWJlZC1wb2RjYXN0L2VwaXNvZGUnKTtcbiAgICAgICAgICB0aGlzLnRtcEVtYmVkRmlsZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmVtYmVkRmlsZSk7XG4gICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUVtYmVkRmlsZXMoKSB7XG4gICAgdGhpcy50aXRsZSA9ICcnO1xuICAgIHRoaXMuZW1iZWRGaWxlID0gJyc7XG4gICAgdGhpcy50eXBlID0gJ3Bvc3QnO1xuICB9XG5cbiAgaXNWYWxpZFVybChzdHIpIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCgnXihodHRwcz86XFxcXC9cXFxcLyk/JyArIC8vIHByb3RvY29sXG4gICAgICAnKCgoW2EtelxcXFxkXShbYS16XFxcXGQtXSpbYS16XFxcXGRdKSopXFxcXC4pK1thLXpdezIsfXwnICsgLy8gZG9tYWluIG5hbWVcbiAgICAgICcoKFxcXFxkezEsM31cXFxcLil7M31cXFxcZHsxLDN9KSknICsgLy8gT1IgaXAgKHY0KSBhZGRyZXNzXG4gICAgICAnKFxcXFw6XFxcXGQrKT8oXFxcXC9bLWEtelxcXFxkJV8ufitdKikqJyArIC8vIHBvcnQgYW5kIHBhdGhcbiAgICAgICcoXFxcXD9bOyZhLXpcXFxcZCVfLn4rPS1dKik/JyArIC8vIHF1ZXJ5IHN0cmluZ1xuICAgICAgJyhcXFxcI1stYS16XFxcXGRfXSopPyQnLCAnaScpOyAvLyBmcmFnbWVudCBsb2NhdG9yXG4gICAgcmV0dXJuICEhcGF0dGVybi50ZXN0KHN0cik7XG4gIH1cblxuICBvcGVuQW5ub3VuY2VNb2RhbCgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE1vZGFsQW5ub3VuY2VDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNTUlJyxcbiAgICAgIG1pbkhlaWdodDogJzk1JScsXG4gICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGRhdGE6IHsgb3duZXI6IHRoaXMsIHRtcEZpbGVBcnJheTogdGhpcy50bXBGaWxlQXJyYXkgfVxuICAgIH0pO1xuXG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgdGhpcy5maWx0ZXIuZW1pdCh0aGlzLmZpbHRlckJ5TWUpO1xuICB9XG5cbiAgc2VsZWN0VXNlcihldnQ6IGFueSwgdXNlcjogYW55KSB7XG4gICAgaWYgKGV2dC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzW3VzZXIuaWRdID0gdXNlcjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZFVzZXJzW3VzZXIuaWRdO1xuICAgIH1cbiAgfVxuXG4gIHNob3dTZWxlY3RlZCgpIHtcbiAgICB0aGlzLmxpc3RUeXBlID0gJ2NoZWNrZWQnO1xuICAgIHRoaXMudXNlcnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuc2VsZWN0ZWRVc2Vycykge1xuICAgICAgdGhpcy51c2Vycy5wdXNoKHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuTW9kYWwoKSB7XG4gICAgaWYgKHRoaXMubmV3ZmVlZCkge1xuICAgICAgJCgnI3B1YmxpY2F0aW9uTW9kYWwnKS5tb2RhbCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maXJtU2hhcmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TmV3RmVlZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXTtcbiAgICB0aGlzLmFzYXBTZXJ2aWNlLmJhc2VQYXRoID0gXCJhcGkvdjIvYWRtaW5cIjtcbiAgICB0aGlzLmFzYXBTZXJ2aWNlLmVudGl0eU5hbWUgPSBcImNvbG9yXCI7XG4gICAgdGhpcy5hc2FwU2VydmljZS5nZXRSZXNvdXJjZSh0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuY2xpZW50X2lkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgdGhpcy5uZXdmZWVkID0gcmVzcG9uc2UuZGF0YS5uZXdmZWVkO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -250,7 +250,7 @@ var FeedCommentsComponent = /** @class */ (function () {
250
250
  * @return {?}
251
251
  */
252
252
  function (user) { return user.id; }));
253
- this.userService.usersChecked({ post_id: this.feed_id, user_id: selected_users, comment: comment, type: 'post' }, { comments: true }).subscribe();
253
+ this.userService.usersChecked({ post_id: this.feed_id, user_id: selected_users, comment: comment, type: 'comment' }, { comments: true }).subscribe();
254
254
  this.onLoadingComment = true;
255
255
  collection.add(data);
256
256
  /** @type {?} */
@@ -676,4 +676,4 @@ if (false) {
676
676
  /** @type {?} */
677
677
  FeedCommentsComponent.prototype.userService;
678
678
  }
679
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1jb21tZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLWNvbW1lbnRzL2ZlZWQtY29tbWVudHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZEO0lBaUNFLCtCQUNTLE1BQWMsRUFDZCxFQUFvQixFQUNwQixXQUE0QixFQUM1QixPQUFxQixFQUNyQixXQUF3QixFQUN4QixXQUF3QjtRQUx4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF2QjFCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFLbEIsa0JBQWEs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Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBBc2FwRmVlZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hc2FwLWZlZWQuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEdsb2JhbCwgQXNhcFNlcnZpY2UgfSBmcm9tICdhc2FwLWNydWQnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZWVkLWNvbW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQtY29tbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mZWVkLWNvbW1lbnRzLmNvbXBvbmVudC5zY3NzJywgJy4uL2FzYXAtZmVlZC5iZXRhLmNvbXBvbmVudGUuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVXNlclNlcnZpY2UgXVxufSlcbmV4cG9ydCBjbGFzcyBGZWVkQ29tbWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29tbWVudCcsIHtzdGF0aWM6IGZhbHNlfSkgaW5wdXRDb21tZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdyZXBseUlucHV0Q29tbWVudCcsIHtzdGF0aWM6IGZhbHNlfSkgcmVwbHlJbnB1dENvbW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0UmVwbHknLCB7c3RhdGljOiBmYWxzZX0pIGlucHV0UmVwbHk6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBJbnB1dCgpIGZlZWRfaWQ7XG4gIEBJbnB1dCgpIHVzZXI7XG5cbiAgcHVibGljIGNvbW1lbnRzID0gW107XG4gIHB1YmxpYyByZXBseWluZ0NvbW1lbnQgPSBbXTtcbiAgcHVibGljIHJlcGx5aW5nUmVzcG9uc2UgPSBbXTtcbiAgcHVibGljIG1lbnRpb25zTGlzdDtcbiAgcHVibGljIGxpbWl0Q29tbWVudHNUbyA9IDM7XG4gIHB1YmxpYyBsaW1pdFJlcGx5c1RvID0gMTtcbiAgcHVibGljIGNvbW1lbnQ7XG4gIHB1YmxpYyByZXBseTtcbiAgcHVibGljIGVkaXRlZENvbW1lbnQ7XG4gIHB1YmxpYyBlZGl0ZWRSZXBseTtcbiAgcHVibGljIG9uTG9hZGluZ0xpa2UgPSBmYWxzZTtcbiAgcHVibGljIG9uTG9hZGluZ1JlcGx5ID0gZmFsc2U7XG4gIHB1YmxpYyBvbkxvYWRpbmdDb21tZW50ID0gZmFsc2U7XG4gIHB1YmxpYyBpc01hcmtpbmcgPSBmYWxzZTtcbiAgcHVibGljIHVzZXJzOiBhbnlbXTtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ2xvYmFsOiBHbG9iYWwsXG4gICAgcHVibGljIGRiOiBBbmd1bGFyRmlyZXN0b3JlLFxuICAgIHB1YmxpYyBmZWVkU2VydmljZTogQXNhcEZlZWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXG4gICAgcHVibGljIGFzYXBTZXJ2aWNlOiBBc2FwU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRDb21tZW50cyh0aGlzLmZlZWRfaWQpO1xuICB9XG5cbiAgcHVibGljIGdldENvbW1lbnRzKGZlZWRfaWQpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyhmZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJywgKHJlZjogYW55KSA9PiB7XG4gICAgICAgIGxldCBxdWVyeSA9IHJlZi5vcmRlckJ5KFwidXBkYXRlZF9hdFwiLCBcImRlc2NcIik7XG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgIH0pO1xuXG5cbiAgICBjb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZSgoY29tbWVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmNvbW1lbnRzID0gW107XG4gICAgICBjb21tZW50Lm1hcChpdGVtID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSBpdGVtLnBheWxvYWQuZG9jLmRhdGEoKTtcbiAgICAgICAgZGF0YS5pZCA9IGl0ZW0ucGF5bG9hZC5kb2MuaWQ7XG4gICAgICAgIGRhdGEubGlrZUZvck1lID0gZmFsc2U7XG4gICAgICAgIGRhdGEubGltaXRSZXBseXNUbyA9IDA7XG5cbiAgICAgICAgY29uc3QgbGlrZXNDb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgICAgIC5kb2MoZmVlZF9pZClcbiAgICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAgIC5kb2MoZGF0YS5pZClcbiAgICAgICAgICAuY29sbGVjdGlvbignbGlrZScpO1xuXG5cbiAgICAgICAgbGlrZXNDb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZShsaWtlID0+IHtcbiAgICAgICAgICBkYXRhLmxpa2VzID0gW107XG4gICAgICAgICAgbGlrZS5tYXAoc3ViSXRlbUxpa2UgPT4ge1xuICAgICAgICAgICAgbGV0IGxpa2VEYXRhID0gc3ViSXRlbUxpa2UucGF5bG9hZC5kb2MuZGF0YSgpO1xuICAgICAgICAgICAgbGlrZURhdGEuaWQgPSBzdWJJdGVtTGlrZS5wYXlsb2FkLmRvY1snaWQnXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSkge1xuICAgICAgICAgICAgICBpZiAobGlrZURhdGEudXNlcl9pbmZvICYmIGxpa2VEYXRhLnVzZXJfaW5mby5pZCA9PT0gdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5saWtlRm9yTWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEubGlrZUZvck1lSUQgPSBsaWtlRGF0YS5pZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhLmxpa2VzLnB1c2gobGlrZURhdGEpO1xuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlcGx5Q29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgICAgICAuZG9jKGZlZWRfaWQpXG4gICAgICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgICAgICAuZG9jKGRhdGEuaWQpXG4gICAgICAgICAgLmNvbGxlY3Rpb24oJ3JlcGx5JywgcmVmID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZWYub3JkZXJCeSgndXBkYXRlZF9hdCcsICdkZXNjJyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmVwbHlDb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZShyZXBseSA9PiB7XG4gICAgICAgICAgZGF0YS5yZXBseXMgPSBbXTtcbiAgICAgICAgICByZXBseS5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCByZXBseURhdGEgPSBzdWJJdGVtLnBheWxvYWQuZG9jLmRhdGEoKTtcbiAgICAgICAgICAgIHJlcGx5RGF0YS5pZCA9IHN1Ykl0ZW0ucGF5bG9hZC5kb2NbJ2lkJ107XG5cbiAgICAgICAgICAgIGRhdGEucmVwbHlzLnB1c2gocmVwbHlEYXRhKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbW1lbnRzLnB1c2goZGF0YSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlcGx5Q29tbWVudChpKSB7XG4gICAgaWYgKCF0aGlzLnJlcGx5aW5nQ29tbWVudFtpXSkge1xuICAgICAgdGhpcy5yZXBseWluZ0NvbW1lbnRbaV0gPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucmVwbHlpbmdDb21tZW50W2ldID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uUmVwbHlSZXNwb25zZShpKSB7XG4gICAgaWYgKCF0aGlzLnJlcGx5aW5nUmVzcG9uc2VbaV0pIHtcbiAgICAgIHRoaXMucmVwbHlpbmdSZXNwb25zZVtpXSA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yZXBseWluZ1Jlc3BvbnNlW2ldID0gZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2hvd0FsbFJlcGx5UmVzcG9uc2UoY29tbWVudElkeDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29tbWVudHNbY29tbWVudElkeF0ubGltaXRSZXBseXNUbyA9PT0gMCkge1xuICAgICAgdGhpcy5jb21tZW50c1tjb21tZW50SWR4XS5saW1pdFJlcGx5c1RvID0gdGhpcy5jb21tZW50c1tjb21tZW50SWR4XS5yZXBseXMubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbW1lbnRzW2NvbW1lbnRJZHhdLmxpbWl0UmVwbHlzVG8gPSAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1bm1lbnRpb25SZW1vdmVkVXNlcnMoY29tbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWVudGlvbnM6IGFueSA9IFtdO1xuICAgIGlmICh0aGlzLm1lbnRpb25zTGlzdCAmJiBjb21tZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IHVzZXIgb2YgdGhpcy5tZW50aW9uc0xpc3QpIHtcbiAgICAgICAgaWYgKGNvbW1lbnQuaW5jbHVkZXModXNlci5uYW1lKSkge1xuICAgICAgICAgIG1lbnRpb25zLnB1c2godXNlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tZW50aW9uc0xpc3QgPSBtZW50aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzZW5kQ29tbWVudChjb21tZW50KSB7XG4gICAgdGhpcy51bm1lbnRpb25SZW1vdmVkVXNlcnMoY29tbWVudCk7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBjb21tZW50OiBjb21tZW50LFxuICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICB1c2VyX2luZm86IHtcbiAgICAgICAgaWQ6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5pZCxcbiAgICAgICAgbmFtZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWUsXG4gICAgICAgIHBpY3R1cmU6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5waWN0dXJlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJyk7XG5cbiAgICBpZiAoY29tbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZF91c2VycyA9IHRoaXMubWVudGlvbnNMaXN0Lm1hcCh1c2VyID0+IHVzZXIuaWQpO1xuICAgICAgdGhpcy51c2VyU2VydmljZS51c2Vyc0NoZWNrZWQoe3Bvc3RfaWQ6IHRoaXMuZmVlZF9pZCwgdXNlcl9pZDogc2VsZWN0ZWRfdXNlcnMsIGNvbW1lbnQsIHR5cGU6ICdwb3N0J30sIHtjb21tZW50czogdHJ1ZX0pLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY29sbGVjdGlvbi5hZGQoZGF0YSk7XG5cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICAgICAgc291cmNlOid3ZWInLFxuICAgICAgICB0aXRsZTogYE5vdm8gY29tZW50w6FyaW9gLFxuICAgICAgICBkZXNjcmlwdGlvbjogYCR7dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWV9OiAke2NvbW1lbnR9YCxcbiAgICAgICAgdXNlcjogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLFxuICAgICAgICBjbGllbnRfaWQ6dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmNsaWVudF9pZCxcbiAgICAgICAgcmVkaXJlY3Q6IGAvcG9ydGFsLyR7dGhpcy5mZWVkX2lkfWBcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXJ2aWNlLnNlbmROb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCB0aGlzLnVzZXIsICdmZWVkJyk7XG5cbiAgICAgIHRoaXMuY29tbWVudCA9IFwiXCI7XG4gICAgICB0aGlzLm1lbnRpb25zTGlzdCA9IFtdO1xuICAgICAgdGhpcy5vbkxvYWRpbmdDb21tZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlcGx5Q29tbWVudChjb21tZW50X2lkLCBjb21tZW50LCB1c2VyX2luZm8sIGkpIHtcbiAgICB0aGlzLnVubWVudGlvblJlbW92ZWRVc2Vycyhjb21tZW50KTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGNvbW1lbnQ6IGNvbW1lbnQsXG4gICAgICBjcmVhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgIHVzZXJfaW5mbzoge1xuICAgICAgICBpZDogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkLFxuICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29tbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9uTG9hZGluZ1JlcGx5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdyZXBseScpO1xuXG4gICAgICBjb2xsZWN0aW9uLmFkZChkYXRhKTtcblxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0ge1xuICAgICAgICBzb3VyY2U6J3dlYicsXG4gICAgICAgIHRpdGxlOiBgTm92YSBSZXNwb3N0YWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZX0gcmVzcG9uZGV1OiAke2NvbW1lbnR9YCxcbiAgICAgICAgY2xpZW50X2lkOnRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5jbGllbnRfaWQsXG4gICAgICAgIHVzZXI6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSxcbiAgICAgICAgcmVkaXJlY3Q6IGAvcG9ydGFsLyR7dGhpcy5mZWVkX2lkfWBcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VsZWN0ZWRfdXNlcnMgPSB0aGlzLm1lbnRpb25zTGlzdC5tYXAodXNlciA9PiB1c2VyLmlkKTtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlcnNDaGVja2VkKHtwb3N0X2lkOiB0aGlzLmZlZWRfaWQsIHVzZXJfaWQ6IHNlbGVjdGVkX3VzZXJzfSwge2NvbW1lbnRzOiB0cnVlfSkuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2VuZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHVzZXJfaW5mbywgJ2ZlZWQnKTtcblxuICAgICAgdGhpcy5yZXBseSA9IFwiXCI7XG4gICAgICB0aGlzLm9uTG9hZGluZ1JlcGx5ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlcGx5aW5nQ29tbWVudFtpXSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXBseWluZ1Jlc3BvbnNlID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJlcGx5KGNvbW1lbnRfaWQsIHJlcGx5X2lkKSB7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdyZXBseScpXG4gICAgICAuZG9jKHJlcGx5X2lkKTtcblxuICAgIGNvbGxlY3Rpb24uZGVsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQ29tbWVudChjb21tZW50X2lkKSB7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgIC5kb2MoY29tbWVudF9pZCk7XG5cbiAgICBjb2xsZWN0aW9uLmRlbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbmRMaWtlQ29tbWVudChjb21tZW50X2lkLCBsaWtlX2lkID0gbnVsbCwgaXRlbSkge1xuICAgIHRoaXMub25Mb2FkaW5nTGlrZSA9IHRydWU7XG4gICAgaWYgKCFpdGVtLmxpa2VGb3JNZSkge1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICAgIHVzZXJfaW5mbzoge1xuICAgICAgICAgIGlkOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuaWQsXG4gICAgICAgICAgbmFtZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWUsXG4gICAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgICAuZG9jKHRoaXMuZmVlZF9pZClcbiAgICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgICAgLmRvYyhjb21tZW50X2lkKVxuICAgICAgICAuY29sbGVjdGlvbignbGlrZScpO1xuXG4gICAgICBjb2xsZWN0aW9uLmFkZChkYXRhKTtcblxuXG4gICAgICBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgICAgIHNvdXJjZTond2ViJyxcbiAgICAgICAgdGl0bGU6IGBOb3ZhIEN1cnRpZGFgLFxuICAgICAgICBkZXNjcmlwdGlvbjogYCR7dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWV9IGN1cnRpdSBzZXUgY29tZW50w6FyaW86ICR7aXRlbS5jb21tZW50fWAsXG4gICAgICAgIGNsaWVudF9pZDp0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuY2xpZW50X2lkLFxuICAgICAgICB1c2VyOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCksXG4gICAgICAgIHJlZGlyZWN0OiBgL3BvcnRhbC8ke3RoaXMuZmVlZF9pZH1gXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VydmljZS5zZW5kTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgaXRlbS51c2VyX2luZm8sICdmZWVkJyk7XG5cbiAgICAgIGl0ZW0ubGlrZUZvck1lID0gdHJ1ZTtcbiAgICAgIHRoaXMub25Mb2FkaW5nTGlrZSA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdsaWtlJylcbiAgICAgICAgLmRvYyhsaWtlX2lkKTtcblxuICAgICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgICAgIGl0ZW0ubGlrZUZvck1lID0gZmFsc2U7XG4gICAgICB0aGlzLm9uTG9hZGluZ0xpa2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZE1vcmVDb21tZW50cygpIHtcbiAgICB0aGlzLmxpbWl0Q29tbWVudHNUbyA9IHRoaXMubGltaXRDb21tZW50c1RvICsgMztcbiAgfVxuXG4gIHB1YmxpYyBsb2FkTW9yZVJlcGx5cyhpdGVtKSB7XG4gICAgaXRlbS5saW1pdFJlcGx5c1RvID0gaXRlbS5saW1pdFJlcGx5c1RvICsgMztcbiAgfVxuXG4gIHB1YmxpYyBsaW5raWZ5KHN0cikge1xuICAgIHZhciByZTogYW55O1xuICAgIHJlID0gW1xuICAgICAgXCJcXFxcYigoPzpodHRwcz98ZnRwKTovL1teXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIod3d3XFxcXC5bXlxcXFxzXFxcIic8Pl0rKVxcXFxiXCIsXG4gICAgICBcIlxcXFxiKFxcXFx3W1xcXFx3ListXSpAW1xcXFx3Li1dK1xcXFwuW2Etel17Miw2fSlcXFxcYlwiLFxuICAgICAgXCIjKFthLXowLTldKylcIl07XG4gICAgcmUgPSBuZXcgUmVnRXhwKHJlLmpvaW4oJ3wnKSwgXCJnaVwiKTtcblxuICAgIGlmIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoLCB1cmwsIHd3dywgbWFpbCwgdHdpdGxlcikge1xuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIHRhcmdldD0nX2JsYW5rJyAoY2xpY2spPSdyZWRpcmVjdE5ld0xpbmsodXJsKScgaHJlZj1cXFwiXCIgKyB1cmwgKyBcIlxcXCI+XCIgKyB1cmwgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKHd3dylcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJodHRwOi8vXCIgKyB3d3cgKyBcIlxcXCI+XCIgKyB3d3cgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKG1haWwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiIzwvYT5cIjtcbiAgICAgICAgaWYgKHR3aXRsZXIpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwicG9ydGFsL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudCgnIycgKyB0d2l0bGVyKSArIFwiXFxcIj4jXCIgKyB0d2l0bGVyICsgXCI8L2E+XCI7XG4gICAgICAgIC8vIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcIiNcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcblxuICAgICAgICAvLyBzaG91bGRudCBnZXQgaGVyZSwgYnV0IGp1c3QgaW4gY2FzZVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FZGl0UmVwbHkocmVwbHkpIHtcbiAgICB0aGlzLmVkaXRlZFJlcGx5ID0gcmVwbHkuY29tbWVudDtcbiAgICBpZiAocmVwbHkub25FZGl0KSB7XG4gICAgICByZXBseS5vbkVkaXQgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXBseS5vbkVkaXQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRDb21tZW50KGNvbW1lbnQpIHtcbiAgICB0aGlzLmVkaXRlZENvbW1lbnQgPSBjb21tZW50LmNvbW1lbnQ7XG5cbiAgICBpZiAoY29tbWVudC5vbkVkaXQpIHtcbiAgICAgIGNvbW1lbnQub25FZGl0ID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29tbWVudC5vbkVkaXQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb21tZW50KGlkLCBjb21tZW50KSB7XG4gICAgdGhpcy5vbkxvYWRpbmdDb21tZW50ID0gdHJ1ZTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGNvbW1lbnQ6IHRoaXMuZWRpdGVkQ29tbWVudCxcbiAgICAgIGVkaXRlZDogdHJ1ZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KClcbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgLmRvYyhpZCk7XG5cbiAgICBpZiAoY29tbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICBjb2xsZWN0aW9uLnVwZGF0ZShkYXRhKTtcbiAgICAgIHRoaXMuZWRpdGVkQ29tbWVudCA9IFwiXCI7XG4gICAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVwbHkoY29tbWVudF9pZCwgb2xkX3JlcGx5LCByZXBseSkge1xuICAgIHRoaXMub25Mb2FkaW5nUmVwbHkgPSB0cnVlO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgY29tbWVudDogcmVwbHksXG4gICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAuZG9jKHRoaXMuZmVlZF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAuY29sbGVjdGlvbigncmVwbHknKVxuICAgICAgLmRvYyhvbGRfcmVwbHkuaWQpO1xuICAgIGNvbGxlY3Rpb24udXBkYXRlKGRhdGEpO1xuICAgIHRoaXMuZWRpdGVkQ29tbWVudCA9IFwiXCI7XG4gICAgdGhpcy5vbkxvYWRpbmdSZXBseSA9IGZhbHNlO1xuICAgIG9sZF9yZXBseS5vbkVkaXQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBtZW50aW9uVXNlcih1c2VyOiBhbnkpIHtcbiAgICB0aGlzLm1lbnRpb25zTGlzdCA9IHRoaXMubWVudGlvbnNMaXN0IHx8IFtdO1xuICAgIHRoaXMubWVudGlvbnNMaXN0LnB1c2godXNlcik7XG4gIH1cblxufVxuIl19
679
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1jb21tZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLWNvbW1lbnRzL2ZlZWQtY29tbWVudHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZEO0lBaUNFLCtCQUNTLE1BQWMsRUFDZCxFQUFvQixFQUNwQixXQUE0QixFQUM1QixPQUFxQixFQUNyQixXQUF3QixFQUN4QixXQUF3QjtRQUx4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF2QjFCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFLbEIsa0JBQWEs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Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBBc2FwRmVlZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hc2FwLWZlZWQuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEdsb2JhbCwgQXNhcFNlcnZpY2UgfSBmcm9tICdhc2FwLWNydWQnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZWVkLWNvbW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQtY29tbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mZWVkLWNvbW1lbnRzLmNvbXBvbmVudC5zY3NzJywgJy4uL2FzYXAtZmVlZC5iZXRhLmNvbXBvbmVudGUuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVXNlclNlcnZpY2UgXVxufSlcbmV4cG9ydCBjbGFzcyBGZWVkQ29tbWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29tbWVudCcsIHtzdGF0aWM6IGZhbHNlfSkgaW5wdXRDb21tZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdyZXBseUlucHV0Q29tbWVudCcsIHtzdGF0aWM6IGZhbHNlfSkgcmVwbHlJbnB1dENvbW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0UmVwbHknLCB7c3RhdGljOiBmYWxzZX0pIGlucHV0UmVwbHk6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBJbnB1dCgpIGZlZWRfaWQ7XG4gIEBJbnB1dCgpIHVzZXI7XG5cbiAgcHVibGljIGNvbW1lbnRzID0gW107XG4gIHB1YmxpYyByZXBseWluZ0NvbW1lbnQgPSBbXTtcbiAgcHVibGljIHJlcGx5aW5nUmVzcG9uc2UgPSBbXTtcbiAgcHVibGljIG1lbnRpb25zTGlzdDtcbiAgcHVibGljIGxpbWl0Q29tbWVudHNUbyA9IDM7XG4gIHB1YmxpYyBsaW1pdFJlcGx5c1RvID0gMTtcbiAgcHVibGljIGNvbW1lbnQ7XG4gIHB1YmxpYyByZXBseTtcbiAgcHVibGljIGVkaXRlZENvbW1lbnQ7XG4gIHB1YmxpYyBlZGl0ZWRSZXBseTtcbiAgcHVibGljIG9uTG9hZGluZ0xpa2UgPSBmYWxzZTtcbiAgcHVibGljIG9uTG9hZGluZ1JlcGx5ID0gZmFsc2U7XG4gIHB1YmxpYyBvbkxvYWRpbmdDb21tZW50ID0gZmFsc2U7XG4gIHB1YmxpYyBpc01hcmtpbmcgPSBmYWxzZTtcbiAgcHVibGljIHVzZXJzOiBhbnlbXTtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ2xvYmFsOiBHbG9iYWwsXG4gICAgcHVibGljIGRiOiBBbmd1bGFyRmlyZXN0b3JlLFxuICAgIHB1YmxpYyBmZWVkU2VydmljZTogQXNhcEZlZWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXG4gICAgcHVibGljIGFzYXBTZXJ2aWNlOiBBc2FwU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRDb21tZW50cyh0aGlzLmZlZWRfaWQpO1xuICB9XG5cbiAgcHVibGljIGdldENvbW1lbnRzKGZlZWRfaWQpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyhmZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJywgKHJlZjogYW55KSA9PiB7XG4gICAgICAgIGxldCBxdWVyeSA9IHJlZi5vcmRlckJ5KFwidXBkYXRlZF9hdFwiLCBcImRlc2NcIik7XG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgIH0pO1xuXG5cbiAgICBjb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZSgoY29tbWVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmNvbW1lbnRzID0gW107XG4gICAgICBjb21tZW50Lm1hcChpdGVtID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSBpdGVtLnBheWxvYWQuZG9jLmRhdGEoKTtcbiAgICAgICAgZGF0YS5pZCA9IGl0ZW0ucGF5bG9hZC5kb2MuaWQ7XG4gICAgICAgIGRhdGEubGlrZUZvck1lID0gZmFsc2U7XG4gICAgICAgIGRhdGEubGltaXRSZXBseXNUbyA9IDA7XG5cbiAgICAgICAgY29uc3QgbGlrZXNDb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgICAgIC5kb2MoZmVlZF9pZClcbiAgICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAgIC5kb2MoZGF0YS5pZClcbiAgICAgICAgICAuY29sbGVjdGlvbignbGlrZScpO1xuXG5cbiAgICAgICAgbGlrZXNDb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZShsaWtlID0+IHtcbiAgICAgICAgICBkYXRhLmxpa2VzID0gW107XG4gICAgICAgICAgbGlrZS5tYXAoc3ViSXRlbUxpa2UgPT4ge1xuICAgICAgICAgICAgbGV0IGxpa2VEYXRhID0gc3ViSXRlbUxpa2UucGF5bG9hZC5kb2MuZGF0YSgpO1xuICAgICAgICAgICAgbGlrZURhdGEuaWQgPSBzdWJJdGVtTGlrZS5wYXlsb2FkLmRvY1snaWQnXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSkge1xuICAgICAgICAgICAgICBpZiAobGlrZURhdGEudXNlcl9pbmZvICYmIGxpa2VEYXRhLnVzZXJfaW5mby5pZCA9PT0gdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5saWtlRm9yTWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEubGlrZUZvck1lSUQgPSBsaWtlRGF0YS5pZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhLmxpa2VzLnB1c2gobGlrZURhdGEpO1xuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlcGx5Q29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgICAgICAuZG9jKGZlZWRfaWQpXG4gICAgICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgICAgICAuZG9jKGRhdGEuaWQpXG4gICAgICAgICAgLmNvbGxlY3Rpb24oJ3JlcGx5JywgcmVmID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZWYub3JkZXJCeSgndXBkYXRlZF9hdCcsICdkZXNjJyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmVwbHlDb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZShyZXBseSA9PiB7XG4gICAgICAgICAgZGF0YS5yZXBseXMgPSBbXTtcbiAgICAgICAgICByZXBseS5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCByZXBseURhdGEgPSBzdWJJdGVtLnBheWxvYWQuZG9jLmRhdGEoKTtcbiAgICAgICAgICAgIHJlcGx5RGF0YS5pZCA9IHN1Ykl0ZW0ucGF5bG9hZC5kb2NbJ2lkJ107XG5cbiAgICAgICAgICAgIGRhdGEucmVwbHlzLnB1c2gocmVwbHlEYXRhKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbW1lbnRzLnB1c2goZGF0YSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlcGx5Q29tbWVudChpKSB7XG4gICAgaWYgKCF0aGlzLnJlcGx5aW5nQ29tbWVudFtpXSkge1xuICAgICAgdGhpcy5yZXBseWluZ0NvbW1lbnRbaV0gPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucmVwbHlpbmdDb21tZW50W2ldID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uUmVwbHlSZXNwb25zZShpKSB7XG4gICAgaWYgKCF0aGlzLnJlcGx5aW5nUmVzcG9uc2VbaV0pIHtcbiAgICAgIHRoaXMucmVwbHlpbmdSZXNwb25zZVtpXSA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yZXBseWluZ1Jlc3BvbnNlW2ldID0gZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2hvd0FsbFJlcGx5UmVzcG9uc2UoY29tbWVudElkeDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29tbWVudHNbY29tbWVudElkeF0ubGltaXRSZXBseXNUbyA9PT0gMCkge1xuICAgICAgdGhpcy5jb21tZW50c1tjb21tZW50SWR4XS5saW1pdFJlcGx5c1RvID0gdGhpcy5jb21tZW50c1tjb21tZW50SWR4XS5yZXBseXMubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbW1lbnRzW2NvbW1lbnRJZHhdLmxpbWl0UmVwbHlzVG8gPSAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1bm1lbnRpb25SZW1vdmVkVXNlcnMoY29tbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWVudGlvbnM6IGFueSA9IFtdO1xuICAgIGlmICh0aGlzLm1lbnRpb25zTGlzdCAmJiBjb21tZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IHVzZXIgb2YgdGhpcy5tZW50aW9uc0xpc3QpIHtcbiAgICAgICAgaWYgKGNvbW1lbnQuaW5jbHVkZXModXNlci5uYW1lKSkge1xuICAgICAgICAgIG1lbnRpb25zLnB1c2godXNlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tZW50aW9uc0xpc3QgPSBtZW50aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzZW5kQ29tbWVudChjb21tZW50KSB7XG4gICAgdGhpcy51bm1lbnRpb25SZW1vdmVkVXNlcnMoY29tbWVudCk7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBjb21tZW50OiBjb21tZW50LFxuICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICB1c2VyX2luZm86IHtcbiAgICAgICAgaWQ6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5pZCxcbiAgICAgICAgbmFtZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWUsXG4gICAgICAgIHBpY3R1cmU6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5waWN0dXJlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJyk7XG5cbiAgICBpZiAoY29tbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZF91c2VycyA9IHRoaXMubWVudGlvbnNMaXN0Lm1hcCh1c2VyID0+IHVzZXIuaWQpO1xuICAgICAgdGhpcy51c2VyU2VydmljZS51c2Vyc0NoZWNrZWQoe3Bvc3RfaWQ6IHRoaXMuZmVlZF9pZCwgdXNlcl9pZDogc2VsZWN0ZWRfdXNlcnMsIGNvbW1lbnQsIHR5cGU6ICdjb21tZW50J30sIHtjb21tZW50czogdHJ1ZX0pLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY29sbGVjdGlvbi5hZGQoZGF0YSk7XG5cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICAgICAgc291cmNlOid3ZWInLFxuICAgICAgICB0aXRsZTogYE5vdm8gY29tZW50w6FyaW9gLFxuICAgICAgICBkZXNjcmlwdGlvbjogYCR7dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWV9OiAke2NvbW1lbnR9YCxcbiAgICAgICAgdXNlcjogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLFxuICAgICAgICBjbGllbnRfaWQ6dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmNsaWVudF9pZCxcbiAgICAgICAgcmVkaXJlY3Q6IGAvcG9ydGFsLyR7dGhpcy5mZWVkX2lkfWBcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXJ2aWNlLnNlbmROb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCB0aGlzLnVzZXIsICdmZWVkJyk7XG5cbiAgICAgIHRoaXMuY29tbWVudCA9IFwiXCI7XG4gICAgICB0aGlzLm1lbnRpb25zTGlzdCA9IFtdO1xuICAgICAgdGhpcy5vbkxvYWRpbmdDb21tZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlcGx5Q29tbWVudChjb21tZW50X2lkLCBjb21tZW50LCB1c2VyX2luZm8sIGkpIHtcbiAgICB0aGlzLnVubWVudGlvblJlbW92ZWRVc2Vycyhjb21tZW50KTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGNvbW1lbnQ6IGNvbW1lbnQsXG4gICAgICBjcmVhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgIHVzZXJfaW5mbzoge1xuICAgICAgICBpZDogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkLFxuICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29tbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9uTG9hZGluZ1JlcGx5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdyZXBseScpO1xuXG4gICAgICBjb2xsZWN0aW9uLmFkZChkYXRhKTtcblxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0ge1xuICAgICAgICBzb3VyY2U6J3dlYicsXG4gICAgICAgIHRpdGxlOiBgTm92YSBSZXNwb3N0YWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZX0gcmVzcG9uZGV1OiAke2NvbW1lbnR9YCxcbiAgICAgICAgY2xpZW50X2lkOnRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5jbGllbnRfaWQsXG4gICAgICAgIHVzZXI6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSxcbiAgICAgICAgcmVkaXJlY3Q6IGAvcG9ydGFsLyR7dGhpcy5mZWVkX2lkfWBcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VsZWN0ZWRfdXNlcnMgPSB0aGlzLm1lbnRpb25zTGlzdC5tYXAodXNlciA9PiB1c2VyLmlkKTtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlcnNDaGVja2VkKHtwb3N0X2lkOiB0aGlzLmZlZWRfaWQsIHVzZXJfaWQ6IHNlbGVjdGVkX3VzZXJzfSwge2NvbW1lbnRzOiB0cnVlfSkuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2VuZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHVzZXJfaW5mbywgJ2ZlZWQnKTtcblxuICAgICAgdGhpcy5yZXBseSA9IFwiXCI7XG4gICAgICB0aGlzLm9uTG9hZGluZ1JlcGx5ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlcGx5aW5nQ29tbWVudFtpXSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXBseWluZ1Jlc3BvbnNlID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJlcGx5KGNvbW1lbnRfaWQsIHJlcGx5X2lkKSB7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgIC5kb2MoY29tbWVudF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdyZXBseScpXG4gICAgICAuZG9jKHJlcGx5X2lkKTtcblxuICAgIGNvbGxlY3Rpb24uZGVsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQ29tbWVudChjb21tZW50X2lkKSB7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZClcbiAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgIC5kb2MoY29tbWVudF9pZCk7XG5cbiAgICBjb2xsZWN0aW9uLmRlbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbmRMaWtlQ29tbWVudChjb21tZW50X2lkLCBsaWtlX2lkID0gbnVsbCwgaXRlbSkge1xuICAgIHRoaXMub25Mb2FkaW5nTGlrZSA9IHRydWU7XG4gICAgaWYgKCFpdGVtLmxpa2VGb3JNZSkge1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICAgIHVzZXJfaW5mbzoge1xuICAgICAgICAgIGlkOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuaWQsXG4gICAgICAgICAgbmFtZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWUsXG4gICAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgICAuZG9jKHRoaXMuZmVlZF9pZClcbiAgICAgICAgLmNvbGxlY3Rpb24oJ2NvbW1lbnRzJylcbiAgICAgICAgLmRvYyhjb21tZW50X2lkKVxuICAgICAgICAuY29sbGVjdGlvbignbGlrZScpO1xuXG4gICAgICBjb2xsZWN0aW9uLmFkZChkYXRhKTtcblxuXG4gICAgICBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgICAgIHNvdXJjZTond2ViJyxcbiAgICAgICAgdGl0bGU6IGBOb3ZhIEN1cnRpZGFgLFxuICAgICAgICBkZXNjcmlwdGlvbjogYCR7dGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWV9IGN1cnRpdSBzZXUgY29tZW50w6FyaW86ICR7aXRlbS5jb21tZW50fWAsXG4gICAgICAgIGNsaWVudF9pZDp0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuY2xpZW50X2lkLFxuICAgICAgICB1c2VyOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCksXG4gICAgICAgIHJlZGlyZWN0OiBgL3BvcnRhbC8ke3RoaXMuZmVlZF9pZH1gXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VydmljZS5zZW5kTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgaXRlbS51c2VyX2luZm8sICdmZWVkJyk7XG5cbiAgICAgIGl0ZW0ubGlrZUZvck1lID0gdHJ1ZTtcbiAgICAgIHRoaXMub25Mb2FkaW5nTGlrZSA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAgIC5kb2ModGhpcy5mZWVkX2lkKVxuICAgICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAgIC5jb2xsZWN0aW9uKCdsaWtlJylcbiAgICAgICAgLmRvYyhsaWtlX2lkKTtcblxuICAgICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgICAgIGl0ZW0ubGlrZUZvck1lID0gZmFsc2U7XG4gICAgICB0aGlzLm9uTG9hZGluZ0xpa2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZE1vcmVDb21tZW50cygpIHtcbiAgICB0aGlzLmxpbWl0Q29tbWVudHNUbyA9IHRoaXMubGltaXRDb21tZW50c1RvICsgMztcbiAgfVxuXG4gIHB1YmxpYyBsb2FkTW9yZVJlcGx5cyhpdGVtKSB7XG4gICAgaXRlbS5saW1pdFJlcGx5c1RvID0gaXRlbS5saW1pdFJlcGx5c1RvICsgMztcbiAgfVxuXG4gIHB1YmxpYyBsaW5raWZ5KHN0cikge1xuICAgIHZhciByZTogYW55O1xuICAgIHJlID0gW1xuICAgICAgXCJcXFxcYigoPzpodHRwcz98ZnRwKTovL1teXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIod3d3XFxcXC5bXlxcXFxzXFxcIic8Pl0rKVxcXFxiXCIsXG4gICAgICBcIlxcXFxiKFxcXFx3W1xcXFx3ListXSpAW1xcXFx3Li1dK1xcXFwuW2Etel17Miw2fSlcXFxcYlwiLFxuICAgICAgXCIjKFthLXowLTldKylcIl07XG4gICAgcmUgPSBuZXcgUmVnRXhwKHJlLmpvaW4oJ3wnKSwgXCJnaVwiKTtcblxuICAgIGlmIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoLCB1cmwsIHd3dywgbWFpbCwgdHdpdGxlcikge1xuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIHRhcmdldD0nX2JsYW5rJyAoY2xpY2spPSdyZWRpcmVjdE5ld0xpbmsodXJsKScgaHJlZj1cXFwiXCIgKyB1cmwgKyBcIlxcXCI+XCIgKyB1cmwgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKHd3dylcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJodHRwOi8vXCIgKyB3d3cgKyBcIlxcXCI+XCIgKyB3d3cgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKG1haWwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiIzwvYT5cIjtcbiAgICAgICAgaWYgKHR3aXRsZXIpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwicG9ydGFsL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudCgnIycgKyB0d2l0bGVyKSArIFwiXFxcIj4jXCIgKyB0d2l0bGVyICsgXCI8L2E+XCI7XG4gICAgICAgIC8vIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcIiNcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcblxuICAgICAgICAvLyBzaG91bGRudCBnZXQgaGVyZSwgYnV0IGp1c3QgaW4gY2FzZVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FZGl0UmVwbHkocmVwbHkpIHtcbiAgICB0aGlzLmVkaXRlZFJlcGx5ID0gcmVwbHkuY29tbWVudDtcbiAgICBpZiAocmVwbHkub25FZGl0KSB7XG4gICAgICByZXBseS5vbkVkaXQgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXBseS5vbkVkaXQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRDb21tZW50KGNvbW1lbnQpIHtcbiAgICB0aGlzLmVkaXRlZENvbW1lbnQgPSBjb21tZW50LmNvbW1lbnQ7XG5cbiAgICBpZiAoY29tbWVudC5vbkVkaXQpIHtcbiAgICAgIGNvbW1lbnQub25FZGl0ID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29tbWVudC5vbkVkaXQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb21tZW50KGlkLCBjb21tZW50KSB7XG4gICAgdGhpcy5vbkxvYWRpbmdDb21tZW50ID0gdHJ1ZTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIGNvbW1lbnQ6IHRoaXMuZWRpdGVkQ29tbWVudCxcbiAgICAgIGVkaXRlZDogdHJ1ZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KClcbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKVxuICAgICAgLmRvYyh0aGlzLmZlZWRfaWQpXG4gICAgICAuY29sbGVjdGlvbignY29tbWVudHMnKVxuICAgICAgLmRvYyhpZCk7XG5cbiAgICBpZiAoY29tbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICBjb2xsZWN0aW9uLnVwZGF0ZShkYXRhKTtcbiAgICAgIHRoaXMuZWRpdGVkQ29tbWVudCA9IFwiXCI7XG4gICAgICB0aGlzLm9uTG9hZGluZ0NvbW1lbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVwbHkoY29tbWVudF9pZCwgb2xkX3JlcGx5LCByZXBseSkge1xuICAgIHRoaXMub25Mb2FkaW5nUmVwbHkgPSB0cnVlO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgY29tbWVudDogcmVwbHksXG4gICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpXG4gICAgICAuZG9jKHRoaXMuZmVlZF9pZClcbiAgICAgIC5jb2xsZWN0aW9uKCdjb21tZW50cycpXG4gICAgICAuZG9jKGNvbW1lbnRfaWQpXG4gICAgICAuY29sbGVjdGlvbigncmVwbHknKVxuICAgICAgLmRvYyhvbGRfcmVwbHkuaWQpO1xuICAgIGNvbGxlY3Rpb24udXBkYXRlKGRhdGEpO1xuICAgIHRoaXMuZWRpdGVkQ29tbWVudCA9IFwiXCI7XG4gICAgdGhpcy5vbkxvYWRpbmdSZXBseSA9IGZhbHNlO1xuICAgIG9sZF9yZXBseS5vbkVkaXQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBtZW50aW9uVXNlcih1c2VyOiBhbnkpIHtcbiAgICB0aGlzLm1lbnRpb25zTGlzdCA9IHRoaXMubWVudGlvbnNMaXN0IHx8IFtdO1xuICAgIHRoaXMubWVudGlvbnNMaXN0LnB1c2godXNlcik7XG4gIH1cblxufVxuIl19