@jobshimo/browser-link 0.32.0 → 0.34.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/dist/agent-instructions/content.js +14 -7
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/bridge/dispatch.js +12 -2
- package/dist/bridge/dispatch.js.map +1 -1
- package/dist/bridge/ws-bridge.d.ts +14 -0
- package/dist/bridge/ws-bridge.js +14 -2
- package/dist/bridge/ws-bridge.js.map +1 -1
- package/dist/commands/map.js +159 -12
- package/dist/commands/map.js.map +1 -1
- package/dist/extension/background.js +49 -19
- package/dist/extension/background.js.map +1 -1
- package/dist/extension/manifest.json +3 -2
- package/dist/extension/reconnect-policy.d.ts +88 -21
- package/dist/extension/reconnect-policy.js +115 -30
- package/dist/extension/reconnect-policy.js.map +1 -1
- package/dist/map/db.js +24 -0
- package/dist/map/db.js.map +1 -1
- package/dist/map/queries.d.ts +73 -0
- package/dist/map/queries.js +101 -9
- package/dist/map/queries.js.map +1 -1
- package/dist/map/tools.d.ts +13 -0
- package/dist/map/tools.js +201 -25
- package/dist/map/tools.js.map +1 -1
- package/dist/tools/browser-definitions.js +3 -2
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/empty-tabs-hint.d.ts +15 -0
- package/dist/tools/empty-tabs-hint.js +115 -0
- package/dist/tools/empty-tabs-hint.js.map +1 -0
- package/dist/tools/responses.d.ts +7 -0
- package/dist/tools/responses.js +10 -0
- package/dist/tools/responses.js.map +1 -1
- package/dist/tools/server-instructions.js +22 -4
- package/dist/tools/server-instructions.js.map +1 -1
- package/package.json +1 -1
|
@@ -19,28 +19,69 @@
|
|
|
19
19
|
* minus the human gesture — accepted, like the port-squatting caveat.
|
|
20
20
|
*/
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* the worker being torn down. If Chrome kills the worker anyway, the
|
|
30
|
-
* persisted `pendingReconnect:*` state resumes the budget on the next wake
|
|
31
|
-
* (see background.ts's resumePendingReconnects). Past the last entry the
|
|
32
|
-
* budget is exhausted and the popup's Connect button is the fallback, as
|
|
33
|
-
* before this feature existed.
|
|
22
|
+
* How long a dropped tab keeps being retried: 10 minutes. Measured in a real
|
|
23
|
+
* session, the primary bridge process died, the old 15s budget ran out while
|
|
24
|
+
* the agent was still diagnosing, and the tab stayed released until the
|
|
25
|
+
* human pressed Connect again. A retry against a dead loopback port is
|
|
26
|
+
* nearly free; giving up costs the whole session, so keep trying while the
|
|
27
|
+
* Chrome tab is still open. Past the window the popup's Connect button is
|
|
28
|
+
* the fallback, as before.
|
|
34
29
|
*/
|
|
35
|
-
export const
|
|
30
|
+
export const RECONNECT_WINDOW_MS = 10 * 60_000;
|
|
31
|
+
/** Slowest pace of the backoff (the plateau after the ramp). */
|
|
32
|
+
export const RECONNECT_MAX_DELAY_MS = 30_000;
|
|
33
|
+
/** First, fast steps — sized for the common failure, a primary restarting
|
|
34
|
+
* within seconds — before settling onto the plateau. */
|
|
35
|
+
const RECONNECT_RAMP_MS = [1000, 2000, 4000, 8000, 15_000];
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* user with a reconnect long after they moved on — past this window the
|
|
40
|
-
* entry is discarded and the popup's Connect button is the fallback.
|
|
41
|
-
* Matches the temperament of WS_IDLE_SWEEP_MS (one minute).
|
|
37
|
+
* chrome.alarms' minimum delay (Chrome 120+). Used for the safety-net
|
|
38
|
+
* alarm that wakes a sleeping MV3 service worker (see background.ts).
|
|
42
39
|
*/
|
|
43
|
-
export const
|
|
40
|
+
export const ALARM_MIN_DELAY_MS = 30_000;
|
|
41
|
+
/** Capped exponential backoff: the `ramp` steps, then `capMs` repeated for
|
|
42
|
+
* as long as the cumulative scheduled wait stays within `windowMs`. */
|
|
43
|
+
export function buildReconnectDelays(opts = {}) {
|
|
44
|
+
const ramp = opts.ramp ?? RECONNECT_RAMP_MS;
|
|
45
|
+
const capMs = opts.capMs ?? RECONNECT_MAX_DELAY_MS;
|
|
46
|
+
const windowMs = opts.windowMs ?? RECONNECT_WINDOW_MS;
|
|
47
|
+
const delays = [];
|
|
48
|
+
let total = 0;
|
|
49
|
+
for (const d of ramp) {
|
|
50
|
+
if (total + d > windowMs)
|
|
51
|
+
return delays;
|
|
52
|
+
delays.push(d);
|
|
53
|
+
total += d;
|
|
54
|
+
}
|
|
55
|
+
while (total + capMs <= windowMs) {
|
|
56
|
+
delays.push(capMs);
|
|
57
|
+
total += capMs;
|
|
58
|
+
}
|
|
59
|
+
return delays;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Backoff schedule, one entry per attempt: 1s, 2s, 4s, 8s, 15s, then every
|
|
63
|
+
* 30s until the 10-minute window is spent (24 attempts, exactly 600s of
|
|
64
|
+
* scheduled wait; each attempt's own duration — debugger attach, CDP
|
|
65
|
+
* enables, WS round trip — adds on top). No jitter: it is a single local
|
|
66
|
+
* client talking to a single loopback port, so there is no herd to spread.
|
|
67
|
+
*
|
|
68
|
+
* MV3 durability: plain timers cover the fast ramp (each fire touches
|
|
69
|
+
* chrome.* APIs, which resets the worker's ~30s idle clock), but the 30s
|
|
70
|
+
* plateau lets Chrome tear the worker down between attempts. background.ts
|
|
71
|
+
* therefore mirrors every armed attempt into `pendingReconnect:*` storage
|
|
72
|
+
* AND a `chrome.alarms` safety net; the alarm wakes the worker, which
|
|
73
|
+
* resumes from storage (see resumePendingReconnects).
|
|
74
|
+
*/
|
|
75
|
+
export const RECONNECT_DELAYS_MS = buildReconnectDelays();
|
|
76
|
+
/**
|
|
77
|
+
* How long a persisted `pendingReconnect:*` entry stays resumable. Each
|
|
78
|
+
* schedule refreshes `updatedAt`, so this only has to cover the longest
|
|
79
|
+
* gap between schedules; it is set to the whole retry window plus a minute
|
|
80
|
+
* of slack so the stored state always outlives the schedule it describes.
|
|
81
|
+
* Past it the entry is discarded and the popup's Connect button is the
|
|
82
|
+
* fallback.
|
|
83
|
+
*/
|
|
84
|
+
export const RECONNECT_STATE_TTL_MS = RECONNECT_WINDOW_MS + 60_000;
|
|
44
85
|
/** chrome.storage.session key prefix for per-tab reconnect state — sits
|
|
45
86
|
* alongside the existing `prevTabId:*` keys (same area, same per-browser-
|
|
46
87
|
* session lifetime, same per-Chrome-tab keying). */
|
|
@@ -76,6 +117,13 @@ export function reconnectDelayMs(attempt, delays = RECONNECT_DELAYS_MS) {
|
|
|
76
117
|
export function isInvoluntaryClose(ctx) {
|
|
77
118
|
return ctx.tracked && ctx.registered && !ctx.wasClean;
|
|
78
119
|
}
|
|
120
|
+
/** Remaining wait for a resumed attempt, or `undefined` when the entry has
|
|
121
|
+
* no `dueAt` (the scheduler then uses the attempt's regular delay). */
|
|
122
|
+
export function resumeDelayMs(state, now) {
|
|
123
|
+
if (state.dueAt === undefined)
|
|
124
|
+
return undefined;
|
|
125
|
+
return Math.max(0, state.dueAt - now);
|
|
126
|
+
}
|
|
79
127
|
/** Runtime shape guard for a stored `pendingReconnect:*` value — storage
|
|
80
128
|
* contents are untrusted (corruption, future shape changes), so malformed
|
|
81
129
|
* entries are rejected here and discarded by the caller. */
|
|
@@ -87,7 +135,10 @@ export function parseStoredReconnectState(value) {
|
|
|
87
135
|
return null;
|
|
88
136
|
if (typeof s.updatedAt !== 'number' || !Number.isFinite(s.updatedAt))
|
|
89
137
|
return null;
|
|
90
|
-
|
|
138
|
+
const dueAt = typeof s.dueAt === 'number' && Number.isFinite(s.dueAt) ? s.dueAt : undefined;
|
|
139
|
+
return dueAt === undefined
|
|
140
|
+
? { attempt: s.attempt, updatedAt: s.updatedAt }
|
|
141
|
+
: { attempt: s.attempt, updatedAt: s.updatedAt, dueAt };
|
|
91
142
|
}
|
|
92
143
|
/** Whether a persisted reconnect entry is still worth resuming. A negative
|
|
93
144
|
* age (clock went backwards) counts as stale — the fallback is just the
|
|
@@ -96,6 +147,32 @@ export function isReconnectStateFresh(updatedAt, now) {
|
|
|
96
147
|
const age = now - updatedAt;
|
|
97
148
|
return age >= 0 && age < RECONNECT_STATE_TTL_MS;
|
|
98
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Decide, from a snapshot of `chrome.storage.session`, which persisted
|
|
152
|
+
* reconnect cycles to resume. Pure so the race with a concurrent cancel is
|
|
153
|
+
* unit-testable: `cancelledSince(tabId)` must answer "was this tab cancelled
|
|
154
|
+
* (disconnect / manual Connect / tab removal) after the snapshot read began?".
|
|
155
|
+
* Such a tab is neither resumed NOR discarded — the canceller already cleared
|
|
156
|
+
* storage, and a fresh cycle scheduled since then must not be wiped.
|
|
157
|
+
*/
|
|
158
|
+
export function planResume(stored, now, ctx) {
|
|
159
|
+
const plan = { resume: [], discard: [] };
|
|
160
|
+
for (const [key, value] of Object.entries(stored)) {
|
|
161
|
+
const tabId = tabIdFromReconnectKey(key);
|
|
162
|
+
if (tabId === null)
|
|
163
|
+
continue;
|
|
164
|
+
if (ctx.cancelledSince(tabId))
|
|
165
|
+
continue;
|
|
166
|
+
const state = parseStoredReconnectState(value);
|
|
167
|
+
if (state && isReconnectStateFresh(state.updatedAt, now) && !ctx.isLive(tabId)) {
|
|
168
|
+
plan.resume.push({ tabId, attempt: state.attempt, delayMs: resumeDelayMs(state, now) });
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
plan.discard.push(tabId);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return plan;
|
|
175
|
+
}
|
|
99
176
|
export function createReconnectScheduler(options) {
|
|
100
177
|
const delays = options.delaysMs ?? RECONNECT_DELAYS_MS;
|
|
101
178
|
const setTimer = options.setTimer ?? ((fn, delayMs) => setTimeout(fn, delayMs));
|
|
@@ -104,23 +181,26 @@ export function createReconnectScheduler(options) {
|
|
|
104
181
|
clearTimeout(handle);
|
|
105
182
|
});
|
|
106
183
|
const pending = new Map();
|
|
184
|
+
let cancelSeq = 0;
|
|
185
|
+
const cancelledAt = new Map();
|
|
107
186
|
const notify = (tabId, state) => {
|
|
108
187
|
options.onStateChange?.(tabId, state);
|
|
109
188
|
};
|
|
110
|
-
function arm(tabId, entry, attempt) {
|
|
111
|
-
const
|
|
112
|
-
if (
|
|
189
|
+
function arm(tabId, entry, attempt, delayOverrideMs) {
|
|
190
|
+
const stepMs = reconnectDelayMs(attempt, delays);
|
|
191
|
+
if (stepMs === undefined) {
|
|
113
192
|
// Budget exhausted — end the cycle cleanly. The popup's Connect
|
|
114
193
|
// button remains the fallback, exactly as before this feature.
|
|
115
194
|
pending.delete(tabId);
|
|
116
195
|
notify(tabId, null);
|
|
117
196
|
return false;
|
|
118
197
|
}
|
|
198
|
+
const delayMs = delayOverrideMs ?? stepMs;
|
|
119
199
|
entry.attempt = attempt;
|
|
120
200
|
entry.timer = setTimer(() => {
|
|
121
201
|
void fire(tabId, entry);
|
|
122
202
|
}, delayMs);
|
|
123
|
-
notify(tabId, { attempt });
|
|
203
|
+
notify(tabId, { attempt, delayMs });
|
|
124
204
|
return true;
|
|
125
205
|
}
|
|
126
206
|
async function fire(tabId, entry) {
|
|
@@ -144,22 +224,27 @@ export function createReconnectScheduler(options) {
|
|
|
144
224
|
notify(tabId, null);
|
|
145
225
|
}
|
|
146
226
|
return {
|
|
147
|
-
schedule(tabId, startAttempt = 0) {
|
|
227
|
+
schedule(tabId, startAttempt = 0, firstDelayMs) {
|
|
148
228
|
if (pending.has(tabId))
|
|
149
229
|
return false;
|
|
150
230
|
const entry = { attempt: startAttempt, timer: undefined };
|
|
151
231
|
pending.set(tabId, entry);
|
|
152
|
-
return arm(tabId, entry, startAttempt);
|
|
232
|
+
return arm(tabId, entry, startAttempt, firstDelayMs);
|
|
153
233
|
},
|
|
154
234
|
cancel(tabId) {
|
|
235
|
+
cancelledAt.set(tabId, ++cancelSeq);
|
|
155
236
|
const entry = pending.get(tabId);
|
|
156
|
-
if (
|
|
157
|
-
return false;
|
|
158
|
-
if (entry.timer !== undefined)
|
|
237
|
+
if (entry?.timer !== undefined)
|
|
159
238
|
clearTimer(entry.timer);
|
|
160
239
|
pending.delete(tabId);
|
|
161
240
|
notify(tabId, null);
|
|
162
|
-
return
|
|
241
|
+
return entry !== undefined;
|
|
242
|
+
},
|
|
243
|
+
epoch() {
|
|
244
|
+
return cancelSeq;
|
|
245
|
+
},
|
|
246
|
+
wasCancelledSince(tabId, epoch) {
|
|
247
|
+
return (cancelledAt.get(tabId) ?? 0) > epoch;
|
|
163
248
|
},
|
|
164
249
|
isPending(tabId) {
|
|
165
250
|
return pending.has(tabId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconnect-policy.js","sourceRoot":"","sources":["../src/reconnect-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH
|
|
1
|
+
{"version":3,"file":"reconnect-policy.js","sourceRoot":"","sources":["../src/reconnect-policy.ts"],"names":[],"mappings":"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"}
|
package/dist/map/db.js
CHANGED
|
@@ -97,6 +97,30 @@ function runMigrations(db) {
|
|
|
97
97
|
);
|
|
98
98
|
|
|
99
99
|
CREATE INDEX IF NOT EXISTS idx_flows_app ON flows(app_id);
|
|
100
|
+
`);
|
|
101
|
+
// Mechanisms and pitfalls: what an app does underneath ("a GET of the item
|
|
102
|
+
// URL completes it") and what does NOT work ("click on the next link
|
|
103
|
+
// returns ok but never navigates"). A separate table, not new values for
|
|
104
|
+
// entries.kind: that column has a CHECK constraint, and SQLite cannot
|
|
105
|
+
// alter a CHECK in place — widening it means rebuilding `entries` (copy,
|
|
106
|
+
// drop, rename), which is exactly the kind of rewrite the user's map must
|
|
107
|
+
// never go through. Additive CREATE-IF-NOT-EXISTS, same pattern as
|
|
108
|
+
// `flows`: an older DB picks it up on next open and no existing row is
|
|
109
|
+
// touched. Identified by (app, kind, key) — a stable slug, like a flow name.
|
|
110
|
+
db.exec(`
|
|
111
|
+
CREATE TABLE IF NOT EXISTS insights (
|
|
112
|
+
id INTEGER PRIMARY KEY,
|
|
113
|
+
app_id INTEGER NOT NULL REFERENCES apps(id) ON DELETE CASCADE,
|
|
114
|
+
kind TEXT NOT NULL CHECK (kind IN ('mechanism', 'pitfall')),
|
|
115
|
+
key TEXT NOT NULL,
|
|
116
|
+
description TEXT NOT NULL,
|
|
117
|
+
symptom TEXT,
|
|
118
|
+
created_at TEXT NOT NULL,
|
|
119
|
+
updated_at TEXT NOT NULL,
|
|
120
|
+
UNIQUE(app_id, kind, key)
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
CREATE INDEX IF NOT EXISTS idx_insights_app ON insights(app_id);
|
|
100
124
|
`);
|
|
101
125
|
// v0.20.0: normalize apps.origin rows written before the write path
|
|
102
126
|
// canonicalized origins (see origin.ts). Before this release, save
|
package/dist/map/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/map/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/map/db.ts"],"names":[],"mappings":"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"}
|
package/dist/map/queries.d.ts
CHANGED
|
@@ -77,6 +77,10 @@ export interface RecallInput {
|
|
|
77
77
|
}
|
|
78
78
|
export interface RecallResult {
|
|
79
79
|
app: AppRow | null;
|
|
80
|
+
/** Listed first on purpose: a pitfall is the most expensive thing to
|
|
81
|
+
* rediscover, so it is the first thing an agent reads. */
|
|
82
|
+
pitfalls: InsightRow[];
|
|
83
|
+
mechanisms: InsightRow[];
|
|
80
84
|
entries: EntryRow[];
|
|
81
85
|
flows: FlowRow[];
|
|
82
86
|
}
|
|
@@ -90,16 +94,28 @@ export declare function recordUse(input: RecordUseInput): EntryRow | null;
|
|
|
90
94
|
export interface ForgetInput {
|
|
91
95
|
entry_id?: number;
|
|
92
96
|
app_id?: number;
|
|
97
|
+
/** Delete one mechanism/pitfall, identified the way `recall` returns it. */
|
|
98
|
+
insight?: {
|
|
99
|
+
app_id: number;
|
|
100
|
+
kind: InsightKind;
|
|
101
|
+
key: string;
|
|
102
|
+
};
|
|
93
103
|
reason?: string;
|
|
94
104
|
}
|
|
95
105
|
export interface ForgetResult {
|
|
96
106
|
deleted_entries: number;
|
|
97
107
|
deleted_apps: number;
|
|
108
|
+
deleted_insights: number;
|
|
98
109
|
}
|
|
99
110
|
export declare function forget(input: ForgetInput): ForgetResult;
|
|
111
|
+
/** Run `fn` in one SQLite transaction: either every write inside lands or
|
|
112
|
+
* none does. Nests safely (better-sqlite3 uses savepoints). */
|
|
113
|
+
export declare function inTransaction<T>(fn: () => T): T;
|
|
100
114
|
export declare function renameApp(app_id: number, new_app_key: string): AppRow | null;
|
|
101
115
|
export declare function listApps(): AppRow[];
|
|
102
116
|
export interface AppSummary extends AppRow {
|
|
117
|
+
/** Pitfalls + mechanisms. */
|
|
118
|
+
insights: number;
|
|
103
119
|
entries: number;
|
|
104
120
|
flows: number;
|
|
105
121
|
}
|
|
@@ -152,10 +168,39 @@ export declare function findAppByOriginAndKey(origin: string, app_key: string):
|
|
|
152
168
|
* `map export`) is passive and must not affect map freshness.
|
|
153
169
|
*/
|
|
154
170
|
export declare function listEntries(app_id: number): EntryRow[];
|
|
171
|
+
/** Compact form of an insight for the inline hint (no ids or timestamps). */
|
|
172
|
+
export interface InsightSummary {
|
|
173
|
+
key: string;
|
|
174
|
+
description: string;
|
|
175
|
+
symptom?: string;
|
|
176
|
+
}
|
|
177
|
+
/** The recalled content of a SMALL map, carried inside the list_tabs hint
|
|
178
|
+
* so the agent skips the `browser.map.recall` round trip. Same section
|
|
179
|
+
* order as `RecallResult`: pitfalls first. */
|
|
180
|
+
export interface MapHintInline {
|
|
181
|
+
pitfalls: InsightSummary[];
|
|
182
|
+
mechanisms: InsightSummary[];
|
|
183
|
+
entries: {
|
|
184
|
+
url_pattern: string;
|
|
185
|
+
kind: EntryKind;
|
|
186
|
+
purpose: string;
|
|
187
|
+
payload: unknown;
|
|
188
|
+
}[];
|
|
189
|
+
flows: {
|
|
190
|
+
name: string;
|
|
191
|
+
description: string | null;
|
|
192
|
+
steps: unknown;
|
|
193
|
+
}[];
|
|
194
|
+
}
|
|
155
195
|
export interface MapHint {
|
|
156
196
|
app_key: string;
|
|
157
197
|
entries: number;
|
|
158
198
|
flows: number;
|
|
199
|
+
mechanisms: number;
|
|
200
|
+
pitfalls: number;
|
|
201
|
+
/** Present only when the map is small (see `INLINE_MAX_ITEMS` /
|
|
202
|
+
* `INLINE_MAX_BYTES`); otherwise the counts above are all there is. */
|
|
203
|
+
inline?: MapHintInline;
|
|
159
204
|
}
|
|
160
205
|
/**
|
|
161
206
|
* Lean existence-and-count lookup for a tab's origin — powers the optional
|
|
@@ -234,6 +279,34 @@ export declare function restoreFlow(input: RestoreFlowInput): {
|
|
|
234
279
|
app: AppRow;
|
|
235
280
|
flow: FlowRow;
|
|
236
281
|
};
|
|
282
|
+
export type InsightKind = 'mechanism' | 'pitfall';
|
|
283
|
+
export interface InsightRow {
|
|
284
|
+
id: number;
|
|
285
|
+
app_id: number;
|
|
286
|
+
kind: InsightKind;
|
|
287
|
+
key: string;
|
|
288
|
+
description: string;
|
|
289
|
+
symptom: string | null;
|
|
290
|
+
created_at: string;
|
|
291
|
+
updated_at: string;
|
|
292
|
+
}
|
|
293
|
+
export interface SaveInsightInput {
|
|
294
|
+
origin: string;
|
|
295
|
+
app_key?: string | null;
|
|
296
|
+
title?: string | null;
|
|
297
|
+
kind: InsightKind;
|
|
298
|
+
key: string;
|
|
299
|
+
description: string;
|
|
300
|
+
symptom?: string | null;
|
|
301
|
+
}
|
|
302
|
+
/** Upsert on (app, kind, key): re-saving a key replaces its description and
|
|
303
|
+
* symptom and bumps updated_at. */
|
|
304
|
+
export declare function saveInsight(input: SaveInsightInput): {
|
|
305
|
+
app: AppRow;
|
|
306
|
+
insight: InsightRow;
|
|
307
|
+
};
|
|
308
|
+
/** Every insight of one kind saved for an app, alphabetical by key. */
|
|
309
|
+
export declare function listInsights(app_id: number, kind: InsightKind): InsightRow[];
|
|
237
310
|
/** Every flow recipe saved for an app, alphabetical by name. */
|
|
238
311
|
export declare function listFlows(app_id: number): FlowRow[];
|
|
239
312
|
/**
|
package/dist/map/queries.js
CHANGED
|
@@ -149,7 +149,7 @@ export function recall(input) {
|
|
|
149
149
|
.get(origin);
|
|
150
150
|
}
|
|
151
151
|
if (!app)
|
|
152
|
-
return { app: null, entries: [], flows: [] };
|
|
152
|
+
return { app: null, pitfalls: [], mechanisms: [], entries: [], flows: [] };
|
|
153
153
|
// Touch last_seen_at so apps that are actively used bubble up.
|
|
154
154
|
db.prepare('UPDATE apps SET last_seen_at = ? WHERE id = ?').run(now(), app.id);
|
|
155
155
|
const pathname = input.url ? extractPathname(input.url) : null;
|
|
@@ -163,7 +163,13 @@ export function recall(input) {
|
|
|
163
163
|
// Flow recipes are not url_pattern-scoped (see the schema comment in
|
|
164
164
|
// db.ts) — recall always returns every flow saved for the app, regardless
|
|
165
165
|
// of the optional `url` filter.
|
|
166
|
-
return {
|
|
166
|
+
return {
|
|
167
|
+
app,
|
|
168
|
+
pitfalls: listInsights(app.id, 'pitfall'),
|
|
169
|
+
mechanisms: listInsights(app.id, 'mechanism'),
|
|
170
|
+
entries: rows.map(hydrate),
|
|
171
|
+
flows: listFlows(app.id),
|
|
172
|
+
};
|
|
167
173
|
}
|
|
168
174
|
function extractPathname(url) {
|
|
169
175
|
try {
|
|
@@ -191,17 +197,36 @@ export function forget(input) {
|
|
|
191
197
|
const db = getDb();
|
|
192
198
|
if (input.entry_id) {
|
|
193
199
|
const info = db.prepare('DELETE FROM entries WHERE id = ?').run(input.entry_id);
|
|
194
|
-
return { deleted_entries: info.changes, deleted_apps: 0 };
|
|
200
|
+
return { deleted_entries: info.changes, deleted_apps: 0, deleted_insights: 0 };
|
|
195
201
|
}
|
|
196
202
|
if (input.app_id) {
|
|
197
|
-
// ON DELETE CASCADE wipes entries.
|
|
203
|
+
// ON DELETE CASCADE wipes entries, flows and insights.
|
|
198
204
|
const before = db
|
|
199
205
|
.prepare('SELECT COUNT(*) AS n FROM entries WHERE app_id = ?')
|
|
200
206
|
.get(input.app_id);
|
|
207
|
+
const insights = db
|
|
208
|
+
.prepare('SELECT COUNT(*) AS n FROM insights WHERE app_id = ?')
|
|
209
|
+
.get(input.app_id);
|
|
201
210
|
const info = db.prepare('DELETE FROM apps WHERE id = ?').run(input.app_id);
|
|
202
|
-
return {
|
|
211
|
+
return {
|
|
212
|
+
deleted_entries: before.n,
|
|
213
|
+
deleted_apps: info.changes,
|
|
214
|
+
deleted_insights: info.changes > 0 ? insights.n : 0,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
if (input.insight) {
|
|
218
|
+
const { app_id, kind, key } = input.insight;
|
|
219
|
+
const info = db
|
|
220
|
+
.prepare('DELETE FROM insights WHERE app_id = ? AND kind = ? AND key = ?')
|
|
221
|
+
.run(app_id, kind, key);
|
|
222
|
+
return { deleted_entries: 0, deleted_apps: 0, deleted_insights: info.changes };
|
|
203
223
|
}
|
|
204
|
-
return { deleted_entries: 0, deleted_apps: 0 };
|
|
224
|
+
return { deleted_entries: 0, deleted_apps: 0, deleted_insights: 0 };
|
|
225
|
+
}
|
|
226
|
+
/** Run `fn` in one SQLite transaction: either every write inside lands or
|
|
227
|
+
* none does. Nests safely (better-sqlite3 uses savepoints). */
|
|
228
|
+
export function inTransaction(fn) {
|
|
229
|
+
return getDb().transaction(fn)();
|
|
205
230
|
}
|
|
206
231
|
export function renameApp(app_id, new_app_key) {
|
|
207
232
|
const db = getDb();
|
|
@@ -225,7 +250,8 @@ export function listAppsWithCounts() {
|
|
|
225
250
|
return getDb()
|
|
226
251
|
.prepare(`SELECT a.*,
|
|
227
252
|
(SELECT COUNT(*) FROM entries e WHERE e.app_id = a.id) AS entries,
|
|
228
|
-
(SELECT COUNT(*) FROM flows f WHERE f.app_id = a.id) AS flows
|
|
253
|
+
(SELECT COUNT(*) FROM flows f WHERE f.app_id = a.id) AS flows,
|
|
254
|
+
(SELECT COUNT(*) FROM insights i WHERE i.app_id = a.id) AS insights
|
|
229
255
|
FROM apps a
|
|
230
256
|
ORDER BY a.last_seen_at DESC`)
|
|
231
257
|
.all();
|
|
@@ -295,6 +321,34 @@ export function listEntries(app_id) {
|
|
|
295
321
|
.all(app_id);
|
|
296
322
|
return rows.map(hydrate);
|
|
297
323
|
}
|
|
324
|
+
/** A map is inlined into the hint only when it holds at most this many
|
|
325
|
+
* items in total (entries + flows + mechanisms + pitfalls)... */
|
|
326
|
+
const INLINE_MAX_ITEMS = 5;
|
|
327
|
+
/** ...and its JSON serialization stays under this many UTF-8 bytes. */
|
|
328
|
+
const INLINE_MAX_BYTES = 2048;
|
|
329
|
+
function summarizeInsight(row) {
|
|
330
|
+
return row.symptom === null
|
|
331
|
+
? { key: row.key, description: row.description }
|
|
332
|
+
: { key: row.key, description: row.description, symptom: row.symptom };
|
|
333
|
+
}
|
|
334
|
+
function buildInline(appId) {
|
|
335
|
+
const inline = {
|
|
336
|
+
pitfalls: listInsights(appId, 'pitfall').map(summarizeInsight),
|
|
337
|
+
mechanisms: listInsights(appId, 'mechanism').map(summarizeInsight),
|
|
338
|
+
entries: listEntries(appId).map((e) => ({
|
|
339
|
+
url_pattern: e.url_pattern,
|
|
340
|
+
kind: e.kind,
|
|
341
|
+
purpose: e.purpose,
|
|
342
|
+
payload: e.payload,
|
|
343
|
+
})),
|
|
344
|
+
flows: listFlows(appId).map((f) => ({
|
|
345
|
+
name: f.name,
|
|
346
|
+
description: f.description,
|
|
347
|
+
steps: f.steps,
|
|
348
|
+
})),
|
|
349
|
+
};
|
|
350
|
+
return Buffer.byteLength(JSON.stringify(inline), 'utf8') <= INLINE_MAX_BYTES ? inline : null;
|
|
351
|
+
}
|
|
298
352
|
/**
|
|
299
353
|
* Lean existence-and-count lookup for a tab's origin — powers the optional
|
|
300
354
|
* `map` hint `browser.list_tabs` attaches to each tab (see
|
|
@@ -363,14 +417,27 @@ export function getMapHints(origins) {
|
|
|
363
417
|
const flowCounts = db
|
|
364
418
|
.prepare(`SELECT app_id, COUNT(*) AS n FROM flows WHERE app_id IN (${idPlaceholders}) GROUP BY app_id`)
|
|
365
419
|
.all(...appIds);
|
|
420
|
+
const insightCounts = db
|
|
421
|
+
.prepare(`SELECT app_id, kind, COUNT(*) AS n FROM insights WHERE app_id IN (${idPlaceholders}) GROUP BY app_id, kind`)
|
|
422
|
+
.all(...appIds);
|
|
366
423
|
const entriesByAppId = new Map(entryCounts.map((row) => [row.app_id, row.n]));
|
|
367
424
|
const flowsByAppId = new Map(flowCounts.map((row) => [row.app_id, row.n]));
|
|
425
|
+
const insightCount = (appId, kind) => insightCounts.find((row) => row.app_id === appId && row.kind === kind)?.n ?? 0;
|
|
368
426
|
for (const [origin, app] of winnerByOrigin) {
|
|
369
427
|
const entries = entriesByAppId.get(app.id) ?? 0;
|
|
370
428
|
const flows = flowsByAppId.get(app.id) ?? 0;
|
|
371
|
-
|
|
429
|
+
const mechanisms = insightCount(app.id, 'mechanism');
|
|
430
|
+
const pitfalls = insightCount(app.id, 'pitfall');
|
|
431
|
+
const total = entries + flows + mechanisms + pitfalls;
|
|
432
|
+
if (total === 0)
|
|
372
433
|
continue;
|
|
373
|
-
|
|
434
|
+
const hint = { app_key: app.app_key, entries, flows, mechanisms, pitfalls };
|
|
435
|
+
// Only small maps are expanded (extra queries run just for them), so a
|
|
436
|
+
// big map costs nothing beyond the count queries above.
|
|
437
|
+
const inline = total <= INLINE_MAX_ITEMS ? buildInline(app.id) : null;
|
|
438
|
+
if (inline)
|
|
439
|
+
hint.inline = inline;
|
|
440
|
+
result.set(origin, hint);
|
|
374
441
|
}
|
|
375
442
|
return result;
|
|
376
443
|
}
|
|
@@ -444,6 +511,31 @@ export function restoreFlow(input) {
|
|
|
444
511
|
const inserted = db.prepare('SELECT * FROM flows WHERE id = ?').get(info.lastInsertRowid);
|
|
445
512
|
return { app, flow: hydrateFlow(inserted) };
|
|
446
513
|
}
|
|
514
|
+
/** Upsert on (app, kind, key): re-saving a key replaces its description and
|
|
515
|
+
* symptom and bumps updated_at. */
|
|
516
|
+
export function saveInsight(input) {
|
|
517
|
+
const app = upsertApp({
|
|
518
|
+
origin: input.origin,
|
|
519
|
+
app_key: input.app_key ?? null,
|
|
520
|
+
title: input.title ?? null,
|
|
521
|
+
});
|
|
522
|
+
const ts = now();
|
|
523
|
+
const db = getDb();
|
|
524
|
+
db.prepare(`INSERT INTO insights (app_id, kind, key, description, symptom, created_at, updated_at)
|
|
525
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
526
|
+
ON CONFLICT(app_id, kind, key)
|
|
527
|
+
DO UPDATE SET description = excluded.description, symptom = excluded.symptom, updated_at = excluded.updated_at`).run(app.id, input.kind, input.key, input.description, input.symptom ?? null, ts, ts);
|
|
528
|
+
const insight = db
|
|
529
|
+
.prepare('SELECT * FROM insights WHERE app_id = ? AND kind = ? AND key = ?')
|
|
530
|
+
.get(app.id, input.kind, input.key);
|
|
531
|
+
return { app, insight };
|
|
532
|
+
}
|
|
533
|
+
/** Every insight of one kind saved for an app, alphabetical by key. */
|
|
534
|
+
export function listInsights(app_id, kind) {
|
|
535
|
+
return getDb()
|
|
536
|
+
.prepare('SELECT * FROM insights WHERE app_id = ? AND kind = ? ORDER BY key')
|
|
537
|
+
.all(app_id, kind);
|
|
538
|
+
}
|
|
447
539
|
/** Every flow recipe saved for an app, alphabetical by name. */
|
|
448
540
|
export function listFlows(app_id) {
|
|
449
541
|
const rows = getDb()
|
package/dist/map/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/map/queries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/map/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgC9C,SAAS,GAAG;IACV,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAgB;IAC/B,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI;SACR,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,KAAqB;IACzD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACnC,CAAC;IACD,sCAAsC;IACtC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IAClC,CAAC;AACH,CAAC;AASD,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QACxB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,qDAAqD,CAAC;SAC9D,GAAG,CAAC,MAAM,EAAE,OAAO,CAAuB,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CACR,uGAAuG,CACxG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAW,CAAC;IAClF,CAAC;IAED,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;iCAC2B,CAC5B;SACA,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE1E,OAAO,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAW,CAAC;AAC3F,CAAC;AAaD,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CACN,yFAAyF,CAC1F;SACA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAA4B,CAAC;IAExF,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CACR;;oBAEc,CACf,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,EAAE;aACf,OAAO,CAAC,oCAAoC,CAAC;aAC7C,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAgB,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;0CACoC,CACrC;SACA,GAAG,CACF,GAAG,CAAC,EAAE,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,EACb,WAAW,EACX,EAAE,EACF,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,EAAE,EACF,EAAE,CACH,CAAC;IACJ,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,oCAAoC,CAAC;SAC7C,GAAG,CAAC,IAAI,CAAC,eAAe,CAAgB,CAAC;IAC5C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3C,CAAC;AAeD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CACN,yFAAyF,CAC1F;SACA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAA4B,CAAC;IAExF,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CACR;;oBAEc,CACf,CAAC,GAAG,CACH,WAAW,EACX,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,EAAE,EACF,QAAQ,CAAC,EAAE,CACZ,CAAC;QACF,MAAM,OAAO,GAAG,EAAE;aACf,OAAO,CAAC,oCAAoC,CAAC;aAC7C,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAgB,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;6CACuC,CACxC;SACA,GAAG,CACF,GAAG,CAAC,EAAE,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,EACb,WAAW,EACX,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,EAAE,EACF,EAAE,CACH,CAAC;IACJ,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,oCAAoC,CAAC;SAC7C,GAAG,CAAC,IAAI,CAAC,eAAe,CAAgB,CAAC;IAC5C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3C,CAAC;AAkBD,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE7C,yGAAyG;IACzG,IAAI,GAAuB,CAAC;IAC5B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,GAAG,GAAG,EAAE;aACL,OAAO,CAAC,qDAAqD,CAAC;aAC9D,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAuB,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,EAAE;aACL,OAAO,CAAC,wEAAwE,CAAC;aACjF,GAAG,CAAC,MAAM,CAAuB,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAErF,+DAA+D;IAC/D,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,IAAI,GAAG,CACX,QAAQ;QACN,CAAC,CAAC,EAAE;aACC,OAAO,CACN,qFAAqF,CACtF;aACA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;QAC1B,CAAC,CAAC,EAAE;aACC,OAAO,CAAC,8EAA8E,CAAC;aACvF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACF,CAAC;IAEnB,qEAAqE;IACrE,0EAA0E;IAC1E,gCAAgC;IAChC,OAAO;QACL,GAAG;QACH,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;QACzC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC;QAC7C,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAQD,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,gDAAgD;AAChD,MAAM,iBAAiB,GACrB,+GAA+G,CAAC;AAClH,MAAM,mBAAmB,GACvB,2FAA2F,CAAC;AAE9F,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC/D,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CACtD,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAgBD,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChF,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,uDAAuD;QACvD,MAAM,MAAM,GAAG,EAAE;aACd,OAAO,CAAC,oDAAoD,CAAC;aAC7D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAkB,CAAC;QACtC,MAAM,QAAQ,GAAG,EAAE;aAChB,OAAO,CAAC,qDAAqD,CAAC;aAC9D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAkB,CAAC;QACtC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3E,OAAO;YACL,eAAe,EAAE,MAAM,CAAC,CAAC;YACzB,YAAY,EAAE,IAAI,CAAC,OAAO;YAC1B,gBAAgB,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5C,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CAAC,gEAAgE,CAAC;aACzE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,aAAa,CAAI,EAAW;IAC1C,OAAO,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,WAAmB;IAC3D,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAC1E,OAAO,CAAC,WAAW,CAAC,EACpB,GAAG,EAAE,EACL,MAAM,CACP,CAAC;IACF,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAuB,CAAC;IAC5F,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAc,CAAC;AAC5F,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,EAAE;SACX,OAAO,CACN;;;;;oCAK8B,CAC/B;SACA,GAAG,EAAkB,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,wEAAwE;IACxE,wEAAwE;IACxE,sDAAsD;IACtD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,KAAK,GAAG,EAAE;SACb,OAAO,CAAC,0EAA0E,CAAC;SACnF,GAAG,CAAC,UAAU,CAAa,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,EAAE;SACN,OAAO,CAAC,yEAAyE,CAAC;SAClF,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAa,CAAC;AAClD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,UAAkB;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,OAAe;IACnE,MAAM,GAAG,GAAG,KAAK,EAAE;SAChB,OAAO,CAAC,qDAAqD,CAAC;SAC9D,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAuB,CAAC;IACxE,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,IAAI,GAAG,KAAK,EAAE;SACjB,OAAO,CAAC,8EAA8E,CAAC;SACvF,GAAG,CAAC,MAAM,CAAkB,CAAC;IAChC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AA8BD;iEACiE;AACjE,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,SAAS,gBAAgB,CAAC,GAAe;IACvC,OAAO,GAAG,CAAC,OAAO,KAAK,IAAI;QACzB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;QAChD,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,MAAM,GAAkB;QAC5B,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC9D,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;QACH,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,OAAiB;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAChG,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEjD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,iEAAiE;IACjE,uEAAuE;IACvE,2CAA2C;IAC3C,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN,uCAAuC,kBAAkB,uCAAuC,CACjG;SACA,GAAG,CAAC,GAAG,gBAAgB,CAAa,CAAC;IAExC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE7C,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,EAAE;SACnB,OAAO,CACN,8DAA8D,cAAc,mBAAmB,CAChG;SACA,GAAG,CAAC,GAAG,MAAM,CAAoC,CAAC;IACrD,MAAM,UAAU,GAAG,EAAE;SAClB,OAAO,CACN,4DAA4D,cAAc,mBAAmB,CAC9F;SACA,GAAG,CAAC,GAAG,MAAM,CAAoC,CAAC;IAErD,MAAM,aAAa,GAAG,EAAE;SACrB,OAAO,CACN,qEAAqE,cAAc,yBAAyB,CAC7G;SACA,GAAG,CAAC,GAAG,MAAM,CAAuD,CAAC;IAExE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,IAAiB,EAAU,EAAE,CAChE,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEjF,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;QACtD,IAAI,KAAK,KAAK,CAAC;YAAE,SAAS;QAC1B,MAAM,IAAI,GAAY,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACrF,uEAAuE;QACvE,wDAAwD;QACxD,MAAM,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA0BD,SAAS,WAAW,CAAC,GAAe;IAClC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IACpC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACtD,CAAC;AAWD;;;aAGa;AACb,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,mDAAmD,CAAC;SAC5D,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAA2B,CAAC;IAErD,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC,GAAG,CAC7F,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,SAAS,EACT,EAAE,EACF,QAAQ,CAAC,EAAE,CACZ,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAe,CAAC;QAC9F,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;oCAC8B,CAC/B;SACA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAChE,CAAC;IACzB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,QAAsB,CAAC,EAAE,CAAC;AAC5D,CAAC;AAMD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GACZ,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC;QAC9F,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,mDAAmD,CAAC;SAC5D,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAA2B,CAAC;IAErD,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CACR,8GAA8G,CAC/G,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAe,CAAC;QAC9F,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;oCAC8B,CAC/B;SACA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAChE,CAAC;IACzB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,QAAsB,CAAC,EAAE,CAAC;AAC5D,CAAC;AA+BD;mCACmC;AACnC,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,EAAE,CAAC,OAAO,CACR;;;oHAGgH,CACjH,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,EAAE;SACf,OAAO,CAAC,kEAAkE,CAAC;SAC3E,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAe,CAAC;IACpD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAiB;IAC5D,OAAO,KAAK,EAAE;SACX,OAAO,CAAC,mEAAmE,CAAC;SAC5E,GAAG,CAAC,MAAM,EAAE,IAAI,CAAiB,CAAC;AACvC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,IAAI,GAAG,KAAK,EAAE;SACjB,OAAO,CAAC,oDAAoD,CAAC;SAC7D,GAAG,CAAC,MAAM,CAAiB,CAAC;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,IAAY;IACrD,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClG,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|