@varveai/adit-cloud 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/credentials.d.ts +23 -0
- package/dist/auth/credentials.d.ts.map +1 -1
- package/dist/auth/credentials.js +85 -1
- package/dist/auth/credentials.js.map +1 -1
- package/dist/auth/device-auth.d.ts +3 -1
- package/dist/auth/device-auth.d.ts.map +1 -1
- package/dist/auth/device-auth.js.map +1 -1
- package/dist/http/client.d.ts +23 -1
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +200 -76
- package/dist/http/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/project-link/auto-link.d.ts +4 -2
- package/dist/project-link/auto-link.d.ts.map +1 -1
- package/dist/project-link/auto-link.js +35 -6
- package/dist/project-link/auto-link.js.map +1 -1
- package/dist/project-link/cache.d.ts +2 -0
- package/dist/project-link/cache.d.ts.map +1 -1
- package/dist/project-link/cache.js +8 -0
- package/dist/project-link/cache.js.map +1 -1
- package/dist/project-link/git-collector.d.ts +9 -7
- package/dist/project-link/git-collector.d.ts.map +1 -1
- package/dist/project-link/git-collector.js +46 -24
- package/dist/project-link/git-collector.js.map +1 -1
- package/dist/project-link/link-command.d.ts.map +1 -1
- package/dist/project-link/link-command.js +14 -5
- package/dist/project-link/link-command.js.map +1 -1
- package/dist/sync/auto-sync.d.ts.map +1 -1
- package/dist/sync/auto-sync.js +7 -1
- package/dist/sync/auto-sync.js.map +1 -1
- package/package.json +4 -4
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
* Persists JWT tokens and server-assigned client ID to
|
|
5
5
|
* ~/.adit/cloud-credentials.json with restricted file permissions.
|
|
6
6
|
*/
|
|
7
|
+
export type CloudAuthFailureStage = "refresh" | "request" | "auto-sync" | "status";
|
|
8
|
+
export interface CloudAuthFailure {
|
|
9
|
+
/** ISO 8601 timestamp when the auth failure was observed */
|
|
10
|
+
at: string;
|
|
11
|
+
/** Part of the auth flow that failed */
|
|
12
|
+
stage: CloudAuthFailureStage;
|
|
13
|
+
/** Human-readable error message */
|
|
14
|
+
message: string;
|
|
15
|
+
/** HTTP status when available */
|
|
16
|
+
status?: number;
|
|
17
|
+
/** Server-provided reason/code when available */
|
|
18
|
+
code?: string;
|
|
19
|
+
}
|
|
7
20
|
export interface CloudCredentials {
|
|
8
21
|
/** Authentication type: "device" (default) or "token" (static JWT) */
|
|
9
22
|
authType?: "device" | "token";
|
|
@@ -23,6 +36,8 @@ export interface CloudCredentials {
|
|
|
23
36
|
syncDisabled?: boolean;
|
|
24
37
|
/** ISO 8601 timestamp of the first error in the current failure window */
|
|
25
38
|
firstSyncErrorAt?: string;
|
|
39
|
+
/** Most recent auth/refresh failure observed by auto-sync or CloudClient */
|
|
40
|
+
lastAuthFailure?: CloudAuthFailure;
|
|
26
41
|
}
|
|
27
42
|
/** Load stored credentials, or null if not logged in */
|
|
28
43
|
export declare function loadCredentials(): CloudCredentials | null;
|
|
@@ -32,6 +47,14 @@ export declare function saveCredentials(creds: CloudCredentials): void;
|
|
|
32
47
|
export declare function clearCredentials(): void;
|
|
33
48
|
/** Check if the access token has expired (with 60s safety margin) */
|
|
34
49
|
export declare function isTokenExpired(creds: CloudCredentials): boolean;
|
|
50
|
+
/** Record the most recent auth failure for diagnostics in `adit cloud status`. */
|
|
51
|
+
export declare function recordAuthFailure(failure: Omit<CloudAuthFailure, "at"> & {
|
|
52
|
+
at?: string;
|
|
53
|
+
}): void;
|
|
54
|
+
/** Clear the stored auth failure after a successful authenticated request. */
|
|
55
|
+
export declare function clearAuthFailure(): void;
|
|
56
|
+
/** Run a refresh operation under a local file lock shared across hook processes. */
|
|
57
|
+
export declare function withCredentialsRefreshLock<T>(fn: () => Promise<T>): Promise<T>;
|
|
35
58
|
/**
|
|
36
59
|
* Create in-memory credentials from the ADIT_AUTH_TOKEN env var.
|
|
37
60
|
* Returns null if the env var is not set.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAUD,wDAAwD;AACxD,wBAAgB,eAAe,IAAI,gBAAgB,GAAG,IAAI,CAgBzD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAS7D;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAQ/D;AAMD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD,IAAI,CAUN;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED,oFAAoF;AACpF,wBAAsB,0BAA0B,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgBpF;AAgCD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,gBAAgB,GAAG,IAAI,CAWzB;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,SAAI,GAAG,OAAO,CAyB1D;AAED,mDAAmD;AACnD,wBAAgB,eAAe,IAAI,IAAI,CAUtC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAexC"}
|
package/dist/auth/credentials.js
CHANGED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { homedir } from "node:os";
|
|
9
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync, chmodSync, } from "node:fs";
|
|
9
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync, chmodSync, openSync, closeSync, writeSync, statSync, } from "node:fs";
|
|
10
10
|
const CREDENTIALS_FILE = "cloud-credentials.json";
|
|
11
|
+
const REFRESH_LOCK_FILE = "cloud-credentials.refresh.lock";
|
|
12
|
+
const REFRESH_LOCK_STALE_MS = 30_000;
|
|
11
13
|
function credentialsPath() {
|
|
12
14
|
return join(homedir(), ".adit", CREDENTIALS_FILE);
|
|
13
15
|
}
|
|
@@ -55,10 +57,89 @@ export function isTokenExpired(creds) {
|
|
|
55
57
|
// Static tokens never expire
|
|
56
58
|
if (creds.authType === "token")
|
|
57
59
|
return false;
|
|
60
|
+
if (!creds.expiresAt)
|
|
61
|
+
return true;
|
|
58
62
|
const expiresAt = new Date(creds.expiresAt).getTime();
|
|
63
|
+
if (!Number.isFinite(expiresAt))
|
|
64
|
+
return true;
|
|
59
65
|
const safetyMarginMs = 60_000; // Refresh 60s before actual expiry
|
|
60
66
|
return Date.now() >= expiresAt - safetyMarginMs;
|
|
61
67
|
}
|
|
68
|
+
function refreshLockPath() {
|
|
69
|
+
return join(homedir(), ".adit", REFRESH_LOCK_FILE);
|
|
70
|
+
}
|
|
71
|
+
/** Record the most recent auth failure for diagnostics in `adit cloud status`. */
|
|
72
|
+
export function recordAuthFailure(failure) {
|
|
73
|
+
const creds = loadCredentials();
|
|
74
|
+
if (!creds)
|
|
75
|
+
return;
|
|
76
|
+
saveCredentials({
|
|
77
|
+
...creds,
|
|
78
|
+
lastAuthFailure: {
|
|
79
|
+
...failure,
|
|
80
|
+
at: failure.at ?? new Date().toISOString(),
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/** Clear the stored auth failure after a successful authenticated request. */
|
|
85
|
+
export function clearAuthFailure() {
|
|
86
|
+
const creds = loadCredentials();
|
|
87
|
+
if (!creds?.lastAuthFailure)
|
|
88
|
+
return;
|
|
89
|
+
saveCredentials({
|
|
90
|
+
...creds,
|
|
91
|
+
lastAuthFailure: undefined,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** Run a refresh operation under a local file lock shared across hook processes. */
|
|
95
|
+
export async function withCredentialsRefreshLock(fn) {
|
|
96
|
+
const fd = await acquireRefreshLock();
|
|
97
|
+
try {
|
|
98
|
+
return await fn();
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
try {
|
|
102
|
+
closeSync(fd);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// best-effort
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
unlinkSync(refreshLockPath());
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// best-effort
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function acquireRefreshLock() {
|
|
116
|
+
const path = refreshLockPath();
|
|
117
|
+
mkdirSync(join(homedir(), ".adit"), { recursive: true });
|
|
118
|
+
for (let attempt = 0; attempt < 80; attempt++) {
|
|
119
|
+
try {
|
|
120
|
+
const fd = openSync(path, "wx", 0o600);
|
|
121
|
+
writeSync(fd, `${process.pid} ${new Date().toISOString()}\n`);
|
|
122
|
+
return fd;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const code = error.code;
|
|
126
|
+
if (code !== "EEXIST")
|
|
127
|
+
throw error;
|
|
128
|
+
try {
|
|
129
|
+
const stat = statSync(path);
|
|
130
|
+
if (Date.now() - stat.mtimeMs > REFRESH_LOCK_STALE_MS) {
|
|
131
|
+
unlinkSync(path);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
await sleep(Math.min(50 + attempt * 25, 250));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
throw new Error("Timed out waiting for cloud credential refresh lock");
|
|
142
|
+
}
|
|
62
143
|
/**
|
|
63
144
|
* Create in-memory credentials from the ADIT_AUTH_TOKEN env var.
|
|
64
145
|
* Returns null if the env var is not set.
|
|
@@ -76,6 +157,9 @@ export function credentialsFromEnvToken(serverUrl, clientId) {
|
|
|
76
157
|
serverUrl,
|
|
77
158
|
};
|
|
78
159
|
}
|
|
160
|
+
function sleep(ms) {
|
|
161
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
162
|
+
}
|
|
79
163
|
/** Default circuit breaker window in milliseconds (1 hour) */
|
|
80
164
|
const CIRCUIT_BREAKER_WINDOW_MS = 60 * 60 * 1000;
|
|
81
165
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,9 @@ export interface TokenResponse {
|
|
|
16
16
|
accessToken: string;
|
|
17
17
|
refreshToken: string;
|
|
18
18
|
clientId: string;
|
|
19
|
-
|
|
19
|
+
tokenType?: "Bearer";
|
|
20
|
+
expiresIn?: number;
|
|
21
|
+
expiresAt?: string;
|
|
20
22
|
}
|
|
21
23
|
export interface DeviceAuthOptions {
|
|
22
24
|
/** Machine identifier (hardware fingerprint) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../../src/auth/device-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../../src/auth/device-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oDAAoD;AACpD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAgC7B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,SAAO,EACjB,SAAS,SAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAwDxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-auth.js","sourceRoot":"","sources":["../../src/auth/device-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"device-auth.js","sourceRoot":"","sources":["../../src/auth/device-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/http/client.d.ts
CHANGED
|
@@ -5,6 +5,23 @@
|
|
|
5
5
|
* backoff retry on network errors and 429 rate limits.
|
|
6
6
|
*/
|
|
7
7
|
import type { CloudCredentials } from "../auth/credentials.js";
|
|
8
|
+
export interface RefreshTokenStatus {
|
|
9
|
+
valid: boolean;
|
|
10
|
+
reason?: string;
|
|
11
|
+
message?: string;
|
|
12
|
+
status?: number;
|
|
13
|
+
clientId?: string;
|
|
14
|
+
userId?: string;
|
|
15
|
+
expiresAt?: string;
|
|
16
|
+
revokedAt?: string;
|
|
17
|
+
client?: {
|
|
18
|
+
id: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
platform: string | null;
|
|
21
|
+
isActive: boolean;
|
|
22
|
+
lastSeenAt: string | null;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
8
25
|
export declare class CloudClient {
|
|
9
26
|
private credentials;
|
|
10
27
|
private readonly serverUrl;
|
|
@@ -21,8 +38,13 @@ export declare class CloudClient {
|
|
|
21
38
|
delete(path: string): Promise<void>;
|
|
22
39
|
/** Get the current credentials (may have been refreshed) */
|
|
23
40
|
getCredentials(): CloudCredentials;
|
|
41
|
+
/** Check refresh-token health without rotating it. */
|
|
42
|
+
getRefreshTokenStatus(): Promise<RefreshTokenStatus>;
|
|
24
43
|
private request;
|
|
25
|
-
|
|
44
|
+
private ensureFreshToken;
|
|
45
|
+
/** Refresh the access token using the refresh token. */
|
|
26
46
|
private refreshToken;
|
|
47
|
+
private sameServer;
|
|
48
|
+
private recordRequestAuthFailure;
|
|
27
49
|
}
|
|
28
50
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAuB/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB;IAK5D,4BAA4B;IACtB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAItC,oDAAoD;IAC9C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyDzD,2CAA2C;IACrC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAItD,8BAA8B;IACxB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvD,+BAA+B;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,4DAA4D;IAC5D,cAAc,IAAI,gBAAgB;IAIlC,sDAAsD;IAChD,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAgD5C,OAAO;YAsHP,gBAAgB;IAM9B,wDAAwD;YAC1C,YAAY;IA4E1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,wBAAwB;CAQjC"}
|