@ramiidv/arca-agro 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,54 @@
1
+ import type { ArcaEvent, ServerStatus } from '@ramiidv/arca-common';
2
+ import type { AgroAuth, Liquidacion, LiquidacionResult, ConsultaLiquidacionParams, AjusteUnificadoParams, Certificacion, CertificacionResult, LpgParameterQueryParams } from './types.js';
3
+ export interface LpgClientOptions {
4
+ timeoutMs?: number;
5
+ retries?: number;
6
+ retryDelayMs?: number;
7
+ onEvent?: (event: ArcaEvent) => void;
8
+ }
9
+ /**
10
+ * Cliente de bajo nivel para WSLPG (Liquidación Primaria de Granos).
11
+ * Gestiona liquidaciones y certificaciones de operaciones de granos.
12
+ */
13
+ export declare class LpgClient {
14
+ private readonly endpoint;
15
+ private readonly soapOpts;
16
+ constructor(production: boolean, opts?: LpgClientOptions);
17
+ private call;
18
+ private parseLiquidacionResult;
19
+ private parseCertificacionResult;
20
+ /**
21
+ * Autoriza una liquidación primaria de granos.
22
+ */
23
+ liquidacionAutorizar(auth: AgroAuth, liquidacion: Liquidacion): Promise<LiquidacionResult>;
24
+ /**
25
+ * Consulta una liquidación previamente autorizada.
26
+ */
27
+ liquidacionConsultar(auth: AgroAuth, params: ConsultaLiquidacionParams): Promise<LiquidacionResult[]>;
28
+ /**
29
+ * Anula una liquidación previamente autorizada.
30
+ */
31
+ liquidacionAnular(auth: AgroAuth, ptoEmision: number, nroOrden: number): Promise<LiquidacionResult>;
32
+ /**
33
+ * Ajusta una liquidación mediante ajuste unificado (débito/crédito en un solo paso).
34
+ */
35
+ liquidacionAjustarUnificado(auth: AgroAuth, params: AjusteUnificadoParams): Promise<LiquidacionResult>;
36
+ /**
37
+ * Autoriza una certificación de granos (depósito, retiro, transferencia, preexistencia).
38
+ */
39
+ certificacionAutorizar(auth: AgroAuth, certificacion: Certificacion): Promise<CertificacionResult>;
40
+ /**
41
+ * Anula una certificación previamente autorizada.
42
+ */
43
+ certificacionAnular(auth: AgroAuth, tipoCertificacion: number, nroCertificacion: number): Promise<CertificacionResult>;
44
+ /**
45
+ * Consulta de parámetros genérica del WSLPG.
46
+ * Puede consultar tipos de grano, grados, puertos, tipos de operación, etc.
47
+ */
48
+ consultarParametros(auth: AgroAuth, tipoParametro: string, params?: LpgParameterQueryParams): Promise<Record<string, unknown>[]>;
49
+ /**
50
+ * Verifica el estado de los servidores del WSLPG.
51
+ */
52
+ dummy(): Promise<ServerStatus>;
53
+ }
54
+ //# sourceMappingURL=lpg-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lpg-client.d.ts","sourceRoot":"","sources":["../src/lpg-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAmB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4E;gBAEzF,UAAU,EAAE,OAAO,EAAE,IAAI,GAAE,gBAAqB;YAY9C,IAAI;IAYlB,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYhG;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAe3G;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAezG;;OAEG;IACG,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsB5G;;OAEG;IACG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAYxG;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB5H;;;OAGG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAkBtI;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;CAcrC"}
@@ -0,0 +1,206 @@
1
+ import { afipSoapCall, ensureArray, checkServiceErrors, } from '@ramiidv/arca-common';
2
+ import { LPG_ENDPOINTS, LPG_NAMESPACE } from './constants.js';
3
+ /**
4
+ * Cliente de bajo nivel para WSLPG (Liquidación Primaria de Granos).
5
+ * Gestiona liquidaciones y certificaciones de operaciones de granos.
6
+ */
7
+ export class LpgClient {
8
+ endpoint;
9
+ soapOpts;
10
+ constructor(production, opts = {}) {
11
+ this.endpoint = production
12
+ ? LPG_ENDPOINTS.production
13
+ : LPG_ENDPOINTS.testing;
14
+ this.soapOpts = {
15
+ timeout: opts.timeoutMs,
16
+ retries: opts.retries,
17
+ retryDelayMs: opts.retryDelayMs,
18
+ onEvent: opts.onEvent,
19
+ };
20
+ }
21
+ async call(method, params) {
22
+ const result = await afipSoapCall(this.endpoint, LPG_NAMESPACE, method, params, this.soapOpts);
23
+ checkServiceErrors(result, 'WSLPG');
24
+ return result;
25
+ }
26
+ parseLiquidacionResult(raw) {
27
+ const errores = ensureArray((raw['errores'] ?? raw['arrayErrores'])).map((e) => ({
28
+ Code: Number(e['codigo'] ?? e['Code'] ?? 0),
29
+ Msg: String(e['descripcion'] ?? e['Msg'] ?? ''),
30
+ }));
31
+ const eventos = ensureArray((raw['eventos'] ?? raw['arrayEventos'])).map((e) => ({
32
+ Code: Number(e['codigo'] ?? e['Code'] ?? 0),
33
+ Msg: String(e['descripcion'] ?? e['Msg'] ?? ''),
34
+ }));
35
+ return {
36
+ codOperacion: raw['codOperacion'],
37
+ nroOrden: raw['nroOrden'],
38
+ fechaLiquidacion: raw['fechaLiquidacion'],
39
+ totalPagar: raw['totalPagar'],
40
+ totalDeducciones: raw['totalDeducciones'],
41
+ totalPesoNeto: raw['totalPesoNeto'],
42
+ nroContrato: raw['nroContrato'],
43
+ resultado: raw['resultado'],
44
+ errores: errores.length > 0 ? errores : undefined,
45
+ eventos: eventos.length > 0 ? eventos : undefined,
46
+ raw,
47
+ };
48
+ }
49
+ parseCertificacionResult(raw) {
50
+ const errores = ensureArray((raw['errores'] ?? raw['arrayErrores'])).map((e) => ({
51
+ Code: Number(e['codigo'] ?? e['Code'] ?? 0),
52
+ Msg: String(e['descripcion'] ?? e['Msg'] ?? ''),
53
+ }));
54
+ const eventos = ensureArray((raw['eventos'] ?? raw['arrayEventos'])).map((e) => ({
55
+ Code: Number(e['codigo'] ?? e['Code'] ?? 0),
56
+ Msg: String(e['descripcion'] ?? e['Msg'] ?? ''),
57
+ }));
58
+ return {
59
+ nroCertificacion: raw['nroCertificacion'],
60
+ codOperacion: raw['codOperacion'],
61
+ fechaCertificacion: raw['fechaCertificacion'],
62
+ resultado: raw['resultado'],
63
+ errores: errores.length > 0 ? errores : undefined,
64
+ eventos: eventos.length > 0 ? eventos : undefined,
65
+ raw,
66
+ };
67
+ }
68
+ // ============================================================
69
+ // Liquidaciones
70
+ // ============================================================
71
+ /**
72
+ * Autoriza una liquidación primaria de granos.
73
+ */
74
+ async liquidacionAutorizar(auth, liquidacion) {
75
+ const result = await this.call('liquidacionAutorizar', {
76
+ auth: {
77
+ token: auth.Token,
78
+ sign: auth.Sign,
79
+ cuitRepresentada: auth.Cuit,
80
+ },
81
+ liquidacion,
82
+ });
83
+ return this.parseLiquidacionResult(result);
84
+ }
85
+ /**
86
+ * Consulta una liquidación previamente autorizada.
87
+ */
88
+ async liquidacionConsultar(auth, params) {
89
+ const result = await this.call('liquidacionConsultar', {
90
+ auth: {
91
+ token: auth.Token,
92
+ sign: auth.Sign,
93
+ cuitRepresentada: auth.Cuit,
94
+ },
95
+ solicitud: params,
96
+ });
97
+ const items = ensureArray((result['liquidacion'] ?? result['resultado'] ?? result));
98
+ return items.map((item) => this.parseLiquidacionResult(item));
99
+ }
100
+ /**
101
+ * Anula una liquidación previamente autorizada.
102
+ */
103
+ async liquidacionAnular(auth, ptoEmision, nroOrden) {
104
+ const result = await this.call('liquidacionAnular', {
105
+ auth: {
106
+ token: auth.Token,
107
+ sign: auth.Sign,
108
+ cuitRepresentada: auth.Cuit,
109
+ },
110
+ solicitud: {
111
+ ptoEmision,
112
+ nroOrden,
113
+ },
114
+ });
115
+ return this.parseLiquidacionResult(result);
116
+ }
117
+ /**
118
+ * Ajusta una liquidación mediante ajuste unificado (débito/crédito en un solo paso).
119
+ */
120
+ async liquidacionAjustarUnificado(auth, params) {
121
+ const result = await this.call('liquidacionAjustarUnificado', {
122
+ auth: {
123
+ token: auth.Token,
124
+ sign: auth.Sign,
125
+ cuitRepresentada: auth.Cuit,
126
+ },
127
+ solicitud: {
128
+ nroOrdenOriginal: params.nroOrdenOriginal,
129
+ ptoEmisionOriginal: params.ptoEmisionOriginal,
130
+ tipoAjuste: params.tipoAjuste,
131
+ liquidacion: params.liquidacion,
132
+ ...(params.observaciones !== undefined && { observaciones: params.observaciones }),
133
+ },
134
+ });
135
+ return this.parseLiquidacionResult(result);
136
+ }
137
+ // ============================================================
138
+ // Certificaciones
139
+ // ============================================================
140
+ /**
141
+ * Autoriza una certificación de granos (depósito, retiro, transferencia, preexistencia).
142
+ */
143
+ async certificacionAutorizar(auth, certificacion) {
144
+ const result = await this.call('certificacionAutorizar', {
145
+ auth: {
146
+ token: auth.Token,
147
+ sign: auth.Sign,
148
+ cuitRepresentada: auth.Cuit,
149
+ },
150
+ certificacion,
151
+ });
152
+ return this.parseCertificacionResult(result);
153
+ }
154
+ /**
155
+ * Anula una certificación previamente autorizada.
156
+ */
157
+ async certificacionAnular(auth, tipoCertificacion, nroCertificacion) {
158
+ const result = await this.call('certificacionAnular', {
159
+ auth: {
160
+ token: auth.Token,
161
+ sign: auth.Sign,
162
+ cuitRepresentada: auth.Cuit,
163
+ },
164
+ solicitud: {
165
+ tipoCertificacion,
166
+ nroCertificacion,
167
+ },
168
+ });
169
+ return this.parseCertificacionResult(result);
170
+ }
171
+ // ============================================================
172
+ // Consultas de parámetros
173
+ // ============================================================
174
+ /**
175
+ * Consulta de parámetros genérica del WSLPG.
176
+ * Puede consultar tipos de grano, grados, puertos, tipos de operación, etc.
177
+ */
178
+ async consultarParametros(auth, tipoParametro, params) {
179
+ const result = await this.call(tipoParametro, {
180
+ auth: {
181
+ token: auth.Token,
182
+ sign: auth.Sign,
183
+ cuitRepresentada: auth.Cuit,
184
+ },
185
+ ...(params ?? {}),
186
+ });
187
+ // El resultado viene en un key que varía según el tipo de parámetro
188
+ const values = Object.values(result).find((v) => Array.isArray(v) || (typeof v === 'object' && v !== null));
189
+ return ensureArray(values);
190
+ }
191
+ // ============================================================
192
+ // Estado del servicio
193
+ // ============================================================
194
+ /**
195
+ * Verifica el estado de los servidores del WSLPG.
196
+ */
197
+ async dummy() {
198
+ const result = await afipSoapCall(this.endpoint, LPG_NAMESPACE, 'dummy', {}, this.soapOpts);
199
+ return {
200
+ appserver: String(result['appserver'] ?? result['AppServer'] ?? ''),
201
+ dbserver: String(result['dbserver'] ?? result['DbServer'] ?? ''),
202
+ authserver: String(result['authserver'] ?? result['AuthServer'] ?? ''),
203
+ };
204
+ }
205
+ }
206
+ //# sourceMappingURL=lpg-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lpg-client.js","sourceRoot":"","sources":["../src/lpg-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAmB9D;;;GAGG;AACH,MAAM,OAAO,SAAS;IACH,QAAQ,CAAS;IACjB,QAAQ,CAA4E;IAErG,YAAY,UAAmB,EAAE,OAAyB,EAAE;QAC1D,IAAI,CAAC,QAAQ,GAAG,UAAU;YACxB,CAAC,CAAC,aAAa,CAAC,UAAU;YAC1B,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG;YACd,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAA+B;QAChE,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,IAAI,CAAC,QAAQ,EACb,aAAa,EACb,MAAM,EACN,MAAM,EACN,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,sBAAsB,CAAC,GAA4B;QACzD,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAA0C,CACjF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAA0C,CACjF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,cAAc,CAAuB;YACvD,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAuB;YAC/C,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,CAAuB;YAC/D,UAAU,EAAE,GAAG,CAAC,YAAY,CAAuB;YACnD,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,CAAuB;YAC/D,aAAa,EAAE,GAAG,CAAC,eAAe,CAAuB;YACzD,WAAW,EAAE,GAAG,CAAC,aAAa,CAAuB;YACrD,SAAS,EAAE,GAAG,CAAC,WAAW,CAAuB;YACjD,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACjD,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACjD,GAAG;SACJ,CAAC;IACJ,CAAC;IAEO,wBAAwB,CAAC,GAA4B;QAC3D,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAA0C,CACjF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAA0C,CACjF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,CAAuB;YAC/D,YAAY,EAAE,GAAG,CAAC,cAAc,CAAuB;YACvD,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,CAAuB;YACnE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAuB;YACjD,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACjD,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACjD,GAAG;SACJ,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,gBAAgB;IAChB,+DAA+D;IAE/D;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,IAAc,EAAE,WAAwB;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrD,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,IAAc,EAAE,MAAiC;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrD,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CACvB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAwD,CAChH,CAAC;QACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAA+B,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAc,EAAE,UAAkB,EAAE,QAAgB;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAClD,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,SAAS,EAAE;gBACT,UAAU;gBACV,QAAQ;aACT;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAAC,IAAc,EAAE,MAA6B;QAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;YAC5D,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,SAAS,EAAE;gBACT,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;aACnF;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,+DAA+D;IAC/D,kBAAkB;IAClB,+DAA+D;IAE/D;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,IAAc,EAAE,aAA4B;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACvD,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,aAAa;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,IAAc,EAAE,iBAAyB,EAAE,gBAAwB;QAC3F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACpD,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,SAAS,EAAE;gBACT,iBAAiB;gBACjB,gBAAgB;aACjB;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,+DAA+D;IAC/D,0BAA0B;IAC1B,+DAA+D;IAE/D;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CAAC,IAAc,EAAE,aAAqB,EAAE,MAAgC;QAC/F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5C,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,IAAI;aAC5B;YACD,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SAClB,CAAC,CAAC;QACH,oEAAoE;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAC5G,OAAO,WAAW,CAAC,MAAyE,CAAC,CAAC;IAChG,CAAC;IAED,+DAA+D;IAC/D,sBAAsB;IACtB,+DAA+D;IAE/D;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,IAAI,CAAC,QAAQ,EACb,aAAa,EACb,OAAO,EACP,EAAE,EACF,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACnE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAChE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC;CACF"}