rawsql-ts 0.11.9-beta → 0.11.10-beta

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.
@@ -28,6 +28,7 @@ export declare class SqlFormatter {
28
28
  andBreak?: AndBreakStyle;
29
29
  exportComment?: boolean;
30
30
  strictCommentPlacement?: boolean;
31
+ cteOneline?: boolean;
31
32
  }); /**
32
33
  * Formats a SQL query string with the given parameters.
33
34
  * @param sqlText The SQL query string to format.
@@ -1 +1 @@
1
- {"version":3,"file":"SqlFormatter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAkC,MAAM,cAAc,CAAC;AAK1E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAGnF;;GAEG;AACH,MAAM,OAAO,YAAY;IAIrB,YAAY,UAaR,EAAE;;QAEF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,iCAAiC;QAC3F,CAAC;QAED,MAAM,aAAa,mCACZ,YAAY,KACf,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB,EAC5E,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,EACzE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,GACzE,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAI;;;;;OAKF;IACH,MAAM,CAAC,GAAiB;QACpB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;CACJ"}
1
+ {"version":3,"file":"SqlFormatter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAkC,MAAM,cAAc,CAAC;AAK1E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAGnF;;GAEG;AACH,MAAM,OAAO,YAAY;IAIrB,YAAY,UAcR,EAAE;;QAEF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,iCAAiC;QAC3F,CAAC;QAED,MAAM,aAAa,mCACZ,YAAY,KACf,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB,EAC5E,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,EACzE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,GACzE,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAI;;;;;OAKF;IACH,MAAM,CAAC,GAAiB;QACpB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;CACJ"}
@@ -1,4 +1,4 @@
1
- import { SqlPrintToken } from "../models/SqlPrintToken";
1
+ import { SqlPrintToken, SqlPrintTokenContainerType } from "../models/SqlPrintToken";
2
2
  import { IndentCharOption, NewlineOption } from "./LinePrinter";
3
3
  /**
4
4
  * CommaBreakStyle determines how commas are placed in formatted SQL output.
@@ -14,8 +14,49 @@ export type CommaBreakStyle = 'none' | 'before' | 'after';
14
14
  * - 'after': Line break after AND
15
15
  */
16
16
  export type AndBreakStyle = 'none' | 'before' | 'after';
17
+ /**
18
+ * Options for configuring SqlPrinter formatting behavior
19
+ */
20
+ export interface SqlPrinterOptions {
21
+ /** Indent character (e.g., ' ' or '\t') */
22
+ indentChar?: IndentCharOption;
23
+ /** Indent size (number of indentChar repetitions per level) */
24
+ indentSize?: number;
25
+ /** Newline character (e.g., '\n' or '\r\n') */
26
+ newline?: NewlineOption;
27
+ /** Comma break style: 'none', 'before', or 'after' */
28
+ commaBreak?: CommaBreakStyle;
29
+ /** AND break style: 'none', 'before', or 'after' */
30
+ andBreak?: AndBreakStyle;
31
+ /** Keyword case style: 'none', 'upper' | 'lower' */
32
+ keywordCase?: 'none' | 'upper' | 'lower';
33
+ /** Whether to export comments in the output (default: false for compatibility) */
34
+ exportComment?: boolean;
35
+ /** Whether to use strict comment placement (only clause-level comments, default: false) */
36
+ strictCommentPlacement?: boolean;
37
+ /** Container types that should increase indentation level */
38
+ indentIncrementContainerTypes?: SqlPrintTokenContainerType[];
39
+ /** Whether to format CTE parts as one-liners (default: false) */
40
+ cteOneline?: boolean;
41
+ }
17
42
  /**
18
43
  * SqlPrinter formats a SqlPrintToken tree into a SQL string with flexible style options.
44
+ *
45
+ * This class provides various formatting options including:
46
+ * - Indentation control (character and size)
47
+ * - Line break styles for commas and AND operators
48
+ * - Keyword case transformation
49
+ * - Comment handling
50
+ * - CTE (Common Table Expression) formatting
51
+ *
52
+ * @example
53
+ * const printer = new SqlPrinter({
54
+ * indentChar: ' ',
55
+ * indentSize: 1,
56
+ * keywordCase: 'upper',
57
+ * commaBreak: 'after'
58
+ * });
59
+ * const formatted = printer.print(sqlToken);
19
60
  */
20
61
  export declare class SqlPrinter {
21
62
  /** Indent character (e.g., ' ' or '\\t') */
@@ -34,27 +75,31 @@ export declare class SqlPrinter {
34
75
  exportComment: boolean;
35
76
  /** Whether to use strict comment placement (only clause-level comments, default: false) */
36
77
  strictCommentPlacement: boolean;
78
+ /** Whether to format CTE parts as one-liners (default: false) */
79
+ cteOneline: boolean;
37
80
  private linePrinter;
38
81
  private indentIncrementContainers;
39
82
  /**
40
83
  * @param options Optional style settings for pretty printing
41
84
  */
42
- constructor(options?: {
43
- indentChar?: IndentCharOption;
44
- indentSize?: number;
45
- newline?: NewlineOption;
46
- commaBreak?: CommaBreakStyle;
47
- andBreak?: AndBreakStyle;
48
- keywordCase?: 'none' | 'upper' | 'lower';
49
- exportComment?: boolean;
50
- strictCommentPlacement?: boolean;
51
- indentIncrementContainerTypes?: string[];
52
- });
85
+ constructor(options?: SqlPrinterOptions);
53
86
  /**
54
87
  * Converts a SqlPrintToken tree to a formatted SQL string.
55
- * @param token The root SqlPrintToken
56
- * @param level Indentation level (default: 0)
88
+ * @param token The root SqlPrintToken to format
89
+ * @param level Initial indentation level (default: 0)
90
+ * @returns Formatted SQL string
91
+ * @example
92
+ * const printer = new SqlPrinter({ indentChar: ' ', keywordCase: 'upper' });
93
+ * const formatted = printer.print(sqlToken);
57
94
  */
58
95
  print(token: SqlPrintToken, level?: number): string;
59
96
  private appendToken;
97
+ private shouldSkipToken;
98
+ private applyKeywordCase;
99
+ private handleKeywordToken;
100
+ private handleCommaToken;
101
+ private handleAndOperatorToken;
102
+ private handleJoinClauseToken;
103
+ private handleCommentToken;
104
+ private handleCteOnelineToken;
60
105
  }
@@ -2,13 +2,29 @@ import { SqlPrintTokenType, SqlPrintTokenContainerType } from "../models/SqlPrin
2
2
  import { LinePrinter } from "./LinePrinter";
3
3
  /**
4
4
  * SqlPrinter formats a SqlPrintToken tree into a SQL string with flexible style options.
5
+ *
6
+ * This class provides various formatting options including:
7
+ * - Indentation control (character and size)
8
+ * - Line break styles for commas and AND operators
9
+ * - Keyword case transformation
10
+ * - Comment handling
11
+ * - CTE (Common Table Expression) formatting
12
+ *
13
+ * @example
14
+ * const printer = new SqlPrinter({
15
+ * indentChar: ' ',
16
+ * indentSize: 1,
17
+ * keywordCase: 'upper',
18
+ * commaBreak: 'after'
19
+ * });
20
+ * const formatted = printer.print(sqlToken);
5
21
  */
6
22
  export class SqlPrinter {
7
23
  /**
8
24
  * @param options Optional style settings for pretty printing
9
25
  */
10
26
  constructor(options) {
11
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
27
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
12
28
  this.indentChar = (_a = options === null || options === void 0 ? void 0 : options.indentChar) !== null && _a !== void 0 ? _a : '';
13
29
  this.indentSize = (_b = options === null || options === void 0 ? void 0 : options.indentSize) !== null && _b !== void 0 ? _b : 0;
14
30
  // The default newline character is set to a blank space (' ') to enable one-liner formatting.
@@ -19,9 +35,10 @@ export class SqlPrinter {
19
35
  this.keywordCase = (_f = options === null || options === void 0 ? void 0 : options.keywordCase) !== null && _f !== void 0 ? _f : 'none';
20
36
  this.exportComment = (_g = options === null || options === void 0 ? void 0 : options.exportComment) !== null && _g !== void 0 ? _g : false;
21
37
  this.strictCommentPlacement = (_h = options === null || options === void 0 ? void 0 : options.strictCommentPlacement) !== null && _h !== void 0 ? _h : false;
38
+ this.cteOneline = (_j = options === null || options === void 0 ? void 0 : options.cteOneline) !== null && _j !== void 0 ? _j : false;
22
39
  this.linePrinter = new LinePrinter(this.indentChar, this.indentSize, this.newline);
23
40
  // Initialize
24
- this.indentIncrementContainers = new Set((_j = options === null || options === void 0 ? void 0 : options.indentIncrementContainerTypes) !== null && _j !== void 0 ? _j : [
41
+ this.indentIncrementContainers = new Set((_k = options === null || options === void 0 ? void 0 : options.indentIncrementContainerTypes) !== null && _k !== void 0 ? _k : [
25
42
  SqlPrintTokenContainerType.SelectClause,
26
43
  SqlPrintTokenContainerType.FromClause,
27
44
  SqlPrintTokenContainerType.WhereClause,
@@ -48,8 +65,12 @@ export class SqlPrinter {
48
65
  }
49
66
  /**
50
67
  * Converts a SqlPrintToken tree to a formatted SQL string.
51
- * @param token The root SqlPrintToken
52
- * @param level Indentation level (default: 0)
68
+ * @param token The root SqlPrintToken to format
69
+ * @param level Initial indentation level (default: 0)
70
+ * @returns Formatted SQL string
71
+ * @example
72
+ * const printer = new SqlPrinter({ indentChar: ' ', keywordCase: 'upper' });
73
+ * const formatted = printer.print(sqlToken);
53
74
  */
54
75
  print(token, level = 0) {
55
76
  // initialize
@@ -60,76 +81,30 @@ export class SqlPrinter {
60
81
  this.appendToken(token, level);
61
82
  return this.linePrinter.print();
62
83
  }
63
- appendToken(token, level) {
64
- if (!token.innerTokens || token.innerTokens.length === 0) {
65
- if (token.text === '') {
66
- return;
67
- }
84
+ appendToken(token, level, parentContainerType) {
85
+ if (this.shouldSkipToken(token)) {
86
+ return;
68
87
  }
69
88
  const current = this.linePrinter.getCurrentLine();
89
+ // Handle different token types
70
90
  if (token.type === SqlPrintTokenType.keyword) {
71
- let text = token.text;
72
- if (this.keywordCase === 'upper') {
73
- text = text.toUpperCase();
74
- }
75
- else if (this.keywordCase === 'lower') {
76
- text = text.toLowerCase();
77
- }
78
- this.linePrinter.appendText(text);
91
+ this.handleKeywordToken(token, level);
79
92
  }
80
93
  else if (token.type === SqlPrintTokenType.comma) {
81
- let text = token.text;
82
- if (this.commaBreak === 'before') {
83
- this.linePrinter.appendNewline(level);
84
- this.linePrinter.appendText(text);
85
- }
86
- else if (this.commaBreak === 'after') {
87
- this.linePrinter.appendText(text);
88
- this.linePrinter.appendNewline(level);
89
- }
90
- else {
91
- this.linePrinter.appendText(text);
92
- }
94
+ this.handleCommaToken(token, level, parentContainerType);
93
95
  }
94
96
  else if (token.type === SqlPrintTokenType.operator && token.text.toLowerCase() === 'and') {
95
- let text = token.text;
96
- if (this.keywordCase === 'upper') {
97
- text = text.toUpperCase();
98
- }
99
- else if (this.keywordCase === 'lower') {
100
- text = text.toLowerCase();
101
- }
102
- if (this.andBreak === 'before') {
103
- this.linePrinter.appendNewline(level);
104
- this.linePrinter.appendText(text);
105
- }
106
- else if (this.andBreak === 'after') {
107
- this.linePrinter.appendText(text);
108
- this.linePrinter.appendNewline(level);
109
- }
110
- else {
111
- this.linePrinter.appendText(text);
112
- }
97
+ this.handleAndOperatorToken(token, level);
113
98
  }
114
99
  else if (token.containerType === "JoinClause") {
115
- let text = token.text;
116
- if (this.keywordCase === 'upper') {
117
- text = text.toUpperCase();
118
- }
119
- else if (this.keywordCase === 'lower') {
120
- text = text.toLowerCase();
121
- }
122
- // before join clause, add newline
123
- this.linePrinter.appendNewline(level);
124
- this.linePrinter.appendText(text);
100
+ this.handleJoinClauseToken(token, level);
125
101
  }
126
102
  else if (token.type === SqlPrintTokenType.comment) {
127
- // Handle comments - only output if exportComment is true
128
- if (this.exportComment) {
129
- this.linePrinter.appendText(token.text);
130
- // Always add a space after comment to ensure SQL structure safety
131
- this.linePrinter.appendText(' ');
132
- }
103
+ this.handleCommentToken(token);
104
+ }
105
+ else if (token.containerType === SqlPrintTokenContainerType.CommonTable && this.cteOneline) {
106
+ this.handleCteOnelineToken(token, level);
107
+ return; // Return early to avoid processing innerTokens
133
108
  }
134
109
  else {
135
110
  this.linePrinter.appendText(token.text);
@@ -138,7 +113,7 @@ export class SqlPrinter {
138
113
  if (token.keywordTokens && token.keywordTokens.length > 0) {
139
114
  for (let i = 0; i < token.keywordTokens.length; i++) {
140
115
  const keywordToken = token.keywordTokens[i];
141
- this.appendToken(keywordToken, level);
116
+ this.appendToken(keywordToken, level, token.containerType);
142
117
  }
143
118
  }
144
119
  let innerLevel = level;
@@ -149,12 +124,91 @@ export class SqlPrinter {
149
124
  }
150
125
  for (let i = 0; i < token.innerTokens.length; i++) {
151
126
  const child = token.innerTokens[i];
152
- this.appendToken(child, innerLevel);
127
+ this.appendToken(child, innerLevel, token.containerType);
153
128
  }
154
129
  // indent level down
155
130
  if (innerLevel !== level) {
156
131
  this.linePrinter.appendNewline(level);
157
132
  }
158
133
  }
134
+ shouldSkipToken(token) {
135
+ return (!token.innerTokens || token.innerTokens.length === 0) && token.text === '';
136
+ }
137
+ applyKeywordCase(text) {
138
+ if (this.keywordCase === 'upper') {
139
+ return text.toUpperCase();
140
+ }
141
+ else if (this.keywordCase === 'lower') {
142
+ return text.toLowerCase();
143
+ }
144
+ return text;
145
+ }
146
+ handleKeywordToken(token, level) {
147
+ const text = this.applyKeywordCase(token.text);
148
+ this.linePrinter.appendText(text);
149
+ }
150
+ handleCommaToken(token, level, parentContainerType) {
151
+ const text = token.text;
152
+ // Special handling for commas in WithClause when cteOneline is enabled
153
+ if (this.cteOneline && parentContainerType === SqlPrintTokenContainerType.WithClause) {
154
+ this.linePrinter.appendText(text);
155
+ this.linePrinter.appendNewline(level);
156
+ }
157
+ else if (this.commaBreak === 'before') {
158
+ this.linePrinter.appendNewline(level);
159
+ this.linePrinter.appendText(text);
160
+ }
161
+ else if (this.commaBreak === 'after') {
162
+ this.linePrinter.appendText(text);
163
+ this.linePrinter.appendNewline(level);
164
+ }
165
+ else {
166
+ this.linePrinter.appendText(text);
167
+ }
168
+ }
169
+ handleAndOperatorToken(token, level) {
170
+ const text = this.applyKeywordCase(token.text);
171
+ if (this.andBreak === 'before') {
172
+ this.linePrinter.appendNewline(level);
173
+ this.linePrinter.appendText(text);
174
+ }
175
+ else if (this.andBreak === 'after') {
176
+ this.linePrinter.appendText(text);
177
+ this.linePrinter.appendNewline(level);
178
+ }
179
+ else {
180
+ this.linePrinter.appendText(text);
181
+ }
182
+ }
183
+ handleJoinClauseToken(token, level) {
184
+ const text = this.applyKeywordCase(token.text);
185
+ // before join clause, add newline
186
+ this.linePrinter.appendNewline(level);
187
+ this.linePrinter.appendText(text);
188
+ }
189
+ handleCommentToken(token) {
190
+ // Handle comments - only output if exportComment is true
191
+ if (this.exportComment) {
192
+ this.linePrinter.appendText(token.text);
193
+ // Always add a space after comment to ensure SQL structure safety
194
+ this.linePrinter.appendText(' ');
195
+ }
196
+ }
197
+ handleCteOnelineToken(token, level) {
198
+ // Handle CTE with one-liner formatting when cteOneline is enabled
199
+ const onelinePrinter = new SqlPrinter({
200
+ indentChar: '',
201
+ indentSize: 0,
202
+ newline: ' ',
203
+ commaBreak: this.commaBreak,
204
+ andBreak: this.andBreak,
205
+ keywordCase: this.keywordCase,
206
+ exportComment: this.exportComment,
207
+ strictCommentPlacement: this.strictCommentPlacement,
208
+ cteOneline: false, // Prevent recursive CTE oneline processing
209
+ });
210
+ const onelineResult = onelinePrinter.print(token, level);
211
+ this.linePrinter.appendText(onelineResult);
212
+ }
159
213
  }
160
214
  //# sourceMappingURL=SqlPrinter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAoB,WAAW,EAAiB,MAAM,eAAe,CAAC;AA4C7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,UAAU;IA2BnB;;OAEG;IACH,YAAY,OAA2B;;QACnC,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,CAAC,CAAC;QAE3C,8FAA8F;QAC9F,0EAA0E;QAC1E,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,GAAG,CAAC;QAEvC,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,MAAM,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,MAAM,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,MAAM,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,mCAAI,KAAK,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,mCAAI,KAAK,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnF,aAAa;QACb,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,CACpC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,6BAA6B,mCAAI;YACtC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,UAAU;YACrC,0BAA0B,CAAC,WAAW;YACtC,0BAA0B,CAAC,aAAa;YACxC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,qBAAqB;YAChD,0BAA0B,CAAC,iBAAiB;YAC5C,0BAA0B,CAAC,aAAa;YACxC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,WAAW;YACtC,0BAA0B,CAAC,YAAY;YACvC,0BAA0B,CAAC,cAAc;YACzC,0BAA0B,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,MAAM;YACvF,0BAA0B,CAAC,UAAU;YACrC,0BAA0B,CAAC,kBAAkB;YAC7C,0BAA0B,CAAC,gBAAgB;YAC3C,0BAA0B,CAAC,aAAa;YACxC,0BAA0B,CAAC,UAAU;YACrC,0BAA0B,CAAC,aAAa;YACxC,uEAAuE;YACvE,4EAA4E;YAC5E,wCAAwC;SAC3C,CACJ,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAoB,EAAE,QAAgB,CAAC;QACzC,aAAa;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACjF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAEO,WAAW,CAAC,KAAoB,EAAE,KAAa,EAAE,mBAAgD;QACrG,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAElD,+BAA+B;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YACzF,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,KAAK,0BAA0B,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3F,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,+CAA+C;QAC3D,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,sCAAsC;QACtC,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QAED,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,kBAAkB;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,oBAAoB;YAC9H,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7D,CAAC;QAED,oBAAoB;QACpB,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,KAAoB;QACxC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;IACvF,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACjC,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,KAAoB,EAAE,KAAa;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,gBAAgB,CAAC,KAAoB,EAAE,KAAa,EAAE,mBAAgD;QAC1G,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,uEAAuE;QACvE,IAAI,IAAI,CAAC,UAAU,IAAI,mBAAmB,KAAK,0BAA0B,CAAC,UAAU,EAAE,CAAC;YACnF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,KAAoB,EAAE,KAAa;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,KAAoB,EAAE,KAAa;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,kCAAkC;QAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,kBAAkB,CAAC,KAAoB;QAC3C,yDAAyD;QACzD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,kEAAkE;YAClE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,KAAoB,EAAE,KAAa;QAC7D,kEAAkE;QAClE,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC;YAClC,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,UAAU,EAAE,KAAK,EAAE,2CAA2C;SACjE,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;CACJ"}