@kevin3creatives/piece-indata-reports 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # pieces-indata-reports
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build pieces-indata-reports` to build the library.
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@kevin3creatives/piece-indata-reports",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "@sinclair/typebox": "0.34.11",
6
+ "axios": "1.8.3",
7
+ "deepmerge-ts": "7.1.0",
8
+ "nanoid": "3.3.8",
9
+ "semver": "7.6.0",
10
+ "@activepieces/pieces-framework": "0.20.1",
11
+ "@activepieces/shared": "0.22.0",
12
+ "tslib": "2.8.1"
13
+ },
14
+ "overrides": {
15
+ "@tryfabric/martian": {
16
+ "@notionhq/client": "$@notionhq/client"
17
+ },
18
+ "vite": {
19
+ "rollup": "npm:@rollup/wasm-node"
20
+ }
21
+ },
22
+ "resolutions": {
23
+ "rollup": "npm:@rollup/wasm-node"
24
+ },
25
+ "types": "./src/index.d.ts",
26
+ "main": "./src/index.js",
27
+ "type": "commonjs"
28
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const indataWhatsapp: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").PieceAuthProperty>;
package/src/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.indataWhatsapp = void 0;
4
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
5
+ const shared_1 = require("@activepieces/shared");
6
+ const main_1 = require("./lib/actions/main");
7
+ exports.indataWhatsapp = (0, pieces_framework_1.createPiece)({
8
+ displayName: "inData Report",
9
+ auth: pieces_framework_1.PieceAuth.None(),
10
+ minimumSupportedRelease: '0.36.1',
11
+ logoUrl: "https://www.indata.com.co/wp-content/uploads/elementor/thumbs/LOGO-INDATA-RGB-1-r2itpcq9rosicimeda1pbn9m026kcjp06vbjj7obyo.png",
12
+ authors: ["3creatives"],
13
+ actions: [main_1.generateReport, main_1.validateReport],
14
+ triggers: [],
15
+ categories: [shared_1.PieceCategory.INDATA],
16
+ });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/indata-reports/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,iDAAqD;AACrD,6CAAmE;AAElD,QAAA,cAAc,GAAG,IAAA,8BAAW,EAAC;IACxC,WAAW,EAAE,eAAe;IAC5B,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,gIAAgI;IACzI,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,qBAAc,EAAE,qBAAc,CAAC;IACzC,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,CAAC,sBAAa,CAAC,MAAM,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const generateReport: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
2
+ local: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ id_formulario: import("@activepieces/pieces-framework").DropdownProperty<any, false>;
4
+ id_report: import("@activepieces/pieces-framework").DropdownProperty<any, false>;
5
+ }>;
6
+ export declare const validateReport: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
7
+ name_file: import("@activepieces/pieces-framework").ShortTextProperty<true>;
8
+ }>;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateReport = exports.generateReport = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const axios_1 = tslib_1.__importDefault(require("axios"));
7
+ exports.generateReport = (0, pieces_framework_1.createAction)({
8
+ name: "Generar_reporte",
9
+ displayName: "Generar reporte",
10
+ description: "Genera un archivo PDF a partir de un reporte específico de inData",
11
+ props: {
12
+ local: pieces_framework_1.Property.ShortText({
13
+ displayName: "Local ID del registro",
14
+ required: true,
15
+ }),
16
+ id_formulario: pieces_framework_1.Property.Dropdown({
17
+ displayName: "Formulario",
18
+ description: "Selecciona un formulario de inData",
19
+ required: false,
20
+ refreshers: [],
21
+ options: (propsValue, ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
+ var _a, _b, _c;
23
+ if (!((_a = ctx.project) === null || _a === void 0 ? void 0 : _a.id)) {
24
+ return {
25
+ disabled: true,
26
+ placeholder: 'No se pudo obtener el ID del proyecto',
27
+ options: [],
28
+ };
29
+ }
30
+ try {
31
+ // Obtener account_id desde el project_id
32
+ const accountResponse = yield axios_1.default.post("https://api-wf.indata.com.co/workflow/get-account-id-from-project", {
33
+ project_id: ctx.project.id,
34
+ }, {
35
+ headers: {
36
+ "Content-Type": "application/json",
37
+ },
38
+ });
39
+ if (!((_b = accountResponse.data) === null || _b === void 0 ? void 0 : _b.account_id)) {
40
+ return {
41
+ disabled: true,
42
+ placeholder: 'No se pudo obtener el account ID',
43
+ options: [],
44
+ };
45
+ }
46
+ const accountId = accountResponse.data.account_id;
47
+ // Obtener formularios usando el account_id
48
+ const response = yield axios_1.default.post("https://api-wf.indata.com.co/workflow/forms", {
49
+ id_account: accountId,
50
+ }, {
51
+ headers: {
52
+ "Content-Type": "application/json",
53
+ },
54
+ });
55
+ // La respuesta tiene la estructura: { success: true, forms: [...] }
56
+ const forms = ((_c = response.data) === null || _c === void 0 ? void 0 : _c.forms) || [];
57
+ return {
58
+ disabled: false,
59
+ options: forms.map((form) => ({
60
+ label: form.name,
61
+ value: form.id,
62
+ })),
63
+ };
64
+ }
65
+ catch (error) {
66
+ console.error("Error obteniendo formularios:", error);
67
+ return {
68
+ disabled: true,
69
+ placeholder: 'Error al cargar los formularios',
70
+ options: [],
71
+ };
72
+ }
73
+ }),
74
+ }),
75
+ id_report: pieces_framework_1.Property.Dropdown({
76
+ displayName: "Plan de reporte",
77
+ description: "Selecciona un reporte de inData",
78
+ required: false,
79
+ refreshers: [],
80
+ options: (propsValue, ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
81
+ var _a, _b, _c;
82
+ if (!((_a = ctx.project) === null || _a === void 0 ? void 0 : _a.id)) {
83
+ return {
84
+ disabled: true,
85
+ placeholder: 'No se pudo obtener el ID del proyecto',
86
+ options: [],
87
+ };
88
+ }
89
+ try {
90
+ // Obtener account_id desde el project_id
91
+ const accountResponse = yield axios_1.default.post("https://api-wf.indata.com.co/workflow/get-account-id-from-project", {
92
+ project_id: ctx.project.id,
93
+ }, {
94
+ headers: {
95
+ "Content-Type": "application/json",
96
+ },
97
+ });
98
+ if (!((_b = accountResponse.data) === null || _b === void 0 ? void 0 : _b.account_id)) {
99
+ return {
100
+ disabled: true,
101
+ placeholder: 'No se pudo obtener el account ID',
102
+ options: [],
103
+ };
104
+ }
105
+ const accountId = accountResponse.data.account_id;
106
+ // Obtener plantillas de reporte usando el account_id
107
+ const response = yield axios_1.default.post("https://api-wf.indata.com.co/workflow/get-report-templates", {
108
+ id_account: accountId,
109
+ }, {
110
+ headers: {
111
+ "Content-Type": "application/json",
112
+ },
113
+ });
114
+ // La respuesta tiene la estructura: { success: true, templates: [...] }
115
+ const templates = ((_c = response.data) === null || _c === void 0 ? void 0 : _c.templates) || [];
116
+ return {
117
+ disabled: false,
118
+ options: templates.map((template) => ({
119
+ label: template.name,
120
+ value: template.id,
121
+ })),
122
+ };
123
+ }
124
+ catch (error) {
125
+ console.error("Error obteniendo plantillas de reporte:", error);
126
+ return {
127
+ disabled: true,
128
+ placeholder: 'Error al cargar las plantillas de reporte',
129
+ options: [],
130
+ };
131
+ }
132
+ }),
133
+ }),
134
+ },
135
+ run(context) {
136
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
137
+ var _a, _b, _c;
138
+ const projectId = context.project.id;
139
+ // Obtener account_id desde el project_id (una sola vez)
140
+ let accountId = null;
141
+ try {
142
+ const accountResponse = yield axios_1.default.post("https://api-wf.indata.com.co/workflow/get-account-id-from-project", {
143
+ project_id: projectId,
144
+ }, {
145
+ headers: {
146
+ "Content-Type": "application/json",
147
+ },
148
+ });
149
+ if ((_a = accountResponse.data) === null || _a === void 0 ? void 0 : _a.account_id) {
150
+ accountId = accountResponse.data.account_id;
151
+ }
152
+ else {
153
+ return {
154
+ success: false,
155
+ error: "No se pudo obtener el account ID",
156
+ };
157
+ }
158
+ }
159
+ catch (error) {
160
+ return {
161
+ success: false,
162
+ error: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.data) || error.message || "Error obteniendo account ID",
163
+ };
164
+ }
165
+ const url = "https://api-wf.indata.com.co/workflow/generate-report-pdf";
166
+ const formularioId = context.propsValue.id_formulario;
167
+ const localId = context.propsValue.local;
168
+ const payload = {
169
+ id_account: accountId,
170
+ id_report_template: context.propsValue.id_report,
171
+ records: {
172
+ [formularioId]: [localId],
173
+ },
174
+ };
175
+ try {
176
+ const response = yield axios_1.default.post(url, payload, {
177
+ headers: {
178
+ "Content-Type": "application/json",
179
+ },
180
+ });
181
+ return response.data;
182
+ }
183
+ catch (error) {
184
+ return {
185
+ success: false,
186
+ error: ((_c = error.response) === null || _c === void 0 ? void 0 : _c.data) || error.message,
187
+ };
188
+ }
189
+ });
190
+ },
191
+ });
192
+ exports.validateReport = (0, pieces_framework_1.createAction)({
193
+ name: "validate_report",
194
+ displayName: "Validar reporte creado",
195
+ description: "Verifica si el archivo PDF de un reporte se encuentra disponible para su consulta",
196
+ props: {
197
+ name_file: pieces_framework_1.Property.ShortText({
198
+ displayName: "Nombre del archivo",
199
+ description: "Nombre del archivo del reporte ",
200
+ required: true,
201
+ }),
202
+ },
203
+ run(context) {
204
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
205
+ var _a;
206
+ const nameFile = context.propsValue.name_file;
207
+ const url = `https://api-wf.indata.com.co/workflow/check-report-pdf?name_file=${encodeURIComponent(nameFile)}`;
208
+ try {
209
+ const response = yield axios_1.default.get(url, {
210
+ headers: {
211
+ "Content-Type": "application/json",
212
+ },
213
+ });
214
+ return response.data;
215
+ }
216
+ catch (error) {
217
+ return {
218
+ success: false,
219
+ error: ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message,
220
+ };
221
+ }
222
+ });
223
+ },
224
+ });
225
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/indata-reports/src/lib/actions/main.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AAGxE,0DAA0B;AAEb,QAAA,cAAc,GAAG,IAAA,+BAAY,EAAC;IACzC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,mEAAmE;IAChF,KAAK,EAAE;QAEL,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,aAAa,EAAC,2BAAQ,CAAC,QAAQ,CAAC;YAC9B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,oCAAoC;YACjD,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,CAAO,UAAU,EAAE,GAAG,EAAE,EAAE;;gBACjC,IAAI,CAAC,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,EAAE,CAAA,EAAE,CAAC;oBACrB,OAAO;wBACL,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,uCAAuC;wBACpD,OAAO,EAAE,EAAE;qBACZ,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,yCAAyC;oBACzC,MAAM,eAAe,GAAG,MAAM,eAAK,CAAC,IAAI,CACtC,mEAAmE,EACnE;wBACE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;qBAC3B,EACD;wBACE,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;yBACnC;qBACF,CACF,CAAC;oBAEF,IAAI,CAAC,CAAA,MAAA,eAAe,CAAC,IAAI,0CAAE,UAAU,CAAA,EAAE,CAAC;wBACtC,OAAO;4BACL,QAAQ,EAAE,IAAI;4BACd,WAAW,EAAE,kCAAkC;4BAC/C,OAAO,EAAE,EAAE;yBACZ,CAAC;oBACJ,CAAC;oBAED,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;oBAElD,2CAA2C;oBAC3C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,6CAA6C,EAC7C;wBACE,UAAU,EAAE,SAAS;qBACtB,EACD;wBACE,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;yBACnC;qBACF,CACF,CAAC;oBAEF,oEAAoE;oBACpE,MAAM,KAAK,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,KAAK,KAAI,EAAE,CAAC;oBAEzC,OAAO;wBACL,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;4BACjC,KAAK,EAAE,IAAI,CAAC,IAAI;4BAChB,KAAK,EAAE,IAAI,CAAC,EAAE;yBACf,CAAC,CAAC;qBACJ,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;oBACtD,OAAO;wBACL,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,iCAAiC;wBAC9C,OAAO,EAAE,EAAE;qBACZ,CAAC;gBACJ,CAAC;YACH,CAAC,CAAA;SACF,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC3B,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,CAAO,UAAU,EAAE,GAAG,EAAE,EAAE;;gBACjC,IAAI,CAAC,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,EAAE,CAAA,EAAE,CAAC;oBACrB,OAAO;wBACL,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,uCAAuC;wBACpD,OAAO,EAAE,EAAE;qBACZ,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,yCAAyC;oBACzC,MAAM,eAAe,GAAG,MAAM,eAAK,CAAC,IAAI,CACtC,mEAAmE,EACnE;wBACE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;qBAC3B,EACD;wBACE,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;yBACnC;qBACF,CACF,CAAC;oBAEF,IAAI,CAAC,CAAA,MAAA,eAAe,CAAC,IAAI,0CAAE,UAAU,CAAA,EAAE,CAAC;wBACtC,OAAO;4BACL,QAAQ,EAAE,IAAI;4BACd,WAAW,EAAE,kCAAkC;4BAC/C,OAAO,EAAE,EAAE;yBACZ,CAAC;oBACJ,CAAC;oBAED,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;oBAElD,qDAAqD;oBACrD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,4DAA4D,EAC5D;wBACE,UAAU,EAAE,SAAS;qBACtB,EACD;wBACE,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;yBACnC;qBACF,CACF,CAAC;oBAEF,wEAAwE;oBACxE,MAAM,SAAS,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,SAAS,KAAI,EAAE,CAAC;oBAEjD,OAAO;wBACL,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;4BACzC,KAAK,EAAE,QAAQ,CAAC,IAAI;4BACpB,KAAK,EAAE,QAAQ,CAAC,EAAE;yBACnB,CAAC,CAAC;qBACJ,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;oBAChE,OAAO;wBACL,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,2CAA2C;wBACxD,OAAO,EAAE,EAAE;qBACZ,CAAC;gBACJ,CAAC;YACH,CAAC,CAAA;SACF,CAAC;KAGH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAErC,wDAAwD;YACxD,IAAI,SAAS,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,eAAK,CAAC,IAAI,CACtC,mEAAmE,EACnE;oBACE,UAAU,EAAE,SAAS;iBACtB,EACD;oBACE,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;iBACF,CACF,CAAC;gBAEF,IAAI,MAAA,eAAe,CAAC,IAAI,0CAAE,UAAU,EAAE,CAAC;oBACrC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,kCAAkC;qBAC1C,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,OAAO,IAAI,6BAA6B;iBAC9E,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,2DAA2D,CAAC;YACxE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;YACtD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;YAEzC,MAAM,OAAO,GAAG;gBACd,UAAU,EAAE,SAAS;gBACrB,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;gBAChD,OAAO,EAAE;oBACP,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC;iBAC1B;aACF,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;oBAC9C,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;iBACF,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,OAAO;iBAC7C,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,IAAA,+BAAY,EAAC;IACzC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE,mFAAmF;IAChG,KAAK,EAAE;QACL,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;YAC9C,MAAM,GAAG,GAAG,oEAAoE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE/G,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE;oBACpC,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;iBACF,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,OAAO;iBAC7C,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}