@nanonets/graft 0.6.0 → 0.7.1
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 +93 -52
- package/dist/ai/llm/types.d.ts +2 -2
- package/dist/ai/llm/types.js +1 -1
- package/dist/ask/ask.d.ts +49 -1
- package/dist/ask/ask.d.ts.map +1 -1
- package/dist/ask/ask.js +270 -68
- package/dist/ask/ask.js.map +1 -1
- package/dist/ask/fuse.d.ts +59 -17
- package/dist/ask/fuse.d.ts.map +1 -1
- package/dist/ask/fuse.js +51 -25
- package/dist/ask/fuse.js.map +1 -1
- package/dist/ask/graphrank.d.ts +6 -0
- package/dist/ask/graphrank.d.ts.map +1 -1
- package/dist/ask/graphrank.js +5 -1
- package/dist/ask/graphrank.js.map +1 -1
- package/dist/claude/format.d.ts +0 -1
- package/dist/claude/format.d.ts.map +1 -1
- package/dist/claude/format.js +18 -21
- package/dist/claude/format.js.map +1 -1
- package/dist/claude/hooks.d.ts +16 -0
- package/dist/claude/hooks.d.ts.map +1 -1
- package/dist/claude/hooks.js +79 -2
- package/dist/claude/hooks.js.map +1 -1
- package/dist/claude/settings-merge.d.ts.map +1 -1
- package/dist/claude/settings-merge.js +13 -6
- package/dist/claude/settings-merge.js.map +1 -1
- package/dist/claude/skill-template.d.ts.map +1 -1
- package/dist/claude/skill-template.js +117 -76
- package/dist/claude/skill-template.js.map +1 -1
- package/dist/cli-epilogue.js +1 -1
- package/dist/cli-epilogue.js.map +1 -1
- package/dist/cli.d.ts +3 -15
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +79 -45
- package/dist/cli.js.map +1 -1
- package/dist/context/node-file.d.ts +10 -0
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +34 -1
- package/dist/context/node-file.js.map +1 -1
- package/dist/context/savings.d.ts +6 -0
- package/dist/context/savings.d.ts.map +1 -1
- package/dist/context/savings.js +9 -1
- package/dist/context/savings.js.map +1 -1
- package/dist/engine.d.ts +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +7 -1
- package/dist/engine.js.map +1 -1
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +37 -1
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/map.d.ts +34 -2
- package/dist/graph/map.d.ts.map +1 -1
- package/dist/graph/map.js +107 -23
- package/dist/graph/map.js.map +1 -1
- package/dist/graph/types.d.ts +12 -0
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/workspace-cli.d.ts +37 -0
- package/dist/graph/workspace-cli.d.ts.map +1 -0
- package/dist/graph/workspace-cli.js +74 -0
- package/dist/graph/workspace-cli.js.map +1 -0
- package/dist/graph/workspace.d.ts +116 -124
- package/dist/graph/workspace.d.ts.map +1 -1
- package/dist/graph/workspace.js +353 -297
- package/dist/graph/workspace.js.map +1 -1
- package/dist/hosts/instructions.d.ts.map +1 -1
- package/dist/hosts/instructions.js +3 -0
- package/dist/hosts/instructions.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +61 -1
- package/dist/mcp/tools.js.map +1 -1
- package/package.json +1 -2
|
@@ -1,136 +1,128 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type GraphBuildResult } from "./build.js";
|
|
3
|
-
import { type GraphCheckResult } from "./check.js";
|
|
4
|
-
import { type RepoMap } from "./map.js";
|
|
1
|
+
import { type Direction } from "./traverse.js";
|
|
5
2
|
import type { GraphV1 } from "./types.js";
|
|
6
|
-
|
|
3
|
+
import { type AskResult } from "../ask/ask.js";
|
|
4
|
+
import { type GrepResult } from "../search/grep.js";
|
|
5
|
+
import { formatGrepResult, zeroHitNote } from "../search/grep-cli.js";
|
|
6
|
+
/** The parent index written to `<parent>/graft/workspace.json`. Nodes/edges
|
|
7
|
+
* never live at the parent — they live in each child's own `graft/`. */
|
|
7
8
|
export interface WorkspaceV1 {
|
|
8
9
|
version: 1;
|
|
9
|
-
/** Immediate child
|
|
10
|
+
/** Immediate child dir names that are git repos, sorted. */
|
|
10
11
|
children: string[];
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export declare function
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
/** Absolute path to the workspace index for a parent root (`<dir>/graft/workspace.json`). */
|
|
14
|
+
export declare function workspacePath(root: string, override?: string): string;
|
|
15
|
+
/** Read the workspace index, or null when the parent has none (not a workspace,
|
|
16
|
+
* or unparseable/foreign json — treated the same as absent). */
|
|
17
|
+
export declare function readWorkspace(root: string, override?: string): WorkspaceV1 | null;
|
|
18
|
+
/** Write the workspace index, sorting children for a stable, minimal git diff. */
|
|
19
|
+
export declare function writeWorkspace(root: string, ws: WorkspaceV1, override?: string): string;
|
|
20
|
+
/** A parent is a workspace BUILD target when it has no own `.git` and ≥2 git
|
|
21
|
+
* children — or it was already split (a `workspace.json` is present). The
|
|
22
|
+
* no-own-`.git` guard keeps a normal repo with git submodules from being
|
|
23
|
+
* mistaken for a workspace. */
|
|
24
|
+
export declare function isWorkspaceBuildRoot(root: string, override?: string): boolean;
|
|
25
|
+
/** True when the parent has a mega-graph from an older single-graph build
|
|
26
|
+
* (`graft/.graph/wiring.json`) — the thing a workspace build migrates away. */
|
|
27
|
+
export declare function hasMegaGraph(root: string, override?: string): boolean;
|
|
28
|
+
/** The EXACT split warning printed once, when a mega-graph parent is first
|
|
29
|
+
* built as a workspace. Templated on the child list so it names the real repos. */
|
|
30
|
+
export declare function migrationNote(children: string[]): string;
|
|
31
|
+
/** Remove the parent's entire `graft/` tree — the mega-graph, its `.cache`, and
|
|
32
|
+
* any stale cards — so after `writeWorkspace` the parent holds ONLY
|
|
33
|
+
* workspace.json. Child graphs live in sibling `<child>/graft/`, never under
|
|
34
|
+
* this dir, so they are untouched. */
|
|
35
|
+
export declare function clearParentGraft(root: string, override?: string): void;
|
|
36
|
+
export interface LoadedChild {
|
|
37
|
+
child: string;
|
|
38
|
+
graph: GraphV1;
|
|
39
|
+
}
|
|
25
40
|
export interface WorkspaceGraphs {
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
child: string;
|
|
32
|
-
contextDir: string;
|
|
33
|
-
graph: GraphV1;
|
|
34
|
-
askIndex: AskIndex | null;
|
|
35
|
-
}[];
|
|
36
|
-
/** Children without a built graph — surfaced, never silently skipped. */
|
|
37
|
-
unbuilt: string[];
|
|
38
|
-
/** The surfacing line, set whenever `unbuilt` is non-empty. */
|
|
39
|
-
note?: string;
|
|
41
|
+
/** Children (from workspace.json when present, else discovered) that have a
|
|
42
|
+
* built graph, in sorted child order. */
|
|
43
|
+
loaded: LoadedChild[];
|
|
44
|
+
/** Listed children with no built graph yet — surfaced, never silently skipped. */
|
|
45
|
+
missing: string[];
|
|
40
46
|
}
|
|
41
|
-
/** Load
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
* impact, MCP): null when `root` is not a workspace; otherwise the merged
|
|
59
|
-
* graph (null when no child is built) plus the unbuilt-children note. */
|
|
60
|
-
export declare function loadFederatedGraph(root: string, contextDirOverride?: string): {
|
|
61
|
-
graph: GraphV1 | null;
|
|
62
|
-
note?: string;
|
|
63
|
-
} | null;
|
|
64
|
-
/** Federation inputs for `ask`: the merged graph + merged sidecar + each built
|
|
65
|
-
* child's context dir (for its concept nodes). `ask` feeds the merged graph to
|
|
66
|
-
* its existing multi-scope pipeline, so `rankScopesAndFuse` does the fair
|
|
67
|
-
* cross-repo fusion with `<child>/`-prefixed scope labels. */
|
|
68
|
-
export declare function federateAsk(root: string, contextDirOverride?: string): {
|
|
69
|
-
graph: GraphV1 | null;
|
|
70
|
-
askIndex: AskIndex | null;
|
|
71
|
-
built: {
|
|
72
|
-
child: string;
|
|
73
|
-
contextDir: string;
|
|
74
|
-
}[];
|
|
75
|
-
note?: string;
|
|
76
|
-
} | null;
|
|
77
|
-
/** EXACT migration wording (asserted by tests) for a parent whose old combined
|
|
78
|
-
* graph is being replaced by the workspace manifest. */
|
|
79
|
-
export declare function migrationNote(children: string[]): string;
|
|
80
|
-
export interface WorkspaceBuildResult {
|
|
81
|
-
children: {
|
|
82
|
-
child: string;
|
|
83
|
-
result: GraphBuildResult;
|
|
84
|
-
}[];
|
|
85
|
-
workspacePath: string;
|
|
86
|
-
/** True when a pre-existing combined graph at the parent was replaced. */
|
|
87
|
-
migrated: boolean;
|
|
88
|
-
/** The exact {@link migrationNote} wording, set only when `migrated`. */
|
|
89
|
-
migrationNote?: string;
|
|
47
|
+
/** Load each child's graph via `loadGraphCached`. Children come from
|
|
48
|
+
* workspace.json when present, otherwise from live git-child discovery (a
|
|
49
|
+
* not-yet-built workspace). A child without a built graph is counted into
|
|
50
|
+
* `missing`, not dropped. */
|
|
51
|
+
export declare function loadWorkspaceGraphs(root: string, override?: string): WorkspaceGraphs;
|
|
52
|
+
/** "2 of 3 workspace repos have graphs; run graft build to cover repoC" — the
|
|
53
|
+
* coverage line federated commands append when some listed child is unbuilt.
|
|
54
|
+
* Empty string when every child has a graph. */
|
|
55
|
+
export declare function coverageNote(g: WorkspaceGraphs): string;
|
|
56
|
+
export interface FederateAskOptions {
|
|
57
|
+
limit?: number;
|
|
58
|
+
source?: boolean;
|
|
59
|
+
full?: boolean;
|
|
60
|
+
graphRank?: boolean;
|
|
61
|
+
/** Narrow to one child (`repoA`) or a sub-scope within it (`repoA/backend`).
|
|
62
|
+
* A prefix matching NO child throws, listing the repos. */
|
|
63
|
+
in?: string;
|
|
90
64
|
}
|
|
91
65
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
66
|
+
* Federated `ask` across a workspace: run each child's own per-scope ask
|
|
67
|
+
* pipeline, then fuse ALL the children's scope lists with the same
|
|
68
|
+
* `fuseScopes` used inside a single multi-scope repo. Each child contributes
|
|
69
|
+
* one fusion scope per intra-child scope, labeled `<child>/<scope>` (or just
|
|
70
|
+
* `<child>` for a child's root scope), so a big repo can't drown a small one —
|
|
71
|
+
* rank positions are comparable across repos where raw scores are not.
|
|
72
|
+
*
|
|
73
|
+
* Returns a normal `AskResult`; `formatAsk` renders it unchanged, labeling each
|
|
74
|
+
* hit `[<child>/…]` via the standard multi-scope path.
|
|
99
75
|
*/
|
|
100
|
-
export declare function
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
/** True when any child that HAS a graph is stale — unbuilt alone never fails. */
|
|
115
|
-
failed: boolean;
|
|
116
|
-
}
|
|
117
|
-
/** Per-child drift check ({@link checkGraph} in each child repo). */
|
|
118
|
-
export declare function checkWorkspace(root: string, contextDirOverride?: string): WorkspaceCheck;
|
|
119
|
-
export declare function formatWorkspaceCheck(c: WorkspaceCheck): string;
|
|
120
|
-
export interface WorkspaceMap {
|
|
121
|
-
children: {
|
|
122
|
-
child: string;
|
|
123
|
-
map: RepoMap;
|
|
124
|
-
}[];
|
|
125
|
-
note?: string;
|
|
126
|
-
}
|
|
127
|
-
/** Per-child repo maps, the directory budget split evenly across the built
|
|
128
|
-
* children. Null when `root` is not a workspace. */
|
|
129
|
-
export declare function buildWorkspaceMap(root: string, opts?: {
|
|
76
|
+
export declare function federateAsk(root: string, override: string | undefined, query: string, opts?: FederateAskOptions): AskResult;
|
|
77
|
+
/** Merge every child's `GrepResult` into one, prefixing group paths with the
|
|
78
|
+
* child dir and re-sorting by coupling (inDegree desc, path asc) across repos.
|
|
79
|
+
* In-degree stays each child's own — it comes from that child's graph. */
|
|
80
|
+
export declare function federateGrep(root: string, override: string | undefined, pattern: string, opts?: {
|
|
81
|
+
ignoreCase?: boolean;
|
|
82
|
+
fixed?: boolean;
|
|
83
|
+
}): {
|
|
84
|
+
result: GrepResult;
|
|
85
|
+
coverage: string;
|
|
86
|
+
};
|
|
87
|
+
/** One `graft map` section per child (each child's own map, budget split evenly
|
|
88
|
+
* across the loaded children), joined under `<child>/` headers. */
|
|
89
|
+
export declare function federateMap(root: string, override: string | undefined, opts?: {
|
|
130
90
|
maxDirs?: number;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
91
|
+
}): string;
|
|
92
|
+
/** Per-child drift status. `ok` is false when any BUILT child is stale — an
|
|
93
|
+
* unbuilt child is surfaced (coverage), never a failure. */
|
|
94
|
+
export declare function federateCheck(root: string, override?: string): {
|
|
95
|
+
text: string;
|
|
96
|
+
ok: boolean;
|
|
97
|
+
};
|
|
98
|
+
/** Resolve a symbol across every child, grouped per child. Reuses the shared
|
|
99
|
+
* traverse-cli formatters so each block reads exactly like `graft callers`. */
|
|
100
|
+
export declare function federateCallers(root: string, override: string | undefined, symbol: string, opts?: {
|
|
101
|
+
direction?: Direction;
|
|
102
|
+
depth?: number;
|
|
103
|
+
in?: string;
|
|
104
|
+
}): {
|
|
105
|
+
text: string;
|
|
106
|
+
found: boolean;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Split a parent into a workspace: build each git child (via the supplied
|
|
110
|
+
* `buildChild` callback, so this stays free of any engine/LLM dependency),
|
|
111
|
+
* then REPLACE the parent's `graft/` with just `workspace.json`. `onStart`
|
|
112
|
+
* fires once — before any child is built — carrying whether this build is a
|
|
113
|
+
* mega-graph migration, so the caller can print the one-time split warning
|
|
114
|
+
* first, exactly as the spec requires.
|
|
115
|
+
*
|
|
116
|
+
* The child build writes into `<child>/graft/` and is byte-identical to
|
|
117
|
+
* building that child standalone (`buildChild` is just `buildGraph(childDir)`),
|
|
118
|
+
* because nothing about the parent path enters the child's build.
|
|
119
|
+
*/
|
|
120
|
+
export declare function splitWorkspace(root: string, override: string | undefined, buildChild: (childDir: string, childName: string) => Promise<void>, onStart?: (info: {
|
|
121
|
+
children: string[];
|
|
122
|
+
migrated: boolean;
|
|
123
|
+
}) => void): Promise<{
|
|
124
|
+
children: string[];
|
|
125
|
+
migrated: boolean;
|
|
126
|
+
}>;
|
|
127
|
+
export { formatGrepResult, zeroHitNote };
|
|
136
128
|
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/graph/workspace.ts"],"names":[],"mappings":"AAgCA,OAAO,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/graph/workspace.ts"],"names":[],"mappings":"AAgCA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGtE;wEACwE;AACxE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;gEACgE;AAChE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CASjF;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOvF;AAED;;;+BAG+B;AAC/B,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAI7E;AAED;+EAC+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;mFACmF;AACnF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAOxD;AAED;;;sCAGsC;AACtC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;6CACyC;IACzC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;6BAG6B;AAC7B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAWpF;AAED;;gDAEgD;AAChD,wBAAgB,YAAY,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAIvD;AAeD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;+DAC2D;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAqBD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,kBAAuB,GAC5B,SAAS,CA8FX;AAED;;0EAE0E;AAC1E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAmC1C;AAED;mEACmE;AACnE,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,MAAM,CAeR;AAED;4DAC4D;AAC5D,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAsB/B;AAED;+EAC+E;AAC/E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CA+BlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAClE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GAClE,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAQpD;AAED,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
|