myrtex-mf-competition 1.0.22 → 1.0.23

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.
@@ -1,179 +1,95 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { createEffect, ofType } from '@ngrx/effects';
3
+ import { select } from '@ngrx/store';
4
+ import { EMPTY } from 'rxjs';
5
+ import { catchError, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
6
+ import * as CompetitionHeaderActions from './competition-header.actions';
7
+ import { ECompetitionHeaderActions } from './competition-header.actions';
8
+ import { MessageSeverity, selectCompetitionId, Utilities } from 'myrtex-mf-ui-composite';
2
9
  import * as i0 from "@angular/core";
3
10
  import * as i1 from "../services/competition-header.service";
4
11
  import * as i2 from "@ngrx/effects";
5
12
  import * as i3 from "@ngrx/store";
6
13
  import * as i4 from "myrtex-mf-ui-composite";
7
14
  export class CompetitionHeaderEffects {
8
- // loadCompetitionHeader$ = createEffect(() => this.actions$.pipe(
9
- // ofType(ECompetitionHeaderActions.LoadCompetitionHeader),
10
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
11
- // switchMap(([, competitionId]) => {
12
- // return this.competitionHeaderService.getHeader(competitionId).pipe(
13
- // map((result: CompetitionHeaderVersionModel) => CompetitionHeaderActions.loadCompetitionHeaderSuccess({competitionHeader: result})),
14
- // catchError((err) => {
15
- // this.alertService.showMessage(err, null, MessageSeverity.error);
16
- // return EMPTY;
17
- // })
18
- // );
19
- // })));
20
- //
21
- // deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(
22
- // ofType(ECompetitionHeaderActions.DeleteCompetitionVersion),
23
- // map((action: { versionId: string }) => action.versionId),
24
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
25
- // switchMap(([versionId, competitionId]) => {
26
- // return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(
27
- // map((result: boolean) => CompetitionHeaderActions.deleteCompetitionVersionSuccess({ versionId })),
28
- // catchError((err) => {
29
- // this.alertService.showMessage(err, null, MessageSeverity.error);
30
- // return EMPTY;
31
- // })
32
- // );
33
- // })));
34
- //
35
- // deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(
36
- // ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess),
37
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
38
- // tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)
39
- // ), {dispatch: false});
40
- //
41
- // createCompetitionVersion$ = createEffect(() => this.actions$.pipe(
42
- // ofType(ECompetitionHeaderActions.CreateCompetitionVersion),
43
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
44
- // switchMap(([, competitionId]) => {
45
- // return this.competitionHeaderService.createVersion(competitionId).pipe(
46
- // map((result: string) => CompetitionHeaderActions.createCompetitionVersionSuccess({ versionId: result })),
47
- // catchError((err) => {
48
- // this.alertService.showMessage(err, null, MessageSeverity.error);
49
- // return EMPTY;
50
- // })
51
- // );
52
- // })));
53
- //
54
- // createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(
55
- // ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess),
56
- // map((action: { versionId: string }) => action.versionId),
57
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
58
- // tap(([versionId, competitionId]) =>
59
- // window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)
60
- // ), {dispatch: false});
61
- //
62
- // competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(
63
- // ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus),
64
- // map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
65
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
66
- // switchMap(([action, competitionId]) => {
67
- // return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(
68
- // map((result: boolean) => {
69
- // return CompetitionHeaderActions.competitionVersionChangeStatusSuccess({
70
- // versionId: action.versionId,
71
- // status: action.status
72
- // });
73
- // }),
74
- // catchError((err) => {
75
- // this.alertService.showMessage(err, null, MessageSeverity.error);
76
- // return EMPTY;
77
- // })
78
- // );
79
- // })));
80
- //
81
- // competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
82
- // ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess),
83
- // map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
84
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
85
- // tap(([action, competitionId]) => {
86
- // if (action.status === CompetitionVersionStatusEnum.Validation) {
87
- // window.location.href = `/m-data/minfin/selection/edit?competitionId=${competitionId}&versionId=${action.versionId}`;
88
- // } else {
89
- // window.location.reload();
90
- // }
91
- // })
92
- // ), { dispatch: false });
93
- //
94
- // selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(
95
- // ofType(ECompetitionHeaderActions.SelectCompetitionVersion),
96
- // map((action: { versionId: string }) => action.versionId),
97
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
98
- // tap(([versionId, competitionId]) => {
99
- // const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
100
- // window.location.href = newUri;
101
- // })
102
- // ), {dispatch: false});
103
- //
104
- // activateCompetition$ = createEffect(() => (this.actions$.pipe(
105
- // ofType(ECompetitionHeaderActions.ActivateCompetition),
106
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
107
- // switchMap(([, competitionId]) => {
108
- // return this.competitionHeaderService.activate(competitionId).pipe(
109
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
110
- // catchError((err, caught) => {
111
- // this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
112
- // return EMPTY;
113
- // })
114
- // );
115
- // })
116
- // )));
117
- //
118
- // pauseCompetition$ = createEffect(() => (this.actions$.pipe(
119
- // ofType(ECompetitionHeaderActions.PauseCompetition),
120
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
121
- // switchMap(([, competitionId]) => {
122
- // return this.competitionHeaderService.pause(competitionId).pipe(
123
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
124
- // catchError((err, caught) => {
125
- // this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
126
- // return EMPTY;
127
- // })
128
- // );
129
- // })
130
- // )));
131
- //
132
- // completeCompetition$ = createEffect(() => (this.actions$.pipe(
133
- // ofType(ECompetitionHeaderActions.CompleteCompetition),
134
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
135
- // switchMap(([, competitionId]) => {
136
- // return this.competitionHeaderService.complete(competitionId).pipe(
137
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
138
- // catchError((err, caught) => {
139
- // this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
140
- // return EMPTY;
141
- // })
142
- // );
143
- // })
144
- // )));
145
- //
146
- // cancelCompetition$ = createEffect(() => (this.actions$.pipe(
147
- // ofType(ECompetitionHeaderActions.CancelCompetition),
148
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
149
- // switchMap(([, competitionId]) => {
150
- // return this.competitionHeaderService.cancel(competitionId).pipe(
151
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
152
- // catchError((err, caught) => {
153
- // this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
154
- // return EMPTY;
155
- // })
156
- // );
157
- // })
158
- // )));
159
- //
160
- // cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(
161
- // ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation),
162
- // map((action: { versionId: string }) => action.versionId),
163
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
164
- // tap(([versionId, competitionId]) =>
165
- // window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)
166
- // ), {dispatch: false});
167
- //
168
- // competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
169
- // ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess),
170
- // tap(() => window.location.reload())
171
- // ), {dispatch: false});
172
15
  constructor(competitionHeaderService, actions$, store, alertService) {
173
16
  this.competitionHeaderService = competitionHeaderService;
174
17
  this.actions$ = actions$;
175
18
  this.store = store;
176
19
  this.alertService = alertService;
20
+ this.loadCompetitionHeader$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.LoadCompetitionHeader), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
21
+ return this.competitionHeaderService.getHeader(competitionId).pipe(map((result) => CompetitionHeaderActions.loadCompetitionHeaderSuccess({ competitionHeader: result })), catchError((err) => {
22
+ this.alertService.showMessage(err, null, MessageSeverity.error);
23
+ return EMPTY;
24
+ }));
25
+ })));
26
+ this.deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([versionId, competitionId]) => {
27
+ return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(map((result) => CompetitionHeaderActions.deleteCompetitionVersionSuccess({ versionId })), catchError((err) => {
28
+ this.alertService.showMessage(err, null, MessageSeverity.error);
29
+ return EMPTY;
30
+ }));
31
+ })));
32
+ this.deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)), { dispatch: false });
33
+ this.createCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersion), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
34
+ return this.competitionHeaderService.createVersion(competitionId).pipe(map((result) => CompetitionHeaderActions.createCompetitionVersionSuccess({ versionId: result })), catchError((err) => {
35
+ this.alertService.showMessage(err, null, MessageSeverity.error);
36
+ return EMPTY;
37
+ }));
38
+ })));
39
+ this.createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
40
+ this.competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus), map((action) => action), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([action, competitionId]) => {
41
+ return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(map((result) => {
42
+ return CompetitionHeaderActions.competitionVersionChangeStatusSuccess({
43
+ versionId: action.versionId,
44
+ status: action.status
45
+ });
46
+ }), catchError((err) => {
47
+ this.alertService.showMessage(err, null, MessageSeverity.error);
48
+ return EMPTY;
49
+ }));
50
+ })));
51
+ // competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
52
+ // ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess),
53
+ // map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
54
+ // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
55
+ // tap(([action, competitionId]) => {
56
+ // if (action.status === CompetitionVersionStatusEnum.Validation) {
57
+ // window.location.href = `/m-data/minfin/selection/edit?competitionId=${competitionId}&versionId=${action.versionId}`;
58
+ // } else {
59
+ // window.location.reload();
60
+ // }
61
+ // })
62
+ // ), { dispatch: false });
63
+ this.selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.SelectCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => {
64
+ const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
65
+ window.location.href = newUri;
66
+ })), { dispatch: false });
67
+ this.activateCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.ActivateCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
68
+ return this.competitionHeaderService.activate(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
69
+ this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
70
+ return EMPTY;
71
+ }));
72
+ }))));
73
+ this.pauseCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.PauseCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
74
+ return this.competitionHeaderService.pause(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
75
+ this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
76
+ return EMPTY;
77
+ }));
78
+ }))));
79
+ this.completeCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CompleteCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
80
+ return this.competitionHeaderService.complete(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
81
+ this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
82
+ return EMPTY;
83
+ }));
84
+ }))));
85
+ this.cancelCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
86
+ return this.competitionHeaderService.cancel(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
87
+ this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
88
+ return EMPTY;
89
+ }));
90
+ }))));
91
+ this.cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
92
+ this.competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess), tap(() => window.location.reload())), { dispatch: false });
177
93
  }
178
94
  }
179
95
  CompetitionHeaderEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, deps: [{ token: i1.CompetitionHeaderService }, { token: i2.Actions }, { token: i3.Store }, { token: i4.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -181,4 +97,4 @@ CompetitionHeaderEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
181
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, decorators: [{
182
98
  type: Injectable
183
99
  }], ctorParameters: function () { return [{ type: i1.CompetitionHeaderService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.AlertService }]; } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtY29tcGV0aXRpb24vc3JjL2xpYi9tb2R1bGVzL2NvbXBldGl0aW9uLWhlYWRlci9zdG9yZS9jb21wZXRpdGlvbi1oZWFkZXIuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFtQnpDLE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsa0VBQWtFO0lBQ2xFLDZEQUE2RDtJQUM3RCxrRUFBa0U7SUFDbEUsdUNBQXVDO0lBQ3ZDLDBFQUEwRTtJQUMxRSw0SUFBNEk7SUFDNUksOEJBQThCO0lBQzlCLDJFQUEyRTtJQUMzRSx3QkFBd0I7SUFDeEIsV0FBVztJQUNYLFNBQVM7SUFDVCxVQUFVO0lBQ1YsRUFBRTtJQUNGLHFFQUFxRTtJQUNyRSxnRUFBZ0U7SUFDaEUsOERBQThEO0lBQzlELGtFQUFrRTtJQUNsRSxnREFBZ0Q7SUFDaEQseUZBQXlGO0lBQ3pGLDJHQUEyRztJQUMzRyw4QkFBOEI7SUFDOUIsMkVBQTJFO0lBQzNFLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxrRUFBa0U7SUFDbEUsdUhBQXVIO0lBQ3ZILHlCQUF5QjtJQUN6QixFQUFFO0lBQ0YscUVBQXFFO0lBQ3JFLGdFQUFnRTtJQUNoRSxrRUFBa0U7SUFDbEUsdUNBQXVDO0lBQ3ZDLDhFQUE4RTtJQUM5RSxrSEFBa0g7SUFDbEgsOEJBQThCO0lBQzlCLDJFQUEyRTtJQUMzRSx3QkFBd0I7SUFDeEIsV0FBVztJQUNYLFNBQVM7SUFDVCxVQUFVO0lBQ1YsRUFBRTtJQUNGLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsOERBQThEO0lBQzlELGtFQUFrRTtJQUNsRSx3Q0FBd0M7SUFDeEMscUhBQXFIO0lBQ3JILHlCQUF5QjtJQUN6QixFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLHNFQUFzRTtJQUN0RSwwRkFBMEY7SUFDMUYsa0VBQWtFO0lBQ2xFLDZDQUE2QztJQUM3QyxxSEFBcUg7SUFDckgsbUNBQW1DO0lBQ25DLGtGQUFrRjtJQUNsRix5Q0FBeUM7SUFDekMsa0NBQWtDO0lBQ2xDLGNBQWM7SUFDZCxZQUFZO0lBQ1osOEJBQThCO0lBQzlCLDJFQUEyRTtJQUMzRSx3QkFBd0I7SUFDeEIsV0FBVztJQUNYLFNBQVM7SUFDVCxVQUFVO0lBQ1YsRUFBRTtJQUNGLG9GQUFvRjtJQUNwRiwrRUFBK0U7SUFDL0UsNEZBQTRGO0lBQzVGLG9FQUFvRTtJQUNwRSx5Q0FBeUM7SUFDekMseUVBQXlFO0lBQ3pFLCtIQUErSDtJQUMvSCxpQkFBaUI7SUFDakIsb0NBQW9DO0lBQ3BDLFVBQVU7SUFDVixTQUFTO0lBQ1QsNkJBQTZCO0lBQzdCLEVBQUU7SUFDRixxRUFBcUU7SUFDckUsZ0VBQWdFO0lBQ2hFLDhEQUE4RDtJQUM5RCxrRUFBa0U7SUFDbEUsMENBQTBDO0lBQzFDLHlHQUF5RztJQUN6RyxxQ0FBcUM7SUFDckMsT0FBTztJQUNQLHlCQUF5QjtJQUN6QixFQUFFO0lBQ0YsaUVBQWlFO0lBQ2pFLDJEQUEyRDtJQUMzRCxrRUFBa0U7SUFDbEUsdUNBQXVDO0lBQ3ZDLHlFQUF5RTtJQUN6RSx5RkFBeUY7SUFDekYsc0NBQXNDO0lBQ3RDLCtGQUErRjtJQUMvRix3QkFBd0I7SUFDeEIsV0FBVztJQUNYLFNBQVM7SUFDVCxPQUFPO0lBQ1AsT0FBTztJQUNQLEVBQUU7SUFDRiw4REFBOEQ7SUFDOUQsd0RBQXdEO0lBQ3hELGtFQUFrRTtJQUNsRSx1Q0FBdUM7SUFDdkMsc0VBQXNFO0lBQ3RFLHlGQUF5RjtJQUN6RixzQ0FBc0M7SUFDdEMsa0dBQWtHO0lBQ2xHLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULE9BQU87SUFDUCxPQUFPO0lBQ1AsRUFBRTtJQUNGLGlFQUFpRTtJQUNqRSwyREFBMkQ7SUFDM0Qsa0VBQWtFO0lBQ2xFLHVDQUF1QztJQUN2Qyx5RUFBeUU7SUFDekUseUZBQXlGO0lBQ3pGLHNDQUFzQztJQUN0QyxvR0FBb0c7SUFDcEcsd0JBQXdCO0lBQ3hCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsT0FBTztJQUNQLE9BQU87SUFDUCxFQUFFO0lBQ0YsK0RBQStEO0lBQy9ELHlEQUF5RDtJQUN6RCxrRUFBa0U7SUFDbEUsdUNBQXVDO0lBQ3ZDLHVFQUF1RTtJQUN2RSx5RkFBeUY7SUFDekYsc0NBQXNDO0lBQ3RDLGdHQUFnRztJQUNoRyx3QkFBd0I7SUFDeEIsV0FBVztJQUNYLFNBQVM7SUFDVCxPQUFPO0lBQ1AsT0FBTztJQUNQLEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLDhEQUE4RDtJQUM5RCxrRUFBa0U7SUFDbEUsd0NBQXdDO0lBQ3hDLDJIQUEySDtJQUMzSCx5QkFBeUI7SUFDekIsRUFBRTtJQUNGLDJFQUEyRTtJQUMzRSxzRUFBc0U7SUFDdEUsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUV6QixZQUFvQix3QkFBa0QsRUFDbEQsUUFBaUIsRUFDakIsS0FBWSxFQUNaLFlBQTBCO1FBSDFCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQWM7SUFFOUMsQ0FBQzs7c0hBNUtVLHdCQUF3QjswSEFBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcclxuaW1wb3J0IHtzZWxlY3QsIFN0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7RU1QVFl9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucyBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHtjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLCBFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zfSBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclZlcnNpb25Nb2RlbH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLWhlYWRlci12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBldGl0aW9uLWhlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGVydFNlcnZpY2UsXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuICBNZXNzYWdlU2V2ZXJpdHksXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25JZCxcclxuICBVdGlsaXRpZXNcclxufSBmcm9tICdteXJ0ZXgtbWYtdWktY29tcG9zaXRlJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wZXRpdGlvbkhlYWRlckVmZmVjdHMge1xyXG5cclxuICAvLyBsb2FkQ29tcGV0aXRpb25IZWFkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkxvYWRDb21wZXRpdGlvbkhlYWRlciksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5nZXRIZWFkZXIoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAvLyAgICAgICBtYXAoKHJlc3VsdDogQ29tcGV0aXRpb25IZWFkZXJWZXJzaW9uTW9kZWwpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5sb2FkQ29tcGV0aXRpb25IZWFkZXJTdWNjZXNzKHtjb21wZXRpdGlvbkhlYWRlcjogcmVzdWx0fSkpLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyLCBudWxsLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KSkpO1xyXG4gIC8vXHJcbiAgLy8gZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5EZWxldGVDb21wZXRpdGlvblZlcnNpb24pLFxyXG4gIC8vICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5kZWxldGVWZXJzaW9uKGNvbXBldGl0aW9uSWQsIHZlcnNpb25JZCkucGlwZShcclxuICAvLyAgICAgICBtYXAoKHJlc3VsdDogYm9vbGVhbikgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MoeyB2ZXJzaW9uSWQgfSkpLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyLCBudWxsLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KSkpO1xyXG4gIC8vXHJcbiAgLy8gZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuRGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uU3VjY2VzcyksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICB0YXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvYXBwbGljYXRpb24vY29tcGV0aXRpb25zL2l0ZW0/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9YClcclxuICAvLyApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcbiAgLy9cclxuICAvLyBjcmVhdGVDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5jcmVhdGVWZXJzaW9uKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IHN0cmluZykgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MoeyB2ZXJzaW9uSWQ6IHJlc3VsdCB9KSksXHJcbiAgLy8gICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgLy8gICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgKTtcclxuICAvLyAgIH0pKSk7XHJcbiAgLy9cclxuICAvLyBjcmVhdGVDb21wZXRpdGlvblZlcnNpb25TdWNjZXNzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5DcmVhdGVDb21wZXRpdGlvblZlcnNpb25TdWNjZXNzKSxcclxuICAvLyAgIG1hcCgoYWN0aW9uOiB7IHZlcnNpb25JZDogc3RyaW5nIH0pID0+IGFjdGlvbi52ZXJzaW9uSWQpLFxyXG4gIC8vICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gIC8vICAgdGFwKChbdmVyc2lvbklkLCBjb21wZXRpdGlvbklkXSkgPT5cclxuICAvLyAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL2FwcGxpY2F0aW9uL2NvbXBldGl0aW9ucy9pdGVtP2NvbXBldGl0aW9uSWQ9JHtjb21wZXRpdGlvbklkfSZ2ZXJzaW9uSWQ9JHt2ZXJzaW9uSWR9YClcclxuICAvLyApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcbiAgLy9cclxuICAvLyBjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyksXHJcbiAgLy8gICBtYXAoKGFjdGlvbjogeyB2ZXJzaW9uSWQ6IHN0cmluZywgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtIH0pID0+IGFjdGlvbiksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFthY3Rpb24sIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS52ZXJzaW9uQ2hhbmdlU3RhdHVzKGNvbXBldGl0aW9uSWQsIGFjdGlvbi52ZXJzaW9uSWQsIGFjdGlvbi5zdGF0dXMpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAvLyAgICAgICAgIHJldHVybiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzU3VjY2Vzcyh7XHJcbiAgLy8gICAgICAgICAgIHZlcnNpb25JZDogYWN0aW9uLnZlcnNpb25JZCxcclxuICAvLyAgICAgICAgICAgc3RhdHVzOiBhY3Rpb24uc3RhdHVzXHJcbiAgLy8gICAgICAgICB9KTtcclxuICAvLyAgICAgICB9KSxcclxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKGVyciwgbnVsbCwgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAvLyAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgfSkpKTtcclxuICAvL1xyXG4gIC8vICAgY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKSxcclxuICAvLyAgICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcsIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSB9KSA9PiBhY3Rpb24pLFxyXG4gIC8vICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICAgIHRhcCgoW2FjdGlvbiwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAvLyAgICAgICBpZiAoYWN0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uKSB7XHJcbiAgLy8gICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdD9jb21wZXRpdGlvbklkPSR7Y29tcGV0aXRpb25JZH0mdmVyc2lvbklkPSR7YWN0aW9uLnZlcnNpb25JZH1gO1xyXG4gIC8vICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgKSwgeyBkaXNwYXRjaDogZmFsc2UgfSk7XHJcbiAgLy9cclxuICAvLyBzZWxlY3RDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLlNlbGVjdENvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgLy8gICBtYXAoKGFjdGlvbjogeyB2ZXJzaW9uSWQ6IHN0cmluZyB9KSA9PiBhY3Rpb24udmVyc2lvbklkKSxcclxuICAvLyAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAvLyAgIHRhcCgoW3ZlcnNpb25JZCwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAvLyAgICAgY29uc3QgbmV3VXJpID0gVXRpbGl0aWVzLnVwZGF0ZVF1ZXJ5U3RyaW5nUGFyYW1ldGVyKHdpbmRvdy5sb2NhdGlvbi5ocmVmLCAndmVyc2lvbklkJywgdmVyc2lvbklkKTtcclxuICAvLyAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBuZXdVcmk7XHJcbiAgLy8gICB9KVxyXG4gIC8vICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuICAvL1xyXG4gIC8vIGFjdGl2YXRlQ29tcGV0aXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+ICh0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5BY3RpdmF0ZUNvbXBldGl0aW9uKSxcclxuICAvLyAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAvLyAgIHN3aXRjaE1hcCgoWywgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmFjdGl2YXRlKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcygpKSxcclxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd1N0aWNreU1lc3NhZ2UoZXJyLCAn0J7RiNC40LHQutCwINCw0LrRgtC40LLQsNGG0LjQuCcsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgLy8gICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgKTtcclxuICAvLyAgIH0pXHJcbiAgLy8gKSkpO1xyXG4gIC8vXHJcbiAgLy8gcGF1c2VDb21wZXRpdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gKHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLlBhdXNlQ29tcGV0aXRpb24pLFxyXG4gIC8vICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gIC8vICAgc3dpdGNoTWFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UucGF1c2UoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAvLyAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuY29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKCkpLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93U3RpY2t5TWVzc2FnZShlcnIsICfQntGI0LjQsdC60LAg0L/RgNC40L7RgdGC0LDQvdC+0LLQutC4JywgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAvLyAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgfSlcclxuICAvLyApKSk7XHJcbiAgLy9cclxuICAvLyBjb21wbGV0ZUNvbXBldGl0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiAodGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQ29tcGxldGVDb21wZXRpdGlvbiksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5jb21wbGV0ZShjb21wZXRpdGlvbklkKS5waXBlKFxyXG4gIC8vICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5jb21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MoKSksXHJcbiAgLy8gICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dTdGlja3lNZXNzYWdlKGVyciwgJ9Ce0YjQuNCx0LrQsCDQv9GA0Lgg0LfQsNCy0LXRgNGI0LXQvdC40LgnLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KVxyXG4gIC8vICkpKTtcclxuICAvL1xyXG4gIC8vIGNhbmNlbENvbXBldGl0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiAodGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQ2FuY2VsQ29tcGV0aXRpb24pLFxyXG4gIC8vICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gIC8vICAgc3dpdGNoTWFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UuY2FuY2VsKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcygpKSxcclxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd1N0aWNreU1lc3NhZ2UoZXJyLCAn0J7RiNC40LHQutCwINC/0YDQuCDQvtGC0LzQtdC90LUnLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KVxyXG4gIC8vICkpKTtcclxuICAvL1xyXG4gIC8vIGNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24pLFxyXG4gIC8vICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICB0YXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PlxyXG4gIC8vICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdC9jYW5jZWw/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9JnZlcnNpb25JZD0ke3ZlcnNpb25JZH1gKVxyXG4gIC8vICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuICAvL1xyXG4gIC8vIGNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQ29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKSxcclxuICAvLyAgIHRhcCgoKSA9PiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkpXHJcbiAgLy8gKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBldGl0aW9uSGVhZGVyU2VydmljZTogQ29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxufVxyXG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtY29tcGV0aXRpb24vc3JjL2xpYi9tb2R1bGVzL2NvbXBldGl0aW9uLWhlYWRlci9zdG9yZS9jb21wZXRpdGlvbi1oZWFkZXIuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQVEsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sS0FBSyx3QkFBd0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RSxPQUFPLEVBQWtDLHlCQUF5QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHeEcsT0FBTyxFQUdMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsU0FBUyxFQUNWLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUloQyxNQUFNLE9BQU8sd0JBQXdCO0lBdUtuQyxZQUFvQix3QkFBa0QsRUFDbEQsUUFBaUIsRUFDakIsS0FBWSxFQUNaLFlBQTBCO1FBSDFCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQWM7UUF4SzlDLDJCQUFzQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FD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QUMsQ0FBQztRQUVKLHFDQUFnQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEUsTUFBTSxDQUFDLHlCQUF5QixDQUFDLCtCQUErQixDQUFDLEVBQ2pFLEdBQUcsQ0FBQyxDQUFDLE1BQTZCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFDeEQsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFDNUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxzREFBc0QsYUFBYSxjQUFjLFNBQVMsRUFBRSxDQUFDLENBQ3ZILEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUV0QixvQ0FBK0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3JFLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyw4QkFBOEIsQ0FBQyxFQUNoRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUNwQyxFQUFFLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFPdEIsQ0FBQzs7c0hBNUtVLHdCQUF3QjswSEFBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcclxuaW1wb3J0IHtzZWxlY3QsIFN0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7RU1QVFl9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucyBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHtjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLCBFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zfSBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclZlcnNpb25Nb2RlbH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLWhlYWRlci12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBldGl0aW9uLWhlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGVydFNlcnZpY2UsXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuICBNZXNzYWdlU2V2ZXJpdHksXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25JZCxcclxuICBVdGlsaXRpZXNcclxufSBmcm9tICdteXJ0ZXgtbWYtdWktY29tcG9zaXRlJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wZXRpdGlvbkhlYWRlckVmZmVjdHMge1xyXG5cclxuICBsb2FkQ29tcGV0aXRpb25IZWFkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkxvYWRDb21wZXRpdGlvbkhlYWRlciksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5nZXRIZWFkZXIoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAgICAgICBtYXAoKHJlc3VsdDogQ29tcGV0aXRpb25IZWFkZXJWZXJzaW9uTW9kZWwpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5sb2FkQ29tcGV0aXRpb25IZWFkZXJTdWNjZXNzKHtjb21wZXRpdGlvbkhlYWRlcjogcmVzdWx0fSkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyLCBudWxsLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KSkpO1xyXG5cclxuICBkZWxldGVDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgICBtYXAoKGFjdGlvbjogeyB2ZXJzaW9uSWQ6IHN0cmluZyB9KSA9PiBhY3Rpb24udmVyc2lvbklkKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAgIHN3aXRjaE1hcCgoW3ZlcnNpb25JZCwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmRlbGV0ZVZlcnNpb24oY29tcGV0aXRpb25JZCwgdmVyc2lvbklkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBib29sZWFuKSA9PiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uU3VjY2Vzcyh7IHZlcnNpb25JZCB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSk7XHJcblxyXG4gIGRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MpLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgdGFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4gd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL2FwcGxpY2F0aW9uL2NvbXBldGl0aW9ucy9pdGVtP2NvbXBldGl0aW9uSWQ9JHtjb21wZXRpdGlvbklkfWApXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBjcmVhdGVDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5jcmVhdGVWZXJzaW9uKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXN1bHQ6IHN0cmluZykgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MoeyB2ZXJzaW9uSWQ6IHJlc3VsdCB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSk7XHJcblxyXG4gIGNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MpLFxyXG4gICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICB0YXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PlxyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvYXBwbGljYXRpb24vY29tcGV0aXRpb25zL2l0ZW0/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9JnZlcnNpb25JZD0ke3ZlcnNpb25JZH1gKVxyXG4gICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuXHJcbiAgY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMpLFxyXG4gICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcsIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSB9KSA9PiBhY3Rpb24pLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgc3dpdGNoTWFwKChbYWN0aW9uLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UudmVyc2lvbkNoYW5nZVN0YXR1cyhjb21wZXRpdGlvbklkLCBhY3Rpb24udmVyc2lvbklkLCBhY3Rpb24uc3RhdHVzKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1c1N1Y2Nlc3Moe1xyXG4gICAgICAgICAgICB2ZXJzaW9uSWQ6IGFjdGlvbi52ZXJzaW9uSWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogYWN0aW9uLnN0YXR1c1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSk7XHJcblxyXG4gICAgLy8gY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKSxcclxuICAgIC8vICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcsIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSB9KSA9PiBhY3Rpb24pLFxyXG4gICAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICAvLyAgIHRhcCgoW2FjdGlvbiwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgIC8vICAgICBpZiAoYWN0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uKSB7XHJcbiAgICAvLyAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdD9jb21wZXRpdGlvbklkPSR7Y29tcGV0aXRpb25JZH0mdmVyc2lvbklkPSR7YWN0aW9uLnZlcnNpb25JZH1gO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKSwgeyBkaXNwYXRjaDogZmFsc2UgfSk7XHJcblxyXG4gIHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuU2VsZWN0Q29tcGV0aXRpb25WZXJzaW9uKSxcclxuICAgIG1hcCgoYWN0aW9uOiB7IHZlcnNpb25JZDogc3RyaW5nIH0pID0+IGFjdGlvbi52ZXJzaW9uSWQpLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgdGFwKChbdmVyc2lvbklkLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdVcmkgPSBVdGlsaXRpZXMudXBkYXRlUXVlcnlTdHJpbmdQYXJhbWV0ZXIod2luZG93LmxvY2F0aW9uLmhyZWYsICd2ZXJzaW9uSWQnLCB2ZXJzaW9uSWQpO1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG5ld1VyaTtcclxuICAgIH0pXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBhY3RpdmF0ZUNvbXBldGl0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiAodGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQWN0aXZhdGVDb21wZXRpdGlvbiksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5hY3RpdmF0ZShjb21wZXRpdGlvbklkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5jb21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MoKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dTdGlja3lNZXNzYWdlKGVyciwgJ9Ce0YjQuNCx0LrQsCDQsNC60YLQuNCy0LDRhtC40LgnLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gICkpKTtcclxuXHJcbiAgcGF1c2VDb21wZXRpdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gKHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLlBhdXNlQ29tcGV0aXRpb24pLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgc3dpdGNoTWFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UucGF1c2UoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuY29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKCkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93U3RpY2t5TWVzc2FnZShlcnIsICfQntGI0LjQsdC60LAg0L/RgNC40L7RgdGC0LDQvdC+0LLQutC4JywgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICApKSk7XHJcblxyXG4gIGNvbXBsZXRlQ29tcGV0aXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+ICh0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wbGV0ZUNvbXBldGl0aW9uKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAgIHN3aXRjaE1hcCgoWywgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmNvbXBsZXRlKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcygpKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd1N0aWNreU1lc3NhZ2UoZXJyLCAn0J7RiNC40LHQutCwINC/0YDQuCDQt9Cw0LLQtdGA0YjQtdC90LjQuCcsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgKSkpO1xyXG5cclxuICBjYW5jZWxDb21wZXRpdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gKHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNhbmNlbENvbXBldGl0aW9uKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAgIHN3aXRjaE1hcCgoWywgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmNhbmNlbChjb21wZXRpdGlvbklkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5jb21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MoKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dTdGlja3lNZXNzYWdlKGVyciwgJ9Ce0YjQuNCx0LrQsCDQv9GA0Lgg0L7RgtC80LXQvdC1JywgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICApKSk7XHJcblxyXG4gIGNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24pLFxyXG4gICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICB0YXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PlxyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdC9jYW5jZWw/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9JnZlcnNpb25JZD0ke3ZlcnNpb25JZH1gKVxyXG4gICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuXHJcbiAgY29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MpLFxyXG4gICAgdGFwKCgpID0+IHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSlcclxuICApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlOiBDb21wZXRpdGlvbkhlYWRlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -3,11 +3,11 @@ import { Directive, EventEmitter, Component, ContentChild, Input, Output, Inject
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2$1 from '@ngrx/effects';
6
- import { EffectsModule } from '@ngrx/effects';
6
+ import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
7
7
  import * as i2 from '@ngrx/store';
8
8
  import { createAction, props, createFeatureSelector, createSelector, select, createReducer, on, StoreModule } from '@ngrx/store';
9
9
  import * as i3 from 'myrtex-mf-ui-composite';
10
- import { selectCompetitionIdAndVersionId, UnSubscriber, CompetitionStatusEnum, CancelCompetitionTypeEnum, CompetitionVersionStatusEnum, CompetitionVersionStatusEnumLabel, CompetitionStatusEnumLabel, CompetitionModeEnum, selectCompetitionLabel, selectCompetitionConfig, CompetitionVersionStatusGrouppingLabel, DialogColor, DialogType, EndpointBaseService, TenantSettingsModule, MyrtexUiComponentsModule, MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';
10
+ import { selectCompetitionIdAndVersionId, UnSubscriber, CompetitionStatusEnum, CancelCompetitionTypeEnum, CompetitionVersionStatusEnum, CompetitionVersionStatusEnumLabel, CompetitionStatusEnumLabel, CompetitionModeEnum, selectCompetitionLabel, selectCompetitionConfig, CompetitionVersionStatusGrouppingLabel, DialogColor, DialogType, EndpointBaseService, selectCompetitionId, MessageSeverity, Utilities, TenantSettingsModule, MyrtexUiComponentsModule, MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';
11
11
  import * as i1 from 'myrtex-mf-signer';
12
12
  import { MyrtexSignerModule } from 'myrtex-mf-signer';
13
13
  import * as i4 from '@ng-select/ng-select';
@@ -15,6 +15,8 @@ import { NgSelectModule } from '@ng-select/ng-select';
15
15
  import * as i6 from '@angular/forms';
16
16
  import { FormsModule } from '@angular/forms';
17
17
  import * as i1$1 from '@angular/common/http';
18
+ import { EMPTY } from 'rxjs';
19
+ import { withLatestFrom, switchMap, map, catchError, tap } from 'rxjs/operators';
18
20
 
19
21
  var ECompetitionHeaderActions;
20
22
  (function (ECompetitionHeaderActions) {
@@ -591,175 +593,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
591
593
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: i0.Injector }]; } });
592
594
 
593
595
  class CompetitionHeaderEffects {
594
- // loadCompetitionHeader$ = createEffect(() => this.actions$.pipe(
595
- // ofType(ECompetitionHeaderActions.LoadCompetitionHeader),
596
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
597
- // switchMap(([, competitionId]) => {
598
- // return this.competitionHeaderService.getHeader(competitionId).pipe(
599
- // map((result: CompetitionHeaderVersionModel) => CompetitionHeaderActions.loadCompetitionHeaderSuccess({competitionHeader: result})),
600
- // catchError((err) => {
601
- // this.alertService.showMessage(err, null, MessageSeverity.error);
602
- // return EMPTY;
603
- // })
604
- // );
605
- // })));
606
- //
607
- // deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(
608
- // ofType(ECompetitionHeaderActions.DeleteCompetitionVersion),
609
- // map((action: { versionId: string }) => action.versionId),
610
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
611
- // switchMap(([versionId, competitionId]) => {
612
- // return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(
613
- // map((result: boolean) => CompetitionHeaderActions.deleteCompetitionVersionSuccess({ versionId })),
614
- // catchError((err) => {
615
- // this.alertService.showMessage(err, null, MessageSeverity.error);
616
- // return EMPTY;
617
- // })
618
- // );
619
- // })));
620
- //
621
- // deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(
622
- // ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess),
623
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
624
- // tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)
625
- // ), {dispatch: false});
626
- //
627
- // createCompetitionVersion$ = createEffect(() => this.actions$.pipe(
628
- // ofType(ECompetitionHeaderActions.CreateCompetitionVersion),
629
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
630
- // switchMap(([, competitionId]) => {
631
- // return this.competitionHeaderService.createVersion(competitionId).pipe(
632
- // map((result: string) => CompetitionHeaderActions.createCompetitionVersionSuccess({ versionId: result })),
633
- // catchError((err) => {
634
- // this.alertService.showMessage(err, null, MessageSeverity.error);
635
- // return EMPTY;
636
- // })
637
- // );
638
- // })));
639
- //
640
- // createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(
641
- // ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess),
642
- // map((action: { versionId: string }) => action.versionId),
643
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
644
- // tap(([versionId, competitionId]) =>
645
- // window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)
646
- // ), {dispatch: false});
647
- //
648
- // competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(
649
- // ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus),
650
- // map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
651
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
652
- // switchMap(([action, competitionId]) => {
653
- // return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(
654
- // map((result: boolean) => {
655
- // return CompetitionHeaderActions.competitionVersionChangeStatusSuccess({
656
- // versionId: action.versionId,
657
- // status: action.status
658
- // });
659
- // }),
660
- // catchError((err) => {
661
- // this.alertService.showMessage(err, null, MessageSeverity.error);
662
- // return EMPTY;
663
- // })
664
- // );
665
- // })));
666
- //
667
- // competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
668
- // ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess),
669
- // map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
670
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
671
- // tap(([action, competitionId]) => {
672
- // if (action.status === CompetitionVersionStatusEnum.Validation) {
673
- // window.location.href = `/m-data/minfin/selection/edit?competitionId=${competitionId}&versionId=${action.versionId}`;
674
- // } else {
675
- // window.location.reload();
676
- // }
677
- // })
678
- // ), { dispatch: false });
679
- //
680
- // selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(
681
- // ofType(ECompetitionHeaderActions.SelectCompetitionVersion),
682
- // map((action: { versionId: string }) => action.versionId),
683
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
684
- // tap(([versionId, competitionId]) => {
685
- // const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
686
- // window.location.href = newUri;
687
- // })
688
- // ), {dispatch: false});
689
- //
690
- // activateCompetition$ = createEffect(() => (this.actions$.pipe(
691
- // ofType(ECompetitionHeaderActions.ActivateCompetition),
692
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
693
- // switchMap(([, competitionId]) => {
694
- // return this.competitionHeaderService.activate(competitionId).pipe(
695
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
696
- // catchError((err, caught) => {
697
- // this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
698
- // return EMPTY;
699
- // })
700
- // );
701
- // })
702
- // )));
703
- //
704
- // pauseCompetition$ = createEffect(() => (this.actions$.pipe(
705
- // ofType(ECompetitionHeaderActions.PauseCompetition),
706
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
707
- // switchMap(([, competitionId]) => {
708
- // return this.competitionHeaderService.pause(competitionId).pipe(
709
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
710
- // catchError((err, caught) => {
711
- // this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
712
- // return EMPTY;
713
- // })
714
- // );
715
- // })
716
- // )));
717
- //
718
- // completeCompetition$ = createEffect(() => (this.actions$.pipe(
719
- // ofType(ECompetitionHeaderActions.CompleteCompetition),
720
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
721
- // switchMap(([, competitionId]) => {
722
- // return this.competitionHeaderService.complete(competitionId).pipe(
723
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
724
- // catchError((err, caught) => {
725
- // this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
726
- // return EMPTY;
727
- // })
728
- // );
729
- // })
730
- // )));
731
- //
732
- // cancelCompetition$ = createEffect(() => (this.actions$.pipe(
733
- // ofType(ECompetitionHeaderActions.CancelCompetition),
734
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
735
- // switchMap(([, competitionId]) => {
736
- // return this.competitionHeaderService.cancel(competitionId).pipe(
737
- // map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
738
- // catchError((err, caught) => {
739
- // this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
740
- // return EMPTY;
741
- // })
742
- // );
743
- // })
744
- // )));
745
- //
746
- // cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(
747
- // ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation),
748
- // map((action: { versionId: string }) => action.versionId),
749
- // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
750
- // tap(([versionId, competitionId]) =>
751
- // window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)
752
- // ), {dispatch: false});
753
- //
754
- // competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
755
- // ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess),
756
- // tap(() => window.location.reload())
757
- // ), {dispatch: false});
758
596
  constructor(competitionHeaderService, actions$, store, alertService) {
759
597
  this.competitionHeaderService = competitionHeaderService;
760
598
  this.actions$ = actions$;
761
599
  this.store = store;
762
600
  this.alertService = alertService;
601
+ this.loadCompetitionHeader$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.LoadCompetitionHeader), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
602
+ return this.competitionHeaderService.getHeader(competitionId).pipe(map((result) => loadCompetitionHeaderSuccess({ competitionHeader: result })), catchError((err) => {
603
+ this.alertService.showMessage(err, null, MessageSeverity.error);
604
+ return EMPTY;
605
+ }));
606
+ })));
607
+ this.deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([versionId, competitionId]) => {
608
+ return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(map((result) => deleteCompetitionVersionSuccess({ versionId })), catchError((err) => {
609
+ this.alertService.showMessage(err, null, MessageSeverity.error);
610
+ return EMPTY;
611
+ }));
612
+ })));
613
+ this.deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)), { dispatch: false });
614
+ this.createCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersion), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
615
+ return this.competitionHeaderService.createVersion(competitionId).pipe(map((result) => createCompetitionVersionSuccess({ versionId: result })), catchError((err) => {
616
+ this.alertService.showMessage(err, null, MessageSeverity.error);
617
+ return EMPTY;
618
+ }));
619
+ })));
620
+ this.createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
621
+ this.competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus), map((action) => action), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([action, competitionId]) => {
622
+ return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(map((result) => {
623
+ return competitionVersionChangeStatusSuccess({
624
+ versionId: action.versionId,
625
+ status: action.status
626
+ });
627
+ }), catchError((err) => {
628
+ this.alertService.showMessage(err, null, MessageSeverity.error);
629
+ return EMPTY;
630
+ }));
631
+ })));
632
+ // competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
633
+ // ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess),
634
+ // map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
635
+ // withLatestFrom(this.store.pipe(select(selectCompetitionId))),
636
+ // tap(([action, competitionId]) => {
637
+ // if (action.status === CompetitionVersionStatusEnum.Validation) {
638
+ // window.location.href = `/m-data/minfin/selection/edit?competitionId=${competitionId}&versionId=${action.versionId}`;
639
+ // } else {
640
+ // window.location.reload();
641
+ // }
642
+ // })
643
+ // ), { dispatch: false });
644
+ this.selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.SelectCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => {
645
+ const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
646
+ window.location.href = newUri;
647
+ })), { dispatch: false });
648
+ this.activateCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.ActivateCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
649
+ return this.competitionHeaderService.activate(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
650
+ this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
651
+ return EMPTY;
652
+ }));
653
+ }))));
654
+ this.pauseCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.PauseCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
655
+ return this.competitionHeaderService.pause(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
656
+ this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
657
+ return EMPTY;
658
+ }));
659
+ }))));
660
+ this.completeCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CompleteCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
661
+ return this.competitionHeaderService.complete(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
662
+ this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
663
+ return EMPTY;
664
+ }));
665
+ }))));
666
+ this.cancelCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
667
+ return this.competitionHeaderService.cancel(competitionId).pipe(map((result) => competitionChangeStatusSuccess()), catchError((err, caught) => {
668
+ this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
669
+ return EMPTY;
670
+ }));
671
+ }))));
672
+ this.cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
673
+ this.competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess), tap(() => window.location.reload())), { dispatch: false });
763
674
  }
764
675
  }
765
676
  CompetitionHeaderEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, deps: [{ token: CompetitionHeaderService }, { token: i2$1.Actions }, { token: i2.Store }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });