@mrnafisia/type-query 4.0.7 → 4.0.9

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 (46) hide show
  1. package/dist/prd.tsconfig.tsbuildinfo +1 -0
  2. package/dist/src/Table.d.ts +158 -0
  3. package/dist/src/Table.d.ts.map +1 -0
  4. package/dist/src/Table.js +6 -0
  5. package/dist/src/Table.js.map +1 -0
  6. package/dist/src/context.d.ts +90 -0
  7. package/dist/src/context.d.ts.map +1 -0
  8. package/dist/src/context.js +84 -0
  9. package/dist/src/context.js.map +1 -0
  10. package/dist/src/createModelParser.d.ts +47 -0
  11. package/dist/src/createModelParser.d.ts.map +1 -0
  12. package/dist/src/createModelParser.js +339 -0
  13. package/dist/src/createModelParser.js.map +1 -0
  14. package/dist/src/ddl.d.ts +22 -0
  15. package/dist/src/ddl.d.ts.map +1 -0
  16. package/dist/src/ddl.js +92 -0
  17. package/dist/src/ddl.js.map +1 -0
  18. package/dist/src/entity.d.ts +114 -0
  19. package/dist/src/entity.d.ts.map +1 -0
  20. package/dist/src/entity.js +543 -0
  21. package/dist/src/entity.js.map +1 -0
  22. package/dist/src/index.d.ts +10 -0
  23. package/dist/src/index.d.ts.map +1 -0
  24. package/dist/src/index.js +70 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/keywords.d.ts +158 -0
  27. package/dist/src/keywords.d.ts.map +1 -0
  28. package/dist/src/keywords.js +187 -0
  29. package/dist/src/keywords.js.map +1 -0
  30. package/dist/src/resolve.d.ts +15 -0
  31. package/dist/src/resolve.d.ts.map +1 -0
  32. package/dist/src/resolve.js +599 -0
  33. package/dist/src/resolve.js.map +1 -0
  34. package/dist/src/testTransaction.d.ts +23 -0
  35. package/dist/src/testTransaction.d.ts.map +1 -0
  36. package/dist/src/testTransaction.js +115 -0
  37. package/dist/src/testTransaction.js.map +1 -0
  38. package/dist/src/transaction.d.ts +6 -0
  39. package/dist/src/transaction.d.ts.map +1 -0
  40. package/dist/src/transaction.js +28 -0
  41. package/dist/src/transaction.js.map +1 -0
  42. package/dist/src/utils.d.ts +62 -0
  43. package/dist/src/utils.d.ts.map +1 -0
  44. package/dist/src/utils.js +86 -0
  45. package/dist/src/utils.js.map +1 -0
  46. package/package.json +1 -1
@@ -0,0 +1,599 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.resolveResult = exports.resolveReturning = exports.resolveColumn = exports.resolveExpression = exports.partialQuery = void 0;
40
+ const U = __importStar(require("./utils"));
41
+ const decimal_js_1 = __importDefault(require("decimal.js"));
42
+ const never_catch_1 = require("never-catch");
43
+ const keywords_1 = require("./keywords");
44
+ const partialQuery = (text = '', params = []) => ({ text, params });
45
+ exports.partialQuery = partialQuery;
46
+ const resolveExpression = (expression, paramsStart, ignore = false) => {
47
+ if (expression === undefined) {
48
+ return ignore ? (0, never_catch_1.ok)(partialQuery()) : (0, never_catch_1.err)('undefined');
49
+ }
50
+ if (expression === null ||
51
+ typeof expression === 'boolean' ||
52
+ decimal_js_1.default.isDecimal(expression) ||
53
+ expression instanceof Date ||
54
+ typeof expression === 'number' ||
55
+ typeof expression === 'bigint') {
56
+ return (0, never_catch_1.ok)(partialQuery(U.stringify(expression, true)));
57
+ }
58
+ if (typeof expression === 'string') {
59
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}`, [U.stringify(expression, false)]));
60
+ }
61
+ if (!Array.isArray(expression)) {
62
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}::JSONB`, [
63
+ U.stringify(expression, false)
64
+ ]));
65
+ }
66
+ const tokens = [];
67
+ const operator = expression[0];
68
+ if (operator === keywords_1.OperatorCode.Value) {
69
+ if (expression[1] === undefined) {
70
+ return ignore
71
+ ? (0, never_catch_1.ok)(partialQuery())
72
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> undefined`);
73
+ }
74
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}`, [
75
+ U.stringify(expression[1], false)
76
+ ]));
77
+ }
78
+ if (operator === keywords_1.OperatorCode.IsNull ||
79
+ operator === keywords_1.OperatorCode.IsNotNull ||
80
+ operator === keywords_1.OperatorCode.IsTrue ||
81
+ operator === keywords_1.OperatorCode.IsFalse ||
82
+ operator === keywords_1.OperatorCode.Not) {
83
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
84
+ if (!expressionResult.ok) {
85
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${expressionResult.error}`);
86
+ }
87
+ if (expressionResult.value.text === '') {
88
+ return ignore
89
+ ? (0, never_catch_1.ok)(partialQuery())
90
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> neutral`);
91
+ }
92
+ switch (operator) {
93
+ case keywords_1.OperatorCode.IsNull:
94
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IS NULL`, expressionResult.value.params));
95
+ case keywords_1.OperatorCode.IsNotNull:
96
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IS NOT NULL`, expressionResult.value.params));
97
+ case keywords_1.OperatorCode.IsTrue:
98
+ return (0, never_catch_1.ok)(partialQuery(expressionResult.value.text, expressionResult.value.params));
99
+ case keywords_1.OperatorCode.IsFalse:
100
+ case keywords_1.OperatorCode.Not:
101
+ return (0, never_catch_1.ok)(partialQuery(`NOT ${expressionResult.value.text}`, expressionResult.value.params));
102
+ }
103
+ }
104
+ if (operator === keywords_1.OperatorCode.Sum ||
105
+ operator === keywords_1.OperatorCode.Subtract ||
106
+ operator === keywords_1.OperatorCode.Multiply ||
107
+ operator === keywords_1.OperatorCode.Divide ||
108
+ operator === keywords_1.OperatorCode.Power ||
109
+ operator === keywords_1.OperatorCode.Concat ||
110
+ operator === keywords_1.OperatorCode.And ||
111
+ operator === keywords_1.OperatorCode.Or) {
112
+ const params = [];
113
+ for (const item of expression[1]) {
114
+ const itemResult = resolveExpression(item, paramsStart, ignore);
115
+ if (!itemResult.ok) {
116
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${expression[1].indexOf(item)} -> ${itemResult.error}`);
117
+ }
118
+ if (itemResult.value.text === '') {
119
+ if (ignore) {
120
+ continue;
121
+ }
122
+ else {
123
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${expression[1].indexOf(item)} -> neutral`);
124
+ }
125
+ }
126
+ params.push(...itemResult.value.params);
127
+ paramsStart += itemResult.value.params.length;
128
+ tokens.push(itemResult.value.text);
129
+ }
130
+ switch (tokens.length) {
131
+ case 0:
132
+ return ignore
133
+ ? (0, never_catch_1.ok)(partialQuery())
134
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> no operands given`);
135
+ case 1:
136
+ return (0, never_catch_1.ok)(partialQuery(tokens[0], params));
137
+ default:
138
+ switch (operator) {
139
+ case keywords_1.OperatorCode.Sum:
140
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' + ')})`, params));
141
+ case keywords_1.OperatorCode.Subtract:
142
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' - ')})`, params));
143
+ case keywords_1.OperatorCode.Multiply:
144
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' * ')})`, params));
145
+ case keywords_1.OperatorCode.Divide:
146
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' / ')})`, params));
147
+ case keywords_1.OperatorCode.Concat:
148
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' || ')})`, params));
149
+ case keywords_1.OperatorCode.And:
150
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' AND ')})`, params));
151
+ case keywords_1.OperatorCode.Or:
152
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' OR ')})`, params));
153
+ }
154
+ if (operator === keywords_1.OperatorCode.Power) {
155
+ const tmp = tokens.pop();
156
+ tokens.splice(0, 0, 'a');
157
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(', POWER(').substring(3) +
158
+ ', ' +
159
+ tmp +
160
+ ')'.repeat(tokens.length - 1), params));
161
+ }
162
+ }
163
+ }
164
+ if (operator === keywords_1.OperatorCode.Function) {
165
+ const params = [];
166
+ for (const item of expression[2]) {
167
+ const itemResult = resolveExpression(item, paramsStart, ignore);
168
+ if (!itemResult.ok) {
169
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> parameters -> ${expression[2].indexOf(item)} -> ${itemResult.error}`);
170
+ }
171
+ if (itemResult.value.text === '') {
172
+ return ignore
173
+ ? (0, never_catch_1.ok)(partialQuery())
174
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> parameters -> ${expression[2].indexOf(item)} -> neutral`);
175
+ }
176
+ params.push(...itemResult.value.params);
177
+ paramsStart += itemResult.value.params.length;
178
+ tokens.push(itemResult.value.text);
179
+ }
180
+ return (0, never_catch_1.ok)(partialQuery(`${expression[1]}(${tokens.join(', ')})${expression[3]}`, params));
181
+ }
182
+ if (operator === keywords_1.OperatorCode.Constructor) {
183
+ const params = [];
184
+ for (const item of expression[2]) {
185
+ const itemResult = resolveExpression(item, paramsStart, ignore);
186
+ if (!itemResult.ok) {
187
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> parameters -> ${expression[2].indexOf(item)} -> ${itemResult.error}`);
188
+ }
189
+ if (itemResult.value.text === '') {
190
+ return ignore
191
+ ? (0, never_catch_1.ok)(partialQuery())
192
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> parameters -> ${expression[2].indexOf(item)} -> neutral`);
193
+ }
194
+ params.push(...itemResult.value.params);
195
+ paramsStart += itemResult.value.params.length;
196
+ tokens.push(itemResult.value.text);
197
+ }
198
+ return (0, never_catch_1.ok)(partialQuery(`${expression[1]}[${tokens.join(', ')}]${expression[3]}`, params));
199
+ }
200
+ if (operator === keywords_1.OperatorCode.SwitchCase) {
201
+ const params = [];
202
+ for (const item of expression[1]) {
203
+ const whenResult = resolveExpression(item.when, paramsStart, ignore);
204
+ if (!whenResult.ok) {
205
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> when -> ${whenResult.error}`);
206
+ }
207
+ if (whenResult.value.text === '') {
208
+ if (ignore) {
209
+ continue;
210
+ }
211
+ else {
212
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> when -> neutral`);
213
+ }
214
+ }
215
+ params.push(...whenResult.value.params);
216
+ paramsStart += whenResult.value.params.length;
217
+ const thenResult = resolveExpression(item.then, paramsStart, ignore);
218
+ if (!thenResult.ok) {
219
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> then -> ${thenResult.error}`);
220
+ }
221
+ if (thenResult.value.text === '') {
222
+ if (ignore) {
223
+ continue;
224
+ }
225
+ else {
226
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> then -> neutral`);
227
+ }
228
+ }
229
+ params.push(...thenResult.value.params);
230
+ paramsStart += thenResult.value.params.length;
231
+ if (tokens.length === 0) {
232
+ tokens.push('CASE');
233
+ }
234
+ tokens.push(`WHEN ${whenResult.value.text} THEN ${thenResult.value.text}`);
235
+ }
236
+ if (tokens.length === 0 && !ignore) {
237
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> empty`);
238
+ }
239
+ if (expression[2] === undefined && tokens.length !== 0) {
240
+ tokens.push('END');
241
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(' '), params));
242
+ }
243
+ const otherwiseResult = resolveExpression(expression[2], paramsStart, ignore);
244
+ if (!otherwiseResult.ok) {
245
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> ${otherwiseResult.error}`);
246
+ }
247
+ params.push(...otherwiseResult.value.params);
248
+ if (otherwiseResult.value.text === '') {
249
+ if (ignore) {
250
+ if (tokens.length === 0) {
251
+ return (0, never_catch_1.ok)(partialQuery());
252
+ }
253
+ else {
254
+ tokens.push('END');
255
+ }
256
+ }
257
+ else {
258
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> neutral`);
259
+ }
260
+ }
261
+ else {
262
+ if (tokens.length !== 0) {
263
+ tokens.push('ELSE', otherwiseResult.value.text, 'END');
264
+ }
265
+ else {
266
+ tokens.push(otherwiseResult.value.text);
267
+ }
268
+ }
269
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(' '), params));
270
+ }
271
+ if (operator === keywords_1.OperatorCode.Column) {
272
+ return (0, never_catch_1.ok)(partialQuery(`${expression[1]}`));
273
+ }
274
+ if (operator === keywords_1.OperatorCode.Raw) {
275
+ const rawExpression = typeof expression[1] === 'function'
276
+ ? expression[1](paramsStart)
277
+ : { expression: expression[1], params: [] };
278
+ return (0, never_catch_1.ok)(partialQuery(rawExpression.expression, rawExpression.params));
279
+ }
280
+ if (operator === keywords_1.OperatorCode.Ignore) {
281
+ const expressionResult = resolveExpression(expression[1], paramsStart, true);
282
+ if (!expressionResult.ok) {
283
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> expression -> ${expressionResult.error}`);
284
+ }
285
+ if (expressionResult.value.text !== '') {
286
+ return (0, never_catch_1.ok)(partialQuery(expressionResult.value.text, expressionResult.value.params));
287
+ }
288
+ const otherwiseResult = resolveExpression(expression[2], paramsStart, false);
289
+ if (!otherwiseResult.ok) {
290
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> ${otherwiseResult.error}`);
291
+ }
292
+ if (otherwiseResult.value.text === '') {
293
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> neutral`);
294
+ }
295
+ return (0, never_catch_1.ok)(partialQuery(otherwiseResult.value.text, otherwiseResult.value.params));
296
+ }
297
+ if (operator === keywords_1.OperatorCode.InListSubQuery ||
298
+ operator === keywords_1.OperatorCode.NotInListSubQuery) {
299
+ const params = [];
300
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
301
+ if (!expressionResult.ok) {
302
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expressionResult.error}`);
303
+ }
304
+ if (expressionResult.value.text === '') {
305
+ return ignore
306
+ ? (0, never_catch_1.ok)(partialQuery())
307
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
308
+ }
309
+ params.push(...expressionResult.value.params);
310
+ paramsStart += expressionResult.value.params.length;
311
+ const subQueryResult = expression[2].getData(Array(paramsStart - 1).fill(undefined));
312
+ if (!subQueryResult.ok) {
313
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${subQueryResult.error}`);
314
+ }
315
+ switch (operator) {
316
+ case keywords_1.OperatorCode.InListSubQuery:
317
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IN (${subQueryResult.value.sql})`, subQueryResult.value.params.slice(paramsStart - 1)));
318
+ case keywords_1.OperatorCode.NotInListSubQuery:
319
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} NOT IN (${subQueryResult.value.sql})`, subQueryResult.value.params.slice(paramsStart - 1)));
320
+ }
321
+ }
322
+ if (operator === keywords_1.OperatorCode.IsEqual ||
323
+ operator === keywords_1.OperatorCode.IsNotEqual ||
324
+ operator === keywords_1.OperatorCode.IsGreater ||
325
+ operator === keywords_1.OperatorCode.IsGreaterEqual ||
326
+ operator === keywords_1.OperatorCode.IsLess ||
327
+ operator === keywords_1.OperatorCode.IsLessEqual ||
328
+ operator === keywords_1.OperatorCode.Like ||
329
+ operator === keywords_1.OperatorCode.JsonExist ||
330
+ operator === keywords_1.OperatorCode.JsonRightExist ||
331
+ operator === keywords_1.OperatorCode.JsonLeftExist ||
332
+ operator === keywords_1.OperatorCode.JsonRemove ||
333
+ operator === keywords_1.OperatorCode.JsonIndex ||
334
+ operator === keywords_1.OperatorCode.JsonIndexText) {
335
+ const params = [];
336
+ const expression1Result = resolveExpression(expression[1], paramsStart, ignore);
337
+ if (!expression1Result.ok) {
338
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expression1Result.error}`);
339
+ }
340
+ if (expression1Result.value.text === '') {
341
+ return ignore
342
+ ? (0, never_catch_1.ok)(partialQuery())
343
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
344
+ }
345
+ params.push(...expression1Result.value.params);
346
+ paramsStart += expression1Result.value.params.length;
347
+ const expression2Result = resolveExpression(expression[2], paramsStart, ignore);
348
+ if (!expression2Result.ok) {
349
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${expression2Result.error}`);
350
+ }
351
+ if (expression2Result.value.text === '') {
352
+ return ignore
353
+ ? (0, never_catch_1.ok)(partialQuery())
354
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> neutral`);
355
+ }
356
+ params.push(...expression2Result.value.params);
357
+ switch (operator) {
358
+ case keywords_1.OperatorCode.IsEqual:
359
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} = ${expression2Result.value.text}`, params));
360
+ case keywords_1.OperatorCode.IsNotEqual:
361
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} <> ${expression2Result.value.text}`, params));
362
+ case keywords_1.OperatorCode.IsGreater:
363
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} > ${expression2Result.value.text}`, params));
364
+ case keywords_1.OperatorCode.IsGreaterEqual:
365
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} >= ${expression2Result.value.text}`, params));
366
+ case keywords_1.OperatorCode.IsLess:
367
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} < ${expression2Result.value.text}`, params));
368
+ case keywords_1.OperatorCode.IsLessEqual:
369
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} <= ${expression2Result.value.text}`, params));
370
+ case keywords_1.OperatorCode.Like:
371
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} LIKE ${expression2Result.value.text}`, params));
372
+ case keywords_1.OperatorCode.JsonExist:
373
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} ? ${expression2Result.value.text}`, params));
374
+ case keywords_1.OperatorCode.JsonRightExist:
375
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} @> ${expression2Result.value.text}`, params));
376
+ case keywords_1.OperatorCode.JsonLeftExist:
377
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} <@ ${expression2Result.value.text}`, params));
378
+ case keywords_1.OperatorCode.JsonRemove:
379
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} - ${expression2Result.value.text}`, params));
380
+ case keywords_1.OperatorCode.JsonIndex:
381
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} -> ${expression2Result.value.text}`, params));
382
+ case keywords_1.OperatorCode.JsonIndexText:
383
+ return (0, never_catch_1.ok)(partialQuery(expression[3] === undefined
384
+ ? `${expression1Result.value.text} ->> ${expression2Result.value.text}`
385
+ : `(${expression1Result.value.text} ->> ${expression2Result.value.text})${expression[3]}`, params));
386
+ }
387
+ }
388
+ if (operator === keywords_1.OperatorCode.InList ||
389
+ operator === keywords_1.OperatorCode.NotInList ||
390
+ operator === keywords_1.OperatorCode.LikeAll ||
391
+ operator === keywords_1.OperatorCode.LikeSome ||
392
+ operator === keywords_1.OperatorCode.JsonSomeExist ||
393
+ operator === keywords_1.OperatorCode.JsonAllExist ||
394
+ operator === keywords_1.OperatorCode.JsonRemoveAll ||
395
+ operator === keywords_1.OperatorCode.JsonIndexChain) {
396
+ const params = [];
397
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
398
+ if (!expressionResult.ok) {
399
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expressionResult.error}`);
400
+ }
401
+ if (expressionResult.value.text === '') {
402
+ return ignore
403
+ ? (0, never_catch_1.ok)(partialQuery())
404
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
405
+ }
406
+ params.push(...expressionResult.value.params);
407
+ paramsStart += expressionResult.value.params.length;
408
+ for (const item of expression[2]) {
409
+ const itemResult = resolveExpression(item, paramsStart, ignore);
410
+ if (!itemResult.ok) {
411
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${expression[2].indexOf(item)} -> ${itemResult.error}`);
412
+ }
413
+ if (itemResult.value.text === '') {
414
+ if (ignore) {
415
+ continue;
416
+ }
417
+ else {
418
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${expression[1].indexOf(item)} -> neutral`);
419
+ }
420
+ }
421
+ params.push(...itemResult.value.params);
422
+ paramsStart += itemResult.value.params.length;
423
+ tokens.push(itemResult.value.text);
424
+ }
425
+ switch (tokens.length) {
426
+ case 0:
427
+ return ignore
428
+ ? (0, never_catch_1.ok)(partialQuery())
429
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> empty`);
430
+ case 1:
431
+ switch (operator) {
432
+ case keywords_1.OperatorCode.InList:
433
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} = ${tokens[0]}`, params));
434
+ case keywords_1.OperatorCode.NotInList:
435
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} <> ${tokens[0]}`, params));
436
+ case keywords_1.OperatorCode.LikeAll:
437
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE ${tokens[0]}`, params));
438
+ case keywords_1.OperatorCode.LikeSome:
439
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE ${tokens[0]}`, params));
440
+ case keywords_1.OperatorCode.JsonSomeExist:
441
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ? ${tokens[0]}`, params));
442
+ case keywords_1.OperatorCode.JsonAllExist:
443
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ? ${tokens[0]}`, params));
444
+ case keywords_1.OperatorCode.JsonRemoveAll:
445
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} - ${tokens[0]}`, params));
446
+ case keywords_1.OperatorCode.JsonIndexChain:
447
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} -> ${tokens[0]}`, params));
448
+ }
449
+ default:
450
+ switch (operator) {
451
+ case keywords_1.OperatorCode.InList:
452
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IN (${tokens.join(', ')})`, params));
453
+ case keywords_1.OperatorCode.NotInList:
454
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} NOT IN (${tokens.join(', ')})`, params));
455
+ case keywords_1.OperatorCode.LikeAll:
456
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE ALL(ARRAY[${tokens.join(', ')}])`, params));
457
+ case keywords_1.OperatorCode.LikeSome:
458
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE SOME(ARRAY[${tokens.join(', ')}])`, params));
459
+ case keywords_1.OperatorCode.JsonSomeExist:
460
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ?| ARRAY[${tokens.join(', ')}]`, params));
461
+ case keywords_1.OperatorCode.JsonAllExist:
462
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ?& ARRAY[${tokens.join(', ')}]`, params));
463
+ case keywords_1.OperatorCode.JsonRemoveAll:
464
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} - ARRAY[${tokens.join(', ')}]`, params));
465
+ case keywords_1.OperatorCode.JsonIndexChain:
466
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ${tokens.map(token => `-> ${token}`).join(' ')}`, params));
467
+ }
468
+ }
469
+ }
470
+ if (operator === keywords_1.OperatorCode.Between) {
471
+ const params = [];
472
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
473
+ if (!expressionResult.ok) {
474
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expressionResult.error}`);
475
+ }
476
+ if (expressionResult.value.text === '') {
477
+ return ignore
478
+ ? (0, never_catch_1.ok)(partialQuery())
479
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
480
+ }
481
+ params.push(...expressionResult.value.params);
482
+ paramsStart += expressionResult.value.params.length;
483
+ const startExpressionResult = resolveExpression(expression[2], paramsStart, ignore);
484
+ if (!startExpressionResult.ok) {
485
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${startExpressionResult.error}`);
486
+ }
487
+ if (startExpressionResult.value.text === '') {
488
+ return ignore
489
+ ? (0, never_catch_1.ok)(partialQuery())
490
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> neutral`);
491
+ }
492
+ params.push(...startExpressionResult.value.params);
493
+ paramsStart += startExpressionResult.value.params.length;
494
+ const endExpressionResult = resolveExpression(expression[3], paramsStart, ignore);
495
+ if (!endExpressionResult.ok) {
496
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> third operand -> ${endExpressionResult.error}`);
497
+ }
498
+ if (endExpressionResult.value.text === '') {
499
+ return ignore
500
+ ? (0, never_catch_1.ok)(partialQuery())
501
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> third operand -> neutral`);
502
+ }
503
+ params.push(...endExpressionResult.value.params);
504
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} BETWEEN ${startExpressionResult.value.text} AND ${endExpressionResult.value.text}`, params));
505
+ }
506
+ if (operator === keywords_1.OperatorCode.SubQuery ||
507
+ operator === keywords_1.OperatorCode.SubQueryExist) {
508
+ const subQueryResult = expression[1].getData(Array(paramsStart - 1).fill(undefined));
509
+ if (!subQueryResult.ok) {
510
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${subQueryResult.error}`);
511
+ }
512
+ switch (operator) {
513
+ case keywords_1.OperatorCode.SubQuery:
514
+ return (0, never_catch_1.ok)(partialQuery(`(${subQueryResult.value.sql})`, subQueryResult.value.params.slice(paramsStart - 1)));
515
+ case keywords_1.OperatorCode.SubQueryExist:
516
+ return (0, never_catch_1.ok)(partialQuery(`EXISTS(${subQueryResult.value.sql})`, subQueryResult.value.params.slice(paramsStart - 1)));
517
+ }
518
+ }
519
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}::JSONB`, [
520
+ U.stringify(expression, false)
521
+ ]));
522
+ };
523
+ exports.resolveExpression = resolveExpression;
524
+ const resolveColumn = (table, column, full = true, alias) => {
525
+ let prefix;
526
+ if (full) {
527
+ if (alias !== undefined) {
528
+ prefix = `"${alias}".`;
529
+ }
530
+ else {
531
+ prefix = `"${table.schemaName}"."${table.tableName}".`;
532
+ }
533
+ }
534
+ else {
535
+ prefix = '';
536
+ }
537
+ return prefix + `"${table.columns[column].title ?? column}"`;
538
+ };
539
+ exports.resolveColumn = resolveColumn;
540
+ const resolveReturning = (getColumnTitleAndAlias, columns, paramsStart) => {
541
+ const tokens = [];
542
+ const params = [];
543
+ for (const column of columns) {
544
+ if (typeof column === 'object') {
545
+ const resolvedExpResult = resolveExpression(column.expression, paramsStart, false);
546
+ if (!resolvedExpResult.ok) {
547
+ return (0, never_catch_1.err)(`returning -> ${column.name} -> ${resolvedExpResult.error}`);
548
+ }
549
+ if (resolvedExpResult.value.text === '') {
550
+ return (0, never_catch_1.err)(`returning -> ${column.name} -> neutral`);
551
+ }
552
+ params.push(...resolvedExpResult.value.params);
553
+ paramsStart += resolvedExpResult.value.params.length;
554
+ tokens.push(`(${resolvedExpResult.value.text}) AS "${column.name}"`);
555
+ }
556
+ else {
557
+ const [title, alias] = getColumnTitleAndAlias(column);
558
+ if (title === undefined) {
559
+ if (alias !== undefined) {
560
+ tokens.push(`"${alias}".` +
561
+ `"${column.substring((alias + '_').length)}"` +
562
+ ` AS "${column}"`);
563
+ }
564
+ else {
565
+ tokens.push(`"${column}"`);
566
+ }
567
+ }
568
+ else {
569
+ tokens.push((alias !== undefined ? `"${alias}".` : '') +
570
+ `"${title}"` +
571
+ ` AS "${column}"`);
572
+ }
573
+ }
574
+ }
575
+ if (tokens.length === 0) {
576
+ return (0, never_catch_1.err)('returning -> empty');
577
+ }
578
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(', '), params));
579
+ };
580
+ exports.resolveReturning = resolveReturning;
581
+ const resolveResult = (rows, mode) => {
582
+ if (mode[0] === 'count') {
583
+ return rows.length === mode[1]
584
+ ? (0, never_catch_1.ok)(undefined)
585
+ : (0, never_catch_1.err)(false);
586
+ }
587
+ if (mode[0] === 'get' &&
588
+ rows.length !== (mode[1] === 'one' ? 1 : mode[1])) {
589
+ return (0, never_catch_1.err)(false);
590
+ }
591
+ if (mode[0] === 'get' && mode[1] === 'one') {
592
+ return (0, never_catch_1.ok)(rows[0]);
593
+ }
594
+ else {
595
+ return (0, never_catch_1.ok)(rows);
596
+ }
597
+ };
598
+ exports.resolveResult = resolveResult;
599
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/resolve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,2CAA6B;AAC7B,4DAAiC;AAEjC,6CAA8C;AAC9C,yCAAsD;AAItD,MAAM,YAAY,GAAG,CACjB,OAAe,EAAE,EACjB,SAAmB,EAAE,EACT,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAm/BlC,oCAAY;AAt+BhB,MAAM,iBAAiB,GAAG,CACtB,UAAmB,EACnB,WAAmB,EACnB,SAAkB,KAAK,EACK,EAAE;IAE9B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IACD,IACI,UAAU,KAAK,IAAI;QACnB,OAAO,UAAU,KAAK,SAAS;QAC/B,oBAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QAC7B,UAAU,YAAY,IAAI;QAC1B,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,UAAU,KAAK,QAAQ,EAChC,CAAC;QACC,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CACtE,CAAC;IACN,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,WAAW,EAAE,SAAS,EAAE;YACrC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;SACjC,CAAC,CACL,CAAC;IACN,CAAC;IAGD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAiB,CAAC;IAC/C,IAAI,QAAQ,KAAK,uBAAY,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,eAAe,CAC9D,CAAC;QACZ,CAAC;QACD,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE;YAC9B,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;SACpC,CAAC,CACL,CAAC;IACN,CAAC;IACD,IACI,QAAQ,KAAK,uBAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,uBAAY,CAAC,SAAS;QACnC,QAAQ,KAAK,uBAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,uBAAY,CAAC,OAAO;QACjC,QAAQ,KAAK,uBAAY,CAAC,GAAG,EAC/B,CAAC;QACC,MAAM,gBAAgB,GAAG,iBAAiB,CACtC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAC9E,CAAC;QACN,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAC5D,CAAC;QACZ,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,uBAAY,CAAC,MAAM;gBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,UAAU,EACxC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAChC,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,SAAS;gBACvB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,cAAc,EAC5C,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAChC,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,MAAM;gBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAC3B,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAChC,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,OAAO,CAAC;YAC1B,KAAK,uBAAY,CAAC,GAAG;gBACjB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAChC,CACJ,CAAC;QACV,CAAC;IACL,CAAC;IACD,IACI,QAAQ,KAAK,uBAAY,CAAC,GAAG;QAC7B,QAAQ,KAAK,uBAAY,CAAC,QAAQ;QAClC,QAAQ,KAAK,uBAAY,CAAC,QAAQ;QAClC,QAAQ,KAAK,uBAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,uBAAY,CAAC,KAAK;QAC/B,QAAQ,KAAK,uBAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,uBAAY,CAAC,GAAG;QAC7B,QAAQ,KAAK,uBAAY,CAAC,EAAE,EAC9B,CAAC;QACC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,KAAK,EAAE,CAC1G,CAAC;YACN,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAM,EAAE,CAAC;oBACT,SAAS;gBACb,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAC9F,CAAC;gBACN,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC;gBACF,OAAO,MAAM;oBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;oBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,uBAAuB,CACtE,CAAC;YACZ,KAAK,CAAC;gBACF,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/C;gBACI,QAAQ,QAAQ,EAAE,CAAC;oBACf,KAAK,uBAAY,CAAC,GAAG;wBACjB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAClD,CAAC;oBACN,KAAK,uBAAY,CAAC,QAAQ;wBACtB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAClD,CAAC;oBACN,KAAK,uBAAY,CAAC,QAAQ;wBACtB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAClD,CAAC;oBACN,KAAK,uBAAY,CAAC,MAAM;wBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAClD,CAAC;oBACN,KAAK,uBAAY,CAAC,MAAM;wBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CACnD,CAAC;oBACN,KAAK,uBAAY,CAAC,GAAG;wBACjB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CACpD,CAAC;oBACN,KAAK,uBAAY,CAAC,EAAE;wBAChB,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CACnD,CAAC;gBACV,CAAC;gBACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,KAAK,EAAE,CAAC;oBAClC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;oBACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;oBACzB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;wBAChC,IAAI;wBACJ,GAAG;wBACH,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EACjC,MAAM,CACT,CACJ,CAAC;gBACN,CAAC;QACT,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,KAAK,EAAE,CACxH,CAAC;YACN,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAC/B,OAAO,MAAM;oBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;oBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAC5G,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EACxD,MAAM,CACT,CACJ,CAAC;IACN,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,KAAK,EAAE,CACxH,CAAC;YACN,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAC/B,OAAO,MAAM;oBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;oBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAC5G,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EACxD,MAAM,CACT,CACJ,CAAC;IACN,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAChC,IAAI,CAAC,IAAI,EACT,WAAW,EACX,MAAM,CACT,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eACnF,UAAU,CAAC,KACf,EAAE,CACL,CAAC;YACN,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAM,EAAE,CAAC;oBACT,SAAS;gBACb,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAC/G,CAAC;gBACN,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAE9C,MAAM,UAAU,GAAG,iBAAiB,CAChC,IAAI,CAAC,IAAI,EACT,WAAW,EACX,MAAM,CACT,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eACnF,UAAU,CAAC,KACf,EAAE,CACL,CAAC;YACN,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAM,EAAE,CAAC;oBACT,SAAS;gBACb,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAC/G,CAAC;gBACN,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAE9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,IAAI,CACP,QAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAChE,CAAC;QACN,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CACnE,CAAC;QACN,CAAC;QAED,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,eAAe,GAAG,iBAAiB,CACrC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,eAAe,CAAC,KAAK,EAAE,CAC1F,CAAC;QACN,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,0BAA0B,CACzE,CAAC;YACN,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QACD,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,aAAa,GACf,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU;YAC/B,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpD,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,gBAAgB,GAAG,iBAAiB,CACtC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,IAAI,CACP,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,gBAAgB,CAAC,KAAK,EAAE,CAC5F,CAAC;QACN,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAC3B,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAChC,CACJ,CAAC;QACN,CAAC;QAED,MAAM,eAAe,GAAG,iBAAiB,CACrC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,KAAK,CACR,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,eAAe,CAAC,KAAK,EAAE,CAC1F,CAAC;QACN,CAAC;QACD,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,0BAA0B,CACzE,CAAC;QACN,CAAC;QACD,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,eAAe,CAAC,KAAK,CAAC,IAAI,EAC1B,eAAe,CAAC,KAAK,CAAC,MAAM,CAC/B,CACJ,CAAC;IACN,CAAC;IACD,IACI,QAAQ,KAAK,uBAAY,CAAC,cAAc;QACxC,QAAQ,KAAK,uBAAY,CAAC,iBAAiB,EAC7C,CAAC;QACC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,gBAAgB,GAAG,iBAAiB,CACtC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,wBAAwB,gBAAgB,CAAC,KAAK,EAAE,CAC/F,CAAC;QACN,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAC7E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,WAAW,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAEpD,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CACxC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACzC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,cAAc,CAAC,KAAK,EAAE,CAC5E,CAAC;QACN,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,uBAAY,CAAC,cAAc;gBAC5B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,QAAQ,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,EACjE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CACrD,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,iBAAiB;gBAC/B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,YAAY,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,EACrE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CACrD,CACJ,CAAC;QACV,CAAC;IACL,CAAC;IACD,IACI,QAAQ,KAAK,uBAAY,CAAC,OAAO;QACjC,QAAQ,KAAK,uBAAY,CAAC,UAAU;QACpC,QAAQ,KAAK,uBAAY,CAAC,SAAS;QACnC,QAAQ,KAAK,uBAAY,CAAC,cAAc;QACxC,QAAQ,KAAK,uBAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,uBAAY,CAAC,WAAW;QACrC,QAAQ,KAAK,uBAAY,CAAC,IAAI;QAC9B,QAAQ,KAAK,uBAAY,CAAC,SAAS;QACnC,QAAQ,KAAK,uBAAY,CAAC,cAAc;QACxC,QAAQ,KAAK,uBAAY,CAAC,aAAa;QACvC,QAAQ,KAAK,uBAAY,CAAC,UAAU;QACpC,QAAQ,KAAK,uBAAY,CAAC,SAAS;QACnC,QAAQ,KAAK,uBAAY,CAAC,aAAa,EACzC,CAAC;QACC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,iBAAiB,GAAG,iBAAiB,CACvC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;YACxB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,wBAAwB,iBAAiB,CAAC,KAAK,EAAE,CAChG,CAAC;QACN,CAAC;QACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAC7E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,WAAW,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAErD,MAAM,iBAAiB,GAAG,iBAAiB,CACvC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;YACxB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,yBAAyB,iBAAiB,CAAC,KAAK,EAAE,CACjG,CAAC;QACN,CAAC;QACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,+BAA+B,CAC9E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE/C,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,uBAAY,CAAC,OAAO;gBACrB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACnE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,UAAU;gBACxB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,SAAS;gBACvB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACnE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,cAAc;gBAC5B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,MAAM;gBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACnE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,WAAW;gBACzB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,IAAI;gBAClB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,SAAS,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACtE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,SAAS;gBACvB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACnE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,cAAc;gBAC5B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,aAAa;gBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,UAAU;gBACxB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACnE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,SAAS;gBACvB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,EACpE,MAAM,CACT,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,aAAa;gBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS;oBACvB,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,QAAQ,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE;oBACvE,CAAC,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,QAAQ,iBAAiB,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAC7F,MAAM,CACT,CACJ,CAAC;QACV,CAAC;IACL,CAAC;IACD,IACI,QAAQ,KAAK,uBAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,uBAAY,CAAC,SAAS;QACnC,QAAQ,KAAK,uBAAY,CAAC,OAAO;QACjC,QAAQ,KAAK,uBAAY,CAAC,QAAQ;QAClC,QAAQ,KAAK,uBAAY,CAAC,aAAa;QACvC,QAAQ,KAAK,uBAAY,CAAC,YAAY;QACtC,QAAQ,KAAK,uBAAY,CAAC,aAAa;QACvC,QAAQ,KAAK,uBAAY,CAAC,cAAc,EAC1C,CAAC;QACC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,gBAAgB,GAAG,iBAAiB,CACtC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,wBAAwB,gBAAgB,CAAC,KAAK,EAAE,CAC/F,CAAC;QACN,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAC7E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,WAAW,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAEpD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,yBAAyB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CACtF,IAAI,CACP,OAAO,UAAU,CAAC,KAAK,EAAE,CAC7B,CAAC;YACN,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAM,EAAE,CAAC;oBACT,SAAS;gBACb,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,yBAAyB,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAChH,CAAC;gBACN,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC;gBACF,OAAO,MAAM;oBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;oBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,6BAA6B,CAC5E,CAAC;YACZ,KAAK,CAAC;gBACF,QAAQ,QAAQ,EAAE,CAAC;oBACf,KAAK,uBAAY,CAAC,MAAM;wBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,EAC/C,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,SAAS;wBACvB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAChD,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,OAAO;wBACrB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EAClD,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,QAAQ;wBACtB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EAClD,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,aAAa;wBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,EAC/C,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,YAAY;wBAC1B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,EAC/C,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,aAAa;wBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,EAC/C,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,cAAc;wBAC5B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAChD,MAAM,CACT,CACJ,CAAC;gBACV,CAAC;YACL;gBACI,QAAQ,QAAQ,EAAE,CAAC;oBACf,KAAK,uBAAY,CAAC,MAAM;wBACpB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC1D,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,SAAS;wBACvB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC9D,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,OAAO;wBACrB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EACtE,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,QAAQ;wBACtB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EACvE,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,aAAa;wBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC/D,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,YAAY;wBAC1B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC/D,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,aAAa;wBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC9D,MAAM,CACT,CACJ,CAAC;oBACN,KAAK,uBAAY,CAAC,cAAc;wBAC5B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAChF,MAAM,CACT,CACJ,CAAC;gBACV,CAAC;QACT,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAY,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,gBAAgB,GAAG,iBAAiB,CACtC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,wBAAwB,gBAAgB,CAAC,KAAK,EAAE,CAC/F,CAAC;QACN,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAC7E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,WAAW,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAEpD,MAAM,qBAAqB,GAAG,iBAAiB,CAC3C,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,yBAAyB,qBAAqB,CAAC,KAAK,EAAE,CACrG,CAAC;QACN,CAAC;QACD,IAAI,qBAAqB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YAC1C,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,+BAA+B,CAC9E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,WAAW,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAEzD,MAAM,mBAAmB,GAAG,iBAAiB,CACzC,UAAU,CAAC,CAAC,CAAC,EACb,WAAW,EACX,MAAM,CACT,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;YAC1B,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,wBAAwB,mBAAmB,CAAC,KAAK,EAAE,CAClG,CAAC;QACN,CAAC;QACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACxC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAA,gBAAE,EAAC,YAAY,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAA,iBAAG,EACC,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAC7E,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,YAAY,qBAAqB,CAAC,KAAK,CAAC,IAAI,QAAQ,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,EAClH,MAAM,CACT,CACJ,CAAC;IACN,CAAC;IACD,IACI,QAAQ,KAAK,uBAAY,CAAC,QAAQ;QAClC,QAAQ,KAAK,uBAAY,CAAC,aAAa,EACzC,CAAC;QACC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CACxC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACzC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,IAAA,iBAAG,EACN,GAAG,qBAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,cAAc,CAAC,KAAK,EAAE,CAC5E,CAAC;QACN,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,uBAAY,CAAC,QAAQ;gBACtB,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,EAC/B,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CACrD,CACJ,CAAC;YACN,KAAK,uBAAY,CAAC,aAAa;gBAC3B,OAAO,IAAA,gBAAE,EACL,YAAY,CACR,UAAU,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,EACrC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CACrD,CACJ,CAAC;QACV,CAAC;IACL,CAAC;IAED,OAAO,IAAA,gBAAE,EACL,YAAY,CAAC,IAAI,WAAW,EAAE,SAAS,EAAE;QACrC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;KACjC,CAAC,CACL,CAAC;AACN,CAAC,CAAC;AA4GE,8CAAiB;AA1GrB,MAAM,aAAa,GAAG,CAClB,KAAY,EACZ,MAAc,EACd,OAAgB,IAAI,EACpB,KAAc,EAChB,EAAE;IACA,IAAI,MAAc,CAAC;IACnB,IAAI,IAAI,EAAE,CAAC;QACP,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,SAAS,IAAI,CAAC;QAC3D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,MAAM,GAAG,CAAC;AACjE,CAAC,CAAC;AA0FE,sCAAa;AAxFjB,MAAM,gBAAgB,GAAG,CACrB,sBAE2D,EAC3D,OAAmD,EACnD,WAAmB,EACS,EAAE;IAC9B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,iBAAiB,CACvC,MAAM,CAAC,UAAU,EACjB,WAAW,EACX,KAAK,CACR,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;gBACxB,OAAO,IAAA,iBAAG,EACN,gBAAgB,MAAM,CAAC,IAAI,OAAO,iBAAiB,CAAC,KAAK,EAAE,CAC9D,CAAC;YACN,CAAC;YACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBACtC,OAAO,IAAA,iBAAG,EAAC,gBAAgB,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,WAAW,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAErD,MAAM,CAAC,IAAI,CACP,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,IAAI,GAAG,CAC1D,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CACP,IAAI,KAAK,IAAI;wBACT,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG;wBAC7C,QAAQ,MAAM,GAAG,CACxB,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CACP,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,IAAI,KAAK,GAAG;oBACZ,QAAQ,MAAM,GAAG,CACxB,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAA,iBAAG,EAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAkCE,4CAAgB;AAhCpB,MAAM,aAAa,GAAG,CAKlB,IAAe,EACf,IAAO,EAC4B,EAAE;IACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,IAAA,gBAAE,EAAC,SAAiC,CAAC;YACvC,CAAC,CAAC,IAAA,iBAAG,EAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,IACI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;QACjB,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC;QACC,OAAO,IAAA,iBAAG,EAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACzC,OAAO,IAAA,gBAAE,EAAC,IAAI,CAAC,CAAC,CAAyB,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACJ,OAAO,IAAA,gBAAE,EAAC,IAA4B,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC,CAAC;AAQE,sCAAa"}