@synapsor/runner 1.4.12 → 1.4.122
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/CHANGELOG.md +65 -0
- package/README.md +63 -60
- package/THREAT_MODEL.md +6 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/runner.mjs +29227 -2475
- package/docs/README.md +11 -0
- package/docs/aggregate-reads.md +49 -0
- package/docs/bounded-set-writeback.md +9 -4
- package/docs/capability-authoring.md +43 -1
- package/docs/cloud-cli.md +248 -0
- package/docs/cloud-mode.md +88 -6
- package/docs/cloud-push.md +22 -5
- package/docs/compliance-reports.md +42 -0
- package/docs/conformance.md +15 -0
- package/docs/contract-review.md +57 -0
- package/docs/contract-testing.md +76 -0
- package/docs/dsl-reference.md +50 -6
- package/docs/graduated-trust.md +64 -0
- package/docs/hosted-cloud-linked-verification.md +97 -0
- package/docs/limitations.md +10 -0
- package/docs/oss-vs-cloud.md +13 -6
- package/docs/release-notes.md +65 -0
- package/docs/rfcs/007-trusted-principal-row-scope.md +75 -0
- package/docs/runner-bundles.md +24 -0
- package/docs/runner-config-reference.md +16 -0
- package/docs/running-a-runner-fleet.md +8 -0
- package/docs/security-boundary.md +28 -1
- package/examples/runner-fleet/seed/mysql.sql +5 -1
- package/examples/runner-fleet/seed/postgres.sql +5 -1
- package/examples/support-plan-credit/README.md +8 -6
- package/examples/support-plan-credit/synapsor.contract-tests.json +53 -0
- package/fixtures/dsl/aggregate-read.synapsor.sql +21 -0
- package/fixtures/dsl/bounded-set-multi-term.synapsor.sql +30 -0
- package/fixtures/dsl/principal-row-scope.synapsor.sql +23 -0
- package/fixtures/protocol/MANIFEST.json +10 -10
- package/package.json +4 -1
- package/schemas/change-set.v1.schema.json +14 -0
- package/schemas/change-set.v2.schema.json +14 -0
- package/schemas/change-set.v3.schema.json +2 -0
- package/schemas/compensation-change-set.v1.schema.json +3 -2
- package/schemas/inverse-descriptor.v1.schema.json +2 -0
- package/schemas/synapsor.contract-tests.schema.json +54 -0
- package/schemas/synapsor.runner.schema.json +92 -4
- package/schemas/writeback-job.v1.schema.json +14 -0
- package/schemas/writeback-job.v2.schema.json +14 -0
- package/schemas/writeback-job.v3.schema.json +2 -0
- package/schemas/writeback-job.v4.schema.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,70 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.4.122 (prepared, not published)
|
|
4
|
+
|
|
5
|
+
### Trusted principal row scope and Cloud-linked governance
|
|
6
|
+
|
|
7
|
+
- Adds a canonical reviewer-fixed principal row scope that is always
|
|
8
|
+
AND-composed with tenant scope and resolved only from a required trusted
|
|
9
|
+
context binding. Missing or invalid principal authority fails closed.
|
|
10
|
+
- Enforces the bound principal predicate in PostgreSQL and MySQL reads,
|
|
11
|
+
proposals, aggregates, guarded CRUD, bounded sets, executor envelopes,
|
|
12
|
+
receipts, replay, and reviewed compensation. Same-tenant cross-principal
|
|
13
|
+
access uses the same generic miss as cross-tenant or absent rows.
|
|
14
|
+
- Preserves the scope through DSL parse/format/compile, Spec validation and
|
|
15
|
+
digesting, config normalization, protocol jobs, C++/Cloud round trips,
|
|
16
|
+
contract explanation/testing, and scoped evidence/proposal/resource handles.
|
|
17
|
+
- Adds explicit `local_only` and `cloud_linked` authority behavior. Cloud-linked
|
|
18
|
+
proposals use a durable idempotent outbox, metadata-only evidence residency,
|
|
19
|
+
Cloud-governed approval/leasing, terminal-state reconciliation, and no local
|
|
20
|
+
approval/apply fallback while Cloud is unavailable.
|
|
21
|
+
- Separates contract-registry human/service credentials from Runner machine
|
|
22
|
+
tokens. Cloud push no longer accepts secrets through command arguments or a
|
|
23
|
+
Runner-token fallback.
|
|
24
|
+
- Introduces the separately packable `@synapsor/cli@0.1.0-beta.1` Cloud client;
|
|
25
|
+
`synapsor-runner` remains the local MCP/database enforcement boundary.
|
|
26
|
+
- Stages `@synapsor/spec@1.4.2`, `@synapsor/dsl@1.4.3`, and
|
|
27
|
+
`@synapsor/runner@1.4.122`. Nothing is published by this change.
|
|
28
|
+
|
|
29
|
+
## 1.4.121 (prepared, not published)
|
|
30
|
+
|
|
31
|
+
### Contract trust surface and bounded-set parser correctness
|
|
32
|
+
|
|
33
|
+
- Fixes BUG-018: `SELECT WHERE risk_level = 'high' AND case_status =
|
|
34
|
+
'active'` now compiles into two ordered canonical equality terms instead of
|
|
35
|
+
silently folding the second term into the first string value.
|
|
36
|
+
- Uses a quote-aware, full-clause parser. `AND` inside a quoted literal remains
|
|
37
|
+
literal content, while malformed terms, trailing tokens, `OR`, parentheses,
|
|
38
|
+
and non-equality operators fail during DSL compilation with location-aware
|
|
39
|
+
errors.
|
|
40
|
+
- Preserves existing single-term contracts and literal types. The canonical
|
|
41
|
+
Spec bump in this release is limited to the additive enum and aggregate-read
|
|
42
|
+
fields described below.
|
|
43
|
+
- Adds standalone DSL and bundled Runner parity coverage plus PostgreSQL/MySQL
|
|
44
|
+
live proof under source-database and Runner-ledger receipt authority. The
|
|
45
|
+
proof excludes first-term-only, second-term-only, and wrong-tenant rows and
|
|
46
|
+
verifies exact receipt/replay membership.
|
|
47
|
+
- Adds a real stdio contract language server plus canonical `contract explain`
|
|
48
|
+
and deterministic text/JSON/SARIF lint for review before serving.
|
|
49
|
+
- Adds adopter-owned static/live contract tests with a public manifest schema,
|
|
50
|
+
generic operator-boundary checks, and disposable PostgreSQL/MySQL coverage.
|
|
51
|
+
- Adds tenant-scoped object/principal ledger reports in JSON, Markdown, and PDF
|
|
52
|
+
with redaction, canonical digests, optional operator signatures, and tamper
|
|
53
|
+
verification.
|
|
54
|
+
- Adds typed DSL enums and canonical fixed aggregate reads for COUNT/SUM/AVG.
|
|
55
|
+
Aggregate tools use trusted tenant scope, fixed equality selection, mandatory
|
|
56
|
+
minimum-group suppression, one scalar result, and evidence/query audit with
|
|
57
|
+
no member rows or IDs.
|
|
58
|
+
- Adds disabled-by-default graduated-trust recommendations. Evaluation uses
|
|
59
|
+
scoped human-reviewed outcomes, excludes auto-approval as independent
|
|
60
|
+
evidence, requires verified operator review, and exports a separate
|
|
61
|
+
digest-bound contract artifact without activating it.
|
|
62
|
+
- Proves additive Spec/DSL/Runner/C++ aggregate and enum parity, shared Postgres
|
|
63
|
+
recommendation durability, and transient PostgreSQL/MySQL timeout
|
|
64
|
+
classification.
|
|
65
|
+
- Stages `@synapsor/spec@1.4.1`, `@synapsor/dsl@1.4.2`, and
|
|
66
|
+
`@synapsor/runner@1.4.121`. Nothing is published by this change.
|
|
67
|
+
|
|
3
68
|
## 1.4.12 (prepared, not published)
|
|
4
69
|
|
|
5
70
|
### Runtime-store smoke-call consistency
|
package/README.md
CHANGED
|
@@ -14,9 +14,8 @@ surface.
|
|
|
14
14
|
|
|
15
15
|
## Prove It In 60 Seconds
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
seconds and touch nothing but a local fixture file.
|
|
17
|
+
Path: **audit** MCP risk, **demo** the boundary, then **connect** staging. The
|
|
18
|
+
first two commands touch only a local fixture.
|
|
20
19
|
|
|
21
20
|
First, inspect the risk in a typical raw-SQL database MCP server. This works
|
|
22
21
|
even if you never adopt Runner:
|
|
@@ -25,18 +24,16 @@ even if you never adopt Runner:
|
|
|
25
24
|
npx -y @synapsor/runner audit --example dangerous-db-mcp
|
|
26
25
|
```
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
`tools/list` endpoint, or stdio MCP server:
|
|
27
|
+
Audit your own tool manifest, remote `tools/list`, or stdio server:
|
|
30
28
|
|
|
31
29
|
```bash
|
|
32
30
|
npx -y @synapsor/runner audit ./tools-list.json
|
|
33
31
|
```
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Review](docs/mcp-audit.md) for remote, stdio, JSON, and Markdown workflows.
|
|
33
|
+
It flags raw SQL, arbitrary identifiers, model-controlled authority,
|
|
34
|
+
model-facing approval/writeback, and missing conflict or idempotency signals.
|
|
35
|
+
It does not call business tools. See [MCP Database Risk
|
|
36
|
+
Review](docs/mcp-audit.md) for supported workflows and limits.
|
|
40
37
|
|
|
41
38
|
Then see the proposal, approval boundary, evidence, and replay loop. It needs no
|
|
42
39
|
database, Docker, config file, MCP client, or Synapsor account:
|
|
@@ -78,36 +75,25 @@ approval, apply, or revert tools. A human or trusted operator approves outside
|
|
|
78
75
|
MCP, then Runner performs a guarded write or routes the proposal to an
|
|
79
76
|
app-owned executor.
|
|
80
77
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- proposals separate model intent from commit authority, including aggregate
|
|
87
|
-
auto-approval ceilings where configured;
|
|
88
|
-
- evidence, query audit, idempotency receipts, and replay preserve what was
|
|
89
|
-
inspected, requested, approved, and applied.
|
|
90
|
-
|
|
91
|
-
Runner supports bounded deployments when its documented database, identity,
|
|
92
|
-
ledger, backup, and operational controls are satisfied. It does not make raw
|
|
93
|
-
SQL tools, host infrastructure, or prompt-injection-prone clients safe.
|
|
78
|
+
Contracts constrain tools, trusted context, visible and writable columns,
|
|
79
|
+
bounds, transitions, and approvals. Proposals separate model intent from commit
|
|
80
|
+
authority; evidence, query audit, receipts, and replay preserve the reviewed
|
|
81
|
+
lifecycle. Runner does not make raw SQL tools, hosts, or
|
|
82
|
+
prompt-injection-prone clients safe.
|
|
94
83
|
|
|
95
84
|
## Why Not Just Use A Prompt And App Code?
|
|
96
85
|
|
|
97
|
-
|
|
98
|
-
authorization boundary. First ask who produces the SQL:
|
|
86
|
+
Prompts are not an authorization boundary. First ask who produces the SQL:
|
|
99
87
|
|
|
100
|
-
- **The model produces SQL:**
|
|
101
|
-
|
|
88
|
+
- **The model produces SQL:** validation must understand arbitrary queries,
|
|
89
|
+
scope, and side effects. That is `execute_sql` behind a parser.
|
|
102
90
|
- **Trusted app code produces fixed, parameterized SQL:** good. You have built
|
|
103
91
|
a semantic tool, and that may be enough for a small read-only application.
|
|
104
92
|
|
|
105
|
-
Runner
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
guide](docs/why-synapsor-vs-app-guardrails.md) for the decision table, public
|
|
110
|
-
incident evidence, and regulated-data boundaries.
|
|
93
|
+
Runner adds one reviewed contract for trusted scope, field controls, evidence,
|
|
94
|
+
approval outside MCP, guarded writeback, receipts, replay, and compensation.
|
|
95
|
+
Use your own code when you do not need that lifecycle. See the [build-vs-adopt
|
|
96
|
+
guide](docs/why-synapsor-vs-app-guardrails.md).
|
|
111
97
|
|
|
112
98
|
## Connect A Staging Database
|
|
113
99
|
|
|
@@ -177,6 +163,23 @@ bounded inverse; `synapsor-runner revert <proposal_id>` creates a separately
|
|
|
177
163
|
approved proposal. This is not rollback, time travel, or app-owned
|
|
178
164
|
compensation.
|
|
179
165
|
|
|
166
|
+
## Review And Prove Your Contract
|
|
167
|
+
|
|
168
|
+
Before serving a contract, use `contract explain` for a reviewer-readable
|
|
169
|
+
boundary, `contract lint --strict` for deterministic CI checks, and `contract
|
|
170
|
+
test` for adopter-owned allow/deny/redaction cases. The built-in language
|
|
171
|
+
server supplies diagnostics, completion, hover, and formatting for
|
|
172
|
+
`.synapsor.sql` and legacy `.synapsor` files. See [Contract
|
|
173
|
+
Review](docs/contract-review.md) and [Contract
|
|
174
|
+
Testing](docs/contract-testing.md).
|
|
175
|
+
|
|
176
|
+
Runner also supports reviewed [aggregate reads](docs/aggregate-reads.md),
|
|
177
|
+
tenant-scoped tamper-evident [ledger reports](docs/compliance-reports.md), and
|
|
178
|
+
opt-in [graduated-trust recommendations](docs/graduated-trust.md). Aggregate
|
|
179
|
+
tools return one scalar and no source rows. Graduated trust is disabled by
|
|
180
|
+
default, remains operator-only, and can export a reviewable artifact but never
|
|
181
|
+
activate it.
|
|
182
|
+
|
|
180
183
|
## Trust And Verification
|
|
181
184
|
|
|
182
185
|
Start with the **[Threat Model](THREAT_MODEL.md)**. It defines protected assets,
|
|
@@ -185,9 +188,16 @@ trust boundaries, covered threats, non-goals, and required operator controls.
|
|
|
185
188
|
- [Conformance fixtures](docs/conformance.md) prove trusted context, scoped
|
|
186
189
|
reads, kept-out fields, proposal boundaries, approval, receipts, and replay
|
|
187
190
|
behavior rather than only validating JSON shape.
|
|
191
|
+
- `contract test` lets adopters encode the same boundary checks for their own
|
|
192
|
+
synthetic fixtures; it never invokes an LLM and refuses remote live targets
|
|
193
|
+
by default.
|
|
188
194
|
- MCP proposal, evidence, and replay handles are references rather than bearer
|
|
189
195
|
authority: resource reads re-check the owning tenant and principal against
|
|
190
196
|
the current trusted session.
|
|
197
|
+
- Same-tenant owner/assignee isolation uses a reviewed
|
|
198
|
+
[`PRINCIPAL SCOPE KEY`](docs/capability-authoring.md#same-tenant-principal-row-scope)
|
|
199
|
+
composed with mandatory tenant scope; `test:principal-scope` proves generic
|
|
200
|
+
cross-principal denial and evidence-handle isolation on Postgres and MySQL.
|
|
191
201
|
- `test:live-apply`, `test:guarded-crud`, `test:bounded-set`, and
|
|
192
202
|
`test:reversible` run disposable PostgreSQL/MySQL scenarios. They prove no
|
|
193
203
|
pre-approval mutation, guarded single-row CRUD, idempotent retry,
|
|
@@ -204,30 +214,14 @@ See [Security Boundary](docs/security-boundary.md) and
|
|
|
204
214
|
|
|
205
215
|
## Operate The Approval Loop
|
|
206
216
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
[Production](docs/production.md) and the
|
|
216
|
-
[Runner Config Reference](docs/runner-config-reference.md).
|
|
217
|
-
|
|
218
|
-
`smoke call` honors `runtime_store`: artifacts go to shared Postgres; failures
|
|
219
|
-
never fall back to SQLite. `--store` is compatibility plumbing. Requires
|
|
220
|
-
`1.4.12`+.
|
|
221
|
-
|
|
222
|
-
For a small multi-tenant fleet, bind every capability context to verified HTTP
|
|
223
|
-
claims, use `jwt_asymmetric` session auth, and share a bounded Postgres
|
|
224
|
-
`runtime_store`. Never assume a global `http_claims` setting overrides an
|
|
225
|
-
environment-bound contract context; Runner rejects that contradiction before
|
|
226
|
-
serving tools. Load balancers should use dependency-free `/healthz` for
|
|
227
|
-
liveness and `/readyz` for source/ledger/writeback readiness. The tested
|
|
228
|
-
two-Runner topology, pool/rate-limit budgets, metrics, backup/restore,
|
|
229
|
-
dead-letter, and rolling-upgrade rules are in
|
|
230
|
-
[Running A Small Runner Fleet](docs/running-a-runner-fleet.md).
|
|
217
|
+
Policies combine per-proposal and daily ceilings; exceeding one routes to human
|
|
218
|
+
review. Operators get batch apply, metrics, structured logs, and optional
|
|
219
|
+
signed roles. Local SQLite is the default; bounded fleets can use verified HTTP
|
|
220
|
+
claims, asymmetric JWT sessions, and a shared Postgres `runtime_store`.
|
|
221
|
+
`smoke call` follows that store and never falls back to SQLite. Use `/healthz`
|
|
222
|
+
for liveness and `/readyz` for dependency readiness. See
|
|
223
|
+
[Production](docs/production.md), [Runner Config](docs/runner-config-reference.md),
|
|
224
|
+
and [Small Runner Fleets](docs/running-a-runner-fleet.md).
|
|
231
225
|
|
|
232
226
|
## Packages
|
|
233
227
|
|
|
@@ -236,6 +230,7 @@ dead-letter, and rolling-upgrade rules are in
|
|
|
236
230
|
| `@synapsor/runner` | CLI, MCP runtime, local ledger, proposals, approval, guarded writeback, replay, and MCP audit. |
|
|
237
231
|
| `@synapsor/spec` | Canonical portable contracts for contexts, capabilities, workflows, evidence, proposals, receipts, and replay. |
|
|
238
232
|
| `@synapsor/dsl` | SQL-like authoring that compiles contexts, capabilities, and workflow declarations into canonical contract JSON. |
|
|
233
|
+
| `@synapsor/cli` | Synapsor Cloud administration, contract governance, human review, Runner connections, and shared audit records. |
|
|
239
234
|
|
|
240
235
|
Runner executes locally. The spec is shared by Runner and Cloud/C++; the DSL
|
|
241
236
|
is its reviewable source format. Start with [Capability
|
|
@@ -255,12 +250,20 @@ deployments: your database remains the source of truth and Runner stores review
|
|
|
255
250
|
artifacts in the default local SQLite ledger or an opt-in shared Postgres
|
|
256
251
|
runtime store.
|
|
257
252
|
Synapsor Cloud adds a shared contract registry, immutable versions,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
253
|
+
source-scoped Runner connections, downloadable bundles, a human approval
|
|
254
|
+
inbox, durable leased writeback jobs, and a redacted shared activity/receipt
|
|
255
|
+
chronology. Database credentials and guarded execution remain local. See [Cloud
|
|
256
|
+
Mode](docs/cloud-mode.md) for the design-partner path and [OSS Runner vs
|
|
257
|
+
Synapsor Cloud](docs/oss-vs-cloud.md) for the detailed boundary.
|
|
258
|
+
|
|
259
|
+
`synapsor-runner` owns the local MCP/database boundary. `synapsor` from
|
|
260
|
+
`@synapsor/cli` manages Cloud review and audit. Both Cloud push commands use
|
|
261
|
+
the same contract digest and scoped service-key API. See the [Cloud CLI
|
|
262
|
+
guide](https://github.com/Synapsor/Synapsor-Runner/blob/main/docs/cloud-cli.md).
|
|
261
263
|
|
|
262
264
|
## Next Steps
|
|
263
265
|
|
|
266
|
+
- Follow the [step-by-step Synapsor Tutorial](https://github.com/sandeshtiwari/Synapsor-Tutorial).
|
|
264
267
|
- Run the [`support-plan-credit` flagship example](examples/support-plan-credit).
|
|
265
268
|
- Connect [Claude, Cursor, OpenAI Agents SDK, or another MCP client](docs/mcp-clients.md).
|
|
266
269
|
- Author and [push a validated contract to Cloud](docs/cloud-push.md).
|
package/THREAT_MODEL.md
CHANGED
|
@@ -50,6 +50,12 @@ idempotency boundary for effects.
|
|
|
50
50
|
- Model asks for arbitrary SQL: no generic SQL tool is exposed in the Synapsor path.
|
|
51
51
|
- Model supplies `tenant_id`, `principal`, source id, allowed columns, row version, or approval identity: runner rejects trusted-binding overrides.
|
|
52
52
|
- Prompt injection in database content asks the model to bypass policy: the runner ignores text as authority and only accepts structured capability/job state.
|
|
53
|
+
- Aggregate inference through a one-record group: reviewed aggregate tools
|
|
54
|
+
require minimum-group suppression and never return member rows or IDs. This
|
|
55
|
+
reduces, but does not eliminate, statistical inference risk.
|
|
56
|
+
- Policy self-expansion from favorable automated outcomes: graduated trust is
|
|
57
|
+
off by default, excludes auto-approvals from human evidence, requires a
|
|
58
|
+
verified operator decision, and exports without activation.
|
|
53
59
|
- Wrong tenant or object: reads and writes include trusted primary-key and tenant predicates.
|
|
54
60
|
- Disallowed field update: patch columns must be allowlisted.
|
|
55
61
|
- Stale row: conflict guard mismatch returns `conflict` instead of silently writing.
|
package/dist/cli.d.ts
CHANGED
|
@@ -14,6 +14,9 @@ export declare function runInitWizard(args: string[], options?: {
|
|
|
14
14
|
stdout?: Pick<NodeJS.WriteStream, "write">;
|
|
15
15
|
}): Promise<number>;
|
|
16
16
|
export declare function resolveSqlWriteDatabaseUrl(job: WritebackJob, configPath: string, env: NodeJS.ProcessEnv): Promise<string>;
|
|
17
|
+
export declare function verifyLocalWritebackAuthority(job: WritebackJob, configPath: string, storePath?: string, options?: {
|
|
18
|
+
cloudApproved?: boolean;
|
|
19
|
+
}): Promise<void>;
|
|
17
20
|
export declare function reconciliationSupportedOutcome(observation: ReconciliationObservation): "applied" | "conflict" | "failed";
|
|
18
21
|
export declare function reconciliationReceipt(intent: StoredWritebackIntent, observation: ReconciliationObservation, outcome: "applied" | "conflict" | "failed", runnerId: string, reason: string): ExecutionReceiptV2 | ExecutionReceiptV3 | ExecutionReceiptV4;
|
|
19
22
|
export {};
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,OAAO,EAAkU,KAAK,WAAW,EAA0H,MAAM,6BAA6B,CAAC;AAIvf,OAAO,EAkBL,KAAK,qBAAqB,EAK3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAgI,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAqG,KAAK,YAAY,EAAwB,MAAM,2BAA2B,CAAC;AAEhY,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAWL,KAAK,yBAAyB,EAG/B,MAAM,8BAA8B,CAAC;AA8UtC,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgE1D;AA0FD,KAAK,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9E,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACvC,GACL,OAAO,CAAC,MAAM,CAAC,CA2YjB;AA4mHD,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/H;AAojBD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,IAAI,CAAC,CAgGf;AA0lCD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,yBAAyB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAKxH;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,yBAAyB,EACtC,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAgH9D"}
|