@uptimizr/db 1.0.1 → 2.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.
Files changed (88) hide show
  1. package/AGENTS.md +103 -1
  2. package/README.md +100 -3
  3. package/dist/cli/createProject.js +23 -6
  4. package/dist/cli/createProject.js.map +1 -1
  5. package/dist/cli/seed.js +12 -4
  6. package/dist/cli/seed.js.map +1 -1
  7. package/dist/duckdb/audit.d.ts +13 -0
  8. package/dist/duckdb/audit.d.ts.map +1 -0
  9. package/dist/duckdb/audit.js +67 -0
  10. package/dist/duckdb/audit.js.map +1 -0
  11. package/dist/duckdb/client.d.ts.map +1 -1
  12. package/dist/duckdb/client.js +4 -0
  13. package/dist/duckdb/client.js.map +1 -1
  14. package/dist/duckdb/migrations.d.ts.map +1 -1
  15. package/dist/duckdb/migrations.js +97 -0
  16. package/dist/duckdb/migrations.js.map +1 -1
  17. package/dist/duckdb/projects.d.ts +9 -5
  18. package/dist/duckdb/projects.d.ts.map +1 -1
  19. package/dist/duckdb/projects.js +54 -24
  20. package/dist/duckdb/projects.js.map +1 -1
  21. package/dist/duckdb/queries.d.ts +7 -0
  22. package/dist/duckdb/queries.d.ts.map +1 -1
  23. package/dist/duckdb/queries.js +10 -1
  24. package/dist/duckdb/queries.js.map +1 -1
  25. package/dist/duckdb/sceneRegions.d.ts +24 -0
  26. package/dist/duckdb/sceneRegions.d.ts.map +1 -0
  27. package/dist/duckdb/sceneRegions.js +72 -0
  28. package/dist/duckdb/sceneRegions.js.map +1 -0
  29. package/dist/index.d.ts +8 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +18 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/metadata.d.ts +195 -9
  34. package/dist/metadata.d.ts.map +1 -1
  35. package/dist/metadata.js +192 -0
  36. package/dist/metadata.js.map +1 -1
  37. package/dist/parity/compare.d.ts +22 -0
  38. package/dist/parity/compare.d.ts.map +1 -1
  39. package/dist/parity/compare.js +31 -0
  40. package/dist/parity/compare.js.map +1 -1
  41. package/dist/query/aggregations.d.ts +8 -0
  42. package/dist/query/aggregations.d.ts.map +1 -1
  43. package/dist/query/aggregations.js +78 -0
  44. package/dist/query/aggregations.js.map +1 -1
  45. package/dist/query/coerce.d.ts +94 -0
  46. package/dist/query/coerce.d.ts.map +1 -0
  47. package/dist/query/coerce.js +191 -0
  48. package/dist/query/coerce.js.map +1 -0
  49. package/dist/query/summary/cluster.d.ts +78 -0
  50. package/dist/query/summary/cluster.d.ts.map +1 -0
  51. package/dist/query/summary/cluster.js +200 -0
  52. package/dist/query/summary/cluster.js.map +1 -0
  53. package/dist/query/summary/columns.d.ts +66 -0
  54. package/dist/query/summary/columns.d.ts.map +1 -0
  55. package/dist/query/summary/columns.js +98 -0
  56. package/dist/query/summary/columns.js.map +1 -0
  57. package/dist/query/summary/format.d.ts +31 -0
  58. package/dist/query/summary/format.d.ts.map +1 -0
  59. package/dist/query/summary/format.js +119 -0
  60. package/dist/query/summary/format.js.map +1 -0
  61. package/dist/query/summary/index.d.ts +19 -0
  62. package/dist/query/summary/index.d.ts.map +1 -0
  63. package/dist/query/summary/index.js +16 -0
  64. package/dist/query/summary/index.js.map +1 -0
  65. package/dist/query/summary/reading.d.ts +26 -0
  66. package/dist/query/summary/reading.d.ts.map +1 -0
  67. package/dist/query/summary/reading.js +169 -0
  68. package/dist/query/summary/reading.js.map +1 -0
  69. package/dist/query/summary/schema.d.ts +217 -0
  70. package/dist/query/summary/schema.d.ts.map +1 -0
  71. package/dist/query/summary/schema.js +167 -0
  72. package/dist/query/summary/schema.js.map +1 -0
  73. package/dist/query/summary/stats.d.ts +33 -0
  74. package/dist/query/summary/stats.d.ts.map +1 -0
  75. package/dist/query/summary/stats.js +73 -0
  76. package/dist/query/summary/stats.js.map +1 -0
  77. package/dist/query/summary/summarize.d.ts +57 -0
  78. package/dist/query/summary/summarize.d.ts.map +1 -0
  79. package/dist/query/summary/summarize.js +424 -0
  80. package/dist/query/summary/summarize.js.map +1 -0
  81. package/dist/query/summary/types.d.ts +223 -0
  82. package/dist/query/summary/types.d.ts.map +1 -0
  83. package/dist/query/summary/types.js +8 -0
  84. package/dist/query/summary/types.js.map +1 -0
  85. package/dist/query/types.d.ts +13 -0
  86. package/dist/query/types.d.ts.map +1 -1
  87. package/llms.txt +7 -3
  88. package/package.json +10 -4
@@ -21,28 +21,185 @@ export interface Project {
21
21
  createdAt: Date;
22
22
  }
23
23
  /**
24
- * What a project API key is allowed to do. `query` keys may read the analytics
25
- * API (the default — public ingestion is keyless, so issued keys are for
26
- * reads); `ingest` keys are reserved for server-side write paths.
24
+ * What a project API key is allowed to do (ADR 0051 §7). A key carries a **set**
25
+ * of these:
26
+ *
27
+ * - `query` — read the aggregate analytics API (the default; public ingestion is
28
+ * keyless, so issued keys are for reads).
29
+ * - `ingest` — reserved for server-side write paths.
30
+ * - `annotate` — write project **metadata** (annotations, glossary, saved
31
+ * analyses, panel specs). Never events: events stay append-only and read-only.
32
+ * - `query:raw` — read raw per-session streams (the replay timeline and the live
33
+ * per-session follow). Honoured **only** when `ENABLE_RAW_SESSION_RETENTION` is
34
+ * on (ADR 0003); never granted by a plain `query` key.
35
+ */
36
+ export type ApiKeyCapability = "ingest" | "query" | "annotate" | "query:raw";
37
+ /** Every capability token, in canonical order. */
38
+ export declare const API_KEY_CAPABILITIES: readonly ApiKeyCapability[];
39
+ /** The capability a key gets when none is requested (reads only). */
40
+ export declare const DEFAULT_API_KEY_CAPABILITIES: readonly ApiKeyCapability[];
41
+ /** Whether `value` is a known capability token. */
42
+ export declare function isApiKeyCapability(value: string): value is ApiKeyCapability;
43
+ /**
44
+ * Per-key request budget. `null` on a key means "use the collector's global
45
+ * `COLLECTOR_RATE_LIMIT_*` defaults".
46
+ */
47
+ export interface ApiKeyRateLimit {
48
+ /** Max requests per {@link windowMs}. */
49
+ max: number;
50
+ /** Window length in milliseconds. */
51
+ windowMs: number;
52
+ }
53
+ /**
54
+ * Parse the stored capability set. Capabilities are persisted as a canonical
55
+ * comma-separated token list (`"query,annotate"`) in a plain text column, which
56
+ * every engine — including ClickHouse and SQL Server — stores and compares
57
+ * natively without a JSON type.
58
+ *
59
+ * Both arguments are tolerated as `null`/empty so the same function serves the
60
+ * migration-backfill path and the read path:
61
+ *
62
+ * 1. a populated `capabilities` column wins;
63
+ * 2. otherwise the legacy singular `capability` column is promoted to a
64
+ * one-element set (keys issued before the capability set shipped);
65
+ * 3. otherwise the default (`["query"]`).
66
+ *
67
+ * Unknown tokens are dropped rather than throwing — an older collector must not
68
+ * crash on a key minted by a newer one — and the result is deduplicated and
69
+ * ordered canonically so comparisons and `whoami` output are stable.
70
+ */
71
+ export declare function parseApiKeyCapabilities(capabilities: string | null | undefined, legacyCapability?: string | null): ApiKeyCapability[];
72
+ /**
73
+ * Render a capability set for storage: deduplicated, canonically ordered, and
74
+ * comma-separated. Throws on an unknown token so a bad CLI argument fails at the
75
+ * boundary instead of silently minting a key with no capabilities.
27
76
  */
28
- export type ApiKeyCapability = "ingest" | "query";
77
+ export declare function serializeApiKeyCapabilities(capabilities: readonly ApiKeyCapability[] | undefined): string;
78
+ /**
79
+ * Parse a user-supplied capability list (`"query,annotate"`) into a validated
80
+ * set. Used by the CLI; throws with an actionable message on an unknown token.
81
+ */
82
+ export declare function parseCapabilityList(input: string): ApiKeyCapability[];
83
+ /** Whether a resolved key holds `capability`. */
84
+ export declare function hasCapability(key: {
85
+ capabilities: readonly ApiKeyCapability[];
86
+ }, capability: ApiKeyCapability): boolean;
29
87
  export interface ApiKeyRecord {
30
88
  id: string;
31
89
  projectId: string;
32
90
  keyPrefix: string;
33
91
  createdAt: Date;
34
92
  revokedAt: Date | null;
35
- /** What this key is allowed to do. Defaults to `query`. */
36
- capability: ApiKeyCapability;
93
+ /** What this key is allowed to do. Defaults to `["query"]`. */
94
+ capabilities: ApiKeyCapability[];
95
+ /** Operator-supplied name for the key (e.g. `"weekly-report-agent"`). */
96
+ label: string | null;
97
+ /** Per-key request budget; `null` falls back to the collector defaults. */
98
+ rateLimit: ApiKeyRateLimit | null;
37
99
  }
38
100
  /**
39
- * The result of resolving a plaintext API key: the project it authenticates and
40
- * the capability that scopes what it may do at the request boundary.
101
+ * The result of resolving a plaintext API key: the project it authenticates, the
102
+ * key's own id (the audit-log subject), the capability set that scopes what it
103
+ * may do at the request boundary, and its optional per-key rate limit.
41
104
  */
42
105
  export interface ResolvedApiKey {
43
106
  projectId: string;
44
- capability: ApiKeyCapability;
107
+ /** Stable id of the key row — the audit-log subject. Never the key itself. */
108
+ keyId: string;
109
+ capabilities: ApiKeyCapability[];
110
+ /** Operator-supplied name, when one was given. */
111
+ label: string | null;
112
+ /** Per-key request budget; `null` falls back to the collector defaults. */
113
+ rateLimit: ApiKeyRateLimit | null;
114
+ }
115
+ /** Options accepted when minting a key. */
116
+ export interface CreateApiKeyOptions {
117
+ /** Capability set. Defaults to `["query"]`. */
118
+ capabilities?: readonly ApiKeyCapability[];
119
+ /** Operator-supplied name for the key. */
120
+ label?: string | null;
121
+ /** Per-key request budget; omit to use the collector defaults. */
122
+ rateLimit?: ApiKeyRateLimit | null;
123
+ }
124
+ /**
125
+ * Normalize {@link CreateApiKeyOptions} into the column values every store
126
+ * writes, so the four engines agree on defaults and validation.
127
+ */
128
+ export declare function toApiKeyColumns(options?: CreateApiKeyOptions): {
129
+ capabilities: string;
130
+ label: string | null;
131
+ rateLimitMax: number | null;
132
+ rateLimitWindowMs: number | null;
133
+ };
134
+ /**
135
+ * Rebuild the optional per-key rate limit from two nullable columns. A limit is
136
+ * only in force when **both** halves are present and positive — a half-configured
137
+ * row falls back to the collector defaults rather than silently throttling to
138
+ * zero.
139
+ */
140
+ export declare function toApiKeyRateLimit(max: number | null | undefined, windowMs: number | null | undefined): ApiKeyRateLimit | null;
141
+ /**
142
+ * Where an audited request entered the collector. Only `http` is written today;
143
+ * `mcp-http` / `mcp-stdio` / `assistant` are reserved for the later stage-3
144
+ * transports so the column's vocabulary does not churn.
145
+ */
146
+ export type AuditSurface = "http" | "mcp-http" | "mcp-stdio" | "assistant";
147
+ /** One recorded agent request. `params` is bounded and never carries the key. */
148
+ export interface AgentAuditEntry {
149
+ id: string;
150
+ projectId: string;
151
+ /** The key row's id — never the key or its hash. */
152
+ keyId: string;
153
+ at: Date;
154
+ surface: AuditSurface;
155
+ /** Endpoint path (`http`) or tool name (MCP/assistant). */
156
+ toolOrPath: string;
157
+ /** Bounded, redacted JSON of the request parameters. */
158
+ params: string;
159
+ /** Rows returned, when the handler produced a countable result. */
160
+ rowCount: number | null;
161
+ durationMs: number;
162
+ /** HTTP status (or an equivalent code for non-HTTP surfaces). */
163
+ status: number;
45
164
  }
165
+ /** What a caller supplies to record an audit row; the store fills in `id`. */
166
+ export interface AgentAuditInput {
167
+ projectId: string;
168
+ keyId: string;
169
+ surface: AuditSurface;
170
+ toolOrPath: string;
171
+ params: string;
172
+ rowCount?: number | null;
173
+ durationMs: number;
174
+ status: number;
175
+ /** Defaults to "now" in the store. */
176
+ at?: Date;
177
+ }
178
+ /** Filters accepted by the audit read path. */
179
+ export interface AuditQueryOptions {
180
+ /** Inclusive lower bound, epoch ms. */
181
+ since?: number;
182
+ /** Exclusive upper bound, epoch ms. */
183
+ until?: number;
184
+ limit?: number;
185
+ }
186
+ /** Hard cap on the serialized `params` blob, so one row can never grow unbounded. */
187
+ export declare const AUDIT_PARAMS_MAX_LENGTH = 512;
188
+ /** Hard cap on `tool_or_path`, matching the collector's longest route by a wide margin. */
189
+ export declare const AUDIT_TOOL_MAX_LENGTH = 200;
190
+ /**
191
+ * Serialize request parameters for the audit log: drop credential-shaped keys,
192
+ * clamp each value, and bound the whole document to
193
+ * {@link AUDIT_PARAMS_MAX_LENGTH}.
194
+ *
195
+ * The result is **always valid JSON**: when the document would exceed the cap,
196
+ * fields are dropped (not the text truncated) and a `_truncated: true` marker is
197
+ * added, so whoever reads the audit log can parse every row. Never throws — an
198
+ * audit write must not be able to fail a request.
199
+ */
200
+ export declare function serializeAuditParams(params: unknown): string;
201
+ /** Clamp an endpoint path / tool name to {@link AUDIT_TOOL_MAX_LENGTH}. */
202
+ export declare function clampAuditTool(toolOrPath: string): string;
46
203
  /**
47
204
  * One representation per `(projectId, sceneId)`. Gives world-space heatmaps a
48
205
  * backdrop — an engine-agnostic {@link SceneProxy} captured from a live scene, a
@@ -71,6 +228,35 @@ export interface SceneRepresentation {
71
228
  capturedAt: Date | null;
72
229
  updatedAt: Date;
73
230
  }
231
+ /**
232
+ * One stored region of a scene: a labelled world-space box that names a place
233
+ * ("the entrance", "the checkout counter") so spatial results can be talked
234
+ * about in words. Keyed by `(projectId, sceneId, regionId)`; regions may
235
+ * overlap. The wire shape is `sceneRegionSchema` in `@uptimizr/schema` — this is
236
+ * its storage projection, with the row's `updatedAt` added.
237
+ */
238
+ export interface SceneRegionRecord {
239
+ projectId: string;
240
+ sceneId: string;
241
+ regionId: string;
242
+ /** Human-friendly name shown in dashboards, summaries, and agent answers. */
243
+ label: string;
244
+ /** Optional free-text note about what the region is. */
245
+ description: string | null;
246
+ /** World-space box `[minX,minY,minZ,maxX,maxY,maxZ]` (canonical frame). */
247
+ bounds: Aabb;
248
+ updatedAt: Date;
249
+ }
250
+ /**
251
+ * Lightweight project-wide region listing row: the names only, without the
252
+ * per-region box. Lets a client (or an agent building its project context) learn
253
+ * a project's whole spatial vocabulary in one read instead of one GET per scene.
254
+ */
255
+ export interface SceneRegionSummary {
256
+ sceneId: string;
257
+ regionId: string;
258
+ label: string;
259
+ }
74
260
  /** Lightweight registry listing row (omits the heavy `proxy` blob). */
75
261
  export interface SceneRepresentationSummary {
76
262
  sceneId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIzD,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAID,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,2DAA2D;IAC3D,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAID;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,mDAAmD;IACnD,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yDAAyD;IACzD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yEAAyE;IACzE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,uEAAuE;AACvE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
package/dist/metadata.js CHANGED
@@ -20,4 +20,196 @@ export function apiKeyPrefix(plaintext) {
20
20
  export function generateApiKey() {
21
21
  return `utk_${randomBytes(32).toString("base64url")}`;
22
22
  }
23
+ /** Every capability token, in canonical order. */
24
+ export const API_KEY_CAPABILITIES = [
25
+ "ingest",
26
+ "query",
27
+ "annotate",
28
+ "query:raw",
29
+ ];
30
+ /** The capability a key gets when none is requested (reads only). */
31
+ export const DEFAULT_API_KEY_CAPABILITIES = ["query"];
32
+ /** Whether `value` is a known capability token. */
33
+ export function isApiKeyCapability(value) {
34
+ return API_KEY_CAPABILITIES.includes(value);
35
+ }
36
+ /**
37
+ * Parse the stored capability set. Capabilities are persisted as a canonical
38
+ * comma-separated token list (`"query,annotate"`) in a plain text column, which
39
+ * every engine — including ClickHouse and SQL Server — stores and compares
40
+ * natively without a JSON type.
41
+ *
42
+ * Both arguments are tolerated as `null`/empty so the same function serves the
43
+ * migration-backfill path and the read path:
44
+ *
45
+ * 1. a populated `capabilities` column wins;
46
+ * 2. otherwise the legacy singular `capability` column is promoted to a
47
+ * one-element set (keys issued before the capability set shipped);
48
+ * 3. otherwise the default (`["query"]`).
49
+ *
50
+ * Unknown tokens are dropped rather than throwing — an older collector must not
51
+ * crash on a key minted by a newer one — and the result is deduplicated and
52
+ * ordered canonically so comparisons and `whoami` output are stable.
53
+ */
54
+ export function parseApiKeyCapabilities(capabilities, legacyCapability) {
55
+ const raw = capabilities?.trim() ? capabilities : (legacyCapability ?? "");
56
+ const tokens = raw
57
+ .split(",")
58
+ .map((t) => t.trim())
59
+ .filter(isApiKeyCapability);
60
+ const unique = API_KEY_CAPABILITIES.filter((c) => tokens.includes(c));
61
+ return unique.length > 0 ? unique : [...DEFAULT_API_KEY_CAPABILITIES];
62
+ }
63
+ /**
64
+ * Render a capability set for storage: deduplicated, canonically ordered, and
65
+ * comma-separated. Throws on an unknown token so a bad CLI argument fails at the
66
+ * boundary instead of silently minting a key with no capabilities.
67
+ */
68
+ export function serializeApiKeyCapabilities(capabilities) {
69
+ const requested = capabilities?.length ? capabilities : DEFAULT_API_KEY_CAPABILITIES;
70
+ for (const cap of requested) {
71
+ if (!isApiKeyCapability(cap)) {
72
+ throw new Error(`Unknown API key capability ${JSON.stringify(cap)}. ` +
73
+ `Expected one of: ${API_KEY_CAPABILITIES.join(", ")}.`);
74
+ }
75
+ }
76
+ return API_KEY_CAPABILITIES.filter((c) => requested.includes(c)).join(",");
77
+ }
78
+ /**
79
+ * Parse a user-supplied capability list (`"query,annotate"`) into a validated
80
+ * set. Used by the CLI; throws with an actionable message on an unknown token.
81
+ */
82
+ export function parseCapabilityList(input) {
83
+ const tokens = input
84
+ .split(",")
85
+ .map((t) => t.trim())
86
+ .filter(Boolean);
87
+ if (tokens.length === 0)
88
+ return [...DEFAULT_API_KEY_CAPABILITIES];
89
+ for (const token of tokens) {
90
+ if (!isApiKeyCapability(token)) {
91
+ throw new Error(`Unknown API key capability ${JSON.stringify(token)}. ` +
92
+ `Expected a comma-separated list of: ${API_KEY_CAPABILITIES.join(", ")}.`);
93
+ }
94
+ }
95
+ return API_KEY_CAPABILITIES.filter((c) => tokens.includes(c));
96
+ }
97
+ /** Whether a resolved key holds `capability`. */
98
+ export function hasCapability(key, capability) {
99
+ return key.capabilities.includes(capability);
100
+ }
101
+ /**
102
+ * Normalize {@link CreateApiKeyOptions} into the column values every store
103
+ * writes, so the four engines agree on defaults and validation.
104
+ */
105
+ export function toApiKeyColumns(options = {}) {
106
+ const rateLimit = options.rateLimit ?? null;
107
+ if (rateLimit && (!Number.isFinite(rateLimit.max) || !Number.isFinite(rateLimit.windowMs))) {
108
+ throw new Error("API key rate limit requires finite `max` and `windowMs` values");
109
+ }
110
+ if (rateLimit && (rateLimit.max <= 0 || rateLimit.windowMs <= 0)) {
111
+ throw new Error("API key rate limit requires positive `max` and `windowMs` values");
112
+ }
113
+ return {
114
+ capabilities: serializeApiKeyCapabilities(options.capabilities),
115
+ label: options.label?.trim() ? options.label.trim().slice(0, 200) : null,
116
+ rateLimitMax: rateLimit ? Math.trunc(rateLimit.max) : null,
117
+ rateLimitWindowMs: rateLimit ? Math.trunc(rateLimit.windowMs) : null,
118
+ };
119
+ }
120
+ /**
121
+ * Rebuild the optional per-key rate limit from two nullable columns. A limit is
122
+ * only in force when **both** halves are present and positive — a half-configured
123
+ * row falls back to the collector defaults rather than silently throttling to
124
+ * zero.
125
+ */
126
+ export function toApiKeyRateLimit(max, windowMs) {
127
+ if (max == null || windowMs == null)
128
+ return null;
129
+ const m = Number(max);
130
+ const w = Number(windowMs);
131
+ if (!Number.isFinite(m) || !Number.isFinite(w) || m <= 0 || w <= 0)
132
+ return null;
133
+ return { max: m, windowMs: w };
134
+ }
135
+ /** Hard cap on the serialized `params` blob, so one row can never grow unbounded. */
136
+ export const AUDIT_PARAMS_MAX_LENGTH = 512;
137
+ /** Hard cap on `tool_or_path`, matching the collector's longest route by a wide margin. */
138
+ export const AUDIT_TOOL_MAX_LENGTH = 200;
139
+ /**
140
+ * Parameter names never written to the audit log, whatever their value. The
141
+ * audit log is queryable by anyone holding a `query` key, so a credential that
142
+ * leaked into a querystring must not be persisted (ADR 0003).
143
+ */
144
+ const AUDIT_REDACTED_KEYS = new Set([
145
+ "key",
146
+ "apikey",
147
+ "api_key",
148
+ "x-api-key",
149
+ "token",
150
+ "secret",
151
+ "password",
152
+ "authorization",
153
+ ]);
154
+ /**
155
+ * Serialize request parameters for the audit log: drop credential-shaped keys,
156
+ * clamp each value, and bound the whole document to
157
+ * {@link AUDIT_PARAMS_MAX_LENGTH}.
158
+ *
159
+ * The result is **always valid JSON**: when the document would exceed the cap,
160
+ * fields are dropped (not the text truncated) and a `_truncated: true` marker is
161
+ * added, so whoever reads the audit log can parse every row. Never throws — an
162
+ * audit write must not be able to fail a request.
163
+ */
164
+ export function serializeAuditParams(params) {
165
+ const source = params != null && typeof params === "object" && !Array.isArray(params)
166
+ ? params
167
+ : {};
168
+ const safe = {};
169
+ let dropped = false;
170
+ for (const [rawKey, value] of Object.entries(source)) {
171
+ if (AUDIT_REDACTED_KEYS.has(rawKey.toLowerCase()))
172
+ continue;
173
+ if (value == null)
174
+ continue;
175
+ let clamped;
176
+ if (typeof value === "number" || typeof value === "boolean") {
177
+ clamped = value;
178
+ }
179
+ else if (typeof value === "string") {
180
+ clamped = value.length > 120 ? `${value.slice(0, 120)}…` : value;
181
+ }
182
+ else {
183
+ // Objects/arrays are summarized rather than embedded, so one nested blob
184
+ // cannot dominate (or blow) the bounded document.
185
+ clamped = `[${Array.isArray(value) ? "array" : typeof value}]`;
186
+ }
187
+ // Add the field only if the document still fits with the truncation marker
188
+ // that would be needed if anything else has to be dropped.
189
+ const candidate = { ...safe, [rawKey]: clamped, _truncated: true };
190
+ if (safeStringify(candidate).length > AUDIT_PARAMS_MAX_LENGTH) {
191
+ dropped = true;
192
+ continue;
193
+ }
194
+ safe[rawKey] = clamped;
195
+ }
196
+ const json = safeStringify(dropped ? { ...safe, _truncated: true } : safe);
197
+ // Belt and braces: a pathological key name could still overshoot.
198
+ return json.length > AUDIT_PARAMS_MAX_LENGTH ? '{"_truncated":true}' : json;
199
+ }
200
+ /** `JSON.stringify` that yields `{}` instead of throwing on an odd value. */
201
+ function safeStringify(value) {
202
+ try {
203
+ return JSON.stringify(value) ?? "{}";
204
+ }
205
+ catch {
206
+ return "{}";
207
+ }
208
+ }
209
+ /** Clamp an endpoint path / tool name to {@link AUDIT_TOOL_MAX_LENGTH}. */
210
+ export function clampAuditTool(toolOrPath) {
211
+ return toolOrPath.length > AUDIT_TOOL_MAX_LENGTH
212
+ ? toolOrPath.slice(0, AUDIT_TOOL_MAX_LENGTH)
213
+ : toolOrPath;
214
+ }
23
215
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGtD,iCAAiC;AAEjC,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,17 @@
27
27
  * analytics, and their string rendering differs by engine; list them in a
28
28
  * case's `ignoreColumns`. Date-granular `day` strings (`YYYY-MM-DD`) render
29
29
  * identically in both engines and are compared.
30
+ * 5. **Numeric columns must be JS numbers.** Parity is not only about *values*:
31
+ * a store that returns `"42"` where another returns `42` is not in parity,
32
+ * because every consumer then has to coerce (ADR 0051 §2). Pass
33
+ * {@link ParityCompareOptions.numericColumns} — normally
34
+ * {@link numericColumnsForSpec}, which reads the registry `row` schema of the
35
+ * metric the query was tagged with — and every one of those columns is
36
+ * asserted `typeof === "number"` (or `null`, for a column the registry
37
+ * declares nullable). This is what proves each store's runner coerces at its
38
+ * edge rather than leaving it to the caller.
30
39
  */
40
+ import type { QuerySpec } from "../query/types.js";
31
41
  /** Absolute tolerance for floating-point column comparison. */
32
42
  export declare const PARITY_ABS_TOLERANCE = 0.000001;
33
43
  /** Relative tolerance for floating-point column comparison. */
@@ -38,7 +48,19 @@ export interface ParityCompareOptions {
38
48
  readonly sortKeys: readonly string[];
39
49
  /** Columns ignored entirely (engine-specific temporal renderings). */
40
50
  readonly ignoreColumns?: readonly string[];
51
+ /**
52
+ * Columns the registry declares numeric. Each is asserted to be a JS `number`
53
+ * (or `null`) in every *actual* row — see tolerance rule 5. Usually supplied by
54
+ * {@link numericColumnsForSpec}; omit to skip the type assertion.
55
+ */
56
+ readonly numericColumns?: readonly string[];
41
57
  }
58
+ /**
59
+ * The numeric columns of the metric a {@link QuerySpec} was tagged with, ready to
60
+ * hand to {@link diffParity} as `numericColumns`. An untagged or unregistered
61
+ * spec yields `[]` (no assertion), so this is always safe to call.
62
+ */
63
+ export declare function numericColumnsForSpec(spec: QuerySpec): readonly string[];
42
64
  /**
43
65
  * Compare engine output against golden rows under the tolerance rules above.
44
66
  * Returns a list of human-readable differences; an empty list means parity.
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/parity/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,WAAO,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAiCD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,OAAO,EAAE,oBAAoB,GAC5B,MAAM,EAAE,CA0BV"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/parity/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,WAAO,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAExE;AAiCD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,OAAO,EAAE,oBAAoB,GAC5B,MAAM,EAAE,CAwCV"}
@@ -27,11 +27,29 @@
27
27
  * analytics, and their string rendering differs by engine; list them in a
28
28
  * case's `ignoreColumns`. Date-granular `day` strings (`YYYY-MM-DD`) render
29
29
  * identically in both engines and are compared.
30
+ * 5. **Numeric columns must be JS numbers.** Parity is not only about *values*:
31
+ * a store that returns `"42"` where another returns `42` is not in parity,
32
+ * because every consumer then has to coerce (ADR 0051 §2). Pass
33
+ * {@link ParityCompareOptions.numericColumns} — normally
34
+ * {@link numericColumnsForSpec}, which reads the registry `row` schema of the
35
+ * metric the query was tagged with — and every one of those columns is
36
+ * asserted `typeof === "number"` (or `null`, for a column the registry
37
+ * declares nullable). This is what proves each store's runner coerces at its
38
+ * edge rather than leaving it to the caller.
30
39
  */
40
+ import { numericColumnsOfMetric } from "../query/coerce.js";
31
41
  /** Absolute tolerance for floating-point column comparison. */
32
42
  export const PARITY_ABS_TOLERANCE = 1e-6;
33
43
  /** Relative tolerance for floating-point column comparison. */
34
44
  export const PARITY_REL_TOLERANCE = 1e-9;
45
+ /**
46
+ * The numeric columns of the metric a {@link QuerySpec} was tagged with, ready to
47
+ * hand to {@link diffParity} as `numericColumns`. An untagged or unregistered
48
+ * spec yields `[]` (no assertion), so this is always safe to call.
49
+ */
50
+ export function numericColumnsForSpec(spec) {
51
+ return numericColumnsOfMetric(spec.metric);
52
+ }
35
53
  function numbersClose(a, b) {
36
54
  const diff = Math.abs(a - b);
37
55
  if (diff <= PARITY_ABS_TOLERANCE)
@@ -67,6 +85,19 @@ function cellsEqual(actual, expected) {
67
85
  export function diffParity(actual, golden, options) {
68
86
  const errors = [];
69
87
  const ignore = new Set(options.ignoreColumns ?? []);
88
+ // Type parity (rule 5), checked before value parity so a store that hands back
89
+ // string-encoded aggregates is named as such rather than as a value mismatch.
90
+ for (const column of options.numericColumns ?? []) {
91
+ if (ignore.has(column))
92
+ continue;
93
+ for (let i = 0; i < actual.length; i++) {
94
+ const value = actual[i][column];
95
+ if (value === undefined || value === null || typeof value === "number")
96
+ continue;
97
+ errors.push(`row ${i} column "${column}": expected a JS number (the store must coerce at its ` +
98
+ `edge), got ${typeof value} ${JSON.stringify(value)}`);
99
+ }
100
+ }
70
101
  if (actual.length !== golden.length) {
71
102
  errors.push(`row count: expected ${golden.length}, got ${actual.length}`);
72
103
  return errors;
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/parity/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/parity/compare.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,14 @@
8
8
  *
9
9
  * Invariant: no multi-tenant concepts here. Filtering is by `project_id` and the
10
10
  * optional scene/source/session dimensions only.
11
+ *
12
+ * Every builder tags its `QuerySpec` with the registry `metric` id it computes
13
+ * (ADR 0051 §1). That tag is what lets each store's query runner apply numeric
14
+ * coercion at the single point rows leave the driver (`query/coerce.ts`) without
15
+ * the store call sites having to name the metric. The tag and the registry's
16
+ * `builder` field are two halves of one mapping — `src/__tests__/registry.test.ts`
17
+ * fails if they disagree, so a new aggregation still is not done until it has a
18
+ * registry entry.
11
19
  */
12
20
  import { type Dialect } from "./dialect.js";
13
21
  import type { QuerySpec, CameraModeOptions, ErrorHeatmapOptions, FunnelOptions, LoadBounceFunnelOptions, VariantLeaderboardOptions, MeshOptions, RangeOptions, RegionOptions, SceneOptions, SceneRetentionOptions, SessionOptions, SourceOptions, TimeseriesOptions, WorldAabb } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"aggregations.d.ts","sourceRoot":"","sources":["../../src/query/aggregations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EAEb,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,SAAS,EACV,MAAM,YAAY,CAAC;AAOpB;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACpC,WAAW,SAAK,GACf,MAAM,GAAG,IAAI,CAMf;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GACd,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GACd,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACjC,CAAC,EAAE,OAAO,GACT,SAAS,CA6BX;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3C,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3C,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAkCX;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7F,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAuGX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,iBAAiB,GAAG;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAoHX;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACxD,CAAC,EAAE,OAAO,GACT,SAAS,CAiBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAqBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACxD,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CA8BX;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1D,CAAC,EAAE,OAAO,GACT,SAAS,CAwDX;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,EAClE,CAAC,EAAE,OAAO,GACT,SAAS,CAiBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7E,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,EACnC,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAkCX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAiBX;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,mBAAmB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7D,CAAC,EAAE,OAAO,GACT,SAAS,CA2CX;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,EACnC,CAAC,EAAE,OAAO,GACT,SAAS,CAiBX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,EACnC,CAAC,EAAE,OAAO,GACT,SAAS,CAoBX;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GAAG;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAkDX;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAiDX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAqBX;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAmBX;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAmBX;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,iBAAiB,EACrD,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,EACjC,CAAC,EAAE,OAAO,GACT,SAAS,CAeX;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GAAG;IACf,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CA+BX;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/F,CAAC,EAAE,OAAO,GACT,SAAS,CAiDX;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAoEX;AAeD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3F,CAAC,EAAE,OAAO,GACT,SAAS,CAkDX;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CA6BX;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CA+BX;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAgCX;AAuBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,CAAC,EAAE,OAAO,GACT,SAAS,CAoBX;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAmBX;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAqBX;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,CA4CzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,EAC3B,CAAC,EAAE,OAAO,GACT,SAAS,CA+BX;AAaD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,uBAAuB,EAC7B,CAAC,EAAE,OAAO,GACT,SAAS,CAgDX;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,yBAAyB,EAC/B,CAAC,EAAE,OAAO,GACT,SAAS,CAoHX"}
1
+ {"version":3,"file":"aggregations.d.ts","sourceRoot":"","sources":["../../src/query/aggregations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAUL,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EAEb,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,SAAS,EACV,MAAM,YAAY,CAAC;AAOpB;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACpC,WAAW,SAAK,GACf,MAAM,GAAG,IAAI,CAMf;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GACd,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GACd,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACjC,CAAC,EAAE,OAAO,GACT,SAAS,CA8BX;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3C,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3C,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAmCX;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7F,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAwGX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,iBAAiB,GAAG;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAsHX;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACxD,CAAC,EAAE,OAAO,GACT,SAAS,CAkBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACxD,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CA+BX;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1D,CAAC,EAAE,OAAO,GACT,SAAS,CAyDX;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,EAClE,CAAC,EAAE,OAAO,GACT,SAAS,CAkBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,aAAa,GACb,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7E,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,EACnC,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAmCX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAkBX;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GACb,mBAAmB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7D,CAAC,EAAE,OAAO,GACT,SAAS,CA4CX;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GACd,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,EACnC,CAAC,EAAE,OAAO,GACT,SAAS,CAkBX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,cAAc,EACnC,CAAC,EAAE,OAAO,GACT,SAAS,CAqBX;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA6BX;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA2BX;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GAAG;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAmDX;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAkDX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CA6BX;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAoBX;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,CAAC,EAAE,OAAO,GACT,SAAS,CAoBX;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,iBAAiB,EACrD,CAAC,EAAE,OAAO,GACT,SAAS,CAwBX;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,EACjC,CAAC,EAAE,OAAO,GACT,SAAS,CAgBX;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CA0BX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CA4BX;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAChB,YAAY,GACZ,cAAc,GAAG;IACf,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,CAAC,EAAE,OAAO,GACT,SAAS,CAgCX;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/F,CAAC,EAAE,OAAO,GACT,SAAS,CAkDX;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,CAAC,EAAE,OAAO,GACT,SAAS,CAqEX;AAeD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAyBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3F,CAAC,EAAE,OAAO,GACT,SAAS,CAmDX;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAuBX;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CA8BX;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAgCX;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,CAAC,EAAE,OAAO,GACT,SAAS,CAiCX;AAuBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,CAAC,EAAE,OAAO,GACT,SAAS,CAqBX;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAoBX;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,EAClD,CAAC,EAAE,OAAO,GACT,SAAS,CAsBX;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,CA6CzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,EAC3B,CAAC,EAAE,OAAO,GACT,SAAS,CAgCX;AAaD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,uBAAuB,EAC7B,CAAC,EAAE,OAAO,GACT,SAAS,CAiDX;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,yBAAyB,EAC/B,CAAC,EAAE,OAAO,GACT,SAAS,CAqHX"}