@mtgame/core 0.1.58 → 0.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/mtgame-core.umd.js +4098 -4069
- package/bundles/mtgame-core.umd.js.map +1 -1
- package/esm2015/api/basketball-game-api.js +8 -9
- package/esm2015/api/feedback-api.js +8 -9
- package/esm2015/api/file-api.js +8 -9
- package/esm2015/api/football-game-api.js +8 -9
- package/esm2015/api/game-base-api.js +8 -9
- package/esm2015/api/handball-game-api.js +8 -9
- package/esm2015/api/hockey-game-api.js +8 -9
- package/esm2015/api/league-api.js +8 -9
- package/esm2015/api/league-news-api.js +8 -9
- package/esm2015/api/league-player-api.js +7 -9
- package/esm2015/api/media-api.js +8 -9
- package/esm2015/api/notification-api.js +6 -8
- package/esm2015/api/notification-base-api.js +8 -9
- package/esm2015/api/org-notification-api.js +6 -8
- package/esm2015/api/paginated-response.interface.js +2 -1
- package/esm2015/api/public-api.js +2 -1
- package/esm2015/api/public-team-api.js +7 -9
- package/esm2015/api/public-user-api.js +7 -9
- package/esm2015/api/reference-api.js +8 -9
- package/esm2015/api/rugby-game-api.js +8 -9
- package/esm2015/api/team-api.js +9 -10
- package/esm2015/api/team-event-api.js +8 -9
- package/esm2015/api/tournament-api.js +8 -9
- package/esm2015/api/tournament-join-api.js +8 -9
- package/esm2015/api/tournament-season-api.js +8 -9
- package/esm2015/api/tournament-stage-api.js +8 -9
- package/esm2015/api/user-api.js +8 -9
- package/esm2015/api/volleyball-game-api.js +8 -9
- package/esm2015/http-cookie.interceptor.js +6 -9
- package/esm2015/localization/basketball-game-log-types.js +1 -1
- package/esm2015/localization/football-game-log-types.js +1 -1
- package/esm2015/localization/handball-game-log-types.js +1 -1
- package/esm2015/localization/hockey-game-log-types.js +1 -1
- package/esm2015/localization/hockey-penalty-types.js +1 -1
- package/esm2015/localization/overtime-types.js +1 -1
- package/esm2015/localization/public-api.js +1 -1
- package/esm2015/localization/rugby-foul-sanction.js +1 -1
- package/esm2015/localization/rugby-game-log-types.js +1 -1
- package/esm2015/localization/team-event-type.js +1 -1
- package/esm2015/localization/team-user-role.js +1 -1
- package/esm2015/localization/user-profile.js +1 -1
- package/esm2015/localization/volleyball-game-log-types.js +1 -1
- package/esm2015/models/base-statistic.js +2 -1
- package/esm2015/models/basketball-game-config.js +1 -1
- package/esm2015/models/basketball-game-log.js +1 -1
- package/esm2015/models/basketball-game-statistic.js +1 -1
- package/esm2015/models/basketball-game-team-statistic.js +1 -1
- package/esm2015/models/basketball-profile.js +1 -1
- package/esm2015/models/basketball-statistic.js +1 -1
- package/esm2015/models/city.js +1 -1
- package/esm2015/models/feedback.js +1 -1
- package/esm2015/models/file.js +1 -1
- package/esm2015/models/football-game-config.js +1 -1
- package/esm2015/models/football-game-log.js +1 -1
- package/esm2015/models/football-game-statistic.js +1 -1
- package/esm2015/models/football-game-team-statistic.js +1 -1
- package/esm2015/models/football-profile.js +1 -1
- package/esm2015/models/football-statistic.js +1 -1
- package/esm2015/models/game-invite.js +1 -1
- package/esm2015/models/game-log-base.js +2 -1
- package/esm2015/models/game-statistic-base.js +2 -1
- package/esm2015/models/game-team-statistic-base.js +2 -1
- package/esm2015/models/game-timeline-stages.js +1 -1
- package/esm2015/models/game-user-limitation.js +1 -1
- package/esm2015/models/game-user.js +1 -1
- package/esm2015/models/game.js +1 -1
- package/esm2015/models/handball-game-config.js +1 -1
- package/esm2015/models/handball-game-log.js +1 -1
- package/esm2015/models/handball-game-statistic.js +1 -1
- package/esm2015/models/handball-game-team-statistic.js +1 -1
- package/esm2015/models/handball-profile.js +1 -1
- package/esm2015/models/handball-statistic.js +1 -1
- package/esm2015/models/hockey-game-config.js +1 -1
- package/esm2015/models/hockey-game-log.js +1 -1
- package/esm2015/models/hockey-game-statistic.js +1 -1
- package/esm2015/models/hockey-game-team-statistic.js +1 -1
- package/esm2015/models/hockey-profile.js +1 -1
- package/esm2015/models/hockey-statistic.js +1 -1
- package/esm2015/models/league-banner.js +1 -1
- package/esm2015/models/league-court.js +1 -1
- package/esm2015/models/league-document.js +1 -1
- package/esm2015/models/league-news.js +1 -1
- package/esm2015/models/league-partner.js +1 -1
- package/esm2015/models/league-player.js +1 -1
- package/esm2015/models/league-playlist.js +1 -1
- package/esm2015/models/league-user.js +1 -1
- package/esm2015/models/league.js +1 -1
- package/esm2015/models/media-item.js +1 -1
- package/esm2015/models/notification-settings.js +1 -1
- package/esm2015/models/notification.js +1 -1
- package/esm2015/models/organization.js +1 -1
- package/esm2015/models/playoff.js +1 -1
- package/esm2015/models/poll.js +1 -1
- package/esm2015/models/public-api.js +5 -1
- package/esm2015/models/rugby-foul-type.js +1 -1
- package/esm2015/models/rugby-game-config.js +1 -1
- package/esm2015/models/rugby-game-log.js +2 -2
- package/esm2015/models/rugby-game-statistic.js +1 -1
- package/esm2015/models/rugby-game-team-statistic.js +1 -1
- package/esm2015/models/rugby-profile.js +1 -1
- package/esm2015/models/rugby-statistic.js +1 -1
- package/esm2015/models/sport.js +1 -1
- package/esm2015/models/team-access.js +1 -1
- package/esm2015/models/team-event-invite.js +1 -1
- package/esm2015/models/team-event-type.js +1 -1
- package/esm2015/models/team-event.js +1 -1
- package/esm2015/models/team-invite-external.js +1 -1
- package/esm2015/models/team-invite.js +1 -1
- package/esm2015/models/team-permission.js +1 -1
- package/esm2015/models/team-user.js +1 -1
- package/esm2015/models/team.js +1 -1
- package/esm2015/models/tournament-disqualification.js +1 -1
- package/esm2015/models/tournament-event.js +1 -1
- package/esm2015/models/tournament-group.js +1 -1
- package/esm2015/models/tournament-invite.js +1 -1
- package/esm2015/models/tournament-join-team.js +1 -1
- package/esm2015/models/tournament-news.js +1 -1
- package/esm2015/models/tournament-season.js +1 -1
- package/esm2015/models/tournament-stage-team.js +1 -1
- package/esm2015/models/tournament-stage.js +1 -1
- package/esm2015/models/tournament-team-user-invite.js +1 -1
- package/esm2015/models/tournament-team-user.js +1 -1
- package/esm2015/models/tournament-team.js +1 -1
- package/esm2015/models/tournament.js +1 -1
- package/esm2015/models/user-access.js +1 -1
- package/esm2015/models/user-permission.js +1 -1
- package/esm2015/models/user-profile.js +1 -1
- package/esm2015/models/user.js +1 -1
- package/esm2015/models/util.js +1 -1
- package/esm2015/models/volleyball-game-config.js +1 -1
- package/esm2015/models/volleyball-game-log.js +1 -1
- package/esm2015/models/volleyball-game-statistic.js +1 -1
- package/esm2015/models/volleyball-game-team-statistic.js +1 -1
- package/esm2015/models/volleyball-profile.js +1 -1
- package/esm2015/models/volleyball-statistic.js +1 -1
- package/esm2015/mtgame-core.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/esm2015/services/base.service.js +6 -8
- package/esm2015/services/centrifugo.service.js +7 -9
- package/esm2015/services/config.service.js +7 -10
- package/esm2015/services/public-api.js +1 -1
- package/esm2015/storage/local-storage-engine.js +1 -1
- package/esm2015/storage/public-api.js +1 -1
- package/esm2015/storage/storage-engine.js +1 -1
- package/esm2015/storage/store.js +1 -1
- package/esm2015/utils/array.js +1 -1
- package/esm2015/utils/component-destroyed.js +1 -1
- package/esm2015/utils/cookie.js +1 -1
- package/esm2015/utils/data.js +1 -1
- package/esm2015/utils/device.js +1 -1
- package/esm2015/utils/enum.js +1 -1
- package/esm2015/utils/errors.js +1 -1
- package/esm2015/utils/favicon.js +1 -1
- package/esm2015/utils/form.js +1 -1
- package/esm2015/utils/public-api.js +1 -1
- package/esm2015/utils/validators.js +1 -1
- package/fesm2015/mtgame-core.js +184 -184
- package/fesm2015/mtgame-core.js.map +1 -1
- package/localization/basketball-game-log-types.d.ts +0 -1
- package/localization/football-game-log-types.d.ts +0 -1
- package/localization/handball-game-log-types.d.ts +0 -1
- package/localization/hockey-game-log-types.d.ts +0 -1
- package/localization/overtime-types.d.ts +0 -1
- package/localization/rugby-foul-sanction.d.ts +0 -1
- package/localization/rugby-game-log-types.d.ts +0 -1
- package/localization/team-event-type.d.ts +0 -1
- package/localization/team-user-role.d.ts +0 -1
- package/localization/user-profile.d.ts +0 -6
- package/localization/volleyball-game-log-types.d.ts +0 -1
- package/package.json +9 -11
- package/bundles/mtgame-core.umd.min.js +0 -16
- package/bundles/mtgame-core.umd.min.js.map +0 -1
- package/esm5/api/basketball-game-api.js +0 -77
- package/esm5/api/feedback-api.js +0 -44
- package/esm5/api/file-api.js +0 -68
- package/esm5/api/football-game-api.js +0 -81
- package/esm5/api/game-base-api.js +0 -58
- package/esm5/api/handball-game-api.js +0 -81
- package/esm5/api/hockey-game-api.js +0 -81
- package/esm5/api/league-api.js +0 -168
- package/esm5/api/league-news-api.js +0 -82
- package/esm5/api/league-player-api.js +0 -37
- package/esm5/api/media-api.js +0 -149
- package/esm5/api/notification-api.js +0 -21
- package/esm5/api/notification-base-api.js +0 -109
- package/esm5/api/org-notification-api.js +0 -21
- package/esm5/api/paginated-response.interface.js +0 -1
- package/esm5/api/public-api.js +0 -27
- package/esm5/api/public-team-api.js +0 -34
- package/esm5/api/public-user-api.js +0 -44
- package/esm5/api/reference-api.js +0 -45
- package/esm5/api/rugby-game-api.js +0 -79
- package/esm5/api/team-api.js +0 -486
- package/esm5/api/team-event-api.js +0 -96
- package/esm5/api/tournament-api.js +0 -543
- package/esm5/api/tournament-join-api.js +0 -59
- package/esm5/api/tournament-season-api.js +0 -134
- package/esm5/api/tournament-stage-api.js +0 -65
- package/esm5/api/user-api.js +0 -350
- package/esm5/api/volleyball-game-api.js +0 -81
- package/esm5/http-cookie.interceptor.js +0 -41
- package/esm5/localization/basketball-game-log-types.js +0 -28
- package/esm5/localization/football-game-log-types.js +0 -34
- package/esm5/localization/handball-game-log-types.js +0 -25
- package/esm5/localization/hockey-game-log-types.js +0 -31
- package/esm5/localization/hockey-penalty-types.js +0 -50
- package/esm5/localization/overtime-types.js +0 -14
- package/esm5/localization/public-api.js +0 -13
- package/esm5/localization/rugby-foul-sanction.js +0 -11
- package/esm5/localization/rugby-game-log-types.js +0 -41
- package/esm5/localization/team-event-type.js +0 -7
- package/esm5/localization/team-user-role.js +0 -15
- package/esm5/localization/user-profile.js +0 -82
- package/esm5/localization/volleyball-game-log-types.js +0 -27
- package/esm5/models/base-statistic.js +0 -1
- package/esm5/models/basketball-game-config.js +0 -44
- package/esm5/models/basketball-game-log.js +0 -118
- package/esm5/models/basketball-game-statistic.js +0 -63
- package/esm5/models/basketball-game-team-statistic.js +0 -32
- package/esm5/models/basketball-profile.js +0 -48
- package/esm5/models/basketball-statistic.js +0 -97
- package/esm5/models/city.js +0 -27
- package/esm5/models/feedback.js +0 -37
- package/esm5/models/file.js +0 -65
- package/esm5/models/football-game-config.js +0 -53
- package/esm5/models/football-game-log.js +0 -111
- package/esm5/models/football-game-statistic.js +0 -213
- package/esm5/models/football-game-team-statistic.js +0 -32
- package/esm5/models/football-profile.js +0 -48
- package/esm5/models/football-statistic.js +0 -174
- package/esm5/models/game-invite.js +0 -42
- package/esm5/models/game-log-base.js +0 -1
- package/esm5/models/game-statistic-base.js +0 -1
- package/esm5/models/game-team-statistic-base.js +0 -1
- package/esm5/models/game-timeline-stages.js +0 -60
- package/esm5/models/game-user-limitation.js +0 -59
- package/esm5/models/game-user.js +0 -38
- package/esm5/models/game.js +0 -286
- package/esm5/models/handball-game-config.js +0 -39
- package/esm5/models/handball-game-log.js +0 -99
- package/esm5/models/handball-game-statistic.js +0 -162
- package/esm5/models/handball-game-team-statistic.js +0 -32
- package/esm5/models/handball-profile.js +0 -44
- package/esm5/models/handball-statistic.js +0 -105
- package/esm5/models/hockey-game-config.js +0 -61
- package/esm5/models/hockey-game-log.js +0 -135
- package/esm5/models/hockey-game-statistic.js +0 -223
- package/esm5/models/hockey-game-team-statistic.js +0 -32
- package/esm5/models/hockey-profile.js +0 -46
- package/esm5/models/hockey-statistic.js +0 -144
- package/esm5/models/league-banner.js +0 -44
- package/esm5/models/league-court.js +0 -29
- package/esm5/models/league-document.js +0 -31
- package/esm5/models/league-news.js +0 -55
- package/esm5/models/league-partner.js +0 -34
- package/esm5/models/league-player.js +0 -77
- package/esm5/models/league-playlist.js +0 -33
- package/esm5/models/league-user.js +0 -61
- package/esm5/models/league.js +0 -95
- package/esm5/models/media-item.js +0 -50
- package/esm5/models/notification-settings.js +0 -40
- package/esm5/models/notification.js +0 -143
- package/esm5/models/organization.js +0 -32
- package/esm5/models/playoff.js +0 -102
- package/esm5/models/poll.js +0 -154
- package/esm5/models/public-api.js +0 -88
- package/esm5/models/rugby-foul-type.js +0 -40
- package/esm5/models/rugby-game-config.js +0 -51
- package/esm5/models/rugby-game-log.js +0 -143
- package/esm5/models/rugby-game-statistic.js +0 -68
- package/esm5/models/rugby-game-team-statistic.js +0 -32
- package/esm5/models/rugby-profile.js +0 -42
- package/esm5/models/rugby-statistic.js +0 -119
- package/esm5/models/sport.js +0 -104
- package/esm5/models/team-access.js +0 -50
- package/esm5/models/team-event-invite.js +0 -35
- package/esm5/models/team-event-type.js +0 -6
- package/esm5/models/team-event.js +0 -58
- package/esm5/models/team-invite-external.js +0 -30
- package/esm5/models/team-invite.js +0 -46
- package/esm5/models/team-permission.js +0 -43
- package/esm5/models/team-user.js +0 -53
- package/esm5/models/team.js +0 -70
- package/esm5/models/tournament-disqualification.js +0 -34
- package/esm5/models/tournament-event.js +0 -50
- package/esm5/models/tournament-group.js +0 -29
- package/esm5/models/tournament-invite.js +0 -48
- package/esm5/models/tournament-join-team.js +0 -73
- package/esm5/models/tournament-news.js +0 -38
- package/esm5/models/tournament-season.js +0 -50
- package/esm5/models/tournament-stage-team.js +0 -54
- package/esm5/models/tournament-stage.js +0 -40
- package/esm5/models/tournament-team-user-invite.js +0 -34
- package/esm5/models/tournament-team-user.js +0 -41
- package/esm5/models/tournament-team.js +0 -80
- package/esm5/models/tournament.js +0 -234
- package/esm5/models/user-access.js +0 -30
- package/esm5/models/user-permission.js +0 -43
- package/esm5/models/user-profile.js +0 -27
- package/esm5/models/user.js +0 -107
- package/esm5/models/util.js +0 -298
- package/esm5/models/volleyball-game-config.js +0 -53
- package/esm5/models/volleyball-game-log.js +0 -145
- package/esm5/models/volleyball-game-statistic.js +0 -72
- package/esm5/models/volleyball-game-team-statistic.js +0 -32
- package/esm5/models/volleyball-profile.js +0 -48
- package/esm5/models/volleyball-statistic.js +0 -89
- package/esm5/mtgame-core.js +0 -5
- package/esm5/public-api.js +0 -8
- package/esm5/services/base.service.js +0 -19
- package/esm5/services/centrifugo.service.js +0 -122
- package/esm5/services/config.service.js +0 -52
- package/esm5/services/public-api.js +0 -4
- package/esm5/storage/local-storage-engine.js +0 -25
- package/esm5/storage/public-api.js +0 -4
- package/esm5/storage/storage-engine.js +0 -77
- package/esm5/storage/store.js +0 -77
- package/esm5/utils/array.js +0 -18
- package/esm5/utils/component-destroyed.js +0 -21
- package/esm5/utils/cookie.js +0 -9
- package/esm5/utils/data.js +0 -79
- package/esm5/utils/device.js +0 -14
- package/esm5/utils/enum.js +0 -7
- package/esm5/utils/errors.js +0 -12
- package/esm5/utils/favicon.js +0 -47
- package/esm5/utils/form.js +0 -22
- package/esm5/utils/public-api.js +0 -11
- package/esm5/utils/validators.js +0 -49
- package/fesm5/mtgame-core.js +0 -9819
- package/fesm5/mtgame-core.js.map +0 -1
|
@@ -1,543 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate, __generator, __values } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
4
|
-
import { Tournament } from '../models/tournament';
|
|
5
|
-
import { map } from 'rxjs/operators';
|
|
6
|
-
import { TournamentNews } from '../models/tournament-news';
|
|
7
|
-
import { Game, GameStatuses } from '../models/game';
|
|
8
|
-
import { GameTimelineStages } from '../models/game-timeline-stages';
|
|
9
|
-
import { TournamentTeam } from '../models/tournament-team';
|
|
10
|
-
import { TournamentStage } from '../models/tournament-stage';
|
|
11
|
-
import { Playoff } from '../models/playoff';
|
|
12
|
-
import { BasketballStatistic } from '../models/basketball-statistic';
|
|
13
|
-
import { VolleyballStatistic } from '../models/volleyball-statistic';
|
|
14
|
-
import { TournamentTeamUser } from '../models/tournament-team-user';
|
|
15
|
-
import { TournamentStageTeam } from '../models/tournament-stage-team';
|
|
16
|
-
import { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';
|
|
17
|
-
import { ConfigService } from '../services/config.service';
|
|
18
|
-
import { HockeyStatistic } from '../models/hockey-statistic';
|
|
19
|
-
import { FootballStatistic } from '../models/football-statistic';
|
|
20
|
-
import { LeagueUserPermissions } from '../models/league-user';
|
|
21
|
-
import { HandballStatistic } from '../models/handball-statistic';
|
|
22
|
-
import { RugbyStatistic } from '../models/rugby-statistic';
|
|
23
|
-
import { TournamentGroup } from '../models/tournament-group';
|
|
24
|
-
import * as i0 from "@angular/core";
|
|
25
|
-
import * as i1 from "@angular/common/http";
|
|
26
|
-
import * as i2 from "../services/config.service";
|
|
27
|
-
var TournamentApi = /** @class */ (function () {
|
|
28
|
-
function TournamentApi(httpClient, configService) {
|
|
29
|
-
this.httpClient = httpClient;
|
|
30
|
-
this.configService = configService;
|
|
31
|
-
}
|
|
32
|
-
TournamentApi.prototype.getById = function (tournamentId) {
|
|
33
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
34
|
-
return __generator(this, function (_a) {
|
|
35
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/")
|
|
36
|
-
.pipe(map(function (result) { return Tournament.toFront(result); }))
|
|
37
|
-
.toPromise()];
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
TournamentApi.prototype.getByAlias = function (leagueId, alias) {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
-
return __generator(this, function (_a) {
|
|
44
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/league/" + leagueId + "/tournaments/" + alias + "/")
|
|
45
|
-
.pipe(map(function (result) { return Tournament.toFront(result); }))
|
|
46
|
-
.toPromise()];
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
TournamentApi.prototype.getNews = function (tournamentId) {
|
|
51
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
52
|
-
return __generator(this, function (_a) {
|
|
53
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/news/")
|
|
54
|
-
.pipe(map(function (result) { return TournamentNews.toFront(result); }))
|
|
55
|
-
.toPromise()];
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
TournamentApi.prototype.getEvents = function (tournamentId, page, size, filters) {
|
|
60
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
61
|
-
var params;
|
|
62
|
-
return __generator(this, function (_a) {
|
|
63
|
-
params = new HttpParams().set('page', page.toString())
|
|
64
|
-
.set('size', size.toString());
|
|
65
|
-
if (filters) {
|
|
66
|
-
if (filters.event) {
|
|
67
|
-
params = params.set('event', TournamentEventTypes[filters.event]);
|
|
68
|
-
}
|
|
69
|
-
if (filters.search) {
|
|
70
|
-
params = params.set('search', filters.search);
|
|
71
|
-
}
|
|
72
|
-
if (filters.tournamentTour) {
|
|
73
|
-
params = params.set('tournament_tour', filters.tournamentTour.toString());
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/events/", { params: params, observe: 'response' })
|
|
77
|
-
.pipe(map(function (result) { return ({
|
|
78
|
-
total: +result.headers.get('X-Page-Count'),
|
|
79
|
-
data: TournamentEvent.toFront(result.body)
|
|
80
|
-
}); }))
|
|
81
|
-
.toPromise()];
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
|
-
TournamentApi.prototype.getTournamentStages = function (tournamentId) {
|
|
86
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
87
|
-
return __generator(this, function (_a) {
|
|
88
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/stages/").pipe(map(function (data) { return TournamentStage.toFront(data); })).toPromise()];
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
TournamentApi.prototype.getPlayoff = function (tournamentId) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
94
|
-
return __generator(this, function (_a) {
|
|
95
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/playoff/").pipe(map(function (result) { return Playoff.toFront(result); })).toPromise()];
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
};
|
|
99
|
-
TournamentApi.prototype.getPlayoffGames = function (playoffId, playoffNumber) {
|
|
100
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
101
|
-
var params;
|
|
102
|
-
return __generator(this, function (_a) {
|
|
103
|
-
params = new HttpParams();
|
|
104
|
-
if (playoffNumber) {
|
|
105
|
-
params = params.set('playoff_number', playoffNumber);
|
|
106
|
-
}
|
|
107
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_playoff/" + playoffId + "/games/", { params: params }).pipe(map(function (result) { return Game.toFront(result); })).toPromise()];
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
TournamentApi.prototype.getGamesStages = function (tournamentId) {
|
|
112
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
113
|
-
return __generator(this, function (_a) {
|
|
114
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/games_stages/")
|
|
115
|
-
.pipe(map(function (data) { return GameTimelineStages.toFront(data); }))
|
|
116
|
-
.toPromise()];
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
};
|
|
120
|
-
TournamentApi.prototype.getGames = function (tournamentId, page, size, filters) {
|
|
121
|
-
if (filters === void 0) { filters = {}; }
|
|
122
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
123
|
-
var params;
|
|
124
|
-
return __generator(this, function (_a) {
|
|
125
|
-
params = new HttpParams().set('page', page.toString());
|
|
126
|
-
if (size) {
|
|
127
|
-
params = params.set('size', size.toString());
|
|
128
|
-
}
|
|
129
|
-
params = applyGamesFilters(filters, params);
|
|
130
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/games/", { params: params, observe: 'response' })
|
|
131
|
-
.pipe(map(function (result) { return ({
|
|
132
|
-
total: +result.headers.get('X-Page-Count'),
|
|
133
|
-
data: Game.toFront(result.body)
|
|
134
|
-
}); })).toPromise()];
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
};
|
|
138
|
-
TournamentApi.prototype.getGroups = function (tournamentId) {
|
|
139
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
140
|
-
return __generator(this, function (_a) {
|
|
141
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/groups/")
|
|
142
|
-
.pipe(map(function (result) { return TournamentGroup.toFront(result); }))
|
|
143
|
-
.toPromise()];
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
TournamentApi.prototype.getTeams = function (tournamentId, groupId) {
|
|
148
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
149
|
-
var params;
|
|
150
|
-
return __generator(this, function (_a) {
|
|
151
|
-
params = new HttpParams();
|
|
152
|
-
if (groupId) {
|
|
153
|
-
params = params.set('group_id', groupId.toString());
|
|
154
|
-
}
|
|
155
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/teams/", { params: params })
|
|
156
|
-
.pipe(map(function (result) { return TournamentTeam.toFront(result); }))
|
|
157
|
-
.toPromise()];
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
};
|
|
161
|
-
TournamentApi.prototype.getStageTeams = function (tournamentId) {
|
|
162
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
163
|
-
return __generator(this, function (_a) {
|
|
164
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/stage_teams/")
|
|
165
|
-
.pipe(map(function (result) { return TournamentStageTeam.toFront(result); }))
|
|
166
|
-
.toPromise()];
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
};
|
|
170
|
-
TournamentApi.prototype.getTeamById = function (tournamentTeamId) {
|
|
171
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
172
|
-
return __generator(this, function (_a) {
|
|
173
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_team/" + tournamentTeamId + "/")
|
|
174
|
-
.pipe(map(function (result) { return TournamentTeam.toFront(result); }))
|
|
175
|
-
.toPromise()];
|
|
176
|
-
});
|
|
177
|
-
});
|
|
178
|
-
};
|
|
179
|
-
TournamentApi.prototype.getUserById = function (userId) {
|
|
180
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
181
|
-
return __generator(this, function (_a) {
|
|
182
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_team_user/" + userId + "/")
|
|
183
|
-
.pipe(map(function (result) { return TournamentTeamUser.toFront(result); }))
|
|
184
|
-
.toPromise()];
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
};
|
|
188
|
-
TournamentApi.prototype.getUserGames = function (tournamentUserId) {
|
|
189
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
190
|
-
return __generator(this, function (_a) {
|
|
191
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_team_user/" + tournamentUserId + "/games/")
|
|
192
|
-
.pipe(map(function (result) { return Game.toFront(result); }))
|
|
193
|
-
.toPromise()];
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
};
|
|
197
|
-
TournamentApi.prototype.getBasketballStatisticLeaders = function (filters) {
|
|
198
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
199
|
-
var params;
|
|
200
|
-
return __generator(this, function (_a) {
|
|
201
|
-
params = new HttpParams();
|
|
202
|
-
params = applyStatisticLeadersFilters(filters, params);
|
|
203
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/basketball_statistic_leaders/", { params: params }).pipe(map(function (result) {
|
|
204
|
-
var e_1, _a;
|
|
205
|
-
try {
|
|
206
|
-
for (var _b = __values(Object.keys(result)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
207
|
-
var key = _c.value;
|
|
208
|
-
result[key] = BasketballStatistic.toFront(result[key]);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
212
|
-
finally {
|
|
213
|
-
try {
|
|
214
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
215
|
-
}
|
|
216
|
-
finally { if (e_1) throw e_1.error; }
|
|
217
|
-
}
|
|
218
|
-
return result;
|
|
219
|
-
})).toPromise()];
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
|
-
TournamentApi.prototype.getVolleyballStatisticLeaders = function (filters) {
|
|
224
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
-
var params;
|
|
226
|
-
return __generator(this, function (_a) {
|
|
227
|
-
params = new HttpParams();
|
|
228
|
-
params = applyStatisticLeadersFilters(filters, params);
|
|
229
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/volleyball_statistic_leaders/", { params: params }).pipe(map(function (result) {
|
|
230
|
-
var e_2, _a;
|
|
231
|
-
try {
|
|
232
|
-
for (var _b = __values(Object.keys(result)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
233
|
-
var key = _c.value;
|
|
234
|
-
result[key] = VolleyballStatistic.toFront(result[key]);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
238
|
-
finally {
|
|
239
|
-
try {
|
|
240
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
241
|
-
}
|
|
242
|
-
finally { if (e_2) throw e_2.error; }
|
|
243
|
-
}
|
|
244
|
-
return result;
|
|
245
|
-
})).toPromise()];
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
};
|
|
249
|
-
TournamentApi.prototype.getHockeyStatisticLeaders = function (filters) {
|
|
250
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
251
|
-
var params;
|
|
252
|
-
return __generator(this, function (_a) {
|
|
253
|
-
params = new HttpParams();
|
|
254
|
-
params = applyStatisticLeadersFilters(filters, params);
|
|
255
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/hockey_statistic_leaders/", { params: params }).pipe(map(function (result) {
|
|
256
|
-
var e_3, _a;
|
|
257
|
-
try {
|
|
258
|
-
for (var _b = __values(Object.keys(result)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
259
|
-
var key = _c.value;
|
|
260
|
-
result[key] = HockeyStatistic.toFront(result[key]);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
264
|
-
finally {
|
|
265
|
-
try {
|
|
266
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
267
|
-
}
|
|
268
|
-
finally { if (e_3) throw e_3.error; }
|
|
269
|
-
}
|
|
270
|
-
return result;
|
|
271
|
-
})).toPromise()];
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
};
|
|
275
|
-
TournamentApi.prototype.getFootballStatisticLeaders = function (filters) {
|
|
276
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
277
|
-
var params;
|
|
278
|
-
return __generator(this, function (_a) {
|
|
279
|
-
params = new HttpParams();
|
|
280
|
-
params = applyStatisticLeadersFilters(filters, params);
|
|
281
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/football_statistic_leaders/", { params: params }).pipe(map(function (result) {
|
|
282
|
-
var e_4, _a;
|
|
283
|
-
try {
|
|
284
|
-
for (var _b = __values(Object.keys(result)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
285
|
-
var key = _c.value;
|
|
286
|
-
result[key] = FootballStatistic.toFront(result[key]);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
290
|
-
finally {
|
|
291
|
-
try {
|
|
292
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
293
|
-
}
|
|
294
|
-
finally { if (e_4) throw e_4.error; }
|
|
295
|
-
}
|
|
296
|
-
return result;
|
|
297
|
-
})).toPromise()];
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
};
|
|
301
|
-
TournamentApi.prototype.getHandballStatisticLeaders = function (filters) {
|
|
302
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
303
|
-
var params;
|
|
304
|
-
return __generator(this, function (_a) {
|
|
305
|
-
params = new HttpParams();
|
|
306
|
-
params = applyStatisticLeadersFilters(filters, params);
|
|
307
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/handball_statistic_leaders/", { params: params }).pipe(map(function (result) {
|
|
308
|
-
var e_5, _a;
|
|
309
|
-
try {
|
|
310
|
-
for (var _b = __values(Object.keys(result)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
311
|
-
var key = _c.value;
|
|
312
|
-
result[key] = HandballStatistic.toFront(result[key]);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
316
|
-
finally {
|
|
317
|
-
try {
|
|
318
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
319
|
-
}
|
|
320
|
-
finally { if (e_5) throw e_5.error; }
|
|
321
|
-
}
|
|
322
|
-
return result;
|
|
323
|
-
})).toPromise()];
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
|
-
};
|
|
327
|
-
TournamentApi.prototype.getBasketballStatistic = function (filters) {
|
|
328
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
329
|
-
var params;
|
|
330
|
-
return __generator(this, function (_a) {
|
|
331
|
-
params = new HttpParams();
|
|
332
|
-
params = applyStatisticFilters(filters, params);
|
|
333
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/basketball_statistic/", { params: params, observe: 'response' }).pipe(map(function (result) { return ({
|
|
334
|
-
total: +result.headers.get('X-Page-Count'),
|
|
335
|
-
data: BasketballStatistic.toFront(result.body)
|
|
336
|
-
}); })).toPromise()];
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
|
-
};
|
|
340
|
-
TournamentApi.prototype.getVolleyballStatistic = function (filters) {
|
|
341
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
342
|
-
var params;
|
|
343
|
-
return __generator(this, function (_a) {
|
|
344
|
-
params = new HttpParams();
|
|
345
|
-
params = applyStatisticFilters(filters, params);
|
|
346
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/volleyball_statistic/", { params: params, observe: 'response' }).pipe(map(function (result) { return ({
|
|
347
|
-
total: +result.headers.get('X-Page-Count'),
|
|
348
|
-
data: VolleyballStatistic.toFront(result.body)
|
|
349
|
-
}); })).toPromise()];
|
|
350
|
-
});
|
|
351
|
-
});
|
|
352
|
-
};
|
|
353
|
-
TournamentApi.prototype.getHockeyStatistic = function (filters) {
|
|
354
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
355
|
-
var params;
|
|
356
|
-
return __generator(this, function (_a) {
|
|
357
|
-
params = new HttpParams();
|
|
358
|
-
params = applyStatisticFilters(filters, params);
|
|
359
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/hockey_statistic/", { params: params, observe: 'response' }).pipe(map(function (result) { return ({
|
|
360
|
-
total: +result.headers.get('X-Page-Count'),
|
|
361
|
-
data: HockeyStatistic.toFront(result.body)
|
|
362
|
-
}); })).toPromise()];
|
|
363
|
-
});
|
|
364
|
-
});
|
|
365
|
-
};
|
|
366
|
-
TournamentApi.prototype.getFootballStatistic = function (filters) {
|
|
367
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
368
|
-
var params;
|
|
369
|
-
return __generator(this, function (_a) {
|
|
370
|
-
params = new HttpParams();
|
|
371
|
-
params = applyStatisticFilters(filters, params);
|
|
372
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/football_statistic/", { params: params, observe: 'response' }).pipe(map(function (result) { return ({
|
|
373
|
-
total: +result.headers.get('X-Page-Count'),
|
|
374
|
-
data: FootballStatistic.toFront(result.body)
|
|
375
|
-
}); })).toPromise()];
|
|
376
|
-
});
|
|
377
|
-
});
|
|
378
|
-
};
|
|
379
|
-
TournamentApi.prototype.getHandballStatistic = function (filters) {
|
|
380
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
381
|
-
var params;
|
|
382
|
-
return __generator(this, function (_a) {
|
|
383
|
-
params = new HttpParams();
|
|
384
|
-
params = applyStatisticFilters(filters, params);
|
|
385
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/handball_statistic/", { params: params, observe: 'response' }).pipe(map(function (result) { return ({
|
|
386
|
-
total: +result.headers.get('X-Page-Count'),
|
|
387
|
-
data: HandballStatistic.toFront(result.body)
|
|
388
|
-
}); })).toPromise()];
|
|
389
|
-
});
|
|
390
|
-
});
|
|
391
|
-
};
|
|
392
|
-
TournamentApi.prototype.getRugbyStatistic = function (filters) {
|
|
393
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
394
|
-
var params;
|
|
395
|
-
return __generator(this, function (_a) {
|
|
396
|
-
params = new HttpParams();
|
|
397
|
-
params = applyStatisticFilters(filters, params);
|
|
398
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/rugby_statistic/", { params: params, observe: 'response' }).pipe(map(function (result) { return ({
|
|
399
|
-
total: +result.headers.get('X-Page-Count'),
|
|
400
|
-
data: RugbyStatistic.toFront(result.body)
|
|
401
|
-
}); })).toPromise()];
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
};
|
|
405
|
-
TournamentApi.prototype.getTournamentTeamUsers = function (tournamentTeamId) {
|
|
406
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
407
|
-
return __generator(this, function (_a) {
|
|
408
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_team/" + tournamentTeamId + "/users/").pipe(map(function (result) { return TournamentTeamUser.toFront(result); })).toPromise()];
|
|
409
|
-
});
|
|
410
|
-
});
|
|
411
|
-
};
|
|
412
|
-
TournamentApi.prototype.myPermission = function (tournamentId) {
|
|
413
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
414
|
-
return __generator(this, function (_a) {
|
|
415
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament/" + tournamentId + "/permission/").pipe(map(function (data) { return (data.permissions || []).map(function (item) { return LeagueUserPermissions[item]; }); })).toPromise()];
|
|
416
|
-
});
|
|
417
|
-
});
|
|
418
|
-
};
|
|
419
|
-
TournamentApi.prototype.getTournamentTeamTournaments = function (tournamentTeamId) {
|
|
420
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
421
|
-
return __generator(this, function (_a) {
|
|
422
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_team/" + tournamentTeamId + "/tournaments/").pipe(map(function (result) { return Tournament.toFront(result); })).toPromise()];
|
|
423
|
-
});
|
|
424
|
-
});
|
|
425
|
-
};
|
|
426
|
-
TournamentApi.prototype.getTournamentUserTournaments = function (tournamentTeamUserId) {
|
|
427
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
428
|
-
return __generator(this, function (_a) {
|
|
429
|
-
return [2 /*return*/, this.httpClient.get(this.configService.get('apiUrl') + "/api/v1/tournament_team_user/" + tournamentTeamUserId + "/tournaments/").pipe(map(function (result) { return Tournament.toFront(result); })).toPromise()];
|
|
430
|
-
});
|
|
431
|
-
});
|
|
432
|
-
};
|
|
433
|
-
TournamentApi.ctorParameters = function () { return [
|
|
434
|
-
{ type: HttpClient },
|
|
435
|
-
{ type: ConfigService }
|
|
436
|
-
]; };
|
|
437
|
-
TournamentApi.ɵprov = i0.ɵɵdefineInjectable({ factory: function TournamentApi_Factory() { return new TournamentApi(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.ConfigService)); }, token: TournamentApi, providedIn: "root" });
|
|
438
|
-
TournamentApi = __decorate([
|
|
439
|
-
Injectable({ providedIn: 'root' })
|
|
440
|
-
], TournamentApi);
|
|
441
|
-
return TournamentApi;
|
|
442
|
-
}());
|
|
443
|
-
export { TournamentApi };
|
|
444
|
-
export function applyGamesFilters(filters, params) {
|
|
445
|
-
if (filters.tournamentIds) {
|
|
446
|
-
params = params.set('tournament_ids', filters.tournamentIds.join(','));
|
|
447
|
-
}
|
|
448
|
-
if (filters.tournamentStageId) {
|
|
449
|
-
params = params.set('tournament_stage_id', filters.tournamentStageId.toString());
|
|
450
|
-
}
|
|
451
|
-
if (filters.tournamentTour) {
|
|
452
|
-
params = params.set('tournament_tour', filters.tournamentTour.toString());
|
|
453
|
-
}
|
|
454
|
-
if (filters.playoffStage) {
|
|
455
|
-
params = params.set('playoff_stage', filters.playoffStage.toString());
|
|
456
|
-
}
|
|
457
|
-
if (filters.playoffRound) {
|
|
458
|
-
params = params.set('playoff_round', filters.playoffRound.toString());
|
|
459
|
-
}
|
|
460
|
-
if (filters.teamId) {
|
|
461
|
-
params = params.set('team_id', filters.teamId.toString());
|
|
462
|
-
}
|
|
463
|
-
if (filters.status) {
|
|
464
|
-
params = params.set('status', GameStatuses[filters.status]);
|
|
465
|
-
}
|
|
466
|
-
if (filters.statuses) {
|
|
467
|
-
var statuses = filters.statuses.map(function (i) { return GameStatuses[i]; });
|
|
468
|
-
params = params.set('statuses', statuses.join(','));
|
|
469
|
-
}
|
|
470
|
-
if (filters.tournamentCourtId) {
|
|
471
|
-
params = params.set('tournament_court_id', filters.tournamentCourtId.toString());
|
|
472
|
-
}
|
|
473
|
-
if (filters.leaguePlayerId) {
|
|
474
|
-
params = params.set('league_player_id', filters.leaguePlayerId.toString());
|
|
475
|
-
}
|
|
476
|
-
if (filters.userId) {
|
|
477
|
-
params = params.set('user_id', filters.userId.toString());
|
|
478
|
-
}
|
|
479
|
-
if (filters.query) {
|
|
480
|
-
params = params.set('query', filters.query);
|
|
481
|
-
}
|
|
482
|
-
if (filters.isPlayoff !== undefined && filters.isPlayoff !== null) {
|
|
483
|
-
params = params.set('is_playoff', filters.isPlayoff ? '1' : '0');
|
|
484
|
-
}
|
|
485
|
-
return params;
|
|
486
|
-
}
|
|
487
|
-
export function applyStatisticFilters(filters, params) {
|
|
488
|
-
var e_6, _a;
|
|
489
|
-
try {
|
|
490
|
-
for (var _b = __values(Object.keys(filters)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
491
|
-
var key = _c.value;
|
|
492
|
-
if (filters[key]) {
|
|
493
|
-
params = params.set(key, filters[key]);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
498
|
-
finally {
|
|
499
|
-
try {
|
|
500
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
501
|
-
}
|
|
502
|
-
finally { if (e_6) throw e_6.error; }
|
|
503
|
-
}
|
|
504
|
-
if (filters.per_game !== undefined) {
|
|
505
|
-
params = params.set('per_game', filters.per_game ? '1' : '0');
|
|
506
|
-
}
|
|
507
|
-
if (filters.tournament_ids) {
|
|
508
|
-
params = params.set('tournament_ids', filters.tournament_ids.join(','));
|
|
509
|
-
}
|
|
510
|
-
if (filters.is_playoff !== undefined && filters.is_playoff !== null) {
|
|
511
|
-
params = params.set('is_playoff', filters.is_playoff ? '1' : '0');
|
|
512
|
-
}
|
|
513
|
-
return params;
|
|
514
|
-
}
|
|
515
|
-
export function applyStatisticLeadersFilters(filters, params) {
|
|
516
|
-
var e_7, _a;
|
|
517
|
-
try {
|
|
518
|
-
for (var _b = __values(Object.keys(filters)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
519
|
-
var key = _c.value;
|
|
520
|
-
if (filters[key]) {
|
|
521
|
-
params = params.set(key, filters[key]);
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
526
|
-
finally {
|
|
527
|
-
try {
|
|
528
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
529
|
-
}
|
|
530
|
-
finally { if (e_7) throw e_7.error; }
|
|
531
|
-
}
|
|
532
|
-
if (filters.per_game !== undefined) {
|
|
533
|
-
params = params.set('per_game', filters.per_game ? '1' : '0');
|
|
534
|
-
}
|
|
535
|
-
if (filters.tournament_ids) {
|
|
536
|
-
params = params.set('tournament_ids', filters.tournament_ids.join(','));
|
|
537
|
-
}
|
|
538
|
-
if (filters.fields) {
|
|
539
|
-
params = params.set('fields', filters.fields.join(','));
|
|
540
|
-
}
|
|
541
|
-
return params;
|
|
542
|
-
}
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1hcGkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbXRnYW1lL2NvcmUvIiwic291cmNlcyI6WyJhcGkvdG91cm5hbWVudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixD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dGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUb3VybmFtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG91cm5hbWVudE5ld3MgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1uZXdzJztcbmltcG9ydCB7IEdhbWUsIEdhbWVTdGF0dXNlcyB9IGZyb20gJy4uL21vZGVscy9nYW1lJztcbmltcG9ydCB7IEdhbWVUaW1lbGluZVN0YWdlcyB9IGZyb20gJy4uL21vZGVscy9nYW1lLXRpbWVsaW5lLXN0YWdlcyc7XG5pbXBvcnQgeyBUb3VybmFtZW50VGVhbSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXRlYW0nO1xuaW1wb3J0IHsgVG91cm5hbWVudFN0YWdlIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtc3RhZ2UnO1xuaW1wb3J0IHsgUGxheW9mZiB9IGZyb20gJy4uL21vZGVscy9wbGF5b2ZmJztcbmltcG9ydCB7IFBhZ2luYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi9wYWdpbmF0ZWQtcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhc2tldGJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvYmFza2V0YmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVm9sbGV5YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy92b2xsZXliYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBUb3VybmFtZW50VGVhbVVzZXIgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC10ZWFtLXVzZXInO1xuaW1wb3J0IHsgVG91cm5hbWVudFN0YWdlVGVhbSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXN0YWdlLXRlYW0nO1xuaW1wb3J0IHsgVG91cm5hbWVudEV2ZW50LCBUb3VybmFtZW50RXZlbnRUeXBlcyB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWV2ZW50JztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBIb2NrZXlTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvaG9ja2V5LXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBGb290YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9mb290YmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgTGVhZ3VlVXNlclBlcm1pc3Npb25zIH0gZnJvbSAnLi4vbW9kZWxzL2xlYWd1ZS11c2VyJztcbmltcG9ydCB7IEhhbmRiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2hhbmRiYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBSdWdieVN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9ydWdieS1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVG91cm5hbWVudEdyb3VwIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtZ3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMge1xuICB0b3VybmFtZW50SWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRTZWFzb25JZD86IG51bWJlcjtcbiAgdG91cm5hbWVudFN0YWdlSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRUb3VyPzogbnVtYmVyO1xuICB0ZWFtSWQ/OiBudW1iZXI7XG4gIHBsYXlvZmZTdGFnZT86IG51bWJlcjtcbiAgcGxheW9mZlJvdW5kPzogbnVtYmVyO1xuICBwbGF5b2ZmSWQ/OiBudW1iZXI7XG4gIGlzUGxheW9mZj86IGJvb2xlYW47XG4gIHN0YXR1cz86IEdhbWVTdGF0dXNlcztcbiAgc3RhdHVzZXM/OiBHYW1lU3RhdHVzZXNbXTtcbiAgdG91cm5hbWVudENvdXJ0SWQ/OiBudW1iZXI7XG4gIGxlYWd1ZVBsYXllcklkPzogbnVtYmVyO1xuICB1c2VySWQ/OiBudW1iZXI7XG4gIHF1ZXJ5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdGF0aXN0aWNHcm91cEJ5VHlwZXMgPSAndGVhbScgfCAndXNlcicgfCAndGVhbV91c2VyJyB8ICd0b3VybmFtZW50X3RlYW0nIHwgJ2xlYWd1ZV9wbGF5ZXInIHwgJ3RvdXJuYW1lbnRfdGVhbV91c2VyJ1xuICB8ICdtb250aCcgfCAnd2luX2xvc2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aXN0aWNGaWx0ZXJzIHtcbiAgdG91cm5hbWVudF9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9pZHM/OiBudW1iZXJbXTtcbiAgdG91cm5hbWVudF9zZWFzb25faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdGVhbV9pZD86IG51bWJlcjtcbiAgbGVhZ3VlX3BsYXllcl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90ZWFtX3VzZXJfaWQ/OiBudW1iZXI7XG4gIHRlYW1faWQ/OiBudW1iZXI7XG4gIHRlYW1fdXNlcl9pZD86IG51bWJlcjtcbiAgdXNlcl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9zdGFnZV9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90b3VyPzogbnVtYmVyO1xuICBwbGF5b2ZmX3N0YWdlPzogbnVtYmVyO1xuICBwbGF5b2ZmX3JvdW5kPzogbnVtYmVyO1xuICBwbGF5b2ZmX2lkPzogbnVtYmVyO1xuICBpc19wbGF5b2ZmPzogYm9vbGVhbjtcbiAgZGF0ZV9mcm9tPzogc3RyaW5nO1xuICBkYXRlX3RvPzogc3RyaW5nO1xuICBxdWVyeT86IHN0cmluZztcbiAgcGVyX2dhbWU/OiBib29sZWFuO1xuICBncm91cF9ieTogU3RhdGlzdGljR3JvdXBCeVR5cGVzO1xuICBvcmRlcl9ieT86IHN0cmluZztcbiAgcGFnZT86IG51bWJlcjtcbiAgc2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyB7XG4gIHRvdXJuYW1lbnRfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfaWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRfc2Vhc29uX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RlYW1faWQ/OiBudW1iZXI7XG4gIHRlYW1faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfc3RhZ2VfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdG91cj86IG51bWJlcjtcbiAgcGxheW9mZl9zdGFnZT86IG51bWJlcjtcbiAgcGxheW9mZl9pZD86IG51bWJlcjtcbiAgZGF0ZV9mcm9tPzogc3RyaW5nO1xuICBkYXRlX3RvPzogc3RyaW5nO1xuICBwZXJfZ2FtZT86IGJvb2xlYW47XG4gIGdyb3VwX2J5OiBTdGF0aXN0aWNHcm91cEJ5VHlwZXM7XG4gIHNpemU/OiBudW1iZXI7XG4gIGZpZWxkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG91cm5hbWVudEV2ZW50c0xpc3RGaWx0ZXIge1xuICBldmVudD86IFRvdXJuYW1lbnRFdmVudFR5cGVzO1xuICBzZWFyY2g/OiBzdHJpbmc7XG4gIHRvdXJuYW1lbnRUb3VyPzogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBUb3VybmFtZW50QXBpIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRCeUFsaWFzKGxlYWd1ZUlkOiBudW1iZXIsIGFsaWFzOiBzdHJpbmcpOiBQcm9taXNlPFRvdXJuYW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2xlYWd1ZS8ke2xlYWd1ZUlkfS90b3VybmFtZW50cy8ke2FsaWFzfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXROZXdzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50TmV3c1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9uZXdzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnROZXdzLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRFdmVudHModG91cm5hbWVudElkOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBmaWx0ZXJzPzogVG91cm5hbWVudEV2ZW50c0xpc3RGaWx0ZXIpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFRvdXJuYW1lbnRFdmVudFtdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgncGFnZScsIHBhZ2UudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NpemUnLCBzaXplLnRvU3RyaW5nKCkpO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBpZiAoZmlsdGVycy5ldmVudCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdldmVudCcsIFRvdXJuYW1lbnRFdmVudFR5cGVzW2ZpbHRlcnMuZXZlbnRdKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXJzLnNlYXJjaCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2gnLCBmaWx0ZXJzLnNlYXJjaCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVycy50b3VybmFtZW50VG91cikge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3RvdXInLCBmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2V2ZW50cy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBUb3VybmFtZW50RXZlbnQudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRTdGFnZXModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRTdGFnZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9zdGFnZXMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IFRvdXJuYW1lbnRTdGFnZS50b0Zyb250KGRhdGEpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRQbGF5b2ZmKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxQbGF5b2ZmW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3BsYXlvZmYvYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gUGxheW9mZi50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFBsYXlvZmZHYW1lcyhwbGF5b2ZmSWQ6IG51bWJlciwgcGxheW9mZk51bWJlcj86IHN0cmluZyk6IFByb21pc2U8R2FtZVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHBsYXlvZmZOdW1iZXIpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfbnVtYmVyJywgcGxheW9mZk51bWJlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF9wbGF5b2ZmLyR7cGxheW9mZklkfS9nYW1lcy9gLFxuICAgICAge3BhcmFtc31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IEdhbWUudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHYW1lc1N0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8R2FtZVRpbWVsaW5lU3RhZ2VzPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9nYW1lc19zdGFnZXMvYClcbiAgICAgIC5waXBlKG1hcChkYXRhID0+IEdhbWVUaW1lbGluZVN0YWdlcy50b0Zyb250KGRhdGEpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEdhbWVzKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBwYWdlOiBudW1iZXIsIHNpemU6IG51bWJlciwgZmlsdGVyczogVG91cm5hbWVudEdhbWVzRmlsdGVycyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxHYW1lW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKTtcbiAgICBpZiAoc2l6ZSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIHBhcmFtcyA9IGFwcGx5R2FtZXNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9nYW1lcy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBHYW1lLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R3JvdXBzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50R3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ3JvdXBzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRHcm91cC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbXModG91cm5hbWVudElkOiBudW1iZXIsIGdyb3VwSWQ/OiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtW10+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAoZ3JvdXBJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZ3JvdXBfaWQnLCBncm91cElkLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3RlYW1zL2AsIHtwYXJhbXN9KVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbS50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RhZ2VUZWFtcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFN0YWdlVGVhbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9zdGFnZV90ZWFtcy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50U3RhZ2VUZWFtLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtQnlJZCh0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbS50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlckJ5SWQodXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtVXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt1c2VySWR9L2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRUZWFtVXNlci50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlckdhbWVzKHRvdXJuYW1lbnRVc2VySWQ6IG51bWJlcik6IFByb21pc2U8R2FtZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW1fdXNlci8ke3RvdXJuYW1lbnRVc2VySWR9L2dhbWVzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IEdhbWUudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhc2tldGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogQmFza2V0YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Jhc2tldGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBCYXNrZXRiYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRWb2xsZXliYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IFZvbGxleWJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS92b2xsZXliYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gVm9sbGV5YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0SG9ja2V5U3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEhvY2tleVN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2hvY2tleV9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEhvY2tleVN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9vdGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogRm9vdGJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9mb290YmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEZvb3RiYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIYW5kYmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBIYW5kYmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2hhbmRiYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gSGFuZGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhc2tldGJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEJhc2tldGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvYmFza2V0YmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogQmFza2V0YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZvbGxleWJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFZvbGxleWJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdm9sbGV5YmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogVm9sbGV5YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvY2tleVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SG9ja2V5U3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2hvY2tleV9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogSG9ja2V5U3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9vdGJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEZvb3RiYWxsU3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Zvb3RiYWxsX3N0YXRpc3RpYy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBGb290YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhhbmRiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxIYW5kYmFsbFN0YXRpc3RpY1tdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9oYW5kYmFsbF9zdGF0aXN0aWMvYCwge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogSGFuZGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRSdWdieVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8UnVnYnlTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvcnVnYnlfc3RhdGlzdGljL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFJ1Z2J5U3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFRlYW1Vc2Vycyh0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtVXNlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS91c2Vycy9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbVVzZXIudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBteVBlcm1pc3Npb24odG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPExlYWd1ZVVzZXJQZXJtaXNzaW9uc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9wZXJtaXNzaW9uL2ApLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IGFueSkgPT4gKGRhdGEucGVybWlzc2lvbnMgfHwgW10pLm1hcChpdGVtID0+IExlYWd1ZVVzZXJQZXJtaXNzaW9uc1tpdGVtXSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVG91cm5hbWVudHModG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbS8ke3RvdXJuYW1lbnRUZWFtSWR9L3RvdXJuYW1lbnRzL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VXNlclRvdXJuYW1lbnRzKHRvdXJuYW1lbnRUZWFtVXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt0b3VybmFtZW50VGVhbVVzZXJJZH0vdG91cm5hbWVudHMvYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlHYW1lc0ZpbHRlcnMoZmlsdGVyczogVG91cm5hbWVudEdhbWVzRmlsdGVycywgcGFyYW1zOiBIdHRwUGFyYW1zKTogSHR0cFBhcmFtcyB7XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRJZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudElkcy5qb2luKCcsJykpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRTdGFnZUlkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9zdGFnZV9pZCcsIGZpbHRlcnMudG91cm5hbWVudFN0YWdlSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudFRvdXIpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3RvdXInLCBmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnBsYXlvZmZTdGFnZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfc3RhZ2UnLCBmaWx0ZXJzLnBsYXlvZmZTdGFnZS50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5wbGF5b2ZmUm91bmQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwbGF5b2ZmX3JvdW5kJywgZmlsdGVycy5wbGF5b2ZmUm91bmQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudGVhbUlkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndGVhbV9pZCcsIGZpbHRlcnMudGVhbUlkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnN0YXR1cykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N0YXR1cycsIEdhbWVTdGF0dXNlc1tmaWx0ZXJzLnN0YXR1c10pO1xuICB9XG4gIGlmIChmaWx0ZXJzLnN0YXR1c2VzKSB7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBmaWx0ZXJzLnN0YXR1c2VzLm1hcChpID0+IEdhbWVTdGF0dXNlc1tpXSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzZXMnLCBzdGF0dXNlcy5qb2luKCcsJykpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRDb3VydElkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9jb3VydF9pZCcsIGZpbHRlcnMudG91cm5hbWVudENvdXJ0SWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMubGVhZ3VlUGxheWVySWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdsZWFndWVfcGxheWVyX2lkJywgZmlsdGVycy5sZWFndWVQbGF5ZXJJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy51c2VySWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd1c2VyX2lkJywgZmlsdGVycy51c2VySWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMucXVlcnkpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdxdWVyeScsIGZpbHRlcnMucXVlcnkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmlzUGxheW9mZiAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMuaXNQbGF5b2ZmICE9PSBudWxsKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaXNfcGxheW9mZicsIGZpbHRlcnMuaXNQbGF5b2ZmID8gJzEnIDogJzAnKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0ZpbHRlcnMsIHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzKSkge1xuICAgIGlmIChmaWx0ZXJzW2tleV0pIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoa2V5LCBmaWx0ZXJzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnBlcl9nYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwZXJfZ2FtZScsIGZpbHRlcnMucGVyX2dhbWUgPyAnMScgOiAnMCcpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudF9pZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudF9pZHMuam9pbignLCcpKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLmlzX3BsYXlvZmYgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJzLmlzX3BsYXlvZmYgIT09IG51bGwpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19wbGF5b2ZmJywgZmlsdGVycy5pc19wbGF5b2ZmID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmlsdGVycykpIHtcbiAgICBpZiAoZmlsdGVyc1trZXldKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgZmlsdGVyc1trZXldKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVycy5wZXJfZ2FtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGVyX2dhbWUnLCBmaWx0ZXJzLnBlcl9nYW1lID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9pZHMnLCBmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzLmpvaW4oJywnKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZmllbGRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZmllbGRzJywgZmlsdGVycy5maWVsZHMuam9pbignLCcpKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuIl19
|