@mtgame/core 0.2.61 → 0.2.62

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.
@@ -357,9 +357,13 @@ export class TournamentApi {
357
357
  }))).toPromise();
358
358
  });
359
359
  }
360
- getTournamentTeamUsers(tournamentTeamId) {
360
+ getTournamentTeamUsers(tournamentTeamId, includes = []) {
361
361
  return __awaiter(this, void 0, void 0, function* () {
362
- return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(map(result => TournamentTeamUser.toFront(result))).toPromise();
362
+ let params = new HttpParams();
363
+ for (const include of includes) {
364
+ params.append('include', include);
365
+ }
366
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`, { params }).pipe(map(result => TournamentTeamUser.toFront(result))).toPromise();
363
367
  });
364
368
  }
365
369
  myPermission(tournamentId) {
@@ -483,4 +487,4 @@ export function applyStatisticLeadersFilters(filters, params) {
483
487
  }
484
488
  return params;
485
489
  }
486
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9hcGkvdG91cm5hbWVudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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RSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNuRTtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsT0FBZ0MsRUFBRSxNQUFrQjtJQUMvRixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO0tBQ0Y7SUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO1FBQzFCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDekU7SUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDbEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDekQ7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFRvdXJuYW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUb3VybmFtZW50TmV3cyB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LW5ld3MnO1xuaW1wb3J0IHsgR2FtZSwgR2FtZVN0YXR1c2VzIH0gZnJvbSAnLi4vbW9kZWxzL2dhbWUnO1xuaW1wb3J0IHsgR2FtZVRpbWVsaW5lU3RhZ2VzIH0gZnJvbSAnLi4vbW9kZWxzL2dhbWUtdGltZWxpbmUtc3RhZ2VzJztcbmltcG9ydCB7IFRvdXJuYW1lbnRUZWFtIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtdGVhbSc7XG5pbXBvcnQgeyBUb3VybmFtZW50U3RhZ2UgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1zdGFnZSc7XG5pbXBvcnQgeyBQbGF5b2ZmIH0gZnJvbSAnLi4vbW9kZWxzL3BsYXlvZmYnO1xuaW1wb3J0IHsgUGFnaW5hdGVkUmVzcG9uc2UgfSBmcm9tICcuL3BhZ2luYXRlZC1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFza2V0YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9iYXNrZXRiYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBWb2xsZXliYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL3ZvbGxleWJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IFRvdXJuYW1lbnRUZWFtVXNlciB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXRlYW0tdXNlcic7XG5pbXBvcnQgeyBUb3VybmFtZW50U3RhZ2VUZWFtIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtc3RhZ2UtdGVhbSc7XG5pbXBvcnQgeyBUb3VybmFtZW50RXZlbnQsIFRvdXJuYW1lbnRFdmVudFR5cGVzIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtZXZlbnQnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEhvY2tleVN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9ob2NrZXktc3RhdGlzdGljJztcbmltcG9ydCB7IEZvb3RiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2Zvb3RiYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBMZWFndWVVc2VyUGVybWlzc2lvbnMgfSBmcm9tICcuLi9tb2RlbHMvbGVhZ3VlLXVzZXInO1xuaW1wb3J0IHsgSGFuZGJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvaGFuZGJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IFJ1Z2J5U3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL3J1Z2J5LXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBUb3VybmFtZW50R3JvdXAgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1ncm91cCc7XG5pbXBvcnQgeyBUZWFtQWNoaWV2ZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvdGVhbS1hY2hpZXZlbWVudCc7XG5pbXBvcnQgeyBXYXRlcnBvbG9TdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvd2F0ZXJwb2xvLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBUb3VybmFtZW50Um91bmQgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1yb3VuZCc7XG5pbXBvcnQgeyBUb3VybmFtZW50RGl2aXNpb24gfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1kaXZpc2lvbic7XG5pbXBvcnQgeyBVc2VyR2VuZGVyIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXInO1xuaW1wb3J0IHsgR2FtZVVzZXJMaW1pdGF0aW9ucyB9IGZyb20gJy4uL21vZGVscy9nYW1lLXVzZXItbGltaXRhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91cm5hbWVudEdhbWVzRmlsdGVycyB7XG4gIHRvdXJuYW1lbnRJZHM/OiBudW1iZXJbXTtcbiAgdG91cm5hbWVudFNlYXNvbklkPzogbnVtYmVyO1xuICB0b3VybmFtZW50U3RhZ2VJZD86IG51bWJlcjtcbiAgdG91cm5hbWVudFJvdW5kSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRHcm91cElkPzogbnVtYmVyO1xuICBkaXZpc2lvbklkPzogbnVtYmVyO1xuICB0b3VybmFtZW50VG91cj86IG51bWJlcjtcbiAgdGVhbUlkPzogbnVtYmVyO1xuICBwbGF5b2ZmU3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZSb3VuZD86IG51bWJlcjtcbiAgcGxheW9mZklkPzogbnVtYmVyO1xuICBpc1BsYXlvZmY/OiBib29sZWFuO1xuICBzdGF0dXM/OiBHYW1lU3RhdHVzZXM7XG4gIHN0YXR1c2VzPzogR2FtZVN0YXR1c2VzW107XG4gIHRvdXJuYW1lbnRDb3VydElkPzogbnVtYmVyO1xuICBsZWFndWVQbGF5ZXJJZD86IG51bWJlcjtcbiAgdXNlcklkPzogbnVtYmVyO1xuICBxdWVyeT86IHN0cmluZztcbiAgZGF0ZV9mcm9tPzogc3RyaW5nO1xuICBkYXRlX3RvPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdGF0aXN0aWNHcm91cEJ5VHlwZXMgPSAndGVhbScgfCAndXNlcicgfCAndGVhbV91c2VyJyB8ICd0b3VybmFtZW50X3RlYW0nIHwgJ2xlYWd1ZV9wbGF5ZXInIHwgJ3RvdXJuYW1lbnRfdGVhbV91c2VyJ1xuICB8ICdtb250aCcgfCAnd2luX2xvc2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aXN0aWNGaWx0ZXJzIHtcbiAgbGVhZ3VlX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2lkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50X3NlYXNvbl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90ZWFtX2lkPzogbnVtYmVyO1xuICBsZWFndWVfcGxheWVyX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RlYW1fdXNlcl9pZD86IG51bWJlcjtcbiAgdGVhbV9pZD86IG51bWJlcjtcbiAgdGVhbV91c2VyX2lkPzogbnVtYmVyO1xuICB1c2VyX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3N0YWdlX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3JvdW5kX2lkPzogbnVtYmVyO1xuICBkaXZpc2lvbl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9ncm91cF9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90b3VyPzogbnVtYmVyO1xuICBwbGF5b2ZmX3N0YWdlPzogbnVtYmVyO1xuICBwbGF5b2ZmX3JvdW5kPzogbnVtYmVyO1xuICBwbGF5b2ZmX2lkPzogbnVtYmVyO1xuICBpc19wbGF5b2ZmPzogYm9vbGVhbjtcbiAgZGF0ZV9mcm9tPzogc3RyaW5nO1xuICBkYXRlX3RvPzogc3RyaW5nO1xuICBxdWVyeT86IHN0cmluZztcbiAgZ2VuZGVyPzogVXNlckdlbmRlcjtcbiAgcGVyX2dhbWU/OiBib29sZWFuO1xuICBncm91cF9ieTogU3RhdGlzdGljR3JvdXBCeVR5cGVzO1xuICBvcmRlcl9ieT86IHN0cmluZztcbiAgcGFnZT86IG51bWJlcjtcbiAgc2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyB7XG4gIHRvdXJuYW1lbnRfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfaWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRfc2Vhc29uX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RlYW1faWQ/OiBudW1iZXI7XG4gIHRlYW1faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfc3RhZ2VfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdG91cj86IG51bWJlcjtcbiAgcGxheW9mZl9zdGFnZT86IG51bWJlcjtcbiAgcGxheW9mZl9pZD86IG51bWJlcjtcbiAgZGF0ZV9mcm9tPzogc3RyaW5nO1xuICBkYXRlX3RvPzogc3RyaW5nO1xuICBwZXJfZ2FtZT86IGJvb2xlYW47XG4gIGdyb3VwX2J5OiBTdGF0aXN0aWNHcm91cEJ5VHlwZXM7XG4gIHNpemU/OiBudW1iZXI7XG4gIGZpZWxkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91cm5hbWVudEV2ZW50c0xpc3RGaWx0ZXIge1xuICBldmVudD86IFRvdXJuYW1lbnRFdmVudFR5cGVzO1xuICBzZWFyY2g/OiBzdHJpbmc7XG4gIHRvdXJuYW1lbnRUb3VyPzogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBUb3VybmFtZW50QXBpIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRCeUFsaWFzKGxlYWd1ZUlkOiBudW1iZXIsIGFsaWFzOiBzdHJpbmcpOiBQcm9taXNlPFRvdXJuYW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2xlYWd1ZS8ke2xlYWd1ZUlkfS90b3VybmFtZW50cy8ke2FsaWFzfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRTZWFzb25Ub3VybmFtZW50cyhzZWFzb25Ub3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9zZWFzb25fdG91cm5hbWVudC8ke3NlYXNvblRvdXJuYW1lbnRJZH0vdG91cm5hbWVudHMvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0TmV3cyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudE5ld3NbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vbmV3cy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50TmV3cy50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0RXZlbnRzKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBwYWdlOiBudW1iZXIsIHNpemU6IG51bWJlciwgZmlsdGVycz86IFRvdXJuYW1lbnRFdmVudHNMaXN0RmlsdGVyKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxUb3VybmFtZW50RXZlbnRbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3BhZ2UnLCBwYWdlLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdzaXplJywgc2l6ZS50b1N0cmluZygpKTtcbiAgICBpZiAoZmlsdGVycykge1xuICAgICAgaWYgKGZpbHRlcnMuZXZlbnQpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZXZlbnQnLCBUb3VybmFtZW50RXZlbnRUeXBlc1tmaWx0ZXJzLmV2ZW50XSk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVycy5zZWFyY2gpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VhcmNoJywgZmlsdGVycy5zZWFyY2gpO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnMudG91cm5hbWVudFRvdXIpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF90b3VyJywgZmlsdGVycy50b3VybmFtZW50VG91ci50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9ldmVudHMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogVG91cm5hbWVudEV2ZW50LnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50U3RhZ2VzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50U3RhZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vc3RhZ2VzL2ApLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiBUb3VybmFtZW50U3RhZ2UudG9Gcm9udChkYXRhKSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFJvdW5kcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFJvdW5kW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3JvdW5kcy9gKS5waXBlKFxuICAgICAgbWFwKGRhdGEgPT4gVG91cm5hbWVudFJvdW5kLnRvRnJvbnQoZGF0YSkpLFxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50RGl2aXNpb25zKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50RGl2aXNpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZGl2aXNpb25zL2ApLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiBUb3VybmFtZW50RGl2aXNpb24udG9Gcm9udChkYXRhKSksXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFBsYXlvZmYodG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFBsYXlvZmZbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vcGxheW9mZi9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBQbGF5b2ZmLnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UGxheW9mZkdhbWVzKHBsYXlvZmZJZDogbnVtYmVyLCBwbGF5b2ZmTnVtYmVyPzogc3RyaW5nKTogUHJvbWlzZTxHYW1lW10+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocGxheW9mZk51bWJlcikge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGxheW9mZl9udW1iZXInLCBwbGF5b2ZmTnVtYmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3BsYXlvZmYvJHtwbGF5b2ZmSWR9L2dhbWVzL2AsXG4gICAgICB7cGFyYW1zfVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gR2FtZS50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEdhbWVzU3RhZ2VzKHRvdXJuYW1lbnRJZDogbnVtYmVyLCByb3VuZElkPzogbnVtYmVyKTogUHJvbWlzZTxHYW1lVGltZWxpbmVTdGFnZXM+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocm91bmRJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9yb3VuZF9pZCcsIHJvdW5kSWQudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9nYW1lc19zdGFnZXMvYCxcbiAgICAgIHtwYXJhbXN9XG4gICAgKVxuICAgICAgLnBpcGUobWFwKGRhdGEgPT4gR2FtZVRpbWVsaW5lU3RhZ2VzLnRvRnJvbnQoZGF0YSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2FtZXModG91cm5hbWVudElkOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBmaWx0ZXJzOiBUb3VybmFtZW50R2FtZXNGaWx0ZXJzID0ge30pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEdhbWVbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3BhZ2UnLCBwYWdlLnRvU3RyaW5nKCkpO1xuICAgIGlmIChzaXplKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaXplJywgc2l6ZS50b1N0cmluZygpKTtcbiAgICB9XG4gICAgcGFyYW1zID0gYXBwbHlHYW1lc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dhbWVzL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IEdhbWUudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHYW1lc0RhdGVzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ2FtZXNfZGF0ZXMvYCxcbiAgICAgIHtvYnNlcnZlOiAncmVzcG9uc2UnfVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiByZXN1bHQuYm9keVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEdyb3Vwcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudEdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dyb3Vwcy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50R3JvdXAudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRlYW1zKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBncm91cElkPzogbnVtYmVyLCBzaG9ydD86IGJvb2xlYW4pOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtW10+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAoZ3JvdXBJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZ3JvdXBfaWQnLCBncm91cElkLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAoc2hvcnQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Nob3J0JywgJzEnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS90ZWFtcy9gLCB7cGFyYW1zfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFRlYW0udG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFN0YWdlVGVhbXModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRTdGFnZVRlYW1bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vc3RhZ2VfdGVhbXMvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFN0YWdlVGVhbS50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbXNBY2hpZXZlbWVudHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRlYW1BY2hpZXZlbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9hY2hpZXZlbWVudHMvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVGVhbUFjaGlldmVtZW50LnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtQnlJZCh0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbS50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlckJ5SWQodXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtVXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt1c2VySWR9L2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRUZWFtVXNlci50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlckdhbWVzKHRvdXJuYW1lbnRVc2VySWQ6IG51bWJlcik6IFByb21pc2U8R2FtZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW1fdXNlci8ke3RvdXJuYW1lbnRVc2VySWR9L2dhbWVzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IEdhbWUudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkVGFibGUodG91cm5hbWVudElkOiBudW1iZXIsIGZvcm1hdDogJ3BkZicgfCAneGxzeCcsIGlzQ2hlc3M/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdmaWxlX3R5cGUnLCBmb3JtYXQpO1xuICAgIGlmIChpc0NoZXNzKSB7XG4gICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ2lzQ2hlc3MnLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS90YWJsZV9maWxlL2AsIHtcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgfSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRCYXNrZXRiYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEJhc2tldGJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9iYXNrZXRiYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gQmFza2V0YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Vm9sbGV5YmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBWb2xsZXliYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdm9sbGV5YmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IFZvbGxleWJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvY2tleVN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBIb2NrZXlTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9ob2NrZXlfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBIb2NrZXlTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZvb3RiYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEZvb3RiYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvZm9vdGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBGb290YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0SGFuZGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogSGFuZGJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9oYW5kYmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEhhbmRiYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRXYXRlcnBvbG9TdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogV2F0ZXJwb2xvU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvd2F0ZXJwb2xvX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gV2F0ZXJwb2xvU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRCYXNrZXRiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxCYXNrZXRiYWxsU3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Jhc2tldGJhbGxfc3RhdGlzdGljL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IEJhc2tldGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRWb2xsZXliYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxWb2xsZXliYWxsU3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3ZvbGxleWJhbGxfc3RhdGlzdGljL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFZvbGxleWJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIb2NrZXlTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEhvY2tleVN0YXRpc3RpY1tdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9ob2NrZXlfc3RhdGlzdGljL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IEhvY2tleVN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZvb3RiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxGb290YmFsbFN0YXRpc3RpY1tdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9mb290YmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogRm9vdGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIYW5kYmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SGFuZGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaGFuZGJhbGxfc3RhdGlzdGljL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IEhhbmRiYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UnVnYnlTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFJ1Z2J5U3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3J1Z2J5X3N0YXRpc3RpYy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBSdWdieVN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFdhdGVycG9sb1N0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8V2F0ZXJwb2xvU3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3dhdGVycG9sb19zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogV2F0ZXJwb2xvU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFRlYW1Vc2Vycyh0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtVXNlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS91c2Vycy9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbVVzZXIudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBteVBlcm1pc3Npb24odG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPExlYWd1ZVVzZXJQZXJtaXNzaW9uc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9wZXJtaXNzaW9uL2ApLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IGFueSkgPT4gKGRhdGEucGVybWlzc2lvbnMgfHwgW10pLm1hcChpdGVtID0+IExlYWd1ZVVzZXJQZXJtaXNzaW9uc1tpdGVtXSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVG91cm5hbWVudHModG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbS8ke3RvdXJuYW1lbnRUZWFtSWR9L3RvdXJuYW1lbnRzL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VXNlclRvdXJuYW1lbnRzKHRvdXJuYW1lbnRUZWFtVXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt0b3VybmFtZW50VGVhbVVzZXJJZH0vdG91cm5hbWVudHMvYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVXNlcnNMaW1pdGF0aW9uKHRvdXJuYW1lbnRUZWFtSWQ6IG51bWJlcik6IFByb21pc2U8R2FtZVVzZXJMaW1pdGF0aW9uc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS91c2Vyc19saW1pdGF0aW9uL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IEdhbWVVc2VyTGltaXRhdGlvbnMudG9Gcm9udChyZXN1bHQpKSxcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUdhbWVzRmlsdGVycyhmaWx0ZXJzOiBUb3VybmFtZW50R2FtZXNGaWx0ZXJzLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudElkcykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfaWRzJywgZmlsdGVycy50b3VybmFtZW50SWRzLmpvaW4oJywnKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudFN0YWdlSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3N0YWdlX2lkJywgZmlsdGVycy50b3VybmFtZW50U3RhZ2VJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50Um91bmRJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfcm91bmRfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRSb3VuZElkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRHcm91cElkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9ncm91cF9pZCcsIGZpbHRlcnMudG91cm5hbWVudEdyb3VwSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZGl2aXNpb25JZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RpdmlzaW9uX2lkJywgZmlsdGVycy5kaXZpc2lvbklkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF90b3VyJywgZmlsdGVycy50b3VybmFtZW50VG91ci50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5wbGF5b2ZmU3RhZ2UpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwbGF5b2ZmX3N0YWdlJywgZmlsdGVycy5wbGF5b2ZmU3RhZ2UudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMucGxheW9mZlJvdW5kKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGxheW9mZl9yb3VuZCcsIGZpbHRlcnMucGxheW9mZlJvdW5kLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRlYW1JZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RlYW1faWQnLCBmaWx0ZXJzLnRlYW1JZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5zdGF0dXMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdGF0dXMnLCBHYW1lU3RhdHVzZXNbZmlsdGVycy5zdGF0dXNdKTtcbiAgfVxuICBpZiAoZmlsdGVycy5zdGF0dXNlcykge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gZmlsdGVycy5zdGF0dXNlcy5tYXAoaSA9PiBHYW1lU3RhdHVzZXNbaV0pO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N0YXR1c2VzJywgc3RhdHVzZXMuam9pbignLCcpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50Q291cnRJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfY291cnRfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRDb3VydElkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmxlYWd1ZVBsYXllcklkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbGVhZ3VlX3BsYXllcl9pZCcsIGZpbHRlcnMubGVhZ3VlUGxheWVySWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudXNlcklkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndXNlcl9pZCcsIGZpbHRlcnMudXNlcklkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnF1ZXJ5KSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncXVlcnknLCBmaWx0ZXJzLnF1ZXJ5KTtcbiAgfVxuICBpZiAoZmlsdGVycy5kYXRlX2Zyb20pIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkYXRlX2Zyb20nLCBmaWx0ZXJzLmRhdGVfZnJvbSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZGF0ZV90bykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RhdGVfdG8nLCBmaWx0ZXJzLmRhdGVfdG8pO1xuICB9XG4gIGlmIChmaWx0ZXJzLmlzUGxheW9mZiAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMuaXNQbGF5b2ZmICE9PSBudWxsKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaXNfcGxheW9mZicsIGZpbHRlcnMuaXNQbGF5b2ZmID8gJzEnIDogJzAnKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0ZpbHRlcnMsIHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzKSkge1xuICAgIGlmIChmaWx0ZXJzW2tleV0pIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoa2V5LCBmaWx0ZXJzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnBlcl9nYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwZXJfZ2FtZScsIGZpbHRlcnMucGVyX2dhbWUgPyAnMScgOiAnMCcpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudF9pZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudF9pZHMuam9pbignLCcpKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLmlzX3BsYXlvZmYgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJzLmlzX3BsYXlvZmYgIT09IG51bGwpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19wbGF5b2ZmJywgZmlsdGVycy5pc19wbGF5b2ZmID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmlsdGVycykpIHtcbiAgICBpZiAoZmlsdGVyc1trZXldKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgZmlsdGVyc1trZXldKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVycy5wZXJfZ2FtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGVyX2dhbWUnLCBmaWx0ZXJzLnBlcl9nYW1lID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9pZHMnLCBmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzLmpvaW4oJywnKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZmllbGRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZmllbGRzJywgZmlsdGVycy5maWVsZHMuam9pbignLCcpKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuIl19
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9hcGkvdG91cm5hbWVudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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QUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN6RDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVG91cm5hbWVudCB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRvdXJuYW1lbnROZXdzIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtbmV3cyc7XG5pbXBvcnQgeyBHYW1lLCBHYW1lU3RhdHVzZXMgfSBmcm9tICcuLi9tb2RlbHMvZ2FtZSc7XG5pbXBvcnQgeyBHYW1lVGltZWxpbmVTdGFnZXMgfSBmcm9tICcuLi9tb2RlbHMvZ2FtZS10aW1lbGluZS1zdGFnZXMnO1xuaW1wb3J0IHsgVG91cm5hbWVudFRlYW0gfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC10ZWFtJztcbmltcG9ydCB7IFRvdXJuYW1lbnRTdGFnZSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXN0YWdlJztcbmltcG9ydCB7IFBsYXlvZmYgfSBmcm9tICcuLi9tb2RlbHMvcGxheW9mZic7XG5pbXBvcnQgeyBQYWdpbmF0ZWRSZXNwb25zZSB9IGZyb20gJy4vcGFnaW5hdGVkLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNrZXRiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2Jhc2tldGJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IFZvbGxleWJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvdm9sbGV5YmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVG91cm5hbWVudFRlYW1Vc2VyIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtdGVhbS11c2VyJztcbmltcG9ydCB7IFRvdXJuYW1lbnRTdGFnZVRlYW0gfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1zdGFnZS10ZWFtJztcbmltcG9ydCB7IFRvdXJuYW1lbnRFdmVudCwgVG91cm5hbWVudEV2ZW50VHlwZXMgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1ldmVudCc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9ja2V5U3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2hvY2tleS1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgRm9vdGJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvZm9vdGJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IExlYWd1ZVVzZXJQZXJtaXNzaW9ucyB9IGZyb20gJy4uL21vZGVscy9sZWFndWUtdXNlcic7XG5pbXBvcnQgeyBIYW5kYmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9oYW5kYmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgUnVnYnlTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvcnVnYnktc3RhdGlzdGljJztcbmltcG9ydCB7IFRvdXJuYW1lbnRHcm91cCB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWdyb3VwJztcbmltcG9ydCB7IFRlYW1BY2hpZXZlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZWFtLWFjaGlldmVtZW50JztcbmltcG9ydCB7IFdhdGVycG9sb1N0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy93YXRlcnBvbG8tc3RhdGlzdGljJztcbmltcG9ydCB7IFRvdXJuYW1lbnRSb3VuZCB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXJvdW5kJztcbmltcG9ydCB7IFRvdXJuYW1lbnREaXZpc2lvbiB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWRpdmlzaW9uJztcbmltcG9ydCB7IFVzZXJHZW5kZXIgfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQgeyBHYW1lVXNlckxpbWl0YXRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2dhbWUtdXNlci1saW1pdGF0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBUb3VybmFtZW50R2FtZXNGaWx0ZXJzIHtcbiAgdG91cm5hbWVudElkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50U2Vhc29uSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRTdGFnZUlkPzogbnVtYmVyO1xuICB0b3VybmFtZW50Um91bmRJZD86IG51bWJlcjtcbiAgdG91cm5hbWVudEdyb3VwSWQ/OiBudW1iZXI7XG4gIGRpdmlzaW9uSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRUb3VyPzogbnVtYmVyO1xuICB0ZWFtSWQ/OiBudW1iZXI7XG4gIHBsYXlvZmZTdGFnZT86IG51bWJlcjtcbiAgcGxheW9mZlJvdW5kPzogbnVtYmVyO1xuICBwbGF5b2ZmSWQ/OiBudW1iZXI7XG4gIGlzUGxheW9mZj86IGJvb2xlYW47XG4gIHN0YXR1cz86IEdhbWVTdGF0dXNlcztcbiAgc3RhdHVzZXM/OiBHYW1lU3RhdHVzZXNbXTtcbiAgdG91cm5hbWVudENvdXJ0SWQ/OiBudW1iZXI7XG4gIGxlYWd1ZVBsYXllcklkPzogbnVtYmVyO1xuICB1c2VySWQ/OiBudW1iZXI7XG4gIHF1ZXJ5Pzogc3RyaW5nO1xuICBkYXRlX2Zyb20/OiBzdHJpbmc7XG4gIGRhdGVfdG8/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0YXRpc3RpY0dyb3VwQnlUeXBlcyA9ICd0ZWFtJyB8ICd1c2VyJyB8ICd0ZWFtX3VzZXInIHwgJ3RvdXJuYW1lbnRfdGVhbScgfCAnbGVhZ3VlX3BsYXllcicgfCAndG91cm5hbWVudF90ZWFtX3VzZXInXG4gIHwgJ21vbnRoJyB8ICd3aW5fbG9zZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpc3RpY0ZpbHRlcnMge1xuICBsZWFndWVfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfaWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRfc2Vhc29uX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RlYW1faWQ/OiBudW1iZXI7XG4gIGxlYWd1ZV9wbGF5ZXJfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdGVhbV91c2VyX2lkPzogbnVtYmVyO1xuICB0ZWFtX2lkPzogbnVtYmVyO1xuICB0ZWFtX3VzZXJfaWQ/OiBudW1iZXI7XG4gIHVzZXJfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfc3RhZ2VfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfcm91bmRfaWQ/OiBudW1iZXI7XG4gIGRpdmlzaW9uX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2dyb3VwX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RvdXI/OiBudW1iZXI7XG4gIHBsYXlvZmZfc3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZfcm91bmQ/OiBudW1iZXI7XG4gIHBsYXlvZmZfaWQ/OiBudW1iZXI7XG4gIGlzX3BsYXlvZmY/OiBib29sZWFuO1xuICBkYXRlX2Zyb20/OiBzdHJpbmc7XG4gIGRhdGVfdG8/OiBzdHJpbmc7XG4gIHF1ZXJ5Pzogc3RyaW5nO1xuICBnZW5kZXI/OiBVc2VyR2VuZGVyO1xuICBwZXJfZ2FtZT86IGJvb2xlYW47XG4gIGdyb3VwX2J5OiBTdGF0aXN0aWNHcm91cEJ5VHlwZXM7XG4gIG9yZGVyX2J5Pzogc3RyaW5nO1xuICBwYWdlPzogbnVtYmVyO1xuICBzaXplPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzIHtcbiAgdG91cm5hbWVudF9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9pZHM/OiBudW1iZXJbXTtcbiAgdG91cm5hbWVudF9zZWFzb25faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdGVhbV9pZD86IG51bWJlcjtcbiAgdGVhbV9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9zdGFnZV9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90b3VyPzogbnVtYmVyO1xuICBwbGF5b2ZmX3N0YWdlPzogbnVtYmVyO1xuICBwbGF5b2ZmX2lkPzogbnVtYmVyO1xuICBkYXRlX2Zyb20/OiBzdHJpbmc7XG4gIGRhdGVfdG8/OiBzdHJpbmc7XG4gIHBlcl9nYW1lPzogYm9vbGVhbjtcbiAgZ3JvdXBfYnk6IFN0YXRpc3RpY0dyb3VwQnlUeXBlcztcbiAgc2l6ZT86IG51bWJlcjtcbiAgZmllbGRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb3VybmFtZW50RXZlbnRzTGlzdEZpbHRlciB7XG4gIGV2ZW50PzogVG91cm5hbWVudEV2ZW50VHlwZXM7XG4gIHNlYXJjaD86IHN0cmluZztcbiAgdG91cm5hbWVudFRvdXI/OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFRvdXJuYW1lbnRBcGkge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIGFzeW5jIGdldEJ5SWQodG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJ5QWxpYXMobGVhZ3VlSWQ6IG51bWJlciwgYWxpYXM6IHN0cmluZyk6IFByb21pc2U8VG91cm5hbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvbGVhZ3VlLyR7bGVhZ3VlSWR9L3RvdXJuYW1lbnRzLyR7YWxpYXN9L2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlYXNvblRvdXJuYW1lbnRzKHNlYXNvblRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3NlYXNvbl90b3VybmFtZW50LyR7c2Vhc29uVG91cm5hbWVudElkfS90b3VybmFtZW50cy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXROZXdzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50TmV3c1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9uZXdzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnROZXdzLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRFdmVudHModG91cm5hbWVudElkOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBmaWx0ZXJzPzogVG91cm5hbWVudEV2ZW50c0xpc3RGaWx0ZXIpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFRvdXJuYW1lbnRFdmVudFtdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncGFnZScsIHBhZ2UudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NpemUnLCBzaXplLnRvU3RyaW5nKCkpO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBpZiAoZmlsdGVycy5ldmVudCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdldmVudCcsIFRvdXJuYW1lbnRFdmVudFR5cGVzW2ZpbHRlcnMuZXZlbnRdKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXJzLnNlYXJjaCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2gnLCBmaWx0ZXJzLnNlYXJjaCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVycy50b3VybmFtZW50VG91cikge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3RvdXInLCBmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2V2ZW50cy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBUb3VybmFtZW50RXZlbnQudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRTdGFnZXModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRTdGFnZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9zdGFnZXMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IFRvdXJuYW1lbnRTdGFnZS50b0Zyb250KGRhdGEpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50Um91bmRzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50Um91bmRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vcm91bmRzL2ApLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiBUb3VybmFtZW50Um91bmQudG9Gcm9udChkYXRhKSksXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnREaXZpc2lvbnModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnREaXZpc2lvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9kaXZpc2lvbnMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IFRvdXJuYW1lbnREaXZpc2lvbi50b0Zyb250KGRhdGEpKSxcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UGxheW9mZih0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8UGxheW9mZltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9wbGF5b2ZmL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IFBsYXlvZmYudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRQbGF5b2ZmR2FtZXMocGxheW9mZklkOiBudW1iZXIsIHBsYXlvZmZOdW1iZXI/OiBzdHJpbmcpOiBQcm9taXNlPEdhbWVbXT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwbGF5b2ZmTnVtYmVyKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwbGF5b2ZmX251bWJlcicsIHBsYXlvZmZOdW1iZXIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfcGxheW9mZi8ke3BsYXlvZmZJZH0vZ2FtZXMvYCxcbiAgICAgIHtwYXJhbXN9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBHYW1lLnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2FtZXNTdGFnZXModG91cm5hbWVudElkOiBudW1iZXIsIHJvdW5kSWQ/OiBudW1iZXIpOiBQcm9taXNlPEdhbWVUaW1lbGluZVN0YWdlcz4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChyb3VuZElkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3JvdW5kX2lkJywgcm91bmRJZC50b1N0cmluZygpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dhbWVzX3N0YWdlcy9gLFxuICAgICAge3BhcmFtc31cbiAgICApXG4gICAgICAucGlwZShtYXAoZGF0YSA9PiBHYW1lVGltZWxpbmVTdGFnZXMudG9Gcm9udChkYXRhKSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHYW1lcyh0b3VybmFtZW50SWQ6IG51bWJlciwgcGFnZTogbnVtYmVyLCBzaXplOiBudW1iZXIsIGZpbHRlcnM6IFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMgPSB7fSk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8R2FtZVtdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncGFnZScsIHBhZ2UudG9TdHJpbmcoKSk7XG4gICAgaWYgKHNpemUpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NpemUnLCBzaXplLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBwYXJhbXMgPSBhcHBseUdhbWVzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ2FtZXMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogR2FtZS50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEdhbWVzRGF0ZXModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9nYW1lc19kYXRlcy9gLFxuICAgICAge29ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IHJlc3VsdC5ib2R5XG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R3JvdXBzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50R3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ3JvdXBzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRHcm91cC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbXModG91cm5hbWVudElkOiBudW1iZXIsIGdyb3VwSWQ/OiBudW1iZXIsIHNob3J0PzogYm9vbGVhbik6IFByb21pc2U8VG91cm5hbWVudFRlYW1bXT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChncm91cElkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdncm91cF9pZCcsIGdyb3VwSWQudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChzaG9ydCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2hvcnQnLCAnMScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3RlYW1zL2AsIHtwYXJhbXN9KVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbS50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RhZ2VUZWFtcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFN0YWdlVGVhbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9zdGFnZV90ZWFtcy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50U3RhZ2VUZWFtLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtc0FjaGlldmVtZW50cyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VGVhbUFjaGlldmVtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2FjaGlldmVtZW50cy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUZWFtQWNoaWV2ZW1lbnQudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRlYW1CeUlkKHRvdXJuYW1lbnRUZWFtSWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFRlYW0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbS8ke3RvdXJuYW1lbnRUZWFtSWR9L2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRUZWFtLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRVc2VyQnlJZCh1c2VySWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFRlYW1Vc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW1fdXNlci8ke3VzZXJJZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFRlYW1Vc2VyLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRVc2VyR2FtZXModG91cm5hbWVudFVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxHYW1lW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbV91c2VyLyR7dG91cm5hbWVudFVzZXJJZH0vZ2FtZXMvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gR2FtZS50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZG93bmxvYWRUYWJsZSh0b3VybmFtZW50SWQ6IG51bWJlciwgZm9ybWF0OiAncGRmJyB8ICd4bHN4JywgaXNDaGVzcz86IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2ZpbGVfdHlwZScsIGZvcm1hdCk7XG4gICAgaWYgKGlzQ2hlc3MpIHtcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnaXNDaGVzcycsIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3RhYmxlX2ZpbGUvYCwge1xuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICB9KS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhc2tldGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogQmFza2V0YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Jhc2tldGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBCYXNrZXRiYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRWb2xsZXliYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IFZvbGxleWJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS92b2xsZXliYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gVm9sbGV5YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0SG9ja2V5U3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEhvY2tleVN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2hvY2tleV9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEhvY2tleVN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9vdGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogRm9vdGJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9mb290YmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEZvb3RiYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIYW5kYmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBIYW5kYmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2hhbmRiYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gSGFuZGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFdhdGVycG9sb1N0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBXYXRlcnBvbG9TdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS93YXRlcnBvbG9fc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBXYXRlcnBvbG9TdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhc2tldGJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEJhc2tldGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvYmFza2V0YmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogQmFza2V0YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZvbGxleWJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFZvbGxleWJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdm9sbGV5YmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogVm9sbGV5YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvY2tleVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SG9ja2V5U3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2hvY2tleV9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogSG9ja2V5U3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9vdGJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEZvb3RiYWxsU3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Zvb3RiYWxsX3N0YXRpc3RpYy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBGb290YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhhbmRiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxIYW5kYmFsbFN0YXRpc3RpY1tdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9oYW5kYmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogSGFuZGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRSdWdieVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8UnVnYnlTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvcnVnYnlfc3RhdGlzdGljL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFJ1Z2J5U3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0V2F0ZXJwb2xvU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxXYXRlcnBvbG9TdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvd2F0ZXJwb2xvX3N0YXRpc3RpYy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBXYXRlcnBvbG9TdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VGVhbVVzZXJzKHRvdXJuYW1lbnRUZWFtSWQ6IG51bWJlciwgaW5jbHVkZXM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtVXNlcltdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGluY2x1ZGVzKSB7XG4gICAgICBwYXJhbXMuYXBwZW5kKCdpbmNsdWRlJywgaW5jbHVkZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vdXNlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRUZWFtVXNlci50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIG15UGVybWlzc2lvbih0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8TGVhZ3VlVXNlclBlcm1pc3Npb25zW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3Blcm1pc3Npb24vYCkucGlwZShcbiAgICAgIG1hcCgoZGF0YTogYW55KSA9PiAoZGF0YS5wZXJtaXNzaW9ucyB8fCBbXSkubWFwKGl0ZW0gPT4gTGVhZ3VlVXNlclBlcm1pc3Npb25zW2l0ZW1dKSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFRlYW1Ub3VybmFtZW50cyh0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vdG91cm5hbWVudHMvYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRVc2VyVG91cm5hbWVudHModG91cm5hbWVudFRlYW1Vc2VySWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW1fdXNlci8ke3RvdXJuYW1lbnRUZWFtVXNlcklkfS90b3VybmFtZW50cy9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFRlYW1Vc2Vyc0xpbWl0YXRpb24odG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxHYW1lVXNlckxpbWl0YXRpb25zW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbS8ke3RvdXJuYW1lbnRUZWFtSWR9L3VzZXJzX2xpbWl0YXRpb24vYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gR2FtZVVzZXJMaW1pdGF0aW9ucy50b0Zyb250KHJlc3VsdCkpLFxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5R2FtZXNGaWx0ZXJzKGZpbHRlcnM6IFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMsIHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICBpZiAoZmlsdGVycy50b3VybmFtZW50SWRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9pZHMnLCBmaWx0ZXJzLnRvdXJuYW1lbnRJZHMuam9pbignLCcpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50U3RhZ2VJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfc3RhZ2VfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRTdGFnZUlkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRSb3VuZElkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9yb3VuZF9pZCcsIGZpbHRlcnMudG91cm5hbWVudFJvdW5kSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudEdyb3VwSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2dyb3VwX2lkJywgZmlsdGVycy50b3VybmFtZW50R3JvdXBJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5kaXZpc2lvbklkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGl2aXNpb25faWQnLCBmaWx0ZXJzLmRpdmlzaW9uSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudFRvdXIpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3RvdXInLCBmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnBsYXlvZmZTdGFnZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfc3RhZ2UnLCBmaWx0ZXJzLnBsYXlvZmZTdGFnZS50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5wbGF5b2ZmUm91bmQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwbGF5b2ZmX3JvdW5kJywgZmlsdGVycy5wbGF5b2ZmUm91bmQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudGVhbUlkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndGVhbV9pZCcsIGZpbHRlcnMudGVhbUlkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnN0YXR1cykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N0YXR1cycsIEdhbWVTdGF0dXNlc1tmaWx0ZXJzLnN0YXR1c10pO1xuICB9XG4gIGlmIChmaWx0ZXJzLnN0YXR1c2VzKSB7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBmaWx0ZXJzLnN0YXR1c2VzLm1hcChpID0+IEdhbWVTdGF0dXNlc1tpXSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzZXMnLCBzdGF0dXNlcy5qb2luKCcsJykpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRDb3VydElkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9jb3VydF9pZCcsIGZpbHRlcnMudG91cm5hbWVudENvdXJ0SWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMubGVhZ3VlUGxheWVySWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdsZWFndWVfcGxheWVyX2lkJywgZmlsdGVycy5sZWFndWVQbGF5ZXJJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy51c2VySWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd1c2VyX2lkJywgZmlsdGVycy51c2VySWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMucXVlcnkpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdxdWVyeScsIGZpbHRlcnMucXVlcnkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmRhdGVfZnJvbSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RhdGVfZnJvbScsIGZpbHRlcnMuZGF0ZV9mcm9tKTtcbiAgfVxuICBpZiAoZmlsdGVycy5kYXRlX3RvKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGF0ZV90bycsIGZpbHRlcnMuZGF0ZV90byk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuaXNQbGF5b2ZmICE9PSB1bmRlZmluZWQgJiYgZmlsdGVycy5pc1BsYXlvZmYgIT09IG51bGwpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19wbGF5b2ZmJywgZmlsdGVycy5pc1BsYXlvZmYgPyAnMScgOiAnMCcpO1xuICB9XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVyczogU3RhdGlzdGljRmlsdGVycywgcGFyYW1zOiBIdHRwUGFyYW1zKTogSHR0cFBhcmFtcyB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZpbHRlcnMpKSB7XG4gICAgaWYgKGZpbHRlcnNba2V5XSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChrZXksIGZpbHRlcnNba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZpbHRlcnMucGVyX2dhbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Blcl9nYW1lJywgZmlsdGVycy5wZXJfZ2FtZSA/ICcxJyA6ICcwJyk7XG4gIH1cblxuICBpZiAoZmlsdGVycy50b3VybmFtZW50X2lkcykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfaWRzJywgZmlsdGVycy50b3VybmFtZW50X2lkcy5qb2luKCcsJykpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMuaXNfcGxheW9mZiAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMuaXNfcGxheW9mZiAhPT0gbnVsbCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX3BsYXlvZmYnLCBmaWx0ZXJzLmlzX3BsYXlvZmYgPyAnMScgOiAnMCcpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMsIHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzKSkge1xuICAgIGlmIChmaWx0ZXJzW2tleV0pIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoa2V5LCBmaWx0ZXJzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnBlcl9nYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwZXJfZ2FtZScsIGZpbHRlcnMucGVyX2dhbWUgPyAnMScgOiAnMCcpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudF9pZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudF9pZHMuam9pbignLCcpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5maWVsZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdmaWVsZHMnLCBmaWx0ZXJzLmZpZWxkcy5qb2luKCcsJykpO1xuICB9XG4gIHJldHVybiBwYXJhbXM7XG59XG4iXX0=
@@ -6070,9 +6070,13 @@ class TournamentApi {
6070
6070
  }))).toPromise();
6071
6071
  });
6072
6072
  }
6073
- getTournamentTeamUsers(tournamentTeamId) {
6073
+ getTournamentTeamUsers(tournamentTeamId, includes = []) {
6074
6074
  return __awaiter(this, void 0, void 0, function* () {
6075
- return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(map(result => TournamentTeamUser.toFront(result))).toPromise();
6075
+ let params = new HttpParams();
6076
+ for (const include of includes) {
6077
+ params.append('include', include);
6078
+ }
6079
+ return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`, { params }).pipe(map(result => TournamentTeamUser.toFront(result))).toPromise();
6076
6080
  });
6077
6081
  }
6078
6082
  myPermission(tournamentId) {