@kerebron/tree-sitter 0.4.27 → 0.4.28

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 (65) hide show
  1. package/esm/deno-tree-sitter/main/extended/base_node.d.ts +48 -0
  2. package/esm/deno-tree-sitter/main/extended/base_node.d.ts.map +1 -0
  3. package/esm/deno-tree-sitter/main/extended/base_node.js +154 -0
  4. package/esm/deno-tree-sitter/main/extended/node_extended.d.ts +237 -0
  5. package/esm/deno-tree-sitter/main/extended/node_extended.d.ts.map +1 -0
  6. package/esm/deno-tree-sitter/main/extended/node_extended.js +572 -0
  7. package/esm/deno-tree-sitter/main/extended/parser.d.ts +37 -0
  8. package/esm/deno-tree-sitter/main/extended/parser.d.ts.map +1 -0
  9. package/esm/deno-tree-sitter/main/extended/parser.js +86 -0
  10. package/esm/deno-tree-sitter/main/extended/soft_node.d.ts +15 -0
  11. package/esm/deno-tree-sitter/main/extended/soft_node.d.ts.map +1 -0
  12. package/esm/deno-tree-sitter/main/extended/soft_node.js +27 -0
  13. package/esm/deno-tree-sitter/main/extended/soft_text_node.d.ts +10 -0
  14. package/esm/deno-tree-sitter/main/extended/soft_text_node.d.ts.map +1 -0
  15. package/esm/deno-tree-sitter/main/extended/soft_text_node.js +10 -0
  16. package/esm/deno-tree-sitter/main/extended/whitespace_node.d.ts +10 -0
  17. package/esm/deno-tree-sitter/main/extended/whitespace_node.d.ts.map +1 -0
  18. package/esm/deno-tree-sitter/main/extended/whitespace_node.js +10 -0
  19. package/esm/deno-tree-sitter/main/extras/misc.d.ts +2 -0
  20. package/esm/deno-tree-sitter/main/extras/misc.d.ts.map +1 -0
  21. package/esm/deno-tree-sitter/main/extras/misc.js +13 -0
  22. package/esm/deno-tree-sitter/main/tree_sitter/bindings.d.ts +14 -0
  23. package/esm/deno-tree-sitter/main/tree_sitter/bindings.d.ts.map +1 -0
  24. package/esm/deno-tree-sitter/main/tree_sitter/bindings.js +21 -0
  25. package/esm/deno-tree-sitter/main/tree_sitter/constants.d.ts +60 -0
  26. package/esm/deno-tree-sitter/main/tree_sitter/constants.d.ts.map +1 -0
  27. package/esm/deno-tree-sitter/main/tree_sitter/constants.js +66 -0
  28. package/esm/deno-tree-sitter/main/tree_sitter/language.d.ts +137 -0
  29. package/esm/deno-tree-sitter/main/tree_sitter/language.d.ts.map +1 -0
  30. package/esm/deno-tree-sitter/main/tree_sitter/language.js +264 -0
  31. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.d.ts +41 -0
  32. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.d.ts.map +1 -0
  33. package/esm/deno-tree-sitter/main/tree_sitter/lookahead_iterator.js +65 -0
  34. package/esm/deno-tree-sitter/main/tree_sitter/marshal.d.ts +85 -0
  35. package/esm/deno-tree-sitter/main/tree_sitter/marshal.d.ts.map +1 -0
  36. package/esm/deno-tree-sitter/main/tree_sitter/marshal.js +173 -0
  37. package/esm/deno-tree-sitter/main/tree_sitter/node.d.ts +260 -0
  38. package/esm/deno-tree-sitter/main/tree_sitter/node.d.ts.map +1 -0
  39. package/esm/deno-tree-sitter/main/tree_sitter/node.js +557 -0
  40. package/esm/deno-tree-sitter/main/tree_sitter/parser.d.ts +124 -0
  41. package/esm/deno-tree-sitter/main/tree_sitter/parser.d.ts.map +1 -0
  42. package/esm/deno-tree-sitter/main/tree_sitter/parser.js +252 -0
  43. package/esm/deno-tree-sitter/main/tree_sitter/query.d.ts +134 -0
  44. package/esm/deno-tree-sitter/main/tree_sitter/query.d.ts.map +1 -0
  45. package/esm/deno-tree-sitter/main/tree_sitter/query.js +620 -0
  46. package/esm/deno-tree-sitter/main/tree_sitter/tree.d.ts +49 -0
  47. package/esm/deno-tree-sitter/main/tree_sitter/tree.d.ts.map +1 -0
  48. package/esm/deno-tree-sitter/main/tree_sitter/tree.js +130 -0
  49. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.d.ts +165 -0
  50. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.d.ts.map +1 -0
  51. package/esm/deno-tree-sitter/main/tree_sitter/tree_cursor.js +280 -0
  52. package/esm/deno-tree-sitter/main/tree_sitter_wasm.d.ts +3 -0
  53. package/esm/deno-tree-sitter/main/tree_sitter_wasm.d.ts.map +1 -0
  54. package/esm/deno-tree-sitter/main/tree_sitter_wasm.js +0 -0
  55. package/esm/deno-tree-sitter/main/wasm_loader.d.ts +29 -0
  56. package/esm/deno-tree-sitter/main/wasm_loader.d.ts.map +1 -0
  57. package/esm/deno-tree-sitter/main/wasm_loader.js +1702 -0
  58. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.d.ts +3 -0
  59. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.d.ts.map +1 -0
  60. package/esm/deno-tree-sitter/main/wasm_loader_with_defaults.js +8 -0
  61. package/esm/mod.d.ts +7 -0
  62. package/esm/mod.d.ts.map +1 -0
  63. package/esm/mod.js +7 -0
  64. package/esm/package.json +3 -0
  65. package/package.json +1 -2
@@ -0,0 +1,48 @@
1
+ export const _shadows: {};
2
+ export class BaseNode {
3
+ constructor(data: any);
4
+ /** @type {number} */
5
+ get depth(): number;
6
+ _depth: any;
7
+ /** @type {number} */
8
+ get length(): number;
9
+ get hasChildren(): boolean;
10
+ get hardChildren(): any;
11
+ get fields(): {};
12
+ get fieldNames(): never[];
13
+ /** @type {string} */
14
+ get indent(): string;
15
+ /** @type {Object} */
16
+ toJSON(): {
17
+ children: any;
18
+ type: any;
19
+ typeId: any;
20
+ fieldNames: never[];
21
+ startPosition: any;
22
+ startIndex: any;
23
+ endPosition: any;
24
+ endIndex: any;
25
+ indent: string;
26
+ } | {
27
+ text: any;
28
+ children: never[];
29
+ type: any;
30
+ typeId: any;
31
+ fieldNames: never[];
32
+ startPosition: any;
33
+ startIndex: any;
34
+ endPosition: any;
35
+ endIndex: any;
36
+ indent: string;
37
+ };
38
+ iterFlattened(): Generator<never, void, unknown>;
39
+ flattened(): never[];
40
+ /**
41
+ * Destroy the children of this node and replace the .text of this node with the given string.
42
+ *
43
+ * @param {string} replacement - description
44
+ */
45
+ replaceInnards(replacement: string): void;
46
+ [Symbol.iterator](): Generator<any, void, any>;
47
+ }
48
+ //# sourceMappingURL=base_node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base_node.d.ts","sourceRoot":"","sources":["../../../../src/deno-tree-sitter/main/extended/base_node.js"],"names":[],"mappings":"AAEA,0BAA0B;AAC1B;IAUI,uBAEC;IAED,qBAAqB;IACrB,aADW,MAAM,CAUhB;IANW,YAAe;IAQ3B,qBAAqB;IACrB,cADW,MAAM,CAGhB;IAMD,2BAEC;IAED,wBAEC;IAED,iBAEC;IAED,0BAEC;IAED,qBAAqB;IACrB,cADW,MAAM,CAKhB;IAED,qBAAqB;IACrB;;;;;;;;;;;;;;;;;;;;;MAgCC;IAgCD,iDAEC;IACD,qBAEC;IAED;;;;OAIG;IACH,4BAFW,MAAM,QAoChB;IA1ID,+CAEC;CAyIJ"}
@@ -0,0 +1,154 @@
1
+ import { Node } from "../tree_sitter/node.js";
2
+ export const _shadows = {};
3
+ export class BaseNode {
4
+ // type = ""
5
+ // typeId = 0
6
+ // startPosition = 0
7
+ // startIndex = 0
8
+ // endPosition = 0
9
+ // startIndex = 0
10
+ // endIndex = 0
11
+ // indent = ""
12
+ constructor(data) {
13
+ Object.assign(this, data);
14
+ }
15
+ /** @type {number} */
16
+ get depth() {
17
+ if (this._depth == null) {
18
+ if (this.parent == null) {
19
+ this._depth = 0;
20
+ }
21
+ else {
22
+ this._depth = this.parent.depth + 1;
23
+ }
24
+ }
25
+ return this._depth;
26
+ }
27
+ /** @type {number} */
28
+ get length() {
29
+ return this.children?.length || 0;
30
+ }
31
+ *[Symbol.iterator]() {
32
+ yield* this.children || [];
33
+ }
34
+ get hasChildren() {
35
+ return (this.children?.length || 0) > 0;
36
+ }
37
+ get hardChildren() {
38
+ return (this.children || []).filter(each => each instanceof Node);
39
+ }
40
+ get fields() {
41
+ return {};
42
+ }
43
+ get fieldNames() {
44
+ return [];
45
+ }
46
+ /** @type {string} */
47
+ get indent() {
48
+ return this.tree.codeString.match(new RegExp(`^(?:.*\\r?\\n){${this.startPosition.row}}(\\s*)`))[1];
49
+ // equivalent but usually faster than:
50
+ // return this.tree.codeString.split("\n")[this.startPosition.row].match(/^\s*/)[0]
51
+ }
52
+ /** @type {Object} */
53
+ toJSON() {
54
+ const optionalData = {};
55
+ if (this.children?.length) {
56
+ return {
57
+ type: this.type,
58
+ typeId: this.typeId,
59
+ fieldNames: this.fieldNames,
60
+ startPosition: this.startPosition,
61
+ startIndex: this.startIndex,
62
+ endPosition: this.endPosition,
63
+ startIndex: this.startIndex,
64
+ endIndex: this.endIndex,
65
+ indent: this.indent,
66
+ ...optionalData,
67
+ children: this.children.map(each => each.toJSON()),
68
+ };
69
+ }
70
+ else {
71
+ return {
72
+ type: this.type,
73
+ typeId: this.typeId,
74
+ fieldNames: this.fieldNames,
75
+ startPosition: this.startPosition,
76
+ startIndex: this.startIndex,
77
+ endPosition: this.endPosition,
78
+ startIndex: this.startIndex,
79
+ endIndex: this.endIndex,
80
+ indent: this.indent,
81
+ ...optionalData,
82
+ text: this.text,
83
+ children: [],
84
+ };
85
+ }
86
+ }
87
+ [Symbol.for("Deno.customInspect")](inspect, options) {
88
+ const optional = {};
89
+ let text;
90
+ try {
91
+ text = this.text;
92
+ }
93
+ catch (error) {
94
+ text = undefined;
95
+ }
96
+ if (text == undefined) {
97
+ return this;
98
+ }
99
+ return inspect({
100
+ '': text.length < 60 ? text : text.slice(0, 30) + "..." + text.slice(-27),
101
+ type: this.type,
102
+ typeId: this.typeId,
103
+ fieldNames: this.fieldNames,
104
+ startPosition: this.startPosition,
105
+ startIndex: this.startIndex,
106
+ endPosition: this.endPosition,
107
+ startIndex: this.startIndex,
108
+ endIndex: this.endIndex,
109
+ indent: this.indent,
110
+ ...optional,
111
+ hasChildren: this.hasChildren,
112
+ children: [...(this.children || [])],
113
+ }, options);
114
+ }
115
+ *iterFlattened() {
116
+ }
117
+ flattened() {
118
+ return [];
119
+ }
120
+ /**
121
+ * Destroy the children of this node and replace the .text of this node with the given string.
122
+ *
123
+ * @param {string} replacement - description
124
+ */
125
+ replaceInnards(replacement) {
126
+ const tree = this.tree;
127
+ const sourceCode = this.tree.codeString;
128
+ const node = _shadows[this.id] || this;
129
+ // clear out children (innards) because of replacement
130
+ node._children = [];
131
+ node._fields = {};
132
+ // get the node position info
133
+ const { startPosition: originalStart, endPosition: originalEnd, startIndex: originalStartIndex, endIndex: originalEndIndex, } = node;
134
+ // compute what the new row-column will be
135
+ const newNumberOfLines = replacement.match(/\n/g)?.length || 0;
136
+ let newEndCol = originalStart.column;
137
+ if (newNumberOfLines == 0) {
138
+ newEndCol = originalStart.column + replacement.length;
139
+ }
140
+ else {
141
+ newEndCol = replacement.split("\n").slice(-1)[0].length;
142
+ }
143
+ // updates all the indices of all the nodes
144
+ tree.edit({
145
+ startIndex: originalStartIndex,
146
+ oldEndIndex: originalEndIndex,
147
+ newEndIndex: originalStartIndex + replacement.length,
148
+ startPosition: originalStart,
149
+ oldEndPosition: originalEnd,
150
+ newEndPosition: { row: originalStart.row + newNumberOfLines, column: newEndCol },
151
+ });
152
+ this.tree.codeString = sourceCode.slice(0, originalStartIndex) + replacement + sourceCode.slice(originalEndIndex);
153
+ }
154
+ }
@@ -0,0 +1,237 @@
1
+ export class ExtendedTree extends Tree {
2
+ /** @type {HardNode} */
3
+ rootNode: HardNode;
4
+ }
5
+ export class HardNode extends BaseNode {
6
+ /** @internal */
7
+ _children: any;
8
+ /** @internal */
9
+ _fields: any;
10
+ /** @type {number} */
11
+ id: number;
12
+ /** @type {number} */
13
+ startIndex: number;
14
+ /** @type {Position} */
15
+ startPosition: Position;
16
+ /** @type {ExtendedTree} */
17
+ tree: ExtendedTree;
18
+ /** @type {string} */
19
+ type: string;
20
+ /** @type {Boolean} */
21
+ isExtra: boolean;
22
+ /** @type {Boolean} */
23
+ isError: boolean;
24
+ /** @type {Boolean} */
25
+ isMissing: boolean;
26
+ /** @type {Boolean} */
27
+ hasChanges: boolean;
28
+ /** @type {Boolean} */
29
+ hasError: boolean;
30
+ /**
31
+ * @param {HardNode} other -
32
+ * @returns {Boolean} output -
33
+ */
34
+ equals: ((other: any) => boolean) | undefined;
35
+ /** @type {HardNode} */
36
+ get parent(): HardNode;
37
+ /** @type {string} */
38
+ get text(): string;
39
+ /** @type {Number} */
40
+ get endIndex(): number;
41
+ /** @type {Position} */
42
+ get endPosition(): Position;
43
+ set children(value: Array<HardNode | SoftNode>);
44
+ /** @type {Array<HardNode|SoftNode>} */
45
+ get children(): Array<HardNode | SoftNode>;
46
+ /**
47
+ * Yields each child
48
+ *
49
+ * @generator
50
+ * @yields {HardNode} The current child or grandchild in the structure.
51
+ */
52
+ traverse(arg?: {
53
+ _parentNodes: never[];
54
+ }): Generator<any, void, unknown>;
55
+ /**
56
+ * A generator function that flattens the hierarchical structure of `children` and their descendants.
57
+ * It yields each child and their flattened descendants recursively.
58
+ *
59
+ * @param {Function} opts.filter - A function to filter the flattened elements.
60
+ * @param {Boolean} opts.includeSelf -
61
+ * @generator
62
+ * @yields {HardNode} The current child or grandchild in the structure.
63
+ */
64
+ iterFlattened({ filter, includeSelf }?: Function): Generator<any, void, unknown>;
65
+ /** @internal */
66
+ iterFlatten(): void;
67
+ /**
68
+ * Flattens the structure of `children` using the provided filter function.
69
+ * This method returns an array containing the flattened elements.
70
+ *
71
+ * @param {Function} opts.filter - A function to filter the flattened elements.
72
+ * @param {Boolean} opts.includeSelf -
73
+ * @returns {Array} An array containing the flattened elements that pass the filter.
74
+ */
75
+ flattened({ filter, includeSelf }?: Function): any[];
76
+ /** @internal */
77
+ flatten(): void;
78
+ /**
79
+ * Query
80
+ *
81
+ * @example
82
+ * ```js
83
+ * import { createParser } from "https://deno.land/x/deno_tree_sitter/main/main.js"
84
+ * import javascript from "https://github.com/jeff-hykin/common_tree_sitter_languages/raw/4d8a6d34d7f6263ff570f333cdcf5ded6be89e3d/main/javascript.js"
85
+ * const parser = await createParser(javascript) // path or Uint8Array
86
+ * const tree = parser.parse('let a = 1;let b = 1;let c = 1;')
87
+ *
88
+ * tree.rootNode.query(`(identifier) @blahBlahBlah`, {matchLimit: 2})
89
+ * // returns:
90
+ * [
91
+ * {
92
+ * pattern: 0,
93
+ * captures: [
94
+ * {
95
+ * name: "blahBlahBlah",
96
+ * node: {
97
+ * type: "identifier",
98
+ * typeId: 1,
99
+ * startPosition: { row: 0, column: 4 },
100
+ * startIndex: 4,
101
+ * endPosition: { row: 0, column: 5 },
102
+ * endIndex: 5,
103
+ * indent: undefined,
104
+ * hasChildren: false,
105
+ * children: []
106
+ * }
107
+ * }
108
+ * ]
109
+ * },
110
+ * {
111
+ * pattern: 0,
112
+ * captures: [
113
+ * {
114
+ * name: "blahBlahBlah",
115
+ * node: {
116
+ * type: "identifier",
117
+ * typeId: 1,
118
+ * startPosition: { row: 0, column: 14 },
119
+ * startIndex: 14,
120
+ * endPosition: { row: 0, column: 15 },
121
+ * endIndex: 15,
122
+ * indent: undefined,
123
+ * hasChildren: false,
124
+ * children: []
125
+ * }
126
+ * }
127
+ * ]
128
+ * },
129
+ * {
130
+ * pattern: 0,
131
+ * captures: [
132
+ * {
133
+ * name: "blahBlahBlah",
134
+ * node: {
135
+ * type: "identifier",
136
+ * typeId: 1,
137
+ * startPosition: { row: 0, column: 24 },
138
+ * startIndex: 24,
139
+ * endPosition: { row: 0, column: 25 },
140
+ * endIndex: 25,
141
+ * indent: undefined,
142
+ * hasChildren: false,
143
+ * children: []
144
+ * }
145
+ * }
146
+ * ]
147
+ * }
148
+ * ]
149
+ * ```
150
+ *
151
+ * @param {String} queryString - see https://tree-sitter.github.io/tree-sitter/using-parsers#query-syntax
152
+ * @param options.matchLimit - max number of results
153
+ * @param options.startPosition - {row: Number, column: number}
154
+ * @param options.endPosition - {row: Number, column: number}
155
+ * @param options.maxResultDepth - depth relative to the current node (1 = direct children, 2 = grandchildren, etc)
156
+ * @returns {[Object]} output
157
+ *
158
+ */
159
+ query(queryString: string, options: any): [Object];
160
+ /**
161
+ * quickQuery
162
+ *
163
+ * @example
164
+ * ```js
165
+ * import { createParser } from "https://deno.land/x/deno_tree_sitter/main/main.js"
166
+ * import javascript from "https://github.com/jeff-hykin/common_tree_sitter_languages/raw/676ffa3b93768b8ac628fd5c61656f7dc41ba413/main/javascript.js"
167
+ * const parser = await createParser(javascript) // path or Uint8Array
168
+ * const tree = parser.parse('let a = 1;let b = 1;let c = 1;')
169
+ * // ex1: no capture names
170
+ * const nodes = tree.rootNode.quickQuery(
171
+ * `(identifier)`, {matchLimit: 2}
172
+ * )
173
+ * // ex2: with capture names
174
+ * const groups = tree.rootNode.quickQuery(
175
+ * `'(binding (attrpath) @myKey (list_expression) @myList ("\\"")? @optionalThing )`
176
+ * )
177
+ * groups[0].myKey // node
178
+ * groups[0].myList // node
179
+ * groups[0].optionalThing // node or null
180
+ * groups[0][0] // node (the whole match)
181
+ * ```
182
+ *
183
+ * @param {String} queryString - see https://tree-sitter.github.io/tree-sitter/using-parsers#query-syntax
184
+ * @param options.matchLimit - max number of results
185
+ * @param options.startPosition - {row: Number, column: number}
186
+ * @param options.endPosition - {row: Number, column: number}
187
+ * @param options.maxResultDepth - depth relative to the current node (1 = direct children, 2 = grandchildren, etc)
188
+ * @returns {Array<HardNode|Record<any, HardNode>>} nodesOrObjsOfNodes
189
+ */
190
+ quickQuery(queryString: string, options: any): Array<HardNode | Record<any, HardNode>>;
191
+ /**
192
+ * quickQueryFirst
193
+ *
194
+ * @example
195
+ * ```js
196
+ * import { createParser } from "https://deno.land/x/deno_tree_sitter/main/main.js"
197
+ * import javascript from "https://github.com/jeff-hykin/common_tree_sitter_languages/raw/4d8a6d34d7f6263ff570f333cdcf5ded6be89e3d/main/javascript.js"
198
+ * const parser = await createParser(javascript) // path or Uint8Array
199
+ * const tree = parser.parse('let a = 1;let b = 1;let c = 1;')
200
+ *
201
+ * // ex1: no capture names
202
+ * const node = tree.rootNode.quickQueryFirst(`(identifier)`)
203
+ *
204
+ * // ex2: with capture names
205
+ * const { myKey, myList, optionalThing } = tree.rootNode.quickQueryFirst(
206
+ * `'(binding (attrpath) @myKey (list_expression) @myList ("\\"")? @optionalThing )`
207
+ * )
208
+ * myKey // node
209
+ * myList // node
210
+ * optionalThing // node or null
211
+ * ```
212
+ *
213
+ * @param {String} queryString - see https://tree-sitter.github.io/tree-sitter/using-parsers#query-syntax
214
+ * @param options.startPosition - {row: Number, column: number}
215
+ * @param options.endPosition - {row: Number, column: number}
216
+ * @param options.maxResultDepth - depth relative to the current node (1 = direct children, 2 = grandchildren, etc)
217
+ * @returns {HardNode|Record<any,HardNode>|null} nodeOrObjOfNodes
218
+ */
219
+ quickQueryFirst(queryString: string, options: any): HardNode | Record<any, HardNode> | null;
220
+ get fields(): any;
221
+ get fieldNames(): string[];
222
+ getQueryForSelf(): string;
223
+ /** @returns {string} */
224
+ asLispString(): string;
225
+ }
226
+ export { Node };
227
+ export function _childrenWithSoftNodes(node: any, children: any, string: any): any[] | undefined;
228
+ import { Tree } from "../tree_sitter/tree.js";
229
+ import { BaseNode } from "./base_node.js";
230
+ declare class Position {
231
+ /** @type {number} */
232
+ row: number;
233
+ /** @type {number} */
234
+ column: number;
235
+ }
236
+ import { Node } from "../tree_sitter/node.js";
237
+ //# sourceMappingURL=node_extended.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_extended.d.ts","sourceRoot":"","sources":["../../../../src/deno-tree-sitter/main/extended/node_extended.js"],"names":[],"mappings":"AA2DA;IACI,uBAAuB;IACvB,UADW,QAAQ,CACX;CACX;AAmBD;IACI,gBAAgB;IAChB,eAAS;IACT,gBAAgB;IAChB,aAAO;IAIP,qBAAqB;IACrB,IADW,MAAM,CACf;IACF,qBAAqB;IACrB,YADW,MAAM,CACP;IACV,uBAAuB;IACvB,eADW,QAAQ,CACN;IACb,2BAA2B;IAC3B,MADW,YAAY,CACnB;IACJ,qBAAqB;IACrB,MADW,MAAM,CACb;IACJ,sBAAsB;IACtB,iBAAO;IACP,sBAAsB;IACtB,iBAAO;IACP,sBAAsB;IACtB,mBAAS;IACT,sBAAsB;IACtB,oBAAU;IACV,sBAAsB;IACtB,kBAAQ;IACR;;;OAGG;IACH,8CAAuB;IAEvB,uBAAuB;IACvB,cADW,QAAQ,CAIlB;IAED,qBAAqB;IACrB,YADW,MAAM,CAGhB;IAED,qBAAqB;IACrB,uBAKC;IAED,uBAAuB;IACvB,mBADW,QAAQ,CAQlB;IAeD,oBAbW,KAAK,CAAC,QAAQ,GAAC,QAAQ,CAAC,EAelC;IAfD,uCAAuC;IACvC,gBADW,KAAK,CAAC,QAAQ,GAAC,QAAQ,CAAC,CAWlC;IAMD;;;;;MAKE;IACF;;sCAkBC;IAED;;;;;;;;MAQE;IACF,iFAqBC;IAED,gBAAgB;IAChB,oBAEC;IAED;;;;;;;MAOE;IACF,qDAEC;IACD,gBAAgB;IAChB,gBAEC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgFE;IACF,0CAHY,CAAC,MAAM,CAAC,CAyBnB;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BE;IACF,+CAFY,KAAK,CAAC,QAAQ,GAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CA6BhD;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BE;IACF,oDAFY,QAAQ,GAAC,MAAM,CAAC,GAAG,EAAC,QAAQ,CAAC,GAAC,IAAI,CAI7C;IACD,kBAiBC;IACD,2BAEC;IAED,0BAmBC;IAED,wBAAwB;IACxB,gBADc,MAAM,CAGnB;CACJ;;AAcM,iGA6FN;qBApkBoB,wBAAwB;yBALV,gBAAgB;AA+DnD;IACI,qBAAqB;IACrB,KADW,MAAM,CACd;IACH,qBAAqB;IACrB,QADW,MAAM,CACX;CACT;qBAtEoB,wBAAwB"}