@myclub_se/data-access 3.7.10 → 3.7.11
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/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +1 -8
- package/esm2022/lib/authentication/authentication.interceptor.mjs +6 -8
- package/esm2022/lib/authentication/authentication.service.mjs +8 -11
- package/esm2022/lib/authentication/guards/authenticated.guard.mjs +4 -6
- package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +4 -7
- package/esm2022/lib/data-access.module.mjs +6 -6
- package/esm2022/lib/maintenance/maintenance.interceptor.mjs +4 -5
- package/esm2022/lib/models/activity-extra-member.mjs +1 -8
- package/esm2022/lib/models/activity-invite.mjs +1 -23
- package/esm2022/lib/models/activity-location-group.mjs +1 -7
- package/esm2022/lib/models/activity-location-part.mjs +1 -3
- package/esm2022/lib/models/activity-location-tag.mjs +1 -6
- package/esm2022/lib/models/activity-location.mjs +1 -11
- package/esm2022/lib/models/activity-participant.mjs +1 -8
- package/esm2022/lib/models/activity-question-connection.mjs +1 -8
- package/esm2022/lib/models/activity-question-response.mjs +1 -3
- package/esm2022/lib/models/activity-question.mjs +1 -8
- package/esm2022/lib/models/activity-rule-relation.mjs +1 -9
- package/esm2022/lib/models/activity-rule.mjs +1 -8
- package/esm2022/lib/models/activity-settings.mjs +1 -18
- package/esm2022/lib/models/activity-type.mjs +1 -9
- package/esm2022/lib/models/activity-waiting-list-entry.mjs +1 -16
- package/esm2022/lib/models/activity.mjs +1 -82
- package/esm2022/lib/models/app-settings.mjs +1 -5
- package/esm2022/lib/models/auth/auth-member.mjs +3 -7
- package/esm2022/lib/models/auth/auth-section.mjs +1 -6
- package/esm2022/lib/models/auth/auth-team-section.mjs +1 -3
- package/esm2022/lib/models/auth/auth-team.mjs +1 -6
- package/esm2022/lib/models/auth/auth.mjs +1 -17
- package/esm2022/lib/models/authentication.mjs +1 -3
- package/esm2022/lib/models/bookable-item.mjs +1 -11
- package/esm2022/lib/models/bookable-part.mjs +1 -3
- package/esm2022/lib/models/bookable-tag.mjs +1 -6
- package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -33
- package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -35
- package/esm2022/lib/models/booking-calendar-slot-validate-copy-result.mjs +1 -5
- package/esm2022/lib/models/booking-calendar-slot.mjs +1 -26
- package/esm2022/lib/models/booking-calendar.mjs +1 -33
- package/esm2022/lib/models/booking-settings.mjs +1 -8
- package/esm2022/lib/models/booking-slot-filter.mjs +1 -12
- package/esm2022/lib/models/calendar-event.mjs +1 -16
- package/esm2022/lib/models/calendar.mjs +1 -6
- package/esm2022/lib/models/card/card-deal.mjs +1 -6
- package/esm2022/lib/models/card/card-logo-urls.mjs +1 -9
- package/esm2022/lib/models/card/card-logo.mjs +1 -4
- package/esm2022/lib/models/card/card-member-ticket.mjs +1 -7
- package/esm2022/lib/models/card/card-theme.mjs +1 -6
- package/esm2022/lib/models/card/card-ticket-location.mjs +1 -5
- package/esm2022/lib/models/card/card-ticket.mjs +1 -17
- package/esm2022/lib/models/card/card.mjs +1 -9
- package/esm2022/lib/models/card/home-team.mjs +1 -4
- package/esm2022/lib/models/card/member-card.mjs +1 -11
- package/esm2022/lib/models/card/search-member-card.mjs +1 -5
- package/esm2022/lib/models/card/selected-field.mjs +1 -3
- package/esm2022/lib/models/club-image.mjs +1 -14
- package/esm2022/lib/models/club-section.mjs +1 -3
- package/esm2022/lib/models/club.mjs +1 -3
- package/esm2022/lib/models/collection.mjs +1 -5
- package/esm2022/lib/models/contact.mjs +1 -19
- package/esm2022/lib/models/databank-category.mjs +1 -7
- package/esm2022/lib/models/databank-item.mjs +1 -7
- package/esm2022/lib/models/directory.mjs +1 -10
- package/esm2022/lib/models/email.mjs +1 -4
- package/esm2022/lib/models/event.mjs +1 -28
- package/esm2022/lib/models/external-link.mjs +1 -3
- package/esm2022/lib/models/feature-flags.mjs +1 -14
- package/esm2022/lib/models/file-object.mjs +1 -10
- package/esm2022/lib/models/general-image.mjs +1 -4
- package/esm2022/lib/models/group-role.mjs +1 -7
- package/esm2022/lib/models/guest.mjs +1 -5
- package/esm2022/lib/models/image-urls.mjs +1 -6
- package/esm2022/lib/models/invoice/member-fee.mjs +1 -6
- package/esm2022/lib/models/invoice/member-invoice-row.mjs +1 -14
- package/esm2022/lib/models/invoice/member-invoice.mjs +1 -24
- package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -10
- package/esm2022/lib/models/invoice/payment-order-row.mjs +1 -3
- package/esm2022/lib/models/invoice/payment-order.mjs +1 -18
- package/esm2022/lib/models/invoice/payment-types/credit-card.mjs +1 -12
- package/esm2022/lib/models/invoice/payment-types/giro.mjs +1 -7
- package/esm2022/lib/models/invoice/payment-types/swish.mjs +1 -14
- package/esm2022/lib/models/invoice/payment-types/zimpler.mjs +1 -8
- package/esm2022/lib/models/invoice/search-member-invoice.mjs +1 -10
- package/esm2022/lib/models/invoice/swish-qr-code.mjs +1 -2
- package/esm2022/lib/models/invoice/unpaid-member-invoice.mjs +1 -5
- package/esm2022/lib/models/leader-activity.mjs +1 -12
- package/esm2022/lib/models/member/member-attribute.mjs +1 -12
- package/esm2022/lib/models/member/member-contact.mjs +1 -6
- package/esm2022/lib/models/member/member-function.mjs +1 -6
- package/esm2022/lib/models/member/member-validation-settings.mjs +1 -9
- package/esm2022/lib/models/member/member.mjs +1 -27
- package/esm2022/lib/models/member/other-member-field.mjs +1 -4
- package/esm2022/lib/models/member/other-member.mjs +1 -9
- package/esm2022/lib/models/member/search-member.mjs +1 -17
- package/esm2022/lib/models/member-activity-invite.mjs +1 -12
- package/esm2022/lib/models/member-public-form-field-option.mjs +1 -5
- package/esm2022/lib/models/member-public-form-field.mjs +1 -12
- package/esm2022/lib/models/member-public-form.mjs +1 -26
- package/esm2022/lib/models/member-team-through.mjs +1 -10
- package/esm2022/lib/models/member-team.mjs +1 -10
- package/esm2022/lib/models/member-type.mjs +1 -4
- package/esm2022/lib/models/mypages-menu-item.mjs +1 -4
- package/esm2022/lib/models/news.mjs +1 -20
- package/esm2022/lib/models/open-activity.mjs +3 -79
- package/esm2022/lib/models/optional-fee.mjs +2 -7
- package/esm2022/lib/models/overbooked-bookable-item.mjs +1 -6
- package/esm2022/lib/models/overbooked-location.mjs +1 -6
- package/esm2022/lib/models/partner.mjs +1 -5
- package/esm2022/lib/models/public-authentication.mjs +1 -3
- package/esm2022/lib/models/registration-qr-code.mjs +1 -8
- package/esm2022/lib/models/retrieve-2fa.mjs +1 -3
- package/esm2022/lib/models/saved-search.mjs +1 -3
- package/esm2022/lib/models/search-attribute.mjs +1 -5
- package/esm2022/lib/models/search-club.mjs +1 -10
- package/esm2022/lib/models/search-team.mjs +1 -9
- package/esm2022/lib/models/section.mjs +1 -3
- package/esm2022/lib/models/swish-incident.mjs +1 -11
- package/esm2022/lib/models/token.mjs +1 -4
- package/esm2022/lib/models/user-notification.mjs +1 -9
- package/esm2022/lib/models/user.mjs +1 -13
- package/esm2022/lib/services/activity.service.mjs +4 -7
- package/esm2022/lib/services/api.service.mjs +4 -6
- package/esm2022/lib/services/auth.service.mjs +4 -5
- package/esm2022/lib/services/bookable.service.mjs +4 -5
- package/esm2022/lib/services/booking-calendar.service.mjs +22 -6
- package/esm2022/lib/services/club.service.mjs +4 -5
- package/esm2022/lib/services/constant.service.mjs +4 -5
- package/esm2022/lib/services/databank.service.mjs +4 -5
- package/esm2022/lib/services/email.service.mjs +4 -5
- package/esm2022/lib/services/external-link.service.mjs +4 -5
- package/esm2022/lib/services/feature-flags.service.mjs +4 -5
- package/esm2022/lib/services/file.service.mjs +4 -5
- package/esm2022/lib/services/invoice/invoice.service.mjs +4 -5
- package/esm2022/lib/services/invoice/payment-attempt.service.mjs +4 -5
- package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -5
- package/esm2022/lib/services/leader-notification.service.mjs +4 -5
- package/esm2022/lib/services/maintenance-mode.service.mjs +8 -7
- package/esm2022/lib/services/member-card.service.mjs +4 -5
- package/esm2022/lib/services/member-fee.service.mjs +4 -5
- package/esm2022/lib/services/member-public-form.service.mjs +4 -5
- package/esm2022/lib/services/member.service.mjs +4 -5
- package/esm2022/lib/services/news.service.mjs +4 -5
- package/esm2022/lib/services/registration-qr-code.service.mjs +4 -5
- package/esm2022/lib/services/saved-search.service.mjs +4 -5
- package/esm2022/lib/services/section.service.mjs +4 -5
- package/esm2022/lib/services/storage.service.mjs +5 -6
- package/esm2022/lib/services/swish-incident.service.mjs +4 -5
- package/esm2022/lib/services/team.service.mjs +4 -5
- package/esm2022/lib/services/token.service.mjs +4 -5
- package/esm2022/lib/services/user-notification.service.mjs +4 -5
- package/esm2022/lib/services/user.service.mjs +4 -5
- package/esm2022/lib/store/actions/booking.actions.mjs +7 -1
- package/esm2022/lib/store/effects/activity.effects.mjs +358 -355
- package/esm2022/lib/store/effects/auth.effects.mjs +121 -119
- package/esm2022/lib/store/effects/booking.effects.mjs +139 -134
- package/esm2022/lib/store/effects/calendar.effects.mjs +61 -59
- package/esm2022/lib/store/effects/club-info.effects.mjs +17 -15
- package/esm2022/lib/store/effects/constant.effects.mjs +78 -76
- package/esm2022/lib/store/effects/databank.effects.mjs +23 -21
- package/esm2022/lib/store/effects/email.effects.mjs +16 -14
- package/esm2022/lib/store/effects/external-link.effects.mjs +11 -9
- package/esm2022/lib/store/effects/file.effects.mjs +92 -90
- package/esm2022/lib/store/effects/invoice.effects.mjs +176 -174
- package/esm2022/lib/store/effects/member-card.effects.mjs +73 -71
- package/esm2022/lib/store/effects/member-fee.effects.mjs +9 -7
- package/esm2022/lib/store/effects/member.effects.mjs +41 -39
- package/esm2022/lib/store/effects/mixins/extra-members-mixin.mjs +4 -2
- package/esm2022/lib/store/effects/news.effects.mjs +47 -45
- package/esm2022/lib/store/effects/public-form.effects.mjs +24 -22
- package/esm2022/lib/store/effects/registration-qr-code.effects.mjs +14 -12
- package/esm2022/lib/store/effects/saved-search.effects.mjs +9 -7
- package/esm2022/lib/store/effects/swish-incidents.effects.mjs +11 -9
- package/esm2022/lib/store/effects/team.effects.mjs +82 -79
- package/esm2022/lib/store/effects/token.effects.mjs +93 -91
- package/esm2022/lib/store/effects/user.effects.mjs +35 -35
- package/fesm2022/myclub_se-data-access.mjs +1771 -2857
- package/fesm2022/myclub_se-data-access.mjs.map +1 -1
- package/lib/services/booking-calendar.service.d.ts +3 -0
- package/lib/store/actions/booking.actions.d.ts +24 -0
- package/lib/store/effects/booking.effects.d.ts +5 -0
- package/package.json +1 -1
|
@@ -7,92 +7,94 @@ import { catchError, map } from 'rxjs/operators';
|
|
|
7
7
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class FileEffects {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
result
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
10
|
+
constructor() {
|
|
11
|
+
this.actions$ = inject(Actions);
|
|
12
|
+
this.fileService = inject(FileService);
|
|
13
|
+
this.createTeamDirectory$ = createEffect(() => this.actions$
|
|
14
|
+
.pipe(ofType(createTeamDirectoryAction), exhaustMap(({ payload }) => this.fileService.createTeamDirectory(payload.teamId, { name: payload.directory.name })
|
|
15
|
+
.pipe(map((directory) => createTeamDirectorySuccessAction({
|
|
16
|
+
payload: {
|
|
17
|
+
teamId: payload.teamId,
|
|
18
|
+
directory
|
|
19
|
+
}
|
|
20
|
+
})), catchError((error) => of(createTeamDirectoryFailureAction({ payload: error })))))));
|
|
21
|
+
this.createTeamFile$ = createEffect(() => this.actions$
|
|
22
|
+
.pipe(ofType(createTeamFileAction), exhaustMap(({ payload }) => this.fileService.createTeamFile(payload.teamId, payload.directoryId, payload.file)
|
|
23
|
+
.pipe(map((file) => createTeamFileSuccessAction({
|
|
24
|
+
payload: {
|
|
25
|
+
teamId: payload.teamId,
|
|
26
|
+
directoryId: payload.directoryId,
|
|
27
|
+
file
|
|
28
|
+
}
|
|
29
|
+
})), catchError((error) => of(createTeamFileFailureAction({ payload: error })))))));
|
|
30
|
+
this.deleteTeamDirectory$ = createEffect(() => this.actions$
|
|
31
|
+
.pipe(ofType(deleteTeamDirectoryAction), exhaustMap(({ payload }) => this.fileService.deleteTeamDirectory(payload.teamId, payload.directoryId)
|
|
32
|
+
.pipe(map((success) => {
|
|
33
|
+
if (success) {
|
|
34
|
+
return deleteTeamDirectorySuccessAction({ payload: { ...payload } });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return deleteTeamDirectoryFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
|
|
38
|
+
}
|
|
39
|
+
}), catchError((error) => of(deleteTeamDirectoryFailureAction({ payload: error })))))));
|
|
40
|
+
this.deleteTeamFile$ = createEffect(() => this.actions$
|
|
41
|
+
.pipe(ofType(deleteTeamFileAction), exhaustMap(({ payload }) => this.fileService.deleteTeamFile(payload.teamId, payload.directoryId, payload.fileId)
|
|
42
|
+
.pipe(map((success) => {
|
|
43
|
+
if (success) {
|
|
44
|
+
return deleteTeamFileSuccessAction({ payload: { ...payload } });
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return deleteTeamFileFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
|
|
48
|
+
}
|
|
49
|
+
}), catchError((error) => of(deleteTeamFileFailureAction({ payload: error })))))));
|
|
50
|
+
this.retrieveTeamDirectories$ = createEffect(() => this.actions$
|
|
51
|
+
.pipe(ofType(retrieveTeamDirectoriesAction), exhaustMap(({ payload }) => this.fileService.getTeamDirectories(payload)
|
|
52
|
+
.pipe(map((directories) => {
|
|
53
|
+
const files = new Map();
|
|
54
|
+
directories.toArray().forEach((directory) => {
|
|
55
|
+
this.addDirectory(directory, files, payload);
|
|
56
|
+
});
|
|
57
|
+
let locations = [...this.processLocations(files, payload)];
|
|
58
|
+
locations.sort((a) => (a.teamId === payload ? -1 : 1));
|
|
59
|
+
return retrieveTeamDirectoriesSuccessAction({ payload: { locations, files } });
|
|
60
|
+
}), catchError((error) => of(retrieveTeamDirectoriesFailureAction({ payload: error })))))));
|
|
61
|
+
this.retrieveMemberDirectories$ = createEffect(() => this.actions$
|
|
62
|
+
.pipe(ofType(retrieveMemberDirectoriesAction), mergeMap(({ payload }) => {
|
|
63
|
+
if (payload.length) {
|
|
64
|
+
return forkJoin(payload.map((id) => this.fileService.getMemberDirectories(id)
|
|
65
|
+
.pipe(map((directories) => ({ id, directories: directories.toArray() })), catchError((error) => of({ id, error }))))).pipe(map(results => {
|
|
66
|
+
const files = new Map();
|
|
67
|
+
// Process and add directories to the files map
|
|
68
|
+
results.forEach(result => {
|
|
69
|
+
if ('directories' in result) {
|
|
70
|
+
result.directories.forEach((directory) => {
|
|
71
|
+
this.addDirectory(directory, files);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else if ('error' in result) {
|
|
75
|
+
throw (result.error);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
const locations = this.processLocations(files);
|
|
79
|
+
// Dispatch success action with the processed result
|
|
80
|
+
return retrieveMemberDirectoriesSuccessAction({
|
|
81
|
+
payload: {
|
|
82
|
+
locations,
|
|
83
|
+
files
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}), catchError((error) => of(retrieveMemberDirectoriesFailureAction({ payload: error }))));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return [retrieveMemberDirectoriesSuccessAction({
|
|
90
|
+
payload: {
|
|
91
|
+
locations: [],
|
|
92
|
+
files: new Map()
|
|
93
|
+
}
|
|
94
|
+
})];
|
|
95
|
+
}
|
|
96
|
+
})));
|
|
97
|
+
}
|
|
96
98
|
addDirectory(directory, files, teamId) {
|
|
97
99
|
const locationId = directory.belongsToTeam() ? 't' + directory.team_id : directory.belongsToSection()
|
|
98
100
|
? 's' + directory.section_id : 'c' + directory.club_id;
|
|
@@ -140,10 +142,10 @@ export class FileEffects {
|
|
|
140
142
|
}
|
|
141
143
|
return locations;
|
|
142
144
|
}
|
|
143
|
-
static
|
|
144
|
-
static
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
146
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileEffects }); }
|
|
145
147
|
}
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileEffects, decorators: [{
|
|
147
149
|
type: Injectable
|
|
148
150
|
}] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ZpbGUuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiwrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsRUFDN0Isb0NBQW9DLEVBQ3BDLG9DQUFvQyxFQUNyQyxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSXpELE1BQU0sT0FBTyxXQUFXO0lBQ2QsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FB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WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFvQixFQUFFLENBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRyxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7dUdBaE5VLFdBQVc7MkdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVGVhbURpcmVjdG9yeUFjdGlvbixcbiAgY3JlYXRlVGVhbURpcmVjdG9yeUZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVRlYW1EaXJlY3RvcnlTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVUZWFtRmlsZUFjdGlvbixcbiAgY3JlYXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnlBY3Rpb24sXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnlGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVUZWFtRGlyZWN0b3J5U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlVGVhbUZpbGVBY3Rpb24sXG4gIGRlbGV0ZVRlYW1GaWxlRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUZpbGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1EaXJlY3Rvcmllc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZvcmtKb2luLCBtZXJnZU1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIERpcmVjdG9yeSwgRmlsZU9iamVjdCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBMb2NhdGlvbkludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZpbGVFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBmaWxlU2VydmljZSA9IGluamVjdChGaWxlU2VydmljZSk7XG5cbiAgY3JlYXRlVGVhbURpcmVjdG9yeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVRlYW1EaXJlY3RvcnlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgZGlyZWN0b3J5OiBQYXJ0aWFsPERpcmVjdG9yeT4gfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmNyZWF0ZVRlYW1EaXJlY3RvcnkocGF5bG9hZC50ZWFtSWQsIHtuYW1lOiBwYXlsb2FkLmRpcmVjdG9yeS5uYW1lfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZGlyZWN0b3J5OiBEaXJlY3RvcnkpID0+IGNyZWF0ZVRlYW1EaXJlY3RvcnlTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICAgICAgICAgICAgZGlyZWN0b3J5XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlVGVhbURpcmVjdG9yeUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlVGVhbUZpbGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVUZWFtRmlsZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBkaXJlY3RvcnlJZDogc3RyaW5nLCBmaWxlOiBQYXJ0aWFsPEZpbGVPYmplY3Q+IH1cbiAgICAgICAgfSkgPT4gdGhpcy5maWxlU2VydmljZS5jcmVhdGVUZWFtRmlsZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5kaXJlY3RvcnlJZCwgcGF5bG9hZC5maWxlKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChmaWxlOiBGaWxlT2JqZWN0KSA9PiBjcmVhdGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgICAgICAgICAgICBkaXJlY3RvcnlJZDogcGF5bG9hZC5kaXJlY3RvcnlJZCxcbiAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtRGlyZWN0b3J5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGRpcmVjdG9yeUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmRlbGV0ZVRlYW1EaXJlY3RvcnkocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuZGlyZWN0b3J5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbURpcmVjdG9yeVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVUZWFtRmlsZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGRlbGV0ZVRlYW1GaWxlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGRpcmVjdG9yeUlkOiBzdHJpbmcsIGZpbGVJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5maWxlU2VydmljZS5kZWxldGVUZWFtRmlsZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5kaXJlY3RvcnlJZCwgcGF5bG9hZC5maWxlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUZpbGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7Li4ucGF5bG9hZH19KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1GaWxlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1EaXJlY3RvcmllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbURpcmVjdG9yaWVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy5maWxlU2VydmljZS5nZXRUZWFtRGlyZWN0b3JpZXMocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChkaXJlY3RvcmllczogQ29sbGVjdGlvbjxEaXJlY3Rvcnk+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IG5ldyBNYXA8c3RyaW5nLCBMb2NhdGlvbkludGVyZmFjZT4oKTtcblxuICAgICAgICAgICAgZGlyZWN0b3JpZXMudG9BcnJheSgpLmZvckVhY2goKGRpcmVjdG9yeTogRGlyZWN0b3J5KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSwgZmlsZXMsIHBheWxvYWQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBsb2NhdGlvbnMgPSBbLi4udGhpcy5wcm9jZXNzTG9jYXRpb25zKGZpbGVzLCBwYXlsb2FkKV07XG4gICAgICAgICAgICBsb2NhdGlvbnMuc29ydCgoYTogTG9jYXRpb25JbnRlcmZhY2UpID0+IChhLnRlYW1JZCA9PT0gcGF5bG9hZCA/IC0xIDogMSkpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmV0cmlldmVUZWFtRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7bG9jYXRpb25zLCBmaWxlc319KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbURpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJEaXJlY3RvcmllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBcnJheTxzdHJpbmc+IH0pID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5maWxlU2VydmljZS5nZXRNZW1iZXJEaXJlY3RvcmllcyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChkaXJlY3RvcmllczogQ29sbGVjdGlvbjxEaXJlY3Rvcnk+KSA9PiAoe2lkLCBkaXJlY3RvcmllczogZGlyZWN0b3JpZXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPigpO1xuXG4gICAgICAgICAgICAgIC8vIFByb2Nlc3MgYW5kIGFkZCBkaXJlY3RvcmllcyB0byB0aGUgZmlsZXMgbWFwXG4gICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgnZGlyZWN0b3JpZXMnIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0LmRpcmVjdG9yaWVzLmZvckVhY2goKGRpcmVjdG9yeTogRGlyZWN0b3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSwgZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnZXJyb3InIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgKHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbnMgPSB0aGlzLnByb2Nlc3NMb2NhdGlvbnMoZmlsZXMpO1xuXG4gICAgICAgICAgICAgIC8vIERpc3BhdGNoIHN1Y2Nlc3MgYWN0aW9uIHdpdGggdGhlIHByb2Nlc3NlZCByZXN1bHRcbiAgICAgICAgICAgICAgcmV0dXJuIHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgICBsb2NhdGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWxlc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW3JldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgbG9jYXRpb25zOiBbXSxcbiAgICAgICAgICAgICAgZmlsZXM6IG5ldyBNYXA8c3RyaW5nLCBMb2NhdGlvbkludGVyZmFjZT4oKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSBhZGREaXJlY3RvcnkoZGlyZWN0b3J5OiBEaXJlY3RvcnksIGZpbGVzOiBNYXA8c3RyaW5nLCBMb2NhdGlvbkludGVyZmFjZT4sIHRlYW1JZD86IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2F0aW9uSWQgPSBkaXJlY3RvcnkuYmVsb25nc1RvVGVhbSgpID8gJ3QnICsgZGlyZWN0b3J5LnRlYW1faWQgOiBkaXJlY3RvcnkuYmVsb25nc1RvU2VjdGlvbigpXG4gICAgICA/ICdzJyArIGRpcmVjdG9yeS5zZWN0aW9uX2lkIDogJ2MnICsgZGlyZWN0b3J5LmNsdWJfaWQ7XG4gICAgbGV0IGxvY2F0aW9uID0gZmlsZXMuZ2V0KGxvY2F0aW9uSWQpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGZpbGVzLnNldChsb2NhdGlvbklkLCB7XG4gICAgICAgIGlkOiBsb2NhdGlvbklkLFxuICAgICAgICBuYW1lOiBkaXJlY3RvcnkubG9jYXRpb25fbmFtZSxcbiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLFxuICAgICAgICB0ZWFtSWQ6IGRpcmVjdG9yeS50ZWFtX2lkIGFzIHN0cmluZ1xuICAgICAgfSk7XG4gICAgICBsb2NhdGlvbiA9IGZpbGVzLmdldChsb2NhdGlvbklkKTtcbiAgICB9XG5cbiAgICBpZiAobG9jYXRpb24gJiZcbiAgICAgICFsb2NhdGlvbi5kaXJlY3Rvcmllcy5maW5kKCh2YWx1ZTogRGlyZWN0b3J5KSA9PiB2YWx1ZS5pZCA9PT0gZGlyZWN0b3J5LmlkKSAmJlxuICAgICAgKGRpcmVjdG9yeS5maWxlcy5sZW5ndGggIT09IDAgfHwgZGlyZWN0b3J5LnRlYW1faWQgPT09IHRlYW1JZCkpIHtcbiAgICAgIGxvY2F0aW9uLmRpcmVjdG9yaWVzLnB1c2goZGlyZWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NMb2NhdGlvbnMoZmlsZXM6IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPiwgdGVhbUlkPzogc3RyaW5nKTogQXJyYXk8TG9jYXRpb25JbnRlcmZhY2U+IHtcbiAgICBsZXQgbG9jYXRpb25zOiBBcnJheTxMb2NhdGlvbkludGVyZmFjZT4gPSBbXTtcblxuICAgIGlmIChmaWxlcy5zaXplICYmIEFycmF5LmZyb20oZmlsZXMudmFsdWVzKCkpLnNvbWUoKGxvY2F0aW9uOiBMb2NhdGlvbkludGVyZmFjZSkgPT4gbG9jYXRpb24uZGlyZWN0b3JpZXMubGVuZ3RoICE9PSAwIHx8IHRlYW1JZCkpIHtcbiAgICAgIGxldCBmaXJzdEl0ZW06IExvY2F0aW9uSW50ZXJmYWNlO1xuICAgICAgaWYgKHR5cGVvZiBmaWxlcy5nZXQoJycpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmaXJzdEl0ZW0gPSBmaWxlcy5nZXQoJycpIGFzIExvY2F0aW9uSW50ZXJmYWNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW2ZpcnN0SXRlbV0gPSBmaWxlcy52YWx1ZXMoKTtcbiAgICAgIH1cbiAgICAgIGxvY2F0aW9ucyA9IFtmaXJzdEl0ZW1dO1xuXG4gICAgICBjb25zdCBvdGhlckxvY2F0aW9uczogQXJyYXk8TG9jYXRpb25JbnRlcmZhY2U+ID0gW107XG4gICAgICBmaWxlcy5mb3JFYWNoKChsb2NhdGlvbjogTG9jYXRpb25JbnRlcmZhY2UsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICAgIGlmIChrZXkgJiYgIWxvY2F0aW9ucy5maW5kKChzZWFyY2hMb2NhdGlvbikgPT5cbiAgICAgICAgICAgIGxvY2F0aW9uLm5hbWUgPT09IHNlYXJjaExvY2F0aW9uLm5hbWUgJiZcbiAgICAgICAgICAgIGxvY2F0aW9uLmRpcmVjdG9yaWVzLmxlbmd0aCA9PT0gc2VhcmNoTG9jYXRpb24uZGlyZWN0b3JpZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgb3RoZXJMb2NhdGlvbnMucHVzaChsb2NhdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgb3RoZXJMb2NhdGlvbnMuc29ydCgoYTogTG9jYXRpb25JbnRlcmZhY2UsIGI6IExvY2F0aW9uSW50ZXJmYWNlKSA9PiAoYS5uYW1lIDwgYi5uYW1lID8gLTEgOiAxKSk7XG4gICAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuY29uY2F0KG90aGVyTG9jYXRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYXRpb25zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgfVxufVxuIl19
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ZpbGUuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiwrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsRUFDN0Isb0NBQW9DLEVBQ3BDLG9DQUFvQyxFQUNyQyxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSXpELE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRVUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQyx5QkFBb0IsR0FBRyxZQUFZLENBQUMsR0FBRyxF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QUFDLENBQUM7b0JBQ2hDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQW9CLEVBQUUsQ0FBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzsrR0FoTlUsV0FBVzttSEFBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBjcmVhdGVUZWFtRGlyZWN0b3J5QWN0aW9uLFxuICBjcmVhdGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlVGVhbURpcmVjdG9yeVN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVRlYW1GaWxlQWN0aW9uLFxuICBjcmVhdGVUZWFtRmlsZUZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVRlYW1GaWxlU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlVGVhbURpcmVjdG9yeUFjdGlvbixcbiAgZGVsZXRlVGVhbURpcmVjdG9yeUZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnlTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVUZWFtRmlsZUFjdGlvbixcbiAgZGVsZXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGlyZWN0b3JpZXNBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZm9ya0pvaW4sIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgRGlyZWN0b3J5LCBGaWxlT2JqZWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IExvY2F0aW9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsZUVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGZpbGVTZXJ2aWNlID0gaW5qZWN0KEZpbGVTZXJ2aWNlKTtcblxuICBjcmVhdGVUZWFtRGlyZWN0b3J5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlVGVhbURpcmVjdG9yeUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBkaXJlY3Rvcnk6IFBhcnRpYWw8RGlyZWN0b3J5PiB9XG4gICAgICAgIH0pID0+IHRoaXMuZmlsZVNlcnZpY2UuY3JlYXRlVGVhbURpcmVjdG9yeShwYXlsb2FkLnRlYW1JZCwge25hbWU6IHBheWxvYWQuZGlyZWN0b3J5Lm5hbWV9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChkaXJlY3Rvcnk6IERpcmVjdG9yeSkgPT4gY3JlYXRlVGVhbURpcmVjdG9yeVN1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgICAgICAgICAgICBkaXJlY3RvcnlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVUZWFtRmlsZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVRlYW1GaWxlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGRpcmVjdG9yeUlkOiBzdHJpbmcsIGZpbGU6IFBhcnRpYWw8RmlsZU9iamVjdD4gfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmNyZWF0ZVRlYW1GaWxlKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmRpcmVjdG9yeUlkLCBwYXlsb2FkLmZpbGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpbGU6IEZpbGVPYmplY3QpID0+IGNyZWF0ZVRlYW1GaWxlU3VjY2Vzc0FjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgICAgICAgICAgIGRpcmVjdG9yeUlkOiBwYXlsb2FkLmRpcmVjdG9yeUlkLFxuICAgICAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVUZWFtRmlsZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlVGVhbURpcmVjdG9yeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGRlbGV0ZVRlYW1EaXJlY3RvcnlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgZGlyZWN0b3J5SWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuZmlsZVNlcnZpY2UuZGVsZXRlVGVhbURpcmVjdG9yeShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5kaXJlY3RvcnlJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRGlyZWN0b3J5U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogey4uLnBheWxvYWR9fSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1EaXJlY3RvcnlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1EaXJlY3RvcnlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZVRlYW1GaWxlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZGVsZXRlVGVhbUZpbGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgZGlyZWN0b3J5SWQ6IHN0cmluZywgZmlsZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmRlbGV0ZVRlYW1GaWxlKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmRpcmVjdG9yeUlkLCBwYXlsb2FkLmZpbGVJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRmlsZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtRGlyZWN0b3JpZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmdldFRlYW1EaXJlY3RvcmllcyhwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGRpcmVjdG9yaWVzOiBDb2xsZWN0aW9uPERpcmVjdG9yeT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPigpO1xuXG4gICAgICAgICAgICBkaXJlY3Rvcmllcy50b0FycmF5KCkuZm9yRWFjaCgoZGlyZWN0b3J5OiBEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGREaXJlY3RvcnkoZGlyZWN0b3J5LCBmaWxlcywgcGF5bG9hZCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGV0IGxvY2F0aW9ucyA9IFsuLi50aGlzLnByb2Nlc3NMb2NhdGlvbnMoZmlsZXMsIHBheWxvYWQpXTtcbiAgICAgICAgICAgIGxvY2F0aW9ucy5zb3J0KChhOiBMb2NhdGlvbkludGVyZmFjZSkgPT4gKGEudGVhbUlkID09PSBwYXlsb2FkID8gLTEgOiAxKSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXRyaWV2ZVRlYW1EaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHtsb2NhdGlvbnMsIGZpbGVzfX0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtRGlyZWN0b3JpZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IEFycmF5PHN0cmluZz4gfSkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZm9ya0pvaW4ocGF5bG9hZC5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmZpbGVTZXJ2aWNlLmdldE1lbWJlckRpcmVjdG9yaWVzKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRpcmVjdG9yaWVzOiBDb2xsZWN0aW9uPERpcmVjdG9yeT4pID0+ICh7aWQsIGRpcmVjdG9yaWVzOiBkaXJlY3Rvcmllcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7aWQsIGVycm9yfSkpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBuZXcgTWFwPHN0cmluZywgTG9jYXRpb25JbnRlcmZhY2U+KCk7XG5cbiAgICAgICAgICAgICAgLy8gUHJvY2VzcyBhbmQgYWRkIGRpcmVjdG9yaWVzIHRvIHRoZSBmaWxlcyBtYXBcbiAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCdkaXJlY3RvcmllcycgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuZGlyZWN0b3JpZXMuZm9yRWFjaCgoZGlyZWN0b3J5OiBEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGREaXJlY3RvcnkoZGlyZWN0b3J5LCBmaWxlcyk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdlcnJvcicgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyAocmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9ucyA9IHRoaXMucHJvY2Vzc0xvY2F0aW9ucyhmaWxlcyk7XG5cbiAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggc3VjY2VzcyBhY3Rpb24gd2l0aCB0aGUgcHJvY2Vzc2VkIHJlc3VsdFxuICAgICAgICAgICAgICByZXR1cm4gcmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGZpbGVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbcmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICBsb2NhdGlvbnM6IFtdLFxuICAgICAgICAgICAgICBmaWxlczogbmV3IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPigpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSldO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIGFkZERpcmVjdG9yeShkaXJlY3Rvcnk6IERpcmVjdG9yeSwgZmlsZXM6IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPiwgdGVhbUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9jYXRpb25JZCA9IGRpcmVjdG9yeS5iZWxvbmdzVG9UZWFtKCkgPyAndCcgKyBkaXJlY3RvcnkudGVhbV9pZCA6IGRpcmVjdG9yeS5iZWxvbmdzVG9TZWN0aW9uKClcbiAgICAgID8gJ3MnICsgZGlyZWN0b3J5LnNlY3Rpb25faWQgOiAnYycgKyBkaXJlY3RvcnkuY2x1Yl9pZDtcbiAgICBsZXQgbG9jYXRpb24gPSBmaWxlcy5nZXQobG9jYXRpb25JZCk7XG5cbiAgICBpZiAodHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZmlsZXMuc2V0KGxvY2F0aW9uSWQsIHtcbiAgICAgICAgaWQ6IGxvY2F0aW9uSWQsXG4gICAgICAgIG5hbWU6IGRpcmVjdG9yeS5sb2NhdGlvbl9uYW1lLFxuICAgICAgICBkaXJlY3RvcmllczogW10sXG4gICAgICAgIHRlYW1JZDogZGlyZWN0b3J5LnRlYW1faWQgYXMgc3RyaW5nXG4gICAgICB9KTtcbiAgICAgIGxvY2F0aW9uID0gZmlsZXMuZ2V0KGxvY2F0aW9uSWQpO1xuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbiAmJlxuICAgICAgIWxvY2F0aW9uLmRpcmVjdG9yaWVzLmZpbmQoKHZhbHVlOiBEaXJlY3RvcnkpID0+IHZhbHVlLmlkID09PSBkaXJlY3RvcnkuaWQpICYmXG4gICAgICAoZGlyZWN0b3J5LmZpbGVzLmxlbmd0aCAhPT0gMCB8fCBkaXJlY3RvcnkudGVhbV9pZCA9PT0gdGVhbUlkKSkge1xuICAgICAgbG9jYXRpb24uZGlyZWN0b3JpZXMucHVzaChkaXJlY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0xvY2F0aW9ucyhmaWxlczogTWFwPHN0cmluZywgTG9jYXRpb25JbnRlcmZhY2U+LCB0ZWFtSWQ/OiBzdHJpbmcpOiBBcnJheTxMb2NhdGlvbkludGVyZmFjZT4ge1xuICAgIGxldCBsb2NhdGlvbnM6IEFycmF5PExvY2F0aW9uSW50ZXJmYWNlPiA9IFtdO1xuXG4gICAgaWYgKGZpbGVzLnNpemUgJiYgQXJyYXkuZnJvbShmaWxlcy52YWx1ZXMoKSkuc29tZSgobG9jYXRpb246IExvY2F0aW9uSW50ZXJmYWNlKSA9PiBsb2NhdGlvbi5kaXJlY3Rvcmllcy5sZW5ndGggIT09IDAgfHwgdGVhbUlkKSkge1xuICAgICAgbGV0IGZpcnN0SXRlbTogTG9jYXRpb25JbnRlcmZhY2U7XG4gICAgICBpZiAodHlwZW9mIGZpbGVzLmdldCgnJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGZpcnN0SXRlbSA9IGZpbGVzLmdldCgnJykgYXMgTG9jYXRpb25JbnRlcmZhY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZmlyc3RJdGVtXSA9IGZpbGVzLnZhbHVlcygpO1xuICAgICAgfVxuICAgICAgbG9jYXRpb25zID0gW2ZpcnN0SXRlbV07XG5cbiAgICAgIGNvbnN0IG90aGVyTG9jYXRpb25zOiBBcnJheTxMb2NhdGlvbkludGVyZmFjZT4gPSBbXTtcbiAgICAgIGZpbGVzLmZvckVhY2goKGxvY2F0aW9uOiBMb2NhdGlvbkludGVyZmFjZSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgaWYgKGtleSAmJiAhbG9jYXRpb25zLmZpbmQoKHNlYXJjaExvY2F0aW9uKSA9PlxuICAgICAgICAgICAgbG9jYXRpb24ubmFtZSA9PT0gc2VhcmNoTG9jYXRpb24ubmFtZSAmJlxuICAgICAgICAgICAgbG9jYXRpb24uZGlyZWN0b3JpZXMubGVuZ3RoID09PSBzZWFyY2hMb2NhdGlvbi5kaXJlY3Rvcmllcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICBvdGhlckxvY2F0aW9ucy5wdXNoKGxvY2F0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBvdGhlckxvY2F0aW9ucy5zb3J0KChhOiBMb2NhdGlvbkludGVyZmFjZSwgYjogTG9jYXRpb25JbnRlcmZhY2UpID0+IChhLm5hbWUgPCBiLm5hbWUgPyAtMSA6IDEpKTtcbiAgICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5jb25jYXQob3RoZXJMb2NhdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9jYXRpb25zO1xuICB9XG59XG4iXX0=
|