@deepagents/context 0.38.1 → 1.0.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 +44 -11
- package/dist/browser.js +171 -15
- package/dist/browser.js.map +3 -3
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2584 -1361
- package/dist/index.js.map +4 -4
- package/dist/lib/agent.d.ts +6 -0
- package/dist/lib/agent.d.ts.map +1 -1
- package/dist/lib/chain-summary.d.ts +18 -0
- package/dist/lib/chain-summary.d.ts.map +1 -0
- package/dist/lib/engine.d.ts +25 -6
- package/dist/lib/engine.d.ts.map +1 -1
- package/dist/lib/fragments/message/user.d.ts +22 -2
- package/dist/lib/fragments/message/user.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/combinators.d.ts +23 -0
- package/dist/lib/fragments/reminders/combinators.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/message-predicates.d.ts +10 -0
- package/dist/lib/fragments/reminders/message-predicates.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/temporal/elapsed.d.ts +3 -0
- package/dist/lib/fragments/reminders/temporal/elapsed.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/temporal/index.d.ts +1 -0
- package/dist/lib/fragments/reminders/temporal/index.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/tool-predicates.d.ts +17 -0
- package/dist/lib/fragments/reminders/tool-predicates.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/usage-predicates.d.ts +3 -0
- package/dist/lib/fragments/reminders/usage-predicates.d.ts.map +1 -0
- package/dist/lib/fragments.d.ts +8 -3
- package/dist/lib/fragments.d.ts.map +1 -1
- package/dist/lib/resolvers/async-resolver.d.ts +8 -0
- package/dist/lib/resolvers/async-resolver.d.ts.map +1 -0
- package/dist/lib/resolvers/function-resolver.d.ts +8 -0
- package/dist/lib/resolvers/function-resolver.d.ts.map +1 -0
- package/dist/lib/resolvers/generator-resolver.d.ts +13 -0
- package/dist/lib/resolvers/generator-resolver.d.ts.map +1 -0
- package/dist/lib/resolvers/index.d.ts +10 -0
- package/dist/lib/resolvers/index.d.ts.map +1 -0
- package/dist/lib/resolvers/iterable-resolver.d.ts +12 -0
- package/dist/lib/resolvers/iterable-resolver.d.ts.map +1 -0
- package/dist/lib/resolvers/loader-resolver.d.ts +13 -0
- package/dist/lib/resolvers/loader-resolver.d.ts.map +1 -0
- package/dist/lib/resolvers/promise-resolver.d.ts +7 -0
- package/dist/lib/resolvers/promise-resolver.d.ts.map +1 -0
- package/dist/lib/resolvers/types.d.ts +45 -0
- package/dist/lib/resolvers/types.d.ts.map +1 -0
- package/dist/lib/sandbox/ast-utils.d.ts +5 -2
- package/dist/lib/sandbox/ast-utils.d.ts.map +1 -1
- package/dist/lib/sandbox/bash-tool.d.ts.map +1 -1
- package/dist/lib/sandbox/container-tool.d.ts +32 -8
- package/dist/lib/sandbox/container-tool.d.ts.map +1 -1
- package/dist/lib/sandbox/docker-sandbox-errors.d.ts +58 -0
- package/dist/lib/sandbox/docker-sandbox-errors.d.ts.map +1 -0
- package/dist/lib/sandbox/docker-sandbox.d.ts +69 -357
- package/dist/lib/sandbox/docker-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/index.d.ts +2 -7
- package/dist/lib/sandbox/index.d.ts.map +1 -1
- package/dist/lib/sandbox/installers/github-release.d.ts +46 -0
- package/dist/lib/sandbox/installers/github-release.d.ts.map +1 -0
- package/dist/lib/sandbox/installers/index.d.ts +7 -0
- package/dist/lib/sandbox/installers/index.d.ts.map +1 -0
- package/dist/lib/sandbox/installers/installer.d.ts +44 -0
- package/dist/lib/sandbox/installers/installer.d.ts.map +1 -0
- package/dist/lib/sandbox/installers/npm.d.ts +32 -0
- package/dist/lib/sandbox/installers/npm.d.ts.map +1 -0
- package/dist/lib/sandbox/installers/package-manager.d.ts +19 -0
- package/dist/lib/sandbox/installers/package-manager.d.ts.map +1 -0
- package/dist/lib/sandbox/installers/pip.d.ts +37 -0
- package/dist/lib/sandbox/installers/pip.d.ts.map +1 -0
- package/dist/lib/sandbox/installers/url-binary.d.ts +41 -0
- package/dist/lib/sandbox/installers/url-binary.d.ts.map +1 -0
- package/dist/lib/sandbox/subcommand.d.ts +11 -11
- package/dist/lib/sandbox/subcommand.d.ts.map +1 -1
- package/dist/lib/sandbox/upload-skills.d.ts +6 -0
- package/dist/lib/sandbox/upload-skills.d.ts.map +1 -1
- package/dist/lib/sandbox/virtual-sandbox.d.ts +10 -0
- package/dist/lib/sandbox/virtual-sandbox.d.ts.map +1 -0
- package/dist/lib/save/reminder-target-handler.d.ts +36 -0
- package/dist/lib/save/reminder-target-handler.d.ts.map +1 -0
- package/dist/lib/save/save-pipeline.d.ts +28 -0
- package/dist/lib/save/save-pipeline.d.ts.map +1 -0
- package/dist/lib/save/tool-output-target-handler.d.ts +7 -0
- package/dist/lib/save/tool-output-target-handler.d.ts.map +1 -0
- package/dist/lib/save/user-target-handler.d.ts +7 -0
- package/dist/lib/save/user-target-handler.d.ts.map +1 -0
- package/dist/lib/stream/change-source.d.ts +11 -0
- package/dist/lib/stream/change-source.d.ts.map +1 -0
- package/dist/lib/stream/ddl.stream.postgres-notify.d.ts +3 -0
- package/dist/lib/stream/ddl.stream.postgres-notify.d.ts.map +1 -0
- package/dist/lib/stream/ddl.stream.postgres.d.ts +2 -0
- package/dist/lib/stream/ddl.stream.postgres.d.ts.map +1 -0
- package/dist/lib/stream/polling-change-source.d.ts +27 -0
- package/dist/lib/stream/polling-change-source.d.ts.map +1 -0
- package/dist/lib/stream/polling-policy.d.ts +0 -1
- package/dist/lib/stream/polling-policy.d.ts.map +1 -1
- package/dist/lib/stream/postgres-notify-change-source.d.ts +15 -0
- package/dist/lib/stream/postgres-notify-change-source.d.ts.map +1 -0
- package/dist/lib/stream/postgres.stream-store.d.ts +29 -0
- package/dist/lib/stream/postgres.stream-store.d.ts.map +1 -0
- package/dist/lib/stream/stream-manager.d.ts +8 -27
- package/dist/lib/stream/stream-manager.d.ts.map +1 -1
- package/dist/lib/ui-message-guards.d.ts +10 -0
- package/dist/lib/ui-message-guards.d.ts.map +1 -0
- package/package.json +8 -13
- package/dist/lib/sandbox/extension.d.ts +0 -39
- package/dist/lib/sandbox/extension.d.ts.map +0 -1
- package/dist/lib/sandbox/openapi/demo.d.ts +0 -2
- package/dist/lib/sandbox/openapi/demo.d.ts.map +0 -1
- package/dist/lib/sandbox/openapi/extension.d.ts +0 -19
- package/dist/lib/sandbox/openapi/extension.d.ts.map +0 -1
- package/dist/lib/sandbox/openapi/format.d.ts +0 -11
- package/dist/lib/sandbox/openapi/format.d.ts.map +0 -1
- package/dist/lib/sandbox/openapi/schema.d.ts +0 -9
- package/dist/lib/sandbox/openapi/schema.d.ts.map +0 -1
- package/dist/lib/sandbox/openapi/skill/index.d.ts +0 -6
- package/dist/lib/sandbox/openapi/skill/index.d.ts.map +0 -1
- package/dist/lib/sandbox/openapi/skill/index.js +0 -14
- package/dist/lib/sandbox/openapi/skill/index.js.map +0 -7
- package/dist/lib/sandbox/openapi/skill/openapi-cli/SKILL.md +0 -109
- package/dist/lib/sandbox/openapi/validate.d.ts +0 -7
- package/dist/lib/sandbox/openapi/validate.d.ts.map +0 -1
- package/dist/lib/sandbox/routing-sandbox.d.ts +0 -28
- package/dist/lib/sandbox/routing-sandbox.d.ts.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CreateBashToolOptions } from 'bash-tool';
|
|
2
|
-
import { type
|
|
2
|
+
import { type DockerMount, type DockerResources, type DockerSandbox } from './docker-sandbox.ts';
|
|
3
|
+
import type { Installer } from './installers/installer.ts';
|
|
3
4
|
import type { AgentSandbox, SkillUploadInput } from './types.ts';
|
|
4
5
|
/**
|
|
5
6
|
* Base options shared by RuntimeContainerToolOptions and DockerfileContainerToolOptions.
|
|
@@ -24,10 +25,31 @@ interface BaseContainerToolOptions extends Omit<CreateBashToolOptions, 'sandbox'
|
|
|
24
25
|
export interface RuntimeContainerToolOptions extends BaseContainerToolOptions {
|
|
25
26
|
/** Docker image to use (default: 'alpine:latest') */
|
|
26
27
|
image?: string;
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Ordered list of installers run after the container starts.
|
|
30
|
+
*
|
|
31
|
+
* Built-in factory helpers:
|
|
32
|
+
* - `pkg([...])` — OS packages (apk/apt-get auto-detected)
|
|
33
|
+
* - `urlBinary({ name, url, binaryPath? })` — pre-built binary from a URL
|
|
34
|
+
* - `npm(name, { ensureRuntime?, version? })` — global npm install
|
|
35
|
+
* - `pip(name, { ensureRuntime?, version? })` — pip install
|
|
36
|
+
* - `githubRelease({ owner, repo, version, name, asset })` — GitHub release asset
|
|
37
|
+
*
|
|
38
|
+
* For anything else, subclass `Installer` and pass an instance directly.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { pkg, urlBinary, npm } from '@deepagents/context';
|
|
43
|
+
*
|
|
44
|
+
* createContainerTool({
|
|
45
|
+
* installers: [
|
|
46
|
+
* pkg(['curl', 'jq']),
|
|
47
|
+
* npm('prettier', { ensureRuntime: true }),
|
|
48
|
+
* ],
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
installers?: Installer[];
|
|
31
53
|
}
|
|
32
54
|
/**
|
|
33
55
|
* Options for container tool using DockerfileStrategy.
|
|
@@ -89,8 +111,10 @@ export type ContainerToolResult = Omit<AgentSandbox, 'sandbox'> & {
|
|
|
89
111
|
*
|
|
90
112
|
* @example RuntimeStrategy (default)
|
|
91
113
|
* ```typescript
|
|
114
|
+
* import { createContainerTool, pkg } from '@deepagents/context';
|
|
115
|
+
*
|
|
92
116
|
* const sandbox = await createContainerTool({
|
|
93
|
-
*
|
|
117
|
+
* installers: [pkg(['curl', 'jq'])],
|
|
94
118
|
* mounts: [{
|
|
95
119
|
* hostPath: process.cwd(),
|
|
96
120
|
* containerPath: '/workspace',
|
|
@@ -112,7 +136,7 @@ export type ContainerToolResult = Omit<AgentSandbox, 'sandbox'> & {
|
|
|
112
136
|
* @example RuntimeStrategy with skills
|
|
113
137
|
* ```typescript
|
|
114
138
|
* const sandbox = await createContainerTool({
|
|
115
|
-
*
|
|
139
|
+
* installers: [pkg(['curl', 'jq'])],
|
|
116
140
|
* skills: [
|
|
117
141
|
* { host: './skills', sandbox: '/workspace/skills' },
|
|
118
142
|
* ],
|
|
@@ -149,7 +173,7 @@ export type ContainerToolResult = Omit<AgentSandbox, 'sandbox'> & {
|
|
|
149
173
|
* @example With hooks for logging
|
|
150
174
|
* ```typescript
|
|
151
175
|
* const sandbox = await createContainerTool({
|
|
152
|
-
*
|
|
176
|
+
* installers: [pkg(['python3'])],
|
|
153
177
|
* onBeforeBashCall: ({ command }) => {
|
|
154
178
|
* console.log('Running:', command);
|
|
155
179
|
* },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-tool.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/container-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"container-tool.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/container-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAKnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,UAAU,wBAAyB,SAAQ,IAAI,CAC7C,qBAAqB,EACrB,SAAS,GAAG,iBAAiB,CAC9B;IACC,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,wCAAwC;IACxC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,wBAAwB;IAC3E,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA+B,SAAQ,wBAAwB;IAC9E,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CACvD,qBAAqB,EACrB,SAAS,GAAG,iBAAiB,CAC9B;IACC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC5B,2BAA2B,GAC3B,8BAA8B,GAC9B,2BAA2B,CAAC;AAEhC;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG;IAChE,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAoD9B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export declare class DockerSandboxError extends Error {
|
|
2
|
+
readonly containerId?: string;
|
|
3
|
+
constructor(message: string, containerId?: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class DockerNotAvailableError extends DockerSandboxError {
|
|
6
|
+
constructor();
|
|
7
|
+
}
|
|
8
|
+
export declare class ContainerCreationError extends DockerSandboxError {
|
|
9
|
+
readonly image: string;
|
|
10
|
+
cause?: Error;
|
|
11
|
+
constructor(message: string, image: string, cause?: Error);
|
|
12
|
+
}
|
|
13
|
+
export declare class PackageInstallError extends DockerSandboxError {
|
|
14
|
+
readonly packages: string[];
|
|
15
|
+
readonly image: string;
|
|
16
|
+
readonly packageManager: 'apk' | 'apt-get';
|
|
17
|
+
readonly stderr: string;
|
|
18
|
+
constructor(packages: string[], image: string, packageManager: 'apk' | 'apt-get', stderr: string, containerId?: string);
|
|
19
|
+
}
|
|
20
|
+
export type InstallSource = 'url' | 'npm' | 'pypi' | 'github-release';
|
|
21
|
+
export interface InstallErrorOptions {
|
|
22
|
+
/** Logical name of the thing being installed (e.g. `'prettier'`, `'presenterm'`). */
|
|
23
|
+
target: string;
|
|
24
|
+
/** Where it was being fetched from. */
|
|
25
|
+
source: InstallSource;
|
|
26
|
+
/** Underlying failure message (typically stderr). */
|
|
27
|
+
reason: string;
|
|
28
|
+
/** Resolved URL when applicable (URL binary / GitHub release). */
|
|
29
|
+
url?: string;
|
|
30
|
+
containerId?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class InstallError extends DockerSandboxError {
|
|
33
|
+
readonly target: string;
|
|
34
|
+
readonly source: InstallSource;
|
|
35
|
+
readonly reason: string;
|
|
36
|
+
readonly url?: string;
|
|
37
|
+
constructor(opts: InstallErrorOptions);
|
|
38
|
+
}
|
|
39
|
+
export declare class MissingRuntimeError extends DockerSandboxError {
|
|
40
|
+
readonly runtime: string;
|
|
41
|
+
readonly required: string[];
|
|
42
|
+
constructor(runtime: string, required: string[], details?: string, containerId?: string);
|
|
43
|
+
}
|
|
44
|
+
export declare class MountPathError extends DockerSandboxError {
|
|
45
|
+
readonly hostPath: string;
|
|
46
|
+
readonly containerPath: string;
|
|
47
|
+
constructor(hostPath: string, containerPath: string);
|
|
48
|
+
}
|
|
49
|
+
export declare class DockerfileBuildError extends DockerSandboxError {
|
|
50
|
+
readonly stderr: string;
|
|
51
|
+
constructor(stderr: string);
|
|
52
|
+
}
|
|
53
|
+
export declare class ComposeStartError extends DockerSandboxError {
|
|
54
|
+
readonly composeFile: string;
|
|
55
|
+
readonly stderr: string;
|
|
56
|
+
constructor(composeFile: string, stderr: string);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=docker-sandbox-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-sandbox-errors.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/docker-sandbox-errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;CAKlD;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;;CAK9D;AAED,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM1D;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGtB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,KAAK,GAAG,SAAS,EACjC,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM;CAavB;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,aAAa,CAAC;IACtB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,mBAAmB;CAYtC;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAG1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM;CAQvB;AAED,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEnB,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAQpD;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM;CAK3B;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAMhD"}
|