next-auto-i18n 0.5.3 → 0.7.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/DOCUMENTATION.md +138 -14
- package/README.md +35 -3
- package/dist/cli/doc-generator.d.ts +23 -0
- package/dist/cli/doc-generator.d.ts.map +1 -0
- package/dist/cli/doc-generator.js +187 -0
- package/dist/cli/doc-generator.js.map +1 -0
- package/dist/cli/index.js +153 -0
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/DOCUMENTATION.md
CHANGED
|
@@ -24,6 +24,7 @@ next-auto-i18n is a CLI tool that fully automates internationalization (i18n) in
|
|
|
24
24
|
- [Commands](#commands)
|
|
25
25
|
- [How It Works](#how-it-works)
|
|
26
26
|
- [Supported String Types](#supported-string-types)
|
|
27
|
+
- [Module-scope Strings](#module-scope-strings)
|
|
27
28
|
- [Safety & Backups](#safety--backups)
|
|
28
29
|
- [DeepL API](#deepl-api)
|
|
29
30
|
- [Troubleshooting](#troubleshooting)
|
|
@@ -270,6 +271,72 @@ next-auto-i18n add-locale zh
|
|
|
270
271
|
|
|
271
272
|
---
|
|
272
273
|
|
|
274
|
+
### `next-auto-i18n extract`
|
|
275
|
+
|
|
276
|
+
Scans the project, translates all strings, and generates a Markdown integration guide — **without modifying any source file**. Use this command when you want to keep full control over the integration process.
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
next-auto-i18n extract # Interactive (asks locale if no config)
|
|
280
|
+
next-auto-i18n extract --locale en,es # Skip locale prompt
|
|
281
|
+
next-auto-i18n extract --out docs/i18n-guide.md # Custom output path
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
| Flag | Description |
|
|
285
|
+
|------|-------------|
|
|
286
|
+
| `--locale <locales>` | Comma-separated target locales (used if no `auto-i18n.config.json` exists) |
|
|
287
|
+
| `--out <path>` | Output path for the Markdown guide (default: `i18n-guide.md`) |
|
|
288
|
+
|
|
289
|
+
**What it does:**
|
|
290
|
+
|
|
291
|
+
1. Scans your project for translatable strings (same AST engine as `init`)
|
|
292
|
+
2. Generates/updates `messages/<sourceLocale>.json` with stable key merge
|
|
293
|
+
3. Translates to all target locales via DeepL (incremental — only new strings)
|
|
294
|
+
4. Detects module-scope strings that require manual integration
|
|
295
|
+
5. Generates `i18n-guide.md` with full integration instructions
|
|
296
|
+
|
|
297
|
+
**What it does NOT do:** modify any `.tsx`/`.ts`/`.jsx`/`.js` source file.
|
|
298
|
+
|
|
299
|
+
**Generated guide contents:**
|
|
300
|
+
|
|
301
|
+
- Summary table (strings found, keys generated, files)
|
|
302
|
+
- List of generated translation files
|
|
303
|
+
- Usage examples (Client Component with `useTranslations`, Server Component with `getTranslations`)
|
|
304
|
+
- Module-scope strings section with before/after code examples
|
|
305
|
+
- Per-file string tables with line number, type, original text, key, and replacement code
|
|
306
|
+
- Complete key reference table
|
|
307
|
+
|
|
308
|
+
**Example output:**
|
|
309
|
+
|
|
310
|
+
```
|
|
311
|
+
▸ Configuration
|
|
312
|
+
✓ Configuration chargée (fr → en, es)
|
|
313
|
+
|
|
314
|
+
▸ Scan du projet
|
|
315
|
+
✓ 47 strings trouvées dans 12 fichiers
|
|
316
|
+
components/Hero.tsx 8 strings
|
|
317
|
+
components/Navbar.tsx 5 strings
|
|
318
|
+
...
|
|
319
|
+
|
|
320
|
+
▸ Génération des clés
|
|
321
|
+
✓ 42 clés → ./messages/fr.json
|
|
322
|
+
|
|
323
|
+
▸ Traduction via DeepL
|
|
324
|
+
✓ 84 strings traduites
|
|
325
|
+
./messages/en.json
|
|
326
|
+
./messages/es.json
|
|
327
|
+
|
|
328
|
+
▸ Analyse du code source
|
|
329
|
+
⚠ 3 strings module-scope détectées (action manuelle requise — voir guide)
|
|
330
|
+
|
|
331
|
+
▸ Génération du guide
|
|
332
|
+
✓ Guide généré : i18n-guide.md
|
|
333
|
+
|
|
334
|
+
✓ Extraction terminée — aucun fichier source modifié
|
|
335
|
+
Consultez le guide pour intégrer les traductions manuellement.
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
273
340
|
### `next-auto-i18n missing`
|
|
274
341
|
|
|
275
342
|
Reports untranslated keys per target locale.
|
|
@@ -562,6 +629,52 @@ export default function Button() {
|
|
|
562
629
|
|
|
563
630
|
---
|
|
564
631
|
|
|
632
|
+
## Module-scope Strings
|
|
633
|
+
|
|
634
|
+
Some strings live inside `const` arrays or objects declared **at module level** (outside any component body). Because `t()` can only be called inside a component, these strings cannot be auto-rewritten.
|
|
635
|
+
|
|
636
|
+
**Example:**
|
|
637
|
+
|
|
638
|
+
```tsx
|
|
639
|
+
// ❌ Module-scope — t() is not available here
|
|
640
|
+
const navItems = [
|
|
641
|
+
{ label: 'Accueil', href: '/' },
|
|
642
|
+
{ label: 'À propos', href: '/about' },
|
|
643
|
+
];
|
|
644
|
+
|
|
645
|
+
export function Navbar() {
|
|
646
|
+
return <nav>{navItems.map(i => <a href={i.href}>{i.label}</a>)}</nav>;
|
|
647
|
+
}
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
**What next-auto-i18n does:**
|
|
651
|
+
|
|
652
|
+
- Detects these strings via AST analysis
|
|
653
|
+
- Adds them to the JSON translation files (they are translated)
|
|
654
|
+
- **Does NOT rewrite the source file** — doing so would break the code
|
|
655
|
+
- Warns in the CLI with file path, line number, and the target key
|
|
656
|
+
- Includes guidance and a before/after example in the `extract` guide
|
|
657
|
+
|
|
658
|
+
**How to fix manually:**
|
|
659
|
+
|
|
660
|
+
```tsx
|
|
661
|
+
// ✅ Function-scope — t() is available
|
|
662
|
+
import { useTranslations } from 'next-intl';
|
|
663
|
+
|
|
664
|
+
export function Navbar() {
|
|
665
|
+
const t = useTranslations();
|
|
666
|
+
const navItems = [
|
|
667
|
+
{ label: t('accueil'), href: '/' },
|
|
668
|
+
{ label: t('a_propos'), href: '/about' },
|
|
669
|
+
];
|
|
670
|
+
return <nav>{navItems.map(i => <a href={i.href}>{i.label}</a>)}</nav>;
|
|
671
|
+
}
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
Move the `const` declaration inside the component body so `t()` is in scope.
|
|
675
|
+
|
|
676
|
+
---
|
|
677
|
+
|
|
565
678
|
## Safety & Backups
|
|
566
679
|
|
|
567
680
|
### `--dry-run` mode
|
|
@@ -775,12 +888,19 @@ npx vitest
|
|
|
775
888
|
```
|
|
776
889
|
next-auto-i18n/
|
|
777
890
|
├── src/
|
|
778
|
-
│ ├── cli/
|
|
779
|
-
│ ├──
|
|
780
|
-
│ ├──
|
|
781
|
-
│
|
|
782
|
-
│ ├──
|
|
783
|
-
│ ├──
|
|
891
|
+
│ ├── cli/
|
|
892
|
+
│ │ ├── index.ts # CLI entry point (Commander.js) — all commands
|
|
893
|
+
│ │ ├── prompts.ts # Interactive prompts + dry-run confirmation
|
|
894
|
+
│ │ └── doc-generator.ts # Markdown guide generator (used by extract)
|
|
895
|
+
│ ├── scanner/ # AST parsing + string extraction + filtering
|
|
896
|
+
│ ├── generator/ # Key generation + JSON file creation
|
|
897
|
+
│ ├── translator/ # DeepL API client + translation orchestration
|
|
898
|
+
│ ├── rewriter/
|
|
899
|
+
│ │ ├── index.ts # Rewrite orchestration + FileRewriteDetail
|
|
900
|
+
│ │ ├── jsx-rewriter.ts # JSX text + template literal rewriting
|
|
901
|
+
│ │ ├── attr-rewriter.ts # JSX attribute rewriting
|
|
902
|
+
│ │ └── const-rewriter.ts # String literal rewriting + module-scope detection
|
|
903
|
+
│ ├── injector/ # Next.js config injection:
|
|
784
904
|
│ │ ├── config-injector.ts # next.config wrapping
|
|
785
905
|
│ │ ├── middleware-injector.ts # middleware.ts / proxy.ts
|
|
786
906
|
│ │ ├── routing-injector.ts # i18n/routing.ts
|
|
@@ -788,9 +908,9 @@ next-auto-i18n/
|
|
|
788
908
|
│ │ ├── switcher-injector.ts # LanguageSwitcher component
|
|
789
909
|
│ │ ├── locale-structure-injector.ts # app/[locale]/ structure
|
|
790
910
|
│ │ └── layout-injector.ts # layout utilities
|
|
791
|
-
│ └── utils/
|
|
792
|
-
├── tests/
|
|
793
|
-
└── DOCUMENTATION.md
|
|
911
|
+
│ └── utils/ # Config, env, logger, dependency utilities
|
|
912
|
+
├── tests/ # Vitest test suites (343 tests)
|
|
913
|
+
└── DOCUMENTATION.md # This file
|
|
794
914
|
```
|
|
795
915
|
|
|
796
916
|
### Running tests
|
|
@@ -805,14 +925,15 @@ The test suite covers all modules:
|
|
|
805
925
|
|--------|-------|
|
|
806
926
|
| Scanner (filters) | 109 |
|
|
807
927
|
| Generator (key-builder) | 39 |
|
|
808
|
-
| Rewriter |
|
|
928
|
+
| Rewriter | 49 |
|
|
809
929
|
| Injector | 25 |
|
|
810
|
-
| Translator (DeepL) |
|
|
811
|
-
| Generator |
|
|
930
|
+
| Translator (DeepL) | 26 |
|
|
931
|
+
| Generator | 27 |
|
|
812
932
|
| Scanner (string-extractor) | 20 |
|
|
813
933
|
| CLI (config, env) | 18 |
|
|
814
934
|
| Translator (orchestration) | 11 |
|
|
815
|
-
|
|
|
935
|
+
| Doc generator | 9 |
|
|
936
|
+
| **Total** | **343** |
|
|
816
937
|
|
|
817
938
|
### Submitting changes
|
|
818
939
|
|
|
@@ -829,8 +950,9 @@ The test suite covers all modules:
|
|
|
829
950
|
|
|
830
951
|
### v1.x — Enhancements
|
|
831
952
|
|
|
832
|
-
- [x] `next-auto-i18n sync` — rescan and incremental update
|
|
953
|
+
- [x] `next-auto-i18n sync` — rescan and incremental update (stable key merge)
|
|
833
954
|
- [x] `next-auto-i18n missing` — report untranslated keys
|
|
955
|
+
- [x] `next-auto-i18n extract` — translate + generate guide without touching source
|
|
834
956
|
- [x] Floating language switcher widget (auto-injected, customizable)
|
|
835
957
|
- [x] Automatic `next-intl` dependency installation
|
|
836
958
|
- [x] `app/[locale]/` structure auto-creation (required by next-intl App Router)
|
|
@@ -838,6 +960,8 @@ The test suite covers all modules:
|
|
|
838
960
|
- [x] Dynamic `<html lang>` attribute
|
|
839
961
|
- [x] Next.js 16 `proxy.ts` detection
|
|
840
962
|
- [x] Scan scope limited to Next.js conventional directories
|
|
963
|
+
- [x] Module-scope string detection — warn instead of breaking code
|
|
964
|
+
- [x] Detailed CLI output — per-file results, string counts, module-scope warnings
|
|
841
965
|
- [ ] `--watch` mode — auto-sync on file changes
|
|
842
966
|
- [ ] Support for Vite + React (without Next.js)
|
|
843
967
|
- [ ] Custom key naming strategies
|
package/README.md
CHANGED
|
@@ -51,6 +51,7 @@ Et en quelques secondes :
|
|
|
51
51
|
- Genere `i18n/routing.ts` + `i18n/request.ts` (requis pour les Server Components)
|
|
52
52
|
- Cree la structure `app/[locale]/` requise par le App Router next-intl
|
|
53
53
|
- Injecte un **Language Switcher flottant** (personnalisable) pour changer de langue
|
|
54
|
+
- Detecte les strings dans les `const` module-scope et vous guide pour les integrer manuellement
|
|
54
55
|
|
|
55
56
|
## Commandes
|
|
56
57
|
|
|
@@ -66,12 +67,24 @@ next-auto-i18n init --locale en,es,de # langues cibles en ligne de commande
|
|
|
66
67
|
|
|
67
68
|
### `next-auto-i18n sync`
|
|
68
69
|
|
|
69
|
-
Rescanne le projet
|
|
70
|
+
Rescanne le projet, integre les nouvelles strings et synchronise toutes les traductions (mode incrementiel — les cles existantes sont preservees).
|
|
70
71
|
|
|
71
72
|
```bash
|
|
72
73
|
next-auto-i18n sync
|
|
73
74
|
```
|
|
74
75
|
|
|
76
|
+
### `next-auto-i18n extract`
|
|
77
|
+
|
|
78
|
+
Traduit toutes les strings et genere un **guide d'integration Markdown** — sans modifier aucun fichier source. Utile pour garder le controle sur la reecriture du code.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
next-auto-i18n extract # guide genere dans i18n-guide.md
|
|
82
|
+
next-auto-i18n extract --out docs/i18n-guide.md # chemin personnalise
|
|
83
|
+
next-auto-i18n extract --locale en,es # langues cibles (si pas de config)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Le guide genere inclut : exemples d'utilisation Client/Server Component, tableaux par fichier (ligne, type, cle, code a copier-coller), section dedicee aux strings module-scope.
|
|
87
|
+
|
|
75
88
|
### `next-auto-i18n add-locale <locale>`
|
|
76
89
|
|
|
77
90
|
Ajoute une nouvelle langue et traduit toutes les cles existantes.
|
|
@@ -133,9 +146,10 @@ Chaque string devient une cle i18n normalisee :
|
|
|
133
146
|
|
|
134
147
|
### 3. Traduction DeepL
|
|
135
148
|
|
|
136
|
-
- Appel batch avec protection des placeholders (`{name}`
|
|
149
|
+
- Appel batch avec protection des placeholders (`{name}` → `<x>name</x>`)
|
|
137
150
|
- Mode incrementiel : seules les cles manquantes sont traduites
|
|
138
151
|
- Compatible DeepL Free (500k chars/mois) et Pro
|
|
152
|
+
- Restauration automatique des entites HTML (`'`, `'`, etc.)
|
|
139
153
|
|
|
140
154
|
### 4. Reecriture des composants
|
|
141
155
|
|
|
@@ -147,6 +161,24 @@ Chaque string devient une cle i18n normalisee :
|
|
|
147
161
|
|
|
148
162
|
- Server Components : `await getTranslations()` (next-intl/server)
|
|
149
163
|
- Client Components : `useTranslations()` (next-intl)
|
|
164
|
+
- Les strings dans des `const` module-scope (hors composant) sont **detectees et signalees** avec le fichier + numero de ligne — elles sont traduites dans les JSON mais pas reecrites automatiquement (voir section suivante)
|
|
165
|
+
|
|
166
|
+
### Strings module-scope
|
|
167
|
+
|
|
168
|
+
Les `const` declarees au niveau module (hors fonction/composant) ne peuvent pas utiliser `t()` directement. next-auto-i18n les detecte, les traduit, et vous indique quoi faire :
|
|
169
|
+
|
|
170
|
+
```tsx
|
|
171
|
+
// ❌ avant — const module-scope, t() inaccessible ici
|
|
172
|
+
const items = ['Accueil', 'A propos', 'Contact'];
|
|
173
|
+
|
|
174
|
+
// ✅ apres — deplacez la const dans le composant
|
|
175
|
+
export function Nav() {
|
|
176
|
+
const t = useTranslations();
|
|
177
|
+
const items = [t('accueil'), t('a_propos'), t('contact')];
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Utilisez `next-auto-i18n extract` pour obtenir un guide complet avec tous les cas a corriger.
|
|
150
182
|
|
|
151
183
|
### 5. Injection config Next.js
|
|
152
184
|
|
|
@@ -182,4 +214,4 @@ npm run dev -- init # test local
|
|
|
182
214
|
|
|
183
215
|
## Licence
|
|
184
216
|
|
|
185
|
-
MIT
|
|
217
|
+
MIT — [Steven KOULO](https://github.com/stvekoulo)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ExtractedString } from '../scanner/string-extractor.js';
|
|
2
|
+
export interface FileDocEntry {
|
|
3
|
+
filePath: string;
|
|
4
|
+
/** Chemin relatif depuis projectRoot (pour l'affichage). */
|
|
5
|
+
relPath: string;
|
|
6
|
+
strings: ExtractedString[];
|
|
7
|
+
/** Valeurs des strings au module-scope (non réécrivables automatiquement). */
|
|
8
|
+
moduleScopeValues: Set<string>;
|
|
9
|
+
}
|
|
10
|
+
export interface DocOptions {
|
|
11
|
+
projectRoot: string;
|
|
12
|
+
sourceLocale: string;
|
|
13
|
+
targetLocales: string[];
|
|
14
|
+
/** Chemin relatif du dossier messages (pour l'affichage). */
|
|
15
|
+
messagesDir: string;
|
|
16
|
+
keyMap: Map<string, string>;
|
|
17
|
+
files: FileDocEntry[];
|
|
18
|
+
outputPath: string;
|
|
19
|
+
date: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function buildDoc(options: DocOptions): string;
|
|
22
|
+
export declare function generateDoc(options: DocOptions): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=doc-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-generator.d.ts","sourceRoot":"","sources":["../../src/cli/doc-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,8EAA8E;IAC9E,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAmCD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAwKpD;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
3
|
+
function escapeCell(s) {
|
|
4
|
+
return s.replace(/\|/g, '\\|').replace(/[\r\n]+/g, ' ');
|
|
5
|
+
}
|
|
6
|
+
function trunc(s, max = 55) {
|
|
7
|
+
return s.length > max ? s.slice(0, max) + '…' : s;
|
|
8
|
+
}
|
|
9
|
+
function typeLabel(type) {
|
|
10
|
+
switch (type) {
|
|
11
|
+
case 'jsx-text': return 'JSX texte';
|
|
12
|
+
case 'jsx-attribute': return 'Attribut';
|
|
13
|
+
case 'template-literal': return 'Template';
|
|
14
|
+
case 'template-literal-dynamic': return 'Template dynamique';
|
|
15
|
+
case 'string-literal': return 'Constante';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function replacementCode(s, key) {
|
|
19
|
+
if (s.type === 'template-literal-dynamic' && s.variables?.length) {
|
|
20
|
+
const params = s.variables.join(', ');
|
|
21
|
+
return `{t("${key}", { ${params} })}`;
|
|
22
|
+
}
|
|
23
|
+
if (s.type === 'string-literal') {
|
|
24
|
+
return `t("${key}")`;
|
|
25
|
+
}
|
|
26
|
+
return `{t("${key}")}`;
|
|
27
|
+
}
|
|
28
|
+
// ── Markdown builder ───────────────────────────────────────────────────────
|
|
29
|
+
export function buildDoc(options) {
|
|
30
|
+
const { sourceLocale, targetLocales, messagesDir, keyMap, files, date } = options;
|
|
31
|
+
const totalStrings = files.reduce((sum, f) => sum + f.strings.length, 0);
|
|
32
|
+
const totalKeys = keyMap.size;
|
|
33
|
+
const moduleScopeTotal = files.reduce((sum, f) => sum + f.moduleScopeValues.size, 0);
|
|
34
|
+
const L = [];
|
|
35
|
+
// ── En-tête ──────────────────────────────────────────────────────────────
|
|
36
|
+
L.push('# Guide d\'intégration i18n — next-auto-i18n');
|
|
37
|
+
L.push('');
|
|
38
|
+
L.push(`> Généré le **${date}** · ✅ Aucun fichier source modifié.`);
|
|
39
|
+
L.push('');
|
|
40
|
+
// ── Résumé ───────────────────────────────────────────────────────────────
|
|
41
|
+
L.push('## Résumé');
|
|
42
|
+
L.push('');
|
|
43
|
+
L.push(`| | |`);
|
|
44
|
+
L.push(`|---|---|`);
|
|
45
|
+
L.push(`| Strings détectées | **${totalStrings}** dans **${files.length}** fichier${files.length > 1 ? 's' : ''} |`);
|
|
46
|
+
L.push(`| Clés i18n générées | **${totalKeys}** → \`${messagesDir}/${sourceLocale}.json\` |`);
|
|
47
|
+
L.push(`| Traductions générées | ${targetLocales.map(l => `\`${messagesDir}/${l}.json\``).join(', ')} |`);
|
|
48
|
+
if (moduleScopeTotal > 0) {
|
|
49
|
+
L.push(`| ⚠️ Action manuelle | **${moduleScopeTotal}** string${moduleScopeTotal > 1 ? 's' : ''} module-scope (voir section dédiée) |`);
|
|
50
|
+
}
|
|
51
|
+
L.push('');
|
|
52
|
+
// ── Fichiers générés ─────────────────────────────────────────────────────
|
|
53
|
+
L.push('## Fichiers générés');
|
|
54
|
+
L.push('');
|
|
55
|
+
L.push('| Fichier | Description |');
|
|
56
|
+
L.push('|---------|-------------|');
|
|
57
|
+
L.push(`| \`${messagesDir}/${sourceLocale}.json\` | Textes source (${sourceLocale}) |`);
|
|
58
|
+
for (const locale of targetLocales) {
|
|
59
|
+
L.push(`| \`${messagesDir}/${locale}.json\` | Traductions (${locale}) |`);
|
|
60
|
+
}
|
|
61
|
+
L.push('');
|
|
62
|
+
// ── Guide d'utilisation ───────────────────────────────────────────────────
|
|
63
|
+
L.push('## Comment utiliser les traductions');
|
|
64
|
+
L.push('');
|
|
65
|
+
L.push('### Composant Client (`\'use client\'`)');
|
|
66
|
+
L.push('');
|
|
67
|
+
L.push('```tsx');
|
|
68
|
+
L.push("'use client';");
|
|
69
|
+
L.push("import { useTranslations } from 'next-intl';");
|
|
70
|
+
L.push('');
|
|
71
|
+
L.push('export function MonComposant() {');
|
|
72
|
+
L.push(' const t = useTranslations();');
|
|
73
|
+
L.push(' return <p>{t("ma_cle")}</p>;');
|
|
74
|
+
L.push('}');
|
|
75
|
+
L.push('```');
|
|
76
|
+
L.push('');
|
|
77
|
+
L.push('### Composant Serveur (async)');
|
|
78
|
+
L.push('');
|
|
79
|
+
L.push('```tsx');
|
|
80
|
+
L.push("import { getTranslations } from 'next-intl/server';");
|
|
81
|
+
L.push('');
|
|
82
|
+
L.push('export default async function Page() {');
|
|
83
|
+
L.push(' const t = await getTranslations();');
|
|
84
|
+
L.push(' return <p>{t("ma_cle")}</p>;');
|
|
85
|
+
L.push('}');
|
|
86
|
+
L.push('```');
|
|
87
|
+
L.push('');
|
|
88
|
+
L.push('> 💡 Lancez `npx next-auto-i18n init` pour configurer automatiquement le routing, le middleware et les layouts.');
|
|
89
|
+
L.push('');
|
|
90
|
+
// ── Section module-scope ─────────────────────────────────────────────────
|
|
91
|
+
if (moduleScopeTotal > 0) {
|
|
92
|
+
L.push('---');
|
|
93
|
+
L.push('');
|
|
94
|
+
L.push('## ⚠️ Strings module-scope — action manuelle requise');
|
|
95
|
+
L.push('');
|
|
96
|
+
L.push('Ces strings sont dans des `const` **en dehors du corps d\'un composant**.');
|
|
97
|
+
L.push('La fonction `t()` n\'est accessible qu\'à l\'intérieur d\'un composant.');
|
|
98
|
+
L.push('Elles ont été traduites dans les fichiers JSON, mais le code source doit être adapté manuellement.');
|
|
99
|
+
L.push('');
|
|
100
|
+
L.push('**Solution :** déplacez la `const` à l\'intérieur de votre composant :');
|
|
101
|
+
L.push('');
|
|
102
|
+
L.push('```tsx');
|
|
103
|
+
L.push('// ❌ Module-scope — t() inaccessible ici');
|
|
104
|
+
L.push("const items = [{ label: 'Mon texte' }];");
|
|
105
|
+
L.push('export function Page() {');
|
|
106
|
+
L.push(' return <ul>{items.map(i => <li>{i.label}</li>)}</ul>;');
|
|
107
|
+
L.push('}');
|
|
108
|
+
L.push('');
|
|
109
|
+
L.push('// ✅ Function-scope — t() accessible');
|
|
110
|
+
L.push("import { useTranslations } from 'next-intl';");
|
|
111
|
+
L.push('export function Page() {');
|
|
112
|
+
L.push(' const t = useTranslations();');
|
|
113
|
+
L.push(" const items = [{ label: t('ma_cle') }];");
|
|
114
|
+
L.push(' return <ul>{items.map(i => <li>{i.label}</li>)}</ul>;');
|
|
115
|
+
L.push('}');
|
|
116
|
+
L.push('```');
|
|
117
|
+
L.push('');
|
|
118
|
+
}
|
|
119
|
+
// ── Strings par fichier ───────────────────────────────────────────────────
|
|
120
|
+
L.push('---');
|
|
121
|
+
L.push('');
|
|
122
|
+
L.push('## Strings par fichier');
|
|
123
|
+
L.push('');
|
|
124
|
+
L.push('Pour chaque string, remplacez le texte original par le code indiqué dans la colonne **Code**.');
|
|
125
|
+
L.push('');
|
|
126
|
+
for (const fileEntry of files) {
|
|
127
|
+
const { relPath, strings, moduleScopeValues } = fileEntry;
|
|
128
|
+
const hasModuleScope = moduleScopeValues.size > 0;
|
|
129
|
+
const autoStrings = strings.filter(s => !moduleScopeValues.has(s.value));
|
|
130
|
+
const manualStrings = strings.filter(s => moduleScopeValues.has(s.value));
|
|
131
|
+
L.push(`### \`${relPath}\``);
|
|
132
|
+
L.push('');
|
|
133
|
+
if (hasModuleScope) {
|
|
134
|
+
L.push(`> ⚠️ **${moduleScopeValues.size}** string${moduleScopeValues.size > 1 ? 's' : ''} module-scope dans ce fichier.`);
|
|
135
|
+
L.push('');
|
|
136
|
+
}
|
|
137
|
+
// Strings auto-remplaçables
|
|
138
|
+
if (autoStrings.length > 0) {
|
|
139
|
+
if (hasModuleScope)
|
|
140
|
+
L.push('**Remplacements automatiques :**');
|
|
141
|
+
L.push('');
|
|
142
|
+
L.push('| Ligne | Type | Texte original | Clé | Code |');
|
|
143
|
+
L.push('|------:|------|----------------|-----|------|');
|
|
144
|
+
for (const s of autoStrings) {
|
|
145
|
+
const key = keyMap.get(s.value) ?? '';
|
|
146
|
+
const text = escapeCell(trunc(s.value));
|
|
147
|
+
const code = replacementCode(s, key);
|
|
148
|
+
L.push(`| ${s.line} | ${typeLabel(s.type)} | \`${text}\` | \`${key}\` | \`${code}\` |`);
|
|
149
|
+
}
|
|
150
|
+
L.push('');
|
|
151
|
+
}
|
|
152
|
+
// Strings module-scope (action manuelle)
|
|
153
|
+
if (manualStrings.length > 0) {
|
|
154
|
+
L.push('**Action manuelle requise (module-scope) :**');
|
|
155
|
+
L.push('');
|
|
156
|
+
L.push('| Ligne | Texte original | Clé | Code cible |');
|
|
157
|
+
L.push('|------:|----------------|-----|-----------|');
|
|
158
|
+
for (const s of manualStrings) {
|
|
159
|
+
const key = keyMap.get(s.value) ?? '';
|
|
160
|
+
const text = escapeCell(trunc(s.value));
|
|
161
|
+
L.push(`| ${s.line} | \`${text}\` | \`${key}\` | \`t("${key}")\` |`);
|
|
162
|
+
}
|
|
163
|
+
L.push('');
|
|
164
|
+
L.push('> Déplacez la `const` contenant ces strings à l\'intérieur du composant.');
|
|
165
|
+
L.push('');
|
|
166
|
+
}
|
|
167
|
+
L.push('---');
|
|
168
|
+
L.push('');
|
|
169
|
+
}
|
|
170
|
+
// ── Toutes les clés ───────────────────────────────────────────────────────
|
|
171
|
+
L.push('## Référence complète des clés');
|
|
172
|
+
L.push('');
|
|
173
|
+
L.push(`Toutes les clés générées dans \`${messagesDir}/${sourceLocale}.json\` :`);
|
|
174
|
+
L.push('');
|
|
175
|
+
L.push('| Clé | Valeur source |');
|
|
176
|
+
L.push('|-----|--------------|');
|
|
177
|
+
for (const [value, key] of [...keyMap.entries()].sort(([, a], [, b]) => a.localeCompare(b))) {
|
|
178
|
+
L.push(`| \`${key}\` | ${escapeCell(trunc(value, 70))} |`);
|
|
179
|
+
}
|
|
180
|
+
L.push('');
|
|
181
|
+
return L.join('\n');
|
|
182
|
+
}
|
|
183
|
+
export async function generateDoc(options) {
|
|
184
|
+
const content = buildDoc(options);
|
|
185
|
+
await writeFile(options.outputPath, content, 'utf-8');
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=doc-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-generator.js","sourceRoot":"","sources":["../../src/cli/doc-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -11,7 +11,10 @@ import { scanProject } from '../scanner/index.js';
|
|
|
11
11
|
import { generateMessages } from '../generator/index.js';
|
|
12
12
|
import { translateMessages } from '../translator/index.js';
|
|
13
13
|
import { rewriteFiles } from '../rewriter/index.js';
|
|
14
|
+
import { findModuleScopeStrings } from '../rewriter/const-rewriter.js';
|
|
14
15
|
import { injectAll } from '../injector/index.js';
|
|
16
|
+
import { Project } from 'ts-morph';
|
|
17
|
+
import { generateDoc } from './doc-generator.js';
|
|
15
18
|
const MAX_FILES_DISPLAY = 10;
|
|
16
19
|
const MAX_REWRITE_DISPLAY = 15;
|
|
17
20
|
function logFileList(entries, projectRoot, suffix) {
|
|
@@ -478,5 +481,155 @@ program
|
|
|
478
481
|
process.exit(1);
|
|
479
482
|
}
|
|
480
483
|
});
|
|
484
|
+
program
|
|
485
|
+
.command('extract')
|
|
486
|
+
.description("Extrait et traduit les strings — génère un guide d'intégration sans modifier les fichiers source")
|
|
487
|
+
.option('--locale <locales>', 'Langues cibles (séparées par des virgules)')
|
|
488
|
+
.option('--out <path>', 'Chemin du guide Markdown (défaut: i18n-guide.md)')
|
|
489
|
+
.action(async (options) => {
|
|
490
|
+
const projectRoot = process.cwd();
|
|
491
|
+
try {
|
|
492
|
+
// 1. Configuration
|
|
493
|
+
logger.step('Configuration');
|
|
494
|
+
let config;
|
|
495
|
+
try {
|
|
496
|
+
config = await loadConfig(projectRoot);
|
|
497
|
+
loadEnv(projectRoot);
|
|
498
|
+
logger.success(`Configuration chargée (${config.sourceLocale} → ${config.targetLocales.join(', ')})`);
|
|
499
|
+
}
|
|
500
|
+
catch {
|
|
501
|
+
const sourceLocale = await askSourceLocale();
|
|
502
|
+
const targetLocales = options.locale
|
|
503
|
+
? options.locale.split(',').map(s => s.trim().toLowerCase()).filter(s => s !== sourceLocale)
|
|
504
|
+
: await askTargetLocales(sourceLocale);
|
|
505
|
+
if (targetLocales.length === 0) {
|
|
506
|
+
logger.error('Aucune langue cible valide');
|
|
507
|
+
process.exit(1);
|
|
508
|
+
}
|
|
509
|
+
loadEnv(projectRoot);
|
|
510
|
+
let apiKey = getApiKey('AUTO_I18N_DEEPL_KEY');
|
|
511
|
+
if (!apiKey) {
|
|
512
|
+
apiKey = await askApiKey();
|
|
513
|
+
await saveApiKeyToEnv(projectRoot, 'AUTO_I18N_DEEPL_KEY', apiKey);
|
|
514
|
+
logger.success('Clé API sauvegardée dans .env.local');
|
|
515
|
+
}
|
|
516
|
+
config = buildConfig(sourceLocale, targetLocales);
|
|
517
|
+
}
|
|
518
|
+
const apiKey = getApiKey(config.apiKeyEnv);
|
|
519
|
+
if (!apiKey) {
|
|
520
|
+
logger.error(`Clé API introuvable (${config.apiKeyEnv}). Ajoutez-la dans .env.local.`);
|
|
521
|
+
process.exit(1);
|
|
522
|
+
}
|
|
523
|
+
// 2. Scan
|
|
524
|
+
logger.step('Scan du projet');
|
|
525
|
+
const strings = await scanProject(projectRoot, { ignorePatterns: config.ignore });
|
|
526
|
+
if (strings.length === 0) {
|
|
527
|
+
logger.warn('Aucune string traduisible trouvée — arrêt');
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
const scanEntries = groupByFile(strings);
|
|
531
|
+
const fileCount = scanEntries.length;
|
|
532
|
+
logger.success(`${strings.length} string${strings.length > 1 ? 's' : ''} trouvée${strings.length > 1 ? 's' : ''} dans ${fileCount} fichier${fileCount > 1 ? 's' : ''}`);
|
|
533
|
+
logFileList(scanEntries, projectRoot, n => `${n} string${n > 1 ? 's' : ''}`);
|
|
534
|
+
// 3. Charger messages existants pour merge stable
|
|
535
|
+
const sourcePath = join(resolve(config.messagesDir), `${config.sourceLocale}.json`);
|
|
536
|
+
let existingMessages = {};
|
|
537
|
+
try {
|
|
538
|
+
existingMessages = JSON.parse(await readFile(sourcePath, 'utf-8'));
|
|
539
|
+
const existingCount = Object.keys(existingMessages).length;
|
|
540
|
+
logger.dim(`${existingCount} clé${existingCount > 1 ? 's' : ''} existante${existingCount > 1 ? 's' : ''} chargées`);
|
|
541
|
+
}
|
|
542
|
+
catch {
|
|
543
|
+
// Pas encore de fichier source — génération complète
|
|
544
|
+
}
|
|
545
|
+
// 4. Génération des clés
|
|
546
|
+
logger.step('Génération des clés');
|
|
547
|
+
const genResult = await generateMessages(strings, {
|
|
548
|
+
sourceLocale: config.sourceLocale,
|
|
549
|
+
messagesDir: config.messagesDir,
|
|
550
|
+
existingMessages,
|
|
551
|
+
});
|
|
552
|
+
const keyCount = Object.keys(genResult.messages).length;
|
|
553
|
+
logger.success(`${keyCount} clé${keyCount > 1 ? 's' : ''} → ${relative(projectRoot, genResult.outputPath)}`);
|
|
554
|
+
if (genResult.newCount > 0) {
|
|
555
|
+
logger.dim(`Dont ${genResult.newCount} nouvelle${genResult.newCount > 1 ? 's' : ''}`);
|
|
556
|
+
}
|
|
557
|
+
// 5. Traduction
|
|
558
|
+
logger.step('Traduction via DeepL');
|
|
559
|
+
const transResult = await translateMessages({
|
|
560
|
+
sourceLocale: config.sourceLocale,
|
|
561
|
+
targetLocales: config.targetLocales,
|
|
562
|
+
messagesDir: config.messagesDir,
|
|
563
|
+
apiKey,
|
|
564
|
+
});
|
|
565
|
+
if (transResult.totalTranslated > 0) {
|
|
566
|
+
logger.success(`${transResult.totalTranslated} string${transResult.totalTranslated > 1 ? 's' : ''} traduite${transResult.totalTranslated > 1 ? 's' : ''}`);
|
|
567
|
+
for (const locale of config.targetLocales) {
|
|
568
|
+
logger.dim(` ${join(config.messagesDir, `${locale}.json`)}`);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
else {
|
|
572
|
+
logger.success('Toutes les traductions sont à jour');
|
|
573
|
+
}
|
|
574
|
+
if (transResult.skipped.length > 0) {
|
|
575
|
+
logger.dim(`Déjà à jour : ${transResult.skipped.join(', ')}`);
|
|
576
|
+
}
|
|
577
|
+
// 6. Détection des strings module-scope (lecture seule via AST)
|
|
578
|
+
logger.step('Analyse du code source');
|
|
579
|
+
const tsProject = new Project({ skipAddingFilesFromTsConfig: true, skipFileDependencyResolution: true });
|
|
580
|
+
const stringsByFile = new Map();
|
|
581
|
+
for (const s of strings) {
|
|
582
|
+
const list = stringsByFile.get(s.filePath) ?? [];
|
|
583
|
+
list.push(s);
|
|
584
|
+
stringsByFile.set(s.filePath, list);
|
|
585
|
+
}
|
|
586
|
+
const fileEntries = [];
|
|
587
|
+
let totalModuleScope = 0;
|
|
588
|
+
for (const [filePath, fileStrings] of stringsByFile) {
|
|
589
|
+
const sourceFile = tsProject.addSourceFileAtPath(filePath);
|
|
590
|
+
const moduleScopeMatches = findModuleScopeStrings(sourceFile, genResult.keyMap);
|
|
591
|
+
const moduleScopeValues = new Set(moduleScopeMatches.map(m => m.value));
|
|
592
|
+
totalModuleScope += moduleScopeValues.size;
|
|
593
|
+
fileEntries.push({
|
|
594
|
+
filePath,
|
|
595
|
+
relPath: relative(projectRoot, filePath),
|
|
596
|
+
strings: fileStrings,
|
|
597
|
+
moduleScopeValues,
|
|
598
|
+
});
|
|
599
|
+
}
|
|
600
|
+
if (totalModuleScope > 0) {
|
|
601
|
+
logger.warn(`${totalModuleScope} string${totalModuleScope > 1 ? 's' : ''} module-scope détectée${totalModuleScope > 1 ? 's' : ''} (action manuelle requise — voir guide)`);
|
|
602
|
+
}
|
|
603
|
+
else {
|
|
604
|
+
logger.success('Aucune string module-scope détectée');
|
|
605
|
+
}
|
|
606
|
+
// 7. Génération du guide Markdown
|
|
607
|
+
logger.step('Génération du guide');
|
|
608
|
+
const outputPath = resolve(options.out ?? 'i18n-guide.md');
|
|
609
|
+
const date = new Date().toLocaleDateString('fr-FR', {
|
|
610
|
+
day: '2-digit',
|
|
611
|
+
month: 'long',
|
|
612
|
+
year: 'numeric',
|
|
613
|
+
});
|
|
614
|
+
await generateDoc({
|
|
615
|
+
projectRoot,
|
|
616
|
+
sourceLocale: config.sourceLocale,
|
|
617
|
+
targetLocales: config.targetLocales,
|
|
618
|
+
messagesDir: config.messagesDir,
|
|
619
|
+
keyMap: genResult.keyMap,
|
|
620
|
+
files: fileEntries,
|
|
621
|
+
outputPath,
|
|
622
|
+
date,
|
|
623
|
+
});
|
|
624
|
+
logger.success(`Guide généré : ${relative(projectRoot, outputPath)}`);
|
|
625
|
+
logger.blank();
|
|
626
|
+
logger.success('Extraction terminée — aucun fichier source modifié');
|
|
627
|
+
logger.dim('Consultez le guide pour intégrer les traductions manuellement.');
|
|
628
|
+
}
|
|
629
|
+
catch (err) {
|
|
630
|
+
logger.error(err instanceof Error ? err.message : String(err));
|
|
631
|
+
process.exit(1);
|
|
632
|
+
}
|
|
633
|
+
});
|
|
481
634
|
program.parse();
|
|
482
635
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAEpE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,SAAS,WAAW,CAClB,OAAgC,EAChC,WAAmB,EACnB,MAA6B;IAE7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,OAAoC;IACvD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;KAC9E,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;YAClC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC;YAC5F,CAAC,CAAC,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEzC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,IAAI,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YAC3B,MAAM,eAAe,CAAC,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;QAED,aAAa;QACb,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,eAAe,OAAO,CAAC,CAAC;QAE1C,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE;YAC7C,cAAc,EAAE,MAAM,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,0BAA0B,SAAS,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1G,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7E,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAChD,YAAY;YACZ,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,oBAAoB,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE7F,uDAAuD;QACvD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChE,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACzC,WAAW;aACZ,CAAC,CAAC,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;iBAClD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;gBACrC,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,aAAa,EAAE,QAAQ;gBACvB,cAAc,EAAE,SAAS;gBACzB,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,YAAY,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC;aAC1D,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY;YACZ,aAAa;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,oBAAoB,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,+DAA+D;QAC/D,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;YACpG,MAAM,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;gBAC7C,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjE,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YACD,IAAI,eAAe,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,GAAG,mBAAmB,CAAC;gBAC1D,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzH,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAChF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,WAAW,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;YACnG,CAAC;YAED,MAAM,CAAC,OAAO,CACZ,WAAW,QAAQ,CAAC,aAAa,gBAAgB,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,QAAQ,CAAC,aAAa,WAAW,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxK,CAAC;YACF,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAClD,CAAC;YAED,qDAAqD;YACrD,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBACjD,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,6BAA6B,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yCAAyC,CACjI,CAAC;gBACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8C,CAAC;gBACrE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;oBAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;wBACpF,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CACnF,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACtF,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC;YAChC,WAAW;YACX,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,aAAa,CAAC;YACzC,aAAa,EAAE,YAAY;YAC3B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;aAC5D,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAExF,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;gBACvE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEjE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;aAC5D,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9F,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;aAC9D,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjG,IAAI,SAAS,CAAC,eAAe,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;aACvE,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5G,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,aAAa,YAAY,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kFAAkF,CAAC;KAC/F,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,0CAA0C,CAAC,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QAEpF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,gCAAgC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAClF,MAAM,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,gBAAgB,GAA2B,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAA2B,CAAC;QAC/F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,OAAO,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QAE7I,wEAAwE;QACxE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAElF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,SAAS,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxK,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE7E,yDAAyD;YACzD,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;gBAChD,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,gBAAgB;aACjB,CAAC,CAAC;YAEH,IAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,QAAQ,YAAY,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC1N,MAAM,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,6BAA6B,CAAC,CAAC;YAC/G,CAAC;YAED,iDAAiD;YACjD,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;oBAC7C,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACjE,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;oBAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC9C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBACZ,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC7C,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;gBACD,IAAI,eAAe,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;oBACjD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,GAAG,mBAAmB,CAAC;oBAC1D,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzH,CAAC;gBAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;gBAChF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,WAAW,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;gBACnG,CAAC;gBAED,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,OAAO,CAAC,WAAW,QAAQ,CAAC,aAAa,gBAAgB,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,QAAQ,CAAC,aAAa,WAAW,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxL,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBAClD,CAAC;gBAED,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,6BAA6B,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAAC,CAAC;oBAC9I,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8C,CAAC;oBACrE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;wBAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC/B,CAAC;oBACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;wBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;wBACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;4BACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;4BACpF,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChG,MAAM,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;QACpE,CAAC;QAED,uFAAuF;QACvF,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,UAAU,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7J,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,qCAAqC,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErD,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,mCAAmC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,gBAAgB,aAAa,eAAe,EAAE,CAAC,CAAC;QAElE,WAAW;QACX,MAAM,CAAC,IAAI,CAAC,mBAAmB,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,CAAC,gBAAgB,CAAC;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,oBAAoB,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;QAErF,sCAAsC;QACtC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,MAAM,SAAS,CAAC;YACd,WAAW;YACX,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QAEpE,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QAC5G,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;YACvD,IAAI,MAAM,GAA2B,EAAE,CAAC;YAExC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,8CAA8C,CAAC,CAAC;gBACrE,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClJ,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACzB,CAAC;gBACD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,eAAe,UAAU,CAAC,MAAM,QAAQ,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAClH,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kGAAkG,CAAC;KAC/G,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;KAC1E,MAAM,CAAC,cAAc,EAAE,kDAAkD,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO,CAAC,WAAW,CAAC,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,0BAA0B,MAAM,CAAC,YAAY,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;gBAClC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC;gBAC5F,CAAC,CAAC,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEzC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,WAAW,CAAC,CAAC;YACrB,IAAI,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC3B,MAAM,eAAe,CAAC,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,gCAAgC,CAAC,CAAC;YACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAElF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,SAAS,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxK,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7E,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QACpF,IAAI,gBAAgB,GAA2B,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAA2B,CAAC;YAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,OAAO,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACtH,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;QAED,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,gBAAgB;SACjB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7G,IAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,SAAS,CAAC,QAAQ,YAAY,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,UAAU,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3J,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,gEAAgE;QAChE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzG,MAAM,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,WAAW,GAAmB,EAAE,CAAC;QACvC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAChF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,gBAAgB,IAAI,iBAAiB,CAAC,IAAI,CAAC;YAE3C,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ;gBACR,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACxC,OAAO,EAAE,WAAW;gBACpB,iBAAiB;aAClB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,UAAU,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yBAAyB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAAC,CAAC;QAC7K,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;QAED,kCAAkC;QAClC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;YAClD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC;YAChB,WAAW;YACX,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,KAAK,EAAE,WAAW;YAClB,UAAU;YACV,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,kBAAkB,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|