@the-ai-company/cbio-node-runtime 1.19.0 → 1.22.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/README.md +17 -17
- package/dist/runtime/bootstrap.d.ts +1 -0
- package/dist/runtime/bootstrap.js +8 -5
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/private-vault.d.ts +12 -0
- package/dist/runtime/private-vault.js +56 -45
- package/dist/runtime/private-vault.js.map +1 -1
- package/dist/runtime/vault-metadata.d.ts +4 -4
- package/dist/runtime/vault-metadata.js +26 -7
- package/dist/runtime/vault-metadata.js.map +1 -1
- package/dist/sealed/index.d.ts +7 -0
- package/dist/sealed/index.js +7 -0
- package/dist/sealed/index.js.map +1 -0
- package/dist/sealed/json-repo.d.ts +13 -0
- package/dist/sealed/json-repo.js +56 -0
- package/dist/sealed/json-repo.js.map +1 -0
- package/dist/vault-core/persistence.d.ts +17 -25
- package/dist/vault-core/persistence.js +63 -89
- package/dist/vault-core/persistence.js.map +1 -1
- package/docs/ARCHITECTURE.md +16 -0
- package/docs/REFERENCE.md +14 -10
- package/docs/es/README.md +4 -2
- package/docs/fr/README.md +5 -3
- package/docs/ja/README.md +4 -2
- package/docs/ko/README.md +4 -2
- package/docs/pt/README.md +5 -3
- package/docs/zh/README.md +4 -1
- package/package.json +1 -1
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import { sealBlob, unsealBlob } from "../sealed/
|
|
1
|
+
import { sealBlob, unsealBlob, SealedJsonRepository } from "../sealed/index.js";
|
|
2
2
|
import { DefaultPolicyEngine, SignatureAgentProofVerifier, SignatureOwnerProofVerifier, createDefaultVaultCoreDependencies, } from "./defaults.js";
|
|
3
3
|
import { createHash, randomBytes } from "node:crypto";
|
|
4
4
|
import { VaultCoreError } from "./errors.js";
|
|
5
|
-
export const DEFAULT_VAULT_KEY_CUSTODY_BLOB_KEY = "vault/custody/working-key.sealed";
|
|
6
|
-
function serializeJson(value) {
|
|
7
|
-
return Buffer.from(JSON.stringify(value, null, 2), "utf8");
|
|
8
|
-
}
|
|
9
|
-
async function readJson(storage, key, fallback) {
|
|
10
|
-
const payload = await storage.read(key);
|
|
11
|
-
if (!payload) {
|
|
12
|
-
return fallback;
|
|
13
|
-
}
|
|
14
|
-
return JSON.parse(payload.toString("utf8"));
|
|
15
|
-
}
|
|
5
|
+
export const DEFAULT_VAULT_KEY_CUSTODY_BLOB_KEY = "vault/sealed/custody/working-key.sealed";
|
|
16
6
|
async function withStorageLock(storage, key, task) {
|
|
17
7
|
if (storage.withLock) {
|
|
18
8
|
return storage.withLock(key, task);
|
|
@@ -58,30 +48,28 @@ export async function recoverVaultWorkingKey(storage, vaultRecoveryKey, storageK
|
|
|
58
48
|
return vaultWorkingKey;
|
|
59
49
|
}
|
|
60
50
|
export class FileSecretRepository {
|
|
61
|
-
_storage;
|
|
62
|
-
_key;
|
|
63
51
|
_lockKey;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
this._key = _key;
|
|
52
|
+
_repo;
|
|
53
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/secrets.sealed", _lockKey = "vault/sealed/locks/secrets") {
|
|
67
54
|
this._lockKey = _lockKey;
|
|
55
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
68
56
|
}
|
|
69
57
|
async loadState() {
|
|
70
|
-
return
|
|
58
|
+
return this._repo.read({ records: [] });
|
|
71
59
|
}
|
|
72
60
|
async save(record) {
|
|
73
|
-
await withStorageLock(this.
|
|
61
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
74
62
|
const state = await this.loadState();
|
|
75
63
|
const next = state.records.filter((candidate) => candidate.secretId.value !== record.secretId.value);
|
|
76
64
|
next.push(record);
|
|
77
|
-
await this.
|
|
65
|
+
await this._repo.write({ records: next }, "secrets_state");
|
|
78
66
|
});
|
|
79
67
|
}
|
|
80
68
|
async delete(secretId) {
|
|
81
|
-
await withStorageLock(this.
|
|
69
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
82
70
|
const state = await this.loadState();
|
|
83
71
|
const next = state.records.filter((candidate) => candidate.secretId.value !== secretId.value);
|
|
84
|
-
await this.
|
|
72
|
+
await this._repo.write({ records: next }, "secrets_state");
|
|
85
73
|
});
|
|
86
74
|
}
|
|
87
75
|
async getByAlias(alias) {
|
|
@@ -94,23 +82,21 @@ export class FileSecretRepository {
|
|
|
94
82
|
}
|
|
95
83
|
}
|
|
96
84
|
export class FileAgentIdentityRegistry {
|
|
97
|
-
_storage;
|
|
98
|
-
_key;
|
|
99
85
|
_lockKey;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this._key = _key;
|
|
86
|
+
_repo;
|
|
87
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/identities/agents.sealed", _lockKey = "vault/sealed/locks/agent-identities") {
|
|
103
88
|
this._lockKey = _lockKey;
|
|
89
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
104
90
|
}
|
|
105
91
|
async loadState() {
|
|
106
|
-
return
|
|
92
|
+
return this._repo.read({ identities: [] });
|
|
107
93
|
}
|
|
108
94
|
async register(identity) {
|
|
109
|
-
await withStorageLock(this.
|
|
95
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
110
96
|
const state = await this.loadState();
|
|
111
97
|
const next = state.identities.filter((candidate) => !(candidate.vaultId.value === identity.vaultId.value && candidate.agentId === identity.agentId));
|
|
112
98
|
next.push(identity);
|
|
113
|
-
await this.
|
|
99
|
+
await this._repo.write({ identities: next }, "agent_identity_state");
|
|
114
100
|
});
|
|
115
101
|
}
|
|
116
102
|
async get(vaultId, agentId) {
|
|
@@ -119,23 +105,21 @@ export class FileAgentIdentityRegistry {
|
|
|
119
105
|
}
|
|
120
106
|
}
|
|
121
107
|
export class FileOwnerIdentityRegistry {
|
|
122
|
-
_storage;
|
|
123
|
-
_key;
|
|
124
108
|
_lockKey;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
this._key = _key;
|
|
109
|
+
_repo;
|
|
110
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/identities/owners.sealed", _lockKey = "vault/sealed/locks/owner-identities") {
|
|
128
111
|
this._lockKey = _lockKey;
|
|
112
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
129
113
|
}
|
|
130
114
|
async loadState() {
|
|
131
|
-
return
|
|
115
|
+
return this._repo.read({ identities: [] });
|
|
132
116
|
}
|
|
133
117
|
async register(identity) {
|
|
134
|
-
await withStorageLock(this.
|
|
118
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
135
119
|
const state = await this.loadState();
|
|
136
120
|
const next = state.identities.filter((candidate) => !(candidate.vaultId.value === identity.vaultId.value && candidate.ownerId === identity.ownerId));
|
|
137
121
|
next.push(identity);
|
|
138
|
-
await this.
|
|
122
|
+
await this._repo.write({ identities: next }, "owner_identity_state");
|
|
139
123
|
});
|
|
140
124
|
}
|
|
141
125
|
async get(vaultId, ownerId) {
|
|
@@ -151,7 +135,7 @@ export class FileAuditLog {
|
|
|
151
135
|
_storage;
|
|
152
136
|
_key;
|
|
153
137
|
_lockKey;
|
|
154
|
-
constructor(_storage, _key = "vault/audit.jsonl", _lockKey = "vault/locks/audit") {
|
|
138
|
+
constructor(_storage, _key = "vault/sealed/audit.jsonl", _lockKey = "vault/sealed/locks/audit") {
|
|
155
139
|
this._storage = _storage;
|
|
156
140
|
this._key = _key;
|
|
157
141
|
this._lockKey = _lockKey;
|
|
@@ -224,7 +208,7 @@ export class FileSecretCustody {
|
|
|
224
208
|
_storage;
|
|
225
209
|
_vaultWorkingKey;
|
|
226
210
|
_keyPrefix;
|
|
227
|
-
constructor(_storage, _vaultWorkingKey, _keyPrefix = "vault/custody") {
|
|
211
|
+
constructor(_storage, _vaultWorkingKey, _keyPrefix = "vault/sealed/custody") {
|
|
228
212
|
this._storage = _storage;
|
|
229
213
|
this._vaultWorkingKey = _vaultWorkingKey;
|
|
230
214
|
this._keyPrefix = _keyPrefix;
|
|
@@ -261,20 +245,18 @@ export class FileSecretCustody {
|
|
|
261
245
|
}
|
|
262
246
|
}
|
|
263
247
|
export class FileReplayGuard {
|
|
264
|
-
_storage;
|
|
265
|
-
_key;
|
|
266
248
|
_lockKey;
|
|
267
249
|
_ttlMs;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this._key = _key;
|
|
250
|
+
_repo;
|
|
251
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/security/replay.sealed", _lockKey = "vault/sealed/locks/replay", _ttlMs = 5 * 60 * 1000) {
|
|
271
252
|
this._lockKey = _lockKey;
|
|
272
253
|
this._ttlMs = _ttlMs;
|
|
254
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
273
255
|
}
|
|
274
256
|
async assertNotReplayed(request) {
|
|
275
|
-
await withStorageLock(this.
|
|
257
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
276
258
|
const now = Date.now();
|
|
277
|
-
const state = await
|
|
259
|
+
const state = await this._repo.read({ seen: {} });
|
|
278
260
|
const nextSeen = {};
|
|
279
261
|
for (const [key, seenAt] of Object.entries(state.seen)) {
|
|
280
262
|
if (now - seenAt <= this._ttlMs) {
|
|
@@ -286,30 +268,28 @@ export class FileReplayGuard {
|
|
|
286
268
|
throw new VaultCoreError("request replay detected", "VAULT_DISPATCH_DENIED");
|
|
287
269
|
}
|
|
288
270
|
nextSeen[replayKey] = now;
|
|
289
|
-
await this.
|
|
271
|
+
await this._repo.write({ seen: nextSeen }, "replay_guard_state");
|
|
290
272
|
});
|
|
291
273
|
}
|
|
292
274
|
}
|
|
293
275
|
export class FileCapabilityRegistry {
|
|
294
|
-
_storage;
|
|
295
|
-
_key;
|
|
296
276
|
_lockKey;
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
this._key = _key;
|
|
277
|
+
_repo;
|
|
278
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/capabilities.sealed", _lockKey = "vault/sealed/locks/capabilities") {
|
|
300
279
|
this._lockKey = _lockKey;
|
|
280
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
301
281
|
}
|
|
302
282
|
async loadState() {
|
|
303
|
-
return
|
|
283
|
+
return this._repo.read({ capabilities: [] });
|
|
304
284
|
}
|
|
305
285
|
async register(capability) {
|
|
306
|
-
await withStorageLock(this.
|
|
286
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
307
287
|
const state = await this.loadState();
|
|
308
288
|
const next = state.capabilities.filter((candidate) => !(candidate.vaultId.value === capability.vaultId.value
|
|
309
289
|
&& candidate.agentId === capability.agentId
|
|
310
290
|
&& candidate.capabilityId === capability.capabilityId));
|
|
311
291
|
next.push(capability);
|
|
312
|
-
await this.
|
|
292
|
+
await this._repo.write({ capabilities: next }, "capability_state");
|
|
313
293
|
});
|
|
314
294
|
}
|
|
315
295
|
async get(vaultId, agentId, capabilityId) {
|
|
@@ -320,17 +300,15 @@ export class FileCapabilityRegistry {
|
|
|
320
300
|
}
|
|
321
301
|
}
|
|
322
302
|
export class FileRateLimitStore {
|
|
323
|
-
_storage;
|
|
324
|
-
_key;
|
|
325
303
|
_lockKey;
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
this._key = _key;
|
|
304
|
+
_repo;
|
|
305
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/security/rate-limits.sealed", _lockKey = "vault/sealed/locks/rate-limits") {
|
|
329
306
|
this._lockKey = _lockKey;
|
|
307
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
330
308
|
}
|
|
331
309
|
async consume(key, maxRequests, windowMs, nowMs) {
|
|
332
|
-
await withStorageLock(this.
|
|
333
|
-
const state = await
|
|
310
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
311
|
+
const state = await this._repo.read({ buckets: {} });
|
|
334
312
|
const nextBuckets = {};
|
|
335
313
|
for (const [bucketKey, bucket] of Object.entries(state.buckets)) {
|
|
336
314
|
if (nowMs < bucket.resetAt) {
|
|
@@ -350,55 +328,51 @@ export class FileRateLimitStore {
|
|
|
350
328
|
}
|
|
351
329
|
current.count += 1;
|
|
352
330
|
}
|
|
353
|
-
await this.
|
|
331
|
+
await this._repo.write({ buckets: nextBuckets }, "rate_limit_state");
|
|
354
332
|
});
|
|
355
333
|
}
|
|
356
334
|
}
|
|
357
335
|
export class FileCapabilityRevocationRegistry {
|
|
358
|
-
_storage;
|
|
359
|
-
_key;
|
|
360
336
|
_lockKey;
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
this._key = _key;
|
|
337
|
+
_repo;
|
|
338
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/security/revocations.sealed", _lockKey = "vault/sealed/locks/revocations") {
|
|
364
339
|
this._lockKey = _lockKey;
|
|
340
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
365
341
|
}
|
|
366
342
|
compositeKey(vaultId, agentId, capabilityId) {
|
|
367
343
|
return `${vaultId.value}:${agentId}:${capabilityId}`;
|
|
368
344
|
}
|
|
369
345
|
async get(vaultId, agentId, capabilityId) {
|
|
370
|
-
const state = await
|
|
346
|
+
const state = await this._repo.read({ versions: {} });
|
|
371
347
|
return state.versions[this.compositeKey(vaultId, agentId, capabilityId)] ?? 0;
|
|
372
348
|
}
|
|
373
349
|
async revoke(vaultId, agentId, capabilityId) {
|
|
374
|
-
return withStorageLock(this.
|
|
375
|
-
const state = await
|
|
350
|
+
return withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
351
|
+
const state = await this._repo.read({ versions: {} });
|
|
376
352
|
const key = this.compositeKey(vaultId, agentId, capabilityId);
|
|
377
353
|
const next = (state.versions[key] ?? 0) + 1;
|
|
378
354
|
state.versions[key] = next;
|
|
379
|
-
await this.
|
|
355
|
+
await this._repo.write(state, "revocation_state");
|
|
380
356
|
return next;
|
|
381
357
|
});
|
|
382
358
|
}
|
|
383
359
|
}
|
|
384
360
|
export class FileCustomHttpFlowRegistry {
|
|
385
|
-
_storage;
|
|
386
|
-
_key;
|
|
387
361
|
_lockKey;
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
this._key = _key;
|
|
362
|
+
_repo;
|
|
363
|
+
constructor(storage, vaultWorkingKey, key = "vault/sealed/custom-flows.sealed", _lockKey = "vault/sealed/locks/custom-flows") {
|
|
391
364
|
this._lockKey = _lockKey;
|
|
365
|
+
this._repo = new SealedJsonRepository(storage, key, vaultWorkingKey);
|
|
392
366
|
}
|
|
393
367
|
async loadState() {
|
|
394
|
-
return
|
|
368
|
+
return this._repo.read({ flows: [] });
|
|
395
369
|
}
|
|
396
370
|
async register(flow) {
|
|
397
|
-
await withStorageLock(this.
|
|
371
|
+
await withStorageLock(this._repo.storage, this._lockKey, async () => {
|
|
398
372
|
const state = await this.loadState();
|
|
399
373
|
const next = state.flows.filter((candidate) => candidate.flowId !== flow.flowId);
|
|
400
374
|
next.push(flow);
|
|
401
|
-
await this.
|
|
375
|
+
await this._repo.write({ flows: next }, "custom_flow_state");
|
|
402
376
|
});
|
|
403
377
|
}
|
|
404
378
|
async get(vaultId, flowId) {
|
|
@@ -408,14 +382,14 @@ export class FileCustomHttpFlowRegistry {
|
|
|
408
382
|
}
|
|
409
383
|
export function createPersistentVaultCoreDependencies(storage, options) {
|
|
410
384
|
const defaults = createDefaultVaultCoreDependencies(options);
|
|
411
|
-
const agentIdentities = new FileAgentIdentityRegistry(storage);
|
|
412
|
-
const ownerIdentities = new FileOwnerIdentityRegistry(storage);
|
|
413
|
-
const capabilityRevocations = new FileCapabilityRevocationRegistry(storage);
|
|
414
|
-
const capabilities = new FileCapabilityRegistry(storage);
|
|
415
|
-
const customFlows = new FileCustomHttpFlowRegistry(storage);
|
|
385
|
+
const agentIdentities = new FileAgentIdentityRegistry(storage, options.vaultWorkingKey);
|
|
386
|
+
const ownerIdentities = new FileOwnerIdentityRegistry(storage, options.vaultWorkingKey);
|
|
387
|
+
const capabilityRevocations = new FileCapabilityRevocationRegistry(storage, options.vaultWorkingKey);
|
|
388
|
+
const capabilities = new FileCapabilityRegistry(storage, options.vaultWorkingKey);
|
|
389
|
+
const customFlows = new FileCustomHttpFlowRegistry(storage, options.vaultWorkingKey);
|
|
416
390
|
return {
|
|
417
391
|
...defaults,
|
|
418
|
-
secrets: new FileSecretRepository(storage),
|
|
392
|
+
secrets: new FileSecretRepository(storage, options.vaultWorkingKey),
|
|
419
393
|
custody: new FileSecretCustody(storage, options.vaultWorkingKey),
|
|
420
394
|
audit: new FileAuditLog(storage),
|
|
421
395
|
agentIdentities,
|
|
@@ -423,9 +397,9 @@ export function createPersistentVaultCoreDependencies(storage, options) {
|
|
|
423
397
|
policy: new DefaultPolicyEngine({
|
|
424
398
|
...(options.policy ?? {}),
|
|
425
399
|
capabilityRevocationRegistry: capabilityRevocations,
|
|
426
|
-
rateLimitStore: new FileRateLimitStore(storage),
|
|
400
|
+
rateLimitStore: new FileRateLimitStore(storage, options.vaultWorkingKey),
|
|
427
401
|
}),
|
|
428
|
-
replayGuard: new FileReplayGuard(storage, "vault/security/replay.
|
|
402
|
+
replayGuard: new FileReplayGuard(storage, options.vaultWorkingKey, "vault/sealed/security/replay.sealed", "vault/sealed/locks/replay", options.proofVerifier?.maxSkewMs ?? (5 * 60 * 1000)),
|
|
429
403
|
proofVerifier: new SignatureAgentProofVerifier(agentIdentities, options.proofVerifier),
|
|
430
404
|
ownerProofVerifier: new SignatureOwnerProofVerifier(ownerIdentities, options.proofVerifier),
|
|
431
405
|
capabilities,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/vault-core/persistence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAyBzD,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,kCAAkC,GAEnC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmC7C,MAAM,CAAC,MAAM,kCAAkC,GAAG,kCAAkC,CAAC;AAmBrF,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,QAAQ,CAAI,OAAyB,EAAE,GAAW,EAAE,QAAW;IAC5E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAM,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,eAAe,CAAI,OAAyB,EAAE,GAAW,EAAE,IAAsB;IAC9F,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAyB,EACzB,UAAyC,EAAE;IAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,kCAAkC,CAAC;IAC5E,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,eAAe,EAAE,CAAC;IACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,eAAe,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,QAAQ,CACrB;QACE,OAAO,EAAE,MAAM;QACf,OAAO,EAAE;YACP,eAAe;SAChB;QACD,cAAc,EAAE;YACd,IAAI,EAAE,mBAAmB;SAC1B;KACF,EACD,gBAAgB,CACjB,CAAC;IACF,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,OAAO;QACL,eAAe;QACf,gBAAgB;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAyB,EACzB,gBAAwB,EACxB,UAAU,GAAG,kCAAkC;IAE/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;IACzD,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,oBAAoB;IAEZ;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,oBAAoB,EAC3B,WAAW,qBAAqB;QAFhC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAAuB;QAC3B,aAAQ,GAAR,QAAQ,CAAwB;IAChD,CAAC;IAEI,KAAK,CAAC,SAAS;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAoB;QAC7B,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9F,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAkB;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAEjB;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,8BAA8B,EACrC,WAAW,8BAA8B;QAFzC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAAiC;QACrC,aAAQ,GAAR,QAAQ,CAAiC;IACzD,CAAC;IAEI,KAAK,CAAC,SAAS;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAA6B;QAC1C,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACjD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAChG,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IAC/H,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAEjB;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,8BAA8B,EACrC,WAAW,8BAA8B;QAFzC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAAiC;QACrC,aAAQ,GAAR,QAAQ,CAAiC;IACzD,CAAC;IAEI,KAAK,CAAC,SAAS;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAA6B;QAC1C,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACjD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAChG,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IAC/H,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IAEJ;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,mBAAmB,EAC1B,WAAW,mBAAmB;QAF9B,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAAsB;QAC1B,aAAQ,GAAR,QAAQ,CAAsB;IAC9C,CAAC;IAEI,IAAI,CAAC,KAAa;QACxB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEO,mBAAmB,CAAC,KAAe;QACzC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6D,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YACD,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAiB;QAC5B,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM;gBAC/B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAsB,CAAC,IAAI;gBAChE,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,YAAY,GAAG;gBACnB,QAAQ,EAAE,YAAY;gBACtB,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;aACnE,CAAC;YACF,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5E,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAiB;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YACpE,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC;YAC/E,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YACzE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IAET;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,gBAAwB,EACxB,aAAa,eAAe;QAF5B,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,eAAU,GAAV,UAAU,CAAkB;IAC5C,CAAC;IAEI,GAAG,CAAC,QAAkB;QAC5B,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,SAAS,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAkB,EAAE,SAAiB;QAC/C,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,MAAM,GAAG,QAAQ,CACrB;gBACE,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE;oBACP,QAAQ,EAAE,SAAS;iBACpB;gBACD,cAAc,EAAE;oBACd,QAAQ,EAAE,QAAQ,CAAC,KAAK;iBACzB;aACF,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IAEP;IACA;IACA;IACA;IAJnB,YACmB,QAA0B,EAC1B,OAAO,4BAA4B,EACnC,WAAW,oBAAoB,EAC/B,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI;QAHtB,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAA+B;QACnC,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,WAAM,GAAN,MAAM,CAAgB;IACtC,CAAC;IAEJ,KAAK,CAAC,iBAAiB,CAAC,OAAwB;QAC9C,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAc,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7D,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;YAC/E,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;YAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IAEd;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,yBAAyB,EAChC,WAAW,0BAA0B;QAFrC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAA4B;QAChC,aAAQ,GAAR,QAAQ,CAA6B;IACrD,CAAC;IAEI,KAAK,CAAC,SAAS;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAA2B;QACxC,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACnD,CAAC,CACC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,KAAK;mBACjD,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO;mBACxC,SAAS,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,CACtD,CACF,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;eACvC,UAAU,CAAC,OAAO,KAAK,OAAO;eAC9B,UAAU,CAAC,YAAY,KAAK,YAAY,CAC5C,IAAI,IAAI,CAAC;IACZ,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,iCAAiC,EACxC,WAAW,yBAAyB;QAFpC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAAoC;QACxC,aAAQ,GAAR,QAAQ,CAA4B;IACpD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAgB,EAAE,KAAa;QAC7E,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAiB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACxF,MAAM,WAAW,GAAuD,EAAE,CAAC;YAC3E,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC3B,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzC,WAAW,CAAC,GAAG,CAAC,GAAG;oBACjB,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,KAAK,GAAG,QAAQ;iBAC1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;oBACjC,MAAM,IAAI,cAAc,CAAC,gCAAgC,EAAE,uBAAuB,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,gCAAgC;IAExB;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,iCAAiC,EACxC,WAAW,yBAAyB;QAFpC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAAoC;QACxC,aAAQ,GAAR,QAAQ,CAA4B;IACpD,CAAC;IAEI,YAAY,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAC1E,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAC/D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1F,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAClE,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,0BAA0B;IAElB;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,yBAAyB,EAChC,WAAW,0BAA0B;QAFrC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAA4B;QAChC,aAAQ,GAAR,QAAQ,CAA6B;IACrD,CAAC;IAEI,KAAK,CAAC,SAAS;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B;QAC3C,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,MAAc;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IAC5G,CAAC;CACF;AAED,MAAM,UAAU,qCAAqC,CACnD,OAAyB,EACzB,OAAqD;IAmBrD,MAAM,QAAQ,GAAG,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,qBAAqB,GAAG,IAAI,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO;QACL,GAAG,QAAQ;QACX,OAAO,EAAE,IAAI,oBAAoB,CAAC,OAAO,CAAC;QAC1C,OAAO,EAAE,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;QAChE,KAAK,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QAChC,eAAe;QACf,eAAe;QACf,MAAM,EAAE,IAAI,mBAAmB,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB,4BAA4B,EAAE,qBAAqB;YACnD,cAAc,EAAE,IAAI,kBAAkB,CAAC,OAAO,CAAC;SAChD,CAAC;QACF,WAAW,EAAE,IAAI,eAAe,CAC9B,OAAO,EACP,4BAA4B,EAC5B,oBAAoB,EACpB,OAAO,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CACpD;QACD,aAAa,EAAE,IAAI,2BAA2B,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;QACtF,kBAAkB,EAAE,IAAI,2BAA2B,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;QAC3F,YAAY;QACZ,qBAAqB;QACrB,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/vault-core/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA0BhF,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,kCAAkC,GAEnC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmC7C,MAAM,CAAC,MAAM,kCAAkC,GAAG,yCAAyC,CAAC;AAmB5F,KAAK,UAAU,eAAe,CAAI,OAAyB,EAAE,GAAW,EAAE,IAAsB;IAC9F,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAyB,EACzB,UAAyC,EAAE;IAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,kCAAkC,CAAC;IAC5E,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,eAAe,EAAE,CAAC;IACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,eAAe,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,QAAQ,CACrB;QACE,OAAO,EAAE,MAAM;QACf,OAAO,EAAE;YACP,eAAe;SAChB;QACD,cAAc,EAAE;YACd,IAAI,EAAE,mBAAmB;SAC1B;KACF,EACD,gBAAgB,CACjB,CAAC;IACF,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,OAAO;QACL,eAAe;QACf,gBAAgB;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAyB,EACzB,gBAAwB,EACxB,UAAU,GAAG,kCAAkC;IAE/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;IACzD,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,oBAAoB;IAOZ;IANF,KAAK,CAA8C;IAEpE,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,6BAA6B,EAClB,WAAW,4BAA4B;QAAvC,aAAQ,GAAR,QAAQ,CAA+B;QAExD,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAoB;QAC7B,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9F,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAkB;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAOjB;IANF,KAAK,CAA2C;IAEjE,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,uCAAuC,EAC5B,WAAW,qCAAqC;QAAhD,aAAQ,GAAR,QAAQ,CAAwC;QAEjE,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAA6B;QAC1C,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACjD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAChG,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IAC/H,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAOjB;IANF,KAAK,CAA2C;IAEjE,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,uCAAuC,EAC5B,WAAW,qCAAqC;QAAhD,aAAQ,GAAR,QAAQ,CAAwC;QAEjE,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAA6B;QAC1C,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACjD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAChG,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IAC/H,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IAEJ;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,OAAO,0BAA0B,EACjC,WAAW,0BAA0B;QAFrC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,SAAI,GAAJ,IAAI,CAA6B;QACjC,aAAQ,GAAR,QAAQ,CAA6B;IACrD,CAAC;IAEI,IAAI,CAAC,KAAa;QACxB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEO,mBAAmB,CAAC,KAAe;QACzC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6D,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YACD,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAiB;QAC5B,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM;gBAC/B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAsB,CAAC,IAAI;gBAChE,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,YAAY,GAAG;gBACnB,QAAQ,EAAE,YAAY;gBACtB,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;aACnE,CAAC;YACF,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5E,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAiB;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YACpE,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC;YAC/E,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YACzE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IAET;IACA;IACA;IAHnB,YACmB,QAA0B,EAC1B,gBAAwB,EACxB,aAAa,sBAAsB;QAFnC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,eAAU,GAAV,UAAU,CAAyB;IACnD,CAAC;IAEI,GAAG,CAAC,QAAkB;QAC5B,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,SAAS,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAkB,EAAE,SAAiB;QAC/C,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,MAAM,GAAG,QAAQ,CACrB;gBACE,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE;oBACP,QAAQ,EAAE,SAAS;iBACpB;gBACD,cAAc,EAAE;oBACd,QAAQ,EAAE,QAAQ,CAAC,KAAK;iBACzB;aACF,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IAOP;IACA;IAPF,KAAK,CAAoC;IAE1D,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,qCAAqC,EAC1B,WAAW,2BAA2B,EACtC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI;QADtB,aAAQ,GAAR,QAAQ,CAA8B;QACtC,WAAM,GAAN,MAAM,CAAgB;QAEvC,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAwB;QAC9C,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7D,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;YAC/E,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;YAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IAOd;IANF,KAAK,CAAwC;IAE9D,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,kCAAkC,EACvB,WAAW,iCAAiC;QAA5C,aAAQ,GAAR,QAAQ,CAAoC;QAE7D,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAA2B;QACxC,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACnD,CAAC,CACC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,KAAK;mBACjD,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO;mBACxC,SAAS,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,CACtD,CACF,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;eACvC,UAAU,CAAC,OAAO,KAAK,OAAO;eAC9B,UAAU,CAAC,YAAY,KAAK,YAAY,CAC5C,IAAI,IAAI,CAAC;IACZ,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAOV;IANF,KAAK,CAAuC;IAE7D,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,0CAA0C,EAC/B,WAAW,gCAAgC;QAA3C,aAAQ,GAAR,QAAQ,CAAmC;QAE5D,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAgB,EAAE,KAAa;QAC7E,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,WAAW,GAAuD,EAAE,CAAC;YAC3E,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC3B,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzC,WAAW,CAAC,GAAG,CAAC,GAAG;oBACjB,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,KAAK,GAAG,QAAQ;iBAC1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;oBACjC,MAAM,IAAI,cAAc,CAAC,gCAAgC,EAAE,uBAAuB,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,gCAAgC;IAOxB;IANF,KAAK,CAAwC;IAE9D,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,0CAA0C,EAC/B,WAAW,gCAAgC;QAA3C,aAAQ,GAAR,QAAQ,CAAmC;QAE5D,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEO,YAAY,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAC1E,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,OAAe,EAAE,YAAoB;QAClE,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,0BAA0B;IAOlB;IANF,KAAK,CAAwC;IAE9D,YACE,OAAyB,EACzB,eAAuB,EACvB,GAAG,GAAG,kCAAkC,EACvB,WAAW,iCAAiC;QAA5C,aAAQ,GAAR,QAAQ,CAAoC;QAE7D,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B;QAC3C,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,MAAc;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IAC5G,CAAC;CACF;AAED,MAAM,UAAU,qCAAqC,CACnD,OAAyB,EACzB,OAAqD;IAmBrD,MAAM,QAAQ,GAAG,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAI,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACxF,MAAM,eAAe,GAAG,IAAI,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACxF,MAAM,qBAAqB,GAAG,IAAI,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrG,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,IAAI,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrF,OAAO;QACL,GAAG,QAAQ;QACX,OAAO,EAAE,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;QACnE,OAAO,EAAE,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;QAChE,KAAK,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC;QAChC,eAAe;QACf,eAAe;QACf,MAAM,EAAE,IAAI,mBAAmB,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB,4BAA4B,EAAE,qBAAqB;YACnD,cAAc,EAAE,IAAI,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;SACzE,CAAC;QACF,WAAW,EAAE,IAAI,eAAe,CAC9B,OAAO,EACP,OAAO,CAAC,eAAe,EACvB,qCAAqC,EACrC,2BAA2B,EAC3B,OAAO,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CACpD;QACD,aAAa,EAAE,IAAI,2BAA2B,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;QACtF,kBAAkB,EAAE,IAAI,2BAA2B,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;QAC3F,YAAY;QACZ,qBAAqB;QACrB,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -44,6 +44,20 @@ This means:
|
|
|
44
44
|
|
|
45
45
|
- `vault-ingress`
|
|
46
46
|
Accepts request-shaped calls, resolves vault-managed capability records inside the vault boundary, performs trusted acquisition flows, and forwards dispatch into vault-core internals.
|
|
47
|
+
|
|
48
|
+
## Dual-Area Storage
|
|
49
|
+
|
|
50
|
+
The vault is physically divided into two partitions to balance security and discoverability:
|
|
51
|
+
|
|
52
|
+
- **Sealed Area (`vault/sealed/`)**
|
|
53
|
+
- **Security**: AES-256-GCM encrypted blobs (`.sealed`).
|
|
54
|
+
- **Access**: Requires the Vault Working Key (identity-derived) for both read and write.
|
|
55
|
+
- **Auditing**: Every access is tracked and logged in the append-only audit trail.
|
|
56
|
+
|
|
57
|
+
- **Public Area (`vault/public/`)**
|
|
58
|
+
- **Security**: Plaintext JSON (`.json`).
|
|
59
|
+
- **Access**: Identity is required for **writing** (authorized update), but **reading is open**.
|
|
60
|
+
- **Auditing**: Reading from the public area is **untracked**, reducing audit noise for discovery / identity resolution.
|
|
47
61
|
|
|
48
62
|
## Core Rules
|
|
49
63
|
|
|
@@ -51,6 +65,8 @@ This means:
|
|
|
51
65
|
2. Only owner and trusted issuer paths may write secrets.
|
|
52
66
|
3. Agent can only request dispatch through capability + proof.
|
|
53
67
|
4. Vault validates and audits every dispatch.
|
|
68
|
+
5. Public data (e.g., nicknames, public keys) is explicitly mirrored to the Public Area for discovery.
|
|
69
|
+
6. Identity-specific private data is stored in `identities/`, separate from named `vaults/`.
|
|
54
70
|
|
|
55
71
|
## Current HTTP Secret Flows
|
|
56
72
|
|
package/docs/REFERENCE.md
CHANGED
|
@@ -36,11 +36,11 @@ Recommended persistent-vault entrypoints:
|
|
|
36
36
|
- `createVault(...)`
|
|
37
37
|
- `recoverVault(...)`
|
|
38
38
|
|
|
39
|
-
`createVault({ ownerIdentity, nickname })` creates a vault in the default workspace
|
|
39
|
+
`createVault({ ownerIdentity, nickname, publicMetadata })` creates a vault in the default workspace.
|
|
40
40
|
|
|
41
|
-
`createVault(storage, { ownerIdentity, nickname })` overrides the workspace storage explicitly.
|
|
41
|
+
`createVault(storage, { ownerIdentity, nickname, publicMetadata })` overrides the workspace storage explicitly.
|
|
42
42
|
|
|
43
|
-
`recoverVault({ vaultId, ownerIdentity })` reopens a vault
|
|
43
|
+
`recoverVault({ vaultId, ownerIdentity })` reopens a vault and returns the `nickname` from the sealed profile.
|
|
44
44
|
|
|
45
45
|
`recoverVault(storage, { vaultId, ownerIdentity })` overrides the workspace storage explicitly.
|
|
46
46
|
|
|
@@ -78,20 +78,24 @@ Role rules:
|
|
|
78
78
|
|
|
79
79
|
`deriveChildIdentity(parentIdentity, childIndex, { nickname })` deterministically reconstructs a child identity for a known `childIndex`.
|
|
80
80
|
|
|
81
|
-
`ensureIdentityPrivateVault(storage, identity)` creates or refreshes the identity's fixed namespace under `
|
|
81
|
+
`ensureIdentityPrivateVault(storage, identity)` creates or refreshes the identity's fixed namespace under `identities/<identityId>/...`.
|
|
82
|
+
|
|
83
|
+
That namespace stores identity-level files such as:
|
|
82
84
|
|
|
83
|
-
|
|
85
|
+
- `sealed/profile.sealed`
|
|
86
|
+
- `sealed/children.sealed`
|
|
84
87
|
|
|
85
|
-
-
|
|
86
|
-
- `children.json`
|
|
87
|
-
|
|
88
|
-
Those files are encrypted at rest with a key derived from that identity's private key. They are not readable as plain JSON on disk.
|
|
88
|
+
Those files are encrypted at rest in the `sealed/` sub-directory and are not readable as plain JSON on disk.
|
|
89
89
|
|
|
90
90
|
`restoreIdentity(privateKey)` returns the same shape for an existing private key.
|
|
91
91
|
|
|
92
92
|
`readIdentityPrivateVaultProfile(storage, identityOrPrivateKey)` decrypts and returns the current identity profile for the supplied identity or private key.
|
|
93
93
|
|
|
94
94
|
`readIdentityPrivateVaultChildrenState(storage, identityOrPrivateKey)` decrypts and returns the child index state for the supplied identity or private key.
|
|
95
|
+
|
|
96
|
+
`readIdentityMetadata(storage, identityId, [privateKey])` is the unified metadata reader.
|
|
97
|
+
If `privateKey` is provided, it returns the full sealed profile.
|
|
98
|
+
If `privateKey` is missing, it returns the public discovery profile (nickname, publicKey, parentIdentityId).
|
|
95
99
|
|
|
96
100
|
Typical relationship lookup flow when you already have a private key:
|
|
97
101
|
|
|
@@ -354,7 +358,7 @@ If the custom flow mode includes secret acquisition, the owner also defines a re
|
|
|
354
358
|
|
|
355
359
|
## Persistent Dependencies
|
|
356
360
|
|
|
357
|
-
`createPersistentVaultCoreDependencies(...)` builds a file-backed single-node profile with:
|
|
361
|
+
`createPersistentVaultCoreDependencies(...)` builds a file-backed single-node profile under `vault/sealed/` with:
|
|
358
362
|
|
|
359
363
|
- persistent secret metadata
|
|
360
364
|
- sealed secret custody blobs
|
package/docs/es/README.md
CHANGED
|
@@ -20,7 +20,8 @@ npm install @the-ai-company/cbio-node-runtime
|
|
|
20
20
|
import {
|
|
21
21
|
createVaultService,
|
|
22
22
|
createIdentity,
|
|
23
|
-
|
|
23
|
+
readIdentityMetadata,
|
|
24
|
+
createVault,
|
|
24
25
|
recoverVault,
|
|
25
26
|
LocalVaultTransport,
|
|
26
27
|
createVaultClient,
|
|
@@ -38,8 +39,9 @@ import {
|
|
|
38
39
|
|
|
39
40
|
Ruta principal recomendada para vault persistente:
|
|
40
41
|
|
|
41
|
-
- crear el vault persistente con `createVault(...)`
|
|
42
|
+
- crear el vault persistente con `createVault(...)` (soporta `publicMetadata` para el descubrimiento de información pública)
|
|
42
43
|
- recuperar el vault persistente con `recoverVault(...)` usando la identidad del owner
|
|
44
|
+
- Capas de almacenamiento divididas: `vaults/` (Bóvedas con nombre) e `identities/` (Espacio de identidad personal)
|
|
43
45
|
|
|
44
46
|
La API antigua centrada en `CbioIdentity` ya no es la superficie principal del producto.
|
|
45
47
|
|
package/docs/fr/README.md
CHANGED
|
@@ -20,7 +20,8 @@ npm install @the-ai-company/cbio-node-runtime
|
|
|
20
20
|
import {
|
|
21
21
|
createVaultService,
|
|
22
22
|
createIdentity,
|
|
23
|
-
|
|
23
|
+
readIdentityMetadata,
|
|
24
|
+
createVault,
|
|
24
25
|
recoverVault,
|
|
25
26
|
LocalVaultTransport,
|
|
26
27
|
createVaultClient,
|
|
@@ -38,8 +39,9 @@ import {
|
|
|
38
39
|
|
|
39
40
|
Chemin principal recommande pour un vault persistant :
|
|
40
41
|
|
|
41
|
-
-
|
|
42
|
-
- restaurer le
|
|
42
|
+
- créer le coffre persistant avec `createVault(...)` (prend en charge `publicMetadata` pour la découverte d'informations publiques)
|
|
43
|
+
- restaurer le coffre persistant avec `recoverVault(...)` via l'identité de l'owner
|
|
44
|
+
- Couches de stockage divisées : `vaults/` (Coffres nommés) et `identities/` (Espace d'identité personnel)
|
|
43
45
|
|
|
44
46
|
L'ancienne API centree sur `CbioIdentity` n'est plus la surface principale du produit.
|
|
45
47
|
|
package/docs/ja/README.md
CHANGED
|
@@ -20,7 +20,8 @@ npm install @the-ai-company/cbio-node-runtime
|
|
|
20
20
|
import {
|
|
21
21
|
createVaultService,
|
|
22
22
|
createIdentity,
|
|
23
|
-
|
|
23
|
+
readIdentityMetadata,
|
|
24
|
+
createVault,
|
|
24
25
|
recoverVault,
|
|
25
26
|
LocalVaultTransport,
|
|
26
27
|
createVaultClient,
|
|
@@ -38,8 +39,9 @@ import {
|
|
|
38
39
|
|
|
39
40
|
推奨される persistent-vault の主経路:
|
|
40
41
|
|
|
41
|
-
- `createVault(...)` で persistent vault を作成する
|
|
42
|
+
- `createVault(...)` で persistent vault を作成する (`publicMetadata` による公開情報のディスカバリをサポート)
|
|
42
43
|
- `recoverVault(...)` で owner identity を使って persistent vault を復旧する
|
|
44
|
+
- 分離されたストレージ層: `vaults/` (具名 Vault) と `identities/` (個人 ID スペース)
|
|
43
45
|
|
|
44
46
|
旧 `CbioIdentity` 中心 API は、もはや主要な公開面ではありません。
|
|
45
47
|
|
package/docs/ko/README.md
CHANGED
|
@@ -20,7 +20,8 @@ npm install @the-ai-company/cbio-node-runtime
|
|
|
20
20
|
import {
|
|
21
21
|
createVaultService,
|
|
22
22
|
createIdentity,
|
|
23
|
-
|
|
23
|
+
readIdentityMetadata,
|
|
24
|
+
createVault,
|
|
24
25
|
recoverVault,
|
|
25
26
|
LocalVaultTransport,
|
|
26
27
|
createVaultClient,
|
|
@@ -38,8 +39,9 @@ import {
|
|
|
38
39
|
|
|
39
40
|
권장되는 persistent-vault 주 경로:
|
|
40
41
|
|
|
41
|
-
- `createVault(...)` 로 persistent vault 를 생성합니다
|
|
42
|
+
- `createVault(...)` 로 persistent vault 를 생성합니다 (`publicMetadata` 를 통한 공개 정보 검색 지원)
|
|
42
43
|
- `recoverVault(...)` 로 owner identity 를 사용해 persistent vault 를 복구합니다
|
|
44
|
+
- 분리된 스토리지 계층: `vaults/` (기명 Vault) 및 `identities/` (개인 ID 공간)
|
|
43
45
|
|
|
44
46
|
이전 `CbioIdentity` 중심 API 는 더 이상 주요 제품 표면이 아닙니다.
|
|
45
47
|
|
package/docs/pt/README.md
CHANGED
|
@@ -20,7 +20,8 @@ npm install @the-ai-company/cbio-node-runtime
|
|
|
20
20
|
import {
|
|
21
21
|
createVaultService,
|
|
22
22
|
createIdentity,
|
|
23
|
-
|
|
23
|
+
readIdentityMetadata,
|
|
24
|
+
createVault,
|
|
24
25
|
recoverVault,
|
|
25
26
|
LocalVaultTransport,
|
|
26
27
|
createVaultClient,
|
|
@@ -38,8 +39,9 @@ import {
|
|
|
38
39
|
|
|
39
40
|
Caminho principal recomendado para vault persistente:
|
|
40
41
|
|
|
41
|
-
- criar o
|
|
42
|
-
- recuperar o
|
|
42
|
+
- criar o cofre persistente com `createVault(...)` (suporta `publicMetadata` para a descoberta de informações públicas)
|
|
43
|
+
- recuperar o cofre persistente com `recoverVault(...)` usando a identidade do owner
|
|
44
|
+
- Camadas de armazenamento divididas: `vaults/` (Cofres nomeados) e `identities/` (Espaço de identidade pessoal)
|
|
43
45
|
|
|
44
46
|
A antiga API centrada em `CbioIdentity` nao e mais a superficie principal do produto.
|
|
45
47
|
|
package/docs/zh/README.md
CHANGED
|
@@ -20,6 +20,8 @@ npm install @the-ai-company/cbio-node-runtime
|
|
|
20
20
|
import {
|
|
21
21
|
createVaultService,
|
|
22
22
|
createIdentity,
|
|
23
|
+
readIdentityPrivateVaultProfile,
|
|
24
|
+
readIdentityMetadata,
|
|
23
25
|
createVault,
|
|
24
26
|
recoverVault,
|
|
25
27
|
LocalVaultTransport,
|
|
@@ -38,8 +40,9 @@ import {
|
|
|
38
40
|
|
|
39
41
|
推荐的持久化主路径:
|
|
40
42
|
|
|
41
|
-
- 通过 `createVault(...)` 创建持久化 vault
|
|
43
|
+
- 通过 `createVault(...)` 创建持久化 vault (支持 `publicMetadata` 用于公开发现)
|
|
42
44
|
- 通过 `recoverVault(...)` 用 owner 身份恢复持久化 vault
|
|
45
|
+
- 分区存储:`vaults/` (具名保险箱) 与 `identities/` (身份私有空间)
|
|
43
46
|
|
|
44
47
|
## 构建
|
|
45
48
|
|
package/package.json
CHANGED