@catalyst-cloud/sdk 0.8.49 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/dist/browser.d.ts +2 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +5 -3
- package/dist/browser.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/live-sync-client.d.ts +143 -7
- package/dist/live-sync-client.d.ts.map +1 -1
- package/dist/live-sync-client.js +446 -69
- package/dist/live-sync-client.js.map +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -1
- package/dist/node.js.map +1 -1
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +3 -0
- package/dist/otel.js.map +1 -1
- package/dist/replica/catalyst-replica.d.ts +24 -2
- package/dist/replica/catalyst-replica.d.ts.map +1 -1
- package/dist/replica/catalyst-replica.js +78 -5
- package/dist/replica/catalyst-replica.js.map +1 -1
- package/dist/tenant-client.d.ts +537 -0
- package/dist/tenant-client.d.ts.map +1 -0
- package/dist/tenant-client.js +504 -0
- package/dist/tenant-client.js.map +1 -0
- package/dist/tenant-contract.d.ts +237 -0
- package/dist/tenant-contract.d.ts.map +1 -0
- package/dist/tenant-contract.js +183 -0
- package/dist/tenant-contract.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-client.d.ts","sourceRoot":"","sources":["../src/tenant-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
// tenant-client.ts — CTC-2004. ONE typed client for every tenant read and write, so the CLI, the
|
|
2
|
+
// skill scripts, MCP tools and the cloud repo's own scripts share one implementation instead of six.
|
|
3
|
+
//
|
|
4
|
+
// What it wraps, and where each shape was read from (the research doc for CTC-2004 cites file:line):
|
|
5
|
+
// • GET /api/v1/agent/contract — the tenant's own fact document, ETag-cached per the document's
|
|
6
|
+
// OWN `cache` policy (docs/agent-contract.md): inside `maxAgeSeconds` the cached copy is used;
|
|
7
|
+
// past it a conditional GET revalidates; past `staleRefusalSeconds` with no successful
|
|
8
|
+
// revalidation the client REFUSES by name. There is no literal fallback for any served field.
|
|
9
|
+
// • GET /api/v1/issues, /pulls (keyset-paged: `?after=`, and the next page rides the
|
|
10
|
+
// `X-Mirror-Next-Cursor` header, absent on the last page), /issues/:identifier, /pulls/:id,
|
|
11
|
+
// /projects, /me.
|
|
12
|
+
// • Every tenant write on the /api/v1/agent/* proxy — issue-state, issue-label, issue-comment,
|
|
13
|
+
// issue-create, reaction, attachment, session, ask, ask-accept — plus the attachments read-back.
|
|
14
|
+
// ⭐ THE PATH IS NEVER A LITERAL: each is resolved from the contract's `routes[]` by its last
|
|
15
|
+
// segment, and a route the tenant's contract does not list is a typed `route-unknown` result.
|
|
16
|
+
//
|
|
17
|
+
// ⛔ NOTHING THROWS FOR A SERVER ANSWER. Every call resolves to a discriminated union on `outcome`.
|
|
18
|
+
// The mirror already speaks that grammar on the proxy (`{outcome, reason}` on every status); the auth
|
|
19
|
+
// plane speaks `{error, reason}` (401/403) and the open reads speak `{error}` (400/404) — `classify`
|
|
20
|
+
// folds all three into the same union, with a `status` on every arm the server produced, so a consumer
|
|
21
|
+
// never branches on an HTTP status or regexes a prose reason (the bundle today classifies the write
|
|
22
|
+
// budget's 429 with `/budget/i`; here it is the `rate-limited` arm, with `Retry-After` parsed when the
|
|
23
|
+
// server sends one — the write-budget refusal does not, the read floor does).
|
|
24
|
+
//
|
|
25
|
+
// Runtime-agnostic: the global `fetch`/`Headers`/`URL`/`AbortSignal` only (no node import), fetch is
|
|
26
|
+
// injectable for tests exactly as `LiveSyncClient.wsFactory` is, and the contract cache STORE is
|
|
27
|
+
// injectable because the bundle keeps it on disk while this module must stay free of `node:fs`.
|
|
28
|
+
// `IssueView` and friends are `import type`d from `@catalyst-cloud/read-model` (an existing
|
|
29
|
+
// dependency) — erased at build, so the root entry gains no runtime import.
|
|
30
|
+
import { CONTRACT_ROUTE, readTenantContract, routeByName, } from "./tenant-contract.js";
|
|
31
|
+
// ── Options ─────────────────────────────────────────────────────────────────────────────────────
|
|
32
|
+
/** Default per-request deadline — the bundle's `REQUEST_TIMEOUT_MS`. */
|
|
33
|
+
export const DEFAULT_TIMEOUT_MS = 15_000;
|
|
34
|
+
/** The default store: one entry, held for the life of the client. */
|
|
35
|
+
export function memoryContractCache() {
|
|
36
|
+
let entry = null;
|
|
37
|
+
return {
|
|
38
|
+
get: () => entry,
|
|
39
|
+
set: (e) => {
|
|
40
|
+
entry = e;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** Admit a persisted token as a {@link PageCursor}. */
|
|
45
|
+
export function pageCursor(token) {
|
|
46
|
+
return token;
|
|
47
|
+
}
|
|
48
|
+
// ── Header and param names — the mirror's own strings, each in exactly one place ────────────────
|
|
49
|
+
/** The next-page keyset token on `/issues` and `/pulls`; ABSENT on the last page. */
|
|
50
|
+
export const NEXT_CURSOR_HEADER = "X-Mirror-Next-Cursor";
|
|
51
|
+
/** The feed head seq every list/detail read is consistent with. */
|
|
52
|
+
export const HEAD_SEQ_HEADER = "X-Mirror-Cursor";
|
|
53
|
+
/** The scope's full row count on `/issues` and `/pulls` — the page can never report what lies past it. */
|
|
54
|
+
export const TOTAL_HEADER = "X-Mirror-Total";
|
|
55
|
+
/** `/pulls` only: the "N of M blocked on an ask" numerator. */
|
|
56
|
+
export const BLOCKED_ON_ASK_TOTAL_HEADER = "X-Mirror-Blocked-On-Ask-Total";
|
|
57
|
+
/** The contract route's own version header, equal to the body's `contractVersion`. */
|
|
58
|
+
export const CONTRACT_VERSION_HEADER = "x-catalyst-contract-version";
|
|
59
|
+
// ── Internals ───────────────────────────────────────────────────────────────────────────────────
|
|
60
|
+
function isRecord(value) {
|
|
61
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A detail body is the read-model's own view object; the client cannot re-declare the view to check
|
|
65
|
+
* it field by field without becoming the second copy this ticket deletes, so an object body is
|
|
66
|
+
* accepted as the view. Kept as ONE narrowing site so the assumption is visible and grep-able rather
|
|
67
|
+
* than scattered.
|
|
68
|
+
*/
|
|
69
|
+
function asView(rec) {
|
|
70
|
+
return rec;
|
|
71
|
+
}
|
|
72
|
+
function stringField(rec, key) {
|
|
73
|
+
const v = rec[key];
|
|
74
|
+
return typeof v === "string" ? v : null;
|
|
75
|
+
}
|
|
76
|
+
function numberField(rec, key) {
|
|
77
|
+
const v = rec[key];
|
|
78
|
+
return typeof v === "number" ? v : null;
|
|
79
|
+
}
|
|
80
|
+
/** A header carrying an integer (the feed head, a total). `null` when absent or not a number. */
|
|
81
|
+
function integerHeader(headers, name) {
|
|
82
|
+
const raw = headers.get(name);
|
|
83
|
+
if (raw === null)
|
|
84
|
+
return null;
|
|
85
|
+
const n = Number(raw);
|
|
86
|
+
return Number.isFinite(n) ? n : null;
|
|
87
|
+
}
|
|
88
|
+
/** The reason string a refusal body carries, under whichever of the three grammars it speaks. */
|
|
89
|
+
function reasonOf(answer) {
|
|
90
|
+
if (isRecord(answer.json)) {
|
|
91
|
+
return (stringField(answer.json, "reason") ??
|
|
92
|
+
stringField(answer.json, "error") ??
|
|
93
|
+
stringField(answer.json, "message") ??
|
|
94
|
+
answer.textHead);
|
|
95
|
+
}
|
|
96
|
+
return answer.textHead;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Fold a non-success answer into the shared failure union. Consulted AFTER a route's own success
|
|
100
|
+
* table (which keys on the body's `outcome`), so the server's own discriminator wins whenever it is
|
|
101
|
+
* present and recognised; this handles the auth plane, the budget, and everything unmapped.
|
|
102
|
+
*/
|
|
103
|
+
function classify(answer) {
|
|
104
|
+
const { status } = answer;
|
|
105
|
+
const rec = isRecord(answer.json) ? answer.json : null;
|
|
106
|
+
const reason = reasonOf(answer);
|
|
107
|
+
if (status === 401)
|
|
108
|
+
return { outcome: "unauthorized", status, reason, ref: rec ? stringField(rec, "ref") : null };
|
|
109
|
+
if (status === 403) {
|
|
110
|
+
return {
|
|
111
|
+
outcome: "forbidden",
|
|
112
|
+
status,
|
|
113
|
+
reason,
|
|
114
|
+
required: rec ? stringField(rec, "required") : null,
|
|
115
|
+
account: rec ? stringField(rec, "account") : null,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (status === 429) {
|
|
119
|
+
const raw = answer.headers.get("retry-after");
|
|
120
|
+
const seconds = raw === null ? Number.NaN : Number(raw);
|
|
121
|
+
return { outcome: "rate-limited", status, reason, retryAfterSeconds: Number.isFinite(seconds) ? seconds : null };
|
|
122
|
+
}
|
|
123
|
+
if (rec !== null && rec["outcome"] === "rejected") {
|
|
124
|
+
const attempts = numberField(rec, "attempts");
|
|
125
|
+
return { outcome: "rejected", status, reason, ...(attempts === null ? {} : { attempts }) };
|
|
126
|
+
}
|
|
127
|
+
if (rec !== null && rec["outcome"] === "failed")
|
|
128
|
+
return { outcome: "failed", status, reason };
|
|
129
|
+
if (status === 400 && rec !== null && stringField(rec, "error") !== null) {
|
|
130
|
+
return { outcome: "rejected", status, reason };
|
|
131
|
+
}
|
|
132
|
+
if (status >= 200 && status < 300) {
|
|
133
|
+
return { outcome: "shape", status, reason: `unexpected body: ${reason.slice(0, 120)}` };
|
|
134
|
+
}
|
|
135
|
+
return { outcome: "http", status, reason };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Trim trailing slashes from the configured origin so route paths (absolute, leading-slash) append
|
|
139
|
+
* cleanly. ⛔ A plain scan, NOT `/\/+$/`: on library input that regex backtracks from every start
|
|
140
|
+
* position when the string ends in a non-slash — measured 4.2 s on 100k slashes (CodeQL
|
|
141
|
+
* security/code-scanning/4 on #65). This is O(n).
|
|
142
|
+
*/
|
|
143
|
+
export function normalizeBaseUrl(baseUrl) {
|
|
144
|
+
let end = baseUrl.length;
|
|
145
|
+
while (end > 0 && baseUrl.charCodeAt(end - 1) === 47 /* "/" */)
|
|
146
|
+
end -= 1;
|
|
147
|
+
return baseUrl.slice(0, end);
|
|
148
|
+
}
|
|
149
|
+
export function createTenantClient(opts) {
|
|
150
|
+
const fetchImpl = opts.fetch ?? fetch;
|
|
151
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
152
|
+
const store = opts.contractCache ?? memoryContractCache();
|
|
153
|
+
const now = opts.now ?? Date.now;
|
|
154
|
+
const origin = normalizeBaseUrl(opts.baseUrl);
|
|
155
|
+
function url(path, query) {
|
|
156
|
+
const u = new URL(`${origin}${path}`);
|
|
157
|
+
for (const [k, v] of Object.entries(query ?? {})) {
|
|
158
|
+
if (v !== undefined)
|
|
159
|
+
u.searchParams.set(k, String(v));
|
|
160
|
+
}
|
|
161
|
+
return u.toString();
|
|
162
|
+
}
|
|
163
|
+
async function send(method, target, extraHeaders, body) {
|
|
164
|
+
const headers = {
|
|
165
|
+
authorization: `Bearer ${opts.key}`,
|
|
166
|
+
accept: "application/json",
|
|
167
|
+
...extraHeaders,
|
|
168
|
+
};
|
|
169
|
+
if (body !== undefined)
|
|
170
|
+
headers["content-type"] = "application/json";
|
|
171
|
+
let res;
|
|
172
|
+
let text;
|
|
173
|
+
try {
|
|
174
|
+
res = await fetchImpl(target, {
|
|
175
|
+
method,
|
|
176
|
+
headers,
|
|
177
|
+
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
178
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
179
|
+
});
|
|
180
|
+
// ⛔ THE BODY READ IS INSIDE THE TRY (Codex #65 r1, P2). `fetch` resolves once the HEADERS
|
|
181
|
+
// arrive; the stream can still fail, or the deadline fire, while `text()` consumes it — and
|
|
182
|
+
// that rejection is a transport failure exactly like a refused connect, not an exception the
|
|
183
|
+
// public call may leak.
|
|
184
|
+
text = await res.text();
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
188
|
+
return { ok: false, failure: { outcome: "network", reason: `could not reach ${target}: ${reason}` } };
|
|
189
|
+
}
|
|
190
|
+
let json;
|
|
191
|
+
if (text !== "") {
|
|
192
|
+
try {
|
|
193
|
+
json = JSON.parse(text);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
json = undefined;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return { ok: true, answer: { status: res.status, headers: res.headers, json, textHead: text.slice(0, 200) } };
|
|
200
|
+
}
|
|
201
|
+
// ── contract() ────────────────────────────────────────────────────────────────────────────────
|
|
202
|
+
async function contract(o = {}) {
|
|
203
|
+
const cached = await store.get();
|
|
204
|
+
const nowMs = now();
|
|
205
|
+
const ageSeconds = cached === null ? Number.POSITIVE_INFINITY : Math.max(0, Math.floor((nowMs - cached.fetchedAt) / 1000));
|
|
206
|
+
const fromCache = (entry) => ({
|
|
207
|
+
outcome: "ok",
|
|
208
|
+
doc: entry.doc,
|
|
209
|
+
source: "cache",
|
|
210
|
+
ageSeconds,
|
|
211
|
+
etag: entry.etag,
|
|
212
|
+
contractVersion: entry.contractVersion,
|
|
213
|
+
});
|
|
214
|
+
if (cached !== null && o.refresh !== true && ageSeconds < cached.doc.cache.maxAgeSeconds) {
|
|
215
|
+
return fromCache(cached);
|
|
216
|
+
}
|
|
217
|
+
if (o.offline === true) {
|
|
218
|
+
if (cached !== null)
|
|
219
|
+
return fromCache(cached);
|
|
220
|
+
return { outcome: "missing", reason: "no cached contract and network reads are disabled" };
|
|
221
|
+
}
|
|
222
|
+
// A revalidation that could not complete — the transport failed, or the server answered a
|
|
223
|
+
// TRANSIENT non-2xx (5xx, 429) — leaves the cached document exactly as usable as the policy says:
|
|
224
|
+
// served until `staleRefusalSeconds`, refused by name as `stale` past it (Codex #65 r1, P1:
|
|
225
|
+
// every agent.* call loads the contract first, so a brief server failure at the max-age
|
|
226
|
+
// boundary must not disable every write). A credential refusal (401/403) or a 400 is NOT
|
|
227
|
+
// transient and is returned as itself: the cache covers the server being away, never the key
|
|
228
|
+
// having been revoked or re-scoped.
|
|
229
|
+
const unavailable = (cause) => {
|
|
230
|
+
if (cached === null)
|
|
231
|
+
return cause;
|
|
232
|
+
if (ageSeconds >= cached.doc.cache.staleRefusalSeconds) {
|
|
233
|
+
return { outcome: "stale", ageSeconds, staleRefusalSeconds: cached.doc.cache.staleRefusalSeconds, cause };
|
|
234
|
+
}
|
|
235
|
+
return fromCache(cached);
|
|
236
|
+
};
|
|
237
|
+
const sent = await send("GET", url(CONTRACT_ROUTE), cached?.etag ? { "if-none-match": cached.etag } : {});
|
|
238
|
+
if (!sent.ok)
|
|
239
|
+
return unavailable(sent.failure);
|
|
240
|
+
const { answer } = sent;
|
|
241
|
+
if (answer.status === 429 || answer.status >= 500)
|
|
242
|
+
return unavailable(classify(answer));
|
|
243
|
+
if (answer.status === 304) {
|
|
244
|
+
if (cached === null) {
|
|
245
|
+
return { outcome: "shape", status: 304, reason: "304 with no cached contract to revalidate" };
|
|
246
|
+
}
|
|
247
|
+
const refreshed = { ...cached, fetchedAt: nowMs };
|
|
248
|
+
await store.set(refreshed);
|
|
249
|
+
return { outcome: "ok", doc: cached.doc, source: "revalidated", ageSeconds: 0, etag: cached.etag, contractVersion: cached.contractVersion };
|
|
250
|
+
}
|
|
251
|
+
if (answer.status === 200) {
|
|
252
|
+
const doc = readTenantContract(answer.json);
|
|
253
|
+
if (doc === null) {
|
|
254
|
+
return { outcome: "shape", status: 200, reason: `${CONTRACT_ROUTE} returned a body that does not read as a TenantContract` };
|
|
255
|
+
}
|
|
256
|
+
const contractVersion = answer.headers.get(CONTRACT_VERSION_HEADER) ?? doc.contractVersion;
|
|
257
|
+
const entry = { etag: answer.headers.get("etag"), fetchedAt: nowMs, contractVersion, doc };
|
|
258
|
+
await store.set(entry);
|
|
259
|
+
return { outcome: "ok", doc, source: "network", ageSeconds: 0, etag: entry.etag, contractVersion };
|
|
260
|
+
}
|
|
261
|
+
return classify(answer);
|
|
262
|
+
}
|
|
263
|
+
// ── The open reads ────────────────────────────────────────────────────────────────────────────
|
|
264
|
+
/** A keyset list: the bare array body plus the page's headers. */
|
|
265
|
+
function keysetPage(answer) {
|
|
266
|
+
if (!Array.isArray(answer.json))
|
|
267
|
+
return null;
|
|
268
|
+
const next = answer.headers.get(NEXT_CURSOR_HEADER);
|
|
269
|
+
return {
|
|
270
|
+
rows: answer.json,
|
|
271
|
+
nextCursor: next === null ? null : pageCursor(next),
|
|
272
|
+
total: integerHeader(answer.headers, TOTAL_HEADER),
|
|
273
|
+
head: integerHeader(answer.headers, HEAD_SEQ_HEADER),
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* The mirror's list bodies are the read-model's own view rows; the only shape check a client can
|
|
278
|
+
* make without re-declaring the view is "every row is an object". ⛔ ONE bad row fails the WHOLE
|
|
279
|
+
* page (Codex #65 r1, P2): the cursor and the totals describe the server's page, so a silently
|
|
280
|
+
* dropped row could never be recovered by paging — `ok` with fewer rows would be a lie.
|
|
281
|
+
*/
|
|
282
|
+
function rowsOf(rows) {
|
|
283
|
+
const out = [];
|
|
284
|
+
for (const r of rows) {
|
|
285
|
+
if (!isRecord(r))
|
|
286
|
+
return null;
|
|
287
|
+
out.push(asView(r));
|
|
288
|
+
}
|
|
289
|
+
return out;
|
|
290
|
+
}
|
|
291
|
+
async function issuesList(params = {}) {
|
|
292
|
+
const sent = await send("GET", url("/api/v1/issues", {
|
|
293
|
+
after: params.after,
|
|
294
|
+
limit: params.limit,
|
|
295
|
+
team_id: params.teamId,
|
|
296
|
+
team_key: params.teamKey,
|
|
297
|
+
state: params.state,
|
|
298
|
+
priority: params.priority,
|
|
299
|
+
assignee_id: params.assigneeId,
|
|
300
|
+
assignee: params.assignee,
|
|
301
|
+
cycle: params.cycle,
|
|
302
|
+
blocked: params.blocked,
|
|
303
|
+
sort: params.sort,
|
|
304
|
+
waiting_on: params.waitingOn,
|
|
305
|
+
waiting_mode: params.waitingMode,
|
|
306
|
+
}), {});
|
|
307
|
+
if (!sent.ok)
|
|
308
|
+
return sent.failure;
|
|
309
|
+
if (sent.answer.status !== 200)
|
|
310
|
+
return classify(sent.answer);
|
|
311
|
+
const page = keysetPage(sent.answer);
|
|
312
|
+
const rows = page === null ? null : rowsOf(page.rows);
|
|
313
|
+
if (page === null || rows === null) {
|
|
314
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/issues did not answer an array of rows" };
|
|
315
|
+
}
|
|
316
|
+
return { outcome: "ok", rows, nextCursor: page.nextCursor, total: page.total, head: page.head };
|
|
317
|
+
}
|
|
318
|
+
async function issuesGet(identifier) {
|
|
319
|
+
const sent = await send("GET", url(`/api/v1/issues/${encodeURIComponent(identifier)}`), {});
|
|
320
|
+
if (!sent.ok)
|
|
321
|
+
return sent.failure;
|
|
322
|
+
const { answer } = sent;
|
|
323
|
+
if (answer.status === 404)
|
|
324
|
+
return { outcome: "not-found", status: 404 };
|
|
325
|
+
if (answer.status !== 200)
|
|
326
|
+
return classify(answer);
|
|
327
|
+
if (!isRecord(answer.json))
|
|
328
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/issues/:identifier did not answer an object" };
|
|
329
|
+
return { outcome: "ok", issue: asView(answer.json), head: integerHeader(answer.headers, HEAD_SEQ_HEADER) };
|
|
330
|
+
}
|
|
331
|
+
async function pullsList(params = {}) {
|
|
332
|
+
const sent = await send("GET", url("/api/v1/pulls", { repo: params.repo, state: params.state, blocked: params.blocked, after: params.after, limit: params.limit }), {});
|
|
333
|
+
if (!sent.ok)
|
|
334
|
+
return sent.failure;
|
|
335
|
+
if (sent.answer.status !== 200)
|
|
336
|
+
return classify(sent.answer);
|
|
337
|
+
const page = keysetPage(sent.answer);
|
|
338
|
+
const rows = page === null ? null : rowsOf(page.rows);
|
|
339
|
+
if (page === null || rows === null) {
|
|
340
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/pulls did not answer an array of rows" };
|
|
341
|
+
}
|
|
342
|
+
return {
|
|
343
|
+
outcome: "ok",
|
|
344
|
+
rows,
|
|
345
|
+
nextCursor: page.nextCursor,
|
|
346
|
+
total: page.total,
|
|
347
|
+
blockedOnAskTotal: integerHeader(sent.answer.headers, BLOCKED_ON_ASK_TOTAL_HEADER),
|
|
348
|
+
head: page.head,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
async function pullsGet(nodeId) {
|
|
352
|
+
const sent = await send("GET", url(`/api/v1/pulls/${encodeURIComponent(nodeId)}`), {});
|
|
353
|
+
if (!sent.ok)
|
|
354
|
+
return sent.failure;
|
|
355
|
+
const { answer } = sent;
|
|
356
|
+
if (answer.status === 404)
|
|
357
|
+
return { outcome: "not-found", status: 404 };
|
|
358
|
+
if (answer.status !== 200)
|
|
359
|
+
return classify(answer);
|
|
360
|
+
if (!isRecord(answer.json))
|
|
361
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/pulls/:id did not answer an object" };
|
|
362
|
+
return { outcome: "ok", pull: asView(answer.json) };
|
|
363
|
+
}
|
|
364
|
+
async function projectsList(params = {}) {
|
|
365
|
+
const sent = await send("GET", url("/api/v1/projects", { limit: params.limit, cursor: params.offset }), {});
|
|
366
|
+
if (!sent.ok)
|
|
367
|
+
return sent.failure;
|
|
368
|
+
if (sent.answer.status !== 200)
|
|
369
|
+
return classify(sent.answer);
|
|
370
|
+
const rows = Array.isArray(sent.answer.json) ? rowsOf(sent.answer.json) : null;
|
|
371
|
+
if (rows === null)
|
|
372
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/projects did not answer an array of rows" };
|
|
373
|
+
return { outcome: "ok", rows, head: integerHeader(sent.answer.headers, HEAD_SEQ_HEADER) };
|
|
374
|
+
}
|
|
375
|
+
async function me() {
|
|
376
|
+
const sent = await send("GET", url("/api/v1/me"), {});
|
|
377
|
+
if (!sent.ok)
|
|
378
|
+
return sent.failure;
|
|
379
|
+
const { answer } = sent;
|
|
380
|
+
if (answer.status !== 200)
|
|
381
|
+
return classify(answer);
|
|
382
|
+
const body = answer.json;
|
|
383
|
+
if (!isRecord(body))
|
|
384
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/me did not answer an object" };
|
|
385
|
+
const account = stringField(body, "account");
|
|
386
|
+
const slug = stringField(body, "slug");
|
|
387
|
+
const name = stringField(body, "name");
|
|
388
|
+
const permissions = body["permissions"];
|
|
389
|
+
const principal = body["principal"];
|
|
390
|
+
if (account === null ||
|
|
391
|
+
slug === null ||
|
|
392
|
+
name === null ||
|
|
393
|
+
!(permissions === null || (Array.isArray(permissions) && permissions.every((p) => typeof p === "string"))) ||
|
|
394
|
+
!(principal === "service" || principal === "session")) {
|
|
395
|
+
return { outcome: "shape", status: 200, reason: "GET /api/v1/me returned an unexpected shape" };
|
|
396
|
+
}
|
|
397
|
+
return { outcome: "ok", account, slug, name, permissions, principal };
|
|
398
|
+
}
|
|
399
|
+
// ── The agent proxy ───────────────────────────────────────────────────────────────────────────
|
|
400
|
+
/**
|
|
401
|
+
* One implementation under every typed verb: resolve the route from the (cached) contract, send
|
|
402
|
+
* the input as the body (POST) or the query (GET), and hand the body back under the route's own
|
|
403
|
+
* success table — the set of `outcome` literals this route is documented to answer with a 2xx OR a
|
|
404
|
+
* mapped error status. Any other answer goes through `classify`.
|
|
405
|
+
*/
|
|
406
|
+
async function callAgentRoute(name, input, accept) {
|
|
407
|
+
const doc = await contract();
|
|
408
|
+
if (doc.outcome !== "ok")
|
|
409
|
+
return { ok: false, failure: doc };
|
|
410
|
+
const route = routeByName(doc.doc, name);
|
|
411
|
+
if (route === null) {
|
|
412
|
+
return { ok: false, failure: { outcome: "route-unknown", route: name, routes: doc.doc.routes.map((r) => r.path) } };
|
|
413
|
+
}
|
|
414
|
+
const defined = Object.fromEntries(Object.entries(input).filter(([, v]) => v !== undefined));
|
|
415
|
+
const sent = route.method === "GET"
|
|
416
|
+
? await send("GET", url(route.path, stringify(defined)), {})
|
|
417
|
+
: await send("POST", url(route.path), {}, defined);
|
|
418
|
+
if (!sent.ok)
|
|
419
|
+
return { ok: false, failure: sent.failure };
|
|
420
|
+
const { answer } = sent;
|
|
421
|
+
if (isRecord(answer.json) && accept(answer.json))
|
|
422
|
+
return { ok: true, body: answer.json, status: answer.status };
|
|
423
|
+
return { ok: false, failure: classify(answer) };
|
|
424
|
+
}
|
|
425
|
+
/** A route's success table: the `outcome` literals it answers with a 2xx OR a mapped error status. */
|
|
426
|
+
function outcomes(...names) {
|
|
427
|
+
return (body) => typeof body["outcome"] === "string" && names.includes(body["outcome"]);
|
|
428
|
+
}
|
|
429
|
+
function stringify(input) {
|
|
430
|
+
const out = {};
|
|
431
|
+
for (const [k, v] of Object.entries(input))
|
|
432
|
+
out[k] = String(v);
|
|
433
|
+
return out;
|
|
434
|
+
}
|
|
435
|
+
/** The body, verbatim, with the status stamped on — the pass-through the mirror's own
|
|
436
|
+
* response-shape discipline asks for ("the primitive's own discriminated outcome goes back to the
|
|
437
|
+
* caller near-verbatim"). One narrowing site per verb, typed by the route's declared union. */
|
|
438
|
+
function stamped(body, status) {
|
|
439
|
+
return { ...body, status };
|
|
440
|
+
}
|
|
441
|
+
const WRITE_OUTCOMES = outcomes("succeeded", "exhausted");
|
|
442
|
+
const agent = {
|
|
443
|
+
async issueState(input) {
|
|
444
|
+
const r = await callAgentRoute("issue-state", { ...input }, WRITE_OUTCOMES);
|
|
445
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
446
|
+
},
|
|
447
|
+
async issueLabel(input) {
|
|
448
|
+
const r = await callAgentRoute("issue-label", { ...input }, outcomes("succeeded", "failed"));
|
|
449
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
450
|
+
},
|
|
451
|
+
async issueComment(input) {
|
|
452
|
+
const r = await callAgentRoute("issue-comment", { ...input }, WRITE_OUTCOMES);
|
|
453
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
454
|
+
},
|
|
455
|
+
async issueCreate(input) {
|
|
456
|
+
const r = await callAgentRoute("issue-create", { ...input }, WRITE_OUTCOMES);
|
|
457
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
458
|
+
},
|
|
459
|
+
async reaction(input) {
|
|
460
|
+
const r = await callAgentRoute("reaction", { ...input }, WRITE_OUTCOMES);
|
|
461
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
462
|
+
},
|
|
463
|
+
async attachment(input) {
|
|
464
|
+
const r = await callAgentRoute("attachment", { ...input }, WRITE_OUTCOMES);
|
|
465
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
466
|
+
},
|
|
467
|
+
async attachments(input) {
|
|
468
|
+
const r = await callAgentRoute("attachments", { ...input }, outcomes("succeeded", "rejected", "unauthorized"));
|
|
469
|
+
if (!r.ok)
|
|
470
|
+
return r.failure;
|
|
471
|
+
const reason = stringField(r.body, "reason") ?? "";
|
|
472
|
+
if (r.body["outcome"] === "rejected")
|
|
473
|
+
return { outcome: "not-found", status: 404, reason };
|
|
474
|
+
if (r.body["outcome"] === "unauthorized")
|
|
475
|
+
return { outcome: "unauthorized-upstream", status: r.status, reason };
|
|
476
|
+
return stamped(r.body, r.status);
|
|
477
|
+
},
|
|
478
|
+
async session(input) {
|
|
479
|
+
// The composite has no top-level `outcome`; its sub-results carry their own. Every status the
|
|
480
|
+
// route produces (200/400/502) carries the same body shape, so the table is "has a session".
|
|
481
|
+
const r = await callAgentRoute("session", { ...input }, (body) => isRecord(body["session"]));
|
|
482
|
+
if (!r.ok)
|
|
483
|
+
return r.failure;
|
|
484
|
+
return { outcome: "ok", ...stamped(r.body, r.status) };
|
|
485
|
+
},
|
|
486
|
+
async ask(input) {
|
|
487
|
+
const r = await callAgentRoute("ask", { ...input }, outcomes("created", "created-but-relations-partial", "exhausted"));
|
|
488
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
489
|
+
},
|
|
490
|
+
async askAccept(input) {
|
|
491
|
+
const r = await callAgentRoute("ask-accept", { ...input }, outcomes("recorded", "refused", "record-failed"));
|
|
492
|
+
return r.ok ? stamped(r.body, r.status) : r.failure;
|
|
493
|
+
},
|
|
494
|
+
};
|
|
495
|
+
return {
|
|
496
|
+
contract,
|
|
497
|
+
me,
|
|
498
|
+
issues: { list: issuesList, get: issuesGet },
|
|
499
|
+
pulls: { list: pullsList, get: pullsGet },
|
|
500
|
+
projects: { list: projectsList },
|
|
501
|
+
agent,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=tenant-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-client.js","sourceRoot":"","sources":["../src/tenant-client.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,qGAAqG;AACrG,EAAE;AACF,qGAAqG;AACrG,kGAAkG;AAClG,mGAAmG;AACnG,2FAA2F;AAC3F,kGAAkG;AAClG,uFAAuF;AACvF,gGAAgG;AAChG,sBAAsB;AACtB,iGAAiG;AACjG,qGAAqG;AACrG,iGAAiG;AACjG,kGAAkG;AAClG,EAAE;AACF,mGAAmG;AACnG,sGAAsG;AACtG,qGAAqG;AACrG,uGAAuG;AACvG,oGAAoG;AACpG,uGAAuG;AACvG,8EAA8E;AAC9E,EAAE;AACF,qGAAqG;AACrG,iGAAiG;AACjG,gGAAgG;AAChG,4FAA4F;AAC5F,4EAA4E;AAS5E,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,WAAW,GAEZ,MAAM,sBAAsB,CAAC;AAE9B,mGAAmG;AAEnG,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAiBzC,qEAAqE;AACrE,MAAM,UAAU,mBAAmB;IACjC,IAAI,KAAK,GAA8B,IAAI,CAAC;IAC5C,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;QAChB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;YACT,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC;AAmFD,uDAAuD;AACvD,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAmB,CAAC;AAC7B,CAAC;AAyQD,mGAAmG;AAEnG,qFAAqF;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AACzD,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AAC3E,sFAAsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AAErE,mGAAmG;AAEnG,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAmB,GAA4B;IAC5D,OAAO,GAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,GAA4B,EAAE,GAAW;IAC5D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,GAA4B,EAAE,GAAW;IAC5D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,iGAAiG;AACjG,SAAS,aAAa,CAAC,OAAgB,EAAE,IAAY;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAaD,iGAAiG;AACjG,SAAS,QAAQ,CAAC,MAAc;IAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,CACL,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;YAClC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;YACjC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;YACnC,MAAM,CAAC,QAAQ,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClH,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;YACnD,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;SAClD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnH,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9F,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS;QAAE,GAAG,IAAI,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAyB;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE9C,SAAS,GAAG,CAAC,IAAY,EAAE,KAAmD;QAC5E,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,SAAS;gBAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,UAAU,IAAI,CACjB,MAAsB,EACtB,MAAc,EACd,YAAoC,EACpC,IAAc;QAEd,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,EAAE,kBAAkB;YAC1B,GAAG,YAAY;SAChB,CAAC;QACF,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACrE,IAAI,GAAa,CAAC;QAClB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE;gBAC5B,MAAM;gBACN,OAAO;gBACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;aACvC,CAAC,CAAC;YACH,0FAA0F;YAC1F,4FAA4F;YAC5F,6FAA6F;YAC7F,wBAAwB;YACxB,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,MAAM,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;QACxG,CAAC;QACD,IAAI,IAAa,CAAC;QAClB,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAChH,CAAC;IAED,iGAAiG;IAEjG,KAAK,UAAU,QAAQ,CAAC,IAAqB,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3H,MAAM,SAAS,GAAG,CAAC,KAAyB,EAAkB,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,OAAO;YACf,UAAU;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,eAAe,EAAE,KAAK,CAAC,eAAe;SACvC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACzF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;QAC7F,CAAC;QAED,0FAA0F;QAC1F,kGAAkG;QAClG,4FAA4F;QAC5F,wFAAwF;QACxF,yFAAyF;QACzF,6FAA6F;QAC7F,oCAAoC;QACpC,MAAM,WAAW,GAAG,CAAC,KAA0B,EAAkB,EAAE;YACjE,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAClC,IAAI,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC;YAC5G,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;YAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAExF,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC;YAChG,CAAC;YACD,MAAM,SAAS,GAAuB,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACtE,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9I,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,cAAc,yDAAyD,EAAE,CAAC;YAC/H,CAAC;YACD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC;YAC3F,MAAM,KAAK,GAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;YAC/G,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;QACrG,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,iGAAiG;IAEjG,kEAAkE;IAClE,SAAS,UAAU,CAAC,MAAc;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YACnD,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;YAClD,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC;SACrD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAS,MAAM,CAAmB,IAAe;QAC/C,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,SAA0B,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CACrB,KAAK,EACL,GAAG,CAAC,gBAAgB,EAAE;YACpB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;SACjC,CAAC,EACF,EAAE,CACH,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAY,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC;QACzG,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAClG,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,UAAkB;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACxE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,yDAAyD,EAAE,CAAC;QACxI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAkB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;IAC9H,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,SAAyB,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CACrB,KAAK,EACL,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EACnI,EAAE,CACH,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;QACxG,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,2BAA2B,CAAC;YAClF,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,MAAc;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACxE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAC;QAC/H,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAiB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,SAA4B,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAc,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5F,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;QAC5H,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;IAC5F,CAAC;IAED,KAAK,UAAU,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;QACjH,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IACE,OAAO,KAAK,IAAI;YAChB,IAAI,KAAK,IAAI;YACb,IAAI,KAAK,IAAI;YACb,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;YAC1G,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,CAAC,EACrD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC;QAClG,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IACxE,CAAC;IAED,iGAAiG;IAEjG;;;;;OAKG;IACH,KAAK,UAAU,cAAc,CAC3B,IAAoB,EACpB,KAA8B,EAC9B,MAAkD;QAElD,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACtH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;QAC7F,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,KAAK;YACpB,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5D,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAChH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,sGAAsG;IACtG,SAAS,QAAQ,CAAC,GAAG,KAAwB;QAC3C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,SAAS,SAAS,CAAC,KAA8B;QAC/C,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;oGAEgG;IAChG,SAAS,OAAO,CAAmB,IAA6B,EAAE,MAAc;QAC9E,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAO,CAAC;IAClC,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE1D,MAAM,KAAK,GAA0B;QACnC,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAiD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACtG,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7F,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAkD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvG,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,KAAK;YACtB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,eAAe,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;YAC9E,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAmD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxG,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,KAAK;YACrB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAqE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1H,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAK;YAClB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;YACzE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAkE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvH,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAiD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACtG,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,KAAK;YACrB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;YAC/G,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,OAAO,CAAC;YAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,UAAU;gBAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAC3F,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc;gBAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAChH,OAAO,OAAO,CAAuD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACzF,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,8FAA8F;YAC9F,6FAA6F;YAC7F,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,OAAO,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAA6D,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACrH,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,+BAA+B,EAAE,WAAW,CAAC,CAAC,CAAC;YACvH,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAoE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzH,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,KAAK;YACnB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;YAC7G,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAkF,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvI,CAAC;KACF,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,EAAE;QACF,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE;QAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE;QACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAChC,KAAK;KACN,CAAC;AACJ,CAAC"}
|