@simplysm/orm-common 14.0.1 → 14.0.4
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/README.md +135 -0
- package/dist/exec/queryable.js +18 -18
- package/dist/exec/queryable.js.map +1 -1
- package/dist/expr/expr.d.ts +102 -102
- package/dist/expr/expr.js +105 -105
- package/dist/expr/expr.js.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +17 -17
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +26 -26
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +14 -14
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +67 -67
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +13 -13
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +47 -47
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
- package/dist/schema/factory/relation-builder.d.ts +8 -8
- package/dist/schema/factory/relation-builder.js +9 -9
- package/dist/schema/factory/relation-builder.js.map +1 -1
- package/dist/schema/view-builder.js +2 -2
- package/dist/schema/view-builder.js.map +1 -1
- package/dist/types/column.d.ts +21 -21
- package/dist/types/column.js +5 -5
- package/dist/utils/result-parser.d.ts +11 -11
- package/dist/utils/result-parser.js +48 -48
- package/dist/utils/result-parser.js.map +1 -1
- package/docs/core.md +206 -0
- package/docs/expression.md +217 -0
- package/docs/query-builder.md +126 -0
- package/docs/queryable.md +236 -0
- package/docs/schema-builders.md +352 -0
- package/docs/types.md +501 -0
- package/package.json +7 -3
- package/src/exec/queryable.ts +18 -18
- package/src/expr/expr.ts +105 -105
- package/src/query-builder/mssql/mssql-expr-renderer.ts +17 -17
- package/src/query-builder/mssql/mssql-query-builder.ts +26 -26
- package/src/query-builder/mysql/mysql-expr-renderer.ts +14 -14
- package/src/query-builder/mysql/mysql-query-builder.ts +67 -67
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +13 -13
- package/src/query-builder/postgresql/postgresql-query-builder.ts +47 -47
- package/src/schema/factory/relation-builder.ts +9 -9
- package/src/schema/view-builder.ts +2 -2
- package/src/types/column.ts +23 -23
- package/src/utils/result-parser.ts +49 -49
|
@@ -135,15 +135,15 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
|
|
|
135
135
|
*
|
|
136
136
|
* @example
|
|
137
137
|
* ```typescript
|
|
138
|
-
* //
|
|
138
|
+
* // View에서 Table로의 관계 정의
|
|
139
139
|
* const UserSummary = View("UserSummary")
|
|
140
140
|
* .query((db: MyDb) => db.user().select(...))
|
|
141
141
|
* .relations((r) => ({
|
|
142
|
-
* // View → Table (
|
|
142
|
+
* // View → Table (FK 미생성)
|
|
143
143
|
* company: r.relationKey(["companyId"], () => Company),
|
|
144
144
|
* }));
|
|
145
145
|
*
|
|
146
|
-
* //
|
|
146
|
+
* // FK 없는 Table 관계 정의
|
|
147
147
|
* const Report = Table("Report")
|
|
148
148
|
* .columns((c) => ({ userId: c.bigint() }))
|
|
149
149
|
* .relations((r) => ({
|
|
@@ -195,7 +195,7 @@ export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> |
|
|
|
195
195
|
* const Company = Table("Company")
|
|
196
196
|
* .columns((c) => ({ id: c.bigint() }))
|
|
197
197
|
* .relations((r) => ({
|
|
198
|
-
* //
|
|
198
|
+
* // 역참조 (FK 미생성)
|
|
199
199
|
* employees: r.relationKeyTarget(() => UserSummary, "company"),
|
|
200
200
|
* }));
|
|
201
201
|
* ```
|
|
@@ -275,21 +275,21 @@ type RelationRkFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any,
|
|
|
275
275
|
*
|
|
276
276
|
* @example
|
|
277
277
|
* ```typescript
|
|
278
|
-
* // Table -
|
|
278
|
+
* // Table - FK와 RelationKey 모두 사용 가능
|
|
279
279
|
* const Post = Table("Post")
|
|
280
280
|
* .columns((c) => ({
|
|
281
281
|
* id: c.bigint(),
|
|
282
282
|
* authorId: c.bigint(),
|
|
283
283
|
* }))
|
|
284
284
|
* .relations((r) => ({
|
|
285
|
-
* author: r.foreignKey(["authorId"], () => User), // FK
|
|
285
|
+
* author: r.foreignKey(["authorId"], () => User), // FK 생성
|
|
286
286
|
* }));
|
|
287
287
|
*
|
|
288
|
-
* // View -
|
|
288
|
+
* // View - RelationKey만 사용 가능
|
|
289
289
|
* const UserSummary = View("UserSummary")
|
|
290
290
|
* .query(...)
|
|
291
291
|
* .relations((r) => ({
|
|
292
|
-
* posts: r.relationKeyTarget(() => Post, "author"), //
|
|
292
|
+
* posts: r.relationKeyTarget(() => Post, "author"), // FK 미생성
|
|
293
293
|
* }));
|
|
294
294
|
* ```
|
|
295
295
|
*/
|
|
@@ -116,7 +116,7 @@ export class ForeignKeyTargetBuilder {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
// ============================================
|
|
119
|
-
// RelationKeyBuilder (
|
|
119
|
+
// RelationKeyBuilder (FK와 동일하지만 DB에 FK를 등록하지 않음)
|
|
120
120
|
// ============================================
|
|
121
121
|
/**
|
|
122
122
|
* 논리적 관계 builder (N:1) - DB FK 미생성
|
|
@@ -129,15 +129,15 @@ export class ForeignKeyTargetBuilder {
|
|
|
129
129
|
*
|
|
130
130
|
* @example
|
|
131
131
|
* ```typescript
|
|
132
|
-
* //
|
|
132
|
+
* // View에서 Table로의 관계 정의
|
|
133
133
|
* const UserSummary = View("UserSummary")
|
|
134
134
|
* .query((db: MyDb) => db.user().select(...))
|
|
135
135
|
* .relations((r) => ({
|
|
136
|
-
* // View → Table (
|
|
136
|
+
* // View → Table (FK 미생성)
|
|
137
137
|
* company: r.relationKey(["companyId"], () => Company),
|
|
138
138
|
* }));
|
|
139
139
|
*
|
|
140
|
-
* //
|
|
140
|
+
* // FK 없는 Table 관계 정의
|
|
141
141
|
* const Report = Table("Report")
|
|
142
142
|
* .columns((c) => ({ userId: c.bigint() }))
|
|
143
143
|
* .relations((r) => ({
|
|
@@ -183,7 +183,7 @@ export class RelationKeyBuilder {
|
|
|
183
183
|
* const Company = Table("Company")
|
|
184
184
|
* .columns((c) => ({ id: c.bigint() }))
|
|
185
185
|
* .relations((r) => ({
|
|
186
|
-
* //
|
|
186
|
+
* // 역참조 (FK 미생성)
|
|
187
187
|
* employees: r.relationKeyTarget(() => UserSummary, "company"),
|
|
188
188
|
* }));
|
|
189
189
|
* ```
|
|
@@ -235,21 +235,21 @@ export class RelationKeyTargetBuilder {
|
|
|
235
235
|
*
|
|
236
236
|
* @example
|
|
237
237
|
* ```typescript
|
|
238
|
-
* // Table -
|
|
238
|
+
* // Table - FK와 RelationKey 모두 사용 가능
|
|
239
239
|
* const Post = Table("Post")
|
|
240
240
|
* .columns((c) => ({
|
|
241
241
|
* id: c.bigint(),
|
|
242
242
|
* authorId: c.bigint(),
|
|
243
243
|
* }))
|
|
244
244
|
* .relations((r) => ({
|
|
245
|
-
* author: r.foreignKey(["authorId"], () => User), // FK
|
|
245
|
+
* author: r.foreignKey(["authorId"], () => User), // FK 생성
|
|
246
246
|
* }));
|
|
247
247
|
*
|
|
248
|
-
* // View -
|
|
248
|
+
* // View - RelationKey만 사용 가능
|
|
249
249
|
* const UserSummary = View("UserSummary")
|
|
250
250
|
* .query(...)
|
|
251
251
|
* .relations((r) => ({
|
|
252
|
-
* posts: r.relationKeyTarget(() => Post, "author"), //
|
|
252
|
+
* posts: r.relationKeyTarget(() => Post, "author"), // FK 미생성
|
|
253
253
|
* }));
|
|
254
254
|
* ```
|
|
255
255
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAIrD,+CAA+C;AAC/C,oBAAoB;AACpB,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,iBAAiB;IAYjB;IARX;;;;;;OAMG;IACH,YACW,IAKR;QALQ,SAAI,GAAJ,IAAI,CAKZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,uBAAuB;IAYvB;IARX;;;;;;OAMG;IACH,YACW,IAKR;QALQ,SAAI,GAAJ,IAAI,CAKZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM;QACJ,OAAO,IAAI,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;CACF;AAED,+CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"relation-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAIrD,+CAA+C;AAC/C,oBAAoB;AACpB,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,iBAAiB;IAYjB;IARX;;;;;;OAMG;IACH,YACW,IAKR;QALQ,SAAI,GAAJ,IAAI,CAKZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,uBAAuB;IAYvB;IARX;;;;;;OAMG;IACH,YACW,IAKR;QALQ,SAAI,GAAJ,IAAI,CAKZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM;QACJ,OAAO,IAAI,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;CACF;AAED,+CAA+C;AAC/C,iDAAiD;AACjD,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,kBAAkB;IAYlB;IARX;;;;;;OAMG;IACH,YACW,IAKR;QALQ,SAAI,GAAJ,IAAI,CAKZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,kBAAkB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,wBAAwB;IAYxB;IARX;;;;;;OAMG;IACH,YACW,IAKR;QALQ,SAAI,GAAJ,IAAI,CAKZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACJ,OAAO,IAAI,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;CACF;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,qBAAqB,CAInC,OAAqB;IAIrB,OAAO;QACL,UAAU,CAAC,OAAO,EAAE,QAAQ;YAC1B,OAAO,IAAI,iBAAiB,CAAC;gBAC3B,OAAO,EAAE,OAAuC;gBAChD,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QACD,gBAAgB,CAAC,aAAa,EAAE,YAAY;YAC1C,OAAO,IAAI,uBAAuB,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,WAAW,CAAC,OAAO,EAAE,QAAQ;YAC3B,OAAO,IAAI,kBAAkB,CAAC;gBAC5B,OAAO,EAAE,OAAO;gBAChB,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QACD,iBAAiB,CAAC,aAAa,EAAE,YAAY;YAC3C,OAAO,IAAI,wBAAwB,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;QACvE,CAAC;KAGsC,CAAC;AAC5C,CAAC"}
|
|
@@ -140,8 +140,8 @@ export class ViewBuilder {
|
|
|
140
140
|
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
141
141
|
*/
|
|
142
142
|
relations(fn) {
|
|
143
|
-
//
|
|
144
|
-
//
|
|
143
|
+
// TypeScript 제네릭 타입 추론 한계로 인해 캐스팅이 불가피
|
|
144
|
+
// TRelations 타입 파라미터와 새로 생성된 관계 타입 T 간의 타입 불일치 해결
|
|
145
145
|
return new ViewBuilder({
|
|
146
146
|
...this.meta,
|
|
147
147
|
relations: fn(createRelationFactory(() => this)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-builder.js","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,WAAW;IAoBX;IAfX,qBAAqB;IACZ,UAAU,CAAc;IACjC,eAAe;IACN,YAAY,CAAS;IAE9B;;;;;;;;OAQG;IACH,YACW,IAOR;QAPQ,SAAI,GAAJ,IAAI,CAOZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CACH,MAA8C;QAE9C,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CACP,EAAkF;QAElF,
|
|
1
|
+
{"version":3,"file":"view-builder.js","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,WAAW;IAoBX;IAfX,qBAAqB;IACZ,UAAU,CAAc;IACjC,eAAe;IACN,YAAY,CAAS;IAE9B;;;;;;;;OAQG;IACH,YACW,IAOR;QAPQ,SAAI,GAAJ,IAAI,CAOZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CACH,MAA8C;QAE9C,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CACP,EAAkF;QAElF,uCAAuC;QACvC,kDAAkD;QAClD,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAA6B,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAC7E,CAAQ,CAAC;IACZ,CAAC;CACF;AAED,+CAA+C;AAC/C,UAAU;AACV,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/types/column.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DateOnly, DateTime, Time, Uuid, type Bytes } from "@simplysm/core-common";
|
|
2
2
|
/**
|
|
3
|
-
* SQL
|
|
3
|
+
* SQL 데이터 타입 정의
|
|
4
4
|
*
|
|
5
|
-
* DBMS
|
|
5
|
+
* DBMS 매핑:
|
|
6
6
|
* - `int`: INT (4 bytes)
|
|
7
7
|
* - `bigint`: BIGINT (8 bytes)
|
|
8
8
|
* - `float`: FLOAT/REAL (4 bytes)
|
|
@@ -59,9 +59,9 @@ export type DataType = {
|
|
|
59
59
|
type: "uuid";
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
|
-
* Column
|
|
62
|
+
* Column 원시 타입 매핑
|
|
63
63
|
*
|
|
64
|
-
* TypeScript
|
|
64
|
+
* TypeScript 타입 이름 (문자열) → 실제 TypeScript 타입 매핑
|
|
65
65
|
*
|
|
66
66
|
* @example
|
|
67
67
|
* ```typescript
|
|
@@ -80,7 +80,7 @@ export type ColumnPrimitiveMap = {
|
|
|
80
80
|
Bytes: Bytes;
|
|
81
81
|
};
|
|
82
82
|
/**
|
|
83
|
-
* Column
|
|
83
|
+
* Column 원시 타입 이름 (문자열)
|
|
84
84
|
*
|
|
85
85
|
* @example
|
|
86
86
|
* ```typescript
|
|
@@ -90,13 +90,13 @@ export type ColumnPrimitiveMap = {
|
|
|
90
90
|
*/
|
|
91
91
|
export type ColumnPrimitiveStr = keyof ColumnPrimitiveMap;
|
|
92
92
|
/**
|
|
93
|
-
*
|
|
93
|
+
* Column에 저장 가능한 모든 원시 타입
|
|
94
94
|
*
|
|
95
|
-
* undefined
|
|
95
|
+
* undefined는 NULL을 나타냄
|
|
96
96
|
*/
|
|
97
97
|
export type ColumnPrimitive = ColumnPrimitiveMap[ColumnPrimitiveStr] | undefined;
|
|
98
98
|
/**
|
|
99
|
-
* SQL DataType → TypeScript
|
|
99
|
+
* SQL DataType → TypeScript 타입 이름 매핑
|
|
100
100
|
*
|
|
101
101
|
* @example
|
|
102
102
|
* ```typescript
|
|
@@ -121,7 +121,7 @@ export declare const dataTypeStrToColumnPrimitiveStr: {
|
|
|
121
121
|
uuid: "Uuid";
|
|
122
122
|
};
|
|
123
123
|
/**
|
|
124
|
-
* TypeScript
|
|
124
|
+
* DataType으로부터 TypeScript 타입 추론
|
|
125
125
|
*
|
|
126
126
|
* @template T - DataType
|
|
127
127
|
*
|
|
@@ -133,11 +133,11 @@ export declare const dataTypeStrToColumnPrimitiveStr: {
|
|
|
133
133
|
*/
|
|
134
134
|
export type InferColumnPrimitiveFromDataType<TDataType extends DataType> = ColumnPrimitiveMap[(typeof dataTypeStrToColumnPrimitiveStr)[TDataType["type"]]];
|
|
135
135
|
/**
|
|
136
|
-
*
|
|
136
|
+
* 런타임 값에서 ColumnPrimitiveStr 추론
|
|
137
137
|
*
|
|
138
|
-
* @param value - Column
|
|
139
|
-
* @returns ColumnPrimitiveStr
|
|
140
|
-
* @throws
|
|
138
|
+
* @param value - Column 값
|
|
139
|
+
* @returns ColumnPrimitiveStr 타입 이름
|
|
140
|
+
* @throws 값 타입이 알 수 없을 때 Error
|
|
141
141
|
*
|
|
142
142
|
* @example
|
|
143
143
|
* ```typescript
|
|
@@ -148,16 +148,16 @@ export type InferColumnPrimitiveFromDataType<TDataType extends DataType> = Colum
|
|
|
148
148
|
*/
|
|
149
149
|
export declare function inferColumnPrimitiveStr(value: ColumnPrimitive): ColumnPrimitiveStr;
|
|
150
150
|
/**
|
|
151
|
-
* Column
|
|
151
|
+
* Column 메타데이터
|
|
152
152
|
*
|
|
153
|
-
*
|
|
153
|
+
* ColumnBuilder에서 생성되어 TableBuilder에 전달됨
|
|
154
154
|
*
|
|
155
|
-
* @property type - TypeScript
|
|
156
|
-
* @property dataType - SQL
|
|
157
|
-
* @property autoIncrement -
|
|
158
|
-
* @property nullable -
|
|
159
|
-
* @property default -
|
|
160
|
-
* @property description - Column
|
|
155
|
+
* @property type - TypeScript 타입 이름 (ColumnPrimitiveStr)
|
|
156
|
+
* @property dataType - SQL 데이터 타입
|
|
157
|
+
* @property autoIncrement - 자동 증가 여부
|
|
158
|
+
* @property nullable - NULL 허용 여부
|
|
159
|
+
* @property default - 기본값
|
|
160
|
+
* @property description - Column 설명 (DDL 코멘트)
|
|
161
161
|
*
|
|
162
162
|
* @see {@link ColumnBuilder} Column builder
|
|
163
163
|
*/
|
package/dist/types/column.js
CHANGED
|
@@ -3,7 +3,7 @@ import { DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
|
3
3
|
// DataType ↔ ColumnPrimitive Mapping
|
|
4
4
|
// ============================================
|
|
5
5
|
/**
|
|
6
|
-
* SQL DataType → TypeScript
|
|
6
|
+
* SQL DataType → TypeScript 타입 이름 매핑
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* ```typescript
|
|
@@ -28,11 +28,11 @@ export const dataTypeStrToColumnPrimitiveStr = {
|
|
|
28
28
|
uuid: "Uuid",
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* 런타임 값에서 ColumnPrimitiveStr 추론
|
|
32
32
|
*
|
|
33
|
-
* @param value - Column
|
|
34
|
-
* @returns ColumnPrimitiveStr
|
|
35
|
-
* @throws
|
|
33
|
+
* @param value - Column 값
|
|
34
|
+
* @returns ColumnPrimitiveStr 타입 이름
|
|
35
|
+
* @throws 값 타입이 알 수 없을 때 Error
|
|
36
36
|
*
|
|
37
37
|
* @example
|
|
38
38
|
* ```typescript
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import type { ResultMeta } from "../types/db";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* ResultMeta를 통해 DB 쿼리 결과를 TypeScript 객체로 변환
|
|
4
4
|
*
|
|
5
|
-
* @param rawResults -
|
|
6
|
-
* @param meta -
|
|
7
|
-
* @returns
|
|
8
|
-
* @throws
|
|
5
|
+
* @param rawResults - 데이터베이스에서 반환된 원시 결과 배열
|
|
6
|
+
* @param meta - 타입 변환 및 JOIN 구조 정보 (필수)
|
|
7
|
+
* @returns 타입 변환 및 중첩된 결과 배열. 입력이 비어있거나 유효한 결과가 없으면 undefined 반환
|
|
8
|
+
* @throws 타입 파싱 실패 시 Error
|
|
9
9
|
*
|
|
10
10
|
* @remarks
|
|
11
|
-
* - meta
|
|
12
|
-
* - async
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
11
|
+
* - meta 필수: meta 없이는 이 함수를 호출할 필요 없음 (입력 = 출력)
|
|
12
|
+
* - async 전용: 대규모 처리 시 외부 인터럽트 허용을 위해 동기 버전 미제공
|
|
13
|
+
* - 브라우저/Node 호환: setTimeout(resolve, 0)으로 양보
|
|
14
|
+
* - 빈 결과 처리: 입력 배열이 비어있거나 파싱 후 모든 레코드가 빈 객체이면 undefined 반환
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```typescript
|
|
18
|
-
* // 1.
|
|
18
|
+
* // 1. 단순 타입 파싱
|
|
19
19
|
* const raw = [{ id: "1", createdAt: "2026-01-07T10:00:00.000Z" }];
|
|
20
20
|
* const meta = { columns: { id: "number", createdAt: "DateTime" }, joins: {} };
|
|
21
21
|
* const result = await parseQueryResult(raw, meta);
|
|
22
22
|
* // [{ id: 1, createdAt: DateTime(...) }]
|
|
23
23
|
*
|
|
24
|
-
* // 2. JOIN
|
|
24
|
+
* // 2. JOIN 결과 중첩
|
|
25
25
|
* const raw = [
|
|
26
26
|
* { id: 1, name: "User1", "posts.id": 10, "posts.title": "Post1" },
|
|
27
27
|
* { id: 1, name: "User1", "posts.id": 11, "posts.title": "Post2" },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { bytes, obj, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
2
2
|
// ============================================
|
|
3
|
-
//
|
|
3
|
+
// 타입 파서
|
|
4
4
|
// ============================================
|
|
5
5
|
/**
|
|
6
6
|
* 값을 지정된 타입으로 파싱
|
|
@@ -98,7 +98,7 @@ function isEmptyObject(record) {
|
|
|
98
98
|
return Object.keys(record).length === 0;
|
|
99
99
|
}
|
|
100
100
|
// ============================================
|
|
101
|
-
//
|
|
101
|
+
// 메인 함수
|
|
102
102
|
// ============================================
|
|
103
103
|
/** 양보 간격: N개 레코드마다 이벤트 루프에 양보 */
|
|
104
104
|
const YIELD_INTERVAL = 100;
|
|
@@ -107,28 +107,28 @@ const yieldToEventLoop = typeof setImmediate !== "undefined"
|
|
|
107
107
|
? () => new Promise((resolve) => setImmediate(resolve))
|
|
108
108
|
: () => new Promise((resolve) => setTimeout(resolve, 0));
|
|
109
109
|
/**
|
|
110
|
-
*
|
|
110
|
+
* ResultMeta를 통해 DB 쿼리 결과를 TypeScript 객체로 변환
|
|
111
111
|
*
|
|
112
|
-
* @param rawResults -
|
|
113
|
-
* @param meta -
|
|
114
|
-
* @returns
|
|
115
|
-
* @throws
|
|
112
|
+
* @param rawResults - 데이터베이스에서 반환된 원시 결과 배열
|
|
113
|
+
* @param meta - 타입 변환 및 JOIN 구조 정보 (필수)
|
|
114
|
+
* @returns 타입 변환 및 중첩된 결과 배열. 입력이 비어있거나 유효한 결과가 없으면 undefined 반환
|
|
115
|
+
* @throws 타입 파싱 실패 시 Error
|
|
116
116
|
*
|
|
117
117
|
* @remarks
|
|
118
|
-
* - meta
|
|
119
|
-
* - async
|
|
120
|
-
* -
|
|
121
|
-
* -
|
|
118
|
+
* - meta 필수: meta 없이는 이 함수를 호출할 필요 없음 (입력 = 출력)
|
|
119
|
+
* - async 전용: 대규모 처리 시 외부 인터럽트 허용을 위해 동기 버전 미제공
|
|
120
|
+
* - 브라우저/Node 호환: setTimeout(resolve, 0)으로 양보
|
|
121
|
+
* - 빈 결과 처리: 입력 배열이 비어있거나 파싱 후 모든 레코드가 빈 객체이면 undefined 반환
|
|
122
122
|
*
|
|
123
123
|
* @example
|
|
124
124
|
* ```typescript
|
|
125
|
-
* // 1.
|
|
125
|
+
* // 1. 단순 타입 파싱
|
|
126
126
|
* const raw = [{ id: "1", createdAt: "2026-01-07T10:00:00.000Z" }];
|
|
127
127
|
* const meta = { columns: { id: "number", createdAt: "DateTime" }, joins: {} };
|
|
128
128
|
* const result = await parseQueryResult(raw, meta);
|
|
129
129
|
* // [{ id: 1, createdAt: DateTime(...) }]
|
|
130
130
|
*
|
|
131
|
-
* // 2. JOIN
|
|
131
|
+
* // 2. JOIN 결과 중첩
|
|
132
132
|
* const raw = [
|
|
133
133
|
* { id: 1, name: "User1", "posts.id": 10, "posts.title": "Post1" },
|
|
134
134
|
* { id: 1, name: "User1", "posts.id": 11, "posts.title": "Post2" },
|
|
@@ -142,16 +142,16 @@ const yieldToEventLoop = typeof setImmediate !== "undefined"
|
|
|
142
142
|
* ```
|
|
143
143
|
*/
|
|
144
144
|
export async function parseQueryResult(rawResults, meta) {
|
|
145
|
-
//
|
|
145
|
+
// 빈 입력 처리
|
|
146
146
|
if (rawResults.length === 0) {
|
|
147
147
|
return undefined;
|
|
148
148
|
}
|
|
149
149
|
const joinKeys = Object.keys(meta.joins);
|
|
150
|
-
//
|
|
150
|
+
// JOIN 없음: 단순 타입 파싱만 수행
|
|
151
151
|
if (joinKeys.length === 0) {
|
|
152
152
|
return parseSimpleRecords(rawResults, meta.columns);
|
|
153
153
|
}
|
|
154
|
-
//
|
|
154
|
+
// JOIN 있음: 그룹핑 + 중첩
|
|
155
155
|
return parseJoinedRecords(rawResults, meta);
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
@@ -189,7 +189,7 @@ function sortJoinKeysByDepth(joinKeys) {
|
|
|
189
189
|
* JOIN이 있는 레코드 파싱 (재귀 그룹핑)
|
|
190
190
|
*/
|
|
191
191
|
async function parseJoinedRecords(rawResults, meta) {
|
|
192
|
-
// 1.
|
|
192
|
+
// 1. 모든 레코드를 중첩 구조로 변환
|
|
193
193
|
const columnInfos = buildColumnInfos(meta.columns);
|
|
194
194
|
const nestedRecords = [];
|
|
195
195
|
for (let i = 0; i < rawResults.length; i++) {
|
|
@@ -198,11 +198,11 @@ async function parseJoinedRecords(rawResults, meta) {
|
|
|
198
198
|
}
|
|
199
199
|
nestedRecords.push(flatToNested(rawResults[i], columnInfos));
|
|
200
200
|
}
|
|
201
|
-
// 2.
|
|
201
|
+
// 2. JOIN key를 깊이순으로 정렬 (얕은 것 우선)
|
|
202
202
|
const sortedJoinKeys = sortJoinKeysByDepth(Object.keys(meta.joins));
|
|
203
|
-
// 3.
|
|
203
|
+
// 3. 루트 레벨부터 재귀적으로 그룹핑
|
|
204
204
|
const results = groupRecordsRecursively(nestedRecords, sortedJoinKeys, meta.joins, "");
|
|
205
|
-
// 4.
|
|
205
|
+
// 4. 빈 결과 필터링
|
|
206
206
|
const filteredResults = results.filter((r) => !isEmptyObject(r));
|
|
207
207
|
return filteredResults.length > 0 ? filteredResults : undefined;
|
|
208
208
|
}
|
|
@@ -225,41 +225,41 @@ function serializeGroupKey(groupKey, cachedKeyOrder) {
|
|
|
225
225
|
return result;
|
|
226
226
|
}
|
|
227
227
|
/**
|
|
228
|
-
*
|
|
228
|
+
* 현재 경로에 대해 레코드를 재귀적으로 그룹핑
|
|
229
229
|
*
|
|
230
|
-
*
|
|
230
|
+
* Map 기반 그룹핑으로 O(n) 복잡도 달성
|
|
231
231
|
*
|
|
232
|
-
* @param records -
|
|
233
|
-
* @param allJoinKeys -
|
|
234
|
-
* @param joinsConfig - JOIN
|
|
235
|
-
* @param currentPath -
|
|
232
|
+
* @param records - 그룹핑할 레코드 배열
|
|
233
|
+
* @param allJoinKeys - 모든 JOIN key (깊이순 정렬)
|
|
234
|
+
* @param joinsConfig - JOIN 설정
|
|
235
|
+
* @param currentPath - 현재 경로 (예: "", "posts", "posts.comments")
|
|
236
236
|
*/
|
|
237
237
|
function groupRecordsRecursively(records, allJoinKeys, joinsConfig, currentPath) {
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
//
|
|
238
|
+
// 현재 경로에 직접 대응하는 JOIN key 찾기
|
|
239
|
+
// 예: currentPath="" → ["posts", "company"]
|
|
240
|
+
// 예: currentPath="posts" → ["posts.comments"]
|
|
241
241
|
const childJoinKeys = allJoinKeys.filter((key) => {
|
|
242
242
|
if (currentPath === "") {
|
|
243
|
-
//
|
|
243
|
+
// 루트 레벨: 점이 없는 key
|
|
244
244
|
return !key.includes(".");
|
|
245
245
|
}
|
|
246
246
|
else {
|
|
247
|
-
//
|
|
247
|
+
// 하위 레벨: 현재 경로 + "." + key
|
|
248
248
|
return (key.startsWith(currentPath + ".") && key.slice(currentPath.length + 1).indexOf(".") === -1);
|
|
249
249
|
}
|
|
250
250
|
});
|
|
251
251
|
if (childJoinKeys.length === 0) {
|
|
252
|
-
//
|
|
252
|
+
// 더 이상 그룹핑할 JOIN 없음
|
|
253
253
|
return records;
|
|
254
254
|
}
|
|
255
|
-
// Map
|
|
255
|
+
// Map 기반 그룹핑 (O(n) 복잡도)
|
|
256
256
|
const groupMap = new Map();
|
|
257
|
-
//
|
|
257
|
+
// O(1) 조회를 위한 JOIN key 제외 집합 사전 계산
|
|
258
258
|
const joinKeyExclusions = buildJoinKeyExclusionSet(childJoinKeys);
|
|
259
|
-
// Key
|
|
259
|
+
// Key 순서 캐싱 (첫 번째 레코드에서 결정 후 재사용)
|
|
260
260
|
let groupKeyOrder;
|
|
261
261
|
for (const record of records) {
|
|
262
|
-
//
|
|
262
|
+
// 그룹 key 추출 및 직렬화 (JOIN key 제외)
|
|
263
263
|
const groupKey = extractGroupKey(record, joinKeyExclusions);
|
|
264
264
|
if (groupKeyOrder == null) {
|
|
265
265
|
groupKeyOrder = Object.keys(groupKey).sort((a, b) => a.localeCompare(b));
|
|
@@ -267,46 +267,46 @@ function groupRecordsRecursively(records, allJoinKeys, joinsConfig, currentPath)
|
|
|
267
267
|
const keyStr = serializeGroupKey(groupKey, groupKeyOrder);
|
|
268
268
|
const existingGroup = groupMap.get(keyStr);
|
|
269
269
|
if (existingGroup != null) {
|
|
270
|
-
//
|
|
270
|
+
// 기존 그룹에 JOIN 데이터 병합
|
|
271
271
|
for (const joinKey of childJoinKeys) {
|
|
272
272
|
const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
|
|
273
273
|
mergeJoinData(existingGroup, record, localKey, joinsConfig[joinKey].isSingle);
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
else {
|
|
277
|
-
//
|
|
277
|
+
// 새 그룹 생성
|
|
278
278
|
const newGroup = { ...record };
|
|
279
|
-
//
|
|
279
|
+
// 각 JOIN key를 배열 또는 단일 객체로 초기화
|
|
280
280
|
for (const joinKey of childJoinKeys) {
|
|
281
281
|
const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
|
|
282
282
|
const joinData = newGroup[localKey];
|
|
283
283
|
if (joinData != null && !isEmptyObject(joinData)) {
|
|
284
284
|
if (!joinsConfig[joinKey].isSingle) {
|
|
285
|
-
//
|
|
285
|
+
// 배열로 변환
|
|
286
286
|
newGroup[localKey] = [joinData];
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
else {
|
|
290
|
-
//
|
|
290
|
+
// 데이터가 비어있으면 key 삭제
|
|
291
291
|
delete newGroup[localKey];
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
294
|
groupMap.set(keyStr, newGroup);
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
|
-
//
|
|
297
|
+
// Map을 배열로 변환
|
|
298
298
|
const grouped = Array.from(groupMap.values());
|
|
299
|
-
//
|
|
299
|
+
// 각 JOIN의 하위 레벨을 재귀적으로 처리
|
|
300
300
|
for (const group of grouped) {
|
|
301
301
|
for (const joinKey of childJoinKeys) {
|
|
302
302
|
const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
|
|
303
303
|
const joinData = group[localKey];
|
|
304
304
|
if (Array.isArray(joinData) && joinData.length > 0) {
|
|
305
|
-
//
|
|
305
|
+
// 배열인 경우: 하위 레벨을 재귀적으로 처리
|
|
306
306
|
group[localKey] = groupRecordsRecursively(joinData, allJoinKeys, joinsConfig, joinKey);
|
|
307
307
|
}
|
|
308
308
|
else if (joinData != null && typeof joinData === "object" && !Array.isArray(joinData)) {
|
|
309
|
-
//
|
|
309
|
+
// 단일 객체인 경우 (isSingle: true)
|
|
310
310
|
const processed = groupRecordsRecursively([joinData], allJoinKeys, joinsConfig, joinKey);
|
|
311
311
|
if (processed.length > 0) {
|
|
312
312
|
group[localKey] = processed[0];
|
|
@@ -314,7 +314,7 @@ function groupRecordsRecursively(records, allJoinKeys, joinsConfig, currentPath)
|
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
|
-
//
|
|
317
|
+
// __hashSet__ 내부 속성 제거 (중복 검사용 임시 속성)
|
|
318
318
|
for (const group of grouped) {
|
|
319
319
|
for (const key of Object.keys(group)) {
|
|
320
320
|
if (key.startsWith("__hashSet__")) {
|
|
@@ -365,7 +365,7 @@ function mergeJoinData(existingGroup, newRecord, localKey, isSingle) {
|
|
|
365
365
|
}
|
|
366
366
|
const existingJoinData = existingGroup[localKey];
|
|
367
367
|
if (isSingle) {
|
|
368
|
-
// isSingle: true -
|
|
368
|
+
// isSingle: true - 데이터가 존재하고 값이 다르면 에러
|
|
369
369
|
if (existingJoinData != null) {
|
|
370
370
|
if (!obj.equal(existingJoinData, newJoinData)) {
|
|
371
371
|
throw new Error(`isSingle 관계 '${localKey}'에 여러 개의 다른 결과가 있습니다.`);
|
|
@@ -376,7 +376,7 @@ function mergeJoinData(existingGroup, newRecord, localKey, isSingle) {
|
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
378
|
else {
|
|
379
|
-
// isSingle: false →
|
|
379
|
+
// isSingle: false → 배열에 추가
|
|
380
380
|
const hashSetKey = `__hashSet__${localKey}`;
|
|
381
381
|
if (!Array.isArray(existingJoinData)) {
|
|
382
382
|
existingGroup[localKey] = [newJoinData];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-parser.js","sourceRoot":"","sources":["..\\..\\src\\utils\\result-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"result-parser.js","sourceRoot":"","sources":["..\\..\\src\\utils\\result-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAMnF,+CAA+C;AAC/C,QAAQ;AACR,+CAA+C;AAE/C;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,KAAc,EAAE,IAAwB;IAC1D,2CAA2C;IAC3C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvB,KAAK,SAAS;YACZ,mCAAmC;YACnC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;YAClE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAExB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;QAEzC,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;QAEzC,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;QAErC,KAAK,MAAM;YACT,IAAI,KAAK,YAAY,UAAU;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,IAAI,IAAI,CAAC,KAAe,CAAC,CAAC;QAEnC,KAAK,OAAO;YACV,IAAI,KAAK,YAAY,UAAU;gBAAE,OAAO,KAAK,CAAC;YAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAaD,6CAA6C;AAC7C,SAAS,gBAAgB,CAAC,OAA2C;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG;QACH,IAAI;QACJ,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,MAA+B,EAC/B,WAAyB;IAEzB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE/C,4BAA4B;QAC5B,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAExC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,8CAA8C;YAC9C,IAAI,OAAO,GAAG,MAAM,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrB,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAA4B,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,SAAS;YACT,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAA+B;IACpD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,+CAA+C;AAC/C,QAAQ;AACR,+CAA+C;AAE/C,iCAAiC;AACjC,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,4DAA4D;AAC5D,MAAM,gBAAgB,GACpB,OAAO,YAAY,KAAK,WAAW;IACjC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAqC,EACrC,IAAgB;IAEhB,UAAU;IACV,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzC,wBAAwB;IACxB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,kBAAkB,CAAU,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,oBAAoB;IACpB,OAAO,kBAAkB,CAAU,UAAU,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,UAAqC,EACrC,OAA2C;IAE3C,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAA8B,EAAE,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,aAAa;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,gBAAgB,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAExD,UAAU;QACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,OAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnC,OAAO,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,UAAqC,EACrC,IAAgB;IAEhB,uBAAuB;IACvB,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,aAAa,GAA8B,EAAE,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,gBAAgB,EAAE,CAAC;QAC3B,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,kCAAkC;IAClC,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpE,uBAAuB;IACvB,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEvF,cAAc;IACd,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,eAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,QAAiC,EAAE,cAAyB;IACrF,MAAM,IAAI,GAAG,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,GAAG,CAAC;QACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC;QACd,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,uBAAuB,CAC9B,OAAkC,EAClC,WAAqB,EACrB,WAAkD,EAClD,WAAmB;IAEnB,6BAA6B;IAC7B,2CAA2C;IAC3C,8CAA8C;IAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;YACvB,mBAAmB;YACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,OAAO,CACL,GAAG,CAAC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,oBAAoB;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmC,CAAC;IAE5D,mCAAmC;IACnC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAElE,kCAAkC;IAClC,IAAI,aAAmC,CAAC;IAExC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,gCAAgC;QAChC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC5D,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE1D,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,qBAAqB;YACrB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACtF,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU;YACV,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAE/B,+BAA+B;YAC/B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAwC,CAAC;gBAE3E,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;wBACnC,SAAS;wBACT,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,oBAAoB;oBACpB,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9C,0BAA0B;IAC1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,0BAA0B;gBAC1B,KAAK,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CACvC,QAAqC,EACrC,WAAW,EACX,WAAW,EACX,OAAO,CACR,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxF,6BAA6B;gBAC7B,MAAM,SAAS,GAAG,uBAAuB,CACvC,CAAC,QAAmC,CAAC,EACrC,WAAW,EACX,WAAW,EACX,OAAO,CACR,CAAC;gBACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,QAAkB;IAClD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,uDAAuD;QACvD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,MAA+B,EAC/B,iBAA8B;IAE9B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,mBAAmB;QACnB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,iCAAiC;YACjC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,aAAsC,EACtC,SAAkC,EAClC,QAAgB,EAChB,QAAiB;IAEjB,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAwC,CAAC;IAE/E,IAAI,WAAW,IAAI,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,aAAa;IACvB,CAAC;IAED,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,QAAQ,EAAE,CAAC;QACb,uCAAuC;QACvC,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAA2C,EAAE,WAAW,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,uBAAuB,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QACxC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,2BAA2B;QAC3B,MAAM,UAAU,GAAG,cAAc,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxC,0BAA0B;YAC1B,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAA4B,CAAC;YACrE,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACrB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yBAAyB;gBACzB,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,GAAG,CAAC,KAAK,CAAC,IAA+B,EAAE,WAAW,CAAC,CACxD,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|