@lifeready/core 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -62
- package/bundles/lifeready-core.umd.js +15445 -15445
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/ast.js +40 -40
- package/esm2015/lib/_common/deferred-promise.js +24 -24
- package/esm2015/lib/_common/exceptions.js +157 -157
- package/esm2015/lib/_common/queries.gql.js +190 -190
- package/esm2015/lib/_common/run-outside-angular.js +79 -79
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/_common/utils.js +44 -44
- package/esm2015/lib/api/contact-card.gql.js +79 -79
- package/esm2015/lib/api/contact-card.service.js +154 -154
- package/esm2015/lib/api/contact-card2.gql.js +60 -60
- package/esm2015/lib/api/contact-card2.service.js +103 -103
- package/esm2015/lib/api/file.service.js +74 -74
- package/esm2015/lib/api/item2.gql.js +110 -110
- package/esm2015/lib/api/item2.service.js +311 -311
- package/esm2015/lib/api/key-exchange.gql.js +188 -188
- package/esm2015/lib/api/key-exchange.service.js +442 -442
- package/esm2015/lib/api/key-exchange.types.js +18 -18
- package/esm2015/lib/api/key-exchange2.gql.js +171 -171
- package/esm2015/lib/api/key-exchange2.service.js +479 -479
- package/esm2015/lib/api/lock.gql.js +40 -40
- package/esm2015/lib/api/lock.service.js +64 -64
- package/esm2015/lib/api/lr-apollo.service.js +46 -46
- package/esm2015/lib/api/lr-graphql/index.js +6 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -155
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -213
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -48
- package/esm2015/lib/api/lr-graphql/lr.service.js +18 -18
- package/esm2015/lib/api/message.service.js +138 -138
- package/esm2015/lib/api/persist.service.js +181 -181
- package/esm2015/lib/api/query-processor/common-processors.service.js +93 -93
- package/esm2015/lib/api/query-processor/index.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +192 -192
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -109
- package/esm2015/lib/api/shared-contact-card.service.js +119 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +41 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +117 -117
- package/esm2015/lib/api/time.service.js +146 -146
- package/esm2015/lib/api/types/graphql.types.js +7 -7
- package/esm2015/lib/api/types/index.js +3 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +71 -71
- package/esm2015/lib/auth/auth.config.js +57 -57
- package/esm2015/lib/auth/auth.gql.js +48 -48
- package/esm2015/lib/auth/auth.types.js +27 -27
- package/esm2015/lib/auth/idle.service.js +168 -168
- package/esm2015/lib/auth/idle.types.js +7 -7
- package/esm2015/lib/auth/lbop.service.js +355 -355
- package/esm2015/lib/auth/life-ready-auth.service.js +500 -500
- package/esm2015/lib/auth/password.service.js +320 -320
- package/esm2015/lib/auth/register.service.js +172 -172
- package/esm2015/lib/auth/two-factor.service.js +74 -74
- package/esm2015/lib/category/category-meta.service.js +99 -99
- package/esm2015/lib/category/category.gql.js +406 -406
- package/esm2015/lib/category/category.service.js +390 -390
- package/esm2015/lib/category/category.types.js +29 -29
- package/esm2015/lib/cryptography/cryptography.types.js +11 -11
- package/esm2015/lib/cryptography/encryption.service.js +189 -189
- package/esm2015/lib/cryptography/key-factory.service.js +237 -237
- package/esm2015/lib/cryptography/key-graph.service.js +280 -280
- package/esm2015/lib/cryptography/key-meta.service.js +200 -200
- package/esm2015/lib/cryptography/key.service.js +124 -124
- package/esm2015/lib/cryptography/slip39.service.js +169 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +29 -29
- package/esm2015/lib/life-ready.config.js +84 -84
- package/esm2015/lib/life-ready.module.js +74 -74
- package/esm2015/lib/plan/plan.gql.js +123 -123
- package/esm2015/lib/plan/plan.service.js +149 -149
- package/esm2015/lib/plan/plan.types.js +11 -11
- package/esm2015/lib/record/record-attachment.service.js +101 -101
- package/esm2015/lib/record/record.gql.js +179 -179
- package/esm2015/lib/record/record.service.js +206 -206
- package/esm2015/lib/record/record.types.js +15 -15
- package/esm2015/lib/record-type/record-type.service.js +75 -75
- package/esm2015/lib/record-type/record-type.types.js +28 -28
- package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -105
- package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -1
- package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -300
- package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -52
- package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -97
- package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -1
- package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -150
- package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -229
- package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -1
- package/esm2015/lib/scenario/scenario-setup.service.js +269 -269
- package/esm2015/lib/scenario/scenario.gql.js +368 -368
- package/esm2015/lib/scenario/scenario.service.js +611 -611
- package/esm2015/lib/scenario/scenario.types.js +64 -64
- package/esm2015/lib/search/search.gql.js +62 -62
- package/esm2015/lib/search/search.service.js +156 -156
- package/esm2015/lib/search/search.types.js +6 -6
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -112
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -232
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -299
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -215
- package/esm2015/lib/users/profile-details.service.js +214 -214
- package/esm2015/lib/users/profile.gql.js +97 -97
- package/esm2015/lib/users/profile.service.js +169 -169
- package/esm2015/lib/users/profile.types.js +34 -34
- package/esm2015/lib/users/user.gql.js +60 -60
- package/esm2015/lib/users/user.service.js +79 -79
- package/esm2015/lib/users/user.types.js +5 -5
- package/esm2015/lifeready-core.js +10 -10
- package/esm2015/public-api.js +81 -81
- package/fesm2015/lifeready-core.js +13088 -13088
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/ast.d.ts +11 -11
- package/lib/_common/deferred-promise.d.ts +12 -12
- package/lib/_common/exceptions.d.ts +109 -109
- package/lib/_common/queries.gql.d.ts +10 -10
- package/lib/_common/run-outside-angular.d.ts +14 -14
- package/lib/_common/types.d.ts +10 -10
- package/lib/_common/utils.d.ts +3 -3
- package/lib/api/contact-card.gql.d.ts +7 -7
- package/lib/api/contact-card.service.d.ts +52 -52
- package/lib/api/contact-card2.gql.d.ts +34 -34
- package/lib/api/contact-card2.service.d.ts +49 -49
- package/lib/api/file.service.d.ts +18 -18
- package/lib/api/item2.gql.d.ts +96 -96
- package/lib/api/item2.service.d.ts +177 -177
- package/lib/api/key-exchange.gql.d.ts +9 -9
- package/lib/api/key-exchange.service.d.ts +39 -39
- package/lib/api/key-exchange.types.d.ts +196 -196
- package/lib/api/key-exchange2.gql.d.ts +125 -125
- package/lib/api/key-exchange2.service.d.ts +187 -187
- package/lib/api/lock.gql.d.ts +27 -27
- package/lib/api/lock.service.d.ts +25 -25
- package/lib/api/lr-apollo.service.d.ts +15 -15
- package/lib/api/lr-graphql/index.d.ts +5 -5
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -60
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -27
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +8 -8
- package/lib/api/lr-graphql/lr.service.d.ts +9 -9
- package/lib/api/message.service.d.ts +58 -58
- package/lib/api/persist.service.d.ts +31 -31
- package/lib/api/query-processor/common-processors.service.d.ts +36 -36
- package/lib/api/query-processor/index.d.ts +2 -2
- package/lib/api/query-processor/query-processor.service.d.ts +18 -18
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -15
- package/lib/api/shared-contact-card.service.d.ts +33 -33
- package/lib/api/shared-contact-card2.gql.d.ts +36 -36
- package/lib/api/shared-contact-card2.service.d.ts +45 -45
- package/lib/api/time.service.d.ts +16 -16
- package/lib/api/types/graphql.types.d.ts +29 -29
- package/lib/api/types/index.d.ts +2 -2
- package/lib/api/types/lr-graphql.types.d.ts +385 -385
- package/lib/auth/auth.config.d.ts +5 -5
- package/lib/auth/auth.gql.d.ts +15 -15
- package/lib/auth/auth.types.d.ts +66 -66
- package/lib/auth/idle.service.d.ts +40 -40
- package/lib/auth/idle.types.d.ts +10 -10
- package/lib/auth/lbop.service.d.ts +91 -91
- package/lib/auth/life-ready-auth.service.d.ts +59 -59
- package/lib/auth/password.service.d.ts +78 -78
- package/lib/auth/register.service.d.ts +25 -25
- package/lib/auth/two-factor.service.d.ts +15 -15
- package/lib/category/category-meta.service.d.ts +23 -23
- package/lib/category/category.gql.d.ts +45 -45
- package/lib/category/category.service.d.ts +67 -67
- package/lib/category/category.types.d.ts +79 -79
- package/lib/cryptography/cryptography.types.d.ts +83 -83
- package/lib/cryptography/encryption.service.d.ts +41 -41
- package/lib/cryptography/key-factory.service.d.ts +38 -38
- package/lib/cryptography/key-graph.service.d.ts +33 -33
- package/lib/cryptography/key-meta.service.d.ts +44 -44
- package/lib/cryptography/key.service.d.ts +36 -36
- package/lib/cryptography/slip39.service.d.ts +43 -43
- package/lib/cryptography/web-crypto.service.d.ts +5 -5
- package/lib/life-ready.config.d.ts +14 -14
- package/lib/life-ready.module.d.ts +5 -5
- package/lib/plan/plan.gql.d.ts +11 -11
- package/lib/plan/plan.service.d.ts +33 -33
- package/lib/plan/plan.types.d.ts +31 -31
- package/lib/record/record-attachment.service.d.ts +16 -16
- package/lib/record/record.gql.d.ts +14 -14
- package/lib/record/record.service.d.ts +25 -25
- package/lib/record/record.types.d.ts +57 -57
- package/lib/record-type/record-type.service.d.ts +11 -11
- package/lib/record-type/record-type.types.d.ts +50 -50
- package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -7
- package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -63
- package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -32
- package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -5
- package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -17
- package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -18
- package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -8
- package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -30
- package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -54
- package/lib/scenario/scenario-setup.service.d.ts +22 -22
- package/lib/scenario/scenario.gql.d.ts +34 -34
- package/lib/scenario/scenario.service.d.ts +58 -58
- package/lib/scenario/scenario.types.d.ts +217 -217
- package/lib/search/search.gql.d.ts +1 -1
- package/lib/search/search.service.d.ts +25 -25
- package/lib/search/search.types.d.ts +20 -20
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -20
- package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -35
- package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -3
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -218
- package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -130
- package/lib/trusted-parties/trusted-party.gql.d.ts +9 -9
- package/lib/trusted-parties/trusted-party.service.d.ts +44 -44
- package/lib/trusted-parties/trusted-party.types.d.ts +102 -102
- package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -79
- package/lib/trusted-parties/trusted-party2.service.d.ts +114 -114
- package/lib/users/profile-details.service.d.ts +21 -21
- package/lib/users/profile.gql.d.ts +11 -11
- package/lib/users/profile.service.d.ts +35 -35
- package/lib/users/profile.types.d.ts +96 -96
- package/lib/users/user.gql.d.ts +9 -9
- package/lib/users/user.service.d.ts +12 -12
- package/lib/users/user.types.d.ts +23 -23
- package/lifeready-core.d.ts +9 -9
- package/package.json +1 -1
- package/public-api.d.ts +77 -77
|
@@ -1,269 +1,269 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { ScenarioApproverService } from './approvals/scenario-approver.service';
|
|
4
|
-
import { ScenarioClaimantService } from './claimants/scenario-claimant.service';
|
|
5
|
-
import { ScenarioReceiverService } from './receivers/scenario-receiver.service';
|
|
6
|
-
import { ScenarioService } from './scenario.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./scenario.service";
|
|
9
|
-
import * as i2 from "./claimants/scenario-claimant.service";
|
|
10
|
-
import * as i3 from "./approvals/scenario-approver.service";
|
|
11
|
-
import * as i4 from "./receivers/scenario-receiver.service";
|
|
12
|
-
export class ScenarioSetupService {
|
|
13
|
-
constructor(scenarioService, scenarioClaimantService, scenarioApproverService, scenarioReceiverService) {
|
|
14
|
-
this.scenarioService = scenarioService;
|
|
15
|
-
this.scenarioClaimantService = scenarioClaimantService;
|
|
16
|
-
this.scenarioApproverService = scenarioApproverService;
|
|
17
|
-
this.scenarioReceiverService = scenarioReceiverService;
|
|
18
|
-
}
|
|
19
|
-
setupScenario(newScenario) {
|
|
20
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const scenarioId = yield this.scenarioService.createScenario({
|
|
22
|
-
plainSubjectCipherData: {
|
|
23
|
-
event: newScenario.event,
|
|
24
|
-
name: newScenario.name,
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
try {
|
|
28
|
-
yield Promise.all(newScenario.claimants.map((x) => this.updateClaimant(scenarioId, newScenario.event, x)));
|
|
29
|
-
const scenario = yield this.scenarioService.getScenario(scenarioId);
|
|
30
|
-
if (newScenario.approvalGroups.length) {
|
|
31
|
-
const approvalGroups = {
|
|
32
|
-
scenarioId,
|
|
33
|
-
keyId: scenario.keyId,
|
|
34
|
-
event: scenario.event,
|
|
35
|
-
singleReject: false,
|
|
36
|
-
quorum: 1,
|
|
37
|
-
plainAssemblyCipherData: null,
|
|
38
|
-
approvalGroups: newScenario.approvalGroups.map((x) => ({
|
|
39
|
-
quorum: x.quorum,
|
|
40
|
-
singleReject: x.singleReject,
|
|
41
|
-
plainSubAssemblyCipherData: { name: x.name },
|
|
42
|
-
approvers: x.approvers.map((y) => ({
|
|
43
|
-
trustedPartyId: y.trustedPartyId,
|
|
44
|
-
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
45
|
-
plainSharedCipherData: {
|
|
46
|
-
message: y.message,
|
|
47
|
-
event: newScenario.event,
|
|
48
|
-
},
|
|
49
|
-
})),
|
|
50
|
-
})),
|
|
51
|
-
};
|
|
52
|
-
scenario.assemblyKeyId = yield this.scenarioApproverService.createScenarioApproverAssembly(approvalGroups);
|
|
53
|
-
}
|
|
54
|
-
yield Promise.all(newScenario.receivers.map((x) => this.updateReceiver(scenarioId, scenario.assemblyKeyId, newScenario.event, x)));
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
return { scenarioId, error: e };
|
|
58
|
-
}
|
|
59
|
-
return { scenarioId };
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
updateScenario(updateScenario) {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
const params = {
|
|
65
|
-
scenarioId: updateScenario.scenarioId,
|
|
66
|
-
keyId: updateScenario.keyId,
|
|
67
|
-
plainSubjectCipherData: {
|
|
68
|
-
event: updateScenario.event,
|
|
69
|
-
name: updateScenario.name,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
yield this.scenarioService.updateScenario(params);
|
|
73
|
-
yield Promise.all(updateScenario.claimants.map((x) => this.updateClaimant(updateScenario.scenarioId, updateScenario.event, x)));
|
|
74
|
-
yield Promise.all(updateScenario.deletedClaimantIds.map((x) => this.scenarioClaimantService.deleteClaimant(x)));
|
|
75
|
-
const assemblyKeyId = yield this.updateApprovalGroups(updateScenario);
|
|
76
|
-
yield Promise.all(updateScenario.receivers.map((x) => this.updateReceiver(updateScenario.scenarioId, assemblyKeyId, updateScenario.event, x)));
|
|
77
|
-
yield Promise.all(updateScenario.deletedReceiverIds.map((x) => this.scenarioReceiverService.deleteReceiver(x)));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
updateClaimant(scenarioId, event, claimant) {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
if (claimant.claimantId) {
|
|
83
|
-
yield this.scenarioClaimantService.updateClaimant({
|
|
84
|
-
id: claimant.claimantId,
|
|
85
|
-
keyId: claimant.keyId,
|
|
86
|
-
plainSharedCipherData: { message: claimant.message, event },
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
yield this.scenarioClaimantService.addClaimant({
|
|
91
|
-
scenarioId,
|
|
92
|
-
trustedPartyId: claimant.trustedPartyId,
|
|
93
|
-
trustedPartySharedKeyId: claimant.trustedPartySharedKeyId,
|
|
94
|
-
plainSharedCipherData: { message: claimant.message, event },
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
updateApprovalGroups(updateScenario) {
|
|
100
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
-
if (updateScenario.assemblyKeyId) {
|
|
102
|
-
if (updateScenario.approvalGroups.length) {
|
|
103
|
-
const approvalGroups = {
|
|
104
|
-
scenarioId: updateScenario.scenarioId,
|
|
105
|
-
assemblyKeyId: updateScenario.assemblyKeyId,
|
|
106
|
-
singleReject: false,
|
|
107
|
-
quorum: 1,
|
|
108
|
-
approvalGroups: updateScenario.approvalGroups.map((x) => ({
|
|
109
|
-
subAssemblyId: x.subAssemblyId,
|
|
110
|
-
quorum: x.quorum,
|
|
111
|
-
singleReject: x.singleReject,
|
|
112
|
-
plainSubAssemblyCipherData: { name: x.name },
|
|
113
|
-
approvers: x.approvers.map((y) => ({
|
|
114
|
-
approverId: y.approverId,
|
|
115
|
-
keyId: y.keyId,
|
|
116
|
-
trustedPartyId: y.trustedPartyId,
|
|
117
|
-
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
118
|
-
plainSharedCipherData: {
|
|
119
|
-
message: y.message,
|
|
120
|
-
event: updateScenario.event,
|
|
121
|
-
},
|
|
122
|
-
})),
|
|
123
|
-
deletedApproverIds: x.deletedApproverIds,
|
|
124
|
-
})),
|
|
125
|
-
deletedGroupIds: updateScenario.deletedGroupIds,
|
|
126
|
-
};
|
|
127
|
-
yield this.scenarioApproverService.updateScenarioApproverAssembly(approvalGroups);
|
|
128
|
-
return updateScenario.assemblyKeyId;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
const { receivers } = yield this.scenarioService.getScenario(updateScenario.scenarioId);
|
|
132
|
-
yield this.scenarioApproverService.deleteScenarioApproverAssembly(updateScenario.scenarioId, updateScenario.event, receivers);
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
// update or delete
|
|
136
|
-
}
|
|
137
|
-
else if (updateScenario.approvalGroups.length) {
|
|
138
|
-
const { receivers } = yield this.scenarioService.getScenario(updateScenario.scenarioId);
|
|
139
|
-
const approvalGroups = {
|
|
140
|
-
scenarioId: updateScenario.scenarioId,
|
|
141
|
-
keyId: updateScenario.keyId,
|
|
142
|
-
event: updateScenario.event,
|
|
143
|
-
singleReject: false,
|
|
144
|
-
quorum: 1,
|
|
145
|
-
approvalGroups: updateScenario.approvalGroups.map((x) => ({
|
|
146
|
-
quorum: x.quorum,
|
|
147
|
-
singleReject: x.singleReject,
|
|
148
|
-
plainSubAssemblyCipherData: { name: x.name },
|
|
149
|
-
approvers: x.approvers.map((y) => ({
|
|
150
|
-
trustedPartyId: y.trustedPartyId,
|
|
151
|
-
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
152
|
-
plainSharedCipherData: {
|
|
153
|
-
message: y.message,
|
|
154
|
-
event: updateScenario.event,
|
|
155
|
-
},
|
|
156
|
-
})),
|
|
157
|
-
})),
|
|
158
|
-
receivers,
|
|
159
|
-
};
|
|
160
|
-
return yield this.scenarioApproverService.createScenarioApproverAssembly(approvalGroups);
|
|
161
|
-
}
|
|
162
|
-
return null;
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
updateReceiver(scenarioId, assemblyKeyId, event, receiver) {
|
|
166
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
-
let receiverId = receiver.receiverId;
|
|
168
|
-
// Currently deleting all receivers below assembly logic.
|
|
169
|
-
if (receiverId) {
|
|
170
|
-
yield this.scenarioReceiverService.updateReceiver({
|
|
171
|
-
id: receiver.receiverId,
|
|
172
|
-
keyId: receiver.keyId,
|
|
173
|
-
plainSharedCipherData: { message: receiver.message, event },
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
const newReceiver = {
|
|
178
|
-
scenarioId,
|
|
179
|
-
trustedPartyId: receiver.trustedPartyId,
|
|
180
|
-
trustedPartySharedKeyId: receiver.trustedPartySharedKeyId,
|
|
181
|
-
plainSharedCipherData: { message: receiver.message, event },
|
|
182
|
-
};
|
|
183
|
-
receiverId = yield this.scenarioReceiverService.addReceiver(newReceiver);
|
|
184
|
-
}
|
|
185
|
-
const loadedReceiver = yield this.scenarioReceiverService.getReceiver(receiverId);
|
|
186
|
-
yield this.updateReceiverItems(scenarioId, assemblyKeyId, loadedReceiver, receiver.permissions);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
updateReceiverItems(scenarioId, assemblyKeyId, receiver, permissions) {
|
|
190
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
-
permissions = permissions || {};
|
|
192
|
-
permissions.categories = permissions.categories || [];
|
|
193
|
-
permissions.records = permissions.records || [];
|
|
194
|
-
yield Promise.all(permissions.categories
|
|
195
|
-
.filter((x) => !receiver.categories.some((y) => y.category.id === x.categoryId))
|
|
196
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
197
|
-
const params = {
|
|
198
|
-
scenarioId,
|
|
199
|
-
assemblyKeyId,
|
|
200
|
-
receiverId: receiver.id,
|
|
201
|
-
receiverKeyId: receiver.keyId,
|
|
202
|
-
accessRole: x.accessLevel,
|
|
203
|
-
categoryId: x.categoryId,
|
|
204
|
-
};
|
|
205
|
-
yield this.scenarioReceiverService.addReceiverCategory(params);
|
|
206
|
-
})));
|
|
207
|
-
yield Promise.all(permissions.records
|
|
208
|
-
.filter((x) => !receiver.records.some((y) => y.record.id === x.recordId))
|
|
209
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
210
|
-
const params = {
|
|
211
|
-
scenarioId,
|
|
212
|
-
assemblyKeyId,
|
|
213
|
-
receiverId: receiver.id,
|
|
214
|
-
receiverKeyId: receiver.keyId,
|
|
215
|
-
accessRole: x.accessLevel,
|
|
216
|
-
recordId: x.recordId,
|
|
217
|
-
};
|
|
218
|
-
yield this.scenarioReceiverService.addReceiverRecord(params);
|
|
219
|
-
})));
|
|
220
|
-
yield Promise.all(permissions.categories
|
|
221
|
-
.map((x) => ({
|
|
222
|
-
accessLevel: x.accessLevel,
|
|
223
|
-
category: receiver.categories.find((y) => y.category.id === x.categoryId),
|
|
224
|
-
}))
|
|
225
|
-
.filter((x) => x.category)
|
|
226
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
227
|
-
const params = {
|
|
228
|
-
id: x.category.id,
|
|
229
|
-
keyId: x.category.keyId,
|
|
230
|
-
accessRole: x.accessLevel,
|
|
231
|
-
};
|
|
232
|
-
yield this.scenarioReceiverService.updateReceiverItem(params);
|
|
233
|
-
})));
|
|
234
|
-
yield Promise.all(permissions.records
|
|
235
|
-
.map((x) => ({
|
|
236
|
-
accessLevel: x.accessLevel,
|
|
237
|
-
record: receiver.records.find((y) => y.record.id === x.recordId),
|
|
238
|
-
}))
|
|
239
|
-
.filter((x) => x.record)
|
|
240
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
241
|
-
const params = {
|
|
242
|
-
id: x.record.id,
|
|
243
|
-
keyId: x.record.keyId,
|
|
244
|
-
accessRole: x.accessLevel,
|
|
245
|
-
};
|
|
246
|
-
yield this.scenarioReceiverService.updateReceiverItem(params);
|
|
247
|
-
})));
|
|
248
|
-
yield Promise.all(receiver.categories
|
|
249
|
-
.filter((x) => !permissions.categories.some((y) => y.categoryId === x.category.id))
|
|
250
|
-
.map((x) => this.scenarioReceiverService.deleteReceiverItem(x.id)));
|
|
251
|
-
yield Promise.all(receiver.records
|
|
252
|
-
.filter((x) => !permissions.records.some((y) => y.recordId === x.record.id))
|
|
253
|
-
.map((x) => this.scenarioReceiverService.deleteReceiverItem(x.id)));
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
ScenarioSetupService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScenarioSetupService_Factory() { return new ScenarioSetupService(i0.ɵɵinject(i1.ScenarioService), i0.ɵɵinject(i2.ScenarioClaimantService), i0.ɵɵinject(i3.ScenarioApproverService), i0.ɵɵinject(i4.ScenarioReceiverService)); }, token: ScenarioSetupService, providedIn: "root" });
|
|
258
|
-
ScenarioSetupService.decorators = [
|
|
259
|
-
{ type: Injectable, args: [{
|
|
260
|
-
providedIn: 'root',
|
|
261
|
-
},] }
|
|
262
|
-
];
|
|
263
|
-
ScenarioSetupService.ctorParameters = () => [
|
|
264
|
-
{ type: ScenarioService },
|
|
265
|
-
{ type: ScenarioClaimantService },
|
|
266
|
-
{ type: ScenarioApproverService },
|
|
267
|
-
{ type: ScenarioReceiverService }
|
|
268
|
-
];
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tc2V0dXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvc2NlbmFyaW8vc2NlbmFyaW8tc2V0dXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUtoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQVdyRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1UsZUFBZ0MsRUFDaEMsdUJBQWdELEVBQ2hELHVCQUFnRCxFQUNoRCx1QkFBZ0Q7UUFIaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO0lBQ3ZELENBQUM7SUFFUyxhQUFhLENBQ3hCLFdBQXdCOztZQUV4QixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO2dCQUMzRCxzQkFBc0IsRUFBRTtvQkFDdEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO29CQUN4QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSTtnQkFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVB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QUNKLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FDdEU7aUJBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3JFLENBQUM7WUFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsUUFBUSxDQUFDLE9BQU87aUJBQ2IsTUFBTSxDQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQ3BFO2lCQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztLQUFBOzs7O1lBelZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBVlEsZUFBZTtZQU5mLHVCQUF1QjtZQUR2Qix1QkFBdUI7WUFFdkIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTHJFeGNlcHRpb24gfSBmcm9tICcuLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmVwYXJlZFBlcm1pc3Npb25zIH0gZnJvbSAnLi8uLi9hcGkva2V5LWV4Y2hhbmdlLnR5cGVzJztcbmltcG9ydCB7XG4gIENyZWF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMsXG4gIFVwZGF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMsXG59IGZyb20gJy4vYXBwcm92YWxzL3NjZW5hcmlvLWFwcHJvdmFsLnR5cGVzJztcbmltcG9ydCB7IFNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcHByb3ZhbHMvc2NlbmFyaW8tYXBwcm92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTY2VuYXJpb0NsYWltYW50U2VydmljZSB9IGZyb20gJy4vY2xhaW1hbnRzL3NjZW5hcmlvLWNsYWltYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NlbmFyaW9SZWNlaXZlclNlcnZpY2UgfSBmcm9tICcuL3JlY2VpdmVycy9zY2VuYXJpby1yZWNlaXZlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFJlY2VpdmVyLFxuICBVcGRhdGVTY2VuYXJpb1JlY2VpdmVySXRlbUlucHV0LFxufSBmcm9tICcuL3JlY2VpdmVycy9zY2VuYXJpby1yZWNlaXZlci50eXBlcyc7XG5pbXBvcnQgeyBTY2VuYXJpb1NlcnZpY2UgfSBmcm9tICcuL3NjZW5hcmlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTmV3U2NlbmFyaW8sXG4gIFVwZGF0ZWRTY2VuYXJpb0NsYWltYW50LFxuICBVcGRhdGVkU2NlbmFyaW9SZWNlaXZlcixcbiAgVXBkYXRlU2NlbmFyaW8sXG59IGZyb20gJy4vc2NlbmFyaW8udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NlbmFyaW9TZXR1cFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjZW5hcmlvU2VydmljZTogU2NlbmFyaW9TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NlbmFyaW9DbGFpbWFudFNlcnZpY2U6IFNjZW5hcmlvQ2xhaW1hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NlbmFyaW9BcHByb3ZlclNlcnZpY2U6IFNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NlbmFyaW9SZWNlaXZlclNlcnZpY2U6IFNjZW5hcmlvUmVjZWl2ZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgc2V0dXBTY2VuYXJpbyhcbiAgICBuZXdTY2VuYXJpbzogTmV3U2NlbmFyaW9cbiAgKTogUHJvbWlzZTx7IHNjZW5hcmlvSWQ6IHN0cmluZzsgZXJyb3I/OiBMckV4Y2VwdGlvbiB9PiB7XG4gICAgY29uc3Qgc2NlbmFyaW9JZCA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmNyZWF0ZVNjZW5hcmlvKHtcbiAgICAgIHBsYWluU3ViamVjdENpcGhlckRhdGE6IHtcbiAgICAgICAgZXZlbnQ6IG5ld1NjZW5hcmlvLmV2ZW50LFxuICAgICAgICBuYW1lOiBuZXdTY2VuYXJpby5uYW1lLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgbmV3U2NlbmFyaW8uY2xhaW1hbnRzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnVwZGF0ZUNsYWltYW50KHNjZW5hcmlvSWQsIG5ld1NjZW5hcmlvLmV2ZW50LCB4KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzY2VuYXJpbyA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvKHNjZW5hcmlvSWQpO1xuICAgICAgaWYgKG5ld1NjZW5hcmlvLmFwcHJvdmFsR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhcHByb3ZhbEdyb3VwczogQ3JlYXRlU2NlbmFyaW9BcHByb3ZhbEdyb3VwcyA9IHtcbiAgICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICAgIGtleUlkOiBzY2VuYXJpby5rZXlJZCxcbiAgICAgICAgICBldmVudDogc2NlbmFyaW8uZXZlbnQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBmYWxzZSxcbiAgICAgICAgICBxdW9ydW06IDEsXG4gICAgICAgICAgcGxhaW5Bc3NlbWJseUNpcGhlckRhdGE6IG51bGwsXG5cbiAgICAgICAgICBhcHByb3ZhbEdyb3VwczogbmV3U2NlbmFyaW8uYXBwcm92YWxHcm91cHMubWFwKCh4KSA9PiAoe1xuICAgICAgICAgICAgcXVvcnVtOiB4LnF1b3J1bSxcbiAgICAgICAgICAgIHNpbmdsZVJlamVjdDogeC5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgICBwbGFpblN1YkFzc2VtYmx5Q2lwaGVyRGF0YTogeyBuYW1lOiB4Lm5hbWUgfSxcbiAgICAgICAgICAgIGFwcHJvdmVyczogeC5hcHByb3ZlcnMubWFwKCh5KSA9PiAoe1xuICAgICAgICAgICAgICB0cnVzdGVkUGFydHlJZDogeS50cnVzdGVkUGFydHlJZCxcbiAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQ6IHkudHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQsXG4gICAgICAgICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YToge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHkubWVzc2FnZSxcbiAgICAgICAgICAgICAgICBldmVudDogbmV3U2NlbmFyaW8uZXZlbnQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9O1xuICAgICAgICBzY2VuYXJpby5hc3NlbWJseUtleUlkID0gYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5jcmVhdGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXG4gICAgICAgICAgYXBwcm92YWxHcm91cHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBuZXdTY2VuYXJpby5yZWNlaXZlcnMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMudXBkYXRlUmVjZWl2ZXIoXG4gICAgICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICAgICAgc2NlbmFyaW8uYXNzZW1ibHlLZXlJZCxcbiAgICAgICAgICAgIG5ld1NjZW5hcmlvLmV2ZW50LFxuICAgICAgICAgICAgeFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4geyBzY2VuYXJpb0lkLCBlcnJvcjogZSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBzY2VuYXJpb0lkIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlU2NlbmFyaW8odXBkYXRlU2NlbmFyaW86IFVwZGF0ZVNjZW5hcmlvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgc2NlbmFyaW9JZDogdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCxcbiAgICAgIGtleUlkOiB1cGRhdGVTY2VuYXJpby5rZXlJZCxcbiAgICAgIHBsYWluU3ViamVjdENpcGhlckRhdGE6IHtcbiAgICAgICAgZXZlbnQ6IHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxuICAgICAgICBuYW1lOiB1cGRhdGVTY2VuYXJpby5uYW1lLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLnVwZGF0ZVNjZW5hcmlvKHBhcmFtcyk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVwZGF0ZVNjZW5hcmlvLmNsYWltYW50cy5tYXAoKHgpID0+XG4gICAgICAgIHRoaXMudXBkYXRlQ2xhaW1hbnQodXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCwgdXBkYXRlU2NlbmFyaW8uZXZlbnQsIHgpXG4gICAgICApXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVwZGF0ZVNjZW5hcmlvLmRlbGV0ZWRDbGFpbWFudElkcy5tYXAoKHgpID0+XG4gICAgICAgIHRoaXMuc2NlbmFyaW9DbGFpbWFudFNlcnZpY2UuZGVsZXRlQ2xhaW1hbnQoeClcbiAgICAgIClcbiAgICApO1xuXG4gICAgY29uc3QgYXNzZW1ibHlLZXlJZCA9IGF3YWl0IHRoaXMudXBkYXRlQXBwcm92YWxHcm91cHModXBkYXRlU2NlbmFyaW8pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVTY2VuYXJpby5yZWNlaXZlcnMubWFwKCh4KSA9PlxuICAgICAgICB0aGlzLnVwZGF0ZVJlY2VpdmVyKFxuICAgICAgICAgIHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXG4gICAgICAgICAgYXNzZW1ibHlLZXlJZCxcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5ldmVudCxcbiAgICAgICAgICB4XG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdXBkYXRlU2NlbmFyaW8uZGVsZXRlZFJlY2VpdmVySWRzLm1hcCgoeCkgPT5cbiAgICAgICAgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlcih4KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNsYWltYW50KFxuICAgIHNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGNsYWltYW50OiBVcGRhdGVkU2NlbmFyaW9DbGFpbWFudFxuICApIHtcbiAgICBpZiAoY2xhaW1hbnQuY2xhaW1hbnRJZCkge1xuICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb0NsYWltYW50U2VydmljZS51cGRhdGVDbGFpbWFudCh7XG4gICAgICAgIGlkOiBjbGFpbWFudC5jbGFpbWFudElkLFxuICAgICAgICBrZXlJZDogY2xhaW1hbnQua2V5SWQsXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogeyBtZXNzYWdlOiBjbGFpbWFudC5tZXNzYWdlLCBldmVudCB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9DbGFpbWFudFNlcnZpY2UuYWRkQ2xhaW1hbnQoe1xuICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICB0cnVzdGVkUGFydHlJZDogY2xhaW1hbnQudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiBjbGFpbWFudC50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7IG1lc3NhZ2U6IGNsYWltYW50Lm1lc3NhZ2UsIGV2ZW50IH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFwcHJvdmFsR3JvdXBzKFxuICAgIHVwZGF0ZVNjZW5hcmlvOiBVcGRhdGVTY2VuYXJpb1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh1cGRhdGVTY2VuYXJpby5hc3NlbWJseUtleUlkKSB7XG4gICAgICBpZiAodXBkYXRlU2NlbmFyaW8uYXBwcm92YWxHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmFsR3JvdXBzOiBVcGRhdGVTY2VuYXJpb0FwcHJvdmFsR3JvdXBzID0ge1xuICAgICAgICAgIHNjZW5hcmlvSWQ6IHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXG4gICAgICAgICAgYXNzZW1ibHlLZXlJZDogdXBkYXRlU2NlbmFyaW8uYXNzZW1ibHlLZXlJZCxcblxuICAgICAgICAgIHNpbmdsZVJlamVjdDogZmFsc2UsXG4gICAgICAgICAgcXVvcnVtOiAxLFxuXG4gICAgICAgICAgYXBwcm92YWxHcm91cHM6IHVwZGF0ZVNjZW5hcmlvLmFwcHJvdmFsR3JvdXBzLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICAgIHN1YkFzc2VtYmx5SWQ6IHguc3ViQXNzZW1ibHlJZCxcbiAgICAgICAgICAgIHF1b3J1bTogeC5xdW9ydW0sXG4gICAgICAgICAgICBzaW5nbGVSZWplY3Q6IHguc2luZ2xlUmVqZWN0LFxuICAgICAgICAgICAgcGxhaW5TdWJBc3NlbWJseUNpcGhlckRhdGE6IHsgbmFtZTogeC5uYW1lIH0sXG4gICAgICAgICAgICBhcHByb3ZlcnM6IHguYXBwcm92ZXJzLm1hcCgoeSkgPT4gKHtcbiAgICAgICAgICAgICAgYXBwcm92ZXJJZDogeS5hcHByb3ZlcklkLFxuICAgICAgICAgICAgICBrZXlJZDogeS5rZXlJZCxcbiAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHkudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgICAgICAgIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiB5LnRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkLFxuICAgICAgICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGE6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB5Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgZGVsZXRlZEFwcHJvdmVySWRzOiB4LmRlbGV0ZWRBcHByb3ZlcklkcyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgZGVsZXRlZEdyb3VwSWRzOiB1cGRhdGVTY2VuYXJpby5kZWxldGVkR3JvdXBJZHMsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9BcHByb3ZlclNlcnZpY2UudXBkYXRlU2NlbmFyaW9BcHByb3ZlckFzc2VtYmx5KFxuICAgICAgICAgIGFwcHJvdmFsR3JvdXBzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1cGRhdGVTY2VuYXJpby5hc3NlbWJseUtleUlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyByZWNlaXZlcnMgfSA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvKFxuICAgICAgICAgIHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWRcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5kZWxldGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXG4gICAgICAgICAgdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCxcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5ldmVudCxcbiAgICAgICAgICByZWNlaXZlcnNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyB1cGRhdGUgb3IgZGVsZXRlXG4gICAgfSBlbHNlIGlmICh1cGRhdGVTY2VuYXJpby5hcHByb3ZhbEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVjZWl2ZXJzIH0gPSBhd2FpdCB0aGlzLnNjZW5hcmlvU2VydmljZS5nZXRTY2VuYXJpbyhcbiAgICAgICAgdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXBwcm92YWxHcm91cHM6IENyZWF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMgPSB7XG4gICAgICAgIHNjZW5hcmlvSWQ6IHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXG4gICAgICAgIGtleUlkOiB1cGRhdGVTY2VuYXJpby5rZXlJZCxcbiAgICAgICAgZXZlbnQ6IHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGZhbHNlLFxuICAgICAgICBxdW9ydW06IDEsXG4gICAgICAgIGFwcHJvdmFsR3JvdXBzOiB1cGRhdGVTY2VuYXJpby5hcHByb3ZhbEdyb3Vwcy5tYXAoKHgpID0+ICh7XG4gICAgICAgICAgcXVvcnVtOiB4LnF1b3J1bSxcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHguc2luZ2xlUmVqZWN0LFxuICAgICAgICAgIHBsYWluU3ViQXNzZW1ibHlDaXBoZXJEYXRhOiB7IG5hbWU6IHgubmFtZSB9LFxuICAgICAgICAgIGFwcHJvdmVyczogeC5hcHByb3ZlcnMubWFwKCh5KSA9PiAoe1xuICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHkudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgICAgICB0cnVzdGVkUGFydHlTaGFyZWRLZXlJZDogeS50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcbiAgICAgICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YToge1xuICAgICAgICAgICAgICBtZXNzYWdlOiB5Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgIGV2ZW50OiB1cGRhdGVTY2VuYXJpby5ldmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9KSksXG4gICAgICAgIHJlY2VpdmVycyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5jcmVhdGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXG4gICAgICAgIGFwcHJvdmFsR3JvdXBzXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUmVjZWl2ZXIoXG4gICAgc2NlbmFyaW9JZDogc3RyaW5nLFxuICAgIGFzc2VtYmx5S2V5SWQ6IHN0cmluZyxcbiAgICBldmVudDogc3RyaW5nLFxuICAgIHJlY2VpdmVyOiBVcGRhdGVkU2NlbmFyaW9SZWNlaXZlclxuICApIHtcbiAgICBsZXQgcmVjZWl2ZXJJZCA9IHJlY2VpdmVyLnJlY2VpdmVySWQ7XG5cbiAgICAvLyBDdXJyZW50bHkgZGVsZXRpbmcgYWxsIHJlY2VpdmVycyBiZWxvdyBhc3NlbWJseSBsb2dpYy5cbiAgICBpZiAocmVjZWl2ZXJJZCkge1xuICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS51cGRhdGVSZWNlaXZlcih7XG4gICAgICAgIGlkOiByZWNlaXZlci5yZWNlaXZlcklkLFxuICAgICAgICBrZXlJZDogcmVjZWl2ZXIua2V5SWQsXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogeyBtZXNzYWdlOiByZWNlaXZlci5tZXNzYWdlLCBldmVudCB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1JlY2VpdmVyID0ge1xuICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICB0cnVzdGVkUGFydHlJZDogcmVjZWl2ZXIudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiByZWNlaXZlci50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7IG1lc3NhZ2U6IHJlY2VpdmVyLm1lc3NhZ2UsIGV2ZW50IH0sXG4gICAgICB9O1xuICAgICAgcmVjZWl2ZXJJZCA9IGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuYWRkUmVjZWl2ZXIobmV3UmVjZWl2ZXIpO1xuICAgIH1cbiAgICBjb25zdCBsb2FkZWRSZWNlaXZlciA9IGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuZ2V0UmVjZWl2ZXIoXG4gICAgICByZWNlaXZlcklkXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJlY2VpdmVySXRlbXMoXG4gICAgICBzY2VuYXJpb0lkLFxuICAgICAgYXNzZW1ibHlLZXlJZCxcbiAgICAgIGxvYWRlZFJlY2VpdmVyLFxuICAgICAgcmVjZWl2ZXIucGVybWlzc2lvbnNcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVSZWNlaXZlckl0ZW1zKFxuICAgIHNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBhc3NlbWJseUtleUlkOiBzdHJpbmcsXG4gICAgcmVjZWl2ZXI6IFJlY2VpdmVyLFxuICAgIHBlcm1pc3Npb25zOiBQcmVwYXJlZFBlcm1pc3Npb25zXG4gICkge1xuICAgIHBlcm1pc3Npb25zID0gcGVybWlzc2lvbnMgfHwge307XG4gICAgcGVybWlzc2lvbnMuY2F0ZWdvcmllcyA9IHBlcm1pc3Npb25zLmNhdGVnb3JpZXMgfHwgW107XG4gICAgcGVybWlzc2lvbnMucmVjb3JkcyA9IHBlcm1pc3Npb25zLnJlY29yZHMgfHwgW107XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBlcm1pc3Npb25zLmNhdGVnb3JpZXNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICFyZWNlaXZlci5jYXRlZ29yaWVzLnNvbWUoKHkpID0+IHkuY2F0ZWdvcnkuaWQgPT09IHguY2F0ZWdvcnlJZClcbiAgICAgICAgKVxuICAgICAgICAubWFwKGFzeW5jICh4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgc2NlbmFyaW9JZCxcbiAgICAgICAgICAgIGFzc2VtYmx5S2V5SWQsXG4gICAgICAgICAgICByZWNlaXZlcklkOiByZWNlaXZlci5pZCxcbiAgICAgICAgICAgIHJlY2VpdmVyS2V5SWQ6IHJlY2VpdmVyLmtleUlkLFxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcbiAgICAgICAgICAgIGNhdGVnb3J5SWQ6IHguY2F0ZWdvcnlJZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuYWRkUmVjZWl2ZXJDYXRlZ29yeShwYXJhbXMpO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwZXJtaXNzaW9ucy5yZWNvcmRzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHgpID0+ICFyZWNlaXZlci5yZWNvcmRzLnNvbWUoKHkpID0+IHkucmVjb3JkLmlkID09PSB4LnJlY29yZElkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICAgICAgYXNzZW1ibHlLZXlJZCxcbiAgICAgICAgICAgIHJlY2VpdmVySWQ6IHJlY2VpdmVyLmlkLFxuICAgICAgICAgICAgcmVjZWl2ZXJLZXlJZDogcmVjZWl2ZXIua2V5SWQsXG4gICAgICAgICAgICBhY2Nlc3NSb2xlOiB4LmFjY2Vzc0xldmVsLFxuICAgICAgICAgICAgcmVjb3JkSWQ6IHgucmVjb3JkSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvUmVjZWl2ZXJTZXJ2aWNlLmFkZFJlY2VpdmVyUmVjb3JkKHBhcmFtcyk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcGVybWlzc2lvbnMuY2F0ZWdvcmllc1xuICAgICAgICAubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGFjY2Vzc0xldmVsOiB4LmFjY2Vzc0xldmVsLFxuICAgICAgICAgIGNhdGVnb3J5OiByZWNlaXZlci5jYXRlZ29yaWVzLmZpbmQoXG4gICAgICAgICAgICAoeSkgPT4geS5jYXRlZ29yeS5pZCA9PT0geC5jYXRlZ29yeUlkXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIoKHgpID0+IHguY2F0ZWdvcnkpXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbXM6IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQgPSB7XG4gICAgICAgICAgICBpZDogeC5jYXRlZ29yeS5pZCxcbiAgICAgICAgICAgIGtleUlkOiB4LmNhdGVnb3J5LmtleUlkLFxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UudXBkYXRlUmVjZWl2ZXJJdGVtKHBhcmFtcyk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBlcm1pc3Npb25zLnJlY29yZHNcbiAgICAgICAgLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICBhY2Nlc3NMZXZlbDogeC5hY2Nlc3NMZXZlbCxcbiAgICAgICAgICByZWNvcmQ6IHJlY2VpdmVyLnJlY29yZHMuZmluZCgoeSkgPT4geS5yZWNvcmQuaWQgPT09IHgucmVjb3JkSWQpLFxuICAgICAgICB9KSlcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5yZWNvcmQpXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbXM6IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQgPSB7XG4gICAgICAgICAgICBpZDogeC5yZWNvcmQuaWQsXG4gICAgICAgICAgICBrZXlJZDogeC5yZWNvcmQua2V5SWQsXG4gICAgICAgICAgICBhY2Nlc3NSb2xlOiB4LmFjY2Vzc0xldmVsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS51cGRhdGVSZWNlaXZlckl0ZW0ocGFyYW1zKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByZWNlaXZlci5jYXRlZ29yaWVzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAhcGVybWlzc2lvbnMuY2F0ZWdvcmllcy5zb21lKCh5KSA9PiB5LmNhdGVnb3J5SWQgPT09IHguY2F0ZWdvcnkuaWQpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlckl0ZW0oeC5pZCkpXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHJlY2VpdmVyLnJlY29yZHNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoeCkgPT4gIXBlcm1pc3Npb25zLnJlY29yZHMuc29tZSgoeSkgPT4geS5yZWNvcmRJZCA9PT0geC5yZWNvcmQuaWQpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlckl0ZW0oeC5pZCkpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ScenarioApproverService } from './approvals/scenario-approver.service';
|
|
4
|
+
import { ScenarioClaimantService } from './claimants/scenario-claimant.service';
|
|
5
|
+
import { ScenarioReceiverService } from './receivers/scenario-receiver.service';
|
|
6
|
+
import { ScenarioService } from './scenario.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./scenario.service";
|
|
9
|
+
import * as i2 from "./claimants/scenario-claimant.service";
|
|
10
|
+
import * as i3 from "./approvals/scenario-approver.service";
|
|
11
|
+
import * as i4 from "./receivers/scenario-receiver.service";
|
|
12
|
+
export class ScenarioSetupService {
|
|
13
|
+
constructor(scenarioService, scenarioClaimantService, scenarioApproverService, scenarioReceiverService) {
|
|
14
|
+
this.scenarioService = scenarioService;
|
|
15
|
+
this.scenarioClaimantService = scenarioClaimantService;
|
|
16
|
+
this.scenarioApproverService = scenarioApproverService;
|
|
17
|
+
this.scenarioReceiverService = scenarioReceiverService;
|
|
18
|
+
}
|
|
19
|
+
setupScenario(newScenario) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const scenarioId = yield this.scenarioService.createScenario({
|
|
22
|
+
plainSubjectCipherData: {
|
|
23
|
+
event: newScenario.event,
|
|
24
|
+
name: newScenario.name,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
try {
|
|
28
|
+
yield Promise.all(newScenario.claimants.map((x) => this.updateClaimant(scenarioId, newScenario.event, x)));
|
|
29
|
+
const scenario = yield this.scenarioService.getScenario(scenarioId);
|
|
30
|
+
if (newScenario.approvalGroups.length) {
|
|
31
|
+
const approvalGroups = {
|
|
32
|
+
scenarioId,
|
|
33
|
+
keyId: scenario.keyId,
|
|
34
|
+
event: scenario.event,
|
|
35
|
+
singleReject: false,
|
|
36
|
+
quorum: 1,
|
|
37
|
+
plainAssemblyCipherData: null,
|
|
38
|
+
approvalGroups: newScenario.approvalGroups.map((x) => ({
|
|
39
|
+
quorum: x.quorum,
|
|
40
|
+
singleReject: x.singleReject,
|
|
41
|
+
plainSubAssemblyCipherData: { name: x.name },
|
|
42
|
+
approvers: x.approvers.map((y) => ({
|
|
43
|
+
trustedPartyId: y.trustedPartyId,
|
|
44
|
+
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
45
|
+
plainSharedCipherData: {
|
|
46
|
+
message: y.message,
|
|
47
|
+
event: newScenario.event,
|
|
48
|
+
},
|
|
49
|
+
})),
|
|
50
|
+
})),
|
|
51
|
+
};
|
|
52
|
+
scenario.assemblyKeyId = yield this.scenarioApproverService.createScenarioApproverAssembly(approvalGroups);
|
|
53
|
+
}
|
|
54
|
+
yield Promise.all(newScenario.receivers.map((x) => this.updateReceiver(scenarioId, scenario.assemblyKeyId, newScenario.event, x)));
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return { scenarioId, error: e };
|
|
58
|
+
}
|
|
59
|
+
return { scenarioId };
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
updateScenario(updateScenario) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
const params = {
|
|
65
|
+
scenarioId: updateScenario.scenarioId,
|
|
66
|
+
keyId: updateScenario.keyId,
|
|
67
|
+
plainSubjectCipherData: {
|
|
68
|
+
event: updateScenario.event,
|
|
69
|
+
name: updateScenario.name,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
yield this.scenarioService.updateScenario(params);
|
|
73
|
+
yield Promise.all(updateScenario.claimants.map((x) => this.updateClaimant(updateScenario.scenarioId, updateScenario.event, x)));
|
|
74
|
+
yield Promise.all(updateScenario.deletedClaimantIds.map((x) => this.scenarioClaimantService.deleteClaimant(x)));
|
|
75
|
+
const assemblyKeyId = yield this.updateApprovalGroups(updateScenario);
|
|
76
|
+
yield Promise.all(updateScenario.receivers.map((x) => this.updateReceiver(updateScenario.scenarioId, assemblyKeyId, updateScenario.event, x)));
|
|
77
|
+
yield Promise.all(updateScenario.deletedReceiverIds.map((x) => this.scenarioReceiverService.deleteReceiver(x)));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
updateClaimant(scenarioId, event, claimant) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
if (claimant.claimantId) {
|
|
83
|
+
yield this.scenarioClaimantService.updateClaimant({
|
|
84
|
+
id: claimant.claimantId,
|
|
85
|
+
keyId: claimant.keyId,
|
|
86
|
+
plainSharedCipherData: { message: claimant.message, event },
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
yield this.scenarioClaimantService.addClaimant({
|
|
91
|
+
scenarioId,
|
|
92
|
+
trustedPartyId: claimant.trustedPartyId,
|
|
93
|
+
trustedPartySharedKeyId: claimant.trustedPartySharedKeyId,
|
|
94
|
+
plainSharedCipherData: { message: claimant.message, event },
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
updateApprovalGroups(updateScenario) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
if (updateScenario.assemblyKeyId) {
|
|
102
|
+
if (updateScenario.approvalGroups.length) {
|
|
103
|
+
const approvalGroups = {
|
|
104
|
+
scenarioId: updateScenario.scenarioId,
|
|
105
|
+
assemblyKeyId: updateScenario.assemblyKeyId,
|
|
106
|
+
singleReject: false,
|
|
107
|
+
quorum: 1,
|
|
108
|
+
approvalGroups: updateScenario.approvalGroups.map((x) => ({
|
|
109
|
+
subAssemblyId: x.subAssemblyId,
|
|
110
|
+
quorum: x.quorum,
|
|
111
|
+
singleReject: x.singleReject,
|
|
112
|
+
plainSubAssemblyCipherData: { name: x.name },
|
|
113
|
+
approvers: x.approvers.map((y) => ({
|
|
114
|
+
approverId: y.approverId,
|
|
115
|
+
keyId: y.keyId,
|
|
116
|
+
trustedPartyId: y.trustedPartyId,
|
|
117
|
+
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
118
|
+
plainSharedCipherData: {
|
|
119
|
+
message: y.message,
|
|
120
|
+
event: updateScenario.event,
|
|
121
|
+
},
|
|
122
|
+
})),
|
|
123
|
+
deletedApproverIds: x.deletedApproverIds,
|
|
124
|
+
})),
|
|
125
|
+
deletedGroupIds: updateScenario.deletedGroupIds,
|
|
126
|
+
};
|
|
127
|
+
yield this.scenarioApproverService.updateScenarioApproverAssembly(approvalGroups);
|
|
128
|
+
return updateScenario.assemblyKeyId;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const { receivers } = yield this.scenarioService.getScenario(updateScenario.scenarioId);
|
|
132
|
+
yield this.scenarioApproverService.deleteScenarioApproverAssembly(updateScenario.scenarioId, updateScenario.event, receivers);
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
// update or delete
|
|
136
|
+
}
|
|
137
|
+
else if (updateScenario.approvalGroups.length) {
|
|
138
|
+
const { receivers } = yield this.scenarioService.getScenario(updateScenario.scenarioId);
|
|
139
|
+
const approvalGroups = {
|
|
140
|
+
scenarioId: updateScenario.scenarioId,
|
|
141
|
+
keyId: updateScenario.keyId,
|
|
142
|
+
event: updateScenario.event,
|
|
143
|
+
singleReject: false,
|
|
144
|
+
quorum: 1,
|
|
145
|
+
approvalGroups: updateScenario.approvalGroups.map((x) => ({
|
|
146
|
+
quorum: x.quorum,
|
|
147
|
+
singleReject: x.singleReject,
|
|
148
|
+
plainSubAssemblyCipherData: { name: x.name },
|
|
149
|
+
approvers: x.approvers.map((y) => ({
|
|
150
|
+
trustedPartyId: y.trustedPartyId,
|
|
151
|
+
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
152
|
+
plainSharedCipherData: {
|
|
153
|
+
message: y.message,
|
|
154
|
+
event: updateScenario.event,
|
|
155
|
+
},
|
|
156
|
+
})),
|
|
157
|
+
})),
|
|
158
|
+
receivers,
|
|
159
|
+
};
|
|
160
|
+
return yield this.scenarioApproverService.createScenarioApproverAssembly(approvalGroups);
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
updateReceiver(scenarioId, assemblyKeyId, event, receiver) {
|
|
166
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
+
let receiverId = receiver.receiverId;
|
|
168
|
+
// Currently deleting all receivers below assembly logic.
|
|
169
|
+
if (receiverId) {
|
|
170
|
+
yield this.scenarioReceiverService.updateReceiver({
|
|
171
|
+
id: receiver.receiverId,
|
|
172
|
+
keyId: receiver.keyId,
|
|
173
|
+
plainSharedCipherData: { message: receiver.message, event },
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const newReceiver = {
|
|
178
|
+
scenarioId,
|
|
179
|
+
trustedPartyId: receiver.trustedPartyId,
|
|
180
|
+
trustedPartySharedKeyId: receiver.trustedPartySharedKeyId,
|
|
181
|
+
plainSharedCipherData: { message: receiver.message, event },
|
|
182
|
+
};
|
|
183
|
+
receiverId = yield this.scenarioReceiverService.addReceiver(newReceiver);
|
|
184
|
+
}
|
|
185
|
+
const loadedReceiver = yield this.scenarioReceiverService.getReceiver(receiverId);
|
|
186
|
+
yield this.updateReceiverItems(scenarioId, assemblyKeyId, loadedReceiver, receiver.permissions);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
updateReceiverItems(scenarioId, assemblyKeyId, receiver, permissions) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
permissions = permissions || {};
|
|
192
|
+
permissions.categories = permissions.categories || [];
|
|
193
|
+
permissions.records = permissions.records || [];
|
|
194
|
+
yield Promise.all(permissions.categories
|
|
195
|
+
.filter((x) => !receiver.categories.some((y) => y.category.id === x.categoryId))
|
|
196
|
+
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
197
|
+
const params = {
|
|
198
|
+
scenarioId,
|
|
199
|
+
assemblyKeyId,
|
|
200
|
+
receiverId: receiver.id,
|
|
201
|
+
receiverKeyId: receiver.keyId,
|
|
202
|
+
accessRole: x.accessLevel,
|
|
203
|
+
categoryId: x.categoryId,
|
|
204
|
+
};
|
|
205
|
+
yield this.scenarioReceiverService.addReceiverCategory(params);
|
|
206
|
+
})));
|
|
207
|
+
yield Promise.all(permissions.records
|
|
208
|
+
.filter((x) => !receiver.records.some((y) => y.record.id === x.recordId))
|
|
209
|
+
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
210
|
+
const params = {
|
|
211
|
+
scenarioId,
|
|
212
|
+
assemblyKeyId,
|
|
213
|
+
receiverId: receiver.id,
|
|
214
|
+
receiverKeyId: receiver.keyId,
|
|
215
|
+
accessRole: x.accessLevel,
|
|
216
|
+
recordId: x.recordId,
|
|
217
|
+
};
|
|
218
|
+
yield this.scenarioReceiverService.addReceiverRecord(params);
|
|
219
|
+
})));
|
|
220
|
+
yield Promise.all(permissions.categories
|
|
221
|
+
.map((x) => ({
|
|
222
|
+
accessLevel: x.accessLevel,
|
|
223
|
+
category: receiver.categories.find((y) => y.category.id === x.categoryId),
|
|
224
|
+
}))
|
|
225
|
+
.filter((x) => x.category)
|
|
226
|
+
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
227
|
+
const params = {
|
|
228
|
+
id: x.category.id,
|
|
229
|
+
keyId: x.category.keyId,
|
|
230
|
+
accessRole: x.accessLevel,
|
|
231
|
+
};
|
|
232
|
+
yield this.scenarioReceiverService.updateReceiverItem(params);
|
|
233
|
+
})));
|
|
234
|
+
yield Promise.all(permissions.records
|
|
235
|
+
.map((x) => ({
|
|
236
|
+
accessLevel: x.accessLevel,
|
|
237
|
+
record: receiver.records.find((y) => y.record.id === x.recordId),
|
|
238
|
+
}))
|
|
239
|
+
.filter((x) => x.record)
|
|
240
|
+
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
const params = {
|
|
242
|
+
id: x.record.id,
|
|
243
|
+
keyId: x.record.keyId,
|
|
244
|
+
accessRole: x.accessLevel,
|
|
245
|
+
};
|
|
246
|
+
yield this.scenarioReceiverService.updateReceiverItem(params);
|
|
247
|
+
})));
|
|
248
|
+
yield Promise.all(receiver.categories
|
|
249
|
+
.filter((x) => !permissions.categories.some((y) => y.categoryId === x.category.id))
|
|
250
|
+
.map((x) => this.scenarioReceiverService.deleteReceiverItem(x.id)));
|
|
251
|
+
yield Promise.all(receiver.records
|
|
252
|
+
.filter((x) => !permissions.records.some((y) => y.recordId === x.record.id))
|
|
253
|
+
.map((x) => this.scenarioReceiverService.deleteReceiverItem(x.id)));
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
ScenarioSetupService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScenarioSetupService_Factory() { return new ScenarioSetupService(i0.ɵɵinject(i1.ScenarioService), i0.ɵɵinject(i2.ScenarioClaimantService), i0.ɵɵinject(i3.ScenarioApproverService), i0.ɵɵinject(i4.ScenarioReceiverService)); }, token: ScenarioSetupService, providedIn: "root" });
|
|
258
|
+
ScenarioSetupService.decorators = [
|
|
259
|
+
{ type: Injectable, args: [{
|
|
260
|
+
providedIn: 'root',
|
|
261
|
+
},] }
|
|
262
|
+
];
|
|
263
|
+
ScenarioSetupService.ctorParameters = () => [
|
|
264
|
+
{ type: ScenarioService },
|
|
265
|
+
{ type: ScenarioClaimantService },
|
|
266
|
+
{ type: ScenarioApproverService },
|
|
267
|
+
{ type: ScenarioReceiverService }
|
|
268
|
+
];
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tc2V0dXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWN0cy9uZXdyZXBvL2tjLWNsaWVudC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zY2VuYXJpby9zY2VuYXJpby1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBS2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBV3JELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxlQUFnQyxFQUNoQyx1QkFBZ0QsRUFDaEQsdUJBQWdELEVBQ2hELHVCQUFnRDtRQUhoRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFDdkQsQ0FBQztJQUVTLGFBQWEsQ0FDeEIsV0FBd0I7O1lBRXhCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7Z0JBQzNELHNCQUFzQixFQUFFO29CQUN0QixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7b0JBQ3hCLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTtpQkFDdkI7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJO2dCQUNGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFF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QyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUN0RTtpQkFDQSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDckUsQ0FBQztZQUNGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixRQUFRLENBQUMsT0FBTztpQkFDYixNQUFNLENBQ0wsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FDcEU7aUJBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3JFLENBQUM7UUFDSixDQUFDO0tBQUE7Ozs7WUF6VkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFWUSxlQUFlO1lBTmYsdUJBQXVCO1lBRHZCLHVCQUF1QjtZQUV2Qix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMckV4Y2VwdGlvbiB9IGZyb20gJy4vLi4vX2NvbW1vbi9leGNlcHRpb25zJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcmVwYXJlZFBlcm1pc3Npb25zIH0gZnJvbSAnLi8uLi9hcGkva2V5LWV4Y2hhbmdlLnR5cGVzJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVTY2VuYXJpb0FwcHJvdmFsR3JvdXBzLFxyXG4gIFVwZGF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMsXHJcbn0gZnJvbSAnLi9hcHByb3ZhbHMvc2NlbmFyaW8tYXBwcm92YWwudHlwZXMnO1xyXG5pbXBvcnQgeyBTY2VuYXJpb0FwcHJvdmVyU2VydmljZSB9IGZyb20gJy4vYXBwcm92YWxzL3NjZW5hcmlvLWFwcHJvdmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY2VuYXJpb0NsYWltYW50U2VydmljZSB9IGZyb20gJy4vY2xhaW1hbnRzL3NjZW5hcmlvLWNsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY2VuYXJpb1JlY2VpdmVyU2VydmljZSB9IGZyb20gJy4vcmVjZWl2ZXJzL3NjZW5hcmlvLXJlY2VpdmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFJlY2VpdmVyLFxyXG4gIFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQsXHJcbn0gZnJvbSAnLi9yZWNlaXZlcnMvc2NlbmFyaW8tcmVjZWl2ZXIudHlwZXMnO1xyXG5pbXBvcnQgeyBTY2VuYXJpb1NlcnZpY2UgfSBmcm9tICcuL3NjZW5hcmlvLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIE5ld1NjZW5hcmlvLFxyXG4gIFVwZGF0ZWRTY2VuYXJpb0NsYWltYW50LFxyXG4gIFVwZGF0ZWRTY2VuYXJpb1JlY2VpdmVyLFxyXG4gIFVwZGF0ZVNjZW5hcmlvLFxyXG59IGZyb20gJy4vc2NlbmFyaW8udHlwZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjZW5hcmlvU2V0dXBTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2NlbmFyaW9TZXJ2aWNlOiBTY2VuYXJpb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNjZW5hcmlvQ2xhaW1hbnRTZXJ2aWNlOiBTY2VuYXJpb0NsYWltYW50U2VydmljZSxcclxuICAgIHByaXZhdGUgc2NlbmFyaW9BcHByb3ZlclNlcnZpY2U6IFNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzY2VuYXJpb1JlY2VpdmVyU2VydmljZTogU2NlbmFyaW9SZWNlaXZlclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXR1cFNjZW5hcmlvKFxyXG4gICAgbmV3U2NlbmFyaW86IE5ld1NjZW5hcmlvXHJcbiAgKTogUHJvbWlzZTx7IHNjZW5hcmlvSWQ6IHN0cmluZzsgZXJyb3I/OiBMckV4Y2VwdGlvbiB9PiB7XHJcbiAgICBjb25zdCBzY2VuYXJpb0lkID0gYXdhaXQgdGhpcy5zY2VuYXJpb1NlcnZpY2UuY3JlYXRlU2NlbmFyaW8oe1xyXG4gICAgICBwbGFpblN1YmplY3RDaXBoZXJEYXRhOiB7XHJcbiAgICAgICAgZXZlbnQ6IG5ld1NjZW5hcmlvLmV2ZW50LFxyXG4gICAgICAgIG5hbWU6IG5ld1NjZW5hcmlvLm5hbWUsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICBuZXdTY2VuYXJpby5jbGFpbWFudHMubWFwKCh4KSA9PlxyXG4gICAgICAgICAgdGhpcy51cGRhdGVDbGFpbWFudChzY2VuYXJpb0lkLCBuZXdTY2VuYXJpby5ldmVudCwgeClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBzY2VuYXJpbyA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvKHNjZW5hcmlvSWQpO1xyXG4gICAgICBpZiAobmV3U2NlbmFyaW8uYXBwcm92YWxHcm91cHMubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwcm92YWxHcm91cHM6IENyZWF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMgPSB7XHJcbiAgICAgICAgICBzY2VuYXJpb0lkLFxyXG4gICAgICAgICAga2V5SWQ6IHNjZW5hcmlvLmtleUlkLFxyXG4gICAgICAgICAgZXZlbnQ6IHNjZW5hcmlvLmV2ZW50LFxyXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBmYWxzZSxcclxuICAgICAgICAgIHF1b3J1bTogMSxcclxuICAgICAgICAgIHBsYWluQXNzZW1ibHlDaXBoZXJEYXRhOiBudWxsLFxyXG5cclxuICAgICAgICAgIGFwcHJvdmFsR3JvdXBzOiBuZXdTY2VuYXJpby5hcHByb3ZhbEdyb3Vwcy5tYXAoKHgpID0+ICh7XHJcbiAgICAgICAgICAgIHF1b3J1bTogeC5xdW9ydW0sXHJcbiAgICAgICAgICAgIHNpbmdsZVJlamVjdDogeC5zaW5nbGVSZWplY3QsXHJcbiAgICAgICAgICAgIHBsYWluU3ViQXNzZW1ibHlDaXBoZXJEYXRhOiB7IG5hbWU6IHgubmFtZSB9LFxyXG4gICAgICAgICAgICBhcHByb3ZlcnM6IHguYXBwcm92ZXJzLm1hcCgoeSkgPT4gKHtcclxuICAgICAgICAgICAgICB0cnVzdGVkUGFydHlJZDogeS50cnVzdGVkUGFydHlJZCxcclxuICAgICAgICAgICAgICB0cnVzdGVkUGFydHlTaGFyZWRLZXlJZDogeS50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcclxuICAgICAgICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGE6IHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHkubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIGV2ZW50OiBuZXdTY2VuYXJpby5ldmVudCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICB9KSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBzY2VuYXJpby5hc3NlbWJseUtleUlkID0gYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5jcmVhdGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXHJcbiAgICAgICAgICBhcHByb3ZhbEdyb3Vwc1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgbmV3U2NlbmFyaW8ucmVjZWl2ZXJzLm1hcCgoeCkgPT5cclxuICAgICAgICAgIHRoaXMudXBkYXRlUmVjZWl2ZXIoXHJcbiAgICAgICAgICAgIHNjZW5hcmlvSWQsXHJcbiAgICAgICAgICAgIHNjZW5hcmlvLmFzc2VtYmx5S2V5SWQsXHJcbiAgICAgICAgICAgIG5ld1NjZW5hcmlvLmV2ZW50LFxyXG4gICAgICAgICAgICB4XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4geyBzY2VuYXJpb0lkLCBlcnJvcjogZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgc2NlbmFyaW9JZCB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVNjZW5hcmlvKHVwZGF0ZVNjZW5hcmlvOiBVcGRhdGVTY2VuYXJpbyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBzY2VuYXJpb0lkOiB1cGRhdGVTY2VuYXJpby5zY2VuYXJpb0lkLFxyXG4gICAgICBrZXlJZDogdXBkYXRlU2NlbmFyaW8ua2V5SWQsXHJcbiAgICAgIHBsYWluU3ViamVjdENpcGhlckRhdGE6IHtcclxuICAgICAgICBldmVudDogdXBkYXRlU2NlbmFyaW8uZXZlbnQsXHJcbiAgICAgICAgbmFtZTogdXBkYXRlU2NlbmFyaW8ubmFtZSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBhd2FpdCB0aGlzLnNjZW5hcmlvU2VydmljZS51cGRhdGVTY2VuYXJpbyhwYXJhbXMpO1xyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICB1cGRhdGVTY2VuYXJpby5jbGFpbWFudHMubWFwKCh4KSA9PlxyXG4gICAgICAgIHRoaXMudXBkYXRlQ2xhaW1hbnQodXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCwgdXBkYXRlU2NlbmFyaW8uZXZlbnQsIHgpXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgdXBkYXRlU2NlbmFyaW8uZGVsZXRlZENsYWltYW50SWRzLm1hcCgoeCkgPT5cclxuICAgICAgICB0aGlzLnNjZW5hcmlvQ2xhaW1hbnRTZXJ2aWNlLmRlbGV0ZUNsYWltYW50KHgpXHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgYXNzZW1ibHlLZXlJZCA9IGF3YWl0IHRoaXMudXBkYXRlQXBwcm92YWxHcm91cHModXBkYXRlU2NlbmFyaW8pO1xyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICB1cGRhdGVTY2VuYXJpby5yZWNlaXZlcnMubWFwKCh4KSA9PlxyXG4gICAgICAgIHRoaXMudXBkYXRlUmVjZWl2ZXIoXHJcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5zY2VuYXJpb0lkLFxyXG4gICAgICAgICAgYXNzZW1ibHlLZXlJZCxcclxuICAgICAgICAgIHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxyXG4gICAgICAgICAgeFxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICB1cGRhdGVTY2VuYXJpby5kZWxldGVkUmVjZWl2ZXJJZHMubWFwKCh4KSA9PlxyXG4gICAgICAgIHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuZGVsZXRlUmVjZWl2ZXIoeClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ2xhaW1hbnQoXHJcbiAgICBzY2VuYXJpb0lkOiBzdHJpbmcsXHJcbiAgICBldmVudDogc3RyaW5nLFxyXG4gICAgY2xhaW1hbnQ6IFVwZGF0ZWRTY2VuYXJpb0NsYWltYW50XHJcbiAgKSB7XHJcbiAgICBpZiAoY2xhaW1hbnQuY2xhaW1hbnRJZCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvQ2xhaW1hbnRTZXJ2aWNlLnVwZGF0ZUNsYWltYW50KHtcclxuICAgICAgICBpZDogY2xhaW1hbnQuY2xhaW1hbnRJZCxcclxuICAgICAgICBrZXlJZDogY2xhaW1hbnQua2V5SWQsXHJcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7IG1lc3NhZ2U6IGNsYWltYW50Lm1lc3NhZ2UsIGV2ZW50IH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb0NsYWltYW50U2VydmljZS5hZGRDbGFpbWFudCh7XHJcbiAgICAgICAgc2NlbmFyaW9JZCxcclxuICAgICAgICB0cnVzdGVkUGFydHlJZDogY2xhaW1hbnQudHJ1c3RlZFBhcnR5SWQsXHJcbiAgICAgICAgdHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQ6IGNsYWltYW50LnRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkLFxyXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogeyBtZXNzYWdlOiBjbGFpbWFudC5tZXNzYWdlLCBldmVudCB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQXBwcm92YWxHcm91cHMoXHJcbiAgICB1cGRhdGVTY2VuYXJpbzogVXBkYXRlU2NlbmFyaW9cclxuICApOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgaWYgKHVwZGF0ZVNjZW5hcmlvLmFzc2VtYmx5S2V5SWQpIHtcclxuICAgICAgaWYgKHVwZGF0ZVNjZW5hcmlvLmFwcHJvdmFsR3JvdXBzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGFwcHJvdmFsR3JvdXBzOiBVcGRhdGVTY2VuYXJpb0FwcHJvdmFsR3JvdXBzID0ge1xyXG4gICAgICAgICAgc2NlbmFyaW9JZDogdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCxcclxuICAgICAgICAgIGFzc2VtYmx5S2V5SWQ6IHVwZGF0ZVNjZW5hcmlvLmFzc2VtYmx5S2V5SWQsXHJcblxyXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBmYWxzZSxcclxuICAgICAgICAgIHF1b3J1bTogMSxcclxuXHJcbiAgICAgICAgICBhcHByb3ZhbEdyb3VwczogdXBkYXRlU2NlbmFyaW8uYXBwcm92YWxHcm91cHMubWFwKCh4KSA9PiAoe1xyXG4gICAgICAgICAgICBzdWJBc3NlbWJseUlkOiB4LnN1YkFzc2VtYmx5SWQsXHJcbiAgICAgICAgICAgIHF1b3J1bTogeC5xdW9ydW0sXHJcbiAgICAgICAgICAgIHNpbmdsZVJlamVjdDogeC5zaW5nbGVSZWplY3QsXHJcbiAgICAgICAgICAgIHBsYWluU3ViQXNzZW1ibHlDaXBoZXJEYXRhOiB7IG5hbWU6IHgubmFtZSB9LFxyXG4gICAgICAgICAgICBhcHByb3ZlcnM6IHguYXBwcm92ZXJzLm1hcCgoeSkgPT4gKHtcclxuICAgICAgICAgICAgICBhcHByb3ZlcklkOiB5LmFwcHJvdmVySWQsXHJcbiAgICAgICAgICAgICAga2V5SWQ6IHkua2V5SWQsXHJcbiAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHkudHJ1c3RlZFBhcnR5SWQsXHJcbiAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQ6IHkudHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQsXHJcbiAgICAgICAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB5Lm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBldmVudDogdXBkYXRlU2NlbmFyaW8uZXZlbnQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBkZWxldGVkQXBwcm92ZXJJZHM6IHguZGVsZXRlZEFwcHJvdmVySWRzLFxyXG4gICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgZGVsZXRlZEdyb3VwSWRzOiB1cGRhdGVTY2VuYXJpby5kZWxldGVkR3JvdXBJZHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlLnVwZGF0ZVNjZW5hcmlvQXBwcm92ZXJBc3NlbWJseShcclxuICAgICAgICAgIGFwcHJvdmFsR3JvdXBzXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdXBkYXRlU2NlbmFyaW8uYXNzZW1ibHlLZXlJZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB7IHJlY2VpdmVycyB9ID0gYXdhaXQgdGhpcy5zY2VuYXJpb1NlcnZpY2UuZ2V0U2NlbmFyaW8oXHJcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5zY2VuYXJpb0lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlLmRlbGV0ZVNjZW5hcmlvQXBwcm92ZXJBc3NlbWJseShcclxuICAgICAgICAgIHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXHJcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5ldmVudCxcclxuICAgICAgICAgIHJlY2VpdmVyc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdXBkYXRlIG9yIGRlbGV0ZVxyXG4gICAgfSBlbHNlIGlmICh1cGRhdGVTY2VuYXJpby5hcHByb3ZhbEdyb3Vwcy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgeyByZWNlaXZlcnMgfSA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvKFxyXG4gICAgICAgIHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IGFwcHJvdmFsR3JvdXBzOiBDcmVhdGVTY2VuYXJpb0FwcHJvdmFsR3JvdXBzID0ge1xyXG4gICAgICAgIHNjZW5hcmlvSWQ6IHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXHJcbiAgICAgICAga2V5SWQ6IHVwZGF0ZVNjZW5hcmlvLmtleUlkLFxyXG4gICAgICAgIGV2ZW50OiB1cGRhdGVTY2VuYXJpby5ldmVudCxcclxuICAgICAgICBzaW5nbGVSZWplY3Q6IGZhbHNlLFxyXG4gICAgICAgIHF1b3J1bTogMSxcclxuICAgICAgICBhcHByb3ZhbEdyb3VwczogdXBkYXRlU2NlbmFyaW8uYXBwcm92YWxHcm91cHMubWFwKCh4KSA9PiAoe1xyXG4gICAgICAgICAgcXVvcnVtOiB4LnF1b3J1bSxcclxuICAgICAgICAgIHNpbmdsZVJlamVjdDogeC5zaW5nbGVSZWplY3QsXHJcbiAgICAgICAgICBwbGFpblN1YkFzc2VtYmx5Q2lwaGVyRGF0YTogeyBuYW1lOiB4Lm5hbWUgfSxcclxuICAgICAgICAgIGFwcHJvdmVyczogeC5hcHByb3ZlcnMubWFwKCh5KSA9PiAoe1xyXG4gICAgICAgICAgICB0cnVzdGVkUGFydHlJZDogeS50cnVzdGVkUGFydHlJZCxcclxuICAgICAgICAgICAgdHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQ6IHkudHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQsXHJcbiAgICAgICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YToge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHkubWVzc2FnZSxcclxuICAgICAgICAgICAgICBldmVudDogdXBkYXRlU2NlbmFyaW8uZXZlbnQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KSksXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICAgIHJlY2VpdmVycyxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2NlbmFyaW9BcHByb3ZlclNlcnZpY2UuY3JlYXRlU2NlbmFyaW9BcHByb3ZlckFzc2VtYmx5KFxyXG4gICAgICAgIGFwcHJvdmFsR3JvdXBzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUmVjZWl2ZXIoXHJcbiAgICBzY2VuYXJpb0lkOiBzdHJpbmcsXHJcbiAgICBhc3NlbWJseUtleUlkOiBzdHJpbmcsXHJcbiAgICBldmVudDogc3RyaW5nLFxyXG4gICAgcmVjZWl2ZXI6IFVwZGF0ZWRTY2VuYXJpb1JlY2VpdmVyXHJcbiAgKSB7XHJcbiAgICBsZXQgcmVjZWl2ZXJJZCA9IHJlY2VpdmVyLnJlY2VpdmVySWQ7XHJcblxyXG4gICAgLy8gQ3VycmVudGx5IGRlbGV0aW5nIGFsbCByZWNlaXZlcnMgYmVsb3cgYXNzZW1ibHkgbG9naWMuXHJcbiAgICBpZiAocmVjZWl2ZXJJZCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvUmVjZWl2ZXJTZXJ2aWNlLnVwZGF0ZVJlY2VpdmVyKHtcclxuICAgICAgICBpZDogcmVjZWl2ZXIucmVjZWl2ZXJJZCxcclxuICAgICAgICBrZXlJZDogcmVjZWl2ZXIua2V5SWQsXHJcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7IG1lc3NhZ2U6IHJlY2VpdmVyLm1lc3NhZ2UsIGV2ZW50IH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbmV3UmVjZWl2ZXIgPSB7XHJcbiAgICAgICAgc2NlbmFyaW9JZCxcclxuICAgICAgICB0cnVzdGVkUGFydHlJZDogcmVjZWl2ZXIudHJ1c3RlZFBhcnR5SWQsXHJcbiAgICAgICAgdHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQ6IHJlY2VpdmVyLnRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkLFxyXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogeyBtZXNzYWdlOiByZWNlaXZlci5tZXNzYWdlLCBldmVudCB9LFxyXG4gICAgICB9O1xyXG4gICAgICByZWNlaXZlcklkID0gYXdhaXQgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5hZGRSZWNlaXZlcihuZXdSZWNlaXZlcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsb2FkZWRSZWNlaXZlciA9IGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuZ2V0UmVjZWl2ZXIoXHJcbiAgICAgIHJlY2VpdmVySWRcclxuICAgICk7XHJcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJlY2VpdmVySXRlbXMoXHJcbiAgICAgIHNjZW5hcmlvSWQsXHJcbiAgICAgIGFzc2VtYmx5S2V5SWQsXHJcbiAgICAgIGxvYWRlZFJlY2VpdmVyLFxyXG4gICAgICByZWNlaXZlci5wZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUmVjZWl2ZXJJdGVtcyhcclxuICAgIHNjZW5hcmlvSWQ6IHN0cmluZyxcclxuICAgIGFzc2VtYmx5S2V5SWQ6IHN0cmluZyxcclxuICAgIHJlY2VpdmVyOiBSZWNlaXZlcixcclxuICAgIHBlcm1pc3Npb25zOiBQcmVwYXJlZFBlcm1pc3Npb25zXHJcbiAgKSB7XHJcbiAgICBwZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zIHx8IHt9O1xyXG4gICAgcGVybWlzc2lvbnMuY2F0ZWdvcmllcyA9IHBlcm1pc3Npb25zLmNhdGVnb3JpZXMgfHwgW107XHJcbiAgICBwZXJtaXNzaW9ucy5yZWNvcmRzID0gcGVybWlzc2lvbnMucmVjb3JkcyB8fCBbXTtcclxuXHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgcGVybWlzc2lvbnMuY2F0ZWdvcmllc1xyXG4gICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAoeCkgPT5cclxuICAgICAgICAgICAgIXJlY2VpdmVyLmNhdGVnb3JpZXMuc29tZSgoeSkgPT4geS5jYXRlZ29yeS5pZCA9PT0geC5jYXRlZ29yeUlkKVxyXG4gICAgICAgIClcclxuICAgICAgICAubWFwKGFzeW5jICh4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHNjZW5hcmlvSWQsXHJcbiAgICAgICAgICAgIGFzc2VtYmx5S2V5SWQsXHJcbiAgICAgICAgICAgIHJlY2VpdmVySWQ6IHJlY2VpdmVyLmlkLFxyXG4gICAgICAgICAgICByZWNlaXZlcktleUlkOiByZWNlaXZlci5rZXlJZCxcclxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcclxuICAgICAgICAgICAgY2F0ZWdvcnlJZDogeC5jYXRlZ29yeUlkLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuYWRkUmVjZWl2ZXJDYXRlZ29yeShwYXJhbXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIHBlcm1pc3Npb25zLnJlY29yZHNcclxuICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgKHgpID0+ICFyZWNlaXZlci5yZWNvcmRzLnNvbWUoKHkpID0+IHkucmVjb3JkLmlkID09PSB4LnJlY29yZElkKVxyXG4gICAgICAgIClcclxuICAgICAgICAubWFwKGFzeW5jICh4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHNjZW5hcmlvSWQsXHJcbiAgICAgICAgICAgIGFzc2VtYmx5S2V5SWQsXHJcbiAgICAgICAgICAgIHJlY2VpdmVySWQ6IHJlY2VpdmVyLmlkLFxyXG4gICAgICAgICAgICByZWNlaXZlcktleUlkOiByZWNlaXZlci5rZXlJZCxcclxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcclxuICAgICAgICAgICAgcmVjb3JkSWQ6IHgucmVjb3JkSWQsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5hZGRSZWNlaXZlclJlY29yZChwYXJhbXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICBwZXJtaXNzaW9ucy5jYXRlZ29yaWVzXHJcbiAgICAgICAgLm1hcCgoeCkgPT4gKHtcclxuICAgICAgICAgIGFjY2Vzc0xldmVsOiB4LmFjY2Vzc0xldmVsLFxyXG4gICAgICAgICAgY2F0ZWdvcnk6IHJlY2VpdmVyLmNhdGVnb3JpZXMuZmluZChcclxuICAgICAgICAgICAgKHkpID0+IHkuY2F0ZWdvcnkuaWQgPT09IHguY2F0ZWdvcnlJZFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9KSlcclxuICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmNhdGVnb3J5KVxyXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHBhcmFtczogVXBkYXRlU2NlbmFyaW9SZWNlaXZlckl0ZW1JbnB1dCA9IHtcclxuICAgICAgICAgICAgaWQ6IHguY2F0ZWdvcnkuaWQsXHJcbiAgICAgICAgICAgIGtleUlkOiB4LmNhdGVnb3J5LmtleUlkLFxyXG4gICAgICAgICAgICBhY2Nlc3NSb2xlOiB4LmFjY2Vzc0xldmVsLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UudXBkYXRlUmVjZWl2ZXJJdGVtKHBhcmFtcyk7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgcGVybWlzc2lvbnMucmVjb3Jkc1xyXG4gICAgICAgIC5tYXAoKHgpID0+ICh7XHJcbiAgICAgICAgICBhY2Nlc3NMZXZlbDogeC5hY2Nlc3NMZXZlbCxcclxuICAgICAgICAgIHJlY29yZDogcmVjZWl2ZXIucmVjb3Jkcy5maW5kKCh5KSA9PiB5LnJlY29yZC5pZCA9PT0geC5yZWNvcmRJZCksXHJcbiAgICAgICAgfSkpXHJcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5yZWNvcmQpXHJcbiAgICAgICAgLm1hcChhc3luYyAoeCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcGFyYW1zOiBVcGRhdGVTY2VuYXJpb1JlY2VpdmVySXRlbUlucHV0ID0ge1xyXG4gICAgICAgICAgICBpZDogeC5yZWNvcmQuaWQsXHJcbiAgICAgICAgICAgIGtleUlkOiB4LnJlY29yZC5rZXlJZCxcclxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvUmVjZWl2ZXJTZXJ2aWNlLnVwZGF0ZVJlY2VpdmVySXRlbShwYXJhbXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICByZWNlaXZlci5jYXRlZ29yaWVzXHJcbiAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PlxyXG4gICAgICAgICAgICAhcGVybWlzc2lvbnMuY2F0ZWdvcmllcy5zb21lKCh5KSA9PiB5LmNhdGVnb3J5SWQgPT09IHguY2F0ZWdvcnkuaWQpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5tYXAoKHgpID0+IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuZGVsZXRlUmVjZWl2ZXJJdGVtKHguaWQpKVxyXG4gICAgKTtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICByZWNlaXZlci5yZWNvcmRzXHJcbiAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiAhcGVybWlzc2lvbnMucmVjb3Jkcy5zb21lKCh5KSA9PiB5LnJlY29yZElkID09PSB4LnJlY29yZC5pZClcclxuICAgICAgICApXHJcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlckl0ZW0oeC5pZCkpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|