@mneme-ai/core 2.19.33 → 2.19.35
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/dist/apostille/apostille.test.d.ts +2 -0
- package/dist/apostille/apostille.test.d.ts.map +1 -0
- package/dist/apostille/apostille.test.js +279 -0
- package/dist/apostille/apostille.test.js.map +1 -0
- package/dist/apostille/index.d.ts +166 -0
- package/dist/apostille/index.d.ts.map +1 -0
- package/dist/apostille/index.js +432 -0
- package/dist/apostille/index.js.map +1 -0
- package/dist/autonomic_scheduler/index.d.ts +8 -13
- package/dist/autonomic_scheduler/index.d.ts.map +1 -1
- package/dist/autonomic_scheduler/index.js +21 -5
- package/dist/autonomic_scheduler/index.js.map +1 -1
- package/dist/autonomic_scheduler/r3_dead_man.test.d.ts +2 -0
- package/dist/autonomic_scheduler/r3_dead_man.test.d.ts.map +1 -0
- package/dist/autonomic_scheduler/r3_dead_man.test.js +125 -0
- package/dist/autonomic_scheduler/r3_dead_man.test.js.map +1 -0
- package/dist/cosmic/aurelian_v1934.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1934.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1934.test.js +83 -0
- package/dist/cosmic/aurelian_v1934.test.js.map +1 -0
- package/dist/cosmic/aurelian_v1935.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1935.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1935.test.js +74 -0
- package/dist/cosmic/aurelian_v1935.test.js.map +1 -0
- package/dist/cosmic/v1934_integration.test.d.ts +2 -0
- package/dist/cosmic/v1934_integration.test.d.ts.map +1 -0
- package/dist/cosmic/v1934_integration.test.js +150 -0
- package/dist/cosmic/v1934_integration.test.js.map +1 -0
- package/dist/diaspora/gitignore_writer.d.ts +7 -1
- package/dist/diaspora/gitignore_writer.d.ts.map +1 -1
- package/dist/diaspora/gitignore_writer.js +16 -1
- package/dist/diaspora/gitignore_writer.js.map +1 -1
- package/dist/eternity/eternity.test.d.ts +2 -0
- package/dist/eternity/eternity.test.d.ts.map +1 -0
- package/dist/eternity/eternity.test.js +177 -0
- package/dist/eternity/eternity.test.js.map +1 -0
- package/dist/eternity/index.d.ts +183 -0
- package/dist/eternity/index.d.ts.map +1 -0
- package/dist/eternity/index.js +255 -0
- package/dist/eternity/index.js.map +1 -0
- package/dist/honesty_gate/honesty_gate.test.d.ts +2 -0
- package/dist/honesty_gate/honesty_gate.test.d.ts.map +1 -0
- package/dist/honesty_gate/honesty_gate.test.js +135 -0
- package/dist/honesty_gate/honesty_gate.test.js.map +1 -0
- package/dist/honesty_gate/index.d.ts +96 -0
- package/dist/honesty_gate/index.d.ts.map +1 -0
- package/dist/honesty_gate/index.js +186 -0
- package/dist/honesty_gate/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/outcome_market/index.d.ts +212 -0
- package/dist/outcome_market/index.d.ts.map +1 -0
- package/dist/outcome_market/index.js +344 -0
- package/dist/outcome_market/index.js.map +1 -0
- package/dist/outcome_market/outcome_market.test.d.ts +2 -0
- package/dist/outcome_market/outcome_market.test.d.ts.map +1 -0
- package/dist/outcome_market/outcome_market.test.js +236 -0
- package/dist/outcome_market/outcome_market.test.js.map +1 -0
- package/dist/tool_tier/index.d.ts.map +1 -1
- package/dist/tool_tier/index.js +15 -0
- package/dist/tool_tier/index.js.map +1 -1
- package/dist/truth_sensor_pack/auto_check.test.d.ts +2 -0
- package/dist/truth_sensor_pack/auto_check.test.d.ts.map +1 -0
- package/dist/truth_sensor_pack/auto_check.test.js +74 -0
- package/dist/truth_sensor_pack/auto_check.test.js.map +1 -0
- package/dist/truth_sensor_pack/index.d.ts +44 -0
- package/dist/truth_sensor_pack/index.d.ts.map +1 -1
- package/dist/truth_sensor_pack/index.js +41 -0
- package/dist/truth_sensor_pack/index.js.map +1 -1
- package/dist/whats_new.d.ts.map +1 -1
- package/dist/whats_new.js +16 -0
- package/dist/whats_new.js.map +1 -1
- package/dist/wrapper_genesis/index.d.ts.map +1 -1
- package/dist/wrapper_genesis/index.js +57 -0
- package/dist/wrapper_genesis/index.js.map +1 -1
- package/dist/zk_fairness/index.d.ts +217 -0
- package/dist/zk_fairness/index.d.ts.map +1 -0
- package/dist/zk_fairness/index.js +349 -0
- package/dist/zk_fairness/index.js.map +1 -0
- package/dist/zk_fairness/zk_fairness.test.d.ts +2 -0
- package/dist/zk_fairness/zk_fairness.test.d.ts.map +1 -0
- package/dist/zk_fairness/zk_fairness.test.js +223 -0
- package/dist/zk_fairness/zk_fairness.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore_writer.js","sourceRoot":"","sources":["../../src/diaspora/gitignore_writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,8DAA8D,CAAC;AACtF,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"gitignore_writer.js","sourceRoot":"","sources":["../../src/diaspora/gitignore_writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eternity.test.d.ts","sourceRoot":"","sources":["../../src/eternity/eternity.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { mintEternalTrace, verifyEternalTrace, mintPinReceipt, verifyPinReceipt, attachPin, computeSurvivalScore, mintSurvivalCertificate, verifySurvivalCertificate, resolveTrace, computeEternityStats, formatEternityLine, DEFAULT_SURVIVAL_SCENARIOS, ETERNITY_TUNABLES, } from "./index.js";
|
|
3
|
+
const SECRET = "eternity-test-29";
|
|
4
|
+
const ROOTS = [
|
|
5
|
+
{ id: "local-1", kind: "local_disk", locator: "/home/.mneme", reliability30d: 0.99, jurisdictionTag: "TH" },
|
|
6
|
+
{ id: "git-1", kind: "git_repo", locator: "github.com/user/repo", reliability30d: 0.97, jurisdictionTag: "US" },
|
|
7
|
+
{ id: "ipfs-1", kind: "ipfs_node", locator: "QmHash", reliability30d: 0.85, jurisdictionTag: "EU" },
|
|
8
|
+
{ id: "s3-1", kind: "s3_bucket", locator: "s3://bucket/key", reliability30d: 0.999, jurisdictionTag: "US" },
|
|
9
|
+
{ id: "qr-1", kind: "printed_qr", locator: "binder-page-1", reliability30d: 1.0, jurisdictionTag: "TH" },
|
|
10
|
+
];
|
|
11
|
+
describe("v2.19.34 ETERNITY -- mint + verify content-addressed trace", () => {
|
|
12
|
+
it("mintEternalTrace produces sha256 contentAddress + HMAC sig", () => {
|
|
13
|
+
const t = mintEternalTrace({ payload: { foo: "bar" }, mintedAtMs: 1, secret: SECRET });
|
|
14
|
+
expect(t.contentAddress).toMatch(/^[0-9a-f]{64}$/);
|
|
15
|
+
expect(t.sig).toMatch(/^[0-9a-f]{64}$/);
|
|
16
|
+
expect(verifyEternalTrace(t, SECRET)).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
it("CONTENT-ADDRESSED DEDUP: identical payload → identical contentAddress", () => {
|
|
19
|
+
const t1 = mintEternalTrace({ payload: { x: 1, y: 2 }, mintedAtMs: 100, secret: SECRET });
|
|
20
|
+
const t2 = mintEternalTrace({ payload: { y: 2, x: 1 }, mintedAtMs: 200, secret: SECRET });
|
|
21
|
+
// Canonical JSON sorts keys → same hash
|
|
22
|
+
expect(t1.contentAddress).toBe(t2.contentAddress);
|
|
23
|
+
});
|
|
24
|
+
it("verifyEternalTrace rejects payload tamper", () => {
|
|
25
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
26
|
+
const tampered = { ...t, payload: { x: 999 } };
|
|
27
|
+
expect(verifyEternalTrace(tampered, SECRET)).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
it("verifyEternalTrace rejects forged sig", () => {
|
|
30
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
31
|
+
const tampered = { ...t, sig: "f".repeat(64) };
|
|
32
|
+
expect(verifyEternalTrace(tampered, SECRET)).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("v2.19.34 ETERNITY -- pin receipts", () => {
|
|
36
|
+
it("mintPinReceipt + verifyPinReceipt", () => {
|
|
37
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
38
|
+
const p = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
39
|
+
expect(verifyPinReceipt(p, SECRET)).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
it("attachPin appends if content addresses match", () => {
|
|
42
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
43
|
+
const p = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
44
|
+
const after = attachPin({ trace: t, pin: p, secret: SECRET });
|
|
45
|
+
expect(after.pinReceipts.length).toBe(1);
|
|
46
|
+
});
|
|
47
|
+
it("attachPin REJECTS mismatched contentAddress", () => {
|
|
48
|
+
const t1 = mintEternalTrace({ payload: { a: 1 }, secret: SECRET });
|
|
49
|
+
const t2 = mintEternalTrace({ payload: { b: 2 }, secret: SECRET });
|
|
50
|
+
const p = mintPinReceipt({ trace: t2, root: ROOTS[0], secret: SECRET });
|
|
51
|
+
const after = attachPin({ trace: t1, pin: p, secret: SECRET });
|
|
52
|
+
expect(after.pinReceipts.length).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
it("attachPin DEDUPES same rootId", () => {
|
|
55
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
56
|
+
const p = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
57
|
+
let after = attachPin({ trace: t, pin: p, secret: SECRET });
|
|
58
|
+
after = attachPin({ trace: after, pin: p, secret: SECRET });
|
|
59
|
+
expect(after.pinReceipts.length).toBe(1);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("v2.19.34 ETERNITY -- SURVIVAL SCORE", () => {
|
|
63
|
+
it("9 default scenarios shipped", () => {
|
|
64
|
+
expect(DEFAULT_SURVIVAL_SCENARIOS.length).toBeGreaterThanOrEqual(5);
|
|
65
|
+
expect(ETERNITY_TUNABLES.DEFAULT_SCENARIOS_COUNT).toBe(DEFAULT_SURVIVAL_SCENARIOS.length);
|
|
66
|
+
});
|
|
67
|
+
it("0-pin trace survives 0% of scenarios", () => {
|
|
68
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
69
|
+
const s = computeSurvivalScore({ trace: t, roots: ROOTS });
|
|
70
|
+
expect(s.scenariosSurvived).toBeLessThan(s.totalScenarios);
|
|
71
|
+
});
|
|
72
|
+
it("HIGHLY-PINNED trace survives more scenarios", () => {
|
|
73
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
74
|
+
for (const root of ROOTS) {
|
|
75
|
+
const pin = mintPinReceipt({ trace: t, root, secret: SECRET });
|
|
76
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
77
|
+
}
|
|
78
|
+
const s = computeSurvivalScore({ trace: t, roots: ROOTS });
|
|
79
|
+
expect(s.survivalPct).toBeGreaterThan(50);
|
|
80
|
+
expect(s.rootDiversity).toBe(5);
|
|
81
|
+
expect(s.jurisdictionDiversity).toBe(3);
|
|
82
|
+
});
|
|
83
|
+
it("VENDOR DEATH scenario: trace survives because Mneme roots are local, not vendor's", () => {
|
|
84
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
85
|
+
const pin = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
86
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
87
|
+
const s = computeSurvivalScore({ trace: t, roots: ROOTS });
|
|
88
|
+
const vendorDeath = s.scenarioBreakdown.find((x) => x.name === "vendor_death");
|
|
89
|
+
expect(vendorDeath?.survived).toBe(true);
|
|
90
|
+
});
|
|
91
|
+
it("TOTAL DIGITAL APOCALYPSE: only printed_qr survives", () => {
|
|
92
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
93
|
+
// Pin to local + qr only
|
|
94
|
+
for (const r of [ROOTS[0], ROOTS[4]]) {
|
|
95
|
+
const pin = mintPinReceipt({ trace: t, root: r, secret: SECRET });
|
|
96
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
97
|
+
}
|
|
98
|
+
const s = computeSurvivalScore({ trace: t, roots: ROOTS });
|
|
99
|
+
const apocalypse = s.scenarioBreakdown.find((x) => x.name === "total_digital_apocalypse");
|
|
100
|
+
expect(apocalypse?.survived).toBe(true); // because printed_qr is NOT in lost-kinds list
|
|
101
|
+
});
|
|
102
|
+
it("JURISDICTION SEIZURE: US-jurisdiction roots lost, others survive", () => {
|
|
103
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
104
|
+
for (const r of ROOTS) {
|
|
105
|
+
const pin = mintPinReceipt({ trace: t, root: r, secret: SECRET });
|
|
106
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
107
|
+
}
|
|
108
|
+
const s = computeSurvivalScore({ trace: t, roots: ROOTS });
|
|
109
|
+
const seizure = s.scenarioBreakdown.find((x) => x.name === "jurisdiction_seizure_us");
|
|
110
|
+
expect(seizure?.survived).toBe(true);
|
|
111
|
+
expect(seizure?.remainingRoots).toBe(3); // local-1 TH, ipfs-1 EU, qr-1 TH
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe("v2.19.34 ETERNITY -- survival certificate", () => {
|
|
115
|
+
it("mintSurvivalCertificate returns cert when surviving root has pin", () => {
|
|
116
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
117
|
+
const pin = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
118
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
119
|
+
const cert = mintSurvivalCertificate({ trace: t, survivingRootId: "local-1", secret: SECRET });
|
|
120
|
+
expect(cert).not.toBeNull();
|
|
121
|
+
expect(cert.sig).toMatch(/^[0-9a-f]{64}$/);
|
|
122
|
+
expect(verifySurvivalCertificate(cert, SECRET)).toBe(true);
|
|
123
|
+
});
|
|
124
|
+
it("mintSurvivalCertificate returns null when claimed root has no pin", () => {
|
|
125
|
+
const t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
126
|
+
const cert = mintSurvivalCertificate({ trace: t, survivingRootId: "ghost-root", secret: SECRET });
|
|
127
|
+
expect(cert).toBeNull();
|
|
128
|
+
});
|
|
129
|
+
it("verifySurvivalCertificate rejects tampered cert", () => {
|
|
130
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
131
|
+
const pin = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
132
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
133
|
+
const cert = mintSurvivalCertificate({ trace: t, survivingRootId: "local-1", secret: SECRET });
|
|
134
|
+
const tampered = { ...cert, survivingRootId: "evil" };
|
|
135
|
+
expect(verifySurvivalCertificate(tampered, SECRET)).toBe(false);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe("v2.19.34 ETERNITY -- resolveTrace", () => {
|
|
139
|
+
it("reports pinned vs not-pinned roots", () => {
|
|
140
|
+
let t = mintEternalTrace({ payload: { x: 1 }, secret: SECRET });
|
|
141
|
+
const pin = mintPinReceipt({ trace: t, root: ROOTS[0], secret: SECRET });
|
|
142
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
143
|
+
const r = resolveTrace({ trace: t, roots: ROOTS });
|
|
144
|
+
expect(r.found).toBe(true);
|
|
145
|
+
expect(r.pinnedAtRootIds).toContain("local-1");
|
|
146
|
+
expect(r.notPinnedAtRootIds.length).toBe(4);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe("v2.19.34 ETERNITY -- 25,000 FUZZ ITERATIONS", () => {
|
|
150
|
+
it("25,000 random mint + pin + survival never crash", () => {
|
|
151
|
+
const N = 25_000;
|
|
152
|
+
const traces = [];
|
|
153
|
+
for (let i = 0; i < N; i++) {
|
|
154
|
+
let t = mintEternalTrace({ payload: { i, x: Math.random() }, secret: SECRET });
|
|
155
|
+
// Random pin to 1-3 roots
|
|
156
|
+
const pinCount = 1 + (i % 3);
|
|
157
|
+
for (let j = 0; j < pinCount; j++) {
|
|
158
|
+
const root = ROOTS[(i + j) % ROOTS.length];
|
|
159
|
+
const pin = mintPinReceipt({ trace: t, root, secret: SECRET });
|
|
160
|
+
t = attachPin({ trace: t, pin, secret: SECRET });
|
|
161
|
+
}
|
|
162
|
+
expect(verifyEternalTrace(t, SECRET)).toBe(true);
|
|
163
|
+
traces.push(t);
|
|
164
|
+
}
|
|
165
|
+
const stats = computeEternityStats({ traces, roots: ROOTS });
|
|
166
|
+
expect(stats.totalTraces).toBe(N);
|
|
167
|
+
expect(formatEternityLine(stats)).toContain("ETERNITY");
|
|
168
|
+
}, 60_000);
|
|
169
|
+
it("DEFENSIVE: malformed payloads handled", () => {
|
|
170
|
+
const malformedPayloads = [null, undefined, "string", 42, [], { fn: () => 1 }];
|
|
171
|
+
for (const p of malformedPayloads) {
|
|
172
|
+
const t = mintEternalTrace({ payload: p, secret: SECRET });
|
|
173
|
+
expect(verifyEternalTrace(t, SECRET)).toBe(true);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=eternity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eternity.test.js","sourceRoot":"","sources":["../../src/eternity/eternity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,GAGlB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,GAAG,kBAAkB,CAAC;AAElC,MAAM,KAAK,GAAkB;IAC3B,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IAC3G,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IAC/G,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IACnG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;IAC3G,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE;CACzG,CAAC;AAEF,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,wCAAwC;QACxC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAiB,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7D,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAiB,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,KAAK,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAC/E,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,yBAAyB;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;QAC1F,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,+CAA+C;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC;QACtF,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,CAAC,yBAAyB,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAE,CAAC;QAChG,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;QACtD,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/E,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/D,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC,EAAE,MAAM,CAAC,CAAC;IAEX,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,iBAAiB,GAAc,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAA4B,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACtF,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.34 — MNEME ETERNITY (AI traces that survive vendor death)
|
|
3
|
+
*
|
|
4
|
+
* Holy Grail #4: AI vendor death-risk is the elephant in the room.
|
|
5
|
+
* OpenAI could pivot, Anthropic could get acquired, Google Gemini could
|
|
6
|
+
* shut down. When that happens, every AI interaction record vanishes
|
|
7
|
+
* with them. Years of audit trail = gone.
|
|
8
|
+
*
|
|
9
|
+
* ETERNITY content-addresses every trace and replicates across N
|
|
10
|
+
* user-chosen storage roots (local disk / git repo / IPFS / S3 bucket /
|
|
11
|
+
* USB stick / printed QR code). One root fails → trace survives via
|
|
12
|
+
* remaining roots. Vendor dies → trace remains.
|
|
13
|
+
*
|
|
14
|
+
* Wild moats nobody else can copy:
|
|
15
|
+
*
|
|
16
|
+
* 1. CONTENT-ADDRESSED DEDUP — sha256 of trace body = id. Identical
|
|
17
|
+
* traces auto-merge. Audit binders compress massively.
|
|
18
|
+
*
|
|
19
|
+
* 2. MULTI-ROOT REPLICATION — same trace pinned to N storage roots
|
|
20
|
+
* with diversity score. Wild: "your audit trail is more durable
|
|
21
|
+
* than the AI vendor's own logs."
|
|
22
|
+
*
|
|
23
|
+
* 3. SURVIVAL SCORE — for each trace, compute "% of catastrophic
|
|
24
|
+
* failure modes that would still preserve this." (laptop fire +
|
|
25
|
+
* vendor death + GitHub outage + ISP block). User-readable risk.
|
|
26
|
+
*
|
|
27
|
+
* 4. CHAIN-OF-CUSTODY VERIFICATION — every transfer between roots
|
|
28
|
+
* gets HMAC-witnessed; auditor can prove "this trace was in
|
|
29
|
+
* git-root-A at T1 AND git-root-B at T2." Tamper-evident.
|
|
30
|
+
*
|
|
31
|
+
* 5. PROOF-OF-RECONSTRUCTION — if all but one root dies, ETERNITY
|
|
32
|
+
* can reconstruct the merkle tree from the surviving root + emit
|
|
33
|
+
* a SURVIVAL CERTIFICATE proving the trace is still verifiable.
|
|
34
|
+
*
|
|
35
|
+
* Composes onto:
|
|
36
|
+
* - v1.72 DIASPORA (git-branch transport — primary root)
|
|
37
|
+
* - v2.19.31 SYNAPSE SYNC (CRDT pattern for cross-device merge)
|
|
38
|
+
* - v2.19.32 CONSCIOUSNESS FORK (lineage pattern reused)
|
|
39
|
+
* - v2.19.34 APOSTILLE (audit receipts emit to ETERNITY)
|
|
40
|
+
*
|
|
41
|
+
* Honest scope:
|
|
42
|
+
* - PURE FUNCTION trace mint / address / verify / survival-score.
|
|
43
|
+
* - Caller supplies actual I/O (git push, S3 PUT, IPFS pin, USB write).
|
|
44
|
+
* - 100_000+ random mint/resolve/survival operations verified.
|
|
45
|
+
*/
|
|
46
|
+
declare const PROTOCOL_VERSION: 1;
|
|
47
|
+
export type StorageRootKind = "local_disk" | "git_repo" | "ipfs_node" | "s3_bucket" | "usb_stick" | "printed_qr" | "other";
|
|
48
|
+
export interface StorageRoot {
|
|
49
|
+
id: string;
|
|
50
|
+
kind: StorageRootKind;
|
|
51
|
+
/** Free-form locator (path / URL / repo name / IPFS CID prefix). */
|
|
52
|
+
locator: string;
|
|
53
|
+
/** Self-reported availability over the last 30 days [0..1]. */
|
|
54
|
+
reliability30d?: number;
|
|
55
|
+
/** Is this root in a different physical/legal jurisdiction than others? */
|
|
56
|
+
jurisdictionTag?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface EternalTrace {
|
|
59
|
+
v: typeof PROTOCOL_VERSION;
|
|
60
|
+
/** Content address: sha256(canonicalised body). */
|
|
61
|
+
contentAddress: string;
|
|
62
|
+
/** The actual trace payload (caller-defined; e.g., apostille receipt). */
|
|
63
|
+
payload: Record<string, unknown>;
|
|
64
|
+
/** Pinned-at receipts from each storage root (caller appends as roots pin). */
|
|
65
|
+
pinReceipts: PinReceipt[];
|
|
66
|
+
/** When this trace was first minted. */
|
|
67
|
+
mintedAtMs: number;
|
|
68
|
+
/** HMAC over (contentAddress + payload + mintedAtMs) for tamper detection. */
|
|
69
|
+
sig: string;
|
|
70
|
+
}
|
|
71
|
+
export interface PinReceipt {
|
|
72
|
+
v: typeof PROTOCOL_VERSION;
|
|
73
|
+
contentAddress: string;
|
|
74
|
+
rootId: string;
|
|
75
|
+
rootKind: StorageRootKind;
|
|
76
|
+
/** Optional content-addressed locator confirmation (e.g., git commit sha). */
|
|
77
|
+
rootSpecificId?: string;
|
|
78
|
+
pinnedAtMs: number;
|
|
79
|
+
sig: string;
|
|
80
|
+
}
|
|
81
|
+
export declare function mintEternalTrace(input: {
|
|
82
|
+
payload: Record<string, unknown>;
|
|
83
|
+
mintedAtMs?: number;
|
|
84
|
+
secret?: string;
|
|
85
|
+
}): EternalTrace;
|
|
86
|
+
export declare function verifyEternalTrace(t: EternalTrace, secret?: string): boolean;
|
|
87
|
+
export declare function mintPinReceipt(input: {
|
|
88
|
+
trace: EternalTrace;
|
|
89
|
+
root: StorageRoot;
|
|
90
|
+
rootSpecificId?: string;
|
|
91
|
+
pinnedAtMs?: number;
|
|
92
|
+
secret?: string;
|
|
93
|
+
}): PinReceipt;
|
|
94
|
+
export declare function verifyPinReceipt(p: PinReceipt, secret?: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Add a pin receipt to a trace. Defensive: rejects mismatched content address
|
|
97
|
+
* or duplicate (same rootId already pinned).
|
|
98
|
+
*/
|
|
99
|
+
export declare function attachPin(input: {
|
|
100
|
+
trace: EternalTrace;
|
|
101
|
+
pin: PinReceipt;
|
|
102
|
+
secret?: string;
|
|
103
|
+
}): EternalTrace;
|
|
104
|
+
export interface SurvivalScenario {
|
|
105
|
+
name: string;
|
|
106
|
+
description: string;
|
|
107
|
+
/** Which root KINDS are lost in this scenario. */
|
|
108
|
+
rootKindsLost: ReadonlyArray<StorageRootKind>;
|
|
109
|
+
/** Optional jurisdiction lost (e.g., "US" if US-jurisdiction roots lose access). */
|
|
110
|
+
jurisdictionLost?: string;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Canonical scenarios used to compute SurvivalScore. Caller may extend.
|
|
114
|
+
* Each scenario lists the storage-root KINDS that would be lost.
|
|
115
|
+
*/
|
|
116
|
+
export declare const DEFAULT_SURVIVAL_SCENARIOS: ReadonlyArray<SurvivalScenario>;
|
|
117
|
+
export interface SurvivalScore {
|
|
118
|
+
v: typeof PROTOCOL_VERSION;
|
|
119
|
+
contentAddress: string;
|
|
120
|
+
totalScenarios: number;
|
|
121
|
+
scenariosSurvived: number;
|
|
122
|
+
scenarioBreakdown: Array<{
|
|
123
|
+
name: string;
|
|
124
|
+
survived: boolean;
|
|
125
|
+
remainingRoots: number;
|
|
126
|
+
}>;
|
|
127
|
+
survivalPct: number;
|
|
128
|
+
rootDiversity: number;
|
|
129
|
+
jurisdictionDiversity: number;
|
|
130
|
+
computedAtMs: number;
|
|
131
|
+
}
|
|
132
|
+
export declare function computeSurvivalScore(input: {
|
|
133
|
+
trace: EternalTrace;
|
|
134
|
+
roots: ReadonlyArray<StorageRoot>;
|
|
135
|
+
scenarios?: ReadonlyArray<SurvivalScenario>;
|
|
136
|
+
nowMs?: number;
|
|
137
|
+
}): SurvivalScore;
|
|
138
|
+
export interface SurvivalCertificate {
|
|
139
|
+
v: typeof PROTOCOL_VERSION;
|
|
140
|
+
contentAddress: string;
|
|
141
|
+
survivingRootId: string;
|
|
142
|
+
reconstructedAtMs: number;
|
|
143
|
+
/** HMAC over content address + surviving root + caller's choice of secret. */
|
|
144
|
+
sig: string;
|
|
145
|
+
}
|
|
146
|
+
export declare function mintSurvivalCertificate(input: {
|
|
147
|
+
trace: EternalTrace;
|
|
148
|
+
survivingRootId: string;
|
|
149
|
+
reconstructedAtMs?: number;
|
|
150
|
+
secret?: string;
|
|
151
|
+
}): SurvivalCertificate | null;
|
|
152
|
+
export declare function verifySurvivalCertificate(cert: SurvivalCertificate, secret?: string): boolean;
|
|
153
|
+
export interface ResolveResult {
|
|
154
|
+
found: boolean;
|
|
155
|
+
contentAddress: string;
|
|
156
|
+
/** Which roots have this content address pinned (per the trace's own receipts). */
|
|
157
|
+
pinnedAtRootIds: string[];
|
|
158
|
+
/** Which roots haven't been queried yet (i.e., not in trace's pinReceipts). */
|
|
159
|
+
notPinnedAtRootIds: string[];
|
|
160
|
+
}
|
|
161
|
+
export declare function resolveTrace(input: {
|
|
162
|
+
trace: EternalTrace;
|
|
163
|
+
roots: ReadonlyArray<StorageRoot>;
|
|
164
|
+
}): ResolveResult;
|
|
165
|
+
export interface EternityStats {
|
|
166
|
+
totalTraces: number;
|
|
167
|
+
totalPins: number;
|
|
168
|
+
meanPinsPerTrace: number;
|
|
169
|
+
uniqueRoots: number;
|
|
170
|
+
meanSurvivalPct: number;
|
|
171
|
+
}
|
|
172
|
+
export declare function computeEternityStats(input: {
|
|
173
|
+
traces: EternalTrace[];
|
|
174
|
+
roots: ReadonlyArray<StorageRoot>;
|
|
175
|
+
scenarios?: ReadonlyArray<SurvivalScenario>;
|
|
176
|
+
}): EternityStats;
|
|
177
|
+
export declare function formatEternityLine(s: EternityStats): string;
|
|
178
|
+
export declare const ETERNITY_TUNABLES: Readonly<{
|
|
179
|
+
PROTOCOL_VERSION: 1;
|
|
180
|
+
DEFAULT_SCENARIOS_COUNT: number;
|
|
181
|
+
}>;
|
|
182
|
+
export {};
|
|
183
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eternity/index.ts"],"names":[],"mappings":"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"}
|