@ldsg/cli 0.1.0-alpha.9 → 0.3.25

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 (63) hide show
  1. package/.rush/temp/chunked-rush-logs/cli.build.chunks.jsonl +1 -0
  2. package/.rush/temp/package-deps_build.json +18 -0
  3. package/.rush/temp/shrinkwrap-deps.json +373 -0
  4. package/CHANGELOG.json +31 -0
  5. package/CHANGELOG.md +11 -0
  6. package/Dockerfile +21 -0
  7. package/README.md +61 -2
  8. package/dist/cli.d.ts +2 -0
  9. package/dist/cli.js +54 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/commands/fetch-app-data.d.ts +2 -0
  12. package/dist/commands/fetch-app-data.js +40 -0
  13. package/dist/commands/fetch-app-data.js.map +1 -0
  14. package/dist/commands/prepare-app-code.d.ts +2 -0
  15. package/dist/commands/prepare-app-code.js +42 -0
  16. package/dist/commands/prepare-app-code.js.map +1 -0
  17. package/dist/constants.d.ts +1 -0
  18. package/dist/constants.js +5 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/debug/constants.d.ts +2 -0
  21. package/dist/debug/constants.js +10 -0
  22. package/dist/debug/constants.js.map +1 -0
  23. package/dist/tsconfig.build.tsbuildinfo +1 -0
  24. package/dist/tsconfig.tsbuildinfo +1 -0
  25. package/dist/types/get-extend-app-data-params.d.ts +7 -0
  26. package/dist/types/get-extend-app-data-params.js +3 -0
  27. package/dist/types/get-extend-app-data-params.js.map +1 -0
  28. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.d.ts +2 -0
  29. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.js +43 -0
  30. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.js.map +1 -0
  31. package/dist/utils/get-extend-app-data-params-using-npm-module.d.ts +2 -0
  32. package/dist/utils/get-extend-app-data-params-using-npm-module.js +30 -0
  33. package/dist/utils/get-extend-app-data-params-using-npm-module.js.map +1 -0
  34. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/constants.d.ts +1 -0
  35. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/constants.js +9 -0
  36. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/constants.js.map +1 -0
  37. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.d.ts +2 -0
  38. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.js +88 -0
  39. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.js.map +1 -0
  40. package/dist/utils/get-extend-app-data-params-using-workspace-module/constants.d.ts +1 -0
  41. package/dist/utils/get-extend-app-data-params-using-workspace-module/constants.js +9 -0
  42. package/dist/utils/get-extend-app-data-params-using-workspace-module/constants.js.map +1 -0
  43. package/dist/utils/get-extend-app-data-params-using-workspace-module/index.d.ts +2 -0
  44. package/dist/utils/get-extend-app-data-params-using-workspace-module/index.js +105 -0
  45. package/dist/utils/get-extend-app-data-params-using-workspace-module/index.js.map +1 -0
  46. package/dist/utils/get-extend-app-data-params-using-workspace-module.d.ts +2 -0
  47. package/dist/utils/get-extend-app-data-params-using-workspace-module.js +105 -0
  48. package/dist/utils/get-extend-app-data-params-using-workspace-module.js.map +1 -0
  49. package/package.json +32 -25
  50. package/rush-logs/cli.build.log +1 -0
  51. package/src/cli.ts +68 -0
  52. package/src/constants.ts +1 -0
  53. package/src/types/get-extend-app-data-params.ts +8 -0
  54. package/src/utils/get-extend-app-data-params-using-npm-ldsg-module.ts +45 -0
  55. package/src/utils/get-extend-app-data-params-using-workspace-ldsg-module/constants.ts +3 -0
  56. package/src/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.ts +130 -0
  57. package/tsconfig.build.json +4 -0
  58. package/tsconfig.json +24 -0
  59. package/LICENSE +0 -22
  60. package/dist/index.d.ts +0 -2
  61. package/dist/index.d.ts.map +0 -1
  62. package/dist/index.js +0 -3
  63. package/dist/index.js.LICENSE.txt +0 -24
package/dist/cli.js ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const apaas_to_runtime_1 = require("@ldsg/apaas-to-runtime");
5
+ const utils_1 = require("@ldsg/utils");
6
+ const commander_1 = require("commander");
7
+ const constants_1 = require("./constants");
8
+ const get_extend_app_data_params_using_npm_ldsg_module_1 = require("./utils/get-extend-app-data-params-using-npm-ldsg-module");
9
+ const get_extend_app_data_params_using_workspace_ldsg_module_1 = require("./utils/get-extend-app-data-params-using-workspace-ldsg-module");
10
+ const program = new commander_1.Command();
11
+ program.name('ldsg').description('LDSG CLI tools');
12
+ program
13
+ .command('generate')
14
+ .aliases(['g', 'gen'])
15
+ .description('Generate standalone application from resource records')
16
+ .option('--app-data-uri <uri>', 'runtime app data URI')
17
+ .option('--apaas-app-data-uri <uri>', 'aPaaS app data URI (GraphQL)')
18
+ .option('--apaas-app-data-expression <expression>', 'JSONata expression for aPaaS data extraction')
19
+ .option('--using-workspace-ldsg-module', 'use workspace ldsg module mode')
20
+ .option('-o, --output <path>', `output directory for prepared app code (default: ${constants_1.DEFAULT_OUTPUT_PATH})`)
21
+ .action(async (options) => {
22
+ const outputPath = options.output || constants_1.DEFAULT_OUTPUT_PATH;
23
+ const usingWorkspaceLdsgModule = options.usingWorkspaceLdsgModule ?? false;
24
+ const { resourceRecords, sourceType } = await (0, utils_1.loadAppResourceRecords)({
25
+ appDataUri: options.appDataUri,
26
+ apaasAppDataUri: options.apaasAppDataUri,
27
+ apaasAppDataExpression: options.apaasAppDataExpression
28
+ });
29
+ let appData;
30
+ if (sourceType === 'apaas') {
31
+ const { targetResourceRecords } = (0, apaas_to_runtime_1.convertApaasResourceRecordsToResourceRecords)({
32
+ resourceRecords
33
+ });
34
+ appData = { resourceRecords: targetResourceRecords };
35
+ }
36
+ else {
37
+ appData = { resourceRecords };
38
+ }
39
+ let extendAppDataParams;
40
+ if (usingWorkspaceLdsgModule) {
41
+ extendAppDataParams = await (0, get_extend_app_data_params_using_workspace_ldsg_module_1.getExtendAppDataParamsUsingWorkspaceLdsgModule)({ appData });
42
+ }
43
+ else {
44
+ extendAppDataParams = await (0, get_extend_app_data_params_using_npm_ldsg_module_1.getExtendAppDataParamsUsingNpmLdsgModule)({ appData });
45
+ }
46
+ const extendAppDataRes = (0, utils_1.extendAppData)(extendAppDataParams);
47
+ await (0, utils_1.prepare)({
48
+ ...extendAppDataRes,
49
+ outputPath,
50
+ ...(usingWorkspaceLdsgModule ? { layout: utils_1.ZipAppDataLayout.FLAT } : {})
51
+ });
52
+ });
53
+ program.parse(process.argv);
54
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,6DAAsF;AAEtF,uCAMqB;AACrB,yCAAoC;AACpC,2CAAkD;AAClD,+HAAoH;AACpH,2IAAgI;AAEhI,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAEnD,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACrB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;KACtD,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,CAAC;KACpE,MAAM,CAAC,0CAA0C,EAAE,8CAA8C,CAAC;KAClG,MAAM,CAAC,+BAA+B,EAAE,gCAAgC,CAAC;KACzE,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,+BAAmB,GAAG,CAAC;KACzG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,+BAAmB,CAAC;IAEzD,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,IAAI,KAAK,CAAC;IAE3E,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8BAAsB,EAAC;QACnE,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;KACvD,CAAC,CAAC;IAEH,IAAI,OAAgB,CAAC;IAErB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAA,+DAA4C,EAAC;YAC7E,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,mBAAwC,CAAC;IAE7C,IAAI,wBAAwB,EAAE,CAAC;QAC7B,mBAAmB,GAAG,MAAM,IAAA,uGAA8C,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;SAAM,CAAC;QACN,mBAAmB,GAAG,MAAM,IAAA,2FAAwC,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAC,mBAAmB,CAAC,CAAC;IAE5D,MAAM,IAAA,eAAO,EAAC;QACZ,GAAG,gBAAgB;QACnB,UAAU;QACV,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,wBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const fetchAppDataCommand: Command;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchAppDataCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const apaas_to_runtime_1 = require("@ldsg/apaas-to-runtime");
9
+ const utils_1 = require("@ldsg/utils");
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const constants_1 = require("../constants");
13
+ const action = async (options) => {
14
+ const appDataJsonPath = options.appDataJsonPath || constants_1.APP_DATA_JSON_PATH;
15
+ const { resourceRecords, sourceType } = await (0, utils_1.loadAppResourceRecords)({
16
+ appDataUri: options.appDataUri,
17
+ apaasAppDataUri: options.apaasAppDataUri,
18
+ apaasAppDataExpression: options.apaasAppDataExpression
19
+ });
20
+ let appData;
21
+ if (sourceType === 'apaas') {
22
+ const { targetResourceRecords } = (0, apaas_to_runtime_1.convertApaasResourceRecordsToResourceRecords)({
23
+ resourceRecords
24
+ });
25
+ appData = { resourceRecords: targetResourceRecords };
26
+ }
27
+ else {
28
+ appData = { resourceRecords };
29
+ }
30
+ await fs_extra_1.default.ensureDir(path_1.default.dirname(appDataJsonPath));
31
+ await fs_extra_1.default.writeJson(appDataJsonPath, appData, { spaces: 2 });
32
+ };
33
+ exports.fetchAppDataCommand = new commander_1.Command('fetch-app-data')
34
+ .description('Fetch app data from runtime or aPaaS source')
35
+ .option('--app-data-uri <uri>', 'runtime app data URI')
36
+ .option('--apaas-app-data-uri <uri>', 'aPaaS app data URI (GraphQL)')
37
+ .option('--apaas-app-data-expression <expression>', 'JSONata expression for aPaaS data extraction')
38
+ .option('--app-data-json-path <path>', `output path for app data JSON (default: ${constants_1.APP_DATA_JSON_PATH})`)
39
+ .action(action);
40
+ //# sourceMappingURL=fetch-app-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-app-data.js","sourceRoot":"","sources":["../../src/commands/fetch-app-data.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,6DAAsF;AAEtF,uCAAqD;AACrD,wDAA0B;AAC1B,gDAAwB;AACxB,4CAAkD;AAElD,MAAM,MAAM,GAAG,KAAK,EAAE,OAA4B,EAAE,EAAE;IACpD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,8BAAkB,CAAC;IAEtE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8BAAsB,EAAC;QACnE,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;KACvD,CAAC,CAAC;IAEH,IAAI,OAAgB,CAAC;IAErB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAA,+DAA4C,EAAC;YAC7E,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAClD,MAAM,kBAAE,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAG,IAAI,mBAAO,CAAC,gBAAgB,CAAC;KAC7D,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;KACtD,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,CAAC;KACpE,MAAM,CAAC,0CAA0C,EAAE,8CAA8C,CAAC;KAClG,MAAM,CACL,6BAA6B,EAC7B,2CAA2C,8BAAkB,GAAG,CACjE;KACA,MAAM,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const prepareAppCodeCommand: Command;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.prepareAppCodeCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const utils_1 = require("@ldsg/utils");
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const constants_1 = require("../constants");
11
+ const get_extend_app_data_params_using_npm_module_1 = require("../utils/get-extend-app-data-params-using-npm-module");
12
+ const get_extend_app_data_params_using_workspace_module_1 = require("../utils/get-extend-app-data-params-using-workspace-module");
13
+ const action = async (options) => {
14
+ const usingWorkspaceModule = options.usingWorkspaceModule ?? false;
15
+ const appDataJsonPath = options.appDataJsonPath || constants_1.APP_DATA_JSON_PATH;
16
+ const appDirPath = options.appDirPath || constants_1.APP_DIR_PATH;
17
+ const appData = await fs_extra_1.default.readJson(appDataJsonPath);
18
+ let extendAppDataParams;
19
+ if (usingWorkspaceModule) {
20
+ extendAppDataParams = await (0, get_extend_app_data_params_using_workspace_module_1.getExtendAppDataParamsUsingWorkspaceModule)({ appData });
21
+ }
22
+ else {
23
+ extendAppDataParams = await (0, get_extend_app_data_params_using_npm_module_1.getExtendAppDataParamsUsingNpmModule)({ appData });
24
+ }
25
+ const extendAppDataRes = (0, utils_1.extendAppData)(extendAppDataParams);
26
+ await (0, utils_1.prepare)({
27
+ ...extendAppDataRes,
28
+ outputPath: appDirPath,
29
+ ...(usingWorkspaceModule
30
+ ? {
31
+ dependenciesVersionTemplate: constants_1.DEFAULT_USING_NPM_MODULE_DEPENDENCIES_VERSION_TEMPLATE
32
+ }
33
+ : {})
34
+ });
35
+ };
36
+ exports.prepareAppCodeCommand = new commander_1.Command('prepare-app-code')
37
+ .description('Prepare app code from fetched app data')
38
+ .option('--using-workspace-module', 'use workspace module mode')
39
+ .option('--app-data-json-path <path>', `path to app data JSON (default: ${constants_1.APP_DATA_JSON_PATH})`)
40
+ .option('--app-dir-path <path>', `output directory for prepared app code (default: ${constants_1.APP_DIR_PATH})`)
41
+ .action(action);
42
+ //# sourceMappingURL=prepare-app-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-app-code.js","sourceRoot":"","sources":["../../src/commands/prepare-app-code.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,uCAA0E;AAC1E,wDAA0B;AAC1B,4CAIsB;AACtB,sHAA4G;AAC5G,kIAAwH;AAExH,MAAM,MAAM,GAAG,KAAK,EAAE,OAA4B,EAAE,EAAE;IACpD,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,KAAK,CAAC;IACnE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,8BAAkB,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,wBAAY,CAAC;IAEtD,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEnD,IAAI,mBAAwC,CAAC;IAE7C,IAAI,oBAAoB,EAAE,CAAC;QACzB,mBAAmB,GAAG,MAAM,IAAA,8FAA0C,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,mBAAmB,GAAG,MAAM,IAAA,kFAAoC,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAC,mBAAmB,CAAC,CAAC;IAE5D,MAAM,IAAA,eAAO,EAAC;QACZ,GAAG,gBAAgB;QACnB,UAAU,EAAE,UAAU;QACtB,GAAG,CAAC,oBAAoB;YACtB,CAAC,CAAC;gBACE,2BAA2B,EAAE,kEAAsD;aACpF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAI,mBAAO,CAAC,kBAAkB,CAAC;KACjE,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;KAC/D,MAAM,CACL,6BAA6B,EAC7B,mCAAmC,8BAAkB,GAAG,CACzD;KACA,MAAM,CAAC,uBAAuB,EAAE,oDAAoD,wBAAY,GAAG,CAAC;KACpG,MAAM,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_OUTPUT_PATH = ".";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_OUTPUT_PATH = void 0;
4
+ exports.DEFAULT_OUTPUT_PATH = '.';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const RUSH_JSON_PATH: string;
2
+ export declare const HANDLER_PACKAGE_JSON_PATH: string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HANDLER_PACKAGE_JSON_PATH = exports.RUSH_JSON_PATH = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ exports.RUSH_JSON_PATH = path_1.default.join(process.cwd(), '../../rush.json');
9
+ exports.HANDLER_PACKAGE_JSON_PATH = path_1.default.join(process.cwd(), '../../libs/handler/package.json');
10
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/debug/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAEX,QAAA,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAE7D,QAAA,yBAAyB,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iCAAiC,CAAC,CAAC"}