@claudexor/journal 3.3.16 → 3.4.1

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/index.d.ts CHANGED
@@ -1,5 +1,9 @@
1
1
  import { type JournalRecord } from "./frame-codec.js";
2
+ import { type JournalPreparationReceipt } from "./read-only-preparation.js";
2
3
  export type { JournalRecord } from "./frame-codec.js";
4
+ export type { JournalPreparationReceipt } from "./read-only-preparation.js";
5
+ export { JournalCursorError } from "./journal-cursor.js";
6
+ export { journalPartitionDirectory } from "./journal-partition.js";
3
7
  export type JournalRecoveryLocation = {
4
8
  kind: "byte";
5
9
  byteOffset: number;
@@ -25,7 +29,6 @@ export interface DurableJournalOptions {
25
29
  appendAndSync?: (fd: number, bytes: Buffer) => void;
26
30
  compactionThresholdBytes?: number;
27
31
  }
28
- export declare function journalPartitionDirectory(rootDir: string, partition: string): string;
29
32
  export declare class JournalRecoveryRequiredError extends Error {
30
33
  readonly code: string;
31
34
  readonly status = 503;
@@ -45,12 +48,6 @@ export declare class JournalAppendUncertainError extends JournalRecoveryRequired
45
48
  status: "recovery_required";
46
49
  }>, options?: ErrorOptions);
47
50
  }
48
- export declare class JournalCursorError extends Error {
49
- readonly code = "journal_cursor_invalid";
50
- readonly status = 409;
51
- readonly retryable = true;
52
- readonly requiredActions: string[];
53
- }
54
51
  /** Single-writer, checksummed journal. A returned append has reached fsync. */
55
52
  export declare class DurableJournal {
56
53
  readonly options: Readonly<DurableJournalOptions>;
@@ -65,9 +62,15 @@ export declare class DurableJournal {
65
62
  private previousFrameHash;
66
63
  private knownFileBytes;
67
64
  private recovery;
65
+ private preparationState;
66
+ private writable;
68
67
  private closed;
68
+ static prepare(options: DurableJournalOptions): DurableJournal;
69
69
  constructor(options: DurableJournalOptions);
70
70
  state(): JournalRecoveryState;
71
+ preparation(): JournalPreparationReceipt;
72
+ revalidatePreparation(): void;
73
+ activatePrepared(): void;
71
74
  records<T = unknown>(afterSeq?: number): JournalRecord<T>[];
72
75
  close(): void;
73
76
  currentCursor(): string;
@@ -93,8 +96,13 @@ export declare class DurableJournal {
93
96
  }[]): JournalRecord[];
94
97
  private recover;
95
98
  private intentPath;
99
+ private openWriter;
100
+ private compactAtThreshold;
101
+ private closeWriter;
102
+ private failPreparedActivation;
96
103
  private requireRecovery;
97
104
  private assertReadable;
105
+ private assertWritable;
98
106
  private assertOpen;
99
107
  }
100
108
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,16 +1,17 @@
1
- import { createHash, randomUUID } from "node:crypto";
2
- import { gzipSync } from "node:zlib";
3
- import { closeSync, constants, existsSync, fchmodSync, fstatSync, ftruncateSync, fsyncSync, lstatSync, openSync, readFileSync, renameSync, rmSync, writeSync, } from "node:fs";
4
- import { dirname, join } from "node:path";
5
- import { ensureCanonicalPrivateDirectory, fsyncDirectory } from "@claudexor/util";
6
- import { encodeJournalPayload, prepareAppendBatch } from "./append-batch.js";
7
- import { COMPACTED_SNAPSHOT, HASH_BYTES, MAX_PAYLOAD_BYTES, ZERO_HASH, encodeFrame, replayFrames, } from "./frame-codec.js";
8
- export function journalPartitionDirectory(rootDir, partition) {
9
- if (!partition.trim())
10
- throw new Error("journal partition must not be empty");
11
- const slug = partition.replace(/[^A-Za-z0-9._-]+/g, "-").slice(0, 48) || "partition";
12
- return join(rootDir, `${slug}-${sha256(Buffer.from(partition)).slice(0, 12)}`);
13
- }
1
+ import { randomUUID } from "node:crypto";
2
+ import { closeSync, constants, fchmodSync, fstatSync, ftruncateSync, fsyncSync, openSync, } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { ensureCanonicalPrivateDirectory } from "@claudexor/util";
5
+ import { prepareAppendBatch } from "./append-batch.js";
6
+ import { ZERO_HASH, replayFrames } from "./frame-codec.js";
7
+ import { compactJournalFile } from "./journal-compaction.js";
8
+ import { appendAndSync, ensurePrivateFile, readDescriptor, readIntent, removeFile, writeIntent, } from "./journal-files.js";
9
+ import { cursorError, encodeCursor, JournalCursorError } from "./journal-cursor.js";
10
+ import { journalPartitionDirectory } from "./journal-partition.js";
11
+ import { fingerprintPreparedJournal, inspectPreparedJournal, } from "./read-only-preparation.js";
12
+ export { JournalCursorError } from "./journal-cursor.js";
13
+ export { journalPartitionDirectory } from "./journal-partition.js";
14
+ const PREPARED_JOURNAL = Symbol("prepared-journal");
14
15
  export class JournalRecoveryRequiredError extends Error {
15
16
  code = "journal_recovery_required";
16
17
  status = 503;
@@ -37,12 +38,6 @@ export class JournalAppendUncertainError extends JournalRecoveryRequiredError {
37
38
  Object.defineProperty(this, "cause", { value: options.cause });
38
39
  }
39
40
  }
40
- export class JournalCursorError extends Error {
41
- code = "journal_cursor_invalid";
42
- status = 409;
43
- retryable = true;
44
- requiredActions = ["resnapshot"];
45
- }
46
41
  /** Single-writer, checksummed journal. A returned append has reached fsync. */
47
42
  export class DurableJournal {
48
43
  options;
@@ -50,44 +45,110 @@ export class DurableJournal {
50
45
  path;
51
46
  now;
52
47
  appendFrame;
53
- fd;
48
+ fd = -1;
54
49
  entries = [];
55
50
  epoch;
56
51
  nextSeq = 1;
57
52
  previousFrameHash = ZERO_HASH;
58
53
  knownFileBytes = 0;
59
54
  recovery = { status: "ready", discardedTailBytes: 0 };
55
+ preparationState = null;
56
+ writable = false;
60
57
  closed = false;
61
- constructor(options) {
58
+ static prepare(options) {
59
+ if (!options.partition.trim())
60
+ throw new Error("journal partition must not be empty");
61
+ const partitionDir = journalPartitionDirectory(options.rootDir, options.partition);
62
+ const prepared = inspectPreparedJournal({
63
+ rootDir: options.rootDir,
64
+ partitionDir,
65
+ journalPath: join(partitionDir, "journal.bin"),
66
+ intentPath: join(partitionDir, "append.pending.json"),
67
+ partition: options.partition,
68
+ initialEpoch: (options.epochFactory ?? randomUUID)(),
69
+ });
70
+ const InternalJournal = DurableJournal;
71
+ return new InternalJournal(options, PREPARED_JOURNAL, prepared);
72
+ }
73
+ constructor(options, token, prepared) {
62
74
  if (!options.partition.trim())
63
75
  throw new Error("journal partition must not be empty");
64
76
  this.options = Object.freeze({ ...options });
65
77
  this.now = options.now ?? (() => new Date());
66
78
  this.appendFrame = options.appendAndSync ?? appendAndSync;
67
- ensureCanonicalPrivateDirectory(options.rootDir);
68
79
  this.partitionDir = journalPartitionDirectory(options.rootDir, options.partition);
69
- ensureCanonicalPrivateDirectory(this.partitionDir);
70
80
  this.path = join(this.partitionDir, "journal.bin");
71
- ensurePrivateFile(this.path);
72
- this.fd = openSync(this.path, constants.O_RDWR | constants.O_APPEND | constants.O_NOFOLLOW);
73
- const stat = fstatSync(this.fd);
74
- if (!stat.isFile() || stat.nlink !== 1)
75
- throw new Error("journal file is not privately owned");
76
- if ((stat.mode & 0o777) !== 0o600) {
77
- fchmodSync(this.fd, 0o600);
78
- fsyncSync(this.fd);
81
+ if (token === PREPARED_JOURNAL && prepared) {
82
+ this.preparationState = prepared.receipt;
83
+ this.recovery = structuredClone(prepared.recovery);
84
+ for (const record of prepared.records)
85
+ this.entries.push(record);
86
+ this.epoch = prepared.epoch;
87
+ this.nextSeq = prepared.nextSeq;
88
+ this.previousFrameHash = prepared.previousFrameHash;
89
+ this.knownFileBytes = prepared.knownFileBytes;
90
+ return;
79
91
  }
92
+ ensureCanonicalPrivateDirectory(options.rootDir);
80
93
  this.epoch = (options.epochFactory ?? randomUUID)();
94
+ ensureCanonicalPrivateDirectory(this.partitionDir);
95
+ ensurePrivateFile(this.path);
96
+ this.openWriter();
81
97
  this.recover();
82
- if (this.recovery.status === "ready" &&
83
- this.knownFileBytes >= (options.compactionThresholdBytes ?? 8 * 1024 * 1024)) {
84
- this.compact();
85
- }
98
+ this.compactAtThreshold();
86
99
  }
87
100
  state() {
88
101
  this.assertOpen();
89
102
  return structuredClone(this.recovery);
90
103
  }
104
+ preparation() {
105
+ this.assertOpen();
106
+ if (!this.preparationState)
107
+ throw new Error("journal was not opened through preparation");
108
+ return structuredClone(this.preparationState);
109
+ }
110
+ revalidatePreparation() {
111
+ this.assertOpen();
112
+ if (!this.preparationState)
113
+ throw new Error("journal was not opened through preparation");
114
+ const actual = fingerprintPreparedJournal(this.options.rootDir, this.partitionDir);
115
+ if (actual.fingerprint !== this.preparationState.fingerprint ||
116
+ actual.preparationIdentity !== this.preparationState.preparationIdentity) {
117
+ throw new Error("journal changed since read-only preparation");
118
+ }
119
+ }
120
+ activatePrepared() {
121
+ this.assertOpen();
122
+ if (!this.preparationState)
123
+ throw new Error("journal was not opened through preparation");
124
+ if (this.recovery.status === "recovery_required") {
125
+ this.closeWriter();
126
+ throw new JournalRecoveryRequiredError(this.recovery);
127
+ }
128
+ if (this.writable)
129
+ return;
130
+ try {
131
+ this.revalidatePreparation();
132
+ ensureCanonicalPrivateDirectory(this.options.rootDir);
133
+ ensureCanonicalPrivateDirectory(this.partitionDir);
134
+ ensurePrivateFile(this.path);
135
+ this.entries.length = 0;
136
+ this.nextSeq = 1;
137
+ this.previousFrameHash = ZERO_HASH;
138
+ this.knownFileBytes = 0;
139
+ this.recovery = { status: "ready", discardedTailBytes: 0 };
140
+ this.openWriter();
141
+ this.recover();
142
+ const activatedRecovery = this.state();
143
+ if (activatedRecovery.status === "recovery_required") {
144
+ throw new JournalRecoveryRequiredError(activatedRecovery);
145
+ }
146
+ this.compactAtThreshold();
147
+ }
148
+ catch (error) {
149
+ this.failPreparedActivation(error);
150
+ }
151
+ }
91
152
  records(afterSeq = 0) {
92
153
  this.assertReadable();
93
154
  return this.entries
@@ -98,7 +159,7 @@ export class DurableJournal {
98
159
  if (this.closed)
99
160
  return;
100
161
  this.closed = true;
101
- closeSync(this.fd);
162
+ this.closeWriter();
102
163
  }
103
164
  currentCursor() {
104
165
  this.assertReadable();
@@ -126,71 +187,29 @@ export class DurableJournal {
126
187
  /** Atomically replace physical frames with one checksummed compressed frame. */
127
188
  compact() {
128
189
  this.assertReadable();
129
- if (this.entries.length === 0)
130
- return null;
131
- const logical = this.entries.map((record) => ({
132
- time: record.time,
133
- type: record.type,
134
- payload: cloneJson(record.payload),
135
- }));
136
- const compressed = gzipSync(Buffer.from(JSON.stringify(logical)));
137
- const payload = {
138
- version: 1,
139
- count: logical.length,
140
- encoding: "gzip-base64",
141
- data: compressed.toString("base64"),
142
- };
143
- const payloadBytes = encodeJournalPayload(payload);
144
- // Oversized history stays readable in its existing frames; compaction is
145
- // an optimization, not a corruption or recovery boundary.
146
- if (payloadBytes.length > MAX_PAYLOAD_BYTES)
147
- return null;
148
- const epoch = randomUUID();
149
- const header = {
190
+ this.assertWritable();
191
+ const result = compactJournalFile({
192
+ path: this.path,
150
193
  partition: this.options.partition,
151
- epoch,
152
- seq: 1,
153
- previousFrameHash: ZERO_HASH,
154
- time: this.now().toISOString(),
155
- type: COMPACTED_SNAPSHOT,
156
- logicalSpan: logical.length,
157
- };
158
- const frame = encodeFrame(header, payloadBytes);
159
- if (frame.length >= this.knownFileBytes)
194
+ entries: this.entries,
195
+ knownFileBytes: this.knownFileBytes,
196
+ now: this.now,
197
+ });
198
+ if (!result)
160
199
  return null;
161
- const temp = `${this.path}.${randomUUID()}.compact`;
162
- const tempFd = openSync(temp, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 0o600);
163
- try {
164
- appendAndSync(tempFd, frame);
165
- }
166
- finally {
167
- closeSync(tempFd);
168
- }
169
- const beforeBytes = this.knownFileBytes;
170
- renameSync(temp, this.path);
171
- fsyncDirectory(dirname(this.path));
172
200
  closeSync(this.fd);
201
+ this.fd = -1;
202
+ this.writable = false;
173
203
  this.fd = openSync(this.path, constants.O_RDWR | constants.O_APPEND | constants.O_NOFOLLOW);
174
- const frameHash = frame.subarray(frame.length - HASH_BYTES).toString("hex");
204
+ this.writable = true;
175
205
  this.entries.length = 0;
176
- for (const [index, record] of logical.entries()) {
177
- this.entries.push({
178
- partition: this.options.partition,
179
- epoch,
180
- seq: index + 1,
181
- previousFrameHash: index === 0 ? ZERO_HASH : frameHash,
182
- frameHash,
183
- time: record.time,
184
- type: record.type,
185
- payload: cloneJson(record.payload),
186
- byteOffset: 0,
187
- });
188
- }
189
- this.epoch = epoch;
190
- this.nextSeq = logical.length + 1;
191
- this.previousFrameHash = frameHash;
192
- this.knownFileBytes = frame.length;
193
- return { beforeBytes, afterBytes: frame.length, records: logical.length };
206
+ for (const record of result.records)
207
+ this.entries.push(record);
208
+ this.epoch = result.epoch;
209
+ this.nextSeq = result.nextSeq;
210
+ this.previousFrameHash = result.previousFrameHash;
211
+ this.knownFileBytes = result.knownFileBytes;
212
+ return result.receipt;
194
213
  }
195
214
  sequenceAfter(cursor) {
196
215
  this.assertReadable();
@@ -233,6 +252,7 @@ export class DurableJournal {
233
252
  * no prefix can become durable on its own. */
234
253
  appendBatch(records) {
235
254
  this.assertReadable();
255
+ this.assertWritable();
236
256
  if (records.length === 0)
237
257
  throw new Error("journal append batch must not be empty");
238
258
  for (const record of records) {
@@ -331,6 +351,47 @@ export class DurableJournal {
331
351
  intentPath() {
332
352
  return join(this.partitionDir, "append.pending.json");
333
353
  }
354
+ openWriter() {
355
+ this.fd = openSync(this.path, constants.O_RDWR | constants.O_APPEND | constants.O_NOFOLLOW);
356
+ const stat = fstatSync(this.fd);
357
+ if (!stat.isFile() || stat.nlink !== 1)
358
+ throw new Error("journal file is not privately owned");
359
+ if ((stat.mode & 0o777) !== 0o600) {
360
+ fchmodSync(this.fd, 0o600);
361
+ fsyncSync(this.fd);
362
+ }
363
+ this.writable = true;
364
+ }
365
+ compactAtThreshold() {
366
+ const threshold = this.options.compactionThresholdBytes ?? 8 * 1024 * 1024;
367
+ if (this.recovery.status === "ready" && this.knownFileBytes >= threshold)
368
+ this.compact();
369
+ }
370
+ closeWriter() {
371
+ const fd = this.fd;
372
+ this.fd = -1;
373
+ this.writable = false;
374
+ if (fd < 0)
375
+ return;
376
+ try {
377
+ closeSync(fd);
378
+ }
379
+ catch {
380
+ /* best-effort revocation: the handle number is never reused by this writer */
381
+ }
382
+ }
383
+ failPreparedActivation(error) {
384
+ this.closeWriter();
385
+ this.entries.length = 0;
386
+ this.nextSeq = 1;
387
+ this.previousFrameHash = ZERO_HASH;
388
+ this.knownFileBytes = 0;
389
+ const recovery = error instanceof JournalRecoveryRequiredError
390
+ ? error.recovery
391
+ : this.requireRecovery(0, `prepared activation failed: ${error instanceof Error ? error.message : String(error)}`);
392
+ this.recovery = structuredClone(recovery);
393
+ throw new JournalRecoveryRequiredError(recovery);
394
+ }
334
395
  requireRecovery(byteOffset, reason) {
335
396
  const value = {
336
397
  status: "recovery_required",
@@ -347,95 +408,15 @@ export class DurableJournal {
347
408
  throw new JournalRecoveryRequiredError(this.recovery);
348
409
  }
349
410
  }
411
+ assertWritable() {
412
+ if (!this.writable)
413
+ throw new Error("journal preparation is not activated");
414
+ }
350
415
  assertOpen() {
351
416
  if (this.closed)
352
417
  throw new Error("journal writer is closed");
353
418
  }
354
419
  }
355
- function appendAndSync(fd, bytes) {
356
- let offset = 0;
357
- while (offset < bytes.length)
358
- offset += writeSync(fd, bytes, offset, bytes.length - offset);
359
- fsyncSync(fd);
360
- }
361
- function ensurePrivateFile(path) {
362
- if (!existsSync(path)) {
363
- const fd = openSync(path, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 0o600);
364
- try {
365
- fsyncSync(fd);
366
- }
367
- finally {
368
- closeSync(fd);
369
- }
370
- fsyncDirectory(dirname(path));
371
- }
372
- const stat = lstatSync(path);
373
- if (stat.isSymbolicLink() || !stat.isFile() || stat.nlink !== 1) {
374
- throw new Error("journal path is not a private regular file");
375
- }
376
- }
377
- function readDescriptor(fd) {
378
- const size = Number(fstatSync(fd, { bigint: true }).size);
379
- if (!Number.isSafeInteger(size) || size < 0)
380
- throw new Error("journal file size is invalid");
381
- const bytes = readFileSync(fd);
382
- if (bytes.length !== size)
383
- throw new Error("journal changed while being read");
384
- return bytes;
385
- }
386
- function readIntent(path) {
387
- if (!existsSync(path))
388
- return null;
389
- const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
390
- try {
391
- const stat = fstatSync(fd);
392
- if (!stat.isFile() || stat.nlink !== 1 || stat.size > 1024)
393
- throw new Error("unsafe file");
394
- const value = JSON.parse(readFileSync(fd, "utf8"));
395
- if (!isRecord(value) ||
396
- value.v !== 1 ||
397
- !Number.isSafeInteger(value.offset) ||
398
- Number(value.offset) < 0 ||
399
- !Number.isSafeInteger(value.length) ||
400
- Number(value.length) <= 0)
401
- throw new Error("invalid shape");
402
- return value;
403
- }
404
- finally {
405
- closeSync(fd);
406
- }
407
- }
408
- function writeIntent(path, value) {
409
- const temp = `${path}.${randomUUID()}.tmp`;
410
- const bytes = Buffer.from(`${JSON.stringify(value)}\n`);
411
- const fd = openSync(temp, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 0o600);
412
- try {
413
- let offset = 0;
414
- while (offset < bytes.length)
415
- offset += writeSync(fd, bytes, offset, bytes.length - offset);
416
- fsyncSync(fd);
417
- }
418
- finally {
419
- closeSync(fd);
420
- }
421
- renameSync(temp, path);
422
- fsyncDirectory(dirname(path));
423
- }
424
- function removeFile(path) {
425
- if (!existsSync(path))
426
- return;
427
- rmSync(path);
428
- fsyncDirectory(dirname(path));
429
- }
430
- function encodeCursor(partition, epoch, seq) {
431
- return Buffer.from(JSON.stringify({ v: 1, p: partition, e: epoch, s: seq })).toString("base64url");
432
- }
433
- function cursorError(detail) {
434
- return new JournalCursorError(`journal cursor is ${detail}; resnapshot is required`);
435
- }
436
- function sha256(bytes) {
437
- return createHash("sha256").update(bytes).digest("hex");
438
- }
439
420
  function cloneJson(value) {
440
421
  return JSON.parse(JSON.stringify(value));
441
422
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type JournalRecord } from "./frame-codec.js";
2
+ export interface JournalCompactionResult {
3
+ receipt: {
4
+ beforeBytes: number;
5
+ afterBytes: number;
6
+ records: number;
7
+ };
8
+ records: JournalRecord[];
9
+ epoch: string;
10
+ nextSeq: number;
11
+ previousFrameHash: string;
12
+ knownFileBytes: number;
13
+ }
14
+ export declare function compactJournalFile(input: {
15
+ path: string;
16
+ partition: string;
17
+ entries: readonly JournalRecord[];
18
+ knownFileBytes: number;
19
+ now: () => Date;
20
+ }): JournalCompactionResult | null;
21
+ //# sourceMappingURL=journal-compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-compaction.d.ts","sourceRoot":"","sources":["../src/journal-compaction.ts"],"names":[],"mappings":"AAMA,OAAO,EASL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB,GAAG,uBAAuB,GAAG,IAAI,CA6DjC"}