@uql/core 1.0.12 → 3.0.0
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/CHANGELOG.md +243 -0
- package/LICENSE.md +2 -2
- package/dist/CHANGELOG.md +186 -0
- package/dist/README.md +413 -0
- package/dist/browser/http/bus.d.ts +3 -0
- package/dist/browser/http/bus.js +14 -0
- package/dist/browser/http/http.d.ts +6 -0
- package/dist/browser/http/http.js +45 -0
- package/dist/browser/http/index.d.ts +2 -0
- package/dist/browser/http/index.js +3 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.js +5 -0
- package/dist/browser/options.d.ts +4 -0
- package/dist/browser/options.js +14 -0
- package/dist/browser/querier/genericClientRepository.d.ts +17 -0
- package/dist/browser/querier/genericClientRepository.js +39 -0
- package/dist/browser/querier/httpQuerier.d.ts +20 -0
- package/dist/browser/querier/httpQuerier.js +71 -0
- package/dist/browser/querier/index.d.ts +3 -0
- package/dist/browser/querier/index.js +4 -0
- package/dist/browser/querier/querier.util.d.ts +2 -0
- package/dist/browser/querier/querier.util.js +17 -0
- package/dist/browser/type/clientQuerier.d.ts +16 -0
- package/dist/browser/type/clientQuerier.js +2 -0
- package/dist/browser/type/clientQuerierPool.d.ts +4 -0
- package/dist/browser/type/clientQuerierPool.js +2 -0
- package/dist/browser/type/clientRepository.d.ts +13 -0
- package/dist/browser/type/clientRepository.js +2 -0
- package/dist/browser/type/index.d.ts +4 -0
- package/dist/browser/type/index.js +5 -0
- package/dist/browser/type/request.d.ts +28 -0
- package/dist/browser/type/request.js +2 -0
- package/dist/browser/uql-browser.min.js +2150 -0
- package/dist/browser/uql-browser.min.js.map +1 -0
- package/dist/dialect/abstractDialect.d.ts +16 -0
- package/dist/dialect/abstractDialect.js +28 -0
- package/dist/dialect/abstractSqlDialect.d.ts +47 -0
- package/dist/dialect/abstractSqlDialect.js +650 -0
- package/dist/dialect/index.d.ts +3 -0
- package/dist/dialect/index.js +4 -0
- package/dist/dialect/queryContext.d.ts +48 -0
- package/dist/dialect/queryContext.js +65 -0
- package/{entity → dist/entity}/decorator/definition.d.ts +3 -3
- package/dist/entity/decorator/definition.js +214 -0
- package/{entity → dist/entity}/decorator/entity.d.ts +1 -1
- package/dist/entity/decorator/entity.js +7 -0
- package/{entity → dist/entity}/decorator/field.d.ts +1 -1
- package/dist/entity/decorator/field.js +8 -0
- package/{entity → dist/entity}/decorator/id.d.ts +1 -1
- package/dist/entity/decorator/id.js +8 -0
- package/dist/entity/decorator/index.d.ts +5 -0
- package/dist/entity/decorator/index.js +6 -0
- package/{entity → dist/entity}/decorator/relation.d.ts +1 -1
- package/dist/entity/decorator/relation.js +20 -0
- package/dist/entity/index.d.ts +1 -0
- package/dist/entity/index.js +2 -0
- package/dist/express/index.d.ts +2 -0
- package/dist/express/index.js +3 -0
- package/dist/express/querierMiddleware.d.ts +26 -0
- package/dist/express/querierMiddleware.js +190 -0
- package/dist/express/query.util.d.ts +2 -0
- package/dist/express/query.util.js +19 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +10 -0
- package/dist/maria/index.d.ts +3 -0
- package/dist/maria/index.js +4 -0
- package/dist/maria/mariaDialect.d.ts +8 -0
- package/dist/maria/mariaDialect.js +38 -0
- package/dist/maria/mariaQuerierPool.test.d.ts +5 -0
- package/dist/maria/mariaQuerierPool.test.js +19 -0
- package/dist/maria/mariadbQuerier.d.ts +17 -0
- package/dist/maria/mariadbQuerier.js +39 -0
- package/dist/maria/mariadbQuerier.test.d.ts +4 -0
- package/dist/maria/mariadbQuerier.test.js +19 -0
- package/dist/maria/mariadbQuerierPool.d.ts +10 -0
- package/dist/maria/mariadbQuerierPool.js +17 -0
- package/dist/migrate/cli.d.ts +2 -0
- package/dist/migrate/cli.js +254 -0
- package/dist/migrate/generator/index.d.ts +4 -0
- package/dist/migrate/generator/index.js +5 -0
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +12 -0
- package/dist/migrate/generator/mongoSchemaGenerator.js +100 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +14 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.js +81 -0
- package/dist/migrate/generator/postgresSchemaGenerator.d.ts +18 -0
- package/dist/migrate/generator/postgresSchemaGenerator.js +111 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +14 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.js +68 -0
- package/dist/migrate/index.d.ts +12 -0
- package/dist/migrate/index.js +17 -0
- package/dist/migrate/introspection/index.d.ts +4 -0
- package/dist/migrate/introspection/index.js +5 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts +8 -0
- package/dist/migrate/introspection/mongoIntrospector.js +46 -0
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +25 -0
- package/dist/migrate/introspection/mysqlIntrospector.js +220 -0
- package/dist/migrate/introspection/postgresIntrospector.d.ts +21 -0
- package/dist/migrate/introspection/postgresIntrospector.js +269 -0
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +23 -0
- package/dist/migrate/introspection/sqliteIntrospector.js +212 -0
- package/dist/migrate/migrator-mongo.test.d.ts +1 -0
- package/dist/migrate/migrator-mongo.test.js +54 -0
- package/dist/migrate/migrator.d.ts +133 -0
- package/dist/migrate/migrator.js +600 -0
- package/dist/migrate/migrator.test.d.ts +1 -0
- package/dist/migrate/migrator.test.js +106 -0
- package/dist/migrate/schemaGenerator.d.ts +78 -0
- package/dist/migrate/schemaGenerator.js +363 -0
- package/dist/migrate/storage/databaseStorage.d.ts +24 -0
- package/dist/migrate/storage/databaseStorage.js +77 -0
- package/dist/migrate/storage/index.d.ts +2 -0
- package/dist/migrate/storage/index.js +3 -0
- package/dist/migrate/storage/jsonStorage.d.ts +15 -0
- package/dist/migrate/storage/jsonStorage.js +51 -0
- package/dist/migrate/type.d.ts +1 -0
- package/dist/migrate/type.js +2 -0
- package/dist/mongo/index.d.ts +3 -0
- package/dist/mongo/index.js +4 -0
- package/dist/mongo/mongoDialect.d.ts +34 -0
- package/dist/mongo/mongoDialect.js +163 -0
- package/dist/mongo/mongodbQuerier.d.ts +28 -0
- package/dist/mongo/mongodbQuerier.js +204 -0
- package/dist/mongo/mongodbQuerier.test.d.ts +1 -0
- package/dist/mongo/mongodbQuerier.test.js +36 -0
- package/dist/mongo/mongodbQuerierPool.d.ts +10 -0
- package/dist/mongo/mongodbQuerierPool.js +20 -0
- package/dist/mongo/mongodbQuerierPool.test.d.ts +1 -0
- package/dist/mongo/mongodbQuerierPool.test.js +21 -0
- package/dist/mysql/index.d.ts +3 -0
- package/dist/mysql/index.js +4 -0
- package/dist/mysql/mysql2Querier.d.ts +17 -0
- package/dist/mysql/mysql2Querier.js +43 -0
- package/dist/mysql/mysql2Querier.test.d.ts +4 -0
- package/dist/mysql/mysql2Querier.test.js +16 -0
- package/dist/mysql/mysql2QuerierPool.d.ts +10 -0
- package/dist/mysql/mysql2QuerierPool.js +17 -0
- package/dist/mysql/mysql2QuerierPool.test.d.ts +5 -0
- package/dist/mysql/mysql2QuerierPool.test.js +16 -0
- package/dist/mysql/mysqlDialect.d.ts +5 -0
- package/dist/mysql/mysqlDialect.js +15 -0
- package/dist/namingStrategy/defaultNamingStrategy.d.ts +9 -0
- package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
- package/dist/namingStrategy/index.d.ts +2 -0
- package/dist/namingStrategy/index.js +3 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +8 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
- package/{options.d.ts → dist/options.d.ts} +1 -1
- package/dist/options.js +14 -0
- package/dist/package.json +131 -0
- package/dist/postgres/index.d.ts +3 -0
- package/dist/postgres/index.js +4 -0
- package/dist/postgres/pgQuerier.d.ts +17 -0
- package/dist/postgres/pgQuerier.js +39 -0
- package/dist/postgres/pgQuerier.test.d.ts +4 -0
- package/dist/postgres/pgQuerier.test.js +20 -0
- package/dist/postgres/pgQuerierPool.d.ts +10 -0
- package/dist/postgres/pgQuerierPool.js +17 -0
- package/dist/postgres/pgQuerierPool.test.d.ts +5 -0
- package/dist/postgres/pgQuerierPool.test.js +23 -0
- package/dist/postgres/postgresDialect.d.ts +13 -0
- package/dist/postgres/postgresDialect.js +110 -0
- package/dist/querier/abstractQuerier-test.d.ts +45 -0
- package/dist/querier/abstractQuerier-test.js +461 -0
- package/dist/querier/abstractQuerier.d.ts +50 -0
- package/dist/querier/abstractQuerier.js +278 -0
- package/dist/querier/abstractQuerierPool-test.d.ts +9 -0
- package/dist/querier/abstractQuerierPool-test.js +18 -0
- package/dist/querier/abstractQuerierPool.d.ts +14 -0
- package/dist/querier/abstractQuerierPool.js +9 -0
- package/dist/querier/abstractSqlQuerier-test.d.ts +9 -0
- package/dist/querier/abstractSqlQuerier-test.js +16 -0
- package/dist/querier/abstractSqlQuerier.d.ts +28 -0
- package/dist/querier/abstractSqlQuerier.js +133 -0
- package/dist/querier/decorator/index.d.ts +3 -0
- package/dist/querier/decorator/index.js +4 -0
- package/dist/querier/decorator/injectQuerier.d.ts +3 -0
- package/dist/querier/decorator/injectQuerier.js +33 -0
- package/dist/querier/decorator/serialized.d.ts +6 -0
- package/dist/querier/decorator/serialized.js +14 -0
- package/{querier → dist/querier}/decorator/transactional.d.ts +1 -1
- package/dist/querier/decorator/transactional.js +48 -0
- package/dist/querier/index.d.ts +4 -0
- package/dist/querier/index.js +5 -0
- package/dist/repository/genericRepository.d.ts +20 -0
- package/dist/repository/genericRepository.js +51 -0
- package/dist/repository/index.d.ts +1 -0
- package/dist/repository/index.js +2 -0
- package/dist/sqlite/index.d.ts +3 -0
- package/dist/sqlite/index.js +4 -0
- package/dist/sqlite/sqliteDialect.d.ts +10 -0
- package/dist/sqlite/sqliteDialect.js +48 -0
- package/dist/sqlite/sqliteQuerier.d.ts +15 -0
- package/dist/sqlite/sqliteQuerier.js +33 -0
- package/dist/sqlite/sqliteQuerier.test.d.ts +5 -0
- package/dist/sqlite/sqliteQuerier.test.js +19 -0
- package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
- package/dist/sqlite/sqliteQuerierPool.js +34 -0
- package/dist/sqlite/sqliteQuerierPool.test.d.ts +5 -0
- package/dist/sqlite/sqliteQuerierPool.test.js +10 -0
- package/dist/test/entityMock.d.ts +164 -0
- package/dist/test/entityMock.js +554 -0
- package/dist/test/index.d.ts +3 -0
- package/dist/test/index.js +4 -0
- package/dist/test/it.util.d.ts +4 -0
- package/dist/test/it.util.js +55 -0
- package/dist/test/spec.util.d.ts +14 -0
- package/dist/test/spec.util.js +50 -0
- package/{type → dist/type}/entity.d.ts +97 -4
- package/dist/type/entity.js +5 -0
- package/dist/type/index.d.ts +9 -0
- package/dist/type/index.js +10 -0
- package/dist/type/migration.d.ts +213 -0
- package/dist/type/migration.js +2 -0
- package/dist/type/namingStrategy.d.ts +17 -0
- package/dist/type/namingStrategy.js +2 -0
- package/dist/type/querier.d.ts +96 -0
- package/dist/type/querier.js +11 -0
- package/{type → dist/type}/querierPool.d.ts +7 -3
- package/dist/type/querierPool.js +2 -0
- package/{type → dist/type}/query.d.ts +170 -108
- package/dist/type/query.js +9 -0
- package/{type → dist/type}/repository.d.ts +42 -35
- package/dist/type/repository.js +2 -0
- package/{type → dist/type}/universalQuerier.d.ts +50 -28
- package/dist/type/universalQuerier.js +2 -0
- package/dist/type/utility.d.ts +13 -0
- package/dist/type/utility.js +2 -0
- package/dist/util/dialect.util.d.ts +12 -0
- package/dist/util/dialect.util.js +93 -0
- package/dist/util/index.d.ts +5 -0
- package/dist/util/index.js +6 -0
- package/dist/util/object.util.d.ts +7 -0
- package/dist/util/object.util.js +19 -0
- package/dist/util/raw.d.ts +8 -0
- package/dist/util/raw.js +11 -0
- package/dist/util/sql.util.d.ts +13 -0
- package/dist/util/sql.util.js +78 -0
- package/{util → dist/util}/string.util.d.ts +1 -0
- package/dist/util/string.util.js +34 -0
- package/package.json +84 -16
- package/src/@types/index.d.ts +1 -0
- package/src/@types/jest.d.ts +6 -0
- package/src/browser/http/bus.spec.ts +22 -0
- package/src/browser/http/bus.ts +17 -0
- package/src/browser/http/http.spec.ts +70 -0
- package/src/browser/http/http.ts +55 -0
- package/src/browser/http/index.ts +2 -0
- package/src/browser/index.ts +4 -0
- package/src/browser/options.spec.ts +37 -0
- package/src/browser/options.ts +18 -0
- package/src/browser/querier/genericClientRepository.spec.ts +105 -0
- package/src/browser/querier/genericClientRepository.ts +49 -0
- package/src/browser/querier/httpQuerier.ts +82 -0
- package/src/browser/querier/index.ts +3 -0
- package/src/browser/querier/querier.util.spec.ts +35 -0
- package/src/browser/querier/querier.util.ts +18 -0
- package/src/browser/type/clientQuerier.ts +45 -0
- package/src/browser/type/clientQuerierPool.ts +5 -0
- package/src/browser/type/clientRepository.ts +22 -0
- package/src/browser/type/index.ts +4 -0
- package/src/browser/type/request.ts +25 -0
- package/src/dialect/abstractDialect.ts +28 -0
- package/src/dialect/abstractSqlDialect-spec.ts +1309 -0
- package/src/dialect/abstractSqlDialect.ts +805 -0
- package/src/dialect/index.ts +3 -0
- package/src/dialect/namingStrategy.spec.ts +52 -0
- package/src/dialect/queryContext.ts +69 -0
- package/src/entity/decorator/definition.spec.ts +736 -0
- package/src/entity/decorator/definition.ts +265 -0
- package/src/entity/decorator/entity.ts +8 -0
- package/src/entity/decorator/field.ts +9 -0
- package/src/entity/decorator/id.ts +9 -0
- package/src/entity/decorator/index.ts +5 -0
- package/src/entity/decorator/relation.spec.ts +41 -0
- package/src/entity/decorator/relation.ts +34 -0
- package/src/entity/index.ts +1 -0
- package/src/express/@types/express.d.ts +8 -0
- package/src/express/@types/index.d.ts +1 -0
- package/src/express/index.ts +2 -0
- package/src/express/querierMiddleware.ts +217 -0
- package/src/express/query.util.spec.ts +40 -0
- package/src/express/query.util.ts +21 -0
- package/src/index.ts +9 -0
- package/src/maria/index.ts +3 -0
- package/src/maria/mariaDialect.spec.ts +207 -0
- package/src/maria/mariaDialect.ts +42 -0
- package/src/maria/mariaQuerierPool.test.ts +23 -0
- package/src/maria/mariadbQuerier.test.ts +23 -0
- package/src/maria/mariadbQuerier.ts +45 -0
- package/src/maria/mariadbQuerierPool.ts +21 -0
- package/src/migrate/cli.ts +301 -0
- package/src/migrate/generator/index.ts +4 -0
- package/src/migrate/generator/mongoSchemaGenerator.spec.ts +112 -0
- package/src/migrate/generator/mongoSchemaGenerator.ts +115 -0
- package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +34 -0
- package/src/migrate/generator/mysqlSchemaGenerator.ts +92 -0
- package/src/migrate/generator/postgresSchemaGenerator.spec.ts +44 -0
- package/src/migrate/generator/postgresSchemaGenerator.ts +127 -0
- package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +33 -0
- package/src/migrate/generator/sqliteSchemaGenerator.ts +81 -0
- package/src/migrate/index.ts +41 -0
- package/src/migrate/introspection/index.ts +4 -0
- package/src/migrate/introspection/mongoIntrospector.spec.ts +75 -0
- package/src/migrate/introspection/mongoIntrospector.ts +47 -0
- package/src/migrate/introspection/mysqlIntrospector.spec.ts +113 -0
- package/src/migrate/introspection/mysqlIntrospector.ts +278 -0
- package/src/migrate/introspection/postgresIntrospector.spec.ts +112 -0
- package/src/migrate/introspection/postgresIntrospector.ts +329 -0
- package/src/migrate/introspection/sqliteIntrospector.spec.ts +112 -0
- package/src/migrate/introspection/sqliteIntrospector.ts +296 -0
- package/src/migrate/migrator-mongo.test.ts +54 -0
- package/src/migrate/migrator.spec.ts +255 -0
- package/src/migrate/migrator.test.ts +94 -0
- package/src/migrate/migrator.ts +719 -0
- package/src/migrate/namingStrategy.spec.ts +22 -0
- package/src/migrate/schemaGenerator-advanced.spec.ts +138 -0
- package/src/migrate/schemaGenerator.spec.ts +190 -0
- package/src/migrate/schemaGenerator.ts +478 -0
- package/src/migrate/storage/databaseStorage.spec.ts +69 -0
- package/src/migrate/storage/databaseStorage.ts +100 -0
- package/src/migrate/storage/index.ts +2 -0
- package/src/migrate/storage/jsonStorage.ts +58 -0
- package/src/migrate/type.ts +1 -0
- package/src/mongo/index.ts +3 -0
- package/src/mongo/mongoDialect.spec.ts +251 -0
- package/src/mongo/mongoDialect.ts +238 -0
- package/src/mongo/mongodbQuerier.test.ts +45 -0
- package/src/mongo/mongodbQuerier.ts +256 -0
- package/src/mongo/mongodbQuerierPool.test.ts +25 -0
- package/src/mongo/mongodbQuerierPool.ts +24 -0
- package/src/mysql/index.ts +3 -0
- package/src/mysql/mysql2Querier.test.ts +20 -0
- package/src/mysql/mysql2Querier.ts +49 -0
- package/src/mysql/mysql2QuerierPool.test.ts +20 -0
- package/src/mysql/mysql2QuerierPool.ts +21 -0
- package/src/mysql/mysqlDialect.spec.ts +20 -0
- package/src/mysql/mysqlDialect.ts +16 -0
- package/src/namingStrategy/defaultNamingStrategy.ts +18 -0
- package/src/namingStrategy/index.spec.ts +36 -0
- package/src/namingStrategy/index.ts +2 -0
- package/src/namingStrategy/snakeCaseNamingStrategy.ts +15 -0
- package/src/options.spec.ts +41 -0
- package/src/options.ts +18 -0
- package/src/postgres/index.ts +3 -0
- package/src/postgres/manual-types.d.ts +4 -0
- package/src/postgres/pgQuerier.test.ts +25 -0
- package/src/postgres/pgQuerier.ts +45 -0
- package/src/postgres/pgQuerierPool.test.ts +28 -0
- package/src/postgres/pgQuerierPool.ts +21 -0
- package/src/postgres/postgresDialect.spec.ts +428 -0
- package/src/postgres/postgresDialect.ts +144 -0
- package/src/querier/abstractQuerier-test.ts +584 -0
- package/src/querier/abstractQuerier.ts +353 -0
- package/src/querier/abstractQuerierPool-test.ts +20 -0
- package/src/querier/abstractQuerierPool.ts +18 -0
- package/src/querier/abstractSqlQuerier-spec.ts +979 -0
- package/src/querier/abstractSqlQuerier-test.ts +21 -0
- package/src/querier/abstractSqlQuerier.ts +138 -0
- package/src/querier/decorator/index.ts +3 -0
- package/src/querier/decorator/injectQuerier.spec.ts +74 -0
- package/src/querier/decorator/injectQuerier.ts +45 -0
- package/src/querier/decorator/serialized.spec.ts +98 -0
- package/src/querier/decorator/serialized.ts +13 -0
- package/src/querier/decorator/transactional.spec.ts +240 -0
- package/src/querier/decorator/transactional.ts +56 -0
- package/src/querier/index.ts +4 -0
- package/src/repository/genericRepository.spec.ts +111 -0
- package/src/repository/genericRepository.ts +74 -0
- package/src/repository/index.ts +1 -0
- package/src/sqlite/index.ts +3 -0
- package/src/sqlite/manual-types.d.ts +4 -0
- package/src/sqlite/sqliteDialect.spec.ts +155 -0
- package/src/sqlite/sqliteDialect.ts +76 -0
- package/src/sqlite/sqliteQuerier.spec.ts +36 -0
- package/src/sqlite/sqliteQuerier.test.ts +21 -0
- package/src/sqlite/sqliteQuerier.ts +37 -0
- package/src/sqlite/sqliteQuerierPool.test.ts +12 -0
- package/src/sqlite/sqliteQuerierPool.ts +38 -0
- package/src/test/entityMock.ts +375 -0
- package/src/test/index.ts +3 -0
- package/src/test/it.util.ts +69 -0
- package/src/test/spec.util.ts +57 -0
- package/src/type/entity.ts +218 -0
- package/src/type/index.ts +9 -0
- package/src/type/migration.ts +241 -0
- package/src/type/namingStrategy.ts +17 -0
- package/src/type/querier.ts +143 -0
- package/src/type/querierPool.ts +26 -0
- package/src/type/query.ts +506 -0
- package/src/type/repository.ts +142 -0
- package/src/type/universalQuerier.ts +133 -0
- package/src/type/utility.ts +21 -0
- package/src/util/dialect.util-extra.spec.ts +96 -0
- package/src/util/dialect.util.spec.ts +23 -0
- package/src/util/dialect.util.ts +134 -0
- package/src/util/index.ts +5 -0
- package/src/util/object.util.spec.ts +29 -0
- package/src/util/object.util.ts +27 -0
- package/src/util/raw.ts +11 -0
- package/src/util/sql.util-extra.spec.ts +17 -0
- package/src/util/sql.util.spec.ts +208 -0
- package/src/util/sql.util.ts +104 -0
- package/src/util/string.util.spec.ts +46 -0
- package/src/util/string.util.ts +35 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +8 -0
- package/README.md +0 -177
- package/dialect/abstractSqlDialect.d.ts +0 -30
- package/dialect/abstractSqlDialect.js +0 -365
- package/dialect/index.d.ts +0 -4
- package/dialect/index.js +0 -8
- package/dialect/mysqlDialect.d.ts +0 -6
- package/dialect/mysqlDialect.js +0 -21
- package/dialect/postgresDialect.d.ts +0 -8
- package/dialect/postgresDialect.js +0 -44
- package/dialect/sqliteDialect.d.ts +0 -4
- package/dialect/sqliteDialect.js +0 -11
- package/entity/decorator/definition.js +0 -223
- package/entity/decorator/entity.js +0 -11
- package/entity/decorator/field.js +0 -12
- package/entity/decorator/id.js +0 -12
- package/entity/decorator/index.d.ts +0 -5
- package/entity/decorator/index.js +0 -12
- package/entity/decorator/relation.js +0 -27
- package/entity/index.d.ts +0 -1
- package/entity/index.js +0 -5
- package/index.d.ts +0 -1
- package/index.js +0 -5
- package/options.js +0 -20
- package/querier/abstractQuerier.d.ts +0 -30
- package/querier/abstractQuerier.js +0 -230
- package/querier/abstractSqlQuerier.d.ts +0 -27
- package/querier/abstractSqlQuerier.js +0 -88
- package/querier/decorator/index.d.ts +0 -2
- package/querier/decorator/index.js +0 -6
- package/querier/decorator/injectQuerier.d.ts +0 -3
- package/querier/decorator/injectQuerier.js +0 -39
- package/querier/decorator/transactional.js +0 -52
- package/querier/index.d.ts +0 -3
- package/querier/index.js +0 -7
- package/repository/genericRepository.d.ts +0 -19
- package/repository/genericRepository.js +0 -52
- package/repository/index.d.ts +0 -1
- package/repository/index.js +0 -5
- package/type/entity.js +0 -5
- package/type/index.d.ts +0 -7
- package/type/index.js +0 -11
- package/type/querier.d.ts +0 -53
- package/type/querier.js +0 -3
- package/type/querierPool.js +0 -3
- package/type/query.js +0 -13
- package/type/repository.js +0 -3
- package/type/universalQuerier.js +0 -3
- package/type/utility.d.ts +0 -12
- package/type/utility.js +0 -3
- package/util/dialect.util.d.ts +0 -17
- package/util/dialect.util.js +0 -114
- package/util/index.d.ts +0 -5
- package/util/index.js +0 -9
- package/util/object.util.d.ts +0 -3
- package/util/object.util.js +0 -22
- package/util/raw.d.ts +0 -2
- package/util/raw.js +0 -9
- package/util/sql.util.d.ts +0 -2
- package/util/sql.util.js +0 -55
- package/util/string.util.js +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uql-browser.min.js","sources":["../../src/test/entityMock.ts","../../src/entity/decorator/definition.ts","../../src/test/it.util.ts","../../src/test/spec.util.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { Entity, Field, Id, ManyToMany, ManyToOne, OneToMany, OneToOne } from '../entity/index.js';\nimport { idKey, type Relation } from '../type/index.js';\nimport { raw } from '../util/index.js';\n\n/**\n * an `abstract` class can (optionally) be used as the base \"template\" for the entities\n * (so common fields' declaration is easily reused).\n */\nexport abstract class BaseEntity {\n /**\n * auto-generated primary-key (when the `onInsert` property is omitted).\n */\n @Id()\n id?: number;\n\n /**\n * foreign-keys are really simple to specify with the `reference` property.\n */\n @Field({ reference: () => Company })\n companyId?: number;\n\n /**\n * The `Relation` wrapper type can be used in ESM projects for the relations to\n * avoid circular dependency issues.\n */\n @ManyToOne({ entity: () => Company })\n company?: Relation<Company>;\n\n @Field({ reference: () => User })\n creatorId?: number;\n\n @ManyToOne({ entity: () => User })\n creator?: Relation<User>;\n\n /**\n * 'onInsert' property can be used to specify a custom mechanism for\n * obtaining the value of a field when inserting:\n */\n @Field({ onInsert: Date.now })\n createdAt?: number;\n\n /**\n * 'onUpdate' property can be used to specify a custom mechanism for\n * obtaining the value of a field when updating:\n */\n @Field({ onUpdate: Date.now })\n updatedAt?: number;\n}\n\nexport type CompanyKindKey = 'public' | 'private';\n\nexport type CompanyKind = { [k in CompanyKindKey]?: 0 | 1 };\n\n/**\n * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.\n */\n@Entity()\nexport class Company extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ type: 'jsonb' })\n kind?: CompanyKind;\n}\n\n/**\n * and entity can specify the table name.\n */\n@Entity({ name: 'user_profile' })\nexport class Profile extends BaseEntity {\n /**\n * an entity can specify its own ID Field and still inherit the others\n * columns/relations from its parent entity.\n */\n @Id()\n pk?: number;\n\n @Field({ name: 'image' })\n picture?: string;\n\n @OneToOne({ entity: () => User })\n declare creator?: Relation<User>;\n}\n\n@Entity()\nexport class User extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ updatable: false })\n email?: string;\n\n @Field({ eager: false })\n password?: string;\n\n /**\n * `mappedBy` property can be a callback or a string (callback is useful for auto-refactoring).\n */\n @OneToOne({ entity: () => Profile, mappedBy: (profile) => profile.creator, cascade: true })\n profile?: Profile;\n\n @OneToMany({ entity: () => User, mappedBy: 'creator' })\n users?: User[];\n}\n\n@Entity()\nexport class UserWithNonUpdatableId {\n @Id({ updatable: false })\n id: number;\n\n @Field()\n name: string;\n}\n\n@Entity()\nexport class LedgerAccount extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ reference: () => LedgerAccount })\n parentLedgerId?: number;\n\n @ManyToOne()\n parentLedger?: LedgerAccount;\n}\n\n@Entity()\nexport class TaxCategory extends BaseEntity {\n /**\n * `idKey` symbol can be used to specify the name of the identifier property,\n * so the type of the identifier can always be type-safe\n * (the identifiers named as `id` or `_id` are auto-inferred).\n */\n [idKey]?: 'pk';\n\n /**\n * an entity can override the ID Field and still inherit the others\n * columns/relations from its parent entity.\n * 'onInsert' property can be used to specify a custom mechanism for\n * auto-generating the primary-key's value when inserting.\n */\n @Id({ onInsert: randomUUID })\n pk?: string;\n\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Tax extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n percentage?: number;\n\n @Field({ reference: () => TaxCategory })\n categoryId?: string;\n\n @ManyToOne()\n category?: TaxCategory;\n\n @Field()\n description?: string;\n}\n\n/**\n * `softDelete` will make the entity \"soft deletable\".\n */\n@Entity({ softDelete: true })\nexport class MeasureUnitCategory extends BaseEntity {\n @Field()\n name?: string;\n\n @OneToMany({ entity: () => MeasureUnit, mappedBy: (measureUnit) => measureUnit.categoryId })\n measureUnits?: MeasureUnit[];\n\n /**\n * `onDelete` callback allows to specify which field will be used when deleting/querying this entity.\n */\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity({ softDelete: true })\nexport class MeasureUnit extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ reference: () => MeasureUnitCategory })\n categoryId?: number;\n\n @ManyToOne({ cascade: 'persist' })\n category?: MeasureUnitCategory;\n\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity()\nexport class Storehouse extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n address?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Item extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field()\n code?: string;\n\n @Field({ reference: () => LedgerAccount })\n buyLedgerAccountId?: number;\n\n @ManyToOne()\n buyLedgerAccount?: LedgerAccount;\n\n @Field({ reference: () => LedgerAccount })\n saleLedgerAccountId?: number;\n\n @ManyToOne()\n saleLedgerAccount?: LedgerAccount;\n\n @Field({ reference: () => Tax })\n taxId?: number;\n\n @ManyToOne()\n tax?: Tax;\n\n @Field({ reference: () => MeasureUnit })\n measureUnitId?: number;\n\n @ManyToOne()\n measureUnit?: MeasureUnit;\n\n @Field()\n salePrice?: number;\n\n @Field()\n inventoryable?: boolean;\n\n @ManyToMany({ entity: () => Tag, through: () => ItemTag, cascade: true })\n tags?: Tag[];\n\n @Field({\n /**\n * `virtual` property allows defining the value for a non-persistent field,\n * such value might be a scalar or a (`raw`) function. Virtual-fields can\n * be used in `$select` and `$where` as a common field whose value is\n * replaced is replaced at runtime.\n */\n virtual: raw(({ ctx, escapedPrefix, dialect }) => {\n ctx.append('(');\n dialect.count(\n ctx,\n ItemTag,\n {\n $where: {\n itemId: raw(({ ctx }) => {\n ctx.append(escapedPrefix + dialect.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx.append(')');\n }),\n })\n tagsCount?: number;\n}\n\n@Entity()\nexport class Tag extends BaseEntity {\n @Field()\n name?: string;\n\n @ManyToMany({ entity: () => Item, mappedBy: (item) => item.tags })\n items?: Item[];\n\n @Field({\n virtual: raw(({ ctx, escapedPrefix, dialect }) => {\n ctx.append('(');\n dialect.count(\n ctx,\n ItemTag,\n {\n $where: {\n tagId: raw(({ ctx }) => {\n ctx.append(escapedPrefix + dialect.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx.append(')');\n }),\n })\n itemsCount?: number;\n}\n\n@Entity()\nexport class ItemTag {\n @Id()\n id?: number;\n\n @Field({ reference: () => Item })\n itemId?: number;\n\n @Field({ reference: () => Tag })\n tagId?: number;\n}\n\n@Entity()\nexport class InventoryAdjustment extends BaseEntity {\n @OneToMany({\n entity: () => ItemAdjustment,\n mappedBy: (rel) => rel.inventoryAdjustment,\n cascade: true,\n })\n itemAdjustments?: ItemAdjustment[];\n\n @Field()\n date?: Date;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class ItemAdjustment extends BaseEntity {\n @Field({ reference: () => Item })\n itemId?: number;\n\n @ManyToOne()\n item?: Item;\n\n @Field()\n number?: number;\n\n @Field()\n buyPrice?: number;\n\n @Field({ reference: () => Storehouse })\n storehouseId?: number;\n\n @ManyToOne()\n storehouse?: Storehouse;\n\n @Field({ reference: () => InventoryAdjustment })\n inventoryAdjustmentId?: number;\n\n @ManyToOne()\n inventoryAdjustment?: InventoryAdjustment;\n}\n","import 'reflect-metadata';\nimport type {\n EntityMeta,\n EntityOptions,\n FieldKey,\n FieldOptions,\n IdKey,\n Key,\n RelationKey,\n RelationKeyMap,\n RelationOptions,\n Type,\n} from '../../type/index.js';\nimport { getKeys, hasKeys, lowerFirst, upperFirst } from '../../util/index.js';\n\nconst holder = globalThis;\nconst metaKey = '@uql/core/entity/decorator';\nconst metas: Map<Type<unknown>, EntityMeta<any>> = holder[metaKey] ?? new Map();\nholder[metaKey] = metas;\n\nexport function defineField<E>(entity: Type<E>, key: string, opts: FieldOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!opts.type) {\n const type = inferType(entity, key);\n opts = { ...opts, type };\n }\n meta.fields[key] = { ...meta.fields[key], ...{ name: key, ...opts } };\n return meta;\n}\n\nexport function defineId<E>(entity: Type<E>, key: string, opts: FieldOptions): EntityMeta<E> {\n const meta = ensureMeta(entity);\n const id = getIdKey(meta);\n if (id) {\n console.info(`Overriding ID property for '${entity.name}' from '${id}' to '${key}'`);\n delete meta.fields[id];\n }\n return defineField(entity, key, { ...opts, isId: true });\n}\n\nexport function defineRelation<E>(entity: Type<E>, key: string, opts: RelationOptions<E>): EntityMeta<E> {\n if (!opts.entity) {\n const inferredType = inferEntityType(entity, key);\n opts.entity = () => inferredType;\n }\n const meta = ensureMeta(entity);\n meta.relations[key] = { ...meta.relations[key], ...opts };\n return meta;\n}\n\nexport function defineEntity<E>(entity: Type<E>, opts: EntityOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n\n if (!hasKeys(meta.fields)) {\n throw TypeError(`'${entity.name}' must have fields`);\n }\n\n const onDeleteKeys = getKeys(meta.fields).filter((key) => meta.fields[key].onDelete) as FieldKey<E>[];\n\n if (onDeleteKeys.length > 1) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' as maximum`);\n }\n\n if (opts.softDelete) {\n if (!onDeleteKeys.length) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' to enable 'softDelete'`);\n }\n meta.softDelete = onDeleteKeys[0];\n }\n\n meta.name = opts.name ?? entity.name;\n let proto: FunctionConstructor = Object.getPrototypeOf(entity.prototype);\n\n while (proto.constructor !== Object) {\n const parentMeta = ensureMeta(proto.constructor as Type<E>);\n extendMeta(meta, parentMeta);\n proto = Object.getPrototypeOf(proto);\n }\n\n const id = getIdKey(meta);\n if (!id) {\n throw TypeError(`'${entity.name}' must have one field decorated with @Id`);\n }\n meta.id = id;\n\n return meta;\n}\n\nexport function getEntities(): Type<unknown>[] {\n return [...metas.entries()].reduce((acc, [key, val]) => {\n if (val.id) {\n acc.push(key);\n }\n return acc;\n }, []);\n}\n\nfunction ensureMeta<E>(entity: Type<E>): EntityMeta<E> {\n let meta = metas.get(entity);\n if (meta) {\n return meta;\n }\n meta = { entity, fields: {}, relations: {} };\n metas.set(entity, meta);\n return meta;\n}\n\nexport function getMeta<E>(entity: Type<E>): EntityMeta<E> {\n const meta = metas.get(entity);\n if (!meta) {\n throw TypeError(`'${entity.name}' is not an entity`);\n }\n if (meta.processed) {\n return meta;\n }\n meta.processed = true;\n return fillRelations(meta);\n}\n\nfunction fillRelations<E>(meta: EntityMeta<E>): EntityMeta<E> {\n for (const relKey in meta.relations) {\n const relOpts = meta.relations[relKey as RelationKey<E>];\n\n if (relOpts.references) {\n // references were manually specified\n continue;\n }\n\n if (relOpts.mappedBy) {\n fillInverseSideRelations(relOpts);\n continue;\n }\n\n const relEntity = relOpts.entity();\n const relMeta = ensureMeta(relEntity);\n\n if (relOpts.cardinality === 'mm') {\n const idName = meta.fields[meta.id].name;\n const relIdName = relMeta.fields[relMeta.id].name;\n const source = lowerFirst(meta.name) + upperFirst(idName);\n const target = lowerFirst(relMeta.name) + upperFirst(relIdName);\n relOpts.references = [\n { local: source, foreign: meta.id },\n { local: target, foreign: relMeta.id },\n ];\n } else {\n relOpts.references = [{ local: `${relKey}Id`, foreign: relMeta.id }];\n }\n\n if (relOpts.through) {\n fillThroughRelations(relOpts.through());\n }\n }\n\n return meta;\n}\n\nfunction fillInverseSideRelations<E>(relOpts: RelationOptions<E>): void {\n const relEntity = relOpts.entity();\n const relMeta = getMeta(relEntity);\n relOpts.mappedBy = getMappedByRelationKey(relOpts);\n\n if (relMeta.fields[relOpts.mappedBy as FieldKey<E>]) {\n relOpts.references = [{ local: relMeta.id, foreign: relOpts.mappedBy }];\n return;\n }\n\n const mappedByRelation = relMeta.relations[relOpts.mappedBy as RelationKey<E>];\n\n if (relOpts.cardinality === 'm1' || relOpts.cardinality === 'mm') {\n relOpts.references = mappedByRelation.references.slice().reverse();\n relOpts.through = mappedByRelation.through;\n return;\n }\n\n relOpts.references = mappedByRelation.references.map(({ local, foreign }) => ({\n local: foreign,\n foreign: local,\n }));\n}\n\nfunction fillThroughRelations<E>(entity: Type<E>): void {\n const meta = ensureMeta(entity);\n meta.relations = getKeys(meta.fields).reduce((relations, key) => {\n const { reference } = meta.fields[key as FieldKey<E>];\n if (reference) {\n const relEntity = reference();\n const relMeta = ensureMeta(relEntity);\n const relKey = key.slice(0, -relMeta.id.length);\n const relOpts: RelationOptions = {\n entity: reference,\n cardinality: 'm1',\n references: [{ local: key, foreign: relMeta.id }],\n };\n relations[relKey] = relOpts;\n }\n return relations;\n }, {});\n}\n\nfunction getMappedByRelationKey<E>(relOpts: RelationOptions<E>): Key<E> {\n if (typeof relOpts.mappedBy === 'function') {\n const relEntity = relOpts.entity();\n const relMeta = ensureMeta(relEntity);\n const keyMap = getRelationKeyMap(relMeta);\n return relOpts.mappedBy(keyMap);\n }\n return relOpts.mappedBy;\n}\n\nfunction getRelationKeyMap<E>(meta: EntityMeta<E>): RelationKeyMap<E> {\n return getKeys(meta.fields)\n .concat(getKeys(meta.relations))\n .reduce(\n (acc, key) => {\n acc[key] = key;\n return acc;\n },\n {} as RelationKeyMap<E>,\n );\n}\n\nfunction getIdKey<E>(meta: EntityMeta<E>): IdKey<E> {\n const id = getKeys(meta.fields).find((key) => meta.fields[key]?.isId);\n return id as IdKey<E>;\n}\n\nfunction extendMeta<E>(target: EntityMeta<E>, source: EntityMeta<E>): void {\n const sourceFields = { ...source.fields };\n const targetId = getIdKey(target);\n if (targetId) {\n const sourceId = getIdKey(source);\n if (sourceId) {\n delete sourceFields[sourceId];\n }\n }\n target.fields = { ...sourceFields, ...target.fields };\n target.relations = { ...source.relations, ...target.relations };\n}\n\nfunction inferType<E>(entity: Type<E>, key: string): any {\n return Reflect.getMetadata('design:type', entity.prototype, key);\n}\n\nfunction inferEntityType<E>(entity: Type<E>, key: string): Type<any> {\n const inferredType = inferType(entity, key);\n const isValidType = isValidEntityType(inferredType);\n if (!isValidType) {\n console.log('****', entity, key, inferredType);\n throw TypeError(`'${entity.name}.${key}' type was auto-inferred with invalid type '${inferredType?.name}'`);\n }\n return inferredType;\n}\n\nexport function isValidEntityType(type: unknown): type is Type<unknown> {\n return (\n typeof type === 'function' &&\n type !== Boolean &&\n type !== String &&\n type !== Number &&\n type !== BigInt &&\n type !== Date &&\n type !== Symbol\n );\n}\n","import { getEntities, getMeta } from '../entity/decorator/index.js';\nimport type { AbstractSqlQuerier } from '../querier/index.js';\nimport type { Type } from '../type/index.js';\nimport { getKeys } from '../util/index.js';\n\nexport async function createTables(querier: AbstractSqlQuerier, primaryKeyType: string) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const sql = getDdlForTable(entity, querier, primaryKeyType);\n return querier.run(sql);\n }),\n );\n}\n\nexport async function dropTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const meta = getMeta(entity);\n const sql = `DROP TABLE IF EXISTS ${querier.dialect.escapeId(meta.name)}`;\n return querier.run(sql);\n }),\n );\n}\n\nexport async function clearTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const ctx = querier.dialect.createContext();\n querier.dialect.delete(ctx, entity, {});\n return querier.run(ctx.sql, ctx.values);\n }),\n );\n}\n\nfunction getDdlForTable<E>(entity: Type<E>, querier: AbstractSqlQuerier, primaryKeyType: string) {\n const meta = getMeta(entity);\n\n let sql = `CREATE TABLE ${querier.dialect.escapeId(meta.name)} (\\n\\t`;\n\n const insertableIdType = 'VARCHAR(36)';\n const defaultType = 'VARCHAR(255)';\n\n const columns = getKeys(meta.fields).map((key) => {\n const field = meta.fields[key];\n let propSql = querier.dialect.escapeId(field.name) + ' ';\n if (field.isId) {\n propSql += field.onInsert ? `${insertableIdType} PRIMARY KEY` : primaryKeyType;\n } else {\n if (field.type === Number) {\n propSql += 'BIGINT';\n } else if (field.type === Date) {\n propSql += 'TIMESTAMP';\n } else {\n propSql += defaultType;\n }\n }\n return propSql;\n });\n\n sql += columns.join(',\\n\\t');\n sql += `\\n);`;\n\n // log('sql', sql);\n\n return sql;\n}\n","import { afterAll, afterEach, beforeAll, beforeEach, describe, it } from 'bun:test';\n\nexport function createSpec<T extends Spec>(spec: T) {\n const proto: FunctionConstructor = Object.getPrototypeOf(spec);\n let describeFn: typeof describe;\n const specName = proto.constructor.name;\n\n if (specName.startsWith('fff')) {\n describeFn = describe.only;\n } else if (specName.startsWith('xxx')) {\n describeFn = describe.skip;\n } else {\n describeFn = describe;\n }\n\n describeFn(specName, () => createTestCases(spec));\n}\n\nfunction createTestCases(spec: object) {\n let proto: FunctionConstructor = Object.getPrototypeOf(spec);\n\n const processedMethodsMap: { [k: string]: true } = {};\n\n while (proto.constructor !== Object) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const isProcessed = processedMethodsMap[key];\n processedMethodsMap[key] = true;\n if (isProcessed || key === 'constructor' || typeof spec[key] !== 'function') {\n continue;\n }\n const callback: () => void | Promise<void> = spec[key].bind(spec);\n if (hooks[key]) {\n hooks[key](callback);\n } else if (key.startsWith('should')) {\n it(key, callback);\n } else if (key.startsWith('fffShould')) {\n it.only(key, callback);\n } else if (key.startsWith('xxxShould')) {\n it.skip(key, callback);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n}\n\nconst hooks = {\n beforeAll,\n beforeEach,\n afterEach,\n afterAll,\n} as const;\n\ntype SpecHooks = Partial<typeof hooks>;\n\nexport type Spec = SpecHooks & {\n readonly [k: string]: (() => void | Promise<void>) | any;\n};\n"],"names":["id","companyId","company","creatorId","creator","createdAt","updatedAt","BaseEntity","name","description","kind","pk","picture","email","password","profile","users","parentLedgerId","parentLedger","percentage","categoryId","category","measureUnits","deletedAt","address","code","buyLedgerAccountId","buyLedgerAccount","saleLedgerAccountId","saleLedgerAccount","taxId","tax","measureUnitId","measureUnit","salePrice","inventoryable","tags","tagsCount","items","itemsCount","itemId","tagId","itemAdjustments","date","item","number","buyPrice","storehouseId","storehouse","inventoryAdjustmentId","inventoryAdjustment","Id","Field","reference","Company","ManyToOne","entity","User","onInsert","Date","now","onUpdate","Entity","type","Profile","updatable","eager","OneToOne","mappedBy","cascade","OneToMany","UserWithNonUpdatableId","LedgerAccount","randomUUID","TaxCategory","Tax","softDelete","MeasureUnit","onDelete","MeasureUnitCategory","Storehouse","ManyToMany","Tag","through","ItemTag","virtual","raw","ctx","escapedPrefix","dialect","append","count","$where","escapeId","autoPrefix","Item","ItemAdjustment","rel","InventoryAdjustment","holder","globalThis","metaKey","metas","Map","getEntities","entries","reduce","acc","key","val","push","ensureMeta","meta","get","fields","relations","set","getMeta","TypeError","processed","fillRelations","relKey","relOpts","references","fillInverseSideRelations","relEntity","relMeta","cardinality","idName","relIdName","source","lowerFirst","upperFirst","target","local","foreign","fillThroughRelations","getMappedByRelationKey","mappedByRelation","slice","reverse","map","getKeys","length","keyMap","getRelationKeyMap","concat","createTables","querier","primaryKeyType","entities","Promise","all","sql","getDdlForTable","run","dropTables","clearTables","createContext","delete","values","insertableIdType","defaultType","columns","field","propSql","isId","Number","join","createSpec","spec","proto","Object","getPrototypeOf","describeFn","specName","startsWith","describe","only","skip","createTestCases","processedMethodsMap","getOwnPropertyNames","isProcessed","callback","bind","hooks","it","beforeAll","beforeEach","afterEach","afterAll"],"mappings":"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"}le_info(${this.escapeId(tableName)})`;\n\n const results = await querier.all<{\n cid: number;\n name: string;\n type: string;\n notnull: number;\n dflt_value: string | null;\n pk: number;\n }>(sql);\n\n // Get unique columns from indexes\n const uniqueColumns = await this.getUniqueColumns(querier, tableName);\n\n return results.map((row: any) => ({\n name: row.name,\n type: this.normalizeType(row.type),\n nullable: row.notnull === 0,\n defaultValue: this.parseDefaultValue(row.dflt_value),\n isPrimaryKey: row.pk > 0,\n isAutoIncrement: row.pk > 0 && row.type.toUpperCase() === 'INTEGER',\n isUnique: uniqueColumns.has(row.name),\n length: this.extractLength(row.type),\n precision: undefined,\n scale: undefined,\n comment: undefined, // SQLite doesn't support column comments\n }));\n }\n\n private async getUniqueColumns(querier: SqlQuerier, tableName: string): Promise<Set<string>> {\n const sql = `PRAGMA index_list(${this.escapeId(tableName)})`;\n\n const indexes = await querier.all<{\n seq: number;\n name: string;\n unique: number;\n origin: string;\n partial: number;\n }>(sql);\n\n const uniqueColumns = new Set<string>();\n\n for (const index of indexes) {\n if (index.unique && index.origin === 'u') {\n const indexInfo = await querier.all<{ name: string }>(`PRAGMA index_info(${this.escapeId(index.name)})`);\n // Only single-column unique constraints\n if (indexInfo.length === 1) {\n uniqueColumns.add(indexInfo[0].name);\n }\n }\n }\n\n return uniqueColumns;\n }\n\n private async getIndexes(querier: SqlQuerier, tableName: string): Promise<IndexSchema[]> {\n const sql = `PRAGMA index_list(${this.escapeId(tableName)})`;\n\n const indexes = await querier.all<{\n seq: number;\n name: string;\n unique: number;\n origin: string;\n partial: number;\n }>(sql);\n\n const result: IndexSchema[] = [];\n\n for (const index of indexes) {\n // Skip auto-generated indexes (primary key, unique constraints)\n if (index.origin !== 'c') {\n continue;\n }\n\n const columns = await querier.all<{ name: string }>(`PRAGMA index_info(${this.escapeId(index.name)})`);\n\n result.push({\n name: index.name,\n columns: columns.map((c: any) => c.name),\n unique: Boolean(index.unique),\n });\n }\n\n return result;\n }\n\n private async getForeignKeys(querier: SqlQuerier, tableName: string): Promise<ForeignKeySchema[]> {\n const sql = `PRAGMA foreign_key_list(${this.escapeId(tableName)})`;\n\n const results = await querier.all<{\n id: number;\n seq: number;\n table: string;\n from: string;\n to: string;\n on_update: string;\n on_delete: string;\n match: string;\n }>(sql);\n\n // Group by id to handle composite foreign keys\n const grouped = new Map<number, typeof results>();\n for (const row of results) {\n const existing = grouped.get(row.id) ?? [];\n existing.push(row);\n grouped.set(row.id, existing);\n }\n\n return Array.from(grouped.entries()).map(([id, rows]) => {\n const first = rows[0];\n return {\n name: `fk_${tableName}_${id}`,\n columns: rows.map((r: any) => r.from),\n referencedTable: first.table,\n referencedColumns: rows.map((r: any) => r.to),\n onDelete: this.normalizeReferentialAction(first.on_delete),\n onUpdate: this.normalizeReferentialAction(first.on_update),\n };\n });\n }\n\n private async getPrimaryKey(querier: SqlQuerier, tableName: string): Promise<string[] | undefined> {\n const sql = `PRAGMA table_info(${this.escapeId(tableName)})`;\n\n const results = await querier.all<{\n cid: number;\n name: string;\n type: string;\n notnull: number;\n dflt_value: string | null;\n pk: number;\n }>(sql);\n\n const pkColumns = results.filter((r: any) => r.pk > 0).sort((a: any, b: any) => a.pk - b.pk);\n\n if (pkColumns.length === 0) {\n return undefined;\n }\n\n return pkColumns.map((r: any) => r.name);\n }\n\n private escapeId(identifier: string): string {\n return `\\`${identifier.replace(/`/g, '``')}\\``;\n }\n\n private normalizeType(type: string): string {\n // Extract base type without length/precision\n const match = type.match(/^([A-Za-z]+)/);\n return match ? match[1].toUpperCase() : type.toUpperCase();\n }\n\n private extractLength(type: string): number | undefined {\n const match = type.match(/\\((\\d+)\\)/);\n return match ? Number.parseInt(match[1], 10) : undefined;\n }\n\n private parseDefaultValue(defaultValue: string | null): unknown {\n if (defaultValue === null) {\n return undefined;\n }\n\n // Check for common patterns\n if (defaultValue === 'NULL') {\n return null;\n }\n if (defaultValue === 'CURRENT_TIMESTAMP' || defaultValue === 'CURRENT_DATE' || defaultValue === 'CURRENT_TIME') {\n return defaultValue;\n }\n if (/^'.*'$/.test(defaultValue)) {\n return defaultValue.slice(1, -1);\n }\n if (/^-?\\d+$/.test(defaultValue)) {\n return Number.parseInt(defaultValue, 10);\n }\n if (/^-?\\d+\\.\\d+$/.test(defaultValue)) {\n return Number.parseFloat(defaultValue);\n }\n\n return defaultValue;\n }\n\n private normalizeReferentialAction(action: string): 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION' | undefined {\n switch (action.toUpperCase()) {\n case 'CASCADE':\n return 'CASCADE';\n case 'SET NULL':\n return 'SET NULL';\n case 'RESTRICT':\n return 'RESTRICT';\n case 'NO ACTION':\n return 'NO ACTION';\n default:\n return undefined;\n }\n }\n}\n","import { AbstractDialect } from '../../dialect/index.js';\nimport { getMeta } from '../../entity/index.js';\nimport type { IndexSchema, SchemaDiff, SchemaGenerator, TableSchema, Type } from '../../type/index.js';\n\nexport class MongoSchemaGenerator extends AbstractDialect implements SchemaGenerator {\n generateCreateTable<E>(entity: Type<E>): string {\n const meta = getMeta(entity);\n const collectionName = this.resolveTableName(entity, meta);\n const indexes: IndexSchema[] = [];\n\n for (const key in meta.fields) {\n const field = meta.fields[key];\n if (field.index) {\n const columnName = this.resolveColumnName(key, field);\n const indexName = typeof field.index === 'string' ? field.index : `idx_${collectionName}_${columnName}`;\n indexes.push({\n name: indexName,\n columns: [columnName],\n unique: !!field.unique,\n });\n }\n }\n\n return JSON.stringify({ action: 'createCollection', name: collectionName, indexes });\n }\n\n generateDropTable<E>(entity: Type<E>): string {\n const meta = getMeta(entity);\n const collectionName = this.resolveTableName(entity, meta);\n return JSON.stringify({ action: 'dropCollection', name: collectionName });\n }\n\n generateAlterTable(diff: SchemaDiff): string[] {\n const statements: string[] = [];\n if (diff.indexesToAdd?.length) {\n for (const index of diff.indexesToAdd) {\n statements.push(this.generateCreateIndex(diff.tableName, index));\n }\n }\n return statements;\n }\n\n generateAlterTableDown(diff: SchemaDiff): string[] {\n const statements: string[] = [];\n if (diff.indexesToAdd?.length) {\n for (const index of diff.indexesToAdd) {\n statements.push(this.generateDropIndex(diff.tableName, index.name));\n }\n }\n return statements;\n }\n\n generateCreateIndex(tableName: string, index: IndexSchema): string {\n const key: Record<string, number> = {};\n for (const col of index.columns) {\n key[col] = 1;\n }\n return JSON.stringify({\n action: 'createIndex',\n collection: tableName,\n name: index.name,\n key,\n options: { unique: index.unique, name: index.name },\n });\n }\n\n generateDropIndex(tableName: string, indexName: string): string {\n return JSON.stringify({\n action: 'dropIndex',\n collection: tableName,\n name: indexName,\n });\n }\n\n getSqlType(): string {\n return '';\n }\n\n diffSchema<E>(entity: Type<E>, currentSchema: TableSchema | undefined): SchemaDiff | undefined {\n const meta = getMeta(entity);\n const collectionName = this.resolveTableName(entity, meta);\n\n if (!currentSchema) {\n return { tableName: collectionName, type: 'create' };\n }\n\n const indexesToAdd: IndexSchema[] = [];\n const existingIndexes = new Set(currentSchema.indexes?.map((i: IndexSchema) => i.name) ?? []);\n\n for (const key in meta.fields) {\n const field = meta.fields[key];\n if (field.index) {\n const columnName = this.resolveColumnName(key, field);\n const indexName = typeof field.index === 'string' ? field.index : `idx_${collectionName}_${columnName}`;\n if (!existingIndexes.has(indexName)) {\n indexesToAdd.push({\n name: indexName,\n columns: [columnName],\n unique: !!field.unique,\n });\n }\n }\n }\n\n if (indexesToAdd.length === 0) {\n return undefined;\n }\n\n return {\n tableName: collectionName,\n type: 'alter',\n indexesToAdd,\n };\n }\n}\n","import type { MongoQuerier, QuerierPool, SchemaIntrospector, TableSchema } from '../../type/index.js';\n\nexport class MongoSchemaIntrospector implements SchemaIntrospector {\n constructor(private readonly querierPool: QuerierPool) {}\n\n async getTableSchema(tableName: string): Promise<TableSchema | undefined> {\n const querier = await this.querierPool.getQuerier();\n try {\n const { db } = querier as MongoQuerier;\n const collections = await db.listCollections({ name: tableName }).toArray();\n if (collections.length === 0) {\n return undefined;\n }\n\n // MongoDB doesn't have a fixed schema, but we can look at the indexes\n const indexes = await db.collection(tableName).indexes();\n\n return {\n name: tableName,\n columns: [], // We don't have columns in Mongo\n indexes: indexes.map((idx: any) => ({\n name: idx.name,\n columns: Object.keys(idx.key),\n unique: !!idx.unique,\n })),\n };\n } finally {\n await querier.release();\n }\n }\n\n async getTableNames(): Promise<string[]> {\n const querier = await this.querierPool.getQuerier();\n try {\n const { db } = querier as MongoQuerier;\n const collections = await db.listCollections().toArray();\n return collections.map((c: any) => c.name);\n } finally {\n await querier.release();\n }\n }\n\n async tableExists(tableName: string): Promise<boolean> {\n const names = await this.getTableNames();\n return names.includes(tableName);\n }\n}\n","import type { MigrationStorage, QuerierPool, SqlQuerier } from '../../type/index.js';\nimport { isSqlQuerier } from '../../type/index.js';\n\n/**\n * Migration metadata stored in the database\n */\ninterface MigrationRecord {\n name: string;\n executed_at: Date | number;\n}\n\n/**\n * Stores migration state in a database table.\n * Uses the querier's dialect for escaping and placeholders.\n */\nexport class DatabaseMigrationStorage implements MigrationStorage {\n private readonly tableName: string;\n private storageInitialized = false;\n\n constructor(\n private readonly querierPool: QuerierPool,\n options: {\n tableName?: string;\n } = {},\n ) {\n this.tableName = options.tableName ?? 'uql_migrations';\n }\n\n async ensureStorage(): Promise<void> {\n if (this.storageInitialized) {\n return;\n }\n\n const querier = await this.querierPool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('DatabaseMigrationStorage requires a SQL-based querier');\n }\n\n try {\n await this.createTableIfNotExists(querier);\n this.storageInitialized = true;\n } finally {\n await querier.release();\n }\n }\n\n private async createTableIfNotExists(querier: SqlQuerier): Promise<void> {\n const { escapeId } = querier.dialect;\n const sql = `\n CREATE TABLE IF NOT EXISTS ${escapeId(this.tableName)} (\n ${escapeId('name')} VARCHAR(255) PRIMARY KEY,\n ${escapeId('executed_at')} TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n )\n `;\n\n await querier.run(sql);\n }\n\n async executed(): Promise<string[]> {\n await this.ensureStorage();\n\n const querier = await this.querierPool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('DatabaseMigrationStorage requires a SQL-based querier');\n }\n\n try {\n const { escapeId } = querier.dialect;\n const sql = `SELECT ${escapeId('name')} FROM ${escapeId(this.tableName)} ORDER BY ${escapeId('name')} ASC`;\n const results = await querier.all<MigrationRecord>(sql);\n return results.map((r: any) => r.name);\n } finally {\n await querier.release();\n }\n }\n\n /**\n * Log a migration as executed - uses provided querier (within transaction)\n */\n async logWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void> {\n await this.ensureStorage();\n const { escapeId, placeholder } = querier.dialect;\n const sql = `INSERT INTO ${escapeId(this.tableName)} (${escapeId('name')}) VALUES (${placeholder(1)})`;\n await querier.run(sql, [migrationName]);\n }\n\n /**\n * Unlog a migration - uses provided querier (within transaction)\n */\n async unlogWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void> {\n await this.ensureStorage();\n const { escapeId, placeholder } = querier.dialect;\n const sql = `DELETE FROM ${escapeId(this.tableName)} WHERE ${escapeId('name')} = ${placeholder(1)}`;\n await querier.run(sql, [migrationName]);\n }\n}\n","import { readdir } from 'node:fs/promises';\nimport { basename, extname, join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { getEntities, getMeta } from '../entity/index.js';\nimport type {\n Dialect,\n Migration,\n MigrationDefinition,\n MigrationResult,\n MigrationStorage,\n MigratorOptions,\n MongoQuerier,\n NamingStrategy,\n Querier,\n QuerierPool,\n SchemaDiff,\n SchemaGenerator,\n SchemaIntrospector,\n Type,\n} from '../type/index.js';\nimport { isSqlQuerier } from '../type/index.js';\nimport {\n MariadbSchemaGenerator,\n MongoSchemaGenerator,\n MysqlSchemaGenerator,\n PostgresSchemaGenerator,\n SqliteSchemaGenerator,\n} from './generator/index.js';\nimport {\n MariadbSchemaIntrospector,\n MongoSchemaIntrospector,\n MysqlSchemaIntrospector,\n PostgresSchemaIntrospector,\n SqliteSchemaIntrospector,\n} from './introspection/index.js';\nimport { DatabaseMigrationStorage } from './storage/databaseStorage.js';\n\n/**\n * Main class for managing database migrations\n */\nexport class Migrator {\n private readonly storage: MigrationStorage;\n private readonly migrationsPath: string;\n private readonly logger: (message: string) => void;\n private readonly entities: Type<unknown>[];\n private readonly dialect: Dialect;\n private schemaGenerator?: SchemaGenerator;\n public schemaIntrospector?: SchemaIntrospector;\n\n constructor(\n private readonly querierPool: QuerierPool,\n options: MigratorOptions = {},\n ) {\n this.dialect = options.dialect ?? querierPool.dialect ?? 'postgres';\n this.storage =\n options.storage ??\n new DatabaseMigrationStorage(querierPool, {\n tableName: options.tableName,\n });\n this.migrationsPath = options.migrationsPath ?? './migrations';\n this.logger = options.logger ?? (() => {});\n this.entities = options.entities ?? [];\n this.schemaIntrospector = this.createIntrospector();\n this.schemaGenerator = options.schemaGenerator ?? this.createGenerator(options.namingStrategy);\n }\n\n /**\n * Set the schema generator for DDL operations\n */\n setSchemaGenerator(generator: SchemaGenerator): void {\n this.schemaGenerator = generator;\n }\n\n private createIntrospector(): SchemaIntrospector | undefined {\n switch (this.dialect) {\n case 'postgres':\n return new PostgresSchemaIntrospector(this.querierPool);\n case 'mysql':\n return new MysqlSchemaIntrospector(this.querierPool);\n case 'mariadb':\n return new MariadbSchemaIntrospector(this.querierPool);\n case 'sqlite':\n return new SqliteSchemaIntrospector(this.querierPool);\n case 'mongodb':\n return new MongoSchemaIntrospector(this.querierPool);\n default:\n return undefined;\n }\n }\n\n private createGenerator(namingStrategy?: NamingStrategy): SchemaGenerator | undefined {\n switch (this.dialect) {\n case 'postgres':\n return new PostgresSchemaGenerator(namingStrategy);\n case 'mysql':\n return new MysqlSchemaGenerator(namingStrategy);\n case 'mariadb':\n return new MariadbSchemaGenerator(namingStrategy);\n case 'sqlite':\n return new SqliteSchemaGenerator(namingStrategy);\n case 'mongodb':\n return new MongoSchemaGenerator(namingStrategy);\n default:\n return undefined;\n }\n }\n\n /**\n * Get the SQL dialect\n */\n getDialect(): Dialect {\n return this.dialect;\n }\n\n /**\n * Get all discovered migrations from the migrations directory\n */\n async getMigrations(): Promise<Migration[]> {\n const files = await this.getMigrationFiles();\n const migrations: Migration[] = [];\n\n for (const file of files) {\n const migration = await this.loadMigration(file);\n if (migration) {\n migrations.push(migration);\n }\n }\n\n // Sort by name (which typically includes timestamp)\n return migrations.sort((a: any, b: any) => a.name.localeCompare(b.name));\n }\n\n /**\n * Get list of pending migrations (not yet executed)\n */\n async pending(): Promise<Migration[]> {\n const [migrations, executed] = await Promise.all([this.getMigrations(), this.storage.executed()]);\n\n const executedSet = new Set(executed);\n return migrations.filter((m: any) => !executedSet.has(m.name));\n }\n\n /**\n * Get list of executed migrations\n */\n async executed(): Promise<string[]> {\n return this.storage.executed();\n }\n\n /**\n * Run all pending migrations\n */\n async up(options: { to?: string; step?: number } = {}): Promise<MigrationResult[]> {\n const pendingMigrations = await this.pending();\n const results: MigrationResult[] = [];\n\n let migrationsToRun = pendingMigrations;\n\n if (options.to) {\n const toIndex = migrationsToRun.findIndex((m: any) => m.name === options.to);\n if (toIndex === -1) {\n throw new Error(`Migration '${options.to}' not found`);\n }\n migrationsToRun = migrationsToRun.slice(0, toIndex + 1);\n }\n\n if (options.step !== undefined) {\n migrationsToRun = migrationsToRun.slice(0, options.step);\n }\n\n for (const migration of migrationsToRun) {\n const result = await this.runMigration(migration, 'up');\n results.push(result);\n\n if (!result.success) {\n break; // Stop on first failure\n }\n }\n\n return results;\n }\n\n /**\n * Rollback migrations\n */\n async down(options: { to?: string; step?: number } = {}): Promise<MigrationResult[]> {\n const [migrations, executed] = await Promise.all([this.getMigrations(), this.storage.executed()]);\n\n const executedSet = new Set(executed);\n const executedMigrations = migrations.filter((m: any) => executedSet.has(m.name)).reverse(); // Rollback in reverse order\n\n const results: MigrationResult[] = [];\n let migrationsToRun = executedMigrations;\n\n if (options.to) {\n const toIndex = migrationsToRun.findIndex((m: any) => m.name === options.to);\n if (toIndex === -1) {\n throw new Error(`Migration '${options.to}' not found`);\n }\n migrationsToRun = migrationsToRun.slice(0, toIndex + 1);\n }\n\n if (options.step !== undefined) {\n migrationsToRun = migrationsToRun.slice(0, options.step);\n }\n\n for (const migration of migrationsToRun) {\n const result = await this.runMigration(migration, 'down');\n results.push(result);\n\n if (!result.success) {\n break; // Stop on first failure\n }\n }\n\n return results;\n }\n\n /**\n * Run a single migration within a transaction\n */\n private async runMigration(migration: Migration, direction: 'up' | 'down'): Promise<MigrationResult> {\n const startTime = Date.now();\n const querier = await this.querierPool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('Migrator requires a SQL-based querier');\n }\n\n try {\n this.logger(`${direction === 'up' ? 'Running' : 'Reverting'} migration: ${migration.name}`);\n\n await querier.beginTransaction();\n\n if (direction === 'up') {\n await migration.up(querier);\n // Log within the same transaction\n await this.storage.logWithQuerier(querier, migration.name);\n } else {\n await migration.down(querier);\n // Unlog within the same transaction\n await this.storage.unlogWithQuerier(querier, migration.name);\n }\n\n await querier.commitTransaction();\n\n const duration = Date.now() - startTime;\n this.logger(`Migration ${migration.name} ${direction === 'up' ? 'applied' : 'reverted'} in ${duration}ms`);\n\n return {\n name: migration.name,\n direction,\n duration,\n success: true,\n };\n } catch (error) {\n await querier.rollbackTransaction();\n\n const duration = Date.now() - startTime;\n this.logger(`Migration ${migration.name} failed: ${(error as Error).message}`);\n\n return {\n name: migration.name,\n direction,\n duration,\n success: false,\n error: error as Error,\n };\n } finally {\n await querier.release();\n }\n }\n\n /**\n * Generate a new migration file\n */\n async generate(name: string): Promise<string> {\n const timestamp = this.getTimestamp();\n const fileName = `${timestamp}_${this.slugify(name)}.ts`;\n const filePath = join(this.migrationsPath, fileName);\n\n const content = this.generateMigrationContent(name);\n\n const { writeFile, mkdir } = await import('node:fs/promises');\n await mkdir(this.migrationsPath, { recursive: true });\n await writeFile(filePath, content, 'utf-8');\n\n this.logger(`Created migration: ${filePath}`);\n return filePath;\n }\n\n /**\n * Generate a migration based on entity schema differences\n */\n async generateFromEntities(name: string): Promise<string> {\n if (!this.schemaGenerator) {\n throw new Error('Schema generator not set. Call setSchemaGenerator() first.');\n }\n\n const diffs = await this.getDiffs();\n const upStatements: string[] = [];\n const downStatements: string[] = [];\n\n for (const diff of diffs) {\n if (diff.type === 'create') {\n const entity = this.findEntityForTable(diff.tableName);\n if (entity) {\n upStatements.push(this.schemaGenerator.generateCreateTable(entity));\n downStatements.push(this.schemaGenerator.generateDropTable(entity));\n }\n } else if (diff.type === 'alter') {\n const alterStatements = this.schemaGenerator.generateAlterTable(diff);\n upStatements.push(...alterStatements);\n\n const alterDownStatements = this.schemaGenerator.generateAlterTableDown(diff);\n downStatements.push(...alterDownStatements);\n }\n }\n\n if (upStatements.length === 0) {\n this.logger('No schema changes detected.');\n return '';\n }\n\n const timestamp = this.getTimestamp();\n const fileName = `${timestamp}_${this.slugify(name)}.ts`;\n const filePath = join(this.migrationsPath, fileName);\n\n const content = this.generateMigrationContentWithStatements(name, upStatements, downStatements.reverse());\n\n const { writeFile, mkdir } = await import('node:fs/promises');\n await mkdir(this.migrationsPath, { recursive: true });\n await writeFile(filePath, content, 'utf-8');\n\n this.logger(`Created migration from entities: ${filePath}`);\n return filePath;\n }\n\n /**\n * Get all schema differences between entities and database\n */\n async getDiffs(): Promise<SchemaDiff[]> {\n if (!this.schemaGenerator || !this.schemaIntrospector) {\n throw new Error('Schema generator and introspector must be set');\n }\n\n const entities = this.entities.length > 0 ? this.entities : getEntities();\n const diffs: SchemaDiff[] = [];\n\n for (const entity of entities) {\n const meta = getMeta(entity);\n const tableName = this.schemaGenerator.resolveTableName(entity, meta);\n const currentSchema = await this.schemaIntrospector.getTableSchema(tableName);\n const diff = this.schemaGenerator.diffSchema(entity, currentSchema);\n if (diff) {\n diffs.push(diff);\n }\n }\n\n return diffs;\n }\n\n private findEntityForTable(tableName: string): Type<unknown> | undefined {\n const entities = this.entities.length > 0 ? this.entities : getEntities();\n for (const entity of entities) {\n const meta = getMeta(entity);\n const name = this.schemaGenerator.resolveTableName(entity, meta);\n if (name === tableName) {\n return entity;\n }\n }\n return undefined;\n }\n\n /**\n * Sync schema directly (for development only - not for production!)\n */\n async sync(options: { force?: boolean } = {}): Promise<void> {\n if (options.force) {\n return this.syncForce();\n }\n return this.autoSync({ safe: true });\n }\n\n /**\n * Drops and recreates all tables (Development only!)\n */\n public async syncForce(): Promise<void> {\n if (!this.schemaGenerator) {\n throw new Error('Schema generator not set. Call setSchemaGenerator() first.');\n }\n\n const entities = this.entities.length > 0 ? this.entities : getEntities();\n const querier = await this.querierPool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('Migrator requires a SQL-based querier');\n }\n\n try {\n await querier.beginTransaction();\n\n // Drop all tables first (in reverse order for foreign keys)\n for (const entity of [...entities].reverse()) {\n const dropSql = this.schemaGenerator.generateDropTable(entity);\n this.logger(`Executing: ${dropSql}`);\n await querier.run(dropSql);\n }\n\n // Create all tables\n for (const entity of entities) {\n const createSql = this.schemaGenerator.generateCreateTable(entity);\n this.logger(`Executing: ${createSql}`);\n await querier.run(createSql);\n }\n\n await querier.commitTransaction();\n this.logger('Schema sync (force) completed');\n } catch (error) {\n await querier.rollbackTransaction();\n throw error;\n } finally {\n await querier.release();\n }\n }\n\n /**\n * Safely synchronizes the schema by only adding missing tables and columns.\n */\n async autoSync(options: { safe?: boolean; drop?: boolean; logging?: boolean } = {}): Promise<void> {\n if (!this.schemaGenerator || !this.schemaIntrospector) {\n throw new Error('Schema generator and introspector must be set');\n }\n\n const diffs = await this.getDiffs();\n const statements: string[] = [];\n\n for (const diff of diffs) {\n if (diff.type === 'create') {\n const entity = this.findEntityForTable(diff.tableName);\n if (entity) {\n statements.push(this.schemaGenerator.generateCreateTable(entity));\n }\n } else if (diff.type === 'alter') {\n const filteredDiff = this.filterDiff(diff, options);\n const alterStatements = this.schemaGenerator.generateAlterTable(filteredDiff);\n statements.push(...alterStatements);\n }\n }\n\n if (statements.length === 0) {\n if (options.logging) this.logger('Schema is already in sync.');\n return;\n }\n\n await this.executeSyncStatements(statements, options);\n }\n\n private filterDiff(diff: SchemaDiff, options: { safe?: boolean; drop?: boolean }): SchemaDiff {\n const filteredDiff = { ...diff } as { -readonly [K in keyof SchemaDiff]: SchemaDiff[K] };\n if (options.safe !== false) {\n // In safe mode, we only allow additions\n delete filteredDiff.columnsToDrop;\n delete filteredDiff.indexesToDrop;\n delete filteredDiff.foreignKeysToDrop;\n }\n if (!options.drop) {\n delete filteredDiff.columnsToDrop;\n }\n return filteredDiff;\n }\n\n private async executeSyncStatements(statements: string[], options: { logging?: boolean }): Promise<void> {\n const querier = await this.querierPool.getQuerier();\n try {\n if (this.dialect === 'mongodb') {\n await this.executeMongoSyncStatements(statements, options, querier as MongoQuerier);\n } else {\n await this.executeSqlSyncStatements(statements, options, querier);\n }\n if (options.logging) this.logger('Schema synchronization completed');\n } catch (error) {\n if (this.dialect !== 'mongodb' && isSqlQuerier(querier)) {\n await querier.rollbackTransaction();\n }\n throw error;\n } finally {\n await querier.release();\n }\n }\n\n private async executeMongoSyncStatements(\n statements: string[],\n options: { logging?: boolean },\n querier: MongoQuerier,\n ): Promise<void> {\n const db = querier.db;\n for (const stmt of statements) {\n const cmd = JSON.parse(stmt) as {\n action: string;\n name?: string;\n collection?: string;\n indexes?: { name: string; columns: string[]; unique?: boolean }[];\n key?: Record<string, number>;\n options?: any;\n };\n if (options.logging) this.logger(`Executing MongoDB: ${stmt}`);\n\n const collectionName = cmd.name || cmd.collection;\n if (!collectionName) {\n throw new Error(`MongoDB command missing collection name: ${stmt}`);\n }\n const collection = db.collection(collectionName);\n\n if (cmd.action === 'createCollection') {\n await db.createCollection(cmd.name);\n if (cmd.indexes?.length) {\n for (const idx of cmd.indexes) {\n const key = Object.fromEntries(idx.columns.map((c: string) => [c, 1]));\n await collection.createIndex(key, { unique: idx.unique, name: idx.name });\n }\n }\n } else if (cmd.action === 'dropCollection') {\n await collection.drop();\n } else if (cmd.action === 'createIndex') {\n await collection.createIndex(cmd.key, cmd.options);\n } else if (cmd.action === 'dropIndex') {\n await collection.dropIndex(cmd.name);\n }\n }\n }\n\n private async executeSqlSyncStatements(\n statements: string[],\n options: { logging?: boolean },\n querier: Querier,\n ): Promise<void> {\n if (!isSqlQuerier(querier)) {\n throw new Error('Migrator requires a SQL-based querier for this dialect');\n }\n await querier.beginTransaction();\n for (const sql of statements) {\n if (options.logging) this.logger(`Executing: ${sql}`);\n await querier.run(sql);\n }\n await querier.commitTransaction();\n }\n\n /**\n * Get migration status\n */\n async status(): Promise<{ pending: string[]; executed: string[] }> {\n const [pending, executed] = await Promise.all([this.pending().then((m) => m.map((x) => x.name)), this.executed()]);\n\n return { pending, executed };\n }\n\n /**\n * Get migration files from the migrations directory\n */\n private async getMigrationFiles(): Promise<string[]> {\n try {\n const files = await readdir(this.migrationsPath);\n return files\n .filter((f) => /\\.(ts|js|mjs)$/.test(f))\n .filter((f) => !f.endsWith('.d.ts'))\n .sort();\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n }\n\n /**\n * Load a migration from a file\n */\n private async loadMigration(fileName: string): Promise<Migration | undefined> {\n const filePath = join(this.migrationsPath, fileName);\n const fileUrl = pathToFileURL(filePath).href;\n\n try {\n const module = await import(fileUrl);\n const migration = module.default ?? module;\n\n if (this.isMigration(migration)) {\n return {\n name: this.getMigrationName(fileName),\n up: migration.up.bind(migration),\n down: migration.down.bind(migration),\n };\n }\n\n this.logger(`Warning: ${fileName} is not a valid migration`);\n return undefined;\n } catch (error) {\n this.logger(`Error loading migration ${fileName}: ${(error as Error).message}`);\n return undefined;\n }\n }\n\n /**\n * Check if an object is a valid migration\n */\n private isMigration(obj: unknown): obj is MigrationDefinition {\n return (\n typeof obj === 'object' &&\n obj !== undefined &&\n obj !== null &&\n typeof (obj as MigrationDefinition).up === 'function' &&\n typeof (obj as MigrationDefinition).down === 'function'\n );\n }\n\n /**\n * Extract migration name from filename\n */\n private getMigrationName(fileName: string): string {\n return basename(fileName, extname(fileName));\n }\n\n /**\n * Generate timestamp string for migration names\n */\n private getTimestamp(): string {\n const now = new Date();\n return [\n now.getFullYear(),\n String(now.getMonth() + 1).padStart(2, '0'),\n String(now.getDate()).padStart(2, '0'),\n String(now.getHours()).padStart(2, '0'),\n String(now.getMinutes()).padStart(2, '0'),\n String(now.getSeconds()).padStart(2, '0'),\n ].join('');\n }\n\n /**\n * Convert a string to a slug for filenames\n */\n private slugify(text: string): string {\n return text\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '');\n }\n\n /**\n * Generate migration file content\n */\n private generateMigrationContent(name: string): string {\n return /*ts*/ `import type { SqlQuerier } from '@uql/migrate';\n\n/**\n * Migration: ${name}\n * Created: ${new Date().toISOString()}\n */\nexport default {\n async up(querier: SqlQuerier): Promise<void> {\n // Add your migration logic here\n // Example:\n // await querier.run(\\`\n // CREATE TABLE \"users\" (\n // \"id\" SERIAL PRIMARY KEY,\n // \"name\" VARCHAR(255) NOT NULL,\n // \"email\" VARCHAR(255) UNIQUE NOT NULL,\n // \"createdAt\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n // )\n // \\`);\n },\n\n async down(querier: SqlQuerier): Promise<void> {\n // Add your rollback logic here\n // Example:\n // await querier.run(\\`DROP TABLE IF EXISTS \"users\"\\`);\n },\n};\n`;\n }\n\n /**\n * Generate migration file content with SQL statements\n */\n private generateMigrationContentWithStatements(\n name: string,\n upStatements: string[],\n downStatements: string[],\n ): string {\n const upSql = upStatements.map((s) => /*ts*/ ` await querier.run(\\`${s}\\`);`).join('\\n');\n const downSql = downStatements.map((s) => /*ts*/ ` await querier.run(\\`${s}\\`);`).join('\\n');\n\n return /*ts*/ `import type { SqlQuerier } from '@uql/migrate';\n\n/**\n * Migration: ${name}\n * Created: ${new Date().toISOString()}\n * Generated from entity definitions\n */\nexport default {\n async up(querier: SqlQuerier): Promise<void> {\n${upSql}\n },\n\n async down(querier: SqlQuerier): Promise<void> {\n${downSql}\n },\n};\n`;\n }\n}\n\n/**\n * Helper function to define a migration with proper typing\n */\nexport function defineMigration(migration: MigrationDefinition): MigrationDefinition {\n return migration;\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type { MigrationStorage, SqlQuerier } from '../../type/index.js';\n\n/**\n * Stores migration state in a JSON file (useful for development/testing)\n */\nexport class JsonMigrationStorage implements MigrationStorage {\n private readonly filePath: string;\n private cache: string[] | null = null;\n\n constructor(filePath = './migrations/.uql-migrations.json') {\n this.filePath = filePath;\n }\n\n async ensureStorage(): Promise<void> {\n try {\n await this.load();\n } catch {\n // File doesn't exist, create it\n await this.save([]);\n }\n }\n\n async executed(): Promise<string[]> {\n await this.ensureStorage();\n return this.cache ?? [];\n }\n\n async logWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void> {\n const executed = await this.executed();\n if (!executed.includes(migrationName)) {\n executed.push(migrationName);\n executed.sort();\n await this.save(executed);\n }\n }\n\n async unlogWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void> {\n const executed = await this.executed();\n const index = executed.indexOf(migrationName);\n if (index !== -1) {\n executed.splice(index, 1);\n await this.save(executed);\n }\n }\n\n private async load(): Promise<void> {\n const content = await readFile(this.filePath, 'utf-8');\n this.cache = JSON.parse(content);\n }\n\n private async save(migrations: string[]): Promise<void> {\n await mkdir(dirname(this.filePath), { recursive: true });\n await writeFile(this.filePath, JSON.stringify(migrations, null, 2), 'utf-8');\n this.cache = migrations;\n }\n}\n"],"names":["AbstractSchemaGenerator","AbstractDialect","namingStrategy","escapeIdChar","escapeId","identifier","escapeSqlId","generateCreateTable","entity","options","meta","getMeta","tableName","resolveTableName","columns","generateColumnDefinitions","constraints","generateTableConstraints","ifNotExists","sql","map","col","join","length","c","getTableOptions","generateDropTable","generateAlterTable","diff","statements","columnsToAdd","column","colDef","generateColumnDefinitionFromSchema","push","columnsToAlter","to","colStatements","generateAlterColumnStatements","columnsToDrop","columnName","indexesToAdd","index","generateCreateIndex","indexesToDrop","indexName","generateDropIndex","generateAlterTableDown","name","unique","fieldKeys","getKeys","fields","key","field","virtual","generateColumnDefinition","fieldKey","resolveColumnName","isId","isPrimaryKey","id","sqlType","autoIncrement","onInsert","serialPrimaryKeyType","getSqlType","type","definition","includes","nullable","defaultValue","undefined","formatDefaultValue","comment","generateColumnComment","precision","scale","isUnique","reference","refEntity","refMeta","refIdField","refTableName","refColumnName","fkName","fieldType","columnType","mapColumnType","Number","String","Boolean","getBooleanType","Date","BigInt","value","replace","toISOString","diffSchema","currentSchema","currentColumns","Map","currentColumn","get","fieldToColumnSchema","desiredColumn","columnsNeedAlteration","from","delete","isAutoIncrement","current","desired","toLowerCase","JSON","stringify","MysqlSchemaGenerator","newDefinition","escapedComment","PostgresSchemaGenerator","escapedTableName","escapedColumnName","generateColumnCommentStatement","SqliteSchemaGenerator","Error","MysqlSchemaIntrospector","querierPool","getTableSchema","querier","getQuerier","exists","tableExistsInternal","indexes","foreignKeys","primaryKey","Promise","all","getColumns","getIndexes","getForeignKeys","getPrimaryKey","release","getTableNames","results","r","table_name","tableExists","count","isSqlQuerier","row","column_name","data_type","toUpperCase","is_nullable","parseDefaultValue","column_default","column_key","extra","character_maximum_length","numeric_precision","numeric_scale","column_comment","index_name","split","is_unique","constraint_name","referencedTable","referenced_table","referencedColumns","referenced_columns","onDelete","normalizeReferentialAction","delete_rule","onUpdate","update_rule","test","slice","parseInt","parseFloat","action","MariadbSchemaIntrospector","PostgresSchemaIntrospector","normalizeType","udt_name","is_primary_key","dataType","udtName","cleaned","trim","startsWith","endsWith","SqliteSchemaIntrospector","uniqueColumns","getUniqueColumns","notnull","dflt_value","pk","has","extractLength","Set","origin","indexInfo","add","result","grouped","existing","set","Array","entries","rows","first","table","on_delete","on_update","pkColumns","filter","sort","a","b","match","MongoSchemaGenerator","collectionName","collection","existingIndexes","i","MongoSchemaIntrospector","db","collections","listCollections","toArray","idx","Object","keys","names","DatabaseMigrationStorage","storageInitialized","ensureStorage","createTableIfNotExists","dialect","run","executed","logWithQuerier","migrationName","placeholder","unlogWithQuerier","Migrator","storage","migrationsPath","logger","entities","schemaIntrospector","createIntrospector","schemaGenerator","createGenerator","setSchemaGenerator","generator","MariadbSchemaGenerator","getDialect","getMigrations","files","getMigrationFiles","migrations","file","migration","loadMigration","localeCompare","pending","executedSet","m","up","pendingMigrations","migrationsToRun","toIndex","findIndex","step","runMigration","success","down","executedMigrations","reverse","direction","startTime","now","beginTransaction","commitTransaction","duration","error","rollbackTransaction","message","generate","timestamp","getTimestamp","fileName","slugify","filePath","content","generateMigrationContent","writeFile","mkdir","recursive","generateFromEntities","diffs","getDiffs","upStatements","downStatements","findEntityForTable","alterStatements","alterDownStatements","generateMigrationContentWithStatements","getEntities","sync","force","syncForce","autoSync","safe","dropSql","createSql","filteredDiff","filterDiff","logging","executeSyncStatements","foreignKeysToDrop","drop","executeMongoSyncStatements","executeSqlSyncStatements","stmt","cmd","parse","createCollection","fromEntries","createIndex","dropIndex","status","then","x","readdir","f","code","fileUrl","pathToFileURL","href","module","default","isMigration","getMigrationName","bind","obj","basename","extname","getFullYear","getMonth","padStart","getDate","getHours","getMinutes","getSeconds","text","upSql","s","downSql","defineMigration","JsonMigrationStorage","cache","load","save","_querier","indexOf","splice","readFile","dirname"],"mappings":";;;;;;;;;AAiBA;;IAGO,MAAeA,uBAAAA,SAAgCC,eAAAA,CAAAA;AAMpD,IAAA,WAAA,CACEC,cAA+B,EAC/B,YAAmBC,GAA0B,GAAG,CAChD;QACA,KAAK,CAACD,sBAFaC,YAAAA,GAAAA,YAAAA;AAGrB,IAAA;AAEA;;MAGUC,QAAAA,CAASC,UAAkB,EAAU;AAC7C,QAAA,OAAOC,WAAAA,CAAYD,UAAAA,EAAY,IAAI,CAACF,YAAY,CAAA;AAClD,IAAA;AAEAI,IAAAA,mBAAAA,CAAuBC,MAAe,EAAEC,OAAAA,GAAqC,EAAE,EAAU;AACvF,QAAA,MAAMC,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,QAAA,MAAMI,SAAAA,GAAY,IAAI,CAACC,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;AAChD,QAAA,MAAMI,OAAAA,GAAU,IAAI,CAACC,yBAAyB,CAACL,IAAAA,CAAAA;AAC/C,QAAA,MAAMM,WAAAA,GAAc,IAAI,CAACC,wBAAwB,CAACP,IAAAA,CAAAA;AAElD,QAAA,MAAMQ,WAAAA,GAAcT,OAAAA,CAAQS,WAAW,GAAG,gBAAA,GAAmB,EAAA;QAC7D,IAAIC,GAAAA,GAAM,CAAC,aAAa,EAAED,WAAAA,CAAAA,EAAc,IAAI,CAACd,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,IAAI,CAAC;QACtEO,GAAAA,IAAOL,OAAAA,CAAQM,GAAG,CAAC,CAACC,GAAAA,GAAQ,CAAC,EAAE,EAAEA,GAAAA,CAAAA,CAAK,CAAA,CAAEC,IAAI,CAAC,KAAA,CAAA;QAE7C,IAAIN,WAAAA,CAAYO,MAAM,GAAG,CAAA,EAAG;YAC1BJ,GAAAA,IAAO,KAAA;YACPA,GAAAA,IAAOH,WAAAA,CAAYI,GAAG,CAAC,CAACI,CAAAA,GAAW,CAAC,EAAE,EAAEA,CAAAA,CAAAA,CAAG,CAAA,CAAEF,IAAI,CAAC,KAAA,CAAA;AACpD,QAAA;QAEAH,GAAAA,IAAO,KAAA;QACPA,GAAAA,IAAO,IAAI,CAACM,eAAe,CAACf,IAAAA,CAAAA;QAC5BS,GAAAA,IAAO,GAAA;QAEP,OAAOA,GAAAA;AACT,IAAA;AAEAO,IAAAA,iBAAAA,CAAqBlB,MAAe,EAAU;AAC5C,QAAA,MAAME,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,QAAA,MAAMI,SAAAA,GAAY,IAAI,CAACC,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;QAChD,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAACN,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAC5D,IAAA;AAEAe,IAAAA,kBAAAA,CAAmBC,IAAgB,EAAY;AAC7C,QAAA,MAAMC,aAAuB,EAAE;AAC/B,QAAA,MAAMjB,YAAY,IAAI,CAACR,QAAQ,CAACwB,KAAKhB,SAAS,CAAA;;QAG9C,IAAIgB,IAAAA,CAAKE,YAAY,EAAEP,MAAAA,EAAQ;AAC7B,YAAA,KAAK,MAAMQ,MAAAA,IAAUH,IAAAA,CAAKE,YAAY,CAAE;AACtC,gBAAA,MAAME,MAAAA,GAAS,IAAI,CAACC,kCAAkC,CAACF,MAAAA,CAAAA;gBACvDF,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEtB,UAAU,YAAY,EAAEoB,MAAAA,CAAO,CAAC,CAAC,CAAA;AAClE,YAAA;AACF,QAAA;;QAGA,IAAIJ,IAAAA,CAAKO,cAAc,EAAEZ,MAAAA,EAAQ;AAC/B,YAAA,KAAK,MAAM,EAAEa,EAAE,EAAE,IAAIR,IAAAA,CAAKO,cAAc,CAAE;AACxC,gBAAA,MAAMH,MAAAA,GAAS,IAAI,CAACC,kCAAkC,CAACG,EAAAA,CAAAA;gBACvD,MAAMC,aAAAA,GAAgB,IAAI,CAACC,6BAA6B,CAACV,IAAAA,CAAKhB,SAAS,EAAEwB,EAAAA,EAAIJ,MAAAA,CAAAA;AAC7EH,gBAAAA,UAAAA,CAAWK,IAAI,CAAA,GAAIG,aAAAA,CAAAA;AACrB,YAAA;AACF,QAAA;;QAGA,IAAIT,IAAAA,CAAKW,aAAa,EAAEhB,MAAAA,EAAQ;AAC9B,YAAA,KAAK,MAAMiB,UAAAA,IAAcZ,IAAAA,CAAKW,aAAa,CAAE;AAC3CV,gBAAAA,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEtB,SAAAA,CAAU,aAAa,EAAE,IAAI,CAACR,QAAQ,CAACoC,UAAAA,CAAAA,CAAY,CAAC,CAAC,CAAA;AACtF,YAAA;AACF,QAAA;;QAGA,IAAIZ,IAAAA,CAAKa,YAAY,EAAElB,MAAAA,EAAQ;AAC7B,YAAA,KAAK,MAAMmB,KAAAA,IAASd,IAAAA,CAAKa,YAAY,CAAE;gBACrCZ,UAAAA,CAAWK,IAAI,CAAC,IAAI,CAACS,mBAAmB,CAACf,IAAAA,CAAKhB,SAAS,EAAE8B,KAAAA,CAAAA,CAAAA;AAC3D,YAAA;AACF,QAAA;;QAGA,IAAId,IAAAA,CAAKgB,aAAa,EAAErB,MAAAA,EAAQ;AAC9B,YAAA,KAAK,MAAMsB,SAAAA,IAAajB,IAAAA,CAAKgB,aAAa,CAAE;gBAC1Cf,UAAAA,CAAWK,IAAI,CAAC,IAAI,CAACY,iBAAiB,CAAClB,IAAAA,CAAKhB,SAAS,EAAEiC,SAAAA,CAAAA,CAAAA;AACzD,YAAA;AACF,QAAA;QAEA,OAAOhB,UAAAA;AACT,IAAA;AAEAkB,IAAAA,sBAAAA,CAAuBnB,IAAgB,EAAY;AACjD,QAAA,MAAMC,aAAuB,EAAE;AAC/B,QAAA,MAAMjB,YAAY,IAAI,CAACR,QAAQ,CAACwB,KAAKhB,SAAS,CAAA;;QAG9C,IAAIgB,IAAAA,CAAKE,YAAY,EAAEP,MAAAA,EAAQ;AAC7B,YAAA,KAAK,MAAMQ,MAAAA,IAAUH,IAAAA,CAAKE,YAAY,CAAE;AACtCD,gBAAAA,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEtB,UAAU,aAAa,EAAE,IAAI,CAACR,QAAQ,CAAC2B,MAAAA,CAAOiB,IAAI,CAAA,CAAE,CAAC,CAAC,CAAA;AACvF,YAAA;AACF,QAAA;QAEA,OAAOnB,UAAAA;AACT,IAAA;IAEAc,mBAAAA,CAAoB/B,SAAiB,EAAE8B,KAAkB,EAAU;AACjE,QAAA,MAAMO,MAAAA,GAASP,KAAAA,CAAMO,MAAM,GAAG,SAAA,GAAY,EAAA;AAC1C,QAAA,MAAMnC,OAAAA,GAAU4B,KAAAA,CAAM5B,OAAO,CAACM,GAAG,CAAC,CAACI,CAAAA,GAAW,IAAI,CAACpB,QAAQ,CAACoB,CAAAA,CAAAA,CAAAA,CAAIF,IAAI,CAAC,IAAA,CAAA;QACrE,OAAO,CAAC,OAAO,EAAE2B,MAAAA,CAAO,MAAM,EAAE,IAAI,CAAC7C,QAAQ,CAACsC,KAAAA,CAAMM,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC5C,QAAQ,CAACQ,WAAW,EAAE,EAAEE,OAAAA,CAAQ,EAAE,CAAC;AAC1G,IAAA;IAEAgC,iBAAAA,CAAkBlC,SAAiB,EAAEiC,SAAiB,EAAU;QAC9D,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAACzC,QAAQ,CAACyC,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAC5D,IAAA;AAEA;;MAGO9B,yBAAAA,CAA6BL,IAAmB,EAAY;AACjE,QAAA,MAAMI,UAAoB,EAAE;QAC5B,MAAMoC,SAAAA,GAAYC,OAAAA,CAAQzC,IAAAA,CAAK0C,MAAM,CAAA;QAErC,KAAK,MAAMC,OAAOH,SAAAA,CAAW;AAC3B,YAAA,MAAMI,KAAAA,GAAQ5C,IAAAA,CAAK0C,MAAM,CAACC,GAAAA,CAAI;YAC9B,IAAIC,KAAAA,EAAOC,OAAAA,EAAS,SAAA;AAEpB,YAAA,MAAMvB,SAAS,IAAI,CAACwB,wBAAwB,CAACH,KAAeC,KAAAA,EAAO5C,IAAAA,CAAAA;AACnEI,YAAAA,OAAAA,CAAQoB,IAAI,CAACF,MAAAA,CAAAA;AACf,QAAA;QAEA,OAAOlB,OAAAA;AACT,IAAA;AAEA;;AAEC,MACD,wBAAO0C,CAA4BC,QAAgB,EAAEH,KAAmB,EAAE5C,IAAmB,EAAU;QACrG,MAAM8B,UAAAA,GAAa,IAAI,CAACpC,QAAQ,CAAC,IAAI,CAACsD,iBAAiB,CAACD,QAAAA,EAAUH,KAAAA,CAAAA,CAAAA;QAClE,MAAMK,IAAAA,GAAOL,KAAAA,CAAMK,IAAI,KAAK,IAAA;AAC5B,QAAA,MAAMC,YAAAA,GAAeD,IAAAA,IAAQjD,IAAAA,CAAKmD,EAAE,KAAKJ,QAAAA;;QAGzC,IAAIK,OAAAA;QACJ,IAAIF,YAAAA,IAAgBN,MAAMS,aAAa,KAAK,SAAS,CAACT,KAAAA,CAAMU,QAAQ,EAAE;;YAEpEF,OAAAA,GAAU,IAAI,CAACG,oBAAoB;QACrC,CAAA,MAAO;AACLH,YAAAA,OAAAA,GAAU,IAAI,CAACI,UAAU,CAACZ,KAAAA,EAAOA,MAAMa,IAAI,CAAA;AAC7C,QAAA;AAEA,QAAA,IAAIC,UAAAA,GAAa,CAAA,EAAG5B,UAAAA,CAAW,CAAC,EAAEsB,OAAAA,CAAAA,CAAS;;AAG3C,QAAA,IAAIF,YAAAA,IAAgB,CAACE,OAAAA,CAAQO,QAAQ,CAAC,aAAA,CAAA,EAAgB;YACpDD,UAAAA,IAAc,cAAA;AAChB,QAAA;;AAGA,QAAA,IAAI,CAACR,YAAAA,EAAc;YACjB,MAAMU,QAAAA,GAAWhB,KAAAA,CAAMgB,QAAQ,IAAI,IAAA;AACnC,YAAA,IAAI,CAACA,QAAAA,EAAU;gBACbF,UAAAA,IAAc,WAAA;AAChB,YAAA;AACF,QAAA;;AAGA,QAAA,IAAId,KAAAA,CAAML,MAAM,IAAI,CAACW,YAAAA,EAAc;YACjCQ,UAAAA,IAAc,SAAA;AAChB,QAAA;;QAGA,IAAId,KAAAA,CAAMiB,YAAY,KAAKC,SAAAA,EAAW;YACpCJ,UAAAA,IAAc,CAAC,SAAS,EAAE,IAAI,CAACK,kBAAkB,CAACnB,KAAAA,CAAMiB,YAAY,CAAA,CAAA,CAAG;AACzE,QAAA;;QAGA,IAAIjB,KAAAA,CAAMoB,OAAO,EAAE;AACjBN,YAAAA,UAAAA,IAAc,IAAI,CAACO,qBAAqB,CACtC,IAAI,CAAC9D,gBAAgB,CAACH,IAAAA,CAAKF,MAAM,EAAEE,IAAAA,CAAAA,EACnC,IAAI,CAACgD,iBAAiB,CAACD,QAAAA,EAAUH,KAAAA,CAAAA,EACjCA,MAAMoB,OAAO,CAAA;AAEjB,QAAA;QAEA,OAAON,UAAAA;AACT,IAAA;AAEA;;MAGOnC,kCAAAA,CAAmCF,MAAoB,EAAU;AACtE,QAAA,MAAMS,aAAa,IAAI,CAACpC,QAAQ,CAAC2B,OAAOiB,IAAI,CAAA;QAC5C,IAAImB,IAAAA,GAAOpC,OAAOoC,IAAI;AAEtB,QAAA,IAAIpC,OAAOR,MAAM,IAAI,CAAC4C,IAAAA,CAAKE,QAAQ,CAAC,GAAA,CAAA,EAAM;YACxCF,IAAAA,GAAO,CAAA,EAAGA,KAAK,CAAC,EAAEpC,OAAOR,MAAM,CAAC,CAAC,CAAC;QACpC,CAAA,MAAO,IAAIQ,OAAO6C,SAAS,KAAKJ,aAAa,CAACL,IAAAA,CAAKE,QAAQ,CAAC,GAAA,CAAA,EAAM;YAChE,IAAItC,MAAAA,CAAO8C,KAAK,KAAKL,SAAAA,EAAW;AAC9BL,gBAAAA,IAAAA,GAAO,CAAA,EAAGA,IAAAA,CAAK,CAAC,EAAEpC,MAAAA,CAAO6C,SAAS,CAAC,EAAE,EAAE7C,MAAAA,CAAO8C,KAAK,CAAC,CAAC,CAAC;YACxD,CAAA,MAAO;gBACLV,IAAAA,GAAO,CAAA,EAAGA,KAAK,CAAC,EAAEpC,OAAO6C,SAAS,CAAC,CAAC,CAAC;AACvC,YAAA;AACF,QAAA;AAEA,QAAA,IAAIR,UAAAA,GAAa,CAAA,EAAG5B,UAAAA,CAAW,CAAC,EAAE2B,IAAAA,CAAAA,CAAM;QAExC,IAAIpC,MAAAA,CAAO6B,YAAY,EAAE;YACvBQ,UAAAA,IAAc,cAAA;AAChB,QAAA;AAEA,QAAA,IAAI,CAACrC,MAAAA,CAAOuC,QAAQ,IAAI,CAACvC,MAAAA,CAAO6B,YAAY,EAAE;YAC5CQ,UAAAA,IAAc,WAAA;AAChB,QAAA;AAEA,QAAA,IAAIrC,OAAO+C,QAAQ,IAAI,CAAC/C,MAAAA,CAAO6B,YAAY,EAAE;YAC3CQ,UAAAA,IAAc,SAAA;AAChB,QAAA;QAEA,IAAIrC,MAAAA,CAAOwC,YAAY,KAAKC,SAAAA,EAAW;YACrCJ,UAAAA,IAAc,CAAC,SAAS,EAAE,IAAI,CAACK,kBAAkB,CAAC1C,MAAAA,CAAOwC,YAAY,CAAA,CAAA,CAAG;AAC1E,QAAA;QAEA,OAAOH,UAAAA;AACT,IAAA;AAEA;;MAGOnD,wBAAAA,CAA4BP,IAAmB,EAAY;AAChE,QAAA,MAAMM,cAAwB,EAAE;QAChC,MAAMkC,SAAAA,GAAYC,OAAAA,CAAQzC,IAAAA,CAAK0C,MAAM,CAAA;AACrC,QAAA,MAAMxC,YAAY,IAAI,CAACC,gBAAgB,CAACH,IAAAA,CAAKF,MAAM,EAAEE,IAAAA,CAAAA;;QAGrD,KAAK,MAAM2C,OAAOH,SAAAA,CAAW;AAC3B,YAAA,MAAMI,KAAAA,GAAQ5C,IAAAA,CAAK0C,MAAM,CAACC,GAAAA,CAAI;AAC9B,YAAA,IAAIC,OAAOZ,KAAAA,EAAO;AAChB,gBAAA,MAAMF,UAAAA,GAAa,IAAI,CAACkB,iBAAiB,CAACL,GAAAA,EAAeC,KAAAA,CAAAA;AACzD,gBAAA,MAAMT,SAAAA,GAAY,OAAOS,KAAAA,CAAMZ,KAAK,KAAK,QAAA,GAAWY,KAAAA,CAAMZ,KAAK,GAAG,CAAC,IAAI,EAAE9B,SAAAA,CAAU,CAAC,EAAE4B,UAAAA,CAAAA,CAAY;AAClGxB,gBAAAA,WAAAA,CAAYkB,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC9B,QAAQ,CAACyC,SAAAA,CAAAA,CAAW,EAAE,EAAE,IAAI,CAACzC,QAAQ,CAACoC,UAAAA,CAAAA,CAAY,CAAC,CAAC,CAAA;AACrF,YAAA;AACF,QAAA;;QAGA,KAAK,MAAMa,OAAOH,SAAAA,CAAW;AAC3B,YAAA,MAAMI,KAAAA,GAAQ5C,IAAAA,CAAK0C,MAAM,CAACC,GAAAA,CAAI;AAC9B,YAAA,IAAIC,OAAOyB,SAAAA,EAAW;gBACpB,MAAMC,SAAAA,GAAY1B,MAAMyB,SAAS,EAAA;AACjC,gBAAA,MAAME,UAAUtE,OAAAA,CAAQqE,SAAAA,CAAAA;AACxB,gBAAA,MAAME,aAAaD,OAAAA,CAAQ7B,MAAM,CAAC6B,OAAAA,CAAQpB,EAAE,CAAC;AAC7C,gBAAA,MAAMrB,UAAAA,GAAa,IAAI,CAACkB,iBAAiB,CAACL,GAAAA,EAAeC,KAAAA,CAAAA;AACzD,gBAAA,MAAM6B,YAAAA,GAAe,IAAI,CAACtE,gBAAgB,CAACmE,SAAAA,EAAWC,OAAAA,CAAAA;AACtD,gBAAA,MAAMG,gBAAgB,IAAI,CAAC1B,iBAAiB,CAACuB,OAAAA,CAAQpB,EAAE,EAAEqB,UAAAA,CAAAA;AACzD,gBAAA,MAAMG,SAAS,CAAC,GAAG,EAAEzE,SAAAA,CAAU,CAAC,EAAE4B,UAAAA,CAAAA,CAAY;AAE9CxB,gBAAAA,WAAAA,CAAYkB,IAAI,CACd,CAAC,WAAW,EAAE,IAAI,CAAC9B,QAAQ,CAACiF,MAAAA,CAAAA,CAAQ,cAAc,EAAE,IAAI,CAACjF,QAAQ,CAACoC,UAAAA,CAAAA,CAAY,EAAE,CAAC,GAC/E,CAAC,WAAW,EAAE,IAAI,CAACpC,QAAQ,CAAC+E,YAAAA,CAAAA,CAAc,EAAE,EAAE,IAAI,CAAC/E,QAAQ,CAACgF,aAAAA,CAAAA,CAAe,CAAC,CAAC,CAAA;AAEnF,YAAA;AACF,QAAA;QAEA,OAAOpE,WAAAA;AACT,IAAA;IAEAkD,UAAAA,CAAWZ,KAAmB,EAAEgC,SAAmB,EAAU;;QAE3D,IAAIhC,KAAAA,CAAMiC,UAAU,EAAE;AACpB,YAAA,OAAO,IAAI,CAACC,aAAa,CAAClC,KAAAA,CAAMiC,UAAU,EAAEjC,KAAAA,CAAAA;AAC9C,QAAA;;AAGA,QAAA,IAAIA,MAAMa,IAAI,KAAK,UAAUb,KAAAA,CAAMa,IAAI,KAAK,OAAA,EAAS;AACnD,YAAA,OAAO,IAAI,CAACqB,aAAa,CAAClC,KAAAA,CAAMa,IAAI,EAAgBb,KAAAA,CAAAA;AACtD,QAAA;QAEA,IAAIA,KAAAA,CAAMa,IAAI,KAAK,QAAA,EAAU;AAC3B,YAAA,OAAO,IAAI,CAACqB,aAAa,CAAC,QAAA,EAAUlC,KAAAA,CAAAA;AACtC,QAAA;;QAGA,MAAMa,IAAAA,GAAOmB,SAAAA,IAAahC,KAAAA,CAAMa,IAAI;QAEpC,IAAIA,IAAAA,KAASsB,MAAAA,IAAUtB,IAAAA,KAAS,QAAA,EAAU;YACxC,OAAOb,KAAAA,CAAMsB,SAAS,GAAG,IAAI,CAACY,aAAa,CAAC,WAAWlC,KAAAA,CAAAA,GAAS,QAAA;AAClE,QAAA;QAEA,IAAIa,IAAAA,KAASuB,MAAAA,IAAUvB,IAAAA,KAAS,QAAA,EAAU;YACxC,MAAM5C,MAAAA,GAAS+B,KAAAA,CAAM/B,MAAM,IAAI,GAAA;AAC/B,YAAA,OAAO,CAAC,QAAQ,EAAEA,MAAAA,CAAO,CAAC,CAAC;AAC7B,QAAA;QAEA,IAAI4C,IAAAA,KAASwB,OAAAA,IAAWxB,IAAAA,KAAS,SAAA,EAAW;YAC1C,OAAO,IAAI,CAACyB,cAAc,EAAA;AAC5B,QAAA;QAEA,IAAIzB,IAAAA,KAAS0B,IAAAA,IAAQ1B,IAAAA,KAAS,MAAA,EAAQ;YACpC,OAAO,WAAA;AACT,QAAA;QAEA,IAAIA,IAAAA,KAAS2B,MAAAA,IAAU3B,IAAAA,KAAS,QAAA,EAAU;YACxC,OAAO,QAAA;AACT,QAAA;;QAGA,OAAO,CAAC,QAAQ,EAAEb,KAAAA,CAAM/B,MAAM,IAAI,GAAA,CAAI,CAAC,CAAC;AAC1C,IAAA;AAqBA;;MAGAE,eAAAA,CAAmBf,IAAmB,EAAU;QAC9C,OAAO,EAAA;AACT,IAAA;AAOA;;MAGO+D,kBAAAA,CAAmBsB,KAAc,EAAU;AAChD,QAAA,IAAIA,UAAU,IAAA,EAAM;YAClB,OAAO,MAAA;AACT,QAAA;QACA,IAAI,OAAOA,UAAU,QAAA,EAAU;YAC7B,OAAO,CAAC,CAAC,EAAEA,KAAAA,CAAMC,OAAO,CAAC,IAAA,EAAM,IAAA,CAAA,CAAM,CAAC,CAAC;AACzC,QAAA;QACA,IAAI,OAAOD,UAAU,SAAA,EAAW;AAC9B,YAAA,OAAOA,QAAQ,MAAA,GAAS,OAAA;AAC1B,QAAA;AACA,QAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAY,OAAOA,UAAU,QAAA,EAAU;AAC1D,YAAA,OAAOL,MAAAA,CAAOK,KAAAA,CAAAA;AAChB,QAAA;AACA,QAAA,IAAIA,iBAAiBF,IAAAA,EAAM;AACzB,YAAA,OAAO,CAAC,CAAC,EAAEE,MAAME,WAAW,EAAA,CAAG,CAAC,CAAC;AACnC,QAAA;AACA,QAAA,OAAOP,MAAAA,CAAOK,KAAAA,CAAAA;AAChB,IAAA;AAEA;;AAEC,MACDG,UAAAA,CAAc1F,MAAe,EAAE2F,aAAsC,EAA0B;AAC7F,QAAA,MAAMzF,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AAErB,QAAA,IAAI,CAAC2F,aAAAA,EAAe;;YAElB,OAAO;AACLvF,gBAAAA,SAAAA,EAAW,IAAI,CAACC,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;gBACzCyD,IAAAA,EAAM;AACR,aAAA;AACF,QAAA;AAEA,QAAA,MAAMrC,eAA+B,EAAE;AACvC,QAAA,MAAMK,iBAA6D,EAAE;AACrE,QAAA,MAAMI,gBAA0B,EAAE;QAElC,MAAM6D,cAAAA,GAAiB,IAAIC,GAAAA,CAAIF,aAAAA,CAAcrF,OAAO,CAACM,GAAG,CAAC,CAACI,CAAAA,GAAW;AAACA,gBAAAA,CAAAA,CAAEwB,IAAI;AAAExB,gBAAAA;AAAE,aAAA,CAAA,CAAA;QAChF,MAAM0B,SAAAA,GAAYC,OAAAA,CAAQzC,IAAAA,CAAK0C,MAAM,CAAA;;QAGrC,KAAK,MAAMC,OAAOH,SAAAA,CAAW;AAC3B,YAAA,MAAMI,KAAAA,GAAQ5C,IAAAA,CAAK0C,MAAM,CAACC,GAAAA,CAAI;AAC9B,YAAA,IAAIC,OAAOC,OAAAA,EAAS;AAEpB,YAAA,MAAMf,UAAAA,GAAa,IAAI,CAACkB,iBAAiB,CAACL,GAAAA,EAAeC,KAAAA,CAAAA;YACzD,MAAMgD,aAAAA,GAAgBF,cAAAA,CAAeG,GAAG,CAAC/D,UAAAA,CAAAA;AAEzC,YAAA,IAAI,CAAC8D,aAAAA,EAAe;;AAElBxE,gBAAAA,YAAAA,CAAaI,IAAI,CAAC,IAAI,CAACsE,mBAAmB,CAACnD,KAAeC,KAAAA,EAAO5C,IAAAA,CAAAA,CAAAA;YACnE,CAAA,MAAO;;AAEL,gBAAA,MAAM+F,gBAAgB,IAAI,CAACD,mBAAmB,CAACnD,KAAeC,KAAAA,EAAO5C,IAAAA,CAAAA;AACrE,gBAAA,IAAI,IAAI,CAACgG,qBAAqB,CAACJ,eAAeG,aAAAA,CAAAA,EAAgB;AAC5DtE,oBAAAA,cAAAA,CAAeD,IAAI,CAAC;wBAAEyE,IAAAA,EAAML,aAAAA;wBAAelE,EAAAA,EAAIqE;AAAc,qBAAA,CAAA;AAC/D,gBAAA;AACF,YAAA;AACAL,YAAAA,cAAAA,CAAeQ,MAAM,CAACpE,UAAAA,CAAAA;AACxB,QAAA;;AAGA,QAAA,KAAK,MAAM,CAACQ,IAAAA,CAAK,IAAIoD,cAAAA,CAAgB;AACnC7D,YAAAA,aAAAA,CAAcL,IAAI,CAACc,IAAAA,CAAAA;AACrB,QAAA;QAEA,IAAIlB,YAAAA,CAAaP,MAAM,KAAK,CAAA,IAAKY,cAAAA,CAAeZ,MAAM,KAAK,CAAA,IAAKgB,aAAAA,CAAchB,MAAM,KAAK,CAAA,EAAG;AAC1F,YAAA,OAAOiD;AACT,QAAA;QAEA,OAAO;AACL5D,YAAAA,SAAAA,EAAW,IAAI,CAACC,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;YACzCyD,IAAAA,EAAM,OAAA;AACNrC,YAAAA,YAAAA,EAAcA,YAAAA,CAAaP,MAAM,GAAG,CAAA,GAAIO,YAAAA,GAAe0C,SAAAA;AACvDrC,YAAAA,cAAAA,EAAgBA,cAAAA,CAAeZ,MAAM,GAAG,CAAA,GAAIY,cAAAA,GAAiBqC,SAAAA;AAC7DjC,YAAAA,aAAAA,EAAeA,aAAAA,CAAchB,MAAM,GAAG,CAAA,GAAIgB,aAAAA,GAAgBiC;AAC5D,SAAA;AACF,IAAA;AAEA;;AAEC,MACD,mBAAUgC,CAAuB/C,QAAgB,EAAEH,KAAmB,EAAE5C,IAAmB,EAAgB;QACzG,MAAMiD,IAAAA,GAAOL,KAAAA,CAAMK,IAAI,KAAK,IAAA;AAC5B,QAAA,MAAMC,YAAAA,GAAeD,IAAAA,IAAQjD,IAAAA,CAAKmD,EAAE,KAAKJ,QAAAA;QAEzC,OAAO;AACLT,YAAAA,IAAAA,EAAM,IAAI,CAACU,iBAAiB,CAACD,QAAAA,EAAUH,KAAAA,CAAAA;AACvCa,YAAAA,IAAAA,EAAM,IAAI,CAACD,UAAU,CAACZ,KAAAA,EAAOA,MAAMa,IAAI,CAAA;YACvCG,QAAAA,EAAUhB,KAAAA,CAAMgB,QAAQ,IAAI,CAACV,YAAAA;AAC7BW,YAAAA,YAAAA,EAAcjB,MAAMiB,YAAY;AAChCX,YAAAA,YAAAA;AACAiD,YAAAA,eAAAA,EAAiBjD,gBAAgBN,KAAAA,CAAMS,aAAa,KAAK,KAAA,IAAS,CAACT,MAAMU,QAAQ;YACjFc,QAAAA,EAAUxB,KAAAA,CAAML,MAAM,IAAI,KAAA;AAC1B1B,YAAAA,MAAAA,EAAQ+B,MAAM/B,MAAM;AACpBqD,YAAAA,SAAAA,EAAWtB,MAAMsB,SAAS;AAC1BC,YAAAA,KAAAA,EAAOvB,MAAMuB,KAAK;AAClBH,YAAAA,OAAAA,EAASpB,MAAMoB;AACjB,SAAA;AACF,IAAA;AAEA;;AAEC,MACD,qBAAUgC,CAAsBI,OAAqB,EAAEC,OAAqB,EAAW;;AAErF,QAAA,OACED,OAAAA,CAAQ3C,IAAI,CAAC6C,WAAW,OAAOD,OAAAA,CAAQ5C,IAAI,CAAC6C,WAAW,EAAA,IACvDF,OAAAA,CAAQxC,QAAQ,KAAKyC,QAAQzC,QAAQ,IACrCwC,OAAAA,CAAQhC,QAAQ,KAAKiC,OAAAA,CAAQjC,QAAQ,IACrCmC,KAAKC,SAAS,CAACJ,OAAAA,CAAQvC,YAAY,CAAA,KAAM0C,IAAAA,CAAKC,SAAS,CAACH,QAAQxC,YAAY,CAAA;AAEhF,IAAA;AACF;;AC1dA;;IAGO,MAAM4C,oBAAAA,SAA6BnH,uBAAAA,CAAAA;IAGxBwF,aAAAA,CAAcD,UAAsB,EAAEjC,KAAmB,EAAU;QACjF,OAAQiC,UAAAA;YACN,KAAK,KAAA;gBACH,OAAO,KAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,QAAA;gBACH,OAAO,QAAA;YACT,KAAK,OAAA;gBACH,OAAO,OAAA;YACT,KAAK,QAAA;YACL,KAAK,MAAA;gBACH,OAAO,QAAA;YACT,KAAK,SAAA;YACL,KAAK,SAAA;gBACH,IAAIjC,KAAAA,CAAMsB,SAAS,KAAKJ,SAAAA,EAAW;oBACjC,IAAIlB,KAAAA,CAAMuB,KAAK,KAAKL,SAAAA,EAAW;AAC7B,wBAAA,OAAO,CAAC,QAAQ,EAAElB,KAAAA,CAAMsB,SAAS,CAAC,EAAE,EAAEtB,KAAAA,CAAMuB,KAAK,CAAC,CAAC,CAAC;AACtD,oBAAA;AACA,oBAAA,OAAO,CAAC,QAAQ,EAAEvB,MAAMsB,SAAS,CAAC,CAAC,CAAC;AACtC,gBAAA;gBACA,OAAO,gBAAA;YACT,KAAK,SAAA;gBACH,OAAO,YAAA;YACT,KAAK,MAAA;gBACH,OAAO,CAAC,KAAK,EAAEtB,KAAAA,CAAM/B,MAAM,IAAI,CAAA,CAAE,CAAC,CAAC;YACrC,KAAK,SAAA;gBACH,OAAO,CAAC,QAAQ,EAAE+B,KAAAA,CAAM/B,MAAM,IAAI,GAAA,CAAI,CAAC,CAAC;YAC1C,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;gBACH,OAAO,UAAA;YACT,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,WAAA;YACL,KAAK,aAAA;gBACH,OAAO,WAAA;YACT,KAAK,MAAA;YACL,KAAK,OAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;YACL,KAAK,OAAA;gBACH,OAAO,MAAA;YACT,KAAK,QAAA;;gBAEH,OAAO,MAAA;YACT,KAAK,QAAA;gBACH,OAAO,oBAAA;YACT,KAAK,WAAA;gBACH,OAAO,uBAAA;AACT,YAAA;gBACE,OAAO,MAAA;AACX;AACF,IAAA;IAEgBqE,cAAAA,GAAyB;QACvC,OAAO,YAAA;AACT,IAAA;AAEgBtD,IAAAA,6BAAAA,CACd1B,SAAiB,EACjBmB,MAAoB,EACpBqF,aAAqB,EACX;QACV,OAAO;YAAC,CAAC,YAAY,EAAE,IAAI,CAAChH,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,eAAe,EAAEwG,aAAAA,CAAc,CAAC;AAAE,SAAA;AACpF,IAAA;AAEgBzC,IAAAA,qBAAAA,CAAsB/D,SAAiB,EAAE4B,UAAkB,EAAEkC,OAAe,EAAU;AACpG,QAAA,MAAM2C,cAAAA,GAAiB3C,OAAAA,CAAQsB,OAAO,CAAC,IAAA,EAAM,IAAA,CAAA;AAC7C,QAAA,OAAO,CAAC,UAAU,EAAEqB,cAAAA,CAAe,CAAC,CAAC;AACvC,IAAA;IAES5F,eAAAA,GAA6B;QACpC,OAAO,mEAAA;AACT,IAAA;IAESqB,iBAAAA,CAAkBlC,SAAiB,EAAEiC,SAAiB,EAAU;;AAEvE,QAAA,OAAO,CAAC,WAAW,EAAE,IAAI,CAACzC,QAAQ,CAACyC,SAAAA,CAAAA,CAAW,IAAI,EAAE,IAAI,CAACzC,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AACjF,IAAA;;AApFK,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CACcqD,oBAAAA,GAAuB,gCAAA;;AAoF5C;;ACxFA;;IAGO,MAAMqD,uBAAAA,SAAgCtH,uBAAAA,CAAAA;AAG3C,IAAA,WAAA,CAAYE,cAA+B,CAAE;QAC3C,KAAK,CAACA,cAAAA,EAAgB,GAAA,CAAA,EAAA,IAAA,CAHL+D,oBAAAA,GAAuB,oBAAA;AAI1C,IAAA;IAEgBuB,aAAAA,CAAcD,UAAsB,EAAEjC,KAAmB,EAAU;QACjF,OAAQiC,UAAAA;YACN,KAAK,KAAA;gBACH,OAAO,SAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,QAAA;gBACH,OAAO,QAAA;YACT,KAAK,OAAA;YACL,KAAK,QAAA;YACL,KAAK,MAAA;gBACH,OAAO,kBAAA;YACT,KAAK,SAAA;YACL,KAAK,SAAA;gBACH,IAAIjC,KAAAA,CAAMsB,SAAS,KAAKJ,SAAAA,EAAW;oBACjC,IAAIlB,KAAAA,CAAMuB,KAAK,KAAKL,SAAAA,EAAW;AAC7B,wBAAA,OAAO,CAAC,QAAQ,EAAElB,KAAAA,CAAMsB,SAAS,CAAC,EAAE,EAAEtB,KAAAA,CAAMuB,KAAK,CAAC,CAAC,CAAC;AACtD,oBAAA;AACA,oBAAA,OAAO,CAAC,QAAQ,EAAEvB,MAAMsB,SAAS,CAAC,CAAC,CAAC;AACtC,gBAAA;gBACA,OAAO,SAAA;YACT,KAAK,SAAA;gBACH,OAAO,SAAA;YACT,KAAK,MAAA;gBACH,OAAO,CAAC,KAAK,EAAEtB,KAAAA,CAAM/B,MAAM,IAAI,CAAA,CAAE,CAAC,CAAC;YACrC,KAAK,SAAA;gBACH,OAAO,CAAC,QAAQ,EAAE+B,KAAAA,CAAM/B,MAAM,IAAI,GAAA,CAAI,CAAC,CAAC;YAC1C,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,WAAA;gBACH,OAAO,WAAA;YACT,KAAK,aAAA;gBACH,OAAO,aAAA;YACT,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,OAAA;gBACH,OAAO,OAAA;YACT,KAAK,MAAA;YACL,KAAK,OAAA;gBACH,OAAO,OAAA;YACT,KAAK,QAAA;gBACH,IAAI+B,KAAAA,CAAM/B,MAAM,EAAE;AAChB,oBAAA,OAAO,CAAC,OAAO,EAAE+B,MAAM/B,MAAM,CAAC,CAAC,CAAC;AAClC,gBAAA;gBACA,OAAO,QAAA;YACT,KAAK,QAAA;gBACH,OAAO,QAAA;YACT,KAAK,WAAA;gBACH,OAAO,WAAA;AACT,YAAA;gBACE,OAAO,MAAA;AACX;AACF,IAAA;IAEgBqE,cAAAA,GAAyB;QACvC,OAAO,SAAA;AACT,IAAA;AAEgBtD,IAAAA,6BAAAA,CACd1B,SAAiB,EACjBmB,MAAoB,EACpBqF,aAAqB,EACX;AACV,QAAA,MAAMvF,aAAuB,EAAE;AAC/B,QAAA,MAAM0F,gBAAAA,GAAmB,IAAI,CAACnH,QAAQ,CAACQ,SAAAA,CAAAA;AACvC,QAAA,MAAM4G,oBAAoB,IAAI,CAACpH,QAAQ,CAAC2B,OAAOiB,IAAI,CAAA;;;AAInDnB,QAAAA,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEqF,gBAAAA,CAAiB,cAAc,EAAEC,iBAAAA,CAAkB,MAAM,EAAEzF,MAAAA,CAAOoC,IAAI,CAAC,CAAC,CAAC,CAAA;;QAGxG,IAAIpC,MAAAA,CAAOuC,QAAQ,EAAE;YACnBzC,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEqF,iBAAiB,cAAc,EAAEC,iBAAAA,CAAkB,eAAe,CAAC,CAAA;QACpG,CAAA,MAAO;YACL3F,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEqF,iBAAiB,cAAc,EAAEC,iBAAAA,CAAkB,cAAc,CAAC,CAAA;AACnG,QAAA;;QAGA,IAAIzF,MAAAA,CAAOwC,YAAY,KAAKC,SAAAA,EAAW;AACrC3C,YAAAA,UAAAA,CAAWK,IAAI,CACb,CAAC,YAAY,EAAEqF,gBAAAA,CAAiB,cAAc,EAAEC,iBAAAA,CAAkB,aAAa,EAAE,IAAI,CAAC/C,kBAAkB,CAAC1C,OAAOwC,YAAY,CAAA,CAAE,CAAC,CAAC,CAAA;QAEpI,CAAA,MAAO;YACL1C,UAAAA,CAAWK,IAAI,CAAC,CAAC,YAAY,EAAEqF,iBAAiB,cAAc,EAAEC,iBAAAA,CAAkB,cAAc,CAAC,CAAA;AACnG,QAAA;QAEA,OAAO3F,UAAAA;AACT,IAAA;AAEgB8C,IAAAA,qBAAAA,CAAsB/D,SAAiB,EAAE4B,UAAkB,EAAEkC,OAAe,EAAU;;QAEpG,OAAO,EAAA;AACT,IAAA;AAEA;;AAEC,MACD+C,+BAA+B7G,SAAiB,EAAE4B,UAAkB,EAAEkC,OAAe,EAAU;AAC7F,QAAA,MAAM2C,cAAAA,GAAiB3C,OAAAA,CAAQsB,OAAO,CAAC,IAAA,EAAM,IAAA,CAAA;AAC7C,QAAA,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC5F,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,EAAE,IAAI,CAACR,QAAQ,CAACoC,UAAAA,CAAAA,CAAY,KAAK,EAAE6E,cAAAA,CAAe,EAAE,CAAC;AAC7G,IAAA;IAESvE,iBAAAA,CAAkBlC,SAAiB,EAAEiC,SAAiB,EAAU;;QAEvE,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAACzC,QAAQ,CAACyC,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAC5D,IAAA;AACF;;AC3HA;;IAGO,MAAM6E,qBAAAA,SAA8B1H,uBAAAA,CAAAA;IAGzBwF,aAAAA,CAAcD,UAAsB,EAAEjC,KAAmB,EAAU;;QAEjF,OAAQiC,UAAAA;YACN,KAAK,KAAA;YACL,KAAK,UAAA;YACL,KAAK,QAAA;YACL,KAAK,QAAA;YACL,KAAK,WAAA;gBACH,OAAO,SAAA;YACT,KAAK,OAAA;YACL,KAAK,QAAA;YACL,KAAK,MAAA;YACL,KAAK,SAAA;YACL,KAAK,SAAA;gBACH,OAAO,MAAA;YACT,KAAK,SAAA;AACH,gBAAA,OAAO;YACT,KAAK,MAAA;YACL,KAAK,SAAA;YACL,KAAK,MAAA;YACL,KAAK,MAAA;gBACH,OAAO,MAAA;YACT,KAAK,MAAA;YACL,KAAK,MAAA;YACL,KAAK,WAAA;YACL,KAAK,aAAA;AACH,gBAAA,OAAO;YACT,KAAK,MAAA;YACL,KAAK,OAAA;AACH,gBAAA,OAAO;YACT,KAAK,MAAA;YACL,KAAK,OAAA;gBACH,OAAO,MAAA;YACT,KAAK,QAAA;AACH,gBAAA,OAAO;AACT,YAAA;gBACE,OAAO,MAAA;AACX;AACF,IAAA;IAEgBK,cAAAA,GAAyB;QACvC,OAAO,SAAA;AACT,IAAA;AAEgBtD,IAAAA,6BAAAA,CACd1B,SAAiB,EACjBmB,MAAoB,EACpBqF,aAAqB,EACX;;;AAGV,QAAA,MAAM,IAAIO,KAAAA,CACR,CAAC,yCAAyC,EAAE5F,MAAAA,CAAOiB,IAAI,CAAC,YAAY,EAAEpC,SAAAA,CAAU,GAAG,CAAC,GAClF,wDAAA,CAAA;AAEN,IAAA;AAEgB+D,IAAAA,qBAAAA,CAAsB/D,SAAiB,EAAE4B,UAAkB,EAAEkC,OAAe,EAAU;QACpG,OAAO,EAAA;AACT,IAAA;IAES5B,iBAAAA,CAAkBlC,SAAiB,EAAEiC,SAAiB,EAAU;QACvE,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAACzC,QAAQ,CAACyC,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAC5D,IAAA;AAES4B,IAAAA,kBAAAA,CAAmBsB,KAAc,EAAU;QAClD,IAAI,OAAOA,UAAU,SAAA,EAAW;AAC9B,YAAA,OAAOA,QAAQ,GAAA,GAAM,GAAA;AACvB,QAAA;QACA,OAAO,KAAK,CAACtB,kBAAAA,CAAmBsB,KAAAA,CAAAA;AAClC,IAAA;;AAzEK,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CACc9B,oBAAAA,GAAuB,mCAAA;;AAyE5C;;ACrEA;;;AAGC,IACM,MAAM2D,uBAAAA,CAAAA;IACX,WAAA,CAA6BC,WAAwB,CAAE;aAA1BA,WAAAA,GAAAA,WAAAA;AAA2B,IAAA;IAExD,MAAMC,cAAAA,CAAelH,SAAiB,EAAoC;AACxE,QAAA,MAAMmH,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,MAAMC,SAAS,MAAM,IAAI,CAACC,mBAAmB,CAACH,OAAAA,EAASnH,SAAAA,CAAAA;AACvD,YAAA,IAAI,CAACqH,MAAAA,EAAQ;gBACX,OAAOzD,SAAAA;AACT,YAAA;YAEA,MAAM,CAAC1D,SAASqH,OAAAA,EAASC,WAAAA,EAAaC,WAAW,GAAG,MAAMC,OAAAA,CAAQC,GAAG,CAAC;gBACpE,IAAI,CAACC,UAAU,CAACT,OAAAA,EAASnH,SAAAA,CAAAA;gBACzB,IAAI,CAAC6H,UAAU,CAACV,OAAAA,EAASnH,SAAAA,CAAAA;gBACzB,IAAI,CAAC8H,cAAc,CAACX,OAAAA,EAASnH,SAAAA,CAAAA;gBAC7B,IAAI,CAAC+H,aAAa,CAACZ,OAAAA,EAASnH,SAAAA;AAC7B,aAAA,CAAA;YAED,OAAO;gBACLoC,IAAAA,EAAMpC,SAAAA;AACNE,gBAAAA,OAAAA;AACAuH,gBAAAA,UAAAA;AACAF,gBAAAA,OAAAA;AACAC,gBAAAA;AACF,aAAA;QACF,CAAA,QAAU;AACR,YAAA,MAAML,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAMC,aAAAA,GAAmC;AACvC,QAAA,MAAMd,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,MAAM7G,MAAM;;;;;;MAMZ,CAAC;AAED,YAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAyBpH,GAAAA,CAAAA;AAC1D,YAAA,OAAO2H,QAAQ1H,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAEC,UAAU,CAAA;QAC7C,CAAA,QAAU;AACR,YAAA,MAAMjB,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;IAEA,MAAMK,WAAAA,CAAYrI,SAAiB,EAAoB;AACrD,QAAA,MAAMmH,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,OAAO,IAAI,CAACE,mBAAmB,CAACH,OAAAA,EAASnH,SAAAA,CAAAA;QAC3C,CAAA,QAAU;AACR,YAAA,MAAMmH,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAcV,mBAAAA,CAAoBH,OAAmB,EAAEnH,SAAiB,EAAoB;AAC1F,QAAA,MAAMO,MAAM;;;;;IAKZ,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAoBpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;QACrE,OAAQkI,CAAAA,OAAO,CAAC,EAAE,EAAEI,KAAAA,IAAS,CAAA,IAAK,CAAA;AACpC,IAAA;AAEA,IAAA,MAAclB,UAAAA,GAAkC;AAC9C,QAAA,MAAMD,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,sDAAA,CAAA;AAClB,QAAA;QAEA,OAAOI,OAAAA;AACT,IAAA;AAEA,IAAA,MAAcS,UAAAA,CAAWT,OAAmB,EAAEnH,SAAiB,EAA2B;AACxF,QAAA,MAAMO,MAAM;;;;;;;;;;;;;;;;;IAiBZ,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAY9BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AAEnB,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIC,WAAW;gBACrBlF,IAAAA,EAAMiF,GAAAA,CAAIE,SAAS,CAACC,WAAW,EAAA;gBAC/BjF,QAAAA,EAAU8E,GAAAA,CAAII,WAAW,KAAK,KAAA;AAC9BjF,gBAAAA,YAAAA,EAAc,IAAI,CAACkF,iBAAiB,CAACL,IAAIM,cAAc,CAAA;gBACvD9F,YAAAA,EAAcwF,GAAAA,CAAIO,UAAU,KAAK,KAAA;AACjC9C,gBAAAA,eAAAA,EAAiBuC,IAAIQ,KAAK,CAAC5C,WAAW,EAAA,CAAG3C,QAAQ,CAAC,gBAAA,CAAA;gBAClDS,QAAAA,EAAUsE,GAAAA,CAAIO,UAAU,KAAK,KAAA;gBAC7BpI,MAAAA,EAAQ6H,GAAAA,CAAIS,wBAAwB,IAAIrF,SAAAA;gBACxCI,SAAAA,EAAWwE,GAAAA,CAAIU,iBAAiB,IAAItF,SAAAA;gBACpCK,KAAAA,EAAOuE,GAAAA,CAAIW,aAAa,IAAIvF,SAAAA;gBAC5BE,OAAAA,EAAS0E,GAAAA,CAAIY,cAAc,IAAIxF;aACjC,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAciE,UAAAA,CAAWV,OAAmB,EAAEnH,SAAiB,EAA0B;AACvF,QAAA,MAAMO,MAAM;;;;;;;;;;;IAWZ,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAI9BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AAEnB,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIa,UAAU;AACpBnJ,gBAAAA,OAAAA,EAASsI,GAAAA,CAAItI,OAAO,CAACoJ,KAAK,CAAC,GAAA,CAAA;gBAC3BjH,MAAAA,EAAQ0C,OAAAA,CAAQyD,IAAIe,SAAS;aAC/B,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAczB,cAAAA,CAAeX,OAAmB,EAAEnH,SAAiB,EAA+B;AAChG,QAAA,MAAMO,MAAM;;;;;;;;;;;;;;;;;IAiBZ,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAO9BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AAEnB,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIgB,eAAe;AACzBtJ,gBAAAA,OAAAA,EAASsI,GAAAA,CAAItI,OAAO,CAACoJ,KAAK,CAAC,GAAA,CAAA;AAC3BG,gBAAAA,eAAAA,EAAiBjB,IAAIkB,gBAAgB;AACrCC,gBAAAA,iBAAAA,EAAmBnB,GAAAA,CAAIoB,kBAAkB,CAACN,KAAK,CAAC,GAAA,CAAA;AAChDO,gBAAAA,QAAAA,EAAU,IAAI,CAACC,0BAA0B,CAACtB,IAAIuB,WAAW,CAAA;AACzDC,gBAAAA,QAAAA,EAAU,IAAI,CAACF,0BAA0B,CAACtB,IAAIyB,WAAW;aAC3D,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAclC,aAAAA,CAAcZ,OAAmB,EAAEnH,SAAiB,EAAiC;AACjG,QAAA,MAAMO,MAAM;;;;;;;IAOZ,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAA0BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;QAE3E,IAAIkI,OAAAA,CAAQvH,MAAM,KAAK,CAAA,EAAG;YACxB,OAAOiD,SAAAA;AACT,QAAA;AAEA,QAAA,OAAOsE,QAAQ1H,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAEM,WAAW,CAAA;AAC9C,IAAA;AAEQI,IAAAA,iBAAAA,CAAkBlF,YAA2B,EAAW;AAC9D,QAAA,IAAIA,iBAAiB,IAAA,EAAM;YACzB,OAAOC,SAAAA;AACT,QAAA;;AAGA,QAAA,IAAID,iBAAiB,MAAA,EAAQ;YAC3B,OAAO,IAAA;AACT,QAAA;AACA,QAAA,IAAIA,iBAAiB,mBAAA,EAAqB;YACxC,OAAOA,YAAAA;AACT,QAAA;QACA,IAAI,QAAA,CAASuG,IAAI,CAACvG,YAAAA,CAAAA,EAAe;AAC/B,YAAA,OAAOA,YAAAA,CAAawG,KAAK,CAAC,CAAA,EAAG,EAAC,CAAA;AAChC,QAAA;QACA,IAAI,SAAA,CAAUD,IAAI,CAACvG,YAAAA,CAAAA,EAAe;YAChC,OAAOkB,MAAAA,CAAOuF,QAAQ,CAACzG,YAAAA,EAAc,EAAA,CAAA;AACvC,QAAA;QACA,IAAI,cAAA,CAAeuG,IAAI,CAACvG,YAAAA,CAAAA,EAAe;YACrC,OAAOkB,MAAAA,CAAOwF,UAAU,CAAC1G,YAAAA,CAAAA;AAC3B,QAAA;QAEA,OAAOA,YAAAA;AACT,IAAA;AAEQmG,IAAAA,0BAAAA,CAA2BQ,MAAc,EAAiE;AAChH,QAAA,OAAQA,OAAO3B,WAAW,EAAA;YACxB,KAAK,SAAA;gBACH,OAAO,SAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,WAAA;gBACH,OAAO,WAAA;AACT,YAAA;gBACE,OAAO/E,SAAAA;AACX;AACF,IAAA;AACF;AAEA;;;IAIO,MAAM2G,yBAAAA,GAA4BvD;;AC1QzC;;AAEC,IACM,MAAMwD,0BAAAA,CAAAA;IACX,WAAA,CAA6BvD,WAAwB,CAAE;aAA1BA,WAAAA,GAAAA,WAAAA;AAA2B,IAAA;IAExD,MAAMC,cAAAA,CAAelH,SAAiB,EAAoC;AACxE,QAAA,MAAMmH,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,MAAMC,SAAS,MAAM,IAAI,CAACC,mBAAmB,CAACH,OAAAA,EAASnH,SAAAA,CAAAA;AACvD,YAAA,IAAI,CAACqH,MAAAA,EAAQ;gBACX,OAAOzD,SAAAA;AACT,YAAA;YAEA,MAAM,CAAC1D,SAASqH,OAAAA,EAASC,WAAAA,EAAaC,WAAW,GAAG,MAAMC,OAAAA,CAAQC,GAAG,CAAC;gBACpE,IAAI,CAACC,UAAU,CAACT,OAAAA,EAASnH,SAAAA,CAAAA;gBACzB,IAAI,CAAC6H,UAAU,CAACV,OAAAA,EAASnH,SAAAA,CAAAA;gBACzB,IAAI,CAAC8H,cAAc,CAACX,OAAAA,EAASnH,SAAAA,CAAAA;gBAC7B,IAAI,CAAC+H,aAAa,CAACZ,OAAAA,EAASnH,SAAAA;AAC7B,aAAA,CAAA;YAED,OAAO;gBACLoC,IAAAA,EAAMpC,SAAAA;AACNE,gBAAAA,OAAAA;AACAuH,gBAAAA,UAAAA;AACAF,gBAAAA,OAAAA;AACAC,gBAAAA;AACF,aAAA;QACF,CAAA,QAAU;AACR,YAAA,MAAML,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAMC,aAAAA,GAAmC;AACvC,QAAA,MAAMd,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,MAAM7G,MAAM;;;;;;MAMZ,CAAC;AAED,YAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAyBpH,GAAAA,CAAAA;AAC1D,YAAA,OAAO2H,QAAQ1H,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAEC,UAAU,CAAA;QAC7C,CAAA,QAAU;AACR,YAAA,MAAMjB,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;IAEA,MAAMK,WAAAA,CAAYrI,SAAiB,EAAoB;AACrD,QAAA,MAAMmH,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,OAAO,IAAI,CAACE,mBAAmB,CAACH,OAAAA,EAASnH,SAAAA,CAAAA;QAC3C,CAAA,QAAU;AACR,YAAA,MAAMmH,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAcV,mBAAAA,CAAoBH,OAAmB,EAAEnH,SAAiB,EAAoB;AAC1F,QAAA,MAAMO,MAAM;;;;;;IAMZ,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAsBpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AACvE,QAAA,OAAOkI,OAAO,CAAC,CAAA,CAAE,EAAEb,MAAAA,IAAU,KAAA;AAC/B,IAAA;AAEA,IAAA,MAAcD,UAAAA,GAAkC;AAC9C,QAAA,MAAMD,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,yDAAA,CAAA;AAClB,QAAA;QAEA,OAAOI,OAAAA;AACT,IAAA;AAEA,IAAA,MAAcS,UAAAA,CAAWT,OAAmB,EAAEnH,SAAiB,EAA2B;QACxF,MAAMO,GAAAA,WAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCpB,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAY9BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AAEnB,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIC,WAAW;gBACrBlF,IAAAA,EAAM,IAAI,CAACkH,aAAa,CAACjC,IAAIE,SAAS,EAAEF,IAAIkC,QAAQ,CAAA;gBACpDhH,QAAAA,EAAU8E,GAAAA,CAAII,WAAW,KAAK,KAAA;AAC9BjF,gBAAAA,YAAAA,EAAc,IAAI,CAACkF,iBAAiB,CAACL,IAAIM,cAAc,CAAA;AACvD9F,gBAAAA,YAAAA,EAAcwF,IAAImC,cAAc;AAChC1E,gBAAAA,eAAAA,EAAiB,IAAI,CAACA,eAAe,CAACuC,IAAIM,cAAc,CAAA;AACxD5E,gBAAAA,QAAAA,EAAUsE,IAAIe,SAAS;gBACvB5I,MAAAA,EAAQ6H,GAAAA,CAAIS,wBAAwB,IAAIrF,SAAAA;gBACxCI,SAAAA,EAAWwE,GAAAA,CAAIU,iBAAiB,IAAItF,SAAAA;gBACpCK,KAAAA,EAAOuE,GAAAA,CAAIW,aAAa,IAAIvF,SAAAA;gBAC5BE,OAAAA,EAAS0E,GAAAA,CAAIY,cAAc,IAAIxF;aACjC,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAciE,UAAAA,CAAWV,OAAmB,EAAEnH,SAAiB,EAA0B;QACvF,MAAMO,GAAAA,WAAc;;;;;;;;;;;;;;;;IAgBpB,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAI9BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AAEnB,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIa,UAAU;AACpBnJ,gBAAAA,OAAAA,EAASsI,IAAItI,OAAO;AACpBmC,gBAAAA,MAAAA,EAAQmG,IAAIe;aACd,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAczB,cAAAA,CAAeX,OAAmB,EAAEnH,SAAiB,EAA+B;QAChG,MAAMO,GAAAA,WAAc;;;;;;;;;;;;;;;;;;;;;;;IAuBpB,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAO9BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;AAEnB,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIgB,eAAe;AACzBtJ,gBAAAA,OAAAA,EAASsI,IAAItI,OAAO;AACpBuJ,gBAAAA,eAAAA,EAAiBjB,IAAIkB,gBAAgB;AACrCC,gBAAAA,iBAAAA,EAAmBnB,IAAIoB,kBAAkB;AACzCC,gBAAAA,QAAAA,EAAU,IAAI,CAACC,0BAA0B,CAACtB,IAAIuB,WAAW,CAAA;AACzDC,gBAAAA,QAAAA,EAAU,IAAI,CAACF,0BAA0B,CAACtB,IAAIyB,WAAW;aAC3D,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAclC,aAAAA,CAAcZ,OAAmB,EAAEnH,SAAiB,EAAiC;QACjG,MAAMO,GAAAA,WAAc;;;;;;;;;;IAUpB,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAA0BpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;QAE3E,IAAIkI,OAAAA,CAAQvH,MAAM,KAAK,CAAA,EAAG;YACxB,OAAOiD,SAAAA;AACT,QAAA;AAEA,QAAA,OAAOsE,QAAQ1H,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAEM,WAAW,CAAA;AAC9C,IAAA;IAEQgC,aAAAA,CAAcG,QAAgB,EAAEC,OAAe,EAAU;;AAE/D,QAAA,IAAID,aAAa,cAAA,EAAgB;AAC/B,YAAA,OAAOC,QAAQlC,WAAW,EAAA;AAC5B,QAAA;AACA,QAAA,IAAIiC,aAAa,OAAA,EAAS;AACxB,YAAA,OAAO,GAAGC,OAAAA,CAAQzF,OAAO,CAAC,IAAA,EAAM,EAAA,CAAA,CAAI,EAAE,CAAC;AACzC,QAAA;AACA,QAAA,OAAOwF,SAASjC,WAAW,EAAA;AAC7B,IAAA;AAEQE,IAAAA,iBAAAA,CAAkBlF,YAA2B,EAAW;AAC9D,QAAA,IAAI,CAACA,YAAAA,EAAc;YACjB,OAAOC,SAAAA;AACT,QAAA;;AAGA,QAAA,MAAMkH,UAAUnH,YAAAA,CAAayB,OAAO,CAAC,oBAAA,EAAsB,IAAI2F,IAAI,EAAA;;AAGnE,QAAA,IAAID,QAAQE,UAAU,CAAC,QAAQF,OAAAA,CAAQG,QAAQ,CAAC,GAAA,CAAA,EAAM;AACpD,YAAA,OAAOH,OAAAA,CAAQX,KAAK,CAAC,CAAA,EAAG,EAAC,CAAA;AAC3B,QAAA;QACA,IAAIW,OAAAA,KAAY,MAAA,IAAUA,OAAAA,KAAY,OAAA,EAAS;AAC7C,YAAA,OAAOA,OAAAA,KAAY,MAAA;AACrB,QAAA;AACA,QAAA,IAAIA,YAAY,MAAA,EAAQ;YACtB,OAAO,IAAA;AACT,QAAA;QACA,IAAI,SAAA,CAAUZ,IAAI,CAACY,OAAAA,CAAAA,EAAU;YAC3B,OAAOjG,MAAAA,CAAOuF,QAAQ,CAACU,OAAAA,EAAS,EAAA,CAAA;AAClC,QAAA;QACA,IAAI,cAAA,CAAeZ,IAAI,CAACY,OAAAA,CAAAA,EAAU;YAChC,OAAOjG,MAAAA,CAAOwF,UAAU,CAACS,OAAAA,CAAAA;AAC3B,QAAA;;QAGA,OAAOnH,YAAAA;AACT,IAAA;AAEQsC,IAAAA,eAAAA,CAAgBtC,YAA2B,EAAW;AAC5D,QAAA,IAAI,CAACA,YAAAA,EAAc;YACjB,OAAO,KAAA;AACT,QAAA;QACA,OAAOA,YAAAA,CAAaF,QAAQ,CAAC,UAAA,CAAA;AAC/B,IAAA;AAEQqG,IAAAA,0BAAAA,CAA2BQ,MAAc,EAAiE;AAChH,QAAA,OAAQA,OAAO3B,WAAW,EAAA;YACxB,KAAK,SAAA;gBACH,OAAO,SAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,WAAA;gBACH,OAAO,WAAA;AACT,YAAA;gBACE,OAAO/E,SAAAA;AACX;AACF,IAAA;AACF;;AC7TA;;AAEC,IACM,MAAMsH,wBAAAA,CAAAA;IACX,WAAA,CAA6BjE,WAAwB,CAAE;aAA1BA,WAAAA,GAAAA,WAAAA;AAA2B,IAAA;IAExD,MAAMC,cAAAA,CAAelH,SAAiB,EAAoC;AACxE,QAAA,MAAMmH,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,MAAMC,SAAS,MAAM,IAAI,CAACC,mBAAmB,CAACH,OAAAA,EAASnH,SAAAA,CAAAA;AACvD,YAAA,IAAI,CAACqH,MAAAA,EAAQ;gBACX,OAAOzD,SAAAA;AACT,YAAA;YAEA,MAAM,CAAC1D,SAASqH,OAAAA,EAASC,WAAAA,EAAaC,WAAW,GAAG,MAAMC,OAAAA,CAAQC,GAAG,CAAC;gBACpE,IAAI,CAACC,UAAU,CAACT,OAAAA,EAASnH,SAAAA,CAAAA;gBACzB,IAAI,CAAC6H,UAAU,CAACV,OAAAA,EAASnH,SAAAA,CAAAA;gBACzB,IAAI,CAAC8H,cAAc,CAACX,OAAAA,EAASnH,SAAAA,CAAAA;gBAC7B,IAAI,CAAC+H,aAAa,CAACZ,OAAAA,EAASnH,SAAAA;AAC7B,aAAA,CAAA;YAED,OAAO;gBACLoC,IAAAA,EAAMpC,SAAAA;AACNE,gBAAAA,OAAAA;AACAuH,gBAAAA,UAAAA;AACAF,gBAAAA,OAAAA;AACAC,gBAAAA;AACF,aAAA;QACF,CAAA,QAAU;AACR,YAAA,MAAML,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAMC,aAAAA,GAAmC;AACvC,QAAA,MAAMd,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;YACF,MAAM7G,GAAAA,WAAc;;;;;;MAMpB,CAAC;AAED,YAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAmBpH,GAAAA,CAAAA;AACpD,YAAA,OAAO2H,QAAQ1H,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAE/F,IAAI,CAAA;QACvC,CAAA,QAAU;AACR,YAAA,MAAM+E,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;IAEA,MAAMK,WAAAA,CAAYrI,SAAiB,EAAoB;AACrD,QAAA,MAAMmH,OAAAA,GAAU,MAAM,IAAI,CAACC,UAAU,EAAA;QAErC,IAAI;AACF,YAAA,OAAO,IAAI,CAACE,mBAAmB,CAACH,OAAAA,EAASnH,SAAAA,CAAAA;QAC3C,CAAA,QAAU;AACR,YAAA,MAAMmH,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAcV,mBAAAA,CAAoBH,OAAmB,EAAEnH,SAAiB,EAAoB;QAC1F,MAAMO,GAAAA,WAAc;;;;;IAKpB,CAAC;AAED,QAAA,MAAM2H,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAoBpH,GAAAA,EAAK;AAACP,YAAAA;AAAU,SAAA,CAAA;QACrE,OAAQkI,CAAAA,OAAO,CAAC,EAAE,EAAEI,KAAAA,IAAS,CAAA,IAAK,CAAA;AACpC,IAAA;AAEA,IAAA,MAAclB,UAAAA,GAAkC;AAC9C,QAAA,MAAMD,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;QAEA,OAAOI,OAAAA;AACT,IAAA;AAEA,IAAA,MAAcS,UAAAA,CAAWT,OAAmB,EAAEnH,SAAiB,EAA2B;;QAExF,MAAMO,GAAAA,GAAM,CAAC,kBAAkB,EAAE,IAAI,CAACf,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAE5D,QAAA,MAAMkI,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAO9BpH,GAAAA,CAAAA;;AAGH,QAAA,MAAM4K,gBAAgB,MAAM,IAAI,CAACC,gBAAgB,CAACjE,OAAAA,EAASnH,SAAAA,CAAAA;AAE3D,QAAA,OAAOkI,OAAAA,CAAQ1H,GAAG,CAAC,CAACgI,OAAc;AAChCpG,gBAAAA,IAAAA,EAAMoG,IAAIpG,IAAI;AACdmB,gBAAAA,IAAAA,EAAM,IAAI,CAACkH,aAAa,CAACjC,IAAIjF,IAAI,CAAA;gBACjCG,QAAAA,EAAU8E,GAAAA,CAAI6C,OAAO,KAAK,CAAA;AAC1B1H,gBAAAA,YAAAA,EAAc,IAAI,CAACkF,iBAAiB,CAACL,IAAI8C,UAAU,CAAA;gBACnDtI,YAAAA,EAAcwF,GAAAA,CAAI+C,EAAE,GAAG,CAAA;gBACvBtF,eAAAA,EAAiBuC,GAAAA,CAAI+C,EAAE,GAAG,CAAA,IAAK/C,IAAIjF,IAAI,CAACoF,WAAW,EAAA,KAAO,SAAA;AAC1DzE,gBAAAA,QAAAA,EAAUiH,aAAAA,CAAcK,GAAG,CAAChD,GAAAA,CAAIpG,IAAI,CAAA;AACpCzB,gBAAAA,MAAAA,EAAQ,IAAI,CAAC8K,aAAa,CAACjD,IAAIjF,IAAI,CAAA;gBACnCS,SAAAA,EAAWJ,SAAAA;gBACXK,KAAAA,EAAOL,SAAAA;gBACPE,OAAAA,EAASF;aACX,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAcwH,gBAAAA,CAAiBjE,OAAmB,EAAEnH,SAAiB,EAAwB;QAC3F,MAAMO,GAAAA,GAAM,CAAC,kBAAkB,EAAE,IAAI,CAACf,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAE5D,QAAA,MAAMuH,OAAAA,GAAU,MAAMJ,OAAAA,CAAQQ,GAAG,CAM9BpH,GAAAA,CAAAA;AAEH,QAAA,MAAM4K,gBAAgB,IAAIO,GAAAA,EAAAA;QAE1B,KAAK,MAAM5J,SAASyF,OAAAA,CAAS;AAC3B,YAAA,IAAIzF,MAAMO,MAAM,IAAIP,KAAAA,CAAM6J,MAAM,KAAK,GAAA,EAAK;AACxC,gBAAA,MAAMC,YAAY,MAAMzE,OAAAA,CAAQQ,GAAG,CAAmB,CAAC,kBAAkB,EAAE,IAAI,CAACnI,QAAQ,CAACsC,KAAAA,CAAMM,IAAI,CAAA,CAAE,CAAC,CAAC,CAAA;;gBAEvG,IAAIwJ,SAAAA,CAAUjL,MAAM,KAAK,CAAA,EAAG;AAC1BwK,oBAAAA,aAAAA,CAAcU,GAAG,CAACD,SAAS,CAAC,CAAA,CAAE,CAACxJ,IAAI,CAAA;AACrC,gBAAA;AACF,YAAA;AACF,QAAA;QAEA,OAAO+I,aAAAA;AACT,IAAA;AAEA,IAAA,MAActD,UAAAA,CAAWV,OAAmB,EAAEnH,SAAiB,EAA0B;QACvF,MAAMO,GAAAA,GAAM,CAAC,kBAAkB,EAAE,IAAI,CAACf,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAE5D,QAAA,MAAMuH,OAAAA,GAAU,MAAMJ,OAAAA,CAAQQ,GAAG,CAM9BpH,GAAAA,CAAAA;AAEH,QAAA,MAAMuL,SAAwB,EAAE;QAEhC,KAAK,MAAMhK,SAASyF,OAAAA,CAAS;;YAE3B,IAAIzF,KAAAA,CAAM6J,MAAM,KAAK,GAAA,EAAK;AACxB,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMzL,UAAU,MAAMiH,OAAAA,CAAQQ,GAAG,CAAmB,CAAC,kBAAkB,EAAE,IAAI,CAACnI,QAAQ,CAACsC,KAAAA,CAAMM,IAAI,CAAA,CAAE,CAAC,CAAC,CAAA;AAErG0J,YAAAA,MAAAA,CAAOxK,IAAI,CAAC;AACVc,gBAAAA,IAAAA,EAAMN,MAAMM,IAAI;AAChBlC,gBAAAA,OAAAA,EAASA,QAAQM,GAAG,CAAC,CAACI,CAAAA,GAAWA,EAAEwB,IAAI,CAAA;gBACvCC,MAAAA,EAAQ0C,OAAAA,CAAQjD,MAAMO,MAAM;AAC9B,aAAA,CAAA;AACF,QAAA;QAEA,OAAOyJ,MAAAA;AACT,IAAA;AAEA,IAAA,MAAchE,cAAAA,CAAeX,OAAmB,EAAEnH,SAAiB,EAA+B;QAChG,MAAMO,GAAAA,GAAM,CAAC,wBAAwB,EAAE,IAAI,CAACf,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAElE,QAAA,MAAMkI,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAS9BpH,GAAAA,CAAAA;;AAGH,QAAA,MAAMwL,UAAU,IAAItG,GAAAA,EAAAA;QACpB,KAAK,MAAM+C,OAAON,OAAAA,CAAS;AACzB,YAAA,MAAM8D,WAAWD,OAAAA,CAAQpG,GAAG,CAAC6C,GAAAA,CAAIvF,EAAE,KAAK,EAAE;AAC1C+I,YAAAA,QAAAA,CAAS1K,IAAI,CAACkH,GAAAA,CAAAA;AACduD,YAAAA,OAAAA,CAAQE,GAAG,CAACzD,GAAAA,CAAIvF,EAAE,EAAE+I,QAAAA,CAAAA;AACtB,QAAA;QAEA,OAAOE,KAAAA,CAAMnG,IAAI,CAACgG,OAAAA,CAAQI,OAAO,EAAA,CAAA,CAAI3L,GAAG,CAAC,CAAC,CAACyC,EAAAA,EAAImJ,IAAAA,CAAK,GAAA;YAClD,MAAMC,KAAAA,GAAQD,IAAI,CAAC,CAAA,CAAE;YACrB,OAAO;AACLhK,gBAAAA,IAAAA,EAAM,CAAC,GAAG,EAAEpC,SAAAA,CAAU,CAAC,EAAEiD,EAAAA,CAAAA,CAAI;AAC7B/C,gBAAAA,OAAAA,EAASkM,KAAK5L,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAEpC,IAAI,CAAA;AACpC0D,gBAAAA,eAAAA,EAAiB4C,MAAMC,KAAK;AAC5B3C,gBAAAA,iBAAAA,EAAmByC,KAAK5L,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAE3G,EAAE,CAAA;AAC5CqI,gBAAAA,QAAAA,EAAU,IAAI,CAACC,0BAA0B,CAACuC,MAAME,SAAS,CAAA;AACzDvC,gBAAAA,QAAAA,EAAU,IAAI,CAACF,0BAA0B,CAACuC,MAAMG,SAAS;AAC3D,aAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,MAAczE,aAAAA,CAAcZ,OAAmB,EAAEnH,SAAiB,EAAiC;QACjG,MAAMO,GAAAA,GAAM,CAAC,kBAAkB,EAAE,IAAI,CAACf,QAAQ,CAACQ,SAAAA,CAAAA,CAAW,CAAC,CAAC;AAE5D,QAAA,MAAMkI,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAO9BpH,GAAAA,CAAAA;AAEH,QAAA,MAAMkM,YAAYvE,OAAAA,CAAQwE,MAAM,CAAC,CAACvE,CAAAA,GAAWA,EAAEoD,EAAE,GAAG,GAAGoB,IAAI,CAAC,CAACC,CAAAA,EAAQC,CAAAA,GAAWD,EAAErB,EAAE,GAAGsB,EAAEtB,EAAE,CAAA;QAE3F,IAAIkB,SAAAA,CAAU9L,MAAM,KAAK,CAAA,EAAG;YAC1B,OAAOiD,SAAAA;AACT,QAAA;AAEA,QAAA,OAAO6I,UAAUjM,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAE/F,IAAI,CAAA;AACzC,IAAA;AAEQ5C,IAAAA,QAAAA,CAASC,UAAkB,EAAU;QAC3C,OAAO,CAAC,EAAE,EAAEA,UAAAA,CAAW2F,OAAO,CAAC,IAAA,EAAM,IAAA,CAAA,CAAM,EAAE,CAAC;AAChD,IAAA;AAEQqF,IAAAA,aAAAA,CAAclH,IAAY,EAAU;;QAE1C,MAAMuJ,KAAAA,GAAQvJ,IAAAA,CAAKuJ,KAAK,CAAC,cAAA,CAAA;QACzB,OAAOA,KAAAA,GAAQA,KAAK,CAAC,CAAA,CAAE,CAACnE,WAAW,EAAA,GAAKpF,KAAKoF,WAAW,EAAA;AAC1D,IAAA;AAEQ8C,IAAAA,aAAAA,CAAclI,IAAY,EAAsB;QACtD,MAAMuJ,KAAAA,GAAQvJ,IAAAA,CAAKuJ,KAAK,CAAC,WAAA,CAAA;QACzB,OAAOA,KAAAA,GAAQjI,OAAOuF,QAAQ,CAAC0C,KAAK,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA,GAAMlJ,SAAAA;AACjD,IAAA;AAEQiF,IAAAA,iBAAAA,CAAkBlF,YAA2B,EAAW;AAC9D,QAAA,IAAIA,iBAAiB,IAAA,EAAM;YACzB,OAAOC,SAAAA;AACT,QAAA;;AAGA,QAAA,IAAID,iBAAiB,MAAA,EAAQ;YAC3B,OAAO,IAAA;AACT,QAAA;AACA,QAAA,IAAIA,YAAAA,KAAiB,mBAAA,IAAuBA,YAAAA,KAAiB,cAAA,IAAkBA,iBAAiB,cAAA,EAAgB;YAC9G,OAAOA,YAAAA;AACT,QAAA;QACA,IAAI,QAAA,CAASuG,IAAI,CAACvG,YAAAA,CAAAA,EAAe;AAC/B,YAAA,OAAOA,YAAAA,CAAawG,KAAK,CAAC,CAAA,EAAG,EAAC,CAAA;AAChC,QAAA;QACA,IAAI,SAAA,CAAUD,IAAI,CAACvG,YAAAA,CAAAA,EAAe;YAChC,OAAOkB,MAAAA,CAAOuF,QAAQ,CAACzG,YAAAA,EAAc,EAAA,CAAA;AACvC,QAAA;QACA,IAAI,cAAA,CAAeuG,IAAI,CAACvG,YAAAA,CAAAA,EAAe;YACrC,OAAOkB,MAAAA,CAAOwF,UAAU,CAAC1G,YAAAA,CAAAA;AAC3B,QAAA;QAEA,OAAOA,YAAAA;AACT,IAAA;AAEQmG,IAAAA,0BAAAA,CAA2BQ,MAAc,EAAiE;AAChH,QAAA,OAAQA,OAAO3B,WAAW,EAAA;YACxB,KAAK,SAAA;gBACH,OAAO,SAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,UAAA;gBACH,OAAO,UAAA;YACT,KAAK,WAAA;gBACH,OAAO,WAAA;AACT,YAAA;gBACE,OAAO/E,SAAAA;AACX;AACF,IAAA;AACF;;ACnSO,MAAMmJ,oBAAAA,SAA6B1N,eAAAA,CAAAA;AACxCM,IAAAA,mBAAAA,CAAuBC,MAAe,EAAU;AAC9C,QAAA,MAAME,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,QAAA,MAAMoN,cAAAA,GAAiB,IAAI,CAAC/M,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;AACrD,QAAA,MAAMyH,UAAyB,EAAE;AAEjC,QAAA,IAAK,MAAM9E,GAAAA,IAAO3C,IAAAA,CAAK0C,MAAM,CAAE;AAC7B,YAAA,MAAME,KAAAA,GAAQ5C,IAAAA,CAAK0C,MAAM,CAACC,GAAAA,CAAI;YAC9B,IAAIC,KAAAA,CAAMZ,KAAK,EAAE;AACf,gBAAA,MAAMF,UAAAA,GAAa,IAAI,CAACkB,iBAAiB,CAACL,GAAAA,EAAKC,KAAAA,CAAAA;AAC/C,gBAAA,MAAMT,SAAAA,GAAY,OAAOS,KAAAA,CAAMZ,KAAK,KAAK,QAAA,GAAWY,KAAAA,CAAMZ,KAAK,GAAG,CAAC,IAAI,EAAEkL,cAAAA,CAAe,CAAC,EAAEpL,UAAAA,CAAAA,CAAY;AACvG2F,gBAAAA,OAAAA,CAAQjG,IAAI,CAAC;oBACXc,IAAAA,EAAMH,SAAAA;oBACN/B,OAAAA,EAAS;AAAC0B,wBAAAA;AAAW,qBAAA;oBACrBS,MAAAA,EAAQ,CAAC,CAACK,KAAAA,CAAML;AAClB,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;QAEA,OAAOgE,IAAAA,CAAKC,SAAS,CAAC;YAAEgE,MAAAA,EAAQ,kBAAA;YAAoBlI,IAAAA,EAAM4K,cAAAA;AAAgBzF,YAAAA;AAAQ,SAAA,CAAA;AACpF,IAAA;AAEAzG,IAAAA,iBAAAA,CAAqBlB,MAAe,EAAU;AAC5C,QAAA,MAAME,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,QAAA,MAAMoN,cAAAA,GAAiB,IAAI,CAAC/M,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;QACrD,OAAOuG,IAAAA,CAAKC,SAAS,CAAC;YAAEgE,MAAAA,EAAQ,gBAAA;YAAkBlI,IAAAA,EAAM4K;AAAe,SAAA,CAAA;AACzE,IAAA;AAEAjM,IAAAA,kBAAAA,CAAmBC,IAAgB,EAAY;AAC7C,QAAA,MAAMC,aAAuB,EAAE;QAC/B,IAAID,IAAAA,CAAKa,YAAY,EAAElB,MAAAA,EAAQ;AAC7B,YAAA,KAAK,MAAMmB,KAAAA,IAASd,IAAAA,CAAKa,YAAY,CAAE;gBACrCZ,UAAAA,CAAWK,IAAI,CAAC,IAAI,CAACS,mBAAmB,CAACf,IAAAA,CAAKhB,SAAS,EAAE8B,KAAAA,CAAAA,CAAAA;AAC3D,YAAA;AACF,QAAA;QACA,OAAOb,UAAAA;AACT,IAAA;AAEAkB,IAAAA,sBAAAA,CAAuBnB,IAAgB,EAAY;AACjD,QAAA,MAAMC,aAAuB,EAAE;QAC/B,IAAID,IAAAA,CAAKa,YAAY,EAAElB,MAAAA,EAAQ;AAC7B,YAAA,KAAK,MAAMmB,KAAAA,IAASd,IAAAA,CAAKa,YAAY,CAAE;gBACrCZ,UAAAA,CAAWK,IAAI,CAAC,IAAI,CAACY,iBAAiB,CAAClB,IAAAA,CAAKhB,SAAS,EAAE8B,KAAAA,CAAMM,IAAI,CAAA,CAAA;AACnE,YAAA;AACF,QAAA;QACA,OAAOnB,UAAAA;AACT,IAAA;IAEAc,mBAAAA,CAAoB/B,SAAiB,EAAE8B,KAAkB,EAAU;AACjE,QAAA,MAAMW,MAA8B,EAAC;AACrC,QAAA,KAAK,MAAMhC,GAAAA,IAAOqB,KAAAA,CAAM5B,OAAO,CAAE;YAC/BuC,GAAG,CAAChC,IAAI,GAAG,CAAA;AACb,QAAA;QACA,OAAO4F,IAAAA,CAAKC,SAAS,CAAC;YACpBgE,MAAAA,EAAQ,aAAA;YACR2C,UAAAA,EAAYjN,SAAAA;AACZoC,YAAAA,IAAAA,EAAMN,MAAMM,IAAI;AAChBK,YAAAA,GAAAA;YACA5C,OAAAA,EAAS;AAAEwC,gBAAAA,MAAAA,EAAQP,MAAMO,MAAM;AAAED,gBAAAA,IAAAA,EAAMN,MAAMM;AAAK;AACpD,SAAA,CAAA;AACF,IAAA;IAEAF,iBAAAA,CAAkBlC,SAAiB,EAAEiC,SAAiB,EAAU;QAC9D,OAAOoE,IAAAA,CAAKC,SAAS,CAAC;YACpBgE,MAAAA,EAAQ,WAAA;YACR2C,UAAAA,EAAYjN,SAAAA;YACZoC,IAAAA,EAAMH;AACR,SAAA,CAAA;AACF,IAAA;IAEAqB,UAAAA,GAAqB;QACnB,OAAO,EAAA;AACT,IAAA;IAEAgC,UAAAA,CAAc1F,MAAe,EAAE2F,aAAsC,EAA0B;AAC7F,QAAA,MAAMzF,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,QAAA,MAAMoN,cAAAA,GAAiB,IAAI,CAAC/M,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;AAErD,QAAA,IAAI,CAACyF,aAAAA,EAAe;YAClB,OAAO;gBAAEvF,SAAAA,EAAWgN,cAAAA;gBAAgBzJ,IAAAA,EAAM;AAAS,aAAA;AACrD,QAAA;AAEA,QAAA,MAAM1B,eAA8B,EAAE;AACtC,QAAA,MAAMqL,eAAAA,GAAkB,IAAIxB,GAAAA,CAAInG,aAAAA,CAAcgC,OAAO,EAAE/G,GAAAA,CAAI,CAAC2M,CAAAA,GAAmBA,CAAAA,CAAE/K,IAAI,CAAA,IAAK,EAAE,CAAA;AAE5F,QAAA,IAAK,MAAMK,GAAAA,IAAO3C,IAAAA,CAAK0C,MAAM,CAAE;AAC7B,YAAA,MAAME,KAAAA,GAAQ5C,IAAAA,CAAK0C,MAAM,CAACC,GAAAA,CAAI;YAC9B,IAAIC,KAAAA,CAAMZ,KAAK,EAAE;AACf,gBAAA,MAAMF,UAAAA,GAAa,IAAI,CAACkB,iBAAiB,CAACL,GAAAA,EAAKC,KAAAA,CAAAA;AAC/C,gBAAA,MAAMT,SAAAA,GAAY,OAAOS,KAAAA,CAAMZ,KAAK,KAAK,QAAA,GAAWY,KAAAA,CAAMZ,KAAK,GAAG,CAAC,IAAI,EAAEkL,cAAAA,CAAe,CAAC,EAAEpL,UAAAA,CAAAA,CAAY;AACvG,gBAAA,IAAI,CAACsL,eAAAA,CAAgB1B,GAAG,CAACvJ,SAAAA,CAAAA,EAAY;AACnCJ,oBAAAA,YAAAA,CAAaP,IAAI,CAAC;wBAChBc,IAAAA,EAAMH,SAAAA;wBACN/B,OAAAA,EAAS;AAAC0B,4BAAAA;AAAW,yBAAA;wBACrBS,MAAAA,EAAQ,CAAC,CAACK,KAAAA,CAAML;AAClB,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA;QAEA,IAAIR,YAAAA,CAAalB,MAAM,KAAK,CAAA,EAAG;YAC7B,OAAOiD,SAAAA;AACT,QAAA;QAEA,OAAO;YACL5D,SAAAA,EAAWgN,cAAAA;YACXzJ,IAAAA,EAAM,OAAA;AACN1B,YAAAA;AACF,SAAA;AACF,IAAA;AACF;;AChHO,MAAMuL,uBAAAA,CAAAA;IACX,WAAA,CAA6BnG,WAAwB,CAAE;aAA1BA,WAAAA,GAAAA,WAAAA;AAA2B,IAAA;IAExD,MAAMC,cAAAA,CAAelH,SAAiB,EAAoC;AACxE,QAAA,MAAMmH,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QACjD,IAAI;YACF,MAAM,EAAEiG,EAAE,EAAE,GAAGlG,OAAAA;AACf,YAAA,MAAMmG,WAAAA,GAAc,MAAMD,EAAAA,CAAGE,eAAe,CAAC;gBAAEnL,IAAAA,EAAMpC;AAAU,aAAA,CAAA,CAAGwN,OAAO,EAAA;YACzE,IAAIF,WAAAA,CAAY3M,MAAM,KAAK,CAAA,EAAG;gBAC5B,OAAOiD,SAAAA;AACT,YAAA;;AAGA,YAAA,MAAM2D,UAAU,MAAM8F,EAAAA,CAAGJ,UAAU,CAACjN,WAAWuH,OAAO,EAAA;YAEtD,OAAO;gBACLnF,IAAAA,EAAMpC,SAAAA;AACNE,gBAAAA,OAAAA,EAAS,EAAE;AACXqH,gBAAAA,OAAAA,EAASA,OAAAA,CAAQ/G,GAAG,CAAC,CAACiN,OAAc;AAClCrL,wBAAAA,IAAAA,EAAMqL,IAAIrL,IAAI;AACdlC,wBAAAA,OAAAA,EAASwN,MAAAA,CAAOC,IAAI,CAACF,GAAAA,CAAIhL,GAAG,CAAA;wBAC5BJ,MAAAA,EAAQ,CAAC,CAACoL,GAAAA,CAAIpL;qBAChB,CAAA;AACF,aAAA;QACF,CAAA,QAAU;AACR,YAAA,MAAM8E,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAMC,aAAAA,GAAmC;AACvC,QAAA,MAAMd,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QACjD,IAAI;YACF,MAAM,EAAEiG,EAAE,EAAE,GAAGlG,OAAAA;AACf,YAAA,MAAMmG,WAAAA,GAAc,MAAMD,EAAAA,CAAGE,eAAe,GAAGC,OAAO,EAAA;AACtD,YAAA,OAAOF,YAAY9M,GAAG,CAAC,CAACI,CAAAA,GAAWA,EAAEwB,IAAI,CAAA;QAC3C,CAAA,QAAU;AACR,YAAA,MAAM+E,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;IAEA,MAAMK,WAAAA,CAAYrI,SAAiB,EAAoB;AACrD,QAAA,MAAM4N,KAAAA,GAAQ,MAAM,IAAI,CAAC3F,aAAa,EAAA;QACtC,OAAO2F,KAAAA,CAAMnK,QAAQ,CAACzD,SAAAA,CAAAA;AACxB,IAAA;AACF;;ACnCA;;;AAGC,IACM,MAAM6N,wBAAAA,CAAAA;AAIX,IAAA,WAAA,CACE,WAAyC,EACzChO,OAAAA,GAEI,EAAE,CACN;aAJiBoH,WAAAA,GAAAA,WAAAA;aAHX6G,kBAAAA,GAAqB,KAAA;AAQ3B,QAAA,IAAI,CAAC9N,SAAS,GAAGH,OAAAA,CAAQG,SAAS,IAAI,gBAAA;AACxC,IAAA;AAEA,IAAA,MAAM+N,aAAAA,GAA+B;QACnC,IAAI,IAAI,CAACD,kBAAkB,EAAE;AAC3B,YAAA;AACF,QAAA;AAEA,QAAA,MAAM3G,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;QAEA,IAAI;YACF,MAAM,IAAI,CAACiH,sBAAsB,CAAC7G,OAAAA,CAAAA;YAClC,IAAI,CAAC2G,kBAAkB,GAAG,IAAA;QAC5B,CAAA,QAAU;AACR,YAAA,MAAM3G,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;IAEA,MAAcgG,sBAAAA,CAAuB7G,OAAmB,EAAiB;AACvE,QAAA,MAAM,EAAE3H,QAAQ,EAAE,GAAG2H,QAAQ8G,OAAO;AACpC,QAAA,MAAM1N,MAAM;AACiB,iCAAA,EAAEf,QAAAA,CAAS,IAAI,CAACQ,SAAS,CAAA,CAAE;AACpD,QAAA,EAAER,SAAS,MAAA,CAAA,CAAQ;AACnB,QAAA,EAAEA,SAAS,aAAA,CAAA,CAAe;;IAE9B,CAAC;QAED,MAAM2H,OAAAA,CAAQ+G,GAAG,CAAC3N,GAAAA,CAAAA;AACpB,IAAA;AAEA,IAAA,MAAM4N,QAAAA,GAA8B;QAClC,MAAM,IAAI,CAACJ,aAAa,EAAA;AAExB,QAAA,MAAM5G,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,uDAAA,CAAA;AAClB,QAAA;QAEA,IAAI;AACF,YAAA,MAAM,EAAEvH,QAAQ,EAAE,GAAG2H,QAAQ8G,OAAO;AACpC,YAAA,MAAM1N,MAAM,CAAC,OAAO,EAAEf,QAAAA,CAAS,MAAA,CAAA,CAAQ,MAAM,EAAEA,QAAAA,CAAS,IAAI,CAACQ,SAAS,CAAA,CAAE,UAAU,EAAER,QAAAA,CAAS,MAAA,CAAA,CAAQ,IAAI,CAAC;AAC1G,YAAA,MAAM0I,OAAAA,GAAU,MAAMf,OAAAA,CAAQQ,GAAG,CAAkBpH,GAAAA,CAAAA;AACnD,YAAA,OAAO2H,QAAQ1H,GAAG,CAAC,CAAC2H,CAAAA,GAAWA,EAAE/F,IAAI,CAAA;QACvC,CAAA,QAAU;AACR,YAAA,MAAM+E,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA;;AAEC,MACD,MAAMoG,cAAAA,CAAejH,OAAmB,EAAEkH,aAAqB,EAAiB;QAC9E,MAAM,IAAI,CAACN,aAAa,EAAA;AACxB,QAAA,MAAM,EAAEvO,QAAQ,EAAE8O,WAAW,EAAE,GAAGnH,QAAQ8G,OAAO;AACjD,QAAA,MAAM1N,MAAM,CAAC,YAAY,EAAEf,QAAAA,CAAS,IAAI,CAACQ,SAAS,CAAA,CAAE,EAAE,EAAER,SAAS,MAAA,CAAA,CAAQ,UAAU,EAAE8O,WAAAA,CAAY,CAAA,CAAA,CAAG,CAAC,CAAC;QACtG,MAAMnH,OAAAA,CAAQ+G,GAAG,CAAC3N,GAAAA,EAAK;AAAC8N,YAAAA;AAAc,SAAA,CAAA;AACxC,IAAA;AAEA;;AAEC,MACD,MAAME,gBAAAA,CAAiBpH,OAAmB,EAAEkH,aAAqB,EAAiB;QAChF,MAAM,IAAI,CAACN,aAAa,EAAA;AACxB,QAAA,MAAM,EAAEvO,QAAQ,EAAE8O,WAAW,EAAE,GAAGnH,QAAQ8G,OAAO;AACjD,QAAA,MAAM1N,MAAM,CAAC,YAAY,EAAEf,QAAAA,CAAS,IAAI,CAACQ,SAAS,CAAA,CAAE,OAAO,EAAER,QAAAA,CAAS,MAAA,CAAA,CAAQ,GAAG,EAAE8O,YAAY,CAAA,CAAA,CAAA,CAAI;QACnG,MAAMnH,OAAAA,CAAQ+G,GAAG,CAAC3N,GAAAA,EAAK;AAAC8N,YAAAA;AAAc,SAAA,CAAA;AACxC,IAAA;AACF;;AC9DA;;AAEC,IACM,MAAMG,QAAAA,CAAAA;AASX,IAAA,WAAA,CACE,WAAyC,EACzC3O,OAAAA,GAA2B,EAAE,CAC7B;aAFiBoH,WAAAA,GAAAA,WAAAA;QAGjB,IAAI,CAACgH,OAAO,GAAGpO,OAAAA,CAAQoO,OAAO,IAAIhH,WAAAA,CAAYgH,OAAO,IAAI,UAAA;QACzD,IAAI,CAACQ,OAAO,GACV5O,OAAAA,CAAQ4O,OAAO,IACf,IAAIZ,yBAAyB5G,WAAAA,EAAa;AACxCjH,YAAAA,SAAAA,EAAWH,QAAQG;AACrB,SAAA,CAAA;AACF,QAAA,IAAI,CAAC0O,cAAc,GAAG7O,OAAAA,CAAQ6O,cAAc,IAAI,cAAA;QAChD,IAAI,CAACC,MAAM,GAAG9O,OAAAA,CAAQ8O,MAAM,KAAK,KAAO,CAAA,CAAA;AACxC,QAAA,IAAI,CAACC,QAAQ,GAAG/O,OAAAA,CAAQ+O,QAAQ,IAAI,EAAE;AACtC,QAAA,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACC,kBAAkB,EAAA;QACjD,IAAI,CAACC,eAAe,GAAGlP,OAAAA,CAAQkP,eAAe,IAAI,IAAI,CAACC,eAAe,CAACnP,OAAAA,CAAQP,cAAc,CAAA;AAC/F,IAAA;AAEA;;MAGA2P,kBAAAA,CAAmBC,SAA0B,EAAQ;QACnD,IAAI,CAACH,eAAe,GAAGG,SAAAA;AACzB,IAAA;IAEQJ,kBAAAA,GAAqD;QAC3D,OAAQ,IAAI,CAACb,OAAO;YAClB,KAAK,UAAA;AACH,gBAAA,OAAO,IAAIzD,0BAAAA,CAA2B,IAAI,CAACvD,WAAW,CAAA;YACxD,KAAK,OAAA;AACH,gBAAA,OAAO,IAAID,uBAAAA,CAAwB,IAAI,CAACC,WAAW,CAAA;YACrD,KAAK,SAAA;AACH,gBAAA,OAAO,IAAIsD,yBAAAA,CAA0B,IAAI,CAACtD,WAAW,CAAA;YACvD,KAAK,QAAA;AACH,gBAAA,OAAO,IAAIiE,wBAAAA,CAAyB,IAAI,CAACjE,WAAW,CAAA;YACtD,KAAK,SAAA;AACH,gBAAA,OAAO,IAAImG,uBAAAA,CAAwB,IAAI,CAACnG,WAAW,CAAA;AACrD,YAAA;gBACE,OAAOrD,SAAAA;AACX;AACF,IAAA;AAEQoL,IAAAA,eAAAA,CAAgB1P,cAA+B,EAA+B;QACpF,OAAQ,IAAI,CAAC2O,OAAO;YAClB,KAAK,UAAA;AACH,gBAAA,OAAO,IAAIvH,uBAAAA,CAAwBpH,cAAAA,CAAAA;YACrC,KAAK,OAAA;AACH,gBAAA,OAAO,IAAIiH,oBAAAA,CAAqBjH,cAAAA,CAAAA;YAClC,KAAK,SAAA;AACH,gBAAA,OAAO,IAAI6P,oBAAAA,CAAuB7P,cAAAA,CAAAA;YACpC,KAAK,QAAA;AACH,gBAAA,OAAO,IAAIwH,qBAAAA,CAAsBxH,cAAAA,CAAAA;YACnC,KAAK,SAAA;AACH,gBAAA,OAAO,IAAIyN,oBAAAA,CAAqBzN,cAAAA,CAAAA;AAClC,YAAA;gBACE,OAAOsE,SAAAA;AACX;AACF,IAAA;AAEA;;AAEC,MACDwL,UAAAA,GAAsB;QACpB,OAAO,IAAI,CAACnB,OAAO;AACrB,IAAA;AAEA;;AAEC,MACD,MAAMoB,aAAAA,GAAsC;AAC1C,QAAA,MAAMC,KAAAA,GAAQ,MAAM,IAAI,CAACC,iBAAiB,EAAA;AAC1C,QAAA,MAAMC,aAA0B,EAAE;QAElC,KAAK,MAAMC,QAAQH,KAAAA,CAAO;AACxB,YAAA,MAAMI,SAAAA,GAAY,MAAM,IAAI,CAACC,aAAa,CAACF,IAAAA,CAAAA;AAC3C,YAAA,IAAIC,SAAAA,EAAW;AACbF,gBAAAA,UAAAA,CAAWlO,IAAI,CAACoO,SAAAA,CAAAA;AAClB,YAAA;AACF,QAAA;;AAGA,QAAA,OAAOF,UAAAA,CAAW7C,IAAI,CAAC,CAACC,CAAAA,EAAQC,CAAAA,GAAWD,CAAAA,CAAExK,IAAI,CAACwN,aAAa,CAAC/C,CAAAA,CAAEzK,IAAI,CAAA,CAAA;AACxE,IAAA;AAEA;;AAEC,MACD,MAAMyN,OAAAA,GAAgC;AACpC,QAAA,MAAM,CAACL,UAAAA,EAAYrB,QAAAA,CAAS,GAAG,MAAMzG,OAAAA,CAAQC,GAAG,CAAC;AAAC,YAAA,IAAI,CAAC0H,aAAa,EAAA;YAAI,IAAI,CAACZ,OAAO,CAACN,QAAQ;AAAG,SAAA,CAAA;QAEhG,MAAM2B,WAAAA,GAAc,IAAIpE,GAAAA,CAAIyC,QAAAA,CAAAA;QAC5B,OAAOqB,UAAAA,CAAW9C,MAAM,CAAC,CAACqD,CAAAA,GAAW,CAACD,WAAAA,CAAYtE,GAAG,CAACuE,CAAAA,CAAE3N,IAAI,CAAA,CAAA;AAC9D,IAAA;AAEA;;AAEC,MACD,MAAM+L,QAAAA,GAA8B;AAClC,QAAA,OAAO,IAAI,CAACM,OAAO,CAACN,QAAQ,EAAA;AAC9B,IAAA;AAEA;;AAEC,MACD,MAAM6B,EAAAA,CAAGnQ,OAAAA,GAA0C,EAAE,EAA8B;AACjF,QAAA,MAAMoQ,iBAAAA,GAAoB,MAAM,IAAI,CAACJ,OAAO,EAAA;AAC5C,QAAA,MAAM3H,UAA6B,EAAE;AAErC,QAAA,IAAIgI,eAAAA,GAAkBD,iBAAAA;QAEtB,IAAIpQ,OAAAA,CAAQ2B,EAAE,EAAE;YACd,MAAM2O,OAAAA,GAAUD,eAAAA,CAAgBE,SAAS,CAAC,CAACL,IAAWA,CAAAA,CAAE3N,IAAI,KAAKvC,OAAAA,CAAQ2B,EAAE,CAAA;YAC3E,IAAI2O,OAAAA,KAAY,EAAC,EAAG;gBAClB,MAAM,IAAIpJ,MAAM,CAAC,WAAW,EAAElH,OAAAA,CAAQ2B,EAAE,CAAC,WAAW,CAAC,CAAA;AACvD,YAAA;AACA0O,YAAAA,eAAAA,GAAkBA,eAAAA,CAAgB/F,KAAK,CAAC,CAAA,EAAGgG,OAAAA,GAAU,CAAA,CAAA;AACvD,QAAA;QAEA,IAAItQ,OAAAA,CAAQwQ,IAAI,KAAKzM,SAAAA,EAAW;AAC9BsM,YAAAA,eAAAA,GAAkBA,eAAAA,CAAgB/F,KAAK,CAAC,CAAA,EAAGtK,QAAQwQ,IAAI,CAAA;AACzD,QAAA;QAEA,KAAK,MAAMX,aAAaQ,eAAAA,CAAiB;AACvC,YAAA,MAAMpE,SAAS,MAAM,IAAI,CAACwE,YAAY,CAACZ,SAAAA,EAAW,IAAA,CAAA;AAClDxH,YAAAA,OAAAA,CAAQ5G,IAAI,CAACwK,MAAAA,CAAAA;YAEb,IAAI,CAACA,MAAAA,CAAOyE,OAAO,EAAE;AACnB,gBAAA,MAAA;AACF,YAAA;AACF,QAAA;QAEA,OAAOrI,OAAAA;AACT,IAAA;AAEA;;AAEC,MACD,MAAMsI,IAAAA,CAAK3Q,OAAAA,GAA0C,EAAE,EAA8B;AACnF,QAAA,MAAM,CAAC2P,UAAAA,EAAYrB,QAAAA,CAAS,GAAG,MAAMzG,OAAAA,CAAQC,GAAG,CAAC;AAAC,YAAA,IAAI,CAAC0H,aAAa,EAAA;YAAI,IAAI,CAACZ,OAAO,CAACN,QAAQ;AAAG,SAAA,CAAA;QAEhG,MAAM2B,WAAAA,GAAc,IAAIpE,GAAAA,CAAIyC,QAAAA,CAAAA;AAC5B,QAAA,MAAMsC,kBAAAA,GAAqBjB,UAAAA,CAAW9C,MAAM,CAAC,CAACqD,CAAAA,GAAWD,WAAAA,CAAYtE,GAAG,CAACuE,CAAAA,CAAE3N,IAAI,CAAA,CAAA,CAAGsO,OAAO;AAEzF,QAAA,MAAMxI,UAA6B,EAAE;AACrC,QAAA,IAAIgI,eAAAA,GAAkBO,kBAAAA;QAEtB,IAAI5Q,OAAAA,CAAQ2B,EAAE,EAAE;YACd,MAAM2O,OAAAA,GAAUD,eAAAA,CAAgBE,SAAS,CAAC,CAACL,IAAWA,CAAAA,CAAE3N,IAAI,KAAKvC,OAAAA,CAAQ2B,EAAE,CAAA;YAC3E,IAAI2O,OAAAA,KAAY,EAAC,EAAG;gBAClB,MAAM,IAAIpJ,MAAM,CAAC,WAAW,EAAElH,OAAAA,CAAQ2B,EAAE,CAAC,WAAW,CAAC,CAAA;AACvD,YAAA;AACA0O,YAAAA,eAAAA,GAAkBA,eAAAA,CAAgB/F,KAAK,CAAC,CAAA,EAAGgG,OAAAA,GAAU,CAAA,CAAA;AACvD,QAAA;QAEA,IAAItQ,OAAAA,CAAQwQ,IAAI,KAAKzM,SAAAA,EAAW;AAC9BsM,YAAAA,eAAAA,GAAkBA,eAAAA,CAAgB/F,KAAK,CAAC,CAAA,EAAGtK,QAAQwQ,IAAI,CAAA;AACzD,QAAA;QAEA,KAAK,MAAMX,aAAaQ,eAAAA,CAAiB;AACvC,YAAA,MAAMpE,SAAS,MAAM,IAAI,CAACwE,YAAY,CAACZ,SAAAA,EAAW,MAAA,CAAA;AAClDxH,YAAAA,OAAAA,CAAQ5G,IAAI,CAACwK,MAAAA,CAAAA;YAEb,IAAI,CAACA,MAAAA,CAAOyE,OAAO,EAAE;AACnB,gBAAA,MAAA;AACF,YAAA;AACF,QAAA;QAEA,OAAOrI,OAAAA;AACT,IAAA;AAEA;;AAEC,MACD,MAAcoI,YAAAA,CAAaZ,SAAoB,EAAEiB,SAAwB,EAA4B;QACnG,MAAMC,SAAAA,GAAY3L,KAAK4L,GAAG,EAAA;AAC1B,QAAA,MAAM1J,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,uCAAA,CAAA;AAClB,QAAA;QAEA,IAAI;AACF,YAAA,IAAI,CAAC4H,MAAM,CAAC,CAAA,EAAGgC,SAAAA,KAAc,IAAA,GAAO,SAAA,GAAY,WAAA,CAAY,YAAY,EAAEjB,SAAAA,CAAUtN,IAAI,CAAA,CAAE,CAAA;AAE1F,YAAA,MAAM+E,QAAQ2J,gBAAgB,EAAA;AAE9B,YAAA,IAAIH,cAAc,IAAA,EAAM;gBACtB,MAAMjB,SAAAA,CAAUM,EAAE,CAAC7I,OAAAA,CAAAA;;gBAEnB,MAAM,IAAI,CAACsH,OAAO,CAACL,cAAc,CAACjH,OAAAA,EAASuI,UAAUtN,IAAI,CAAA;YAC3D,CAAA,MAAO;gBACL,MAAMsN,SAAAA,CAAUc,IAAI,CAACrJ,OAAAA,CAAAA;;gBAErB,MAAM,IAAI,CAACsH,OAAO,CAACF,gBAAgB,CAACpH,OAAAA,EAASuI,UAAUtN,IAAI,CAAA;AAC7D,YAAA;AAEA,YAAA,MAAM+E,QAAQ4J,iBAAiB,EAAA;YAE/B,MAAMC,QAAAA,GAAW/L,IAAAA,CAAK4L,GAAG,EAAA,GAAKD,SAAAA;AAC9B,YAAA,IAAI,CAACjC,MAAM,CAAC,CAAC,UAAU,EAAEe,UAAUtN,IAAI,CAAC,CAAC,EAAEuO,SAAAA,KAAc,OAAO,SAAA,GAAY,UAAA,CAAW,IAAI,EAAEK,QAAAA,CAAS,EAAE,CAAC,CAAA;YAEzG,OAAO;AACL5O,gBAAAA,IAAAA,EAAMsN,UAAUtN,IAAI;AACpBuO,gBAAAA,SAAAA;AACAK,gBAAAA,QAAAA;gBACAT,OAAAA,EAAS;AACX,aAAA;AACF,QAAA,CAAA,CAAE,OAAOU,KAAAA,EAAO;AACd,YAAA,MAAM9J,QAAQ+J,mBAAmB,EAAA;YAEjC,MAAMF,QAAAA,GAAW/L,IAAAA,CAAK4L,GAAG,EAAA,GAAKD,SAAAA;AAC9B,YAAA,IAAI,CAACjC,MAAM,CAAC,CAAC,UAAU,EAAEe,SAAAA,CAAUtN,IAAI,CAAC,SAAS,EAAE,KAAC6O,CAAgBE,OAAO,CAAA,CAAE,CAAA;YAE7E,OAAO;AACL/O,gBAAAA,IAAAA,EAAMsN,UAAUtN,IAAI;AACpBuO,gBAAAA,SAAAA;AACAK,gBAAAA,QAAAA;gBACAT,OAAAA,EAAS,KAAA;gBACTU,KAAAA,EAAOA;AACT,aAAA;QACF,CAAA,QAAU;AACR,YAAA,MAAM9J,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA;;MAGA,MAAMoJ,QAAAA,CAAShP,IAAY,EAAmB;QAC5C,MAAMiP,SAAAA,GAAY,IAAI,CAACC,YAAY,EAAA;QACnC,MAAMC,QAAAA,GAAW,CAAA,EAAGF,SAAAA,CAAU,CAAC,EAAE,IAAI,CAACG,OAAO,CAACpP,IAAAA,CAAAA,CAAM,GAAG,CAAC;AACxD,QAAA,MAAMqP,QAAAA,GAAW/Q,IAAAA,CAAK,IAAI,CAACgO,cAAc,EAAE6C,QAAAA,CAAAA;AAE3C,QAAA,MAAMG,OAAAA,GAAU,IAAI,CAACC,wBAAwB,CAACvP,IAAAA,CAAAA;QAE9C,MAAM,EAAEwP,SAAS,EAAEC,KAAK,EAAE,GAAG,MAAM,OAAO,kBAAA,CAAA;AAC1C,QAAA,MAAMA,KAAAA,CAAM,IAAI,CAACnD,cAAc,EAAE;YAAEoD,SAAAA,EAAW;AAAK,SAAA,CAAA;QACnD,MAAMF,SAAAA,CAAUH,UAAUC,OAAAA,EAAS,OAAA,CAAA;AAEnC,QAAA,IAAI,CAAC/C,MAAM,CAAC,CAAC,mBAAmB,EAAE8C,QAAAA,CAAAA,CAAU,CAAA;QAC5C,OAAOA,QAAAA;AACT,IAAA;AAEA;;MAGA,MAAMM,oBAAAA,CAAqB3P,IAAY,EAAmB;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC2M,eAAe,EAAE;AACzB,YAAA,MAAM,IAAIhI,KAAAA,CAAM,4DAAA,CAAA;AAClB,QAAA;AAEA,QAAA,MAAMiL,KAAAA,GAAQ,MAAM,IAAI,CAACC,QAAQ,EAAA;AACjC,QAAA,MAAMC,eAAyB,EAAE;AACjC,QAAA,MAAMC,iBAA2B,EAAE;QAEnC,KAAK,MAAMnR,QAAQgR,KAAAA,CAAO;YACxB,IAAIhR,IAAAA,CAAKuC,IAAI,KAAK,QAAA,EAAU;AAC1B,gBAAA,MAAM3D,SAAS,IAAI,CAACwS,kBAAkB,CAACpR,KAAKhB,SAAS,CAAA;AACrD,gBAAA,IAAIJ,MAAAA,EAAQ;AACVsS,oBAAAA,YAAAA,CAAa5Q,IAAI,CAAC,IAAI,CAACyN,eAAe,CAACpP,mBAAmB,CAACC,MAAAA,CAAAA,CAAAA;AAC3DuS,oBAAAA,cAAAA,CAAe7Q,IAAI,CAAC,IAAI,CAACyN,eAAe,CAACjO,iBAAiB,CAAClB,MAAAA,CAAAA,CAAAA;AAC7D,gBAAA;AACF,YAAA,CAAA,MAAO,IAAIoB,IAAAA,CAAKuC,IAAI,KAAK,OAAA,EAAS;AAChC,gBAAA,MAAM8O,kBAAkB,IAAI,CAACtD,eAAe,CAAChO,kBAAkB,CAACC,IAAAA,CAAAA;AAChEkR,gBAAAA,YAAAA,CAAa5Q,IAAI,CAAA,GAAI+Q,eAAAA,CAAAA;AAErB,gBAAA,MAAMC,sBAAsB,IAAI,CAACvD,eAAe,CAAC5M,sBAAsB,CAACnB,IAAAA,CAAAA;AACxEmR,gBAAAA,cAAAA,CAAe7Q,IAAI,CAAA,GAAIgR,mBAAAA,CAAAA;AACzB,YAAA;AACF,QAAA;QAEA,IAAIJ,YAAAA,CAAavR,MAAM,KAAK,CAAA,EAAG;YAC7B,IAAI,CAACgO,MAAM,CAAC,6BAAA,CAAA;YACZ,OAAO,EAAA;AACT,QAAA;QAEA,MAAM0C,SAAAA,GAAY,IAAI,CAACC,YAAY,EAAA;QACnC,MAAMC,QAAAA,GAAW,CAAA,EAAGF,SAAAA,CAAU,CAAC,EAAE,IAAI,CAACG,OAAO,CAACpP,IAAAA,CAAAA,CAAM,GAAG,CAAC;AACxD,QAAA,MAAMqP,QAAAA,GAAW/Q,IAAAA,CAAK,IAAI,CAACgO,cAAc,EAAE6C,QAAAA,CAAAA;QAE3C,MAAMG,OAAAA,GAAU,IAAI,CAACa,sCAAsC,CAACnQ,IAAAA,EAAM8P,YAAAA,EAAcC,eAAezB,OAAO,EAAA,CAAA;QAEtG,MAAM,EAAEkB,SAAS,EAAEC,KAAK,EAAE,GAAG,MAAM,OAAO,kBAAA,CAAA;AAC1C,QAAA,MAAMA,KAAAA,CAAM,IAAI,CAACnD,cAAc,EAAE;YAAEoD,SAAAA,EAAW;AAAK,SAAA,CAAA;QACnD,MAAMF,SAAAA,CAAUH,UAAUC,OAAAA,EAAS,OAAA,CAAA;AAEnC,QAAA,IAAI,CAAC/C,MAAM,CAAC,CAAC,iCAAiC,EAAE8C,QAAAA,CAAAA,CAAU,CAAA;QAC1D,OAAOA,QAAAA;AACT,IAAA;AAEA;;AAEC,MACD,MAAMQ,QAAAA,GAAkC;QACtC,IAAI,CAAC,IAAI,CAAClD,eAAe,IAAI,CAAC,IAAI,CAACF,kBAAkB,EAAE;AACrD,YAAA,MAAM,IAAI9H,KAAAA,CAAM,+CAAA,CAAA;AAClB,QAAA;QAEA,MAAM6H,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAACjO,MAAM,GAAG,CAAA,GAAI,IAAI,CAACiO,QAAQ,GAAG4D,WAAAA,EAAAA;AAC5D,QAAA,MAAMR,QAAsB,EAAE;QAE9B,KAAK,MAAMpS,UAAUgP,QAAAA,CAAU;AAC7B,YAAA,MAAM9O,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,YAAA,MAAMI,YAAY,IAAI,CAAC+O,eAAe,CAAC9O,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;AAChE,YAAA,MAAMyF,gBAAgB,MAAM,IAAI,CAACsJ,kBAAkB,CAAC3H,cAAc,CAAClH,SAAAA,CAAAA;AACnE,YAAA,MAAMgB,OAAO,IAAI,CAAC+N,eAAe,CAACzJ,UAAU,CAAC1F,MAAAA,EAAQ2F,aAAAA,CAAAA;AACrD,YAAA,IAAIvE,IAAAA,EAAM;AACRgR,gBAAAA,KAAAA,CAAM1Q,IAAI,CAACN,IAAAA,CAAAA;AACb,YAAA;AACF,QAAA;QAEA,OAAOgR,KAAAA;AACT,IAAA;AAEQI,IAAAA,kBAAAA,CAAmBpS,SAAiB,EAA6B;QACvE,MAAM4O,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAACjO,MAAM,GAAG,CAAA,GAAI,IAAI,CAACiO,QAAQ,GAAG4D,WAAAA,EAAAA;QAC5D,KAAK,MAAM5S,UAAUgP,QAAAA,CAAU;AAC7B,YAAA,MAAM9O,OAAOC,OAAAA,CAAQH,MAAAA,CAAAA;AACrB,YAAA,MAAMwC,OAAO,IAAI,CAAC2M,eAAe,CAAC9O,gBAAgB,CAACL,MAAAA,EAAQE,IAAAA,CAAAA;AAC3D,YAAA,IAAIsC,SAASpC,SAAAA,EAAW;gBACtB,OAAOJ,MAAAA;AACT,YAAA;AACF,QAAA;QACA,OAAOgE,SAAAA;AACT,IAAA;AAEA;;AAEC,MACD,MAAM6O,IAAAA,CAAK5S,OAAAA,GAA+B,EAAE,EAAiB;QAC3D,IAAIA,OAAAA,CAAQ6S,KAAK,EAAE;YACjB,OAAO,IAAI,CAACC,SAAS,EAAA;AACvB,QAAA;QACA,OAAO,IAAI,CAACC,QAAQ,CAAC;YAAEC,IAAAA,EAAM;AAAK,SAAA,CAAA;AACpC,IAAA;AAEA;;AAEC,MACD,MAAaF,SAAAA,GAA2B;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC5D,eAAe,EAAE;AACzB,YAAA,MAAM,IAAIhI,KAAAA,CAAM,4DAAA,CAAA;AAClB,QAAA;QAEA,MAAM6H,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAACjO,MAAM,GAAG,CAAA,GAAI,IAAI,CAACiO,QAAQ,GAAG4D,WAAAA,EAAAA;AAC5D,QAAA,MAAMrL,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QAEjD,IAAI,CAACmB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAMA,QAAQa,OAAO,EAAA;AACrB,YAAA,MAAM,IAAIjB,KAAAA,CAAM,uCAAA,CAAA;AAClB,QAAA;QAEA,IAAI;AACF,YAAA,MAAMI,QAAQ2J,gBAAgB,EAAA;;AAG9B,YAAA,KAAK,MAAMlR,MAAAA,IAAU;AAAIgP,gBAAAA,GAAAA;AAAS,aAAA,CAAC8B,OAAO,EAAA,CAAI;AAC5C,gBAAA,MAAMoC,UAAU,IAAI,CAAC/D,eAAe,CAACjO,iBAAiB,CAAClB,MAAAA,CAAAA;AACvD,gBAAA,IAAI,CAAC+O,MAAM,CAAC,CAAC,WAAW,EAAEmE,OAAAA,CAAAA,CAAS,CAAA;gBACnC,MAAM3L,OAAAA,CAAQ+G,GAAG,CAAC4E,OAAAA,CAAAA;AACpB,YAAA;;YAGA,KAAK,MAAMlT,UAAUgP,QAAAA,CAAU;AAC7B,gBAAA,MAAMmE,YAAY,IAAI,CAAChE,eAAe,CAACpP,mBAAmB,CAACC,MAAAA,CAAAA;AAC3D,gBAAA,IAAI,CAAC+O,MAAM,CAAC,CAAC,WAAW,EAAEoE,SAAAA,CAAAA,CAAW,CAAA;gBACrC,MAAM5L,OAAAA,CAAQ+G,GAAG,CAAC6E,SAAAA,CAAAA;AACpB,YAAA;AAEA,YAAA,MAAM5L,QAAQ4J,iBAAiB,EAAA;YAC/B,IAAI,CAACpC,MAAM,CAAC,+BAAA,CAAA;AACd,QAAA,CAAA,CAAE,OAAOsC,KAAAA,EAAO;AACd,YAAA,MAAM9J,QAAQ+J,mBAAmB,EAAA;YACjC,MAAMD,KAAAA;QACR,CAAA,QAAU;AACR,YAAA,MAAM9J,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA;;AAEC,MACD,MAAM4K,QAAAA,CAAS/S,OAAAA,GAAiE,EAAE,EAAiB;QACjG,IAAI,CAAC,IAAI,CAACkP,eAAe,IAAI,CAAC,IAAI,CAACF,kBAAkB,EAAE;AACrD,YAAA,MAAM,IAAI9H,KAAAA,CAAM,+CAAA,CAAA;AAClB,QAAA;AAEA,QAAA,MAAMiL,KAAAA,GAAQ,MAAM,IAAI,CAACC,QAAQ,EAAA;AACjC,QAAA,MAAMhR,aAAuB,EAAE;QAE/B,KAAK,MAAMD,QAAQgR,KAAAA,CAAO;YACxB,IAAIhR,IAAAA,CAAKuC,IAAI,KAAK,QAAA,EAAU;AAC1B,gBAAA,MAAM3D,SAAS,IAAI,CAACwS,kBAAkB,CAACpR,KAAKhB,SAAS,CAAA;AACrD,gBAAA,IAAIJ,MAAAA,EAAQ;AACVqB,oBAAAA,UAAAA,CAAWK,IAAI,CAAC,IAAI,CAACyN,eAAe,CAACpP,mBAAmB,CAACC,MAAAA,CAAAA,CAAAA;AAC3D,gBAAA;AACF,YAAA,CAAA,MAAO,IAAIoB,IAAAA,CAAKuC,IAAI,KAAK,OAAA,EAAS;AAChC,gBAAA,MAAMyP,YAAAA,GAAe,IAAI,CAACC,UAAU,CAACjS,IAAAA,EAAMnB,OAAAA,CAAAA;AAC3C,gBAAA,MAAMwS,kBAAkB,IAAI,CAACtD,eAAe,CAAChO,kBAAkB,CAACiS,YAAAA,CAAAA;AAChE/R,gBAAAA,UAAAA,CAAWK,IAAI,CAAA,GAAI+Q,eAAAA,CAAAA;AACrB,YAAA;AACF,QAAA;QAEA,IAAIpR,UAAAA,CAAWN,MAAM,KAAK,CAAA,EAAG;AAC3B,YAAA,IAAId,QAAQqT,OAAO,EAAE,IAAI,CAACvE,MAAM,CAAC,4BAAA,CAAA;AACjC,YAAA;AACF,QAAA;AAEA,QAAA,MAAM,IAAI,CAACwE,qBAAqB,CAAClS,UAAAA,EAAYpB,OAAAA,CAAAA;AAC/C,IAAA;IAEQoT,UAAAA,CAAWjS,IAAgB,EAAEnB,OAA2C,EAAc;AAC5F,QAAA,MAAMmT,YAAAA,GAAe;AAAE,YAAA,GAAGhS;AAAK,SAAA;QAC/B,IAAInB,OAAAA,CAAQgT,IAAI,KAAK,KAAA,EAAO;;AAE1B,YAAA,OAAOG,aAAarR,aAAa;AACjC,YAAA,OAAOqR,aAAahR,aAAa;AACjC,YAAA,OAAOgR,aAAaI,iBAAiB;AACvC,QAAA;QACA,IAAI,CAACvT,OAAAA,CAAQwT,IAAI,EAAE;AACjB,YAAA,OAAOL,aAAarR,aAAa;AACnC,QAAA;QACA,OAAOqR,YAAAA;AACT,IAAA;AAEA,IAAA,MAAcG,qBAAAA,CAAsBlS,UAAoB,EAAEpB,OAA8B,EAAiB;AACvG,QAAA,MAAMsH,UAAU,MAAM,IAAI,CAACF,WAAW,CAACG,UAAU,EAAA;QACjD,IAAI;AACF,YAAA,IAAI,IAAI,CAAC6G,OAAO,KAAK,SAAA,EAAW;AAC9B,gBAAA,MAAM,IAAI,CAACqF,0BAA0B,CAACrS,YAAYpB,OAAAA,EAASsH,OAAAA,CAAAA;YAC7D,CAAA,MAAO;AACL,gBAAA,MAAM,IAAI,CAACoM,wBAAwB,CAACtS,YAAYpB,OAAAA,EAASsH,OAAAA,CAAAA;AAC3D,YAAA;AACA,YAAA,IAAItH,QAAQqT,OAAO,EAAE,IAAI,CAACvE,MAAM,CAAC,kCAAA,CAAA;AACnC,QAAA,CAAA,CAAE,OAAOsC,KAAAA,EAAO;AACd,YAAA,IAAI,IAAI,CAAChD,OAAO,KAAK,SAAA,IAAa1F,aAAapB,OAAAA,CAAAA,EAAU;AACvD,gBAAA,MAAMA,QAAQ+J,mBAAmB,EAAA;AACnC,YAAA;YACA,MAAMD,KAAAA;QACR,CAAA,QAAU;AACR,YAAA,MAAM9J,QAAQa,OAAO,EAAA;AACvB,QAAA;AACF,IAAA;AAEA,IAAA,MAAcsL,2BACZrS,UAAoB,EACpBpB,OAA8B,EAC9BsH,OAAqB,EACN;QACf,MAAMkG,EAAAA,GAAKlG,QAAQkG,EAAE;QACrB,KAAK,MAAMmG,QAAQvS,UAAAA,CAAY;YAC7B,MAAMwS,GAAAA,GAAMpN,IAAAA,CAAKqN,KAAK,CAACF,IAAAA,CAAAA;YAQvB,IAAI3T,OAAAA,CAAQqT,OAAO,EAAE,IAAI,CAACvE,MAAM,CAAC,CAAC,mBAAmB,EAAE6E,IAAAA,CAAAA,CAAM,CAAA;AAE7D,YAAA,MAAMxG,cAAAA,GAAiByG,GAAAA,CAAIrR,IAAI,IAAIqR,IAAIxG,UAAU;AACjD,YAAA,IAAI,CAACD,cAAAA,EAAgB;AACnB,gBAAA,MAAM,IAAIjG,KAAAA,CAAM,CAAC,yCAAyC,EAAEyM,IAAAA,CAAAA,CAAM,CAAA;AACpE,YAAA;YACA,MAAMvG,UAAAA,GAAaI,EAAAA,CAAGJ,UAAU,CAACD,cAAAA,CAAAA;YAEjC,IAAIyG,GAAAA,CAAInJ,MAAM,KAAK,kBAAA,EAAoB;AACrC,gBAAA,MAAM+C,EAAAA,CAAGsG,gBAAgB,CAACF,GAAAA,CAAIrR,IAAI,CAAA;gBAClC,IAAIqR,GAAAA,CAAIlM,OAAO,EAAE5G,MAAAA,EAAQ;AACvB,oBAAA,KAAK,MAAM8M,GAAAA,IAAOgG,GAAAA,CAAIlM,OAAO,CAAE;wBAC7B,MAAM9E,GAAAA,GAAMiL,MAAAA,CAAOkG,WAAW,CAACnG,GAAAA,CAAIvN,OAAO,CAACM,GAAG,CAAC,CAACI,CAAAA,GAAc;AAACA,gCAAAA,CAAAA;AAAG,gCAAA;AAAE,6BAAA,CAAA,CAAA;wBACpE,MAAMqM,UAAAA,CAAW4G,WAAW,CAACpR,GAAAA,EAAK;AAAEJ,4BAAAA,MAAAA,EAAQoL,IAAIpL,MAAM;AAAED,4BAAAA,IAAAA,EAAMqL,IAAIrL;AAAK,yBAAA,CAAA;AACzE,oBAAA;AACF,gBAAA;AACF,YAAA,CAAA,MAAO,IAAIqR,GAAAA,CAAInJ,MAAM,KAAK,gBAAA,EAAkB;AAC1C,gBAAA,MAAM2C,WAAWoG,IAAI,EAAA;AACvB,YAAA,CAAA,MAAO,IAAII,GAAAA,CAAInJ,MAAM,KAAK,aAAA,EAAe;AACvC,gBAAA,MAAM2C,WAAW4G,WAAW,CAACJ,IAAIhR,GAAG,EAAEgR,IAAI5T,OAAO,CAAA;AACnD,YAAA,CAAA,MAAO,IAAI4T,GAAAA,CAAInJ,MAAM,KAAK,WAAA,EAAa;AACrC,gBAAA,MAAM2C,UAAAA,CAAW6G,SAAS,CAACL,GAAAA,CAAIrR,IAAI,CAAA;AACrC,YAAA;AACF,QAAA;AACF,IAAA;AAEA,IAAA,MAAcmR,yBACZtS,UAAoB,EACpBpB,OAA8B,EAC9BsH,OAAgB,EACD;QACf,IAAI,CAACoB,aAAapB,OAAAA,CAAAA,EAAU;AAC1B,YAAA,MAAM,IAAIJ,KAAAA,CAAM,wDAAA,CAAA;AAClB,QAAA;AACA,QAAA,MAAMI,QAAQ2J,gBAAgB,EAAA;QAC9B,KAAK,MAAMvQ,OAAOU,UAAAA,CAAY;YAC5B,IAAIpB,OAAAA,CAAQqT,OAAO,EAAE,IAAI,CAACvE,MAAM,CAAC,CAAC,WAAW,EAAEpO,GAAAA,CAAAA,CAAK,CAAA;YACpD,MAAM4G,OAAAA,CAAQ+G,GAAG,CAAC3N,GAAAA,CAAAA;AACpB,QAAA;AACA,QAAA,MAAM4G,QAAQ4J,iBAAiB,EAAA;AACjC,IAAA;AAEA;;AAEC,MACD,MAAMgD,MAAAA,GAA6D;AACjE,QAAA,MAAM,CAAClE,OAAAA,EAAS1B,QAAAA,CAAS,GAAG,MAAMzG,OAAAA,CAAQC,GAAG,CAAC;AAAC,YAAA,IAAI,CAACkI,OAAO,EAAA,CAAGmE,IAAI,CAAC,CAACjE,CAAAA,GAAMA,CAAAA,CAAEvP,GAAG,CAAC,CAACyT,CAAAA,GAAMA,EAAE7R,IAAI,CAAA,CAAA;AAAI,YAAA,IAAI,CAAC+L,QAAQ;AAAG,SAAA,CAAA;QAEjH,OAAO;AAAE0B,YAAAA,OAAAA;AAAS1B,YAAAA;AAAS,SAAA;AAC7B,IAAA;AAEA;;AAEC,MACD,MAAcoB,iBAAAA,GAAuC;QACnD,IAAI;AACF,YAAA,MAAMD,KAAAA,GAAQ,MAAM4E,OAAAA,CAAQ,IAAI,CAACxF,cAAc,CAAA;AAC/C,YAAA,OAAOY,MACJ5C,MAAM,CAAC,CAACyH,CAAAA,GAAM,gBAAA,CAAiBjK,IAAI,CAACiK,CAAAA,CAAAA,CAAAA,CACpCzH,MAAM,CAAC,CAACyH,CAAAA,GAAM,CAACA,EAAElJ,QAAQ,CAAC,UAC1B0B,IAAI,EAAA;AACT,QAAA,CAAA,CAAE,OAAOsE,KAAAA,EAAO;AACd,YAAA,IAAI,KAACA,CAAgCmD,IAAI,KAAK,QAAA,EAAU;AACtD,gBAAA,OAAO,EAAE;AACX,YAAA;YACA,MAAMnD,KAAAA;AACR,QAAA;AACF,IAAA;AAEA;;MAGA,MAActB,aAAAA,CAAc4B,QAAgB,EAAkC;AAC5E,QAAA,MAAME,QAAAA,GAAW/Q,IAAAA,CAAK,IAAI,CAACgO,cAAc,EAAE6C,QAAAA,CAAAA;QAC3C,MAAM8C,OAAAA,GAAUC,aAAAA,CAAc7C,QAAAA,CAAAA,CAAU8C,IAAI;QAE5C,IAAI;YACF,MAAMC,MAAAA,GAAS,MAAM,OAAOH,OAAAA,CAAAA;YAC5B,MAAM3E,SAAAA,GAAY8E,MAAAA,CAAOC,OAAO,IAAID,MAAAA;AAEpC,YAAA,IAAI,IAAI,CAACE,WAAW,CAAChF,SAAAA,CAAAA,EAAY;gBAC/B,OAAO;oBACLtN,IAAAA,EAAM,IAAI,CAACuS,gBAAgB,CAACpD,QAAAA,CAAAA;AAC5BvB,oBAAAA,EAAAA,EAAIN,SAAAA,CAAUM,EAAE,CAAC4E,IAAI,CAAClF,SAAAA,CAAAA;AACtBc,oBAAAA,IAAAA,EAAMd,SAAAA,CAAUc,IAAI,CAACoE,IAAI,CAAClF,SAAAA;AAC5B,iBAAA;AACF,YAAA;YAEA,IAAI,CAACf,MAAM,CAAC,CAAC,SAAS,EAAE4C,QAAAA,CAAS,yBAAyB,CAAC,CAAA;YAC3D,OAAO3N,SAAAA;AACT,QAAA,CAAA,CAAE,OAAOqN,KAAAA,EAAO;AACd,YAAA,IAAI,CAACtC,MAAM,CAAC,CAAC,wBAAwB,EAAE4C,QAAAA,CAAS,EAAE,EAAGN,KAAAA,CAAgBE,OAAO,CAAA,CAAE,CAAA;YAC9E,OAAOvN,SAAAA;AACT,QAAA;AACF,IAAA;AAEA;;MAGQ8Q,WAAAA,CAAYG,GAAY,EAA8B;AAC5D,QAAA,OACE,OAAOA,GAAAA,KAAQ,QAAA,IACfA,GAAAA,KAAQjR,SAAAA,IACRiR,QAAQ,IAAA,IACR,OAAO,GAACA,CAA4B7E,EAAE,KAAK,UAAA,IAC3C,OAAO,GAAC6E,CAA4BrE,IAAI,KAAK,UAAA;AAEjD,IAAA;AAEA;;MAGQmE,gBAAAA,CAAiBpD,QAAgB,EAAU;QACjD,OAAOuD,QAAAA,CAASvD,UAAUwD,OAAAA,CAAQxD,QAAAA,CAAAA,CAAAA;AACpC,IAAA;AAEA;;AAEC,MACD,YAAQD,GAAuB;AAC7B,QAAA,MAAMT,MAAM,IAAI5L,IAAAA,EAAAA;QAChB,OAAO;AACL4L,YAAAA,GAAAA,CAAImE,WAAW,EAAA;AACflQ,YAAAA,MAAAA,CAAO+L,IAAIoE,QAAQ,EAAA,GAAK,CAAA,CAAA,CAAGC,QAAQ,CAAC,CAAA,EAAG,GAAA,CAAA;AACvCpQ,YAAAA,MAAAA,CAAO+L,GAAAA,CAAIsE,OAAO,EAAA,CAAA,CAAID,QAAQ,CAAC,CAAA,EAAG,GAAA,CAAA;AAClCpQ,YAAAA,MAAAA,CAAO+L,GAAAA,CAAIuE,QAAQ,EAAA,CAAA,CAAIF,QAAQ,CAAC,CAAA,EAAG,GAAA,CAAA;AACnCpQ,YAAAA,MAAAA,CAAO+L,GAAAA,CAAIwE,UAAU,EAAA,CAAA,CAAIH,QAAQ,CAAC,CAAA,EAAG,GAAA,CAAA;AACrCpQ,YAAAA,MAAAA,CAAO+L,GAAAA,CAAIyE,UAAU,EAAA,CAAA,CAAIJ,QAAQ,CAAC,CAAA,EAAG,GAAA;AACtC,SAAA,CAACxU,IAAI,CAAC,EAAA,CAAA;AACT,IAAA;AAEA;;MAGQ8Q,OAAAA,CAAQ+D,IAAY,EAAU;QACpC,OAAOA,IAAAA,CACJnP,WAAW,EAAA,CACXhB,OAAO,CAAC,aAAA,EAAe,GAAA,CAAA,CACvBA,OAAO,CAAC,UAAA,EAAY,EAAA,CAAA;AACzB,IAAA;AAEA;;MAGQuM,wBAAAA,CAAyBvP,IAAY,EAAU;QACrD,cAAc,CAAC;;;AAGL,cAAA,EAAEA,IAAAA;YACJ,EAAE,IAAI6C,IAAAA,EAAAA,CAAOI,WAAW,EAAA;;;;;;;;;;;;;;;;;;;;;;AAsBpC,CAAC;AACC,IAAA;AAEA;;AAEC,MACD,sCAAQkN,CACNnQ,IAAY,EACZ8P,YAAsB,EACtBC,cAAwB,EAChB;AACR,QAAA,MAAMqD,QAAQtD,YAAAA,CAAa1R,GAAG,CAAC,CAACiV,WAAa,CAAC,wBAAwB,EAAEA,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE/U,IAAI,CAAC,IAAA,CAAA;AACtF,QAAA,MAAMgV,UAAUvD,cAAAA,CAAe3R,GAAG,CAAC,CAACiV,WAAa,CAAC,wBAAwB,EAAEA,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE/U,IAAI,CAAC,IAAA,CAAA;QAE1F,cAAc,CAAC;;;AAGL,cAAA,EAAE0B,IAAAA;YACJ,EAAE,IAAI6C,IAAAA,EAAAA,CAAOI,WAAW,EAAA;;;;;AAKpC,EAAEmQ,KAAAA;;;;AAIF,EAAEE,OAAAA;;;AAGF,CAAC;AACC,IAAA;AACF;AAEA;;IAGO,SAASC,eAAAA,CAAgBjG,SAA8B,EAAA;IAC5D,OAAOA,SAAAA;AACT;;AC1sBA;;AAEC,IACM,MAAMkG,oBAAAA,CAAAA;IAIX,WAAA,CAAYnE,QAAAA,GAAW,mCAAmC,CAAE;aAFpDoE,KAAAA,GAAyB,IAAA;QAG/B,IAAI,CAACpE,QAAQ,GAAGA,QAAAA;AAClB,IAAA;AAEA,IAAA,MAAM1D,aAAAA,GAA+B;QACnC,IAAI;YACF,MAAM,IAAI,CAAC+H,IAAI,EAAA;AACjB,QAAA,CAAA,CAAE,OAAM;;AAEN,YAAA,MAAM,IAAI,CAACC,IAAI,CAAC,EAAE,CAAA;AACpB,QAAA;AACF,IAAA;AAEA,IAAA,MAAM5H,QAAAA,GAA8B;QAClC,MAAM,IAAI,CAACJ,aAAa,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC8H,KAAK,IAAI,EAAE;AACzB,IAAA;AAEA,IAAA,MAAMzH,cAAAA,CAAe4H,QAAoB,EAAE3H,aAAqB,EAAiB;AAC/E,QAAA,MAAMF,QAAAA,GAAW,MAAM,IAAI,CAACA,QAAQ,EAAA;AACpC,QAAA,IAAI,CAACA,QAAAA,CAAS1K,QAAQ,CAAC4K,aAAAA,CAAAA,EAAgB;AACrCF,YAAAA,QAAAA,CAAS7M,IAAI,CAAC+M,aAAAA,CAAAA;AACdF,YAAAA,QAAAA,CAASxB,IAAI,EAAA;YACb,MAAM,IAAI,CAACoJ,IAAI,CAAC5H,QAAAA,CAAAA;AAClB,QAAA;AACF,IAAA;AAEA,IAAA,MAAMI,gBAAAA,CAAiByH,QAAoB,EAAE3H,aAAqB,EAAiB;AACjF,QAAA,MAAMF,QAAAA,GAAW,MAAM,IAAI,CAACA,QAAQ,EAAA;QACpC,MAAMrM,KAAAA,GAAQqM,QAAAA,CAAS8H,OAAO,CAAC5H,aAAAA,CAAAA;QAC/B,IAAIvM,KAAAA,KAAU,EAAC,EAAG;YAChBqM,QAAAA,CAAS+H,MAAM,CAACpU,KAAAA,EAAO,CAAA,CAAA;YACvB,MAAM,IAAI,CAACiU,IAAI,CAAC5H,QAAAA,CAAAA;AAClB,QAAA;AACF,IAAA;AAEA,IAAA,MAAc2H,IAAAA,GAAsB;AAClC,QAAA,MAAMpE,UAAU,MAAMyE,QAAAA,CAAS,IAAI,CAAC1E,QAAQ,EAAE,OAAA,CAAA;AAC9C,QAAA,IAAI,CAACoE,KAAK,GAAGxP,IAAAA,CAAKqN,KAAK,CAAChC,OAAAA,CAAAA;AAC1B,IAAA;IAEA,MAAcqE,IAAAA,CAAKvG,UAAoB,EAAiB;AACtD,QAAA,MAAMqC,KAAAA,CAAMuE,OAAAA,CAAQ,IAAI,CAAC3E,QAAQ,CAAA,EAAG;YAAEK,SAAAA,EAAW;AAAK,SAAA,CAAA;QACtD,MAAMF,SAAAA,CAAU,IAAI,CAACH,QAAQ,EAAEpL,KAAKC,SAAS,CAACkJ,UAAAA,EAAY,IAAA,EAAM,CAAA,CAAA,EAAI,OAAA,CAAA;QACpE,IAAI,CAACqG,KAAK,GAAGrG,UAAAA;AACf,IAAA;AACF;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EntityMeta, FieldOptions, NamingStrategy, Type } from '../type/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base abstract class for all database dialects (SQL and NoSQL).
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class AbstractDialect {
|
|
6
|
+
readonly namingStrategy?: NamingStrategy;
|
|
7
|
+
constructor(namingStrategy?: NamingStrategy);
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the table name for an entity, applying naming strategy if necessary.
|
|
10
|
+
*/
|
|
11
|
+
resolveTableName<E>(entity: Type<E>, meta: EntityMeta<E>): string;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the column/field name for a property, applying naming strategy if necessary.
|
|
14
|
+
*/
|
|
15
|
+
resolveColumnName(key: string, field: FieldOptions): string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base abstract class for all database dialects (SQL and NoSQL).
|
|
3
|
+
*/
|
|
4
|
+
export class AbstractDialect {
|
|
5
|
+
namingStrategy;
|
|
6
|
+
constructor(namingStrategy) {
|
|
7
|
+
this.namingStrategy = namingStrategy;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Resolve the table name for an entity, applying naming strategy if necessary.
|
|
11
|
+
*/
|
|
12
|
+
resolveTableName(entity, meta) {
|
|
13
|
+
if (meta.name !== entity.name || !this.namingStrategy) {
|
|
14
|
+
return meta.name;
|
|
15
|
+
}
|
|
16
|
+
return this.namingStrategy.tableName(meta.name);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the column/field name for a property, applying naming strategy if necessary.
|
|
20
|
+
*/
|
|
21
|
+
resolveColumnName(key, field) {
|
|
22
|
+
if (!field || field.name !== key || !this.namingStrategy) {
|
|
23
|
+
return field?.name ?? key;
|
|
24
|
+
}
|
|
25
|
+
return this.namingStrategy.columnName(field.name);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3REaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RpYWxlY3QvYWJzdHJhY3REaWFsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0lBQ2Q7SUFBckIsWUFBcUIsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBQUcsQ0FBQztJQUV4RDs7T0FFRztJQUNILGdCQUFnQixDQUFJLE1BQWUsRUFBRSxJQUFtQjtRQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEdBQVcsRUFBRSxLQUFtQjtRQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sS0FBSyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5TWV0YSwgRmllbGRPcHRpb25zLCBOYW1pbmdTdHJhdGVneSwgVHlwZSB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG4vKipcbiAqIEJhc2UgYWJzdHJhY3QgY2xhc3MgZm9yIGFsbCBkYXRhYmFzZSBkaWFsZWN0cyAoU1FMIGFuZCBOb1NRTCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERpYWxlY3Qge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBuYW1pbmdTdHJhdGVneT86IE5hbWluZ1N0cmF0ZWd5KSB7fVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSB0YWJsZSBuYW1lIGZvciBhbiBlbnRpdHksIGFwcGx5aW5nIG5hbWluZyBzdHJhdGVneSBpZiBuZWNlc3NhcnkuXG4gICAqL1xuICByZXNvbHZlVGFibGVOYW1lPEU+KGVudGl0eTogVHlwZTxFPiwgbWV0YTogRW50aXR5TWV0YTxFPik6IHN0cmluZyB7XG4gICAgaWYgKG1ldGEubmFtZSAhPT0gZW50aXR5Lm5hbWUgfHwgIXRoaXMubmFtaW5nU3RyYXRlZ3kpIHtcbiAgICAgIHJldHVybiBtZXRhLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWluZ1N0cmF0ZWd5LnRhYmxlTmFtZShtZXRhLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGNvbHVtbi9maWVsZCBuYW1lIGZvciBhIHByb3BlcnR5LCBhcHBseWluZyBuYW1pbmcgc3RyYXRlZ3kgaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgcmVzb2x2ZUNvbHVtbk5hbWUoa2V5OiBzdHJpbmcsIGZpZWxkOiBGaWVsZE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGlmICghZmllbGQgfHwgZmllbGQubmFtZSAhPT0ga2V5IHx8ICF0aGlzLm5hbWluZ1N0cmF0ZWd5KSB7XG4gICAgICByZXR1cm4gZmllbGQ/Lm5hbWUgPz8ga2V5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYW1pbmdTdHJhdGVneS5jb2x1bW5OYW1lKGZpZWxkLm5hbWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type EntityMeta, type FieldKey, type FieldOptions, type NamingStrategy, type Query, type QueryComparisonOptions, type QueryConflictPaths, type QueryContext, type QueryDialect, type QueryOptions, type QueryPager, QueryRaw, type QueryRawFnOptions, type QuerySearch, type QuerySelect, type QuerySelectOptions, type QuerySort, type QueryWhere, type QueryWhereFieldOperatorMap, type QueryWhereMap, type QueryWhereOptions, type SqlQueryDialect, type Type } from '../type/index.js';
|
|
2
|
+
import { type CallbackKey } from '../util/index.js';
|
|
3
|
+
import { AbstractDialect } from './abstractDialect.js';
|
|
4
|
+
export declare abstract class AbstractSqlDialect extends AbstractDialect implements QueryDialect, SqlQueryDialect {
|
|
5
|
+
readonly escapeIdChar: '`' | '"';
|
|
6
|
+
readonly beginTransactionCommand: string;
|
|
7
|
+
readonly commitTransactionCommand: string;
|
|
8
|
+
readonly rollbackTransactionCommand: string;
|
|
9
|
+
constructor(namingStrategy?: NamingStrategy, escapeIdChar?: '`' | '"', beginTransactionCommand?: string, commitTransactionCommand?: string, rollbackTransactionCommand?: string);
|
|
10
|
+
createContext(): QueryContext;
|
|
11
|
+
addValue(values: unknown[], value: unknown): string;
|
|
12
|
+
placeholder(_index: number): string;
|
|
13
|
+
returningId<E>(entity: Type<E>): string;
|
|
14
|
+
search<E>(ctx: QueryContext, entity: Type<E>, q?: Query<E>, opts?: QueryOptions): void;
|
|
15
|
+
selectFields<E>(ctx: QueryContext, entity: Type<E>, select: QuerySelect<E>, opts?: QuerySelectOptions): void;
|
|
16
|
+
select<E>(ctx: QueryContext, entity: Type<E>, select: QuerySelect<E>, opts?: QueryOptions): void;
|
|
17
|
+
protected selectRelationFields<E>(ctx: QueryContext, entity: Type<E>, select: QuerySelect<E>, opts?: {
|
|
18
|
+
prefix?: string;
|
|
19
|
+
}): void;
|
|
20
|
+
protected selectRelationJoins<E>(ctx: QueryContext, entity: Type<E>, select: QuerySelect<E>, opts?: {
|
|
21
|
+
prefix?: string;
|
|
22
|
+
}): void;
|
|
23
|
+
where<E>(ctx: QueryContext, entity: Type<E>, where?: QueryWhere<E>, opts?: QueryWhereOptions): void;
|
|
24
|
+
compare<E, K extends keyof QueryWhereMap<E>>(ctx: QueryContext, entity: Type<E>, key: K, val: QueryWhereMap<E>[K], opts?: QueryComparisonOptions): void;
|
|
25
|
+
compareFieldOperator<E, K extends keyof QueryWhereFieldOperatorMap<E>>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, op: K, val: QueryWhereFieldOperatorMap<E>[K], opts?: QueryOptions): void;
|
|
26
|
+
protected addValues(ctx: QueryContext, vals: unknown[]): void;
|
|
27
|
+
getComparisonKey<E>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, { prefix }?: QueryOptions): void;
|
|
28
|
+
sort<E>(ctx: QueryContext, entity: Type<E>, sort: QuerySort<E>, { prefix }: QueryOptions): void;
|
|
29
|
+
pager(ctx: QueryContext, opts: QueryPager): void;
|
|
30
|
+
count<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
|
|
31
|
+
find<E>(ctx: QueryContext, entity: Type<E>, q?: Query<E>, opts?: QueryOptions): void;
|
|
32
|
+
insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
|
|
33
|
+
update<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, payload: E, opts?: QueryOptions): void;
|
|
34
|
+
upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): void;
|
|
35
|
+
protected getUpsertUpdateAssignments<E>(ctx: QueryContext, meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>, payload: E, callback?: (columnName: string) => string): string;
|
|
36
|
+
protected getUpsertConflictPathsStr<E>(meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>): string;
|
|
37
|
+
delete<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
|
|
38
|
+
escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
|
|
39
|
+
protected getPersistables<E>(ctx: QueryContext, meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): Record<string, unknown>[];
|
|
40
|
+
protected getPersistable<E>(ctx: QueryContext, meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): Record<string, unknown>;
|
|
41
|
+
protected formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions, value: unknown): void;
|
|
42
|
+
getRawValue(ctx: QueryContext, opts: QueryRawFnOptions & {
|
|
43
|
+
value: QueryRaw;
|
|
44
|
+
autoPrefixAlias?: boolean;
|
|
45
|
+
}): void;
|
|
46
|
+
abstract escape(value: unknown): string;
|
|
47
|
+
}
|