@graph-ir/core 0.2.0 → 0.2.2

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 (45) hide show
  1. package/README.md +14 -2
  2. package/dist/canonical-types-2.d.ts +207 -0
  3. package/dist/canonical-types-2.d.ts.map +1 -0
  4. package/dist/canonical-types-2.js +3 -0
  5. package/dist/canonical-types-2.js.map +1 -0
  6. package/dist/canonical-types.d.ts +332 -0
  7. package/dist/canonical-types.d.ts.map +1 -0
  8. package/dist/canonical-types.js +3 -0
  9. package/dist/canonical-types.js.map +1 -0
  10. package/dist/generation/id-generator.d.ts.map +1 -1
  11. package/dist/generation/id-generator.js +16 -10
  12. package/dist/generation/id-generator.js.map +1 -1
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/output/types.d.ts.map +1 -1
  18. package/dist/schemas/graph-ir-2.0.schema.json +416 -0
  19. package/dist/schemas/graph-ir.schema.json +1684 -228
  20. package/dist/skills/diff.d.ts +4 -0
  21. package/dist/skills/diff.d.ts.map +1 -1
  22. package/dist/skills/diff.js +93 -11
  23. package/dist/skills/diff.js.map +1 -1
  24. package/dist/skills/migrate.d.ts +48 -19
  25. package/dist/skills/migrate.d.ts.map +1 -1
  26. package/dist/skills/migrate.js +482 -239
  27. package/dist/skills/migrate.js.map +1 -1
  28. package/dist/skills/visualize.d.ts.map +1 -1
  29. package/dist/skills/visualize.js +33 -5
  30. package/dist/skills/visualize.js.map +1 -1
  31. package/dist/testing/diff.d.ts +1 -1
  32. package/dist/testing/diff.d.ts.map +1 -1
  33. package/dist/testing/diff.js +52 -19
  34. package/dist/testing/diff.js.map +1 -1
  35. package/dist/types.d.ts +13 -214
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/types.js +3 -2
  38. package/dist/types.js.map +1 -1
  39. package/dist/validation/ir-validator.d.ts +35 -44
  40. package/dist/validation/ir-validator.d.ts.map +1 -1
  41. package/dist/validation/ir-validator.js +735 -288
  42. package/dist/validation/ir-validator.js.map +1 -1
  43. package/dist/validation/validator.d.ts.map +1 -1
  44. package/package.json +9 -4
  45. package/specification.json +13 -0
package/dist/types.d.ts CHANGED
@@ -1,216 +1,11 @@
1
1
  /**
2
- * Graph-IR Type Definitions
2
+ * Public GraphIR types.
3
3
  *
4
- * Based on docs/schema-specification.md
4
+ * Authored contract declarations are vendored in canonical-types.ts from the
5
+ * graph-ir specification. Runtime validation result types are defined here.
5
6
  */
6
- export interface GraphIR {
7
- /** Schema version for migration support */
8
- version: string;
9
- /** Unique identifier for this graph */
10
- id: string;
11
- /** Human-readable name */
12
- name?: string;
13
- /** Top-level nodes (may contain children for hierarchy) */
14
- nodes: GraphNode[];
15
- /** Connections between nodes */
16
- edges: GraphEdge[];
17
- /** Graph-level metadata */
18
- metadata?: GraphMetadata;
19
- /** Default layout options for the entire graph */
20
- layoutOptions?: LayoutOptions;
21
- }
22
- export interface GraphNode {
23
- /** Unique identifier within the graph */
24
- id: string;
25
- /** Node type (e.g., 'service', 'database', 'user') */
26
- type: string;
27
- /** Display label */
28
- label?: string;
29
- /** Optional description or documentation */
30
- description?: string;
31
- /**
32
- * Symbol for visual representation (e.g., 'decision', 'cylinder', 'actor').
33
- * References a symbol definition in a symbol registry.
34
- * If omitted, renderers use a default shape based on `type` or a rectangle.
35
- */
36
- symbol?: string;
37
- /**
38
- * Variant of the symbol (e.g., 'start' vs 'end' for terminal symbols).
39
- * Interpretation depends on the symbol definition.
40
- */
41
- variant?: string;
42
- /** Custom properties for this node type */
43
- properties?: Record<string, unknown>;
44
- /** Child nodes for compound/nested graphs */
45
- children?: GraphNode[];
46
- /** Reference to parent node ID */
47
- parent?: string;
48
- /** Connection points on this node */
49
- ports?: Port[];
50
- /** Visual dimensions (width x height) */
51
- dimensions?: Dimensions;
52
- /** Position if manually placed or computed */
53
- position?: Position;
54
- /** Whether position should be preserved during layout */
55
- pinned?: boolean;
56
- /** Node-specific layout options */
57
- layoutOptions?: NodeLayoutOptions;
58
- /** Source location for round-tripping */
59
- sourceInfo?: SourceInfo;
60
- }
61
- export interface Port {
62
- /** Unique identifier within the parent node */
63
- id: string;
64
- /** Which side of the node this port appears on */
65
- side: PortSide;
66
- /** Optional label */
67
- label?: string;
68
- /** Position along the side (0.0 to 1.0) */
69
- position?: number;
70
- /** Port-specific properties */
71
- properties?: Record<string, unknown>;
72
- }
73
- export type PortSide = 'NORTH' | 'SOUTH' | 'EAST' | 'WEST';
74
- export interface Dimensions {
75
- width: number;
76
- height: number;
77
- }
78
- export interface Position {
79
- x: number;
80
- y: number;
81
- }
82
- export interface GraphEdge {
83
- /** Unique identifier within the graph */
84
- id: string;
85
- /** Source node ID */
86
- source: string;
87
- /** Target node ID */
88
- target: string;
89
- /** Optional source port ID */
90
- sourcePort?: string;
91
- /** Optional target port ID */
92
- targetPort?: string;
93
- /** Edge type (e.g., 'dependency', 'dataflow', 'http') */
94
- type?: string;
95
- /** Display label */
96
- label?: string;
97
- /** Custom properties */
98
- properties?: Record<string, unknown>;
99
- /** Intermediate points for edge routing */
100
- routingPoints?: Position[];
101
- /** Visual style hints */
102
- style?: EdgeStyle;
103
- /** Source location for round-tripping */
104
- sourceInfo?: SourceInfo;
105
- }
106
- export interface EdgeStyle {
107
- /** Line pattern */
108
- lineStyle?: 'solid' | 'dashed' | 'dotted';
109
- /** Arrow at target */
110
- targetArrow?: 'arrow' | 'diamond' | 'circle' | 'none';
111
- /** Arrow at source */
112
- sourceArrow?: 'arrow' | 'diamond' | 'circle' | 'none';
113
- /** Routing algorithm hint */
114
- routing?: 'orthogonal' | 'polyline' | 'spline';
115
- }
116
- export interface LayoutOptions {
117
- /** Layout algorithm to use */
118
- algorithm?: 'layered' | 'force' | 'radial' | 'tree' | 'fixed';
119
- /** Primary direction for hierarchical layouts */
120
- direction?: 'DOWN' | 'UP' | 'LEFT' | 'RIGHT';
121
- /** Spacing configuration */
122
- spacing?: SpacingOptions;
123
- /** Edge routing style */
124
- edgeRouting?: 'orthogonal' | 'polyline' | 'spline';
125
- /** How to handle compound nodes */
126
- hierarchyHandling?: 'INCLUDE_CHILDREN' | 'SEPARATE_CHILDREN';
127
- /** Additional algorithm-specific options */
128
- algorithmOptions?: Record<string, string | number | boolean>;
129
- }
130
- export interface SpacingOptions {
131
- /** Minimum space between nodes */
132
- nodeNode?: number;
133
- /** Minimum space between node and edge */
134
- nodeEdge?: number;
135
- /** Minimum space between edges */
136
- edgeEdge?: number;
137
- /** Space between layers (for layered algorithm) */
138
- layerSpacing?: number;
139
- }
140
- export interface NodeLayoutOptions {
141
- /** Port constraint level */
142
- portConstraints?: 'FREE' | 'FIXED_SIDE' | 'FIXED_ORDER' | 'FIXED_POS';
143
- /** How to order ports on each side */
144
- portAlignment?: 'BEGIN' | 'CENTER' | 'END' | 'JUSTIFIED';
145
- /** Node size constraints */
146
- sizeConstraints?: ('MINIMUM_SIZE' | 'NODE_LABELS' | 'PORTS')[];
147
- /** Minimum dimensions */
148
- minimumSize?: Dimensions;
149
- /** Padding inside compound nodes */
150
- padding?: {
151
- top?: number;
152
- right?: number;
153
- bottom?: number;
154
- left?: number;
155
- };
156
- }
157
- export interface SourceInfo {
158
- /** Byte range in the original source file */
159
- range: SourceRange;
160
- /** Comments associated with this element */
161
- leadingComments?: Comment[];
162
- trailingComment?: Comment;
163
- /** Whitespace before this element */
164
- leadingWhitespace?: string;
165
- /** Has this element been modified since parsing? */
166
- modified?: boolean;
167
- /** Original raw text (for fallback) */
168
- originalText?: string;
169
- }
170
- export interface SourceRange {
171
- /** Start byte offset (0-indexed) */
172
- start: number;
173
- /** End byte offset (exclusive) */
174
- end: number;
175
- /** Start line and column (for error messages) */
176
- startPosition?: {
177
- line: number;
178
- column: number;
179
- };
180
- /** End line and column */
181
- endPosition?: {
182
- line: number;
183
- column: number;
184
- };
185
- }
186
- export interface Comment {
187
- /** Comment text (without delimiters) */
188
- text: string;
189
- /** Comment style */
190
- style: 'line' | 'block';
191
- /** Position relative to associated element */
192
- range?: SourceRange;
193
- }
194
- export interface GraphMetadata {
195
- /** Author or owner */
196
- author?: string;
197
- /** Creation timestamp (ISO 8601) */
198
- created?: string;
199
- /** Last modification timestamp (ISO 8601) */
200
- modified?: string;
201
- /** Human-readable description */
202
- description?: string;
203
- /** Tags for categorization */
204
- tags?: string[];
205
- /**
206
- * Notation this graph follows (e.g., 'flowchart', 'erd', 'bpmn').
207
- * Used for validation and to select appropriate symbol libraries.
208
- * If omitted, no notation-specific validation is applied.
209
- */
210
- notation?: string;
211
- /** Custom domain-specific data */
212
- custom?: Record<string, unknown>;
213
- }
7
+ export type * from './canonical-types.js';
8
+ export type { GraphIR as GraphIR2 } from './canonical-types-2.js';
214
9
  export interface ValidationResult {
215
10
  valid: boolean;
216
11
  errors: ValidationError[];
@@ -223,18 +18,22 @@ export interface ValidationResult {
223
18
  export interface ValidationError {
224
19
  code: ErrorCode | WarningCode;
225
20
  message: string;
21
+ /** RFC 6901 JSON Pointer; root is the empty string. */
226
22
  path: string;
227
23
  severity: 'error' | 'warning';
228
24
  suggestion?: string;
229
25
  }
230
- export type ErrorCode = 'INVALID_JSON' | 'SCHEMA_VIOLATION' | 'DUPLICATE_NODE_ID' | 'DUPLICATE_EDGE_ID' | 'INVALID_EDGE_SOURCE' | 'INVALID_EDGE_TARGET' | 'INVALID_PORT_REFERENCE' | 'CYCLIC_HIERARCHY' | 'INVALID_SOURCE_RANGE';
26
+ export type ErrorCode = 'INVALID_JSON' | 'INVALID_VALIDATION_OPTIONS' | 'SCHEMA_VIOLATION' | 'UNSUPPORTED_SCHEMA_VERSION' | 'RETIRED_FIELD' | 'PIN_REQUIRES_POSITION' | 'INVALID_LABEL_PLACEMENT' | 'DUPLICATE_NODE_ID' | 'DUPLICATE_EDGE_ID' | 'DUPLICATE_CONSTRAINT_ID' | 'DUPLICATE_PORT_ID' | 'DUPLICATE_WAYPOINT_ID' | 'INVALID_ARRANGEMENT' | 'INVALID_EDGE_SOURCE' | 'INVALID_EDGE_TARGET' | 'INVALID_PORT_REFERENCE' | 'INVALID_CONSTRAINT_REFERENCE' | 'INVALID_ROUTE_NODE_REFERENCE' | 'INVALID_ROUTE_PORT_REFERENCE' | 'INVALID_PARENT_REFERENCE' | 'INVALID_ROOT_PARENT' | 'INVALID_BOUNDARY_SCOPE' | 'SELF_RELATION' | 'REQUIRED_CONTRADICTION' | 'CYCLIC_HIERARCHY' | 'INVALID_SOURCE_RANGE' | 'DUPLICATE_CLASSIFIER_ID' | 'DUPLICATE_INTERACTION_ID' | 'INVALID_INTERACTION_REFERENCE' | 'WRONG_INTERACTION_REFERENCE_KIND' | 'INTERACTION_EDGE_ENDPOINT_MISMATCH' | 'INCOMPLETE_INTERACTION_ORDER' | 'ACTIVATION_PARTICIPANT_MISMATCH' | 'REVERSED_ACTIVATION_SPAN' | 'DUPLICATE_OPERAND_MEMBERSHIP' | 'INVALID_OPERAND_ORDER' | 'INVALID_NOTE_TARGET' | 'PROFILE_CONTRADICTION' | 'MARKER_MULTIPLICITY_MISMATCH' | 'INVALID_MULTIPLICITY_BOUNDS';
231
27
  export type WarningCode = 'SELF_LOOP_EDGE' | 'ORPHAN_NODE' | 'ORPHAN_PORT' | 'STALE_SOURCE_INFO';
28
+ export type ValidationMode = 'full' | 'schema' | 'semantic';
232
29
  export interface ValidationOptions {
233
- /** Treat warnings as errors */
30
+ /** Treat warnings as errors. */
234
31
  strict?: boolean;
235
- /** Skip schema validation (faster, less thorough) */
32
+ /** Explicit validation mode. Do not combine with legacy skip flags. */
33
+ mode?: ValidationMode;
34
+ /** @deprecated Use mode: 'semantic'. */
236
35
  skipSchema?: boolean;
237
- /** Skip semantic checks (cycles, orphans) */
36
+ /** @deprecated Use mode: 'schema'. */
238
37
  skipSemantic?: boolean;
239
38
  }
240
39
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mBAAmB,sBAAsB,CAAC;AAC1C,YAAY,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,4BAA4B,GAC5B,kBAAkB,GAClB,4BAA4B,GAC5B,eAAe,GACf,uBAAuB,GACvB,yBAAyB,GACzB,mBAAmB,GACnB,mBAAmB,GACnB,yBAAyB,GACzB,mBAAmB,GACnB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,8BAA8B,GAC9B,8BAA8B,GAC9B,8BAA8B,GAC9B,0BAA0B,GAC1B,qBAAqB,GACrB,wBAAwB,GACxB,eAAe,GACf,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,GACtB,yBAAyB,GACzB,0BAA0B,GAC1B,+BAA+B,GAC/B,kCAAkC,GAClC,oCAAoC,GACpC,8BAA8B,GAC9B,iCAAiC,GACjC,0BAA0B,GAC1B,8BAA8B,GAC9B,uBAAuB,GACvB,qBAAqB,GACrB,uBAAuB,GACvB,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,mBAAmB,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
package/dist/types.js CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Graph-IR Type Definitions
2
+ * Public GraphIR types.
3
3
  *
4
- * Based on docs/schema-specification.md
4
+ * Authored contract declarations are vendored in canonical-types.ts from the
5
+ * graph-ir specification. Runtime validation result types are defined here.
5
6
  */
6
7
  export {};
7
8
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,51 +1,42 @@
1
- /**
2
- * Graph-IR Validator
3
- *
4
- * Validates Graph-IR against schema and semantic rules:
5
- * 1. JSON Schema validation (structure)
6
- * 2. ID uniqueness
7
- * 3. Reference validity (edges -> nodes, ports)
8
- * 4. Cycle detection in hierarchy
9
- * 5. Semantic warnings (orphans, self-loops)
10
- */
11
- import type { ValidationResult, ValidationOptions } from '../types.js';
1
+ import type { ValidationOptions, ValidationResult } from '../types.js';
12
2
  export declare class IRValidator {
13
- private options;
14
- private ajv;
15
- private schemaValidator;
3
+ private readonly options;
4
+ private readonly schemaValidator;
16
5
  constructor(options?: ValidationOptions);
17
- private addDateTimeFormat;
18
- /**
19
- * Validate from JSON string
20
- */
21
6
  validateFromString(jsonString: string): ValidationResult;
22
- /**
23
- * Validate a Graph-IR object
24
- */
25
- validate(ir: unknown): ValidationResult;
26
- /**
27
- * Validate against JSON Schema
28
- */
29
- private validateSchema;
30
- /**
31
- * Collect all nodes including nested children
32
- */
33
- private collectAllNodes;
34
- /**
35
- * Check if a node has a port with the given ID
36
- */
7
+ validate(value: unknown): ValidationResult;
8
+ private resolveMode;
9
+ private normalizeSchemaErrors;
10
+ private pathHasPinnedNode;
11
+ private validateSemantic;
12
+ private validatePortableSemantics;
13
+ private validateInteraction;
14
+ private indexEntities;
15
+ private validateCompleteOrder;
16
+ private referenceError;
17
+ private asRecord;
18
+ private asArray;
19
+ private stringArray;
20
+ private validateEdge;
21
+ private validateConstraints;
22
+ private validateDirectionalContradictions;
23
+ private addRelativeEdge;
24
+ private addArrangementEdges;
25
+ private checkPinnedRelation;
26
+ private checkPinnedPair;
27
+ private canReach;
28
+ private addWarnings;
29
+ private collectNodes;
30
+ private findHierarchyCycle;
31
+ private isGraphShape;
37
32
  private hasPort;
38
- /**
39
- * Check for cycles in the node hierarchy
40
- */
41
- private checkHierarchyCycles;
42
- /**
43
- * Find a similar ID for suggestions
44
- */
33
+ private portIdentity;
34
+ private joinPointer;
35
+ private error;
36
+ private warning;
37
+ private result;
38
+ private dedupe;
45
39
  private findSimilarId;
46
- /**
47
- * Calculate Levenshtein distance for similarity
48
- */
49
- private levenshteinDistance;
40
+ private levenshtein;
50
41
  }
51
42
  //# sourceMappingURL=ir-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ir-validator.d.ts","sourceRoot":"","sources":["../../src/validation/ir-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAIV,gBAAgB,EAEhB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AASrB,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,eAAe,CAAmB;gBAE9B,OAAO,GAAE,iBAAsB;IAQ3C,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAwBxD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,gBAAgB;IAsLvC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,OAAO;IAIf;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2C5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CA0B5B"}
1
+ {"version":3,"file":"ir-validator.d.ts","sourceRoot":"","sources":["../../src/validation/ir-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EASV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAsBrB,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,OAAO,GAAE,iBAAsB;IAW3C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAgBxD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IA6C1C,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IA0ExB,OAAO,CAAC,yBAAyB;IAoHjC,OAAO,CAAC,mBAAmB;IA+K3B,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IA4DpB,OAAO,CAAC,mBAAmB;IAqE3B,OAAO,CAAC,iCAAiC;IAsCzC,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,WAAW;CAmBpB"}