@nexrall/code-core 1.4.67 → 1.4.69

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.
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.sanitizePluginId = sanitizePluginId;
37
+ exports.pluginDataDir = pluginDataDir;
38
+ exports.ensurePluginDataDir = ensurePluginDataDir;
39
+ exports.pluginHasData = pluginHasData;
40
+ exports.pluginDataSize = pluginDataSize;
41
+ exports.removePluginData = removePluginData;
42
+ const fs = __importStar(require("fs"));
43
+ const os = __importStar(require("os"));
44
+ const path = __importStar(require("path"));
45
+ // ─── Plugin data directories ──────────────────────────────────────────────────
46
+ //
47
+ // A plugin's own files are replaced on every update, so state a plugin wants to
48
+ // keep — caches, node_modules, a downloaded model, a database — cannot live
49
+ // inside its install directory. It gets a per-plugin data directory instead:
50
+ //
51
+ // ~/.nexrall/plugin-data/<id>/
52
+ //
53
+ // which survives updates and is exposed to the plugin's own processes (its hook
54
+ // commands and its MCP servers) as NEXRALL_PLUGIN_DATA. Same idea as Claude
55
+ // Code's ${CLAUDE_PLUGIN_DATA}, same id rule: everything outside [A-Za-z0-9_-]
56
+ // becomes "-", so a name can never escape the parent directory or collide with
57
+ // path syntax ("my.plugin" → "my-plugin"). Two names that differ only in those
58
+ // characters share a directory — which is why the id is derived, never taken
59
+ // verbatim.
60
+ //
61
+ // The directory is created on FIRST REFERENCE, not at install: a plugin that
62
+ // never touches its data dir leaves nothing behind, and `nex plugin remove`
63
+ // does not have to guess whether a directory it finds is in use.
64
+ /** Claude Code's rule: letters, digits, `_`, `-` survive; everything else becomes `-`. */
65
+ function sanitizePluginId(name) {
66
+ return name.replace(/[^\w-]/g, '-');
67
+ }
68
+ /** Where this plugin's persistent data lives. Pure — does not touch the disk. */
69
+ function pluginDataDir(name) {
70
+ return path.join(os.homedir(), '.nexrall', 'plugin-data', sanitizePluginId(name));
71
+ }
72
+ /**
73
+ * `pluginDataDir`, created if missing. Returns the path either way.
74
+ *
75
+ * Called right before a plugin's process is spawned with NEXRALL_PLUGIN_DATA in
76
+ * its environment, so the promise "the variable points at a directory you may
77
+ * write to" holds the moment the plugin can read it.
78
+ */
79
+ function ensurePluginDataDir(name) {
80
+ const dir = pluginDataDir(name);
81
+ try {
82
+ fs.mkdirSync(dir, { recursive: true });
83
+ }
84
+ catch { /* unwritable home: the plugin will see the path and fail its own write */ }
85
+ return dir;
86
+ }
87
+ /** True when the plugin has data on disk from earlier runs. */
88
+ function pluginHasData(name) {
89
+ try {
90
+ return fs.readdirSync(pluginDataDir(name)).length > 0;
91
+ }
92
+ catch {
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Raw bytes under a plugin's data directory (0 when missing). Bounded walk: a
98
+ * plugin can park a large tree here, and reporting the size must not be the
99
+ * thing that makes `nex plugin prune` slow, so entries are counted up to a cap.
100
+ */
101
+ function pluginDataSize(name, maxEntries = 5000) {
102
+ let total = 0;
103
+ let seen = 0;
104
+ const walk = (dir) => {
105
+ let entries;
106
+ try {
107
+ entries = fs.readdirSync(dir, { withFileTypes: true });
108
+ }
109
+ catch {
110
+ return;
111
+ }
112
+ for (const e of entries) {
113
+ if (seen++ >= maxEntries)
114
+ return;
115
+ const full = path.join(dir, e.name);
116
+ try {
117
+ if (e.isDirectory())
118
+ walk(full);
119
+ else
120
+ total += fs.statSync(full).size;
121
+ }
122
+ catch { /* unreadable entry — skip it, size is an estimate */ }
123
+ }
124
+ };
125
+ walk(pluginDataDir(name));
126
+ return total;
127
+ }
128
+ /** Remove a plugin's data directory. Returns true when something was removed. */
129
+ function removePluginData(name) {
130
+ const dir = pluginDataDir(name);
131
+ try {
132
+ if (!fs.existsSync(dir))
133
+ return false;
134
+ fs.rmSync(dir, { recursive: true, force: true });
135
+ return true;
136
+ }
137
+ catch {
138
+ return false;
139
+ }
140
+ }
141
+ //# sourceMappingURL=data.js.map
@@ -58,8 +58,20 @@ export declare function loadPlugins(workDir: string): PluginInfo[];
58
58
  export declare function findPlugin(workDir: string, name: string, scope: 'project' | 'global'): PluginInfo | undefined;
59
59
  /** Subdirectories of every ENABLED installed plugin that hold `kind` assets (existing only). */
60
60
  export declare function pluginAssetDirs(workDir: string, kind: 'commands' | 'agents' | 'skills'): string[];
61
- /** Merge hooks.json from every ENABLED plugin into a single hooks config (arrays concatenated). */
61
+ /** Merge hooks.json from every ENABLED plugin into a single hooks config (arrays concatenated).
62
+ *
63
+ * Every handler is stamped with `plugin: <name>`. Provenance is the one thing the merge
64
+ * would otherwise destroy — and it is what lets the hook runner hand the plugin's own
65
+ * processes their NEXRALL_PLUGIN_DATA (see runHookHandler). Both entry forms are stamped:
66
+ * the flat one (the entry IS the handler) and the nested one (each item under `hooks`).
67
+ */
62
68
  export declare function pluginHooks(workDir: string): Record<string, unknown[]>;
63
- /** MCP server maps declared by ENABLED plugins: { serverName → config } (first plugin wins on clash). */
69
+ /** MCP server maps declared by ENABLED plugins: { serverName → config } (first plugin wins on clash).
70
+ *
71
+ * A stdio server from a plugin gets NEXRALL_PLUGIN_DATA in its environment, pointing at the
72
+ * plugin's persistent data directory — the install directory is replaced on every update, so
73
+ * this is the only place a server can keep state. A plugin that set the variable itself keeps
74
+ * its own value: an explicit config value is never overridden here.
75
+ */
64
76
  export declare function pluginMcpServers(workDir: string): Record<string, unknown>;
65
77
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAYD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAWtE;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,eAAe,GAAG,MAAM,GAAG,IAAI,CAQhG;AAwCD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAKzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAK7G;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAE,CAOjG;AAED,mGAAmG;AACnG,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAkBtE;AAED,yGAAyG;AACzG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAuCA,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAYD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAWtE;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,eAAe,GAAG,MAAM,GAAG,IAAI,CAQhG;AAwCD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAKzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAK7G;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAE,CAOjG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAkBtE;AAeD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzE"}
@@ -45,6 +45,7 @@ exports.pluginMcpServers = pluginMcpServers;
45
45
  const fs = __importStar(require("fs"));
46
46
  const path = __importStar(require("path"));
47
47
  const os = __importStar(require("os"));
48
+ const data_1 = require("./data");
48
49
  // ─── Enable / disable ──────────────────────────────────────────────────────────
49
50
  //
50
51
  // A marker file rather than a registry list, so the on/off state travels WITH
@@ -198,7 +199,13 @@ function pluginAssetDirs(workDir, kind) {
198
199
  }
199
200
  });
200
201
  }
201
- /** Merge hooks.json from every ENABLED plugin into a single hooks config (arrays concatenated). */
202
+ /** Merge hooks.json from every ENABLED plugin into a single hooks config (arrays concatenated).
203
+ *
204
+ * Every handler is stamped with `plugin: <name>`. Provenance is the one thing the merge
205
+ * would otherwise destroy — and it is what lets the hook runner hand the plugin's own
206
+ * processes their NEXRALL_PLUGIN_DATA (see runHookHandler). Both entry forms are stamped:
207
+ * the flat one (the entry IS the handler) and the nested one (each item under `hooks`).
208
+ */
202
209
  function pluginHooks(workDir) {
203
210
  const merged = {};
204
211
  for (const p of loadPlugins(workDir)) {
@@ -215,14 +222,33 @@ function pluginHooks(workDir) {
215
222
  for (const [phase, entries] of Object.entries(hooks)) {
216
223
  if (!Array.isArray(entries))
217
224
  continue;
218
- merged[phase] = [...(merged[phase] ?? []), ...entries];
225
+ merged[phase] = [...(merged[phase] ?? []), ...entries.map((e) => stampPlugin(e, p.name))];
219
226
  }
220
227
  }
221
228
  catch { /* no hooks.json or malformed — skip */ }
222
229
  }
223
230
  return merged;
224
231
  }
225
- /** MCP server maps declared by ENABLED plugins: { serverName → config } (first plugin wins on clash). */
232
+ /** Add `plugin: <name>` to one hooks entry, whichever form it takes. */
233
+ function stampPlugin(entry, plugin) {
234
+ if (!entry || typeof entry !== 'object')
235
+ return entry;
236
+ const e = entry;
237
+ if (Array.isArray(e.hooks)) {
238
+ return {
239
+ ...e,
240
+ hooks: e.hooks.map((h) => (h && typeof h === 'object' ? { ...h, plugin } : h)),
241
+ };
242
+ }
243
+ return { ...e, plugin };
244
+ }
245
+ /** MCP server maps declared by ENABLED plugins: { serverName → config } (first plugin wins on clash).
246
+ *
247
+ * A stdio server from a plugin gets NEXRALL_PLUGIN_DATA in its environment, pointing at the
248
+ * plugin's persistent data directory — the install directory is replaced on every update, so
249
+ * this is the only place a server can keep state. A plugin that set the variable itself keeps
250
+ * its own value: an explicit config value is never overridden here.
251
+ */
226
252
  function pluginMcpServers(workDir) {
227
253
  const merged = {};
228
254
  for (const p of loadPlugins(workDir)) {
@@ -237,11 +263,26 @@ function pluginMcpServers(workDir) {
237
263
  const servers = (j.mcpServers ?? j);
238
264
  for (const [name, cfg] of Object.entries(servers)) {
239
265
  if (!(name in merged))
240
- merged[name] = cfg;
266
+ merged[name] = withPluginDataEnv(cfg, p.name);
241
267
  }
242
268
  }
243
269
  catch { /* no mcp.json — skip */ }
244
270
  }
245
271
  return merged;
246
272
  }
273
+ /** Inject NEXRALL_PLUGIN_DATA into a stdio server config (opaque non-objects pass through). */
274
+ function withPluginDataEnv(cfg, plugin) {
275
+ if (!cfg || typeof cfg !== 'object' || Array.isArray(cfg))
276
+ return cfg;
277
+ const c = cfg;
278
+ // Only a stdio server spawns a process. An http/sse server never reads our env.
279
+ if (typeof c.command !== 'string' || !c.command)
280
+ return cfg;
281
+ const env = c.env && typeof c.env === 'object' && !Array.isArray(c.env)
282
+ ? c.env
283
+ : {};
284
+ if (typeof env.NEXRALL_PLUGIN_DATA === 'string')
285
+ return cfg;
286
+ return { ...c, env: { ...env, NEXRALL_PLUGIN_DATA: (0, data_1.pluginDataDir)(plugin) } };
287
+ }
247
288
  //# sourceMappingURL=index.js.map
@@ -19,7 +19,25 @@ export interface PluginInspection {
19
19
  version?: string;
20
20
  description?: string;
21
21
  };
22
+ /** The manifest's declared dependencies — installed automatically (see installPlugin). */
23
+ dependencies: PluginDependency[];
22
24
  }
25
+ /**
26
+ * One entry of a manifest's `dependencies` array.
27
+ *
28
+ * Both spellings a Claude Code manifest can use are accepted, so such a plugin
29
+ * installs unchanged: the bare string `"audit-logger"` and the object form
30
+ * `{ "name": "secrets-vault", "version": "~2.1.0" }`. A version range is
31
+ * RECORDED but not enforced — enforcing it needs a registry that maps versions to
32
+ * refs, which our git-spec sources do not have; installs print a notice instead of
33
+ * pretending the constraint was honoured (see the gap analysis, S9).
34
+ */
35
+ export interface PluginDependency {
36
+ name: string;
37
+ version?: string;
38
+ }
39
+ /** Read a manifest's `dependencies` list (either spelling), dropping malformed entries. */
40
+ export declare function parsePluginDependencies(dir: string): PluginDependency[];
23
41
  export interface InstallReceipt {
24
42
  source: string;
25
43
  kind: 'github' | 'local';
@@ -39,6 +57,19 @@ export interface InstallReceipt {
39
57
  * reason an install fails (see resolveCommitSha).
40
58
  */
41
59
  sha?: string;
60
+ /**
61
+ * True when this plugin was installed automatically because another plugin
62
+ * declared it in `dependencies`. `nex plugin prune` removes exactly these once
63
+ * no installed plugin needs them — a plugin the user installed is never auto.
64
+ */
65
+ auto?: boolean;
66
+ /** Audit/display: the plugin that pulled this one in (auto installs only). */
67
+ requiredBy?: string;
68
+ /**
69
+ * Names this plugin declared as dependencies, recorded at install time so prune
70
+ * can compute what is still reachable without re-reading every manifest.
71
+ */
72
+ dependencies?: string[];
42
73
  }
43
74
  export interface InstallResult {
44
75
  name: string;
@@ -49,6 +80,16 @@ export interface InstallResult {
49
80
  sha?: string;
50
81
  /** For an update: the commit that was previously installed, when known. */
51
82
  previousSha?: string;
83
+ /** Names of dependencies installed automatically alongside this plugin (including their own). */
84
+ installedDependencies?: string[];
85
+ /** Declared version constraints that were recorded but not enforced, one line each. */
86
+ dependencyWarnings?: string[];
87
+ /**
88
+ * Internal: every directory this install wrote — the plugin plus any auto-installed
89
+ * dependencies — so a caller (the parent install, on failure) can roll the whole
90
+ * subtree back. Empty for a dependency that was already installed.
91
+ */
92
+ writtenDirs?: string[];
52
93
  }
53
94
  export interface RegistryPlugin {
54
95
  name: string;
@@ -148,6 +189,11 @@ export interface InstallOptions {
148
189
  confirm?: (inspection: PluginInspection, name: string, ctx?: InstallContext) => Promise<boolean> | boolean;
149
190
  /** Internal: SHA previously installed, so an update can be described as a change. */
150
191
  _previousSha?: string;
192
+ /** Internal: set by the dependency installer; marks the receipt `auto`. */
193
+ _auto?: {
194
+ requiredBy: string;
195
+ stack: string[];
196
+ };
151
197
  }
152
198
  /** Extra facts about what is being installed, for the confirmation prompt. */
153
199
  export interface InstallContext {
@@ -157,16 +203,53 @@ export interface InstallContext {
157
203
  previousSha?: string;
158
204
  /** True when this replaces an existing install of the same name. */
159
205
  isUpdate: boolean;
206
+ /**
207
+ * Set when this install is AUTOMATIC — a dependency of the named plugin. The
208
+ * confirmation gate still applies (a dependency can ship hooks just as easily),
209
+ * and the prompt should say what asked for it.
210
+ */
211
+ requiredBy?: string;
160
212
  }
161
213
  export declare function installPlugin(spec: string, opts?: InstallOptions): Promise<InstallResult>;
162
214
  export declare function readReceipt(pluginDir: string): InstallReceipt | null;
163
215
  export declare function removePlugin(name: string, opts?: {
164
216
  scope?: 'project' | 'global';
165
217
  workDir?: string;
218
+ keepData?: boolean;
166
219
  }): string;
167
220
  export declare function updatePlugin(name: string, opts?: {
168
221
  scope?: 'project' | 'global';
169
222
  workDir?: string;
170
223
  confirm?: InstallOptions['confirm'];
171
224
  }): Promise<InstallResult>;
225
+ export interface PruneEntry {
226
+ name: string;
227
+ scope: 'project' | 'global';
228
+ dir: string;
229
+ /** The plugin whose install pulled this one in (auto installs carry it in the receipt). */
230
+ requiredBy?: string;
231
+ }
232
+ export interface PrunePlan {
233
+ /** Auto-installed plugins nothing needs any more — exactly what a prune removes. */
234
+ orphans: PruneEntry[];
235
+ /** Everything that stays, with why: a manual install, or still reachable. */
236
+ kept: Array<{
237
+ name: string;
238
+ scope: 'project' | 'global';
239
+ reason: 'manual' | 'needed';
240
+ }>;
241
+ }
242
+ /** What would `nex plugin prune` remove? Pure inspection — installs/removes nothing. */
243
+ export declare function planPluginPrune(opts?: {
244
+ scope?: 'project' | 'global';
245
+ workDir?: string;
246
+ }): PrunePlan;
247
+ /**
248
+ * Remove a plan's orphans. Returns what was actually removed — a directory that
249
+ * could not be deleted is left in the plan AND out of the result, so the caller
250
+ * reports reality rather than the intention.
251
+ */
252
+ export declare function prunePlugins(plan: PrunePlan, opts?: {
253
+ keepData?: boolean;
254
+ }): PruneEntry[];
172
255
  //# sourceMappingURL=installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/plugins/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/plugins/installer.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,0FAA0F;IAC1F,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAuBvE;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAUD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oEAAoE;AACpE,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ1F;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CASpF;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGhD;AAID,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA+C5D;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAqB9D;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IAC/B,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAqED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAmBxE;AAED,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB;IAC9D,oGAAoG;IACpG,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAG3H;AAgFD,MAAM,WAAW,cAAc;IAC7B,sFAAsF;IACtF,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC3G,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACjD;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4CD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgKnG;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAOpE;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAChF,MAAM,CAgBR;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;CAAO,GACjG,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAkBD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,oFAAoF;IACpF,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,6EAA6E;IAC7E,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC,CAAC;CACzF;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,CAgDxG;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,EAAE,CAW7F"}