@serve.zone/interfaces 25.1.0 → 25.2.0
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/changelog.md +19 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/secret.js +11 -4
- package/dist_ts/platform/index.d.ts +3 -1
- package/dist_ts/platform/index.js +4 -2
- package/dist_ts/platform/objectstorageretention.d.ts +63 -0
- package/dist_ts/platform/objectstorageretention.js +255 -0
- package/dist_ts/platform/types.d.ts +3 -0
- package/dist_ts/plugins.runtime.d.ts +2 -0
- package/dist_ts/plugins.runtime.js +4 -0
- package/dist_ts/requests/config.d.ts +3 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +394 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +35 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +315 -0
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +1378 -0
- package/dist_ts/runtime.corestore.d.ts +204 -0
- package/dist_ts/runtime.corestore.js +620 -0
- package/dist_ts/runtime.d.ts +2 -0
- package/dist_ts/runtime.js +3 -1
- package/package.json +2 -2
- package/readme.md +37 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/secret.ts +12 -4
- package/ts/platform/index.ts +3 -0
- package/ts/platform/objectstorageretention.ts +372 -0
- package/ts/platform/types.ts +3 -0
- package/ts/plugins.runtime.ts +4 -0
- package/ts/requests/config.ts +3 -0
- package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +421 -0
- package/ts/runtime.cloudlylegacydeploymentsettlement.ts +2884 -0
- package/ts/runtime.corestore.ts +909 -0
- package/ts/runtime.ts +2 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { deepFreezeValue } from './private/canonicaljson.js';
|
|
2
|
+
const sha1 = '1111111111111111111111111111111111111111111111111111111111111111';
|
|
3
|
+
const sha2 = '2222222222222222222222222222222222222222222222222222222222222222';
|
|
4
|
+
const sha3 = '3333333333333333333333333333333333333333333333333333333333333333';
|
|
5
|
+
const sha4 = '4444444444444444444444444444444444444444444444444444444444444444';
|
|
6
|
+
const sha5 = '5555555555555555555555555555555555555555555555555555555555555555';
|
|
7
|
+
const sha6 = '6666666666666666666666666666666666666666666666666666666666666666';
|
|
8
|
+
const sha7 = '7777777777777777777777777777777777777777777777777777777777777777';
|
|
9
|
+
const sha8 = '8888888888888888888888888888888888888888888888888888888888888888';
|
|
10
|
+
const sha9 = '9999999999999999999999999999999999999999999999999999999999999999';
|
|
11
|
+
const shaa = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
|
|
12
|
+
const shab = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';
|
|
13
|
+
const stateC = 'hmac-sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc';
|
|
14
|
+
const stateD = 'hmac-sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd';
|
|
15
|
+
const authorityMetadata = {
|
|
16
|
+
schemaVersion: 1,
|
|
17
|
+
operationId: 'settle-operation-1',
|
|
18
|
+
authorityId: 'authority-1',
|
|
19
|
+
keyId: 'settlement-key-1',
|
|
20
|
+
keyVersion: 1,
|
|
21
|
+
settlementId: 'settlement-1',
|
|
22
|
+
issuedAt: 1_700_000_000_000,
|
|
23
|
+
expiresAt: 1_700_003_600_000,
|
|
24
|
+
maintenanceImageDigest: `sha256:${sha1}`,
|
|
25
|
+
sourceImageDigest: `sha256:${sha2}`,
|
|
26
|
+
targetImageDigest: `sha256:${sha3}`,
|
|
27
|
+
targetVersion: '18.2.0',
|
|
28
|
+
targetManifestSha256: sha4,
|
|
29
|
+
targetConfigSha256: sha5,
|
|
30
|
+
backupId: 'backup-1',
|
|
31
|
+
backupSnapshotIdSha256: sha6,
|
|
32
|
+
backupProofSha256: sha7,
|
|
33
|
+
runId: 'run-1',
|
|
34
|
+
rehearsalId: 'rehearsal-1',
|
|
35
|
+
scratchServiceId: 'service-cloudly-scratch',
|
|
36
|
+
allocationId: 'allocation-1',
|
|
37
|
+
allocationGeneration: 2,
|
|
38
|
+
allocationBindingSha256: sha8,
|
|
39
|
+
allocationReceiptSha256: sha9,
|
|
40
|
+
sourceDataSha256: shaa,
|
|
41
|
+
restoredDataSha256: shaa,
|
|
42
|
+
digestProofSha256: shab,
|
|
43
|
+
};
|
|
44
|
+
const authorityReference = {
|
|
45
|
+
operationId: authorityMetadata.operationId,
|
|
46
|
+
authorityId: authorityMetadata.authorityId,
|
|
47
|
+
keyId: authorityMetadata.keyId,
|
|
48
|
+
keyVersion: authorityMetadata.keyVersion,
|
|
49
|
+
authorityMetadataSha256: 'da410b15675f0387a5266aecba70984c944cd45a9183e275438b299b42e42659',
|
|
50
|
+
};
|
|
51
|
+
const rehearsalBinding = {
|
|
52
|
+
schemaVersion: 1,
|
|
53
|
+
kind: 'cloudly-legacy-deployment-settlement-rehearsal-binding',
|
|
54
|
+
settlementId: 'settlement-1',
|
|
55
|
+
runId: 'run-1',
|
|
56
|
+
rehearsalId: 'rehearsal-1',
|
|
57
|
+
scratchServiceId: 'service-cloudly-scratch',
|
|
58
|
+
allocationId: 'allocation-1',
|
|
59
|
+
allocationGeneration: 2,
|
|
60
|
+
allocationBindingSha256: sha8,
|
|
61
|
+
allocationReceiptSha256: sha9,
|
|
62
|
+
backupId: 'backup-1',
|
|
63
|
+
backupSnapshotIdSha256: sha6,
|
|
64
|
+
backupProofSha256: sha7,
|
|
65
|
+
sourceDataSha256: shaa,
|
|
66
|
+
restoredDataSha256: shaa,
|
|
67
|
+
digestProofSha256: shab,
|
|
68
|
+
targetImageDigest: `sha256:${sha3}`,
|
|
69
|
+
targetVersion: '18.2.0',
|
|
70
|
+
targetManifestSha256: sha4,
|
|
71
|
+
targetConfigSha256: sha5,
|
|
72
|
+
};
|
|
73
|
+
const classificationCounts = {
|
|
74
|
+
'image-recorded-not-current': 1,
|
|
75
|
+
'image-recorded-current-failed': 0,
|
|
76
|
+
'rolling-out-current-failed': 0,
|
|
77
|
+
'rolling-out-superseded': 0,
|
|
78
|
+
};
|
|
79
|
+
const counts = {
|
|
80
|
+
operationCount: 1,
|
|
81
|
+
routeClaimsStabilized: 1,
|
|
82
|
+
routeClaimsRemoved: 0,
|
|
83
|
+
resourceClaimsRemoved: 1,
|
|
84
|
+
};
|
|
85
|
+
const plan = {
|
|
86
|
+
schemaVersion: 1,
|
|
87
|
+
kind: 'cloudly-legacy-deployment-settlement-plan',
|
|
88
|
+
authority: authorityReference,
|
|
89
|
+
settlementId: 'settlement-1',
|
|
90
|
+
effectiveAt: 1_700_000_100_000,
|
|
91
|
+
sourceStateHmac: stateC,
|
|
92
|
+
finalStateHmac: stateD,
|
|
93
|
+
sourceCensus: {
|
|
94
|
+
operations: 3,
|
|
95
|
+
services: 2,
|
|
96
|
+
images: 2,
|
|
97
|
+
releases: 2,
|
|
98
|
+
rolloutOperations: 1,
|
|
99
|
+
routeClaims: 1,
|
|
100
|
+
resourceClaims: 1,
|
|
101
|
+
},
|
|
102
|
+
entries: [{
|
|
103
|
+
operationId: 'deployment-operation-1',
|
|
104
|
+
serviceId: 'service-1',
|
|
105
|
+
sourceRevision: 4,
|
|
106
|
+
sourceState: 'image-recorded',
|
|
107
|
+
classification: 'image-recorded-not-current',
|
|
108
|
+
finalRevision: 7,
|
|
109
|
+
sourceDocumentHmac: 'hmac-sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
|
|
110
|
+
finalDocumentHmac: 'hmac-sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
|
|
111
|
+
routeClaimsStabilized: 1,
|
|
112
|
+
routeClaimsRemoved: 0,
|
|
113
|
+
resourceClaimsRemoved: 1,
|
|
114
|
+
}],
|
|
115
|
+
classificationCounts,
|
|
116
|
+
operationCount: 1,
|
|
117
|
+
};
|
|
118
|
+
const planSha256 = 'e2a1b29678884c9a8629ba3e5887f4c0115c3ef49aed533695b2aa871505037e';
|
|
119
|
+
const productionRequest = {
|
|
120
|
+
schemaVersion: 1,
|
|
121
|
+
kind: 'cloudly-legacy-deployment-settlement-production-request',
|
|
122
|
+
authority: authorityReference,
|
|
123
|
+
plan,
|
|
124
|
+
planSha256,
|
|
125
|
+
rehearsalBinding,
|
|
126
|
+
rehearsalBindingSha256: '98749a1fb41e2f802a0bbeeeb8925de50a15f52b8f2865d1c977c9fbcbcb8dfe',
|
|
127
|
+
requestedAt: 1_700_000_150_000,
|
|
128
|
+
};
|
|
129
|
+
const productionRequestSha256 = 'c91e4bd00f508eeaaf13587d842be76987845d3771d08fbcc30da97012cc9226';
|
|
130
|
+
const checkResult = {
|
|
131
|
+
schemaVersion: 1,
|
|
132
|
+
kind: 'cloudly-legacy-deployment-settlement-check-result',
|
|
133
|
+
status: 'ready',
|
|
134
|
+
requestSha256: productionRequestSha256,
|
|
135
|
+
planSha256,
|
|
136
|
+
settlementId: 'settlement-1',
|
|
137
|
+
sourceStateHmac: stateC,
|
|
138
|
+
finalStateHmac: stateD,
|
|
139
|
+
transactionSupported: true,
|
|
140
|
+
disposition: 'unapplied',
|
|
141
|
+
counts,
|
|
142
|
+
classificationCounts,
|
|
143
|
+
checkedAt: 1_700_000_200_000,
|
|
144
|
+
};
|
|
145
|
+
const applyResult = {
|
|
146
|
+
schemaVersion: 1,
|
|
147
|
+
kind: 'cloudly-legacy-deployment-settlement-apply-result',
|
|
148
|
+
status: 'completed',
|
|
149
|
+
requestSha256: productionRequestSha256,
|
|
150
|
+
planSha256,
|
|
151
|
+
settlementId: 'settlement-1',
|
|
152
|
+
sourceStateHmac: stateC,
|
|
153
|
+
finalStateHmac: stateD,
|
|
154
|
+
transactionSupported: true,
|
|
155
|
+
disposition: 'applied',
|
|
156
|
+
counts,
|
|
157
|
+
classificationCounts,
|
|
158
|
+
completedAt: 1_700_000_300_000,
|
|
159
|
+
};
|
|
160
|
+
const stableOutcome = {
|
|
161
|
+
schemaVersion: 1,
|
|
162
|
+
kind: 'cloudly-legacy-deployment-settlement-stable-outcome',
|
|
163
|
+
settlementId: 'settlement-1',
|
|
164
|
+
runId: 'run-1',
|
|
165
|
+
rehearsalBindingSha256: '98749a1fb41e2f802a0bbeeeb8925de50a15f52b8f2865d1c977c9fbcbcb8dfe',
|
|
166
|
+
effectiveAt: 1_700_000_100_000,
|
|
167
|
+
planSha256,
|
|
168
|
+
sourceStateHmac: stateC,
|
|
169
|
+
finalStateHmac: stateD,
|
|
170
|
+
settlements: [{
|
|
171
|
+
operationId: plan.entries[0].operationId,
|
|
172
|
+
finalRevision: plan.entries[0].finalRevision,
|
|
173
|
+
finalDocumentHmac: plan.entries[0].finalDocumentHmac,
|
|
174
|
+
}],
|
|
175
|
+
counts,
|
|
176
|
+
classificationCounts,
|
|
177
|
+
};
|
|
178
|
+
const scratchReceipt = {
|
|
179
|
+
schemaVersion: 1,
|
|
180
|
+
kind: 'cloudly-legacy-deployment-settlement-scratch-receipt',
|
|
181
|
+
authority: authorityReference,
|
|
182
|
+
requestSha256: productionRequestSha256,
|
|
183
|
+
stableOutcome,
|
|
184
|
+
stableOutcomeSha256: 'ee9f3c7a270ee9bd72778e86376c40407ab47b599552e15c60838f3ab100c818',
|
|
185
|
+
transactionCommitted: true,
|
|
186
|
+
disposition: 'applied',
|
|
187
|
+
completedAt: 1_700_000_400_000,
|
|
188
|
+
payloadSha256: '6d28df2da5250974d2b658199c82a2b8b9e1e243cf7db3b9f4eeb28c3d2ed688',
|
|
189
|
+
mac: 'uFe5SRsh-5Xp3mM1-2qPZ7ntkbtxNfEe0SVEd77wGrk',
|
|
190
|
+
};
|
|
191
|
+
const productionReceipt = {
|
|
192
|
+
schemaVersion: 1,
|
|
193
|
+
kind: 'cloudly-legacy-deployment-settlement-production-receipt',
|
|
194
|
+
authority: authorityReference,
|
|
195
|
+
requestSha256: productionRequestSha256,
|
|
196
|
+
scratchReceipt,
|
|
197
|
+
scratchReceiptSha256: '83a9b1ea56ed3042dee608c853dd896a692934cc4d816ed816f42af7a5902b11',
|
|
198
|
+
stableOutcome,
|
|
199
|
+
stableOutcomeSha256: scratchReceipt.stableOutcomeSha256,
|
|
200
|
+
transactionCommitted: true,
|
|
201
|
+
disposition: 'applied',
|
|
202
|
+
completedAt: 1_700_000_500_000,
|
|
203
|
+
payloadSha256: '62cd50e10baa7afacf4ac741b20d2757cee1ece7f2d11eef8066c0f92951958c',
|
|
204
|
+
mac: 'YuIpApcgi4olohdEtXKVzn-QoZTFNFZ06yaulxiy3JU',
|
|
205
|
+
};
|
|
206
|
+
const authenticatedRehearsalBinding = {
|
|
207
|
+
schemaVersion: 1,
|
|
208
|
+
kind: 'authenticated-cloudly-legacy-deployment-settlement-rehearsal-binding',
|
|
209
|
+
authority: authorityReference,
|
|
210
|
+
payload: rehearsalBinding,
|
|
211
|
+
payloadSha256: '98749a1fb41e2f802a0bbeeeb8925de50a15f52b8f2865d1c977c9fbcbcb8dfe',
|
|
212
|
+
mac: 'fKbvRIW0hawgxzkhqCfnVOUJZVNXA5oLyqbFvb_djsI',
|
|
213
|
+
};
|
|
214
|
+
const authenticatedPlan = {
|
|
215
|
+
schemaVersion: 1,
|
|
216
|
+
kind: 'authenticated-cloudly-legacy-deployment-settlement-plan',
|
|
217
|
+
authority: authorityReference,
|
|
218
|
+
payload: plan,
|
|
219
|
+
payloadSha256: planSha256,
|
|
220
|
+
mac: '6_EzTk_wtq89TA6SN3aGQR0FjF3Pm0D20ZNP505REcA',
|
|
221
|
+
};
|
|
222
|
+
const authenticatedProductionRequest = {
|
|
223
|
+
schemaVersion: 1,
|
|
224
|
+
kind: 'authenticated-cloudly-legacy-deployment-settlement-production-request',
|
|
225
|
+
authority: authorityReference,
|
|
226
|
+
payload: productionRequest,
|
|
227
|
+
payloadSha256: productionRequestSha256,
|
|
228
|
+
mac: 'pSqhl4omrgIR51jiVc3kuj396cSR-HQE1GOE6wrY--0',
|
|
229
|
+
};
|
|
230
|
+
const authenticatedCheckResult = {
|
|
231
|
+
schemaVersion: 1,
|
|
232
|
+
kind: 'authenticated-cloudly-legacy-deployment-settlement-check-result',
|
|
233
|
+
authority: authorityReference,
|
|
234
|
+
payload: checkResult,
|
|
235
|
+
payloadSha256: '0ef262687d1a67299072f4adc3115340119311df671f3222309e8007373739cf',
|
|
236
|
+
mac: 'XGMYSDcMy3eLrAI44h966_c5uHb1PW8mooPytgNvF0k',
|
|
237
|
+
};
|
|
238
|
+
const authenticatedApplyResult = {
|
|
239
|
+
schemaVersion: 1,
|
|
240
|
+
kind: 'authenticated-cloudly-legacy-deployment-settlement-apply-result',
|
|
241
|
+
authority: authorityReference,
|
|
242
|
+
payload: applyResult,
|
|
243
|
+
payloadSha256: 'e2c0c1e9f8cf7892b077580a41658c95e09b6a190266b5b8e75a46244f32fe6d',
|
|
244
|
+
mac: 'UvGiM-WXOlH5S3_eDMfobJfN9XggFf8L_34xYCBNo0k',
|
|
245
|
+
};
|
|
246
|
+
const authenticatedStableOutcome = {
|
|
247
|
+
schemaVersion: 1,
|
|
248
|
+
kind: 'authenticated-cloudly-legacy-deployment-settlement-stable-outcome',
|
|
249
|
+
authority: authorityReference,
|
|
250
|
+
payload: stableOutcome,
|
|
251
|
+
payloadSha256: 'ee9f3c7a270ee9bd72778e86376c40407ab47b599552e15c60838f3ab100c818',
|
|
252
|
+
mac: 'fFbr-sSnZLBzpv1FEAfVBsNVxAcFqyzClX8UcPeUD30',
|
|
253
|
+
};
|
|
254
|
+
export const cloudlyLegacyDeploymentSettlementGoldenVectors = deepFreezeValue({
|
|
255
|
+
version: 1,
|
|
256
|
+
authority: {
|
|
257
|
+
metadata: authorityMetadata,
|
|
258
|
+
reference: authorityReference,
|
|
259
|
+
metadataCanonicalSha256: 'da410b15675f0387a5266aecba70984c944cd45a9183e275438b299b42e42659',
|
|
260
|
+
aadSha256: 'c161a176588e3f247ac791e6d17c1b0b585fb43e74a5b993875a3dc571265313',
|
|
261
|
+
},
|
|
262
|
+
rehearsalBinding: {
|
|
263
|
+
input: rehearsalBinding,
|
|
264
|
+
canonicalSha256: '98749a1fb41e2f802a0bbeeeb8925de50a15f52b8f2865d1c977c9fbcbcb8dfe',
|
|
265
|
+
authenticatedInput: authenticatedRehearsalBinding,
|
|
266
|
+
authenticatedCanonicalSha256: '25e157858eb6e8fa0991f9c0912db93809fe7b9393653ab3da1ca0cd19767221',
|
|
267
|
+
hmac: authenticatedRehearsalBinding.mac,
|
|
268
|
+
},
|
|
269
|
+
plan: {
|
|
270
|
+
input: plan,
|
|
271
|
+
canonicalSha256: planSha256,
|
|
272
|
+
authenticatedInput: authenticatedPlan,
|
|
273
|
+
authenticatedCanonicalSha256: 'cb49cc46c65ff2ad5ca9441b714d3deab51ea91ab30ce8c703a16e1cbe326995',
|
|
274
|
+
hmac: authenticatedPlan.mac,
|
|
275
|
+
},
|
|
276
|
+
productionRequest: {
|
|
277
|
+
input: productionRequest,
|
|
278
|
+
canonicalSha256: productionRequestSha256,
|
|
279
|
+
authenticatedInput: authenticatedProductionRequest,
|
|
280
|
+
authenticatedCanonicalSha256: 'fe97347b4ccd6734fe84f6ef9bf3371acb8d3cb86f2264be73793120019fc892',
|
|
281
|
+
hmac: authenticatedProductionRequest.mac,
|
|
282
|
+
},
|
|
283
|
+
checkResult: {
|
|
284
|
+
input: checkResult,
|
|
285
|
+
canonicalSha256: '0ef262687d1a67299072f4adc3115340119311df671f3222309e8007373739cf',
|
|
286
|
+
authenticatedInput: authenticatedCheckResult,
|
|
287
|
+
authenticatedCanonicalSha256: 'b1a7a0b4db36113084ff984508ff409b4f2964b4974a2ed50ece41f2b525e62d',
|
|
288
|
+
hmac: authenticatedCheckResult.mac,
|
|
289
|
+
},
|
|
290
|
+
applyResult: {
|
|
291
|
+
input: applyResult,
|
|
292
|
+
canonicalSha256: 'e2c0c1e9f8cf7892b077580a41658c95e09b6a190266b5b8e75a46244f32fe6d',
|
|
293
|
+
authenticatedInput: authenticatedApplyResult,
|
|
294
|
+
authenticatedCanonicalSha256: 'dcf178cbcb59805517bee0f15ea95abec36bdae5508ead497c99acaccd2d314d',
|
|
295
|
+
hmac: authenticatedApplyResult.mac,
|
|
296
|
+
},
|
|
297
|
+
stableOutcome: {
|
|
298
|
+
input: stableOutcome,
|
|
299
|
+
canonicalSha256: 'ee9f3c7a270ee9bd72778e86376c40407ab47b599552e15c60838f3ab100c818',
|
|
300
|
+
authenticatedInput: authenticatedStableOutcome,
|
|
301
|
+
authenticatedCanonicalSha256: '985df2f46389cb4afa7b37c1f005a15869faae8ee6e010a249d47edf39819ee9',
|
|
302
|
+
hmac: authenticatedStableOutcome.mac,
|
|
303
|
+
},
|
|
304
|
+
scratchReceipt: {
|
|
305
|
+
input: scratchReceipt,
|
|
306
|
+
canonicalSha256: '83a9b1ea56ed3042dee608c853dd896a692934cc4d816ed816f42af7a5902b11',
|
|
307
|
+
hmac: scratchReceipt.mac,
|
|
308
|
+
},
|
|
309
|
+
productionReceipt: {
|
|
310
|
+
input: productionReceipt,
|
|
311
|
+
canonicalSha256: '9b4221bfd6335ad6f0095151f778933567a916e0691fc56c40893f2cb44f1a50',
|
|
312
|
+
hmac: productionReceipt.mac,
|
|
313
|
+
},
|
|
314
|
+
});
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jbG91ZGx5bGVnYWN5ZGVwbG95bWVudHNldHRsZW1lbnQuZ29sZGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcnVudGltZS5jbG91ZGx5bGVnYWN5ZGVwbG95bWVudHNldHRsZW1lbnQuZ29sZGVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXdFN0QsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7QUFDaEYsTUFBTSxNQUFNLEdBQUcsOEVBQXVGLENBQUM7QUFDdkcsTUFBTSxNQUFNLEdBQUcsOEVBQXVGLENBQUM7QUFFdkcsTUFBTSxpQkFBaUIsR0FBMEQ7SUFDL0UsYUFBYSxFQUFFLENBQUM7SUFDaEIsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxXQUFXLEVBQUUsYUFBYTtJQUMxQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLFVBQVUsRUFBRSxDQUFDO0lBQ2IsWUFBWSxFQUFFLGNBQWM7SUFDNUIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixTQUFTLEVBQUUsaUJBQWlCO0lBQzVCLHNCQUFzQixFQUFFLFVBQVUsSUFBSSxFQUFFO0lBQ3hDLGlCQUFp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
|