@capacitor-community/sqlite 3.2.0 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +15 -2
  3. package/android/src/main/java/com/getcapacitor/community/database/sqlite/CapacitorSQLite.java +1 -1
  4. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/Database.java +14 -6
  5. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/ExportToJson.java +25 -5
  6. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/ImportFromJson.java +43 -0
  7. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/JsonSQLite.java +42 -1
  8. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/JsonView.java +85 -0
  9. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/UtilsJson.java +45 -0
  10. package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/UtilsDrop.java +54 -1
  11. package/dist/esm/definitions.d.ts +14 -0
  12. package/dist/esm/definitions.js +3 -1
  13. package/dist/esm/definitions.js.map +1 -1
  14. package/dist/esm/web.js +11 -9
  15. package/dist/esm/web.js.map +1 -1
  16. package/dist/plugin.cjs.js +14 -10
  17. package/dist/plugin.cjs.js.map +1 -1
  18. package/dist/plugin.js +14 -10
  19. package/dist/plugin.js.map +1 -1
  20. package/electron/dist/plugin.js +227 -16
  21. package/electron/dist/plugin.js.map +1 -1
  22. package/ios/Plugin/CapacitorSQLite.swift +22 -22
  23. package/ios/Plugin/CapacitorSQLitePlugin.swift +29 -29
  24. package/ios/Plugin/Database.swift +19 -8
  25. package/ios/Plugin/ImportExportJson/ExportToJson.swift +51 -6
  26. package/ios/Plugin/ImportExportJson/ImportFromJson.swift +75 -0
  27. package/ios/Plugin/ImportExportJson/JsonSQLite.swift +16 -0
  28. package/ios/Plugin/ReturnHandler.swift +1 -1
  29. package/ios/Plugin/Utils/UtilsDrop.swift +53 -3
  30. package/ios/Plugin/Utils/UtilsJson.swift +53 -0
  31. package/ios/Plugin/Utils/UtilsSQLCipher.swift +1 -1
  32. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../build/electron/src/electron-utils/utilsSQLite.js","../build/electron/src/electron-utils/ImportExportJson/utilsJson.js","../build/electron/src/electron-utils/ImportExportJson/exportToJson.js","../build/electron/src/electron-utils/utilsDrop.js","../build/electron/src/electron-utils/ImportExportJson/importFromJson.js","../build/electron/src/electron-utils/utilsFile.js","../build/electron/src/electron-utils/utilsUpgrade.js","../build/electron/src/electron-utils/Database.js","../build/electron/src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsSQLite = void 0;\nclass UtilsSQLite {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n // this.JSQlite = require('@journeyapps/sqlcipher').verbose();\n this.SQLite3 = require('sqlite3');\n }\n /**\n * OpenOrCreateDatabase\n * @param pathDB\n * @param password\n */\n async openOrCreateDatabase(pathDB /*,\n password: string,*/) {\n const msg = 'OpenOrCreateDatabase: ';\n // open sqlite3 database\n /* const mDB: any = new this.JSQlite.Database(pathDB, {\n verbose: console.log,\n });\n */\n const mDB = new this.SQLite3.Database(pathDB, {\n verbose: console.log,\n });\n if (mDB != null) {\n try {\n await this.dbChanges(mDB);\n }\n catch (err) {\n return Promise.reject(new Error(msg + `dbChanges ${err.message}`));\n }\n try {\n /* // set the password\n if (password.length > 0) {\n await this.setCipherPragma(mDB, password);\n }\n */\n // set Foreign Keys On\n await this.setForeignKeyConstraintsEnabled(mDB, true);\n // Check Version\n const curVersion = await this.getVersion(mDB);\n if (curVersion === 0) {\n await this.setVersion(mDB, 1);\n }\n }\n catch (err) {\n return Promise.reject(new Error(msg + `${err.message}`));\n }\n return Promise.resolve(mDB);\n }\n else {\n return Promise.reject(new Error(msg + 'open database failed'));\n }\n }\n /**\n * SetCipherPragma\n * @param mDB\n * @param password\n */\n /*\n public async setCipherPragma(mDB: any, password: string): Promise<void> {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`, (err: any) => {\n if (err) {\n reject(new Error('SetForeignKey: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n */\n /**\n * SetForeignKeyConstraintsEnabled\n * @param mDB\n * @param toggle\n */\n async setForeignKeyConstraintsEnabled(mDB, toggle) {\n return new Promise((resolve, reject) => {\n let key = 'OFF';\n if (toggle) {\n key = 'ON';\n }\n mDB.run(`PRAGMA foreign_keys = '${key}'`, (err) => {\n if (err) {\n reject(new Error(`SetForeignKey: ${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * GetVersion\n * @param mDB\n */\n async getVersion(mDB) {\n return new Promise((resolve, reject) => {\n let version = 0;\n const SELECT_VERSION = 'PRAGMA user_version;';\n mDB.get(SELECT_VERSION, [], (err, row) => {\n // process the row here\n if (err) {\n reject(new Error('getVersion failed: ' + `${err.message}`));\n }\n else {\n if (row == null) {\n version = 0;\n }\n else {\n const key = Object.keys(row)[0];\n version = row[key];\n }\n resolve(version);\n }\n });\n });\n }\n /**\n * SetVersion\n * @param mDB\n * @param version\n */\n async setVersion(mDB, version) {\n return new Promise((resolve, reject) => {\n mDB.run(`PRAGMA user_version = ${version}`, (err) => {\n if (err) {\n reject(new Error('setVersion failed: ' + `${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * ChangePassword\n * @param pathDB\n * @param password\n * @param newpassword\n */\n /*\n \n public async changePassword(\n pathDB: string,\n password: string,\n newpassword: string,\n ): Promise<void> {\n let mDB: any;\n try {\n mDB = await this.openOrCreateDatabase(pathDB, password);\n await this.pragmaReKey(mDB, password, newpassword);\n } catch (err) {\n return Promise.reject(err);\n } finally {\n mDB.close();\n }\n }\n */\n /**\n * PragmaReKey\n * @param mDB\n * @param password\n * @param newpassword\n */\n /*\n private async pragmaReKey(\n mDB: any,\n password: string,\n newpassword: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`);\n mDB.run(`PRAGMA rekey = '${newpassword}'`, (err: any) => {\n if (err) {\n reject(new Error('ChangePassword: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n */\n /**\n * BeginTransaction\n * @param db\n * @param isOpen\n */\n async beginTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'BeginTransaction: ';\n if (!isOpen) {\n return Promise.reject(new Error(`${msg}database not opened`));\n }\n const sql = 'BEGIN TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(new Error(`${msg}${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * RollbackTransaction\n * @param db\n * @param isOpen\n */\n async rollbackTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'RollbackTransaction: ';\n if (!isOpen) {\n reject(new Error(`${msg}database not opened`));\n }\n const sql = 'ROLLBACK TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(new Error(`${msg}${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * CommitTransaction\n * @param db\n * @param isOpen\n */\n async commitTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'CommitTransaction: ';\n if (!isOpen) {\n reject(new Error(`${msg}database not opened`));\n }\n const sql = 'COMMIT TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(new Error(`${msg}${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * DbChanges\n * return total number of changes\n * @param db\n */\n async dbChanges(db) {\n return new Promise((resolve, reject) => {\n const SELECT_CHANGE = 'SELECT total_changes()';\n let changes = 0;\n db.get(SELECT_CHANGE, [], (err, row) => {\n // process the row here\n if (err) {\n reject(new Error(`DbChanges failed: ${err.message}`));\n }\n else {\n if (row == null) {\n changes = 0;\n }\n else {\n const key = Object.keys(row)[0];\n changes = row[key];\n }\n resolve(changes);\n }\n });\n });\n }\n /**\n * GetLastId\n * @param db\n */\n getLastId(db) {\n return new Promise((resolve, reject) => {\n const SELECT_LAST_ID = 'SELECT last_insert_rowid()';\n let lastId = -1;\n db.get(SELECT_LAST_ID, [], (err, row) => {\n // process the row here\n if (err) {\n let msg = 'GetLastId failed: ';\n msg += `${err.message}`;\n reject(new Error(msg));\n }\n else {\n if (row == null)\n resolve(lastId);\n const key = Object.keys(row)[0];\n lastId = row[key];\n resolve(lastId);\n }\n });\n });\n }\n /**\n * Execute\n * @param mDB\n * @param sql\n */\n async execute(mDB, sql) {\n let changes = -1;\n let initChanges = -1;\n try {\n initChanges = await this.dbChanges(mDB);\n await this.execDB(mDB, sql);\n changes = (await this.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`Execute: ${err.message}`));\n }\n }\n /**\n * ExecDB\n * @param mDB\n * @param sql\n */\n async execDB(mDB, sql) {\n return new Promise((resolve, reject) => {\n mDB.exec(sql, async (err) => {\n if (err) {\n const msg = err.message;\n reject(new Error(`Execute: ${msg}: `));\n }\n resolve();\n });\n });\n }\n /**\n * ExecuteSet\n * @param db\n * @param set\n */\n async executeSet(db, set) {\n let lastId = -1;\n for (let i = 0; i < set.length; i++) {\n const statement = 'statement' in set[i] ? set[i].statement : null;\n const values = 'values' in set[i] && set[i].values.length > 0 ? set[i].values : null;\n if (statement == null || values == null) {\n let msg = 'ExecuteSet: Error statement';\n msg += ` or values are null for index ${i}`;\n return Promise.reject(new Error(msg));\n }\n try {\n if (Array.isArray(values[0])) {\n for (const val of values) {\n lastId = await this.prepareRun(db, statement, val);\n }\n }\n else {\n lastId = await this.prepareRun(db, statement, values);\n }\n }\n catch (err) {\n return Promise.reject(new Error(`ExecuteSet: ${err.message}`));\n }\n }\n return Promise.resolve(lastId);\n }\n /**\n * PrepareRun\n * @param db\n * @param statement\n * @param values\n */\n prepareRun(db, statement, values) {\n return new Promise((resolve, reject) => {\n let lastId = -1;\n db.run(statement, values, async (err) => {\n if (err) {\n let msg = `PrepareRun: run `;\n msg += `${err.message}`;\n reject(new Error(msg));\n }\n else {\n try {\n lastId = await this.getLastId(db);\n resolve(lastId);\n }\n catch (err) {\n let msg = `PrepareRun: lastId `;\n msg += `${err.message}`;\n reject(new Error(msg));\n }\n }\n });\n });\n }\n /**\n * QueryAll\n * @param mDB\n * @param sql\n * @param values\n */\n queryAll(mDB, sql, values) {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.all(sql, values, (err, rows) => {\n if (err) {\n reject(new Error(`QueryAll: ${err.message}`));\n }\n else {\n if (rows == null) {\n rows = [];\n }\n resolve(rows);\n }\n });\n });\n });\n }\n}\nexports.UtilsSQLite = UtilsSQLite;\n//# sourceMappingURL=utilsSQLite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nclass UtilsJson {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * IsTableExists\n * @param db\n * @param isOpen\n * @param tableName\n */\n async isTableExists(db, isOpen, tableName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isTableExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='table' AND name='${tableName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isTableExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * CreateSchema\n * @param mDB\n * @param jsonData\n */\n async createSchema(mDB, jsonData) {\n // create the database schema\n let changes = 0;\n try {\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateDatabaseSchema: ${err.message}`));\n }\n const stmts = await this.createSchemaStatement(jsonData);\n if (stmts.length > 0) {\n const schemaStmt = stmts.join('\\n');\n try {\n changes = await this._uSQLite.execute(mDB, schemaStmt);\n if (changes < 0) {\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error('CreateSchema: changes < 0 ' + `${err.message}`));\n }\n }\n }\n catch (err) {\n const msg = err.message;\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`CreateSchema: ${msg}`));\n }\n catch (err) {\n return Promise.reject(new Error('CreateSchema: changes < 0 ' + `${err.message}: ${msg}`));\n }\n }\n }\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('CreateSchema: commit ' + `${err.message}`));\n }\n }\n /**\n * CreateSchemaStatement\n * @param jsonData\n */\n async createSchemaStatement(jsonData) {\n const statements = [];\n // Prepare the statement to execute\n try {\n for (const jTable of jsonData.tables) {\n if (jTable.schema != null && jTable.schema.length >= 1) {\n // create table\n statements.push('CREATE TABLE IF NOT EXISTS ' + `${jTable.name} (`);\n for (let j = 0; j < jTable.schema.length; j++) {\n if (j === jTable.schema.length - 1) {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value}`);\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value}`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value}`);\n }\n }\n else {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value},`);\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value},`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value},`);\n }\n }\n }\n statements.push(');');\n // create trigger last_modified associated with the table\n let trig = 'CREATE TRIGGER IF NOT EXISTS ';\n trig += `${jTable.name}`;\n trig += `_trigger_last_modified `;\n trig += `AFTER UPDATE ON ${jTable.name} `;\n trig += 'FOR EACH ROW WHEN NEW.last_modified <= ';\n trig += 'OLD.last_modified BEGIN UPDATE ';\n trig += `${jTable.name} `;\n trig += `SET last_modified = `;\n trig += \"(strftime('%s','now')) WHERE id=OLD.id; END;\";\n statements.push(trig);\n }\n if (jTable.indexes != null && jTable.indexes.length >= 1) {\n for (const jIndex of jTable.indexes) {\n const tableName = jTable.name;\n let stmt = `CREATE ${Object.keys(jIndex).includes('mode') ? jIndex.mode + ' ' : ''} INDEX IF NOT EXISTS `;\n stmt += `${jIndex.name} ON ${tableName} (${jIndex.value});`;\n statements.push(stmt);\n }\n }\n if (jTable.triggers != null && jTable.triggers.length >= 1) {\n for (const jTrg of jTable.triggers) {\n const tableName = jTable.name;\n if (jTrg.timeevent.toUpperCase().endsWith(' ON')) {\n jTrg.timeevent = jTrg.timeevent.substring(0, jTrg.timeevent.length - 3);\n }\n let stmt = `CREATE TRIGGER IF NOT EXISTS `;\n stmt += `${jTrg.name} ${jTrg.timeevent} ON ${tableName} `;\n if (jTrg.condition)\n stmt += `${jTrg.condition} `;\n stmt += `${jTrg.logic};`;\n statements.push(stmt);\n }\n }\n }\n return Promise.resolve(statements);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * CreateDataTable\n * @param mDB\n * @param table\n * @param mode\n */\n async createDataTable(mDB, table, mode) {\n let lastId = -1;\n try {\n // Check if the table exists\n const tableExists = await this.isTableExists(mDB, true, table.name);\n if (!tableExists) {\n return Promise.reject(new Error('CreateDataTable: Table ' + `${table.name} does not exist`));\n }\n // Get the column names and types\n const tableNamesTypes = await this.getTableColumnNamesTypes(mDB, table.name);\n const tableColumnTypes = tableNamesTypes.types;\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnTypes.length === 0) {\n return Promise.reject(new Error('CreateDataTable: Table ' + `${table.name} info does not exist`));\n }\n // Loop on Table Values\n for (let j = 0; j < table.values.length; j++) {\n // Check the row number of columns\n if (table.values[j].length != tableColumnTypes.length) {\n return Promise.reject(new Error(`CreateDataTable: Table ${table.name} ` +\n `values row ${j} not correct length`));\n }\n // Check the column's type before proceeding\n // remove type checking for allowing RDBMS Types\n /* const isColumnTypes: boolean = await this.checkColumnTypes(\n tableColumnTypes,\n table.values[j],\n );\n if (!isColumnTypes) {\n return Promise.reject(\n new Error(\n `CreateDataTable: Table ${table.name} ` +\n `values row ${j} not correct types`,\n ),\n );\n }\n */\n const retisIdExists = await this.isIdExists(mDB, table.name, tableColumnNames[0], table.values[j][0]);\n let stmt;\n if (mode === 'full' || (mode === 'partial' && !retisIdExists)) {\n // Insert\n const nameString = tableColumnNames.join();\n const questionMarkString = await this.createQuestionMarkString(tableColumnNames.length);\n stmt = `INSERT INTO ${table.name} (${nameString}) VALUES (`;\n stmt += `${questionMarkString});`;\n }\n else {\n // Update\n const setString = await this.setNameForUpdate(tableColumnNames);\n if (setString.length === 0) {\n return Promise.reject(new Error(`CreateDataTable: Table ${table.name} ` +\n `values row ${j} not set to String`));\n }\n stmt = `UPDATE ${table.name} SET ${setString} WHERE `;\n if (typeof table.values[j][0] == 'string') {\n stmt += `${tableColumnNames[0]} = '${table.values[j][0]}';`;\n }\n else {\n stmt += `${tableColumnNames[0]} = ${table.values[j][0]};`;\n }\n }\n lastId = await this._uSQLite.prepareRun(mDB, stmt, table.values[j]);\n if (lastId < 0) {\n return Promise.reject(new Error('CreateDataTable: lastId < 0'));\n }\n }\n return Promise.resolve(lastId);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateDataTable: ${err.message}`));\n }\n }\n /**\n * GetTableColumnNamesTypes\n * @param mDB\n * @param tableName\n */\n async getTableColumnNamesTypes(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const retTypes = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this._uSQLite.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n retTypes.push(query.type);\n }\n }\n return Promise.resolve({ names: retNames, types: retTypes });\n }\n catch (err) {\n return Promise.reject(new Error('GetTableColumnNamesTypes: ' + `${err.message}`));\n }\n }\n /**\n * CheckColumnTypes\n * @param tableTypes\n * @param rowValues\n */\n /*\n private async checkColumnTypes(\n tableTypes: any[],\n rowValues: any[],\n ): Promise<boolean> {\n const isType = true;\n for (let i = 0; i < rowValues.length; i++) {\n if (rowValues[i].toString().toUpperCase() != 'NULL') {\n try {\n await this.isType(tableTypes[i], rowValues[i]);\n } catch (err) {\n return Promise.reject(new Error('checkColumnTypes: Type not found'));\n }\n }\n }\n return Promise.resolve(isType);\n }\n */\n /**\n * IsType\n * @param type\n * @param value\n */\n /*\n private async isType(type: string, value: any): Promise<void> {\n let ret = false;\n if (type === 'NULL' && typeof value === 'object') ret = true;\n if (type === 'TEXT' && typeof value === 'string') ret = true;\n if (type === 'INTEGER' && typeof value === 'number') ret = true;\n if (type === 'REAL' && typeof value === 'number') ret = true;\n if (type === 'BLOB' && typeof value === 'string') ret = true;\n if (ret) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('IsType: not a SQL Type'));\n }\n }\n */\n /**\n * IsIdExists\n * @param db\n * @param dbName\n * @param firstColumnName\n * @param key\n */\n async isIdExists(db, dbName, firstColumnName, key) {\n let ret = false;\n let query = `SELECT ${firstColumnName} FROM ` +\n `${dbName} WHERE ${firstColumnName} = `;\n if (typeof key === 'number')\n query += `${key};`;\n if (typeof key === 'string')\n query += `'${key}';`;\n try {\n const resQuery = await this._uSQLite.queryAll(db, query, []);\n if (resQuery.length === 1)\n ret = true;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(new Error(`IsIdExists: ${err.message}`));\n }\n }\n /**\n * CreateQuestionMarkString\n * @param length\n */\n createQuestionMarkString(length) {\n return new Promise((resolve, reject) => {\n let retString = '';\n for (let i = 0; i < length; i++) {\n retString += '?,';\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n resolve(retString);\n }\n else {\n reject(new Error('CreateQuestionMarkString: length = 0'));\n }\n });\n }\n /**\n * SetNameForUpdate\n * @param names\n */\n async setNameForUpdate(names) {\n let retString = '';\n for (const name of names) {\n retString += `${name} = ? ,`;\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n return Promise.resolve(retString);\n }\n else {\n return Promise.reject(new Error('SetNameForUpdate: length = 0'));\n }\n }\n /**\n * IsJsonSQLite\n * @param obj\n */\n isJsonSQLite(obj) {\n const keyFirstLevel = [\n 'database',\n 'version',\n 'encrypted',\n 'mode',\n 'tables',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyFirstLevel.indexOf(key) === -1)\n return false;\n if (key === 'database' && typeof obj[key] != 'string')\n return false;\n if (key === 'version' && typeof obj[key] != 'number')\n return false;\n if (key === 'encrypted' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'mode' && typeof obj[key] != 'string')\n return false;\n if (key === 'tables' && typeof obj[key] != 'object')\n return false;\n if (key === 'tables') {\n for (const oKey of obj[key]) {\n const retTable = this.isTable(oKey);\n if (!retTable)\n return false;\n }\n }\n }\n return true;\n }\n /**\n * IsTable\n * @param obj\n */\n isTable(obj) {\n const keyTableLevel = [\n 'name',\n 'schema',\n 'indexes',\n 'triggers',\n 'values',\n ];\n let nbColumn = 0;\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'schema' && typeof obj[key] != 'object')\n return false;\n if (key === 'indexes' && typeof obj[key] != 'object')\n return false;\n if (key === 'triggers' && typeof obj[key] != 'object')\n return false;\n if (key === 'values' && typeof obj[key] != 'object')\n return false;\n if (key === 'schema') {\n obj['schema'].forEach((element) => {\n if (element.column) {\n nbColumn++;\n }\n });\n for (let i = 0; i < nbColumn; i++) {\n const retSchema = this.isSchema(obj[key][i]);\n if (!retSchema)\n return false;\n }\n }\n if (key === 'indexes') {\n for (const oKey of obj[key]) {\n const retIndexes = this.isIndexes(oKey);\n if (!retIndexes)\n return false;\n }\n }\n if (key === 'triggers') {\n for (const oKey of obj[key]) {\n const retTriggers = this.isTriggers(oKey);\n if (!retTriggers)\n return false;\n }\n }\n if (key === 'values') {\n if (nbColumn > 0) {\n for (const oKey of obj[key]) {\n if (typeof oKey != 'object' || oKey.length != nbColumn)\n return false;\n }\n }\n }\n }\n return true;\n }\n /**\n * IsSchema\n * @param obj\n */\n isSchema(obj) {\n const keySchemaLevel = [\n 'column',\n 'value',\n 'foreignkey',\n 'constraint',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keySchemaLevel.indexOf(key) === -1)\n return false;\n if (key === 'column' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'foreignkey' && typeof obj[key] != 'string')\n return false;\n if (key === 'constraint' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * isIndexes\n * @param obj\n */\n isIndexes(obj) {\n const keyIndexesLevel = ['name', 'value', 'mode'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyIndexesLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'mode' &&\n (typeof obj[key] != 'string' || obj[key] != 'UNIQUE'))\n return false;\n }\n return true;\n }\n /**\n * isTriggers\n * @param obj\n */\n isTriggers(obj) {\n const keyTriggersLevel = [\n 'name',\n 'timeevent',\n 'condition',\n 'logic',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTriggersLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'timeevent' && typeof obj[key] != 'string')\n return false;\n if (key === 'condition' && typeof obj[key] != 'string')\n return false;\n if (key === 'logic' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * checkSchemaValidity\n * @param schema\n */\n async checkSchemaValidity(schema) {\n for (let i = 0; i < schema.length; i++) {\n const sch = {};\n const keys = Object.keys(schema[i]);\n if (keys.includes('column')) {\n sch.column = schema[i].column;\n }\n if (keys.includes('value')) {\n sch.value = schema[i].value;\n }\n if (keys.includes('foreignkey')) {\n sch.foreignkey = schema[i].foreignkey;\n }\n if (keys.includes('constraint')) {\n sch.constraint = schema[i].constraint;\n }\n const isValid = this.isSchema(sch);\n if (!isValid) {\n return Promise.reject(new Error(`CheckSchemaValidity: schema[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n /**\n * checkIndexesSchemaValidity\n * @param indexes\n */\n async checkIndexesValidity(indexes) {\n for (let i = 0; i < indexes.length; i++) {\n const index = {};\n const keys = Object.keys(indexes[i]);\n if (keys.includes('value')) {\n index.value = indexes[i].value;\n }\n if (keys.includes('name')) {\n index.name = indexes[i].name;\n }\n if (keys.includes('mode')) {\n index.mode = indexes[i].mode;\n }\n const isValid = this.isIndexes(index);\n if (!isValid) {\n return Promise.reject(new Error(`CheckIndexesValidity: indexes[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n /**\n * checkTriggersValidity\n * @param triggers\n */\n async checkTriggersValidity(triggers) {\n for (let i = 0; i < triggers.length; i++) {\n const trigger = {};\n const keys = Object.keys(triggers[i]);\n if (keys.includes('logic')) {\n trigger.logic = triggers[i].logic;\n }\n if (keys.includes('name')) {\n trigger.name = triggers[i].name;\n }\n if (keys.includes('timeevent')) {\n trigger.timeevent = triggers[i].timeevent;\n }\n if (keys.includes('condition')) {\n trigger.condition = triggers[i].condition;\n }\n const isValid = this.isTriggers(trigger);\n if (!isValid) {\n return Promise.reject(new Error(`CheckTriggersValidity: triggers[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n}\nexports.UtilsJson = UtilsJson;\n//# sourceMappingURL=utilsJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportToJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ExportToJson {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uJson = new utilsJson_1.UtilsJson();\n }\n /**\n * CreateExportObject\n * @param mDB\n * @param sqlObj\n */\n async createExportObject(mDB, sqlObj) {\n const retObj = {};\n let tables = [];\n let errmsg = '';\n try {\n // get Table's name\n const resTables = await this.getTablesNameSQL(mDB);\n if (resTables.length === 0) {\n return Promise.reject(new Error(\"createExportObject: table's names failed\"));\n }\n else {\n switch (sqlObj.mode) {\n case 'partial': {\n tables = await this.getTablesPartial(mDB, resTables);\n break;\n }\n case 'full': {\n tables = await this.getTablesFull(mDB, resTables);\n break;\n }\n default: {\n errmsg =\n 'createExportObject: expMode ' + sqlObj.mode + ' not defined';\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n if (tables.length > 0) {\n retObj.database = sqlObj.database;\n retObj.version = sqlObj.version;\n retObj.encrypted = sqlObj.encrypted;\n retObj.mode = sqlObj.mode;\n retObj.tables = tables;\n }\n return Promise.resolve(retObj);\n }\n }\n catch (err) {\n return Promise.reject(new Error('createExportObject: ' + err.message));\n }\n }\n /**\n * GetTablesNameSQL\n * @param mDb\n */\n async getTablesNameSQL(mDb) {\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this._uSQLite.queryAll(mDb, sql, []);\n return Promise.resolve(retQuery);\n }\n catch (err) {\n return Promise.reject(new Error(`getTablesNames: ${err.message}`));\n }\n }\n /**\n * GetSyncDate\n * @param mDb\n */\n async getSyncDate(mDb) {\n return new Promise((resolve, reject) => {\n let retDate = -1;\n // get the last sync date\n const stmt = `SELECT sync_date FROM sync_table;`;\n mDb.get(stmt, [], (err, row) => {\n // process the row here\n if (err) {\n reject(new Error(`GetSyncDate: ${err.message}`));\n }\n else {\n if (row != null) {\n const key = Object.keys(row)[0];\n retDate = row[key];\n resolve(retDate);\n }\n else {\n reject(new Error(`GetSyncDate: no syncDate`));\n }\n }\n });\n });\n }\n /**\n * GetTablesFull\n * @param mDb\n * @param resTables\n */\n async getTablesFull(mDb, resTables) {\n const tables = [];\n let errmsg = '';\n try {\n // Loop through the tables\n for (const rTable of resTables) {\n let tableName;\n let sqlStmt;\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n const table = {};\n // create Table's Schema\n const schema = await this.getSchema(sqlStmt);\n if (schema.length === 0) {\n errmsg = 'GetTablesFull: no Schema returned';\n break;\n }\n // check schema validity\n await this._uJson.checkSchemaValidity(schema);\n // create Table's indexes if any\n const indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this._uJson.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n const triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this._uJson.checkTriggersValidity(triggers);\n }\n // create Table's Data\n const query = `SELECT * FROM ${tableName};`;\n const values = await this.getValues(mDb, query, tableName);\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n else {\n errmsg = `GetTablesFull: must contain schema`;\n break;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesFull: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTablesFull: ${err.message}`));\n }\n }\n /**\n * GetSchema\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getSchema(sqlStmt /*,tableName: string,*/) {\n const schema = [];\n // take the substring between parenthesis\n const openPar = sqlStmt.indexOf('(');\n const closePar = sqlStmt.lastIndexOf(')');\n let sstr = sqlStmt.substring(openPar + 1, closePar);\n // check if there is other parenthesis and replace the ',' by '§'\n try {\n sstr = await this.modEmbeddedParentheses(sstr);\n const sch = sstr.split(',');\n // for each element of the array split the\n // first word as key\n for (const sc of sch) {\n const row = [];\n const scht = sc.trim();\n row[0] = scht.substring(0, scht.indexOf(' '));\n row[1] = scht.substring(scht.indexOf(' ') + 1);\n const jsonRow = {};\n if (row[0].toUpperCase() === 'FOREIGN') {\n const oPar = sc.indexOf('(');\n const cPar = sc.indexOf(')');\n row[0] = sc.substring(oPar + 1, cPar);\n row[1] = sc.substring(cPar + 2);\n jsonRow['foreignkey'] = row[0];\n }\n else if (row[0].toUpperCase() === 'CONSTRAINT') {\n const tRow = [];\n const row1t = row[1].trim();\n tRow[0] = row1t.substring(0, row1t.indexOf(' '));\n tRow[1] = row1t.substring(row1t.indexOf(' ') + 1);\n row[0] = tRow[0];\n jsonRow['constraint'] = row[0];\n row[1] = tRow[1];\n }\n else {\n jsonRow['column'] = row[0];\n }\n jsonRow['value'] = row[1].replace(/§/g, ',');\n schema.push(jsonRow);\n }\n return Promise.resolve(schema);\n }\n catch (err) {\n return Promise.reject(new Error(err.message));\n }\n }\n /**\n * GetIndexes\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getIndexes(mDb, tableName) {\n const indexes = [];\n let errmsg = '';\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'index' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOTNULL;`;\n const retIndexes = await this._uSQLite.queryAll(mDb, stmt, []);\n if (retIndexes.length > 0) {\n for (const rIndex of retIndexes) {\n const keys = Object.keys(rIndex);\n if (keys.length === 3) {\n if (rIndex['tbl_name'] === tableName) {\n const sql = rIndex['sql'];\n const mode = sql.includes('UNIQUE') ? 'UNIQUE' : '';\n const oPar = sql.lastIndexOf('(');\n const cPar = sql.lastIndexOf(')');\n const index = {};\n index.name = rIndex['name'];\n index.value = sql.slice(oPar + 1, cPar);\n if (mode.length > 0)\n index.mode = mode;\n indexes.push(index);\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} doesn't match`;\n break;\n }\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} creating indexes`;\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n }\n return Promise.resolve(indexes);\n }\n catch (err) {\n return Promise.reject(new Error(`GetIndexes: ${err.message}`));\n }\n }\n /**\n * GetTriggers\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getTriggers(mDb, tableName) {\n const triggers = [];\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'trigger' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOT NULL;`;\n const retTriggers = await this._uSQLite.queryAll(mDb, stmt, []);\n if (retTriggers.length > 0) {\n for (const rTrg of retTriggers) {\n const keys = Object.keys(rTrg);\n if (keys.length === 3) {\n if (rTrg['tbl_name'] === tableName) {\n const sql = rTrg['sql'];\n const name = rTrg['name'];\n let sqlArr = sql.split(name);\n if (sqlArr.length != 2) {\n return Promise.reject(new Error(`GetTriggers: sql split name does not return 2 values`));\n }\n if (!sqlArr[1].includes(tableName)) {\n return Promise.reject(new Error(`GetTriggers: sql split does not contains ${tableName}`));\n }\n const timeEvent = sqlArr[1].split(tableName, 1)[0].trim();\n sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName);\n if (sqlArr.length != 2) {\n return Promise.reject(new Error(`GetTriggers: sql split tableName does not return 2 values`));\n }\n let condition = '';\n let logic = '';\n if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') {\n sqlArr = sqlArr[1].trim().split('BEGIN');\n if (sqlArr.length != 2) {\n return Promise.reject(new Error(`GetTriggers: sql split BEGIN does not return 2 values`));\n }\n condition = sqlArr[0].trim();\n logic = 'BEGIN' + sqlArr[1];\n }\n else {\n logic = sqlArr[1].trim();\n }\n const trigger = {};\n trigger.name = name;\n trigger.logic = logic;\n if (condition.length > 0)\n trigger.condition = condition;\n trigger.timeevent = timeEvent;\n triggers.push(trigger);\n }\n else {\n return Promise.reject(new Error(`GetTriggers: Table ${tableName} doesn't match`));\n }\n }\n else {\n return Promise.reject(new Error(`GetTriggers: Table ${tableName} creating indexes`));\n }\n }\n }\n return Promise.resolve(triggers);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTriggers: ${err.message}`));\n }\n }\n /**\n * GetValues\n * @param mDb\n * @param query\n * @param tableName\n */\n async getValues(mDb, query, tableName) {\n const values = [];\n try {\n // get table column names and types\n const tableNamesTypes = await this._uJson.getTableColumnNamesTypes(mDb, tableName);\n let rowNames = [];\n if (Object.keys(tableNamesTypes).includes('names')) {\n rowNames = tableNamesTypes.names;\n }\n else {\n return Promise.reject(new Error(`GetValues: Table ${tableName} no names`));\n }\n const retValues = await this._uSQLite.queryAll(mDb, query, []);\n for (const rValue of retValues) {\n const row = [];\n for (const rName of rowNames) {\n if (Object.keys(rValue).includes(rName)) {\n row.push(rValue[rName]);\n }\n else {\n row.push('NULL');\n }\n }\n values.push(row);\n }\n return Promise.resolve(values);\n }\n catch (err) {\n return Promise.reject(new Error(`GetValues: ${err.message}`));\n }\n }\n /**\n * GetTablesPartial\n * @param mDb\n * @param resTables\n */\n async getTablesPartial(mDb, resTables) {\n const tables = [];\n let modTables = {};\n let syncDate = 0;\n let modTablesKeys = [];\n let errmsg = '';\n try {\n // Get the syncDate and the Modified Tables\n const partialModeData = await this.getPartialModeData(mDb, resTables);\n if (Object.keys(partialModeData).includes('syncDate')) {\n syncDate = partialModeData.syncDate;\n }\n if (Object.keys(partialModeData).includes('modTables')) {\n modTables = partialModeData.modTables;\n modTablesKeys = Object.keys(modTables);\n }\n // Loop trough tables\n for (const rTable of resTables) {\n let tableName = '';\n let sqlStmt = '';\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n if (modTablesKeys.length == 0 ||\n modTablesKeys.indexOf(tableName) === -1 ||\n modTables[tableName] == 'No') {\n continue;\n }\n const table = {};\n let schema = [];\n let indexes = [];\n let triggers = [];\n table.name = rTable;\n if (modTables[table.name] === 'Create') {\n // create Table's Schema\n schema = await this.getSchema(sqlStmt);\n if (schema.length > 0) {\n // check schema validity\n await this._uJson.checkSchemaValidity(schema);\n }\n // create Table's indexes if any\n indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this._uJson.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this._uJson.checkTriggersValidity(triggers);\n }\n }\n // create Table's Data\n let query = '';\n if (modTables[tableName] === 'Create') {\n query = `SELECT * FROM ${tableName};`;\n }\n else {\n query =\n `SELECT * FROM ${tableName} ` +\n `WHERE last_modified > ${syncDate};`;\n }\n const values = await this.getValues(mDb, query, tableName);\n // check the table object validity\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesPartial: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTablesPartial: ${err.message}`));\n }\n }\n /**\n * GetPartialModeData\n * @param mDb\n * @param resTables\n */\n async getPartialModeData(mDb, resTables) {\n const retData = {};\n try {\n // get the synchronization date\n const syncDate = await this.getSyncDate(mDb);\n if (syncDate <= 0) {\n return Promise.reject(new Error(`GetPartialModeData: no syncDate`));\n }\n // get the tables which have been updated\n // since last synchronization\n const modTables = await this.getTablesModified(mDb, resTables, syncDate);\n if (modTables.length <= 0) {\n return Promise.reject(new Error(`GetPartialModeData: no modTables`));\n }\n retData.syncDate = syncDate;\n retData.modTables = modTables;\n return Promise.resolve(retData);\n }\n catch (err) {\n return Promise.reject(new Error(`GetPartialModeData: ${err.message}`));\n }\n }\n async getTablesModified(db, tables, syncDate) {\n let errmsg = '';\n try {\n const retModified = {};\n for (const rTable of tables) {\n let mode;\n // get total count of the table\n let stmt = 'SELECT count(*) AS tcount ';\n stmt += `FROM ${rTable.name};`;\n let retQuery = await this._uSQLite.queryAll(db, stmt, []);\n if (retQuery.length != 1) {\n errmsg = 'GetTableModified: total ' + 'count not returned';\n break;\n }\n const totalCount = retQuery[0]['tcount'];\n // get total count of modified since last sync\n stmt = 'SELECT count(*) AS mcount FROM ';\n stmt += `${rTable.name} WHERE last_modified > `;\n stmt += `${syncDate};`;\n retQuery = await this._uSQLite.queryAll(db, stmt, []);\n if (retQuery.length != 1)\n break;\n const totalModifiedCount = retQuery[0]['mcount'];\n if (totalModifiedCount === 0) {\n mode = 'No';\n }\n else if (totalCount === totalModifiedCount) {\n mode = 'Create';\n }\n else {\n mode = 'Modified';\n }\n const key = rTable.name;\n retModified[key] = mode;\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n return Promise.resolve(retModified);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTableModified: ${err.message}`));\n }\n }\n async modEmbeddedParentheses(sstr) {\n const oParArray = this.indexOfChar(sstr, '(');\n const cParArray = this.indexOfChar(sstr, ')');\n if (oParArray.length != cParArray.length) {\n return Promise.reject(\"ModEmbeddedParentheses: Not same number of '(' & ')'\");\n }\n if (oParArray.length === 0) {\n return Promise.resolve(sstr);\n }\n let resStmt = sstr.substring(0, oParArray[0] - 1);\n for (let i = 0; i < oParArray.length; i++) {\n let str;\n if (i < oParArray.length - 1) {\n if (oParArray[i + 1] < cParArray[i]) {\n str = sstr.substring(oParArray[i] - 1, cParArray[i + 1]);\n i++;\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n const newS = str.replace(/,/g, '§');\n resStmt += newS;\n if (i < oParArray.length - 1) {\n resStmt += sstr.substring(cParArray[i], oParArray[i + 1] - 1);\n }\n }\n resStmt += sstr.substring(cParArray[cParArray.length - 1], sstr.length);\n return Promise.resolve(resStmt);\n }\n indexOfChar(str, char) {\n const tmpArr = [...str];\n char = char.toLowerCase();\n return tmpArr.reduce((results, elem, idx) => elem.toLowerCase() === char ? [...results, idx] : results, []);\n }\n}\nexports.ExportToJson = ExportToJson;\n//# sourceMappingURL=exportToJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsDrop = void 0;\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsDrop {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * GetTablesNames\n * @param mDb\n */\n async getTablesNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this._uSQLite.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(new Error(`getTablesNames: ${err.message}`));\n }\n }\n /**\n * DropElements\n * @param db\n * @param type [\"table\",\"index\",\"trigger\"]\n */\n async dropElements(db, type) {\n let msg = '';\n switch (type) {\n case 'index':\n msg = 'DropIndexes';\n break;\n case 'trigger':\n msg = 'DropTriggers';\n break;\n case 'table':\n msg = 'DropTables';\n break;\n default:\n return Promise.reject(new Error(`DropElements: ${type} ` + 'not found'));\n }\n // get the element's names\n let stmt = 'SELECT name FROM sqlite_master WHERE ';\n stmt += `type = '${type}' AND name NOT LIKE 'sqlite_%';`;\n try {\n const elements = await this._uSQLite.queryAll(db, stmt, []);\n if (elements.length > 0) {\n const upType = type.toUpperCase();\n const statements = [];\n for (const elem of elements) {\n let stmt = `DROP ${upType} IF EXISTS `;\n stmt += `${elem.name};`;\n statements.push(stmt);\n }\n for (const stmt of statements) {\n const lastId = await this._uSQLite.prepareRun(db, stmt, []);\n if (lastId < 0) {\n return Promise.reject(new Error(`${msg}: lastId < 0`));\n }\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`${msg}: ${err.message}`));\n }\n }\n /**\n * DropAll\n * Drop all database's elements\n * @param db\n */\n async dropAll(db) {\n try {\n // drop tables\n await this.dropElements(db, 'table');\n // drop indexes\n await this.dropElements(db, 'index');\n // drop triggers\n await this.dropElements(db, 'trigger');\n // vacuum the database\n await this._uSQLite.prepareRun(db, 'VACUUM;', []);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`DropAll: ${err.message}`));\n }\n }\n /**\n * DropTempTables\n * @param db\n * @param alterTables\n */\n async dropTempTables(db, alterTables) {\n const tempTables = Object.keys(alterTables);\n const statements = [];\n for (const tTable of tempTables) {\n let stmt = 'DROP TABLE IF EXISTS ';\n stmt += `_temp_${tTable};`;\n statements.push(stmt);\n }\n try {\n const changes = await this._uSQLite.execute(db, statements.join('\\n'));\n if (changes < 0) {\n return Promise.reject(new Error('DropTempTables: changes < 0'));\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`DropTempTables: ${err.message}`));\n }\n }\n}\nexports.UtilsDrop = UtilsDrop;\n//# sourceMappingURL=utilsDrop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImportFromJson = void 0;\nconst utilsDrop_1 = require(\"../utilsDrop\");\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ImportFromJson {\n constructor() {\n this._uJson = new utilsJson_1.UtilsJson();\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uDrop = new utilsDrop_1.UtilsDrop();\n }\n /**\n * CreateDatabaseSchema\n * @param mDB\n * @param jsonData\n */\n async createDatabaseSchema(mDB, jsonData) {\n let changes = -1;\n const version = jsonData.version;\n try {\n // set Foreign Keys On\n await this._uSQLite.setForeignKeyConstraintsEnabled(mDB, true);\n // set User Version PRAGMA\n await this._uSQLite.setVersion(mDB, version);\n // DROP ALL when mode=\"full\"\n if (jsonData.mode === 'full') {\n await this._uDrop.dropAll(mDB);\n }\n // create database schema\n changes = await this._uJson.createSchema(mDB, jsonData);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('CreateDatabaseSchema: ' + `${err.message}`));\n }\n }\n async createTablesData(mDB, jsonData) {\n let changes = 0;\n let isValue = false;\n let lastId = -1;\n let msg = '';\n let initChanges = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(mDB);\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error(`createTablesData: ${err.message}`));\n }\n for (const jTable of jsonData.tables) {\n if (jTable.values != null && jTable.values.length >= 1) {\n // Create the table's data\n try {\n lastId = await this._uJson.createDataTable(mDB, jTable, jsonData.mode);\n if (lastId < 0)\n break;\n isValue = true;\n }\n catch (err) {\n msg = err.message;\n isValue = false;\n break;\n }\n }\n }\n if (isValue) {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n changes = (await this._uSQLite.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('createTablesData: ' + `${err.message}`));\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createTablesData: ${msg}`));\n }\n catch (err) {\n return Promise.reject(new Error('createTablesData: ' + `${err.message}: ${msg}`));\n }\n }\n else {\n // case were no values given\n return Promise.resolve(0);\n }\n }\n }\n}\nexports.ImportFromJson = ImportFromJson;\n//# sourceMappingURL=importFromJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsFile = void 0;\nclass UtilsFile {\n constructor() {\n this.pathDB = 'Databases';\n this.Path = null;\n this.NodeFs = null;\n this.Os = null;\n this.AppName = '';\n this.HomeDir = '';\n this.sep = '/';\n this.Path = require('path');\n this.NodeFs = require('fs');\n this.Os = require('os');\n this.HomeDir = this.Os.homedir();\n const dir = __dirname;\n const idx = dir.indexOf('\\\\');\n if (idx != -1)\n this.sep = '\\\\';\n this.appPath = dir.substring(0, dir.indexOf(`electron${this.sep}`) /* + 8*/);\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'package.json'));\n this.AppName = JSON.parse(rawdata).name;\n this.osType = this.Os.type();\n }\n /**\n * IsPathExists\n * @param filePath\n */\n isPathExists(filePath) {\n let ret = false;\n try {\n if (this.NodeFs.existsSync(filePath)) {\n ret = true;\n }\n }\n catch (err) {\n console.error('Error isFileExist: ' + err);\n ret = false;\n }\n return ret;\n }\n /**\n * IsFileExists\n * @param fileName\n */\n isFileExists(fileName) {\n let ret = false;\n const filePath = this.getFilePath(fileName);\n if (filePath.length > 0) {\n ret = this.isPathExists(filePath);\n }\n return ret;\n }\n /**\n * GetFilePath\n * get the file path\n * @param fileName\n */\n getFilePath(fileName) {\n return this.Path.join(this.getDatabasesPath(), fileName);\n }\n /**\n * GetCustomerPath\n * get the customer path\n */\n getCustomerPath(custPath) {\n return this.Path.join(this.HomeDir, custPath);\n }\n /**\n * GetCustomerFilePath\n * get the customer file path\n */\n getCustomerFilePath(custPath, file) {\n return this.Path.join(custPath, file);\n }\n /**\n * GetDatabasesPath\n * get the database folder path\n */\n getDatabasesPath() {\n let retPath = '';\n const dbFolder = this.pathDB;\n retPath = this.Path.join(this.HomeDir, dbFolder, this.AppName);\n let retB = this._createFolderIfNotExists(this.Path.join(this.HomeDir, dbFolder));\n if (retB) {\n retB = this._createFolderIfNotExists(this.Path.join(this.HomeDir, dbFolder, this.AppName));\n if (!retB)\n retPath = '';\n }\n else {\n retPath = '';\n }\n return retPath;\n }\n /**\n * GetAssetsDatabasesPath\n * get the assets databases folder path\n */\n getAssetsDatabasesPath() {\n let retPath = '';\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'capacitor.config.json'));\n const webDir = JSON.parse(rawdata).webDir;\n const dir = webDir === 'www' ? 'src' : 'public';\n retPath = this.Path.resolve(this.appPath, dir, 'assets', this.pathDB.toLowerCase());\n return retPath;\n }\n /**\n * SetPathSuffix\n * @param db\n */\n setPathSuffix(db) {\n let toDb = db;\n if (db.length > 9) {\n const last9 = db.slice(-9);\n if (last9 != 'SQLite.db') {\n toDb = this.Path.parse(db).name + 'SQLite.db';\n }\n }\n else {\n toDb = toDb + 'SQLite.db';\n }\n return toDb;\n }\n /**\n * GetFileList\n * get the file list for a given folder\n * @param path\n */\n async getFileList(path) {\n const filenames = this.NodeFs.readdirSync(path);\n const dbs = [];\n filenames.forEach((file) => {\n if (this.Path.extname(file) == '.db')\n dbs.push(file);\n });\n return Promise.resolve(dbs);\n }\n /**\n * CopyFromAssetToDatabase\n * @param db\n * @param toDb\n */\n async copyFromAssetToDatabase(db, toDb) {\n const pAsset = this.Path.join(this.getAssetsDatabasesPath(), db);\n const pDb = this.Path.join(this.getDatabasesPath(), toDb);\n await this.copyFilePath(pAsset, pDb);\n return Promise.resolve();\n }\n /**\n * CopyFileName\n * Copy file name\n * @param fileName\n * @param toFileName\n */\n async copyFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.copyFilePath(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CopyFileName: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('CopyFileName: cannot get the ' + 'filePath'));\n }\n }\n /**\n * CopyFilePath\n * Copy file Path\n * @param filePath\n * @param toFilePath\n */\n async copyFilePath(filePath, toFilePath) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n await this.deleteFilePath(toFilePath);\n this.NodeFs.copyFileSync(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CopyFilePath: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('CopyFilePath: filePath does not ' + 'exist'));\n }\n }\n else {\n return Promise.reject(new Error('CopyFilePath: cannot get the ' + 'filePath'));\n }\n }\n async copyFile(fromPath, fromFile, toPath, toFile) {\n const fPath = this.Path.join(fromPath, fromFile);\n const tPath = this.Path.join(toPath, toFile);\n try {\n this.NodeFs.copyFileSync(fPath, tPath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CopyFile: ${err.message}`));\n }\n }\n /**\n * DeleteFileName\n * Delete a file by its name\n * @param fileName\n */\n async deleteFileName(fileName) {\n // get file path\n const filePath = this.getFilePath(fileName);\n if (filePath.length !== 0) {\n try {\n await this.deleteFilePath(filePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('DeleteFileName: delete filePath ' + `failed ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('DeleteFileName: get filePath ' + 'failed'));\n }\n }\n /**\n * DeleteFilePath\n * Delete a file by its path\n * @param filePath\n */\n async deleteFilePath(filePath) {\n if (filePath.length !== 0) {\n // check if path exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n this.NodeFs.unlinkSync(filePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('DeleteFilePath: ' + `${err.message}`));\n }\n }\n else {\n return Promise.resolve();\n }\n }\n else {\n return Promise.reject(new Error('DeleteFilePath: delete filePath' + 'failed'));\n }\n }\n /**\n * RenameFileName\n * @param fileName\n * @param toFileName\n */\n async renameFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.renameFilePath(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`RenameFileName: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('RenameFileName: filePaths do not ' + 'exist'));\n }\n }\n /**\n * RenameFilePath\n * @param filePath\n * @param toFilePath\n */\n async renameFilePath(filePath, toFilePath) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n // delete toFilePath if exists\n try {\n await this.deleteFilePath(toFilePath);\n this.NodeFs.renameSync(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('RenameFilePath: ' + `${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('RenameFilePath: filePath ' + 'does not exist'));\n }\n }\n else {\n return Promise.reject(new Error('RenameFilePath: filePath not found'));\n }\n }\n /**\n * RestoreFileName\n * @param fileName\n * @param prefix\n */\n async restoreFileName(fileName, prefix) {\n const mFileName = `${prefix}-${fileName}`;\n // check if file exists\n const isFilePre = this.isFileExists(mFileName);\n if (isFilePre) {\n const isFile = this.isFileExists(fileName);\n if (isFile) {\n try {\n await this.deleteFileName(fileName);\n await this.renameFileName(mFileName, fileName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('RestoreFileName: ' + `${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error(`RestoreFileName: ${fileName} ` + 'does not exist'));\n }\n }\n else {\n return Promise.reject(new Error(`RestoreFileName: ${mFileName} ` + 'does not exist'));\n }\n }\n /**\n * CreateFolderIfNotExists\n * Create directory\n * @param folder\n */\n _createFolderIfNotExists(folder) {\n let ret;\n try {\n if (!this.NodeFs.existsSync(folder)) {\n this._mkdirSyncRecursive(folder);\n }\n ret = true;\n }\n catch (e) {\n console.log('Error: in getDBPath', e);\n ret = false;\n }\n return ret;\n }\n /**\n * MkdirSyncRecursive\n * Create directories recursively\n * @param directory\n */\n _mkdirSyncRecursive(directory) {\n const path = directory.replace(/\\/$/, '').split('/');\n for (let i = 1; i <= path.length; i++) {\n const segment = path.slice(0, i).join('/');\n segment.length > 0 && !this.NodeFs.existsSync(segment)\n ? this.NodeFs.mkdirSync(segment)\n : null;\n }\n return;\n }\n}\nexports.UtilsFile = UtilsFile;\n//# sourceMappingURL=utilsFile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsUpgrade = void 0;\nconst utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\nconst utilsDrop_1 = require(\"./utilsDrop\");\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsUpgrade {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uFile = new utilsFile_1.UtilsFile();\n this._uDrop = new utilsDrop_1.UtilsDrop();\n this._uJson = new utilsJson_1.UtilsJson();\n this._alterTables = {};\n this._commonColumns = {};\n }\n /**\n * OnUpgrade\n * @param mDB\n * @param vUpgDict\n * @param dbName\n * @param curVersion\n * @param targetVersion\n */\n async onUpgrade(mDB, vUpgDict, dbName, curVersion, targetVersion) {\n const upgrade = vUpgDict[curVersion];\n if (upgrade != null) {\n const keys = Object.keys(upgrade);\n if (!keys.includes('toVersion')) {\n return Promise.reject(new Error('onUpgrade: toVersion not given'));\n }\n const toVersion = upgrade.toVersion;\n if (!keys.includes('statement')) {\n return Promise.reject(new Error('onUpgrade: statement not given'));\n }\n const statement = upgrade.statement;\n let set = [];\n if (keys.includes('set')) {\n set = upgrade.set;\n }\n if (targetVersion < toVersion) {\n let msg = 'Error: version mistmatch ';\n msg += 'Upgrade Statement would upgrade to ';\n msg += `version ${toVersion} , but target version `;\n msg += `is ${targetVersion} for database ${dbName}`;\n msg += ` and version ${curVersion}`;\n return Promise.reject(new Error(`onUpgrade: ${msg}`));\n }\n try {\n // set Foreign Keys Off\n await this._uSQLite.setForeignKeyConstraintsEnabled(mDB, false);\n await this._uFile.copyFileName(dbName, `backup-${dbName}`);\n const initChanges = await this._uSQLite.dbChanges(mDB);\n // Here we assume that all table schemas are given\n // in the upgrade statement\n if (statement.length > 0) {\n await this.executeStatementProcess(mDB, statement);\n // Here we assume that the Set contains only\n // - the data for new tables\n // as INSERT statements\n // - the data for new columns in existing tables\n // as UPDATE statements\n if (set.length > 0) {\n await this.executeSetProcess(mDB, set, toVersion);\n }\n }\n // set Foreign Keys On\n await this._uSQLite.setForeignKeyConstraintsEnabled(mDB, true);\n const changes = (await this._uSQLite.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`onUpgrade: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('onUpgrade: upgrade not found'));\n }\n }\n /**\n * ExecuteStatementProcess\n * @param mDB\n * @param statement\n */\n async executeStatementProcess(mDB, statement) {\n try {\n // -> backup all existing tables \"tableName\" in\n // \"temp_tableName\"\n await this.backupTables(mDB);\n // -> Drop all Indexes\n await this._uDrop.dropElements(mDB, 'index');\n // -> Drop all Triggers\n await this._uDrop.dropElements(mDB, 'trigger');\n // -> Create new tables from upgrade.statement\n const changes = await this._uSQLite.execute(mDB, statement);\n if (changes < 0) {\n return Promise.reject(new Error('ExecuteStatementProcess: ' + 'changes < 0'));\n }\n // -> Create the list of table's common fields\n await this.findCommonColumns(mDB);\n // -> Update the new table's data from old table's data\n if (Object.keys(this._commonColumns).length > 0) {\n await this.updateNewTablesData(mDB);\n }\n // -> Drop _temp_tables\n await this._uDrop.dropTempTables(mDB, this._alterTables);\n // -> Do some cleanup\n this._alterTables = {};\n this._commonColumns = {};\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`ExecuteStatementProcess: ${err.message}`));\n }\n }\n /**\n * ExecuteSetProcess\n * @param mDB\n * @param set\n * @param toVersion\n */\n async executeSetProcess(mDB, set, toVersion) {\n try {\n // -> load new data\n const lastId = await this._uSQLite.executeSet(mDB, set);\n if (lastId < 0) {\n return Promise.reject(new Error('ExecuteSetProcess: lastId ' + '< 0'));\n }\n // -> update database version\n await this._uSQLite.setVersion(mDB, toVersion);\n // -> update syncDate if any\n const retB = await this._uJson.isTableExists(mDB, true, 'sync_table');\n if (retB) {\n const sDate = Math.round(new Date().getTime() / 1000);\n let stmt = 'UPDATE sync_table SET ';\n stmt += `sync_date = ${sDate} WHERE id = 1;`;\n const changes = await this._uSQLite.execute(mDB, stmt);\n if (changes < 0) {\n return Promise.reject(new Error('ExecuteSetProcess: changes ' + '< 0'));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`ExecuteSetProcess: ${err.message}`));\n }\n }\n /**\n * BackupTables\n * @param mDB\n */\n async backupTables(mDB) {\n const msg = 'BackupTables: ';\n try {\n const tables = await this._uDrop.getTablesNames(mDB);\n for (const table of tables) {\n try {\n await this.backupTable(mDB, table);\n }\n catch (err) {\n return Promise.reject(new Error(`${msg}table ${table}: ` + `${err.message}`));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`BackupTables: ${err.message}`));\n }\n }\n /**\n * BackupTable\n * @param mDB\n * @param table\n */\n async backupTable(mDB, table) {\n try {\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n // get the table's column names\n const colNames = await this.getTableColumnNames(mDB, table);\n this._alterTables[`${table}`] = colNames;\n // prefix the table with _temp_\n let stmt = `ALTER TABLE ${table} RENAME `;\n stmt += `TO _temp_${table};`;\n const lastId = await this._uSQLite.prepareRun(mDB, stmt, []);\n if (lastId < 0) {\n let msg = 'BackupTable: lastId < 0';\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err.message}`;\n }\n return Promise.reject(new Error(`${msg}`));\n }\n else {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error('BackupTable: ' + `${err.message}`));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`BackupTable: ${err.message}`));\n }\n }\n /**\n * GetTableColumnNames\n * @param mDB\n * @param tableName\n */\n async getTableColumnNames(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this._uSQLite.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n }\n }\n return Promise.resolve(retNames);\n }\n catch (err) {\n return Promise.reject(new Error('GetTableColumnNames: ' + `${err.message}`));\n }\n }\n /**\n * FindCommonColumns\n * @param mDB\n */\n async findCommonColumns(mDB) {\n try {\n // Get new table list\n const tables = await this._uDrop.getTablesNames(mDB);\n if (tables.length === 0) {\n return Promise.reject(new Error('FindCommonColumns: get ' + \"table's names failed\"));\n }\n for (const table of tables) {\n // get the column's name\n const tableNames = await this.getTableColumnNames(mDB, table);\n // find the common columns\n const keys = Object.keys(this._alterTables);\n if (keys.includes(table)) {\n this._commonColumns[table] = this.arraysIntersection(this._alterTables[table], tableNames);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`FindCommonColumns: ${err.message}`));\n }\n }\n /**\n * ArraysIntersection\n * @param a1\n * @param a2\n */\n arraysIntersection(a1, a2) {\n if (a1 != null && a2 != null) {\n const first = new Set(a1);\n const second = new Set(a2);\n return [...first].filter(item => second.has(item));\n }\n else {\n return [];\n }\n }\n /**\n * UpdateNewTablesData\n * @param mDB\n */\n async updateNewTablesData(mDB) {\n try {\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n const statements = [];\n const keys = Object.keys(this._commonColumns);\n keys.forEach(key => {\n const columns = this._commonColumns[key].join(',');\n let stmt = `INSERT INTO ${key} `;\n stmt += `(${columns}) `;\n stmt += `SELECT ${columns} FROM _temp_${key};`;\n statements.push(stmt);\n });\n const changes = await this._uSQLite.execute(mDB, statements.join('\\n'));\n if (changes < 0) {\n let msg = 'updateNewTablesData: ' + 'changes < 0';\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err.message}`;\n }\n return Promise.reject(new Error(`${msg}`));\n }\n else {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('updateNewTablesData: ' + `${err.message}`));\n }\n }\n }\n catch (err) {\n return Promise.reject(new Error('updateNewTablesData: ' + `${err.message}`));\n }\n }\n}\nexports.UtilsUpgrade = UtilsUpgrade;\n//# sourceMappingURL=utilsUpgrade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst exportToJson_1 = require(\"./ImportExportJson/exportToJson\");\nconst importFromJson_1 = require(\"./ImportExportJson/importFromJson\");\nconst utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\n//import { UtilsEncryption } from './utilsEncryption';\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nconst utilsUpgrade_1 = require(\"./utilsUpgrade\");\nclass Database {\n constructor(dbName, \n // encrypted: boolean,\n // mode: string,\n version, upgDict) {\n this._uFile = new utilsFile_1.UtilsFile();\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uJson = new utilsJson_1.UtilsJson();\n // private _uGlobal: GlobalSQLite = new GlobalSQLite();\n // private _uEncrypt: UtilsEncryption = new UtilsEncryption();\n this._uUpg = new utilsUpgrade_1.UtilsUpgrade();\n this._iFJson = new importFromJson_1.ImportFromJson();\n this._eTJson = new exportToJson_1.ExportToJson();\n this._vUpgDict = {};\n this._dbName = dbName;\n // this._encrypted = encrypted;\n // this._mode = mode;\n this._version = version;\n this._vUpgDict = upgDict;\n this._pathDB = this._uFile.getFilePath(dbName);\n this._isDBOpen = false;\n if (this._pathDB.length === 0)\n throw new Error('Could not generate a path to ' + dbName);\n console.log('DB Path: ' + this._pathDB);\n }\n /**\n * IsDBOpen\n * return the database status\n * @param options: capSQLiteOptions\n * @returns boolean\n * @since 0.0.1\n */\n isDBOpen() {\n return this._isDBOpen;\n }\n /**\n * Open\n * open the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async open() {\n this._isDBOpen = false;\n // let password = '';\n try {\n /*\n if (\n this._encrypted &&\n (this._mode === 'secret' || this._mode === 'encryption')\n ) {\n password = this._uGlobal.secret;\n }\n if (this._mode === 'newsecret') {\n // change the password\n const oPassword: string = this._uGlobal.secret;\n const nPassword: string = this._uGlobal.newsecret;\n await this._uSQLite.changePassword(this._pathDB, oPassword, nPassword);\n password = nPassword;\n }\n \n if (this._mode === 'encryption') {\n await this._uEncrypt.encryptDatabase(this._pathDB, password);\n }\n */\n this._mDB = await this._uSQLite.openOrCreateDatabase(this._pathDB /*,\n password,*/);\n const curVersion = await this._uSQLite.getVersion(this._mDB);\n this._isDBOpen = true;\n if (this._version > curVersion) {\n const keys = Object.keys(this._vUpgDict);\n if (keys.length > 0) {\n try {\n // execute the upgrade flow process\n await this._uUpg.onUpgrade(this._mDB, this._vUpgDict, this._dbName, curVersion, this._version);\n // delete the backup database\n await this._uFile.deleteFileName(`backup-${this._dbName}`);\n }\n catch (err) {\n // restore the database from backup\n try {\n await this._uFile.restoreFileName(this._dbName, 'backup');\n }\n catch (err) {\n return Promise.reject(new Error(`Open: ${err.message}`));\n }\n }\n }\n else {\n try {\n await this._uSQLite.setVersion(this._mDB, this._version);\n }\n catch (err) {\n return Promise.reject(new Error(`SetVersion: ${this._version} ${err.message}`));\n }\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n if (this._isDBOpen)\n this.close();\n return Promise.reject(new Error(`Open: ${err.message}`));\n }\n }\n /**\n * Close\n * close the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async close() {\n if (this._mDB != null && this._isDBOpen) {\n this._mDB.close((err) => {\n if (err) {\n let msg = 'Close: Failed in closing: ';\n msg += `${this._dbName} ${err.message}`;\n return Promise.reject(new Error(msg));\n }\n this._isDBOpen = false;\n return Promise.resolve();\n });\n }\n return Promise.resolve();\n }\n /**\n * GetVersion\n * get the database version\n * @returns Promise<number>\n */\n async getVersion() {\n if (this._mDB != null && this._isDBOpen) {\n try {\n const curVersion = await this._uSQLite.getVersion(this._mDB);\n return Promise.resolve(curVersion);\n }\n catch (err) {\n if (this._isDBOpen)\n this.close();\n return Promise.reject(new Error(`getVersion: ${err.message}`));\n }\n }\n else {\n let msg = `getVersion: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n }\n /**\n * DeleteDB\n * delete a database\n * @param dbName: string\n * @returns Promise<boolean>\n */\n async deleteDB(dbName) {\n // test if file exists\n const isExists = this._uFile.isFileExists(dbName);\n if (isExists && !this._isDBOpen) {\n // open the database\n try {\n await this.open();\n }\n catch (err) {\n return Promise.reject(new Error(`DeleteDB: ${err.message}`));\n }\n }\n // close the database\n try {\n await this.close();\n }\n catch (err) {\n return Promise.reject(new Error('DeleteDB: Close failed'));\n }\n // delete the database\n if (isExists) {\n try {\n await this._uFile.deleteFileName(dbName);\n }\n catch (err) {\n let msg = `DeleteDB: deleteFile ${dbName}`;\n msg += ` failed ${err.message}`;\n return Promise.reject(new Error(msg));\n }\n }\n return Promise.resolve();\n }\n /**\n * IsTableExists\n * @param tableName\n * @returns\n */\n async isTableExists(tableName) {\n if (!this._isDBOpen) {\n let msg = `isTableExists: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n const isOpen = this._isDBOpen;\n try {\n const retB = await this._uJson.isTableExists(this._mDB, isOpen, tableName);\n return Promise.resolve(retB);\n }\n catch (err) {\n const msg = `IsTableExists: ${err.message}`;\n return Promise.reject(new Error(msg));\n }\n }\n /**\n * CreateSyncTable\n * create the synchronization table\n * @returns Promise<number>\n */\n async createSyncTable() {\n if (!this._isDBOpen) {\n let msg = `CreateSyncTable: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n let changes = -1;\n const isOpen = this._isDBOpen;\n // check if the table has already being created\n try {\n const retB = await this._uJson.isTableExists(this._mDB, isOpen, 'sync_table');\n if (!retB) {\n const date = Math.round(new Date().getTime() / 1000);\n let stmts = `\n CREATE TABLE IF NOT EXISTS sync_table (\n id INTEGER PRIMARY KEY NOT NULL,\n sync_date INTEGER\n );`;\n stmts += `INSERT INTO sync_table (sync_date) VALUES (\n \"${date}\");`;\n changes = await this._uSQLite.execute(this._mDB, stmts);\n if (changes < 0) {\n return Promise.reject(new Error(`CreateSyncTable: failed changes < 0`));\n }\n }\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateSyncTable: ${err.message}`));\n }\n }\n /**\n * SetSyncDate\n * store the synchronization date\n * @param syncDate: string\n * @returns Promise<{result: boolean, message: string}>\n */\n async setSyncDate(syncDate) {\n if (!this._isDBOpen) {\n let msg = `SetSyncDate: Database ${this._dbName} `;\n msg += `not opened`;\n return { result: false, message: msg };\n }\n try {\n const sDate = Math.round(new Date(syncDate).getTime() / 1000);\n let stmt = `UPDATE sync_table SET sync_date = `;\n stmt += `${sDate} WHERE id = 1;`;\n console.log(`>>> setSyncDate stmt ${stmt}`);\n const changes = await this._uSQLite.execute(this._mDB, stmt);\n console.log(`>>> setSyncDate changes ${changes}`);\n if (changes < 0) {\n return { result: false, message: 'setSyncDate failed' };\n }\n else {\n return { result: true };\n }\n }\n catch (err) {\n return { result: false, message: `setSyncDate failed: ${err.message}` };\n }\n }\n /**\n * GetSyncDate\n * store the synchronization date\n * @returns Promise<{syncDate: number, message: string}>\n */\n async getSyncDate() {\n if (!this._isDBOpen) {\n let msg = `GetSyncDate: Database ${this._dbName} `;\n msg += `not opened`;\n return { syncDate: 0, message: msg };\n }\n try {\n const syncDate = await this._eTJson.getSyncDate(this._mDB);\n if (syncDate > 0) {\n return { syncDate: syncDate };\n }\n else {\n return { syncDate: 0, message: `setSyncDate failed` };\n }\n }\n catch (err) {\n return { syncDate: 0, message: `setSyncDate failed: ${err.message}` };\n }\n }\n /**\n * ExecuteSQL\n * execute raw sql statements store in a string\n * @param sql: string\n * @returns Promise<number>\n */\n async executeSQL(sql, transaction) {\n if (!this._isDBOpen) {\n let msg = `ExecuteSQL: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n try {\n if (transaction)\n await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);\n const changes = await this._uSQLite.execute(this._mDB, sql);\n if (changes < 0) {\n return Promise.reject(new Error('ExecuteSQL: changes < 0'));\n }\n if (transaction)\n await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);\n return Promise.resolve(changes);\n }\n catch (err) {\n let msg = `ExecuteSQL: ${err.message}`;\n try {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n msg += ` : ${err.message}`;\n }\n return Promise.reject(new Error(`ExecuteSQL: ${msg}`));\n }\n }\n /**\n * SelectSQL\n * execute a sql query with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<any[]>\n */\n async selectSQL(sql, values) {\n if (!this._isDBOpen) {\n let msg = `SelectSQL: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n try {\n const retArr = await this._uSQLite.queryAll(this._mDB, sql, values);\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(new Error(`SelectSQL: ${err.message}`));\n }\n }\n /**\n * runSQL\n * execute a raw sql statement with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async runSQL(statement, values, transaction) {\n if (!this._isDBOpen) {\n let msg = `RunSQL: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n const retRes = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(this._mDB);\n // start a transaction\n if (transaction)\n await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n return Promise.reject(new Error(`ExecSet: ${err.message}`));\n }\n try {\n const lastId = await this._uSQLite.prepareRun(this._mDB, statement, values);\n if (lastId < 0) {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n return Promise.reject(new Error(`RunSQL: return LastId < 0`));\n }\n if (transaction)\n await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);\n retRes.changes = (await this._uSQLite.dbChanges(this._mDB)) - initChanges;\n retRes.lastId = lastId;\n return Promise.resolve(retRes);\n }\n catch (err) {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n return Promise.reject(new Error(`RunSQL: ${err.message}`));\n }\n }\n /**\n * ExecSet\n * execute a set of raw sql statements with/without binding values\n * @param set: any[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async execSet(set, transaction) {\n if (!this._isDBOpen) {\n let msg = `ExecSet: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n const retRes = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(this._mDB);\n // start a transaction\n if (transaction)\n await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n return Promise.reject(new Error(`ExecSet: ${err.message}`));\n }\n try {\n retRes.lastId = await this._uSQLite.executeSet(this._mDB, set);\n if (transaction)\n await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);\n retRes.changes = (await this._uSQLite.dbChanges(this._mDB)) - initChanges;\n return Promise.resolve(retRes);\n }\n catch (err) {\n const msg = err.message;\n try {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n return Promise.reject(new Error(`ExecSet: ${msg}: ` + `${err.message}`));\n }\n }\n }\n async importJson(jsonData) {\n let changes = -1;\n if (this._isDBOpen) {\n try {\n // create the database schema\n changes = await this._iFJson.createDatabaseSchema(this._mDB, jsonData);\n if (changes != -1) {\n // create the tables data\n changes = await this._iFJson.createTablesData(this._mDB, jsonData);\n }\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`ImportJson: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error(`ImportJson: database is closed`));\n }\n }\n async exportJson(mode) {\n const inJson = {};\n inJson.database = this._dbName.slice(0, -9);\n inJson.version = this._version;\n inJson.encrypted = false;\n inJson.mode = mode;\n if (this._isDBOpen) {\n try {\n const retJson = await this._eTJson.createExportObject(this._mDB, inJson);\n const isValid = this._uJson.isJsonSQLite(retJson);\n if (isValid) {\n return Promise.resolve(retJson);\n }\n else {\n return Promise.reject(new Error(`ExportJson: retJson not valid`));\n }\n }\n catch (err) {\n return Promise.reject(new Error(`ExportJson: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error(`ExportJson: database is closed`));\n }\n }\n}\nexports.Database = Database;\n//# sourceMappingURL=Database.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CapacitorSQLite = void 0;\nconst Database_1 = require(\"./electron-utils/Database\");\nconst utilsJson_1 = require(\"./electron-utils/ImportExportJson/utilsJson\");\nconst utilsFile_1 = require(\"./electron-utils/utilsFile\");\nclass CapacitorSQLite {\n constructor() {\n this._versionUpgrades = {};\n this._dbDict = {};\n this._uFile = new utilsFile_1.UtilsFile();\n this._uJson = new utilsJson_1.UtilsJson();\n }\n async isSecretStored() {\n return Promise.reject('Method not implemented.');\n }\n async setEncryptionSecret(options) {\n console.log(`${JSON.stringify(options)}`);\n return Promise.reject('Method not implemented.');\n }\n async changeEncryptionSecret(options) {\n console.log(`${JSON.stringify(options)}`);\n return Promise.reject('Method not implemented.');\n }\n async createConnection(options) {\n const keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n const version = options.version ? options.version : 1;\n /* const encrypted = false;\n const inMode = \"no-encryption\";\n \n const encrypted: boolean =\n options.encrypted && this._osType === 'Darwin'\n ? options.encrypted\n : false;\n const inMode: string =\n options.mode && this._osType === 'Darwin'\n ? options.mode\n : 'no-encryption';\n */\n let upgDict = {};\n const vUpgKeys = Object.keys(this._versionUpgrades);\n if (vUpgKeys.length !== 0 && vUpgKeys.includes(dbName)) {\n upgDict = this._versionUpgrades[dbName];\n }\n try {\n const mDb = new Database_1.Database(dbName + 'SQLite.db', \n /* encrypted,\n inMode,\n */\n version, upgDict);\n this._dbDict[dbName] = mDb;\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async closeConnection(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('CloseConnection command failed: No ' +\n 'available connection for ' +\n dbName);\n }\n const mDB = this._dbDict[dbName];\n if (mDB.isDBOpen()) {\n // close the database\n try {\n await mDB.close();\n }\n catch (err) {\n return Promise.reject('CloseConnection command failed: ' +\n 'close ' +\n dbName +\n ' failed ' +\n err.message);\n }\n }\n // remove the connection from dictionary\n delete this._dbDict[dbName];\n return Promise.resolve();\n }\n async echo(options) {\n const keys = Object.keys(options);\n if (!keys.includes('value')) {\n return Promise.reject('Must provide a value to echo');\n }\n const ret = {};\n ret.value = options.value;\n return Promise.resolve(ret);\n }\n async open(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Open: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.open();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Open: ${err}`);\n }\n }\n async close(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Close: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.close();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Close: ${err}`);\n }\n }\n async getVersion(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Open: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const version = await mDB.getVersion();\n const ret = {};\n ret.version = version;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(`Open: ${err}`);\n }\n }\n async execute(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('statements') || options.statements.length === 0) {\n return Promise.reject('Must provide raw SQL statements');\n }\n const dbName = options.database;\n const statements = options.statements;\n const transaction = options.transaction\n ? options.transaction\n : true;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Execute: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.executeSQL(statements, transaction);\n if (ret < 0) {\n return Promise.reject('Execute failed changes < 0');\n }\n else {\n return Promise.resolve({ changes: { changes: ret } });\n }\n }\n catch (err) {\n return Promise.reject(`Execute failed: ${err}`);\n }\n }\n async executeSet(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('set') || options.set.length === 0) {\n return Promise.reject('Must provide a non-empty set of SQL statements');\n }\n const dbName = options.database;\n const setOfStatements = options.set;\n const transaction = options.transaction\n ? options.transaction\n : true;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`ExecuteSet: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n for (const sStmt of setOfStatements) {\n if (!('statement' in sStmt) || !('values' in sStmt)) {\n return Promise.reject('ExecuteSet: Must provide a set as ' + 'Array of {statement,values}');\n }\n }\n try {\n const ret = await mDB.execSet(setOfStatements, transaction);\n if (ret < 0) {\n return Promise.reject(`ExecuteSet failed changes <0`);\n }\n else {\n return Promise.resolve({ changes: ret });\n }\n }\n catch (err) {\n return Promise.reject(`ExecuteSet failed: ${err}`);\n }\n }\n async run(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('statement') || options.statement.length === 0) {\n return Promise.reject('Must provide a query statement');\n }\n if (!keys.includes('values')) {\n return Promise.reject('Must provide an Array of values');\n }\n const dbName = options.database;\n const statement = options.statement;\n const values = options.values.length > 0 ? options.values : [];\n const transaction = options.transaction\n ? options.transaction\n : true;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Run: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.runSQL(statement, values, transaction);\n return Promise.resolve({ changes: ret });\n }\n catch (err) {\n return Promise.reject(`RUN failed: ${err} `);\n }\n }\n async query(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('statement') || options.statement.length === 0) {\n return Promise.reject('Must provide a query statement');\n }\n if (!keys.includes('values')) {\n return Promise.reject('Must provide an Array of any');\n }\n const dbName = options.database;\n const statement = options.statement;\n const values = options.values.length > 0 ? options.values : [];\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Query: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n let ret = [];\n try {\n ret = await mDB.selectSQL(statement, values);\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(`Query failed: ${err}`);\n }\n }\n async isDBExists(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('IsDBExists command failed: No available ' + 'connection for ' + dbName);\n }\n const isExists = this._uFile.isFileExists(dbName + 'SQLite.db');\n return Promise.resolve({\n result: isExists,\n });\n }\n async isDBOpen(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('isDBOpen command failed: No available ' + 'connection for ' + dbName);\n }\n const mDB = this._dbDict[dbName];\n const isOpen = await mDB.isDBOpen();\n return Promise.resolve({ result: isOpen });\n }\n async isDatabase(options) {\n const keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n const isExists = this._uFile.isFileExists(dbName + 'SQLite.db');\n return Promise.resolve({\n result: isExists,\n });\n }\n async isTableExists(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n if (!keys.includes('table')) {\n return Promise.reject('Must provide a table name');\n }\n const tableName = options.table;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('isTableExists command failed: No available ' +\n 'connection for ' +\n dbName);\n }\n const mDB = this._dbDict[dbName];\n try {\n const res = await mDB.isTableExists(tableName);\n return Promise.resolve({ result: res.result });\n }\n catch (err) {\n return Promise.reject(`isTableExists: ${err.message}`);\n }\n }\n async deleteDatabase(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('deleteDatabase: No available connection for ' + `${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.deleteDB(dbName + 'SQLite.db');\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Delete: ${err.message}`);\n }\n }\n async isJsonValid(options) {\n const keys = Object.keys(options);\n if (!keys.includes('jsonstring')) {\n return Promise.reject('Must provide a json object');\n }\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = this._uJson.isJsonSQLite(jsonObj);\n if (!isValid) {\n return Promise.reject('Stringify Json Object not Valid');\n }\n else {\n return Promise.resolve({ result: true });\n }\n }\n async importFromJson(options) {\n var _a;\n const keys = Object.keys(options);\n if (!keys.includes('jsonstring')) {\n return Promise.reject('Must provide a json object');\n }\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = this._uJson.isJsonSQLite(jsonObj);\n if (!isValid) {\n return Promise.reject('Must provide a valid JsonSQLite Object');\n }\n const vJsonObj = jsonObj;\n const dbName = `${vJsonObj.database}SQLite.db`;\n const dbVersion = (_a = vJsonObj.version) !== null && _a !== void 0 ? _a : 1;\n // const encrypted: boolean = vJsonObj.encrypted ?? false;\n // const mode: string = encrypted ? 'secret' : 'no-encryption';\n // Create the database\n const mDb = new Database_1.Database(dbName, \n /*encrypted, mode, */ dbVersion, {});\n try {\n // Open the database\n await mDb.open();\n // Import the JsonSQLite Object\n const changes = await mDb.importJson(vJsonObj);\n // Close the database\n await mDb.close();\n return Promise.resolve({ changes: { changes: changes } });\n }\n catch (err) {\n return Promise.reject(`ImportFromJson: ${err.message}`);\n }\n }\n async exportToJson(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('jsonexportmode')) {\n return Promise.reject('Must provide a json export mode');\n }\n const dbName = options.database;\n const exportMode = options.jsonexportmode;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('exportToJson: No available connection for ' + `${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.exportJson(exportMode);\n const keys = Object.keys(ret);\n if (keys.includes('message')) {\n return Promise.reject(`exportToJson: ${ret.message}`);\n }\n else {\n return Promise.resolve({ export: ret });\n }\n }\n catch (err) {\n return Promise.reject(`exportToJson: ${err.message}`);\n }\n }\n async createSyncTable(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('CreateSyncTable: No available connection for ' + `${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.createSyncTable();\n return Promise.resolve({ changes: { changes: ret } });\n }\n catch (err) {\n return Promise.reject(`createSyncTable: ${err.message}`);\n }\n }\n async setSyncDate(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('syncdate')) {\n return Promise.reject('Must provide a synchronization date');\n }\n const dbName = options.database;\n const syncDate = options.syncdate;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`SetSyncDate: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.setSyncDate(syncDate);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`SetSyncDate: ${err.message}`);\n }\n }\n async getSyncDate(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`GetSyncDate: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.getSyncDate();\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(`GetSyncDate: ${err.message}`);\n }\n }\n async addUpgradeStatement(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('upgrade')) {\n return Promise.reject('Must provide an upgrade statement');\n }\n const dbName = options.database;\n const upgrade = options.upgrade[0];\n keys = Object.keys(upgrade);\n if (!keys.includes('fromVersion') ||\n !keys.includes('toVersion') ||\n !keys.includes('statement')) {\n return Promise.reject('Must provide an upgrade capSQLiteVersionUpgrade Object');\n }\n if (typeof upgrade.fromVersion != 'number') {\n return Promise.reject('ugrade.fromVersion must be a number');\n }\n const upgVDict = {};\n upgVDict[upgrade.fromVersion] = upgrade;\n this._versionUpgrades[dbName] = upgVDict;\n return Promise.resolve();\n }\n async copyFromAssets() {\n // check if the assets/database folder exists\n const assetsDbPath = this._uFile.getAssetsDatabasesPath();\n const res = this._uFile.isPathExists(assetsDbPath);\n if (res) {\n // get the database files\n const dbList = await this._uFile.getFileList(assetsDbPath);\n // loop through the database files\n const toDbList = [];\n dbList.forEach(async (db) => {\n console.log(`>>> ${db}`);\n // for each check if the suffix SQLite.db is there or add it\n const toDb = this._uFile.setPathSuffix(db);\n toDbList.push(toDb);\n // for each copy the file to the Application database folder\n await this._uFile.copyFromAssetToDatabase(db, toDb);\n });\n return Promise.resolve();\n }\n else {\n return Promise.reject('CopyFromAssets: assets/databases folder does not exist');\n }\n }\n async getDatabaseList() {\n // get the database folder\n const pathDatabase = this._uFile.getDatabasesPath();\n // get the list of databases\n const files = await this._uFile.getFileList(pathDatabase);\n if (files.length > 0) {\n return Promise.resolve({ values: files });\n }\n else {\n return Promise.reject(`isTableExists: No databases found`);\n }\n }\n async addSQLiteSuffix(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async deleteOldDatabases(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async checkConnectionsConsistency(options) {\n const keys = Object.keys(options);\n if (!keys.includes('dbNames')) {\n return Promise.reject(`Must provide a list of connection's name`);\n }\n const dbNames = options.dbNames;\n const ret = {};\n ret.result = false;\n try {\n let inConnectionsSet = new Set(Object.keys(this._dbDict));\n const outConnectionSet = new Set(dbNames);\n if (outConnectionSet.size === 0) {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n if (inConnectionsSet.size < outConnectionSet.size) {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n if (inConnectionsSet.size > outConnectionSet.size) {\n for (const key of inConnectionsSet) {\n if (!Array.from(outConnectionSet.keys()).includes(key)) {\n const opt = {};\n opt.database = key;\n await this.closeConnection(opt);\n }\n }\n }\n inConnectionsSet = new Set(Object.keys(this._dbDict));\n if (inConnectionsSet.size === outConnectionSet.size) {\n const symDiffSet = await this.symmetricDifference(inConnectionsSet, outConnectionSet);\n if (symDiffSet.size === 0) {\n ret.result = true;\n return Promise.resolve(ret);\n }\n else {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n }\n else {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n }\n catch (err) {\n return Promise.reject(`CheckConnectionsConsistency: ${err.message}`);\n }\n }\n async resetDbDict(keys) {\n try {\n for (const key of keys) {\n const opt = {};\n opt.database = key;\n await this.closeConnection(opt);\n }\n }\n catch (err) {\n return Promise.reject(`ResetDbDict: ${err.message}`);\n }\n }\n async symmetricDifference(setA, setB) {\n const difference = new Set(setA);\n for (const elem of setB) {\n if (difference.has(elem)) {\n difference.delete(elem);\n }\n else {\n difference.add(elem);\n }\n }\n return Promise.resolve(difference);\n }\n}\nexports.CapacitorSQLite = CapacitorSQLite;\n//# sourceMappingURL=index.js.map"],"names":["require$$0","utilsSQLite_1","utilsJson_1","require$$1","utilsDrop_1","require$$2","utilsFile_1","require$$3","Database_1","require$$4","require$$5","CapacitorSQLite_1"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../build/electron/src/electron-utils/utilsSQLite.js","../build/electron/src/electron-utils/ImportExportJson/utilsJson.js","../build/electron/src/electron-utils/ImportExportJson/exportToJson.js","../build/electron/src/electron-utils/utilsDrop.js","../build/electron/src/electron-utils/ImportExportJson/importFromJson.js","../build/electron/src/electron-utils/utilsFile.js","../build/electron/src/electron-utils/utilsUpgrade.js","../build/electron/src/electron-utils/Database.js","../build/electron/src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsSQLite = void 0;\nclass UtilsSQLite {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n // this.JSQlite = require('@journeyapps/sqlcipher').verbose();\n this.SQLite3 = require('sqlite3');\n }\n /**\n * OpenOrCreateDatabase\n * @param pathDB\n * @param password\n */\n async openOrCreateDatabase(pathDB /*,\n password: string,*/) {\n const msg = 'OpenOrCreateDatabase: ';\n // open sqlite3 database\n /* const mDB: any = new this.JSQlite.Database(pathDB, {\n verbose: console.log,\n });\n */\n const mDB = new this.SQLite3.Database(pathDB, {\n verbose: console.log,\n });\n if (mDB != null) {\n try {\n await this.dbChanges(mDB);\n }\n catch (err) {\n return Promise.reject(new Error(msg + `dbChanges ${err.message}`));\n }\n try {\n /* // set the password\n if (password.length > 0) {\n await this.setCipherPragma(mDB, password);\n }\n */\n // set Foreign Keys On\n await this.setForeignKeyConstraintsEnabled(mDB, true);\n // Check Version\n const curVersion = await this.getVersion(mDB);\n if (curVersion === 0) {\n await this.setVersion(mDB, 1);\n }\n }\n catch (err) {\n return Promise.reject(new Error(msg + `${err.message}`));\n }\n return Promise.resolve(mDB);\n }\n else {\n return Promise.reject(new Error(msg + 'open database failed'));\n }\n }\n /**\n * SetCipherPragma\n * @param mDB\n * @param password\n */\n /*\n public async setCipherPragma(mDB: any, password: string): Promise<void> {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`, (err: any) => {\n if (err) {\n reject(new Error('SetForeignKey: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n */\n /**\n * SetForeignKeyConstraintsEnabled\n * @param mDB\n * @param toggle\n */\n async setForeignKeyConstraintsEnabled(mDB, toggle) {\n return new Promise((resolve, reject) => {\n let key = 'OFF';\n if (toggle) {\n key = 'ON';\n }\n mDB.run(`PRAGMA foreign_keys = '${key}'`, (err) => {\n if (err) {\n reject(new Error(`SetForeignKey: ${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * GetVersion\n * @param mDB\n */\n async getVersion(mDB) {\n return new Promise((resolve, reject) => {\n let version = 0;\n const SELECT_VERSION = 'PRAGMA user_version;';\n mDB.get(SELECT_VERSION, [], (err, row) => {\n // process the row here\n if (err) {\n reject(new Error('getVersion failed: ' + `${err.message}`));\n }\n else {\n if (row == null) {\n version = 0;\n }\n else {\n const key = Object.keys(row)[0];\n version = row[key];\n }\n resolve(version);\n }\n });\n });\n }\n /**\n * SetVersion\n * @param mDB\n * @param version\n */\n async setVersion(mDB, version) {\n return new Promise((resolve, reject) => {\n mDB.run(`PRAGMA user_version = ${version}`, (err) => {\n if (err) {\n reject(new Error('setVersion failed: ' + `${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * ChangePassword\n * @param pathDB\n * @param password\n * @param newpassword\n */\n /*\n \n public async changePassword(\n pathDB: string,\n password: string,\n newpassword: string,\n ): Promise<void> {\n let mDB: any;\n try {\n mDB = await this.openOrCreateDatabase(pathDB, password);\n await this.pragmaReKey(mDB, password, newpassword);\n } catch (err) {\n return Promise.reject(err);\n } finally {\n mDB.close();\n }\n }\n */\n /**\n * PragmaReKey\n * @param mDB\n * @param password\n * @param newpassword\n */\n /*\n private async pragmaReKey(\n mDB: any,\n password: string,\n newpassword: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`);\n mDB.run(`PRAGMA rekey = '${newpassword}'`, (err: any) => {\n if (err) {\n reject(new Error('ChangePassword: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n */\n /**\n * BeginTransaction\n * @param db\n * @param isOpen\n */\n async beginTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'BeginTransaction: ';\n if (!isOpen) {\n return Promise.reject(new Error(`${msg}database not opened`));\n }\n const sql = 'BEGIN TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(new Error(`${msg}${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * RollbackTransaction\n * @param db\n * @param isOpen\n */\n async rollbackTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'RollbackTransaction: ';\n if (!isOpen) {\n reject(new Error(`${msg}database not opened`));\n }\n const sql = 'ROLLBACK TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(new Error(`${msg}${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * CommitTransaction\n * @param db\n * @param isOpen\n */\n async commitTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'CommitTransaction: ';\n if (!isOpen) {\n reject(new Error(`${msg}database not opened`));\n }\n const sql = 'COMMIT TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(new Error(`${msg}${err.message}`));\n }\n resolve();\n });\n });\n }\n /**\n * DbChanges\n * return total number of changes\n * @param db\n */\n async dbChanges(db) {\n return new Promise((resolve, reject) => {\n const SELECT_CHANGE = 'SELECT total_changes()';\n let changes = 0;\n db.get(SELECT_CHANGE, [], (err, row) => {\n // process the row here\n if (err) {\n reject(new Error(`DbChanges failed: ${err.message}`));\n }\n else {\n if (row == null) {\n changes = 0;\n }\n else {\n const key = Object.keys(row)[0];\n changes = row[key];\n }\n resolve(changes);\n }\n });\n });\n }\n /**\n * GetLastId\n * @param db\n */\n getLastId(db) {\n return new Promise((resolve, reject) => {\n const SELECT_LAST_ID = 'SELECT last_insert_rowid()';\n let lastId = -1;\n db.get(SELECT_LAST_ID, [], (err, row) => {\n // process the row here\n if (err) {\n let msg = 'GetLastId failed: ';\n msg += `${err.message}`;\n reject(new Error(msg));\n }\n else {\n if (row == null)\n resolve(lastId);\n const key = Object.keys(row)[0];\n lastId = row[key];\n resolve(lastId);\n }\n });\n });\n }\n /**\n * Execute\n * @param mDB\n * @param sql\n */\n async execute(mDB, sql) {\n let changes = -1;\n let initChanges = -1;\n try {\n initChanges = await this.dbChanges(mDB);\n await this.execDB(mDB, sql);\n changes = (await this.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`Execute: ${err.message}`));\n }\n }\n /**\n * ExecDB\n * @param mDB\n * @param sql\n */\n async execDB(mDB, sql) {\n return new Promise((resolve, reject) => {\n mDB.exec(sql, async (err) => {\n if (err) {\n const msg = err.message;\n reject(new Error(`Execute: ${msg}: `));\n }\n resolve();\n });\n });\n }\n /**\n * ExecuteSet\n * @param db\n * @param set\n */\n async executeSet(db, set) {\n let lastId = -1;\n for (let i = 0; i < set.length; i++) {\n const statement = 'statement' in set[i] ? set[i].statement : null;\n const values = 'values' in set[i] && set[i].values.length > 0 ? set[i].values : [];\n if (statement == null) {\n let msg = 'ExecuteSet: Error Nostatement';\n msg += ` for index ${i}`;\n return Promise.reject(new Error(msg));\n }\n try {\n if (Array.isArray(values[0])) {\n for (const val of values) {\n lastId = await this.prepareRun(db, statement, val);\n }\n }\n else {\n lastId = await this.prepareRun(db, statement, values);\n }\n }\n catch (err) {\n return Promise.reject(new Error(`ExecuteSet: ${err.message}`));\n }\n }\n return Promise.resolve(lastId);\n }\n /**\n * PrepareRun\n * @param db\n * @param statement\n * @param values\n */\n prepareRun(db, statement, values) {\n return new Promise((resolve, reject) => {\n let lastId = -1;\n db.run(statement, values, async (err) => {\n if (err) {\n let msg = `PrepareRun: run `;\n msg += `${err.message}`;\n reject(new Error(msg));\n }\n else {\n try {\n lastId = await this.getLastId(db);\n resolve(lastId);\n }\n catch (err) {\n let msg = `PrepareRun: lastId `;\n msg += `${err.message}`;\n reject(new Error(msg));\n }\n }\n });\n });\n }\n /**\n * QueryAll\n * @param mDB\n * @param sql\n * @param values\n */\n queryAll(mDB, sql, values) {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.all(sql, values, (err, rows) => {\n if (err) {\n reject(new Error(`QueryAll: ${err.message}`));\n }\n else {\n if (rows == null) {\n rows = [];\n }\n resolve(rows);\n }\n });\n });\n });\n }\n}\nexports.UtilsSQLite = UtilsSQLite;\n//# sourceMappingURL=utilsSQLite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nclass UtilsJson {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * IsTableExists\n * @param db\n * @param isOpen\n * @param tableName\n */\n async isTableExists(db, isOpen, tableName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isTableExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='table' AND name='${tableName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isTableExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * IsViewExists\n * @param db\n * @param isOpen\n * @param viewName\n */\n async isViewExists(db, isOpen, viewName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isViewExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='view' AND name='${viewName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isViewExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * CreateSchema\n * @param mDB\n * @param jsonData\n */\n async createSchema(mDB, jsonData) {\n // create the database schema\n let changes = 0;\n try {\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateDatabaseSchema: ${err.message}`));\n }\n const stmts = await this.createSchemaStatement(jsonData);\n if (stmts.length > 0) {\n const schemaStmt = stmts.join('\\n');\n try {\n changes = await this._uSQLite.execute(mDB, schemaStmt);\n if (changes < 0) {\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error('CreateSchema: changes < 0 ' + `${err.message}`));\n }\n }\n }\n catch (err) {\n const msg = err.message;\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`CreateSchema: ${msg}`));\n }\n catch (err) {\n return Promise.reject(new Error('CreateSchema: changes < 0 ' + `${err.message}: ${msg}`));\n }\n }\n }\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('CreateSchema: commit ' + `${err.message}`));\n }\n }\n /**\n * CreateSchemaStatement\n * @param jsonData\n */\n async createSchemaStatement(jsonData) {\n const statements = [];\n // Prepare the statement to execute\n try {\n for (const jTable of jsonData.tables) {\n if (jTable.schema != null && jTable.schema.length >= 1) {\n // create table\n statements.push('CREATE TABLE IF NOT EXISTS ' + `${jTable.name} (`);\n for (let j = 0; j < jTable.schema.length; j++) {\n if (j === jTable.schema.length - 1) {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value}`);\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value}`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value}`);\n }\n }\n else {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value},`);\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value},`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value},`);\n }\n }\n }\n statements.push(');');\n // create trigger last_modified associated with the table\n let trig = 'CREATE TRIGGER IF NOT EXISTS ';\n trig += `${jTable.name}`;\n trig += `_trigger_last_modified `;\n trig += `AFTER UPDATE ON ${jTable.name} `;\n trig += 'FOR EACH ROW WHEN NEW.last_modified <= ';\n trig += 'OLD.last_modified BEGIN UPDATE ';\n trig += `${jTable.name} `;\n trig += `SET last_modified = `;\n trig += \"(strftime('%s','now')) WHERE id=OLD.id; END;\";\n statements.push(trig);\n }\n if (jTable.indexes != null && jTable.indexes.length >= 1) {\n for (const jIndex of jTable.indexes) {\n const tableName = jTable.name;\n let stmt = `CREATE ${Object.keys(jIndex).includes('mode') ? jIndex.mode + ' ' : ''} INDEX IF NOT EXISTS `;\n stmt += `${jIndex.name} ON ${tableName} (${jIndex.value});`;\n statements.push(stmt);\n }\n }\n if (jTable.triggers != null && jTable.triggers.length >= 1) {\n for (const jTrg of jTable.triggers) {\n const tableName = jTable.name;\n if (jTrg.timeevent.toUpperCase().endsWith(' ON')) {\n jTrg.timeevent = jTrg.timeevent.substring(0, jTrg.timeevent.length - 3);\n }\n let stmt = `CREATE TRIGGER IF NOT EXISTS `;\n stmt += `${jTrg.name} ${jTrg.timeevent} ON ${tableName} `;\n if (jTrg.condition)\n stmt += `${jTrg.condition} `;\n stmt += `${jTrg.logic};`;\n statements.push(stmt);\n }\n }\n }\n return Promise.resolve(statements);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * CreateDataTable\n * @param mDB\n * @param table\n * @param mode\n */\n async createDataTable(mDB, table, mode) {\n let lastId = -1;\n try {\n // Check if the table exists\n const tableExists = await this.isTableExists(mDB, true, table.name);\n if (!tableExists) {\n return Promise.reject(new Error('CreateDataTable: Table ' + `${table.name} does not exist`));\n }\n // Get the column names and types\n const tableNamesTypes = await this.getTableColumnNamesTypes(mDB, table.name);\n const tableColumnTypes = tableNamesTypes.types;\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnTypes.length === 0) {\n return Promise.reject(new Error('CreateDataTable: Table ' + `${table.name} info does not exist`));\n }\n // Loop on Table Values\n for (let j = 0; j < table.values.length; j++) {\n // Check the row number of columns\n if (table.values[j].length != tableColumnTypes.length) {\n return Promise.reject(new Error(`CreateDataTable: Table ${table.name} ` +\n `values row ${j} not correct length`));\n }\n // Check the column's type before proceeding\n // remove type checking for allowing RDBMS Types\n /* const isColumnTypes: boolean = await this.checkColumnTypes(\n tableColumnTypes,\n table.values[j],\n );\n if (!isColumnTypes) {\n return Promise.reject(\n new Error(\n `CreateDataTable: Table ${table.name} ` +\n `values row ${j} not correct types`,\n ),\n );\n }\n */\n const retisIdExists = await this.isIdExists(mDB, table.name, tableColumnNames[0], table.values[j][0]);\n let stmt;\n if (mode === 'full' || (mode === 'partial' && !retisIdExists)) {\n // Insert\n const nameString = tableColumnNames.join();\n const questionMarkString = await this.createQuestionMarkString(tableColumnNames.length);\n stmt = `INSERT INTO ${table.name} (${nameString}) VALUES (`;\n stmt += `${questionMarkString});`;\n }\n else {\n // Update\n const setString = await this.setNameForUpdate(tableColumnNames);\n if (setString.length === 0) {\n return Promise.reject(new Error(`CreateDataTable: Table ${table.name} ` +\n `values row ${j} not set to String`));\n }\n stmt = `UPDATE ${table.name} SET ${setString} WHERE `;\n if (typeof table.values[j][0] == 'string') {\n stmt += `${tableColumnNames[0]} = '${table.values[j][0]}';`;\n }\n else {\n stmt += `${tableColumnNames[0]} = ${table.values[j][0]};`;\n }\n }\n lastId = await this._uSQLite.prepareRun(mDB, stmt, table.values[j]);\n if (lastId < 0) {\n return Promise.reject(new Error('CreateDataTable: lastId < 0'));\n }\n }\n return Promise.resolve(lastId);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateDataTable: ${err.message}`));\n }\n }\n /**\n * GetTableColumnNamesTypes\n * @param mDB\n * @param tableName\n */\n async getTableColumnNamesTypes(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const retTypes = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this._uSQLite.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n retTypes.push(query.type);\n }\n }\n return Promise.resolve({ names: retNames, types: retTypes });\n }\n catch (err) {\n return Promise.reject(new Error('GetTableColumnNamesTypes: ' + `${err.message}`));\n }\n }\n /**\n * CheckColumnTypes\n * @param tableTypes\n * @param rowValues\n */\n /*\n private async checkColumnTypes(\n tableTypes: any[],\n rowValues: any[],\n ): Promise<boolean> {\n const isType = true;\n for (let i = 0; i < rowValues.length; i++) {\n if (rowValues[i].toString().toUpperCase() != 'NULL') {\n try {\n await this.isType(tableTypes[i], rowValues[i]);\n } catch (err) {\n return Promise.reject(new Error('checkColumnTypes: Type not found'));\n }\n }\n }\n return Promise.resolve(isType);\n }\n */\n /**\n * IsType\n * @param type\n * @param value\n */\n /*\n private async isType(type: string, value: any): Promise<void> {\n let ret = false;\n if (type === 'NULL' && typeof value === 'object') ret = true;\n if (type === 'TEXT' && typeof value === 'string') ret = true;\n if (type === 'INTEGER' && typeof value === 'number') ret = true;\n if (type === 'REAL' && typeof value === 'number') ret = true;\n if (type === 'BLOB' && typeof value === 'string') ret = true;\n if (ret) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('IsType: not a SQL Type'));\n }\n }\n */\n /**\n * IsIdExists\n * @param db\n * @param dbName\n * @param firstColumnName\n * @param key\n */\n async isIdExists(db, dbName, firstColumnName, key) {\n let ret = false;\n let query = `SELECT ${firstColumnName} FROM ` +\n `${dbName} WHERE ${firstColumnName} = `;\n if (typeof key === 'number')\n query += `${key};`;\n if (typeof key === 'string')\n query += `'${key}';`;\n try {\n const resQuery = await this._uSQLite.queryAll(db, query, []);\n if (resQuery.length === 1)\n ret = true;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(new Error(`IsIdExists: ${err.message}`));\n }\n }\n /**\n * CreateQuestionMarkString\n * @param length\n */\n createQuestionMarkString(length) {\n return new Promise((resolve, reject) => {\n let retString = '';\n for (let i = 0; i < length; i++) {\n retString += '?,';\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n resolve(retString);\n }\n else {\n reject(new Error('CreateQuestionMarkString: length = 0'));\n }\n });\n }\n /**\n * SetNameForUpdate\n * @param names\n */\n async setNameForUpdate(names) {\n let retString = '';\n for (const name of names) {\n retString += `${name} = ? ,`;\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n return Promise.resolve(retString);\n }\n else {\n return Promise.reject(new Error('SetNameForUpdate: length = 0'));\n }\n }\n /**\n * IsJsonSQLite\n * @param obj\n */\n isJsonSQLite(obj) {\n const keyFirstLevel = [\n 'database',\n 'version',\n 'encrypted',\n 'mode',\n 'tables',\n 'views',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyFirstLevel.indexOf(key) === -1)\n return false;\n if (key === 'database' && typeof obj[key] != 'string')\n return false;\n if (key === 'version' && typeof obj[key] != 'number')\n return false;\n if (key === 'encrypted' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'mode' && typeof obj[key] != 'string')\n return false;\n if (key === 'tables' && typeof obj[key] != 'object')\n return false;\n if (key === 'tables') {\n for (const oKey of obj[key]) {\n const retTable = this.isTable(oKey);\n if (!retTable)\n return false;\n }\n }\n if (key === 'views' && typeof obj[key] != 'object')\n return false;\n if (key === 'views') {\n for (const oKey of obj[key]) {\n const retView = this.isView(oKey);\n if (!retView)\n return false;\n }\n }\n }\n return true;\n }\n /**\n * IsTable\n * @param obj\n */\n isTable(obj) {\n const keyTableLevel = [\n 'name',\n 'schema',\n 'indexes',\n 'triggers',\n 'values',\n ];\n let nbColumn = 0;\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'schema' && typeof obj[key] != 'object')\n return false;\n if (key === 'indexes' && typeof obj[key] != 'object')\n return false;\n if (key === 'triggers' && typeof obj[key] != 'object')\n return false;\n if (key === 'values' && typeof obj[key] != 'object')\n return false;\n if (key === 'schema') {\n obj['schema'].forEach((element) => {\n if (element.column) {\n nbColumn++;\n }\n });\n for (let i = 0; i < nbColumn; i++) {\n const retSchema = this.isSchema(obj[key][i]);\n if (!retSchema)\n return false;\n }\n }\n if (key === 'indexes') {\n for (const oKey of obj[key]) {\n const retIndexes = this.isIndexes(oKey);\n if (!retIndexes)\n return false;\n }\n }\n if (key === 'triggers') {\n for (const oKey of obj[key]) {\n const retTriggers = this.isTriggers(oKey);\n if (!retTriggers)\n return false;\n }\n }\n if (key === 'values') {\n if (nbColumn > 0) {\n for (const oKey of obj[key]) {\n if (typeof oKey != 'object' || oKey.length != nbColumn)\n return false;\n }\n }\n }\n }\n return true;\n }\n /**\n * IsSchema\n * @param obj\n */\n isSchema(obj) {\n const keySchemaLevel = [\n 'column',\n 'value',\n 'foreignkey',\n 'constraint',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keySchemaLevel.indexOf(key) === -1)\n return false;\n if (key === 'column' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'foreignkey' && typeof obj[key] != 'string')\n return false;\n if (key === 'constraint' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * isIndexes\n * @param obj\n */\n isIndexes(obj) {\n const keyIndexesLevel = ['name', 'value', 'mode'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyIndexesLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'mode' &&\n (typeof obj[key] != 'string' || obj[key] != 'UNIQUE'))\n return false;\n }\n return true;\n }\n /**\n * isTriggers\n * @param obj\n */\n isTriggers(obj) {\n const keyTriggersLevel = [\n 'name',\n 'timeevent',\n 'condition',\n 'logic',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTriggersLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'timeevent' && typeof obj[key] != 'string')\n return false;\n if (key === 'condition' && typeof obj[key] != 'string')\n return false;\n if (key === 'logic' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * IsViews\n * @param obj\n */\n isView(obj) {\n const keyViewLevel = ['name', 'value'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyViewLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * checkSchemaValidity\n * @param schema\n */\n async checkSchemaValidity(schema) {\n for (let i = 0; i < schema.length; i++) {\n const sch = {};\n const keys = Object.keys(schema[i]);\n if (keys.includes('column')) {\n sch.column = schema[i].column;\n }\n if (keys.includes('value')) {\n sch.value = schema[i].value;\n }\n if (keys.includes('foreignkey')) {\n sch.foreignkey = schema[i].foreignkey;\n }\n if (keys.includes('constraint')) {\n sch.constraint = schema[i].constraint;\n }\n const isValid = this.isSchema(sch);\n if (!isValid) {\n return Promise.reject(new Error(`CheckSchemaValidity: schema[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n /**\n * checkIndexesSchemaValidity\n * @param indexes\n */\n async checkIndexesValidity(indexes) {\n for (let i = 0; i < indexes.length; i++) {\n const index = {};\n const keys = Object.keys(indexes[i]);\n if (keys.includes('value')) {\n index.value = indexes[i].value;\n }\n if (keys.includes('name')) {\n index.name = indexes[i].name;\n }\n if (keys.includes('mode')) {\n index.mode = indexes[i].mode;\n }\n const isValid = this.isIndexes(index);\n if (!isValid) {\n return Promise.reject(new Error(`CheckIndexesValidity: indexes[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n /**\n * checkTriggersValidity\n * @param triggers\n */\n async checkTriggersValidity(triggers) {\n for (let i = 0; i < triggers.length; i++) {\n const trigger = {};\n const keys = Object.keys(triggers[i]);\n if (keys.includes('logic')) {\n trigger.logic = triggers[i].logic;\n }\n if (keys.includes('name')) {\n trigger.name = triggers[i].name;\n }\n if (keys.includes('timeevent')) {\n trigger.timeevent = triggers[i].timeevent;\n }\n if (keys.includes('condition')) {\n trigger.condition = triggers[i].condition;\n }\n const isValid = this.isTriggers(trigger);\n if (!isValid) {\n return Promise.reject(new Error(`CheckTriggersValidity: triggers[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n /**\n * checkViewsValidity\n * @param views\n */\n async checkViewsValidity(views) {\n for (let i = 0; i < views.length; i++) {\n const view = {};\n const keys = Object.keys(views[i]);\n if (keys.includes('value')) {\n view.value = views[i].value;\n }\n if (keys.includes('name')) {\n view.name = views[i].name;\n }\n const isValid = this.isView(view);\n if (!isValid) {\n return Promise.reject(new Error(`CheckViewsValidity: views[${i}] not valid`));\n }\n }\n return Promise.resolve();\n }\n /**\n * CreateView\n * @param mDB\n * @param table\n */\n async createView(mDB, view) {\n const stmt = `CREATE VIEW IF NOT EXISTS ${view.name} AS ${view.value};`;\n try {\n const changes = await this._uSQLite.execute(mDB, stmt);\n if (changes < 0) {\n return Promise.reject(new Error(`CreateView: ${view.name} failed`));\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CreateView: ${err.message}`));\n }\n }\n}\nexports.UtilsJson = UtilsJson;\n//# sourceMappingURL=utilsJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportToJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ExportToJson {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uJson = new utilsJson_1.UtilsJson();\n }\n /**\n * CreateExportObject\n * @param mDB\n * @param sqlObj\n */\n async createExportObject(mDB, sqlObj) {\n const retObj = {};\n let tables = [];\n let views = [];\n let errmsg = '';\n try {\n // get View's name\n views = await this.getViewsName(mDB);\n // get Table's name\n const resTables = await this.getTablesNameSQL(mDB);\n if (resTables.length === 0) {\n return Promise.reject(new Error(\"createExportObject: table's names failed\"));\n }\n else {\n switch (sqlObj.mode) {\n case 'partial': {\n tables = await this.getTablesPartial(mDB, resTables);\n break;\n }\n case 'full': {\n tables = await this.getTablesFull(mDB, resTables);\n break;\n }\n default: {\n errmsg =\n 'createExportObject: expMode ' + sqlObj.mode + ' not defined';\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n if (tables.length > 0) {\n retObj.database = sqlObj.database;\n retObj.version = sqlObj.version;\n retObj.encrypted = sqlObj.encrypted;\n retObj.mode = sqlObj.mode;\n retObj.tables = tables;\n if (views.length > 0) {\n retObj.views = views;\n }\n }\n return Promise.resolve(retObj);\n }\n }\n catch (err) {\n return Promise.reject(new Error('createExportObject: ' + err.message));\n }\n }\n /**\n * GetTablesNameSQL\n * @param mDb\n */\n async getTablesNameSQL(mDb) {\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this._uSQLite.queryAll(mDb, sql, []);\n return Promise.resolve(retQuery);\n }\n catch (err) {\n return Promise.reject(new Error(`getTablesNameSQL: ${err.message}`));\n }\n }\n /**\n * GetViewsNameSQL\n * @param mDb\n */\n async getViewsName(mDb) {\n const views = [];\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='view' AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this._uSQLite.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n const view = {};\n view.name = query.name;\n view.value = query.sql.substring(query.sql.indexOf('AS ') + 3);\n views.push(view);\n }\n return Promise.resolve(views);\n }\n catch (err) {\n return Promise.reject(new Error(`getViewsName: ${err.message}`));\n }\n }\n /**\n * GetSyncDate\n * @param mDb\n */\n async getSyncDate(mDb) {\n return new Promise((resolve, reject) => {\n let retDate = -1;\n // get the last sync date\n const stmt = `SELECT sync_date FROM sync_table;`;\n mDb.get(stmt, [], (err, row) => {\n // process the row here\n if (err) {\n reject(new Error(`GetSyncDate: ${err.message}`));\n }\n else {\n if (row != null) {\n const key = Object.keys(row)[0];\n retDate = row[key];\n resolve(retDate);\n }\n else {\n reject(new Error(`GetSyncDate: no syncDate`));\n }\n }\n });\n });\n }\n /**\n * GetTablesFull\n * @param mDb\n * @param resTables\n */\n async getTablesFull(mDb, resTables) {\n const tables = [];\n let errmsg = '';\n try {\n // Loop through the tables\n for (const rTable of resTables) {\n let tableName;\n let sqlStmt;\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n const table = {};\n // create Table's Schema\n const schema = await this.getSchema(sqlStmt);\n if (schema.length === 0) {\n errmsg = 'GetTablesFull: no Schema returned';\n break;\n }\n // check schema validity\n await this._uJson.checkSchemaValidity(schema);\n // create Table's indexes if any\n const indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this._uJson.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n const triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this._uJson.checkTriggersValidity(triggers);\n }\n // create Table's Data\n const query = `SELECT * FROM ${tableName};`;\n const values = await this.getValues(mDb, query, tableName);\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n else {\n errmsg = `GetTablesFull: must contain schema`;\n break;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesFull: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTablesFull: ${err.message}`));\n }\n }\n /**\n * GetSchema\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getSchema(sqlStmt /*,tableName: string,*/) {\n const schema = [];\n // take the substring between parenthesis\n const openPar = sqlStmt.indexOf('(');\n const closePar = sqlStmt.lastIndexOf(')');\n let sstr = sqlStmt.substring(openPar + 1, closePar);\n // check if there is other parenthesis and replace the ',' by '§'\n try {\n sstr = await this.modEmbeddedParentheses(sstr);\n const sch = sstr.split(',');\n // for each element of the array split the\n // first word as key\n for (const sc of sch) {\n const row = [];\n const scht = sc.trim();\n row[0] = scht.substring(0, scht.indexOf(' '));\n row[1] = scht.substring(scht.indexOf(' ') + 1);\n const jsonRow = {};\n if (row[0].toUpperCase() === 'FOREIGN') {\n const oPar = sc.indexOf('(');\n const cPar = sc.indexOf(')');\n row[0] = sc.substring(oPar + 1, cPar);\n row[1] = sc.substring(cPar + 2);\n jsonRow['foreignkey'] = row[0];\n }\n else if (row[0].toUpperCase() === 'CONSTRAINT') {\n const tRow = [];\n const row1t = row[1].trim();\n tRow[0] = row1t.substring(0, row1t.indexOf(' '));\n tRow[1] = row1t.substring(row1t.indexOf(' ') + 1);\n row[0] = tRow[0];\n jsonRow['constraint'] = row[0];\n row[1] = tRow[1];\n }\n else {\n jsonRow['column'] = row[0];\n }\n jsonRow['value'] = row[1].replace(/§/g, ',');\n schema.push(jsonRow);\n }\n return Promise.resolve(schema);\n }\n catch (err) {\n return Promise.reject(new Error(err.message));\n }\n }\n /**\n * GetIndexes\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getIndexes(mDb, tableName) {\n const indexes = [];\n let errmsg = '';\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'index' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOTNULL;`;\n const retIndexes = await this._uSQLite.queryAll(mDb, stmt, []);\n if (retIndexes.length > 0) {\n for (const rIndex of retIndexes) {\n const keys = Object.keys(rIndex);\n if (keys.length === 3) {\n if (rIndex['tbl_name'] === tableName) {\n const sql = rIndex['sql'];\n const mode = sql.includes('UNIQUE') ? 'UNIQUE' : '';\n const oPar = sql.lastIndexOf('(');\n const cPar = sql.lastIndexOf(')');\n const index = {};\n index.name = rIndex['name'];\n index.value = sql.slice(oPar + 1, cPar);\n if (mode.length > 0)\n index.mode = mode;\n indexes.push(index);\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} doesn't match`;\n break;\n }\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} creating indexes`;\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n }\n return Promise.resolve(indexes);\n }\n catch (err) {\n return Promise.reject(new Error(`GetIndexes: ${err.message}`));\n }\n }\n /**\n * GetTriggers\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getTriggers(mDb, tableName) {\n const triggers = [];\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'trigger' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOT NULL;`;\n const retTriggers = await this._uSQLite.queryAll(mDb, stmt, []);\n if (retTriggers.length > 0) {\n for (const rTrg of retTriggers) {\n const keys = Object.keys(rTrg);\n if (keys.length === 3) {\n if (rTrg['tbl_name'] === tableName) {\n const sql = rTrg['sql'];\n const name = rTrg['name'];\n let sqlArr = sql.split(name);\n if (sqlArr.length != 2) {\n return Promise.reject(new Error(`GetTriggers: sql split name does not return 2 values`));\n }\n if (!sqlArr[1].includes(tableName)) {\n return Promise.reject(new Error(`GetTriggers: sql split does not contains ${tableName}`));\n }\n const timeEvent = sqlArr[1].split(tableName, 1)[0].trim();\n sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName);\n if (sqlArr.length != 2) {\n return Promise.reject(new Error(`GetTriggers: sql split tableName does not return 2 values`));\n }\n let condition = '';\n let logic = '';\n if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') {\n sqlArr = sqlArr[1].trim().split('BEGIN');\n if (sqlArr.length != 2) {\n return Promise.reject(new Error(`GetTriggers: sql split BEGIN does not return 2 values`));\n }\n condition = sqlArr[0].trim();\n logic = 'BEGIN' + sqlArr[1];\n }\n else {\n logic = sqlArr[1].trim();\n }\n const trigger = {};\n trigger.name = name;\n trigger.logic = logic;\n if (condition.length > 0)\n trigger.condition = condition;\n trigger.timeevent = timeEvent;\n triggers.push(trigger);\n }\n else {\n return Promise.reject(new Error(`GetTriggers: Table ${tableName} doesn't match`));\n }\n }\n else {\n return Promise.reject(new Error(`GetTriggers: Table ${tableName} creating indexes`));\n }\n }\n }\n return Promise.resolve(triggers);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTriggers: ${err.message}`));\n }\n }\n /**\n * GetValues\n * @param mDb\n * @param query\n * @param tableName\n */\n async getValues(mDb, query, tableName) {\n const values = [];\n try {\n // get table column names and types\n const tableNamesTypes = await this._uJson.getTableColumnNamesTypes(mDb, tableName);\n let rowNames = [];\n if (Object.keys(tableNamesTypes).includes('names')) {\n rowNames = tableNamesTypes.names;\n }\n else {\n return Promise.reject(new Error(`GetValues: Table ${tableName} no names`));\n }\n const retValues = await this._uSQLite.queryAll(mDb, query, []);\n for (const rValue of retValues) {\n const row = [];\n for (const rName of rowNames) {\n if (Object.keys(rValue).includes(rName)) {\n row.push(rValue[rName]);\n }\n else {\n row.push('NULL');\n }\n }\n values.push(row);\n }\n return Promise.resolve(values);\n }\n catch (err) {\n return Promise.reject(new Error(`GetValues: ${err.message}`));\n }\n }\n /**\n * GetTablesPartial\n * @param mDb\n * @param resTables\n */\n async getTablesPartial(mDb, resTables) {\n const tables = [];\n let modTables = {};\n let syncDate = 0;\n let modTablesKeys = [];\n let errmsg = '';\n try {\n // Get the syncDate and the Modified Tables\n const partialModeData = await this.getPartialModeData(mDb, resTables);\n if (Object.keys(partialModeData).includes('syncDate')) {\n syncDate = partialModeData.syncDate;\n }\n if (Object.keys(partialModeData).includes('modTables')) {\n modTables = partialModeData.modTables;\n modTablesKeys = Object.keys(modTables);\n }\n // Loop trough tables\n for (const rTable of resTables) {\n let tableName = '';\n let sqlStmt = '';\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n if (modTablesKeys.length == 0 ||\n modTablesKeys.indexOf(tableName) === -1 ||\n modTables[tableName] == 'No') {\n continue;\n }\n const table = {};\n let schema = [];\n let indexes = [];\n let triggers = [];\n table.name = rTable;\n if (modTables[table.name] === 'Create') {\n // create Table's Schema\n schema = await this.getSchema(sqlStmt);\n if (schema.length > 0) {\n // check schema validity\n await this._uJson.checkSchemaValidity(schema);\n }\n // create Table's indexes if any\n indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this._uJson.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this._uJson.checkTriggersValidity(triggers);\n }\n }\n // create Table's Data\n let query = '';\n if (modTables[tableName] === 'Create') {\n query = `SELECT * FROM ${tableName};`;\n }\n else {\n query =\n `SELECT * FROM ${tableName} ` +\n `WHERE last_modified > ${syncDate};`;\n }\n const values = await this.getValues(mDb, query, tableName);\n // check the table object validity\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesPartial: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTablesPartial: ${err.message}`));\n }\n }\n /**\n * GetPartialModeData\n * @param mDb\n * @param resTables\n */\n async getPartialModeData(mDb, resTables) {\n const retData = {};\n try {\n // get the synchronization date\n const syncDate = await this.getSyncDate(mDb);\n if (syncDate <= 0) {\n return Promise.reject(new Error(`GetPartialModeData: no syncDate`));\n }\n // get the tables which have been updated\n // since last synchronization\n const modTables = await this.getTablesModified(mDb, resTables, syncDate);\n if (modTables.length <= 0) {\n return Promise.reject(new Error(`GetPartialModeData: no modTables`));\n }\n retData.syncDate = syncDate;\n retData.modTables = modTables;\n return Promise.resolve(retData);\n }\n catch (err) {\n return Promise.reject(new Error(`GetPartialModeData: ${err.message}`));\n }\n }\n async getTablesModified(db, tables, syncDate) {\n let errmsg = '';\n try {\n const retModified = {};\n for (const rTable of tables) {\n let mode;\n // get total count of the table\n let stmt = 'SELECT count(*) AS tcount ';\n stmt += `FROM ${rTable.name};`;\n let retQuery = await this._uSQLite.queryAll(db, stmt, []);\n if (retQuery.length != 1) {\n errmsg = 'GetTableModified: total ' + 'count not returned';\n break;\n }\n const totalCount = retQuery[0]['tcount'];\n // get total count of modified since last sync\n stmt = 'SELECT count(*) AS mcount FROM ';\n stmt += `${rTable.name} WHERE last_modified > `;\n stmt += `${syncDate};`;\n retQuery = await this._uSQLite.queryAll(db, stmt, []);\n if (retQuery.length != 1)\n break;\n const totalModifiedCount = retQuery[0]['mcount'];\n if (totalModifiedCount === 0) {\n mode = 'No';\n }\n else if (totalCount === totalModifiedCount) {\n mode = 'Create';\n }\n else {\n mode = 'Modified';\n }\n const key = rTable.name;\n retModified[key] = mode;\n }\n if (errmsg.length > 0) {\n return Promise.reject(new Error(errmsg));\n }\n return Promise.resolve(retModified);\n }\n catch (err) {\n return Promise.reject(new Error(`GetTableModified: ${err.message}`));\n }\n }\n async modEmbeddedParentheses(sstr) {\n const oParArray = this.indexOfChar(sstr, '(');\n const cParArray = this.indexOfChar(sstr, ')');\n if (oParArray.length != cParArray.length) {\n return Promise.reject(\"ModEmbeddedParentheses: Not same number of '(' & ')'\");\n }\n if (oParArray.length === 0) {\n return Promise.resolve(sstr);\n }\n let resStmt = sstr.substring(0, oParArray[0] - 1);\n for (let i = 0; i < oParArray.length; i++) {\n let str;\n if (i < oParArray.length - 1) {\n if (oParArray[i + 1] < cParArray[i]) {\n str = sstr.substring(oParArray[i] - 1, cParArray[i + 1]);\n i++;\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n const newS = str.replace(/,/g, '§');\n resStmt += newS;\n if (i < oParArray.length - 1) {\n resStmt += sstr.substring(cParArray[i], oParArray[i + 1] - 1);\n }\n }\n resStmt += sstr.substring(cParArray[cParArray.length - 1], sstr.length);\n return Promise.resolve(resStmt);\n }\n indexOfChar(str, char) {\n const tmpArr = [...str];\n char = char.toLowerCase();\n return tmpArr.reduce((results, elem, idx) => elem.toLowerCase() === char ? [...results, idx] : results, []);\n }\n}\nexports.ExportToJson = ExportToJson;\n//# sourceMappingURL=exportToJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsDrop = void 0;\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsDrop {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * GetTablesNames\n * @param mDb\n */\n async getTablesNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this._uSQLite.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(new Error(`getTablesNames: ${err.message}`));\n }\n }\n /**\n * GetViewsNames\n * @param mDb\n */\n async getViewsNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='view' AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this._uSQLite.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(new Error(`getViewsNames: ${err.message}`));\n }\n }\n /**\n * DropElements\n * @param db\n * @param type [\"table\",\"index\",\"trigger\"]\n */\n async dropElements(db, type) {\n let msg = '';\n switch (type) {\n case 'index':\n msg = 'DropIndexes';\n break;\n case 'trigger':\n msg = 'DropTriggers';\n break;\n case 'table':\n msg = 'DropTables';\n break;\n case 'view':\n msg = 'DropViews';\n break;\n default:\n return Promise.reject(new Error(`DropElements: ${type} ` + 'not found'));\n }\n // get the element's names\n let stmt = 'SELECT name FROM sqlite_master WHERE ';\n stmt += `type = '${type}' AND name NOT LIKE 'sqlite_%';`;\n try {\n const elements = await this._uSQLite.queryAll(db, stmt, []);\n if (elements.length > 0) {\n const upType = type.toUpperCase();\n const statements = [];\n for (const elem of elements) {\n let stmt = `DROP ${upType} IF EXISTS `;\n stmt += `${elem.name};`;\n statements.push(stmt);\n }\n for (const stmt of statements) {\n const lastId = await this._uSQLite.prepareRun(db, stmt, []);\n if (lastId < 0) {\n return Promise.reject(new Error(`${msg}: lastId < 0`));\n }\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`${msg}: ${err.message}`));\n }\n }\n /**\n * DropAll\n * Drop all database's elements\n * @param db\n */\n async dropAll(db) {\n try {\n // drop tables\n await this.dropElements(db, 'table');\n // drop indexes\n await this.dropElements(db, 'index');\n // drop triggers\n await this.dropElements(db, 'trigger');\n // drop views\n await this.dropElements(db, 'view');\n // vacuum the database\n await this._uSQLite.prepareRun(db, 'VACUUM;', []);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`DropAll: ${err.message}`));\n }\n }\n /**\n * DropTempTables\n * @param db\n * @param alterTables\n */\n async dropTempTables(db, alterTables) {\n const tempTables = Object.keys(alterTables);\n const statements = [];\n for (const tTable of tempTables) {\n let stmt = 'DROP TABLE IF EXISTS ';\n stmt += `_temp_${tTable};`;\n statements.push(stmt);\n }\n try {\n const changes = await this._uSQLite.execute(db, statements.join('\\n'));\n if (changes < 0) {\n return Promise.reject(new Error('DropTempTables: changes < 0'));\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`DropTempTables: ${err.message}`));\n }\n }\n}\nexports.UtilsDrop = UtilsDrop;\n//# sourceMappingURL=utilsDrop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImportFromJson = void 0;\nconst utilsDrop_1 = require(\"../utilsDrop\");\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ImportFromJson {\n constructor() {\n this._uJson = new utilsJson_1.UtilsJson();\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uDrop = new utilsDrop_1.UtilsDrop();\n }\n /**\n * CreateDatabaseSchema\n * @param mDB\n * @param jsonData\n */\n async createDatabaseSchema(mDB, jsonData) {\n let changes = -1;\n const version = jsonData.version;\n try {\n // set Foreign Keys On\n await this._uSQLite.setForeignKeyConstraintsEnabled(mDB, true);\n // set User Version PRAGMA\n await this._uSQLite.setVersion(mDB, version);\n // DROP ALL when mode=\"full\"\n if (jsonData.mode === 'full') {\n await this._uDrop.dropAll(mDB);\n }\n // create database schema\n changes = await this._uJson.createSchema(mDB, jsonData);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('CreateDatabaseSchema: ' + `${err.message}`));\n }\n }\n async createTablesData(mDB, jsonData) {\n let changes = 0;\n let isValue = false;\n let lastId = -1;\n let msg = '';\n let initChanges = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(mDB);\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error(`createTablesData: ${err.message}`));\n }\n for (const jTable of jsonData.tables) {\n if (jTable.values != null && jTable.values.length >= 1) {\n // Create the table's data\n try {\n lastId = await this._uJson.createDataTable(mDB, jTable, jsonData.mode);\n if (lastId < 0)\n break;\n isValue = true;\n }\n catch (err) {\n msg = err.message;\n isValue = false;\n break;\n }\n }\n }\n if (isValue) {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n changes = (await this._uSQLite.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('createTablesData: ' + `${err.message}`));\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createTablesData: ${msg}`));\n }\n catch (err) {\n return Promise.reject(new Error('createTablesData: ' + `${err.message}: ${msg}`));\n }\n }\n else {\n // case were no values given\n return Promise.resolve(0);\n }\n }\n }\n /**\n * CreateViews\n * @param mDB\n * @param jsonData\n */\n async createViews(mDB, jsonData) {\n let isView = false;\n let msg = '';\n let initChanges = -1;\n let changes = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(mDB);\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error(`createViews: ${err.message}`));\n }\n for (const jView of jsonData.views) {\n if (jView.value != null) {\n // Create the view\n try {\n await this._uJson.createView(mDB, jView);\n isView = true;\n }\n catch (err) {\n msg = err.message;\n isView = false;\n break;\n }\n }\n }\n if (isView) {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n changes = (await this._uSQLite.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error('createViews: ' + `${err.message}`));\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createViews: ${msg}`));\n }\n catch (err) {\n return Promise.reject(new Error('createViews: ' + `${err.message}: ${msg}`));\n }\n }\n else {\n // case were no views given\n return Promise.resolve(0);\n }\n }\n }\n}\nexports.ImportFromJson = ImportFromJson;\n//# sourceMappingURL=importFromJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsFile = void 0;\nclass UtilsFile {\n constructor() {\n this.pathDB = 'Databases';\n this.Path = null;\n this.NodeFs = null;\n this.Os = null;\n this.AppName = '';\n this.HomeDir = '';\n this.sep = '/';\n this.Path = require('path');\n this.NodeFs = require('fs');\n this.Os = require('os');\n this.HomeDir = this.Os.homedir();\n const dir = __dirname;\n const idx = dir.indexOf('\\\\');\n if (idx != -1)\n this.sep = '\\\\';\n this.appPath = dir.substring(0, dir.indexOf(`electron${this.sep}`) /* + 8*/);\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'package.json'));\n this.AppName = JSON.parse(rawdata).name;\n this.osType = this.Os.type();\n }\n /**\n * IsPathExists\n * @param filePath\n */\n isPathExists(filePath) {\n let ret = false;\n try {\n if (this.NodeFs.existsSync(filePath)) {\n ret = true;\n }\n }\n catch (err) {\n console.error('Error isFileExist: ' + err);\n ret = false;\n }\n return ret;\n }\n /**\n * IsFileExists\n * @param fileName\n */\n isFileExists(fileName) {\n let ret = false;\n const filePath = this.getFilePath(fileName);\n if (filePath.length > 0) {\n ret = this.isPathExists(filePath);\n }\n return ret;\n }\n /**\n * GetFilePath\n * get the file path\n * @param fileName\n */\n getFilePath(fileName) {\n return this.Path.join(this.getDatabasesPath(), fileName);\n }\n /**\n * GetCustomerPath\n * get the customer path\n */\n getCustomerPath(custPath) {\n return this.Path.join(this.HomeDir, custPath);\n }\n /**\n * GetCustomerFilePath\n * get the customer file path\n */\n getCustomerFilePath(custPath, file) {\n return this.Path.join(custPath, file);\n }\n /**\n * GetDatabasesPath\n * get the database folder path\n */\n getDatabasesPath() {\n let retPath = '';\n const dbFolder = this.pathDB;\n retPath = this.Path.join(this.HomeDir, dbFolder, this.AppName);\n let retB = this._createFolderIfNotExists(this.Path.join(this.HomeDir, dbFolder));\n if (retB) {\n retB = this._createFolderIfNotExists(this.Path.join(this.HomeDir, dbFolder, this.AppName));\n if (!retB)\n retPath = '';\n }\n else {\n retPath = '';\n }\n return retPath;\n }\n /**\n * GetAssetsDatabasesPath\n * get the assets databases folder path\n */\n getAssetsDatabasesPath() {\n let retPath = '';\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'capacitor.config.json'));\n const webDir = JSON.parse(rawdata).webDir;\n const dir = webDir === 'www' ? 'src' : 'public';\n retPath = this.Path.resolve(this.appPath, dir, 'assets', this.pathDB.toLowerCase());\n return retPath;\n }\n /**\n * SetPathSuffix\n * @param db\n */\n setPathSuffix(db) {\n let toDb = db;\n if (db.length > 9) {\n const last9 = db.slice(-9);\n if (last9 != 'SQLite.db') {\n toDb = this.Path.parse(db).name + 'SQLite.db';\n }\n }\n else {\n toDb = toDb + 'SQLite.db';\n }\n return toDb;\n }\n /**\n * GetFileList\n * get the file list for a given folder\n * @param path\n */\n async getFileList(path) {\n const filenames = this.NodeFs.readdirSync(path);\n const dbs = [];\n filenames.forEach((file) => {\n if (this.Path.extname(file) == '.db')\n dbs.push(file);\n });\n return Promise.resolve(dbs);\n }\n /**\n * CopyFromAssetToDatabase\n * @param db\n * @param toDb\n */\n async copyFromAssetToDatabase(db, toDb) {\n const pAsset = this.Path.join(this.getAssetsDatabasesPath(), db);\n const pDb = this.Path.join(this.getDatabasesPath(), toDb);\n await this.copyFilePath(pAsset, pDb);\n return Promise.resolve();\n }\n /**\n * CopyFileName\n * Copy file name\n * @param fileName\n * @param toFileName\n */\n async copyFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.copyFilePath(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CopyFileName: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('CopyFileName: cannot get the ' + 'filePath'));\n }\n }\n /**\n * CopyFilePath\n * Copy file Path\n * @param filePath\n * @param toFilePath\n */\n async copyFilePath(filePath, toFilePath) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n await this.deleteFilePath(toFilePath);\n this.NodeFs.copyFileSync(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CopyFilePath: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('CopyFilePath: filePath does not ' + 'exist'));\n }\n }\n else {\n return Promise.reject(new Error('CopyFilePath: cannot get the ' + 'filePath'));\n }\n }\n async copyFile(fromPath, fromFile, toPath, toFile) {\n const fPath = this.Path.join(fromPath, fromFile);\n const tPath = this.Path.join(toPath, toFile);\n try {\n this.NodeFs.copyFileSync(fPath, tPath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`CopyFile: ${err.message}`));\n }\n }\n /**\n * DeleteFileName\n * Delete a file by its name\n * @param fileName\n */\n async deleteFileName(fileName) {\n // get file path\n const filePath = this.getFilePath(fileName);\n if (filePath.length !== 0) {\n try {\n await this.deleteFilePath(filePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('DeleteFileName: delete filePath ' + `failed ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('DeleteFileName: get filePath ' + 'failed'));\n }\n }\n /**\n * DeleteFilePath\n * Delete a file by its path\n * @param filePath\n */\n async deleteFilePath(filePath) {\n if (filePath.length !== 0) {\n // check if path exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n this.NodeFs.unlinkSync(filePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('DeleteFilePath: ' + `${err.message}`));\n }\n }\n else {\n return Promise.resolve();\n }\n }\n else {\n return Promise.reject(new Error('DeleteFilePath: delete filePath' + 'failed'));\n }\n }\n /**\n * RenameFileName\n * @param fileName\n * @param toFileName\n */\n async renameFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.renameFilePath(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`RenameFileName: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('RenameFileName: filePaths do not ' + 'exist'));\n }\n }\n /**\n * RenameFilePath\n * @param filePath\n * @param toFilePath\n */\n async renameFilePath(filePath, toFilePath) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n // delete toFilePath if exists\n try {\n await this.deleteFilePath(toFilePath);\n this.NodeFs.renameSync(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('RenameFilePath: ' + `${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('RenameFilePath: filePath ' + 'does not exist'));\n }\n }\n else {\n return Promise.reject(new Error('RenameFilePath: filePath not found'));\n }\n }\n /**\n * RestoreFileName\n * @param fileName\n * @param prefix\n */\n async restoreFileName(fileName, prefix) {\n const mFileName = `${prefix}-${fileName}`;\n // check if file exists\n const isFilePre = this.isFileExists(mFileName);\n if (isFilePre) {\n const isFile = this.isFileExists(fileName);\n if (isFile) {\n try {\n await this.deleteFileName(fileName);\n await this.renameFileName(mFileName, fileName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('RestoreFileName: ' + `${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error(`RestoreFileName: ${fileName} ` + 'does not exist'));\n }\n }\n else {\n return Promise.reject(new Error(`RestoreFileName: ${mFileName} ` + 'does not exist'));\n }\n }\n /**\n * CreateFolderIfNotExists\n * Create directory\n * @param folder\n */\n _createFolderIfNotExists(folder) {\n let ret;\n try {\n if (!this.NodeFs.existsSync(folder)) {\n this._mkdirSyncRecursive(folder);\n }\n ret = true;\n }\n catch (e) {\n console.log('Error: in getDBPath', e);\n ret = false;\n }\n return ret;\n }\n /**\n * MkdirSyncRecursive\n * Create directories recursively\n * @param directory\n */\n _mkdirSyncRecursive(directory) {\n const path = directory.replace(/\\/$/, '').split('/');\n for (let i = 1; i <= path.length; i++) {\n const segment = path.slice(0, i).join('/');\n segment.length > 0 && !this.NodeFs.existsSync(segment)\n ? this.NodeFs.mkdirSync(segment)\n : null;\n }\n return;\n }\n}\nexports.UtilsFile = UtilsFile;\n//# sourceMappingURL=utilsFile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsUpgrade = void 0;\nconst utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\nconst utilsDrop_1 = require(\"./utilsDrop\");\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsUpgrade {\n constructor() {\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uFile = new utilsFile_1.UtilsFile();\n this._uDrop = new utilsDrop_1.UtilsDrop();\n this._uJson = new utilsJson_1.UtilsJson();\n this._alterTables = {};\n this._commonColumns = {};\n }\n /**\n * OnUpgrade\n * @param mDB\n * @param vUpgDict\n * @param dbName\n * @param curVersion\n * @param targetVersion\n */\n async onUpgrade(mDB, vUpgDict, dbName, curVersion, targetVersion) {\n const upgrade = vUpgDict[curVersion];\n if (upgrade != null) {\n const keys = Object.keys(upgrade);\n if (!keys.includes('toVersion')) {\n return Promise.reject(new Error('onUpgrade: toVersion not given'));\n }\n const toVersion = upgrade.toVersion;\n if (!keys.includes('statement')) {\n return Promise.reject(new Error('onUpgrade: statement not given'));\n }\n const statement = upgrade.statement;\n let set = [];\n if (keys.includes('set')) {\n set = upgrade.set;\n }\n if (targetVersion < toVersion) {\n let msg = 'Error: version mistmatch ';\n msg += 'Upgrade Statement would upgrade to ';\n msg += `version ${toVersion} , but target version `;\n msg += `is ${targetVersion} for database ${dbName}`;\n msg += ` and version ${curVersion}`;\n return Promise.reject(new Error(`onUpgrade: ${msg}`));\n }\n try {\n // set Foreign Keys Off\n await this._uSQLite.setForeignKeyConstraintsEnabled(mDB, false);\n await this._uFile.copyFileName(dbName, `backup-${dbName}`);\n const initChanges = await this._uSQLite.dbChanges(mDB);\n // Here we assume that all table schemas are given\n // in the upgrade statement\n if (statement.length > 0) {\n await this.executeStatementProcess(mDB, statement);\n // Here we assume that the Set contains only\n // - the data for new tables\n // as INSERT statements\n // - the data for new columns in existing tables\n // as UPDATE statements\n if (set.length > 0) {\n await this.executeSetProcess(mDB, set, toVersion);\n }\n }\n // set Foreign Keys On\n await this._uSQLite.setForeignKeyConstraintsEnabled(mDB, true);\n const changes = (await this._uSQLite.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`onUpgrade: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error('onUpgrade: upgrade not found'));\n }\n }\n /**\n * ExecuteStatementProcess\n * @param mDB\n * @param statement\n */\n async executeStatementProcess(mDB, statement) {\n try {\n // -> backup all existing tables \"tableName\" in\n // \"temp_tableName\"\n await this.backupTables(mDB);\n // -> Drop all Indexes\n await this._uDrop.dropElements(mDB, 'index');\n // -> Drop all Triggers\n await this._uDrop.dropElements(mDB, 'trigger');\n // -> Create new tables from upgrade.statement\n const changes = await this._uSQLite.execute(mDB, statement);\n if (changes < 0) {\n return Promise.reject(new Error('ExecuteStatementProcess: ' + 'changes < 0'));\n }\n // -> Create the list of table's common fields\n await this.findCommonColumns(mDB);\n // -> Update the new table's data from old table's data\n if (Object.keys(this._commonColumns).length > 0) {\n await this.updateNewTablesData(mDB);\n }\n // -> Drop _temp_tables\n await this._uDrop.dropTempTables(mDB, this._alterTables);\n // -> Do some cleanup\n this._alterTables = {};\n this._commonColumns = {};\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`ExecuteStatementProcess: ${err.message}`));\n }\n }\n /**\n * ExecuteSetProcess\n * @param mDB\n * @param set\n * @param toVersion\n */\n async executeSetProcess(mDB, set, toVersion) {\n try {\n // -> load new data\n const lastId = await this._uSQLite.executeSet(mDB, set);\n if (lastId < 0) {\n return Promise.reject(new Error('ExecuteSetProcess: lastId ' + '< 0'));\n }\n // -> update database version\n await this._uSQLite.setVersion(mDB, toVersion);\n // -> update syncDate if any\n const retB = await this._uJson.isTableExists(mDB, true, 'sync_table');\n if (retB) {\n const sDate = Math.round(new Date().getTime() / 1000);\n let stmt = 'UPDATE sync_table SET ';\n stmt += `sync_date = ${sDate} WHERE id = 1;`;\n const changes = await this._uSQLite.execute(mDB, stmt);\n if (changes < 0) {\n return Promise.reject(new Error('ExecuteSetProcess: changes ' + '< 0'));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`ExecuteSetProcess: ${err.message}`));\n }\n }\n /**\n * BackupTables\n * @param mDB\n */\n async backupTables(mDB) {\n const msg = 'BackupTables: ';\n try {\n const tables = await this._uDrop.getTablesNames(mDB);\n for (const table of tables) {\n try {\n await this.backupTable(mDB, table);\n }\n catch (err) {\n return Promise.reject(new Error(`${msg}table ${table}: ` + `${err.message}`));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`BackupTables: ${err.message}`));\n }\n }\n /**\n * BackupTable\n * @param mDB\n * @param table\n */\n async backupTable(mDB, table) {\n try {\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n // get the table's column names\n const colNames = await this.getTableColumnNames(mDB, table);\n this._alterTables[`${table}`] = colNames;\n // prefix the table with _temp_\n let stmt = `ALTER TABLE ${table} RENAME `;\n stmt += `TO _temp_${table};`;\n const lastId = await this._uSQLite.prepareRun(mDB, stmt, []);\n if (lastId < 0) {\n let msg = 'BackupTable: lastId < 0';\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err.message}`;\n }\n return Promise.reject(new Error(`${msg}`));\n }\n else {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(new Error('BackupTable: ' + `${err.message}`));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`BackupTable: ${err.message}`));\n }\n }\n /**\n * GetTableColumnNames\n * @param mDB\n * @param tableName\n */\n async getTableColumnNames(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this._uSQLite.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n }\n }\n return Promise.resolve(retNames);\n }\n catch (err) {\n return Promise.reject(new Error('GetTableColumnNames: ' + `${err.message}`));\n }\n }\n /**\n * FindCommonColumns\n * @param mDB\n */\n async findCommonColumns(mDB) {\n try {\n // Get new table list\n const tables = await this._uDrop.getTablesNames(mDB);\n if (tables.length === 0) {\n return Promise.reject(new Error('FindCommonColumns: get ' + \"table's names failed\"));\n }\n for (const table of tables) {\n // get the column's name\n const tableNames = await this.getTableColumnNames(mDB, table);\n // find the common columns\n const keys = Object.keys(this._alterTables);\n if (keys.includes(table)) {\n this._commonColumns[table] = this.arraysIntersection(this._alterTables[table], tableNames);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`FindCommonColumns: ${err.message}`));\n }\n }\n /**\n * ArraysIntersection\n * @param a1\n * @param a2\n */\n arraysIntersection(a1, a2) {\n if (a1 != null && a2 != null) {\n const first = new Set(a1);\n const second = new Set(a2);\n return [...first].filter(item => second.has(item));\n }\n else {\n return [];\n }\n }\n /**\n * UpdateNewTablesData\n * @param mDB\n */\n async updateNewTablesData(mDB) {\n try {\n // start a transaction\n await this._uSQLite.beginTransaction(mDB, true);\n const statements = [];\n const keys = Object.keys(this._commonColumns);\n keys.forEach(key => {\n const columns = this._commonColumns[key].join(',');\n let stmt = `INSERT INTO ${key} `;\n stmt += `(${columns}) `;\n stmt += `SELECT ${columns} FROM _temp_${key};`;\n statements.push(stmt);\n });\n const changes = await this._uSQLite.execute(mDB, statements.join('\\n'));\n if (changes < 0) {\n let msg = 'updateNewTablesData: ' + 'changes < 0';\n try {\n await this._uSQLite.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err.message}`;\n }\n return Promise.reject(new Error(`${msg}`));\n }\n else {\n try {\n await this._uSQLite.commitTransaction(mDB, true);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error('updateNewTablesData: ' + `${err.message}`));\n }\n }\n }\n catch (err) {\n return Promise.reject(new Error('updateNewTablesData: ' + `${err.message}`));\n }\n }\n}\nexports.UtilsUpgrade = UtilsUpgrade;\n//# sourceMappingURL=utilsUpgrade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst exportToJson_1 = require(\"./ImportExportJson/exportToJson\");\nconst importFromJson_1 = require(\"./ImportExportJson/importFromJson\");\nconst utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\n//import { UtilsEncryption } from './utilsEncryption';\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nconst utilsUpgrade_1 = require(\"./utilsUpgrade\");\nclass Database {\n constructor(dbName, \n // encrypted: boolean,\n // mode: string,\n version, upgDict) {\n this._uFile = new utilsFile_1.UtilsFile();\n this._uSQLite = new utilsSQLite_1.UtilsSQLite();\n this._uJson = new utilsJson_1.UtilsJson();\n // private _uGlobal: GlobalSQLite = new GlobalSQLite();\n // private _uEncrypt: UtilsEncryption = new UtilsEncryption();\n this._uUpg = new utilsUpgrade_1.UtilsUpgrade();\n this._iFJson = new importFromJson_1.ImportFromJson();\n this._eTJson = new exportToJson_1.ExportToJson();\n this._vUpgDict = {};\n this._dbName = dbName;\n // this._encrypted = encrypted;\n // this._mode = mode;\n this._version = version;\n this._vUpgDict = upgDict;\n this._pathDB = this._uFile.getFilePath(dbName);\n this._isDBOpen = false;\n if (this._pathDB.length === 0)\n throw new Error('Could not generate a path to ' + dbName);\n }\n /**\n * IsDBOpen\n * return the database status\n * @param options: capSQLiteOptions\n * @returns boolean\n * @since 0.0.1\n */\n isDBOpen() {\n return this._isDBOpen;\n }\n /**\n * Open\n * open the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async open() {\n this._isDBOpen = false;\n // let password = '';\n try {\n /*\n if (\n this._encrypted &&\n (this._mode === 'secret' || this._mode === 'encryption')\n ) {\n password = this._uGlobal.secret;\n }\n if (this._mode === 'newsecret') {\n // change the password\n const oPassword: string = this._uGlobal.secret;\n const nPassword: string = this._uGlobal.newsecret;\n await this._uSQLite.changePassword(this._pathDB, oPassword, nPassword);\n password = nPassword;\n }\n \n if (this._mode === 'encryption') {\n await this._uEncrypt.encryptDatabase(this._pathDB, password);\n }\n */\n this._mDB = await this._uSQLite.openOrCreateDatabase(this._pathDB /*,\n password,*/);\n const curVersion = await this._uSQLite.getVersion(this._mDB);\n this._isDBOpen = true;\n if (this._version > curVersion) {\n const keys = Object.keys(this._vUpgDict);\n if (keys.length > 0) {\n try {\n // execute the upgrade flow process\n await this._uUpg.onUpgrade(this._mDB, this._vUpgDict, this._dbName, curVersion, this._version);\n // delete the backup database\n await this._uFile.deleteFileName(`backup-${this._dbName}`);\n }\n catch (err) {\n // restore the database from backup\n try {\n await this._uFile.restoreFileName(this._dbName, 'backup');\n }\n catch (err) {\n return Promise.reject(new Error(`Open: ${err.message}`));\n }\n }\n }\n else {\n try {\n await this._uSQLite.setVersion(this._mDB, this._version);\n }\n catch (err) {\n return Promise.reject(new Error(`SetVersion: ${this._version} ${err.message}`));\n }\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n if (this._isDBOpen)\n this.close();\n return Promise.reject(new Error(`Open: ${err.message}`));\n }\n }\n /**\n * Close\n * close the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async close() {\n if (this._mDB != null && this._isDBOpen) {\n this._mDB.close((err) => {\n if (err) {\n let msg = 'Close: Failed in closing: ';\n msg += `${this._dbName} ${err.message}`;\n return Promise.reject(new Error(msg));\n }\n this._isDBOpen = false;\n return Promise.resolve();\n });\n }\n return Promise.resolve();\n }\n /**\n * GetVersion\n * get the database version\n * @returns Promise<number>\n */\n async getVersion() {\n if (this._mDB != null && this._isDBOpen) {\n try {\n const curVersion = await this._uSQLite.getVersion(this._mDB);\n return Promise.resolve(curVersion);\n }\n catch (err) {\n if (this._isDBOpen)\n this.close();\n return Promise.reject(new Error(`getVersion: ${err.message}`));\n }\n }\n else {\n let msg = `getVersion: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n }\n /**\n * DeleteDB\n * delete a database\n * @param dbName: string\n * @returns Promise<boolean>\n */\n async deleteDB(dbName) {\n // test if file exists\n const isExists = this._uFile.isFileExists(dbName);\n if (isExists && !this._isDBOpen) {\n // open the database\n try {\n await this.open();\n }\n catch (err) {\n return Promise.reject(new Error(`DeleteDB: ${err.message}`));\n }\n }\n // close the database\n try {\n await this.close();\n }\n catch (err) {\n return Promise.reject(new Error('DeleteDB: Close failed'));\n }\n // delete the database\n if (isExists) {\n try {\n await this._uFile.deleteFileName(dbName);\n }\n catch (err) {\n let msg = `DeleteDB: deleteFile ${dbName}`;\n msg += ` failed ${err.message}`;\n return Promise.reject(new Error(msg));\n }\n }\n return Promise.resolve();\n }\n /**\n * IsTableExists\n * @param tableName\n * @returns\n */\n async isTableExists(tableName) {\n if (!this._isDBOpen) {\n let msg = `isTableExists: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n const isOpen = this._isDBOpen;\n try {\n const retB = await this._uJson.isTableExists(this._mDB, isOpen, tableName);\n return Promise.resolve(retB);\n }\n catch (err) {\n const msg = `IsTableExists: ${err.message}`;\n return Promise.reject(new Error(msg));\n }\n }\n /**\n * CreateSyncTable\n * create the synchronization table\n * @returns Promise<number>\n */\n async createSyncTable() {\n if (!this._isDBOpen) {\n let msg = `CreateSyncTable: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n let changes = -1;\n const isOpen = this._isDBOpen;\n // check if the table has already being created\n try {\n const retB = await this._uJson.isTableExists(this._mDB, isOpen, 'sync_table');\n if (!retB) {\n const date = Math.round(new Date().getTime() / 1000);\n let stmts = `\n CREATE TABLE IF NOT EXISTS sync_table (\n id INTEGER PRIMARY KEY NOT NULL,\n sync_date INTEGER\n );`;\n stmts += `INSERT INTO sync_table (sync_date) VALUES (\n \"${date}\");`;\n changes = await this._uSQLite.execute(this._mDB, stmts);\n if (changes < 0) {\n return Promise.reject(new Error(`CreateSyncTable: failed changes < 0`));\n }\n }\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateSyncTable: ${err.message}`));\n }\n }\n /**\n * SetSyncDate\n * store the synchronization date\n * @param syncDate: string\n * @returns Promise<{result: boolean, message: string}>\n */\n async setSyncDate(syncDate) {\n if (!this._isDBOpen) {\n let msg = `SetSyncDate: Database ${this._dbName} `;\n msg += `not opened`;\n return { result: false, message: msg };\n }\n try {\n const sDate = Math.round(new Date(syncDate).getTime() / 1000);\n let stmt = `UPDATE sync_table SET sync_date = `;\n stmt += `${sDate} WHERE id = 1;`;\n const changes = await this._uSQLite.execute(this._mDB, stmt);\n if (changes < 0) {\n return { result: false, message: 'setSyncDate failed' };\n }\n else {\n return { result: true };\n }\n }\n catch (err) {\n return { result: false, message: `setSyncDate failed: ${err.message}` };\n }\n }\n /**\n * GetSyncDate\n * store the synchronization date\n * @returns Promise<{syncDate: number, message: string}>\n */\n async getSyncDate() {\n if (!this._isDBOpen) {\n let msg = `GetSyncDate: Database ${this._dbName} `;\n msg += `not opened`;\n return { syncDate: 0, message: msg };\n }\n try {\n const syncDate = await this._eTJson.getSyncDate(this._mDB);\n if (syncDate > 0) {\n return { syncDate: syncDate };\n }\n else {\n return { syncDate: 0, message: `setSyncDate failed` };\n }\n }\n catch (err) {\n return { syncDate: 0, message: `setSyncDate failed: ${err.message}` };\n }\n }\n /**\n * ExecuteSQL\n * execute raw sql statements store in a string\n * @param sql: string\n * @returns Promise<number>\n */\n async executeSQL(sql, transaction) {\n if (!this._isDBOpen) {\n let msg = `ExecuteSQL: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n try {\n if (transaction)\n await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);\n const changes = await this._uSQLite.execute(this._mDB, sql);\n if (changes < 0) {\n return Promise.reject(new Error('ExecuteSQL: changes < 0'));\n }\n if (transaction)\n await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);\n return Promise.resolve(changes);\n }\n catch (err) {\n let msg = `ExecuteSQL: ${err.message}`;\n try {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n msg += ` : ${err.message}`;\n }\n return Promise.reject(new Error(`ExecuteSQL: ${msg}`));\n }\n }\n /**\n * SelectSQL\n * execute a sql query with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<any[]>\n */\n async selectSQL(sql, values) {\n if (!this._isDBOpen) {\n let msg = `SelectSQL: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n try {\n const retArr = await this._uSQLite.queryAll(this._mDB, sql, values);\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(new Error(`SelectSQL: ${err.message}`));\n }\n }\n /**\n * runSQL\n * execute a raw sql statement with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async runSQL(statement, values, transaction) {\n if (!this._isDBOpen) {\n let msg = `RunSQL: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n const retRes = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(this._mDB);\n // start a transaction\n if (transaction)\n await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n return Promise.reject(new Error(`ExecSet: ${err.message}`));\n }\n try {\n const lastId = await this._uSQLite.prepareRun(this._mDB, statement, values);\n if (lastId < 0) {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n return Promise.reject(new Error(`RunSQL: return LastId < 0`));\n }\n if (transaction)\n await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);\n retRes.changes = (await this._uSQLite.dbChanges(this._mDB)) - initChanges;\n retRes.lastId = lastId;\n return Promise.resolve(retRes);\n }\n catch (err) {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n return Promise.reject(new Error(`RunSQL: ${err.message}`));\n }\n }\n /**\n * ExecSet\n * execute a set of raw sql statements with/without binding values\n * @param set: any[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async execSet(set, transaction) {\n if (!this._isDBOpen) {\n let msg = `ExecSet: Database ${this._dbName} `;\n msg += `not opened`;\n return Promise.reject(new Error(msg));\n }\n const retRes = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this._uSQLite.dbChanges(this._mDB);\n // start a transaction\n if (transaction)\n await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n return Promise.reject(new Error(`ExecSet: ${err.message}`));\n }\n try {\n retRes.lastId = await this._uSQLite.executeSet(this._mDB, set);\n if (transaction)\n await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);\n retRes.changes = (await this._uSQLite.dbChanges(this._mDB)) - initChanges;\n return Promise.resolve(retRes);\n }\n catch (err) {\n const msg = err;\n try {\n if (transaction)\n await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);\n }\n catch (err) {\n return Promise.reject(new Error(`ExecSet: ${msg}: ` + `${err.message}`));\n }\n }\n }\n async importJson(jsonData) {\n let changes = 0;\n if (this._isDBOpen) {\n try {\n if (jsonData.tables && jsonData.tables.length > 0) {\n // create the database schema\n changes = await this._iFJson.createDatabaseSchema(this._mDB, jsonData);\n if (changes != -1) {\n // create the tables data\n changes += await this._iFJson.createTablesData(this._mDB, jsonData);\n }\n }\n if (jsonData.views && jsonData.views.length > 0) {\n // create the views\n changes += await this._iFJson.createViews(this._mDB, jsonData);\n }\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(new Error(`ImportJson: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error(`ImportJson: database is closed`));\n }\n }\n async exportJson(mode) {\n const inJson = {};\n inJson.database = this._dbName.slice(0, -9);\n inJson.version = this._version;\n inJson.encrypted = false;\n inJson.mode = mode;\n if (this._isDBOpen) {\n try {\n const retJson = await this._eTJson.createExportObject(this._mDB, inJson);\n const isValid = this._uJson.isJsonSQLite(retJson);\n if (isValid) {\n return Promise.resolve(retJson);\n }\n else {\n return Promise.reject(new Error(`ExportJson: retJson not valid`));\n }\n }\n catch (err) {\n return Promise.reject(new Error(`ExportJson: ${err.message}`));\n }\n }\n else {\n return Promise.reject(new Error(`ExportJson: database is closed`));\n }\n }\n}\nexports.Database = Database;\n//# sourceMappingURL=Database.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CapacitorSQLite = void 0;\nconst Database_1 = require(\"./electron-utils/Database\");\nconst utilsJson_1 = require(\"./electron-utils/ImportExportJson/utilsJson\");\nconst utilsFile_1 = require(\"./electron-utils/utilsFile\");\nclass CapacitorSQLite {\n constructor() {\n this._versionUpgrades = {};\n this._dbDict = {};\n this._uFile = new utilsFile_1.UtilsFile();\n this._uJson = new utilsJson_1.UtilsJson();\n }\n async isSecretStored() {\n return Promise.reject('Method not implemented.');\n }\n async setEncryptionSecret(options) {\n console.log(`${JSON.stringify(options)}`);\n return Promise.reject('Method not implemented.');\n }\n async changeEncryptionSecret(options) {\n console.log(`${JSON.stringify(options)}`);\n return Promise.reject('Method not implemented.');\n }\n async createConnection(options) {\n const keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n const version = options.version ? options.version : 1;\n /* const encrypted = false;\n const inMode = \"no-encryption\";\n \n const encrypted: boolean =\n options.encrypted && this._osType === 'Darwin'\n ? options.encrypted\n : false;\n const inMode: string =\n options.mode && this._osType === 'Darwin'\n ? options.mode\n : 'no-encryption';\n */\n let upgDict = {};\n const vUpgKeys = Object.keys(this._versionUpgrades);\n if (vUpgKeys.length !== 0 && vUpgKeys.includes(dbName)) {\n upgDict = this._versionUpgrades[dbName];\n }\n try {\n const mDb = new Database_1.Database(dbName + 'SQLite.db', \n /* encrypted,\n inMode,\n */\n version, upgDict);\n this._dbDict[dbName] = mDb;\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async closeConnection(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('CloseConnection command failed: No ' +\n 'available connection for ' +\n dbName);\n }\n const mDB = this._dbDict[dbName];\n if (mDB.isDBOpen()) {\n // close the database\n try {\n await mDB.close();\n }\n catch (err) {\n return Promise.reject('CloseConnection command failed: ' +\n 'close ' +\n dbName +\n ' failed ' +\n err.message);\n }\n }\n // remove the connection from dictionary\n delete this._dbDict[dbName];\n return Promise.resolve();\n }\n async echo(options) {\n const keys = Object.keys(options);\n if (!keys.includes('value')) {\n return Promise.reject('Must provide a value to echo');\n }\n const ret = {};\n ret.value = options.value;\n return Promise.resolve(ret);\n }\n async open(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Open: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.open();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Open: ${err}`);\n }\n }\n async close(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Close: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.close();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Close: ${err}`);\n }\n }\n async getVersion(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Open: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const version = await mDB.getVersion();\n const ret = {};\n ret.version = version;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(`Open: ${err}`);\n }\n }\n async execute(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('statements') || options.statements.length === 0) {\n return Promise.reject('Must provide raw SQL statements');\n }\n const dbName = options.database;\n const statements = options.statements;\n const transaction = options.transaction\n ? options.transaction\n : true;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Execute: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.executeSQL(statements, transaction);\n if (ret < 0) {\n return Promise.reject('Execute failed changes < 0');\n }\n else {\n return Promise.resolve({ changes: { changes: ret } });\n }\n }\n catch (err) {\n return Promise.reject(`Execute failed: ${err}`);\n }\n }\n async executeSet(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('set') || options.set.length === 0) {\n return Promise.reject('Must provide a non-empty set of SQL statements');\n }\n const dbName = options.database;\n const setOfStatements = options.set;\n const transaction = options.transaction\n ? options.transaction\n : true;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`ExecuteSet: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n for (const sStmt of setOfStatements) {\n if (!('statement' in sStmt) || !('values' in sStmt)) {\n return Promise.reject('ExecuteSet: Must provide a set as ' + 'Array of {statement,values}');\n }\n }\n try {\n const ret = await mDB.execSet(setOfStatements, transaction);\n if (ret < 0) {\n return Promise.reject(`ExecuteSet failed changes <0`);\n }\n else {\n return Promise.resolve({ changes: ret });\n }\n }\n catch (err) {\n return Promise.reject(`ExecuteSet failed: ${err}`);\n }\n }\n async run(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('statement') || options.statement.length === 0) {\n return Promise.reject('Must provide a query statement');\n }\n if (!keys.includes('values')) {\n return Promise.reject('Must provide an Array of values');\n }\n const dbName = options.database;\n const statement = options.statement;\n const values = options.values.length > 0 ? options.values : [];\n const transaction = options.transaction\n ? options.transaction\n : true;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Run: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.runSQL(statement, values, transaction);\n return Promise.resolve({ changes: ret });\n }\n catch (err) {\n return Promise.reject(`RUN failed: ${err} `);\n }\n }\n async query(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('statement') || options.statement.length === 0) {\n return Promise.reject('Must provide a query statement');\n }\n if (!keys.includes('values')) {\n return Promise.reject('Must provide an Array of any');\n }\n const dbName = options.database;\n const statement = options.statement;\n const values = options.values.length > 0 ? options.values : [];\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`Query: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n let ret = [];\n try {\n ret = await mDB.selectSQL(statement, values);\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(`Query failed: ${err}`);\n }\n }\n async isDBExists(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('IsDBExists command failed: No available ' + 'connection for ' + dbName);\n }\n const isExists = this._uFile.isFileExists(dbName + 'SQLite.db');\n return Promise.resolve({\n result: isExists,\n });\n }\n async isDBOpen(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('isDBOpen command failed: No available ' + 'connection for ' + dbName);\n }\n const mDB = this._dbDict[dbName];\n const isOpen = await mDB.isDBOpen();\n return Promise.resolve({ result: isOpen });\n }\n async isDatabase(options) {\n const keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n const isExists = this._uFile.isFileExists(dbName + 'SQLite.db');\n return Promise.resolve({\n result: isExists,\n });\n }\n async isTableExists(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n if (!keys.includes('table')) {\n return Promise.reject('Must provide a table name');\n }\n const tableName = options.table;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('isTableExists command failed: No available ' +\n 'connection for ' +\n dbName);\n }\n const mDB = this._dbDict[dbName];\n try {\n const res = await mDB.isTableExists(tableName);\n return Promise.resolve({ result: res.result });\n }\n catch (err) {\n return Promise.reject(`isTableExists: ${err.message}`);\n }\n }\n async deleteDatabase(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('deleteDatabase: No available connection for ' + `${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.deleteDB(dbName + 'SQLite.db');\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Delete: ${err.message}`);\n }\n }\n async isJsonValid(options) {\n const keys = Object.keys(options);\n if (!keys.includes('jsonstring')) {\n return Promise.reject('Must provide a json object');\n }\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = this._uJson.isJsonSQLite(jsonObj);\n if (!isValid) {\n return Promise.reject('Stringify Json Object not Valid');\n }\n else {\n return Promise.resolve({ result: true });\n }\n }\n async importFromJson(options) {\n var _a;\n const keys = Object.keys(options);\n if (!keys.includes('jsonstring')) {\n return Promise.reject('Must provide a json object');\n }\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = this._uJson.isJsonSQLite(jsonObj);\n if (!isValid) {\n return Promise.reject('Must provide a valid JsonSQLite Object');\n }\n const vJsonObj = jsonObj;\n const dbName = `${vJsonObj.database}SQLite.db`;\n const dbVersion = (_a = vJsonObj.version) !== null && _a !== void 0 ? _a : 1;\n // const encrypted: boolean = vJsonObj.encrypted ?? false;\n // const mode: string = encrypted ? 'secret' : 'no-encryption';\n // Create the database\n const mDb = new Database_1.Database(dbName, \n /*encrypted, mode, */ dbVersion, {});\n try {\n // Open the database\n await mDb.open();\n // Import the JsonSQLite Object\n const changes = await mDb.importJson(vJsonObj);\n // Close the database\n await mDb.close();\n return Promise.resolve({ changes: { changes: changes } });\n }\n catch (err) {\n return Promise.reject(`ImportFromJson: ${err.message}`);\n }\n }\n async exportToJson(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('jsonexportmode')) {\n return Promise.reject('Must provide a json export mode');\n }\n const dbName = options.database;\n const exportMode = options.jsonexportmode;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('exportToJson: No available connection for ' + `${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.exportJson(exportMode);\n const keys = Object.keys(ret);\n if (keys.includes('message')) {\n return Promise.reject(`exportToJson: ${ret.message}`);\n }\n else {\n return Promise.resolve({ export: ret });\n }\n }\n catch (err) {\n return Promise.reject(`exportToJson: ${err.message}`);\n }\n }\n async createSyncTable(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject('CreateSyncTable: No available connection for ' + `${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.createSyncTable();\n return Promise.resolve({ changes: { changes: ret } });\n }\n catch (err) {\n return Promise.reject(`createSyncTable: ${err.message}`);\n }\n }\n async setSyncDate(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('syncdate')) {\n return Promise.reject('Must provide a synchronization date');\n }\n const dbName = options.database;\n const syncDate = options.syncdate;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`SetSyncDate: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n await mDB.setSyncDate(syncDate);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`SetSyncDate: ${err.message}`);\n }\n }\n async getSyncDate(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n const dbName = options.database;\n keys = Object.keys(this._dbDict);\n if (!keys.includes(dbName)) {\n return Promise.reject(`GetSyncDate: No available connection for ${dbName}`);\n }\n const mDB = this._dbDict[dbName];\n try {\n const ret = await mDB.getSyncDate();\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(`GetSyncDate: ${err.message}`);\n }\n }\n async addUpgradeStatement(options) {\n let keys = Object.keys(options);\n if (!keys.includes('database')) {\n return Promise.reject('Must provide a database name');\n }\n if (!keys.includes('upgrade')) {\n return Promise.reject('Must provide an upgrade statement');\n }\n const dbName = options.database;\n const upgrade = options.upgrade[0];\n keys = Object.keys(upgrade);\n if (!keys.includes('fromVersion') ||\n !keys.includes('toVersion') ||\n !keys.includes('statement')) {\n return Promise.reject('Must provide an upgrade capSQLiteVersionUpgrade Object');\n }\n if (typeof upgrade.fromVersion != 'number') {\n return Promise.reject('ugrade.fromVersion must be a number');\n }\n const upgVDict = {};\n upgVDict[upgrade.fromVersion] = upgrade;\n this._versionUpgrades[dbName] = upgVDict;\n return Promise.resolve();\n }\n async copyFromAssets() {\n // check if the assets/database folder exists\n const assetsDbPath = this._uFile.getAssetsDatabasesPath();\n const res = this._uFile.isPathExists(assetsDbPath);\n if (res) {\n // get the database files\n const dbList = await this._uFile.getFileList(assetsDbPath);\n // loop through the database files\n const toDbList = [];\n dbList.forEach(async (db) => {\n // for each check if the suffix SQLite.db is there or add it\n const toDb = this._uFile.setPathSuffix(db);\n toDbList.push(toDb);\n // for each copy the file to the Application database folder\n await this._uFile.copyFromAssetToDatabase(db, toDb);\n });\n return Promise.resolve();\n }\n else {\n return Promise.reject('CopyFromAssets: assets/databases folder does not exist');\n }\n }\n async getDatabaseList() {\n // get the database folder\n const pathDatabase = this._uFile.getDatabasesPath();\n // get the list of databases\n const files = await this._uFile.getFileList(pathDatabase);\n if (files.length > 0) {\n return Promise.resolve({ values: files });\n }\n else {\n return Promise.reject(`isTableExists: No databases found`);\n }\n }\n async addSQLiteSuffix(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async deleteOldDatabases(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async checkConnectionsConsistency(options) {\n const keys = Object.keys(options);\n if (!keys.includes('dbNames')) {\n return Promise.reject(`Must provide a list of connection's name`);\n }\n const dbNames = options.dbNames;\n const ret = {};\n ret.result = false;\n try {\n let inConnectionsSet = new Set(Object.keys(this._dbDict));\n const outConnectionSet = new Set(dbNames);\n if (outConnectionSet.size === 0) {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n if (inConnectionsSet.size < outConnectionSet.size) {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n if (inConnectionsSet.size > outConnectionSet.size) {\n for (const key of inConnectionsSet) {\n if (!Array.from(outConnectionSet.keys()).includes(key)) {\n const opt = {};\n opt.database = key;\n await this.closeConnection(opt);\n }\n }\n }\n inConnectionsSet = new Set(Object.keys(this._dbDict));\n if (inConnectionsSet.size === outConnectionSet.size) {\n const symDiffSet = await this.symmetricDifference(inConnectionsSet, outConnectionSet);\n if (symDiffSet.size === 0) {\n ret.result = true;\n return Promise.resolve(ret);\n }\n else {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n }\n else {\n await this.resetDbDict(Object.keys(this._dbDict));\n return Promise.resolve(ret);\n }\n }\n catch (err) {\n return Promise.reject(`CheckConnectionsConsistency: ${err.message}`);\n }\n }\n async resetDbDict(keys) {\n try {\n for (const key of keys) {\n const opt = {};\n opt.database = key;\n await this.closeConnection(opt);\n }\n }\n catch (err) {\n return Promise.reject(`ResetDbDict: ${err.message}`);\n }\n }\n async symmetricDifference(setA, setB) {\n const difference = new Set(setA);\n for (const elem of setB) {\n if (difference.has(elem)) {\n difference.delete(elem);\n }\n else {\n difference.add(elem);\n }\n }\n return Promise.resolve(difference);\n }\n}\nexports.CapacitorSQLite = CapacitorSQLite;\n//# sourceMappingURL=index.js.map"],"names":["require$$0","utilsSQLite_1","utilsJson_1","require$$1","utilsDrop_1","require$$2","utilsFile_1","require$$3","Database_1","require$$4","require$$5","CapacitorSQLite_1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAM,CAAC,cAAc,CAAC,WAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;uBAC3C,GAAG,KAAK,EAAE;AAC7B,MAAM,WAAW,CAAC;AAClB,IAAI,WAAW,GAAG;AAClB;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAGA,8BAAkB,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,MAAM;AACrC,yBAAyB;AACzB,QAAQ,MAAM,GAAG,GAAG,wBAAwB,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtD,YAAY,OAAO,EAAE,OAAO,CAAC,GAAG;AAChC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1C,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,aAAa;AACb,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM,IAAI,CAAC,+BAA+B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtE;AACA,gBAAgB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9D,gBAAgB,IAAI,UAAU,KAAK,CAAC,EAAE;AACtC,oBAAoB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,sBAAsB,CAAC,CAAC,CAAC;AAC3E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,+BAA+B,CAAC,GAAG,EAAE,MAAM,EAAE;AACvD,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,GAAG,GAAG,KAAK,CAAC;AAC5B,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAC3B,aAAa;AACb,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;AAC/D,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE;AAC1B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,OAAO,GAAG,CAAC,CAAC;AAC5B,YAAY,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC1D,YAAY,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AACtD;AACA,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,GAAG,IAAI,IAAI,EAAE;AACrC,wBAAwB,OAAO,GAAG,CAAC,CAAC;AACpC,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,wBAAwB,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;AACjE,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,GAAG,GAAG,oBAAoB,CAAC;AAC7C,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,oBAAoB,CAAC;AAC7C,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK;AACjC,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,GAAG,GAAG,uBAAuB,CAAC;AAChD,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,uBAAuB,CAAC;AAChD,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK;AACjC,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,GAAG,GAAG,qBAAqB,CAAC;AAC9C,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,qBAAqB,CAAC;AAC9C,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK;AACjC,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,EAAE,EAAE;AACxB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC3D,YAAY,IAAI,OAAO,GAAG,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AACpD;AACA,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,GAAG,IAAI,IAAI,EAAE;AACrC,wBAAwB,OAAO,GAAG,CAAC,CAAC;AACpC,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,wBAAwB,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,EAAE,EAAE;AAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,cAAc,GAAG,4BAA4B,CAAC;AAChE,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AACrD;AACA,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,IAAI,GAAG,GAAG,oBAAoB,CAAC;AACnD,oBAAoB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,GAAG,IAAI,IAAI;AACnC,wBAAwB,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC,oBAAoB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,oBAAoB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,oBAAoB,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5B,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI;AACZ,YAAY,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACpD,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,YAAY,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;AAChE,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK;AACzC,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AAC5C,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE;AAC9B,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAY,MAAM,SAAS,GAAG,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9E,YAAY,MAAM,MAAM,GAAG,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;AAC/F,YAAY,IAAI,SAAS,IAAI,IAAI,EAAE;AACnC,gBAAgB,IAAI,GAAG,GAAG,+BAA+B,CAAC;AAC1D,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9C,oBAAoB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC9C,wBAAwB,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAC3E,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1E,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;AACrD,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACjD,oBAAoB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1D,wBAAwB,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,EAAE;AAChC,wBAAwB,IAAI,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACxD,wBAAwB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,wBAAwB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;AAC/B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,GAAG,CAAC,SAAS,CAAC,MAAM;AAChC,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AACpD,oBAAoB,IAAI,GAAG,EAAE;AAC7B,wBAAwB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,IAAI,IAAI,IAAI,EAAE;AAC1C,4BAA4B,IAAI,GAAG,EAAE,CAAC;AACtC,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;uBACkB,GAAG,WAAW;;;;AC9ZjC,MAAM,CAAC,cAAc,CAAC,SAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;mBAC7C,GAAG,KAAK,EAAE;AAC3B,MAAMC,eAAa,GAAGD,WAAyB,CAAC;AAChD,MAAM,SAAS,CAAC;AAChB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIC,eAAa,CAAC,WAAW,EAAE,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;AAC/C,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,CAAC,oCAAoC,CAAC,CAAC;AAC7D,aAAa;AACb,YAAY,IAAI,KAAK,GAAG,uCAAuC,CAAC;AAChE,YAAY,KAAK,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7D,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC7C;AACA,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,CAAC,uBAAuB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,wBAAwB,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC7C,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,IAAI,KAAK,GAAG,uCAAuC,CAAC;AAChE,YAAY,KAAK,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC7C;AACA,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,wBAAwB,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE;AACtC;AACA,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACjE,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,YAAY,IAAI;AAChB,gBAAgB,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvE,gBAAgB,IAAI,OAAO,GAAG,CAAC,EAAE;AACjC,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3E,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,EAAE;AAChC,wBAAwB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACxC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7D,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,CAAC,QAAQ,EAAE;AAC1C,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B;AACA,QAAQ,IAAI;AACZ,YAAY,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;AAClD,gBAAgB,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACxE;AACA,oBAAoB,UAAU,CAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACxF,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnE,wBAAwB,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5D,4BAA4B,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACzD,gCAAgC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxG,6BAA6B;AAC7B,iCAAiC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAClE,gCAAgC,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1H,6BAA6B;AAC7B,iCAAiC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAClE,gCAAgC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvH,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACzD,gCAAgC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,6BAA6B;AAC7B,iCAAiC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAClE,gCAAgC,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H,6BAA6B;AAC7B,iCAAiC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAClE,gCAAgC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxH,6BAA6B;AAC7B,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,oBAAoB,IAAI,IAAI,GAAG,+BAA+B,CAAC;AAC/D,oBAAoB,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,oBAAoB,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACtD,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,oBAAoB,IAAI,IAAI,yCAAyC,CAAC;AACtE,oBAAoB,IAAI,IAAI,iCAAiC,CAAC;AAC9D,oBAAoB,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACnD,oBAAoB,IAAI,IAAI,8CAA8C,CAAC;AAC3E,oBAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AAC1E,oBAAoB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AACzD,wBAAwB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AACtD,wBAAwB,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC;AAClI,wBAAwB,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpF,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AAC5E,oBAAoB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AACxD,wBAAwB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AACtD,wBAAwB,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1E,4BAA4B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpG,yBAAyB;AACzB,wBAAwB,IAAI,IAAI,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACnE,wBAAwB,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAClF,wBAAwB,IAAI,IAAI,CAAC,SAAS;AAC1C,4BAA4B,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzD,wBAAwB,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5C,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAChF,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC7G,aAAa;AACb;AACA,YAAY,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACzF,YAAY,MAAM,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC;AAC3D,YAAY,MAAM,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC;AAC3D,YAAY,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAClH,aAAa;AACb;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D;AACA,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACvE,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F,wBAAwB,CAAC,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC/D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtH,gBAAgB,IAAI,IAAI,CAAC;AACzB,gBAAgB,IAAI,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE;AAC/E;AACA,oBAAoB,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAC/D,oBAAoB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5G,oBAAoB,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;AAChF,oBAAoB,IAAI,IAAI,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACtD,iBAAiB;AACjB,qBAAqB;AACrB;AACA,oBAAoB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AACpF,oBAAoB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,wBAAwB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,4BAA4B,CAAC,WAAW,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAClE,qBAAqB;AACrB,oBAAoB,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1E,oBAAoB,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AAC/D,wBAAwB,IAAI,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,gBAAgB,IAAI,MAAM,GAAG,CAAC,EAAE;AAChC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACpF,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,wBAAwB,CAAC,GAAG,EAAE,SAAS,EAAE;AACnD,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3D,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,gBAAgB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC9C,oBAAoB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,oBAAoB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE;AACvD,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC;AACxB,QAAQ,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;AACrD,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;AACpD,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ;AACnC,YAAY,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ;AACnC,YAAY,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACzE,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AACrC,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,MAAM,EAAE;AACrC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,SAAS,GAAG,EAAE,CAAC;AAC/B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,gBAAgB,SAAS,IAAI,IAAI,CAAC;AAClC,aAAa;AACb,YAAY,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,gBAAgB,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;AAC1E,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,KAAK,EAAE;AAClC,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAC;AAC3B,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,YAAY,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC7E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,GAAG,EAAE;AACtB,QAAQ,MAAM,aAAa,GAAG;AAC9B,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,YAAY,WAAW;AACvB,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,IAAI,IAAI;AACvB,aAAa,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACzE,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAY,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AACjE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAChE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS;AACnE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC7D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC/D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,QAAQ,EAAE;AAClC,gBAAgB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7C,oBAAoB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxD,oBAAoB,IAAI,CAAC,QAAQ;AACjC,wBAAwB,OAAO,KAAK,CAAC;AACrC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC9D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,OAAO,EAAE;AACjC,gBAAgB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7C,oBAAoB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtD,oBAAoB,IAAI,CAAC,OAAO;AAChC,wBAAwB,OAAO,KAAK,CAAC;AACrC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,GAAG,EAAE;AACjB,QAAQ,MAAM,aAAa,GAAG;AAC9B,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,SAAS,CAAC;AACV,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,IAAI,IAAI;AACvB,aAAa,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACzE,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAY,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC7D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC/D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAChE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AACjE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC/D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,QAAQ,EAAE;AAClC,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACnD,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE;AACxC,wBAAwB,QAAQ,EAAE,CAAC;AACnC,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACnD,oBAAoB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,oBAAoB,IAAI,CAAC,SAAS;AAClC,wBAAwB,OAAO,KAAK,CAAC;AACrC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,GAAG,KAAK,SAAS,EAAE;AACnC,gBAAgB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7C,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5D,oBAAoB,IAAI,CAAC,UAAU;AACnC,wBAAwB,OAAO,KAAK,CAAC;AACrC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,GAAG,KAAK,UAAU,EAAE;AACpC,gBAAgB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7C,oBAAoB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9D,oBAAoB,IAAI,CAAC,WAAW;AACpC,wBAAwB,OAAO,KAAK,CAAC;AACrC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,GAAG,KAAK,QAAQ,EAAE;AAClC,gBAAgB,IAAI,QAAQ,GAAG,CAAC,EAAE;AAClC,oBAAoB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,wBAAwB,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;AAC9E,4BAA4B,OAAO,KAAK,CAAC;AACzC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,GAAG,EAAE;AAClB,QAAQ,MAAM,cAAc,GAAG;AAC/B,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,IAAI,IAAI;AACvB,aAAa,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACzE,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAY,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC/D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC9D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AACnE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AACnE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,GAAG,EAAE;AACnB,QAAQ,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1D,QAAQ,IAAI,GAAG,IAAI,IAAI;AACvB,aAAa,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACzE,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC7D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC9D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,MAAM;AAC9B,iBAAiB,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;AACrE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,MAAM,gBAAgB,GAAG;AACjC,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,OAAO;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,IAAI,IAAI;AACvB,aAAa,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACzE,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC7D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAClE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAClE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC9D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,GAAG,EAAE;AAChB,QAAQ,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAQ,IAAI,GAAG,IAAI,IAAI;AACvB,aAAa,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACzE,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC7D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,YAAY,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC9D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,MAAM,EAAE;AACtC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY,MAAM,GAAG,GAAG,EAAE,CAAC;AAC3B,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzC,gBAAgB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAgB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC7C,gBAAgB,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACtD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC7C,gBAAgB,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACtD,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAChG,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,OAAO,EAAE;AACxC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,YAAY,MAAM,KAAK,GAAG,EAAE,CAAC;AAC7B,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAgB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/C,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAgB,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAgB,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClG,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,CAAC,QAAQ,EAAE;AAC1C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,YAAY,MAAM,OAAO,GAAG,EAAE,CAAC;AAC/B,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAgB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAgB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC5C,gBAAgB,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC5C,gBAAgB,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrD,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpG,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,KAAK,EAAE;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,MAAM,IAAI,GAAG,EAAE,CAAC;AAC5B,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAgB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAgB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAChC,QAAQ,MAAM,IAAI,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChF,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AAC7B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpF,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,SAAS;AACT,KAAK;AACL,CAAC;mBACgB,GAAG,SAAS;;ACttB7B,MAAM,CAAC,cAAc,CAAC,YAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC1C,GAAG,KAAK,EAAE;AAC9B,MAAMA,eAAa,GAAGD,WAAyB,CAAC;AAChD,MAAME,aAAW,GAAGC,SAAsB,CAAC;AAC3C,MAAM,YAAY,CAAC;AACnB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIF,eAAa,CAAC,WAAW,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;AAC1C,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC;AACvB,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI;AACZ;AACA,YAAY,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACjD;AACA,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC/D,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;AAC7F,aAAa;AACb,iBAAiB;AACjB,gBAAgB,QAAQ,MAAM,CAAC,IAAI;AACnC,oBAAoB,KAAK,SAAS,EAAE;AACpC,wBAAwB,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC7E,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,oBAAoB,KAAK,MAAM,EAAE;AACjC,wBAAwB,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1E,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,oBAAoB,SAAS;AAC7B,wBAAwB,MAAM;AAC9B,4BAA4B,8BAA8B,GAAG,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC;AAC1F,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtD,oBAAoB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACpD,oBAAoB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACxD,oBAAoB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC9C,oBAAoB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3C,oBAAoB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,wBAAwB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACnF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,GAAG,EAAE;AAChC,QAAQ,IAAI,GAAG,GAAG,2CAA2C,CAAC;AAC9D,QAAQ,GAAG,IAAI,8CAA8C,CAAC;AAC9D,QAAQ,GAAG,IAAI,8BAA8B,CAAC;AAC9C,QAAQ,GAAG,IAAI,+BAA+B,CAAC;AAC/C,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClE,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,GAAG,GAAG,2CAA2C,CAAC;AAC9D,QAAQ,GAAG,IAAI,2CAA2C,CAAC;AAC3D,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClE,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1C,gBAAgB,MAAM,IAAI,GAAG,EAAE,CAAC;AAChC,gBAAgB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACvC,gBAAgB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE;AAC3B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AAC7B;AACA,YAAY,MAAM,IAAI,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAC7D,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5C;AACA,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,GAAG,IAAI,IAAI,EAAE;AACrC,wBAAwB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,wBAAwB,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,wBAAwB,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;AACtE,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;AACxC,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI;AACZ;AACA,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,IAAI,SAAS,CAAC;AAC9B,gBAAgB,IAAI,OAAO,CAAC;AAC5B,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE;AACjC,oBAAoB,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,wBAAwB,CAAC;AACtD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,GAAG,EAAE;AAChC,oBAAoB,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AACzC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,uBAAuB,CAAC;AACrD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,EAAE,CAAC;AACjC;AACA,gBAAgB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7D,gBAAgB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,oBAAoB,MAAM,GAAG,mCAAmC,CAAC;AACjE,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB;AACA,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC9D;AACA,gBAAgB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACtE,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC;AACA,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACpE,iBAAiB;AACjB;AACA,gBAAgB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACxE,gBAAgB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC;AACA,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACtE,iBAAiB;AACjB;AACA,gBAAgB,MAAM,KAAK,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAgB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3E,gBAAgB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;AACvC,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAClE,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,oBAAoB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAoB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1C,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AACpD,oBAAoB,MAAM,GAAG,CAAC,qBAAqB,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACpF,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,OAAO,0BAA0B;AACrD,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B;AACA,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAClD,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D;AACA,QAAQ,IAAI;AACZ,YAAY,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC3D,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC;AACA;AACA,YAAY,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AAClC,gBAAgB,MAAM,GAAG,GAAG,EAAE,CAAC;AAC/B,gBAAgB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACvC,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,gBAAgB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnC,gBAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;AACxD,oBAAoB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjD,oBAAoB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjD,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1D,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACpD,oBAAoB,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,iBAAiB;AACjB,qBAAqB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE;AAChE,oBAAoB,MAAM,IAAI,GAAG,EAAE,CAAC;AACpC,oBAAoB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,oBAAoB,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,oBAAoB,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC7D,gBAAgB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE;AACrC,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,GAAG,oDAAoD,CAAC;AAC5E,YAAY,IAAI,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACpE,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvC,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3E,YAAY,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,gBAAgB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AACjD,oBAAoB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,wBAAwB,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC9D,4BAA4B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,4BAA4B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC;AAChF,4BAA4B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9D,4BAA4B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9D,4BAA4B,MAAM,KAAK,GAAG,EAAE,CAAC;AAC7C,4BAA4B,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxD,4BAA4B,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACpE,4BAA4B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/C,gCAAgC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAClD,4BAA4B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,MAAM,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;AACpF,4BAA4B,MAAM;AAClC,yBAAyB;AACzB,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,MAAM,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACnF,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,GAAG,oDAAoD,CAAC;AAC5E,YAAY,IAAI,IAAI,CAAC,iCAAiC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACtE,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxC,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5E,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,gBAAgB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAChD,oBAAoB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,wBAAwB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC5D,4BAA4B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,4BAA4B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,4BAA4B,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzD,4BAA4B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACpD,gCAAgC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC;AACzH,6BAA6B;AAC7B,4BAA4B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAChE,gCAAgC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,yCAAyC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,6BAA6B;AAC7B,4BAA4B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtF,4BAA4B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;AAClF,4BAA4B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACpD,gCAAgC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,CAAC;AAC9H,6BAA6B;AAC7B,4BAA4B,IAAI,SAAS,GAAG,EAAE,CAAC;AAC/C,4BAA4B,IAAI,KAAK,GAAG,EAAE,CAAC;AAC3C,4BAA4B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAC5F,gCAAgC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzE,gCAAgC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACxD,oCAAoC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,CAAC;AAC9H,iCAAiC;AACjC,gCAAgC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7D,gCAAgC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,6BAA6B;AAC7B,4BAA4B,MAAM,OAAO,GAAG,EAAE,CAAC;AAC/C,4BAA4B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AAChD,4BAA4B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AAClD,4BAA4B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;AACpD,gCAAgC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9D,4BAA4B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1D,4BAA4B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC9G,yBAAyB;AACzB,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC7G,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC/F,YAAY,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC9B,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAChE,gBAAgB,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC;AACjD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3F,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3E,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,GAAG,GAAG,EAAE,CAAC;AAC/B,gBAAgB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC9C,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC7D,wBAAwB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,aAAa,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAClF,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACnE,gBAAgB,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;AACpD,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACpE,gBAAgB,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACtD,gBAAgB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,aAAa;AACb;AACA,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,IAAI,SAAS,GAAG,EAAE,CAAC;AACnC,gBAAgB,IAAI,OAAO,GAAG,EAAE,CAAC;AACjC,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE;AACjC,oBAAoB,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,wBAAwB,CAAC;AACtD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,GAAG,EAAE;AAChC,oBAAoB,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AACzC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,GAAG,uBAAuB,CAAC;AACrD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC;AAC7C,oBAAoB,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3D,oBAAoB,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;AAClD,oBAAoB,SAAS;AAC7B,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,EAAE,CAAC;AACjC,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAgB,IAAI,OAAO,GAAG,EAAE,CAAC;AACjC,gBAAgB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClC,gBAAgB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACpC,gBAAgB,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;AACxD;AACA,oBAAoB,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC3D,oBAAoB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C;AACA,wBAAwB,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACtE,qBAAqB;AACrB;AACA,oBAAoB,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACpE,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C;AACA,wBAAwB,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACxE,qBAAqB;AACrB;AACA,oBAAoB,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACtE,oBAAoB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C;AACA,wBAAwB,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,qBAAqB;AACrB,iBAAiB;AACjB;AACA,gBAAgB,IAAI,KAAK,GAAG,EAAE,CAAC;AAC/B,gBAAgB,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE;AACvD,oBAAoB,KAAK,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,KAAK;AACzB,wBAAwB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;AACrD,4BAA4B,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjE,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3E;AACA,gBAAgB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;AACvC,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1C,iBAAiB;AACjB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,oBAAoB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAoB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,oBAAoB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1C,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AACpD,oBAAoB,MAAM,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACvF,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE;AAC7C,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACzD,YAAY,IAAI,QAAQ,IAAI,CAAC,EAAE;AAC/B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;AACpF,aAAa;AACb;AACA;AACA,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACrF,YAAY,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AACvC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;AACrF,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACxC,YAAY,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1C,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,SAAS;AACT,KAAK;AACL,IAAI,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClD,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI;AACZ,YAAY,MAAM,WAAW,GAAG,EAAE,CAAC;AACnC,YAAY,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE;AACzC,gBAAgB,IAAI,IAAI,CAAC;AACzB;AACA,gBAAgB,IAAI,IAAI,GAAG,6BAA6B,CAAC;AACzD,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1E,gBAAgB,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AAC1C,oBAAoB,MAAM,GAAG,0BAA0B,GAAG,oBAAoB,CAAC;AAC/E,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzD;AACA,gBAAgB,IAAI,GAAG,iCAAiC,CAAC;AACzD,gBAAgB,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAChE,gBAAgB,IAAI,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC,gBAAgB,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACtE,gBAAgB,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;AACxC,oBAAoB,MAAM;AAC1B,gBAAgB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjE,gBAAgB,IAAI,kBAAkB,KAAK,CAAC,EAAE;AAC9C,oBAAoB,IAAI,GAAG,IAAI,CAAC;AAChC,iBAAiB;AACjB,qBAAqB,IAAI,UAAU,KAAK,kBAAkB,EAAE;AAC5D,oBAAoB,IAAI,GAAG,QAAQ,CAAC;AACpC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,GAAG,UAAU,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AACxC,gBAAgB,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,KAAK;AACL,IAAI,MAAM,sBAAsB,CAAC,IAAI,EAAE;AACvC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtD,QAAQ,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE;AAClD,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,IAAI,GAAG,CAAC;AACpB,YAAY,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,gBAAgB,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;AACrD,oBAAoB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,oBAAoB,CAAC,EAAE,CAAC;AACxB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAChD,YAAY,OAAO,IAAI,IAAI,CAAC;AAC5B,YAAY,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,gBAAgB,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAChF,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AAC3B,QAAQ,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAChC,QAAQ,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;AACpH,KAAK;AACL,CAAC;yBACmB,GAAG,YAAY;;;;;;AChoBnC,MAAM,CAAC,cAAc,CAAC,SAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;mBAC7C,GAAG,KAAK,EAAE;AAC3B,MAAMD,eAAa,GAAGD,WAAwB,CAAC;AAC/C,MAAM,SAAS,CAAC;AAChB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIC,eAAa,CAAC,WAAW,EAAE,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE;AAC9B,QAAQ,IAAI,GAAG,GAAG,uCAAuC,CAAC;AAC1D,QAAQ,GAAG,IAAI,8CAA8C,CAAC;AAC9D,QAAQ,GAAG,IAAI,8BAA8B,CAAC;AAC9C,QAAQ,GAAG,IAAI,+BAA+B,CAAC;AAC/C,QAAQ,GAAG,IAAI,yBAAyB,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACxE,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1C,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE;AAC7B,QAAQ,IAAI,GAAG,GAAG,uCAAuC,CAAC;AAC1D,QAAQ,GAAG,IAAI,2CAA2C,CAAC;AAC3D,QAAQ,GAAG,IAAI,yBAAyB,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACxE,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1C,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE;AACjC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,OAAO;AACxB,gBAAgB,GAAG,GAAG,aAAa,CAAC;AACpC,gBAAgB,MAAM;AACtB,YAAY,KAAK,SAAS;AAC1B,gBAAgB,GAAG,GAAG,cAAc,CAAC;AACrC,gBAAgB,MAAM;AACtB,YAAY,KAAK,OAAO;AACxB,gBAAgB,GAAG,GAAG,YAAY,CAAC;AACnC,gBAAgB,MAAM;AACtB,YAAY,KAAK,MAAM;AACvB,gBAAgB,GAAG,GAAG,WAAW,CAAC;AAClC,gBAAgB,MAAM;AACtB,YAAY;AACZ,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACzF,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,GAAG,uCAAuC,CAAC;AAC3D,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;AACjE,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACxE,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAClD,gBAAgB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtC,gBAAgB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AAC7C,oBAAoB,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3D,oBAAoB,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,oBAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,iBAAiB;AACjB,gBAAgB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC/C,oBAAoB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAChF,oBAAoB,IAAI,MAAM,GAAG,CAAC,EAAE;AACpC,wBAAwB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/E,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACnD;AACA,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9D,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE;AAC1C,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B,QAAQ,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AACzC,YAAY,IAAI,IAAI,GAAG,uBAAuB,CAAC;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AAC7B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAChF,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,SAAS;AACT,KAAK;AACL,CAAC;mBACgB,GAAG,SAAS;;AClJ7B,MAAM,CAAC,cAAc,CAAC,cAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;6BACxC,GAAG,KAAK,EAAE;AAChC,MAAMG,aAAW,GAAGJ,SAAuB,CAAC;AAC5C,MAAMC,eAAa,GAAGE,WAAyB,CAAC;AAChD,MAAMD,aAAW,GAAGG,SAAsB,CAAC;AAC3C,MAAM,cAAc,CAAC;AACrB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIH,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAID,eAAa,CAAC,WAAW,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIG,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC9C,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzC,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3E;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACzD;AACA,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;AAC1C,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,aAAa;AACb;AACA,YAAY,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACpE,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,SAAS;AACT,KAAK;AACL,IAAI,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC1C,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI;AACZ,YAAY,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7D;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC9C,YAAY,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACpE;AACA,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3F,oBAAoB,IAAI,MAAM,GAAG,CAAC;AAClC,wBAAwB,MAAM;AAC9B,oBAAoB,OAAO,GAAG,IAAI,CAAC;AACnC,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACtC,oBAAoB,OAAO,GAAG,KAAK,CAAC;AACpC,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjE,gBAAgB,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;AAC7E,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI;AACZ,YAAY,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7D;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC5C,YAAY,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACrC;AACA,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,oBAAoB,MAAM,GAAG,IAAI,CAAC;AAClC,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACtC,oBAAoB,MAAM,GAAG,KAAK,CAAC;AACnC,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjE,gBAAgB,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;AAC7E,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;6BACqB,GAAG,cAAc;;;;ACvJvC,MAAM,CAAC,cAAc,CAAC,SAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;mBAC7C,GAAG,KAAK,EAAE;AAC3B,MAAM,SAAS,CAAC;AAChB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACvB,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAGJ,gCAAe,CAAC;AACpC,QAAQ,IAAI,CAAC,MAAM,GAAGG,8BAAa,CAAC;AACpC,QAAQ,IAAI,CAAC,EAAE,GAAGE,8BAAa,CAAC;AAChC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;AACzC,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC;AAC9B,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC;AACrB,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AACrF,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AAChD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC3B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC;AACxB,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClD,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAC3B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC;AACvD,YAAY,GAAG,GAAG,KAAK,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC3B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC;AACxB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAY,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9C,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;AACrC,QAAQ,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvE,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzF,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvG,YAAY,IAAI,CAAC,IAAI;AACrB,gBAAgB,OAAO,GAAG,EAAE,CAAC;AAC7B,SAAS;AACT,aAAa;AACb,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAC3G,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AAClD,QAAQ,MAAM,GAAG,GAAG,MAAM,KAAK,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AACxD,QAAQ,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5F,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAY,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,KAAK,IAAI,WAAW,EAAE;AACtC,gBAAgB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC;AAC9D,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,IAAI,EAAE;AAC5B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxD,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC;AACvB,QAAQ,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACpC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK;AAChD,gBAAgB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,uBAAuB,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,EAAE,CAAC,CAAC;AACzE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC;AAClE,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7C,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC7C;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9D,gBAAgB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,UAAU,CAAC,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC7C,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvD,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC1D,oBAAoB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnE,oBAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC/F,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,UAAU,CAAC,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL,IAAI,MAAM,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;AACvD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE;AACnC;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACpD,gBAAgB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/G,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,QAAQ,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE;AACnC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvD,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrD,oBAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC/C;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAChE,gBAAgB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5F,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC/C,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvD,YAAY,IAAI,MAAM,EAAE;AACxB;AACA,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC1D,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACjE,oBAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACjG,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;AACnF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC5C,QAAQ,MAAM,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACvD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvD,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACxD,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACnE,oBAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACrG,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAClG,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,MAAM,EAAE;AACrC,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjD,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,GAAG,GAAG,IAAI,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAClD,YAAY,GAAG,GAAG,KAAK,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,SAAS,EAAE;AACnC,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,YAAY,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAClE,kBAAkB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;AAChD,kBAAkB,IAAI,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO;AACf,KAAK;AACL,CAAC;mBACgB,GAAG,SAAS;;;;ACnX7B,MAAM,CAAC,cAAc,CAAC,YAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC1C,GAAG,KAAK,EAAE;AAC9B,MAAMH,aAAW,GAAGF,SAAuC,CAAC;AAC5D,MAAM,WAAW,GAAGG,SAAsB,CAAC;AAC3C,MAAMG,aAAW,GAAGD,SAAsB,CAAC;AAC3C,MAAMJ,eAAa,GAAGM,WAAwB,CAAC;AAC/C,MAAM,YAAY,CAAC;AACnB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIN,eAAa,CAAC,WAAW,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIK,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIJ,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE;AACtE,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE;AAC7B,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7C,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;AACnF,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAChD,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7C,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;AACnF,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAChD,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC;AACzB,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,gBAAgB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAClC,aAAa;AACb,YAAY,IAAI,aAAa,GAAG,SAAS,EAAE;AAC3C,gBAAgB,IAAI,GAAG,GAAG,2BAA2B,CAAC;AACtD,gBAAgB,GAAG,IAAI,qCAAqC,CAAC;AAC7D,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;AACpE,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AACpE,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;AACpD,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,IAAI;AAChB;AACA,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChF,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3E,gBAAgB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACvE;AACA;AACA,gBAAgB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,oBAAoB,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,wBAAwB,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1E,qBAAqB;AACrB,iBAAiB;AACjB;AACA,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/E,gBAAgB,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;AACnF,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC7E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE;AAClD,QAAQ,IAAI;AACZ;AACA;AACA,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACzC;AACA,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACzD;AACA,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC3D;AACA,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACxE,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AAC7B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,aAAa,CAAC,CAAC,CAAC;AAC9F,aAAa;AACb;AACA,YAAY,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC9C;AACA,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,gBAAgB,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpD,aAAa;AACb;AACA,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACrE;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACnC,YAAY,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACrC,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE;AACjD,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpE,YAAY,IAAI,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC,CAAC,CAAC;AACvF,aAAa;AACb;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC3D;AACA,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAClF,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACtE,gBAAgB,IAAI,IAAI,GAAG,wBAAwB,CAAC;AACpD,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;AAC7D,gBAAgB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,gBAAgB,IAAI,OAAO,GAAG,CAAC,EAAE;AACjC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5F,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE;AAC5B,QAAQ,MAAM,GAAG,GAAG,gBAAgB,CAAC;AACrC,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACjE,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvD,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D;AACA,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxE,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AACrD;AACA,YAAY,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzE,YAAY,IAAI,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAgB,IAAI,GAAG,GAAG,yBAAyB,CAAC;AACpD,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrE,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE;AAC9C,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3D,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,gBAAgB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC9C,oBAAoB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,GAAG,EAAE;AACjC,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACjE,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,sBAAsB,CAAC,CAAC,CAAC;AACrG,aAAa;AACb,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxC;AACA,gBAAgB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9E;AACA,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1C,oBAAoB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/G,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE;AAC/B,QAAQ,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;AACtC,YAAY,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACtC,YAAY,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,YAAY,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,aAAa;AACb,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,GAAG,EAAE;AACnC,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D,YAAY,MAAM,UAAU,GAAG,EAAE,CAAC;AAClC,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AAChC,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,gBAAgB,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAgB,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AACxC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAgB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AAC7B,gBAAgB,IAAI,GAAG,GAAG,uBAAuB,GAAG,aAAa,CAAC;AAClE,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrE,oBAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,KAAK;AACL,CAAC;yBACmB,GAAG,YAAY;;AC1TnC,MAAM,CAAC,cAAc,CAACM,UAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;mBAC9C,GAAG,KAAK,EAAE;AAC1B,MAAM,cAAc,GAAGR,YAA0C,CAAC;AAClE,MAAM,gBAAgB,GAAGG,cAA4C,CAAC;AACtE,MAAMD,aAAW,GAAGG,SAAuC,CAAC;AAC5D;AACA,MAAMC,aAAW,GAAGC,SAAsB,CAAC;AAC3C,MAAM,aAAa,GAAGE,WAAwB,CAAC;AAC/C,MAAM,cAAc,GAAGC,YAAyB,CAAC;AACjD,MAAM,QAAQ,CAAC;AACf,IAAI,WAAW,CAAC,MAAM;AACtB;AACA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIJ,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIJ,aAAW,CAAC,SAAS,EAAE,CAAC;AAClD;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,EAAE,CAAC;AAC7D,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;AACzD,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9B;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,MAAM,CAAC,CAAC;AACtE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B;AACA,QAAQ,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO;AAC7E,wBAAwB,CAAC;AACzB,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,YAAY,IAAI,IAAI,CAAC,QAAQ,GAAG,UAAU,EAAE;AAC5C,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,gBAAgB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,oBAAoB,IAAI;AACxB;AACA,wBAAwB,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvH;AACA,wBAAwB,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,EAAE;AAChC;AACA,wBAAwB,IAAI;AAC5B,4BAA4B,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtF,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,EAAE;AACpC,4BAA4B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjF,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,EAAE;AAChC,wBAAwB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,IAAI,CAAC,SAAS;AAC9B,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7B,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACjD,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AACrC,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,IAAI,GAAG,GAAG,4BAA4B,CAAC;AAC3D,oBAAoB,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvC,gBAAgB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACjD,YAAY,IAAI;AAChB,gBAAgB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnD,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,IAAI,IAAI,CAAC,SAAS;AAClC,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC;AACjC,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE;AAC3B;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzC;AACA,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACvE,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACzD,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3D,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,SAAS,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjE,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACvF,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,MAAM,GAAG,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC1F,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACrE,gBAAgB,IAAI,KAAK,GAAG,CAAC;AAC7B;AACA;AACA;AACA,8BAA8B,CAAC,CAAC;AAChC,gBAAgB,KAAK,IAAI,CAAC;AAC1B,6BAA6B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAgB,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxE,gBAAgB,IAAI,OAAO,GAAG,CAAC,EAAE;AACjC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC;AAC5F,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAC1E,YAAY,IAAI,IAAI,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAC5D,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;AAC7C,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzE,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AAC7B,gBAAgB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AACxE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACxC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AACpF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,YAAY,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC9B,gBAAgB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC9C,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;AACtE,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAClF,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxE,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AAC7B,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC5E,aAAa;AACb,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjF,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI;AAChB,gBAAgB,IAAI,WAAW;AAC/B,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvF,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAChF,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE;AACjD,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AACnD,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI;AACZ,YAAY,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE;AACA,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACxF,YAAY,IAAI,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAgB,IAAI,WAAW;AAC/B,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvF,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjF,YAAY,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC;AACtF,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACnF,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AACnD,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI;AACZ,YAAY,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE;AACA,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3E,YAAY,IAAI,WAAW;AAC3B,gBAAgB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjF,YAAY,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC;AACtF,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC;AAC5B,YAAY,IAAI;AAChB,gBAAgB,IAAI,WAAW;AAC/B,oBAAoB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvF,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,QAAQ,EAAE;AAC/B,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI;AAChB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnE;AACA,oBAAoB,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3F,oBAAoB,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE;AACvC;AACA,wBAAwB,OAAO,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC5F,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE;AACA,oBAAoB,OAAO,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnF,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAC/E,SAAS;AACT,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AACvC,QAAQ,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AACjC,QAAQ,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI;AAChB,gBAAgB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzF,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClE,gBAAgB,IAAI,OAAO,EAAE;AAC7B,oBAAoB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;AACtF,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAC/E,SAAS;AACT,KAAK;AACL,CAAC;mBACe,GAAG,QAAQ;;AC5e3B,MAAM,CAAC,cAAc,CAAC,GAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;6CACvC,GAAG,KAAK,EAAE;AACjC,MAAM,UAAU,GAAGF,UAAoC,CAAC;AACxD,MAAM,WAAW,GAAGG,SAAsD,CAAC;AAC3E,MAAM,WAAW,GAAGE,SAAqC,CAAC;AAC1D,MAAM,eAAe,CAAC;AACtB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;AAClD,KAAK;AACL,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,mBAAmB,CAAC,OAAO,EAAE;AACvC,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,sBAAsB,CAAC,OAAO,EAAE;AAC1C,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,gBAAgB,CAAC,OAAO,EAAE;AACpC,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5D,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAChE,YAAY,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW;AACpE;AACA;AACA;AACA,YAAY,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AACvC,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,qCAAqC;AACvE,gBAAgB,2BAA2B;AAC3C,gBAAgB,MAAM,CAAC,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE;AAC5B;AACA,YAAY,IAAI;AAChB,gBAAgB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AAClC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,kCAAkC;AACxE,oBAAoB,QAAQ;AAC5B,oBAAoB,MAAM;AAC1B,oBAAoB,UAAU;AAC9B,oBAAoB,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,aAAa;AACb,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC;AACvB,QAAQ,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAClC,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACnD,YAAY,MAAM,GAAG,GAAG,EAAE,CAAC;AAC3B,YAAY,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AAClC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7E,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC9C,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC/C,cAAc,OAAO,CAAC,WAAW;AACjC,cAAc,IAAI,CAAC;AACnB,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACtE,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;AACzB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACpE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACtE,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,SAAS;AACT,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;AAC5C,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC/C,cAAc,OAAO,CAAC,WAAW;AACjC,cAAc,IAAI,CAAC;AACnB,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACvF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;AAC7C,YAAY,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,EAAE;AACjE,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,oCAAoC,GAAG,6BAA6B,CAAC,CAAC;AAC5G,aAAa;AACb,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACxE,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;AACzB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACzD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,KAAK;AACL,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE;AACvB,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3E,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AACvE,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC/C,cAAc,OAAO,CAAC,WAAW;AACjC,cAAc,IAAI,CAAC;AACnB,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACzE,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3E,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AACvE,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI;AACZ,YAAY,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACzD,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,0CAA0C,GAAG,iBAAiB,GAAG,MAAM,CAAC,CAAC;AAC3G,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;AACxE,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC;AAC/B,YAAY,MAAM,EAAE,QAAQ;AAC5B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,QAAQ,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,wCAAwC,GAAG,iBAAiB,GAAG,MAAM,CAAC,CAAC;AACzG,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC5C,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;AACxE,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC;AAC/B,YAAY,MAAM,EAAE,QAAQ;AAC5B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,6CAA6C;AAC/E,gBAAgB,iBAAiB;AACjC,gBAAgB,MAAM,CAAC,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3D,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8CAA8C,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChG,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;AACrD,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5D,SAAS;AACT,KAAK;AACL,IAAI,MAAM,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC9C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACrE,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC9C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC;AACjC,QAAQ,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACvD,QAAQ,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrF;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM;AAClD,8BAA8B,SAAS,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B;AACA,YAAY,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3D;AACA,YAAY,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC9C,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;AAClD,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,4CAA4C,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9F,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzD,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC1C,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACxD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,+CAA+C,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACjG,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;AACpD,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC1C,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC5C,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;AAChD,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,mBAAmB,CAAC,OAAO,EAAE;AACvC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AACzC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACvC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC;AAC5F,SAAS;AACT,QAAQ,IAAI,OAAO,OAAO,CAAC,WAAW,IAAI,QAAQ,EAAE;AACpD,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;AAChD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACjD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,cAAc,GAAG;AAC3B;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAClE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAC3D,QAAQ,IAAI,GAAG,EAAE;AACjB;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAGvE,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK;AACzC;AACA,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAE3D;AACA,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpE,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC;AAC5F,SAAS;AACT,KAAK;AACL,IAAI,MAAM,eAAe,GAAG;AAC5B;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC5D;AACA,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAClE,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC;AACvE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,MAAM,kBAAkB,CAAC,OAAO,EAAE;AACtC,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,MAAM,2BAA2B,CAAC,OAAO,EAAE;AAC/C,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACxC,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC;AACvB,QAAQ,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI;AACZ,YAAY,IAAI,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,YAAY,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AACtD,YAAY,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE;AAC7C,gBAAgB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE;AAC/D,gBAAgB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE;AAC/D,gBAAgB,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AACpD,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5E,wBAAwB,MAAM,GAAG,GAAG,EAAE,CAAC;AACvC,wBAAwB,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC3C,wBAAwB,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACxD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,YAAY,IAAI,gBAAgB,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE;AACjE,gBAAgB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AACtG,gBAAgB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;AAC3C,oBAAoB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AACtC,oBAAoB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,oBAAoB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,6BAA6B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,KAAK;AACL,IAAI,MAAM,WAAW,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI;AACZ,YAAY,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpC,gBAAgB,MAAM,GAAG,GAAG,EAAE,CAAC;AAC/B,gBAAgB,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;AACnC,gBAAgB,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAChD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjE,SAAS;AACT,KAAK;AACL,IAAI,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE;AAC1C,QAAQ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACjC,YAAY,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACtC,gBAAgB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,KAAK;AACL,CAAC;AACDM,6CAAuB,GAAG,eAAe;;;;"}
@@ -36,7 +36,7 @@ enum CapacitorSQLiteError: Error {
36
36
  } catch UtilsSecretError.setEncryptionSecret(let message) {
37
37
  throw CapacitorSQLiteError.failed(message: message)
38
38
  } catch let error {
39
- throw CapacitorSQLiteError.failed(message: error.localizedDescription)
39
+ throw CapacitorSQLiteError.failed(message: "\(error)")
40
40
  }
41
41
  }
42
42
 
@@ -53,7 +53,7 @@ enum CapacitorSQLiteError: Error {
53
53
  } catch UtilsSecretError.changeEncryptionSecret(let message) {
54
54
  throw CapacitorSQLiteError.failed(message: message)
55
55
  } catch let error {
56
- throw CapacitorSQLiteError.failed(message: error.localizedDescription)
56
+ throw CapacitorSQLiteError.failed(message: "\(error)")
57
57
  }
58
58
 
59
59
  }
@@ -81,7 +81,7 @@ enum CapacitorSQLiteError: Error {
81
81
  dbDict[mDbName] = mDb
82
82
  return
83
83
  } catch let error {
84
- throw CapacitorSQLiteError.failed(message: error.localizedDescription)
84
+ throw CapacitorSQLiteError.failed(message: "\(error)")
85
85
  }
86
86
  }
87
87
 
@@ -190,7 +190,7 @@ enum CapacitorSQLiteError: Error {
190
190
  return 0
191
191
  }
192
192
  } catch let error {
193
- throw CapacitorSQLiteError.failed(message: error.localizedDescription)
193
+ throw CapacitorSQLiteError.failed(message: "\(error)")
194
194
  }
195
195
  }
196
196
  // MARK: - IsDatabase
@@ -229,7 +229,7 @@ enum CapacitorSQLiteError: Error {
229
229
  throw CapacitorSQLiteError.failed(message: msg)
230
230
  } catch let error {
231
231
  var msg: String = "IsTableExists:"
232
- msg.append(" \(error.localizedDescription)")
232
+ msg.append(" \(error)")
233
233
  throw CapacitorSQLiteError.failed(message: msg)
234
234
  }
235
235
  }
@@ -264,7 +264,7 @@ enum CapacitorSQLiteError: Error {
264
264
  } catch DatabaseError.executeSQL(let message) {
265
265
  throw CapacitorSQLiteError.failed(message: message)
266
266
  } catch let error {
267
- let msg: String = "\(error.localizedDescription)"
267
+ let msg: String = "\(error)"
268
268
  throw CapacitorSQLiteError.failed(message: msg)
269
269
  }
270
270
  } else {
@@ -290,7 +290,7 @@ enum CapacitorSQLiteError: Error {
290
290
  } catch DatabaseError.execSet(let message) {
291
291
  throw CapacitorSQLiteError.failed(message: message)
292
292
  } catch let error {
293
- let msg: String = "\(error.localizedDescription)"
293
+ let msg: String = "\(error)"
294
294
  throw CapacitorSQLiteError.failed(message: msg)
295
295
  }
296
296
  } else {
@@ -339,7 +339,7 @@ enum CapacitorSQLiteError: Error {
339
339
  } catch DatabaseError.runSQL(let message) {
340
340
  throw CapacitorSQLiteError.failed(message: message)
341
341
  } catch let error {
342
- let msg: String = "\(error.localizedDescription)"
342
+ let msg: String = "\(error)"
343
343
  throw CapacitorSQLiteError.failed(message: msg)
344
344
  }
345
345
  } else {
@@ -366,7 +366,7 @@ enum CapacitorSQLiteError: Error {
366
366
  } catch DatabaseError.selectSQL(let message) {
367
367
  throw CapacitorSQLiteError.failed(message: message)
368
368
  } catch let error {
369
- let msg: String = "\(error.localizedDescription)"
369
+ let msg: String = "\(error)"
370
370
  throw CapacitorSQLiteError.failed(message: msg)
371
371
  }
372
372
  } else {
@@ -434,7 +434,7 @@ enum CapacitorSQLiteError: Error {
434
434
  } catch DatabaseError.deleteDB(let message) {
435
435
  throw CapacitorSQLiteError.failed(message: message)
436
436
  } catch let error {
437
- let msg: String = "\(error.localizedDescription)"
437
+ let msg: String = "\(error)"
438
438
  throw CapacitorSQLiteError.failed(message: msg)
439
439
  }
440
440
  }
@@ -449,7 +449,7 @@ enum CapacitorSQLiteError: Error {
449
449
  from: data)
450
450
  return
451
451
  } catch let error {
452
- let msg: String = "\(error.localizedDescription)"
452
+ let msg: String = "\(error)"
453
453
  throw CapacitorSQLiteError.failed(message: msg)
454
454
  }
455
455
  } else {
@@ -471,7 +471,7 @@ enum CapacitorSQLiteError: Error {
471
471
  .decode([JsonSQLite].self, from: data)
472
472
  } catch let error {
473
473
  var msg: String = "Stringify Json Object not Valid "
474
- msg.append("\(error.localizedDescription)")
474
+ msg.append("\(error)")
475
475
  throw CapacitorSQLiteError.failed(message: msg)
476
476
  }
477
477
  let encrypted: Bool = jsonSQLite[0].encrypted
@@ -489,7 +489,7 @@ enum CapacitorSQLiteError: Error {
489
489
  } catch DatabaseError.open(let message) {
490
490
  throw CapacitorSQLiteError.failed(message: message)
491
491
  } catch let error {
492
- let msg: String = "\(error.localizedDescription)"
492
+ let msg: String = "\(error)"
493
493
  throw CapacitorSQLiteError.failed(message: msg)
494
494
  }
495
495
  // import from Json Object
@@ -542,7 +542,7 @@ enum CapacitorSQLiteError: Error {
542
542
  do {
543
543
  let res: [String: Any] = try
544
544
  mDb.exportToJson(expMode: expMode)
545
- if res.count == 5 {
545
+ if res.count == 5 || res.count == 6 {
546
546
  return res
547
547
  } else {
548
548
  var msg: String = "return Object is not a "
@@ -552,7 +552,7 @@ enum CapacitorSQLiteError: Error {
552
552
  } catch DatabaseError.exportToJson(let message) {
553
553
  throw CapacitorSQLiteError.failed(message: message)
554
554
  } catch let error {
555
- let msg: String = "\(error.localizedDescription)"
555
+ let msg: String = "\(error)"
556
556
  throw CapacitorSQLiteError.failed(message: msg)
557
557
  }
558
558
  } else {
@@ -576,7 +576,7 @@ enum CapacitorSQLiteError: Error {
576
576
  } catch DatabaseError.createSyncTable(let message) {
577
577
  throw CapacitorSQLiteError.failed(message: message)
578
578
  } catch let error {
579
- let msg: String = "\(error.localizedDescription)"
579
+ let msg: String = "\(error)"
580
580
  throw CapacitorSQLiteError.failed(message: msg)
581
581
  }
582
582
  } else {
@@ -608,7 +608,7 @@ enum CapacitorSQLiteError: Error {
608
608
  } catch DatabaseError.createSyncDate(let message) {
609
609
  throw CapacitorSQLiteError.failed(message: message)
610
610
  } catch let error {
611
- let msg: String = "\(error.localizedDescription)"
611
+ let msg: String = "\(error)"
612
612
  throw CapacitorSQLiteError.failed(message: msg)
613
613
  }
614
614
  } else {
@@ -637,7 +637,7 @@ enum CapacitorSQLiteError: Error {
637
637
  } catch DatabaseError.getSyncDate(let message) {
638
638
  throw CapacitorSQLiteError.failed(message: message)
639
639
  } catch let error {
640
- let msg: String = "\(error.localizedDescription)"
640
+ let msg: String = "\(error)"
641
641
  throw CapacitorSQLiteError.failed(message: msg)
642
642
  }
643
643
  } else {
@@ -706,7 +706,7 @@ enum CapacitorSQLiteError: Error {
706
706
  throw CapacitorSQLiteError.failed(message: msg)
707
707
  }
708
708
  } catch let error {
709
- let msg: String = "\(error.localizedDescription)"
709
+ let msg: String = "\(error)"
710
710
  throw CapacitorSQLiteError.failed(message: msg)
711
711
  }
712
712
  }
@@ -721,7 +721,7 @@ enum CapacitorSQLiteError: Error {
721
721
  return dbList
722
722
 
723
723
  } catch let error {
724
- let msg: String = "\(error.localizedDescription)"
724
+ let msg: String = "\(error)"
725
725
  throw CapacitorSQLiteError.failed(message: msg)
726
726
  }
727
727
 
@@ -741,7 +741,7 @@ enum CapacitorSQLiteError: Error {
741
741
 
742
742
  } catch let error {
743
743
  var msg: String = "addSQLiteSuffix:"
744
- msg.append(" \(error.localizedDescription)")
744
+ msg.append(" \(error)")
745
745
  throw CapacitorSQLiteError.failed(message: msg)
746
746
  }
747
747
  }
@@ -759,7 +759,7 @@ enum CapacitorSQLiteError: Error {
759
759
 
760
760
  } catch let error {
761
761
  var msg: String = "deleteOldDatabases:"
762
- msg.append(" \(error.localizedDescription)")
762
+ msg.append(" \(error)")
763
763
  throw CapacitorSQLiteError.failed(message: msg)
764
764
  }
765
765
 
@@ -47,7 +47,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
47
47
  } catch let error {
48
48
  retHandler.rResult(
49
49
  call: call,
50
- message: "IsSecretStored: \(error.localizedDescription)")
50
+ message: "IsSecretStored: \(error)")
51
51
  return
52
52
  }
53
53
 
@@ -74,7 +74,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
74
74
  } catch let error {
75
75
  retHandler.rResult(
76
76
  call: call,
77
- message: "SetEncryptionSecret: \(error.localizedDescription)")
77
+ message: "SetEncryptionSecret: \(error)")
78
78
  return
79
79
  }
80
80
  }
@@ -106,7 +106,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
106
106
  } catch let error {
107
107
  retHandler.rResult(
108
108
  call: call,
109
- message: "ChangeEncryptionSecret: \(error.localizedDescription)")
109
+ message: "ChangeEncryptionSecret: \(error)")
110
110
  return
111
111
  }
112
112
  }
@@ -149,7 +149,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
149
149
  } catch let error {
150
150
  retHandler.rResult(
151
151
  call: call,
152
- message: "CreateConnection: \(error.localizedDescription)")
152
+ message: "CreateConnection: \(error)")
153
153
  return
154
154
  }
155
155
  }
@@ -174,7 +174,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
174
174
  } catch let error {
175
175
  retHandler.rResult(
176
176
  call: call,
177
- message: "Open: \(error.localizedDescription)")
177
+ message: "Open: \(error)")
178
178
  return
179
179
  }
180
180
  }
@@ -199,7 +199,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
199
199
  } catch let error {
200
200
  retHandler.rResult(
201
201
  call: call,
202
- message: "Close: \(error.localizedDescription)")
202
+ message: "Close: \(error)")
203
203
  return
204
204
  }
205
205
  }
@@ -224,7 +224,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
224
224
  } catch let error {
225
225
  retHandler.rVersion(
226
226
  call: call,
227
- message: "GetVersion: \(error.localizedDescription)")
227
+ message: "GetVersion: \(error)")
228
228
  return
229
229
  }
230
230
  }
@@ -249,7 +249,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
249
249
  } catch let error {
250
250
  retHandler.rResult(
251
251
  call: call,
252
- message: "CloseConnection: \(error.localizedDescription)")
252
+ message: "CloseConnection: \(error)")
253
253
  return
254
254
  }
255
255
 
@@ -276,7 +276,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
276
276
  } catch let error {
277
277
  retHandler.rResult(
278
278
  call: call,
279
- message: "CheckConnectionsConsistency: \(error.localizedDescription)")
279
+ message: "CheckConnectionsConsistency: \(error)")
280
280
  return
281
281
  }
282
282
  }
@@ -304,7 +304,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
304
304
  } catch let error {
305
305
  retHandler.rResult(
306
306
  call: call,
307
- message: "isDatabase: \(error.localizedDescription)")
307
+ message: "isDatabase: \(error)")
308
308
  return
309
309
  }
310
310
 
@@ -339,7 +339,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
339
339
  } catch let error {
340
340
  retHandler.rResult(
341
341
  call: call,
342
- message: "IsTableExists: \(error.localizedDescription)")
342
+ message: "IsTableExists: \(error)")
343
343
  return
344
344
  }
345
345
  }
@@ -360,7 +360,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
360
360
  } catch let error {
361
361
  retHandler.rValues(
362
362
  call: call, ret: [],
363
- message: "getDatabaseList: \(error.localizedDescription)")
363
+ message: "getDatabaseList: \(error)")
364
364
  return
365
365
  }
366
366
  }
@@ -380,7 +380,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
380
380
  } catch let error {
381
381
  retHandler.rResult(
382
382
  call: call,
383
- message: "AddSQLiteSuffix: \(error.localizedDescription)")
383
+ message: "AddSQLiteSuffix: \(error)")
384
384
  return
385
385
  }
386
386
  }
@@ -401,7 +401,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
401
401
  } catch let error {
402
402
  retHandler.rResult(
403
403
  call: call,
404
- message: "DeleteOldDatabases: \(error.localizedDescription)")
404
+ message: "DeleteOldDatabases: \(error)")
405
405
  return
406
406
  }
407
407
  }
@@ -438,7 +438,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
438
438
  } catch let error {
439
439
  retHandler.rChanges(
440
440
  call: call, ret: ["changes": -1],
441
- message: "Execute: \(error.localizedDescription)")
441
+ message: "Execute: \(error)")
442
442
  return
443
443
  }
444
444
 
@@ -494,7 +494,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
494
494
  } catch let error {
495
495
  retHandler.rChanges(
496
496
  call: call, ret: ["changes": -1],
497
- message: "ExecuteSet: \(error.localizedDescription)")
497
+ message: "ExecuteSet: \(error)")
498
498
  return
499
499
  }
500
500
 
@@ -543,7 +543,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
543
543
  } catch let error {
544
544
  retHandler.rChanges(
545
545
  call: call, ret: ["changes": -1],
546
- message: "Run: \(error.localizedDescription)")
546
+ message: "Run: \(error)")
547
547
  return
548
548
  }
549
549
 
@@ -592,7 +592,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
592
592
  } catch let error {
593
593
  retHandler.rValues(
594
594
  call: call, ret: [],
595
- message: "Query: \(error.localizedDescription)")
595
+ message: "Query: \(error)")
596
596
  return
597
597
  }
598
598
 
@@ -623,7 +623,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
623
623
  } catch let error {
624
624
  retHandler.rResult(
625
625
  call: call,
626
- message: "isDBExists: \(error.localizedDescription)")
626
+ message: "isDBExists: \(error)")
627
627
  return
628
628
  }
629
629
 
@@ -653,7 +653,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
653
653
  } catch let error {
654
654
  retHandler.rResult(
655
655
  call: call,
656
- message: "isDBOpen: \(error.localizedDescription)")
656
+ message: "isDBOpen: \(error)")
657
657
  return
658
658
  }
659
659
  }
@@ -676,7 +676,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
676
676
  retHandler.rResult(call: call, message: msg)
677
677
  return
678
678
  } catch let error {
679
- let msg = "deleteDatabase: \(error.localizedDescription)"
679
+ let msg = "deleteDatabase: \(error)"
680
680
  retHandler.rResult(call: call, message: msg)
681
681
  return
682
682
  }
@@ -701,7 +701,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
701
701
  retHandler.rResult(call: call, message: msg)
702
702
  return
703
703
  } catch let error {
704
- let msg = "isJsonValid: \(error.localizedDescription)"
704
+ let msg = "isJsonValid: \(error)"
705
705
  retHandler.rResult(call: call, message: msg)
706
706
  return
707
707
  }
@@ -728,7 +728,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
728
728
  return
729
729
  } catch let error {
730
730
  let msg = "importFromJson: " +
731
- "\(error.localizedDescription)"
731
+ "\(error)"
732
732
  retHandler.rChanges(
733
733
  call: call, ret: ["changes": -1],
734
734
  message: msg)
@@ -774,7 +774,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
774
774
  message: msg)
775
775
  return
776
776
  } catch let error {
777
- let msg = "exportToJson: \(error.localizedDescription)"
777
+ let msg = "exportToJson: \(error)"
778
778
  retHandler.rJsonSQLite(call: call, ret: [:],
779
779
  message: msg)
780
780
  return
@@ -804,7 +804,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
804
804
  message: msg)
805
805
  return
806
806
  } catch let error {
807
- let msg = "createSyncTable: \(error.localizedDescription)"
807
+ let msg = "createSyncTable: \(error)"
808
808
  retHandler.rChanges(call: call, ret: ["changes": -1],
809
809
  message: msg)
810
810
  return
@@ -836,7 +836,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
836
836
  retHandler.rResult(call: call, message: msg)
837
837
  return
838
838
  } catch let error {
839
- let msg = "setSyncDate: \(error.localizedDescription)"
839
+ let msg = "setSyncDate: \(error)"
840
840
  retHandler.rResult(call: call, message: msg)
841
841
  return
842
842
  }
@@ -861,7 +861,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
861
861
  retHandler.rSyncDate(call: call, ret: 0, message: msg)
862
862
  return
863
863
  } catch let error {
864
- let msg = "getSyncDate: \(error.localizedDescription)"
864
+ let msg = "getSyncDate: \(error)"
865
865
  retHandler.rSyncDate(call: call, ret: 0, message: msg)
866
866
  return
867
867
  }
@@ -896,7 +896,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
896
896
  return
897
897
  } catch let error {
898
898
  var msg = "addUpgradeStatement: "
899
- msg.append("\(error.localizedDescription)")
899
+ msg.append("\(error)")
900
900
  retHandler.rResult(call: call, message: msg)
901
901
  return
902
902
  }
@@ -914,7 +914,7 @@ public class CapacitorSQLitePlugin: CAPPlugin {
914
914
  retHandler.rResult(call: call, message: msg)
915
915
  return
916
916
  } catch let error {
917
- let msg = "copyFromAssets: \(error.localizedDescription)"
917
+ let msg = "copyFromAssets: \(error)"
918
918
  retHandler.rResult(call: call, message: msg)
919
919
  return
920
920
  }
@@ -477,24 +477,35 @@ class Database {
477
477
 
478
478
  func importFromJson(jsonSQLite: JsonSQLite)
479
479
  throws -> [String: Int] {
480
- var changes: Int = -1
480
+ var changes: Int = 0
481
481
 
482
482
  // Create the Database Schema
483
483
  do {
484
- changes = try ImportFromJson
485
- .createDatabaseSchema(mDB: self,
486
- jsonSQLite: jsonSQLite)
487
- if changes != -1 {
488
- // Create the Database Data
484
+ if jsonSQLite.tables.count > 0 {
489
485
  changes = try ImportFromJson
490
- .createDatabaseData(mDB: self,
491
- jsonSQLite: jsonSQLite)
486
+ .createDatabaseSchema(mDB: self,
487
+ jsonSQLite: jsonSQLite)
488
+ if changes != -1 {
489
+ // Create the Database Data
490
+ changes += try ImportFromJson
491
+ .createDatabaseData(mDB: self,
492
+ jsonSQLite: jsonSQLite)
493
+ }
494
+ }
495
+ if let mViews = jsonSQLite.views {
496
+ if mViews.count > 0 {
497
+ changes += try ImportFromJson
498
+ .createViews(mDB: self, views: mViews)
499
+ }
492
500
  }
501
+
493
502
  return ["changes": changes]
494
503
  } catch ImportFromJsonError.createDatabaseSchema(let message) {
495
504
  throw DatabaseError.importFromJson(message: message)
496
505
  } catch ImportFromJsonError.createDatabaseData(let message) {
497
506
  throw DatabaseError.importFromJson(message: message)
507
+ } catch ImportFromJsonError.createViews(let message) {
508
+ throw DatabaseError.importFromJson(message: message)
498
509
  }
499
510
  }
500
511
  }