oc-codex-multi-auth 6.1.3 → 6.1.6
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 +14 -10
- package/config/README.md +12 -12
- package/config/opencode-legacy.json +125 -0
- package/config/opencode-modern.json +43 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/codex-usage.d.ts +91 -0
- package/dist/lib/codex-usage.d.ts.map +1 -0
- package/dist/lib/codex-usage.js +368 -0
- package/dist/lib/codex-usage.js.map +1 -0
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +39 -340
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tools/codex-switch.d.ts.map +1 -1
- package/dist/lib/tools/codex-switch.js +9 -0
- package/dist/lib/tools/codex-switch.js.map +1 -1
- package/dist/lib/tui-quota-cache.d.ts +33 -0
- package/dist/lib/tui-quota-cache.d.ts.map +1 -0
- package/dist/lib/tui-quota-cache.js +247 -0
- package/dist/lib/tui-quota-cache.js.map +1 -0
- package/dist/lib/tui-status.d.ts +55 -0
- package/dist/lib/tui-status.d.ts.map +1 -0
- package/dist/lib/tui-status.js +343 -0
- package/dist/lib/tui-status.js.map +1 -0
- package/dist/tui.d.ts +6 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +363 -0
- package/dist/tui.js.map +1 -0
- package/package.json +16 -2
- package/scripts/install-oc-codex-multi-auth-core.js +119 -18
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { extractAccountId } from "./accounts.js";
|
|
3
|
+
import { getFetchTimeoutMs, loadPluginConfig } from "./config.js";
|
|
4
|
+
import { CODEX_BASE_URL, PLUGIN_NAME } from "./constants.js";
|
|
5
|
+
import { createUsageRequestTimeoutError } from "./error-sentinels.js";
|
|
6
|
+
import { logWarn } from "./logger.js";
|
|
7
|
+
import { queuedRefresh } from "./refresh-queue.js";
|
|
8
|
+
import { createCodexHeaders } from "./request/fetch-helpers.js";
|
|
9
|
+
import { withAccountStorageTransaction, } from "./storage.js";
|
|
10
|
+
const usageErrorBodyMaxChars = 4096;
|
|
11
|
+
export function getUsageLeftPercent(usedPercent) {
|
|
12
|
+
return typeof usedPercent === "number" && Number.isFinite(usedPercent)
|
|
13
|
+
? Math.max(0, Math.min(100, Math.round(100 - usedPercent)))
|
|
14
|
+
: undefined;
|
|
15
|
+
}
|
|
16
|
+
export function formatUsageWindowLabel(windowMinutes) {
|
|
17
|
+
if (!windowMinutes ||
|
|
18
|
+
!Number.isFinite(windowMinutes) ||
|
|
19
|
+
windowMinutes <= 0) {
|
|
20
|
+
return "quota";
|
|
21
|
+
}
|
|
22
|
+
if (windowMinutes % 1440 === 0)
|
|
23
|
+
return `${windowMinutes / 1440}d`;
|
|
24
|
+
if (windowMinutes % 60 === 0)
|
|
25
|
+
return `${windowMinutes / 60}h`;
|
|
26
|
+
return `${windowMinutes}m`;
|
|
27
|
+
}
|
|
28
|
+
export function formatUsageReset(resetAtMs) {
|
|
29
|
+
if (!resetAtMs || !Number.isFinite(resetAtMs) || resetAtMs <= 0) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const date = new Date(resetAtMs);
|
|
33
|
+
if (!Number.isFinite(date.getTime()))
|
|
34
|
+
return undefined;
|
|
35
|
+
const now = new Date();
|
|
36
|
+
const sameDay = now.getFullYear() === date.getFullYear() &&
|
|
37
|
+
now.getMonth() === date.getMonth() &&
|
|
38
|
+
now.getDate() === date.getDate();
|
|
39
|
+
const time = date.toLocaleTimeString(undefined, {
|
|
40
|
+
hour: "2-digit",
|
|
41
|
+
minute: "2-digit",
|
|
42
|
+
hour12: false,
|
|
43
|
+
});
|
|
44
|
+
if (sameDay)
|
|
45
|
+
return time;
|
|
46
|
+
const day = date.toLocaleDateString(undefined, {
|
|
47
|
+
month: "short",
|
|
48
|
+
day: "2-digit",
|
|
49
|
+
});
|
|
50
|
+
return `${time} on ${day}`;
|
|
51
|
+
}
|
|
52
|
+
export function mapUsageWindow(window) {
|
|
53
|
+
if (!window)
|
|
54
|
+
return {};
|
|
55
|
+
return {
|
|
56
|
+
usedPercent: typeof window.used_percent === "number" &&
|
|
57
|
+
Number.isFinite(window.used_percent)
|
|
58
|
+
? window.used_percent
|
|
59
|
+
: undefined,
|
|
60
|
+
windowMinutes: typeof window.limit_window_seconds === "number" &&
|
|
61
|
+
Number.isFinite(window.limit_window_seconds)
|
|
62
|
+
? Math.max(1, Math.ceil(window.limit_window_seconds / 60))
|
|
63
|
+
: undefined,
|
|
64
|
+
resetAtMs: typeof window.reset_at === "number" && window.reset_at > 0
|
|
65
|
+
? window.reset_at * 1000
|
|
66
|
+
: typeof window.reset_after_seconds === "number" &&
|
|
67
|
+
window.reset_after_seconds > 0
|
|
68
|
+
? Date.now() + window.reset_after_seconds * 1000
|
|
69
|
+
: undefined,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function formatUsageLimitTitle(windowMinutes, fallback = "quota") {
|
|
73
|
+
if (windowMinutes === 300)
|
|
74
|
+
return "5h limit";
|
|
75
|
+
if (windowMinutes === 10080)
|
|
76
|
+
return "Weekly limit";
|
|
77
|
+
if (fallback !== "quota")
|
|
78
|
+
return fallback;
|
|
79
|
+
return `${formatUsageWindowLabel(windowMinutes)} limit`;
|
|
80
|
+
}
|
|
81
|
+
export function formatUsageLimitSummary(window) {
|
|
82
|
+
const left = getUsageLeftPercent(window.usedPercent);
|
|
83
|
+
const reset = formatUsageReset(window.resetAtMs);
|
|
84
|
+
if (left !== undefined && reset)
|
|
85
|
+
return `${left}% left (resets ${reset})`;
|
|
86
|
+
if (left !== undefined)
|
|
87
|
+
return `${left}% left`;
|
|
88
|
+
if (reset)
|
|
89
|
+
return `resets ${reset}`;
|
|
90
|
+
return "unavailable";
|
|
91
|
+
}
|
|
92
|
+
export function toUsageLimitPayload(name, window) {
|
|
93
|
+
return {
|
|
94
|
+
name,
|
|
95
|
+
windowMinutes: window.windowMinutes ?? null,
|
|
96
|
+
usedPercent: typeof window.usedPercent === "number" ? window.usedPercent : null,
|
|
97
|
+
leftPercent: getUsageLeftPercent(window.usedPercent) ?? null,
|
|
98
|
+
resetAtMs: window.resetAtMs ?? null,
|
|
99
|
+
summary: formatUsageLimitSummary(window),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function formatUsageCredits(credits) {
|
|
103
|
+
if (!credits)
|
|
104
|
+
return undefined;
|
|
105
|
+
if (credits.unlimited)
|
|
106
|
+
return "unlimited";
|
|
107
|
+
if (typeof credits.balance === "string" && credits.balance.trim()) {
|
|
108
|
+
return credits.balance.trim();
|
|
109
|
+
}
|
|
110
|
+
if (credits.has_credits)
|
|
111
|
+
return "available";
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
export function formatAdditionalUsageLimitName(name) {
|
|
115
|
+
if (!name)
|
|
116
|
+
return "Additional limit";
|
|
117
|
+
if (name === "code_review_rate_limit")
|
|
118
|
+
return "Code review";
|
|
119
|
+
return name
|
|
120
|
+
.replace(/[_-]+/g, " ")
|
|
121
|
+
.replace(/\b\w/g, (match) => match.toUpperCase());
|
|
122
|
+
}
|
|
123
|
+
export function hasUsageWindow(window) {
|
|
124
|
+
return Boolean(window.windowMinutes ||
|
|
125
|
+
typeof window.usedPercent === "number" ||
|
|
126
|
+
window.resetAtMs);
|
|
127
|
+
}
|
|
128
|
+
export function parseCodexUsagePayload(payload) {
|
|
129
|
+
const primary = mapUsageWindow(payload.rate_limit?.primary_window ?? null);
|
|
130
|
+
const secondary = mapUsageWindow(payload.rate_limit?.secondary_window ?? null);
|
|
131
|
+
const codeReviewRateLimit = payload.code_review_rate_limit ??
|
|
132
|
+
payload.additional_rate_limits?.find((entry) => entry.limit_name === "code_review_rate_limit")?.rate_limit ??
|
|
133
|
+
null;
|
|
134
|
+
const codeReview = mapUsageWindow(codeReviewRateLimit?.primary_window ?? null);
|
|
135
|
+
const credits = formatUsageCredits(payload.credits ?? null);
|
|
136
|
+
const additionalLimits = (payload.additional_rate_limits ?? [])
|
|
137
|
+
.filter((entry) => entry.limit_name !== "code_review_rate_limit")
|
|
138
|
+
.map((entry) => ({
|
|
139
|
+
name: formatAdditionalUsageLimitName(entry.limit_name ?? entry.metered_feature),
|
|
140
|
+
window: mapUsageWindow(entry.rate_limit?.primary_window ?? null),
|
|
141
|
+
}));
|
|
142
|
+
const limits = [
|
|
143
|
+
toUsageLimitPayload(formatUsageLimitTitle(primary.windowMinutes), primary),
|
|
144
|
+
toUsageLimitPayload(formatUsageLimitTitle(secondary.windowMinutes), secondary),
|
|
145
|
+
];
|
|
146
|
+
if (hasUsageWindow(codeReview)) {
|
|
147
|
+
limits.push(toUsageLimitPayload("Code review", codeReview));
|
|
148
|
+
}
|
|
149
|
+
for (const limit of additionalLimits) {
|
|
150
|
+
limits.push(toUsageLimitPayload(limit.name, limit.window));
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
planType: payload.plan_type ?? null,
|
|
154
|
+
credits: credits ?? null,
|
|
155
|
+
primary,
|
|
156
|
+
secondary,
|
|
157
|
+
codeReview,
|
|
158
|
+
additionalLimits,
|
|
159
|
+
limits,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function sanitizeUsageErrorMessage(status, bodyText) {
|
|
163
|
+
const normalized = bodyText.replace(/\s+/g, " ").trim();
|
|
164
|
+
const redacted = normalized
|
|
165
|
+
.replace(/Bearer\s+\S+/gi, "Bearer [redacted]")
|
|
166
|
+
.replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g, "[redacted-token]")
|
|
167
|
+
.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9._:-]{19,}\b/gi, "[redacted-token]")
|
|
168
|
+
.replace(/\b[a-f0-9]{40,}\b/gi, "[redacted-token]");
|
|
169
|
+
return redacted ? `HTTP ${status}: ${redacted.slice(0, 200)}` : `HTTP ${status}`;
|
|
170
|
+
}
|
|
171
|
+
function isAbortError(error) {
|
|
172
|
+
return ((error instanceof Error && error.name === "AbortError") ||
|
|
173
|
+
(typeof DOMException !== "undefined" &&
|
|
174
|
+
error instanceof DOMException &&
|
|
175
|
+
error.name === "AbortError"));
|
|
176
|
+
}
|
|
177
|
+
export async function fetchCodexUsage(params) {
|
|
178
|
+
const headers = createCodexHeaders(undefined, params.accountId, params.accessToken, {
|
|
179
|
+
organizationId: params.organizationId,
|
|
180
|
+
});
|
|
181
|
+
headers.set("accept", "application/json");
|
|
182
|
+
const controller = new AbortController();
|
|
183
|
+
const timeout = setTimeout(() => controller.abort(), params.timeoutMs ?? getFetchTimeoutMs(loadPluginConfig()));
|
|
184
|
+
try {
|
|
185
|
+
const response = await fetch(`${CODEX_BASE_URL}/wham/usage`, {
|
|
186
|
+
method: "GET",
|
|
187
|
+
headers,
|
|
188
|
+
signal: controller.signal,
|
|
189
|
+
});
|
|
190
|
+
if (!response.ok) {
|
|
191
|
+
let bodyText = "";
|
|
192
|
+
try {
|
|
193
|
+
bodyText = (await response.text()).slice(0, usageErrorBodyMaxChars);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
if (isAbortError(error) || controller.signal.aborted) {
|
|
197
|
+
throw createUsageRequestTimeoutError();
|
|
198
|
+
}
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
if (controller.signal.aborted) {
|
|
202
|
+
throw createUsageRequestTimeoutError();
|
|
203
|
+
}
|
|
204
|
+
throw new Error(sanitizeUsageErrorMessage(response.status, bodyText));
|
|
205
|
+
}
|
|
206
|
+
return (await response.json());
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
if (isAbortError(error)) {
|
|
210
|
+
throw createUsageRequestTimeoutError();
|
|
211
|
+
}
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
clearTimeout(timeout);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function applyRefreshedCredentials(target, result) {
|
|
219
|
+
target.refreshToken = result.refresh;
|
|
220
|
+
target.accessToken = result.access;
|
|
221
|
+
target.expiresAt = result.expires;
|
|
222
|
+
}
|
|
223
|
+
async function persistRefreshedCredentials(params) {
|
|
224
|
+
return await withAccountStorageTransaction(async (current, persist) => {
|
|
225
|
+
const latestStorage = current ??
|
|
226
|
+
{
|
|
227
|
+
version: 3,
|
|
228
|
+
accounts: [],
|
|
229
|
+
activeIndex: 0,
|
|
230
|
+
activeIndexByFamily: {},
|
|
231
|
+
};
|
|
232
|
+
const uniqueMatch = (matches) => matches.length === 1 ? matches[0] : undefined;
|
|
233
|
+
let updated = false;
|
|
234
|
+
if (params.previousRefreshToken) {
|
|
235
|
+
for (const storedAccount of latestStorage.accounts) {
|
|
236
|
+
if (storedAccount.refreshToken === params.previousRefreshToken) {
|
|
237
|
+
applyRefreshedCredentials(storedAccount, params.refreshResult);
|
|
238
|
+
updated = true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (!updated) {
|
|
243
|
+
const normalizedOrganizationId = params.organizationId?.trim() ?? "";
|
|
244
|
+
const normalizedEmail = params.email?.trim().toLowerCase();
|
|
245
|
+
const orgScopedMatches = params.accountId
|
|
246
|
+
? latestStorage.accounts.filter((storedAccount) => storedAccount.accountId === params.accountId &&
|
|
247
|
+
(storedAccount.organizationId?.trim() ?? "") ===
|
|
248
|
+
normalizedOrganizationId)
|
|
249
|
+
: [];
|
|
250
|
+
const accountIdMatches = params.accountId
|
|
251
|
+
? latestStorage.accounts.filter((storedAccount) => storedAccount.accountId === params.accountId)
|
|
252
|
+
: [];
|
|
253
|
+
const emailMatches = normalizedEmail && !params.accountId
|
|
254
|
+
? latestStorage.accounts.filter((storedAccount) => storedAccount.email?.trim().toLowerCase() === normalizedEmail)
|
|
255
|
+
: [];
|
|
256
|
+
const fallbackTarget = uniqueMatch(orgScopedMatches) ??
|
|
257
|
+
uniqueMatch(accountIdMatches) ??
|
|
258
|
+
uniqueMatch(emailMatches);
|
|
259
|
+
if (fallbackTarget) {
|
|
260
|
+
applyRefreshedCredentials(fallbackTarget, params.refreshResult);
|
|
261
|
+
updated = true;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (updated) {
|
|
265
|
+
await persist(latestStorage);
|
|
266
|
+
}
|
|
267
|
+
if (!updated) {
|
|
268
|
+
logWarn(`[${PLUGIN_NAME}] persistRefreshedCredentials could not find a matching stored account. Refreshed credentials remain in-memory for this invocation only.`, {
|
|
269
|
+
accountId: params.accountId,
|
|
270
|
+
organizationId: params.organizationId,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
return updated;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
export async function ensureCodexUsageAccessToken(params) {
|
|
277
|
+
let accessToken = params.account.accessToken;
|
|
278
|
+
if (typeof accessToken === "string" &&
|
|
279
|
+
accessToken &&
|
|
280
|
+
typeof params.account.expiresAt === "number" &&
|
|
281
|
+
params.account.expiresAt > Date.now() + 30_000) {
|
|
282
|
+
return { accessToken, refreshed: false, persisted: false };
|
|
283
|
+
}
|
|
284
|
+
const previousRefreshToken = params.account.refreshToken;
|
|
285
|
+
if (!previousRefreshToken) {
|
|
286
|
+
throw new Error("Cannot refresh: account has no refresh token");
|
|
287
|
+
}
|
|
288
|
+
const refreshResult = await queuedRefresh(previousRefreshToken);
|
|
289
|
+
if (refreshResult.type !== "success") {
|
|
290
|
+
throw new Error(refreshResult.message ?? refreshResult.reason);
|
|
291
|
+
}
|
|
292
|
+
let refreshedCount = 0;
|
|
293
|
+
for (const storedAccount of params.storage.accounts) {
|
|
294
|
+
if (storedAccount.refreshToken === previousRefreshToken) {
|
|
295
|
+
applyRefreshedCredentials(storedAccount, refreshResult);
|
|
296
|
+
refreshedCount += 1;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (refreshedCount === 0) {
|
|
300
|
+
applyRefreshedCredentials(params.account, refreshResult);
|
|
301
|
+
}
|
|
302
|
+
const persisted = await persistRefreshedCredentials({
|
|
303
|
+
previousRefreshToken,
|
|
304
|
+
accountId: params.account.accountId,
|
|
305
|
+
organizationId: params.account.organizationId,
|
|
306
|
+
email: params.account.email,
|
|
307
|
+
refreshResult,
|
|
308
|
+
});
|
|
309
|
+
accessToken = refreshResult.access;
|
|
310
|
+
return { accessToken, refreshed: true, persisted };
|
|
311
|
+
}
|
|
312
|
+
export function deduplicateUsageAccountIndices(storage) {
|
|
313
|
+
const seenTokens = new Set();
|
|
314
|
+
const uniqueIndices = [];
|
|
315
|
+
for (let i = 0; i < storage.accounts.length; i += 1) {
|
|
316
|
+
const account = storage.accounts[i];
|
|
317
|
+
if (!account)
|
|
318
|
+
continue;
|
|
319
|
+
const refreshToken = typeof account.refreshToken === "string"
|
|
320
|
+
? account.refreshToken.trim()
|
|
321
|
+
: "";
|
|
322
|
+
if (refreshToken && seenTokens.has(refreshToken))
|
|
323
|
+
continue;
|
|
324
|
+
if (refreshToken)
|
|
325
|
+
seenTokens.add(refreshToken);
|
|
326
|
+
uniqueIndices.push(i);
|
|
327
|
+
}
|
|
328
|
+
return uniqueIndices;
|
|
329
|
+
}
|
|
330
|
+
export function resolveCodexUsageActiveAccount(storage) {
|
|
331
|
+
if (storage.accounts.length === 0)
|
|
332
|
+
return null;
|
|
333
|
+
const rawIndex = storage.activeIndexByFamily?.codex ?? storage.activeIndex;
|
|
334
|
+
const numericIndex = typeof rawIndex === "number" && Number.isFinite(rawIndex) ? rawIndex : 0;
|
|
335
|
+
const index = Math.max(0, Math.min(storage.accounts.length - 1, Math.trunc(numericIndex)));
|
|
336
|
+
const activeAccount = storage.accounts[index];
|
|
337
|
+
if (!activeAccount)
|
|
338
|
+
return null;
|
|
339
|
+
const activeLastUsed = typeof activeAccount.lastUsed === "number" && Number.isFinite(activeAccount.lastUsed)
|
|
340
|
+
? activeAccount.lastUsed
|
|
341
|
+
: 0;
|
|
342
|
+
let newestIndex = index;
|
|
343
|
+
let newestLastUsed = activeLastUsed;
|
|
344
|
+
for (let i = 0; i < storage.accounts.length; i += 1) {
|
|
345
|
+
const account = storage.accounts[i];
|
|
346
|
+
const lastUsed = typeof account?.lastUsed === "number" && Number.isFinite(account.lastUsed)
|
|
347
|
+
? account.lastUsed
|
|
348
|
+
: 0;
|
|
349
|
+
if (account && lastUsed > newestLastUsed) {
|
|
350
|
+
newestIndex = i;
|
|
351
|
+
newestLastUsed = lastUsed;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const account = storage.accounts[newestIndex];
|
|
355
|
+
return account ? { index: newestIndex, account } : null;
|
|
356
|
+
}
|
|
357
|
+
export function resolveCodexUsageAccountId(params) {
|
|
358
|
+
return params.account.accountId ?? extractAccountId(params.accessToken);
|
|
359
|
+
}
|
|
360
|
+
export function createUsageAccountFingerprint(account) {
|
|
361
|
+
const fingerprintSource = [
|
|
362
|
+
account.accountId ?? "",
|
|
363
|
+
account.organizationId ?? "",
|
|
364
|
+
account.refreshToken ?? "",
|
|
365
|
+
].join("\0");
|
|
366
|
+
return createHash("sha256").update(fingerprintSource).digest("hex").slice(0, 16);
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=codex-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-usage.js","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-limits.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-limits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-limits.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-limits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAqBrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CA4OtE"}
|