@balena/odata-to-abstract-sql 5.9.4 → 5.9.5
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.
- package/.versionbot/CHANGELOG.yml +26 -1
- package/CHANGELOG.md +13 -0
- package/out/odata-to-abstract-sql.d.ts +16 -14
- package/out/odata-to-abstract-sql.js +15 -21
- package/out/odata-to-abstract-sql.js.map +1 -1
- package/package.json +3 -3
- package/src/odata-to-abstract-sql.ts +130 -54
- package/test/chai-sql.js +2 -2
- package/test/filterby.js +4 -0
- package/test/{test.js → test.ts} +21 -2
- package/tsconfig.js.json +0 -1
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: Improve typings
|
|
3
|
+
hash: 78d4a48022ac0465c5d2c48db53b8ddd08e6e1bf
|
|
4
|
+
body: |
|
|
5
|
+
Update @balena/abstract-sql-compiler from 8.4.0 to 8.4.1
|
|
6
|
+
footer:
|
|
7
|
+
Change-type: patch
|
|
8
|
+
change-type: patch
|
|
9
|
+
author: Pagan Gazzard
|
|
10
|
+
nested:
|
|
11
|
+
- commits:
|
|
12
|
+
- subject: Add much finer grained typings for abstract-sql-optimizer
|
|
13
|
+
hash: 92bc7e93ca1b17401d902d66c68e090e50f70d1a
|
|
14
|
+
body: ""
|
|
15
|
+
footer:
|
|
16
|
+
Change-type: patch
|
|
17
|
+
change-type: patch
|
|
18
|
+
author: Pagan Gazzard
|
|
19
|
+
nested: []
|
|
20
|
+
version: abstract-sql-compiler-8.4.1
|
|
21
|
+
title: ""
|
|
22
|
+
date: 2023-04-25T10:03:26.380Z
|
|
23
|
+
version: 5.9.5
|
|
24
|
+
title: ""
|
|
25
|
+
date: 2023-04-25T12:13:20.220Z
|
|
1
26
|
- commits:
|
|
2
27
|
- subject: Update dependencies
|
|
3
28
|
hash: 5aa3c51cbbfc66cddedebd41dacba5eabbacf709
|
|
@@ -348,7 +373,7 @@
|
|
|
348
373
|
date: 2023-02-23T16:14:13.013Z
|
|
349
374
|
version: 5.9.4
|
|
350
375
|
title: ""
|
|
351
|
-
date: 2023-04-24T16:
|
|
376
|
+
date: 2023-04-24T16:26:44.367Z
|
|
352
377
|
- commits:
|
|
353
378
|
- subject: Fixes ODataBindings imported types
|
|
354
379
|
hash: 07224c40f6c11a849939dcca456d18677b159991
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file
|
|
|
4
4
|
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## 5.9.5 - 2023-04-25
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<details>
|
|
11
|
+
<summary> Improve typings [Pagan Gazzard] </summary>
|
|
12
|
+
|
|
13
|
+
> ### abstract-sql-compiler-8.4.1 - 2023-04-25
|
|
14
|
+
>
|
|
15
|
+
> * Add much finer grained typings for abstract-sql-optimizer [Pagan Gazzard]
|
|
16
|
+
>
|
|
17
|
+
|
|
18
|
+
</details>
|
|
19
|
+
|
|
7
20
|
## 5.9.4 - 2023-04-24
|
|
8
21
|
|
|
9
22
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as memoize from 'memoizee';
|
|
2
|
-
import { AbstractSqlQuery, AbstractSqlModel, AbstractSqlTable, DurationNode,
|
|
2
|
+
import { AbstractSqlQuery, AbstractSqlModel, AbstractSqlTable, DurationNode, SelectNode, FromNode, WhereNode, OrderByNode, LimitNode, OffsetNode, NumberTypeNodes, FieldsNode, ValuesNode, ReferencedFieldNode, AliasNode, BooleanTypeNodes, SelectQueryNode, BindNode, TableNode, Definition as ModernDefinition, ResourceNode, UnionQueryNode, FromTypeNodes, FieldNode, CountNode, AddNode, InsertQueryNode, DeleteQueryNode, UpdateQueryNode, DurationTypeNodes, SubtractNode, MultiplyNode, DivideNode, NullNode, TextTypeNodes, AnyTypeNodes, StrictDateTypeNodes } from '@balena/abstract-sql-compiler';
|
|
3
3
|
import type { ODataBinds, ODataQuery, SupportedMethod, ExpandPropertyPath, ResourceOptions, OrderByOption, OrderByPropertyPath, FilterOption, BindReference } from '@balena/odata-parser';
|
|
4
4
|
export type { ODataBinds, ODataQuery, SupportedMethod };
|
|
5
5
|
type RequiredAbstractSqlModelSubset = Pick<AbstractSqlModel, 'synonyms' | 'relationships' | 'tables'>;
|
|
@@ -41,7 +41,9 @@ declare class Query {
|
|
|
41
41
|
bindVarsLength: number;
|
|
42
42
|
}, bypassDefinition?: boolean, isModifyOperation?: boolean): void;
|
|
43
43
|
compile(queryType: 'SelectQuery'): SelectQueryNode;
|
|
44
|
-
compile(queryType:
|
|
44
|
+
compile(queryType: 'InsertQuery'): InsertQueryNode;
|
|
45
|
+
compile(queryType: 'UpdateQuery'): UpdateQueryNode;
|
|
46
|
+
compile(queryType: 'DeleteQuery'): DeleteQueryNode;
|
|
45
47
|
}
|
|
46
48
|
export declare const sqlNameToODataName: ((sqlName: string) => string) & memoize.Memoized<(sqlName: string) => string>;
|
|
47
49
|
export declare const odataNameToSqlName: ((odataName: string) => string) & memoize.Memoized<(odataName: string) => string>;
|
|
@@ -68,8 +70,8 @@ export declare class OData2AbstractSQL {
|
|
|
68
70
|
};
|
|
69
71
|
PathSegment(method: string, bodyKeys: string[], path: ODataQuery): Query;
|
|
70
72
|
PathKey(method: string, path: ODataQuery, resource: AliasedResource, bodyKeys: string[]): BooleanTypeNodes | void;
|
|
71
|
-
Bind(bind: BindReference, optional: true):
|
|
72
|
-
Bind(bind: BindReference
|
|
73
|
+
Bind(bind: BindReference, optional: true): BindNode | undefined;
|
|
74
|
+
Bind(bind: BindReference): BindNode;
|
|
73
75
|
SelectFilter(filter: FilterOption, query: Query, resource: Resource): void;
|
|
74
76
|
OrderBy(orderby: OrderByOption, query: Query, resource: Resource): void;
|
|
75
77
|
OrderByProperties(orderings: OrderByPropertyPath[]): Array<OrderByNode[1]>;
|
|
@@ -84,10 +86,10 @@ export declare class OData2AbstractSQL {
|
|
|
84
86
|
ReferencedField(resource: Resource, resourceField: string): ReferencedFieldNode;
|
|
85
87
|
BooleanMatch(match: any, optional: true): BooleanTypeNodes | undefined;
|
|
86
88
|
BooleanMatch(match: any): BooleanTypeNodes;
|
|
87
|
-
AliasedFunction(odataName: string, sqlName:
|
|
88
|
-
FunctionMatch(name:
|
|
89
|
-
Operand(match: any):
|
|
90
|
-
Math(match: any):
|
|
89
|
+
AliasedFunction<T extends string>(odataName: string, sqlName: T, match: any): [T, ...AnyTypeNodes[]];
|
|
90
|
+
FunctionMatch<T extends string>(name: T, match: any): [Capitalize<T>, ...AnyTypeNodes[]];
|
|
91
|
+
Operand(match: any): BindNode | NullNode | BooleanTypeNodes | NumberTypeNodes | TextTypeNodes | StrictDateTypeNodes | DurationTypeNodes;
|
|
92
|
+
Math(match: any): AddNode | SubtractNode | MultiplyNode | DivideNode | undefined;
|
|
91
93
|
Lambda(resourceName: string, lambda: any): BooleanTypeNodes;
|
|
92
94
|
ReferencedProperty(match: any): BooleanTypeNodes;
|
|
93
95
|
Method(prop: unknown & {
|
|
@@ -105,12 +107,12 @@ export declare class OData2AbstractSQL {
|
|
|
105
107
|
};
|
|
106
108
|
NumberMatch(match: any, optional: true): NumberTypeNodes | undefined;
|
|
107
109
|
NumberMatch(match: any): NumberTypeNodes;
|
|
108
|
-
NullMatch(match: any
|
|
109
|
-
TextMatch(match: any, optional: true):
|
|
110
|
-
TextMatch(match: any):
|
|
111
|
-
DateMatch(match: any, optional: true):
|
|
112
|
-
DateMatch(match: any):
|
|
113
|
-
DurationMatch(match: DurationNode[1]):
|
|
110
|
+
NullMatch(match: any): NullNode | undefined;
|
|
111
|
+
TextMatch(match: any, optional: true): TextTypeNodes | undefined;
|
|
112
|
+
TextMatch(match: any): TextTypeNodes;
|
|
113
|
+
DateMatch(match: any, optional: true): StrictDateTypeNodes | undefined;
|
|
114
|
+
DateMatch(match: any): StrictDateTypeNodes;
|
|
115
|
+
DurationMatch(match: DurationNode[1]): DurationTypeNodes | undefined;
|
|
114
116
|
Expands(resource: Resource, query: Query, expands: ExpandPropertyPath[]): void;
|
|
115
117
|
AddQueryOptions(resource: Resource, path: ResourceOptions, query: Query): void;
|
|
116
118
|
NavigateResources(resource: Resource, navigation: string): {
|
|
@@ -405,10 +405,7 @@ class OData2AbstractSQL {
|
|
|
405
405
|
whereQuery.where.push(pathKeyWhere);
|
|
406
406
|
}
|
|
407
407
|
subQuery.where.push(['Exists', whereQuery.compile('SelectQuery')]);
|
|
408
|
-
query.extras.push([
|
|
409
|
-
'Values',
|
|
410
|
-
subQuery.compile('SelectQuery'),
|
|
411
|
-
]);
|
|
408
|
+
query.extras.push(['Values', subQuery.compile('SelectQuery')]);
|
|
412
409
|
}
|
|
413
410
|
else {
|
|
414
411
|
query.extras.push(['Values', bindVars.map((b) => b[1])]);
|
|
@@ -716,11 +713,7 @@ class OData2AbstractSQL {
|
|
|
716
713
|
case 'le':
|
|
717
714
|
const op1 = this.Operand(rest[0]);
|
|
718
715
|
const op2 = this.Operand(rest[1]);
|
|
719
|
-
return [
|
|
720
|
-
comparison[type],
|
|
721
|
-
op1,
|
|
722
|
-
op2,
|
|
723
|
-
];
|
|
716
|
+
return [comparison[type], op1, op2];
|
|
724
717
|
case 'and':
|
|
725
718
|
case 'or':
|
|
726
719
|
return [
|
|
@@ -772,8 +765,8 @@ class OData2AbstractSQL {
|
|
|
772
765
|
}
|
|
773
766
|
}
|
|
774
767
|
AliasedFunction(odataName, sqlName, match) {
|
|
775
|
-
const
|
|
776
|
-
return [sqlName, ...
|
|
768
|
+
const [, ...args] = this.FunctionMatch(odataName, match);
|
|
769
|
+
return [sqlName, ...args];
|
|
777
770
|
}
|
|
778
771
|
FunctionMatch(name, match) {
|
|
779
772
|
if (!Array.isArray(match) || match[0] !== 'call') {
|
|
@@ -837,10 +830,7 @@ class OData2AbstractSQL {
|
|
|
837
830
|
}
|
|
838
831
|
else if (lambda.method === 'all') {
|
|
839
832
|
query.where.push(['Not', filter]);
|
|
840
|
-
return [
|
|
841
|
-
'Not',
|
|
842
|
-
['Exists', query.compile('SelectQuery')],
|
|
843
|
-
];
|
|
833
|
+
return ['Not', ['Exists', query.compile('SelectQuery')]];
|
|
844
834
|
}
|
|
845
835
|
else {
|
|
846
836
|
throw new SyntaxError(`Lambda method does not support ${lambda.method}`);
|
|
@@ -974,7 +964,7 @@ class OData2AbstractSQL {
|
|
|
974
964
|
throw new SyntaxError('Failed to match a Number entry');
|
|
975
965
|
}
|
|
976
966
|
}
|
|
977
|
-
NullMatch(match
|
|
967
|
+
NullMatch(match) {
|
|
978
968
|
if (match === null) {
|
|
979
969
|
return ['Null'];
|
|
980
970
|
}
|
|
@@ -987,15 +977,14 @@ class OData2AbstractSQL {
|
|
|
987
977
|
const { method } = match[1];
|
|
988
978
|
switch (method) {
|
|
989
979
|
case 'tolower':
|
|
980
|
+
return this.AliasedFunction('tolower', 'Lower', match);
|
|
990
981
|
case 'toupper':
|
|
991
|
-
|
|
982
|
+
return this.AliasedFunction('toupper', 'Upper', match);
|
|
992
983
|
case 'concat':
|
|
984
|
+
return this.AliasedFunction('concat', 'Concatenate', match);
|
|
985
|
+
case 'trim':
|
|
993
986
|
case 'replace':
|
|
994
987
|
return this.FunctionMatch(method, match);
|
|
995
|
-
case 'date':
|
|
996
|
-
return this.AliasedFunction('date', 'ToDate', match);
|
|
997
|
-
case 'time':
|
|
998
|
-
return this.AliasedFunction('time', 'ToTime', match);
|
|
999
988
|
case 'substring':
|
|
1000
989
|
const fn = this.FunctionMatch(method, match);
|
|
1001
990
|
fn[2] = ['Add', fn[2], ['Number', 1]];
|
|
@@ -1022,9 +1011,14 @@ class OData2AbstractSQL {
|
|
|
1022
1011
|
const { method } = match[1];
|
|
1023
1012
|
switch (method) {
|
|
1024
1013
|
case 'now':
|
|
1014
|
+
return this.AliasedFunction('now', 'CurrentTimestamp', match);
|
|
1025
1015
|
case 'maxdatetime':
|
|
1026
1016
|
case 'mindatetime':
|
|
1027
1017
|
return this.FunctionMatch(method, match);
|
|
1018
|
+
case 'date':
|
|
1019
|
+
return this.AliasedFunction('date', 'ToDate', match);
|
|
1020
|
+
case 'time':
|
|
1021
|
+
return this.AliasedFunction('time', 'ToTime', match);
|
|
1028
1022
|
default:
|
|
1029
1023
|
if (optional) {
|
|
1030
1024
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odata-to-abstract-sql.js","sourceRoot":"","sources":["../src/odata-to-abstract-sql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odata-to-abstract-sql.js","sourceRoot":"","sources":["../src/odata-to-abstract-sql.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAC5B,oCAAoC;AACpC,0CAA2C;AAC3C,yEAkEuC;AA0BvC,MAAM,yBAAyB,GAAG,CACjC,UAAsB,EACH,EAAE;IACrB,IAAI,aAAa,IAAI,UAAU,EAAE;QAChC,OAAO,UAAU,CAAC;KAClB;IACD,OAAO;QACN,KAAK,EAAE,UAAU,CAAC,UAAU;QAC5B,WAAW,EAAE,UAAU,CAAC,gBAAgB;KACxC,CAAC;AACH,CAAC,CAAC;AAsBF,MAAM,UAAU,GAAG;IAClB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,iBAAiB;CACZ,CAAC;AACX,MAAM,UAAU,GAAG;IAClB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,QAAQ;CACJ,CAAC;AAEX,MAAM,eAAe,GAAG,CACvB,QAAmD,EACnD,SAAiB,EACjB,UAAkB,EACjB,EAAE;IACH,MAAM,iBAAiB,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChD,iBAAiB,CAChB,iBAAiB,EACjB,iBAAiB,EACjB,CAAC,eAAoC,EAAE,EAAE;QACxC,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACrC,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;SAChC;IACF,CAAC,CACD,CAAC;IACF,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAW,EAAE;IACtD,IAAI,IAAI,IAAI,IAAI,EAAE;QACjB,OAAO,KAAK,CAAC;KACb;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACvB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC;SACZ;KACD;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,KAAK;IAAX;QACQ,WAAM,GAKT,EAAE,CAAC;QACA,SAAI,GAAuB,EAAE,CAAC;QAC9B,UAAK,GAAwB,EAAE,CAAC;QAChC,WAAM,GAET,EAAE,CAAC;IAuDR,CAAC;IArDA,KAAK,CAAC,UAAiB;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,YAAY,CACX,kBAAqC,EACrC,QAAyB,EACzB,OAGI,kBAAkB,EACtB,gBAA0B,EAC1B,iBAA2B;QAE3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,iBAAiB,CACpD,QAAQ,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,gBAAgB,EAChB,QAAQ,CAAC,UAAU,EACnB,iBAAiB,CACjB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAKD,OAAO,CACN,SAAwE;QAExE,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,SAAS,KAAK,aAAa,EAAE;YAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAe,CAAC,CAAC;SACrD;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAqB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;aAC5B;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,CAAC,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAI5B,CAAC;IACpB,CAAC;CACD;AAEY,QAAA,kBAAkB,GAAG,OAAO,CACxC,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAC3E,EAAE,SAAS,EAAE,IAAI,EAAE,CACnB,CAAC;AACW,QAAA,kBAAkB,GAAG,OAAO,CACxC,CAAC,SAAiB,EAAU,EAAE,CAC7B,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EACjD,EAAE,SAAS,EAAE,IAAI,EAAE,CACnB,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAGzB,KAAW,EACX,WAA6B,EAC7B,EAA4B,EACrB,EAAE;IACT,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC/B,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YAC7B,EAAE,CAAC,WAAgB,CAAC,CAAC;SACrB;aAAM;YACN,WAAW,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,EAAE;gBAC5C,iBAAiB,CAAC,KAAK,EAAE,oBAAwC,EAAE,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;SACH;KACD;AACF,CAAC,CAAC;AACK,MAAM,YAAY,GAAG,CAC3B,UAA4B,EAC5B,aAAyB,EACzB,MAAc,CAAC,EACR,EAAE;IACT,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAC7B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,OAAO;KACP;IACD,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;IAC5B,iBAAiB,CAChB,MAAM,EACN,UAAU,CAAC,WAA+B,EAC1C,CAAC,IAAc,EAAE,EAAE;QAClB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YAChC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;SACf;IACF,CAAC,CACD,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB;AAEK,MAAM,eAAe,GAAG,CAAC,SAE/B,EAA8B,EAAE;IAChC,OAAO,CACN,SAAS,IAAI,IAAI;QACjB,OAAO,SAAS,KAAK,QAAQ;QAC7B,MAAM,IAAI,SAAS;QACnB,CAAC,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAC1E,CAAC;AACH,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEF,MAAM,iBAAiB,GAAG,CAAC,QAAkB,EAAW,EAAE;IACzD,OAAO,CACN,QAAQ,CAAC,UAAU,IAAI,IAAI;QAC3B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAC/C,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAClB,YAAoB,EACpB,SAAiB,EACjB,IAAmB,EACnB,QAAkB,EAClB,aAAwC,EACvC,EAAE;IAEH,MAAM,gBAAgB,GAAG,YAAY,GAAG,GAAG,GAAG,SAAS,CAAC;IACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC1E,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChC,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;KACvC;AACF,CAAC,CAAC;AAEF,MAAa,iBAAiB;IAQ7B,YACS,WAA2C,EAC3C,UAAwC,EAAE,EAClD,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,EAAE;QAFxB,gBAAW,GAAX,WAAW,CAAgC;QAC3C,YAAO,GAAP,OAAO,CAAmC;QAT3C,kBAAa,GAA8B,EAAE,CAAC;QAC/C,kBAAa,GAAG,EAA2B,CAAC;QAC3C,oBAAe,GAAgC,EAAE,CAAC;QAEnD,mBAAc,GAAW,CAAC,CAAC;QAQjC,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YAC3C,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,IAAI,eAAe,KAAK,KAAK,IAAI,WAAW,IAAI,gBAAgB,EAAE;gBACjE,OAAO,KAAK,CAAC;aACb;YACD,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;iBACd,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,eAAe,KAAK,KAAK,IAAI,WAAW,IAAI,gBAAgB,EAAE;oBACjE,OAAO,IAAI,CAAC;iBACZ;gBACD,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC;gBAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;qBACxB,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACd,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;yBACd,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBACd,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;wBACvC,IAAI,UAAU,EAAE;4BACf,OAAO,UAAU,CAAC;yBAClB;wBACD,OAAO,KAAK,CAAC;oBACd,CAAC,CAAC;yBACD,IAAI,CAAC,GAAG,CAAC,CAAC;oBACZ,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,SAAS,EAAE;wBACd,OAAO,SAAS,CAAC;qBACjB;oBACD,OAAO,KAAK,CAAC;gBACd,CAAC,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;gBACjC,OAAO,UAAU,CAAC;YACnB,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,IAAI,WAAW,IAAI,gBAAgB,EAAE;gBACpC,OAAO,KAAK,CAAC;aACb;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACrD,OAAO,CACN,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,CACvE,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,CACJ,IAAgB,EAChB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,EACtB,OAAsC;QAMtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QAClC,IAAI;YACH,IAAI,OAAO,IAAI,IAAI,EAAE;gBACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;aACvB;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACrC,IAAI,IAAsB,CAAC;YAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;aACxB;iBAAM,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACjE,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvB;iBAAM;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACvD,QAAQ,MAAM,EAAE;oBACf,KAAK,KAAK;wBAIT,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;wBACnE,IAAI,GAAG;4BACN,aAAa;4BACb,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;4BAClC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;yBAC5B,CAAC;wBACF,MAAM;oBACP,KAAK,KAAK;wBACT,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBACpC,MAAM;oBACP,KAAK,OAAO,CAAC;oBACb,KAAK,OAAO;wBACX,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBACpC,MAAM;oBACP,KAAK,MAAM;wBACV,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBACpC,MAAM;oBACP,KAAK,QAAQ;wBACZ,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBACpC,MAAM;oBACP;wBACC,MAAM,IAAI,WAAW,CAAC,mBAAmB,MAAM,GAAG,CAAC,CAAC;iBACrD;aACD;YACD,OAAO;gBACN,IAAI;gBACJ,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC;SACF;gBAAS;YACT,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;SAC5B;IACF,CAAC;IACD,WAAW,CAAC,MAAc,EAAE,QAAkB,EAAE,IAAgB;;QAC/D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,MAAM,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;SAC9D;QACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAE1B,MAAM,gBAAgB,GAAG,MAAM,KAAK,KAAK,CAAC;QAC1C,KAAK,CAAC,YAAY,CACjB,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,gBAAgB,CAChB,CAAC;QAIF,MAAM,iBAAiB,GAAwB;YAC9C,iBAAiB;YACjB,QAAQ,CAAC,UAAU;YACnB,QAAQ,CAAC,OAAO;SAChB,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,IAAI,YAAY,KAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAA,EAAE;YAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC/D;QACD,IAAI,QAA+D,CAAC;QACpE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC5B,MAAM,IAAI,WAAW,CAAC,gDAAgD,CAAC,CAAC;aACxE;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CACxC,QAAQ,EACR,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACtB,CAAC;YACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACxB,MAAM,IAAI,WAAW,CAAC,4CAA4C,CAAC,CAAC;aACpE;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,YAA4C,CAAC;YACjD,IAAI,eAAoC,CAAC;YACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;gBAC/D,eAAe,GAAG,IAAI,CAAC,eAAe,CACrC,QAAQ,EACR,YAAY,CAAC,YAAY,CACzB,CAAC;gBACF,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;aACrE;iBAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;gBACtE,eAAe,GAAG,IAAI,CAAC,eAAe,CACrC,YAAY,EACZ,QAAQ,CAAC,YAAY,CACrB,CAAC;gBACF,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;aACjE;iBAAM;gBACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;aACzC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;gBAC1B,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACnC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;wBAChB,UAAU,CAAC,EAAE;wBACb,eAAe;wBACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;qBACxB,CAAC,CAAC;iBACH;qBAAM;oBACN,MAAM,IAAI,WAAW,CAAC,mCAAmC,CAAC,CAAC;iBAC3D;aACD;YACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAChC;aAAM,IACN,MAAM,KAAK,KAAK;YAChB,MAAM,KAAK,YAAY;YACvB,MAAM,KAAK,MAAM;YACjB,MAAM,KAAK,OAAO;YAClB,MAAM,KAAK,OAAO,EACjB;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7D,QAAQ,GAAG,IAAI,CAAC,QAAQ,CACvB,MAAM,EACN,QAAQ,EACR,QAAQ,CAAC,YAAY,EACrB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAC/B,CAAC;YACF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAIzD,IACC,CAAC,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC;gBACrE,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,YAAY,CAAC,EAC7C;gBAED,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;gBAC7B,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAC7B,CAAC,OAAO,EAAuB,EAAE,CAAC;oBACjC,iBAAiB;oBACjB,SAAS;oBACT,OAAO,CAAC,CAAC,CAAC;iBACV,CACD,CAAC;gBAEF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClB,OAAO;oBACP;wBACC,aAAa;wBACb;4BACC,QAAQ;4BACR,CAAC,MAAA,QAAQ,CAAC,YAAY,mCAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAC7C,CAAC,KAAK,EAAuB,EAAE;;gCAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;gCAC9B,MAAM,OAAO,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;gCACtD,MAAM,KAAK,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,mCAAI,CAAC,MAAM,CAAC,CAAC;gCACvC,IAAI,KAAK,KAAK,SAAS,EAAE;oCACxB,MAAM,IAAI,KAAK,CACd,uDAAuD,CACvD,CAAC;iCACF;gCACD,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC1D,CAAC,CACD;yBACD;qBACD;oBACD,SAAS;iBACT,CAAC,CAAC;gBAEH,MAAM,kBAAkB,GAAoB;oBAC3C,aAAa;oBACb,CAAC,QAAQ,EAAE,CAAC,CAAC,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;iBACjD,CAAC;gBAEF,MAAM,aAAa,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBACtC,IACC,aAAa,CAAC,UAAU,IAAI,IAAI;oBAChC,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,EAC3C;oBACD,aAAa,CAAC,UAAU,GAAG;wBAC1B,KAAK,EAAE,EAAE;wBACT,WAAW,EAAE,kBAAkB;qBAC/B,CAAC;iBACF;qBAAM;oBACN,MAAM,iBAAiB,GAA8B,EAAE,CAAC;oBACxD,MAAM,UAAU,GAAe,CAAC,aAAa,CAAC,UAAU;wBACvD,IAAI,CAAC,iBAAiB,CACrB,aAAa,CAAC,UAAU,EACxB,iBAAiB,EACjB,CAAC,CACD,CAAC,CAAC;oBACJ,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAC;oBAErC,IACC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,aAAa;wBAC3C,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,EACpC;wBACD,MAAM,IAAI,KAAK,CACd,6DAA6D,CAC7D,CAAC;qBACF;oBACD,MAAM,SAAS,GAAG,MAAA,aAAa,CAAC,UAAU,mCAAI,aAAa,CAAC,IAAI,CAAC;oBACjE,MAAM,oBAAoB,GAAG,CAAC,IAAS,EAAqB,EAAE,CAC7D,IAAA,mCAAW,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;oBAE5C,IAAI,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;wBACjD,UAAU,CAAC,WAAW,GAAG,kBAAkB,CAAC;qBAC5C;yBAAM;wBACN,IAAI,KAAK,GAAG,KAAK,CAAC;wBAClB,MAAM,+BAA+B,GAAG,CACvC,IAA6B,EACH,EAAE;4BAC5B,IAAI,IAAA,kCAAU,EAAC,IAAI,CAAC,EAAE;gCACrB,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;oCAClC,KAAK,GAAG,IAAI,CAAC;oCACb,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;iCAC1D;qCAAM,IAAI,IAAA,mCAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;oCAChC,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oCACvC,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE;wCACtC,KAAK,GAAG,IAAI,CAAC;wCACb,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;qCACtD;yCAAM,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;wCAC5C,OAAO;4CACN,MAAM;4CACN;gDACC,OAAO;gDACP,WAAW,CAAC,GAAG,CACd,+BAA+B,CACZ;gDACpB,KAAK;6CACL;yCACD,CAAC;qCACF;iCACD;6BACD;4BACD,OAAO,IAAI,CAAC;wBACb,CAAC,CAAC;wBACF,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAClD,+BAA+B,CACZ,CAAC;wBACrB,IAAI,CAAC,KAAK,EAAE;4BACX,MAAM,IAAI,KAAK,CACd,wDAAwD,CACxD,CAAC;yBACF;qBACD;iBACD;gBACD,MAAM,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;gBAC/B,IAAI,YAAY,EAAE;oBACjB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;iBACjD;gBACD,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAChE,UAAU,GAAG,KAAK,CAAC;gBACnB,IAAI,YAAY,IAAI,IAAI,EAAE;oBACzB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACpC;gBACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAEnE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aAC/D;iBAAM;gBACN,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD;SACD;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAChC;aAAM,IAAI,MAAM,KAAK,KAAK,EAAE;YAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC5C;QAED,IAAI,UAAU,IAAI,YAAY,IAAI,IAAI,EAAE;YACvC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;QAKD,IACC,CAAC,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC,MAAM,KAAK,KAAK;gBAChB,MAAM,KAAK,OAAO;gBAClB,MAAM,KAAK,OAAO;gBAClB,MAAM,KAAK,QAAQ,CAAC,EACpB;YAED,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACtC,IAAI,YAAY,EAAE;gBACjB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/C;YACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB,IAAI;gBACJ,iBAAiB;gBACjB,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;aAC/B,CAAC,CAAC;SACH;aAAM,IAAI,YAAY,IAAI,MAAM,KAAK,KAAK,EAAE;YAC5C,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5C;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,CACN,MAAc,EACd,IAAgB,EAChB,QAAyB,EACzB,QAAkB;QAElB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,IAAI,GAAG,IAAI,IAAI,EAAE;YAChB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,MAAM,EAAE;gBACrE,IAAI,IAAA,uBAAe,EAAC,GAAG,CAAC,EAAE;oBACzB,UAAU,CACT,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,OAAO,EAChB,GAAG,EACH,QAAQ,EACR,IAAI,CAAC,aAAa,CAClB,CAAC;iBACF;qBAAM;oBACN,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACpD,UAAU,CACT,QAAQ,CAAC,YAAY,EACrB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,IAAI,CAAC,aAAa,CAClB,CAAC;qBACF;iBACD;aACD;YACD,IAAI,IAAA,uBAAe,EAAC,GAAG,CAAC,EAAE;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,eAAe,GAAwB;oBAC5C,iBAAiB;oBACjB,QAAQ,CAAC,UAAU;oBACnB,QAAQ,CAAC,OAAO;iBAChB,CAAC;gBACF,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;aAC9C;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,0BAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAChC,CAAC;gBACF,IAAI,aAAa,IAAI,IAAI,EAAE;oBAC1B,MAAM,IAAI,WAAW,CAAC,2CAA2C,CAAC,CAAC;iBACnE;gBACD,OAAO,aAAa,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,IACC,CAAC,CACA,MAAM,CAAC,MAAM,KAAK,CAAC;gBACnB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CACnE;gBACD,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBAChC,OAAO,CACN,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;wBACzD,aAAa,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;wBAC5C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CACrD,CAAC;gBACH,CAAC,CAAC,EACD;gBACD,MAAM,IAAI,WAAW,CACpB,4DAA4D,CAC5D,CAAC;aACF;YAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAoB,EAAE;gBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAClE,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;aACpB;YACD,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;SAC7B;IACF,CAAC;IAGD,IAAI,CAAC,IAAmB,EAAE,QAAQ,GAAG,KAAK;QACzC,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,IAAI,QAAQ,EAAE;YACb,OAAO;SACP;QACD,MAAM,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;IACzD,CAAC;IACD,YAAY,CAAC,MAAoB,EAAE,KAAY,EAAE,QAAkB;QAClE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,OAAsB,EAAE,KAAY,EAAE,QAAkB;QAC/D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACxD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACjB,SAAS;YACT,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC;SAC7C,CAAC,CAAC;IACJ,CAAC;IACD,iBAAiB,CAAC,SAAgC;QACjD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAmB,CAAC;QAChE,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,QAAQ,CACP,MAAc,EACd,QAAkB,EAClB,YAAoB,EACpB,KAAwC;QAExC,OAAO,KAAK;aACV,GAAG,CAAC,CAAC,KAAK,EAA8C,EAAE;YAC1D,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,KAAK,CAAC;YAC/C,IACC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC5B,QAAQ,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,GAAG,SAAS,CAAC,EAChD;gBACD,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;aAC5D;YAED,IAAI,MAAM,KAAK,KAAK,EAAE;gBACrB,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;aACpC;QACF,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,QAAQ,CAAC,YAAoB,EAAE,cAAyB;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,aAAa,EAAE;YAClB,OAAO,aAAa,CAAC;SACrB;QACD,IAAI,QAA0B,CAAC;QAC/B,IAAI,cAAc,EAAE;YACnB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CACnD,cAAc,EACd,YAAY,CACZ,CAAC;YACF,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;aAAM;YACN,IAAI,OAAO,GAAG,IAAA,0BAAkB,EAAC,YAAY,CAAC,CAAC;YAC/C,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,QAAQ,EAAE;YACd,MAAM,IAAI,WAAW,CAAC,0BAA0B,CAAC,CAAC;SAClD;QACD,IAAI,UAAU,CAAC;QACf,IAAI,cAAc,EAAE;YACnB,IAAI,cAAc,CAAC;YACnB,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAGhE,MAAM,IAAI,GAAG,IAAA,0BAAkB,EAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,cAAc,GAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;aAC5C;iBAAM;gBACN,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC;aAC/B;YACD,UAAU,GAAG,cAAc,CAAC,UAAU,GAAG,GAAG,GAAG,cAAc,CAAC;SAC9D;aAAM;YACN,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;SAC3B;QACD,OAAO;YACN,GAAG,QAAQ;YACX,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;SACvC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,SAAiB,EAAE,QAAkB;QACrD,IAAI;YACH,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;SACZ;QAAC,OAAO,CAAC,EAAE;YACX,IAAI,CAAC,YAAY,WAAW,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACb;YACD,MAAM,CAAC,CAAC;SACR;IACF,CAAC;IACD,eAAe,CACd,QAAkB,EAClB,YAAY,GAAG,KAAK;;QAEpB,MAAM,oBAAoB,GACzB,YAAY,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY;YAC7C,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,kBAAkB,CAAC;QACvB,IAAI,QAAQ,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE;YAC3C,MAAM,UAAU,GAAG,MAAA,QAAQ,CAAC,UAAU,mCAAI,QAAQ,CAAC,IAAI,CAAC;YACxD,MAAM,gBAAgB,GAAiC,EAAE,CAAC;YAC1D,MAAM,MAAM,GACX,YAAY,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY;gBAC7C,CAAC,CAAC,QAAQ,CAAC,YAAY;gBACvB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpB,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE;gBACnC,gBAAgB,CAAC,IAAA,0BAAkB,EAAC,SAAS,CAAC,CAAC,GAAG;oBACjD,UAAU;oBACV,SAAS;iBACT,CAAC;aACF;YACD,QAAQ,CAAC,oBAAoB,CAAC,GAAG,gBAAgB,CAAC;SAClD;QACD,OAAO,QAAQ,CAAC,oBAAoB,CAAE,CAAC;IACxC,CAAC;IACD,mBAAmB,CAAC,QAA2B,EAAE,YAAoB;QACpE,IAAI,YAAY,CAAC;QACjB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YACjC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;SACrC;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;YAC1C,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;SAC3D;aAAM;YACN,YAAY,GAAG,QAAQ,CAAC;SACxB;QACD,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,EAAE;YACvB,MAAM,IAAI,WAAW,CACpB,uCAAuC,YAAY,GAAG,CACtD,CAAC;SACF;QACD,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC;aACtC,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,0BAAkB,CAAC;aACvB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACtD,KAAK,EAAE,CAAC;QACV,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE;YACnD,MAAM,IAAI,WAAW,CACpB,gDAAgD,YAAY,SAAS,gBAAgB,GAAG,CACxF,CAAC;SACF;QACD,OAAO,mBAAmB,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,aAAa,CAAC,IAAS,EAAE,KAAY;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;SACvD;IACF,CAAC;IACD,eAAe,CAAC,IAAS,EAAE,KAAY,EAAE,QAAkB;QAC1D,IAAI,eAEH,CAAC;QACF,IACC,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,OAAO;YACpB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAC9B;YACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrE,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAG/B,CAAC;gBACF,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC/C,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,OAAO,CACxC,CAAC;gBACF,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;SACH;aAAM;YACN,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAChD,QAAQ;gBACR,IAAA,0BAAkB,EAAC,KAAK,CAAC,SAAS,CAAC;gBACnC,KAAK,CAAC,QAAQ;aACd,CAAC,CAAC;SACH;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,cAAc,CAC9B,eAAe,EACf,KAAK,CAAC,MAAM,EACZ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,gBAAgB,CACf,QAAkB,EAClB,SAAiB,EACjB,QAA2B,EAC3B,QAAgB,SAAS;QAKzB,IAAI,QAAQ,EAAE;YACb,IACC,QAAQ,CAAC,UAAU,IAAI,IAAI;gBAC3B,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,IAAI,EACpC;gBACD,QAAQ,GAAG,eAAe,CACzB,QAAQ,EACR,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,UAAU,CACnB,CAAC;aACF;YACD,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;SAClC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YACjC,OAAO,eAAe,CAAC;SACvB;QACD,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,eAAe,CACd,QAAkB,EAClB,aAAqB;;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAC3B,OAAO;gBACN,iBAAiB;gBACjB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACzB,CAAC;SACF;aAAM;YACN,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CACnD,QAAQ,EACR,aAAa,CACb,CAAC;YACF,MAAM,UAAU,GAAG,MAAA,QAAQ,CAAC,UAAU,mCAAI,QAAQ,CAAC,IAAI,CAAC;YACxD,IACC,mBAAmB,CAAC,MAAM,GAAG,CAAC;gBAC9B,mBAAmB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,EAC1C;gBACD,MAAM,IAAI,WAAW,CACpB,gDAAgD;oBAC/C,aAAa;oBACb,GAAG,CACJ,CAAC;aACF;YACD,OAAO,CAAC,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/D;IACF,CAAC;IAGD,YAAY,CAAC,KAAU,EAAE,QAAQ,GAAG,KAAK;QACxC,QAAQ,KAAK,EAAE;YACd,KAAK,IAAI,CAAC;YACV,KAAK,KAAK;gBACT,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3B;gBACC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9B,QAAQ,IAAI,EAAE;wBACb,KAAK,IAAI,CAAC;wBACV,KAAK,IAAI,CAAC;wBACV,KAAK,IAAI,CAAC;wBACV,KAAK,IAAI,CAAC;wBACV,KAAK,IAAI,CAAC;wBACV,KAAK,IAAI;4BACR,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4BAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4BAClC,OAAO,CAAC,UAAU,CAAC,IAA+B,CAAC,EAAE,GAAG,EAAE,GAAG,CAMvC,CAAC;wBACxB,KAAK,KAAK,CAAC;wBACX,KAAK,IAAI;4BACR,OAAO;gCACN,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;gCAClB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;6BACpB,CAAC;wBACvB,KAAK,KAAK;4BACT,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4BACxC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBACtB,KAAK,IAAI;4BACR,OAAO;gCACN,IAAI;gCACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCACrB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;6BACjC,CAAC;wBACb,KAAK,MAAM;4BACV,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;4BAC5B,QAAQ,MAAM,EAAE;gCACf,KAAK,UAAU,CAAC;gCAChB,KAAK,UAAU,CAAC;gCAChB,KAAK,YAAY,CAAC;gCAClB,KAAK,MAAM,CAAC;gCACZ,KAAK,aAAa;oCACjB,OAAO,IAAI,CAAC,aAAa,CACxB,MAAM,EACN,KAAK,CACqB,CAAC;gCAC7B;oCACC,IAAI,QAAQ,EAAE;wCACb,OAAO;qCACP;oCACD,MAAM,IAAI,WAAW,CAAC,GAAG,MAAM,4BAA4B,CAAC,CAAC;6BAC9D;wBACF;4BACC,IAAI,QAAQ,EAAE;gCACb,OAAO;6BACP;4BACD,MAAM,IAAI,WAAW,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;qBAC3D;iBACD;qBAAM;oBACN,IAAI;wBACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;qBACtC;oBAAC,OAAO,CAAC,EAAE;wBACX,IAAI,QAAQ,EAAE;4BACb,OAAO;yBACP;wBACD,MAAM,CAAC,CAAC;qBACR;iBACD;SACF;IACF,CAAC;IACD,eAAe,CACd,SAAiB,EACjB,OAAU,EACV,KAAU;QAEV,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,aAAa,CACZ,IAAO,EACP,KAAU;QAEV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACjD,MAAM,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC;SAC7C;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,WAAW,CAAC,0BAA0B,CAAC,CAAC;SAClD;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CACN,KAAU;QASV,KAAK,MAAM,OAAO,IAAI;YACrB,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,IAAI;SACT,EAAE;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAWzB,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrB,IAAI,MAAM,EAAE;gBACX,OAAO,MAAM,CAAC;aACd;SACD;QACD,MAAM,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CACH,KAAU;QAEV,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;QAC9B,QAAQ,IAAI,EAAE;YACb,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACT,OAAO;oBACN,UAAU,CAAC,IAA+B,CAAC;oBAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACiC,CAAC;YACzD;gBACC,OAAO;SACR;IACF,CAAC;IACD,MAAM,CAAC,YAAoB,EAAE,MAAW;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI;YACH,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAClC,KAAK,EACL,IAAI,CAAC,eAAgB,EACrB,YAAY,CACZ,CAAC;YACF,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;YAEnD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;gBAC5B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAChD;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;gBAEnC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACzD;iBAAM;gBACN,MAAM,IAAI,WAAW,CACpB,kCAAkC,MAAM,CAAC,MAAM,EAAE,CACjD,CAAC;aACF;SACD;gBAAS;YAET,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;SACvC;IACF,CAAC;IACD,kBAAkB,CAAC,KAAU;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAExB,OAAO,IAAI,CAAC;SACZ;aAAM;YAMN,IAAI,eAAe,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvB,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAIF,IAAI,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,MAAK,WAAW,EAAE;oBAE9C,OAAO;wBACN,WAAW;wBACX,CAAC,cAAc,EAAE,cAAc,CAAC;wBAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;qBACnB,CAAC;iBAC7B;aACD;YAED,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACtD;IACF,CAAC;IAED,MAAM,CACL,IAEC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,MAAM,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YAC9B,MAAM,IAAI,WAAW,CACpB,wCAAwC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC;SACF;QAED,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACvC,MAAM,IAAI,WAAW,CACpB,wCAAwC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAC5E,CAAC;SACF;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YACzC,MAAM,IAAI,WAAW,CAAC,UAAU,MAAM,aAAa,CAAC,CAAC;SACrD;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,IAAS;;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf,MAAM,IAAI,WAAW,CAAC,0BAA0B,CAAC,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,YAAY,CAAC;YACjB,IAAI;gBACH,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aAC9D;YAAC,WAAM;aAEP;YACD,IAAI,YAAY,EAAE;gBACjB,IAAI;oBACH,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;oBACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACpC;wBAAS;oBACT,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;iBACvC;aACD;iBAAM;gBACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACpC;SACD;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACzB;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3C;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAClC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CACzC,KAAK,EACL,IAAI,CAAC,eAAgB,EACrB,IAAI,CAAC,IAAI,CACT,CAAC;YACF,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,EAAE;gBAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;gBAChE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;aACvC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACpC;aAAM;YACN,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAC5D;IACF,CAAC;IAGD,WAAW,CAAC,KAAU,EAAE,QAAQ,GAAG,KAAK;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SACzB;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACvD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,QAAQ,MAAM,EAAE;gBACf,KAAK,SAAS,CAAC;gBACf,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO,CAAC;gBACb,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,MAAM,CAAC;gBACZ,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ,CAAC;gBACd,KAAK,mBAAmB,CAAC;gBACzB,KAAK,oBAAoB,CAAC;gBAC1B,KAAK,cAAc,CAAC;gBACpB,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO,CAAC;gBACb,KAAK,SAAS;oBACb,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAoB,CAAC;gBAC7D,KAAK,QAAQ;oBACZ,OAAO,IAAI,CAAC,eAAe,CAC1B,QAAQ,EACR,iBAAiB,EACjB,KAAK,CACc,CAAC;gBACtB;oBACC,IAAI,QAAQ,EAAE;wBACb,OAAO;qBACP;oBACD,MAAM,IAAI,WAAW,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC;aAC7D;SACD;aAAM,IAAI,QAAQ,EAAE;YACpB,OAAO;SACP;aAAM;YACN,MAAM,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;SACxD;IACF,CAAC;IACD,SAAS,CAAC,KAAU;QACnB,IAAI,KAAK,KAAK,IAAI,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,CAAC;SAChB;IACF,CAAC;IAGD,SAAS,CAAC,KAAU,EAAE,QAAQ,GAAG,KAAK;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACvB;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACvD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,QAAQ,MAAM,EAAE;gBACf,KAAK,SAAS;oBACb,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAc,CAAC;gBACrE,KAAK,SAAS;oBACb,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAc,CAAC;gBACrE,KAAK,QAAQ;oBACZ,OAAO,IAAI,CAAC,eAAe,CAC1B,QAAQ,EACR,aAAa,EACb,KAAK,CACc,CAAC;gBACtB,KAAK,MAAM,CAAC;gBACZ,KAAK,SAAS;oBACb,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAA2B,CAAC;gBACpE,KAAK,WAAW;oBACf,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAkB,CAAC;oBAE9D,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtC,OAAO,EAAE,CAAC;gBACX;oBACC,IAAI,QAAQ,EAAE;wBACb,OAAO;qBACP;oBACD,MAAM,IAAI,WAAW,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC;aAC7D;SACD;aAAM,IAAI,QAAQ,EAAE;YACpB,OAAO;SACP;aAAM;YACN,MAAM,IAAI,WAAW,CAAC,8BAA8B,CAAC,CAAC;SACtD;IACF,CAAC;IAGD,SAAS,CAAC,KAAU,EAAE,QAAQ,GAAG,KAAK;QACrC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACvB;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACvD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,QAAQ,MAAM,EAAE;gBACf,KAAK,KAAK;oBACT,OAAO,IAAI,CAAC,eAAe,CAC1B,KAAK,EACL,kBAAkB,EAClB,KAAK,CACmB,CAAC;gBAC3B,KAAK,aAAa,CAAC;gBACnB,KAAK,aAAa;oBACjB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAwB,CAAC;gBACjE,KAAK,MAAM;oBACV,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAe,CAAC;gBACpE,KAAK,MAAM;oBACV,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAe,CAAC;gBACpE;oBACC,IAAI,QAAQ,EAAE;wBACb,OAAO;qBACP;oBACD,MAAM,IAAI,WAAW,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC;aAC3D;SACD;aAAM,IAAI,QAAQ,EAAE;YACpB,OAAO;SACP;aAAM;YACN,MAAM,IAAI,WAAW,CAAC,8BAA8B,CAAC,CAAC;SACtD;IACF,CAAC;IACD,aAAa,CAAC,KAAsB;QACnC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC/C,OAAO;SACP;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;aACvB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACnD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;aACf,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3C,OAAO;SACP;QACD,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CACN,QAAkB,EAClB,KAAY,EACZ,OAA6B;QAE7B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC3C;gBACC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;aACtC;YAED,MAAM,iBAAiB,GAAG,IAAI,KAAK,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACpB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;aACnE;YACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;gBAC7C,IAAI,CAAC,OAAO,CACX,cAAc,EACd,iBAAiB,EACjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CACjC,CAAC;aACF;YACD,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC,KAAK,EAAE;gBACjB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;aAC9C;iBAAM;gBACN,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;aAChE;YACD,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAEhE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YAEvC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;YAChC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;gBACvB,OAAO;gBACP,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI;aACX,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrB,OAAO;gBACP,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;gBACxC,cAAc,CAAC,UAAU;aACzB,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,OAAO;gBACP,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;gBAClC,MAAM,CAAC,IAAI;aACX,CAAC,CAAC;SACH;IACF,CAAC;IACD,eAAe,CACd,QAAkB,EAClB,IAAqB,EACrB,KAAY;QAEZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO;SACP;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SACzD;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aACrD;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;aACpC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;aACtC;SACD;IACF,CAAC;IACD,iBAAiB,CAChB,QAAkB,EAClB,UAAkB;;QAElB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAA,QAAQ,CAAC,UAAU,mCAAI,QAAQ,CAAC,IAAI,CAAC;QACxD,MAAM,gBAAgB,GAAG,MAAA,cAAc,CAAC,UAAU,mCAAI,cAAc,CAAC,IAAI,CAAC;QAC1E,OAAO;YACN,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE;gBACN,QAAQ;gBACR,CAAC,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChE;SACD,CAAC;IACH,CAAC;IACD,aAAa,CAAC,KAAY,EAAE,cAAwB,EAAE,KAAU;QAE/D,IAAI;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;aACnE;iBAAM;gBACN,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,IAAI,CAAC;gBACT,OAEC,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACjB,IAAI,CAAC,IAAI;oBACT,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EACjB;oBACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzB,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtD,IAAI,aAAa,EAAE;wBAClB,cAAc,GAAG,aAAa,CAAC;qBAC/B;yBAAM;wBACN,cAAc,GAAG,IAAI,CAAC,aAAa,CAClC,KAAK,EACL,cAAc,EACd,IAAI,CAAC,IAAI,CACT,CAAC;qBACF;iBACD;gBACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;oBAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrD;aACD;SACD;QAAC,WAAM;SAEP;IACF,CAAC;IACD,aAAa,CACZ,KAAY,EACZ,QAAkB,EAClB,aAAqB;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACnE,IACC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACf,CAAC,IAAI,EAAE,EAAE,CACR,CAAC,IAAA,mCAAW,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjE,CAAC,IAAA,mCAAW,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAClE,EACA;YACD,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO,UAAU,CAAC,QAAQ,CAAC;SAC3B;aAAM;YACN,MAAM,IAAI,WAAW,CACpB,iCAAiC,QAAQ,CAAC,IAAI,UAAU,aAAa,GAAG,CACxE,CAAC;SACF;IACF,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,EAA2B,CAAC;IAClD,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,OAAe;QACtB,OAAO,CAAC,CAAC,OAAO,CAAC;aACf,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,OAAO,EAAE;gBACZ,OAAO,OAAO,CAAC;aACf;YACD,OAAO,QAAQ,CAAC;QACjB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,iBAAiB,CAChB,QAAkB,EAClB,aAAyB,EACzB,cAAsB,EACtB,mBAA4B,KAAK,EACjC,UAAmB,EACnB,iBAA2B;QAE3B,MAAM,UAAU,GAAG,CAAC,QAAuB,EAAiB,EAAE;YAC7D,IAAI,UAAU,IAAI,IAAI,EAAE;gBACvB,OAAO,QAAQ,CAAC;aAChB;YACD,IAAI,IAAA,mCAAW,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBAExD,OAAO,QAAQ,CAAC;aAChB;iBAAM,IAAI,IAAA,mCAAW,EAAC,QAAQ,CAAC,EAAE;gBACjC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;oBAC/B,OAAO,QAAQ,CAAC;iBAChB;gBACD,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;aAC1C;iBAAM;gBACN,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;aACvC;QACF,CAAC,CAAC;QACF,IAAI,gBAAgB,KAAK,IAAI,EAAE;YAC9B,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACxB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CACxC,QAAQ,CAAC,UAAU,EACnB,aAAa,EACb,cAAc,CACd,CAAC;gBACF,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;aAC1C;YACD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;YACzE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,MAAM,kBAAkB,GAAG,IAAI,KAAK,EAAE,CAAC;gBACvC,kBAAkB,CAAC,MAAM,GAAG;oBAC3B,CAAC,OAAO,EAAE,GAAG,CAAC;oBACd,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,IAAI,CAAC,gBAAgB,CACpB,QAAQ,EACR,IAAA,0BAAkB,EAAC,KAAK,CAAC,SAAS,CAAC,EACnC,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,CACf,CACD;iBACD,CAAC;gBACF,kBAAkB,CAAC,YAAY,CAC9B,IAAI,EACJ;oBACC,UAAU,EAAE,QAAQ,CAAC,IAAI;oBACzB,GAAG,QAAQ;iBACX,EACD;oBACC,aAAa;oBACb,cAAc;iBACd,EACD,IAAI,CACJ,CAAC;gBAEF,OAAO,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAC7D;SACD;QACD,OAAO,UAAU,CAAC;YACjB,OAAO;YACP,iBAAiB,IAAI,QAAQ,CAAC,UAAU;gBACvC,CAAC,CAAC,QAAQ,CAAC,UAAU;gBACrB,CAAC,CAAC,QAAQ,CAAC,IAAI;SAChB,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB,CAChB,UAAsB,EACtB,aAAyB,EACzB,cAAsB;QAEtB,MAAM,mBAAmB,GAAG,CAAC,CAAC,SAAS,CACtC,yBAAyB,CAAC,UAAU,CAAC,CACrC,CAAC;QACF,IAAA,oBAAY,EAAC,mBAAmB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QACjE,iBAAiB,CAChB,UAAU,EACV,mBAAmB,CAAC,WAAW,EAC/B,CAAC,QAAsB,EAAE,EAAE;YAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACjE,IAAI,CAAC,kBAAkB,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;aAC9D;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CACtC,kBAAkB,EAClB,aAAa,EACb,cAAc,CACd,CAAC;YACD,QAA8B,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;QACzE,CAAC,CACD,CAAC;QACF,OAAO,mBAAmB,CAAC;IAC5B,CAAC;CACD;AAp5CD,8CAo5CC;AAED,MAAM,UAAU,GAAG,CAClB,YAAgC,EAChC,cAAwB,EACvB,EAAE;IACH,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE;QACvC,IAAI,IAAI,GAAQ,IAAI,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;oBACvB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC9B,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC;aACpB;YACD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;gBACZ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACf;iBAAM;gBACN,IAAI,CAAC,CAAC,CAAC,GAAG;oBACT,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC/B,CAAC;gBACF,OAAO;aACP;SACD;IACF,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,IAAS,EAAE,EAAE;QAChD,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC5C,YAAY,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SACjE;aAAM;YACN,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC9B,aAAa,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACH;IACF,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAChE,aAAa,CAAC,WAAW,EAAE,CAC3B,CAAC;IACF,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAGtD,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACxB,aAA6E,EAE7E,sBAAgC,EAAE,EACvB,EAAE;IACb,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;QACnC,IAAI,GAAG,KAAK,GAAG,EAAE;YAChB,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,gBAAgB,CACd,aAA0C,CAAC,GAAG,CAAC,EAChD,mBAAmB,CACnB,CAAC;SACF;KACD;IACD,OAAO,mBAAmB,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,WAA2C,EAAE,EAAE;IAC5E,MAAM,YAAY,GAAuB,EAAE,CAAC;IAE5C,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SAC/D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACxC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC;SAC5B,KAAK,EAAE,CAAC;IAGV,IAAI,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC;SAChC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC9C,IAAI,EAAE;SACN,KAAK,EAAE,CAAC;IACV,UAAU,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAGzC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC;SAC5B,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC5C,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClB,SAAS;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACjC,IAAI,CAAC,GAAG,CAAC,CACX;SACA,IAAI,EAAE;SACN,KAAK,EAAE,CAAC;IAEV,UAAU,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAGzC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC;SAC5B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClB,SAAS;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACjC,IAAI,CAAC,GAAG,CAAC,CACX;SACA,IAAI,EAAE;SACN,KAAK,EAAE,CAAC;IAEV,UAAU,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAEzC,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/odata-to-abstract-sql",
|
|
3
|
-
"version": "5.9.
|
|
3
|
+
"version": "5.9.5",
|
|
4
4
|
"description": "A consumer of the OData parser, written in OMeta",
|
|
5
5
|
"main": "out/odata-to-abstract-sql.js",
|
|
6
6
|
"scripts": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"author": "",
|
|
16
16
|
"license": "BSD",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@balena/abstract-sql-compiler": "^8.4.
|
|
18
|
+
"@balena/abstract-sql-compiler": "^8.4.1",
|
|
19
19
|
"@balena/odata-parser": "^2.4.6",
|
|
20
20
|
"@types/lodash": "^4.14.194",
|
|
21
21
|
"@types/memoizee": "^0.4.8",
|
|
@@ -49,6 +49,6 @@
|
|
|
49
49
|
"_": "test/*.js"
|
|
50
50
|
},
|
|
51
51
|
"versionist": {
|
|
52
|
-
"publishedAt": "2023-04-
|
|
52
|
+
"publishedAt": "2023-04-25T12:13:21.643Z"
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -36,6 +36,37 @@ import {
|
|
|
36
36
|
isTableNode,
|
|
37
37
|
FieldNode,
|
|
38
38
|
CountNode,
|
|
39
|
+
AddNode,
|
|
40
|
+
LowerNode,
|
|
41
|
+
UpperNode,
|
|
42
|
+
ConcatenateNode,
|
|
43
|
+
ReplaceNode,
|
|
44
|
+
TrimNode,
|
|
45
|
+
InsertQueryNode,
|
|
46
|
+
DeleteQueryNode,
|
|
47
|
+
UpdateQueryNode,
|
|
48
|
+
DurationTypeNodes,
|
|
49
|
+
CurrentTimestampNode,
|
|
50
|
+
SubtractNode,
|
|
51
|
+
MultiplyNode,
|
|
52
|
+
DivideNode,
|
|
53
|
+
NullNode,
|
|
54
|
+
TextTypeNodes,
|
|
55
|
+
AnyTypeNodes,
|
|
56
|
+
ToTimeNode,
|
|
57
|
+
ToDateNode,
|
|
58
|
+
SubstringNode,
|
|
59
|
+
StrictDateTypeNodes,
|
|
60
|
+
StrictBooleanTypeNodes,
|
|
61
|
+
AndNode,
|
|
62
|
+
OrNode,
|
|
63
|
+
GreaterThanNode,
|
|
64
|
+
GreaterThanOrEqualNode,
|
|
65
|
+
LessThanNode,
|
|
66
|
+
LessThanOrEqualNode,
|
|
67
|
+
IsNotDistinctFromNode,
|
|
68
|
+
IsDistinctFromNode,
|
|
69
|
+
UnknownTypeNodes,
|
|
39
70
|
} from '@balena/abstract-sql-compiler';
|
|
40
71
|
import type {
|
|
41
72
|
ODataBinds,
|
|
@@ -107,7 +138,7 @@ const operations = {
|
|
|
107
138
|
sub: 'Subtract',
|
|
108
139
|
mul: 'Multiply',
|
|
109
140
|
div: 'Divide',
|
|
110
|
-
};
|
|
141
|
+
} as const;
|
|
111
142
|
|
|
112
143
|
const rewriteComputed = (
|
|
113
144
|
computed: NonNullable<AbstractSqlField['computed']>,
|
|
@@ -179,8 +210,12 @@ class Query {
|
|
|
179
210
|
this.from.push(tableRef);
|
|
180
211
|
}
|
|
181
212
|
compile(queryType: 'SelectQuery'): SelectQueryNode;
|
|
182
|
-
compile(queryType:
|
|
183
|
-
compile(queryType:
|
|
213
|
+
compile(queryType: 'InsertQuery'): InsertQueryNode;
|
|
214
|
+
compile(queryType: 'UpdateQuery'): UpdateQueryNode;
|
|
215
|
+
compile(queryType: 'DeleteQuery'): DeleteQueryNode;
|
|
216
|
+
compile(
|
|
217
|
+
queryType: 'SelectQuery' | 'InsertQuery' | 'UpdateQuery' | 'DeleteQuery',
|
|
218
|
+
): SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode {
|
|
184
219
|
const compiled: AbstractSqlType[] = [];
|
|
185
220
|
let where = this.where;
|
|
186
221
|
if (queryType === 'SelectQuery') {
|
|
@@ -195,7 +230,11 @@ class Query {
|
|
|
195
230
|
}
|
|
196
231
|
compiled.push(['Where', ...where]);
|
|
197
232
|
}
|
|
198
|
-
return [queryType, ...compiled, ...this.extras] as
|
|
233
|
+
return [queryType, ...compiled, ...this.extras] as
|
|
234
|
+
| SelectQueryNode
|
|
235
|
+
| InsertQueryNode
|
|
236
|
+
| UpdateQueryNode
|
|
237
|
+
| DeleteQueryNode;
|
|
199
238
|
}
|
|
200
239
|
}
|
|
201
240
|
|
|
@@ -630,10 +669,7 @@ export class OData2AbstractSQL {
|
|
|
630
669
|
}
|
|
631
670
|
subQuery.where.push(['Exists', whereQuery.compile('SelectQuery')]);
|
|
632
671
|
|
|
633
|
-
query.extras.push([
|
|
634
|
-
'Values',
|
|
635
|
-
subQuery.compile('SelectQuery') as SelectQueryNode,
|
|
636
|
-
]);
|
|
672
|
+
query.extras.push(['Values', subQuery.compile('SelectQuery')]);
|
|
637
673
|
} else {
|
|
638
674
|
query.extras.push(['Values', bindVars.map((b) => b[1])]);
|
|
639
675
|
}
|
|
@@ -667,7 +703,7 @@ export class OData2AbstractSQL {
|
|
|
667
703
|
query.where.push([
|
|
668
704
|
'In',
|
|
669
705
|
referencedIdField,
|
|
670
|
-
subQuery.compile('SelectQuery')
|
|
706
|
+
subQuery.compile('SelectQuery'),
|
|
671
707
|
]);
|
|
672
708
|
} else if (hasQueryOpts && method === 'GET') {
|
|
673
709
|
this.AddQueryOptions(resource, path, query);
|
|
@@ -754,9 +790,9 @@ export class OData2AbstractSQL {
|
|
|
754
790
|
return ['And', ...namedKeys];
|
|
755
791
|
}
|
|
756
792
|
}
|
|
757
|
-
Bind(bind: BindReference, optional: true):
|
|
758
|
-
Bind(bind: BindReference
|
|
759
|
-
Bind(bind: BindReference, optional = false):
|
|
793
|
+
Bind(bind: BindReference, optional: true): BindNode | undefined;
|
|
794
|
+
Bind(bind: BindReference): BindNode;
|
|
795
|
+
Bind(bind: BindReference, optional = false): BindNode | undefined {
|
|
760
796
|
if (isBindReference(bind)) {
|
|
761
797
|
return ['Bind', bind.bind];
|
|
762
798
|
}
|
|
@@ -1027,17 +1063,19 @@ export class OData2AbstractSQL {
|
|
|
1027
1063
|
case 'le':
|
|
1028
1064
|
const op1 = this.Operand(rest[0]);
|
|
1029
1065
|
const op2 = this.Operand(rest[1]);
|
|
1030
|
-
return [
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1066
|
+
return [comparison[type as keyof typeof comparison], op1, op2] as
|
|
1067
|
+
| IsNotDistinctFromNode
|
|
1068
|
+
| IsDistinctFromNode
|
|
1069
|
+
| GreaterThanNode
|
|
1070
|
+
| GreaterThanOrEqualNode
|
|
1071
|
+
| LessThanNode
|
|
1072
|
+
| LessThanOrEqualNode;
|
|
1035
1073
|
case 'and':
|
|
1036
1074
|
case 'or':
|
|
1037
1075
|
return [
|
|
1038
1076
|
_.capitalize(type),
|
|
1039
1077
|
...rest.map((v) => this.BooleanMatch(v)),
|
|
1040
|
-
] as
|
|
1078
|
+
] as AndNode | OrNode;
|
|
1041
1079
|
case 'not':
|
|
1042
1080
|
const bool = this.BooleanMatch(rest[0]);
|
|
1043
1081
|
return ['Not', bool];
|
|
@@ -1055,7 +1093,10 @@ export class OData2AbstractSQL {
|
|
|
1055
1093
|
case 'startswith':
|
|
1056
1094
|
case 'isof':
|
|
1057
1095
|
case 'substringof':
|
|
1058
|
-
return this.FunctionMatch(
|
|
1096
|
+
return this.FunctionMatch(
|
|
1097
|
+
method,
|
|
1098
|
+
match,
|
|
1099
|
+
) as StrictBooleanTypeNodes;
|
|
1059
1100
|
default:
|
|
1060
1101
|
if (optional) {
|
|
1061
1102
|
return;
|
|
@@ -1080,15 +1121,18 @@ export class OData2AbstractSQL {
|
|
|
1080
1121
|
}
|
|
1081
1122
|
}
|
|
1082
1123
|
}
|
|
1083
|
-
AliasedFunction(
|
|
1124
|
+
AliasedFunction<T extends string>(
|
|
1084
1125
|
odataName: string,
|
|
1085
|
-
sqlName:
|
|
1126
|
+
sqlName: T,
|
|
1086
1127
|
match: any,
|
|
1087
|
-
):
|
|
1088
|
-
const
|
|
1089
|
-
return [sqlName, ...
|
|
1128
|
+
): [T, ...AnyTypeNodes[]] {
|
|
1129
|
+
const [, ...args] = this.FunctionMatch(odataName, match);
|
|
1130
|
+
return [sqlName, ...args];
|
|
1090
1131
|
}
|
|
1091
|
-
FunctionMatch
|
|
1132
|
+
FunctionMatch<T extends string>(
|
|
1133
|
+
name: T,
|
|
1134
|
+
match: any,
|
|
1135
|
+
): [Capitalize<T>, ...AnyTypeNodes[]] {
|
|
1092
1136
|
if (!Array.isArray(match) || match[0] !== 'call') {
|
|
1093
1137
|
throw new SyntaxError('Not a function call');
|
|
1094
1138
|
}
|
|
@@ -1097,9 +1141,18 @@ export class OData2AbstractSQL {
|
|
|
1097
1141
|
throw new SyntaxError('Unexpected function name');
|
|
1098
1142
|
}
|
|
1099
1143
|
const args = properties.args.map((v: any) => this.Operand(v));
|
|
1100
|
-
return [_.capitalize(name)
|
|
1144
|
+
return [_.capitalize(name) as Capitalize<T>, ...args];
|
|
1101
1145
|
}
|
|
1102
|
-
Operand(
|
|
1146
|
+
Operand(
|
|
1147
|
+
match: any,
|
|
1148
|
+
):
|
|
1149
|
+
| BindNode
|
|
1150
|
+
| NullNode
|
|
1151
|
+
| BooleanTypeNodes
|
|
1152
|
+
| NumberTypeNodes
|
|
1153
|
+
| TextTypeNodes
|
|
1154
|
+
| StrictDateTypeNodes
|
|
1155
|
+
| DurationTypeNodes {
|
|
1103
1156
|
for (const matcher of [
|
|
1104
1157
|
this.Bind,
|
|
1105
1158
|
this.NullMatch,
|
|
@@ -1110,14 +1163,27 @@ export class OData2AbstractSQL {
|
|
|
1110
1163
|
this.DurationMatch,
|
|
1111
1164
|
this.Math,
|
|
1112
1165
|
]) {
|
|
1113
|
-
const result = matcher.call
|
|
1166
|
+
const result = matcher.call<
|
|
1167
|
+
OData2AbstractSQL,
|
|
1168
|
+
[matcher: any, optional: true],
|
|
1169
|
+
| BindNode
|
|
1170
|
+
| NullNode
|
|
1171
|
+
| BooleanTypeNodes
|
|
1172
|
+
| NumberTypeNodes
|
|
1173
|
+
| TextTypeNodes
|
|
1174
|
+
| StrictDateTypeNodes
|
|
1175
|
+
| DurationTypeNodes
|
|
1176
|
+
| undefined
|
|
1177
|
+
>(this, match, true);
|
|
1114
1178
|
if (result) {
|
|
1115
1179
|
return result;
|
|
1116
1180
|
}
|
|
1117
1181
|
}
|
|
1118
1182
|
throw new SyntaxError('Could not match operand');
|
|
1119
1183
|
}
|
|
1120
|
-
Math(
|
|
1184
|
+
Math(
|
|
1185
|
+
match: any,
|
|
1186
|
+
): AddNode | SubtractNode | MultiplyNode | DivideNode | undefined {
|
|
1121
1187
|
const [type, ...rest] = match;
|
|
1122
1188
|
switch (type) {
|
|
1123
1189
|
case 'add':
|
|
@@ -1128,7 +1194,7 @@ export class OData2AbstractSQL {
|
|
|
1128
1194
|
operations[type as keyof typeof operations],
|
|
1129
1195
|
this.Operand(rest[0]),
|
|
1130
1196
|
this.Operand(rest[1]),
|
|
1131
|
-
];
|
|
1197
|
+
] as AddNode | SubtractNode | MultiplyNode | DivideNode;
|
|
1132
1198
|
default:
|
|
1133
1199
|
return;
|
|
1134
1200
|
}
|
|
@@ -1151,14 +1217,11 @@ export class OData2AbstractSQL {
|
|
|
1151
1217
|
const filter = this.BooleanMatch(lambda.expression);
|
|
1152
1218
|
if (lambda.method === 'any') {
|
|
1153
1219
|
query.where.push(filter);
|
|
1154
|
-
return ['Exists', query.compile('SelectQuery')
|
|
1220
|
+
return ['Exists', query.compile('SelectQuery')];
|
|
1155
1221
|
} else if (lambda.method === 'all') {
|
|
1156
1222
|
// We use `NOT EXISTS NOT ($filter)` to implement all, but we want to leave existing where components intact, as they are for joins
|
|
1157
1223
|
query.where.push(['Not', filter]);
|
|
1158
|
-
return [
|
|
1159
|
-
'Not',
|
|
1160
|
-
['Exists', query.compile('SelectQuery') as SelectQueryNode],
|
|
1161
|
-
];
|
|
1224
|
+
return ['Not', ['Exists', query.compile('SelectQuery')]];
|
|
1162
1225
|
} else {
|
|
1163
1226
|
throw new SyntaxError(
|
|
1164
1227
|
`Lambda method does not support ${lambda.method}`,
|
|
@@ -1191,11 +1254,12 @@ export class OData2AbstractSQL {
|
|
|
1191
1254
|
// when date time field from schema => hardcoded DateTrunc
|
|
1192
1255
|
// following abstractsql to sql compiler have to check engine to translate to proper eninge based sql query
|
|
1193
1256
|
if (fieldDefinition?.dataType === 'Date Time') {
|
|
1257
|
+
// TODO: If we know we're specifically looking for a boolean property then we should reject properties we know are not booleans, until then the case makes it rely on the odata query being correct
|
|
1194
1258
|
return [
|
|
1195
1259
|
'DateTrunc',
|
|
1196
1260
|
['EmbeddedText', 'milliseconds'],
|
|
1197
1261
|
this.ReferencedField(prop.resource, prop.name),
|
|
1198
|
-
];
|
|
1262
|
+
] as any as UnknownTypeNodes;
|
|
1199
1263
|
}
|
|
1200
1264
|
}
|
|
1201
1265
|
|
|
@@ -1318,31 +1382,34 @@ export class OData2AbstractSQL {
|
|
|
1318
1382
|
throw new SyntaxError('Failed to match a Number entry');
|
|
1319
1383
|
}
|
|
1320
1384
|
}
|
|
1321
|
-
NullMatch(match: any
|
|
1385
|
+
NullMatch(match: any): NullNode | undefined {
|
|
1322
1386
|
if (match === null) {
|
|
1323
1387
|
return ['Null'];
|
|
1324
1388
|
}
|
|
1325
1389
|
}
|
|
1326
|
-
TextMatch(match: any, optional: true):
|
|
1327
|
-
TextMatch(match: any):
|
|
1328
|
-
TextMatch(match: any, optional = false):
|
|
1390
|
+
TextMatch(match: any, optional: true): TextTypeNodes | undefined;
|
|
1391
|
+
TextMatch(match: any): TextTypeNodes;
|
|
1392
|
+
TextMatch(match: any, optional = false): TextTypeNodes | undefined {
|
|
1329
1393
|
if (typeof match === 'string') {
|
|
1330
1394
|
return ['Text', match];
|
|
1331
1395
|
} else if (Array.isArray(match) && match[0] === 'call') {
|
|
1332
1396
|
const { method } = match[1];
|
|
1333
1397
|
switch (method) {
|
|
1334
1398
|
case 'tolower':
|
|
1399
|
+
return this.AliasedFunction('tolower', 'Lower', match) as LowerNode;
|
|
1335
1400
|
case 'toupper':
|
|
1336
|
-
|
|
1401
|
+
return this.AliasedFunction('toupper', 'Upper', match) as UpperNode;
|
|
1337
1402
|
case 'concat':
|
|
1403
|
+
return this.AliasedFunction(
|
|
1404
|
+
'concat',
|
|
1405
|
+
'Concatenate',
|
|
1406
|
+
match,
|
|
1407
|
+
) as ConcatenateNode;
|
|
1408
|
+
case 'trim':
|
|
1338
1409
|
case 'replace':
|
|
1339
|
-
return this.FunctionMatch(method, match);
|
|
1340
|
-
case 'date':
|
|
1341
|
-
return this.AliasedFunction('date', 'ToDate', match);
|
|
1342
|
-
case 'time':
|
|
1343
|
-
return this.AliasedFunction('time', 'ToTime', match);
|
|
1410
|
+
return this.FunctionMatch(method, match) as TrimNode | ReplaceNode;
|
|
1344
1411
|
case 'substring':
|
|
1345
|
-
const fn = this.FunctionMatch(method, match);
|
|
1412
|
+
const fn = this.FunctionMatch(method, match) as SubstringNode;
|
|
1346
1413
|
// First parameter needs to be increased by 1.
|
|
1347
1414
|
fn[2] = ['Add', fn[2], ['Number', 1]];
|
|
1348
1415
|
return fn;
|
|
@@ -1358,18 +1425,27 @@ export class OData2AbstractSQL {
|
|
|
1358
1425
|
throw new SyntaxError('Failed to match a Text entry');
|
|
1359
1426
|
}
|
|
1360
1427
|
}
|
|
1361
|
-
DateMatch(match: any, optional: true):
|
|
1362
|
-
DateMatch(match: any):
|
|
1363
|
-
DateMatch(match: any, optional = false):
|
|
1428
|
+
DateMatch(match: any, optional: true): StrictDateTypeNodes | undefined;
|
|
1429
|
+
DateMatch(match: any): StrictDateTypeNodes;
|
|
1430
|
+
DateMatch(match: any, optional = false): StrictDateTypeNodes | undefined {
|
|
1364
1431
|
if (_.isDate(match)) {
|
|
1365
1432
|
return ['Date', match];
|
|
1366
1433
|
} else if (Array.isArray(match) && match[0] === 'call') {
|
|
1367
1434
|
const { method } = match[1];
|
|
1368
1435
|
switch (method) {
|
|
1369
1436
|
case 'now':
|
|
1437
|
+
return this.AliasedFunction(
|
|
1438
|
+
'now',
|
|
1439
|
+
'CurrentTimestamp',
|
|
1440
|
+
match,
|
|
1441
|
+
) as CurrentTimestampNode;
|
|
1370
1442
|
case 'maxdatetime':
|
|
1371
1443
|
case 'mindatetime':
|
|
1372
|
-
return this.FunctionMatch(method, match);
|
|
1444
|
+
return this.FunctionMatch(method, match) as StrictDateTypeNodes;
|
|
1445
|
+
case 'date':
|
|
1446
|
+
return this.AliasedFunction('date', 'ToDate', match) as ToDateNode;
|
|
1447
|
+
case 'time':
|
|
1448
|
+
return this.AliasedFunction('time', 'ToTime', match) as ToTimeNode;
|
|
1373
1449
|
default:
|
|
1374
1450
|
if (optional) {
|
|
1375
1451
|
return;
|
|
@@ -1382,7 +1458,7 @@ export class OData2AbstractSQL {
|
|
|
1382
1458
|
throw new SyntaxError('Failed to match a Date entry');
|
|
1383
1459
|
}
|
|
1384
1460
|
}
|
|
1385
|
-
DurationMatch(match: DurationNode[1]):
|
|
1461
|
+
DurationMatch(match: DurationNode[1]): DurationTypeNodes | undefined {
|
|
1386
1462
|
if (match == null || typeof match !== 'object') {
|
|
1387
1463
|
return;
|
|
1388
1464
|
}
|
|
@@ -1439,7 +1515,7 @@ export class OData2AbstractSQL {
|
|
|
1439
1515
|
]);
|
|
1440
1516
|
expandQuery.from.push([
|
|
1441
1517
|
'Alias',
|
|
1442
|
-
nestedExpandQuery.compile('SelectQuery')
|
|
1518
|
+
nestedExpandQuery.compile('SelectQuery'),
|
|
1443
1519
|
expandResource.tableAlias,
|
|
1444
1520
|
]);
|
|
1445
1521
|
query.select.push([
|
|
@@ -1655,7 +1731,7 @@ export class OData2AbstractSQL {
|
|
|
1655
1731
|
rewriteBinds(rewrittenDefinition, extraBindVars, bindVarsLength);
|
|
1656
1732
|
modifyAbstractSql(
|
|
1657
1733
|
'Resource',
|
|
1658
|
-
rewrittenDefinition.abstractSql
|
|
1734
|
+
rewrittenDefinition.abstractSql,
|
|
1659
1735
|
(resource: ResourceNode) => {
|
|
1660
1736
|
const resourceName = resource[1];
|
|
1661
1737
|
const referencedResource = this.clientModel.tables[resourceName];
|
package/test/chai-sql.js
CHANGED
|
@@ -41,9 +41,9 @@ chai.use(function ($chai, utils) {
|
|
|
41
41
|
const select = (function () {
|
|
42
42
|
const bodySelect = bodyClause('Select');
|
|
43
43
|
const typeSelect = queryType('SelectQuery');
|
|
44
|
-
return function () {
|
|
44
|
+
return function (...args) {
|
|
45
45
|
typeSelect.call(this);
|
|
46
|
-
return bodySelect.apply(this,
|
|
46
|
+
return bodySelect.apply(this, args);
|
|
47
47
|
};
|
|
48
48
|
})();
|
|
49
49
|
utils.addMethod(assertionPrototype, 'select', select);
|
package/test/filterby.js
CHANGED
package/test/{test.js → test.ts}
RENAMED
|
@@ -5,7 +5,13 @@ import { OData2AbstractSQL } from '../out/odata-to-abstract-sql';
|
|
|
5
5
|
const translator = new OData2AbstractSQL(clientModel);
|
|
6
6
|
|
|
7
7
|
const { skip } = describe;
|
|
8
|
-
const runExpectation = function (
|
|
8
|
+
const runExpectation = function (
|
|
9
|
+
describe: Mocha.SuiteFunction,
|
|
10
|
+
input: any,
|
|
11
|
+
method: any,
|
|
12
|
+
body?: any,
|
|
13
|
+
expectation?: any,
|
|
14
|
+
) {
|
|
9
15
|
if (expectation == null) {
|
|
10
16
|
if (body == null) {
|
|
11
17
|
expectation = method;
|
|
@@ -42,7 +48,20 @@ const runExpectation = function (describe, input, method, body, expectation) {
|
|
|
42
48
|
);
|
|
43
49
|
};
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
type TailParameters<T extends (...args: any) => any> = T extends (
|
|
52
|
+
arg,
|
|
53
|
+
...args: infer P
|
|
54
|
+
) => any
|
|
55
|
+
? P
|
|
56
|
+
: never;
|
|
57
|
+
type TestFn = (
|
|
58
|
+
...args: TailParameters<typeof runExpectation>
|
|
59
|
+
) => ReturnType<typeof runExpectation>;
|
|
60
|
+
interface Test extends TestFn {
|
|
61
|
+
skip: TestFn;
|
|
62
|
+
only: TestFn;
|
|
63
|
+
}
|
|
64
|
+
const test = runExpectation.bind(null, describe) as Test;
|
|
46
65
|
test.skip = runExpectation.bind(null, describe.skip);
|
|
47
66
|
test.only = runExpectation.bind(null, describe.only);
|
|
48
67
|
|