@designliquido/potigol 0.9.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export * from './bibliotecas';
3
3
  export * from './interfaces';
4
4
  export * from './interpretador';
5
5
  export * from './lexador';
6
+ export * from './tradutores';
6
7
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAE9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAE9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
package/index.js CHANGED
@@ -21,4 +21,5 @@ __exportStar(require("./bibliotecas"), exports);
21
21
  __exportStar(require("./interfaces"), exports);
22
22
  __exportStar(require("./interpretador"), exports);
23
23
  __exportStar(require("./lexador"), exports);
24
+ __exportStar(require("./tradutores"), exports);
24
25
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,wDAAsC;AACtC,gDAA8B;AAC9B,gCAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,wDAAsC;AACtC,gDAA8B;AAC9B,gCAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B;AAC1B,+CAA6B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designliquido/potigol",
3
3
  "description": "Dialeto de Potigol baseado em Delégua e TypeScript",
4
- "version": "0.9.4",
4
+ "version": "0.10.0",
5
5
  "license": "MIT",
6
6
  "bugs": {
7
7
  "url": "https://github.com/DesignLiquido/potigol/issues"
@@ -27,10 +27,10 @@
27
27
  "lodash": "^4.17.21"
28
28
  },
29
29
  "peerDependencies": {
30
- "@designliquido/delegua": "^1.16.1"
30
+ "@designliquido/delegua": "^1.16.3"
31
31
  },
32
32
  "devDependencies": {
33
- "@designliquido/delegua": "^1.16.1",
33
+ "@designliquido/delegua": "^1.16.3",
34
34
  "@types/estree": "^1.0.7",
35
35
  "@types/jest": "^30.0.0",
36
36
  "@types/node": "^25.0.2",
@@ -0,0 +1,2 @@
1
+ export * from './tradutor-reverso-potigol';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fontes/tradutores/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./tradutor-reverso-potigol"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../fontes/tradutores/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C"}
@@ -0,0 +1,61 @@
1
+ import { AcessoIndiceVariavel, AcessoMetodoOuPropriedade, Agrupamento, Atribuir, Binario, Chamada, Constante, Construto, DefinirValor, FimPara, FuncaoConstruto, Leia, Literal, Logico, Unario, Variavel, Vetor } from '@designliquido/delegua/construtos';
2
+ import { Bloco, Classe, Const, ConstMultiplo, Declaracao, Enquanto, Escreva, EscrevaMesmaLinha, Escolha, Expressao, FuncaoDeclaracao, Para, ParaCada, Retorna, Se, Var } from '@designliquido/delegua/declaracoes';
3
+ import { SimboloInterface, TradutorInterface } from '@designliquido/delegua/interfaces';
4
+ import { AliasTipo, ParaGere, ReatribuicaoVariavel } from '../declaracoes';
5
+ /**
6
+ * Tradutor Reverso de Potigol para Delégua.
7
+ * Recebe a árvore sintática gerada pelo `AvaliadorSintaticoPotigol`
8
+ * e produz código-fonte equivalente em Delégua.
9
+ */
10
+ export declare class TradutorReversoPotigol implements TradutorInterface<Declaracao> {
11
+ indentacao: number;
12
+ traduzirSimboloOperador(operador: SimboloInterface): string;
13
+ traduzirConstrutoAgrupamento(agrupamento: Agrupamento): string;
14
+ traduzirConstrutoAtribuir(atribuir: Atribuir): string;
15
+ traduzirConstrutoBinario(binario: Binario): string;
16
+ traduzirConstrutoChamada(chamada: Chamada): string;
17
+ traduzirConstrutoDefinirValor(definirValor: DefinirValor): string;
18
+ traduzirConstrutoFimPara(fimPara: FimPara): string;
19
+ traduzirConstrutoLiteral(literal: Literal): string;
20
+ traduzirConstrutoLogico(logico: Logico): string;
21
+ traduzirConstrutoUnario(unario: Unario): string;
22
+ traduzirConstrutoVariavel(variavel: Variavel, argumentos?: Construto[]): string;
23
+ traduzirConstrutoConstante(constante: Constante, argumentos?: Construto[]): string;
24
+ traduzirConstrutoAcessoMetodoOuPropriedade(acesso: AcessoMetodoOuPropriedade, argumentos?: Construto[]): string;
25
+ /**
26
+ * Traduz métodos específicos de Potigol para equivalentes em Delégua.
27
+ * Retorna `null` se não houver mapeamento direto.
28
+ */
29
+ protected traduzirMetodoPotigol(nomeMetodo: string, objeto: string, argumentos: Construto[]): string | null;
30
+ traduzirConstrutoAcessoIndiceVariavel(acesso: AcessoIndiceVariavel): string;
31
+ traduzirFuncaoConstruto(funcao: FuncaoConstruto): string;
32
+ traduzirConstrutoLeia(leia: Leia): string;
33
+ traduzirConstrutoVetor(vetor: Vetor): string;
34
+ protected logicaComumBlocoEscopo(declaracoes: Declaracao[]): string;
35
+ traduzirDeclaracaoBloco(bloco: Bloco): string;
36
+ traduzirDeclaracaoConst(declaracaoConst: Const): string;
37
+ traduzirDeclaracaoConstMultiplo(constMultiplo: ConstMultiplo): string;
38
+ traduzirDeclaracaoVar(declaracaoVar: Var): string;
39
+ traduzirDeclaracaoReatribuicaoVariavel(reatribuicao: ReatribuicaoVariavel): string;
40
+ traduzirDeclaracaoEscreva(escreva: Escreva): string;
41
+ traduzirDeclaracaoEscrevaMesmaLinha(escreva: EscrevaMesmaLinha): string;
42
+ traduzirDeclaracaoExpressao(expressao: Expressao): string;
43
+ traduzirDeclaracaoFuncao(declaracaoFuncao: FuncaoDeclaracao): string;
44
+ traduzirDeclaracaoSe(declaracaoSe: Se): string;
45
+ traduzirDeclaracaoEnquanto(declaracaoEnquanto: Enquanto): string;
46
+ traduzirDeclaracaoPara(para: Para): string;
47
+ traduzirDeclaracaoParaGere(paraGere: ParaGere): string;
48
+ traduzirDeclaracaoParaCada(paraCada: ParaCada): string;
49
+ traduzirDeclaracaoEscolha(escolha: Escolha): string;
50
+ traduzirDeclaracaoRetorna(retorna: Retorna): string;
51
+ traduzirDeclaracaoClasse(classe: Classe): string;
52
+ traduzirDeclaracaoAliasTipo(alias: AliasTipo): string;
53
+ dicionarioConstrutos: {
54
+ [nome: string]: Function;
55
+ };
56
+ dicionarioDeclaracoes: {
57
+ [nome: string]: Function;
58
+ };
59
+ traduzir(declaracoes: Declaracao[]): string;
60
+ }
61
+ //# sourceMappingURL=tradutor-reverso-potigol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradutor-reverso-potigol.d.ts","sourceRoot":"","sources":["../../fontes/tradutores/tradutor-reverso-potigol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,526 @@
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.TradutorReversoPotigol = void 0;
7
+ const construtos_1 = require("@designliquido/delegua/construtos");
8
+ const construtos_2 = require("../construtos");
9
+ const lexico_regular_1 = __importDefault(require("../tipos-de-simbolos/lexico-regular"));
10
+ /**
11
+ * Tradutor Reverso de Potigol para Delégua.
12
+ * Recebe a árvore sintática gerada pelo `AvaliadorSintaticoPotigol`
13
+ * e produz código-fonte equivalente em Delégua.
14
+ */
15
+ class TradutorReversoPotigol {
16
+ constructor() {
17
+ this.indentacao = 0;
18
+ // #endregion
19
+ this.dicionarioConstrutos = {
20
+ AcessoIndiceVariavel: this.traduzirConstrutoAcessoIndiceVariavel.bind(this),
21
+ AcessoMetodoOuPropriedade: this.traduzirConstrutoAcessoMetodoOuPropriedade.bind(this),
22
+ Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
23
+ Atribuir: this.traduzirConstrutoAtribuir.bind(this),
24
+ Binario: this.traduzirConstrutoBinario.bind(this),
25
+ Chamada: this.traduzirConstrutoChamada.bind(this),
26
+ Constante: this.traduzirConstrutoConstante.bind(this),
27
+ DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
28
+ FimPara: this.traduzirConstrutoFimPara.bind(this),
29
+ FuncaoConstruto: this.traduzirFuncaoConstruto.bind(this),
30
+ Isto: () => 'isto',
31
+ LeiaInteiro: this.traduzirConstrutoLeia.bind(this),
32
+ LeiaInteiros: this.traduzirConstrutoLeia.bind(this),
33
+ LeiaReal: this.traduzirConstrutoLeia.bind(this),
34
+ LeiaReais: this.traduzirConstrutoLeia.bind(this),
35
+ LeiaTexto: this.traduzirConstrutoLeia.bind(this),
36
+ LeiaTextos: this.traduzirConstrutoLeia.bind(this),
37
+ Leia: this.traduzirConstrutoLeia.bind(this),
38
+ Literal: this.traduzirConstrutoLiteral.bind(this),
39
+ Logico: this.traduzirConstrutoLogico.bind(this),
40
+ Unario: this.traduzirConstrutoUnario.bind(this),
41
+ Variavel: this.traduzirConstrutoVariavel.bind(this),
42
+ Vetor: this.traduzirConstrutoVetor.bind(this),
43
+ };
44
+ this.dicionarioDeclaracoes = {
45
+ AliasTipo: this.traduzirDeclaracaoAliasTipo.bind(this),
46
+ Bloco: this.traduzirDeclaracaoBloco.bind(this),
47
+ Classe: this.traduzirDeclaracaoClasse.bind(this),
48
+ Const: this.traduzirDeclaracaoConst.bind(this),
49
+ ConstMultiplo: this.traduzirDeclaracaoConstMultiplo.bind(this),
50
+ Continua: () => 'continua',
51
+ Enquanto: this.traduzirDeclaracaoEnquanto.bind(this),
52
+ Escolha: this.traduzirDeclaracaoEscolha.bind(this),
53
+ Escreva: this.traduzirDeclaracaoEscreva.bind(this),
54
+ EscrevaMesmaLinha: this.traduzirDeclaracaoEscrevaMesmaLinha.bind(this),
55
+ Expressao: this.traduzirDeclaracaoExpressao.bind(this),
56
+ FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
57
+ Para: this.traduzirDeclaracaoPara.bind(this),
58
+ ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
59
+ ParaGere: this.traduzirDeclaracaoParaGere.bind(this),
60
+ ReatribuicaoVariavel: this.traduzirDeclaracaoReatribuicaoVariavel.bind(this),
61
+ Retorna: this.traduzirDeclaracaoRetorna.bind(this),
62
+ Se: this.traduzirDeclaracaoSe.bind(this),
63
+ Sustar: () => 'sustar',
64
+ Var: this.traduzirDeclaracaoVar.bind(this),
65
+ };
66
+ }
67
+ // #region Operadores
68
+ traduzirSimboloOperador(operador) {
69
+ switch (operador.tipo) {
70
+ case lexico_regular_1.default.ADICAO:
71
+ return '+';
72
+ case lexico_regular_1.default.DIFERENTE:
73
+ return '!=';
74
+ case lexico_regular_1.default.DIVISAO:
75
+ return '/';
76
+ case lexico_regular_1.default.DIVISAO_INTEIRA:
77
+ // Em Potigol `div`; em Delégua `\`
78
+ return '\\';
79
+ case lexico_regular_1.default.E:
80
+ return 'e';
81
+ case lexico_regular_1.default.EXPONENCIACAO:
82
+ return '**';
83
+ case lexico_regular_1.default.IGUAL:
84
+ return '=';
85
+ case lexico_regular_1.default.IGUAL_IGUAL:
86
+ return '==';
87
+ case lexico_regular_1.default.MAIOR:
88
+ return '>';
89
+ case lexico_regular_1.default.MAIOR_IGUAL:
90
+ return '>=';
91
+ case lexico_regular_1.default.MENOR:
92
+ return '<';
93
+ case lexico_regular_1.default.MENOR_IGUAL:
94
+ return '<=';
95
+ case lexico_regular_1.default.MODULO:
96
+ return '%';
97
+ case lexico_regular_1.default.MULTIPLICACAO:
98
+ return '*';
99
+ case lexico_regular_1.default.NEGACAO:
100
+ return '!';
101
+ case lexico_regular_1.default.OU:
102
+ return 'ou';
103
+ case lexico_regular_1.default.SUBTRACAO:
104
+ return '-';
105
+ default:
106
+ return operador.lexema;
107
+ }
108
+ }
109
+ // #endregion
110
+ // #region Construtos
111
+ traduzirConstrutoAgrupamento(agrupamento) {
112
+ return ('(' +
113
+ this.dicionarioConstrutos[agrupamento.expressao.constructor.name](agrupamento.expressao) +
114
+ ')');
115
+ }
116
+ traduzirConstrutoAtribuir(atribuir) {
117
+ var _a;
118
+ const alvo = this.dicionarioConstrutos[atribuir.alvo.constructor.name](atribuir.alvo);
119
+ let valor;
120
+ if (atribuir.simboloOperador && atribuir.valor.constructor === construtos_1.Binario) {
121
+ valor = this.dicionarioConstrutos[atribuir.valor.direita.constructor.name](atribuir.valor.direita);
122
+ }
123
+ else {
124
+ valor = this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
125
+ }
126
+ const operador = ((_a = atribuir.simboloOperador) === null || _a === void 0 ? void 0 : _a.lexema) || ':=';
127
+ return `${alvo} ${operador} ${valor}`;
128
+ }
129
+ traduzirConstrutoBinario(binario) {
130
+ const esquerda = this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
131
+ const operador = this.traduzirSimboloOperador(binario.operador);
132
+ const direita = this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
133
+ return `${esquerda} ${operador} ${direita}`;
134
+ }
135
+ traduzirConstrutoChamada(chamada) {
136
+ const entidade = this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada, chamada.argumentos);
137
+ return entidade;
138
+ }
139
+ traduzirConstrutoDefinirValor(definirValor) {
140
+ const objeto = definirValor.objeto instanceof construtos_1.Isto
141
+ ? 'isto'
142
+ : this.dicionarioConstrutos[definirValor.objeto.constructor.name](definirValor.objeto);
143
+ return `${objeto}.${definirValor.nome.lexema} = ${this.dicionarioConstrutos[definirValor.valor.constructor.name](definirValor.valor)}`;
144
+ }
145
+ traduzirConstrutoFimPara(fimPara) {
146
+ return this.dicionarioDeclaracoes[fimPara.incremento.constructor.name](fimPara.incremento);
147
+ }
148
+ traduzirConstrutoLiteral(literal) {
149
+ if (typeof literal.valor === 'string') {
150
+ // Potigol usa {variavel} para interpolação; Delégua usa ${variavel}.
151
+ // O lexer do Potigol já armazena o texto incluindo as chaves.
152
+ const valorTraduzido = literal.valor.replace(/\{([^}]+)\}/g, '${$1}');
153
+ if (valorTraduzido !== literal.valor) {
154
+ return `\`${valorTraduzido}\``;
155
+ }
156
+ return `"${literal.valor}"`;
157
+ }
158
+ if (typeof literal.valor === 'boolean') {
159
+ return literal.valor ? 'verdadeiro' : 'falso';
160
+ }
161
+ return String(literal.valor);
162
+ }
163
+ traduzirConstrutoLogico(logico) {
164
+ const esquerda = this.dicionarioConstrutos[logico.esquerda.constructor.name](logico.esquerda);
165
+ const operador = this.traduzirSimboloOperador(logico.operador);
166
+ const direita = this.dicionarioConstrutos[logico.direita.constructor.name](logico.direita);
167
+ return `${esquerda} ${operador} ${direita}`;
168
+ }
169
+ traduzirConstrutoUnario(unario) {
170
+ const operador = this.traduzirSimboloOperador(unario.operador);
171
+ const operando = this.dicionarioConstrutos[unario.operando.constructor.name](unario.operando);
172
+ return `${operador}${operando}`;
173
+ }
174
+ traduzirConstrutoVariavel(variavel, argumentos) {
175
+ const args = argumentos || [];
176
+ if (args.length === 0) {
177
+ return variavel.simbolo.lexema;
178
+ }
179
+ const argsResolvidos = args
180
+ .map((a) => this.dicionarioConstrutos[a.constructor.name](a))
181
+ .join(', ');
182
+ return `${variavel.simbolo.lexema}(${argsResolvidos})`;
183
+ }
184
+ traduzirConstrutoConstante(constante, argumentos) {
185
+ const args = argumentos || [];
186
+ if (args.length === 0) {
187
+ return constante.simbolo.lexema;
188
+ }
189
+ const argsResolvidos = args
190
+ .map((a) => this.dicionarioConstrutos[a.constructor.name](a))
191
+ .join(', ');
192
+ return `${constante.simbolo.lexema}(${argsResolvidos})`;
193
+ }
194
+ traduzirConstrutoAcessoMetodoOuPropriedade(acesso, argumentos) {
195
+ const objeto = this.dicionarioConstrutos[acesso.objeto.constructor.name](acesso.objeto);
196
+ const nomeMetodo = acesso.simbolo.lexema;
197
+ // Tradução de métodos de coleção / texto para equivalentes em Delégua
198
+ const traducaoMetodo = this.traduzirMetodoPotigol(nomeMetodo, objeto, argumentos || []);
199
+ if (traducaoMetodo !== null) {
200
+ return traducaoMetodo;
201
+ }
202
+ if (!argumentos || argumentos.length === 0) {
203
+ return `${objeto}.${nomeMetodo}`;
204
+ }
205
+ const argsResolvidos = argumentos
206
+ .map((a) => this.dicionarioConstrutos[a.constructor.name](a))
207
+ .join(', ');
208
+ return `${objeto}.${nomeMetodo}(${argsResolvidos})`;
209
+ }
210
+ /**
211
+ * Traduz métodos específicos de Potigol para equivalentes em Delégua.
212
+ * Retorna `null` se não houver mapeamento direto.
213
+ */
214
+ traduzirMetodoPotigol(nomeMetodo, objeto, argumentos) {
215
+ const args = argumentos.map((a) => this.dicionarioConstrutos[a.constructor.name](a));
216
+ switch (nomeMetodo) {
217
+ // Métodos comuns a Lista/Texto
218
+ case 'tamanho':
219
+ return `${objeto}.tamanho()`;
220
+ case 'cabeça':
221
+ case 'primeiro':
222
+ return `${objeto}[0]`;
223
+ case 'último':
224
+ return `${objeto}[${objeto}.tamanho() - 1]`;
225
+ case 'cauda':
226
+ return `${objeto}.fatiar(1)`;
227
+ case 'inverta':
228
+ return `${objeto}.inverter()`;
229
+ case 'ordene':
230
+ return `${objeto}.ordenar()`;
231
+ case 'pegue':
232
+ return args.length > 0 ? `${objeto}.fatiar(0, ${args[0]})` : `${objeto}`;
233
+ case 'descarte':
234
+ return args.length > 0 ? `${objeto}.fatiar(${args[0]})` : `${objeto}`;
235
+ case 'junte':
236
+ return args.length > 0
237
+ ? `${args[0]}.juntar(${objeto})`
238
+ : `${objeto}.juntar("")`;
239
+ case 'mapeie':
240
+ return args.length > 0 ? `${objeto}.mapear(${args[0]})` : `${objeto}.mapear()`;
241
+ case 'selecione':
242
+ case 'filtre':
243
+ return args.length > 0 ? `${objeto}.filtrar(${args[0]})` : `${objeto}`;
244
+ case 'injete':
245
+ case 'reduza':
246
+ return args.length > 0 ? `${objeto}.reduzir(${args.join(', ')})` : `${objeto}`;
247
+ case 'contém':
248
+ return args.length > 0 ? `${objeto}.inclui(${args[0]})` : `${objeto}`;
249
+ case 'maiúsculo':
250
+ return `${objeto}.maiusculo()`;
251
+ case 'minúsculo':
252
+ return `${objeto}.minusculo()`;
253
+ case 'divida':
254
+ return args.length > 0 ? `${objeto}.dividir(${args[0]})` : `${objeto}.dividir(" ")`;
255
+ case 'insira':
256
+ // Não há equivalente direto; mantém como chamada
257
+ return null;
258
+ case 'remova':
259
+ return args.length > 0 ? `${objeto}.remover(${args[0]})` : null;
260
+ case 'posição':
261
+ return args.length > 0 ? `${objeto}.posicao(${args[0]})` : null;
262
+ case 'vazia':
263
+ return `${objeto}.tamanho() == 0`;
264
+ default:
265
+ return null;
266
+ }
267
+ }
268
+ traduzirConstrutoAcessoIndiceVariavel(acesso) {
269
+ const entidade = this.dicionarioConstrutos[acesso.entidadeChamada.constructor.name](acesso.entidadeChamada);
270
+ const indice = this.dicionarioConstrutos[acesso.indice.constructor.name](acesso.indice);
271
+ return `${entidade}[${indice}]`;
272
+ }
273
+ traduzirFuncaoConstruto(funcao) {
274
+ const params = funcao.parametros.map((p) => p.nome.lexema).join(', ');
275
+ const corpo = this.logicaComumBlocoEscopo(funcao.corpo);
276
+ return `função(${params}) ${corpo}`;
277
+ }
278
+ traduzirConstrutoLeia(leia) {
279
+ var _a, _b, _c;
280
+ if (leia instanceof construtos_2.LeiaInteiro)
281
+ return 'leia()';
282
+ if (leia instanceof construtos_2.LeiaReal)
283
+ return 'leia()';
284
+ if (leia instanceof construtos_2.LeiaTexto)
285
+ return 'leia()';
286
+ if (leia instanceof construtos_2.LeiaInteiros) {
287
+ const args = ((_a = leia.argumentos) === null || _a === void 0 ? void 0 : _a.length)
288
+ ? leia.argumentos.map((a) => this.dicionarioConstrutos[a.constructor.name](a)).join(', ')
289
+ : '';
290
+ return args ? `leia(${args})` : 'leia()';
291
+ }
292
+ if (leia instanceof construtos_2.LeiaReais) {
293
+ const args = ((_b = leia.argumentos) === null || _b === void 0 ? void 0 : _b.length)
294
+ ? leia.argumentos.map((a) => this.dicionarioConstrutos[a.constructor.name](a)).join(', ')
295
+ : '';
296
+ return args ? `leia(${args})` : 'leia()';
297
+ }
298
+ if (leia instanceof construtos_2.LeiaTextos) {
299
+ const args = ((_c = leia.argumentos) === null || _c === void 0 ? void 0 : _c.length)
300
+ ? leia.argumentos.map((a) => this.dicionarioConstrutos[a.constructor.name](a)).join(', ')
301
+ : '';
302
+ return args ? `leia(${args})` : 'leia()';
303
+ }
304
+ return 'leia()';
305
+ }
306
+ traduzirConstrutoVetor(vetor) {
307
+ if (!vetor.valores.length)
308
+ return '[]';
309
+ const valores = vetor.valores
310
+ .map((v) => this.dicionarioConstrutos[v.constructor.name](v))
311
+ .join(', ');
312
+ return `[${valores}]`;
313
+ }
314
+ // #endregion
315
+ // #region Declarações
316
+ logicaComumBlocoEscopo(declaracoes) {
317
+ let resultado = '{\n';
318
+ this.indentacao += 4;
319
+ if (typeof declaracoes[Symbol.iterator] === 'function') {
320
+ for (const dec of declaracoes) {
321
+ resultado += ' '.repeat(this.indentacao);
322
+ const nome = dec.constructor.name;
323
+ if (this.dicionarioConstrutos.hasOwnProperty(nome)) {
324
+ resultado += this.dicionarioConstrutos[nome](dec);
325
+ }
326
+ else {
327
+ resultado += this.dicionarioDeclaracoes[nome](dec);
328
+ }
329
+ resultado += '\n';
330
+ }
331
+ }
332
+ this.indentacao -= 4;
333
+ resultado += ' '.repeat(this.indentacao) + '}';
334
+ return resultado;
335
+ }
336
+ traduzirDeclaracaoBloco(bloco) {
337
+ return this.logicaComumBlocoEscopo(bloco.declaracoes);
338
+ }
339
+ traduzirDeclaracaoConst(declaracaoConst) {
340
+ const nome = declaracaoConst.simbolo.lexema;
341
+ if (!declaracaoConst.inicializador)
342
+ return `var ${nome}`;
343
+ const valor = this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
344
+ return `var ${nome} = ${valor}`;
345
+ }
346
+ traduzirDeclaracaoConstMultiplo(constMultiplo) {
347
+ const nomes = constMultiplo.simbolos.map((s) => s.lexema).join(', ');
348
+ const inicializador = this.dicionarioConstrutos[constMultiplo.inicializador.constructor.name](constMultiplo.inicializador);
349
+ return `var ${nomes} = ${inicializador}`;
350
+ }
351
+ traduzirDeclaracaoVar(declaracaoVar) {
352
+ const nome = declaracaoVar.simbolo.lexema;
353
+ if (!declaracaoVar.inicializador)
354
+ return `var ${nome}`;
355
+ const valor = this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
356
+ return `var ${nome} = ${valor}`;
357
+ }
358
+ traduzirDeclaracaoReatribuicaoVariavel(reatribuicao) {
359
+ const nome = reatribuicao.simbolo.lexema;
360
+ const valor = this.dicionarioConstrutos[reatribuicao.inicializador.constructor.name](reatribuicao.inicializador);
361
+ return `${nome} = ${valor}`;
362
+ }
363
+ traduzirDeclaracaoEscreva(escreva) {
364
+ const args = escreva.argumentos
365
+ .map((a) => this.dicionarioConstrutos[a.constructor.name](a))
366
+ .join(', ');
367
+ return `escreva(${args})`;
368
+ }
369
+ traduzirDeclaracaoEscrevaMesmaLinha(escreva) {
370
+ const args = escreva.argumentos
371
+ .map((a) => this.dicionarioConstrutos[a.constructor.name](a))
372
+ .join(', ');
373
+ // `imprima` em Potigol não adiciona nova linha — mapeia para `escreva` com concatenação manual se necessário
374
+ return `escreva(${args})`;
375
+ }
376
+ traduzirDeclaracaoExpressao(expressao) {
377
+ return this.dicionarioConstrutos[expressao.expressao.constructor.name](expressao.expressao);
378
+ }
379
+ traduzirDeclaracaoFuncao(declaracaoFuncao) {
380
+ const nome = declaracaoFuncao.simbolo.lexema;
381
+ const params = declaracaoFuncao.funcao.parametros.map((p) => p.nome.lexema).join(', ');
382
+ const corpo = this.logicaComumBlocoEscopo(declaracaoFuncao.funcao.corpo);
383
+ return `função ${nome}(${params}) ${corpo}`;
384
+ }
385
+ traduzirDeclaracaoSe(declaracaoSe) {
386
+ const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
387
+ let resultado = `se (${condicao}) `;
388
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
389
+ if (declaracaoSe.caminhoSenao) {
390
+ resultado += ' '.repeat(this.indentacao) + ' senão ';
391
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
392
+ }
393
+ return resultado;
394
+ }
395
+ traduzirDeclaracaoEnquanto(declaracaoEnquanto) {
396
+ const condicao = this.dicionarioConstrutos[declaracaoEnquanto.condicao.constructor.name](declaracaoEnquanto.condicao);
397
+ const corpo = this.dicionarioDeclaracoes[declaracaoEnquanto.corpo.constructor.name](declaracaoEnquanto.corpo);
398
+ return `enquanto (${condicao}) ${corpo}`;
399
+ }
400
+ traduzirDeclaracaoPara(para) {
401
+ let resultado = 'para ';
402
+ // inicializador pode ser Array ou Declaracao
403
+ if (Array.isArray(para.inicializador)) {
404
+ resultado +=
405
+ this.dicionarioDeclaracoes[para.inicializador[0].constructor.name](para.inicializador[0], false) + '; ';
406
+ }
407
+ else {
408
+ resultado +=
409
+ this.dicionarioDeclaracoes[para.inicializador.constructor.name](para.inicializador, false) + '; ';
410
+ }
411
+ resultado +=
412
+ this.dicionarioConstrutos[para.condicao.constructor.name](para.condicao) + '; ';
413
+ resultado +=
414
+ this.dicionarioConstrutos[para.incrementar.constructor.name](para.incrementar) + ' ';
415
+ resultado += this.dicionarioDeclaracoes[para.corpo.constructor.name](para.corpo);
416
+ return resultado;
417
+ }
418
+ traduzirDeclaracaoParaGere(paraGere) {
419
+ // `para...gere` não tem equivalente direto em Delégua.
420
+ // Traduz como um `para` numérico simples com retorna dentro do corpo.
421
+ const nome = paraGere.simboloIteracao.lexema;
422
+ const inicio = this.dicionarioConstrutos[paraGere.inicio.constructor.name](paraGere.inicio);
423
+ const fim = this.dicionarioConstrutos[paraGere.fim.constructor.name](paraGere.fim);
424
+ const passo = paraGere.passo
425
+ ? this.dicionarioConstrutos[paraGere.passo.constructor.name](paraGere.passo)
426
+ : '1';
427
+ const corpoParts = paraGere.corpo
428
+ .map((dec) => {
429
+ const nome = dec.constructor.name;
430
+ if (this.dicionarioConstrutos.hasOwnProperty(nome)) {
431
+ return ' '.repeat(this.indentacao + 4) + this.dicionarioConstrutos[nome](dec);
432
+ }
433
+ return ' '.repeat(this.indentacao + 4) + this.dicionarioDeclaracoes[nome](dec);
434
+ })
435
+ .join('\n');
436
+ return (`para (var ${nome} = ${inicio}; ${nome} <= ${fim}; ${nome} = ${nome} + ${passo}) {\n` +
437
+ corpoParts +
438
+ '\n' +
439
+ ' '.repeat(this.indentacao) +
440
+ '}');
441
+ }
442
+ traduzirDeclaracaoParaCada(paraCada) {
443
+ const variavel = this.dicionarioConstrutos[paraCada.variavelIteracao.constructor.name](paraCada.variavelIteracao);
444
+ const colecao = this.dicionarioConstrutos[paraCada.vetorOuDicionario.constructor.name](paraCada.vetorOuDicionario);
445
+ const corpo = this.dicionarioDeclaracoes[paraCada.corpo.constructor.name](paraCada.corpo);
446
+ return `para cada ${variavel} em ${colecao} ${corpo}`;
447
+ }
448
+ traduzirDeclaracaoEscolha(escolha) {
449
+ const condicao = this.dicionarioConstrutos[escolha.identificadorOuLiteral.constructor.name](escolha.identificadorOuLiteral);
450
+ let resultado = `escolha (${condicao}) {\n`;
451
+ this.indentacao += 4;
452
+ for (const caminho of escolha.caminhos) {
453
+ for (const cond of caminho.condicoes) {
454
+ const condStr = this.dicionarioConstrutos[cond.constructor.name](cond);
455
+ resultado += ' '.repeat(this.indentacao) + `caso ${condStr}:\n`;
456
+ }
457
+ this.indentacao += 4;
458
+ for (const dec of caminho.declaracoes) {
459
+ const nome = dec.constructor.name;
460
+ const linha = this.dicionarioDeclaracoes.hasOwnProperty(nome)
461
+ ? this.dicionarioDeclaracoes[nome](dec)
462
+ : this.dicionarioConstrutos[nome](dec);
463
+ resultado += ' '.repeat(this.indentacao) + linha + '\n';
464
+ }
465
+ this.indentacao -= 4;
466
+ }
467
+ if (escolha.caminhoPadrao) {
468
+ resultado += ' '.repeat(this.indentacao) + 'padrao:\n';
469
+ this.indentacao += 4;
470
+ for (const dec of escolha.caminhoPadrao.declaracoes) {
471
+ const nome = dec.constructor.name;
472
+ const linha = this.dicionarioDeclaracoes.hasOwnProperty(nome)
473
+ ? this.dicionarioDeclaracoes[nome](dec)
474
+ : this.dicionarioConstrutos[nome](dec);
475
+ resultado += ' '.repeat(this.indentacao) + linha + '\n';
476
+ }
477
+ this.indentacao -= 4;
478
+ }
479
+ this.indentacao -= 4;
480
+ resultado += ' '.repeat(this.indentacao) + '}';
481
+ return resultado;
482
+ }
483
+ traduzirDeclaracaoRetorna(retorna) {
484
+ if (!retorna.valor)
485
+ return 'retorna';
486
+ const valor = this.dicionarioConstrutos[retorna.valor.constructor.name](retorna.valor);
487
+ return `retorna ${valor}`;
488
+ }
489
+ traduzirDeclaracaoClasse(classe) {
490
+ let resultado = `classe ${classe.simbolo.lexema}`;
491
+ if (classe.superClasse) {
492
+ resultado += ` herda ${classe.superClasse.simbolo.lexema}`;
493
+ }
494
+ resultado += ' {\n';
495
+ this.indentacao += 4;
496
+ for (const prop of classe.propriedades) {
497
+ resultado += ' '.repeat(this.indentacao) + `var ${prop.nome.lexema}\n`;
498
+ }
499
+ for (const metodo of classe.metodos) {
500
+ resultado += ' '.repeat(this.indentacao) + this.traduzirDeclaracaoFuncao(metodo) + '\n';
501
+ }
502
+ this.indentacao -= 4;
503
+ resultado += ' '.repeat(this.indentacao) + '}';
504
+ return resultado;
505
+ }
506
+ traduzirDeclaracaoAliasTipo(alias) {
507
+ // Potigol: `tipo NovaNome = TipoOriginal`
508
+ // Delégua não tem alias de tipo, então ignoramos ou emitimos um comentário.
509
+ return `// tipo ${alias.simbolo.lexema} = ${alias.tipoOriginal}`;
510
+ }
511
+ traduzir(declaracoes) {
512
+ let resultado = '';
513
+ for (const declaracao of declaracoes) {
514
+ const nome = declaracao.constructor.name;
515
+ if (this.dicionarioDeclaracoes.hasOwnProperty(nome)) {
516
+ resultado += this.dicionarioDeclaracoes[nome](declaracao) + '\n';
517
+ }
518
+ else if (this.dicionarioConstrutos.hasOwnProperty(nome)) {
519
+ resultado += this.dicionarioConstrutos[nome](declaracao) + '\n';
520
+ }
521
+ }
522
+ return resultado;
523
+ }
524
+ }
525
+ exports.TradutorReversoPotigol = TradutorReversoPotigol;
526
+ //# sourceMappingURL=tradutor-reverso-potigol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradutor-reverso-potigol.js","sourceRoot":"","sources":["../../fontes/tradutores/tradutor-reverso-potigol.ts"],"names":[],"mappings":";;;;;;AAAA,kEAmB2C;AAsB3C,8CAAsG;AAGtG,yFAAkE;AAElE;;;;GAIG;AACH,MAAa,sBAAsB;IAAnC;QACI,eAAU,GAAW,CAAC,CAAC;QA6hBvB,aAAa;QAEb,yBAAoB,GAAiC;YACjD,oBAAoB,EAAE,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3E,yBAAyB,EAAE,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC;YACrF,WAAW,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;YACzD,QAAQ,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjD,SAAS,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;YACrD,YAAY,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3D,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjD,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM;YAClB,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjD,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,QAAQ,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC;QAEF,0BAAqB,GAAiC;YAClD,SAAS,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,aAAa,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;YAC1B,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,iBAAiB,EAAE,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;YACtE,SAAS,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,gBAAgB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,oBAAoB,EAAE,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5E,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ;YACtB,GAAG,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7C,CAAC;IAcN,CAAC;IA1lBG,qBAAqB;IAErB,uBAAuB,CAAC,QAA0B;QAC9C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,wBAAe,CAAC,MAAM;gBACvB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,SAAS;gBAC1B,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,OAAO;gBACxB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,eAAe;gBAChC,mCAAmC;gBACnC,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,CAAC;gBAClB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,aAAa;gBAC9B,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,KAAK;gBACtB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,WAAW;gBAC5B,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,KAAK;gBACtB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,WAAW;gBAC5B,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,KAAK;gBACtB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,WAAW;gBAC5B,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,MAAM;gBACvB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,aAAa;gBAC9B,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,OAAO;gBACxB,OAAO,GAAG,CAAC;YACf,KAAK,wBAAe,CAAC,EAAE;gBACnB,OAAO,IAAI,CAAC;YAChB,KAAK,wBAAe,CAAC,SAAS;gBAC1B,OAAO,GAAG,CAAC;YACf;gBACI,OAAO,QAAQ,CAAC,MAAM,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,aAAa;IAEb,qBAAqB;IAErB,4BAA4B,CAAC,WAAwB;QACjD,OAAO,CACH,GAAG;YACH,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;YACxF,GAAG,CACN,CAAC;IACN,CAAC;IAED,yBAAyB,CAAC,QAAkB;;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,KAAa,CAAC;QAClB,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,KAAK,oBAAO,EAAE,CAAC;YACrE,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAE,QAAQ,CAAC,KAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAClF,QAAQ,CAAC,KAAiB,CAAC,OAAO,CACtC,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,QAAQ,GAAG,CAAA,MAAA,QAAQ,CAAC,eAAe,0CAAE,MAAM,KAAI,IAAI,CAAC;QAC1D,OAAO,GAAG,IAAI,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,wBAAwB,CAAC,OAAgB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7F,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;IAChD,CAAC;IAED,wBAAwB,CAAC,OAAgB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAChF,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,UAAU,CACrB,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,6BAA6B,CAAC,YAA0B;QACpD,MAAM,MAAM,GACR,YAAY,CAAC,MAAM,YAAY,iBAAI;YAC/B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/F,OAAO,GAAG,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3I,CAAC;IAED,wBAAwB,CAAC,OAAgB;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/F,CAAC;IAED,wBAAwB,CAAC,OAAgB;QACrC,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpC,qEAAqE;YACrE,8DAA8D;YAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,cAAc,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnC,OAAO,KAAK,cAAc,IAAI,CAAC;YACnC,CAAC;YACD,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB,CAAC,MAAc;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3F,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;IAChD,CAAC;IAED,uBAAuB,CAAC,MAAc;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9F,OAAO,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,yBAAyB,CAAC,QAAkB,EAAE,UAAwB;QAClE,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,CAAC;QACD,MAAM,cAAc,GAAG,IAAI;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC;IAC3D,CAAC;IAED,0BAA0B,CAAC,SAAoB,EAAE,UAAwB;QACrE,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,CAAC;QACD,MAAM,cAAc,GAAG,IAAI;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC;IAC5D,CAAC;IAED,0CAA0C,CACtC,MAAiC,EACjC,UAAwB;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAEzC,sEAAsE;QACtE,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QACxF,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,cAAc,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;QACrC,CAAC;QACD,MAAM,cAAc,GAAG,UAAU;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,GAAG,MAAM,IAAI,UAAU,IAAI,cAAc,GAAG,CAAC;IACxD,CAAC;IAED;;;OAGG;IACO,qBAAqB,CAC3B,UAAkB,EAClB,MAAc,EACd,UAAuB;QAEvB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,QAAQ,UAAU,EAAE,CAAC;YACjB,+BAA+B;YAC/B,KAAK,SAAS;gBACV,OAAO,GAAG,MAAM,YAAY,CAAC;YACjC,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;gBACX,OAAO,GAAG,MAAM,KAAK,CAAC;YAC1B,KAAK,QAAQ;gBACT,OAAO,GAAG,MAAM,IAAI,MAAM,iBAAiB,CAAC;YAChD,KAAK,OAAO;gBACR,OAAO,GAAG,MAAM,YAAY,CAAC;YACjC,KAAK,SAAS;gBACV,OAAO,GAAG,MAAM,aAAa,CAAC;YAClC,KAAK,QAAQ;gBACT,OAAO,GAAG,MAAM,YAAY,CAAC;YACjC,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,cAAc,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;YAC7E,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;YAC1E,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC;oBAClB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,MAAM,GAAG;oBAChC,CAAC,CAAC,GAAG,MAAM,aAAa,CAAC;YACjC,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC;YACnF,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;YAC3E,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;YACnF,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;YAC1E,KAAK,WAAW;gBACZ,OAAO,GAAG,MAAM,cAAc,CAAC;YACnC,KAAK,WAAW;gBACZ,OAAO,GAAG,MAAM,cAAc,CAAC;YACnC,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,eAAe,CAAC;YACxF,KAAK,QAAQ;gBACT,iDAAiD;gBACjD,OAAO,IAAI,CAAC;YAChB,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,KAAK,OAAO;gBACR,OAAO,GAAG,MAAM,iBAAiB,CAAC;YACtC;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC;IAED,qCAAqC,CAAC,MAA4B;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAC/E,MAAM,CAAC,eAAe,CACzB,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxF,OAAO,GAAG,QAAQ,IAAI,MAAM,GAAG,CAAC;IACpC,CAAC;IAED,uBAAuB,CAAC,MAAuB;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,UAAU,MAAM,KAAK,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,qBAAqB,CAAC,IAAU;;QAC5B,IAAI,IAAI,YAAY,wBAAW;YAAE,OAAO,QAAQ,CAAC;QACjD,IAAI,IAAI,YAAY,qBAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9C,IAAI,IAAI,YAAY,sBAAS;YAAE,OAAO,QAAQ,CAAC;QAC/C,IAAI,IAAI,YAAY,yBAAY,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM;gBAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzF,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,YAAY,sBAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM;gBAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzF,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,YAAY,uBAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM;gBAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzF,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,sBAAsB,CAAC,KAAY;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;aACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,OAAO,GAAG,CAAC;IAC1B,CAAC;IAED,aAAa;IAEb,sBAAsB;IAEZ,sBAAsB,CAAC,WAAyB;QACtD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QAErB,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YACrD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC5B,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClC,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACJ,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvD,CAAC;gBACD,SAAS,IAAI,IAAI,CAAC;YACtB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAC/C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,uBAAuB,CAAC,KAAY;QAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,uBAAuB,CAAC,eAAsB;QAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,aAAa;YAAE,OAAO,OAAO,IAAI,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CACnF,eAAe,CAAC,aAAa,CAChC,CAAC;QACF,OAAO,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,+BAA+B,CAAC,aAA4B;QACxD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CACzF,aAAa,CAAC,aAAa,CAC9B,CAAC;QACF,OAAO,OAAO,KAAK,MAAM,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,qBAAqB,CAAC,aAAkB;QACpC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,aAAa;YAAE,OAAO,OAAO,IAAI,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CACjF,aAAa,CAAC,aAAa,CAC9B,CAAC;QACF,OAAO,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,sCAAsC,CAAC,YAAkC;QACrE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAChF,YAAY,CAAC,aAAa,CAC7B,CAAC;QACF,OAAO,GAAG,IAAI,MAAM,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,yBAAyB,CAAC,OAAgB;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,WAAW,IAAI,GAAG,CAAC;IAC9B,CAAC;IAED,mCAAmC,CAAC,OAA0B;QAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,6GAA6G;QAC7G,OAAO,WAAW,IAAI,GAAG,CAAC;IAC9B,CAAC;IAED,2BAA2B,CAAC,SAAoB;QAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChG,CAAC;IAED,wBAAwB,CAAC,gBAAkC;QACvD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,UAAU,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,oBAAoB,CAAC,YAAgB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAC9E,YAAY,CAAC,QAAQ,CACxB,CAAC;QACF,IAAI,SAAS,GAAG,OAAO,QAAQ,IAAI,CAAC;QACpC,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAC/E,YAAY,CAAC,YAAY,CAC5B,CAAC;QAEF,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YAC5B,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;YACrD,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAC/E,YAAY,CAAC,YAAY,CAC5B,CAAC;QACN,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,0BAA0B,CAAC,kBAA4B;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CACpF,kBAAkB,CAAC,QAAQ,CAC9B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAC/E,kBAAkB,CAAC,KAAK,CAC3B,CAAC;QACF,OAAO,aAAa,QAAQ,KAAK,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,sBAAsB,CAAC,IAAU;QAC7B,IAAI,SAAS,GAAG,OAAO,CAAC;QAExB,6CAA6C;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,SAAS;gBACL,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAC9D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACrB,KAAK,CACR,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACJ,SAAS;gBACL,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAC3D,IAAI,CAAC,aAAa,EAClB,KAAK,CACR,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,SAAS;YACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACpF,SAAS;YACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QACzF,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjF,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,0BAA0B,CAAC,QAAkB;QACzC,uDAAuD;QACvD,sEAAsE;QACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;YACxB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5E,CAAC,CAAC,GAAG,CAAC;QAEV,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK;aAC5B,GAAG,CAAC,CAAC,GAAe,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YAClC,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnF,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,OAAO,CACH,aAAa,IAAI,MAAM,MAAM,KAAK,IAAI,OAAO,GAAG,KAAK,IAAI,MAAM,IAAI,MAAM,KAAK,OAAO;YACrF,UAAU;YACV,IAAI;YACJ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3B,GAAG,CACN,CAAC;IACN,CAAC;IAED,0BAA0B,CAAC,QAAkB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAClF,QAAQ,CAAC,gBAAgB,CAC5B,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAClF,QAAQ,CAAC,iBAAiB,CAC7B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1F,OAAO,aAAa,QAAQ,OAAO,OAAO,IAAI,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,yBAAyB,CAAC,OAAgB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CACvF,OAAO,CAAC,sBAAsB,CACjC,CAAC;QACF,IAAI,SAAS,GAAG,YAAY,QAAQ,OAAO,CAAC;QAC5C,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QAErB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvE,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,OAAO,KAAK,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClC,MAAM,KAAK,GACP,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;oBACvC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/C,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;YACvD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClC,MAAM,KAAK,GACP,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;oBACvC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/C,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAC/C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,yBAAyB,CAAC,OAAgB;QACtC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvF,OAAO,WAAW,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,wBAAwB,CAAC,MAAc;QACnC,IAAI,SAAS,GAAG,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,SAAS,IAAI,UAAW,MAAM,CAAC,WAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACxE,CAAC;QACD,SAAS,IAAI,MAAM,CAAC;QACpB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAmC,EAAE,CAAC;YAC5D,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;QAC3E,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC5F,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAC/C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,2BAA2B,CAAC,KAAgB;QACxC,0CAA0C;QAC1C,4EAA4E;QAC5E,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;IACrE,CAAC;IAqDD,QAAQ,CAAC,WAAyB;QAC9B,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;YACzC,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACrE,CAAC;iBAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACpE,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AA7lBD,wDA6lBC"}