From 34811ff5835beb254609ca4fecc15e06afa4d3b0 Mon Sep 17 00:00:00 2001 From: Marco Wende Date: Fri, 3 Jul 2026 07:12:49 +0200 Subject: [PATCH] =?UTF-8?q?v0.1.24=20=E2=80=94=20App=20Report,=20CSV=20Imp?= =?UTF-8?q?ort,=20Read-Only=20Mode,=20Group=20Management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - App Report: Installationszähler pro App via Graph $batch (deviceStatuses) - Geräte-Export: CSV mit Maschinennamen pro App (GET /api/apps/devicestatus) - CSV-Import: Massenimport von Benutzern in Gruppen mit Header-Erkennung - Read-Only-Modus: Schreib-Tabs/Buttons automatisch ausblenden - Ergebnis-Banner nach CSV-Import (hinzugefügt/bereits Mitglied/Fehler/nicht gefunden) - Dokumentation aktualisiert (README, help.md, CHANGELOG) Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 13 + CHANGELOG.md | 276 ++ README.md | 217 ++ Run.cmd | 19 + Start.ps1 | 224 ++ application.ico | Bin 0 -> 8395 bytes application.png | Bin 0 -> 11941 bytes branding-logo.png | Bin 0 -> 11941 bytes intune.png | Bin 0 -> 965665 bytes pmpc.png | Bin 0 -> 180837 bytes robopack.png | Bin 0 -> 54589 bytes src/Api.ps1 | 3008 ++++++++++++++++++++ src/Graph.ps1 | 1000 +++++++ src/Models.ps1 | 300 ++ src/Router.ps1 | 99 + src/Server.ps1 | 159 ++ www/app.js | 5025 +++++++++++++++++++++++++++++++++ www/help.md | 324 +++ www/index.html | 994 +++++++ www/members.html | 151 + www/styles.css | 5159 ++++++++++++++++++++++++++++++++++ www/vendor/flatpickr.min.css | 13 + www/vendor/flatpickr.min.js | 2 + www/vendor/marked.min.js | 69 + 24 files changed, 17052 insertions(+) create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 README.md create mode 100644 Run.cmd create mode 100644 Start.ps1 create mode 100644 application.ico create mode 100644 application.png create mode 100644 branding-logo.png create mode 100644 intune.png create mode 100644 pmpc.png create mode 100644 robopack.png create mode 100644 src/Api.ps1 create mode 100644 src/Graph.ps1 create mode 100644 src/Models.ps1 create mode 100644 src/Router.ps1 create mode 100644 src/Server.ps1 create mode 100644 www/app.js create mode 100644 www/help.md create mode 100644 www/index.html create mode 100644 www/members.html create mode 100644 www/styles.css create mode 100644 www/vendor/flatpickr.min.css create mode 100644 www/vendor/flatpickr.min.js create mode 100644 www/vendor/marked.min.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2fcc22a --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# PowerShell & Windows +*.log +Thumbs.db + +# Settings (may contain secrets) +# Uncomment to exclude settings: +# AppData/ + +# macOS +.DS_Store + +# Node (if ever used) +node_modules/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c38c04e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,276 @@ +# Changelog + +Format orientiert an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/). +Versionierung folgt [Semantic Versioning](https://semver.org/lang/de/) — solange das Tool noch in der `0.x.y`-Phase ist, sind Breaking Changes erlaubt. + +--- + +## [0.1.24] - 2026-07-03 + +Navigation-Tabs, Group Management, Read-Only-Modus, App Report, CSV-Import. + +### Neu + +- **Navigation-Tabs** im Topbar: *App Management* | *Group Management* | *App Report* — Topbar-Grid auf 3 Spalten (Brand | Nav | Actions) erweitert +- **Group Management** als eigene View (statt Modal): Mitglieder & Export, Benutzer hinzufügen, CSV-Import — drei Tabs, linke Gruppen-Suche + rechte Aktionspane +- **Read-Only-Modus**: `clientIdRo` + `scopesRo` in Settings; Verbindung versucht RW, fällt bei Fehler auf RO zurück; `body.read-only`-CSS-Klasse blendet alle Schreib-Elemente aus (Buttons, Tabs, Formular-Bereiche) +- **−R / −A Buttons** pro App-Zeile: Gruppe direkt aus Required- oder Available-Zuweisung entfernen (mit Gruppen-Picker bei mehreren) +- **App Report** (neuer Tab): Installationszähler für alle Apps via `deviceStatuses` aggregiert; Tabelle sortierbar, Suchfilter; CSV-Export der gefilterten Ansicht +- **Geräte-Export pro App**: Button in jeder Zeile des App Reports → `GET /api/apps/devicestatus?appId=` → CSV mit Gerätename, Benutzer, Status, Fehlercode, OS-Version, Sync-Datum +- **CSV-Import** im Group Management: UPNs/E-Mails einfügen oder CSV hochladen; automatische Spalten-Erkennung (Header `UserPrincipalName`/`Mail`/`Email`/`UPN`; Quoted-Fields; `,`/`;`/Tab); Graph-Batch-Lookup; Vorschau-Tabelle mit ✓/✗; Ergebnis-Banner mit farbigen Chips (hinzugefügt / bereits Mitglied / Fehler / nicht gefunden) +- **Toast-Z-Index** auf 3000 angehoben (war 1000 → lag hinter Modals mit z-index 1500) +- **Neuer Endpoint** `POST /api/groups/resolve-upns` — UPN-Liste → UserId + DisplayName via $batch +- **Neuer Endpoint** `GET /api/apps/devicestatus?appId=` — Geräte-Installationsstatus einer App + +### Geändert + +- **Group Management Modal** zur eigenständigen View umgebaut — keine doppelten IDs mehr +- **`openGroupExportModal()`** leitet jetzt auf `switchMainView('groups')` um +- **`switchMainView(view)`** verwaltet alle drei Views (apps / groups / report) +- **`applyReadOnlyMode()`** schaltet aktiven Schreib-Tab automatisch auf Export zurück wenn Read-Only einsetzt +- **Settings-Modal**: Felder `setClientIdRo` und `setScopesRo` hinzugefügt +- **`GET /api/status`**: liefert jetzt `readOnly: bool` +- **`POST /api/connect`**: setzt `$script:State.ReadOnly` nach RO-Fallback +- **`POST /api/disconnect`**: setzt `ReadOnly = $false` zurück +- **App Report Backend**: mehrfach überarbeitet — `installSummary` (400 für alle App-Typen ohne `DeviceManagementManagedDevices.Read.All`), `getAppInstallSummaryReport` (404 in beta und v1.0 ohne MDM-Berechtigung) → finaler Ansatz: `deviceStatuses` via `$batch` aggregiert + +### Behoben + +- **`$script:State.ReadOnly` Property-Fehler**: `[pscustomobject]` erlaubt keine dynamischen Properties — `ReadOnly = $false` musste in der Definition in `Start.ps1` stehen +- **Duplicate-ID-Bug**: `gexSearch`, `gexMembersArea` etc. existierten doppelt (alt: im Modal-Body, neu: in `#groupMgmtView`) — Modal-Body geleert + +### Technisch + +- `src/Models.ps1`: `clientIdRo`, `scopesRo` als optionale Settings-Felder +- `src/Api.ps1`: `Sync-ConfigFromSettings` + `Get-StatusEndpoint` + `Invoke-ConnectEndpoint` + `Invoke-DisconnectEndpoint` für RO-Logik erweitert; `Get-AppInstallReportEndpoint` (deviceStatuses-Aggregation); `Get-AppDeviceStatusEndpoint`; `Resolve-UpnsEndpoint` +- `www/styles.css`: `.topbar-nav`, `.nav-tab`, `.group-mgmt-view`, `.app-report-view`, `.app-report-table`, `.sortable`, `.btn-report-device-export`, `.csv-import-*`, `.csv-result-*`; `body.read-only`-Regeln erweitert um `#gexPaneImport` und `[data-tab="import"]` + +--- + +## [0.1.23] - 2026-05-21 + +Setup-Datei nativer Apps aktualisierbar + Microsoft-Graph-Audit-Fixes. + +### Neu + +- **Setup-Datei aktualisieren** (Phase 1: `.intunewin` / win32LobApp): im App-Detail neuer Abschnitt *Setup-Datei* mit Button, der eine neue Setup-Datei von einem lokalen Server-Pfad hochlaedt und als neue contentVersion aktiviert — inkl. optionaler neuer Versionsnummer (`displayVersion`). Voller Graph-Upload-Flow: contentVersion → file → Azure-Blob-Chunk-Upload → commit → committedContentVersion. Vendor-verwaltete Apps (PMPC/Robopack) sind ausgeschlossen. MSI/MSIX folgen in spaeteren Phasen +- **Kategorie-Filter** in der App-Liste: neuer Dropdown, der sich dynamisch aus den vorkommenden App-Kategorien fuellt (inkl. *Ohne Kategorie*) +- **Kategorien-Anzeige** im App-Detail (immer sichtbar; "Default" wenn keine zugewiesen) +- **Mehrere Abteilungs-Praefixe** konfigurierbar (z.B. `abt-hm` *und* `abt-extern` parallel): neues Schema `departments.prefixes[]`, Settings-UI mit Textarea (eine pro Zeile). Der Graph-Filter wird OR-verkettet, ein einziger Listen-Request. Alter Single-String `prefix` wird weiter gelesen (Backward-Compat); Test-Endpoint zeigt Trefferzahl pro Praefix + +### Geändert + +- **App-Liste laedt `$expand=categories`** mit — `categories` ist eine Graph-Navigation-Property und kommt sonst leer (`null`) zurueck +- **Default-Scope** `DeviceManagementApps.Read.All` → `DeviceManagementApps.ReadWrite.All`: assign/rename/delete/content-update auf mobileApps brauchen ReadWrite (verifiziert via msgraph-Skill gegen den offiziellen Permission-Index) + +### Behoben + +- **429/503-Throttling**: neuer Retry-Wrapper `Invoke-MgGraphRequestRetry` mit `Retry-After`-Honorierung + Backoff (2/5/10s) in `Get-GraphPaged` (alle Lese-Pfade) + `Add-GraphMember` (Bulk-Member-Add). 403/404 werden unveraendert durchgereicht +- **Kategorien** wurden nie angezeigt — Ursache war die fehlende `$expand`-Klausel (s.o.), nicht das Frontend + +### Technisch + +- Neue Graph-Funktionen: `Read-IntuneWinPackage`, `New-GraphAppContentVersion`, `New-GraphAppContentFile`, `Wait-GraphContentFileState`, `Send-GraphContentToAzureBlob`, `Invoke-GraphContentRenewUpload`, `Invoke-GraphContentCommit`, `Update-GraphAppContent`, `Invoke-MgGraphRequestRetry` +- Neuer Endpoint: `POST /api/apps/{id}/content` (`Update-AppContentEndpoint`), Body `{ filePath, displayVersion? }` +- Intune-Content-Verschluesselung dokumentiert (AES-256-CBC + HMAC-SHA256, Layout `[HMAC|IV|Ciphertext]`, ProfileVersion1) — fuer `.intunewin` aus Detection.xml uebernommen +- `api()`-Helper unterstuetzt jetzt `timeoutMs` (AbortController) fuer lange Upload-Requests + +--- + +## [0.1.22] - 2026-05-19 + +Robopack als zweiter Vendor analog zu PatchMyPC. Detection-Regeln wurden vom Hardcode in eine konfigurierbare Vendor-Registry verlagert. + +### Neu + +- **Robopack-Integration**: eigenes Source-Logo (`robopack.png`), Portal-Link auf `https://app.robopack.com/`, Lock-Icons fuer Delete/Rename, Filter-Eintrag "Nur Robopack-Apps". Default-Detection: `developer equals "Robopack"` +- **Vendor-Registry in `settings.json`**: neue Sektion `vendors[]` mit `id`, `displayName`, `portalUrl`, `logoFile`, `detection.field` (commandLine | developer | publisher | displayName | notes | owner), `detection.match` (contains | equals | regex | startsWith), `detection.pattern`, `block.delete`, `block.rename`. Mehrere Vendoren moeglich, erster Match gewinnt +- **Dynamisches Filter-Dropdown**: pro konfiguriertem Vendor wird eine Option `Nur -Apps` zur Laufzeit erzeugt +- **Vendor-Counts im Konfig-Test**: `Verbindung + Lookups testen` zeigt jetzt pro Vendor, wie viele Apps in der aktuellen Liste matchen — 0-Treffer warnen mit Hinweis auf die Detection-Regel +- **Letter-Fallback fuers Vendor-Logo**: wenn die Logo-Datei fehlt, zeigt der Badge den ersten Buchstaben des Vendor-Namens als Pille + +### Geändert + +- **Detection-Logik in `src/Graph.ps1`**: `Format-AppForFrontend` ruft `Resolve-AppVendorSource` mit `Test-AppVendorRule` auf, statt hardcoded `match "PatchMyPC"`. `Source`-String entspricht `vendor.displayName` ("PatchMyPC", "Robopack", ...) — bestehende PMPC-Datensaetze unveraendert +- **Backend-Blocking generisch** (`Remove-AppEndpoint`, `Update-AppEndpoint`): pro Vendor pruefen ob `block.delete`/`block.rename` gesetzt ist, HTTP 409 mit `code = "Managed"` (z.B. `patchmypcManaged`, `robopackManaged`) +- **Frontend-Render generisch**: Source-Badge, Delete-Lock und Rename-Lock werden aus dem Vendor-Eintrag (`SettingsState.vendorsByDisplayName`) abgeleitet — keine PMPC-Hardcodes mehr im UI +- **`code`-Format geaendert** von `PatchMyPCManaged` zu `patchmypcManaged` (kleines `id` + `Managed`-Suffix) — Frontend-Stellen, die den exakten String pruefen, sind keine vorhanden + +### Behoben + +- (keine; reine Feature-Erweiterung) + +### Technisch + +- Neue PowerShell-Funktionen: `Test-AppVendorRule`, `Resolve-AppVendorSource` (in `src/Graph.ps1`), `Find-VendorBySource` (in `src/Api.ps1`) +- Neue JS-Funktionen: `rebuildVendorIndexes(settings)`, `rebuildVendorFilterOptions()` (in `www/app.js`) +- Neue CSS-Klassen: `.app-source.app-source-letter` (Letter-Fallback), `.set-test-icon.warn` (gelbe Warn-Pille im Konfig-Test) +- Asset hinzu: `robopack.png` (Projekt-Root, ca. 53 KB) +- Migration: `Merge-Settings` ergaenzt fehlende `vendors`-Sektion aus den Defaults — bestehende `settings.json` bekommt PMPC + Robopack automatisch dazu + +--- + +## [0.1.21] - 2026-05-19 + +Multi-Tenant-Readiness: das Tool ist jetzt fuer fremde Tenants ausrollbar, ohne dass HanseMerkur-spezifische Werte im Code als Defaults erscheinen. + +### Neu + +- **First-Run-Onboarding**: Bei leerem Tenant/Client/Praefix oeffnet sich das Settings-Modal automatisch beim Start. Setup-Banner im Modal und im Connect-Panel; Connect-Button bleibt disabled bis die kritischen Felder gefuellt sind +- **Konfiguration testen**: Neuer Button im Settings-Modal sowie neuer Endpoint `POST /api/settings/test` — prueft die aktuell eingetragenen Werte (auch vor dem Speichern) gegen Microsoft Graph: Verbindung, Abteilungs-Gruppen-Lookup mit Trefferzahl + Sample, RPA-Gruppen mit Found/Missing-Liste, User-Such-Probe. Inline-Ergebnis mit OK/FAIL-Pillen +- **Setup-Hilfetexte** unter den Connection-Feldern: Wo finde ich Tenant ID, Client ID, welche Redirect-URI ist noetig + +### Geändert + +- **Defaults neutralisiert** (`Get-DefaultSettings` in `src/Models.ps1`): `tenantId`, `clientId`, `departments.prefix` sind leer, `rpa.groupNames = @()`. Scopes/Naming/Theme bleiben generisch. Bestehende `settings.json` werden ueber Merge-Settings unveraendert geladen +- **Hilfedatei generisch**: `abt-hm-bd24-controlling` und `intune-win-app-adobe-reader-required` durch Platzhalter (`-team-controlling`, `intune-win-app--required`) ersetzt; "Default: abt-hm"-Hinweis entfernt + +### Behoben + +- **Backend-Fallbacks entfernt**: `Get-GroupsEndpoint` liefert HTTP 412 + `code = "SettingsRequired"` wenn Praefix leer (vorher stiller `abt-hm`-Fallback). `Get-RpaGroupsEndpoint` liefert `notConfigured = $true` statt HM-RPA-Namen einzusetzen — Konfig-Probleme werden sichtbar statt kaschiert +- **PowerShell 5.1-Kompatibilitaet** (`src/Server.ps1`): `Read-RequestBody` nutzt `-AsHashtable` nur ab PS 6, in 5.1 wird ohne den Switch geparst. Endpoints handhaben sowohl Hashtable als auch PSCustomObject. Vorher: POST/PUT mit Body brach in Windows PowerShell 5.1 mit "Parameter 'AsHashtable' nicht gefunden" +- **Router-Logger-Bug** (`src/Router.ps1:33`): fehlende Parens um den `-f`-Format-Operator → PowerShell band `-f` als Prefix von `-ForegroundColor` und versuchte den Zeitstempel in eine ConsoleColor-Enum zu konvertieren. Folge: Unknown-Endpoint-Responses warfen 500er statt 404. Fix wie in Line 13/42 mit Klammern + +### Technisch + +- Neuer Endpoint: `POST /api/settings/test` (Body optional — testet uebergebene Werte gegen Graph, ohne sie zu speichern) +- Neue CSS-Klassen: `.banner-warning`, `.settings-test-result`, `.set-test-line`, `.set-test-icon.ok|fail` + +--- + +## [0.1.20] - 2026-05-19 + +Konsolidierter Stand aller bisherigen Iterationen. Erster offiziell versionierter Release. + +### Neu — App-Verwaltung + +- **App-Zuweisungs-Workflow** mit Session-Konzept: mehrere Apps nacheinander Pillen klicken → alle Vorgänge in einem Rutsch ausführen → HTML-Report +- **App umbenennen** via Stift-Icon (Modal mit alter/neuer Name) +- **App löschen** via Trash-Icon (mit Bestätigung; bei Graph-Fehler wird Original-Message + Relationship-Hinweis ausgegeben) +- **PatchMyPC-Apps**: Rename + Delete blockiert (Lock-Icon + HTTP 409 mit `code: PatchMyPCManaged`) + +### Neu — Zuweisungen + +- **Zuweisung-Erstellen-Dialog** mit 6 Optionen in zwei Spalten: + - Required: Neue Gruppe / All Users / All Devices + - Available: Neue Gruppe / All Users / All Devices +- **Aktive Native-Zuweisungen werden ausgegraut** — keine Duplikate möglich +- **Available-/Required-Gruppen-Naming** unabhängig konfigurierbar (Präfix + Suffix) +- **Zuweisung entfernen** direkt im App-Detail oder im Picker-Popover (Trash-Icon pro Gruppe) +- **Native Zuweisungen** (All Users / All Devices) per `POST /api/apps/{id}/assignments` + +### Neu — App-Detail-Panel + +- **2-Spalten-Layout** statt 3 (Auto-Fit), Wide-Sektionen für lange Inhalte +- **Markdown-Rendering** der App-Beschreibung (Tabellen, Listen, Code-Blöcke) via gebundeltes [marked v15](https://github.com/markedjs/marked) +- **Installations-Statistik** je App (Geräte + Benutzer × Installiert / Fehler / Pending / N/A) mit Erfolgsquote-Pille +- **Abhängigkeiten** mit SVG-Flow-Diagramm (orthogonale Linien, klickbare Knoten) + Klartext-Erklärung pro Relation +- **Supersedence** analog mit Klartext-Erklärung (update / replace) +- **Klick auf Flow-Knoten** springt zur Ziel-App und expandiert sie (mit Highlight-Flash) + +### Neu — Filter & Suche + +- **Datums-Range-Filter** für "Zuletzt geändert" (via gebundeltes [flatpickr v4](https://flatpickr.js.org/), deutsche Lokalisierung) +- **Preset-Dropdown** (Alle / Ohne Zuweisungen / Nur Available / Nur Required / Mehrere / All Users / All Devices / Intune / PatchMyPC) +- **Checkbox-Chips** "Bereits Gruppenmitglied" und "All Users/Devices ausblenden" + +### Neu — Einstellungen + +- **Settings-Cog** im Header öffnet Modal mit: + - Connection: Tenant-ID, Client-ID, Scopes + - Abteilungs-Gruppen: konfigurierbarer Präfix (Default `abt-hm`) + - RPA-Gruppen: explizite Liste + - Benutzer-Suche: konfigurierbare Felder (DisplayName / UPN / Mail / Department) + - Required + Available Naming-Schema (Präfix + Suffix) + - Branding: Logo-Upload (PNG/JPG/SVG/WEBP/GIF, max 2 MB) + - Farben: 8 Akzentfarben + "Standardfarben wiederherstellen" +- Persistenz in `%APPDATA%\IntuneAppManager-Web\settings.json` +- **WCAG-Kontrast-Algorithmus** wählt automatisch Text-/Icon-Farbe (Schwarz/Weiß) je nach gewähltem Tint +- **Surface-Shade-Algorithmus** leitet harmonische innere Surfaces aus der gewählten Detail-Panel-Farbe ab + +### Neu — Branding + +- **Default-Logo** `application.png` im Projekt-Root wird angezeigt, sofern kein eigenes hochgeladen wurde +- **Brand-Farbe** ist eigene Konzeptfarbe (separat von Available) — Logo-Hintergrund und Stepper-Indikator +- **Avatar** im Header: Bootstrap `person-circle`-Icon, eingefärbt in Brand-Primary, mit pulsierendem grünem Online-Dot +- **Logout** als Türsymbol mit Pfeil + +### Neu — Header + +- **Cog-Icon** für Einstellungen +- **Fragezeichen-Icon** für Hilfe +- **Theme-Toggle** als Sun/Mond-Slider +- **Avatar** mit Tooltip (vollständiger UPN) +- **Logout-Icon** (statt Text-Button) + +### Neu — Hilfe-System + +- **Hilfe-Modal** (1320 px breit) mit: + - TOC-Sidebar (auto-generiert aus H2-Headings) + - Aktiver Eintrag wird via Scroll-Position highlighted + - Inhalt aus `www/help.md` (Markdown, jederzeit ohne Code-Änderung anpassbar) +- Inhalt: Schnellstart, Hauptworkflow, Header, Spalten, App-Detail, Einstellungen, Einschränkungen, Tastatur, Fehlerbehebung + +### Neu — Empfänger-Liste + +- **Drei Modi**: Abteilungen, RPA-Gruppen, Einzel-Benutzer — frei mischbar +- **Gruppen aufklappen** (Pfeil rechts) → Mitglieder inline mit Suchfilter +- **Teams-Icon** bei jedem User → Direkt-Chat in Teams-Desktop-App +- **Externer-Link- und Members-Tab-Icons** öffnen direkt im Intune-Portal +- **Icons immer sichtbar** (vorher hover-only) + +### Neu — Backend + +- **Graph `$batch`-Optimierung** für App-Details: 3 Sub-Calls in 1 HTTP-Roundtrip, server-seitig parallelisiert +- **PowerShell-Module-Pre-Flight** in `Start.ps1`: prüft, prompted, installiert fehlende Module im User-Scope +- **WAM-Window-Focus-Helper**: Auth-Popup wird automatisch nach vorne geholt (Background-Runspace) +- **HTML-Apply-Report** in `%TEMP%\IntuneAppManager-Reports\` mit Erfolg/Fehler-Tabelle nach App gruppiert +- **Caches**: Apps + Groups + Membership im Server-Process. Selektive Invalidierung bei Settings-Änderungen +- **Run.cmd** als plattform-unabhängiger Launcher; PowerShell-Fenster startet minimiert + +### Geändert + +- **App-Row-Layout**: schmalere Type-/Version-Spalten, breitere Name-Spalte; Icons rechtsbündig vertikal mittig +- **Filter-Chips**: keine Pillen-Rahmen mehr, mehr Gap zwischen Chips (20 px) +- **App-Namen**: brechen jetzt um statt zu truncieren (kein `…` mehr) +- **Detail-Panel**: max 2 Spalten statt Auto-Fit, lange Inhalte als Wide-Sektion +- **Modal-Höhe**: max 85 vh statt 60 vh, kein Scrollen für übliche Dialog-Inhalte +- **Stepper** im Header entfernt (war redundant) +- **Default-Farben**: Brand `#27a078`, Required `#cb2a7a`, RowSelected `#71e5c4`, DetailPanel `#f7f7f7` + +### Behoben + +- **PowerShell Single-Element-Array-JSON-Bug**: `@()` am Call-Site erzwingt Array-Serialisierung (sonst wurde Single-Dep als Objekt statt Array im JSON gerendert → Frontend ignorierte sie) +- **Date-Picker Blink-Effekt** beim Klick: nativer Browser-Picker ersetzt durch flatpickr (kein Chromium-Initial-Render-Quirk mehr) +- **Date-Picker Dark-Mode**: Calendar-Icon war nicht sichtbar — durch `filter: invert(1) brightness(1.4)` korrigiert +- **WAM-Auth-Fenster** versteckt hinter anderen Fenstern → Parallel-Runspace holt es nach vorne +- **Browser-Cache**: aggressive `no-store`-Header für HTML/JS/CSS sorgen für sofortige Updates +- **Transparenz-Slider** komplett entfernt — picked color = solid background (war zuvor verwirrend) +- **Logo-Cache** zweiter Upload greift sofort (mtime als Cache-Bust-Tag) +- **Settings-Save**: Selektive Cache-Invalidierung statt aller Caches (Logo-Update reloaded nicht mehr die Apps) +- **`jumpToAppById`**: triggert jetzt den Details-Fetch (vorher: ewiger Spinner + toggleAppExpand-Konflikt → "App geht nicht auf") +- **Portal-URLs**: Group-Links auf `intune.microsoft.com/.../GroupDetailsMenuBlade/.../menuId/` korrigiert (vorher `entra.microsoft.com` ohne `/menuId/`-Suffix) +- **App-Name-Icons** vertikal mittig zur ganzen Row (nicht nur zur Name-Line) +- **Type/Version-Chips in markierter Row**: Kontrast korrekt (vorher unleserlich) +- **Stepper-Reste**: Position der Header-Actions wieder rechts +- **Connect-Endpoint**: bessere Fehlermeldung mit echter Graph-Antwort statt nur "Ungültige Anfrage" + +### Entfernt + +- **Workflow-Stepper** im Header (Verbinden → App-Zuweisungen → Apps zuweisen → Ausführen) +- **Transparenz-Slider** in den Theme-Color-Settings +- **`members.html`-Standalone-Seite**: ersetzt durch direkten Intune-Portal-Link +- **Native Date-Inputs** (`type="date"`): ersetzt durch flatpickr +- **`color-scheme: light`**-Workaround für Date-Picker (nicht mehr nötig nach flatpickr-Integration) + +### Bundled Libraries + +- `marked v15.0.12` (MIT) — Markdown-Renderer für App-Beschreibung + Help-Page +- `flatpickr v4.6.13` (MIT) — Date-Range-Filter + +### Technisch + +- **PowerShell-Server**: HttpListener, Single-Thread Request-Loop, ausreichend für Single-Admin-Tool +- **Frontend**: Vanilla JS + CSS, keine Frameworks +- **Persistenz**: JSON-Datei in `%APPDATA%\IntuneAppManager-Web\settings.json` +- **Cache-Strategy**: Apps + Gruppen + GroupMembers im PS-Prozess; Theme + Logo per CSS-Variable zur Laufzeit überschrieben diff --git a/README.md b/README.md new file mode 100644 index 0000000..c712175 --- /dev/null +++ b/README.md @@ -0,0 +1,217 @@ +# Intune Manager – Web Edition + +Modernes Web-Frontend fuer den Intune Manager. +PowerShell startet einen lokalen HTTP-Server, der das Frontend ausliefert +und die Microsoft Graph-Aufrufe ausfuehrt. + +## Voraussetzungen + +- Windows mit PowerShell 5.1 oder PowerShell 7+ +- Modul `Microsoft.Graph.Authentication` (wird beim ersten Connect benoetigt): + ```powershell + Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force + ``` +- Browser (Edge, Chrome, Firefox) + +## Start + +```powershell +.\Start.ps1 +``` + +Optionen: + +| Parameter | Standard | Beschreibung | +|---------------|----------|-----------------------------------------------------------| +| `-Port` | `8077` | Port des lokalen HTTP-Servers | +| `-TenantId` | — | Ueberschreibt Tenant-ID aus Settings (nur dieser Start) | +| `-ClientId` | — | Ueberschreibt Client-ID aus Settings (nur dieser Start) | +| `-NoBrowser` | aus | Browser nicht automatisch oeffnen | + +Beispiele: + +```powershell +.\Start.ps1 -Port 8088 +.\Start.ps1 -NoBrowser +``` + +Beenden: `Ctrl+C` im Terminal. + +--- + +## Verbindungsmodus (Read/Write vs. Read-Only) + +Der Server probiert beim Verbinden **zuerst die Read/Write-App-ID** (`clientId`). +Schlaegt diese fehl, wird automatisch auf die **Read-Only-App-ID** (`clientIdRo`) zurueckgefallen. + +| Modus | Anmelde-Ergebnis | Verhalten im Frontend | +|-------------|------------------------------------------|------------------------------------------------| +| Read/Write | Normale Verbindung | Alle Funktionen verfuegbar | +| Read-Only | Fallback auf `clientIdRo` | Schreib-Buttons/Tabs werden ausgeblendet | + +### Was wird im Read-Only-Modus ausgeblendet? + +- App-Zuweisung (Required / Available hinzufuegen und entfernen) +- Gruppen erstellen und loeschen +- Tab „Benutzer hinzufuegen" im Group Management +- Tab „CSV-Import" im Group Management +- Session-Ausfuehren-Button +- Alle Rename-/Delete-Buttons + +### Konfiguration in den Einstellungen + +``` +Settings → Verbindung + Client-ID (Read/Write): + Client-ID (Read-Only): (optional) + Scopes RW: DeviceManagementApps.ReadWrite.All ... + Scopes RO: DeviceManagementApps.Read.All ... +``` + +### Benoetigt Graph-Berechtigungen + +| Funktion | Benoetigt | +|----------------------------------|----------------------------------------------| +| Apps anzeigen | `DeviceManagementApps.Read.All` | +| Gruppen anzeigen / Mitglieder | `GroupMember.Read.All` | +| User suchen | `User.Read.All` | +| Zuweisungen aendern | `DeviceManagementApps.ReadWrite.All` | +| Gruppen-Mitglieder aendern | `GroupMember.ReadWrite.All` | +| App-Installationszaehler (Report)| `DeviceManagementManagedDevices.Read.All` ⚠ | +| Geraete-Exportliste pro App | `DeviceManagementManagedDevices.Read.All` ⚠ | + +> ⚠ Ohne `DeviceManagementManagedDevices.Read.All` zeigt der App-Report nur +> Zaehler = 0 und der Geraete-Export liefert keine Eintraege. + +--- + +## Navigation (Tabs) + +| Tab | Beschreibung | +|--------------------|-------------------------------------------------------------| +| App Management | Haupt-Ansicht: Apps laden, Gruppen zuweisen / entfernen | +| Group Management | Mitglieder anzeigen, exportieren, Benutzer hinzufuegen, CSV-Import | +| App Report | Installationszaehler pro App, Geraete-Export als CSV | + +--- + +## Group Management + +### Mitglieder & Export + +- Gruppe links suchen und auswaehlen +- Mitgliederliste (inkl. verschachtelte Gruppen) wird geladen +- Filter zum Einschraenken der Anzeige +- **Als CSV exportieren** laedt alle Mitglieder als `members--.csv` + +### Benutzer hinzufuegen *(nur Read/Write)* + +- Benutzer per Name, UPN oder E-Mail suchen +- Mehrere Benutzer auswaehlen und gemeinsam hinzufuegen + +### CSV-Import *(nur Read/Write)* + +Massenhaftes Hinzufuegen von Benutzern zu einer Gruppe per CSV-Datei. + +**Ablauf:** + +1. Gruppe links auswaehlen +2. CSV hochladen **oder** UPNs/E-Mails direkt einfuegen (eine pro Zeile) +3. **„Benutzer aufloesen"** – Graph-Lookup via UPN/Mail → Vorschau mit ✓/✗ +4. **„Gefundene importieren"** – fuegt alle gefundenen Benutzer zur Gruppe hinzu + +**CSV-Format:** + +Die erste Zeile wird als optionaler Header erkannt. +Spalte mit dem Namen `UserPrincipalName`, `Mail` oder `Email` wird automatisch +ausgewaehlt. Ohne Header: erste Spalte mit `@` wird verwendet. + +```csv +DisplayName,UserPrincipalName,Mail +Max Mustermann,max.mustermann@firma.de,max.mustermann@firma.de +Erika Muster,erika.muster@firma.de, +``` + +Oder einfach eine UPN pro Zeile: +``` +max.mustermann@firma.de +erika.muster@firma.de +``` + +**Ergebnis-Anzeige nach Import:** + +| Chip / Status | Bedeutung | +|--------------------|------------------------------------------------| +| ✔ Gruen | Erfolgreich hinzugefuegt | +| ≈ Gelb | Bereits Mitglied (kein Fehler) | +| ✗ Rot | Fehler (Meldung in der Tabelle) | +| Grau | UPN nicht in Graph gefunden (nicht importiert) | + +--- + +## App Report + +- **Neu laden**: laedt Installationszaehler fuer alle Apps (kann 1–2 Min. dauern) +- Tabelle sortierbar per Klick auf Spaltenheader +- Suche filtert nach App-Name, Publisher, Typ +- **Als CSV exportieren**: exportiert die gefilterte Tabelle +- **Geraete-Export** (pro Zeile): laedt alle Geraete mit Installationsstatus fuer diese App + +--- + +## Architektur + +``` +Intune Manager/ +├── Start.ps1 Entry Point, Config, State +├── README.md diese Datei +├── src/ +│ ├── Models.ps1 Settings-Schema und Defaults +│ ├── Graph.ps1 Microsoft Graph API Helpers +│ ├── Server.ps1 HTTP-Server (HttpListener) +│ ├── Router.ps1 Request-Routing +│ └── Api.ps1 REST-API-Endpoints +└── www/ + ├── index.html SPA-Shell + ├── styles.css Dark Theme, Read-Only-Regeln + └── app.js Frontend-Logik (Vanilla JS) +``` + +--- + +## REST-API (intern) + +| Methode | Pfad | Rechte | Zweck | +|---------|-------------------------------------------|-----------|------------------------------------------| +| GET | `/api/status` | — | Verbindungsstatus + ReadOnly-Flag | +| POST | `/api/connect` | — | Microsoft Graph verbinden | +| POST | `/api/disconnect` | — | Trennen | +| GET | `/api/groups` | Read | Abteilungs-Gruppen (`abt-hm-*`) | +| GET | `/api/groups/rpa` | Read | 3 vordefinierte RPA-Gruppen | +| GET | `/api/groups/search?q=` | Read | Gruppen suchen | +| POST | `/api/groups` | **Write** | Neue Required-Gruppe erstellen | +| POST | `/api/groups/check` | Read | Gruppen-Name pruefen | +| POST | `/api/groups/resolve-upns` | Read | UPN-Liste → UserId + DisplayName | +| GET | `/api/groups/{id}/members` | Read | Mitglieder einer Gruppe | +| GET | `/api/groups/{id}/members/export` | Read | Mitglieder als CSV | +| POST | `/api/groups/{id}/members` | **Write** | Benutzer zur Gruppe hinzufuegen | +| DELETE | `/api/groups/{id}/members/{uid}` | **Write** | Benutzer aus Gruppe entfernen | +| GET | `/api/users?q=` | Read | Benutzer suchen | +| GET | `/api/apps` | Read | Apps laden (cached) | +| POST | `/api/apps/refresh` | Read | Apps neu laden | +| GET | `/api/apps/report` | Read+MDM | Installationszaehler alle Apps | +| GET | `/api/apps/devicestatus?appId=` | Read+MDM | Geraete-Installationsstatus einer App | +| GET | `/api/membership?targets=&groupId=` | Read | Mitgliedschafts-Status pruefen | +| POST | `/api/membership/bulk` | Read | Mehrere Mitgliedschaften pruefen | +| POST | `/api/assignments/apply` | **Write** | Geplante Zuweisungen ausfuehren | + +> **Read+MDM** = benoetigt zusaetzlich `DeviceManagementManagedDevices.Read.All` + +--- + +## Hinweise + +- **Single-User-App** – der lokale HTTP-Server ist fuer einen Benutzer ausgelegt. +- **Auth lebt im PowerShell-Prozess** – Disconnect oder Schliessen des Terminals beendet die Session. +- **Cache** – Apps werden im Serverprozess gecacht. Refresh-Knopf laedt neu. +- **Port-Konflikt** – laeuft bereits eine Instanz, beendet `Start.ps1` sie automatisch (per CommandLine-Matching). Bei PID-4-Konflikt (http.sys) anderen Port waehlen: `.\Start.ps1 -Port 8088`. diff --git a/Run.cmd b/Run.cmd new file mode 100644 index 0000000..3e90d21 --- /dev/null +++ b/Run.cmd @@ -0,0 +1,19 @@ +@echo off +REM Launcher fuer Start.ps1 — funktioniert auf allen Clients, unabhaengig +REM davon ob .ps1-Dateien standardmaessig mit PowerShell oder Notepad +REM verknuepft sind. Verknuepfungen koennen direkt auf diese .cmd zeigen. +REM +REM -NoProfile : keine User-Profile-Skripte laden (schneller, sauberer) +REM -ExecutionPolicy : Bypass nur fuer diesen Prozess, keine Systemaenderung +REM -WindowStyle Minimized : PowerShell-Fenster startet minimiert (Taskleiste). +REM Browser oeffnet sich trotzdem; bei Bedarf kann das +REM PS-Fenster ueber die Taskleiste sichtbar gemacht +REM werden (z.B. fuer Live-Logs). +REM -File ... %* : Start.ps1 ausfuehren, alle Argumente durchreichen +REM +REM Beispielaufrufe: +REM Run.cmd +REM Run.cmd -Port 8088 +REM Run.cmd -NoBrowser + +start "Intune Manager" /min powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Minimized -File "%~dp0Start.ps1" %* diff --git a/Start.ps1 b/Start.ps1 new file mode 100644 index 0000000..063bbfb --- /dev/null +++ b/Start.ps1 @@ -0,0 +1,224 @@ +# Intune Manager - Web Edition +# Startet einen lokalen HTTP-Server und oeffnet das moderne Web-Frontend. +# +# Aufruf: +# .\Start.ps1 +# .\Start.ps1 -Port 8088 -NoBrowser +# .\Start.ps1 -TenantId "..." -ClientId "..." + +[CmdletBinding()] +param( + [int]$Port = 8077, + # Optional: ueberschreibt die persistierten Settings nur fuer diesen Lauf. + # Wenn nicht gesetzt -> Werte aus %APPDATA%\IntuneAppManager-Web\settings.json + # (bzw. den Defaults beim Erststart) werden verwendet. + [string]$TenantId = "", + [string]$ClientId = "", + [switch]$NoBrowser, + [switch]$AutoInstall, # ohne Rueckfrage installieren + [switch]$SkipModuleCheck # Pre-Flight ueberspringen (z.B. CI) +) + +$ErrorActionPreference = "Stop" +$root = Split-Path -Parent $MyInvocation.MyCommand.Path + +# ============================================================ +# Pre-Flight: PowerShell-Module pruefen / installieren +# (nur User-Scope, nichts systemweites) +# ============================================================ + +function Test-RequiredModules { + [CmdletBinding()] + param( + [hashtable[]]$Required, + [switch]$AutoInstall + ) + + Write-Host "Pruefe PowerShell-Module..." -ForegroundColor Cyan + $missing = @() + $outdated = @() + + foreach ($req in $Required) { + $name = $req.Name + $minV = [version]$req.MinVersion + $available = @(Get-Module -Name $name -ListAvailable -ErrorAction SilentlyContinue) + if ($available.Count -eq 0) { + Write-Host " [FEHLT] $name (>= $minV)" -ForegroundColor Yellow + $missing += $req + } else { + $maxV = ($available | Sort-Object Version -Descending | Select-Object -First 1).Version + if ($maxV -lt $minV) { + Write-Host " [ALT] $name v$maxV (<$minV)" -ForegroundColor Yellow + $outdated += @{ Name = $name; Have = $maxV; Need = $minV } + } else { + Write-Host " [OK] $name v$maxV" -ForegroundColor Green + } + } + } + + if ($missing.Count -eq 0 -and $outdated.Count -eq 0) { + return $true + } + + # NuGet-Provider sicherstellen, sonst schlaegt Install-Module schweigend fehl + $nuget = Get-PackageProvider -Name NuGet -ErrorAction SilentlyContinue + if (-not $nuget -or $nuget.Version -lt [version]"2.8.5.201") { + Write-Host "" + Write-Host "NuGet-PackageProvider fehlt � wird im User-Scope nachgezogen..." -ForegroundColor Yellow + try { + Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Scope CurrentUser -Force -ErrorAction Stop | Out-Null + } catch { + throw "NuGet-Provider konnte nicht installiert werden: $($_.Exception.Message)" + } + } + + # PSGallery als trusted markieren, sonst kommt fuer jede Install-Aktion ein Prompt + $gallery = Get-PSRepository -Name PSGallery -ErrorAction SilentlyContinue + if ($gallery -and $gallery.InstallationPolicy -ne 'Trusted') { + try { Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop } catch {} + } + + if (-not $AutoInstall) { + Write-Host "" + Write-Host "Folgendes wird im User-Scope (CurrentUser) installiert/aktualisiert:" -ForegroundColor Cyan + foreach ($m in $missing) { Write-Host " + $($m.Name) min. $($m.MinVersion)" -ForegroundColor White } + foreach ($o in $outdated) { Write-Host " ~ $($o.Name) v$($o.Have) -> min. $($o.Need)" -ForegroundColor White } + Write-Host "" + $answer = Read-Host "Jetzt automatisch installieren? [J]a / [N]ein" + if ($answer -notmatch '^(j|J|y|Y)') { + Write-Host "" + Write-Host "Abbruch. Du kannst die Module manuell installieren:" -ForegroundColor Yellow + foreach ($m in $missing) { Write-Host " Install-Module $($m.Name) -Scope CurrentUser -Force" -ForegroundColor Gray } + foreach ($o in $outdated) { Write-Host " Update-Module $($o.Name) -Scope CurrentUser -Force" -ForegroundColor Gray } + return $false + } + } + + foreach ($m in $missing) { + Write-Host "" + Write-Host "Installiere $($m.Name) (CurrentUser)..." -ForegroundColor Cyan + try { + Install-Module -Name $m.Name -MinimumVersion $m.MinVersion -Scope CurrentUser -Force -AllowClobber -ErrorAction Stop + Write-Host " -> OK" -ForegroundColor Green + } catch { + Write-Host " -> Fehler: $($_.Exception.Message)" -ForegroundColor Red + return $false + } + } + foreach ($o in $outdated) { + Write-Host "" + Write-Host "Aktualisiere $($o.Name) auf min. $($o.Need)..." -ForegroundColor Cyan + try { + Install-Module -Name $o.Name -MinimumVersion $o.Need -Scope CurrentUser -Force -AllowClobber -ErrorAction Stop + Write-Host " -> OK" -ForegroundColor Green + } catch { + Write-Host " -> Fehler: $($_.Exception.Message)" -ForegroundColor Red + return $false + } + } + + return $true +} + +if (-not $SkipModuleCheck) { + $required = @( + @{ Name = "Microsoft.Graph.Authentication"; MinVersion = "2.0.0" } + ) + if (-not (Test-RequiredModules -Required $required -AutoInstall:$AutoInstall)) { + Write-Host "" + Write-Host "Server-Start abgebrochen � benoetigte Module fehlen." -ForegroundColor Red + exit 1 + } + Write-Host "" +} + +# Quellmodule laden (Reihenfolge wichtig) +. (Join-Path $root "src/Models.ps1") +. (Join-Path $root "src/Graph.ps1") +. (Join-Path $root "src/Api.ps1") +. (Join-Path $root "src/Router.ps1") +. (Join-Path $root "src/Server.ps1") + +# Settings aus Persistenz (Datei) laden, optional per Parameter ueberschreiben +$script:Settings = Read-Settings +if ($TenantId) { $script:Settings.connection.tenantId = $TenantId } +if ($ClientId) { $script:Settings.connection.clientId = $ClientId } + +# Globale Konfiguration. TenantId/ClientId/Scopes spiegeln die Settings � +# Connect-Endpoint und Co. lesen weiterhin $script:Config, das nach jedem +# Settings-Save aktualisiert wird. +$script:Config = @{ + TenantId = $script:Settings.connection.tenantId + ClientId = $script:Settings.connection.clientId + ClientIdRo = $script:Settings.connection.clientIdRo + Scopes = @($script:Settings.connection.scopes) + ScopesRo = @($script:Settings.connection.scopesRo) + WebRoot = (Join-Path $root "www") + ReportDir = (Join-Path $env:TEMP "IntuneAppManager-Reports") +} + +if (-not (Test-Path $script:Config.ReportDir)) { + New-Item -ItemType Directory -Path $script:Config.ReportDir -Force | Out-Null +} + +# Session-State (im PowerShell-Prozess gehalten) +$script:State = [pscustomobject]@{ + Connected = $false + ReadOnly = $false + Account = $null + TenantId = $null + Groups = @() # abt-hm Gruppen + RpaGroups = @() + Apps = @() + Users = @{} # cache by id + GroupMembers = @{} # cache groupId -> member ids + Session = @() # geplante Zuweisungen +} + +$script:ToolVersion = "0.1.23" +$script:BuildStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" + +Write-Host "" +Write-Host "==============================================" -ForegroundColor Cyan +Write-Host " Intune Manager - Web Edition" -ForegroundColor Cyan +Write-Host " Version: $script:ToolVersion" -ForegroundColor Green +Write-Host " BUILD: $script:BuildStamp" -ForegroundColor DarkGray +Write-Host "==============================================" -ForegroundColor Cyan +Write-Host "" + +# ============================================================ +# Alte Instanzen beenden: laeuft das Tool bereits, haelt der alte Prozess den +# Port (HttpListener via http.sys) � ein zweiter Start scheitert dann still und +# das alte Fenster bedient weiter mit altem Code. Darum alle anderen Start.ps1- +# Prozesse DIESES Pfads vorher beenden, damit ein Neustart wirklich neu laedt. +# ============================================================ +try { + $thisScript = $PSCommandPath + if ([string]::IsNullOrWhiteSpace($thisScript)) { $thisScript = Join-Path $PSScriptRoot 'Start.ps1' } + # Nur echte Server-Instanzen treffen: per -File gestartet UND auf diesen + # Start.ps1-Pfad zeigend. So werden -Command-Prozesse (Diagnose etc.), die + # den Pfad nur als String enthalten, NICHT versehentlich beendet. + $stale = @(Get-CimInstance Win32_Process -Filter "Name='powershell.exe' OR Name='pwsh.exe'" -ErrorAction SilentlyContinue | + Where-Object { $_.ProcessId -ne $PID -and $_.CommandLine -and ($_.CommandLine -like "*$thisScript*") -and ($_.CommandLine -like "*-File*") }) + foreach ($p in $stale) { + Write-Host " Beende alte Instanz (PID $($p.ProcessId))..." -ForegroundColor Yellow + try { Stop-Process -Id $p.ProcessId -Force -ErrorAction Stop } + catch { Write-Host " konnte PID $($p.ProcessId) nicht beenden: $($_.Exception.Message)" -ForegroundColor DarkYellow } + } + if ($stale.Count -gt 0) { Start-Sleep -Milliseconds 800 } # kurz warten bis der Port frei ist +} catch { + Write-Host " (Konnte alte Instanzen nicht pruefen: $($_.Exception.Message))" -ForegroundColor DarkGray +} + +$url = "http://localhost:$Port/" +Write-Host " URL: $url" -ForegroundColor Green +Write-Host " WebRoot: $($script:Config.WebRoot)" -ForegroundColor DarkGray +Write-Host " Reports: $($script:Config.ReportDir)" -ForegroundColor DarkGray +Write-Host " Beenden: Ctrl+C" -ForegroundColor DarkGray +Write-Host "" + +if (-not $NoBrowser) { + Start-Process $url +} + +Start-WebServer -Port $Port diff --git a/application.ico b/application.ico new file mode 100644 index 0000000000000000000000000000000000000000..98f4b8ba279310d5ab350a39a6997ea5a356fb86 GIT binary patch literal 8395 zcmdU#bx>T*yXS|&Avgq=Ac5df+!6u-f&~qp0Kpj~1Rp$DfZ)Lf32uWs3=$y0f;)o_ zlVAf3!yp4(-n+HC_jkAUR_*?G&#BX=Pjz)yS9L%AJfH7#006w(`=1LBzy)aJ0s!vb z)}wW_R4K?<$Zo3?YOj>v{L}i+Lqc@>GV>_?@Xr^>LrWj;cY${%0Kf%OQ&!UVS=?Xo zuQB%u#2#U>&9jT?o*Et=v`K(%6>eVcQ0}MGg6a$bg_wz*`Ld?*yTljvb~_EfKUPi+ zSzo>`nacQ77)q~El)$d!;xx#TFHfmG6Ku9syzD`o6^*2Rk?+=wCkam-BmD_!-v&7H}EBV#ffwnv`&UT=q|%u zpt01K;rWw*qMGgt@hztW5S3Wq%IA3(*A~TvJ&Ls>aT;P9&5_L%sRg~o z@AX?+n3P%dav_|O&B7m*9=d7Syc_MU^u_SPFQ+dvjTC5G)}sB)RwoXBU8S}hjYJw* zJi1t!7|bX&G7k6H9BK{|9`S9$NsGYyhhmmFu^Ql_|Mo_6C#duB`1s{^x3yYtSr2#96%-|YJR`v5;Ox#_?T9J>?z>{mWK z#OVcN<)4F@?NoX`wW&mt$+N*|Kg_m4Y})>kmyd#+Zlb9X?zw1S9qxncy=~&JOZVn) zXQdJnXku0Q% zpyktRV{m=_`0=GL%%jG2X>`y8i?<`s&7BK#o4LSbr9;PDls;xkYEtTN3{WV@o$R?l zS(zN^&ALTg7L$y@=yW?UzvCr|)k;$qfbhxl6|We$q>eDuveRBF2dvzZQ@~|5VI*)h zb3SZzvp#=f)4EPqEthhY_T$(ouH)Fhwdrnfy0g?*Z9ov7u=!JQWl-&x0vAg_j<8!b z45o9jw^Jl^ZG}2nf6k-Xdb)<6(P($xXxNUH$!KB-_QF1;VsiKvO2moh3b@M<8f9=5 z_Hp<@fuZME>Lpo`LYI|2=4msuBSqb8^ZV~W7-HWTykKtxE^&sLQ>Z<}W8fuSB?{m$ zE*A)lc%(6OmDhy%R?*#h4XHV6UG-n@8J3`g{Q9}Ip4R;C+_r@MJV)J>th>!c;`Fb^^h0w&yT4S;<)TgN4VrL^_mgp2Jm{@4 zb5Ck_o&7Qpk$exS1XqM;9!zH};C_2VluiuU9B!vrqSH&QHBvhcXAhrhz%BB};00n*CKB59{N9T`=~Jy2>FxuS8&SIh_TI`4?3MU8dacWa$cJnH}A)i zP;;>cQ$fxo2(w8dxOzWvnW|F9D4hu*MJ(NKE%c`UMw}%gJFnt==rvU zUIs((Q-!vOe7J7#sA9?j+qYzo4S|>a6hT*=ODoVozq!g)&^f}X>wL5&XYYfe?>onu z$YeIzNBfCqAJLI;4}_w&vT!ZtN z4#jB+?E-ZGX*SEBr6Rfsi{Q^6xOoPhb|KQg-`(;ydCM3KsBwDfNh^)?E7%Bdoo@Ue zomN!_(BmCnN49#S`v}pCe#T%aMM5K_p~|p>M|o& z+>z76IKqd!M-mZp=N=+}@*!iF%;^$eG2+L>X_m-gtZ;C*y={^o?UJhv|LvF-)r5-F z#jFM@6?$AvWL_-8P_(T%K$aS|NY3KWd-&sBM~;@GlmQ~|dd z^NGE-sfdjyWty`>;5OZ?zIG8<$EX-A<5xAHG+3Qs-n%W`FJ6qw>NKPtaGG*f=*ZP~v8*!yGU84y{W&?I#YdH^ zPUi@a{Q0QJp>u(}s@xZn$`>+^i)ez|ZBN2dBqpvvg zHQl`2CLv%?`q4;VpG?_(FIKIwHwD+-AK%=ZmZ)$RQ!9Hy;t}Zyh6o9|jJv^d=@tn< z3tQsD(S?q=iaPY6IF;y) zF~zS>NPYqlUKGI zvpK4kEjOGu1E=f&HBF6M=a}p7*zPAWR9e(! zUq5F?ve{$J!vz7{KA6`tPO=i$9WCre4gdy@QxAtks0+Jg3-uK?WHqv5Bwx z#GL;iTK*1>y(XY~N{^ntfU6Ly^S-7ex4%fFE7UP zPa{bXsW1ffF#-CT`}rDM2!SNcveVW{a)A%Da7Qg5hJ!VMbIF^HSpNIH=2z;1WbLA( z9}u;;ZTTSbd$44OOInNO{SSa_YF`A)+V2qCD%X-J;&?Idm^@1Spkjz=KMhZf%%(^r zLPCO^55{~dWIAZXjdB}9-^&!5$Uc40KCiV_4{rrYLmvpVFEt=)a3_>v4mm}{u!mGWdC#ot(DMW?dNov9FTlcbB<5~LPD$+>0MyvT{r7``Q9@!2@rlS zA_0HyooTY(0v=ATz>+4lPjLJoaDeVDxV|axI4nDttOGfD6Cyom^H62|a4p{dnrI7# zf0MOsV0YSmzWr#P635p|{LIU@Vl1W?vqQaC`!I79D$`}PhJgu z005NMtw&mNQN-rOl)f-uj2v{3EPfdDjv<(?vJ)FCz@d7!;Z>+aoA^1dt~7<=d8R^6 zV9_hjgE!$s>W%A3jy)2bczlXUDw4c z0o1s-S*MU%nP753BDr5aKkdi#29X|yWy(D)NNSh31KYjSa=9mTd|;s=+khp6XqIQQ zVrXOf2q}@vP8(&gm;wv6&W)#pDOc-ULP@00aytc32RXB$nrm~pu*iA-JE=qh5rhT* z&O_w?&O`l(uJ=K;d+P6$EXWD-Xy+OyOD`ve^f6gfH*-HYJ9qo!?-fnjyOlmun}}F; zKb1ir>{QBjg6Qq#MMtE1)+Ht7IYbZsGLry}?f{VliCQ~Gjzu3>%RG=ShwSH>cFtAJm|Puslrfd; zxN|$pI=vH)UsllFZCd$pP=c}^?njldrG>@~8<|hC-i3-1Oc>;Q3f+CvI1*N#batXB zr+IBHU47LDLv^4+sIu$(6{PB7Z#nF!aRxQk7)0f=I%wfBuaKc*2AZ@Jj3mg z8ddqz|6GKi+)vTqrqBO|%6g`Z_-^VY?nFQC{loWDi$$%cB6HevQcJGDypr)3D}%$U zwcByIY&+~N&p!6V99+-Ck_vboq~B<;+(_y|;T?_>b%E`as1klb4=2{Hm!~!yetrtv zT$1{eh%33k+&f`wCYNiu+2!#*(3@`;C)>|!YoI1B)RKd{p0dW@mS`IOFL+3Gqek+a zKKvF85Wj`@|H9CR(-XrtzMC@kXDLop*Dd>3zJLB+1&@z^o4(X|&Isp_#PXl6D?Fun z%S>?a_#G3RdGHrPVzr*`(0NrN%`*4c{^ZO^g{>m|(2mi%#8k zkvj#SqiT-!`dv_}OR9j|byG$wm9yj@NWTQJ38c+IEgG`56be?gbg8TV2&G)_;1Crz zZq9yn%ZH?M97AB<@#SM7LE7jYukN@I&s}oe5`~raPGy@2@-1jg#0Ka6GO>!@Q{>o0~}*L>m7=)wBPEs?g|)-s81wAuNM>P(aW4 zj+3jU?`;@7pqhIL9$xZwyS(0}w00+r@qeg5lTRJtEA}~_j~mh5svw%y=OmB)@x2u5 z9CYw%X%S?K_w_wc@D*(r#hGl4zU~E?ZCc8ulFP1w(e2db-W_?uu)SgFAU4_L#9w_P zARZC2QpKx3vFGegSzIK?76j~?;b8vb)*G+uEK#ZgU}ghKBW>voVAiFbxk{z<&!aW% z5DY-z&gsc*RKbe-t#`X&E@Ba^kX*@+v&FW%XE}+p>{MsJrY=b<$a)`r%|#LuC|P}P zzDu3R5aKCO=)NgzBwQDGV{E!O+64%>+Rf9cPN8mLX~BhOd~h$DJLNPjWKuRIB17!L zFk9cNAwNWz4Fa#`pTNz8@I0RKZxK@yq?uPl{Y>K`sfO}SY3VjleBT(ElJOo@`k~ZV z(#3p6Fp3Jp=lY0u72&b{ctJ!t{EdFgwvj~V-ztqExd6v4RWxMVH$j2C99O9C{}Rmo zzQ4Uc`{z@+cdMrC@g)$};jYd~*3!Xy(dGD8nrqo~H+LmfrFPOlUtAN!NeoZ##uzDl zva*z{Mkh2|2(R(EbqgKiyBPvZ)RhgT6DukjCGRZOIHfxH?KTC{-~ny$4}0itii7F$ zsg>vPf@f*M-&0=?`3@VI-5$@!6M@(fUlS_%$3OusoX~ODwr2DS7^-qtdCN$>{}9MX zqP;Jd>0r8$2AbH^>|iv;#wb|7_$eGNYP`Uj3dcf<7y!(Bx{JNp0%7UW?}j1L$?>v1Ss|>kXyi*GD@>xIM# zuVr}US8(~wW>VvHW7lXQZhA*m5twY5tGu=SU&XW%llrdM@BfM07c47Kc>3zxX_l_a zh7n4}L&vr3w~!935zmcWCIm93_>mWNkFHProx}|u4<{=AYL(JQz5Uq+AP6?!%}O4Z znxkVtdY0Xi2@j3C=w_@)ohV?G98XhpxfZmZK|CyG_tw(Efzg|3s=pHO-?{J*16as$ z`Fi(_ByO+ZJr--d3xKL`1pb5NsgCHukCn@0!GLo0?EB9Ee{^C3uVu`ud4iSo1l{FO zwpQEs3|M=->i&i0%Qy6dZl%3BU|#u`nPRoTOsvN(@h^Ba1^fn*d@;OV#$U@$^hZZ+ z=janxvo*p5K=7_j*S0~L@I7B1oi9qwMIz7oU$K5E#zxUVt&>0JvQEwgT&~U&Z6_)9 z*r`0j!a4CBo{pkk-f_7Y9TSAfwodn@vua+^8;ptOj)^v_CxoD6m?~=1M*ihMcBtSE z1BMymG+F~7;d&^3y#uAazsmq&l?h+;vK3({QFE!YIGT!ET)xkh{Y=3gGV1WenSR`{ z+(ct?+U~7cy%0b!?+xK;&Os4}E%p!I{T&8Y!iKL#a!)KOriJ39%$)9V^?o_VFCDCn z1Da@2`J#5&rGPpqHLn=v{oCfqdVO3n_am`O5qu)_Eo&vKtCwd!Pjjwj-zrC!^f4od zzZO4eY%`ypdBd%clWqUSX))wq^?>sKsRsz;{U3Tj(8R!F(qYmOafM(%o?@D%YQ>6D ztPF9a-(>%dxBCYd8$$p*2(kJkh=v0%KKlRzoK7N2h}(PDAs;vI(BrF%u;+1={dSg8 zq4FW9b}aBWO!7Ea7d-kb)v?O89Vn7lu6irF`q*ylCucM!|8M=^iBZ86Z8%RVDF-|J z<oAYi+lJi2E0r#KZAsxWif#oH>4 z7DHT|e9^4%^g=v>EAuj(Ey`QqQ3Vd*7)O*^9!IeK+<>YSxzzrd-%WJM3G*oD0-^y` z#e>%2pKUwCcMTSNeZCPxf<7NDHpCHpcom{T8)S!^c#)tv>$F_EZSDz~&621BDrRSS zfyae`Q>o?bbl>=1!sspstS#iSW+`nK4Y#pC0<|#34(@St4a&IzPypR)&2MTYhYP@`o zI!dl)(PPRwr@Q4+$n?SodZ~g_2CNhvEU3WD!oO9E2VdqkPWC6-RwJK(+eRFzceK zNDe=8%(N*}40;xk)__Sa!RC{cKjMAVjEg4+sy-CdiQ*3B!rD!Wl9XYeY!5)fc_H;4@n=vgEq-;UgOBS}?gwJrnCd$uBWxE3NJ+VU;)EHx!~Y#%4TZ)tdXB ziKb=k2V)m5osv)NoGMf3wOq86Nsf)r2FWFVy!b-tLCn;ab*x6G0vMNH<#r`uvKV^_ zZpwK+9Xa+Gwh2T=6?_%=LV}-u-cubhP?1#lz#Sc?y>lgMaAi#0#+ktWZNnUtJGYTj zdz+5%1p7RecT=A7+JOA&>t4khMoP;S`DWSBho3O0-v&?hEz_!?d}UDnEBf$o+K;#x zFI*bjk3}zz_4QN1+w+jQ>h&W7=;R@3H_cb=+0e6i50-VpQ`gq6qAQ=nGGquKRB%HB zJ%*B`>5)=pk_0lY0advuX)GSw1!Yoc8+JScjcVy>XBHR2ITZ~22+nwWl4M>baIqY2 zqYWF2KrZIJPN*x|C%L@)Y_peE<(gx7RII#X zn{i^;@u|zq&P1-~QzOT_w2>hS=nasUU@ZV7kF9L_#Fb9#-$CLN=?S5lFpFNSpF%Iz z(w$X$A7qU=kqsSuX~K!kv5_k7WRnLto{wriRuEgIN9rm047b`fb<(x&adBGe_E%69 z;V8ye0bPA;S`WSQ3FgTHD%TNO$gBi}%UmSqnh5e4RvRB9@4&kX5Qb$qZI=X8f+kLK zxVKK%BeP-2cKc0Y&!|YKgT)IE-Pfd@oje3(f?=vBLIobigmueEg`7wTbFnWkH=);y z7!xq`z!-eYpevVMNJ)dJ%3Ad7M%j2M4ApJJvr3go1LLB4*s*iVUaU@_0V=4l) zbHP+mx9FNB&GqlkXgGQ+zT`T&j4Pj?V!j=L_1Is=*N)TCBs)>@idPnT%R&Vzkm9bv zWm+Uzf?WEOr~1QQ&uOHPd%^wSLuNAR{&@Xl=4)YqO{kqB(9 z{C?&zE~|J#;+EdK;?C6`Q|1?Me%9bL?B$C+;`@gxJ@y3SbUJu95@9l2u0uc;MWjI(isz+0MRWgE=rQuTPxqY z#Yfu@Ab>#SuW~IPhb{pOQI2>rqO3&cX7E7y2L_0cl2aP#xegCKr3iUtqcF4ZPq%J` zczqAAINox=1XSqk+qXczbMZN1DmneFKZ;RTHvX`GH#m%!n}XF=_kmFOlOX9!_1x{{ zA`*%e$3DK9P>_7DMlf%j+gLr4Q6bS=!4A=5_gNPYiRsU9w$CWg9|8^@C(mht#}yk) zvfXCuhhPSjL8#^R>9bkiEbHD#pp6)@RIG#}ZerkoX-W8s86w={c4eervFY#xGM z@Lzc9i!JB-v^U=qqzUPJDffHRT_Ja2%=qeqRyVm>M-ameXw*W~wEY>1gZcj>SO4YV dhn}+=%G@bzg`nKl?SBXWwU=7T)z7U${|%GZobUhu literal 0 HcmV?d00001 diff --git a/application.png b/application.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae08ae0978c8ee054e897d118a9ee4dbd757de3 GIT binary patch literal 11941 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 literal 0 HcmV?d00001 diff --git a/branding-logo.png b/branding-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae08ae0978c8ee054e897d118a9ee4dbd757de3 GIT binary patch literal 11941 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 literal 0 HcmV?d00001 diff --git a/intune.png b/intune.png new file mode 100644 index 0000000000000000000000000000000000000000..d583feb5d5b2133025ec841f6ac2907e17298026 GIT binary patch literal 965665 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 R!NFOwGFZXGpTa!V29a6S*OQ|B+=0MGW6^ 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

<)r|{=0p--? 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 u z=mm`uRD$;`vV^~Cs-EIPP}vbjbqNn9;F9p$H6qaLfiWMWO_=E_$Yp+_k{dX&YR=?S z5%nYe;z$={VvtKWo6}r>^_rzOM9^A`Dw`?%skI)p7-#eo z8EU7?BOi?z9wVl^M-%z?*hHun)_kXg8#_uK)HLh$O-+9z*=Qpk@l2FWzEZ5eaM`QI zO+%fiZ=OFM&u%J6^C%#D-rx9D5oX>g)xX-q@H@dU!DC4n+kvzncb$f8*SmVyW)d?# zi_-xn)(~`Wo9}ycXA*iHxm;fiqUoh?H(K1Q^SO>EKK_+`hNUwfx8 zyLDriqm$n&-g9Zi(JmHhS<#S#Fgzk;cJ&`&cnZ~jE{L5hi`x!e#r`b4QOZ>yW##%; zBi5}=vyE1)|DYM+K#;o3_ODrX5O6T9aA^b(8tUmqtW z>*P9>#S~i7ufnL}&v`)3_etBuS83%92Xwx0$+!@$_quX&WN1t7!Y&mWX=qI?$b*s5 zOXxF!1QP1(3`&?O7nHuoJ-ZjGa9c+pA}@4~CwR zI-nexCQOB3$-z4fDk~1Y-*lb1ydu1p76c&@76Tdk6+g1sbS4B&AJz{_*i2XRB?=G- z$RhT$jpq*kS{eN5uVsXfbj|$Mr}xXx{~(v%qlK|21U71sAumH6aMxbs9)~q-#*nXl z@O3H6=U(iQt^`SouBLckZPAju)R%DKtSX6hyl$nQQ2Kb|_ba5aAv$IrhbvpUNOf_L zH*kr8an{~egww})ne7f-)G=5b5vnnGERI+#6INc{_R47g#2X$Ti7wl2QhDb68FJHT zx->JRRr;d+uU_GgO&`cj38@lqZ#?3IRT+B{Lj%L@=K1y{Zbl&y>r|7KzW`zzv*wyL zK>zwRMK+Obj5C_!cbZ9l99^Tf#t1VHbqV^zvECcYFLP_uNtgRv0HP4 z;sPE-_cG7sM#TJd!uq*5FE9Cy;oLe>MH5caVN zfnvccDWSMqBDcw-J={85moZxPd8M~dX}U8dgpwMOY|aXV9DI2x>WBmrTP@7W$Z&VuboI`6KM z%6#RnY|-!8%D~mR;?gw{KgPp8NY_wX^ygydr<%e%{pVtba^U`9`1A)NNLlPGPT4d| z{1&i2zXP0SMwyQo*eOdHHC93ZH>vI-Ro!4jTcjM|FXta1fkz@Yax!?f>o&;sEHMNG zIK3MX)aa-sFBvW1GCKfTL`hoCiFY0K62s~U(xi{Z*!AslcxvM+}U5?PZCPAy>2}w+3AXxEMBq=n1B?^Z zaK~)X^pR4OIPVu92gVBSOg|1e6PU24`{ScV9&Mu>q+SmWZr&MyE*of?iR*g`?W?(( zu=Xvw`N#?sUmVP;tW{T~u`65%MFFPZ5x;uXE*QK`{=Y6t8MP>2RTV1d>{c7qX@fSAOhv&oM<7{us#)R&f(@xo5 zdR+Ww;o=(?hBwZi$jST)=)RV>Pt%nk*tm)!v++ua&+LKxwgugZ&T6%F#c4bEP&9 zqfWt50*t`FK3ss>bKXP!H@0pkd*OGNkMMq9ptUFth&n}DQT}574xq_f9B0cw+Kxpk zaNu{2jjYp2q`G4*fjYN4z%}~9%DGcuakfedh8jkFncDcWmJ4)DK_1j_+Lv$G+*y&M zba*hO5!GW!PggctV^VRXt+k*8+Xq%@>;Z0^Pnj}LOK5))8Oy2ia~9OmLw1DeM_N1e z$$Ir`d|s9OeK)723AZq7bw+PXv~_*HI!_(jyktSOog$|#IO#oY+OM6B2W}v#Tk()! z76Qam;n*d@lg38kN^lUKKj4WX8L!RlRtdJv5X*9(!z1+%8@m5DcnXxu<28U@>NZI9 zOB>pmA|~(SY^aGau=!e4>nhLrG|NksJRQMdYxyZ$C@u(86(OG@2az5u%UxN-oJ*!ZVOkv}=u%v>%5NLRX*=Wo ziy~%*f$yB=d-_ER$NfK9IDuAlG7QXO^q6jZ-f8dsnadnHUqQ(Dps_o%sjqK8{Rsh6IPSxT51qxBR(xbc0?qoqS%l-XAZl zyh^{tS0Q>KO%ngu9ov;yBfOa8s^lcS5f>U1mXQR`^Jnp!xfx8xTmTOeK^DYl02c*X ze2{dnc!6XAJ_$_mX7#fh4Oh%p2U9PtKa~FB!2#h!Fp1#A4-@#R!Oy>-A8=fn`5Z4% zj5;WeR)0{B0rX>F?;H5Nn<5-tHm~-Rzjv(yP_qN*rB-K+VivWDiFTlg0b)6d0Y9E7jLq z`B0|(I?0ME?9=C31ZQVzBPpSJy!OF`y3aj+fg`0J_kWX1Zi>l_yXJNxx*TuH5=Dq8 z)+*$P2#i#lEccQi8N9n2OKjS5p$lZ!-(s7BZl|DE^S<$J7gWc|Tu3Ii zIbd^3+Np!1W?atuG#Eh-?etYgRwoE;qS3u2UI~rt91zlR#N@36hw0xS`OlJ_| zYX0R_S1t!tMd6#5@poe^rv?OySKuKyuW?8k(ttV@8Frke(Aw%3Mn_)vU*v=Hrg3HP zyGynWXIV{)=FAM}WeN}ov2PC};)mX@nPR-CT#mkcf+?`S7{OskzK8V7Ll0FQ^{x5}|wN6bIBm5}~}*f+XOpzte>7rYO#T#LjFjf8!4@CSDGC zfxQZaq=n?nYjFJO%?Qqfmdt+u26Kp}6ljp-WbtC-pgX!%anl%1#Vl(s=LlNl>|hDT8plft?Ed`7MBQy$kJ-A(u|QB6cCTnKVhA} z8;r1V2fDO@;r62Y8eZHq&U-g@YfZkx&&@I&(p38iGcy<-y4p zvPv{AFi{bl4kUDneUrHP>>3cBAIfn8`r2bZ?r@j50@Z1&i@_ zgLenQ*a`U>)k(tIq)qGox2~eC#BjT%v*k!gny$64-W*{k?0yKgcQp0Dy7Q%TaJQsP zEj0{c8yVo{@6`1Czp%))0oxOoHa7G0Ih*N5+QLub2YW1^0osS3V(Fn=h9XEp78;sY z_GA8*KHQv}>bbPwnwnR%fXj5Ife0OM))~iTM%KQHp!>qvKaeZ{7#3AN#VI$#Et&^! z8Bh{tt&?rb^Hf!GnuapU6uIKXYj(w?$~%s$rQ9?~w$mu!I<@*$$m|wJ5C8X`loakWZN2uqHHPHXtaVe}f{kWfa(wb;LLNPePJKjl#X#W+6TRR}16 z5hHtozC@Mn#Z}r43oYi}xN8E9ZSL2e=Tbu#)~%OMgS9^yTHg;=krAgksGc*q3bIy# zfagdRWTWG!N4^@*si`^^{iY=|5vYQrT;;-xv!xiIi|Q*C%!4NtaSYh%pJf@~JV~Ew zq>)r~)K(=vz|Rog%CuhyW6t=P)%eN%*C}~^HI+RR_tYYq9ou=Mp?GJy-FfBD2E^ds zeKMke68hGJ}^>lyn(aj{__cwJVaM9rE zShcfHR^76<3eu!<{)qoW+l}7JKZ*q~U;xI5e-#UW4F8idSf9pItCsgJi}4b0XvBNw#C@s$>~}1*w#F^3l3M;F4!_QNyU7NIPK|ba zp9O92_S?1ZoP2y7r(^FkwP=lx{z&uQZy01zuX(P-P_aKJeb))@z@7AAGpV^1_JC@1 zO(gWUvON{WU9scsE{44)kxmkmt$AwcG_H|CV6}7vsHtUPus90sSE6DPDo|A2?ftwTyyX#(& zvw3cCck+_<$xjy`r$_d?qdN+AvRA3%VFB;A1J^n}4qzW2y|xC0DHZ=KIdR4pAkU6M7K7ph1PJU0Rl6;7n_SjE<|I=SlzeCz|wE924b# zma;qkIhp}alAn3U!RrsVcIPY-_i<-8U*Gj~Ur+f+kFZSw(-bC$J|b{`Mm;_jl_8t>#r0Xa z_tG@3n&IK}J*3`|5fdu(0&)Ps_^{hNjewj#?H}Q&KB&2I>q>LFt4;ZeqL&O-ZPI&I zY2}m@=Y-A*-@O@SPHt)ITO@+qISn{Art|i5GO<5Seg}I!lbFACY?f>Uwq+KbhI6vM z!(j914+&OpmJ>rP5lAI*(Vb=H2ZuDf`OQlI_m|+1y4X31zjaIh+I#m@xHUXwoHZ8-1~0d1gMZYHmuT1d_LIw{=X)TyVdv;@7A^`- zS;Tr;m$F_wt((nzeS)7-BPyg1W8D9Ue)$tn0`6v?@JbfGh9g_L-fa}e#%(wz51Mq! za+D$GM(pEyoaq86m4&e;Oq;t`G+xn)V3)@2u2=2_RC}p<)lQ8!0Vz4Poj>Fj=L>{2C z_IP7AoGh2VU>ikM+M z+U$=N-7P$1^mJ}Nx6tIb9k`b#Ts*a{JEOTEvDlH&o5P$OSil5pe2F<9xHVvDaM|r% zS&NCVO=(F_clcND+S|Ima-aCAJPUp66OwkU8Pms=GT~i>I>PUd>$-0{*)#3(m9G^S zO|RaZ5f4cm4P)45>X37!+GacYwXf{8LQ%g7h6pHzpWOikTJJq^@i69=1zSm;7hbk)PXBwK0d6K{PKrhXcW|?mTqr`}7A|2UXm$hjokgg*2wF#W^&J z!`GvD$)O>5S>#hNz{l8+X=jG$PG2(;mFs;~#0S`^8f%#XE*^DS^}>s$JUop!)u){d zi~%nD2o#Bii#V)!v*UhC2A{O|Zkbi`b-o9YVZQV;zdGJ+8su{~K5pYw&1d93_#=Y* zIx5he-`G7!^?@phkjN9Y*`ppytPaYVY4n>YXZyY-mQKv2aR>$%#Qb+PY;Qw$>Q}Yq z*J$gk?B3Tw6tcYYUaB*Qnu2#KB{-dfEGi5>iU~+PWpk)nG@zpx(eV81lqpbqf9}1& z^+8U{E>xec+*{olAL$%cIczE0S&QKpGP#RaqMPF_IdW-|eXOL8tQ1ngY5_aWOqVI1 zkBTae-nPBx_{$K^Pgrfoj- zogH;nNI1y?S#%qG9OJhyp!2g(9OgyweECD#*hTuAUC$vA4jiPs5s&fPFDwqKwLb}s zEF~OvnL;cUwcLwC^8O%UOTO^BG%4fY83JD6^Ud{g+*hHSqP#P#G@Z8DZ=8DuAD0%~tKv62wy6|AgHDP^BZ7pIqy<(@ z{P*)*EjaT#TN_g`!0x@*@DorDXqF>BLiIbPOF#kPOsn)}4qkT-46mEsP`;sc3xd;d zE7R_8 zq32UVC(&DVV=OF?UB0wj>eW1>(F%FsFS^5_ex|JGvLA*xLmL~4HDU|H&$l&G8t<;O zgNMFfj%#IaFFeLWaIuxC|2Nc_wVHc4+j+p3*Zo4TeB$O;Ck4kp_lf{W)Jfmp9p=?J`%26ZyEvk8|j-~mTa%NR)uGX~5FYg$@* z4w<~O>F8bj^({*zv@v1BCD+EzM)b2vZtv%>x4#)%K6LtR@?FUHk2g*-TyL!@94ZuZ z!$?dfdFIViuZwbpy$Ftqp$byk*?HgXd}3QuNrT;D;{p|xecYV@X16j+F&KZ z0_|=r>sUW_j%yiB+;I}BzAtYC;UvY2oj!zP4x_VE91CH}lSy5#6lK?;$3`PYjdGtD?jcv0vKhYng^?E-&!g-F zfzR+()wy_DR`N^kKkDsYdGru^UaqubORJB&cox}$E&vxwAo4w0=wmZ;Z-1u9uuR_d zlUf&O(}xW&(92Gj?&-f@u>`J%w7bp5Xx$AuQA2gxK?i3e1aQSJW=pqVv;H_k)8$-R zd)>lK@#{0V8=#gHx*L%f^>&o%9@&0r-9L2R4L*<@M_|eQZchg;K<;?{GcFEF6A=?2PeG;ggaWdtTu0dV$kFOgqxxNTKu% z`U?&A*Uu}ezL#MsuN4h@ETZQ%`|bBeZi%OrHSemwe}J<)h_W)=FI;CSdBog|E^hK` z!7W6!j95?V#6%au5nDX%lN`5N?hroBgUHhl5BIZ!u2w?xe+4BE|>An;RNbK!Lykr?(r}jNisrLu% zl>jLp+>QxgT(*D18bKr}$;fUtc4hV5(xRh^W4+(hO*Z7A^4e?wMCn@=r=13*80*sV ze(a=o_^>)eIYC*I$J-k*p<=&ZbEfl$gkgSM)3UsgA19A3*FIKHNN4AoOc!?L{95H2 zV8poW|K=B~1?^VP7Q-Xvq6TQ4@eSjcx{bXLWxa902hbGm092l9 zHb5?(B@y!3;YFj}6>aAZ@RCZv&!Y&@dcnA^?W zn7Pd0Wbd8hsgiF7$^1>I@p#gTv2kqKwH*$$M}cVbrQfB04Fgun_#c`e^@FLInSb62 zV5u=m3;M~J_-hwLsV7CBJhxDifJuK~we^j* z0ibk1W{|N^#t!1iL#wrlxff@PZPakp))QQn$xmM8PcqQe@zTwf6qFw;yJ|_&;cODs z2Z-&0y~H9$T&}5P7+e}eKKCL0~SQ+Q{Sf|3u%Q? z7DxjIGx)Moc^1LJ86(^)*a>yJ2R_G>wc_?H`m$Pn@q%S!)cxqLBC^rhwJ$0ws%y!` zAQ@Kl^^j4l-v;3^t9(Ra+NrRN1TLba>6h4K2kd44gIPt65G-Ns+rjY4_%-52dH0CX z8XZJ;7`!21z6ajhl+Tjl_^;D~59fP8mjy#uQ=W_h!)gAlOz}3egT?pV{5jN6jjAQL zGx(6qBXo7Zwfy#IoFvLkl_cP4+4Jj*N+mi+1r0H}fF2t(j01UGVzJRTOt1F(T~A9- zs=QxVlfQ1KqN(gEg?hN((abSN$vjjF$xC{#LnelR1;sctlp;$U@z)k*r2^ zsPJX$^Zt?eG0>Q1vwrC}?n^D5+mYAMs zC0XntSlt#hBlM5;Pn2^|)R5cf2Mgsjke`?2=LANn3~dvC#CqE={=oyGa2hC=rTj5U z@Fy`uw5TZXd+E@6+~x7~9dZ5x*JDHN0YZ}jJ-Fm&+bHy?t5LJ1Z z)$pCxwFyif%#PZWe(zQ}Qjb$^RN)#PrK!%bOi*h>yBh9B-$+Jr0W?Y$lf*C7?V(mrqc-o5CE#dl}o?+V9Rvj z;g`!H0UL>LMaBY~BZULMZE8xUUZp&I;m#&a@;6%Yc^a$wiSwe$|E*7QjnbIjQ|h*Wd*WMB?8^nEjhcOr(xm z+u~sPe)U|@upmp&Uizp?hyFsl&ys95+K~evA{w}?76HViTIHVJjG-HS;m1#~ZuUh; zUm<1K@`(J72L=x+eyg}i!JA=k5mxy7%nzOq%SpNO0^eiz zCiQO9>Icy=h-_zVZD7Sx@A$(5$?N{2vIkFQr1IvGGX^I~mA$E=%PbiNTTV4`$=s_* z43VU9evyEfBP@S$f^_7eu)r2AvAIYTu%X;$V)#X!H_M7%C5fesC|~+wXiWA0r>huv zUZ@DvYX`eA%ejNfl6z2ZX;NS03wNE1!2Rr?REo|Ksu>nMt2i1j=?g_g2ih~kI+I0d zsbr$k&xlX^qIfv_%56C?4<2gHfJ=bnlq7s$AH9pm-VA=9$W>G_Xma$|;*QaWGDU;b z$`F)Be5jTh`pmO2H5Jn?hdWX>6$R&P3Zk|z)9#{|CgX6xSAGYH_CS4X$rWLZXTdp%ms;JSf8#TyUnBM%aZ-^fv+93tp;nLK_ zg}@|MURfF(hKZ$bB2Vi?TnTUD*!SnrI4~1 z*UA3VT=*}(`~UtT*$;rFF!0Pj_!F^#qM@H<&`_c0QR_>jDjk=6!lLEnn908?e6T=9qPAr!gYXgqjJpZ3YPG6yN0H z%$HWm9Y@%mePp{^+T7-x>e+agN$BAUO>4T2j+Lpq7zh0;M|lAcDY3w&2119+C!F(- zEhYa*N1q0MrtOqHd-1L!%!6Fok7|<}me^P3WRTsb71VzB-dv^4oioV7Hrn=w4TGa8 zOZx=}1cNqNrO~fReb0N05$h03^v*wZ-sb5s?f-+=3(6(sTY;)daSWua#3;b8FS*7| zx^?a#O}njyxIZ<;l5fT&x0F3)D{9EJ`9oW)YQ2dds7g99^x%1<`fI$LZ~e8twGLg9WL4KZ!Kl z3i^DoBse-U!1Iu6HTs4yq-db#I48to;3w!y`PudKKkSRag)(?;C%^0NO%%eeb}z)Z zjL&Yu%kcgjU{SoevLs&#UKO|Y^V+WuUs%y*XD>x4%IvxWH?JW(l~;}oouYq-xfLlf zh--jwl(7ywPi2kNHSI-JkMIEGPD1bPfaH-abSXO>)SAj^~pJ^Ky651 z%PpS%EkY2cbhq8WKSdt+ebVCt)myo@mqLg``X(t#(hkXoxR zk#}4WsCrdun&+u+IB8Ply*&kdRMKW(jk-b(dg+x$z4So7b|;}B;3VC2PwMWx>=7q^ zDj7y7hw3}y{yFM2V?0aJbfRR2cORioP-(hz66c)Ha#DY5ZD=7$9ji-Dym(a!7_1<9 zQmwT!2b||uyn2!_IN~cYxklo9&($|hoql_gV|eUB_3(mM??CtmsO5j}?MK;)Qh?71 zd=DTTE$qmq#RBlAC0nJ7fy!~K6^#!e2ecJU57JO+)!*cvAvczoKvC+`yc(f6U2_P}GsUUMVZh=K@VnD}QV-ik*a=?hD zIB_w4yIeMqW3UPqe#N}NZ=Bn9@UNo?7#w!o(Q0c|~+_i_Cbyl}Un!vMB#M%5#Dv zk~n8xIbdIoYO-6++Vl}k2VAYSuCb(m7AuP#NRe3Of^%)e3NBx;`dg7ox zXv{0KjtOjD501}07T}VZ!JlDxOmXHUqcUHHr*v1}*t&I?#Nr~Lwk5fq&)*}xvwE#( z@3DZfL0HsUcv@PJgGz4?U8V(jG+$%UyB!?`^!^WYdoM=>+41wl7p&J_SoN=Ju+=GR zyd=iH2woWus^DlosMOa60oh@ z98~@q-A7s*Z_2j+1}d0mKA;r0QF{yuUbNZPNb865X5gqq9&qD3Vf;Q zcsI^2H!a@Mqt<%95-PE{^?9Rk!cMQJx9PU?M?6YbIaz{r*8I5l#GUiX{o6czW;Hdg z&R2+ub5r*3(KYQykECa?&pf>~GyC2C0j`ohn>!)^v$p-l*NFbHyXDL2hO%rYrrkt7 zTL!-4+~P+4{J?eJEd((`)R zuTNC;prxX`4S&W$iT#a*b_nqt20I+G&;b8rk$%OGpc#MFd@0*MAtPFdTp*BxotpZO4QD=Hgl8fEP+*TJzO<0Yo;5?0_up81_GKN{n# z@ExKUop{OhL{>Lr`C$ zscdqaSOgz!TUHenWXfh|%D&X_FYRiUTP;gqW{~T#HPy;dbMB$}tk^ql?QCwojNY0k zGWSGpn*?A7+J@>{- zMl66?X`IB6GgN{vq`BL{WFc2R8Z*uA>DoDVLqUcQw zUdxv9`AyylnzK6y3)t@v*9v|^05(?GB8UXC&@_|>r}_EDtzBbm`;?ij^BcvPX{hFXq~lV}LkUDvYDy=s>8UFpJXF6I?k zaM5kFl=|h_Y+99)@ld5u|-o zP#TeLQBjdlx=TSCq?;iP!lGL`hi;ew1eETE8AL$3n}Kf+`n++@dC&R&&cE6B-dC)( zu4@UV81j23KV>>fv?|dlrDyDVB;lB6`ef3y*zx2dScqTviSqPqw%4{o5*Pd|jrT>e zF=KEc#HgW4{-4d(xYmDQdH$Ze!4_1V;y1i^-$l>qW9J`h_GbY18R%yPLcdt2SOYz` z1@(7DPAXt*6V5_P#3+7&)gByB3@)6qD;H|cwR3d~>Sjf!MQvl5bKehrmu_@Ose|4! z(7*h7{sNB*HOX+N(8JT3spk17jthFq@ja@A{R%-pY{*PQ+$mC@8jSdRnRm0`cq_V2 zkVx5(?kR?uW?;-5KxH6j>vK<6<1mpakG?0AR0dHR;jAEw5I=sX$#T)=QKCY@sRq=ouj216ON7u5l)@KxU8 z)8dtS4*T31O*uNPuvN<&1$ZfVIq0Y2tOstA0L|7hts7YG5mVXt8d-}QurSS>y2qMB6j&q;VtD6goiEHy% zv_zCvzf@n{KMEOqb+Lf2wS?>-FKJ!(qE&x)b@H)XPn70qq4|gozYzRBju8RmH)@ZK z6)#QC37!9q@+E=uQR-%%oxZ7E`>b=b(R&9w~U{AzN*HOn!lGYI5B+fdUyol$b zM%_)a`-^p>QM5z`UG1XP3dFXbY!n)-8jR^ie`Ym~Sn@5l%h>l#?(LNV(tEXs)u@Q4 z_>kd(M%N+ijXELKoEEMBR1b3jh4GwM5Wc{2-h6FYNL=kc$F649sp+jz;p!O`QS{4g>^SX0qIJCCMd=z-TuEa2^kdTab%`jupoXK# zqmrvmgRvRDbSX~-QEwY6a+a)ibjZ)>bSj&PsdJr|>o09^0&=ThXT|kb!Eg*aFz9=1 z+OW+fB()RoHf%$2y2hA1MAIx_ed&Zdc3*4)p?PA?`(dGBEgpYts(=KtT`!>Xs}H*Y z2$TUcGZxJ;8{rI-x`VJl=ZG4M$Iue^FSOqH+=-d=5%%|g=e6xt`qyZRC4@-V}T z;o`?j-|tC*fVgrtuiWrB=_sMCB+`K*>k4Gv)4Xh`0N@k9XEOf~yyx-YKX*)&x=}-R z)1LQ%2xR?}r}TdOHp>@a7gNn`^n!eO3$@R1P4AeH{H&>Fn*1q z%+8SD8W|a(3i8f*Vx!Sb;sEC?K3`p2?}BARtz1cR&LAF=6Cl9Q}7)^7-e_rFo$u}hAzf1k7J`#J0A4Wdd*S(FhTRD1261u z>pa_h$}mkgp-J4}LN8Zd-;#=6d>^ddhT>PM$8BoCm^)4`j1rtMO;Ovt&!eIj7P#}x z_vUN4kRrG%;~i(r2N>$7oRe%O*ny+dH&M=sX-z8F{UL3QhWDLug9j0&3_T&IX|1?& z5by7k72(~iT&Ki*92l=`lBIbZ?tud-Eq@?!84bd~|F2*SU@2Myl~S(2WkEsOJ35fF z_;HB>*zm|??x)8dKMY2>@)KWu0Z0lx0}d>0AqTjYbW4ul6~*QY;EugeN8d0u>IzlJ zrgiG_lM2qEn1qVGO0wTp*>EzFqjk3r)zum=P4Y4>^&S_SS$UaOJ^h;AlJZcj)#>SI z<i?!*D=k?i8(S|sW~;K$Vy z?-LP8?~`}F3#30=q)&Fb)^v2%CGJx7u_R|hLa8FO{)S$Ajs8EN*O(B&*+qtZ!$?<5 zCy>i2PjgNb5KKbxDj<=fyhd$?8pHlzhCM@o%56;tM8)cg?9EGw>i9|ezEOU#a@O1I zc)0Nr;qGa3135cN1v-5s*N_7j=q8<{Rl6qiSj0mDX}?`(IGPV=(W22+|K5C`)o`|< zc&>_<;z&n%xTFT|aHis^B#7^$Ncl82NyB3gdc-Y~e01DzT8=W(UI!>^w@2Cw$3{VK zZ_on@-q~7l-7XORPI($M(#|bRS;M|+6b*%hjy{{kj$vWzfoo=1^Exbj`9Dt;V_B&t z3G1=oLIWE2GsI!O*UtrMHV2uar@&--KrNe~&UG5kZ}bKcBQEcD1U}y7Yh<~>5oLJb z)|*0MS>5Wyc;RaJF66q@bfZ?T6m=;Ta+gD31;H;f?c(g*Mr4XM1NG$^Z;)oTe8SHq z5Z(|SA20B4%5x8MvoCp){5F=!Q{Czaz*UARB!dF z$9g;LX4BihWlQvQFxW?(NqX=)uDwvj9ZfrquHIWWUc1}o9WSx@)dBc7i+B#1$o;I# z=?;8@2qps4k5(r=iK+lS1X8ncrS;^Au(*x+F!!TP{7n2!GCG2JCD|)IMzE zaguqt72f*B`s_O=lZ+GmEGsFtqXG~pEx&-ou*0M z8~#xrks}Z;~42N+Xr>ju6 zR-7VbWA+`(+dCDktu?2|nppPt{nDyuGvww62oIM^y!)#a;N(a2bwo5W$WIU-feCH= zqp+Vo{J(?^aD-x#`JLvgTgNn}#^wV16D(S%TWeS~^MPUTbp5(82WC|L@dtIH ztZ$zCjN&e(DPK%cs)>XE&cJt;k>1@2ElHhJ?~Pm}T;WNmik*MB&Q#^|o&mv)T1Td? z>eh^QpJPtUxEFcr+E|LA;b-z5Wo=NwR`ZVK4+BowW?VF6zK{t(1KcRX^kl>j8n8mt zmfH99RQi}6>l(c1$;toCg%Cowi7*EN`&|Bh*UB85vam({AKAe|L5mpZ>ZhcuElA-^n7GFss_cG+%eRLOBp2>eCoHJTzg zgU&cw`lWw!t@A+4nM#B7Gkw6MVAeNR-NQD#le;`*zUi~;9Q6Ta(9?C8kB2)XaX!ma=u;yD?|ZL`SRzj zB`d=^uFCp37x#nHkQbo2xlIMC7{Doa;#;cn-d&LU>W3UI7OvxBdbW^*1659F!^72; zZKBD8D$m_$OI8Fk|J26mOGvYIQ;aqVkx+h43#nEo+d`EKAz|CdAe&sKF1BFD#Q7gKyfak(ium{-f!hO3Mc(e{lCyIxG zt)JayZ!Hlm%O5>To`KDc8xoffw-qBAu1lZLo@1G(Z04k>ASfjHHJ#D#K<0J#Wy}8^ z$k@rgUjDp1)J&Q99gbP?ecyvR#MdsPFADr7x;>-yo#!=BpXeG5Prgm|L%!o8%V6C& zY^%Y8Nq%b5x!S8iGb$Lk1p7G1zlTI>i*^$DtG`|A%%x#Fd91QQ;un)=VqZaNr8ZDN zM67A&1D~^&i_TiQ+kU`17BMtq&^-Os?u~iDP*Cfu>!X!U#!s(xia5Xgw(dpbvmBkh z<>{2T>xZ&Zv>?QE*Hn>WE}N@hw#|T0&2qP(Y<&GO8t$>(PjaH3rY>u+EpK?M$8C}N z!SwEKc{~ne8l7SSF2O6n0f0+j`ya55e@q);v5sbXwSl}+fe*F5hYDK_zB{SQXLrG% zKD9ac?$J-`MbzRnjv12$LaL6 zr0Q*1Oe^sM6{(wQy+Zrwg!bM%2!eZFmlVuhIY>Aw6%Z#yKrseq=)XWj=rEq46zobg zy}7a9%96a(#Qxn5vuPKtz%YH4tAQHKQ;NUC7I5bhwWj|fWd(Kpy+SZ+^>0W|Gksa0 zvf=TM7w-GI>+eI>>bWp#xR)16@siwQMd`+M@StsmUkLCDMPvuJpw1zz8}1Xj8u%4{ z$cuXSYxJwXZ{B{EUI| zUqy#=k1}4p?Pix3IhcK{O`6&_*c;yFaBsBI-}lCT%ng{~dXhVs|4+o_o=;^u+EqVv zCR+lw^MbgRQ~8AE+mBGw|w2^ig z2+}%e6N}@Y!+`gx7KN}FztYPhFg%Kt5&*cn4rKg)!AwKAUvk5leGZ^-ZH2+Eg%l9r zdOB9)v%0m`(qr0lxAYumO2=cW9|W1r=a;5ED?oL1DU2`){M55_!pxAT8c#Z9Ou8lc zmK7++2YNfkP0$|*&KJaUAOt+86=e`f_1MX=ETIDd&vkC~<3zC@U?o?8st&9>Jo9Jq zEUY`Jlm%EBK)@6_HTHo0hhAm7=J!j24rZ<)wHYw;DXo#7iDdk1l`7eM8CF{lWTmaf|bC z?hjonn_-WnU9w{ym!AC9<-5rBrwk+bK5*a=SxFI#$u9@?byFTNAA!V`w0lSBc z{ZuFFvl0~5%YN#aza(Jyh&KV1qF>3`P$(EOo=%lEmr+UnYj(N{KF#hMy>l$Ro!*Ub^}(>G=HVz? zlsX6+^{na18VyioHJo$T<=6TYTBx=PRJ|{mx45Y znjfRN#JDw1H9pOQGvl-!`l`vXlg<3s$qOCs^jiXmzKYyMH}-oq!w;%819R!EY9k&p zpet$Irgv7JW7-n6BT?m7aWDk+r&`Mm71e6T&RZRKbRDT(q+N(l3o+7p%4fp+%e@7) zss{R=*C6Pv2oJ0V9E%W9S$_I^PPvIT9)L%`sWhzAO@;g&*hTcaYsimSeD@o| z{l0v|)_kuryKF7^yPOn6lbQBfz&W9Cdj*P@g!5F4KgtiO%W%imJMMjof+nARb1t&c z*l1!p@1hY}@zBB}WRah0rA}(A$2Xh73*TrXM58ju!aqEdgeXzI&sMPEbQYFBN zVecMT;{cke?BJFgzxfAa=8BZ@x{{C6J~N>WTaFPOg(6#q;W(iFa;MpFu>~u6t5U<|}5B^L6jh`3qiYFw7Kn;DgQMu5Fx|gldy)YOPiiC>M zp4oRMKg%g$a$h&+yjXp$y7yZg2+wg<`1vgF`NwVgR(1hoP_=!NPruo8a4)df2#2@v z-!$@T?rdd)M9K1e-m@Q-PD|geba6??stcmE`PR#>D!Icgv?52k>EYurq(DO*6APZp z;g%bVtWgL*At5YlHB0zs0Sq!mQyxgnF*5(QDza{=i7lb0JDgnS}9<=0zo z;{}_1Vd;j12#kM~kSwdX#$F`6>D<}6Bf+;KUV7K;i)hFAuY{LCxY(#%K>d#wn*9tgV8`^riGq}#!r-0aw zOSoAYGvwDMM4e4v)MFAC%x7ywRmJpenE*PG*~Q5~Rdt^$uJ{IzJeu|j z(~2}M>bo6JW2;e(c1@uyDyBzFc9nwoxIz@MLvvu`#+FM1JYDNj$Jci%%K>XX{GbpG zzrNaFmesI)w&&OBH=s6HD+RHCDz5_mFm@>cNSeD6p)1nZ|2b6tU*>Bqwf>-YLMo^f~g;lQ@79vO4aUtk3b9yiAmj!>6=;>6n#WnDWvk~tA_ILice`A0D_PAN= zUX4@>a31yZN~Ed6lRpdKNeq9}VztL*b?pcG8GIs%ar1{%qsA)w0myEB2(GeL9YF_m zwOEn-Nk6oae9Kw@pG^TTAl~MSiPB@XF%JR*GKy3h{9E_Zt`M4BI=KCYtm0PG7rb6! zm6qdfV^mbn>l+ZnY)WrqS+uZd-nhMJ0x?GDihOD>yhFhs_ya`P#i|`Aie9GO7@4WQ z#&#fn=QRFoL$PLGdHQQLd*3Dwq^i!81>66C&WByi_k6)FD2q6>fWhUtKIo6ZWd<+L z@B2)QTZ})W?paXyP#JS9yxU}lxcx)tmnCvwyevMIk(X+;R9us4^iH5fL9-hUOaK?= zeR~edL09Qh3S@L;ZzT3Q16|C$#_A3EHma0N)d+2?eHpsSWi#`F{2BDldz8w(G>u>uvp}m5Pd6qfby*Cme%RI2vqCTfh z?$+w*UF$^t#EGhkJWvydh|zMY6bcij7qsQC06 z5^|5j>!dZ&`>%XkXQLRa+uZc_G?652rR?MU`r_^W{K|tA+RUM3EtwMacF+K+Ad*!IuSqB_n zrouiZ7~*4JYJ_2iGA2V@MEZtQ!wwWO-~96T3}4;d?B*xh*f>2y&EZ@8cg?SN726yS z75y1P!S?=vnp0Lok9$teru!Tbhd*9#^8+EV)rc)YXq}8v507a8a@e8MMh4vhF^^^~ zl4DS0omK*JCP?Ca4SePSX1*d{-mAt&yl@VvKYMrWvzw!y%6Ifx25hxUW0Gw?`uXDl zTO<9aI0KhP-bZ=6>U&Ea(Ff{vXD$Tu7#T*CzF4+QXX~xXYRuw?8AdOp5mbjkF%=Le zM?W8Z0~7s5`yNXKTdUwVW4mL2gv*}0k4ZyVo0JvVX}Cn1d-I@`9pCl?-vi&1(28|B zd)voeKXWc(4*~lxvGquH^WP8vO~Zeg=Css0-y#9dhrooiDX-4? zogxYmt}F}bUvt414**~M&!3&u)5gZ{85$1H;@_pm-(B8N5q9I_xu~I;K2USc!U1?M zAMDcZcALt#<*O;N+J_JMW!14zjoPi2;KB;ps`Tksb2&E38deXgM>B0I#^hDUDadgn zI&?W%BA+^=3BvL4{U>ajEVg@yNrXuHv)}wO&OUy%gsVrYHTqoO&BitPijZZq?by~q zQ%gJ+Yh&fm%+m--8^qKn^6%_}Up2ta;K7#e$TpP6Ae;XJ=-t=US<7s5#A}b030a9QkkmpIz<1|KCT}&x84&|IbYXUmD&_dk2DfQg4guJ5voIpk)-8=IpTz zfFV_H0*4kvbs!X``yk_rd3*_n{j6+FrRGht$(M^^7U&#{B8dupzFMe%;&f8>ge$u%ZZ3EakZ}vQI5&Mg5g|;=@QQhB?s{&t~*~N$P3uL!;5kM`RD? zO_~TD+jYZSLv7Lo^wAs$({*tfgu#`v!d30Fn{khlFAQp}x<<(tnj25Nq7?K!tM^^A zojUoBdzUFO@D=b=;G+kCCAjR#R7-rCm$7|_TTr{<|DL&}ofrFa8#Z|jh9@HG1kB1! z)o_!B*2*%Wcagf|$y+xjGr>Z^{TV2zIBK6W{v$`KUi zn-xPoVI5i%ux3xY@wD{=hW$B=tDdE_x-&UsTlUW1nBJg6VfGq!&m!laJCAKd|HlO0 zyWxS@`}xRwJ31-ueIW2kBP((^&`mO6ExPt?{Q8EXtkLpqTO4S_uDFc45w%gkLGJ5Z zZb+uUT)WM^T)FOInRqSsBvr zEN^{`0VcX;3b?+&CBiwb#-=)1PpYS=)SIs#m>BfD+&{%nrBHsAgJUEW+KL?=1OGQr z?C;Srm6>sTvL3>6qotRvg$iE=*S=(&`z_C~dwv*4I&!cGsbuHIyB8DehiNnjs2&(Z$ zM{LGO2z}a;(yWmMV)GH7-P8|vCG779`7o6vaqmpL;=Tr|@*3KY8pqBS*SQWjA9>o2 zrmdfRKgO__s%%sd68edbQ-%@;&htpwu3a!|6w+pbvflbY$r^6;2?lF?!x!B|dyvy4>{2|U)lx(Lu z?&`-}l1m{`{Afa|3UpX%w=YfZMc@UBJed%YFhNPF} zJMAuEH`^w|?IvVHm|cl+iSSHps|Z=M&}jfiu^*~WcEWFBv}}9&j!5*45FZAqbul@F z+=3DHt)6N5na*5{m?DZ`)R3E#Kv&#>9I?Fa`#^KW5Iy;+aWRbs(n;8dEzPmbXmiSgYe&GWGSUo4Q8|rROUQSLVG54-$xUr*y_YENwUjOB4=gLS}lRCc3 z8x7p-s-Ym^=juigd-+!Jsm4aj#rq6)4FnBcL~m^p8<5(!$)gL5Sl!A*2h7M6*9fmh z-{OmjIpT}vF0~}FO{8`gow@Uqb%;9mO_f1xK!cTBDE{%0kQpvlmP3V!fKoiwfpgdW zTn>cd_dZNT;0O6Bo z4iEWH#X2~f-yRkJde=d*9$3?k1s8VK>r!cb7lv-Zg|C)044I*Sb?kvC?ZQB(ss; zn4W)e#rXq8-Hd)52O~wek-9Bzh8eG=lds&hHc}kTAvA5l z_eo@C(|tnvtJ0ad#?L3wx~F&?Zu3EM#5^(zU6dG=L5V^v%u611Cs!fHW|`i;B8(w{ zINo{e!tmg4eBr{qJ+Qv(ATU?Y9+WMAmKR~uo*)-kf%;o~UW7kG)6T8A-tbDp@Th6F zq{F4X7VtD-2thhhyuB46Eo|*dh-WLpBI=JUv?UE`qpI#7JsCF zkxIfsruuH<$2+fG0|aj=J7*pTn9TGB=NMnSiIfu1&gfT?%)2p8H~e7CMz?1|C@-(E z(@CB9Sn1cu*GaouFciUTnPQ2FWZJv~dUKq8*z|&Upig};ef2op!Y$5Lb#;GBK`$3G z9_88Y+>?RhE4&kO8WK|G*dx&vMWG})5Vdg|(izgXNDBe=*}1%XXrHfy@B(PN)kgjs zl;-eHC=Cn--ij6THM?(k6qMz>w5zJBlZam^gby?K3vTv{+jWNrKwzE}&`Q6Hmu(tEYYq9(Sghk`(^;>6E@zYu_B>tD7du(x6utbyd8Nat>i()DN5}4ib_KSj^1c9x#?*HxEG4Z6j_LGC!`pmgxMh?pPCz&6X(6C z$TtbEG_7$BGAJULM?;0WM-@uTnGQ@yb(;Go>dC#X5;-F{i)-M`j{Q3=FWodMV8^$m zC=*rVAV(N`gI41z82p;Rs%u@6u6Q%~h$Vuer&cz_kd_x$jm#Eu`nZ2Oet*eP+98>M zvBm_2Pp=OK!Ud$KS$~V|)E;F*evd1W82*=~$mbUxWPLDgQA999oy)H&ACWK;jo66M z;3>@Jp>n(YO}xV%_zLps1|WGHpGD+C?e5r4wp}2{OPVup{ge>sy=L@J9`=*#Z z#_s1|AGd>_PW^%O!G-<&S;%AYuW?GKa1x@|>af@fp;u-KP%n&m62T6+yY!At(_{KF zx{o$92pdsb)V4htQe-f!d6qKNtvN{sVcZQ{L$B{-KF-@)zI}Ol{*8s3B;7;QHYH1c zA?Lj4+vjdstCHY$@BIPO?tec|++b(z|CP9pKIV}wXzrBz9wkisu2s>?A^R_(DXHAH z{5A2Qwa#d+Y(yqj)%r3R*z4#TXU#RvmK2%e42 zj5w(T(J6LoZZuV7Zr{R(4_nbI3%MuC_T2wmIO%E9rq_FQEc z6Mx=Gcm?Io@{nG$C8A(o=JtlL8fZa<%z!P31=0RVORe((HKAy~lhcCp8(%oYDE#33 zPbw4L|BiLN2hEoXJ{B^>(jI^0g4sJQzgIqh!mI-DRNg&|5;#SjMS?y~V`eQU*3H<4s-=urhc*xZhKW^G54%0s#zvN1aHG8iYvB>W4iaY1J~dJ(Tx|5 zoOP~^NYl;tD!sNuDEZ3#MRj1MlRwl8r<`<8;&A=d*Evp@m(We~*z zzx-_faV{cO8T(VI{yC8UR;m89tP5w+AB^@n;@1~*v;Zd}i;e;tzXOodp>jB^8!sRN zctjGWT#W#ADtCs$Bwv|`O`dqeVD+{6Rbm^N#SifOvxKB^w1h8U4@5={W)mOr&5Bxw zZLbd69V_Q{>Ym$JNHpX=o1eVOhtHpz76JVw)E{^kCHD&Ejr+X2;vkPr8wUX+>nLo8 zv&qG(o@uFf_u6$72+c=S27+6DKv?ia^LW>txngyKi0Jh3$JkG&y=MnSE-P`%L&aap zu30%l_u|37Q=pY8h5mo<0841HzSC0v{^?BrLCEFPElL?N?chc2-e zLDjYu!7xtD6a>#U{u2*~YIEO9ySk0h#5SIqghE}dOzC1pBsl&|@@SnKB19=_M0Ark zIfEJ-!-9>r6AgJOcQdmF%JJbrU99*Ph3dntq1K_EckdU$+e9-WX;b|GoK{fQzW(5t zt<|9HLU01)XzF&bO7HrLIqK(-PvQ}Y+N$f1@tO+$)3)T3;)vxqad`I8ucytMC2jzN zSiA6>0whVgg%unC`e%+;1T-nwpoNvv0Uu}j%m0|m9`y&m=DFyU_b)3a4qij-{Oncs z1QxN{&CWTDctn#cFL-D|^=9;Qp|$lAm&qonR5pSE{S%oYR+P`enO1S-H5s1rYE#7y zPdeuZ<5Ua%J8`~^e)hAeqY?{Gr(}6YLO*-m6>16k>SSL~EaY<$|9FVlWVmLISf8A{9sJg0k%D1o^7OG?eXv>g$M(Y=qiozI58nqyt|-M z9VSV@Kto{r^a?)>*~&_ug6|tYw4&)+?&FP^WqYcY+#huI2|~|$tevvqybpD7qn7+io6kdOYjeR7An?~*K2m5=#{tanmL6s1r< z(WGm)!RIyrpZo7&$ROT71Rqu%4(if>z1Ug-Alm0i>@0m^-~GlbDY`Wf4AvOkQkSeH zfH63c6HV4I?KeH-F-%`0!4onrWJMy^R%xGtnk1PYW+X7<%a+S$#pDyKUXIqrjkxDN zMkiW&5*+co%|kn`PwUhco_1Ya#?TNYs?=fFP(MEWNt=L-G|1+h3w)de5fh+@p3E~fWF{dHy4pD=v2HX3 zW18=~K(#WTuNt$jcJ%Kc9eVTxcJkX(~_T_xg^#oc~ zddtaNZ=!&FZ?{f}VPFk2y{!J%hWNO0J_n-k6oRSn@Y#X+1gw024{S-tV*%=t7FJAe z?S1yp5VgB6mBvZI_0y4b;nM89DiRi6iyyf22T>axS&bZ5*wVHLc?f zb(e#x1-0CKFoKQ`;*vkjkDPhhD$(bk+4>ai83<^3ddcbmJa?|X+8P0yb;rG2?V=QQ7K|;is($C4d(JLb71@jd`T0zTaPp6ioz&=`X0*XlK zp1pSf?6~SB>xX7Td)&S0X6DMDhc7>sec{+bBoNJn`B+W*9+-Ejr1}S z2#SlKc9SvLV{PKR9RH;F41j~@aT(|mutfZM>pXuozY(;|NAp8tsvQ9MP9BV{><&M) zQJ@+XV%iNQNot13ugjvflQO|#(&3m~q-u#e0~uqTQ%SR6W=r{v*CU1AmH7UO9mYTL z@G0w4i16i$Piho`KoWHrtwJ36C~ zY|5B`d$DSVyKyBQ+GBTg^Tt8G6?AfoT6QistTeZ`dyRUM)Dh{*GMMH2)AZ3h>&-C( z5jZ_Ak_&2L3No%H5q{6-E-Pq9p4C}pS)B&V6?e4W?NLot3Bjg;*2l}y!#=dzr9nzk zvp4A=wz-W)e& z=8UMUYsK4~NV8KeY7E?};Ji7S(}69@LxZc@?#I1Vcb)x#_gW0B33pH5v$}WjrMM;t zZ?j59hFOH~kjoZ-jgHW4EQ=)PsB7RRyr~~yhwd!5%i>~eZ8@FGQE!%Ki79K>>;$}} z9482llFnv~ZBWd#XLHYKdpOzuJXX+dq~5Gvx*5uuXCQ4TnzKTmnX3RS)^_sW|@4PG=^#O6C92 zz<|IPyu0_#d}k=x^RA2gq+wIiZpN;K;Z8Ea0@wgy-7MC9O`K}9k)d*Ja$-w+-2rWD zMJMu!R3_ON9kw~95nzW=r~CA-7fEeXC-Lz90ZD8hM3_{MW~*SIzD|B$r|cX z|7!h5h9Gjk|E<&MN2j%Z`aw?@2l7*!ZFiaI{2sH3d-nsbeHl$M)uzF zs1n)|ktTK`PqA!zcBok33Q1mdUXIj{?2PEbj!H2woVT|e(R_uEb#!zBJbClw>KXjj zs}-ywz0!yvRRf|U)9ZWH&LVCT<7cSiA_GM?+tsrJ>v&JrCEIg$7T`Ldro^^{|H{YH zW4neKb?SorhstL_aPq?rAu*@UEsMT6eZkHWwQMkk1;=krB=gT4aM$PXn)9e}4wECXc#r>8H1qR!*(cmt_<~ZZ!Bs z4sKYkhD-2UiR-P?4SCtfAQZ1BTL)Z?-8g0=*$_|THbe`5OHc)Mhg_SgR(J2@P^^R5T|T-lw~dmrWduy&u@o-7yrjR+Fz)*y>zE-j<-AU*Jo<&^d6 zmR*j9cl|lr{f8NJEPR2-Pg0i~aQryeYGD;Uk2I|f^BC*QF=ux1(G@)k0qs&{bIjku z-sqiYI=}**Pqt|3o!=r*A6&I=#I~Ke4Ehq4U*Mqp)a%XW&@>P}4z~RB;KQ_#YfKldIn0V8Rp=jk z*FScDaWF^_UAZdY`|1UhC7!vvTG*R#5c#n7a=N6r6kdQUPd=#4-rv4m8;T;j&+*4~msdQ*f>=97`5b`Px?ZrwazxStjA!%4XpMe{<@1Kt6iHbU>$ zzZv$DJi z48~>3^)H*`PkU?c_iUqGR^PjHDTr4*+GYx9oW!jb{c!6ybAV+@0auEZ9{*M}1qzGe z#-i2DV!K=EVjHbmX^_V7kt&@OBkGru{+?8(536yS_<6->606=4MA*oSew!4q5-`Y9 zTL{D(8PM|z*B%gb4U}Q0KuJ5S#7O}c|nA0 z$gDw4CsL-(Jd#idGg>dVu{o@} zYu{W4dO3o;6T=JHOxWm?D)VjLzrZ3AOY}#(ZcsEV>!|#<3h%sk#`DKG+sU2g|ZD<-3sQkQ)e>PD?OAR1Huq{-=l7o zR&WpxJuBcC6wO3NB6%*pBjwN5uVZfoZvHb(gIjVARRP^wAoqEeR-f<7-8oWa`Sroj z=M{#1;Iw$C(|#NWufj$Hu*Z(R#Ne7((L(W<*94r^joJBe_afEloJ}IHGD# zwD3c$$&aedxR|j}yeStjC)nbi`x#7u)RtbTG#%-M_t06Rmji8zqvOgVNe>t*$Jc+o zTRSXuU7qjJYZ1LQ!z3^!0r4Z|JV&1?UkT1C=H>Ob+*q8vzqsSR7(m+pozzM?;`r*l z+MdfE18|9CNzOz^-r;K2RlWBVE1&ml4D&A6S;d#}wMo8bpkCnUPWh9Wu|gs)E&%3Y zug*5rFm}+;ZAds##N%&Zs}IKm7mtS;P!0|vZo>3LE0;dusl&3u(_Yl-8{&EDGr0x7 z5e225)u7W87!v&pg?i+$Ak0Kjep#go7ZJO6pk&RW)KQUGd>?}okczWVQ_+xOH#?!x zRsVyoJwY21=A@a|(>DM=U8-o=oq$hi7+$pdet=W1^k+=awQ23zSbYYL6Uu zmVd2{jZK21;5t8wpxC&r*2tmq_6Bp_$634&*@rogJ)|jdgI&hKCCPB)(VLhb@k3+8 zM>z1;ryKSJzIK6!f)$zk?FO*x?C`I0P!L=48h-Wv$Ynl^=3QKspEfvqLwZx(25cDZ zz=JVOygK>I1E6>M+jwM?67gwF!)oCF$1<1_khn0KEb(rqi`|F`4W5!WqI>aS;<@M8 z^E-1Ch5XgHlc~n2;b}0_9FTyc0HiVryI+($j<^#vFBi;i(Q7Be0CH)*+V#HIu1GQ- zSm5w8#RPB1jrGi<>`BzS_VaPNwK&IsR>wzI`g%tjW#!-YeJ7CM=K0WaxCm~(88y=rR1sHCS)qpT4; z`UqLhoubc>GliyA$um>Gfa9OV<8+aAG%WxPdCADV53yE>z!>bT{xgo218MT$ioupv3VQT#xx(ju4JlvoeiV6A-MAU0odwp7WO2u&?+{ zMgIf(jXtmb|Au}6JUr{X^!0}Kp?UJ)q3J@f&o}{|3osLMn6ZMwn8t|-ptYTk!qs8T zO|?@%k)S6J7wstJu=lG7Ffg(LT>KT(RVrZbG~5v_a7n_(>xO@0s?yb1p8&QyBLc;; z4YF!UamY_>t5iA*D3?3KP#jc8vyjEfPQx0TpLdqfz2_@tkGAA#JbdXJ3*(i;t}@?HK>-aqs!=$TCY=Zk(aNZXCTr1%f+A8c ztndn7k#3eGzJI{v&Z`iA^GQl;zsrgvhGZmOtKS}Fx+nCzbwoEc8S=I-TXJ&<;aVw5 z%@Xs6Tt6N6gS{m`W}}yn-+ufUUAd`-$vZjXPTTCvQ_cYHAoe!uTB{?sJO>&Lwe#dy zq|=p8(E9Xh_Dkr}`YWgB2LJ{nQ#)_JXggbJ`sg%Yx6@b+V#orIkf#sH83a5Yfj9w( zeT(8MtUkxhqjVyt-PXz)PTwg% z%#-u&^DbtB>9U-e zzbsm>D2~*D?caI-kFW2HYdY(?h0r^S2uKkI1qBh1-kV|t3j#_a48-{DUr+Q}$lFCIkJGSLO-R&$@xYdyatqYhQ<+ec z0LESgLAcS5V0WzsRKO!en0*|`2gMusTOfCSlTme@%7u~Z{?I*b7ygelv$bM_H2=r?p zBPK-)4(~-fLOYbWgCxG&G%3$dFs{ENdO&(#Nq^WojV3yteQPDI(_dWI67b^>=YA@5 zZ4#-ULC7+B=@-JDS79TRM_8zP8^(GAczY3vz3d}scysuxQW63?a^8{}-;;lr3<*|J zD+fx(j*Ztt!hqxHo;DXfi?29977bKNKJAv}Nv~G3&67yrFJ+QE7o4~k7puQl3Ul{thz$2Bl zsgy(9@2#(y3!v~i%_e{T#ReN$Y!PW^5bc%r{xevQD~djM6`i$7)pMJBSL)>n$k(MZ z^Cm^Kg0=LHw<5vUL00Xpd9kUY>$g*!b(t*cMfo}0AOD0-g0JlHYv7l=zy_ej3o0P> zI7I6ye6xcj=Y<;lzUZ6WwSzz<{-RR$26ZeK^kJ757e`@j4*lZn$Si9R5Tx}--wX|q zgWtL4W`Tp(QU+QF3!FQ#s8~6Q!sbuPrcQ=CUz1dTpU=K$A)oVvw;=TibpCrOlalqM zlZx*9#9JB|ovW7?B>C8!O-%K-Hhe?qKMG9B^bhL8t&^j*5Bk^$<>L*E?=V7Lr}?_h zYj*?;$WG>#4C8`16#S9zUH6*M3jwFA>W6DjeZoqTNd#OW4F>3Av*{d7z}sT-PB$Ss zBJpFV`HhvhEA-@lgAeV#!eSu7W?~9+wTN-;cd)@Q+iXRYCp%*&OpfSVlF|>TTKE3T zSam3Yn#x_bHo#ArZ-3OShudn39QQ|6=xE-A1elIE=hNF;+dG*1m*3V87;BkR_K-?l zLZDEcTzqIRp!~UD#XbH)DIk#BHI}SSx&Tdh5PC|lk;CLx?8fEqM8aLoX8X%G+wmMv z=yqzx+3p1*6h?zoh%BJvU6lH&+WDmwmsffxzOH;5=iYnklk!5 zYNDEOk`!~TV+MxHmxhsg!{u71q9hDE^%FF}j2RS>!`aI}2LV!OK)VnAzxr9x>~nK| z2N`C&OEH;gR3LT?i21W}fRWICNsnEgo>sY5>Yb`M|=Y(ynVT%P3C7EoWw zsEnbe1RLd?&J9{e$Trl-@n#EtKe^8O_{PDb4|K@=mu_M^KbqyujO{yJWaeNOs5duw znpS-8L6Ev;irzdF+t3rqFHwbPPo9wic0&2U#K{Rr^;Y39&WZb}E@9bkTVbi@5h6p0 z|G6mz36vd)y!LefN6QYso%A6hIWi*orm}#=pjjsuS=BE@&*FkJ1+C|jjNO5x+Pi`p z%^L5@GLOtMs}waFzD|R~djU`x>52UxQcx0B%i`lzdTwUE-)Lo2U3KZ~bt#cV9i3E$ zU~mKjY%`q@e^iY5$wtSPRa1DhIHSFmI}Wp4wtA|i0wj5mPb$H}&Rbe^*?k8|X)n&z z5Y}G1t(TsVsB&ihR1kPIz3oJ(a9^glMqH6s3tN&!pjg0T})YxNMh|7n3IvBw>Q&nIj@RRP8*ykKcfmkZHGUvFRBdo4=uMFpPyIJHeCL= zxfnG~L)Y9@eb~y87Rdis!>{>w2@yzRm@&Zjo5OU45isB9jd{*ll+t49G6ATIWQA?g zngJ+g=#Fo8Mrsbqu8tD6uo-R+X4%B{ zwhT2VE`;<8PsP=dW}&u;@`azSlf(=cy^tc@ptBdeSnh!vhMMUCw^P7V565_e_nUl~ z8)2`6@pdqkc|rU_t^399LM!A8p!YW3%oms6z3R}Tau6DCSLO31V}X)%CWrLJQ)JH# zqq;MR%A)mt+KTQsj5_Dm^~tb*K9oqJn-V2u-DDX5puCsF`+Uj%lmD5p{t{Q7558o zdDz{9%qqFtH~U3^8tS$-ASHO#aA(7mW}&`&KaQ4g0lQ|@$FC=ryBA^Cw#Ak1T%n~; z)Ms5mgJ!m96ZYF*b<1k&2c?MpS8JaaNf89vKZPUme2iQ{!C~{(c@3BFzSER(SD9zQ zvPv8#HB+W#nRvHTF5n&ON(QlMn1y3HP1NJ2Auba1Gt)C`3M)zxPn z)X^ClH+1=jejqPJ6cgttoJ@#ewtOPNMP-)!_&S~y`X&~V$;OGjr84nI1CudXOr8N* zS=h_Ct`E-c6V$BU$k5{ACJ$*b}O}=3W5iAzK>}=x33aCj7)3M&kiomy@n>_ z%O8FUhv?!rees`xwP>){VBq0=P*cFgZSEJahjb;Odosu4#~!is7x5rnO#h-?>^2b4 z4?vsEF;I+jYuyo+SZQB=UdTLpmUZ+|N&kJi%_=i(s-Sppi;?mK-gevJd~+yGvnr~2 zV45p?02cRPq`D|m;zKB1IDbpR=H)hG5MA*;I|Z`TVpPaWCWS!jTOo&7U^_;T5x|j4 zel~BZJ^?T}bkMUMLkf$)FxaR{}n z*f0w-1^1PD(S8V}W6k4!2-Qt5{|24s)nN5Ps5dt)Z-6NW+2-(T*OT=OhS zH`i|K28{>z(gUo?H?9*TbV<7Uz$4=KpOFlIUKI9wnd7x-;s=XtHBP&MBj*+gNK8kb zv~)Judtkr-wh37*5s-BPjP|}wk5pXV`?z6QeX^ch>1S1Unsok6PvsNVaoJ?#BqFvu zMYQ5x{;Omr=IU1;JA=*F4Bi>V_%yoLs(soXn5}xm@Zilugew)1x~gl7cRSIQ_qEv+ z+WAuW*7fD?!osdstIo7g7(-!rlZc9d{FBhXA<#u_-9*#_2s0waHMVN zUUy86>J%4}Cwlz*fZko_e#1toOun5s5J5qyyleSwoL3vY6kSlKIb0t8-xO$yBFBF# z(@4cYq~fAj!F;6O&iiq%-@IErz!>Be4wdB@`7FjpTPBtzvN9|x*nn!5Gh(u^z~Qc@ z1qSFD(lCD>PPaA%r<5H{_|x3?UB&o)i8NCt|nIRY+__|ez7$8J>h9*;wBTB zi8Cf^tV4*6)^ieB*~QH}ENWUlVta5gm3-(IBLF2NqUR7&VE?#Fl0ipu7!U;76gP!f zbkeT++x>YxJ3qQ{x1Z(ysFL`Aiz8);C!1^_5XbGwQOj9yL+r>HN9{X!N-VT?_*8#g z7xy)#Xo$aPQ?AjFF$56`4T2TYy~4GIh!=l8_4xQwTm{-{B!HJn6QNgc>m_cd(m}Rm z?Tu**GkY7)k6vglvnD9MB-9 z9)XBYA*o7InXdbT3dkWch};L~ zI9=fEPpN;#UvxX3+m81XB_E&G58!fF;rvd#cK0^iG7mzZ^z_cW_-Jg=8!j$Z*&d2S zYy`7(SkArA%Elu-@1TTg>Uwl@Rm^>6qBoAp1Z^DNf0GcQ{4V>IcgrIBU139%5xa($KnjO zYwRfeZrhO3!to%AiLeu|+3Lci#;bart#p=F zy>T8`!(M71{v&O9wM9)$-UB>6?rpBqF&?Zvj$X9L=1IusHhv(LgKXVbzp?iQ!Zk_&P4hT2FJwS4j_Ol;!0k4;tUX#5kgl*gh&o5P~d@u zOrY^uzU%TA{Jzax$7Ju$%`ug&K5>^$=T2(mLV^^%55>YM2wx6Ci3u{k9VgkVZJjr8|dw&gmJ+?|o!++pY%dQqmv;cb6_Xc)DS zxbdG=GT>w~?j-#?QzRL$NTu_6KS%zB>$mqdkJYc8HiOQ_I$KQIQh-T-tyEesFl2b! zsB;d+M*0~i_2<|;Lu~lG*;o?1;)V^Da6*Y;{Q@e;x6Cu{I4u-+813GF!(p3fPfRMU z@0lS?i5M?;e_)o#6c-q3{Mh8aSlwYEN>$fMbN&I&!(6IoeU^df&D`+y^|c#Vw8v)! zgB@O5%;jezZtV}Xkk2s;#VMFbc#{D!QKoBk$sSV)h6GB&qKJ&ld`Z#=la<;c z7HoK~@)nh?c0z+3nTBF4SZNRgNe2pBkQ{tdqPbI5#hv#=Ui& z=)uiI4Z89!*`oxF{~ERaeJqz=oSCZ^oY|Q2+s!gKX~({B37VeV-HNKN43Kdg zA;>Z7@r+UE9ZP37?mL&9H&{@3B7L?WE`H#t%}p`4elTY3_AQ!0b1w>g(VfbFr<>J{ z*8oUkgKiDUQ&cnVA&{GxhNM+8tvHw4(~O7Jw3DgG2~<-*M(SQSpYVbqyK+CngjN)Z zsvz~VhudS;O#e;8VL1A)VE3m!M`yuoE^;?a)pIWB$72|I7L}>;*~c(}*Gq8KnNe(gt$PH7Fd{K!49-q|LFSepo0Mi4?GOwhqKzK|3 z2fDtb+ntwkHmU^(ciJp&GeV|~4siI`@$#kDllz;$BPK8Tb; zcqo>w_`CNwOx!ra^WVpE``PE>Ffcvw{ed`u?3_aqgbRww~eM{j2+5;^IE`*{^Hqqw}o zE{bQLAer()vffXEz}cTdhLKHGp4Yu`VXnVb!0e3j?I-`&|K5x(?YQHR@t?Xpw4SN; zrVQG0e9|@EZ_8Y`t?zs-W%>tJ{c1ci?fxgMO4(H9_1UXK5MEp@FR26B-5mIftc*KX3Kq(a8&ZwqMJ=$|T5stneDbrco<3^2la0Ln$XM+4WR;fTgiNIJ z9Sf&{rxk+&TUWP)-)E!GGiz-8aCM#+^Y9Di)=aZ|w9@7otj2dNDwwe1SiA;;^zVx+P?gS+KYr{y)8 zp;d+yi9;%8KqNG&`0POXLN;SlRoMkz06D!(6yXZKRIJl$4DUnBN&yXLpoTeutb zc>Phm1SCs^TXR*1<6w*dzf+s#U3Smb1t}oWs846$^wjk0CvOnDnH%?$t<<^WH8oAG z=ck^SH;Mw+dy^gN3Oslar@sBvrf75-zRLAN(CZ46yPvSDfnj196(N4Qul4#^QYWx< zE;xSTG_j4wWGqA~;1}vn6j&vI?Tt(XH=YMT57z`;s)oN+CCZ)d2H%{nxM{W{ITh=9e9yz)6R@|y-vEdbv; z*Sy!e4<4D{r&djZ0MrK7@89&~yCs)Nv-dv)Co52#_p=o)=HMGo^Ylv{5UR^h(|0!Urk4nR(At;Ron! zs;6e2|M}?vd(I`?t>K1Vp!J-!?hwGHpesR#I$kSb?Yaj~UDyO7m7?93*4!i!Ac(Ut zyl^q@(E({#1T2qKhfR9$cYU=w#nnwJ*wksYf}7Uj`Fs4*v=_p6wx;~~S1$Ky2BOxm z(&1Kq6+18lqHut3d{St$EYFV*WadTXDZS818vElbBdwTLf3S0` zz59TIutZI8Q_7q+T=LkK`7m5U*v0JSfe5j9*37TkRzS%F^Ga(Fy$>r;q@VnCc5d+e zTz_isi*%>1f`%k5A~hq#db7fj4Evg>J?DVgdIolhZHB zN61LMI*Iju^mm3HEii%peIjG3VxUWnNA3rX!|-D)eh-*v7bnXmW75N&pVfQ>WH)q^ znR*jv)h2Df@Qt~una|Gb0;_#O#nw;rSmx%R+Y$E^d3Y91nfWuCf6u|8(92(AI<`V! z>J3@M9-$FJK0ih`i890AT_|Yc+uDy?J6AeUxQxlieQIV=#?c_9s462mCIBwHVGcB1 zJsN&%g=$$^mAHw#cMHcdf+ZnjsrMRRgN|g1tvOnME=a1^t|e{KdNOHU$?u(bzWMa% zhyn$f;i%jVAH4`Fa>scgaoPt1t(>X3o7d!)W0)5uFDJR2`+L6r6^smzJ`Z340Jnjp zNyxUXFUbWaGT7%9_}q^U+I6B2(qyaDo@d|k>tZ8_~lQ=)Lnqo#0l~fWiX)Wr4VoF_ztSs=0i&UhWoPJ#n4cS5~Dvm-g?G zv`%IuvH@au7{$7xt;XPDAjiuyI}GdXgnsp(Idv3g1!5xpjhAdZNqSyM{&+WUxB2>; zAPhpefT2a)e*emGR?lB7(c-kq(`W0m>6M$>41h2Noqe3s(^X`^BZ8?w_8Ucm_C!Gm zQ?pg(ZV{)1=ji3*Fs^f6>=P9}A>!9ld>;oUDeE-$40l!-_5gA-`u?#FhdPm0EbZIuv-xCirE@#K9(Dn>oo2{MmmG! zJ0aDr=fY+<(yfHk(U_QvX7u|f_zv!JOGGJbJtnm%OWac~g30vcZ;82RDs|MUC7-I( zse83)@hsr+kUYislA=rYAC2|FKQq)L$K4UsSn4C`bM_3y=a(GoN;hJL{84>oQkTZ> z^RGP9$1bX4!#QH8DMtM5ek&}C;buz|i);`x2?S|!&1c4pXEQ|_n79|xjGTh)TEEhr z-T!jOIyzVjGqn@Q{`!N=2bY0+<`?aA7NW!JHp>GMd_kA=;E^Xbq0fBZ(T|)3Alya` zv}>@OwE^KIOK7_tK9K-iwAw?+jXY5tms# z=Nn%H-)h-Q`7OKTb^oX0(w^uQQ%K%OB`|LH#NH!>;Q~@kRTJhEyH)=CNGJS;p;+Dx?fGKp716 z1Y4si^u|U;%9L0N=G9vP84ct`;;^?X*KtB(?|7KZV6k5}Y+F})&Os@Ur?YDJ;CBmU?kJqKR&Ox&i~H?EQ>;|Xiy!Lt&}-#T zd9E1FS@*p$luU5W+j#h50lVy7qNFKHx7ki{jd)c^iH(BtWAiTYQ3}}TrXRpNvuw)lsa;z! zv72g0y@{V%Q@UqB<6z{KKh<9##4q1iA`|xTS`SVkWU7AnUoLh!3 zZdK`2vE16uGUE0uBqPeI+QrF^eR7}d$Y{mgIeqstMu`;F-?_p>K_Em-ar)1G00YXG%lF-+#U&ZZ#HIZ<;VFsJ}iYZ($9CF_RIgOUS@Fk%siLy$aFT7p;!d5msl)nMcHrL#7!iHD2oA<5q zfz};`9tAaleR+*-65<})ft~JO!nlcDeG`TYJZr~(_znD}w-LGu@YT{*I(q!WM*}HX zPQ=dl0l9PR@}-qW#6=XEypfjHb6VjC7#maYB8-MB-*hyU{*58dlPJE!w3UAcqu}dk z{kc|xZwEoWZOHZ4PvNWelEKocA`&3@5t)(;Ay#lRP;a*1Kh8Pm%xpZ~Bfy$KcoWzF zz5=URdiscNlcJE);Gop_ll(2dnS${YQRfBjaZP`lX8bzBOq6ksDG}=Sutf`DeaYe0 zo4`zCo-B2FtQ(hR3B7US+U!N9hUoEH|e99m!TqDHfZJ{85WN3NKjfD!FtrgQg@lz6E#q$AkOQd{%2FiM$+O7 zFV%o)@~FSmxxZ-$5~lJ!y!_La41mKTVXE_WBDY&263{>*c`W}z0X^&Bm5iaA_kcLD ze0hz*3YZ3KIYSnzmYkD3&+-N)sK}y|EPuVZU;p~@qQ-FV zC2Of!%-71c;Xq9@?!}Scd3_l^eelKp`#Zee9~kg<(66h;TlrR6!hJP30q&xiz??ni zg?S?LT*K));~+k`n(UU+Qyo=uF!}=j(3}zpF!&l*6{z>VZ)EgimWvZuXTbPZmw5E~ z&uBE!K=|NYUs;X|siT@4JDDL#D{noUR@Mn>k2|?@xeHIt5-7BlDxImX{2?@fM-oUT zNKF^@Bl3zvSu-gTH?zcbza89!+lX|%!UU6p>va4pPCgNn*$oi8FhJ#a`RIyoG$p#$f(kWcbv`0^Jq9(Cb#&_Pv{+LKN z=-|~%eYmhP%b6GO%(@!q>Ab5SkAuiwyIHdRR->hAn?hA0@TiR{Tc1)beZ2roB9`Ao zf8tE^k89hd>&>JI;;!R--_1!$lR2p!PIjOV7QAP|)>M2?(2y4%WcEx~9M?c`L(SY? zxNh45%%sCEss7Ke{X6RuxX})MGKYquz3$f6_(eZYz`v-O5932UtqY6<2gOg)DlfPR zT3tkl6tR>oNcF2WpqL1Qc)o?5f(mt~pj>M-nENeUrZ{b+p_vlG$<4?tzpP7UiAXy! zbNPNzp-{PL$l~SGAFfw2R=it)#&1Y5BN?Z)Z2DnA(%r1v&|&i+wFi1<@JbWyPlvCH z`+)C0Q>gpNSyR9{xPy3&g06$5&@!mC+RcNtIDMnS!}^y3e*(UOg1j3z7=Qiq`-(2b z{xfR@{1zlKN)X8e2U4@Bt(3=qQ7SWbM|goRfs2P98;(B7NZw|&G<<#x-mh-BBy}qG z`9~fSOHMkMM}I53Nv#!l06=01;JP=ATg;R)3-=dEDjHxg`^ZI1l}uD91Cswu9Y=Bi zp_fMRk1Q;lg!Dbnx{HoW2ajBRt#b(Uk4hcB%D z_2E@lJqP0Xy$BWU53(TxClQYJpHpIK;jVYaDtC&{-@=4HmyyPf=I$zf8S zY+OO0el4P`%&6O%14iLryBM#q<=#n#V&4j1Q_cEGNp9z=+9zOPx8&W$#E;!b?&{(m z^X;A`h=x~m&6JlNz6U^Jc4(hDjIaTFBEV?@07a5ph4+195G6Dhs%CB_`}jT9unGX7 zpmrb>lnqS3Jl^G?nqi#{mRK_VfR>0RwubGb4+o(!pBhOo3yjIBfVO*u>Q4JYtsOur1UMgp~NusK| z`=K2C7Uco{a{KRb$XwA^}U=NfuX>CEU@^=At#bT-IY7k!J{PiQEVJWU~t7g|)LRug&2 z8&Ver2tx1JPAtyqI9RMaIbBmFcs0Q=m;R;iD&58u9$GR~Vly#*89k7}A;`fmRb|fG zh**k{PT{t}E_ow+0x&6vF9ti%Pm&m~!INE#Depl<%LZpdnXHvMvS3JdDFwqcb`XO@ zGo4m@&~M5XJ)!SNPHGXdP`5TNgxzfG9cf9A!9;&Fp!cm{_$dz1akC>50ZPM&oXE`Q zK28YV`oz^+fQh2WHvv@Kvn|=&kpiySd6+guAKZ(?w2{WBhZf7jh6yYYI}%Zm*y`6Q z-`?bU|4vpbOufw)&-yNyzbI^SE8T@E07lrDqvrHns2YZ+h@NFlI8N;_j{91^Ab4Wb zbMO`7bKl&S|8Y0IUktVWOh>t)-ZGLqs*30Y`fpfXHDg`5Ga09j zDlq^+5gJNev+Uo~sC@N$5;>5ckzxc$IPou%TKVWskZ>ZHZA2v-7^Vvz@-90+xEkVC zr}i!Qi)0O{HmL)yj<|BhIA>$oDX1%wQ0c3)BNeA}n0nmpIR{%}oE@)|QE*GGIigin zLLh<0qf~(gbj;n?PIwClagP3_6z37$&#!6C=3mt!{8(@NWRdI#m?PV%r-H6e{vz10 zUw9CM)IvXBPB++!rYD1kj-SYHE$l)GE#Cf&`55z8sI@NIjS1*R*6kb!T@F3<2Q9{L zw)qs24g2Tx%Yh*GoACVy1@>L_CB2|)0Bn?p?ip{{#re3h+!Tn&rJ1Dmp`w9}POfN= z4>%H|@7c_{@}N)p802GGL!Ilke^0m}OBpQ5nmc0r(6#v+=#}-3wjlgh$%snUt@pcb zzBAO~HnGPb1&J;aak6Fg^jypaf#EOHXOJdX{!xt|e&Q0hg^r!_!8=grG4~01n85Zcnxf8dv zM35%gaHA<# zxGJ~LiJR6u-k3$g0W4V(3oUY^guHcM+GK$4(_E%;Ghly^)U8cJb{|BReGQY1^SLnS zGfbqX3~b4_?!V*IryMf=vN+>u)Is)_cj8*k@^6qo(|yG|kB2y1q@W5wK$~q&yz7&( zoE~^~F`XQ#<=75%$5HE5be1uZ8{QP%xZjA$K#>0)pu{rUr{;~Eo?ffI`&@W2)9?!9 z?;GJMlLzR>S?9U*)ZTA5t5x%+`U>YJz@?b0y#fvZJczBztYPqvhV+zqk(F;>_=oyc zlso2D0p^VYy%_DFAe|}deq7=3N{|?Xe+LzR45eUvu|oeON>sFd|0|u!=I!JtgK#Zc zwm=lvAs7&Fm0I7}&7ws`W;Ic0C2;2cS$PYsyEjw56`bPnLi%_;7`6!(zr&u(^ReLC z%gV2?`PyZn2Et$wo2`@qTN{=+z`QTxpdD0$acKp|;g8l^KbANs_RKbiDM!_qyTS_= z?0#t>xrbeV6bvtS`e&nNrQB`R(nis2*24x#KZ;6&6m>(Z$YSuPi2~)>YUS)_m8bb!t~fia&r;!JxL`2j?SfKCtzaG?au?WMA;-X z^@<%^L8OfWbfK6J`utRJYvI;t06cMg@%|FJhUpwD2-Q_$UjFH^n}6GGBtpYIS^P7c z5OtPBvC*-A6a_(NKu%lle9L=d@Ow4n+NCk40LwU+w?_^1{mlk}Gn93661}Vt1mhaB z2C6rMzTvDU>U~dAqIRXZm8(->wnN(*&&xwK#D6poe;wJ*58-rHyNQ_iLzNvz^S(%o z4|Go$!M_rfq@_>gzy$WU4C(7zBqLxoZ?+5H7F%Mq6>K0Ba`+!*4{`4Uu$xw~RR|47 z|8)Nbrrok)Ij7K^lbpJ4t5c7Sr@e<2KXyom+woh-dht<2)EW#L=5TKFdf)vig48Qu z3;1l#ZEN~o6RF2Idz`=qK<7-!s)>B~G)*>!=;|Dp9XPrYN45$Ul!P$#FXt4>LQ4}(Th^7#@Cuo73AN_F=W zTd4xPm@kt^l>fyRdbCpHc0peBIBWvgo4&O?F*FE;Tk$BqeaP-PdU{nxD)b{Cr9;Un z1+Xe2e{?|!Hi^?|pGQG0v0{!3QmmtE^!MpcjLs9-y=^ow8dlN0S71&_hXRb?&xEvVN;2Zp%E zAhuD#ktPUGXf#}pcfSDvWtS(|nL!8D&f2WKPBG_luw-41>)w2%YMgc5Q>H0-kQ9Ms zm{kOpW7zh6k6Z73<9HL7ygVO}))t!Lx%Y{$^9VbS9KMMCE-Tl7ZVKpj`7M|Ns`yw} zoMPg%z_sY4n)|3lVd~TU%wp{&u6?4Q_s+q_S}f)% zEu_tUU#|7lYf8v%)4bR_&ji3D;k>hXjEg!cb|RxKhLcwI>2J(TJf3gZi^Ojxhw0Q)c%CU}M>&|9kKGk+@K`4ApO3|~g;4d|E?8i}xE=^MEkZMZf zbE*~Yv|={v0g?SA<(Q_R8`Gd(mUgx)T*riz1I@$zF3YcUkR-BQUAq=`$T;QfM`rT3 zTh2U`7p{-YdyRW6P^e-xN!@a0^x$Fg^A1Xk%gBOI#A#U+OvK9#ld}JT9N7dLxHDDx z%1s^Va5IJjU)zHbJ|JYe&Tgtq!7JVo#kd)UeFmxjTo6zp1h`ev zFm}_UcF03|wcqVpHXo!Se#B+jxJSU^VeS%xwugxvs1K9(DW?@!k0c+(|7_gQdH}}T z07D;rCC__EF*x($s(@ihOjx0xl>hNnKcE&85IRH7xM=O1t2&HAMJ$lBD*wE}cuu}s zUy_bgGMF?=P2Z>o(k9)hK2Sl{HB6E)D&qTOqVt6H95uG-={Yts3uf4$o(IZHNK{AKY?;|0znzL z#P?>tHx-c&R%qBkC*?DSMyx6=-C5yI*`$f#XD#AgXBmYB_@k+R0UW(%yELOznXgZY zuuZnvh0y?zkSs>(9Z93PL(;{PuMsShA`$F|gIs-XutBM7&u_e!;ovRD)4E>yTdI<@ z7xEiWx;h{4un(sC4N*%xj*uwIydAziITQo^H6*R3NER5*HCM49(l9xFf*yZ~PW-#< zqT+c6m&C#k9ngzs^C>VZ+ zO*`7*dFZM#e?FHpmKlbuMIpoXU{KfTliwlB3bt{&Xw>Z0DDV!eaZ^rnv91n5 zNFCKbj;*7BmcxokYO}s|`&{i@$Tj!8FUk>PUDwM2Y~v4rj@Z;6)wG^R9Rb6fy(4PC^~_nV9u5teF%^=MTY4K}js>((@%m3x2niaK&~I*J^xl+vYy+|nJ} zRFSJv(f;z~?MwY_RYtN>+F*778QvIXD~3V#-S^t*$VOR^U>Zl1&2s}3t2c{0l_o0Y z0AeOe>zQ_1oYwQ1JxM{>C9IBmU*;0;N-TF#bVW(;7^7)dn8J7QKi6sfna7bv z+?w;hUa-R^4U_s;XWlBc4{wN%xP#AO=QP>}0)jT6a#1!V4VPX7RMzF)j3m95>%##BqjsJbFZ)*bgJTf*cPAdL-5+W7;lf0l8H7mv3K2IS=eM2^=1eZ= zLLSgk&J9vFpy*!*hZTjHa{r2!;oe}Ya}^(Q=fVARrlMj)08%6X9YlxbJjGnsCoaHIaD>Hc!c zf^!2wjm6XY{7Jl0YCv;0F4$cPY!lm^Zt`0+7~2zOUN?1$FnE&BKyn~(S<_=HOEq}Z z#8kFIT;Y-$e*P|VAq?+sU{pSpTIMe#O643#{N$kZtm-Q6f6=ldMZL?rkD~=xy38lE z=W2m5MZmFN&di{d*4#7sC!-G}8y+@QM_B@H=`6sGWVqjBWu#m>OAEQ#hwN6FlL0!P zq(;?7kOF3pHMCJ*`B>S~`SP|>#S^<10S$d?R(jBP%((kQ@FxPBD0yD|g*(y7@@!-X zy%_YznA8D2rY1ziq-5MlJIN_{6p#W=)jiYn8U2h3O}qyiyyXo8!OwKXX0Q;rTKlhX zj9aPdCals9WvHQG6J4Q8;uxO12MNCljMIC1z3Yxb5I+~skc+elQYs0hu~IG$LzUpy zFLC$#sm}x3#qe8EN@YvcVgZZmfMe?6MR&}-HvM{H^;#$?5P0~1v0WUlFHx{r4eS?0 z?$<@A?k`UzgVHFbj@5a?S}Wpo0dQ|n3+!rPrDbRmP|s4so>EcLa5jB)e;ypz^tMm* z_FYGLp)RF_In$Pxdg&!2o&)YhWA@cV#h2#QjfeoWkP8;gT;Ej{QQN=?{a~-V&?2p- zEw^TO^3JH|f`aPlXb_Rv*)cuyf*UcZJw`Mi7m&h6yrMU$1r9{YlTRYg`(yH`-PZE( zyWG8V3}b4zjW3R576WmJ5BNiYeb(vF46y@)oe8!5ia`HR_*3D)DrVM|CxaENw4Qxk zEoD+CA>%8sb>D(fE7z6{m*MiDtTo1$hqen~ia!)C94++#{Wj^Qkh~~Lg?U`-Qgh$+ zgz$Ee2Fxki&MdJ1`w2q^63!p_6#KiNd7`#PP#v z^464`Eso{xn(^Jf(p~5hKOp`)fHa!|^eoqI+l&Nz{*xurg%|<}-+B>> zZU!Wz5L60z-(F`929vii`$s+Ie3zxjNy@tHcs@;3s*fjN=O3?p_sxrTsI&cST)_2= z2yvboBIy$hv(jE1MWm}*@{=ahM?D76SnIo+J>2s1S9P-|CC;SQc&`1*NamiTSE~Ui zK|M(_K<`&yk|^US8D)}<6_bP$R^T>os?DN?yUvL zuI}2X=Ua*A(U>;X%YpFxCZRTJQdZHMyGwE;rCgU5i%IJ3-4}0vv~OSy+HKOt%k!B4 zDSs{=tloZ_UpkY*V+ zNv}>VK0+im)Uzp8MxxKs&vFmu{<6fRaBxuX5-{IxZErwf^~FprY=D*Bp1iKAAjzwV zEUj~zcOjI1i{3H;5j@>0r`r3yBCsy8e7qAkXaG^&Dg^SAugvaVnfoS}o+_-Te9L`@ z-`EDikV!Uu3w3RMO2BmAx_vwGg3*EFP(Z5DI_ z+yimYv!1Chs!zU_EHG5qin~*Q=A3-*#*;QgDS76nUkq{?@k%k0Ok4hnYr(aOt?JEE zg{BnkLZLbizdY<75mX6R&?vU=?3)`kRG-w>ZQvE0411qe#<}C3>dxGs^62xt@d7Sf zHU?6~yB*%yB1>D`r&J6V8cx?-b%{nH69x(SUr3Bx$&cu7xxHmTR6M5xbYKF^{n@8! zMHeeAF@TceLhcbr5W_`#Px&QPsDCBmGb62MW2jsynAEsG(gbuZ1B3SIdbn;V^Qnt$ z%4neXIpiWQ0G9$SseT+is$i@MAO;NInz3j2MN0VMoT%DXRp)6HxmB6ws=$cy`&3CA zMk94&;|-`|@x^_omd~@+rE|qQX?((4QD|r8DqKdi#Zj-fFK5`@;FkDHDgb9wK_oxR zt!b`q{&wB|ed&8T>CCU}aPGGXEh0#!T?)d6@jL$R!b!!4xj`OaBjf%G>{Gn>mT^Kt zQFn&&Z$>c2jnV%?L3&eeFE!N_Q8Dm)h!@^}(-anvR4o*TFxFZaJs?(fAzYQ-N6ps2u-{Z@`P1 zv)Sr?fYT5K(w6;N!wrI;H+0%AH;aDplJ*Q*CXZfOxva>%{g5RSbizohPEWZZ(3hHEO4_0o} zeM**Gpn^+ft&MCafyEKKyA$05<0CAy6Q}*ugBr2sx@ymCRi8tSZo|pK8|e8Q{D2SW zyKl5r?;Wd402EZSY=^dD3AVZjtJ&rtDWbv}miIwD{m8yZ-5eU*ntg2bUs|AUfzdgWm_*bI_7 zkIGmYxaNBIQU{EYn$oA>2_Ezq%^%v3w`)zgZy8M34QDQSR%J|$=iuNSbOmqQY}R?Q z@&z~|b9c=6YMAP%O`8x}j%FJZwd?=dCiD#k(39{( zdQvkrv}O_f+5L#8y`dDegGROcA20D+{FtwypcsSiB~*yB8Ye+X1Db!-3=%9yYKA}A zT{)bE_Ff0)eD~W+5S!nGUFXC5bPMI0%Uf-9z!cYPgq4~v$*@?$=>vQK!^TAWNw%}V zA8VPcSa4jqf-Bb-Ie3Zhv&?nE-17)QatVb33L4s|tAL^!JyV2suZq)CM;t>7d^i6o zxw_uVwK%ez_dsrC#GQM#u<}KF_?0IsQB(uZg6PkD|;gfy)vA&!!Gg-9V zg@&~Q>x3RzbJE;yiu&OBPmPrFQw)dC;+xOkGKbx!^YEkby+2CF{DkhBAYXKFk;Nk7 zO8t&lmS7=XGAj*KjM6+OWSrCb9p-}BVFKP@N|{Mw18Io z?$2C3Mt=EgLdN%n!|17m1G6DDa&YmHD8bo5Mz*<{$fegV4{q?O8GD4}b=a>S-*=|? zU;zu-vFr8xd46%^sRNro=KA`jlz|^#+q94A!$*=PZ&kTvgNd$kDodqY3a-8qht^Wt ze5E^Kt{SRQEXAG&A%Q3pGIF?2Dv0Y#mrJYEjoL+xI{(LU98M~_LDB&|aM+ZmtD}tJ zvw)H-A36!BY5~9PB-4?!x8u^8K|WQnD?<>{z-Ipc)m%)S{qS+``(=)7Ns7w_0oa}&9*k7+Hqa@T2I+9~enIs?rQ8I*JNq*g zbH^$?OXsfA?b6PB{ncIBldi}y=rOtTts<5Kh1)K^0yY$PJ&V>r>cZr}zKu=C@~zFF z#QXbGXI|X1&XEKx^j%pFb$`q_$fon2jK%*lzPCb{LfH+0B!hT`$x1`g7f|aMoWXk{ z69`%gsUYLMof)e)4ymTx%~NB}O?B=|Sb!UWkRxmHe@gjC-4$S9?i-jr+?U)c;m9=* z-yK)--jqvn#1J!k08K zHg7n+jDmDVm|nc|TNd+rzSenW)Tc)sL+NskXVa8h+YnV4UK$!S1`#Aj#>07uj01+V zXy;`Z6scmaJp?6S3q+>&+2+~5Y3P-6bMWl;}(vcEcAQVLpO+}hiML|J|RB0iIg4EDE zB#QKs&>^9GE8scj-uvGB{c#M2zjpRsbItk8r>p~=wjY)*nx9)+HL{h1f}g?xw)@&m zab-U*1li;(LqTo|AFijmqI@#9<=aUqG(xWz-~3?<4i)8f_tlQZT`gqu@Ib%yo-E-tYOgu z;ukNtXx!Ux7njf+qfOk?8SDl$kpsU7k6d2Y$Ufav_jraEmFV1xF7X_MyD0e#%e|ni zi=lkLv}0m832$xH8(f}-fXF`)!8OI&W|B^Sr8F$jHBLR0I$vYcAH|-3_O(d=Rqw2+uz}3RxG@|vpun?6}b0XMN^>1QW zqn2uHGo1=~!%1-4bTXD8^7TMwMZN}sP=I_20I7}4a?8~MzXi|i&utFG>OguI2~&$z z@J%zOwwhPkag}Q9iF_gfI!>215pDXu5NK#vR1+tI>}yF5_+s}cz3yZ9V){5G^JWmH z;VA#FVpw#(&F)Q0tYscjpC{)jPW?k40;W*3ob4i1dx;$f?${TyEwUA1SQ_Vk*fjAf{^m;<(J<(*KANOx9QNX$u>b zd2^upFQ>?x;z3IUT;`-_k@80<_zT`BPAS`s@UZR-d$^U`A*}`IZk@KvkRER>^aKVu zBzQOywmr!JbtC$D(%k}vj?z^Vjq;1tUygAoA4Hb;lkKAqz$db_{eazbm}zgeO|`(& zk1@{UtXnHc--cnR>E8ty+gy-iO1)xilQ=LyN11n))9e)RBwR|^ou;6UMWoOd>$=Xn zaFncK zbYx6gMhVxIG#b*bRlm-|tG=b(>sEf1B9*q_4$=&dK_up6KSJv6hbANfcIR^| z7>Gy?REIZ}R~T@xrz&Iz)7_?6$K|#=MQEBlhCn~23waacg3lytn0fXyS&YYgc%pk3_z^l)6L+XhdXo z2hjQ6Rgem#r-uU5Iqkxfo-$KbX^F9K^apcw`oBky9nRI{`siZ?-SNpLvs%{n_flh2 z{G{(EDdscO$Rhu!mb-akuzBulU&uLVJ%|jn-Z)dwA?Fhh>I47ugUno{&_-Fc{9BWL z%WvUK*7lxPw$tzGCCf{3EebfX2iWx76B6l!8QBR@4pvNZQR3iVKtb>W^=dEsiSc+8gCZ?{niF7ANQoOj^u^iE&5ci3H-Gxvy zE`R#hL$!8r2KH+CD8D`0)ABo{h5Vb)0kU692UrQW^=m4u^n%rWtHJ%b#G(=~H7}K+(S8l+o8$dF zf^wZ{r{uhNpiD86`iZ)O&zfh|#5PRU{=~h@>-CKIHj)gn$>uj33E3=9(Y;4YeC*hH z_r_2KEzn9SPcZBbLo_Lg-cr>7X7*+(7$O$c&Z`7uEs^$O9VKw#VZy2iy;)w!iARhg zXmQ8)zidOQ zYsxnT$=^N}eEV{T-#&T$^0#IRbi{{z=fljJT&iSgCMw7L9=vrou#CTM>AN3#FX&P= zaI8JI-er2?bMxo`N!mqil>&)N_WZ!hkp9{D2BNt!YTNqkSd{M0l*=>0)4!gXO>Avw z6eld$I4O+AzRul_sTmSF;WRPL!821l>JgJi9mKO?kKpX`*Qyqr8F;|7tyafVwH&}Q zpRT%oBpI4>w0F#2Dxw35Jkp0q_Hnpv89%Ndgdn**@IJdc&AG@r6TfDTOJxp{a@g5e zBJUwLqMyyH%TiG(wd}?06q(Zvved%gx=G#Rl{#tTBKw^hd=`Fp=>|{Co*w9!ZPX0= z6g(8;z(Xc(XzbqpFEVU$F|?oL=tD&Iubj<07rc6wZ@Zi4w4$JvvCRMtGGwGoRoZ&Q zOaJ7w)N70iq+V(|4%o2Hl`zkTU4`Q%7F({LGs)iU)f#!+V`L_2e7SD|lJd0fLX$0J zp)FS?e)!=u1);G93>Yb_ zhqH&8#5 znzwU}J=2cinG*t?W7*EzwK3gOU(l7UPhbt}-0| zJ~Fake`5|}?7EG7S?9E{JjJw1z9pXTqWw3`-McohY# zJRE6G3_d^&nb4X*5^}}ZQg6oNer!{5-#jWIhxV01hN-5SEg6SbnsS~^XkBM}wS320 zMwaJ-fzbQK{Gx-|Q(;>@%NOXexh7X23PLyxnwkr0Y3l1;_l=6Y>g=`Qxs3W!S@sXacM)t`Q)09DQ zGpfA&tl-{osl0$?v=n`#;V4V47d^Sr)pf(sdl&!U|>7n__< z-}`pPf}7|53`=Gq{M_pfDcP1A)fh25&@k!TfYdP)FQq$d*cb;jtvzR7<2mEmpEnY) zH@aIj+hgi^M!mTJ_s)w2GCEL1vGXPz6-=I(WoCEYY4G0-kt)HD;9#EFZg>=P`hcQC z_$&TyhH&KBlKy)Vbc2)7FGncG*H$krI)@h4xP9^^N=sasC4y^!)+a?bJ zC*Jx21+aIqqznlHd&6acz3_r+yx=tC<@8wfL>48)U4YyjdXuNaN3gf>7|tz-(+q4H z)PdO)dD7axwp1%|7^C|7rdz7d;G<6l*(^F)POn zKHpk5_EW*sCiFh()&NP~+H*H!=fT3_u!!!j$jm=q+P)ItpOHA#x-fFNOXlf>4P~qf z%?!_q=$#(3gqz-2J=>NeTP~djfV^~Z0!rj_o4-B6x-%12wP8o{o6+(c9g+I9DJ5*FMlcB|Zr@BYKkolyI;N<}s;LTEoA@50ga z%ib-eqwYhzx#tYt`J!P7`;9IX*?FI)C`cW0s!eNIvN+SZ6U1od9og?L?lS|3k15r% ziTfGJQvNgN1iJTld^{o-Dv1_j0}q~np+CIuCr68R4(6&s-Kn(NBm!4q>vZdFqL?#~ z$%2UyHg|Y48jdu0UjrkOR8F@bPE631iq1DGKaN(Ko?={KGjEd%v6k)UGScWNc<8cw zm?raE{PmZRmUy}+Hq`xn-0tQ$u-qLs2-XxyG#L&o0`hTE{0Ds97;3MiQUvgJLE>Tv%_Kx|HaWQK2kYT?vCuRSD8lL4^J39ajbK6!w<3Hrun0{_Dx&H`*2d;w;03jpy7@&m} z6HL(9fI8p+_wzaJLFF5hD4Z|gKIYN>liU{>efeiz{?8rC`=!XE__|03kUeZ2bnTqA z!txJR#qf~mWhh5<4piQlX5&QN<~${3z3k;~4UC7zzR+bMP4)V-qrRs@>+3hK-|TUL z@u&FXr?rH<4Fd#~yyed1lytVaD(wo)eDd&2l$ojS^1E16*dQ;LEiOY*ccY11?r!p~ zIfWHO^HnU_y~36|q^OW8`1^tObF^jK`SnUi0~04iZnFlm^M)e*X-vio)cT*Lr7yNU zAJFegPM0=N-?-bMJbysTm2L~F5`sx+|3Vv8jG8-YBwJlp6t*MGXMlmjp&u1%& z??a7gZSq=mcJP75K*e0`Z@$)VlJ{SRK7Vd7;5hAzXiZJ?t#)eRYoq(b(JAW_0=QnP zIzg(4kj2sgprEcs<@}mMi#1kXqG4yaQJ8t7XrShF82BxWQ_4#Hd|l;OrOn%y5G8yI zv%=j+spXg_vKP-^?V3K(z8aOWrx1al+@d7R!^a5RoSk^DfcEf9A8Xy4;uY72G6Me? zfnz)bf0R7>Qz1st0)iWrv|FZ+&jJQ#o`qMN^o_UP(x)c>-3iG4`Zx|g1wXl1YT)tJ zrcdP&g3MW8w4(Q&nPwNXv3qM?m^|>qiH5t)n_Y%X$wK^Fu=rn;EN}&;fppjN6T9%A zi;TpU{WWGWYm0GWD@z_lp*MbY(htafR7g}*g|Q9c$Ue#`LE7_!etSY=W7uCC)TdH@ z_|v(6o^H9bZW*G~Q>!>;^}wZS`#2?$2DNVwC6%u|=oy}50##q!KOSo~AsJ`QuvT5^ zDOFpm3|s1R*dykY7NvR80V+tQe>_kSE@u6je^op>pH}1N)BQ&%&!tCU+ zg-P|$-1@E!tC<~+wOD(|SL646!o;AbqrYH1N(BkBi#u7N1Jp{3Ll%-LMOFBOL}R)g z*-D`+00L0J(>P?ZyvF8_rChKZ9G zoBQZA?lzB%>5@k;6fh3p@h@?re{$q%gCrLx{2$`AY3-|KY2eteHGFd;E)5-Si|D?| z4aSDug9&d5MIa-H7-ov}yQ4;QzBH*LfWzxqKeLoF?PY^SI;eehV0>To|HA^_v~1#< zvm%Le2EjKY9gaKH4So(%SH1_R23k?mcTUvR-(v(v9`kq}lSDIb!N#_rJlbhkblnH; zHqslRLit5S{=-aZ|7KXuh2jTz{(SL|rrvBk5LCWs@sVlUYV*f$Y^;V2z>aNM6oLI{zsI7MSv`DI|cSB=lgAgM;#0_1Lr6A7Xc#=q3%oPyQ|vXiI12rnk{1|a)rWIA0aC? zr1o}CJ6)otNQf^`mCI3dP4C&^#UP(xjvH3~@09_?))nQ^U>!0zVy%<|7eEXwGB@T7 zi%Pf;_8z;%H|UqFflp|8jcZkL@QwfUS~BU6Z`UshS&LsUf9mcRulFLQlhp1r?|T#t z+ptiiL8R3*LpH`r$LaG(`hiZf=)%^mVGt{~l4>ZtrYMcfepXplHBZ9#iDCW3V8(!| z`}6+Lq&pNjB8vPbVpQ?_3gl(S@p^U?SchSOc!OvCfOtapEszdE5km)!^?gZCRpX*w zwMnR9S>OTu(=BHx$KQ*>f6Q*l&243iPWI5|%Okn&`+)gas7geo?_^{=8&J)qq^uyk zb;-SBLd!qk<|rt)79(lff9m`(UPp_GosMP4yA+~M5v#ccyy+KO_xaNdNS`jso1$Im zwrDEfj(lJJvopwW5Jok_^Ih9%m$Tde?H0G&_4bCZ(ab>k_wZaW^sX%nY`-n2-h@=x zsFJmt*$y#f^YqN;s4$XTp#27MC&j|wtr~B1m5Hv zuPfS%>y&T@i~$$ABQ`j__DP`aD=^O5?4zNoNNpe_T|_SAl1 z;i;ge=Q;RG9GW~@a%5Q{!`>K(e5FqgUt*r-Jh~<0v3fVV78WO5*CBfbuxdPYsnzPT zqFLTzcA_J^2?UN&eqxY6WQ!SAt^z?r>U4Q3ogQ5E-+Qvwu^g2i%e>nS{|f4y=aLzg z1~b3J^Lmh#5%Cylf0u&>H1?RTO1+h{r>H(IdkQ>4avpyh;F>;Aze~9R{aHdy7PkMV zhtz?x4Z3q`!{+9JM4=A#7KU0Qes{A7d9nm(#BbQ1^vEHE)g z-&qK+wwscvK&WTznrHNJn7T|H@29i`x3?7gi@=Svq@#x1q+iA=KOJ!vCFBMQpgae#aB zP6Tq%_-ARNhb=z%&WOP*WpYMbQ+q~v&7sTN6ySUVvjaf3{tsq={}dQ^?(9>i?SLTq z&WXB}&!xj}R-D{yZ6Z*)V5rT;T-qDF2zNDjjnkWdHs^T1+d1Mko(kRY{u(tTAk13$ zrWO0?jd-bM-rfm1xgmN(b*ON6rp=joGcP8#+~sx$DcE$l!+eWRfJq`*&w&w+G(A_22rd&93}-kNiJZTp}x%8k$c7 zokA*YKt&*t5#tpItE$Zezr_)48JlwD|1M-c`Or8|_cK2H^w+(V_a)~NK~^imVtQOz zs{X7ENX2M@(xmr0q@aMmOPjqHIbrB&)sx}ZdS%lqaGP{ zBlEZqq4tZTsySq9(MRPSl>D7@J!=2H%=*@?_LNxu-JK$4(eJ5ttekbT)eay_2C!>S z_pXO&1JXz7r?Zcc1LGNDR5dCXy`XE7{d3viHeY-!&-|XI&4KZ652TZzwEZj5dRB#e zzV{VCL`z@A-k6C0u4=999bSo|k?hHzj<)3youN2b;r1j8#M~tMLDu=(w_l{Io~re% zLDD)Qm3P2xCaHy09x*@I?;5hOp6($F)@i^su8@0#qW`;`xh6Vg_e5Pn$w^!q2>u;( zSsf0b=2ZFDzJ2vjXYp6x&Hz>$ptP;70A)cS=_P8LF}AtjV@%C?N;Ww(g?3m7OeUF< zNhuGj5rVs3_=2KdXskn&j|o+yZ)x>hZ_QqKB8G-8DqHkz8MRAwLE*Wl#Ms*xhR$1e z!o8yPBK=0_JSF)l-vjN@QtQ`Yr*!_9lz_W41MM9z!KLdmzM`%Arh0GH{0zf>0%97v z(H`7UdGN}4z6~@>b;pTcjnsLhWJI}eX?jqT+{2h*A4d&fRW&SCGpWLmsyl9qOYK<@ zXG3tVpQ!`0IKN{oP#rCprBu#HK@PV>hM3?#{9&-a`t52@-U284QxhTwgRl5{{{UnU z5Ue!QJD(#YO~JI_`uTw@K{y1LFyyf=tZ>Y^YNY;pJ?^XLJTIHR(sZ}mE#4n1Qscwd z`jryr)qZ+N7fg+Goua{*3l-tNRwiE_Q3SZ%Pg5uw|9P7y(Qklp*LB8jf12dAsyX03 zFS_hXMKHIrs-i-Qi8Q^uenYJA4{`qIQ@jD6xAd^e^CLLFG4NscQMS%Z zcgq8Zinc+>c7S3QnpDur1vwfWVE?v(4FJihRGR~NU5R|8cku8qAu zyLu6f%nLjh{uJ9|(~-u(b+HWy=&r&oZU`~0s*wf5LOC0!y2oXSXtLrD)v3G*-ATyE zcnOg}i{I25oBeuq_Jip=9UU=lsL|aHE}*T_Ma_=XfyG@5N$Y)UMAB0>g2efQWhNs8 z8vCU(9}s=!zPJeDE_pHnZiC)iK=@&LtLXM>VBM7YGt0^lMJ^e&JdkJuKLTF^7w3VW>`VRHz&kTJ&(&<`PYgN`03R4; zhUv#+K3#MF>hZ2Bw3mg}&20WCUP4*X$;^2&T&Cs^t|<8nIG#(X*K@Bs(2(>~&!OG? z!3}PkX}wt{8|1?MV7jk*jezwfkK)V7)Sfif!3u$G26_nPj->rd(}Irlxb#3Xh2T%2 zw1#R|4!?C&Kz~L3Dp=f~j|iKkqPxZ2(8N-Aj+^RZySwXA0LK!R=%KMz*28LOJKAHw zq($HsVvP{W!uJ-OZt=_)hsPUaZ2jZBejpDR@;f-*wHqx3w`;co@H3TIU!OKN5|px# z`P?ZsXNOu^LEn{Ir;O-bQ@MD8EG`tvHikdF(#v%D#iiHh5}wL6cuZq1L?pL~9XsYE zIUHLVg0jQjU5gQBV4XN}d5!c`~t=3&$hB z*~Q;IoZfY6DWkyF`UBX*o6IMO5JrA-Kf4)^{nUWrB#!wmGGo1OZ3g1`xZ8kzL>Htk z^`63J9|t76O1wwQ{@2`>E3@X}IyoK28@fzIO@Ce1h!mB!>iKD~e*FrSJpy3oPP%7K zjb74}0E;WH0$Z3}FYu~S`zwqiY5;=*j(%=S_W+ek*3Ao_&p2F>$aosmwSxbp1u*ji z5r$v+zlyMmrCWEMuG=Ub4_>O}DvY9{3<$|Dt4GI;CthN6)`i4MQG}lJ8>-s5Nu7Du z0qL&3XKZeNB0lenBo{ZbotY4Qsi|`_eHc7FA7R9CSC}fO$?s@U3w}7yg)y={%3~5r zuIRxVL1R0~PX3!|_mNnCRrB+*ad8kEq;+<5OUui$?oSilJ%u`XBF`~~mMZh>@2q$9 zRgHGC@#*B$fmhhUI4;7Rtp9@_bqWDikg}?4> z;w-rrW&LS9KmVjp$65i{jjZ>u6v|3Py=SDc;xUP9$yA1d_#y6((Nu=l36Awg8V4th zF)+{T7ZVZyo#InW zUP{i-bNFVp-k#dS!lCwDe)HpD5kFtiur%Y~X$GDbbo^9G(%E{N)ga)Ss%GOxwLNbZ z8(|!X$30tXd=_x0njIMb;phU}u>%GQsNiId?k2fo*(V6U&_{V*wZMV8Y?dUyU0$G7-gl^TTW;sRj>CbWRVZxD1_qi%i} z+EeQyuJI@`(1u6AWx5*21}dvTr4c6Ei!eja}Y>{If9Q3Ubv zT1$1ZvUA@S7qw>x3dmf5+f+MI*4GMfPbU4(vw#a4S`3=iAFP8GCvnV!eZYGQ7NakS z<8oiprSo-CodAo-GQwk|YT%+bEp64rlwW)MGSid4rGWp~NRYKIx*XGB6MrOtt?(hi z*4Tgd`R3X$)qs@-0h+K7N=P!-7qnBuH8Vcn?f{+lY@;^g>LXXFq`BDToMgvud7@5L zG&`Q-^zL~0ekD$)*;-Vem>5rCSwf;CURwl_y1;%)oDGfl=ae1gWqce2v+`MNfX$)s zbvmA__8IJuAON$s^z_<8KIi0V-MaoXxyt=Iv0n#-(kuH<(em4M#H-}=zyk7G4;SyR zQ(0T}LGKckn=1$`l!)fn06DKV_^#M(HMHXKwrP z<30>_ilD6JMR`wcfmO2u>H{O*dT@u)#wNn{?0c4)4}Lwa8X!3(&4fN(7Dd$;YCc^c zZX9+_ES4GOmNNE>?cB33clteC^A~;jG(%CcpR^H=5s00O$F|abUH9oMOukeenu&dl zrwUp#z-BdM)LDg5FzyeJd$&z9)GEd2Uz-Av#f$9MXxGe!sNZ+zQw@kfaQ znjau+7Kc@hD1k3fwVRT14Q~{1j0{1R%?iAU(?rKb#Du@>#6}s)d+dP|}Awd}KgoN%kb=$||9!y03(sP&awV;eo z*NiF@5OR4rFA>|LA)a_CEAUo|I=?QJVgMEKS~41?f`ZfUu)v=ItE4hl3iY~^8`@f( zg=ZcJDsN4&&UW$zR8pGwkS0qWwde=SPy*dr-^;v7j@gmIt8R7J<;vqH6675Q0ha>N z0|)!_^no#$Mx{V5c(ewHlQvKqBu!|bPxC*}IQs)ciX~J!t!@DuF_BGXuK_W};c~Q; zU~cgL+MXxs!mu~B7gWPdkF*6&Kk6Y)aSA-QG)wbpUPWo?Ta{h}?^s2lkY!;u%-hde zU#+OsS0g5iO~UuZKDwSh0iC@Xkz$e|z~#8uc6#5^6&ZRG`(fO^sK4=X^WDTggf^-0 z=+=5l5_7S&$m5`aGQ>U$V#-bB;}}Vb^u_9;HY?KlWe>5R3P>%CoC-Qp8%CQ2zmFc(^c*cklE8%OYb!JlGhomAnVI3auSz%BBjQPDnL4N%T(bqz;ncZG{VSlZyx(l^mP?i=B%J~j%2_vOP-H?)ch zF}J-e$KapYc`kCwn{G3g1xr2xY#Bn9=`6eI3i9~zl`1RBorhi;?ETeu$!dZ*Df@R7 z*tm3rOIt1Ht!MHR@U7Ry{cV*Fzf1HxUNqp6r&M_WM1d!X9=PRA%hCCI)jS1jf_>f) z&vW2Ecep{5HYHD!8v_=Jo8DWm{Kg(mq|ylKF&$yuK5$qD{&2s;V8}-8;56s{b(;Ad z!S>jEe~F`ZPr%yKJUSDk0HGw2A(XU71wX$V8d9q-Y2+R%x$jPRt0k$-$q{T(BBP%h zk#p>(fldBm)7}ilO4^*8)=&~X=~cK{@#1j~99#qTDR0N$-v%L-$PZQodRWiArM;UK zP7(vV>1DO^Nf-{p2Bw!3;C1&_Scr*T#nhatg-e#KUV?CXc9a5)_*V+Rh{@bJ)DhuX z!*K^X-`Y3sx9EIp64Nx$Jn?a5Lxm662;`06Xt~}<#p*UiOTb@d<6uEfE>{QR1{k^y z$Bo?x)0vgfn$<5C5UbMy@s{OFdGS0eJTS|{F z`_^#|mh}ExjSd%L{FuXRPIxwll$ICqzM?ul5`%yxe=9mQ2>0SOrmPEM2N4bW3&UFD z=f;4WQPs4#Qf7*ZxA%T}A~fjw>^ZCj+3Jg!ns?LT?K$h0#}g%$VgGdA8{Q?q>vK2D zT>VL0zBst0WbKAi?^-yp5x$Q$sUYI>``m4(=&1$N^wEnXtj88ssO?8!$5h6$_~ATREi#e~9(z!$Niop!2@SNcHdq)C2UEdTjJ0Ww%#&m` z#mt|Ebv%%0a$r=#f$sF*MRnk|A~QrWwQs7(ttp4&+jx$=>EKQ8+BI`==H1>^M&d~T zlaB#tL2->kZebf*pKdoxeT+A^JxZ-v|E_NpJHxLX+dj(5u*jI3Bqs$&ip2u8J7q)G+*1isKFP0 zIa`(tj!$vS4qk1NIwBzoyg%g*)?k0l*H0se9{Wqx$<%xy$i=l_XK&!^P-K_}%B&-)kYY5flJY&I4p*~9zf#qmTl??H3*&v6|X zwb)|w@o9x_TtO%;z6EkI(Nj0$yyr^SwsgARoyABU1=O#59Y26ZYHjS`bI0?%zQIZa zBC*y!yQVUEz=B*X6{AvealTH*&Zt7bKG1+3>NMlIdx?!;BRGcewKBDqZ?gIU&A=Q# zM9)AgN=A}E5C@RYJk|*e6M7Xk?~W`39ccy2QEes zYS{Yu?EUf88A4z$*BJ{WjIQsMU)=1|u7n`vB3qHSW+@Wzi_>x=T{n_8hIHw63cM3- zVf1o{cb-;Q&YMiILPH2e77ob@5X z-t|AgD}F6R6I$VA|3$ao%e$};G~H=BO%B3w{IA5vrM_Me@utyxa!ET_?c-hS?WXnf zCpP%_ZWbb~_vtr*!F57~7v=7??k^qGz`;?Ve_T_sCD4jy>q_d|@;%Xmq*qS$VDh9@ zBg&^Z^z#V|fWns*cMQ#d(@F!mIT?Xzyi;YnO9^H5ehD7;9{&U&I(GI)`9Yk(BS)1S z0WM9u?LZG93kO~c_;TvS(Ql6uXm|F4%8>_2uT!=M*0umpImF8tRuAyuWd{441CxRM zE?BA8#*2nL&+rf)pI$m$F%CM{nd?!)_0hEkh_g|^t<+baE3Ljb?9m8I=&DPwfezQl zT6*Q2_pD*wi|0-nzI}eJP=~VsRiR=vUlu zxu;>rsw7(cCzUKoMvp9m{R}DZsa)-z5dUME)13bYbR$VBC_><(lU|2EXwTePiQ4af z(LO3TiM#&Z8z{b9h}+=i`n>(L?-3suJod}k8~GV2_#LMEn_U(i8k15q(2aix)cRQs zSjjY%B}4?O6q4_*gBX!R!2?+{d^vmN_YXkN@mhz|WUbvg;5J^Bl&+18vR=`s2OYwv z*9wkcz5A)|HWDW`mh2vPk%GbXhxwmn4`k|eG0p{*=YM89NVU_VCgV2082FXe8Eq&8O7=hSJZBEN^`q-5%gDX&?>mC4NTDRk-*(79In zm0!&Or=jgoHA-Fv{|EW?;4~P0G|BI4we~j!1PBAS$4ht60B7m`#e6f5GA9(=dP^)O z3ruw5-S6mO4|>)sPc>c3%x>^I{;*@Uof&4>J9J#^OkjDj(`9g{E&A3-HKtN8jCAK* z(^k#bgfH;~9LuZ{*FJ3&R8UTKn(#Ohl?BGo ztygQrPsk>_OnG1@a9H&k$d^2*dand7Ry{^)i>y&VgSS+5{poz0Lc0(GW}Qo87G6#W z^mGaJfq}sP70M$KN5G(M7@w@*xAq3L*Msf+nf$Fx;4VF-f#1#Jec%ycX)aS6YVM46 zADtA>YSimBrax@Uc36!r_WLZqsh6F@=o(O32+Ou{qDADS#X8gIaDS>QTupV(YSxB= zurc{C;X3p21Of2Y(UuVfojHKjQ|5#ZrDZ;PQl!A@bX6x8qKLzeU_J}Qr-z1)r|=#8H^}T$JZZQ#qh52B~tdRH^xAA zxCPuqsDjcq0!D=E(kF_KWJ%Nf#c0_@TXMI-eU&MJ z(F9#u;GEJX-{EfNL|z6RBIVJnf?0x#_T}E6h4D$7Q6xjDBUGYXW@d1@!PixUwusV? zCvjX(okuB9jzIA<+>MGw+|g=esBOsbMi?iE5iO}wt^mpea^c8q$oAAf>D`CeQFJtHB)ln|P9ksdm`_r=HdlD)t zrVKj@ma4iXLBL8&2rc6>Jk+T0$cBVkB=+u4p0xDn^WpCYH|+X(QwaJ=qzzS}iOJh( ztLNkL&vDPGZDRkP!vNI}vY8ni?x+-KKvph&^N+xm(1-UWVeBKo*ZdeXYUg(5?*TWZ z_w7b(gwHbf=|PkF!)eO9mDy9$9bi+U>||0lIM8I(+F!M6rdYQW?+g%zFCs?P+2o6y zGsbaNvGk>Jw4F7bORCb{>wR!92#~rncW9?n=>y{K+D8LG+q7c8 zm$6(>v&pSYNL(7&k&PQDpDLmLI?cG;L=B1hO!s(w?hEzoGA9TsW>;Q%hyL+?j1>N7QGr)^iBd~WBpZ*i}N+G=9}BHgVaqZL|IP4ewK5S zv>~JWMXhPr;0)L8QE%Hw8_3S7rP0YKat6a2cdIm|3(Ctc03ns&L4TrL05Jg{29y=V zX3_6O-$s}}hU_#>G`|P1h3Fn8x?6T_y}kkuLy+RJ4@#z{0bpj{i9&=`ZBk~475xim zg}m82bYng!T>vP4^8k$4Bl|y|SP}C%cd!f0lseIwv^}LRiPYbrbmJ!?nop^jsn?r7 zw)vTCcWqnJei5Gi0#lpH{at-TG|6kDoI+R+N;>m%rH<%Yd75Gpd`eCR&66b+m z9B9qRAN9d1`w%9SIb3Cfw%qt94u-vzFzdy6z7A$;Q&N12r7A~!XXoi!3* z#}>M?7w_{`6Pn8LsP8E!ryY!X#zsm9>nyFaT-2S6BxiU!=lhG?!aQ5Ems~6|u0ew; zYWk*1)@xp4o5Lzs#+}xd>wGhgm$P=e`GGz>Re$Bxfz#Du&26*i=>b>#r!Q;Ao<R8wVWS0Dr5T)f~kbQZ4bMZhKd?BJKUIu=`rscfv}!RPaJ5vt|+6lv2*e>FJmwaGZ1T z3932fWGC~%Dt`@>nI*;1FDR?kj{GY8_gg@(JfWZm*=hW^QhiC*Ntr@2Koq`@29lE> zPWCiU%T?hgzs?HbD-RMV918&PI18gQ-O(fu?Dl~!ZOQ%fM;Y>$9yYzc8EYuOLR1I6 z`FrnqMiMn}gDj?@^Bo5bsl7UwxW2KDkLv zW}O<$b69T|S9ud3sbd#3lBskb^dx!^14f$AtVeyi$@*I8+nhG;dF$=ylFru`%8T8b z=bNsIjGQf39$dXj@+JtjI-(|Mj=3{SA`t_Rj~v;OIr6ZNZp(WCQ_5>+VjMI^TUr#L zp0NcsKe%j5<1vlT6DKA69-_#7SK+JK-UqYGZaO+59<1fB_i2eeIMiDe4<-ugN-E+in6XG|${v5{ExfwlHtF zxF-xsMiu0e$_Y|JgzCxsO29UykHY#E1mP6M_NVcEJE0edgXjyi&-3V3Y02pclZ9FM zt5|>gUwh1uQS#9y1(5|dPS;j{SL@y!+R$47_~)Hxf)>Ig*eR^`G39Io1>S1vL!c>j zmrd&;3q`*IDPUXmo+g@%GQbZ|hFQrL2gcfcXXt-Xo|G;f5YfQTU>eWVc+H=b41{>% zszTK@+$hSPV^nldswT)Eo>ZaAO>AfE8a;2H40AcP1Y_^G9Orwn(s%gVmFSj+_p8pw zP!TU;vW|a;dl`ldTwn*9{PU2y9<1Z)NI!ihu+874+?;R3SmmjQY~G1sd17&vKnZHv z&-iMS{I#D>-OsaT(_zJXqZGGdQBsQoI2eG(vwk<*Dk^6#=YgZmOlB*%kwFDk3TW)b zkHF&XUAs3kO}Ax5+k9tzrJUcd5^7LF$b$0UNqv94zJN%eac;3;C}szx9r-B7E~o?Mfp4r^k`KgsJX`RZnj%Cx@+mGIIBta3BF zcUjK=7Sk_9R~vbg^|2GC14a0^Qh(?Hj;Tk2^(5R#k!7Lx+MmJeD+5crD5w*?+X42*BRqH^~aAx8~nLBnOIcEn>D5REgP%cU;0dm+1I4rz12G0 zIDb=l{CL$UUnnYCsfBC9ySAxJbd`^1Yiz|QW%}$}O|YnL+fm!x?>y(d*u>&atqr>T z)Wg6N8O?M0R}BKqZzr#7ZxQJr@FAcA#2;(0&!4T1K=3FP)&++XiO-JkQj8NrZNO@W z^szD8<#WcRfg}KjO=Vz0fl#2#4)ouvJgbHSfGxk#o$m==HP30lNvSEQeCRr_`gmmN zP1M0>{6+0wtaSiX_OXTxm8pZ@u-C_AY5{W(1K9HacM$_;8@(7mW;!jU3)oUdHcUmIA? zGFoT0^WW@4uy2h_>B5#5jkdk}v{9RORqNGmy*6k*YLAG2iTu>W;#PvPpz9N$%B?5f4?uh&HT;!(P2^ z8yS3%hM(|-gQNQ!`Z(DOK4+vuQ~A&_3jVqC0M)NdYgf%!mq?@o+MhT@Dy0X^KS86p z_MC^)tKqeJ5&jHe`@o0yH-qeebn!2=xx;gOx60ksEOxiV!E0y8?zummA>W|WqVDQ9 zn2_z>!@{FV3LP)%amP|rySDopZ>{oPj7r_VJ`3A?%$2^u_guLA(bZ}b;EN-{_~O_` zblOQImR@_jCU++$<_8fo_OZGSuiq~Iwh~R40atvQ6}h9T;RcZQ?9*wGYqjEkoCebI z(QW7A8(G?_Tno1vfT)?QaG(_j; zQ7X#5I7XK)o2{Z=51pQO*1Wxyz3OB=&->Ed7DRu>X+&&);GavA`4Dpw+o&><8F@@# zgOAH;!8x94$3Jj0*LzJWe?>93zC2`!R8LDTR)oPva+h$%B-BBCRsQUP{A}0sfFN!( z-BK?C;jmlNkvglm;l7-L3K#}>0Fk6kH^~TfD;40T=wFj{P+2Q`j67#_lt1kcb2{HR zb%Anu*T8!{{zP>&NNlOC5Wl~l4$Tk)Btf#hv>&k31yA=^KJ26KXSVr&pV)SelWy;H zI8E1k-B6hobt_uMp6bJMXdXm4oq?WlXc#6(S7K0i@zms%cUj`ggBK;cG1G#se?B7e zy~}lezb?b)mn>-h2#Ipiq~35zjqOHaKkfZ82KNsMFZZ5yZ-tUvnG~6T?jVq%N0l5} zc5Zfywwqo2YMzLn$~g*14=e~SM;?9y2I1lmoJyg*#{E@IeIvT9hW&ETgVRG5OXXK> zivWpC8ht|$IKHY{MgYBD`vB&FE7(4Rk`JQ7ZTbHtuM&Jm_pA<793X}K0)^Emw?Obj zD*x`bcB$_@k6mn=q=1(j67UKnJ(OLPq3nJc5nP4KLF#kuwkwr}UgfaQTLbw|xMFEu zPCfHvA6&gm5}kYXi;38=GWfRrZtfhaektoI5*xjI56p)Ba{a_Q5@xh8g&$>d4?V^S zoUN^>c@3}!0V`Sl6PAF!zY??u1r$K?TyRjED(W|@NLqB2%2aw`NSGB52Sq;{og)39 zj1$M>FksuTHw*_su$me7t|O ztm(Q|xADT#-$>cJEHC3(=%mN)DFPQH#Tms`yanijhUk3^sJ7CSW7>D|m9~W{%UKz{ z9kq=0?2&9a!Zo@4&a!5^cG`EZvxTlPNK^3(g7%kYuBhXQZ$r zYy@97Zgq4?Z88ni?REs&{W$&s6pF#<{6@5#PZpda&$={sK=$AvQWvQ4#NyrZ;c|j} zO0CLNJn@mvRq(L!iZn=^t(p^&c2cB1aLYI}C1OZy67g9tp^&B*aY%2k`9zI4kb)vz#4FGn6 zKyjFJkfL^gZI}n0V5AryoxTg~zzaXw#gJF5Wb|s4*^@gd$d!|vD|gT(9(GXVpgH3+ z8HZprc$vRyLFi_Oil56)#^`PxgR{IN6JrVk%W6cGw_RqxCO_=hBj*8?{XNt|aOrEYY_E23(k&>f zDYb|nLznQ$Mn?x-{eCDQ9e=R`_c>D_vSwP-dW2Nv%}XQj+ePd*2vCeyx6ard4EKQr zNb<_*z@-(u>qEw0vg6Dl*Ae_l#mhXq(0o>z*h=Q=pUV-SnGALlxqBxcY4ZV~baoMU zdD=uW2h`8mpW2dYPG;(8zJmNhFZqZqK=5lraPfs(5l-a~WH?gfOe?|N*l~e91-ca- zZ0XL^&>p;Ynm8j+Z5-y;kj44aHPUo>+UO|xE$8MR=X|G~9@k+lisz~)U$K}g=%zKk zLzX_s&-B~fJsqB{YN!W5%KX5&>`iA1TNy5tF+epYG>6)N@6J9ib)rn8t}!+Ep0C2O z#hGCwT2P?=c~%f}aIic-_GR^w5KKc z6n*2Nth+$#6dGkq+T-)b6$V`+6^?xa-?VFiXJ6!~d|-vWj~Fq=gJSdwAyOm704PxSypNJ$J%)`IkSo412f@i#2V#{Ce zK0U!X)N8+;vh4TtGE4F@75?hI$-QZs^}xv9$f!y2X3Hi27n2;T(uC_^MRI2N%{JPu znW$FTZd+1N_W1a^tALk8Rc@_!3ool2iI~WnnIyoJ6;W?DcXB{3lBmQXpj3q52iD#( zpopM?aUMA|HwpyiX*~e`A-n)mGb0t;qeG>@In4i!ekL9xxzyvZSELV zWBIYTJ>%kuIt!BU<|vjtBg=eYHZ?e;7YxiMnh9n^>Ysy^fmA)to z-}hoR{TAN!@ND4ej@Hox^Rtk-Nzt_|b_d|~XDnV@_zvA@c}dUhqV`vths35T5F^m=?BdKKJl z(y&)aD`Q>;?2h!mVh9<|2{^@p%br5hj~@^SeFZ)u(|sH8aXA8i&*h4Aa9?n@shx^H z51gE7J#kk(uItMb_YB@nD?0&Dn=$~DK0H*8{^u$<*2*`#COxR#8jS&cnMZ3He#8ui z{@f6@ay~V5Y4oSZ#X=$Xb&cjnuT9pQO=geUn&8i2x^1Qk!|fA!eYu2Js}^{UVp z+YzjpaC!3w>vGOgjn~Sjl&rD}38#b1PDF=Pe4eW~o={)qF?|hnUO!$EyD1v7Y&MX- zzHP1{rXc|HyB2+!{oGJ5)g@ER?oGT@<7E0@H(o(2X+C=QQ$RIhk+0~@5h%5 zqqXFD;Nr+FPa=4R%`?r&I|hhN;V$4F&rU;ZjUiWw4_KA**-Rrd4)c)K)kL&NS5!9J*F>TAb?sDqq8Bu50k z#~iXb`jjKWwourq@@4XE?VAzmW-7sZd2jeQUi?mX^~Y-*IZo{z+!z=;nE68E8vq4+ z=cjkx;9rpRKgJhSGBd(liO`0_1xWK}bbpWBu(MO&hOp$q{JsKq_tAEM(p`R|k}&m| zWFzza`-~(m7CcP)4m(v5K)McPp{C1A+!!D(X1N2ksm3k7>}(wHW-^1N0L%Fd-j5Im zN1Qna3|%w3!OKfNlVGG@8UXg3L60pjOOXSWne_%4doPG(r%o3_fxAq4Sc2*vsPUU) zW1Ai+9V5)qj1KPb|Qg9)bLw>m;^Ji5V)9KYjmd7)O$aXYvF+$*yCfROSzgWCR~ zk2YUkwPuab*N3?I_vYU@+ZAlRez*F**7jKfFmE*)f4YhQ7g$_SeQV7C#s+$VRCmAb z+Ns(RUAude;H8Wv4#Do-MF3q;Fv~yQ@7(nfQbnI+g-v*_3J6|39ZUmnH47Ow%hK4Y zo69bi8U^=dZMHh9xx2oqy1fo`w1$Z6d`AcwzqomrQj<^?cQYo?a zwie>e3&Y#*+Vp(9C)6vo_M%yn?@*&})5kCKwTJkkLNvy&^DiX(>FNlOyE((gUiEo* z?Q&ORpKSb$7dY7lH%&U)UoQ7}w@-P$m%4f>x|!q1YK8|`53$kBW*0BkrLO6#0ueu0 zuEa?h4&-V14bC!f%|GbroIxjuU|Nd+aD|9)fu@yIUg z-_>RI${VOte_~j+G+@Pyu@QRM3Hq+*R^RoR{pD{}boGRwYxUQ;!{?kuezh8=4?ZzM zhpUPn*srB8f0sw+q4KQFp{2Z0nKvAZ#DhP3$IG2AtSVpK)^oVPqXCZrb0RTe6-$Xg zLYP;gJDo)QRHmh`I;tf&bYpw~bzvNbyaE*$>P{&xJ*>C*3_O35!FdcgsZ}Rj!42kF z08|VBMaFEyn5Q_%;38Q5QNQKJHtm4(tI6X(IRW-qj|h4l6kPaG$w~BWd^9fBWA~H! z@G*O-5jYoE6^jio&fY7hW0hD#5kp_cr_W#Ia`?`6sRj-w%5;D^Sog$Nb0z#`IXGPD zhoMMDb^4K8H6jq6iOKB5wqUIsY&KEqrTK&I@6-<;II7UaX_?nonn(ZKwDGl1{O0R2 zjjRFYGFjSVKj}deD_!pW!AI}v0gCSOtK9R{#&}`-aAp(I6ExV0aUg(GQm{c?=&2eE zYw(e-A`mYJ;J=$X@D*x5g!nZAHGF%|L9Sz}%K|rz<_paa?c>sg$rHUdAFY!27U2Fg zDT3y@RIrUT=-CSHL}V1^Z&M`;1AluB_6A*7HZj}F}6b(hATTeuj% zFV{^6*ED|jLa6??F>1f}x^0Mp9e$RvVbKV4z2&@!F8G4gk`iw|NxC%tN@cHPMW~0& zIe&WM+Ei9F>djEDCAj4WbJQt>6<&^ZnBB&PYWw2DsMZ4^TnL5bWbDj)@Mz5xunDhi zsfIj}LGPp@5i4>Jv}M3;vr;oSVMI4 z1MfXT|Gp6mKH>(maBafuZOVEmX)VNgiofyJ`@K66dz&Ed`2FW9KPjDw`s;*i+iSy* zik2@UvhJOKR&dZH>~+nq-nUZU@AmC>vy?odeJ=Kt-9S(P*h<`W@()B}^6b3zjnqJz zQCH6IrdI(iIbRA#7XytiUL0Ef6^x|mrp>=HyN}P7wF=Mn{Q9O!xpQA$)wP|wi~^kJ zNW@qT#w+y5v~!^qfcFw>hsAYQUM}vgEOV~lC$Aq;{;`%{VJtw? z+gsC_Cr7^c$3Hw5qkfazRI!=AWY|~P=&>@eQ5iP9PVK_2TcuQ#PB~QV;4GRRfb(lX zn!XapT2f*r5?8vc8#a>e6o|=;6sgvcQ)UYNZ89rrNA_#UOl8l7e*t}f{)d? zpi*L&CSLalX7Bm)1aUWA1iqt)!@i9-IP$4E2kvqh_&>+Bc8*jRmos`RsU1vuT78Y= zT4K*I2gi>PsnN*jM-y$@$|bnecU*yccF*;_gOr&FuRR)n+BtFD@?nqn`-+W{d(z*Y z6GQL;$8+fW@%@r$SwcLC?$6wZUF(piWAi5rtkNq+G(JI83RfeN(fb)xVvKImNTVL# z5)TAj;1=lrkzDK8H+PkwSm6i4rt(+ameo#_;LvAi;nf181Q&p#?~UBxA&RLmM~hm8 z@EUk`vv@D1uaQ7m_IKUZKas;(v|q+)k_*cLJ|l=I{lawjJg*VGZO7!>>~|@s2RCjP zC5|k@uo4~&QmEuNTvGAC`#=)7qnFYr>Q22EU2?U7&*4MG_Z@~%-0+5_jkK+@Z(m1Pj5@7jZl9cTE z)LWOjYgEi62G!8z?9fhoySZ$3y755-K7~MHLj>LK@o4TC>K}_nc(+88W&uW9+?e2l znrTh&QYqd9N`{!m?Haudu@0^WXLQ^D@CI)Kr}V)#tl=5?icLchlWyIh%4-+=^bcYs ze1yqxx1qmMP?+=5-W18|^mujb9(pjKsI_q_h;^gM&k?<4g}3VlWF>Tr_C+JfwHr;$ z+?!p#a zqgn_lD6#c+=@W%?mz0>1R&Q}s8OeA<8UqaUoOntD`)jqVcXKGIl_!B>olq8hQNgHc zY)Sb57i~0i532H^QcI8qvFr#Gd?-s03`c5}MG=Qt`p5rDzFw|WWaChY4t?dToS&h-9>@ficLN{d@ zhtBE*wJ{LCrH&Rqq~3Tp2Z10U=TD!yo;X+pcT1GmiS$3VU1pd58>s;PVvZv6-0P@2 z6wL3WRugyUHVr&BDuhrlO@W#U(R{Rx5gL-aC+V9JB8o_51L##`9v}?4-syoC+)|e5nm~1=D z=;~N+l<6c&xeq+cdb9A_>Do8BLLMRgZH|BBwj+W*qf0hbyPpj7b+6_S#2_+N??9x5 ztyk2G#gTczXbBFaC^k;BKT^Fe2ZWtCox2l?k9;oAWqlQ#-*d)BRbtAnwe#5TB4Wzr zFNy|5w*PPbN#vXQtwnBRh`^uza5x-<>Y@{ZDC1$PApcgx6zA3-`SH4w4L*(e%)YLe zRrCnvdTgQdWHi3>Yq%@9bf=fNw_U_|z?o+LW0N|*x)pm?Z6gxi`X=Z*h}o}Ogb67# z`Cw0*`PcUNpRh`w(04L|yt8b+=xeinbU4pUn-+W+qMNb?>6<%Ec+yZz?lU8nKo$)8 zxC>~G>C>c!5_K*c-L=<(p4U-M7kH=(y7B^0u@(g`o5r&jC>^qHbpqImA-nGbc=4kB zP|8n3g@rwN5bQ@0xU;4eFU^p@oj15{RONL<*VK68+K3rb0QV%wV%~3Xy8ZUqzcSwn zm|GzS6nfRDf88k_h7|q!mHMH}7st4^+`1Xie5Y&d`Mg7h7P{iD=$O2H~ zPw=_-&D7omjXQUYa`J}Mwx=4flk$uLf|ZohXjZq20B03+y90SUW)mI;ugcf_k ze+F%~svEHAO z4#E7OpLcfMDsH`)x)UnP(6rzwrS@7HRjCd2bv#DoHkdhuF$6t3ciN<<-sUOwv^g4I zQ)}AnSnBF=>ZK3gyMnlovX_LzOvdNNjg-Ex_#}4lgHSFf7YWn@a z(P3za)R9lL8YltHVXCrzuHA;f=|)hh(({n4noi5OABjkgKN9jb!9JyBCseEkrKYod zR+K|25}^=cnlnVravUA;&e!Hjxmug6>|VD-A}y@_ZVX`ucntJ$5a1Ee{5I0x5JS?p zJ8eVW_7uNhmHJ{6y*Av;q!CLuj4dRvZN-9(kBok#9yfkk%zei@x!yN2VqDoTTx9Mr z;rr!DZBFdSE}tR$N7mGQFnA5xd2GR2^Vb@4N^GQ^BIU!-?Aei-w-y~CY z8{++&U!ryLX~r04fJyh1qK8iLdU<3?R7VL!rMZ|$Dsk!ir@AcNm@ukpE2!{nrkM+K znp z#+9!8SlLUOz5Vmv=k&oFjVax(v7LE)PkD;xVNT_{Jaln__>iHb8q?8TM4$F!vb>um zbNZE^$cL4K*RIkSxHWD{XKW%ZG|y4eDjl8m9)C@K7erOzm14&G1brCQJ{Q?w-Ou`3 zaVruPO^$sslf_%WBsXmQ%XTLhqpCX32TfueO2H)sf}TUlTo1hlzVJgWv;#j1dUg~7 zNl)|R@w?W$09*;}l^d+FO_1M6^!{`(3eoD3P3R1R*_7J3dopjkL*2;hWX zZo4oj=KS20-5ox4?dWY4A_e>C*fC-BLox$!m5D1k85sqGkgFG@Pg*@SC%;Z6=ra_T zzCn&3vfu9$9B=EDnyKCu)L@7`Ll3OT^+?2PdiTqVVj4Yidh=L~p22SPvQ9Ofv#ds+ z=wLdN^B#KZ{=K4m8cV+>gk*!Uqi2IepS$`(N}~f^DqyUJNGMLjxq6?SLA~EtEG2de&%}kXtGHEXAr7gOSNCFgJ^#lE;Vx``d?&s)U44m{JjCeRNwc z4!44RYF>MQAK;k}pfiAYJ8=R(Yag-u#4iVNr!J1wHE){$Isr~+(z3td3d4qd-TaN6 zc+&@4Bu?aEN0w-j59XdKYwIiUiYZgJztPbY^ZCQfi42*Z9=?0z6iEriX{GzzWd}`k zy$!~ENL#iKP%CLQVI=8KJ`R0%{|Yt@tXIC)61;m47c+CeA!9sH9I3m+@*iITZFm#g~Gk1_XibYvFt?AEFyupy-$=-}W) z8LHm;lNOkle&|HlrsGHjY%|_I&DSDJMB6dxM&JcVPgBv`ETu3Z%D@;>ukmXEIFzC# zm*!22{s|B|h(z;$kZ$z?kj296xeEu*d#*2NSa6{!HD<=tyzM@iQ&=^N?&UyY7+{U@ zz<#^XPzAeShXd+S>k=7D9b7TS5^NH&AOg-QXFJHof3Vu88?B`wcZJH8wgd);0g^+h&xcJr%QqPZoCKfLcZ>=P;Zh+h^qCp%QipvOO* z2qQje?>vu-@9S?K9VVJ>U*1`sZ;RNL9o3;;X+g40 zatY#b!xt$-bf2$6zcPE>h2#dOUorQy`hD?1uKvI5CJX_OKhHc3Mv zy*bP26^aYdY^vZk{@X&xBkV+hV|7t|$Bs|V1U2RC#^5Y+xLpMslKqLFs1%My@P+q* z(cLRRA>_@Dd)z|D$qh!xdS@UrTdntUDB0j28C6*)3*l(L%ypMK>)RFit%MR-Jr9&j zR?oW}a%u3M%0Ifq`CNy>v;$Z=%?`6JTPfp@Ev@`$el5Y~&07nt%3a&>Q$68)mz<6m z@gMU~nz}$$6}Thi7;l^wft9bs#*@UXz+EOwO)jJaJfoTPqyecV=GmAf()S=qeUp9q zzGq>nY@E3PX|FEXhA7sff`6mC)QQ$@e#2-78y&=|E_XLw&**rvHe>!x6e2^g#ckK@ z_)k7w=tPPDuB=7SGo79#=(*03kdPz!Icg?t(*ElqE-4{OyFkfs=7h%WJ9oTRx8=nc zivpHpAip32nEK}j2N(F%&Vh`JsJYzETRb}n3~qx&>xFMbCpLAs z=M)*bTu;+`Ln=-26B!1O^P{QZgO4$Af>sXT+ zg-8f%@r_eb<+5@15dr;8pBJhz;E61KJ?w8sj9;2Cb-eNC3H;OlMMgQ0=ed8?SPL6C zai2C0qxn9QnalqspOd}oQX}f;kEn>5qPflZkBVXA&5Fm;GVMIfEsRQOWeq`xcY@TR3orG1COEf3{}H?T@k51M_LaDWF+&4s}z*UZZbjQu4W zX{WmV^p8Kf9w#2WJ(xDwXk_KPLbbzuCx%#LTP*6>B76EJR+Vd$#wH)H zywCE$?uN`!W;>%!(O2)+!UBSL=Xu{&j?WlWa8%Xob#YTJaf99hVu>qx3zLw8qI6l> zf(?;?col^(8R}1}n!f@w7w5=#!JWt401?LL@RYC;|l#38*4kb z&Fc0fm@yX`;cFh)-td7e=#9GlX|GHL1=Zgl^OEA#`FdPqpiv?7#`fT7ALXe@-&I$C z(xK3WR>t8_28w=6Nw)+%uMGY;msC%K%<+fccV7BHER&=pke>d`IGBF}zn-6d&@CHk zS6E`*$O zm6g=NdAoQs20=i(d+B7=Z_8!Xu9T#nGo=SYRScH8cBWcs>3TEWqY(4^<|Fk;M0C7k z=n5T9MlnrwSDUn2)jx>5y)TXgXRxWMGZR|w4;xMxi0P5cn=A{pofo$HuectqFcm8G}^LNwBtlWqT1zMeyIRBGIg~P=CU(DjL=z!l4xE*DdJTY}#N8 zrWX+%U5qg)r!#VcF){P7LLn5kNW?n1=9u#T(6tRy?ac#f9~eLdyZsQ!kymiSOb>$= zlclXCj&$JY4n9H0)3#eVIGr(davm_PhB#+s2oue^brZ_a#iLg{B$V>>0`(}bvPb+G zWcxaQWJM=|e_eI|N~B;MKH2OlZ_?PG*vNt(+eTwR*k9u9X+Y~PeG8}lv#ZKNd= zPVUNs)2>dtoeu{UP?-AE9AehCBUnu^b#{(jIM`);N996iO;8Z!2WkDJK3zvvM2seF zu`j1KliuFM>$`i;_Ko9lDOBvAms+3wy?q-{VS^5&{fSs69J2}_Ad*25{??X(|LVR{ zR2_J!#=`r-Uy%M?+$#vrqOuvZT=USV>c|<| zvavNKV&2_{p+9y;oUM_Fq;6>>23vS=OL#3ZMCq*zuG(SNNTE_`OuAW;%#OehuWv2% z7Tx^l-gWuilifE%r_!A5?8o~Zu;e$QNAjjl5b}tT*-Ev_%=)w^^YmFA@AIQ&^?}kC zYp%t3 zw7HG}KG1}wW9{idzv-Iw-v9?5*Rth-f6oI%>>sxI%_Qf|LFn*{D8MbPpuuP47rHK= zqpw$ne1=&;$x9-ymiFW!OarF}@+zqdxJ^y{&7ibBveM&|o@rn9z2|+K)s}SB&{N#@ zaJp)1Mvji!6!y<4-gXIPbda_?k`!-Gv&KobGT+bFkKbPlec$Ew()4DU6V+KuP4g?H zplZIlmy|#y>j>f9i>dF+8d$6{c_755C`$qhcFf1S^>$KcmP~+2>#bI;ILVvwYnA!J>n-Tx7^wL$67nmp4$ukE5*<-G_ z)5Y%V*)1>HOYVkP=ea9>`I3eE?cqu#C4F?$?ym+4Ut3S=7GpPN%pf-h{l_qCS8B&{ zrGpNM--f_b@owOR4gXW>w&;b=QZL+AZgAKuyQg@qR&MaU+-Ui$OF;!Ff#vZhOMoFt zaLCw)bw(pxbh`d9qh??`j-s^KlO`RMdxJmn93T25&pCi!!8GPSMCxBzLxk#lepbIf zL4i3s1D}C~s4hMT!$ypUoEF-tejx9Xy($#`6Ta&-$($C!N$=2bbFVdHuHc8G!zhtG z?o;u&`}|f8Az4E?tDW}#oKrCs_!H0`h^^x66NJLQw*iflXnu60BW z-lfNg*z`^?9Q>s``kD8WXhN=f=enS0CEywICl&0%z*ODBkALm~kLLbi<5ssi6QFU| z*H4jS|Aj^@0iXYI=RD~}G!QMQ7aRe7+J}!crr>j+)q+>=)mEhWEWf`7*m@El zk8{usVrE$hcOd!696Q@XD_GatN`({8M6m~9uIG75&kiK<>FQ@?$PLcxB8L-Et_@}6 z^{-D=JGIUku_yxs`B8-W#YDT8$mXv{wnwLb5`lj?Gdnj6pejRqU_IHR?t!Dvs&LEF zPu0(1+m3jR->T=mAM|e1RKdde$zL^X!6W@=*_x&<(+q}xI*77-Vty0lME#<(f^UI% z%5?AZ`Bgx&iKUV^r9G+fdJf`Q9$k6{$h96qrn@=vw_BMN zxOn9Es-aht%y+W}Dc_B%j2pT@k*-fa#ATzYH1!R#Ycg@Vb>8<1v z{v=C=|GUL}G5Mbs!(rx&XtRsYo$r5!X1vlEY0Kk|)hi=D65F>+L()U_M3Xf!QK|S` zl0$d@_&S-|YtOuap-y1Ml9OkWUp2#vsy9GqA?D-!xDezy0&n2}R+!S@k$<=FL#V#d z4v3_S8#q6Oe>wvXupUB_)4TYK!^W!Qks3jXmkVCdvo$sw`}~AHW(`T4ieq%wLjT zn}ybmF6R!ze;DRKAmb^kKMzk5)YX+;8(NtbI7ww%FDSCz(knlmHYjOtLvXk2 zBN)0|SxMa0PLiEU2e@o@OqlWxf&UQmnS;_{QmWKNN zP|8Rie08ri)ND<{(g2(+fTe*V`6bf|WQ+52pek%-i}M4kv6xK_{}Cc{x`w(aYnM+O z+L88xE5hQh55GA(PaYaGRearg^U?_I+Qf($bB2^K&s?19=~3C;Ju_Jddf&|zG!^2h z&J%KC_JQ(n0x70+^TPp``S23rv@Ig8xMWLT*1`KV=IgbEh~syCuosB3<$=m>bDIG2 z)g}gXj^-6#Jua!}UQ&jvs0asgK5M0VO?^Zj)^D?6f1>C+!{DDP3xcp^$yI+>+4N5= z*lFC4E0dI^S2lXBdxU9@Su5_`CaXJmyxMTvjbg;c3_};kB21=qjG?- zC{Q&I*;uQBw+ni%l$J*~^a*+%9}NQkev^#^qZ+b=lp;S=LkgBjXB|77jy;cNR+|40 zjeHZa{dPgVI!bou=y|HoqgbL28=l<27wx99bSmmomO8u*`?2Gq3{kdjBFsl^fNAYf z$7o@s7#E)u4_;9Dsc9l+xnkt@IZl12nR8if{c^3gbo`VmDg+j~>Os@RF7;8orZd+K=+6M%JXhK#HYmUz%q#J93 z0YJ7flF&3$FQ5WWngA}Ij!kRs4RyQY`%$C@+sF$|tiQdV%f=~}a`04;QI+J2k*>s& z;j(#mKc@b~LD9d{hGo0(jUV;Lu+j#3`yo4R9{6rQ8>E#V;-fRLVMdDKwwOynjn2Ru^=oA?=4}kk!ahzOS?M{PuA%K?xOuV0!r2qq zP&fs>6;3*pv@+5tBx^f0<^2duV?an^#Cz$d-2~uGTd6aodlw1HuH@l-UZ_}W*R-H# zgubs1MN}VTzE}&P;M(Hoibej)bDr{Z)F4tj8zv8yhRDn{l@j&k+;v?P`J?B|jau9!3J zngD?e2lN3QVc8{;Efio@r~Pco-}TwcvI1d!mcIk}51$5FTkx6OH~y=0XdMcLL_Y~o zv8-}>xSHNXYL+E*NOZ6g(w|dqTb*NMRIkj}=3f8KBZa^cb#PC`m^ANiA)z(rywtSs zvoeXV?U3=OFy`-2b)F^(A+H&~T3MVHV!{MEID|3zQ&M8l#S(cx;FUm|apC^MKNcEJKtyh@^l|v2O|}4uGs7p)!QK;oHFx09QsseB%Jr#9IN9rg3(|stjC5K z(rR*yHADNq^&1~&ew{UAN*xOK#Gg5ye7tY3Vp*}8zQ7J{0iJp3Cge@m^O^DdYH5ns z8-$-R*8w4GW%Qwj%k1@plaqga_R`e8%}OJaHs`(2TbzF`<;nCXP#aLjvt)t6fP!c@ z`9NTz00qL2?BWcZ6wFX=m1of%V4BG{)Co$$R8k;NrpVXF%Inkok8#n6*%~9+uz{y} zc_M+b|3#R)j=Ur#M*TY=+J^jigIk{(tQM;Qg(V`~Ap;QD@wks8VbpiY)`^b{)(EGQhuT zF8E5hE%vlLlx#gWvpL#pB_aQ7nW|zyy{?JI9>#aHleBNMQvns%It)QRktzJBPuB%}CEm1N;rL_UUAZ& z%-L-Vf$t-8inkceeh2;)qa;IsUWSykxO5BYEP&rL4{UND%vQ?ZhNvnOQ5IvZDZ>Kl ztyDh9?S9{3@I0eg<4%!|v*rBNu=4$X?HsIK zYS}9M^wsBOQ^lt`mJ~484vEJZuGn)Q07jBiW(S$NE_qg@o7${)6?nrRO-5&1wRZk4JV9-;kv?QvKhYT&xwm~kL7VHd04Izop*hth`KpgH?JoO+qB1sk~YUW zzLmXymVd#(1YpW(RB@mMXVvywH}BI&AJ#@&Y^RzUK;Dh_`879Aoy;l2Orwac%kxwM)7x8u=_eXLRH z*627_{S__rc&98VV;6VTu;v7Lmv=9oxEOKSDn%;lyGkrjCLp@vnU+ zbu$@(YG;A=pgNNQEV8sqwR7%#$h6|hzK(Vl4|ex=n(O2Kx;1Z8>E|8?e9UBG_9n~u zMBfFK4MVH5(dD9m3oq2e?KEw;iwxiR75C%yKJb$Phui@`e(`md903F4DB#n3!7?g1 zJkiAzirH6sDGo4|2c8gvbU3f?n_}2Retr4v94Y^2X(~Fe+-2q6rGUj=C6p`B>!Prai>P z#w7j@lZwybrg2xC8$t$Y*Tg`Uth-S9=k+8B6B;{Te5u~S?j@J+XoAOi3S}0$D}?Or zJlbkLvZByA-MoI0kURbT^2ZYHU@{OT%Rm@m5rQk>y)|M}VA7sgUA9uekcqUP0LsH= zKhU^pC>?#u@pVrOt6sT{4cF~q&V2$Bxx5l!UuNhLn%}gKQ#eb$3(p3$)M?;2=0PhL0Ut@lLyIrP^y$#&|U2*hJ@o^Uia>&{m zGFFxui>mEV))P8EXHo2s0}@0{bMiRZ1^DUY%V?Ihn`y-h4rYgainB%9JN!tf_19#= zwwnYa%Ek$TX?=(|Xe3nY$Detj###q-81v>pUy(oh7?I(QA52Q*l?OqYJx@NZF#pF| z77T9`%(SpR^f%)cz}2+ua!GEmc@JgDqGY5uTV4B#;Rn{3W>5h@maeP+J*EMnK8W1) z4ffk>WQiLfFop`2v69GTDLx?ZynfVl-`5Z+YnksPY^gMg=7OpdVC2l#mBl7UnTp)z z%^Etg68&3qO%B-23fET&F|d&AOo4kGRk?b3&ygj?mHl(=!8hGHLPCf`T9BLbM%430 zRb3;8TEP7eN>MgqLLB-uFR0vL-)gem&5MscD?|X;njYQN;0C-er*)acJotKMbI&>Q zQ86~uS`Y!e`0p$SS;Mx^fh;#PgTur2*yC2*f*0(u!U8D0eLsIMxI;aoYkKR|eVw1u z=jQdqVC#ut5~KjiH^3jCR_$kHh=6K+Wh}7f=QR7$YOv3PQSeZl`O=BMLE&WSY zk@g$mI^t2fbJ;1JcwJw2AZUZ19x4N)W~asSC3x&Tf9n+MB*h4CeBfjKc)f}Wp)hK4 zjIoZQow!p_adsw}{iok?&^f5;4wA~^y^y--l{1kDm)0A?97;$RaJfpkw@hgIT#B$; zGyEG1+vX4t0zxlo*K!G!6<4&EvLx$Xw}!1KdwBx#pC%|eeHTy=P^bQuO^;YP49=3r zsjD42l%X)XLqB{?@{y0sy!K%J<9zs?RGm!4_z7lNA|M}(21@Ok^4Y%2`c)q4uDzBKo)y!<@kYZbUaUgPyR8 z0#zu>`$nBz0Kig&FGf}T>_ZzuqviQbzv@BZ=)m3&%_@^B$;&1?P_2T@^b@wfEp3KgPjv_G--J}0*7oZ2OKha;GxvIC$5ra3k4b- z984bV6|c!VY^B9k`v&@o!b;a%2L12ESaImz7?enden|9>gJS$Ibubs6$cD;?(v)!$ zBzj#3i^N(%-*o^&zP*jZOi>%u)0ul7K+&>KC|$eN#)tG(DhceF+r2ekG$Z}1oPbgO z&tlH1uVS1m&)_ag1D?`lq73L06QB8@VkkBIyfy}yC#CL(C4@dO=AqL3z-c1JH^_La zrkYoSsXePcA+pWC{5RiVH9CYJ{HU>RIaGIQWT_!j0OLXw|+m}0Oar-CKZjcgw zOO&w~U|DS(c1-0{c0(-}v4qk@!aaw}ZUVHvS6;GbHz6vmCXcTNqaeEl09M@B&e)4Cud@ti5uhEVVArJQ|_kR<~SIF3J(Q@g$Dgt3dcxsfKCi0*47e zKWK0p+^98~A^jQSJ8ps|p^%l7GL;7?SDYk9y^CEvM15(hV^C-ag>dW4w;I&p= zSr|hB259-@x1Rosl|I`&%{vy}NSrp-Q&R+|ia4}^7Q%&2e2x9+tMs#|@*g%%K0*8s z8~0Q7;3*X^vi0F9^;s+zoPB9j6+Q7D#%1HJC=Xb=6fBQEd^6=Rmu|1QlHJ9jh7#~- zx%vT?Ar2Y*Fav#%hb{OPaZsHzwR!(u6Jql|P<|(iQNWcnXQRWz8Ma8mh;8a@s^+&> za6slD?pVIV2o4hs{C z&Gc1l?=CZ#wI@6o*EL9qU2f55AUi}ID$xOG&jv0O)=K@Uk30TO673^Y1wgLf1n zH$>l?r&O-gy7Fx&fKVy^&A`crGL1?mNO3S)MvjCsewS&YiFxfD|Bs`zaDzXiQc45W zpP4BmaPG6C`@Ywtjc&(Zc?pPco*&xU?dSz=$PORb#XeM_8zW@+ z>QtQhTR|2R2lZ+&x9g>7;dSmUD&F$9(>eDP3&BqG)ljE3NVVBaV)XIA(h80h`fh%R z_j!eLu^kIfEYjj-nIO^Mr|FAKD7#rH+*;tfh`kyiUI4so6^(e(X$*t$QOst>W|klL zUV;0o;*DE&zCHT5tQ|oS1J(h7JsTpQsl+AKAlI=9K8*bIDVA3yzzA$AB}#E1UEu*5 z4d75MROV4BvB}@Ql?^5XN|0p*CCHnQ6%vh=a9r=7*&;k7o)IgjuS|%@` z6T^f=Y2C@CN4{)tub=;Afqat4kSFrd!H?d{0)ITnqkiWgr4hPtL5e__bS%>X9a$3C z;rEdR{RSW^#ArNQTN~L0A$|k|^woN+c@#n*OcxxVzV1DF^$o|=zz}EP#$yCuLuPwv zi82?hHggY-I^~x_GF4FEXK$*o46W>j{qM|X%W0E$ITs`AHBT_6tXPxk$Cz_9aQISa zBdWSW_yfH#PTTgV$<7VY^|^VNtTH20w(c4%;6#gUPk~+4J~2~3sH-drwGTu3kFTB; z3ZoHXf&|`vJ7+z?afP4&a|00s4XhpkOHdLM z+v^jM|7UJk7yTAm^B~t3uesMchONCSU0QFBR~W41`|wt~>FFb^aWj~f^D+AqhPlIr z>fno!4Yyr%eEW*4oLHKaK(KH7E%ic$-Xd%#vgB*&!4fFm_iDG4RFy+@Y)xZfU+d&KG>;V2b1#gr%8SPsf9&l=Eo5Gd`B zEKE}BJ7yQWB5z+m!Ni&EUyc6w!JY<9xO3)Hk-4&~eSf?xtxmSVJ8U5WzPKI>^fqm> z>)@xYGp9Xs2HaE`ql`L>SsD5+=09U~J>UBj0mlMadE^dIdT0Blu(%mlOcTR5s_lEhTT( zzvkUSyM{|IyG{2059xpgcL}7fu08B8+t`GS|Q_Dk%_5H=@4|GtOy~vP)2is*hTC`+C zy~BavCV6S%OB6g25O9XO1#7K@6c(szw@xv4bv|qYr3I)a) zwuL}jA%iI8j|&jQlPZML7^wm*B!3!OAY+~sV{7^o{c}}#VuYL7lrX%BV^+e4*Bfqc z(xQU)1%j!k!U{LmIYR|Rq&^c7EySGE5DF;zy=_8UtfJ3u-N`8*3_j2m98daWsKo%w zKLc2PuR#5OHbb`1?>dm)YnGa1Ir7Wi3WII52UnbN{c|4;tGMk`G5PtA5osaLs&@2W z=B{o>?N6F&{Vh}Pd7A`oZ{u&@BJbevu~+aEZ)DJ8xc%3L$FtERxiH2F@D7TC(54Tx z0Mh-PNM1C;W}5W($4oH#`6&HqVRA@X+lbdtySYoKahslCtUAA04s79u#pB%&_Z-W$ zwF8Vvw9widD)35q%eHSN7NJ&2KznZ_=NkY~F_ipdm8Ff|?5~$U$Fo2pi zhz6**Vf6n{_U7SK=KufrZHtnn2w788k|LG$SSm$RA%x-}Oxf3C&9RhFgl5VR4ob*Q z_I;;>$eQ&a`@Zk|p7&9`=e=Cl_w$=SrmmUknsYm^`?)-}S1i}_8os-5hl{+n#eTBj zdeItYh&pr5W2NP;H``_A8?u-$>7@-1ns#JB$5L+R0F z*2W<7EO)aipCy&TEGKSvm;{Hl{Z_tzo|)C9A5HYmFom6B#Nucm-cR@0UB zfmSs}J4D;=ZK9-#NAb(Hts4%`@p`iS!4WP}5gW9!&yC!+?WE>54be4si=ha6VJ?WB zQhDhz@Ujl<%jiPl42xAa8JMWRB4*}tS0{EO4VcY|iG~+7MRd?8&+#Mxgv&}1?_6D& zI}7&rK$3hz3KS{ZQp)aR!UxI;e3ac$$`(!!;=840g2eP zYASyNsoZQew#&~-w#iK#9_s^7_RnYu$um#1_il1iJpheW{5{GUG8k!bybeOvTRwRHp$RVz0-YTZc-@nS&jSbop4M^`f{JJ-LLZ{!j??s z(Ph-;KL4{XaB~B$2o2C@_ampP6z>ayj}ohbLemlMQ@tx%kRo^wy1uoexr} zi)r`gR%w;1SI`T5s*B|6JlNXwd%7aSE#%Oi*VyKu z*O^U=N}o{Bh}8QX-fn@90MS^w)$0esl%0fvkv0PEZSrBEvrq^a-0J*8MI$Ca_Hdb} zft@^{VsfU5VG3lYYfip;g|>p(IYBlYu?Kz-RI$laTM;MFwdF_aWG30(AE1lNPMc-- z`lcn;eL@QoG=vNmtyf;f_Osi0C~f<-JD>4M@io%jaKrC>k>=@h9>Um+jV+{S1?4A* zo(^5TPWL$OY|SxG#QH|v!x`Y(xAXJw=(ZnqB{0zZTam6ng+!?sxjrvV8n)6~+-++0 zo*S9iaY$RJdNGr5xiqM_?httjLw{RI#~oXsMN?aSJPg;JSzXnn^)cEU2V~vtF%b`K z<+xIvYLQ(%#~bJ0NABP#$#-aab|HZz@`xl40XtK;o@l~W8>NolT@mCUN+ zn(1`b^D--yYpdIlF1!)jLym)=Sa|{$l+CM#V@rkBHH!fUD^oMpou)-{N|Rt;Mz@5G zl|**%1*J3nkxKlG}QX z(($G}d8U_36$|!#$uP4zwaE#Doo1Jo15`Zu<~)`IXs@N2T)f2a zg?=$*un|n^6#z-czIdFnF#W(>Mx=R7hO*WBA*NSSKWNkDHVe_;b}KkZy|&wyF2_j) z9dmG89xSUTfeyYVv*@oPSs@Ja-_R4-iDOcf$t*x1wW?6SpZukDV z+|}=S9j0ZnoYUJr_d~o>TaGyGqvdRtq4p@SRw=+7*qK#6w!EyAxvV{suhzw7F4m+C zvU)U1r@*1TIAj?VUoA55B>nEDG`SB}dcWF8gUD;+h0)X8?{L!kYhblwD3)~AF{2|3 z7PNMAo9#(n{d6NNy`Nim;^q%_D>PV_0ctMt#p-9L(wNiwNT2^q;pT0r?d~dZN6^XT{Kcza6?Ychf&`MB>I&GAY0tYQ z>);_}(B3@#ZmRdEb$O~~X+m^3rHE>ZuahCp6*2C*;aOgIr#^<;HAm7B3?6esq96)HeAjh0ZnF0&Pq6NF>F4DWik9kvK&?L^O+ z6hX@F#+~Z_w#kduK^Bsv30;y_dacQ9v8A>(YgShrgC0xBW{y`=#z(LLtJa$cUf zq<(^hRR4dy#6zRP%g!MsdF3#dNo%DmgB?*!t~q^2U<#x_g;KgOn+#CN{uiM!jJ|0?g&r(dw6kD_?6TwVU``qdkmZLE7Zd~YEe<=nnh6-U&3PCf zTce`1mvU{uW^vS>5A{92WX&1y8WF|VSgo83-IX_-b^ZPOeX9RJB2Y&|vUkIVgoA_a zWN(+hPmbe284SZKi3K);$yNgmBVw&ZeSF|b0`154y055Rv=O(66N%`&!;ol^513dr zHkod-bGL+Mdgbfjv{^wJfbW(EaTfCff|R<+b|kcfH|k4TK%!boYDTopfl~MlgApBB zjs9}ZrX1hp(l2gC$8=qtG1;PB>RLb44mb6-oh1Ipt2qAlO=3?yJSX>bO>{xQ+-O_0 zlhf3t?zMT#?(NA3-D}?;d@pj{!@)e|vQpsehACbcZ=S0RjC}4V>vR;>FoSRx15ATX zr!RQ&{}ip$WLs7YAhkZ}*``yFNAvLXa^$Ayz;X|L^2@AW^)>lt1v-vaAfSkiTPvK< zfRka>h39z}+Ns@eI?>Gz1Ict`tjd}18LhLD`2iMx4OWg-VKLKACqZ7KTI5#uPY&;f znZU6hog+5c>s&hOEYY*|eZ z$f0_ot+3*jZocu=L27&O$7|Tdw1T{U;nGxkNQ8r zK#+f_Ybp{nyE}|u87>;jI&k|Ntn`)%mNQsN`-0HBdMkCh8hzSnPn{DfF*`E`IYJgS zRjd)u`E>C|1*LbcVDantaQAui1Y@!VEvwrceEsXUM~U1|f6fA1E3L1AYnJ3$nNis6 zPyI6M5;38bvoB%k=Mw|6L*hLwAT=HuwpRNf6`%kva%srVQzLgI(KKO$jKT8pPhN7=MF1M-+WiX6OUS0RHDgxti>yL zq?R`gZMNh6Y^I;#Y_>mvg4#v^xZJAhWqEUpm}?xvr-;9yBrbJv`B_){0nlAV;E{Q^ zN}in)z*%J^J!#J(*Bcqv1F-%KWJx{AM)%r(D^uD$EvN>`8_x3b9jwAra!>b zi-tC2J!Q0xNj^N-RLf}n$(qjy1edHNOIwGy`eBf{lhA9|*8?%+|5%lNT9f>|xi4=G zsRR@iac&fBq~~PtxL~5$q}jNhc+bpKP7?@Db{kD)N)_!hH4RHXbF;&)UUt_7rCfv? zr0s)gOa`7}t z{8y?;jDPB>C(>=uHbh@OqS?T9bqBBxz%|C2YBg=X@N@1;8 z)j>?LB$bov)pfde(L|F|kpd%6!%x*z*?hF`e)Q@(Z`a2)@l)EL=#|6WyMv=kZB9k* z%#MWP-aUJ%-tcX)zexi3?gBj-YuCw9bxF-r?x`JaZvw||tzZjNZXeFQ&D4>6IM7af zPu{_VhOx7h_zMkmBiOd1-}hTg`5*1YTZy^-qBO^f$~KQtlQ0}P>~BT}m;R-|1txY^ zXlydd+osofGrj2b(FUu^H71&@NZfaoN|5bs8_UYO9N2K#5Po<8Ce2GPoZO9=3mBFS z?A(RqqqjgHdeZjFWVahLzp7N>+L5D2xj{j=-^ppqtb%4p^;vKZaXz0+4LE)wnkQ4;DsXLyO*+&Lg zUMak+iM+iZ_9(c9^HJhkQjZH!Hn53rPkt`SbvA-6Y6u(NCD_4;3p}`+^rG}{DGsQ- zh;)7>%}hm{uB%qcUq8TcAgqi3C`*`mPv4iA60Tkz^=&DI?^|1H4qHc_V;&f0%o=e# zgVrHw$qrN`k$<+ed!pQZrB;*%$~rX9#X=u*)EeuX#;6o zrrx@}(5P4MrXiQ+59*=30NK+sl=xL#%9=SIE7GF%ZEtSNO|_kbktDOkOeX80KdNND zA3n;m9-O$9(i=FwuD&kSuG`*Zg5!1pU~@zemK*jf-L*vmt$*D9TqE*Cz4;G{F=N)w_mk(sXdkti5_8yT0=|y$ zKUfrs`Bco@#iRE}gAeAArjo{_oN0bp+_UW%(~{`-nm2XLexLQeWp5*8N`0c;UAJ8$ z0LHu9jmGcv^$Tf_{R?^HeQmpk{Df98VcDjZ{&^Gn^ODh-O z%f2M5Q_phjMQ{8K{m$~~eEuN0a-T@9C+0OHr=H+(f;&>vH-$aA zW_xUy#RDCQ_01_}oYsm%+1GiAcs8n(CocmV^rTJtM=tBBvCmLqr&e;^>Dsl{r4(+9 zQ3+ZuYLCmsBoAmuJY$>(%&oIVs_iJxvOtiC*81B&$fodX^}5}K7?RFsVZ9BMCZ1VRktwX1+f_`H{?s0EK8Ga22PSJ_M*L!|0cUtJUd+J2hsbPleaE1f z;9*#+R9eMl?>ACQhgnnV*(-kCLTOy1hfZSLkz8=;jU^v3)<%#rXd>VSe}HK1=OF93 zQyQ0OjYrBnIZNEk_)_{hX13shhOf`=KlDunXdxj;Qr%(Y&^D?vPP%mFseZ~21y<8O z&*j@S`;)hcHo9AH^me%za=qlg=qS?e6z8+sY(4lwN!i%9_aM=+Jz(3^YLbljec?eu zq{5B7mS~0vnMClG(eppCHp|IT3~KmpE53RGr1c{ia-}byjYv87w33iflf2gJ*%Vhx|1_2(HDwxYd*MAX_XcBUQa&t zNUyX|=|{Q{>KZC70BdRELO$d@^FY}!JLhj7ByzHDf|zKZ(ON@xhZTc4FysD?hD9>O zEzT?4m9?gH|CbZhoCp#{V8*37+fHfJ7PN8U7VqjS^f3qBv*Mi2)ZUvcpYY@^t_4=u z9lcHGLQkuPmjye+(XKOkaU~^ zfVJ`Waq^;8f=8nJSsWiR6fv{7F2?TAmpr}h!WMgmN{^vfyK}G8rgMG#_263>OxA0K zYMBYTW>YEEHiaD46|v>GDN5|&C!RZ>>s>?gm}ci3KV!&Pzw=K~N(~nJ=^pX-Y&7~_ zR>4`~3};G*C+lI}sNNVQDt;5WmOMG@cf384{eq@`DH?);a%OE&=xdTc%wMoU4&tAr zxiT-PWQE!uc?nbI_7+HIZBCy&ej)iNnMXtStxYAas9rMUeYBvbb^(*MO-)xwI+Jxm z&t50|dNl!Jduf#6LAt9~ujE-@tB-8Acn?n_&hEe#5u={Knih5Gy2&=dqlPQ7YcF7~ z(KwAxN%{%yh}?&C$8`ebO7l*%=yW5i;vPkB2_DB-zP7mqIPJVF%C!-w5fHMd8V>E- z^H7BWKKH8W3(38!zfzfZflHE`$PB&=_z&RA*zGau?H%V3BcltxP8)Jm6bN6$_pM%z zo-%Ji7Nk+$_fcG3KP<%4Q~X#^{!gtB~)_Hvs-r`rLLFCckPMt(?0D!Z&KM1 zKu%6?jaWzLsdwN~O`fpR8uf&$D#8iH9ev$u8x(9{YuB{9Nw$kEU@3;p*4| zIfrBdzTBF>_(pFmsXs!(s?9{0_pJg(!fj(&2|w3r%s=rYrMOFOBRCU|%IxiltlIcR z*^6{3%6wXH9G7Z{`1`ulB!C1xQHcR(#*;4T>&E?hGZwqlWWMg8h^seH8_AQA}JNB1k?YOOIqSS_gPN@u(^5nBxbPh@`qAO>X{Yi#N$qHtC0w z*=6e>u1S@nwc-@}p^8t(=}fB)Qy8sHxdQ?7z|xZiv&(!oFbSYi)53;~HVe4SHBc9% z=j4P$xR?Z9m6e%o{RAG{mOkGsumn5zV9`LJkoLRW`1>j7AbwAG=G~iC9u$pir$bj= z^kp!mfopWmW7PtHwtsZ{3uBk)t4gw{HY{d}47megS&Y_%d^0QGuPH@?^vsvDV_>0m zuX?~io(9@4kguie{oLm31X-R%@-KOb;`f2MC&Kxvh{TzgvqF9#uIWQ5G$###L+G}0IyHx5KVe9iF??R9(r<7_1>nz=AzsKh^iC%Suzakkg8l4EAN znpMxA-DQwUfTifdFu&Ftu84s|eyzP5<^NXxLHYHbDY)woH4w6wmFLflt1!C#fRMo+M76 zg0W(i^FTd1SDffPV}W4D<^1JUjLj~44o;lma%6j=G{|V3U;&c08Lv!SU7Y6fK-<)o z(^Ak>N3ZJiok>+@s4!W&0=&Nh#{VJ(-#~MlRp+Bi29;Ol<&s@d6zVIL<}i|&d%@H` zk&X_1Xvd1N#c{mAm; zS!}d$mvq5?LJX2&*s~GgwHgS`MSL>ekDC!*7Y+3%kV?Is*1x6Jiv zU?LAV=^CMWWs1HWhjL{QvCHaR%uF6((|c9uXu#z@zrl>u<$+{JM*|~;yy!{!ndfLq zOOZx-@hwl3ya4yzkMR=H(|)c4r128iA^g?2sx*B>se0(kG484TEv{!@xy~Gk6re$_ zzvw_boPVd212fhZ$GeOV&)1C2%vp9aYt!hqDla1ocun2ayj|9 zi>$x1iMu3F##+aJCq<^F?YWO88_ zh>T>ANit8OKC zE08dCByWHU&_9B2jAZ7wZ8#7=--E^J92ml}Z0Kwi3XWk5RIKZ>-g%Z2XxhMdcp-Bf`%-wbLMUJ;6m&tnd(b4;#~G`EW;ZIeHE~L`Y`+FEb+k~b6F~WeJ5#6Y1evUBklmKe9)p)-N3FPRL#}-_oMy9XdiNe|$ z9f69{$g?|5-q3q4;Xod-d0DcX)@dFa6lGE&m|H{EZlH(LZ|=v^cgPFka~Lmz98pKx zUcdE%VyXDF-uHRI0tJf;1c53k45UpM9!C=n~sWC8PU)*I%?s9;sMMQFJD4e;3LnDZ6i zfjdVOd=$fvaQUbz!(~i$tD=z$v$Rz`zHo0s%3>-TxnR}-HA&qu&EGxQUmJl6u1n$z zlo`jvf~M^+8Lhdm7Vdn~#cz)3PJSlKaT^#!!m)@Yieq3vxd8tHmq&N%K|z8fpm=*(ntvA;y=0)h}TZ_AZRoS2W!TfMuqWA;Tt z=44PYo|8X$ayx9Hj3qN>aNg!DOk;CjS{0w+mbCW0=`z)`jp>PAW^ikeP&lRYhrfp6 zQEtM*5z6qyEkV<^sHS&&g!8^x&#~Xo`?y4*(cY$y?!5Tb9ey4+G4+kC?_NEZJ70ev z&r<0wF5oF~x(^D{%v|%&aEUG$YhC|*wX1_=CS^B5b0T3ER zfQG?|WQ<^pcxTI5&GM?mJJ^^ZN;@8@y16dkT*9p6+nmhqsBQ#HD#yV-BG3~5p&)g3 z*NVzgiM9jMgPh(tJG!1x0skB(qNJt^Fswax=7IuiX?7fu@?4SKTN0vbSDfwBELu8& z)QKTTcmyiP*9SR1+ydo?>1_*76l8;WNAQU%EA)gJH}v<*yoyYgn?-}Tpmk{(O@e$p zKV|p>xFQCm*AK!4Jj2-o1bjS#DS16K^(-%SSRJz4r1p<(P3 zw`%IE0j{EZ|NR>5nMe#cRFVfRO$%0aVW_yXhYGc$)OYMU&lT2p7apFgx0giN8haXM zhLd$ucqgVig|A4oxuzFVBZ)D8Nl3e8*fDNO)yA=i%_^F#hfAj~OqH>!z5DnlLwU?# z&yyOu@3(0xG#tnqyn2jr0oQ6|<1RZ+*yd%q#%KR)4q{u$`%PnL#2_lSbH?;V{#Q5Q z7kIk^LGE+On>C7;#=4~%f?(j5vcW1*A7phimYI2LHE;iDjOyneg9^$6r5~iHKRwQY z+ER-&E*Jj;T>-T$44^;J6?lOT@1kLlMX_y2P22;Ne(#0{J%W^)0u~nj2o6pSrcu5^ z2@JBnVl(+T7~xW;D_y=4JaEo@#M>E$mV@@KS@x?qUvKzNW#eu)8QbOz!sQGtGvn-h zF`*Y{FO&(mW2I9vIczG#H7of6IbtjSs#JQuq2T$|-oG3u+%jJdE;%|3d`^}Bb2(`H zcZG(MuMjSw-o<(WhM-+%D&zopSvrxx7Sy-!v!xXLtEI3pe>mI&c6q9Gd@hWU|FMWCMu!4ZM7%1eHp`NU~7&t7uyH(sL6 zs6^Ej?HHMxAc!alyFMbc-!;Bu3%t%(@DJ|`^{!cqEib=vYo>9w*=>7ol=9eDWA>uU z2%YJr{Wz4~0)0g72L_5CBN3PwqfJ&xtq(?`%!5dZzM~i%%n|E@jdPzEkv-CfLumY^ z0eSr65NRX|S3OP{9vB!#v%lsOm;i@CYd0<59o4=X0wT5OBeUJGISD!0j0|4*rV-D; zKMwr42cT9=uFv^-iRXQABlw}b%H0)ZB8R(*fXOCb2KAb8AnEYK4J}aVNm*B!d(a>6 zJzY&uYAdn)_t8H@7-vLM`sYUuxJ3V5z&={gz8c<#MDY3e9T!Cw{b8JN23h0kUBSpi z#?jLtK!2R^lB}baz6=~Qtjg+}X~L9JH32yy?dmRP4)DPRPLsJVASb>um{KHyI)oZv zoyr|P-n$sgMh?8L(?U^C?tGQ;EsVm$!>*D9W2&Vb1ClAchvLol%{^x|)1~0>qLHd? zQG^SbfO+*cIzbtZgMcTKm2PJK`PDDc>pdZp zHv()u95!)dg=&kniafEZdTI${nkoxl^Y-x)yOS1n#~0i$01BmFV%lXa*`7r35ExWxEpXr?mPC!POC!H?R0sIxiF00XHHI#AcCpH1~l9lerx z^$3C`4%a_5>-$P}k#^c43iBK@1!w)9_)4V-Py#%4`^l8u^Z^kNVZ^d_Brj%hlBeK9 z49_7hnc6nTox(WCGeLqd%&@?Jxl{zRtYpks51w8j2yE?ctTCVwUlF2|V!v9r)@zAh zUOTyrbF6LlGyb{Ws*{&^{5rYW&?$22plsv0fE!o4EZev)W=FP$2(Iyg5PPEFQ@opKa@g`Lt=4=fKTVhW=h zi7iVURp$yD5Fh5`r>7{1Ddy4L5~mC|<*C&mF>Sa!T@(wVDU4W5dt(JZ1L(HWUDVA@+o)6gZ}K;_>t!@ z6MaXJdsWQ1cP8`IPT^CELj;Go9w|Nta+!c_rSKz%DpKOQ_lmzg@rrW^L#Cj}wvv`? z$L3+t?ItFYd_*P{N=eI?e$Lf`(OD z-+Me}xt#cV5^NKGpN62&!?LsD@C%V7q zUEku4OjL@#4XDbbT*{x>t30hePr$ClgLf=uoP7=-{s3s?W=|> z2kt?M1;S#jgr9Z;ibdPhMj4_uw&|tq0KTib{%#4qu9PE`n?(J9zQPQq_LRT|yoj!R zGsJ+Hk}AG-G~iGL>xS0F=Tdj|PFiF-3+gp2_H9up{_wNxuTSw8tGc@yn!SI(wJmq21p$MC?=~*N{OVhd9l*Vb514 zDET#%F|JfPNYCji#_BL5ZG3D5TOwhlqnBV21oN7Y3h^&Ck%x!mYOA;cKBGB6u~b1g zUSsV;g-%6dvs%YQ7I{zg6W`+j8?ehghEp$q77*~M=k)~4IEOl54`}jJsicmatRfUh z=&tu`m|HeXiwtwlK!(t3 z1kn;R;cK7nBprMuwL96N8>fd2Zqyu-dus#E)eAlz$4hAT!KqjGiic^(|oLlU# z3G%c&PWlMAXos~>QDi0V_BRQ~0T>=aPZ&r}-VmV-|N6aX4wS3qVsH%rYl8~h!n2re zja3@t3LCs9MvU-AcNc{pyGy3gsgnUOSXYSgBBZ$g4t9dES8pqi=R%M(7tHmKoprWI zFNSX)imjk@FlnXV*L$YXS4qw=(eHsyamBdKrBY$O+xkVS4QBQp$LrTB??#1zk zFyF(~ZX8SIt^nq}l_U3dG@1V8GDKR|rgJjD-Z5oK}Pm_SSJv4>*Ks;Pd z{w=t6PC+(UCeS$dX(;P8k@mmn$+Ml``j;DgKY2l?F`Dg~pjWJ+ZAO27quuS4WO32K zR2I3?L1BLG;ICzeYj}ybEu20jrvJ6)^U%7#N_SBX?8j&jD0|zfCclTXt)XaZ`!)FQ zCUn5}^{>`;7Hw^6AQjOcHMc8E@>7cID?Ds7kzEEu9{k0{3xx2ijhjP?fB5wgR!^(L zI~*i8u3D+m5tD7g+FcuvA49Ogy@?03g@q!s$|3M^ZL=d=3SDBX$}MJ$Gla!6rWNqB@sFsj zA3xh`r*}U%!=?tw5(Dl&Jp8u1P;$K?Tn|T@lxD9W*$3;me9YBiy7Fx4;&c5hV|uV_ zg$DtIA%`phLF^YmR&PhE5FC6klz_7s@e(s;$AXHSW-5Bvrk0EjPsd3AJw}3q(u7Da z!v6~y<+~@zA$NWvN9^cyugL7hEEao4geVU|02gbf^+23Li`j}eN*TUy2Mt1`a!`i9 zyG5w#zw8d3wSnuMeI%iqdCvR|)~Li& z5LXoLc$n7fkhh0bcW)qsC!L(`{WkN*w}&ceF- zLUana!FsEx0<$>S6iY+kgM3JwwrRK!RD!YSQOS{;(*J%zQ~4}u8XXY#2xGvAY)f$M z;F)92L}c6Pi0pz4%o4WmP`2g0w_zZ8`OEf~s=hFe+UE?sUlfj+U#kA&)+%x5ROg|M z7yDep*hW6kk6GVbSnZ@|_%wELAeQT8aPd7w6SAqgFC%)>(9AaG#?g?FtX|tiP;+F- z6DaY!;kM`{gug=I2_jiwtRt;zC`Cp}*D-JnGAzR&ITD0onCNEJJo~~9*G|$P(`QD5 zm#euEk7gCR294>&ERN;?iWtR}zWg4?LGe9!=97YMIhO6cu>^EJ%5wlP;sMq|fXm0g z41kF);T%iW-tv(lf(J*Nfc;1UQ(=^xY3C(zQwQz{krNUD8xp{Q3&OlQ-t`x&g-O<> zLTxZ*h*?Pik+%#6pQThggV!W#3?iWc2qGm)ePw3`#kB|NP)Xk196lA&4#VB+YJj*) zHD@g!Y1oyU;NUNK*IjHQTc)T&sUZPzQD$b10f$i$4Zu9F zf5JRaGo_0=*&g3rQGk%(2m7NI&T}9kX8WOXz8}ftB{Db5m708bbepvtE-e-}7+8RO zF20S%D9ztPt{ZyYn})GrKw_ANEUx;9?S)7~5adJa0ls^K3K2nwfh_cTlpU!LWK04s;xnmkqMtPISPaT^{z^^-&k0GQ!MKWIYiz7 zKg!#CKLQmRp6L1v=1?h&N9cp6PRw=nFAF9$^g;-5wZ!UhIZz-FJi%Y3;vmTS1bd&x zsp=B3UD(ha34dDM~J&R-X0m|J-)b5kCt?e5r;+S=h2j zrZCXgHSL>9D)BF7U52kIy~n*N=Pq=j6*dI9r7#tc_XB^5qa};Gy_bwf^zRAs3SntV zY|e&d!rh8@q1F>uXvAA5L=-D+I>gw?vzd5_*U#p#Jrwl%o7P8hQa(HyvU*mhuduD( zDtI>d_8<@l3o$}RG&#w+hrlb?>Hj%cA-zPe&rE14eN+L8yP813h5?lbjh22C+zAT2 z9L)HS9ch8>7f+>y)YCcUd9k3;GG#JX8*XMZSzFWH=zR*{%KxF-#A}eB? zQtshe^&Q=-@=?C7dEaPg9K`*CmL#p3niZNoME?z+(tO`11MA~2ME1+-pvha&!y<7^|H?~LL z$>6vuJOg+RQo_%-8;fmkrZG6H4r|rJV9Dbyrby%5QE$NQ0^_NKhLsr&+04k(K%tqc zn#k#@?T;-UYdw=fo)1P}B|g#%MQIh+`P*%WQNaQ*TBs9Td8rey1n!al*kl{~*1N_N zJJ6rM(0MNFufLx<^ZmxeF2Tt@oDTmEBywcp__?)$+YhR9KY2M3B9}a zXY>a%3+Cdm#G0YOg`tY}`&CfHod-?nvojYg6TY3v>1b2g@By#gv8!@C*ZW6m1B&b) z4Vaer{nfIR{!S+#KXa*!M>F%rl4}TOhON8Wy9%t`TBoh=H3{~LuQ&8=wS-!(;c>3a zjx*CWUm#A5mi5d->&ZKH@j+bwxEq($mYBir`l~Go?;?n>_m-yNTf4YCQr#?8^bjQJ z?Y&9R%wHUnc{x6V8B)CK_o=HE2*?a+8Nr}sLNdr#GtFi=frE342u*pzOq25NNn(Fn zMR7a8K$8`f*%fpc4l($BYtrupp|tFJR?YO~Djk<{E%|!(aH-Y{);Qw{d6r2UY43lZ z*n3dM>DA!U51K`nB4Xdx=Tw}j`nP`8Tb>imyCY97P{AJYuTU=#nU41V5`oge$fLhu z8XZV+mi;Pzm0#}dNCw?=iRTz7M%D+%9hShwp_$W{91+KUhp_*n;Av<}`4JEVJuTPZ zQ*fx}4<6sHqpV9G7rdc^&O;T#LWbw)S-6V829hQFzvPLZpx8$?!Z|lL1lI)(7O|~S zQ&P_vPYHPrC(}LBJDs!L5(O@sWzw}muvd`~=0*`^`??>n)Wk2*8bCUaor^wdv{Szc zNG)L}PM5Umx!Lzz@DYwH5Ue=D4)4URn2>_{mttLm;U=M*md$i)qfxil=gX9Xn4Xt} zsSV|d)0ePNe2`Fhhozb39(imgHgaaF97CU@(Fv2}f@0&x0p&(F+h_(UPP55;lllAd>X_#&7YX$~qxbKtUj$;cGs;WXA zD0;trnyW6r%(ZGpU)zZF5fs$fnt+1^OG;AIo=XDzTh#V9?8ZKzqs&Ft5qr%4Y7eEF zeD|ZRD6E%EeS38F?0G1S@tjWKy5-nOjS$USyzT?7OCs=MKM^gUKPZgU!UgLJH}S>q z8E60CVP8D8SIs0T?WGkzC7$_SiiGAIXZ(q$*u3mlv2;q1G;-mDP3FejcN>+xWXjuX zUs=UXT;EiF260bOpo3wi(Zj{S!UG86f&6~u(rx37=*K1dp~HdVq^xc9iojyZHd}aV z-2@tAN@^YW*7U0cRJZy|>f`0+LSm0h51B8TpuUls;Ma%6&CUo8-$2rQ_wI$)BW@VR zpV%aGwOP>w7;+kN@)#$R_maic3g+=am3_arL|%@@DIm%$ly^XUl7p^b5~8{}9GK8e zpVZ{keL}=2!ws(S5;=0vp;FqnAjg8LJGSOBG>SObUGCWant{ZA2|A!7i>7wCA+i(9}p{{K4fzBqnZsi2sq^zo|R=05VD26LVD+e zN^ya9U6iAUe-f&Mkz3PVvk;wob!4S@ifszS?sX^8GW-af^;CIR8gXT~6Obc*&)w(; zKE!BQ(6+I9CNOOYb`ww4h5Ncz>yJAH~uuj&m>*lN^+L;{Q$H zrWl)^0!0d?r};q8(N-p}w};qe1zAOGJDTh%3t4m*lgo0W84Och5k%v2Ip|05DVIYs zKz5Y9U;$Xd^|Te^cH&?Fw-KH;GEg>YPe63qgmnddMc(w|#QuS2VU9rNg`vWm22;j- z`Ni7xD7e;POb$k`^{}H{D>w}rr?+#*1)bVB$%|3mWdnE@ml};yKdpg>CbHS!|Ni-|Pi(@i*_)WiCci9e&?wIeHhaBWZTFz?3zuS9IF2L=TyN}!Gw(rl_B>_y ziSzkDF~}qWAQclY0eSz`pn0?$H8GUQm-BMe}bN^`MlnJm|q(!5^tsHesH z%NYP5+QnlS6v`$OhW%l|Ie!9(({dY$n2&~pd6-CP%_bJRiy{Y?cIlNfhbsIw^0E#t zSM4)p%q+hsJ>*>nvT?L7qCgK68b`Db!}0|ZNJCvmh9}Nk=u8THjC!(Yz6|1MrGR&N zc^FA@TBdU1uGZZ!WkAlpS}FyR?-B!)o0!OjN*h|pa3xQKIa_V0BA?M3?oU$~DjYP7 zMYBiHz64bXS4Tq@{4N5F+Tqcnl-+5DHrH)l=}E!SyX57eAOY;R!{AG0*jQwf;!AIA zNTBjwc5{EF%*!+5fn{qyZf?B_=cE|2&S4lWXWva0LT6K$-6q;hRJ1JYbrzLnS8m*X z`blq?>v|VbQs4l43Uco?GcL#3*3}{WyyD9~3#|$+Fum!?tj60uo^!+{aI)6)w_|DE z40HZztH07ah_!C{j=iBHzOMwvhDl2NY|!|p@x|+2)|T~4?>rf;Wj6B`vxU?f)HeeM zmRQR3vm^#@2R}@Sh(3ElrB$C3pTg~UQblm<)?O|l=ed#>*$vh0?aN@YRoUEZoyxU- zb1iI{Biq!pROdm=W!J_8cY8w6ds5G8&u6`+2Rxv!fyletN znq^_V5wL&M3z`hSzIbmfzJ|NO)zSfQZIrKHU%g0;$P{HbI1B()0Lreei0L1FSK9_e zVyZMbPAR@h{H>EuvBlY+6m9+VLOvK;C2U)>;Zr11(21jJ8W{Toq2!&Oz6u`+U3UOC zw;Wph?6citaPV3bZ0y@XmHb;jH-%rXbo<1BraK9JBN?oB<)6?9ID9n-^oZWt+cnmt z4@XX?;W-v0)AG-$SXC6Ia=2^{$|4sz-cN^U=P6(C_NaODtrOP(5{+^RB?ztwS;Yg) zwdgE-8{|I`$3{bApRp|g`_gALVFzpGeQ*K8wWKEiIE=aciPmpF*_S*<6VUX{0FpYV zi(hTheJ=SI#d7c^zQ%vG0%p&J)>2ecj;hBs-7iwRwx$n=0q{WDGIte~uqLA>l8Ow3Vzk^ zY&@DYYr|NXncVYvCsxC7YaJf&!A_-5N z?$kPQ+D)UV_x9dpjg;i>DgfJX3wKzz2aRu@a*t5EQY-we&&K`lA~v&p??bpPFfH`; z1x6O-bFm6$n~{xO-P)V^FFyF>7$xZ-Wx|b9|IG)($%`|TETEVT)>NCs9l3WR7K3W! zkULzhMDzQ}cR(7JKzV)PyX1LA(OV!aWITO_>Mrf4p8Q7h%0&?QM7A$&yboNMI*aAF zt$6-PI1Hca-JyTXJfRQzTXje_;muGyh!jgm-K|Zjl*wOcPXD*8W0`B99c}OHeP&gB zI9cQ+$P&ZdFM~|%Zyk5jMywavhVQ3(D6=F|g8=*g@X{`Nm2{~I^|+zJELcvjqIj>~ zdBT2VW<~+K{kW;|LjtNP_FTS4{g?vrz6f%#(6yuo27v(rd#*&wP=?2WIl-UVvG@#d z8T+Yuwg8gOW%J;o*2UfQ*7L(mw>|N|^-#4_-v2Dtew{{K%*!L%wgGl(9FOYULsQg1 z@>Wqq`}hb*U>hdr$a0R*gyUd*Tp5T4ZCPec{!nP}^1^dPk=YweXv6f-o8r> zsx(eV?*RWDU`ur5w5<2KX#M?iwU}mS@?Op_9s1%BD3s`G%$!=7F$d7UfqNW4@~+nu z`}^OU2%Va$2TprCT+O$zfpNCHQxel|^?U%`Gq-!H1cx{8H}1`Z68ra}Q!L4+Z(You zk4|uC#~5cAjY^f&_+N-8@D}6d=5{JufwEyMtl3{5>b$jBy!XMg>`^~CRMy_5pR)5-5ngFS@R@kB5KkEM3(wvMX5xD{H7 zsAlxPA<$bt%u-Fid|v$dL~>RPqTG+-P7ZVsqs zw7xsOE_0<`Vqc%4@LW$zn&+&oTq*AKEiGp9VrLf^OTojBb17NAUYHpvJV4UCv538d z1FygJe?Rc1W4Dpj?X9O)R%g#3nFG^%XN&UBZ&&jm9>VecBi9}51{jn$0s1;I40{*Q zGQ2M&A>VZU>m&f77DmCZDuivBQ>G_r&$BQTvkvC2}vM#RA_2 z)IyLU`xo@SlM8>J>LZ9zata?HSNaq7tC%l-Z#whg5|M%)!3&VBUKI1C26I#aMAb^a@;7JkASGXjvR;;Ht;^JGM;Vx>P7;v~)`YxeVI`|CHHK<*WjweTQ_;VI|l@uGJj zh9GvqEl3+_pgf9mG2pgOv<3Q!aDcP^Kg!-b9_sylAD3db{}Tf!>0(3G=y8rA5P3Nk%D{Mh-#v;LMQna_iaINRdTDiaHt*T; zbuTcWb%UQPWugcXH8W}j(6_<1)0@>U&hwjX?cMiFOWEku39+JF|<8Eskqz;Z77R=VGO(>3k{?LJ( z_@O_FS;323ZFd`ZXcT;crLRKJ88Axx`wRd+-#AkYGpes(%S`{P5)7`b=h-O_R;vjH zDCvarvfwp#)t|wQ=OXWC3nwA%zVB@q?)C{$ZtC@*T`Jkj+y?KN9@E$NC>bVOK#Jr?7Ak0r(8e zLXlTi(hQ7$XKu^PE$Y$q^PC2)*wWacdA(@59n^|r{Kw&f1@WXiN%+A3iSohD zNwa?H>@8v9*jH3&@zTDuqkM}0UY`L7{@+4d(5Za5yDG4xx2z$sqouRf>TvX)GbZ6Z zgK?o8yQV~JGK&$6|SN_e(^SPg9t)arvH)$2$=CTTN zyj-}Dz{PqaovA@}0(Xu3J2cdzOFt+?z{u#B?^hF{y*Bro`{~@LC5=g5(k-T&);3!D z?W3C3i_HSD&mPHgG5WtQ%pk!BvzN1UnF{`r_(^5GCkNQZE;EC?4_z;u5M_8e|&v>1f3EaKizZH zMn)jy;#|&KFz4NHkOzE#yEy5wPMtOhk?!q$Xw~;fD~~Y?nxDCy!$v+ZcB)p2s@vc~ z`%_KEe;0NtTAP?=nXA&I;ZL}TX|h&&c$YYvzM)_s>o6R2CR!+sxQJTv32>Z5`D?gf z+QDve5c2rD08oNs>5v6j21 z;srwRi`1NZ3@Q2iEa)ol5GwVXq38D*!$)T?>Kd}F+&CX@6>|&Jih}Igr!29TqaN=E)r^)V2Pw7g~D1(Fu zfupyaLZwDdu)#|R-qvRoI>1{J|Y zCDOxfiFwB8+rY#xeF30zu&nU7gjHT_nPTGAkMedQj4^@oLfY5|BQZF# z^ZwX8aQx>Befb(v(e!?sefhmLY_Y5h#&)21KNWzEbZ;+mz|`LJUvj2aXz;77)ZjBu z%PW`#{BHvFZ}vDu=||hlFp!xkh4Nf*F7L@_WWF7dfbwRd8usk+8G?b7G-VRlmxC^k z(tc~T`OM>2h=VH3QQX6YsR!w6%BE_5$tz0*oaHdI-Il1z;s;AJf7%{t=*c{EddWVK>$`EX$y+CRu;Kvw(l6U&-`dxVX zX`lNryx`C&O}C0cw=HMngLF=w32X1q!cB-EG;qLyY+ptANMPD0=ZPBppAsN%i1I1mL2V~{IjupN448K6cpo~-0?5Xigcm0`$ zcxul#5&-JxgD&fJl0;`GuV;-mb#7M8^}*=Ts}xfNICmBiN1tvccC`eQHE^uqM{>-W zx2yAnM~5uG7(BP2U@MH+u{!lC?l}wE9F4UD>_aJBrH%=AIgEYrm!)U%>868M0_xX> zF$M-}F|*eaVI|bYig=_Oq+R?@rN=CW?H)`{p7ET?D!I~x({-GDdEzB6GdpT0eZ@(; z$bvpD>5nJa@s%bov&N#K7=aRBK7+-sPK}T-Rawqnk^o5(`JHXUs$}P#BA&549PgIj z-s0}v8Gwy~NzSOm7G_({!klG?4W@Et_BzzF(2GL^XI@*DXsi1CuMDb|q+-vHAH#;y zz%Dc1TIg#nVPAcC8ebf%Cj8O`tnt6-n15kdiy#LGeDWpv408eOP1UIBEHb2~8^@C} zdk@o5*-rLVw|LSacg&9SlH9tvBuLq1G3o7e+)qo=A+G_8R=Gw~VaT^rB5CZ%2jzmm;a_Ybc&ZY8)Yw#Af)u;{(ems&gqN9@~fuyK) zfFNzXEN17V?w%XoRm(Md5FqhyWNXm}LzUvdpd`dofao<5U6CL53w!{Q(f)nDl!iL=b0 zvZ{#M0f@8t>5|@8fKm_D*x7X1&BP_BC*|xz+aNc>WB{(-y#5tmLi&>1(AP4S@x64Xp;KaTj(*Z zWGv{9K{>K5$<1Tli>;$kOBX;DEvBOj>ODSfR@$6tMbm+4;DWgn!dEM)TigljjaO8G zXLn}me#^EOL7?gM7PH^sb*JnBQ5{SIq2Z<8N?E(ygcmv~4=sz1_tPa9@7{zw4bo~% z&bLLwo3j0G)Yo18OG1}d@&Yl2ZjQAvhY|~KcAC`rcd{t`+ijx7 zAC^TMM;1-RjY`Gp(4BPEFjc5MuW6qh(ZDB)LZ%DVxq$(fK=j&uQj$}_j@eaL0Ll}K zmpO>UC3ysn{{|GRsVaQ=(W$N>SCf=m0&q3lx^2l81)<(DMI(7@zyxw{t)Fy;q)0G@ zEesYez#5H^))~%NpTD{(L`38XdUe_`A@(Op%tl*wLL-Ua^QzB0TPpi@=|fXuX>V5$ zbQ){cQxWMRxe>TUCRwMMPbysNhUnDWdnU9vB$B8^lk@W!dBRIMNm7&G>T3^Bz zsk-e$W7ShjXHwnvy1Xo>rKvHxDOr&U?1^JZH^u|7q# zZa6xEac61yXeXLAfkOX&pqCD{6LVadkgT{3IhU)a(7#EmsW)eG%tq5- zTAFtN_p^fu=_e?M0O1fHTRNMjgCx_ZUg!+J)iXaFc>~{2;@iD$4z&3tWEHc@L0kfD zWKef46LTp69vgOfb>^j*2FW1;?hWM%Vi4}{@Ye$4?TggLfE$t6KhNsbF7+FhPs&&B zJRz)u8t22^aVi0=ZA{CwYaXHH8k>1arqyxUIa*nI@{bUpPQbG zd}z@Uf2qfYP8y3;T`5rjstDf_2lT%{=x@tUh!Xx^}`Fy4;l#)ihEN(VEuzw$q4?hfT{J8GqVi)4!9lI7{k!OdnmRaE}pcv-Gs8!%> zE^)x#T>KSV^5{}xoOC$H5thf}<*6&tkQvO~;KDUhhs>i4TytoCw!l|IZ%3sa^sk;K z2l z*r3w_tRGm_Z8A&VW!tGtP`;IaVPi67pH^s8f~Mv?3bk`@1qitG>04|c$+NerL31^+ z2NG_i89ZhkOx@aCIF=k>YTS-?sb()@BdNk0sqffZomB^a<;eRB@_V&?KeZ~hJgNZ- zH*#K$3lqYLNhb}IK^a*+ly1axT|u;Q*Wa3bX&?#3p1~RtWJ*R(`Ckb>uAg3QH2dFQ zMQ9Bqr%6T3)!?-jgB&cpe$(xVVMH1j&{EEFfbt<8^k(82Zq_2+&shXUB;3~D#ill% z4CIontV+0(1Lnu9j2j+f)1E_d9KOY4)6?g2Uxg0M?vQJ140sCd*}i8>e^?diO&F&yt!HBQ*FX_|4AXhmbAwI`=6Td)U4))QxPD61+mR&sKvWfBs+=;oD4|P&MOW^ z3$nY{B)VU;`2ELn<3L7Ktz`d+om;tCQG{d2{!hwd@B$}+^knQ07~XFiAc9)=Z+Gr+ zqrLB~=KH)084w&XIjyJg?)CY4wm5Cws9l(lC5W)ylPB^ny4jU9B6Eoz-ZI1UA=Izm zYylSAP6YdB<S>awm45H?$^4ZpjeTViWjVg{s21pmy>1H9 z1QQTAAgo#klkI!C$ALAvJPG=Ov5O#>u8M1Dd^c03aGP1?SyxOW{uFgaGU=_7h-IfR z78Kt(uH7hEZO=!aL_>#244unsEf%uRMD#Q^L#(=m>8pi!#!vW zEP-9P!z^<~4kn{8qECgBgYS?K2fdc#^^b0#{jjo?ONZWZn_S3{l`Sh;z)NADzGq6s zC@;&Gko!0n=Q{;+_3=6GSo|#68i9eCRhp0i^k~C+1czbzYB5xOW3~&z-^q+s8@X0L zP~dlyCzK$3+YVH{>|jkQ*-~CyQA_?aN+DG6-1AN6eWv%IP)Ch#K?>@KTWS@bmsU@P z^BrQJlhZf2ILqvSXoH&zBDT}Ly<7Yudu&oCW2ERk+ZO==>bt zL?YAQ29W^IUp@Pt3q5Y4i$8Eid)H+B=>}TCzt*+uz>m}H)c)f%bN|S@`X6#2b3etM zZyLyRSq!+To`@RXTT^k{k?Nr&=*Y z(wG4p+6}Az8luST3Y~)477pUM@>6hLW;`v<;<7(noB?Y;@Q&y2LWBhi5hP?aX%H#4 zM1vQrZ6bI7)}_~Lk6;mfuEPJJ())i+hKDU)>l7(K;eP9(q6sUYhzML51t$E4y>$H! zjH0C|2#9kP>3PSfvmilfeQ%qQHt43g>ZXYVA{&lj4OX#W*BW~p>_2z8XK^>|85q*Y zcbs|p-WFbf8^`GN-=ETCb`=B@r!s+W69(dxt**{J{{USXjBlqrE4~(f zfBNdC8v-B3IWkYmUqRb(P6>bn|jF<{9)I&X)$%(f&2h8TE3dpWM3#eI#oUGjs_yjb1np|O=@`@u% zuwSn3!eEPj!$5sGs7>niU_bqLo6}(ux4|tE65n$_)eBF&vG*PC7DULD2F&@9`FRLy zw?CNfSp*H{ZOzJy%Lw~_q)c0mPT9f`u}mTJbfYgj|R--4oYgJI~5UNEU6#>X;rwAym!b61pmE*ltdgDV!mp6+RA4k$TlxSOs zUqKGfLZM2=?4gD<9QT65jWk^EV&G?wF(Kv8-};3eX_UBO1KD|j0e%Xdp_1N z9pV9FIEVl)B4hLv=;i&VtuL*=b)q;3%w|Fjk4%tTwY)F-eex!hO<9fLLyPuIUuo_Z zH9>lXm@6TmFptUcbQ3+h{5*bEhG1m>GCTI09v&{84Z`Kk|3Bf9&Qo4cw6fHtYj$v9 zes8*gv`(6R5U&(4FQ1L~lt5i%eQ{&tQv}C}m5Dt@ksPOAVt4gw7)tRmT?@UJTs82; zp>e}fmo97TS>#F0!;g?48kxkaDm(PB@lMF+Mw|Mu$!BUBj=f(>leRuN!3utozNpe_ zm8COY0-L>f0)iaVN4=dsjAOYf554{nG+WaCHGU|BJ(wtEgHHfbSv z{3I>mVXTHUxN?SNklE+eU0Bik`5#KSY8pkU6KC-=@(QAS)Sw}tTF&XFIWhG|Nz2X2 zTiv>{bM}nEa|2hfhKn)LL3HXZpth@{s@nKmzF)^4?D{N0abR@?VNO6_deDG$ zsIO<8?u3u^?$vkcr^;JI;)X9fK)#PZ_O!#n{)auzsdq;|Q(EkZ3T9QkU(){+3Pewi z&kbwDrJ8Hul}|r;-w}JBXKv;6K02KX`T0$=+YX=ZaqKx znu3ij96;qk3*6rWe;PJ@jm6SF0o{);wjheW8@4_ecuH$4D#8xuy==4!HkmLnh-G!q(-Hh^u$|Fc+zmy4G*yX1!^GO!P?cTmvVccBE1Ft z*r|9Px_24D{)&t^5XTnq2>5*9iN8|JO5m3+OleG$zOo7Bd~(xsIld715vVdA_gQV zDng?Xd>D}h*)ys-vXz4UN9a9I7Zr*JW`l-`X<_-J%p5oGXjamSGuH+hx{Lq2xLJ5E zKoYjq{ET7|Mzl#}Msd7L{F>GdR1x;$vE>W;`O&DCYxYE^!bezJvOM<9#u4fyE(^RO zCtqA>%gp<9uA(7ufQW4LolQt!gcb~}Mu3r4(~FtM4Hq zZ73jji>iUQ%=#S(Io}selu~5B-f+#4dK9e=L%MJ2Rg0rTkxELl80U~P)=ZEjrviZ> z(uzy2(r4r6MOwh;>pt~kB9(PuV*oPUav5^JVT^FPm|y?r3;TMz)~E0HmdduOmTIrQ zEqO+dQ;COcoMV_qV#hHKYG+wib8kD{iXAJ|eu36Y=EJ?6aM1Z(xXuP61Hw&cX^Oj^ zg*Du=S)mmN#+?tuZpDZ&nej+O9ry~g!PVUPLji79eoAW!l6>5%5LGk3Isa&q|Il-U z1KARux5#m{HwS?qop68_^gim(bMxvX{?Iqjh6hMCm^Tk%8huA>!vCFrqQUK;{YB%X z-A<<4FLW0XG((lj)L5f@A1% zMA9VqCnk5$HE+NU=!>zdcA#B*E|;Lmm2M|k(k;ua!Pmn^odtN64 z!$6g3M_zb5z8g>*qLxC)$u}d4&lN@K9W)16k_DX)G;6;O-FcP6BpCe8$a`*|pnAQblg4AeTazarq*Fc03;h%N|YmG+l~1Iqkh% zs%_%-(|daA2Rd~Vfq4fU!{7lOubbV$BC4n8{DOL7AUy7CftY`ab=a!@lUU~!N0@|B zE|XM7hIN&GajZ;gT?kW;w%c_DCP}>4WIic^4q~=WYQF$IU6@<%IOyrFZA%FoXa{uq z8|*_jX^XeEu5;6jl(7SO5qDRry!N%Hr=h8zOG+`j)_$XJ1ctAr?9~7@o+*-$dQ=J4 z?{d$@Im3eWwfJ_or##!I;qCiwdcmr!=)ddJ^Ooc{@zh-1OL~w>+-Z}@a>@lqGWio# zK@S3v251U@m-KycFf{dq9cW=Wt@#43z|T(v*9>S`x3$^G+0D#u^TRb~Xj!!16*l<44xvH(0F? zIKey>72yk9#@IPFC1lGqx>ZIGl&`obmQ!6bY)5ZjaQL1gPFz_$yu*c$ z9SJ!W@XXw1L<1a&JkemzB6jDP1q0Y@|@i}@FKy6PC+$)^RpFTT~?>ABza20O~ zRh)NSp9d40Q?$up@GF#W%LQtVzO2jY4np!+j`?PCTc&oSj3lo%;6I&<%sFMJ`te1* zK?{8zT>0`^QxW*R8;^`!n=qnP;|mEE89@+HK#7rzr;QF16?Q=x-VHKf3|n-&tFr?Z>rw<5pQKLp0W&#m0SzH!0RVnhuD!{t;$FW_G897G4bi`oe^vz>>y8_jSmTDNDhHvsy-KNhW$D1hY1kWZBZhYd`1?WK1Jsw=`?sCfxf=U zVet)YO`F$vGgJgl$&Z}VyIcVzbZvlyw&y22E^+=aS3$ZU(s&H){72*A3ZdK^<9a?z+{}5uD?dZF=Bq-rO}M!mQYQClMqisHKyWwzUO%OC#gy0{G~5;5Ie)+XR<{7I);h~5GFycbTYl|DR3 zu>Uo`5Fdq+_X^eIZb|nVgo5o&_mTerAdcS2pWb=H#b{@>Gh$&=q8$bt`%;SOzobEL zr~teU9f&=qJ$EELj zT0Zw%sp?3-K0wdwhwxe|QDZPC3N4P~z*K;C_#wS*j7+N|-+Y?$!J*Rg8msK339xbG z6G~0BsukFE$Y2{9&4YW`AE)_FfnLF)lyWp^8T3R}7 znb2t2-iI&~4j{C>R;R+~y7$5Rq?G+U2YpEZkPVkRA)9vrP_jwWA0}zH&d$nYMsD_z zvYEUC!KPk|dyJzvFbP7>$_j?!97Uv`u#heWtnOUbuia0y{u9_a?Pbjg$i{!Y}FaTa|SLU5BGc<2&ov#c=+KHY~jY9K`}gUzvFt3a|7qyLj1Gh$fyWPd3Q=3j^dk+%Ey zN4yu5`cloz-G^D$ZQk-o=S8Lbd3|sBJIu6#4kK<81I+Qp6cwxv_7A#L3U(weFSv5| z4v7k^NqBMheyh))Lu@4<^tySo$K(P*M(s1cba}yTa!%4KqS`AOgnGeRA3G+I{sr5T~;lEv1wCpfcta<)hYDkmPVU7}Gv9K4d9c^x>iEO;HPa^9D&HaRS-iI9~v9hixYIq+o_1D&gV7@s|{Q7wD6M_O*&B{dxr<6t;a)U&*+9`abxOF6PO~#eSAD0 zWE=HW3>ES;ctykAVJZ@zfDreE2ytKfW?@eF_(s}p^AZkm>uzYtA_x!@&k!Y{zQ|gR zVq!z}^_*Fm<+y_X^bJk$rkjSr87f5OMX`-U2p=mN|Lvujn8ebnuDyg8?xN=RapaTJ zmzi^zb1D3o5C}(NbYjBfWZkNZ8uxY?vSoJd=P%e&Z4-ct=ffBliH5V}9;Me0maRGo z|3sB!dLO5v@W-Y7^ee6?8WgUol0bYS^F(U0W=mi)99Zh;)3ac}T~%V|ex7ab3xi&s0+`J>cM2_MQoO5g2f z#D}Txam4n1_>I1M(+Fh;_$2(R+N-~fn7i~E=!<3_=wbd`nJ9boG@;ObvYpdjJ!mI1 zY}l&dN!Yp(LFSwuB!S+2*vfIAgjZlx$;10N0fBwJ1%*KZKCTZA%J$c=FT0-|_^GQr z0zppcMQgN8F&9<`9>KiZWBbG}9Yv0_FLG$+NiWg;ee0LFye#}Mm#0uQxEHP50w4~u z@rR3|j0hK=PH_(KNv#PQZ`%BTvao>7T6_Ym=QYJL9H`;>y#r@6qXb^%71~doY@F$oHB1YD|-5zAy*$u7P8cM&) zTQ1cw4B2ptO@Lc0=d_W*^_i|zW22<)iDtW(Y0M3r5t>R@jKLSCK4k+kIw4|E=RefAgR$*2Y`5QXU_swnV^@) zDnL$j+AP@5JJV3byYA-2HW4u2<`?TRC?_*yE-1_RynQ5n!2k9I;bJ0aiRDm`eaP+mIR|NZ4N;#*ONSShO z+u!tnuJArK3OYHbi8}H2)lZJS6;w@Du+;aoVdl=9C(lU8Pdqnxs+sRQZH)17P+%*> z?;5G=At#I$I(snZK--ZwTMzrZBgTi6%OQY&W{87h=DX8e^A@U~*_-VLCXnb;n7Bho z8PYd(<4rq3MmB%AooIqbT+*Og=eks?O*!Qt$G!vQy`Ej48`gde6&sM{;zeY7xdV-o z;nM@Qv9BfDyKh{F@2ZU-t_DRJJZ;ev{Hbr%Imgrvj6r9>Em`)>3BKuy2>3A1ZKKM& zK`vsG_6eqJZuquD?>=MZ9Lcp;oc1Pu@Y@+qnf5(Z-H&KIi;egPYeeC&h#0jtib_q8 zi`G&umL8*NR;IUi&znfi9Yp3)umb)zH2xiMa1a%N7Fa+_v+TaiLz?vLo%g8eDId;l z+C^oNV1js#zGXE6We{br_6bI;<11#AV!T_gxL|)>NiS9>o0%y|hsjXWWw)7gj&w1f zGGX#7yt*a6ZZ{A1pH9_^Z~+`O`y@@U|J6*=Gydd*qk~7xRLlhXxz*=}l6cpPMQw*x zxndDZ00oQqk79sZtIj8?>R3*@+aGBijbM&W8hKOwGd z>K&=}*O!-0VF;n2TYOf}^!ui51zfcZ#4671F{8JwKd$Dz<-7dvQVmflFUOv9P9HAM zJ4)51x7K^nsw&v;u0RKKGxM%XD~YQ2c9_=g1Dv(^OP-df)yEmbe*5$codz7qkcqh(*Zbk;FKBu~K;|(Zyj|Htzd3O!0eI z*9X9mcC1HCXzTj6K`q(X5C_q4h_*A4*3jjMsP{~`e`$NTzGS6)x8vPjhmdgwF?^n* z*V|Ld8cY(PDSL3tr;9n69lm+ohPvxKp`FD%5QvKY#V&{^%sS6Hm;#vp21kotd5h&5#CnY z18(FV00AxhrdAWmq@y9ErQl&QSuM{^hJIxQc=l+rgY702Q4)7>R&qM=yi&Mm^_7@x zSDX5vxre>Wd4l~%4g5pr2x6~n5juN;qFA&#FTyV{3t_7Hq9M7Do@~Z zYue75Bz~@WtgeYJWL5rHJA`-*@uggW50fUYMf4VV&wdG0>{eNs4P_|(J*BoA22k&r zn&C6(Z&nuUzlO__`2^{=uy8wFM>`QrdpD3H1Q)$Uls`P>dwiK80(+rB5Mw}KZ~6BV*x4`JJgHqb z_{`?eu}qV9Es%MWCG^tbncrTXA$B;>?ow{!N$*3U9B9$13>63gZI^fI{YE|3k~jLG z3#65KSbED^A<@bMNruTP8f^8`G@1r3U}aD*@gl^dVPK#h|2L%OAXWR zae^0^htC6Q`7uJ?SV7uQP~6|@x_mqEAywZ(EdPk4*m|u=4D!*IHEAn6nn6YEUXHA zKvgnyzo)boF^UwAV0oYNc<@6_h*bflPP@_X~`Oi#~tSUJNiQ!%R(w2p);_!%~}l82>(Ggd2S z_7L;lEe|bB#SJ!Bby17gr`C_J39L6nK@e$}Yc~ecN1#I8)rtsCI!5E&>Tmy8Cd!5U z=QgA`0b)z32wJ-_MiCk8Ye;!)YSIHQ!+76rf*jmjPM@3rZ>}><-dXpmn`OshY@G&F z&%AWHxX^`_`6SvZy()Da}>qF*3>TQFezZDCx0pKbxdu1 zFx(E*@y?CvL(p`jT@Ov0o84(jvtm75A)-g{GFUa)e1Imk++7xgA*_48Z;vpZ!+3H` zE8Qw&d;#rF|C0^~A*8nmI%2+D5Zq`3jZHYd!R($3ggY@>lYznbG_Ys`Y%-eI(w647 zt&Kwp-f6l8>*S0>a4uN`aAc8c9%VxCAI>oT>5KZ}I4`|7P(Y0bLs50cGzbe-a42`ZI4l^Dr{S@Mz>+zMGD@(3o0weiO>e^^GtiS#%?nb4pl1x@m9l9a*TIZC$1Vv!*P zWN5o7NbWdHs#yBo7cM_AEceFqb=059ptl>G5vquSmMv+$x2n0BK!&gVh01RibMrU4 zeAhrN!uF-{YTNN{-_jyA;Y&ZZOhkN2g4^vbw9ye4f!_zDHD{XPf}#$<`S*bdjq?^% z(n==!KAQsslIS2gk-X&RW5PgNMp=|4l{;QP}5I7xl#Q!Kw%r|g`K*L z?E-9NVZ|(i&4Rfc2(g=azNSt%SZvKa~gvDd&K0j|UV~`6(Xe*NJPv z7Y^S@?1Do?%sfrlQaA+AJayJK)x*xM5L#5-?2wa3kM1zF3MrQPd^sZfH}75EY8I!JmG%jJ<^HKQd(aYI_yqX4ph7x=&w5M_6JfyRCJoi<&`rbhw#U5Uoc8CnT=2RU&}qosMNuv573@E& zlMU~n(MQ&`PxU;(oYOZ}grG_K(dwr^X|p(2X2~1lrUG3B;PGCGH7pR*=y4r?-0T)* z!amzWNw9NN?xd0;tRJp3SfLJieLdLKlpq=-y5XCrZZ`ct!CLD0lXiL3N|ivl{6jso zGvmv26oVNboc^7=5U&r^vA`+c#UKbYpVxXMJ2F> zSzOwQMqt{{wLYhyL`BLx1rW9yML2Tpr*vviGrC)$LS6 zNAPCUCag^=StH@}{g)pB$LnmK1xIwH8;T6NyCN5^vO!WSOUh7>c-1)it8LfUj~n9(kBhm+1o_apcmOdg5Ay$UIM zSI@+WDpoBogwDrr6ZI4Ioky&(9!Rf=6YeHrY3ehXAtqjRB#Il}=gd-iZ^$wrY@BuN z_-o~{=zdsrv!CmrNqRn=IaGXC|17-ZMwMthAI198{$5M00p%HknO=bfK)II0FyO$m8 zEsLGqMbZ}jwmbk|-&^6AClNL*#g+|CtkT9GHN5PHbMz{`!;3YS<_N&W`5fsD*H|w~ zXCEHX4X=Jl%NZ}vzvp!Rh*O?4&Rl015kFPuoyGRYPMXqzQ-s_W1lWQS& zmX4XbYz(>(zRBLNDDT5ywsy%z%?D%-i%0vA6%$Z8O*S(kkYM4ZCcZd^4$#EPTq=v4$p*#seC=_q#F~_bygP@FPUvE6dwfhV%3!4m`!UmTn-|d#=c8Cj2J)df$*pgC31UZbX!b>9!@zFVicFJCC`LYT036G@aIDo@nQp}w%)l`eq#Yp1VrpeqZA@{>jE2t z&a$*da{-D|(WJ4=)4n!HoXEN$JG z>O#U!G_nH{d1=9~uX_rV>_l5m8addM(om1?FIIXpn~ceeT2{E3aKbqMLxe=c>>pG( zHN0UzFRO|YL!9J-t>rwJrR3(NlnIZ!_=4ct4RUyME_g=T$%_9-W$vhsLieT|hoUws z4>;FfW5T|63#d50wK)-Ksw$+l?(x9wcLG&MxBomrRk~Oqhynlc0yrKGB#Hm_d7v3#pS6yr{Jy^&m!LM)~8Y zIgYmsrU1H9;O4I&P0e%KyICKiFIba(c2Lhb9>_q7(}Y1t5^LFrw`rGqwETS>u_}A? z)A_~^AE!lt=;Y0!w#qsAUmrIL-M8DSwb|78-Ii<2t{0I<_SnXOE?y^#8+tkL#3?Eo z%zcL=9`|1z@yt%&7z|-yVaxiO)s}|A-88b>n0;-?haZ{n5-fIt;&4cr5EG{d{Qycj zP5CW(Vfav4GC4gngYqFNuMD6fKk0+8y_>xly*`t^re5|)ohi1+@V#@tp(A|K-F>lw z{W~KrS|0Hv*A^QvI z0*;@%J0F;2SMACvv_IS;_8Gy=X9Sy?4Xj7XNb?5w;XvIDUAOWUGM90SvSTX4vx>N7dntG zqI_f%>iv~wR2$GEEP`w+z@n+aWMlbwK0LfMh%P{fLszm7xEtu+d7G3BW3wmD!LI;6 z(Z!>n(v53)tg-KDR1lio&#ign^7j-?M@Qb)IjJ-+h@T3!t;+q_8vxH=u&9^TdY|H$ zDtiK2%EeZjm8qlvSGf|gAICmMeWQ-d&*jpnZ*xBjFTxCXO8SlxHuxQYCMIDcLUDIN zwipx8goaT0-t{_q!eb1@Q^OMqLOKaWDqvf-7IjUfkcJv$NS6S3gI}>t?IEajQmcE`{_^R1MuMWjBqFH@C zKQ!A;v1-*oar8GYFiq+EZvZ4fg9szF@DeHuTu0Tn_aG{VjZdT5{$>&W2UMLr*0W5w zsi}SZl-!Ybwh}HV$7Fe8!0z9r_J_f3dizyvcjDTK5@Tl9XL?8J-d&;B(F^YcYOPbS z|3RH#znXN{Qb9!)OrAhG^?D1&c1-HfEq+L=|Khmln6CT@%bb&;SVJb=5tsJEb-7Da zMSgkBWB>b%FXyyiqHf*TP!+FH!4mIOpAyB(oo1OrOqi9BhokScx@jXEoYu*BT&5A3 zht;flhc%NMmjZ-4n?a!66!yn1=Jl^_*?*_;Q$3dFp4t zS}po6YB%{~n?wb4K~|mz^918SSZx>Ej4wV>-UWD@BIVLMcrj$=8|+5JdjD*^NHq2m z?wmPbIL0}=vr)9GAMVaFWU^z)32S@FW=<&TRPjRwWB)i_$09|l0AcZ>@=**5=lBJ* z3=4+*4gUA9ej0r#?R~E1HA;wrTULHT@cx zPB3>f>$)6ll&P}RNKSIQu%%9|7U)btHT6)^dM_y3KUx9oWpo>3n|Tm5DDilGpi&N& zvXEhnf}9?oBA-m9VEbTEU;86S5W~N8GIx^*f3e_^cuz)P6jH~;^!5NKTVa*YpZh8B&&~3Ob|#mi&dZ zk?-HRW+tUwX37>8X1;$tD_a_V3JM4<?`R0{QL*Y z`QtG%4S_F^McwmCv?)seQ|JPd4#!6^<$t137JXeMo~# zr&&e=TT}oOP9jtqEaUfa>{Wh#mD^rWMR}}@Ha&aYlqIwG&f&JB(h~Bmb&ITUX#fCO zbss<#Nky{i;w3cE~G7OT`~RTHAN!K>jwa^9$#R2I|GY7Ul~k>;DKt{!JhnlDy1vm z)w4G2#fSgLk7M2!}EFi`DJf3AyQpiXnY!hM_yd_SL#pSRvsP7l+3l>V0! zU*LQD5N|i*|Ej(;RT)GcnsBjZfLzM?<77;Bjx)$3=OQ%$Q}M zCrC>#PqnR@o74SAy*!aH*3$J{c6E_tTHuZ4iCgo^%S&E7#tdkBy0sfPkN>y+fLeXx z&?krEmG7W0xSRgMu_6LF=+nE9wgy#y{#kC?)OAK>LMp4pu909YGcc6V?%W}FkvTqm zgnij%)qqGU$eM4)=jifmwo0Ta*8;#MJARkjS7j^MZ>S@U%@PVdifJs&IGc^0ZbOKI zCrP_u%uj~FNfb=nY8p7WwrA%iAsBe-fbkS$?Bq4f z!y#~cYBEf#@K<8&n_t~!uPTIL=ZP!3b)FjD{yJ_mTn@P7K}ksIMVl0&GdQa!0AD|# z^T(-l?^hG2FEBAgddWUdEH}r(;zZe;87Fo8*ai`AY!nxSFdTte5pDm8n#n8;%I%oH z*X8rD<=|uE^!!~TLa8vKy~~8$PdF(UvB?d|f?WiWO`IKd#s*e=ehz!KsGq2Ai;?<# z>J?ZG7n$KM_n`?tL%8^7{U2)UN}ibrz-gcA_pj{PRPNr($Jccfr#WtfcX=i8hXQ5v ziqk3ET5-`T7Z^AH8Q|}WM0|TKnd-G3>I3=&W8Vz6FMz*sX8)8XI*71y|=z8n`ibypf*On;o?D9(4@U5dL zpt5RZAcOGec!v0mXe_AGFlQ zT)~7pzkmI3@s6#za|+MME@!WEO8%EeUah1JVS<~7^Ee{9LRg@( z<0MIn79JQVlAobBv}E+o_AHv(jWJ}RbyJ)tpdSOKX9yRVD;v^fb=OEz85hySqk!LO+(`FY85}=EASd%C0Rg zTYR_hf|Jtz4DU?*fwjFvHYD~Yx-{~gwynBp^ET>+ArOgHZQ9ITQi-y!-?Gk(qU$l( zLV7Hz=W%H32ANH$_y`UM)|ARw(S5W2%kRH=<${tE@)owS_W~gu0z-WgC4y0IE5dA$ zKZCAfmv{Q*PxE>rFY=KyDl=e^Ah4gk&5c?b`$DP~ zK_Pe}uaM$irOu@H**%^m=YD`FlLP-3E^?fMSY3&lPV#9U&j0@?`|@}w_xAs>gp}=+ zkS*<-Eo6;K`+`!)E~${cv1CtC3GHO96xo$!7-NhIm9;D*41*ZW*rzdL|6TX!EYEqK z^L?J*ALozLt6r~rW@BM>+MZp%R>Oy?F6UaiCt)WfOBAUh?yFar< zT#VD;V99Qnn4$rqX_%{y2q~lF8fsjm}KF*3+>{l1(r~#0`^^K>ACo^=SKo8S;Mb5&MDYS--SXsygw-_N4K^H zU@$R?7Otaw-;se&urw`UKOxI#^o91wq!!v*%}xAL9(}}!Ph*A@A=%qm*-*~)d?MGV;-Rg(#s+`Rmy%92N70$-BGqh~FLE2BVb)jfg znT2c3xGv}LvHohA4P#@F&-XzyWAm$A(OZLrIdwl=HBHLx448Y=A8DG>p9f?}mP8+r zXrXzzr?!~)QvV3)Yk-hGHm3S}NS|}h%MnD|b#O=B?MkHZ$m&I3?X!$jN|!LSo&Z35 zp0~|5ZLJxQIU)0x!!H0+OqqbzwhQF2dH~OL;LGvb1JvN;&rRRCc+(FnLANw<7V?jgUuAS@ zvr8Bkij4h+ytU}JOK0)V{X^asAcq@(GxR!NSn(+>3#r_tDFqBRw;dV5C?KL=C5vrF=G*v)9g;cma$L|xEx&9qWj{g}i4ZK4WA ziV{qAvTSJj;2*FJ+*meB13dAPRB`ogNBpD&A2c=ut))fDBd_@$aWqwXdsJRK_juC2HI_#X8 z3fe3G`Y;^zz{?l(X|stYL4~V2Z?~52*u;(Vt(PBQ2 z>bl6IbO4`>pIuSyWZi{wo%c4~flsYXuBD~o+>s>R0&N(mzSyZFHQyUm3O-sY8DO<% z{;oL|&I(@y2fVKrWoaJRbX9Ha`LeCmOev-4ZU(??B3>Uy-V8okuUHd%I1yTgC%}fp z#1TnW(dv1+HF$s_%C43TaXW`f{8v$pZt;TBWaTtavI*{C=GA_8BeTiNi2)CPWElJA zLTOZ!D{RanR(2TND-~}sI@|-(E|5C*-9SkA9CnRXgF!Z-El-S7x9;lUI$DkFSbt~U zXx~J){A+zcV=r5m7pJo>D8 zySLX{M0grgFL~L2&@g6D4fslW95jeq>PSXcR(g}=-{Tr7mw{<6M6dn&MlE{OLVHz% zL#98pfNu`@*=B!nL3L>|kvbH-Nv~gc+$LDBnnuJ-jMZ$JZ42!hTq^%Z|1AHIBdY=l z2?%+NY`{e#e~TnP%pxP&>KTUzSpBwKp$GVl8DALE@V~yq*uFftUw1j(g*v)>fOhynuJCGVC{5_Q06& zLZ|RhWN8gl-fmQMz(c?Mrio=;hLq3_3G#w&O#(;*X^lctIeT7CA=e>@on?9=0R3+g zRI%Kls8r0@C zfoMs+`Eg-Gl~Q#k92bHq@%5@4cgB*s9;QW!lkeF)F{ta8BU+~pfxaLskZZxO5r9rg zc7ka<2>bPMT)_&EDTXwnkm1nQ>18Ow1?~zn5BIKBUwQM6X@vK3!0QVjR6v}v-B?GL zyK4`Vd?7O!MyZtGVP0o{k}b_oNPe#}o)Y5mGglq{0&!!}PXos<0vaz^`}kN!&C;5A zHbJE^d3an@S=o<0N;B8*|Dw9z|4*kIxt#D}>Y=lbS+lkzUV1qw3|#igi*vz1VmUgG z@PE6q9EQ~Hj5{rcE6ATGR7FNcUV+TMBtLCAG9$z^Hj8o^iat6Y7=@tmk}shcut7n~ zTq>PiUv>MBu2PDgChV>)PLgsy0DNFu|GG*D*ia6bVXa19RkKV(Q@z0dsi9}^F6k&= zh_aks;Hk?(WP#U_v3b^Zbk=^ZI?X^nOXtnF1US~`oL@iheEP-b& zmTou+NS4W@h5%myxC_i8#l?*;Ng-8}=Yf~~-5fRZyG5%w6~1dZ@%ctXJm2QcB_r+H zFwyD8oET(SbpMj)L# z_Z+@-SQi*BL^TK1hB2(>X^mObtwP>O3-itAB1ZpI_5B|}4kDc91F=>K?^(b&@#bI0 zP;;7AOnzvDy)Nm>#_G;G+DhNucM{BBhJZKrS+9Fs+2{f-ho*n3@hn7_Wp2lbyqd0jWj6~5foLP}bp>$v zil_1~71?zb@y%T+dB%9|!6Ija$Vz zdc#cedB42f_m<@w+?sOznC3}tBAlbkoM}BJnEjt$?dJLexZL~^*Y;ASt#DK-F_!pg zLqlM8+2T{MK6}nhb=n6^&nUR+QNjdkV)y;Ewc)a{0wdcyx&P~k_hl)YA5`Teq%7Vp~Np7hy3Td&1)*VmkRz97>p*FDDjK!Wxz>*L#my2?BoExmnhBlxDlq3HUdi!vzg9f($O8pMKMW<2;q;gKJM22yR+FMX)#P=w*4edsaCeE&_ z?7DAbDm8pf%zLaH&_#;WVxW)g;{2#CSWUK`4U|yr4lR85hOO!TpDw{GQP!Pw!HiZQ zp+MhC7^dJRAvT2J2A#r3fMJ!?c|3E0B+Qz-EMXnB9@l}jr2bqc12I}LdDRcgzI6?V z(@IstKIPCDT-Bw?z7qJ8k7dH-$P}-a&t0oeId*8;bVFK5_LnBJ(}ntJ8FB^;k6v* z(d>fByY4cp@pIB2%-(9UN&Y4@}%x@m0G6wVouXVJWJzt5)2iNeBh{1e8ne>ZT zt@W|e30|pTlNqkZK%~CDFI`r)k3FVT)(6~BtS6YpzWlS{`A0ipN@#vwGwA7zDQ(m= z+}C*$$KgH1W&J~RlNBi2Gs~P~6&o4TnfE+Dxc}xa5rPQP%lAX^iBF0&-u||N)=;^hpcv=ceaX7fEg;~Q z@9cop+zkEwciHEG9z2K}??(o*R2V_bzW?Rmhvq4a?-o6=e%v{aZRpGTPM0l@%J|}o0UCP`x)yh} z7ZOvXHHWOFW5P9Z^hcV!BtE;Ki6aqvC8YzKi$_0xfg_bi66bVv{tEA142OGO|HM95 zgTr0VWRMD^hi}Fu_pq8{geK}c%SwVjKD_r%?2<-t-rgN`A0X5ih4>^TBLC9m{Am2-iHs0o=WNV@F7wfz_e=ae$A#%{!$DV87RcL{?8w$wMR|EiOebd@g%k1cx zKirbO!Rv`O`T=Y^*||??w<(#m?in?JlPKe#uk+e=bu56(?t7@^ycv|+ zD{|ZcU6cBs2jo?!O3N}~?R!~%ctxEFca+@sZBD8K&PnvKnCE^jAbZI^oQY*k zRg1utv1jR&+y11h85_4d@cF)x@!M(}a9#4O9J$r7Vs28{rlK@zwk$xTd7?@JM%TEs z^vNpaf&DR@XZi)8x;t5z%*$fT;f8P7V~!UZ)tGYX6u~i(+p+3 zaMO)0bBu)_-``JFNksqH(ZsJZ@n{qedz|3a1#42-SWbHuWWpd?b>pp@*#Nl#_^oW} zPi372Q;*&C9XuWO*2TYt+}v+xg}#iC{vpa|roYbUdRsy|u7?Vudp(#+8{0J$AEDJF z2nYj;3W{!;Z$a(&wZ9ZjqQoMBzCYdHGu3z!!3lY;w=1uI-HE*z?R{AjkSYH`;qldF z95Knn8Rw@pQWGT5=JW^4UXx(x3qYP700&LCO-g2FRxRasgT2tw5o0bE6z&cIkm<&kfVcD#N*LrKi{0JCXyl?9qD>SHLu60X^-I z23y7bL%>3W61z3lklbfUcO^U2+)8HX$1*6#XOqbl6UFB9QI!gc1GeiKW#w07N0H zM}Jj(kOo5I{3Ww~J1QVJc;i`$)9b`Dt(sYW4Mg4+y=;zW2jKCQqLIi1kK?uErMeHT ze!VLuW7g|~J70-bH;^Qpn5g_QaGWpooKB6H;kr&3<%4Bl&kc|luOrqvJj3!)qpi{p zZuuVFT^o$XiW9L(12ii(raa<-zdW{?d<)k;6A%WjdAVA*GJGOUFvJ$+V>``l13*d#&Ka)FVBArkpF= z!G9((4}yygADBPyI(Q4D!_g3;aoF0%Uo$#MpWs&_;7R)8GaZA7qB==vFOL`Sr}J`* z?lOL`nYSc%>+y@Dy6kBsrj)tehPzk1cmRfy@Z_%~WIYoU z9oLS3#xcRnHgZ@5WzcNthkBS%79fCj>k0j;CSlp2B_5^>-}zk!cB{V$Y4scTHRF0^ zUV}h>q3}3DfI6&GKWpXUFGmh7eFUnEI2ZzJ;HS_@ej&LV+GoXT_0<;?ZWG$7) z=0dWex%ond1C@%IQ*^jA(5eGbS;yJkzG-?-u>V~Q%;j{-aP2y&suux8e<5z+mGn=- zB_WzEEX4?Mwgc!-LPuV|Y(O%+0i*Ru>puAlIBHo= zI%n0p29z>GuK1sDh$|MkXmumdYtMw`GHd_mq-xx5fS_roQqouMg@rQeSU#cf5DVgo zEOxKs4Y^>Go=Kjxt}WL*kF1)JoyyiHqz<;tuN|UOq-^lmD7|3+pW`>nU51WV&x7@@ z!_?Gd4$+@E-gJCg4VG+zDPqd_tE-%?-GmE3_08rY_U(BLj2al(CHaDZO~ftsunX=EoRyZmoWTx-`;DTo8bx3yFcv^COh@Hw(H zUxJ*$nTH-9MMqcbx%ad$H^3BLDMm#<`f8pGty`(~C`@YQkcyI9CYmyS(Hul3dCW1{ z{t;Rki}^4@N&eMA3o-Jb?CF^{;|10*`62_g zif)bP8Oz!;j$)yPfrNISKXdXTO|o1nd?tR-vV9p7OMT7vK1%>yVVJ)J+~qV>JRbA z4leVq&X)$ayvbl9PwQiF$&uSv$FZL`ppXS8U1ZSeP#z}E_L z5WOxtn&9%J*>Y;9s7)CC`f~L4!n=4y&mR$$UMb|XYuh1=or$Y282e15)nX#`XvAut5_%B`);`d*Yo4)_>OP7oQKBYDl3a;zd%Zx4eP;I6hxS=`b8<)56 zbn)5My+$+w0{8#)MuT)GIkJ>pi(vp-0%d(R;cb30Be=sVLu4qCIb_z zfy%PCjWHf(UVd5T=)+dsr;tiPp|C z)=2E(Mn_X8F61Mq{A6!d_Xkb8)Qf*I(ITUwDRm56di$2IuTJPHcl`DnMJer!Z)=_I z@r3-wF#$8nCxnaMs&d;Qy~9^9eo%n9DZ}S_EO_-q@6>Bv6L5~LC^GCEG=rW~+C_|5 zM-xLwA70t`hA8Kg0)1(+=V;dG$JWlz+&|kO(8YOhC_JPY>ou-5>krX?wjpI`$xdcA{4)XuUnOE`yyQq%tt270n_z#bGl+s}N4$v*| z#`yrP8$<>XgOVuH`uBFQTYm|`+(r!cz?~K>s~8&TfCS?67ObSJYIUh&w1^~EwIdMh zG~((a4IAqeH#I_N8m@k?YepktN?OS7~SB)7TlgP&I7VGpYJI`h7&W9 zovfeChvg&tpR}XN zSn(qg2D+7&?uSi&p|Vhb()O)o`JDhOgtj!_v$UCNWwF?EiC3oM0T{<{82I2HeytsnejCP54QhkDvzR2)<)rM9}NhDZK}`svg~zWAoKAA1=!wpTVj* zi?RA7l$Z1w-QM@rk3gCYSG(f#wQF}-)T}aAkC0F~PRpR+E<&?6jQ#Ca{E7ekN+4t_ z$-%@rvl2c}NyU~Ary{p(SzqTz`4GTpoT~}j_>4n%e zGI#y@vLRZbNBf0^n^Vy-2vVs6WFyAku)^4M0B=&U@N1mW7UHk5RQS*LVpeMyNxelz z9moq}>johH0@t?*aGzZXrO=GxF9LQKh0g4;DBkZ{ zf9YFmsmgPpvcX=FyPt55k9E&D2xz2cuox^*b}!7(KXrRQdo{6%O*j5uHrv_FE^LV~ zP}J~AE>CoEutJ3&=DD)Tt`IRqO@)d`C-D{ckkMD*N$JsYc$aw>$W8n2U#nIlJAHCpR6WkXN6j^bKeu5-NF2L*R>u z=p?N{>u&|!EA|s&H2Y@V#`;66nEI~i8(|Bd0bjaAH zKHnx8qhPA+ljvu*Lc+3Ol>|FyNlDLYL)~ z77#!*CYhdB%{>?44Wy&`)g0br^U5LUC+GyTOy@Q+7b}&+Kswd=Ej2PyzyJ zZu6B~s)SeBT#DmMM+JzU#LN@tNAZeoC6}n&u54)x21!x)zMZdgIn_J;?ONlG-8H*T zSe!`H@L3CNDRwBW4bsTD6K!B(W}I7=T1GsHz6ZfUCFuH~i0^~G;4gPauI)+Y(zPvG zF+Sx5>I}&Dl8up(dk-qecRTmM^flg^3_VZ8*1vme*%?#Fl|_tOy~14w4s`7i?i)Jz zbd`uZ-tfk4>mFVy@nr!aSwA`T0C+wTD-UAtT@TH?@m9F4rf%X|Jyav=f$N81yJ>%I zLm`)6mj|3F=LoLqdg1YE1?)iOcB#%4970{r#LzCwh>%XJ+uC*`1~om(P5x)7u8bSi9-JNe%6P@E0~Bio2B$RDSAFFU!m4-3PP0501Nbx!OB{>Bs*GeRyHb;V zp!&B@hC5f{)<6r|H6!J7a>T>iz!d6b5X)QQ z`bfQ9SkM;@pI1jA4T7pA^|-z41`IZ5D%3LtKQqXnZcY_}?8FY(*QReUeUoiY37Dqt zUSQ38xPO5#eXeq`!0xYhQU0!;F(UV;%o6#7NDaiV=mQ~zh z`DGa2nKX9I+7G^2{Q}6~I5-wK!md5hz4S-Kom#xB-vY?_m2N3|bk&|)JNKwm zU1|~oxpp+GcXrm7ITEO&`#tME0r>+I2{#NLOP}bGE^00NmCQMl{oPF{27zTk6P8S^<4U!$n z8YHest@a)bnr0oHX)Rlv&TbHl-F1W5ofjZ7+`h3~jax_c2{oQ^(D=Qu-!m_dV+W_0 zW^&}GXs+CJ9B6!UT5Vv2sU`YM{4mD1|CqV%q5l5^fW8n_n8s5Ff84h%@Z^D`AL2*6 zevR7@Zf;_-mRK21XuHarT6>^Cljv>I7bT&YZVAO4**pd&=DS5|X+T;Bj#?V(s&iIL zKVM7l*aDe%Guf&c1FmS<+%@Q}mgYRSEI^G?4rT_qv-H!Z$)$lLI<77Om@0Tz|v zGB-tk|1H^h?tcA(Ifv=UzkAG2bRyDD1UamGwd7bq#5_9SFnb8x=%mD<$Z0K6wuBRP z!=M$s{RAmTI6AZM3|4hKXS!%HCnGEYczXCU)W{W3tAk`!MAyb}OKmRJd?Jl*o{6d| zZ3g~dv!<;QMgfXG*gvgq8y|Dt27*j z7};b&-7|mhY~HEu zVpC+Se`<@{C?V=`_mwvFls*JB895tQ213q%A$os@{E==N>DXo|5?EbA1vDNQoL((!*VdS_NRwkX3!U9`Vv5AxS$)O6{#puv%_Eu437VX2gUtc zt`r+f2O!TiS<4V*#z-W30GvWtM769pTMgwjcJB_d1xYyVIq@oRVUb>~B+P8z!H93Y zg1Gv9z~km!FFPAS-l|P3u2uzP!MZ@Xk!n;hJ9_M46)Rqjd~DbNGqAd51qUYGg!*;Z zGV%2Nd6%e(8-^Q=VTFcqcSh|*zR6;M?;UlUuId^g!z9z$>mInbh3}O2JeEL0Sb+wP z3kRLsQu7al#*IH!Zad&?4UT3cY>^I8#_%W789#*lQM-Qlij)``X2LYAWctLf)gie6 ztKI>b$fJ==MBbi))kCZ*bclLc`Ra*PB=i&ZmZp8D3kqS0(Hohfj~Q(n8D2Pt*!~W0onR4W$!QI&qCc!>Q!FoC$QYlF}+h=yIc{uUs1pM#!Vf89@ z8Y>(90lUJr*o26hr@8#XI5($!qhGi=4T`=(2vR#0&)qlzJg-j>xNf3Nc)KriTSEc8 z1=qXUtk$3mZpUI*X>tHbPD5=_rgeJFwNZc{obE=gA#8ia5Qf^5SuhFyOVMcSp>Mu! zVBTsbbE{YHCs-8CFu=SrSntx+HYncAy%R z&IZIgDQb0T!&*r09lXFxDG8Y0OV9wNs`GsO3lnKie?(-XN~B~B%DgGx;W7Q-jAeyP zZIij$12SB2k6BpLHFxO&*G=%iKk6R|cI_Y2OSw25N2xVCQEh5EbuwS?$X`QbZ#w$_ z^3KIY?gJZhC7TMHV5_mc=;IgUF8#1XQ5)Abh46r%Wg`@Qhc7EX9=cCELApCc)%!5+ zmJz{;nYhlTxv-rssoTcjy9Aa<*)|c%zv~ao$@cZ!IDXFb(AmD0;GP*@wI|mW&|7Y|5f+11Nb{F9rYMP6>F;yCWp*RNaS-k--nc&Y6alcuYy8S zJCwNfdKTlPse(d*#b>sDN+gvNQ8br2;;uibuzU|FR~Ye@gelUJ`ST5Ay|0!k}KBG zSC;!2GdqH|?k;+VsYN*|D87YkAknTIEp8v|8Vph+WmaxH+}{QGAw&qA4}iODf0DXv zyVmMFECbXIo;yLPl;b>wc8pfX3WUr`CmFJu)^X#`X3edhcwaV)*q^@F1iUe3I_%us zpS5FlbGxh|GK@fSAX}95u8{3yMAQRS>yQ9GnMcq>z~tyl)#=jNqx}BL4iq_<0RowI z(u!-tlnK`WT&Q(e*N=q&;sCekp_}&XI%&gejTp^&_k;H=bO1(PapL2WZ>1RRo-mL> z%oK8cLTZh-AP45^IjAyu!sE-6g#=;C`YjfnS>rp)mW4&erLpxGe{?o~vn7Jl`1eo| zfM@{>Y3aG?-i^wC9OrWoi)U<+7YY$VZC$krAe?rCR@-9yC8Uy9N7@4`D(X3M!!y>( z4XKQv{Ow4J0;nug&^wo?=aai7g(f_D?{$@#Sm*!}e!p<_b=i3FUeD&qw_sd<-}*UjA0}LI)z((OZHE8 zo*@jffA(bvq%RBJ<5ItX_|oI3ZeAe*VrW9T8}e62ir#E#0}P=Jev+Y`030xme%*Vi z8zj@2O3u>Py+;p;J7&YTVSv2Lj#K&R?+?*__M+#&(Vh?1{!B!gBnT8{`R4o zzBcncHd_R4BzcvZltMrG@%{U{GLEs;?%mmE8$|SQzgQK0-Ou@f9^v-0PP$?#bM78D z*|E3jYX2z_{0|9F;q}=}+864g@3oDer;iNtqbPF+PN=pY=K6ZFDYDvjWxfo27_HaZ z-~bIg{uCn}&{OPnSfb_ReSa}aUWW~0da+4J?u(hMqDn!ntk(ylwh|_-Sx0z#gP&Sk zi?*F}G(*6~-Zc`CCyEg@&YUiuf2v%v$A6@ojY|8P$cj!-JXF--L$Lw_Z$YsHYha zl5*dF5iJwrYv4)>DI*$&aeS>-Q-@`wc?Z34+xDoVqRp;CsF_U4Bu`LgQixA{r+3ci zm}dY30-R>2?FtJQOg%kTMyAx8{!e;0(9NjH<+#dhyW@pzWmpAYHx9e`A`}e-j677K z=+6dnGNvXNO?!)U?;5Zl)m-$+> z&hWZHLWc}`PE)=RUukyVfL;_5g6(OMPw-=WR zlZOTxwPy)Ecc|$w;ZrrW>!7~O5XD=CTYCB37g;hV;HZ|8Usle7GEa#6L8_Kdo|oHk zXg1;BVH%pvvmN-fUNPKj72W~xDR1TZ1p_GO#zyz@+@=T`&s^_&W88G#ZXmKJL921z zDzxX5fS9RSFpP=r=6}x;L_kjFFCQ8VjU{>Uu_o#t*oW|69trR0)%b33I|U?)Uhi`m!t`O0O! zd1)fn`&x@%J+O&i91=?2$vEU=li{oW?!*7tx|d$d0h%8nksjD^(X+@TYc5xO`#j8GBt#rEjdp*4~x{is7zz7j%P0%4iKtH;V0|lVK+Zdn z8EP-|f+N>e`fjCo@!d*q_!UB;3KIyqoG(EVuT9Abdj$})?$NbFb#UN~Tfgk~(QX02 zJE7W~vRyr~OyVzHTx@6;z(rY@CyO7WZc3XswaEJ437tqgb0PTf)wQ~VT%hu}oCDiX zR@($2S#c~+UMuF%sP?Dc{Q?H&Y+&jyDat5v%A=O8v@}Myr*T~WCHTl$095kRe zX~f5x#*PS&??rSR-lp~^>iuDgjkmgyD*b)LrXa5tN)}_Cfsg*4B4Kxu=nR1r5^)c&^ zbI_l;H;~rCGLe!;X!0`W%JrK;RqoDL4Cv`+sq?L`iks!2NW$cyP|9DR@ID=SOv!^r z5Qe1iE~D}OH>6n`+6A#lIvP(-KZ>gCd?QCr+dD!pT;r^{xGUevTSNxXtRD{|KYEW^ zPQKVrz;eX2(RvIuyAd*F0mu|}x!OeF)_2UVkPW_f!x&yg?|%H!CH-yH#qZo4LJUP* zByqI!H+Giij?JvX;a#GPH1I<05n=>ne?f^6QX&1mKDxtf3nfAq;lJf%&iKf#x~Ex9 z)Z!&^zx6US?>oFCnBx@gB~op#%3txxhA2WVyS^yw0f@A7ppdbt?t%4BL_E{oy!5zn zO$w%7d)m3Gf4{AJ1_2iDt}^V=I}kJ}>=QNBM1nJPb8TWF(%Zu)KmZf=Qk4IE;_bb> zPTk=|kySowfvltr&O2FY81x7@4E0z-gccEkhLH1D=l8RGxj-YP-BMD z!1(Sp>fFA%Sk`?MLRGD5joYvTd!TRfx8M4@lTSs=-tc~#J^0w6%!t!(8N9E-m9F88 zw!(+c^fMz^GxZ3o;#+!k2j855XGzJsnSKyQHiIz{@!EueBof)pX2+kPYBT*y&Dq2c z#~$tEy3_5=XH-kYJa4|Ncvw-%c+p24q_kLx^Rxb_ks2_@8f^6uIU)@+H^c2mM0I@T zCyKa^kJHVN2-PbK5v~#6A7vW3WJ$WOrDj8(pKEQ8pIhN|Y{I)bTG8cbBgn=C27sZA&YjX?He8o5$*Qg>Wl!;~H$M2kpa%h&aINt_%IC5=2CzxA#!@-&^ z-u1Bz1i{Kv2ZgbW?nr(P!yHNX;8Q{~_gIv%n2ApHgI~&Z#Ydz`d<0+kn}Svw2}d-wg@nieh8+7q?8%opIZubtWy*r?kmMc9THaq zpQat+vOky8N{vTP`hmmXJT8g3=D20}`{OE7s@yv7T?w!_;4MLL-3LAfUu z(bURQ)W9kk#*V<$p(mY)>AsnQFP(RHzm#1cjRA$NjPjF5nGNMd`F@SU<3^b8Cy^q9 z=bJ^P}xgg-b9(gvOg5**` z#{gB*IPQX=bja+T#K#u|o-L%Ab+n;W#yMtDQ%HQ1r34UAwP|l_$DMNx9-M|K*7ApG zCO}mg)SsnvxF7*#pp5a(m9Noaw`ScMPsCYhS5cf5wiCebPg zsu$#ohVanB$dh!lyi*1K9-xJjp{j!PdQtVw;;H(M720Sn83@#j&g<@~9@EpSTbQP1 z+bHq>0pa{xnTJqzcGxyT;UZvQRz<0JUz(o>ir}|9I7G<(s5SZUI5!L-gr5@sUNK1r zeJuGj+A7Rs*E%O<)H(PT!Hfax>tEU#;=JQ95}ESvTO5r17tn9+#145 zN{{SA5fB&y+mvuI0Y(HEAA27O2C=9QSk$z8e7q>n?`g-8U7GVQ;;#!A*D3S_q|ml`EO* z)d*eMgwV-fqlitA@2&K7+7sG&&I;2sQAA>m4*nZ}Nfr7R@mj=8>f@uXdr_>fa}N{= z`Ow|u^8oQSa-6)}9BPl>*Uv#~n7SFnmFn!$sjj9{kg;lcw-hLJvNe6eat`JfL!iVF z3pf(&y3_D}+t9$o+b~b93oz{NizQ06ylS|s&|~4fI@&wGlvwJg+hB3uzenP;HTw|r|G4~) zT(y^q#&T2~EnPI5LtsiKY=CR{J~C3pq2T#M9C+UF-FcE^TdV$Z>;9~fgwn!mf#ww# zEyls@>MLrFz=73B<-uQs$^#-bf8NM9g8;dnC=d+t=KKKTWKPkYLt9JpOjY&qv?h1h zQ|5KJ8HSSDdmdWu>SSdZgXYXnVsL{S(?Jdf%>xj1%?FRIL;B?Pxs3?#`R@bmuW)?C zp<89lmewkNs4Xcqv*RGN?cWNJ75Ty3y`x-+knrLM1c+6^4of9uJ^Z;ptJLRf3xAKo z`_xk0NAMNNfB{^t(=)p~8WT18{vaP4&KFR>ZBZxxD%5BMPNA zq^EWIhI%irfQ${fpyvL5f?gBkS zUm?FYOWB(|yTUTz{e^@{9Nh6xXQz6$c779TF-s36tW~5Qwgn!0unrGEn}617C$?q6 zWtdPlESz{AGG06aS_6FDvtc?-6+gV#1-R?+_k;CUwd*=pwm#8%vTvYuc2W?OA|V7(KDp>CI z;O{nF$gxHazKjG1`S?#O1ByDH*2tVGxho{QHiQQ?EQFkz67FzLWFzR93i`nElbL+z;hDR!U`tVI0;mr?KyoLevuri1MZ1I5kcmqxDX$$>le~wC$LA z-rKTTV|^^`@!=bHWBl}WUkSVK8F}PA%%hVG-WA9PW&N0q@V)lgU+63{;~un3VQY&D z)Bd*Ob82ZP96M13ItOI7zH3|zqUWUU185-3!2TGIURph0X6GG$SA zbeEX&X-s16$2^r_5|_9hC17tQ?Utks)MmGuWM!v;ua-1u!B zd)Eq=ys)MW6(S|Y3uG6V_~w1!xtSQhfsp@h%!oO?px|41);(1uiVk%cYR|}LJd3_( zlR+<-htmHmp7Y}IQEM4>v2xqrnc5KPsfZKEtxdd+sMZuM9JIXVWzVx>={fWq!B++w zeKmY7&^T%6-RwFFHG-uDt#3MkA{a4I@OK}|n|1Ze7k5VFj2X1iyd=~FG!KlnNm)%y zO*3}d6}_(Ei=YCsn<+df{h9_S^JeX+qh7xw<)$W@G}&)MOM5NyNlt;#v!GMzbbJfpg=CerK?`(U>e2G*2+~hv`u2 z-|5@GICa@uAa{MD>7&F^;ksuoqaYC%hrr|PYrGLTHlfYC%p?<#n)w`R=9+!qTqC;# z5ZxmLg~uDhVj%tcQ&MgafDQi_5t)6g;8Bff8$ZIn92g07Xft||2wGT@W8l9*=;#$)f$4P`V385 zjgXJJB7sEM*y=7#=Et6oLM#AVVN?jl@-`cdmm>6?jbHdSrnf_IL^9nx7AC8P&c>(a z*sEgOUQMYnK_sRo-(&I7#5=4Z%HVT4ZePl2SY0}@Aw0y*%`1Sxo=$w@C~~1TtRmzD zz^bkay;IP_|HV#*tcA^TZed4%!Qc73@l8@fqzy~cM%LSh9XNc4SUG9;)t@V@8Tb@b zBc!On(LLN>rL4dfvby3hqAgKoQf?>gE@zkT9P8`i3WZdIjl}guf~_Q<+P$N6Lbx`E zo5m%@t)$ThiKopK_Z_S9k4*7Ta%d)8JNO4=Nn^JNvSv3zm_dYEO;D9GCwkn*`hUoc z?XKQ2GubG+v3E6u*f3tL#{(f~~|JA^{ z`Bh>F%)X~VN!6znLk#vcO|67%YY|%d98I*iS7{#O1A0>R_1xLuXQK4da zq_(*4?hvpo^J^b?1H#6E={xG9&`QxjQHnF?cCLlZnFw6QCk{R)$|)#}pj2O~DS_qM zM4JU1#F3O2%^hwSnJ9Fd!6F0o>yW>KJ?H<)Q3DJQIE~egGQ^ZOqppOa61|w5?yXifkCg)snSnhE zRd*MuiimFU ze7|=a2@;~gz^fkK*}OSLlRH~-+*OV;FEbUi0368T48nmNJl^Mj3|WIM(9D{BIREM; zUkMMSdiXs{&NcV^ZbD+#x%ml{KuGPxb>-K`i;x){b>$M<3MUKs zrB#vfz2vUIljyIjtNdg0wq1WqT2l)BrQbSkDTr;?c$KN|kvi)RyB>0u`WaVtKQq{O zV4E6t1qD(vTAW+?gprw~?w*%O=crTsaiQ-}#RJ^qJi*N|J;Hp(XpBflfCSxn`c)BQ zrq!nC5%ybXNrIU+va}T0Uv%*F@45bLHw_S=Pha{sz3IB=e&Zbl7hq73T!Gp-i01`e z1vE9LDm(o*A$-&^q#|mzzb$jULbdD^`j8eS?JFj>?ROcYM7vf&XW}Jv^rLGOgE!Ep z?V%JYa3!JDy~T31`135JnQMNOHjk&>>{N!2++2n%>$nel5jQjh*Clv^awMuuZ%9Y? zK)~#jLePA#++?$3`VaUiM04Ca$R3)|qufEQNIn+$(rwtoNZ&`# z70?9CS&hvY2qP+r`c@^x+G zUCn*A%8YX3dK1f^{WRK(ZHRnAdK^p7vS}IGYl+hZ-*9Pw8`1*k1Z&xDHRbbV!dJd- zftDvULF(-EEonTQ@L+742P78219zNEU?(>Idx}5e6=u&JpEtJlJTH;h!;hkqZo(#o zkmKig?Ui`UVw}Ici-$+odB_vg4avb#Vl^eg?pL5dTQ}3%Bx$zDB6W(dT5eA0_wXZ0 zwpTocZI=qlDc8?o_1H8#Rl}+>^Km%%q+mA?+01fu&J~%Hu<**h2_Am8n~?u4t`tl2)KH`9^cq_Rzj!OJ+jd@L-Bz>}fA?D7QsZF{L>hsC(M` z$=~?fIE=)|a5qD?8C^Ob%XF3WOfP2&kY?51y>S%b8cljB!70PvJ!s%V0zm$SEVNe^ z@Q%vMd+N+FnI?!8@Q6*aguLgLAM3k@c)-0%kw$X3C!lLNo?w}6hM~DDprg*$3$Fbr z%GvD_G^^)3KSR?GU=Hq@>Y8B-3R#0lu(WR$EWL+g8nU!{1aQ*!eZhP?hXHXK zXUo~Rk}D)jSc-||16i+vs!N?(Y~_ef-&_suHb_gmOM1c@D;5V?RMz2g+Djie!KBg4L@;%?%WZYkjOA;`egL5#VBQVQ`XlgLI^&dqWm z<>VK8GiN7lQ2)M{+&b+!hA_nP*a2^g-`t=`NBbx|Ev_#ZPD{YrpG(xP%7vLuo%G5& zG8zxcnuLaL)CZP3zj~$jUhBQn6VB`)>D}VnOa0-tlI0LUm8dYnVlUFOTMS3cq%?u^rk7w)c7CH1%ug zH%D)ZiC7$cloN!asC>OIeKUpmo8g1FAa${{`EA+g-kQ#!OW&YDY@k_4yVZcVzsn=( zoAk$q+=egw8x^_oNhTj%1eOFtbh5P!XYQKRHd~r64_02tQvIM)j3#Vu!BqRbkem+V ziBTMvxCnK9ahy&WgVn+SZ!ZpW@b@PU&bpcRa)*EVg~d1VU&1k)S z*_oo}T;mEmf*NWmsZT+6FF;EFV!D}C~32DQQO$l)LbX%Zbk~VR7Q9TnR z$LdRaa(w)9Ou~!Q+8QRDEcHXbOO51~zEawT?HvjOigj8@{!q@oOC=27Oj?_m>&+Oi zyL=p&wn-yHW0g@J9C2;-hm1>00V{;n-BuhNzD*?`E z4aBVCbhT2=(O&DrRRm*DLtYr^G40I%ZR$p&ez z`+D0aXafZ8$uBU`M%V=Mso6za>=Kt?J-o1kLknTiIQR8b60dU@Vmjvh=HWh8%dV{* zgB9w3rVv0wJKZW&*m-#mRB%Qw+@`ne(gNCPK{8hAXFh{&9F)Hv;~&0O44&BMTCsZF zudKcs*?L&c6TwkQ7#Y(DBkv_#BRxWYT#D|mltaqNcNYVk|1*Wu6FU@)zEJf%`*Z!r z9O7!nKMhc?a2*~Op+>Im0WSqa1wTFO{dqBJ@&1SJ*R(hud-uWlw(|0cCDW|m=5-pP zWzjwVuBwZF~?l zx6c?5ciiyzuYTL-vGE2#+xm=gkwZM`YD?$SS{v+FV{B_=i~?KX&8eDd*<6K=z22!? zz|sN4br_IJlAEV?#(`mGlxFPW>ghtIyo?3G5o;b?2hm8Q0}b)kZZ{HszN=+JJRjo@g0iT zs`p1LrbQPGAeBIa(kArVk0maB%9?bIoO_0#ccPcnTk2L3Bx%JAA_BbDLtm8l zX;ifXd^(dZzDy48uHbzS_HQsc`~G_{;s2r+w1{d?@^nG?KzlwO@o9{H&%Q_>l8_ZF z^Qs|CWVehoO^pJ zMKv_M+DdjvEF6A%NioWPW%VvJ27d-RV3l9_ok<9TDvYfN-1t)>oP13>FA#HSIWC8z zc54_DVGT!}WeR|5I9dg$<5Fqq|7^OD5(91s*bofiP%a(wAwK{V(N_BdA>AyVe@FFFAvMv;( z!^L~r;yB(^Y^}aOoFvsMj#PM@x$&TSbcAE3PhBZw`PH!(WpM8&w)iPjyUY_I-j~NX zD@s~BPid+DC(vWSfFJ|bU@_Mxu9foCNaE={bL4#MU#GY@e{2)b2n`S2o};dheU~6_ zpK5=k5V@{I_cd;{1r|EdpVm_lV1Y02oT74YJQ%=nybmwCPt=zn!KxVIfNA3%&FZ1> z|3VvcbI4xEnJ+x^NdV4EbD^H)B;eJAwcOb9OS-O@UHADa`V?CzjwM*0v*rmJuxu@W zNSQRmw*D#6y%y&L?yBb61VLqC>8e(w$WYpF?(sZXcsfYjxM`6^9kh#5LI}fT)t0(7 z+D$FV1N#J9j#K5UOPqb>5V+{WVY*z{8vPDPD7xeceMD5zJVzTWATyme2!K1pkea4+ zL8iOimi_KMqooc6CC>;zV|2`e&N8T@lH|q9M4n5-Pw!GETk-DPRVBkGYTqgyYh7Gi zRgH2odSgw5y`sf>N?4hrg`FYY8ZBgL?q*2&p?u~!bJcrRo^)O3NPic3(F2Te%M>Bj zlf2Gj-|$Gmsfo?;nL}P!O)UbmkKM|z{nhO`&gAAk6FTSf9mvPt%=*Y1q52RElfZ@j z0NU{5Zu;`M12A`^Hg>{$H$z3T#L@HTvbb=pBbBf?4}*1^C<+ zRWx8x4dS<6UMMMG$G4d~;&beQ`Pl9mnQk0x#jH&r4!@~F-0TIGB8AV8Uji;uT%0Rq z;x0A5$sx=zdOqL&QCh3q~l$9_Kv%s8h2P1IxJ#RvZUI|_?5anM_-21 zOfREm4XwO>SL8M{&I)Ctbkj5GLVaMbRNklmf#r8m>?%0`o)I39`{?G5@gY3GrYhI9)7gL?x!P+MCC(vz zgIespqmVXXyNZkq285yshW=|^_Wsg7kmJpz;p@Y@?laH1xZkogyevGGr`|>Y!AB+j zw~`StZrz06Coj>;+(t?eepKs;&R$Ma9CQtN6le_n_K9s<*pVtq)jc3TGp>T}bDC zqSu%B0a!m?hhnd=6t;^g3t#%cwz9aa?K?Aw0MnU|zD2*IHSPZej1K2J7Ye&eC0-Vp z@n{F-<+2of=EyGwiupBeX?i3D-ig|=Ne7B=k*DGFry9{vU3kCRc6flds;e*di*E9O zvd-U?C42BWJFq+BFo(eC8Jo^I8A7d6eipAhA^Gx5rO6<2G1bG*LZs-g%3&=+K_bR? zbqOdmYlZoZOkaL%?F1Voc58vM^FgHjej?kdm_6xkHK{8kGc)sbW;zh}OU@nSp zzRZ>m{_t|Yh=-pFRgB$_t~Sg%qZWgv`~cmhB9=Idbq6HWCs9>cq;2|Gi}In)!(XZ?wBaytAsC6joO-m(fDm1H6`e)U?O1`6sQ zH~s;>4L5#>$)gd+Ai&LrrR>v6q4&Em9A^9qi2kIm3y0G=kVkTB+5ntE8D2$vt>n!& zSz@pcEv&GBOv*Dkhs_V7LwhMVTt=9!Qe@huHQq$F6Vc$YNGmtYHnH@)@sSYIy~E|+ zYr)AhD_0SAx@e;to9<+?*ZSPX#o8d3Hf_yUf7NO?qi-YgR|qAlQULYhO!?x~=2_c= zSuP^~4aQ!~%!JPF?fm=Le}|{_K`tRLXR|YWcA-$DvzeDKCTIKi0u_e&E&Sa_HkCMR zkGpjJ%mYX`VW5C}SoKIu(e@pbvdC^mDf;jBuQI1dN>mpoo2I7%FLR&n=ZSxu!a95c z@94^}E@hd>Tt&OQv#Ko>1mu;SQ@!MQr#C}zvbM0iVQMTE8C`7}5<+8Qq-{JQ0$cI6 zJuND4!}SBn4*NF)K!l1lTg^Gb@u~=}!2n*ZW^4R)$>hybyBCltdkAwMXud_6n)baQ zd~NZA91tU6Hx>HD71x&6B&*nwSq_09I3w+Ln(`>i?Nf2cUf(rnw4to7S zM1=f&pCw&4tOYEJmp?(*4jV56!JqFCAfxc?h^qZA-eONMWDDRoF#nA65x)$*%bg@g z(ENkKz_z-(&C5`ZfK--3q_TiLxoyI40aSPjbnXH5N1X&5^NYukeupa6wj0}Ps#^Bg z{Ami;OZ5S5hzy6HZt*MZY^L5!WO8NpJbgDNq!AG;*iq<_i6t zn~SoX+D1z#XUbAIUpbVuyqIEF(0}J3`VB;70UeJY$Meo7L1*a*S1MIEB0hwXjlR;rrn6tRl z6M+Hgah5e(MEduf0!1h7m-S3rhR@$C`K3d9TKQhemhPAYYD9&qfm#m*WSHhFYctvu z_p)%J6ZjpMvTbxXR@Bg?ARs}c6`h)S+@J|@qR3Wh^djJ7fXyhou%Ow0G-8Zu!gCTa zKdvPHwL@CU_8nh{ud2NovNuJUNon_YTnv%DSX5zFlF!P_TaB5G87Z}IwU%G9Zim0Z zf_LX;&qIto@%1C;VQ&x_h%R8T;ctGfn0l?9Y%%1)RpZwt%jVGAy7S%+XAyulSvW;u z$^FeQepS~|jYFV@*dOQwS!g8_E9^5#%eDF(Q{zbRdyPoE&cP?r+3yPM=X^GU%oREG z^nkY)F2wFGbK^jw3PJzz_W(dy0FewuKKS`>fq8#@1akEj8eJ70920jG0fkp zT$QS%;@mxxl|PPI*m>=H+07!$o1_2WHG36x{wW*IXGX1~;v=n1#uXbDE*;{yh^UZr z$_gX&*Ht^EC3Jv%8ww%hh-l@H?>8jXZ(yvX{f$V-H1~i6X&Vd5MgTtq=jzpQ)EqPL zn816qK?;KW#*2yaxqv;{gu+kkuRyw(FPD}55b1MfEC31ysTYT={ZL>!0IK}2>fZIo zWkr5rh`*asf47YYNqWHrW(w8(Kp0Tf)Kg&g zTOVSi!-$JI*}O^|p{ERgRVVTmXZM;Kr?MI=Xjh5*+I3|Zjz3W^7?&-tP`$CX29Wmp zoc#Di+Un#;m}5!JKdhPl@B)h@p2$MliQjPf0G1M{FZbG8GD`)=1}UxfJdr0;DRGLO z>1;K%%x%_x+0;1D6XG!31e z#^_>1_q}Azo6Enh8-1z3qc=iLn*g%iK&FhgL0j-dFev)q0D|LtKv|)1Q8ea)ZgEb2 zgk>tIjuEfC221@%4_bKJy&n9Rr#p4&BC{3Apq0@PMMb^RU9OO`x7LM^iW^^by{C7= zonMFuDAAVR3*_|iHUF8ggogJ4O53W%D^mmeHCH` zU^SMIkZq`LX-2-E)}Oiha$`fetPJsa$i{{y^F|~qaAGF5(?A-RCjUC>dYI5uzOyIn*969s zxFRHA9&&-o>9X28;P~~>=(NI`t%ZDB1kUGUUwuRC%i4Fxre+Qc!M^ro{M2LReEJIF zq9oXpD$Si--Qo7Sc$-3fbJN~7vRR_Wrt>{T@7_jGf#99XhjFJQ7#{n2jw!>CN7H|} zLMz0lV5~rw!de!>!`jQ5DeLF#~lFd z&<F%0IWyPf*PqM?6X* z%x)hSjK6NE5*+)&%Qj+OX#WLlOctK>lq_09malFVI`bwwminko?3=6>Nh|iT zJd>L#<;IX~$NnPpc6_pm>zOxg*crmJUH9||S*{5SfroV`11|3?zZx0p&AGm^9}Mbx zs`@4prB3{{ex_CNr9DmRLNEjev4xQyn$ObSg!eR|R2is^Xp;=2nw#ZXhK-lmob|yp za>bbj@>^}7X`@lsEI`t0^2i4bX!w_}p&HV$?s zQJ@}K?^QeI|5ZG`SUTI)u6eR$&5eEz+mUIbw2bL8+>{In76sS^RL4* z`#ZX$HnCrRf@+~pl6u4Jo$aX`4t+I>YdI80ou9K10x}Pxq1{oy^5TSW0zl(oWW+<# zi{C`=xDJwosoVz@_7a6S6z&O@OY;qo;)|B9n1iHvw&k1&(3E7p+~%EOjl9Ylif3gQ z<1!Z`63G1`g)j+l_LUTc;TslTHUFxVW49N8gwl-`8nOkU9u>y@A6&BB90uO8cI8PQ z6eCV1>p&og1Ep+*!~2ih)Qp_>`;K&S1SKVC=rQBUH}ETv<*gVsXkUA^mVoa1i@qMnLeCt8=WfJ*$k3J5B50HM{}MDQhye7K=}miQUv9$8 zQT+7yq*GH1kVPpYKwJp*-dDaHM@C`@*5<2u6TkDeE9U;jHvfYaIPKhTerR*TUrmct za02CZ{^bmQdmFA~(-wd?Gv|*F>d$V0l7&XeU0k;)y9#Ar!nlNHZ+j7!4;4$)ctgUo zLT&W&Ve{h^>(pcZVduU#a_!}aUWLrBt^>w#-<4U+HaWlpJ_CHSnYNoEvpWm4iX)1) z!Gqi-98Lq6N7bhoZgWna6Da{uybpBlQ}|^_|5h<4^0s$$PN*>YCxeFM+0zX|=;*~~ zXa2DCEBI%*#T9WK z3!hWCP&zZv%VvM?M;vyZXltCeqI3nON}t8n)J@ZcMAy_cV zfL*_NJI7E9%N_s=Gi81ib5r_ndpd+`K>B>DYIVFAqY&5B{BrdIO%0%+knK(x&eDq0KK+@6`IPt90aw^dZ+rDWd9Z4Lh3MsoTU1Unu=wlcL!1eOzpF*bKw zu^7MaO96R@+0?>wRhB?4J73?~Xs^Am2!9PuRxvtv@I3WVm`FX5gq142Zz@LSR_~cr z7SjK@s63%kU7@zEuaB}YUgxwjRZD*Dov(u){n^i!HpR@v{Dd2Z5}@f@m7oQ1K6*(w>uSt z>M;;+A?_43O2{blW+ERIX)^~hr^@eO3?$NpOSsaV?Ys4Z-apb z2(3(;I**Ljg3~ABW^NFW1R(B6!|uf`h5O1a>}a>aVX$_1WjvH-j+P`vKo(tuZJh`` zWI}Vv9q=m=0*ov#1f5#?JIz)gbO~}Xt7{vlrzvjVA)z|b7)z+@7V#M2bWsQ1w_#zi z$^9OakSZSzAOYr@Uk_-$SdifYeKD~q``pHPp3ls>^5f|V%xxd}*bj%i0i1lWU~kD$#HIQSWd}5- z7==&yGJ6^0@aEnsL^RkZfC;$jmF$5cLt!iPIO$gL*Pl-{jXmtyO6OVK%|^$&G0m>4a2L6IlBe3LqvL(3?4L{PKgU*a zL;psx;yGvmbAY&}S%|lwbx+I4+t`#?b&EvG;!3LzW<2uxJ_8{(zwOFqx-4D}M}cSQ z`%8#p*w5ED12CoK$z8yGY6TspSES$I4@@7lv>r{Y13dn$XCMdkARPECX{`v09%;H?H&Oa zVSIqOx?9NtOBH6N)3B6i7q5%G^?~8mHuGD}jb=MH)pzoBhZwjigh5tNcD7&^wQcF= z&N5=FYWfv5jKo#nAEA1*Gd~`SI}A4T*J*wh#{)3uSmw(V}{ z6s&^Fi<6Pn#%DZI(2dV7FY`G5w5BOIH1F&erJtJ$MZt3Sy*K+6-yfa)Z?K1gKfPNJ&2qpgE`PKuNrwy zb<@@@Ikg(_2D~eHjI!+Cx#4hPoAb%+-d$RP8X{}^EerT5L3&ZDoI-G}t803!Hvg4g z^(4&uIJJ8S*A=Dr(SXwX!+Y10e$oXYu=FO5<@4u99AFdz#Ra%yPA^=+0ngi2RkFcS zc;fa`7rddE$Y1wvW63;!1LTZbE?I9D0yB4aE$NrJhZ3yK(5~_X3_%=h<4Fg z9r!o_;RN`Cf+-hD^k2Ng-2buu6O6{&lh*)!ew#z?S~UsvyN)&iGb^G4v+-F;RI~}N z!=vrdZ-V9e5fbBQHH?*)Jc+OqZPfs(OFKgc2=_~XIw5qH>otwE^PoF<;Bm2eREnwv zlkv>V;&i@XPei;Yu&RLE9bBf=wZvn78}hB0drg5hkYetppP2hSkKZB^%|Kd z0f(zD!4!&j2lIyjje&)^Sts9>GZLh*$v5WaX(QHlcY7Q>HLOu2+)yk*CQc7qAxN*p52t zR?2u@VuNL=0&h+fTi}lbb*jr;>unr(9QJw@GFO7z_qsoZw;ZBUF0(JVJ3>X;w%Enfx~_g!(Wo6(lb{~gzqq)-Xi2o@e+26fXVq%d)@3Qg-srU z6w3t6l;k;J!3qL>>Ma}{L26qOde3Kr`?7i8`-`~yK&K62Y$_&YdFrExtjEwM)mcj4 zkr13lz}Kld-h!$A(n|#C{2BH@%kXG!#iMuWA+r<#CJ40s9RwD@OkmGMgQGjzUB~>h zD$33-Ux6_otqk)W1uxkGU0V?C0@rJ+Ok5t&#Z0L_44ZdSEK|1BV2#c9=!@{@lruWo zpX*h3Ks-*_5Ii!O>xnA8Z2alK{7oe%y|M)l0#y*fKiNb*J{*}YU~-@j@dTe<-48c- z+ZbVbv*^8a0T71?=`_r|EkEn^l}p3lhqt^0A%5}lq_m?eqN~>Uek8fkLsW0^`FJ}f z;1HUv@2%T7Nvg3YV{e^6Sbzw*LO;>QdQcG1!F^ zzL)!gncEZv(+p`363vu*Bt721iFnHc44y?a1%|!~QZ>iH=KQtI*vLYD(ItunRshlq zcCxuwOMX7}M81^MMWz=lEJCppo~I&vJ1+6o6Q|rib=xn-{Fud7lP&HQT0az0fs*U3 zMG!9CyK)dgy_QK{^GekUun1nAh?-d`yZ%`;8lhMZKxbrBJgdEmcs@Mp`L}$O1F+P4 z{?bpl(5`&TNb!IvikZ;V49qfp2-L1PWoa@r?&F{o$m@MC2Wg1_b0Dli zw8ebVMvU4U;Wh;6KP#o$Ads|R z(lg|`7V!XSiME+m;gu~y&0rT(BKBCdL(Nn3=S4n+0{qCJ?h>2(rtzU>AL^T}e2thl2$H zGO|Nnja?AS3L?kLLct&d5b546Zt#Y^#!p<_fl{5l^6f4QA=URVePM~)`PjMB#>lFG z)B-zHOMnqQdd$~Db61L3d$YA7!nQuqkjBq~XnEPtA<`3D(i8!?7m+Z*OuQ`0vNgPY zm~myL4^l|NW{}JU#ZxSWogWpEnC%zB#_IisRxv}KTt1!*>MI2)^Ycn&J{ZA(mFdF# zwmkcy{v2UtGqG`2frHCs;*Azc-LgP+MX42&0+re_#P%T@rM$_(AA%^k23(d>L-&8ZZ@g%NzSQ+4+>t};BOH6vh`P9;l$bfJeMnW3Yl#3 zurV}7)_NYm#RNa>9~9#gmzMiU7vIY1?D}aUqTjTYPKTeqH_7Hq&?~qD&IQHRU4hH1 z;QFEfWSaX2X4@rsh>vRxoM+6~q(_D6>nWS*c$LpCbuN4pBL%=-uK?NWrKi_6U9bI9 zK&7X*S$?#jVQ;uq-A}YA<&9tzQ7~YwgmqY3r=er&|c^ z1QquPn&vx!ad!N#vrIw10gcc}26Jy4;Toq9TqfcsBK%f3hB^(=l=n1U?gd5`r7C8y zpN!7QsxJb=Qu;hwR==4Lx_-Q(!Y^`SgE$tqHqS?2uJh>OCB<`h>3wYxDFF}PZqWhBpQ#7~8=+O z347W=_Ck`j6F|d?WnXjHBMQ{ZMr4In$MGrE+^bfuXI||Lj|~|-UydD8t((e?hIrS) zyvWt|^g#4SrPLa5p}J(XXuz>^m*|P_$I4?n@Pd=BW!TkOuwR-03W`@^lnR9{V2m`O z&%SpL!Km=$e{zjND4#qoO%`A*F=pX@L~sv{7BNXD)v&b+MLoK;7TFIc{cHr6)I}de zOjB}t%;VNuFf0f=lV1e`jb|}*5ng_4Jpv6?MeL06ynXk;xJYvK-oIUAJqD78)#7da zU}iQ^%Sr7iJ&fuK_bgb!PR(XQ#zp_|AxyW-WZ0A&JubB( z0sV30pR?_{JaJq>Tu>Oek$(X*63P#0>*Rj;uu{><0<;!&2j&!n(GLVWW1{oXXo41p}6IK02meJj*Vbl zEgV~fJU`n8<2d|@Tm3{-Ff0qhGCznLBg@pUT(UvFFMcRWjQxQ4Q6L8V?#)u#)*a* zMUJOPSGw-!17=Li>E5eHKcj2)C4`!dP?nv@^ujb+@V`8y5DF0B5+=<4*3w-#)Z~7n z$++kO{%^euD5)9<7p;yo}E?csoRH<3r)A}q$@P!_O}D2Lv=pe;Is-k*)nz zuqz+zF;RnGfNJ(x^Fzns3#Or0szY#8I$3Rkwpe@5@SARSIwOogjALfA3r3YIR;%E_ zi92RPk2WcD%=aq0Ck%QCP%q`231=Bjduj}S!<%9x>|6nlvHBG3!zWLP91<1X<-Y== zCotkmNGLX%uI3~g1;d*_W5X$z&`em7=@`nAsvXr!0%L0;X|TARo?o3O8*=b8YTTpY!TjqJ9qj5{O)*K600iw=2$hZ zF!?e^*}zQm2ORp>dqH#9`Lhu~eq{1al&Uy+;Mnamulxm`iAd=jw6QV+xtt^YEPQaB zBk5nt(3WDUpxC04Mo>JFA7)KuM=IQ^fryBiMIfD*xMmC9s$YajK#MRY^$F&I)k)fO zyc0{`V;&Jhj@$~p+e$I-FW;w`N|6Z^SCMgb7-EoGL|J{bn)~iTSrD^+U`|>(cNVfb zqxQXAq$TtHCQ8gFu_mwK!e$+X7lKQNYFJQ-U7O!RDmN z3C5XH4z6jNtO2t_;ru+smbd4EkY#WP(j~y!y5LBYO^XL=?p z<+=Ws56B)=UY={nvsMTC@K#|Abw%9Y_%!#bs5FsQ^7X#y!vNz64h!=jidzx6wt7w# z^yRpmAx7Xzax!mTo<^zJCZx`;{ZgJln1qjyAC8&M`gt(&XH@eD_as+=w65o)mJei7i?N|e_D zKf%$L-COu6C(ni86zndCpaBdTiQAvWkT;-+kx6rl%V3#!N){S@YNoK5RlV(<%*$>Q zeDHSa{Prl0{Rr8~c|?BYd+6f_90#-r;yyJ#>p(P{2cj7|eU)>VLkAwP6B`d$XXc^k zD;ox_|02O52GR4583jUR4NivBZYiTFuV!}NxC)g==Xk|@0a+`xS3N}&;v>PL{VM^T ztK4=1&OQueP=YLO8>EaMiw#TUMdB6?yi!(dzjLAnS;;EbnB8wCo>c2Fuo{%uz zdU`~~3%C&uH~%9PbWf}Wfr46z?H2CAa1$!dz1@Vwa)UX$Nh7`QYYX_;ljr}mK5a+) zM}ER;Pf)8sn}{*I*ZahTJSLQ*!UiTmCF%j=@$QE0y?hDe7iXpxz-B6Xz$6j0A!C!S z=_;-QLvB5n@!2PUZUI@3?-Dz~heDJRI8gzsnDJKg9{;brlCc^hAK&?bpCpad^kav$ zWf{V(EH}k1G5j+FEM6qFTgcL(>t9S38S%BDtY&KYU&(X`wr*PZq}U<>pZKjtD3~7C z_o+PI9?C0jw#ghk8*M|07w=%t0weKD1Tbqki^et0;xy!djx}iF*-P9GISZFOZ#pq~ z`-DBbH~g}4{R}laRrXNYlG&`UL&UVhtTH(gaK~gDktQdviO|9a9B#;QXDI_t88NzG ziXzRyyX%355S?Xzm+Eia`9Ff62PPe*V|FN`8Xg|Ib*97H&WaWFSl0TZ)LTyY^ooqt zz!$5(yb_xGZW--Y!tyq4r%>D#;n%v^<-|_H-Br^b^rLu}FgGIej3-U>lAfYZjLt(AVZYp8@W3v^ zW%XYS1!*VChe!JrvI%>Q&ndM_gY#ee9QC+3P#~y*8D1{4<(R7;{ao->%!KODgp3;J zG>^4B*3q`W2D9LsnOm`1gm-{Rv<&BWU-ndFEOE-NT|{r$Lt#tq_PE}2^nuaRPvGp5 zvt|{IY%;64Bj8GS{un7P6>C2_jNMVJG=8TR?f|@GD=Yb+15o4$;DFh9eOhX5WuSjY z^GvX02ipX&o2%~=zbvhHO|?8mHg+Mn_TO!T z^Acn)U5NwYpEe!!rt0kZ+=}YD@y}VOa*H`B9k4fu0*4V0NC_qE@rL5o`$M=?|DwY!)moya+w}2;v*MC# zmQ9sPsev-Bl-CqP$H!rN-9_1SKp?6F_At&%e} zogzJ=f3!~dH_BtRzC1C`oYCRwfUQhC2Fwn$<0Bl^On;;$qrXJtnXZvFflv2*W@)vk z`2vDE1X<4CN_3WfDL5$#dl(L9XL5gikhH}$=Kw~~i6A37ocB*4r1r%|Y&>2xxy#8& zep>av9ps8>;|YD8jxf@tU;e|O+Fr)H!^vGtD(IV17dbMS(`7ro`rJ%U@NHV$#j*kr&z8k~Bu?O)MCnMhpm%1- z5C6X$M}Q42)kV9nLJ@+0eJkX|?7T$`-2~`)_|a3BIZRL^i1i32nLk|jxQ8qcf5inX zUYKPX02Cc^X(`l?AxNh|4DAf&e=IGu)qjRQKT~j7#@xroD>4i>4X^I~{8=v$8#|8( znPD%W6Oyu;24RCyt@@&SvX|r1F464UIQ=E7r3JpJW>3$lWqm{_)%40FfDvc2^gGK} z>Q9z0uq|nD+}VF=a=0Szp(cwY7zjTdk7h7zxwDF@%f!4WUHkZS<*uYkr2ZGU-f*93&|R9#Z9e(Ay6f9;im zXM2($2_3OtfOcVXSuVGeBWdPvR47PF#T$KpTr^-^E4+i{F~# ze>y%O>r$`r`ygk5Cds0&A!$%u ztCo(h&+gw;6%X1p-6jsN#Qu*b6iAQM`TW-&lVjoIHuz-WDAN*~{>!r-_G56g{^Rpg zyHQfZ%`JT4yo&5;P}WhWjvc-5@%m5O({^g3&q*BWaC8VQioYvPDalE^!(_E&^onWO zHGWO=(%o70@h<{YznVEnB*mqO9=2e-Zg^d__4CM#=dnyFvxFn5uLWKBZ;jt=<@I}O z>SipqK6z;7)}@agG6MJc3^a2IvpHXwqJo^f5ul3qn~WBr6f@X+*YLwK zdJ2RdmTgqHHRfQbvYizBM2Ubjt*Jm_^m>~%f9V%;aURf)GR1{n1bh&6bu7LqB| z-Y%(cQeRYTCBD!6n^<+E7|9nnOEt_wVx&hJLS^e@nX&*3?|gxXR!*zQ8Vjm=?stf< z+21~h+hFMkK4i~#>(lX4+m%Oa3+Hy4se*T}fi=qAjHzWWcwfCjcqSyF7NzggeerMX zrN*6SmP)-VpwiTm>~}E=?b0SZ$ZT{1cD*)jPRZ7;n)R9nZdK~_iR2`9$U|2Gq7vL} z+D+}*G8{RiRWcf0BH$_0{awP_uyNrShbeRUIFp(q(%1Cl_)efPzVl1qSxs(QySYbx zS_kz{b^lKUAEd2eF>0tgu86L0M<_B0AOlK0{OFS}N5X_8>`*ZZ-)u$#u@ndsBiI- z09$x8cTzYVwgE6wS?Tyxya7flLFEY`RPjdN2*w#zo5qKv2&zlfC(c1Vx*16vuiSsp zx=T-i)Y5(^HQypg;9_TEE-;yFBPpDd4xErxKFEpKwCln|MKVOrO%K?4WrJ+OxfD!?c{xnX_MHz1LWJWVi{^an)F6>gu@K`G|vXo3!-Rdn#m z|8I`vy7q38o{+2zu9+^@pi!%`a^4}9?Hm|kLse|q8HId#xOw11-U-wG)ag`FY#ZY%9Q!|(MV(O zd=6%6(1QwKGw_>91DmD_X8)zjL58kJj9+AS!B(^@%&K3o=Z)SSZ=ZY2El7GuaMw#9 zny^u?IKdadJyg~)S;Ie)tE=?8#xpr4oD=lgls1u=1*1(jU}WbpRz&KZQkNqoOxsPLqP|>d&1kk`jYyUtCQGbhS6|a>-U{7uM`TA#1lv`| zrTb0KVq?8eTs=V+nJTd?{NOr2fYJTH%JKQ9Lyyf7M%6a|m)1&k1#u>-b{4Gk$rWPd z$DOZ)o+{0F5(A2VnV9^Ny0x?u&JB}|yBK|^L#slUg%bVTc-NN(KZ-1C@%lmu{o6&|2mdXMKN-Ej#jtnbtKM3ongj<;M2jS8Ddzs6FS zY`b_od%~3u)T!KQl5)CF1|>_21%#Dhk%_(6l5j<+f)3t19sf;P6+cw^s8j2PzdS9~ zKWk`|hJ`Y7)T(b}1>Eu@E>+}#_uv~^a*C1fz^w8c4U?i%3G~-C-VO_!Pol}fTqvpF zP!Ua0NPr*ZAsNzGDmE4@u%VwROtH}^7pg!xJ{BX&E;t-{QouTkm=#!GCf+pV4$uKd z-$ld6Vx-NIhT5S!HSwDrAtockQ)AZK^o3{8_c4!Az_S?dOT^D@rK9Y+jq~(fC~5&n z`%OAs`TD^AwKdCvscva~qxqBL4De=nLx*G>ko##GA%!Y%(hN5jz5>kHnc4Glmib#- zPTF!;Ske^pk878-NF|arcUgQ{wv`V&8vrA2=1x6EEq z|9eL0X8ZABwoP=w;VujbZK8k?6|D6DJxF5X)es2SjouX8zcPs0F=VITxOIqG5?5<3 z-6jd2|7ra@2=v7aHgSBnTSD{S7&}X?i?=T=T9_YMj^%XWIX~9xd^bUS@1^{I+yoRgPD zt_3X2iLEV0gOOM*uUH<(#()6l8+xU@gNQKTV;LIs@*7LZBG_468@mW#D3{cS;UhOz zBBZQ6!a_EoH0a+Nb$pQO5;d`$T+r=}Gj}5kp$j|E{3DbciCnC$>vGguwr$${u zLuU==2HO#BKX!alVf{7>s-2C|O7cEmIOg48T`oZ`i(6y>!BI%hTIl*taLQ$+f6V_> zR=Q&%8v+M~RJM>WJ@Slg#()YXx1uaX6C->$64-_S&IzlvTmDKL9~@I+u4Yf8a}LTQ zx=e*3*AxITdbFNQVxU>i=>W|GGSPEy&lvC^pps2B2Ta_wXT>)HOHFbs#CIeN# zfZ%3YFCrL_Aj^i%%@%(7(Tl9st8^b`Gl$FOcG|6k7xEJuiMqV! zeaP4pAU9SzeY@uZ%G>C=>OQx@5IQ?9E`U{-b+Erskiyj%*><6S=3CxWGO$@*74L#gUKqVq-hGwL_e*N)#+ws^B^<^X&J7o`$7F?QE=b*kkX;$xCK za_`YO>%C`>+)md?nMmgg-(PQQmAA6WclNt3*naj&e<-ZLIm!eU0RHl;`~+9AuZQREJ1VYX|Wqz1GbdK)?f z1PJ>(=~C;su=lat^x0akiOUgoapf2F_Z-VMEHKo9GI}u{^w`~WKVaD8h?S4~X$E>Z zk1OY$9X3B@mKnEhRA$?RDiG&QTnHR`2)ftehWLrug>@!5jpM$H^Z129(fJ37)928{ zP?XDAK!_B<&-m+7g*{Lt+7RDDAbd>U6oyjN1LUS>Ss)mYZbr)KR`Ru{5rjX7$}3P5 zg1nQ&6^k{DH^CPvJQT@AFA|Rtx~avT;i;B6AQOvq!!8(zxfJG>T9T0 zX{Z;4EqAXB>Mf&C?4|At4gt_R!M!zJ17_UXA8P2v6Rd3v(uoVI_@sFF3DGIywi79ndU0;)QK~I zAxp!H?evBh&>WT;CAP5TS)LIxbT%$*rGzjZk&|Fc;@G{3FZ8xAoqC=Ha(-~B@9XWe zk0emr3^g#){nOqL#}YRaDZYHuocYmg^r?MGGc_dlEkvymgiJv$>c#+V(ih=Zl5m+YCO(YfY`uvv0ZK#XiZHW%SpY+ zrxcwrar3Ay|aI7@d887|BeVTCh)D?d~8<*SOk(ncrO7qbDn*+C!vv==}9>oUZS z6(mq*C=WQZz7&;)m2Lya%*zS+aVBy1hKqw5-JP#YCuIf(g2Ny!VpDyx7$*CFBk8cA;7Mvyv?4SIH4(tVhFjSSKP zQM_Pdfa6uLlEaC6|K*!3K0@N6{pQa7Fc9@9Uze&^V*kVrgM{>Xz_yBN1OA|JB9)>dOmK=st~3XBn4-240YA=j}#J)o2Y75-ImvDLJrr z5xK^-zl$iq^`!mW7I;P_u0W1M;?l3^+CrwY3~9_E+#bX0Cz+e=i~@;=TP~|>x|drr z>Kgh8pkrblLW41v)-wp_=g_MB>t%;t=ai78;tkf#?S!C=(pipso67|KOy`@2o0r0% zD@E-6$91zEUN>B{#JAbYIe8lbG3)vHpR*H`wx2(asMe%yU2~Q=lDKIF6g8rWJ(W>? zsvXWboQcv&JcD5V`5v+zV0T87ko|#Ce?JKyHvSIUE=L?~P;a;A@>>a+4Bb`EzLIs- z@dVPE7K+3);|w1N>K@NN#HO7cYm?bB9IH*ReTZ%6oSb|*qFta-BMrELu$g(Vg`vbb zp^Axg;oDN53h|*hA2F&)inVUgTI$7pp6T|4reW(Fv-_xLx`#h{-xo*gB8@4KQ!a}t zmM>3>l`T+dhGnI{3eNkMS^aqz=8#my-?IU{X_LkGHhR3S94v_!nj}^BPjy#QT-GYJ z7={=Q>Fb+-^D3bjfvzWS!XfE*`~_vmeRL?=MsQoUUcx4>@40M6Pw9GIt(CIpuxk}( zI^OW#e^sbMLaxG4YM<)6~&vlHr}}D+fzGSr!&J$P;~Pm3`|}i0d5q;_oB&bcR0&mL0%- zeR~6Jvu2rdj@rYi0-{a2-S1OHdmOytZVUcZV%3`|{s71E>nK|rqf{67Wqqr<`ZRV! zTqlz7V^jtAaCR!*;D*WiawT$?dsxWZ1G}b?IpN!}CSQ}|4U^pws6xg!^;_sllfh*W zHCPL1Y6>PY=xqiou_{uGv@;yP{}oFMI}GJttJqK1#3T2)gV6(HcxPlK)g=X}-yc1( z^}5gG*>c*|oMlG@Az){1Ku=fZO$PR(p0VnIO#&7>EIF?s1 zd`9}PfTk$U`{wuJBqm8*P!2Er@JM@SR3oNEC{o^6DR0-cW%>lfNr%CX(#H@zb4b=y zuRP*zj6$DtaCjya>>U9oR}u9>jsAi&UeM3RoRcE zTNog$a=XqLwYUW9KAdUEq zC2$4PO|U@SGZ>a6I@B z+H2Tdah;XM9m=lTp>FC7!_8AbQ>|#rVrql#t)GQEX}D6-l=0bR_1(?v2ht>>cch>E z!j9^2BPi0Gs8A@Ky_H^vZcKeEXTLd!O~TA95B%)3*pbhg_Vm%s=DF@z%%$Ys>1A*w zK?mcS9ULZR$}zL6*XnGYidfdr4#ul0=|{ah1%>Lh`%kl-5j&IIPC3;83P$zoYUV|8 z2h7?&s849-@U_W4lQ&yCopD@lb0JUT!5s6D5X@_bK9NK)4Ul0sozI?fnDeq3A+;xL z&N|iWL!{dG_ADb=BI{I}718x}QF7G!VBKe%&i_Z*m&ZfBw*T9*Bul9*S<)#|35Bss ziZ)b|j$K+TF=QFLDM=+%Dza8$>~ylP(_$&vvWzhHee8o7`|tV;o#%YdbDr<>{rz$N zc>Z`^$LGv_-S>69w~G$Sqk)ZZV;g9uXbpHhBE&|{S=!1sfbOkTUN(MGS*CDUG05AH zwzdR7tOjE^`rE;@pQz@ibL%&*gOR^kDgl>%=R>>|uC{B%&4J~lSEHx%%8Dyh_NqdS zn_K~gydpG_=dsGCBVPNP=**XuM5kjIpW5cNX3VJ0*2AB_N(9&K(r?5%W6nFhVC@uE zjuc+{l;eC!|8dZd>W9?@g%uxh^pm4xcFx$rybh9$@QF#ky6I3ohdyGc-h2mRcKg~J zg>-39)&7U>i3TZo7E1LY^F#!O-JF^b6_at7jEQ8%dl$cECjEfT1uuW{xE@2p3B(RK zrg1wSwJuuGc%<8kfmLd{1*UPStW6MrQv!vPS=W^!E`NvEvHh)*pG3!gCY5OU=!FrWIZN&ed%J`aiD_9sq{J3z$s1Z0_Cn6!KGW*>J^9$U3(H6x2JS* z$<%u(bjjUwCJ|psoaXmm`ET>~uSUwFOrH3m4)u}pHS?tsnU*XtQxac}dga!j3kZ!W zf@`y%t-M#ins%&ASbC=ft63crN3!a5n76w90R+Wa*n^P;lG>$0NQLS?X!4XsZPmLU zO7%gHk!!9t!Ibx!rRDA%D~Z9dJ~T~y^gN68apWQS9^|8mA5d@k*wjEFJsCa0ntynY zD@+>O8H778`wS-yCU4vd@3gY=G9<)S*VF*VErzsDpRp_PP1Yu+^N^2itQwi44fcdk z?k{p2`IF%us?R%DV*5k@tbyUkY|bjHZbzvZs0haluFP-9?EoU%SbDKOQS6`s33?-ORA+-J`4>r7?TY!!{eODmutR1+x(u`>>A?{7MsN|~VSH~=C0o_7kzh>%`4g8yN z$MFV0i^8I>OHFa|H_yQc@Oto4$61fn!iff#UM(FNh)uf}LnhbV*JyjcI__B^I#8;c z30|9&I{#hYQ#BI->ZrLLZ$9Ln&%>ZbV!U0uwQIRgt#q{uOgQdBTmx$6#}0n4)c3x= z(v$t);3g5WL(hdp6_uVqWsxvhj;x*Q2Z(yf#v6G=q91Pm3|h@HGs(a@d2*3!RrV@I z*jGKBvx?-ezr{bbVA1zrM`Y^Pd1HYXo9B1r>&k*C!8}rMNhLfcXRW z{Bl%i`7OlbM_s zDz00Ko4Ro!g#qST+w+XG{yXso>Fwuua*!{Qt7N4Qt$n4f&bJOP+!UCyzH85aUPweK zzw&ZbzAL2p3)1R7TU93|z>Za4hf%moudlx0eFJRoR`=o*Fcc>RghdJ4yz2iw^v3ws z7%=)D=f;Evrn-Dwt4w1D4E}^SWkAz=A+HG1EP|di-P~e^+krQnKXAzF-|2{%9nyB0 z2sh*SN{2wLHp$Z-A-C(fe<0*I`rn3GKynqRvS2s#}~ZsO$TvX$hiGSIOh zu$9;Rq3@(;^SarE)ji>6XO95ReRw-VtO8Y*YqD&0d3&6X3vXGOUu29ot#)9O;s3pM zys2TG)Pq>B~R8?$ej0Z+i$0noc{9^uBXRe$`i2jDi0Su z5WBYJ3_ahINvb|s5^onhMNj&niT|zaJ6d3>&nKi#y&wpVkwSa?`#L__Q*IKi!Q?x% zTWX_^;X;@q%_qCugUoe6%c0TtK8=v59XH`6NQU@c_Z8s;X1VXl%)^z@Ie&t-jw)sm zG@ARK0iUb$Epex|&21IV?%B(>Jo_`m+gtPLncuQDHX9PBO{t=PL zN8kb0fn4Eg+pY%2GF;CMCt}a}db%-Ao%n#6a3B5AEOh-fa1C?8Z!}m1!}bHWT9~?; z7K*wi0vvXAb=`B>)rf_o788l0TnsQ4KaRJ7>+9fDTf~E+&8)aim%h%8O26q|y&H2z zhEtrd*i3MMO6j|SRqQ<>+N~;*eGgl=nzgt})c2l8n4}_{e`jGGU$HK{FtwntcYLt1 zSSkHagFgza&S@ox#`V*6dDA{AXQFUI9a*}zrc;hFYbTu@k2ig{(aS$n5z)sLPC!by zkP1I_eOMme6zy4BPPq1t`SgkR9;=Im9uPPS(ROUPY@ZVy)ZAU-QuS2F0OAo*cF^@Y z;G7~hS1QR=+??{e*CoI&BIUjBv(($M(@%Pr;g&)(V2R<{GRf3?tz1*3WJcbn6ni-W z)PDaRvh7Bz4H7@a&w9iT7Fa$soSkml2UJ*b60=;Z$oSSPwtDXV>QsL{q(06L0&>#Q z)P{&cgA%O$%3%2ku0tNiuSwqP&~8Du@0gM}pMhgXiBDecX=(CONcJzTQzzZWo;8KR zw{lLWdA1O+Q`kyJ&xQ&_kF=Mw&IRpSiQwun}Z^(36mIMjCKSwFDJZ(AWVyiv`A7K=Qes ziB73fsCBp;0vwKg0c3DSvZiYe&2m@Ax^Q(5V23?EiO+L2 zx-Xfc!^!Zwxt>*`@Yt9blIW#!PS}CwxO3=ZatN${AzNNzb?@zNRB2LI)AF7}XaRCy z)z4jQQm$Wa%7Fd$({)&e3FHhIkqqHg{}Y0<1@D^?f_{?Gad>oilp#@h=;?0pJyUPz zUh^)~ReL4doe&zmGR5#+_5w|$z_p~yII+nV8A;}w`iXpjdd?1djJ4%uhFx8-c32KQ zkr3;+3nEq80L$H6EHBoZar{ZLB9R(EE(Ji*cV197#8T6%5gSFh6t&l0)}cihq`x3- zX(kVKhK0h>S|U@prb9zv$!e{p^S!#O-Be^$@5zpm)dQMr9g8kz4ggFP1v!5}Y9E5S zzFT2+L8?9E$56Fg2pj&&d4%#RRz%gQH5&vm9VWG7Rw=UF`B{N%U%*cte|?WIP?^R~!fTiaPj=W$(-CU0wO zV585JO|}aK9plp#`)04Iz)T?#Jg4xn*oC9h=iqvf=p~hPmFLBEX@d!(eREv-Mn)u{ zxc?eAU}0Sp(^sdHzDVzmJbLr5CcMr&n5FY`KV)+LsoMOS*Oso;GZ~e@S^O6D3b~l* zitnQWLDNz+_pZ%auRR#{eDFTarEd&p%yVURzhd<0(w3@pvAIEOz403T#)smzDRPo! zRXiXa0h6wg^SL<8_7q9GM*xLVmV&=lHWcEV92HLD=J`13)XZ4j>sT5$?%5TtPwIYa zd~trac`;=}K~IS5MKC}sg7rQg$#RPQWMEs)y_dyoW&?`8o}<@IN$SYz-R12vzOA0F z<(=`pL`fZX)jM-nOQzT|;S;(GZ3Z+5=3GajVzSWaNHmNe${=QuYx!6XmF?`^CafOO zw5$Et`0jg=d9W_)j6Ldq6tyEXWezxnH)V|3`$Kbw6s zIEpq-1zs|<^;L2k2T|=f^Ty1rpQmy`Gvg^8%Y1- zs;7gZ0Y=5mjjG&CX}ocN4655Y@PYGV92mU2QYX;}g+`A)^1usz3AIEL>A4XvuUMZ^{o91pdv?b8r;HDNq5^*BO~c7*t??udhhg@`_rl z@XVp>vvEyMh^Sp*{4cbh^`^{J07PjYvd;R2UN5wipxa{dEhCk=q@F$Yb-)aL zMcHAUSw#8az6<_czqNh7p+&-xxMBdrHq zQNNG#P-BEp=pV7<(?I51=oFs3yDo3BXMMsag2h z<};5RMziAmim&axTh7{#O-%RB3G+dqKOrz-d=eK@RT8PiKTxr^=k_1yl)C16dq;nu z6Yf{yWcld4i@B#_xvmj*GQ^I^A|w;k#V&PUvg04si+ZEosSC&g)2shJTKrNv(I6}G zALILdZbWNZF-RY_(q^!*KdxStKNi({L70Z_Vx65J^eBV#%=;MG_Q>2_C;x&aynMN5 zha%y?xv2Q9X{Iqax$78lXC7;~EUw(GFw$7Zz`4O#1mhG^_ZfhL4Q=j=2yEcnZ>vu3ezCKam&r$)}a z_DFp_eaW;rN1JjfD7V=b7I*(RYFOr6FP*{dX!vOT6#1-8fF7#BetCXkL?@4=p4`V* z{Q%a^{l<5q8^bxn0JJ@Vwo|{^otMf^SMQeel>=iORQ4Zcxp3QVT`BP(|HNMcrwaKe z&yiOe(ng0)vAZTQq9=3)5rBs-@NI4AOLO#*#Ov7Xh*)FYW}%Q6p;hJJvbf7K-8BJG zVVHQKJ+(5ikRs!kSy~3Ne!sg;{Am!1Kn66Z<&WsW_WG-i)BEq{dsK2eF12dxFD!N! zzJJ>sf@J#CE*m9$oG$${_b$y=q*3f%o8_J^hY_O^E$mj9 zw)QT>N|GN+r4|B*)ARoFn!vy@B&KouuizC!8SlblH_b%Gq%A&l7WQ}3=_>+PryyC9 z?y!Fhj=s{J&Y`Wx)ycN(iEdaJ1}@<$gZvyC*CA-onwNs}TIGvVkFAS)%W06ym{;Nj zldNG*qSlk#RVmZ>W3HMXKFW4?RNX*{v1y~vp!b;^lrG^k&YMt1#-+XhEX7-)XqI~_ z3P&FoGFj&RKuQgSc1s<_9LNQHMc6wh?oUPpksI5xZj?PcH5`=tLb5srpa@+^&g)Jp9xZleO<)H3tqcq zj9xr>aN5I*reh;Ku+(2~5QB0#v`}`T&>JM&oX`=3xX(!LDR!2)2}=r)R6(G?3zQPp zy38`~loo1JznMk;0e(`jf76Eeh#n+uS6Oc}qNmrDR4Om$+L~OZ)5dg z$dY$DS!!V?-LWhyiqs1>J`0vgE^G782UbC35P* zt5(=5(nktmAN(zbBJhurunu1wM<>qXKt-sACbeF^Qg~Eo!2tZfD#Uu*D_)jw5Okp? z*h_s_b2db;hJ|Z)-SW!4l1WPTq}nodT+@3R(c{f!u(%lysHH$gedq2^x_^@q@-cV^ z{E`udB8>{+>xpIF*NBu2XxdP(LuiTF4S!ey!;*o2T+VB2+Vr;{O8GOmI-HlF5YL!EX zu*y&MXOPSv??Y|J{@Y}}@jT|pV)_TKHudecP%}I4Z@iaJvWnFtv4>9tejU8rhe_G) z&P&8(GD`TrW;N^FWt zn49@K2k-SBSs_Lq5^QFx_}Bxmd;J^GwjamiyhE)fxu-@t_j-KW+U4!W+vT%5wY(`~ zvn7sztg!jT8-frZlVG{h@J$E8Lw+to5ap3{M8)7yc1!t89RHA!*|RReF$a7TT*}xo z9wbJjwk7JjIQ;!|AvGWm^LGx>%<|`UECyZuCWpW<&uV-h#QZAwsU|BB8eOX+Z>uwz z*ctgg1$bmZk*S!CAzY))w5~{>Rl&fc{-F(CC$35BCv$vM*kdb%zm4(Y3DjHW_6ip5 z=GS9fU04dFR*GYs{7AtM&gLZ`b)hZ&U+ZFa*wTEkAaTGWUXEoR?oRm}UqbzKXxK^s_D^y2#$Wv3YogA@T2iKU;q_!zjsLeKtUB@$*6W3VdnP?;S_73tn9;TGWc+7dqE0>HoU9O#c##S|GM@ z@VJfgK<<|87R!!?cb&Zv$$+pG3l30HrDwX4K2idbU7CC*ce`J}I7d3Hn2(*2)JOl} z0LlH;cK05{s~D=@DQK}56ci4?vJ16|b{}H${&uq!xvRK7B16^Ma{u88Kk}67&9e(h z6(nT&&9>4%Xc4X8MCPivtzl_-7?yN1vr zjz>m|Z}PVi`%gB)K!Pc*7;e|6z3R=gKOr~@zz`a@7NeeG^SRv*cWMQ1e=Y#4tRHIV zifdx~F(@HPdRXnMV{rPnVDUtH)UK8@kJasdL|+pGpWc~96*(vBJ+y*}Cae2)VZF+R z8M+SQAayycojS0jjehXGN=+?Mb~*l9SNr9WMek4y zL6@Vi-&*eo&35Q2T7W8n&^5HO8eT{RTa3NA%nuWF2z8#kL|vSOy`tTs%T4mrG8{%d zD$LUtBtY1mb7EaxnU!hmw*^8WchDTGNE6w1voJHf|LD+QZ($%gPgHylU6x+salIzX z^eabcTvd0W0)#rAR6b`c_~h-%3NK?GAUj(UhZE=IQYQ5}$x2!6(YnPYZVrzw5dDsh zwXuH6aA|{$IZAE{>F!>^Myc*Vg`j%e+i^`xG0&M9v7x*GR*4$3QUm<;mhP8ls;gEE ziFB2Zd!e5THf~c(c@J{84VlURXsZ6I7o)v>KTP<<=tMqWsAsVViOoK2t-*feZcmkq z=?V>|a`fy3eM9-=d}0%1eg)%Vab>8g)uQE6P={s25e7C$U|;NfqPgx z$;NrVM$Wsu8l52XCJag0+1|rx-x(<^)_Rb?MI2YyV=yAa$r*Yae{wi`dM!@d zh&&LPa9$?EK^ln)JQZ8s)!`}9>>hI&FADa(e-Pm2nE%p_MNq19<7Zzv74KD-M6nq1 z;=Nn^1u|}+|5&;Eu=%6NB8{P?i(pfR3}wr%8j7|}<9M0=4e*QaDqOnwbcjOmf4(zha0)Q%3@%bYka3tR2uF!8 zwH~;G7E5M~GDy(}WoQkzGolaG0n&kmqi=$rp|pRuBdP2_odQA=tROT24l_;du8Hz# zAJb&Y{&a_9&y+HY2R(>(kz)m^PN{r%JMhNK8$y~xqk!{%F8yxh5gQv7G^RkP!@lFf zu6$I}VV~MRJD3(3!H|Yzb9Ucq`q?l;(lG;X@uxix3ON%7g)$qK-Ow`*;!J`7IE0p( zo8$t>rQ~<1@xJlL{?RXrdL7O}x#`F8scfI4cH1lJUD3%;h8Pi_BcpFmtU=e2rCU*ebH;HEbm37J2bkaO+=O zItec|M(cxp5|=zr`)=xZLZ|)vtgF*>3 zv1yeZVCsl+EN)KyP-PZNr$1Vb(|6^*&+5W}@~Ec2fkj}f{3 z(ssYJHMPG^TAVscdt~!X283A8xM6yu9FE!>PP_YJ<1)b#lB00gPOfeA_Y=M8;jiY%R*S3CM6ZUubWga(u%ocec_mqRns^wejD>~yUnv;I=>-=EnXIY$cW>(j>(i^UXf$FvZs z&*`c4b`JN<;N7r2Fd@by$m1G%H$7P53r%F{=-S&971_SEILV8T;c)+={LgC81E_-Ksu+25q)1a*H~GJ*P}Z1!r-n>Rnuz+ zy&qsNE8P80yx@ky@??p;>Y|JJ;Cq$uuQlaLEJJ8b-4k?UdW-ac_YT+mw6hdK4$}vV zE^fz#P}d|`LvdJ}A)&>4%75X#jaSBzZezWE(?F~-Q0H+G{IJAPRuFSui?r-d3b8x$ z)GgvXm|`8pr;1aQ6KZ9N9m9qTCw)bkOjg~_80>VpD&W|7&{ZnWQwKI}6+VHz)+TD7 zchMimfAG{FfO)FAth1cUT;+?tS?-wHiDR(hdAHgD#E|kA%~q%=q$ln9Q*ee^3K6CT zg!hMktZ69x+EC9Tm-JDxP22`Vyx7j+P$Mex+qC`=U@clL{677%r*5u{@TT4*c7Mg4 z&$6x~T8Iqj->RI}0e6%PDcv$Y*I~LTF^;h?-OKi2OH_V`ZGV=Cf6F_l@nk>qgE|*w z#rQKbWFnZMM=2cYXxKjDA}GlPi$v7EgvWJMteBcT|Dtvx>;Gd=pMJKilrQ=*AoB=h z_F$!|PFZXeI7nr1^tjshB{x6RUh24{+Zh}V-tgoi1h;N`JvcY{qG#ZvOM7c9j{jVz znKG*UK}C7IZl{))?QI%7>c(d@p|`&iM90EwCd+Nqi0v__D-iA0=| z9Id#z0Ho%Gx!#Ac1{OBp{T*3;!$UzG$~jy#lZxPGGnSoBY$%o3fzUkMoxQ`X4If1;@`t#=r1` z*V};~JOW=+5<&Nv)EeCM`o3aw_s+}|k?eY1YgrwnK zoeIDi{>$jJ!H-WpzAuN;b`5wz4|~FCPV30;CwTO+&B!(T{h1FowtEie3=nYAr&0s{baFVsbS-Te6SCSwv^I%PQ#Mj6zwyaY z;M_Lg{iSZ15-y>#zTHVg3ZtR=VrKEkp!?`;0bNEoUBsi4QHk_%t8W%oDKvXQ=gO4( zb_wqX7V3X0-2b!XPr&aLX&!)IL9Zij1B1OWwmGq7_o8R%v()LUO@15A!XTJ6o#W=w zG3y1_SACNH#U#H>%{TEjImtf34GGY>!2EGSnMq~Q*9rRg{4Glr)a8cMkp+PQkKS5U zy#V{5I62&iyni%o7>Nyuev5jeFs^S%64nk2i!0Lw$f6OONBI$v=D?ZSw%;epR z>W|%1x=`r@M+}{BdruWCzzAOqv9%qR|B*6b_1g)-fr8t1%Vg>zY)bpxZ@tk%N+z&GNQ6o&8N)v) zs&T753qv5j3eubCoyaTJ$N4<4pcrTz9J}^!l=^ke+*NEIwb_McT&ea14sitOwR$Bx z1c|3F^U$@%Ti@A7IU&^YNDhgsqf^+o&LNI!x!!@MBrYkkP`S`CL#!)!gg@b8@^5Ow4GqTi?jFn%xzB$Jb>>|CY*xO&tA!KeUOhRfjx;I(#=+o z&1Y(2INh3??jL#uj^hz{-e|&My&(p^Dp(ReV(n$)=D;HlLeGGqD|H{NfY}fSIEU?4 z%vcYL0!eIhX*`Q>4?joX7p88z-v@4rk1#s+=8SMDnIBVr(;&;Hk6l1uh$~|25B;Tk zXZ4lGz`4(h^z^NR)C1W@fx6Dqlg$(q=z54zOEyhUA%(vA`5v9Xu=qCv$LgW635V>9 z`>&jZDXGhQ%D5SXm($jZM(W-ZLgB3t5wqX8m?6wDZk*p8upk?ew=h{vz+^QDlNGg_ zel?+%ir?fW|J8|8RElOkMUt&SPdf`ZMJearS$Fel0#Q=es8 z{)m&MM|ecK)>rFSfWC`yPwkQD$g3`QvL6PwSa$7Cq_0$X7qv_OZjkgi?4*5O> zaniMlpz}WPo*plJk{xk)VLR)YmT5vpe(6C zpq!UJhU{qT!0#>@#{z-4H}H-Egm9d#XQ`G$Y`$|{GG>~O$pgbqPmoLCW5yU8H7Cd( z|KeYG`{06VsW14jTSRE1dk6b2kXL2I_%!{?lCOk~}ZwC4zH4irS5{58k5&oErg z!EiPEM5<6y&GC+=z`wsPf3?y6dR?9gIvZ0_hQBe_cHNJ5*Wj?l`hsVtiGGO{F9jci zw;SGcwQC!L?t6~#kh}44^Qc{rbH%vyfYip6#ar95s~E^02SSOWy@9rBKtAZ4AV1d{ zN(DB~bddHlnGm%dtc`u2nzMpx5!h;fIDGWD@kx|sV;QAP z#`cN;;yXDRd-%AoNIu?7OtDt9KLPdxAX?wcbb5f8J`+@kp;;jFzbD!)U(aYq=HIce zSK3N_G)s8o+33bDWYZaI#LGmjMlgKOLq4Nd;RLIKAxlEGAFI1i1^ngY(W}76ea)GB z-hJu54-B)w?2f9z&DFACSQaiXXK=S)r6p&1&(M48a@o!ytb^Srr+9PI7^|e_!i+u3 z1yDw8d}DP^)Ad=@!oH_X#SQT$tse>T!Wxd+xCB@~Gv7Nhv7# zkiS4&&1&n`e#AVbki6li{Uy$N<#9;w5RnfhevpqW&52Dlj(W8dEN$KTCG_sR@ICp0 z^YA#VU12$H%wtyVX#1#P(+@HE$Vy8PX>^6wKJSKCkhA#ZKnM)93#7$So6r7{v3@V3 z#4|FtTB*v@6W?D3zQH)mh2%;4`qfp6WH*$O(P6vzm$#*a){X@p1En49xm;u+`T4AH zoBMe3a#1{5{#b+??8yHC5NiXR}#*X-I2cOBw zY>Gg`Q;9um39rhad-dzF#V!(^eFkTS|NZ2ZsV8q~7Xit_?x1v3rKVlHg3F4Re__08 zPTueOw-V<;Xs#=y3a+0HF8c5~Bmer_eI~A^bGy45RCN$FgrQ_duHom!AO{%bH;Tt% zqj85a3jKi8a5_5yd3vpM^Fu|1HxmQy+8i5^^Ui zY1k$_F}@2n+@ZMOJ34(Hc41c+^TEj;o9^&v)EE)i%Fl~nF2 zxpR!ZjmT@i_^+AkR=UTYWZK`)s`tBJL@1&MWJHz|1*A4T5&?Zu*u7;tGMhRzy>s}ja52Vh7A)x@;VP66d zXMH#w;>_wn69rO7AFW3M6ddh&#@;LdQw*bzq^ZxgF4rlYzYh3acoNVEawJtuu;b~ViS z{GIiu45zxHXN=(zKywpUU-reVx$Y`kC5_bNO~A96eVRJz3dMiZ=#Ok7R$mW6F zsEq1=1BjWdRGgh%Yv|nRz1d2!ZiO-?d3sH6X^_`8WQoXX{1!||;=)cAr1iJIQ90A4UEs?Ai3cyxpp_$!pfccNasotY=675gDj{S7&-Zk|(|`d3J|} z5Z51pQ%0vC3&Uc~y|yE$D*@+GmADZ*+1R9uE}u$)9aSaf@-hgU$)7yHOia`w%EY#{ zr^CnCz-3|Hx37Vq{}?PYMj1^FA7Tqln&kxgqf*YzKmtdnkNxL{WJ9Yn{`B|{o9WFx zx%1~l;%*8vggl@Q1O`%vDuLgMD$46;vsW=21YbNYQ#4!8j$9(S0z;VM!lz7Xk<)$*XU-GK9bk;|egC zg50Olr+Kj8;fnINorK2wR(!`GQV5B$)i-qcTnAqa|FhYrzhn4!)zkS22DY-&Zd~+~ z$XEf2FaR@7Z$MNiBEfV^V5*-y(<$2BsP5R+HAo!-;UJk38uhV5c&Q-=ho3a*--H;) zQiEU_{4YA?>k9l`5OKR9>!Q&qihO<29VXX#?i4@+P|tPfEAR4Gk!6iA_DQ`#q@$q= z|MKs5fU;@stBbYQPvx+NIeaRGKPz>j#%7mm6McWLr^H3|Xu)8+w6dzXl9%*@#gRYS zBOOibi~}E#lPa973md8zsXC4dp)O-)WsvSbLa6ze!Lfkgx~VB|IBBmy3aZ$VGo02M?t>N%)N>}vcHw+x*XUFD@ z>>Ph_B^TxXT-%yq>M(qWG-iF`k7vtKzK11fG-yP~1&5mZDWz~mXQ->nvC```sYX(b zS*14%R7yujf3v|SXOd3g=eXK7ApHY&DPDJ%;uVfU;63L}@=mgIgM`LkRowrZa> zdvoq#5sY$nc?K+3(_pz;8+@~t;$A)!>wRf-ZiZo9JBtk~xs_mGa-lUGQXP`kHx>YY z-6_?6jxzU5aDIG~v-8fUGF%_xV%~9Op&;dF_Fj4i-y!Vp%~v;PMorB-!o~PPLU?^prfsQfj}v@4{-s5_kC6 z*+!qCy;51>IB3aeK2q8PQ=GwIwh>SiI#5jGu`AEsZq2K!tZ9}P0hDrZlU%ppiu5Kv z-Uc4mD+gP)#Nm~Y5g47n`F=!k= zS0|oo*KFjZ2*uFdhAtDt^D(;uO1StP0>!~rmCdm>aG5}YWoV^IO!=`$8aqr zuq&oK00>C$cidSv_^`TKFXYiLg^_G^V~;Kw30LTGy~N zA^AUl)v$yPuvI8Xq4v^YM?*K^c`Xhy^m#6Vr9=*q{hP1{cMK1*l)xJb-MsC z408{ExE0>=DzxXnSksOl85B;just{iwQu;VT*@*!Wjm5S=Qex5Thg=zmFIc+{)0-n zdCf*pHQQj7UKPJhf}CLaKr-_mgL1fpB_>bY=`T)Mg*3{HTV*H zD|ZR2G)gmj&TmYxsa?U))KK-c0^sA_7vFazd-N_Uaw#cAe2e~JLFeezJ0&V&p~D#K zo!GS$TSrdBb3w$KA-Lfi{ZadBCq(`%pTG8J#mt-jv3$a7Y7C-S>BhLSA%OW?aKpy$ zV|R@P?;km*EQ~5z!H92(daF>X=$g0e3-6_zTwbK7@k`@?i$xS6o41KWcJDMmi1)$Z znB*vgW~Fq(+p=(S0SI{iG)*io};(rPI|n}0O=GfXK3Q=-Z$R@ zWm1ro5zphgsoh?XsEN{HRIBrgfn<1uIieDHk(A)jJ~l9$d_~MA$da7ygP9uqG!pVp z-LO2!C1;qdEYJ?MZP#}1xgGnFmW z2oM)!moCs2e7wWNS)((B{jyov-G zcpjWHpue-R4fJV;Q1!R=R)zKx_gn~Zbh`jN9TnDDmSn05{#tllK{25jL*hYY$Z%(g zn#cqLlyO*YBEZorIOU9Ytb$1l8iaf7`XL1UXVvIXkm3RhroEXyidkjBy9@(M5z*Wr zS(Q**8X4zJFYf3~jArJO$AjWL^H0NM6bbNL7jsJtE4&#XJT5xQ%w zLUUjtL%uY#twXH?=Xa~8u|@Zyhb?rvx5QRuXX#o_W|?Ie@~qI8!Oucx{hlT#RJ?#u zaB!nePGoiHw&uYeXa96~H+#|(;91o7Tquoq9;dlR6_i|0_LWxhJgt_f0FX}^y3lRA z!tQD7KUa2zkcI)7x#yiJ*bCBLsXrm)DKqq|L>p2e=e?eD&oIQ2DWyZ?;tNxad0f-Y z0Fk+463~~5j|BIT1+-uM@0yl%eC+X^%U2)~sVJ9$(OH{|cD!ztAjgYqD6edQI^;*J z$XxR*3=uAo86!zP_y5K|)% z-X!TmS`i=%0XDc;DI?ML{m2_H5BS4jX@WkQEDySnETT!F0c9{dc<=1uQnJ3`0igYC z>{%GJwunzuSO}m|5Oe69b3DI9%V3|Ho?u389>fcw2HaE63Itz;{Vtu0Z$WExjw_F_ zjlmb({bcXs-N1w`0TZ?s8d#;bFtcb`h;;b#u+R>PID^OD@r98L)7LxUGz9riA*9o* z3X72POjCM`TQSZP+it)8Y+{QY;Cg#U&*nH!&i8ng(gY6pT^t<}6X`R{O3e| z+bp{-KvUi-bPwG~rAD_SRI&WQPr(vmqld*;Th%uT;1`RR#UM`& z>PpA8YkB=}fGFa|#fTf-@_Oe+?eAexT_P`0NnR^nq;52+^f#TR?J&H!-ffDCFkS<^ z*enLa^H!1sz;h*(4E<=L8MI&?-`Vv&wN-!Gws66s5t7wyD}k8;VMpj*%RHu ztahO~CZ7(qi81EQQL0CB;cwgW>4S|=FkD_0K4@LzO)ez6 zaMA8lG08;+X9`j8^Elgfz8PsM%KVsYi##i{Ded|~U4SUho*QMx>ANKI)2toKNN+54 z<`2*$%yN+wwY}FCe2{;D7xS=LxSy4or^3ae*78U*`05Ihe`ZQ#f0UhotOzziY^E^K8p)=BJ8dtT;K8{$@j5S)6 z#*728Kp}Ik!cf_61vS;Oy|2bb-v##B*uB$IC`d`&`Bu>hv*Pb5Fy;J|2wsue7fL#} zMt490rE4O+;it#P-}2B889Ys1jR9f)#Y7=7&bUzx3LHAg)AOa1%YuXo6{N?I+yIZ82^G-o-pD(GyAuB?1_YJ4|MS!GIV%kove%^?C3icj3oot0JjN?uSY zNOh?@*n1xG0ZaK_DO$FYY4m#L8{%(Ve|xeK3(nvQ&4L3j=tn+B` zy^rANSq5YE=9m{5eQ0ypLCAd}boolGXR>~50^s3=xKZGVD18j+bcu%`Lr7Ao2w;Lu zWs}1uMfqBY22Rz>lK8-3SP@-U#MY3Q#L!^yF!=N*#_@04Z>OI<%48x;{`9=_f?jUq z+}-c6HFCX}6h+)J_c1Le+Te#4-W>;nmme6sR#()7MP_J*riw2OQLLSux{de>4`WkFVubo_xS9NZCvs-JfGOeCG z<-|wiKSw28<`~!VY+gwVL0%zGG1t3|9^B&@{sa%{EAD|=(^10GlxSw};5wpL7sW%k zqib!J&m8zOOxYmeXE%qXIod$*k{LEL<{5o#arndZY1!5 zUJ1{OojcC+U4^ek?H*E1=V@MpN{hD+wu1EvXeaLjjCl}LVkUAF6d2cAF-sr7YLsE+ z*w&KWV{P7-Q0PgC8GUVkP&Q@>4r9zg*T~kiR0qA$bBr1H_ybOmu#?mXBu1ukH&e86 zTkOaiN+bl9>oKaSB3pc@)%MG?HJW8ijXt3cLSS_MpRL+%#i?iO>6D1QnW5~Z*x^RL z?@q7mC|guZ8wykC>C%D@P6WD1U6BQU(frmac6;O-qJxyylvr&uN>!^iC(fTBCKDFZ zPZwRd2jY^1@oPU1r0>*p!kPP0PAas?%@c_2^gnbgS^@r;c3s~3)* zH@=TGoP&_RoR`Yy_+h+B6#yI{l&4!$GR5lRJGUo_Ed^aB-VK|j;(9d5`$hX-sd<&z z2uv-gjZ9@i>>vqZ2m5?>QdOVofUWcG4(e#+e}$a!4Y}?7vkN!QZyD@4EO(;zA!kd% z+-Y|F5ofFXK_H-zUX-r-ZLRyn5f1lopt=u46hbCHCpB?;S}_ktpQ$cqc;D3O?L^JK z9}1OGWQE<)xjcT2(3#DBD%?t}ckYbETL5sbYV204vSheV$Hp+u1zkf)hQn=TbTh?17aZkDA~?KK4w;kPQ!|d>_YiJ)X?{= zIxvM?sny*wwTar~`G#$GlD#P+0w5>KHRX7gtX`$@X|j-(v38K7)K-r;F4zT2A4=5^ zq0eK4{;(%vvNKeRwI0D}nVRa{X_W8khygZM_lNy`)LD3mIN-7_%>Gq6veo_>Es-#N zFPsuJ5$)#P_tR_hjE8VIm`PyrGXB|IPLlMly}|(+G76z~;Fd zUSX!jVQwtpBpsqXlau)t`pVtzi-KrVowjtb#){!=gJY;lsz9pI#do>;YaW)A^A^ac zVtmR{^_UP>OR|?}huMdeQq{oVRPs3RQGK0;mG9b4!29fA)U9t5Ba^NV8C~H=3P{ZQx*~x~Kg#p=+GwNo{uiJ{ z-aV0m?|9Wzw7R!*H=BjNy((J{<9b%! z6@ICh_LnFx5ZR{V+LzZe;_yT=kBtD>AlsgG$ujLNGO> zAbBg%)nyDJA~@SfwlcudADfO;wZ$|=RYLU1=#mU4J%OIs;-fv(wk|q#x;wg9B2g7j zH+JB`l3>0A(J&otYG`%UNtMGLHlhk5-Q6K|S6O2n^TTDPI*gsMH{mr(7FNrYV=AVU z#7&lcSz9J*de4Dbthkz&C>&>xY$rs}!T>wiSzuald5fhvxY_@eWCq6RUqxlo!0h<> zh!A6v``L*0$^WG;ypd}=^N5bCgwVaTkc?P6o zJx_v!i7RH0n%@x{uC*;@yVmCyx^30fecJX`R(yV^dG_60#u9KYsqhuIv-QkJ8iX6@ zVltMR+39hk_q8I+wW0=9zaR*xJa}NA+u(~b?zjkPbhr4KbS;(EksYduXn3QBVq63J~Fow`KWOGdZI{@vw|&5;k73^E-^b;0dAmn12FamY&ZHYQ!5|~k4*yaOL=Z;&e=YwiwjERfuvJM9wX|-9# zBxuCd!Y75WYIXiA`e4cUPy|RdjC>wW&z4NsX^f5?;a`l->0d^DKQe;4CDeg}3yxkk zL4UEh=SFS}Gk9L5=&s}uk{+%e`XTko9QhUt6ugVPWzQdpynA@_O^Zhm<3-s|c~R^c z>d6GwoI#UKF67;(l;IMzelnGtcw}tX=c~@><4(6S;#gdBvUP|eCD8j>vgRpXcUL*> z{_d-^H0%Xxjg&IolpKbx>{WtJI{f*4zX7{ZLm{=FJz1rgW9KKs zqyq156I*+(*nGusr?y7>RRnJ^i7iAu%p;_!-0I)mTC%!&$v%BB^b@hp95>AL$|`25 zrkppuux|FXZ+at^!g*}y!;6)bA<8uICb)qj^gK=DFtl}8G#O5}gh|5XEgHAG_x&w1 z>}X$W7yxq(Eg8aP52JoBV#F`E1mv7%N8Ir`8E1KNEJl2Kkt@QYbA3ja#I^5S)17P6pe%*v}aYgt&A^Lw3kc3_>9lZRr?J|T+l+b7E|DtfbMjn^2^>%NEOPH z4dOkH51w*faYSvtiOv}zYHsvG-KscxbCMS`?bN+qBk6?#nuT#%^HPhHRU^~Un!C1t zXzo6Cc_U`!k)z}*u@+kd$LF4_i9AQ5bmir~UwgApi7u@y`fBr=kc5uAW%jZkKmPiG zithqbGNAtL{Mhc-krf1Ml~V~xp_z42OFS4BdLkc_O%$?Y!^63)HoND6uEGK+S2I!* z?AtV`U`xAyXK?U&kCKb&$dMmu4i|Rd$6=y)+4V}RIQDr*Vc-J@ToI9gD(ZN?w`{Jn zj;vL+VhU%i06A-=$xI?A%4NcLLLm)NeyyBA^6t-VA^VVl&P*u2)7FL}N=8BneBS4|D= zQXKdhGR~fpfW%L5JaNUnxA)%&gW9X+j3C2whBk&&kkvd zyC?{I3QyGMMhqglTqTOw^nBzCk`{svPwyYrHIMTXKPg@%SXa;mq6x~U>OgO66o)&G za%7$pxGj#Shy{3Q=hyZ4KJ{XrirgXb%nNXglrkdwov0uj{_A`+NWX0UoE%`}KamUa#ls zQ-z;HF*b)Q-RX~gb(|hZ0PyYltHrhEqs2;~0@+MnNUm?2Ih;9@*Qv-P}Q_u3~{Bv=8)zznC(-g5x?Hd0 zR=bywA=~SPpbv{Fh;y1w7VHE1J*UPz#{Ej0!TD`+DA}1`wyL;n&0k$?D^gkZC;tbz zO@cmT-t$zvO&!aY9dD^Sve#6+7%VEN5%((!`bcFWi%jS0Z_192+1fjLxZ4a(oxaq4 zmQjvgwQJS}461YH$F+FG%KKlFppryRVR5+u)6nEGCv%M%;0swz4KIy6vc~GxuS7*c zJ5(Wsb5{~6!m=S+2_@_zGuxDA(Yjh++vkCCzU%V_D z-l27;WhZjuU4(Qrv5hyZw>tIgjp2fjV}@kEE!`ScZyht$6FhicH3Dl-!TXHfHt9@< zhBBAgx#my1X-)c_J!kshYjk+%VLrN&xb^R%J=^^27B;+NiQd2#Z@W-M1R03eT_8~? z)ym-3t~D{VJFuXpe5S@$&Q~JHT`(Yb^SxnZJV%anjM>g_(n0=dhX;OSmB{eqnmzxS zYR8xE=;J*%xw8dlXnqW989n6A&bFn#pb5W)%Eb-5POo&LIT>Cx&6JHLpS_R^c6a5V zH_;wGStgH$4OkLwog82)Uv}epV^i}bW71$YPl$^%()m6CqLJs0SeTtmV0KDuDmz)a zZH;|;z~+q?qk9asxXu~=oQ@0uYMn=fy02#LOApzmy>w{G!xvd+A?%AvYVyu+rpWRjxDcOxDpO`CpTQKDf(GWp@%I#H2BFJo$Oym7}SA*Cz$bmww3dPnB(P#Vzu(fW_KROJ0f&`gfbR z>BsbwxI?4a?L=PM6VczOV@M^@+`+bnUxiJVLrv7XL~@X!JMx>TnrbNY9dkggh|ka8 zIahzOvSY9@+nJ~}91EyRK(5_|X<6Ey6!<;3=d;Tzjm2?U&!S(RCqNobKQqd3;juAl z*l5c0v0KK)-nQ9tA^5s+xRSQJbG!SLzH2gru^}1@Sj8-Xo4OCFrw@VMuquMxgOi^m z(<1j(B1Ss5QV~Lve^TARZCtM+3dykpGovhR#7+lz)emk4+d%2? zw8Q=Fy=Sgg6ICpqT*f%;? zc6N5|1~AFZorh9t^EvrURg<4h;byqS?mGZ^23cnN` zrkd-K@#k2%H9@sCSP1XicV+Au(+f#Bg!s31BXWc+GWttHd&AR^5P{f&sPD#n5^w;k zDo395_sEyW{b52Ml+NsQ|NP~8 zp+tLzC*6==CaWgS+qHF1mfEK(zz{Gty)Ru zeQZR}a%-pi=S=r%-&5hF&YVo#C6P(aRBPYcNQ?_#=!m9|QAoO{;a=QQD*b6c47}*% zH_oiV#dLKVlySn&T@4>}lr_~4#`JG87&qg;q{t3CHhuL{ zz)bdEfKx(q{aUn_rBkkTvsfBT@|Ss{AsGHp#-=XAaKiL@Tq-*^avn|SCmu{flY@Pp z!Vedsm#bu2y+XpThf?>JlS<9+Sr z3eH5j7)?ToTIr(|mh_LjTJC-AEn85@?Y`_+=}Y5focq*|eFa~e&=09o(HO;2v(t=) zW65`b-Mml*JBkmcianlIL%jJjaK~@9>;J-Rf7>5A#eXX|dt6nH8_BJsxA<0uLRk#_ zah+$Ny4>Q(1#zdF2xoR3VL13-q(JF)3X0LB03NtCToP@y26|0g*6w{!Xo*Vm2Y~tb z!|PBgtl|#DUawrCZFS&r3-$wYs!afNDA*cnPnr6t<-$`QuctXk^jvnswiP*9L-JTA z(P2Js2c^0K>mb=+$|Y7$sb`Asc3Jj<;*P^Ci-6QbfVLq^MbUF=^zQt$eAH%=2W-mR zC?ckGB=H^*F)80PKg|(g$2?ltke6OJKSJY{L*Q#ty<(w0baFf>E=8TMg~vjY^!`)S zudl=kpoRYaYmqpuVF^dy!7qXx=0L4U7pZu}eW^{6X(b%htJ;$H`ihcdq1O~y=4Ii0 zcINg}mBhl%8*@|lw!2AwDCBwGDCsll#8{Z1?a`d@>W0_jsp;iZjySV#QiUCE+%DhV z^tBI4DdEk)LI$Rgxi6Ap*At;oVH*oB`!Q-hCj7Tki%> zn|t)lPS^&C%4KBcuzr?xXpZG3^y|io)TG8he)V!vM0F^PPJyT{kPIr8bH2=^{y37V z*IVkz?UFb#T{+DCG6o;h#ev%#e{pv83_kdN4EJkkU#^uip|9zm=#nm(^wOKQ&9i#dl!|(3R2_oiQmsXueq1^-t*RJqa5#3 z90SMx`sH@$)90W)=4%k!yENgp@WCPCwDo5+HfaW$BT2?j;VRvb;hN_>naTk+r{vWf zX}B%|N*fu{HIP@#+CN{uDDQPTCxm?lLw`(80v|Fp=SjkuC=tyYFI_3)Fr{z59C{e% zt~!N2beVg)$|odi!;NRk*ZqgzEydPd@d+=Gkcq51%QSlFH2mW@c>sIoKlDq&$L3&c=juNb>EUd>d0>0x99*RC7zI3X(Y z(58Juo|P_ASEK8eS??V3ZHc5;WJ2jGMv#S;@^7{AICA^+dP_>O6fSsw{^Xd^JYY~@ zKK4nsDC)5H6L^r@{IkeDL1pTn$5zJi2(>dEp?0pd>F3qk*dif1QU80XZWR3E%WSkf z`a6|LOA|f9kl568QJ_zMLAWin#iX=>XAN2tq@*<9hL@A(eAnNj03N6)w)zuqSfHT# zd-U{&txvhwx06?~PWS)7qQryEwGKnJ>~mm9)DO=UHUSV1NTEWT|7odQA)e&xERxJ8 z(ZbxC#~?L$IkJaQJ$~-y#{M>lG*W)A2JRDmV~a%b8wkgfYsoi+?P?3t+|1v%7XM-X zfo#%y&&G=v6mWfPOy5p7n)`l^S^1TPslPZ?!{v=^vdNeA%6Yw%l+|Nt^6_vPA?786q7{bXI{*AC8NZ@vIGcJcy7}1 z*gR%Lr*E=suG3*3W4c7KJ^#x(z2K)BqV{c9LUVXuWzof}5gpIzFT_V4*UjbSy0R}Y zu0Uv+#`gun%b_ZLnhGmRXIChIlQC5&GX* zMgUJOUo|g3>U4t26& z1hXsWiC$V)!@+j4uo@|Q`gR!T_WY?%9#cL4eVHTSN=x3MBIX2E`%peLyochYLasBD zy({}IF80nHs8)=6*&R!7Lf*rLy)L|;Fmk@_b~H$?D_)GqTc+qrHSm&poW;t=Y2P=` zxOh1V4&2e9@%4PLI0_6<=-}Nwqmo}MXR88P@9`!n?Elag0oZHolfRnjA8mL871>t% z&}Mp&7U*GyukVBhys)F5o~-PAghjsFK-U*Z+R{e)q+00#uDBu%)mCtsTl2bdH!rTX zJH|em0SHCvwh1wR^rR@=uy2rjedP>cj?j$=4xGDGSNBxMoFnSe@bj7l*%)8y0tUh+ z!6m{vMfk_4FUuqPE?i{;DeD}l^W(q>iE;{YPva}R?mDZK;euAY4VJtu0)CppBPqz6 zZ`D6DCdTL7Hb#d!dJc8*AyE}H^|N$-vp@y^`WXDW`yZ3sHdh$X{#*eM9$KKcm)!Q( zyGoOYJtGZdJv*OI3g4p@+T4MqPulHxf2O_9pvA*QH}<(}F7dwh1>lA1*m=jc(imd< z_S{A^Z&Fu^APLbvnicj0yV3SLw;SB{PsmdJb+w}wx`1=gyRoEP?gAcwhL8a>RiPNG zbwJ?r^Z$IO{(~+-d8RJCLs?j4mhAjNQ~EAJ(d}LVJ_|pRv5ApV1*(3YB@v6hQC{5x zG>KO(sK7GY&!^+d3*&q02s;18h%B6vp2z2rL+GVftL z8;P`SAXoB zY3!dIs)NAiZ{MaLFSgJ_FcMf7Q}z}RjXgFK^8(u@o@8$Y-M0)jb0 z7ktzKlIVbXq%h81)}^=6mmqZyQR)&Io_H-NGhHxPC}omlgJz>}a>G~=j#&5NxGm*w7VWa87>AK1<&S&apLxcAZL^s;d1xPE?S#yXjW9C~id8Ik`oOUp zNKgDleElnjZ&MKd77vn8TB`xu?hIvP-_Q4=(O3*?$hiPO5`m742tyj|x;_fy&vu@T zyQqZRfi8K-?#wTX_0xP@1(ebO7-)U@EVZlbO3%{Xj^@D3?N5l>g9{w$jJVqQnTb1j zkX!&afO&szz~b?{@`>&7^onw&+bE;H>$7G;Y7+sFA+44a!B0m^&PEo=S<6usZp&33 z<3SPlsryLl%?sP^mh`)MlfmF=dAO}fe;KdQ!esN`*XuvEM--sSY_i`ZhLgkprqy>} zDs!q%(adC((wCZrJ!Uhk$dB=Xo+nuG+gI?7J>o3$r9gpV+A)>fDLoJwY2Ur&V|W|J zP|q%UL9Q@4kX=6Qs2g)K3T%Y+xXo>TOm{FUXGufE0tSm~x3flgVx6q0hZ2%bITWP{_$?r3-P@*Z1F0`d_N`_&)&rK8tES7Z8LmM z(IBc%bHY;QKT0WCNtWs~8-qI4&WOBiBgbwRtzE(EllRTh`+YuQoxDZfgRXu&Oaza7 zB#FJm*W+T8WR8)`-DVJ4<;~CF3J)%9p3R_dx*TO#fd(P$e)ZBacURo9O37CH=O>z>llZ?;7IhU8i!UzT>3Nwv!TNt1K~)V8v+zhS8<>kx@SXYaW>&u0!5xro^=q(d`EP^O6<%C4y2OH2=RD=`;UAa5 zRiVbQHpu1s&fBZz2>dEMc~b}T0SE+@skq%X2Q7@XX!>Yf6M)PfYP!OLKC z&g)P|o7v9wolWEAz4a8jEYhzJrA|?g118n>Lx!F!RSl073}|uSX3)m$-5t{v=H9lf zkYQJs5OY=kv=ZDDgv`vGSeU04;;yq-FiNTfVT>0H1k4;dnc55l2i`SX7C>HP_?B9k zCvCX7;tCe$<6yMCbRx`sVYPV!?824b1AqC+dKI9FYY3X??&G|==(06rViWb9KMr%gFdKj@afL4=)qS76YC zq%8$Ws8F>RcCW3lTKAid4c~nadFBFPUV0Cj7f10jLH_30jWLh85lFs5`xW8L{oG6M zF8FyD(gBSEhAFKDx(}{3|8)mw)rp)tOfsG5Xxi~kH`{?ca_x4D&xY<1&h89IHSv7A ze4Jzx$OSuNg%s9T^YkAyw$0-V8089*yGBj44G}QPc1`U)P+ra%N5*t> zv)z78_dpfy@}}**qeXRsLxZ%#Z}U?&#fyhEGqCLo?ToTx<3Z1m-W)BhJVrB}2M%S% zQyYrT5?^^|ejUHXNG_2QwgO1`0naFFDMrQq{{Cl=8Oa#7o>Vn-}3`} zRI{HL?k7f?!}q4~45eoJmoAB}{{`yC^Ew;KMgk z>d91>!)!xG6c}W#SrrK5;Px-Z0oB|y{@bB{95eguwFBvp79S3$SM=00_bVRzIQQ^V zkTKlhl~+9PXJvY?Nz$65#Q)88G~3xqe&P-4f@h)JFmm*~UfkS)=}_Y%W?S32os3F3 zF3Oc3u7yIjwElDwkbQpmSr}wlPL*Cs$>F2cA%%6S_P}xo8uD&EPs|LN2-xCu`@Z3` z&#z-~)~0WsU5jR5d(lBVYzw`U9YRUPaK^>D_hqP;7BO+6u?Jao^=UNQfcDHIWJ{M~ zSUf+uHyJkTrSkTv6%gkyP;^v-ht~i1AO&efV<@#YK5}5$N}Emj5$P z1p1|TsR~a!*bN=Vz2l82x=#LF{va3~LM0(an3Lc3qKE1z#1TUd4e3PIW;I<(#k>R| zicaiseZV=Hr?O8Oo&?^vbQH)iLBnzx7RJv!8Q` z`VI~=3|ASd+|uvWU>S>;`Li;^qAR7Pos>%LygP-aRm;PmcA z#EwmsP0`6X>Ky~Wrl@p^tNl+AM?!PXR7U>5XVMp1i-GOI96x(mW-15nh_=nTYO$nf zHs4A2w)?T#(Ope|O-s3XkYj?RqbzJ)oP%{pB#7eHUnm#L@W7=AvDOVJAT|d+9GQKl~(U(3Pi5GuR3SS}6Gtb6!waCI>;@LG!P=LLwpl`c|!~I`4+-&+H&_0_7+t z@TAG&c8i7z&DFON@WG4?;fqo2K(d$}g(PqRxkWen?B69pbo~%u{m!Iy?jvCyQs|DtfZxyGqevw69CVUksz#MHCQu{k;ZkhCxZ1*2gP?Mw3(RI60du7@E(^+a@DkTfsit_JK~+(5f{v~nj{-vJJsid*5@>nf)rkx znmG8m-?4d4`DvM92ELdzleTF3QdoU!0|Fd`7XC|-wT}LKk%`k{y;vaAd9McC46&q> z<&Rdh>m}3nPHaEdw035E|IxBeF*eJ-00~UB1Z~X0i6$kM#r>*ZpH+mqLQ+ri7+AV= zZ}@Pj_{^~D>MHl#8a~7Vl62&&oW{J4&#^%9U<#G?g=Z8~~iZ9p7?B z7-~J}&|D(?_=sF8i;d?W>_*xJrt4dC!DJ@_x!VstR47mYAZ@M;UR|(6l2(+<6F7fv zS3bPLg{*|kTd76c*mW{Q-U0D6xjj>*L+x7T+0JmVLMREm%tN@i(MN2nZ|3lX9#CmG zkGimki+XarjTv<#3AGR>qbD7Dvb8AmCrg;iLV39AjU7Hq?wv=U|Kd_f(BfzoND8M| z*h~A?m8FkE8meKTTLxnK`^5a0y=mSwVk7@X5y(p8lPS#+-Nq8lTZ&#Nhd51QA|8e* zH>3#U7B>g?73Bh= zRq%HSiqLrz`}RntN^RKP`VU1SGD4HJLa(E}*aEPh3s?6L7EEX#7{*&q-m%d%S`b=F z@_dcajBkB4R9vpXlA8HK=A1$n>%nHp*H}3!_n_1&XI~2hEs&{*pGmWOKjxwLb-jSs ze1qUvx-s*?Hzf83wLm07i)?NA5U2V@@Iap>9Q-7|Hxv= zuP{!h+d_SsbWh9im=r!-hBs0>fwH4-ItBxieay=e}Rb*vEv|t?>TzN9(W%9~s>YV8K4ExNg96Mr9k;08k zwU|Vwvm-ZPMsvC7PV(-MOlZY}x6uAaO7Mcon@*aNwAemqreCU^65s{Y;2UHbs6eKH zitjr6(gz;Fo!wnQNt?*<*Mk0u_ zYref=WBm3*l8dWhB=J1_D?OkjBiEnI3ig%k<`C?~R^f#iHJW)raZ4Bx^0@!?!rfoV z$7BClTk_yw6Bu^rJ|@C~D_&nkqAl+0vzWf^77m?VBODhrCFm|t78YWUJl{{kfIkkd z>ew^#XY*yQfGt8yec17B)MDZnwm*ZmaL=(Lj71tg?!jJ}+|L^fho*OaSP|rM))R<&iL7o-kVUi`jUM98_khB^==)E=if;H2 zGitz!=NM%$$@Vh|i@DWm|7JIwJu0ekJr)ZeeIT9=Ww6=C6ci$KK&I+U@ks89h&k~1 zezWZB6Fl-{K*N;0Z)o&u&jFK?sL#dWA04XVvzc+qEAe z!b)sSXFDQ@AL=?JX;|_FiIYCZq}A{l4t)2OHb_fn?IR^cJt~kMFO84MtsC z0=iwS@v*YRaSGUt9U+B+e+nqXf6<12!&RHhiw9CxP9Z|=yis&d!XfH1+wftu3-<{Q zyn<0Kyk6;)vE=*}2=cZwQ z7oY^5@A1?(&X_sTph5FV_H_)A-SyOjP5D_zoDoA_jqRRU2(%5_QkHSAI{o?e`%OL+ z*1Ft+y~;4nT%InCuRi;-qVuWJjc=0WOQ3-5^U}MV+Bx^@7%nkg@c(rR|E8ld44tUA zh@rbgEum8o`CK5Ber#lJ<@D=ls?6 z;uIKs(;gD7hn&IDR-nA>P1BmD@NE+lspC;Q!%SiiOtko8*V09*QsuuDDl1}zMQ^C% z<)_%GC$(t!JIvNG-Y_@%9Qz6Hq^~_>L`{h{tEu4;dDs%kv2loiHQA`3Xoio^798Q7X zC_S4_u5u|rZwF~(c(`;sp7eDz-)EoL{gsAhh-2Vi>zF8^eiO&#LR4z6z8X zWnXELq8NI`_ftt=Pjc${d0pkqkX_!+-3ik68uBcKa;BM0j&PgX=|q_UI?)ecNR~=* z@QQi-calvuj!mnTX>R&2z}3IIc-6XfSoGt4reKunP(&<*r(P&sCHFxBI-#s%St; zjZ()=Lf@L^*m9%48|iCD>L*r~3xtZO!#&K+vdMV{WA!j$d7X1jOWsmf4P5q#5fz@g zuj9HhI;q@LrRoEV+TWMVXUt``+!*BDN9!GjF7jO_3YM>Rn=1Btg-tw6udy-z$>987 zyudHBG{YwHXievjybn;D2N1X;RYq^DU6|zQ5|+YcH9LNPuQSLaY+?%@Lz;pEhg-U! zOoF&>cEQkvInoftBiQrnx#A{N6lEQFUHa^go-9%H9XpfcB?$uK&Mf73y)c`EMMQ^r zTk$?d5Crve&{ufOn%uF(44c(k~DFxZOUEs!hZxTW11_eUv9S*F_WU6e(e#BNrfnQ;# z8eaTkPKzCW2^#jF6JtF}_j>J^85n#c)7AgjT3GOw-ldur(SA)2v>uBhw`h&mXhXz0 z+WU0$6+3X1@^R|P%!qVxi2dylj|CfQXc*wy4E;etM$4K3it zC2>dC>;gi`r=R-s<#@ivPlCfaJ}s$+XNY$!7Id>>&F{C8>%O$6Ft)Je57RmJIcc!2Cc zh%L6Y*=mC5}mgX)b8i8@0{voMwZc zkji@}&#$1~*mX0|g3^WM9_6Jgb!0NjJ9-HK84J=5pZKW|S} z>X6%mq@&W26MmS+V!lg2h+ZQ(D)x=k6yTA9@^Js(1vSmUCw#F4 zEu3z_dVnhNPq#g{$Oy0O3neMWq){143X2c{2Tq;n$kDYK`hFQ{XJd^%`ieBU#?)bByx$HNWg8CmE zTYyX9dDWbLc;JwqtTt8cQVf$(gZ@?}L3I3K4l0K({-5<^!@bnCytEhhHsiR3w6?jQRj^rt`Oq8bW)2oq(N}7JD@w}LJSlcU;Dh` z8-#Xngce($T12ukh?kqvX=xPK;%>^YD+azyaXX;&l3P65r}~Z!jotgucod^J<~vtB z-_tU*pKS$MEy+f;B}GWGEF#ztg7@pmsYm{6A_Rf-~ztw79k*l+bp)Cvtt<2;2V;F%-dH1!^V2IFfx*bGY`W) zW;^BvUt& z0FpVLWF~J3P2$wdP2OsVJ!W;w#cZKywH0RH`SLVOJcK#qa$7e6xoqt2B0&Xl4V@hR zCMmGmqr9N@ivhTG`oA#%cRdKWvi9YW*lsHCOr7*g$`ddodZR8B%(E%W>pReyzWJd% z!?H*j6HV;CI*@E0xlZOp%|@HM$L-R-HvvQ#2W}T;^+Mns_~uTg{tT;z5=XRien z1UnQJ<^)KdFgWIU&Pg}sz-sAoHCURK%I8YmDTw)M+-U?nANW_0W+|3;!Vdp5e6Q8W z=6c$px$IyI z+VtT2moM^9-V$E!Lij2NSF!vOU$ZK7tQj^m zK^OSCTi*9t-+>lm(|wLZFL3uNQaLJd_U9b=o|yV^D<-OnR8_SVu4_x=GmSYV(V{C; z)9;lPk&j;NXo>CQ!3~fOyazuUwyY!V#hDqLufPdYvK>+~Gldw@>iAd*H)dhU1?tAl zb4i4Axo$2)cVjSD`QCIIBxv?u_5gKRqq);?gtLHV{VT&4&E?OibCW^d^-d{g-8rEUt&@H(Jc-cYq$k@rO&dyyb#r;c&9})Nl}TR0TuxrQ*H5WH{tjN+O;XnVjmM2{$8FjTn3{AsU(A zj$F2o&kG6%x+yy66mC9Dy0aMbrrMDF&rjp7;KK6m_T9525 z>d8QN9>TrBsl>BPMUm7;;00!c5zO}5&k>BgP?;M*8k_Mb89JYQs*GXyRKcF3(9VxV zb{5Epcu24mGM$Q0og%w}267;#Lo#5>F`&op$w#qdINl%ax-`e!)zugmpDM(Rg$Y-z zfzOQ}2Gi&H-nTe%RuopDdgAqv)LdGC@w4%+eWhBhz;f z&jiVw4mtDnkhpCe1VOr! z$abSsl$ctT`R$GZCbz2gO{_*tv~cJpm$zK)8FeDgu((!H1rt4f0TtGXq|b@SbHI5k zWM+$oATe(}HnkS|;`^mrP<2iO&pDa}ezsoC=o5-_3nz@){JEw_YlqcCoHsnVD!k{| zKX@HX2w#q&{L0zcuR`)W2LIXVfQ#+ zdn`lQU3PU&@B--1Ii4Z*SXRoChr>@#_;v|vVt!IDpyM7pcLPt&n2Z)?jnKQr!(l&% zIfK@${_$#PXHaOgAeehU1J+54BfWHemr>g_*ys+}z+-XDk9#_$73R%_rwIbKI(9NF za%mDC%9d0Fu=)MdQ(wGkZnU=fmlATt`>ErcydZD)|JQ<^O-yf{W8oszVozqJch@71 zZLhc49*G~C^#P}1qt}V)M9w4ID4hO1mO$A5@F>YT{Mt3|rH4<`o;%sAJV-ozl_!IJ zns^I)6g_spHacjqLqUZn)h9k+#s2OiFVqOgO2)Oj8?9nB-}MCEJ^pa%;zH+IM^N(m zt3d<*;>5FQI*LpOxMUt^s1ZUeuaw~0aQwUJ|7@9^6Z*FG%{PO+Z z)I-{=9Nx)Lznmjqr5sJg9L>5&{r!dropAxeEWB`<_{{j;GSVwk&AsF&7T;i$<9ycG z?l*ag%oWS-f+S4oJj~nXhRitX_>%ViR163Eq}Bl)J9013B(b-O&jwv3+2NZPq?ns( zUAkscLVvd=r^|NF?Bbr?ikm5~Asw{jPJk2N$MhN^x z$`&6+e7_8)^XDArd zy&9*D8kS#(CZL~qg*{+fOTzOzgIaFSOv8tumcbv+co0dhPJ=vcbp))NJl>B>smXz1 z4)G&F0H}u3kAKUl=l>2j!-4cv!V3DxqIMdqTit<8$j#$lnx!qh7UtZ$T9hr|4cJVArlY7K!M5 zf2BHCZW#YbAkbepZZ9CSMVWbN;&myy6QB!ME`mI`SOv=zzXh{%2*W>Dc`l%kefl6) zu31>bcWGX*e1$TQhMgY8fFCD_jUUt4%>CYvLYVp|T8xGKM61WG}iqhX#dj>5JI@DgdwPACT8DqsApF0fajSpV=Q z_`BRsTR+?YzOMRXu(yKkA!N)E2qG2lvCG9#^l%mpu?0!Fto9CcZ_}6EoM0`C$ptWd zQY4SGf9jy-hS?q<5t%$Y$GGS{75`Oz++`VUIq6$JLk50fcc`xB)7r7yE?VY;AM-5l z=6uw4Yv}vkT$$zbZEB6dsKm(Y$LDh9+IMfiRy>A_uq+zmvVAnKQc_&>2km#8vH>^b zw$Ibz!7n53f&MaOCkx9Ug3?QbB^2bIOpTd-4*^BVRd!XH0oc-v>kRFAQhZ|PlL7KJ zq{C`zOg+L86rBeoHWNNB9Eq9MQTher;pFqWEwPNK1+`ky30dx^$tQ-BV41&HU90^K z>uJI$H*6?pYO2qF3s8D6HFMNA_g?i@ujV0rg_w0*=<4>(CCM1uBY`>9m?1cXwXD^K zE8q4_Z*?0!uy)}4e-j~dS;UZ5ay)8~gIIOP-$n%3Uw%fy%ePLGSirXaCC*a|m7kAP zoJAC$Iz9}NGXw_?+%=*PVhG~8)NiZX&8NLZtTJ&8qJ@BpyrK*|2&roB;d@o-q*sxD zBrE6>l~N2AOl=9UHEoN~JH1ky`}IWQxp=DJ7q)^b zM=p>bHmaK@qpvBq2iJRW=l!|)snX%w@txK}Pr9-U>yEWQl-iI$hT7)&9}J}SQZCmDJ#0HewFJRx^v#Xv_WPE;KC2wEuWq9 zkA{L2AdL6WX> zO|gVD4}Zud%WH609szbq6g_XOT|Vw)0el|*Kz+UTg^PDE49S_oteV)^ojS;12KG85 z<60!#BcUr`50)kzsb+$Xe4qsE`CSL75 z9yF`O-w-PM$bIxjlDB{!iRS6rFwCdsfMO0?%`a`^y|Mteh-CHBh>*PX6k-qkPZph< z+mian=J7XR8~K2XEiMs8)YVkhl|Z;o@?w@{f4n!MUZnV>jaE^#{+iF4_dI{5&}=G_ zFZjt*?P^~jc;I@ItNYuZRr4G_ng^iz%U#quXLYt@5_@8brCbXy8egr-XtXO4*CtI+ zs_seJmg3`#?ho^{*G^Vp&lCfo1n$hRIW~IL!*(m5c!4kCB}N>&WVk4kBeJkW^wvxn z+8DMMRp0s}JvQ2`yjNySdny)^*!#+9y@l*lVrhLxZ+Q?7(z_0HM41Qmws6!9`RfRHJ!uoO*8Ay%$AHTeCKl?bBUe}|oXVJK8CLkXVx+6>)O-3hrlM$Z z54r4GHkx_fy=}nu(pS3jtXay${d{RDJ!o;AlKSV4Z<71j56la=$q9-Dc z!TMF=+*wJ~&WYnelv{GNOy{*B)${_xTsxpkW=Y%Nllh-cV4ex5F;BON1dWQtW9Kn> zTWP_34r-kY$PbUHHV(Q#5-F3fMG;bnSyg!fdIXN3gkl}$B-UhTfdk2~Q|^gDt`oyC zokqJlfO!QD^V3~VzxN?p?-iWMw~L?Siyn#u)qTUXmm;Xcb8uv8N z!fFeEsJ)h@JHK?W#^$kY4g1`q=&zAwKeN}6#_KDD?qmfzVJL?HGYN4kG7kR|Wy?}_xy#3%m-{*tOqQ?v`>BXOX$*KO3 z=kvcf5nKOevSHJ2?0A!`+CGs|4d!q9)Ad~%kYv&#HYD6{$fX^b*Hpr_(j;6 zC{kpIS(XT?U?HMbu*>X>gyE$@a>eFD2j4`n{p?Y+A%|c3!|xVD&T!WxC+$KD1D|hO z#JjGJ=GlSDr>w0lXzqnJ#+i^?IagXduEm}!(XcH7hYPc|hkz2LP%8W#Zc4G@cj7(VKt}X^wYW)$`e{?|Rx>EIFz9wPnRJ zpPmk#;8su`p;?j9rE#)*vv5*ph5n@PgT-}c0OBb@8#d08l!Muz?)2Ddo3Ch9xz;8P zNxb{FuX{q?iFi>J3D)pGE0o1E3(x^lje|}S;x`5_-iIAmJQ0ZvE#2BRz`Yt~hXn3W zd7Wi>(F;V5^@O-r#_=Vb&qb5klN!B0*H-sib~$099K}K}t{uWA^<-w|#r|Q^Q6!JG zdFjM=4BS8;37z}Ik`c{@!->34zow3s>t;qpbjhgI!zOn+2iE6a;IqW#yigpO5~HCl z0=q8d_hrjqvE#%&oqpK}R4tSd737w6N1U4)8g-PzjzPzQo__g%Q5j)V;_GAP?W|1| zhe?Je%&dYLY_AS!b3in0xNJl^ymQF!@^`QRy}A6G0?g__sohR$oq#aTATAES1SQ8C z(tpY+pa#!t7im|W%q2_oOel@z)1TGdE0(Eu=gHha<=J3@@(s)n`xv(N#SBhLby z!R0L7?qh~BTjl#JGq^1cSUyn}g3^8#S$NgolQ1KLu60|%!MDOFiB5~A+$(;#TNm

KL07yfRVIK`Ssv?Z<{H$<1sIS8qwAU^bh@@>C=z7-I_3T#k%Wac7dHg-S!PT?j^cEkrR zoMDKoCnaA$A}2~^1lyTJ6kIJZ`T`)7M^LC4rX7 zy>Q3BBn+o#1RIJyw7in6eDO2y)@-p2F~A{tR&jRr7jinrwk=8T$`xvgz z{@)Nm`&jw~Gju|Fvnr~g{*in59^pMyr@NzWzkHJmKF?QKT1VaTfMpwm{LTTR6sbZO z3Wo2TEKc1h?PMZo>;+h~OIB#6Q?OfMU$m9th-_Mw<^sF^XSqN^s-FR{g~_D!Je?!b zFQY2KV~!9-2=m79rDT%Qqj_K?w1MT_`p$Vrmo^XV1)I072y>XH?NR8g^({O6k<D0LadhEgu0nZVpNI#b<`&6Y;{ zhAZef84~RKY(QO+5WQ1(uanLJF_M?+)T8$uCr0-8M;o<;?By05HYzc=o1c~i6P)T$ z3Rvgl2GqnV&~uM!7ig~CAM0^86NuOwB0%k1LsQB=&66v)R(FUpu|gurN~rGqvf=f5 z${YTb-t5P3kDK42Lo^J%d}M_G0=rgHP9i5YzODC`uRpr|1=$nB7d77e4hvt(&n~CI z^Ygvk$Om&d!(HV}8p}AZJF6W#%rK@6j8pEI*U(qCX?S%_+MaR&dtFl(d663ucCtWQ z%CM_dVtL8+19$d>JewGAp8Eu5tVhgJsTJ|y?XmKS?OQSyB;tHWL=YCtMeh)ZV!x+w zpZ|ecV~s0J2(3(}@k`ow5;`O?ZgtLeohunvRE|>?CO<+~-iP)bjk3>Z-Um;?sGz)r z*KaS5g?iaGA5qAS3Gd+dL4>CMu9;KKNy=U)+Xs^_l6jw0mBu`vv|$!(30rZir)39UEsPg%bN)u=LxNM+6mN2NfQPleTcChstYiuva93a)a)Mf+H11sIUu+8JC00dQk zYVVTP9~nC>mH$7Ml*`}G&Oc?Os%XFRJRi1P_}P5B6?yF+;Mo@FoE@`cmJNseHWMLi z2nI~!mqMQest!?FO9QTx(HCsRZA*0awF`FUY9Evq9vQX&gp7E}w;D(*yZWl#xm~T! zx$?JjvCLR{PxeGcmMB|uUYOKrb__hsGuVBWCRo~ypFUX6C!~D~3Z0CqYvEuC19FzE z86TRLs^`;61KXTty4B4oFL274wmZH4Eq-Api-J^{Up1yY2C7aL!vB=^^>2lT-R)F- z;|N2IWELlt5^8a~H)IT&mY-!~OWlI}ygs!f@!gE52oA3!b!<)1u%v3*4z9|M$+yzW zM9NYnUr=^<;g;^js<9A`$>E7c4Q{>#Wy{=z37MCXwlU{~<%~BBXAKswKlj^~CYlUl z+<_+wO1uvaH^su1!U_9bN0vf5d#b2n#P}IbWyKUoY^Uw|k1iol>O3TYtcZ%6`EK?m znr;^JzmxKiR?-37l(PW?Kr9ldA7Fg^WXWGnzuap{J$TWrDc^*G!9*v2>j@63Ls}Aw5+2KbVcPQlD`Uta= z2)SQzT>DQmJDGN?6|5Mk8Taiy#(j7gG8>lIjbi3;Np&l{{XSszQ|@u0!OKKB6lqc9 zvm^exR0*CEefn;v;SU@A__E8?6ete)jU0QZN`sI1ckPhhhRTj_L$JlW&h9}$?UcqV zE3v6GX@~*Vt-lKInGwhJVR>3b=JEWbiF~FMq25ft@Gd>~Hlk5Cbks`Q3C?ukq}{U? zA6=r@Q(oLKe10IeV_q6Pa?*l-xNQ&Fz#&yc2~%{1Q)1 zC4iH;P1(LS|Nd7s-&E*l=M33qsy51llUEc^pZqxn6rBt?zL>|nayX-mkvr6*;#UUc z-{67et9D>vbn@wFi%5gR$WdK)b@RmlA;@ttVl~@ZZ$7jBaw&KL<{spL`X@Y2v%xp{ z6V7k+S=c*{?K*s%v)vKlcxB#-2PG1xNk;P<9W{ujkz^$qRNXG1`>Nv+3qKJ)BEci! zv=W^>jx08HX)b`+XLxgD>|{fR*Mk|X=a_(WHf3>}3|@ZLxT0-T+E&^QVIw<(qE6Sd zeAKea;u~pXgE$A#4r*ZHt%HmC3KAo_j09944FvCHr-9=Y|KvCiJ~_YoXJaF&O4@-x zi*^E3FyNRmwheseGxnCB4UIE3YF=c7pNIdmrG5<5f;HlaO)~*=27>KSf6@n@D<;X@ zE7+gQNv$)2j6EhM`K-m^0q(|n!5IB!gD0RaYj4~(v233a^fLdBNq-e_5p2Wa@FtyR zS{(d3j)3&*i^4)39=<7*e4d7uO7g{Xrc)N&F0Pq9(bnFhK`UTTS^%Lpf1O=j9@j4y zD#P_@_LwGT;UCTCKU00L-)vRpAKQ*HQvE;1-a0PouInD28B&lE3F#0}i4o~WKtL%K z0cix4?(PADP(o3<3|dOMM^dG`VWc~y>pe55m-qcV*YkV*L;c74SQ7Pf9@dVIZT|Y)&fZr|6TF5Q-96kB0mq9=Ix5 zM(2-a1o7|r2GK4y5Tno872N9{gbC4yYBs^-uhZ*aRJ8=sUp6 z=?1?2y9XJ=d^~R!UbQi}=SobEyDNis_|q+DE;I6j_misbh9!2Qw+=FM)6#5l|3xQ1 z3NV%a>!X^x0$Md%`uuMT9>iTAzJ}1H49~O!*V$#9#V2W2o|aGn9b>;~(ZG@Dd+~9w zhO3vflf;DBXL7={Rrpmi_#{e1Vu~D(BYn6Nz9V;1Lp4L(MIoXKJAE9Zx6xB-;>y_I z-M)YwnGNPb;pMn1pu6871k7y9a5dX%XUxLl4gde~I$a&YCTvtn86zL-D@b0zkGtOQ zBcJrYhHFz<-pu70kj`|bbsf&(c=a2ij;Jj^z0X(YQFdW?4O9P zB*+PEdzE#w*qu6DrLI;8+^-#8rfUEX6#oPVY@y+1CU`;y&+3DHHn@}Z^6Ob6n^^|O zw4^vkewpSc=HH7{JI`Q-)_4+i<~M+uTlC$`{aGK!^&6J4>oMbQidu)`oN-?^e+Eay zue2r}Qm-F@t6OH#Goi}{2_#>a(jt)XuOV6gpwGVrO;-i)>X9*jce@xg{&ao-Vs%mu z#A@vut+5WOIUn240bqXWQ)DNJXH&{n1L@?*j={zj-%lT1&&PuH) zBtz~<78BEIZOH*~4B*gd9OFaA(!0uszGH$b-p*dG9yWZ~dVT!_otmH@kshxz`!#`d zO_+Xcen%5^KH;__P$4p*$n5#%Cby39$pzd3wIB3@0{)hApo0jKBP5l|V25!q{9n76iup(QRg|BpaP$1e?`pFh0D$HaD9qSbu zDnqL$iau(+SdF6OktS6^GYLC$^aUuS7M!x8!qoz7rPZpF?>~U4v!^-%h^%mHdU@{D zIbz^l+}PM<5ZviIL)$OK3E293_-*Am($4tL6_O`c%wOL%1uG4Y8E&QT)v~ys$O2yf z>KB-qhnOvl=qBO|ps%F`O@;+Mk^>-)7Dev?s0Id9j;7FWLrhsG(2JRr!xclbw*Pm| zm+yUQ3+pk32j!50yIe|a9)dDBFbkJ5doNX4%h$m zP&2czllda`w4Zz)#zUy6A?&(U&~v6FC#UzUc-q2#HqwD!jzRf~&#|Zw4!AAp$HohB zvLSu8JBd%gyz-~SS>2-9#)s1Yd&!kOqINe62a}o_92p@+1Ryc>oL*;Th7;3%nEDlr z64}h#TeXfOyG`oD!2K@m;C>hJp^au@{KJW83=aK2?lr|UDRbK+DOrvTPihVw;4>TJ zco8%|O%ioJzS#oTY((Fo4`TOvA4%n2?wKxGsb%L#F66t5O5eKZeK*X55{w~+#iGwD zO7G2sju9VXn(Aqd6a`N#J4cF^W%2vdcc2;Nb5~HYw9opwErh=GFD!2KExapZC8F6X z^wE53<=Dm>FA;yBv)UCXezs<&Pr}A0F-yMp!QAsi=kFCg87sX;pB+r@ZuBg_tX9m@ zof}b;`)K2K_-rv@ zRksL(cWAL*ScFOHdKfXFnQn36)uncmFhIqB+N_p?FPBY9 z@`jJw%e0Ds*%NQK;IxW^uOtmSj7byo$GjV(CQ|`TU&F%IoeoI%)_FH%Ll1u*R#+x7 zB(g}^)U@q{y-F(fO=8EY@wD3vAYrw+J8AnsZXZ~^PO5L(qyNR*j(on3gyrbRliAgy zd6HK)cRxybQ42AS$$5nf&K{uDd;=9P+Z^wH+2my$5l@;VVXVjV^*SDJ*lp0c+fLB~ zl!Qr-869%;m!}I(K-cfy3;p`wt+}!nPry9TmIy9*;}_8rogOzVMGIchTAN4pY!USe zC_j6n3lsR6c;1(8qIJ~M%4{sNDyO8<;KRt5=~!me^XI%8O5n2K>TQ%189OuTMy0~W z6$#ay$4ccvyNoBZjFasrn=|iA*0XkXabAN-!qfY5n=!7EGc!nsp$|=w41l{?_(|#- zxRn{gkc2t1LR)u+;P^;~NKlO$h~ z950i+0$*#vG;1~6$7M5ZcD%;oBvU~`AzcA-Uj_Y@>@+<7Gc--uJm`gGtb&|v=zi+f>yMce`KZVl3I5G1} zx6yYc8=d7!LtlLAXP?Klw>8*Rdn}=+2XW(ZPWPkC29I%r_|xuvW%fQ&0-UzMrk$Fm zIxxhvd%WWYu8m0a(Z%u7x;~yZtTEs!kWEF%oU&^~!ElTkKL%gpAZg;s$*%gy;U3BQ z58uPflDnIXlTUn4zxQzpTvk6G&NZ@9k)Cnq5oBGR7gKFi8YMnrHWPom9#$7>s6|tn=0F zqm_WwFbVCx#k{J{mHF)SAzVrzX#6tp0EGTySz?s)uhV%q_M2t~$HILXdX99q&ZnmR za5r#2|N4=&_@N7JSj|}D`pK-<(7iHSV zLNu?Lt*D)8>pX)$`@qhL?qaBmbm`fe$RB+h)ef>xTH8TBt8D?7;(2ojgYQG#32fALS?L7M^2i+)oj!hqF$$Xe}Ua>G&~7&r!5T8lmvV(7!I z=1Q`@)@-}Jwo>A@yI11oRzkch8Q{q{HZBh?dd(zh%Adg#0`YOI>$N+6OviXUTLV_V zXS*J7a#*svCI#k-k7tuGU*{vqYv=65=JYgmaA}kUM*q{!15ecMrgUB$brS(^T2}~P zsyYAET6Kb6^}Dqi7MOWam}C%4TfsK>j0jF!Sezg2zBCl!h4*f-vwo7k-7x8c(1o(& z-p3&t^x5Pp*snL`qJ?`6EYW8O7s0d!{V6<33->)COXTQqqB^#N;}mBNTL$BxKJSr8)^hzU(f`OhRQ?Hjc#@EV-MP$ zno3{d-Qx{U@x#MocZ*dJC%e-^xyHPfHpf2$cI!^uh_O$=nep^m8$VfgFJG%UxqQ4^ zbIjVsC|NpI16?Q!1Xhnk_upX=dL52USGQ&=G%5OZd7I-{kYh<6JZy(+t;;-|Sq<)z zsZRRol@0z(+#M!O*N}Cjv2*@$Qt30i2l>L}{ zqF?$=7yi>U(bW+SBiSZ~DBxGOW#Hw`7qTh+@|jRs7w(Ec(=CAbQi?!2!M9vbv<{p!t%B z2Xoh@OX+(?pCde}%n}ZsJwE?q7(9J;bf&T*0CC`4PY4}5t|I2(m^HX68Vr1^gv==I zSH$m{%*Va+-=_WTjtC%U*6Ely;PyF$% z&q7O&zsFA;7z(%kI*&yZp&laWiSPmiArEpZaB^x*F#zu3R9KW%H>)eEH{1taMIuhL z{l<`Fr-h4Ro@MZ|zFxKXVu7nQ!`1sv>ZnDd0K$!ijD!a%5SEt1i_Xyy$jjH^kUkC= zk5zIWG|zd|L&azZ>X+9_sPIC@nBoSK>OkTko}y$XloQoqd7iSXQSLiV8p@|WpDb#$ z;J)MgLH~ilZ|;gnOIeu(`u{DBBr*W^GZkr`a8Pm{#U%Rw}iXOTp1_2yPLowgg&KbW)6O{_Hk#HInSVURdKUVye@nWrR)@)ac~ zdcXbzDdn*bCv^Bh2!&p?|47>OX1e}%Tz-SYXW#TERKsBHU7d}I#D-S$M%GFSaTO!) zU}r6Lid!;F*18Teq<4q>J^CqCrQq#v+jZ+-*Yo*D+dY2Lj-SL+@cGz;XwJkjpVIhi(@qzW@JeCUUB7IFmQOw-h|%>? zw`LQrKtw?qaWG<3SVpj${R%8n56fr-5#i=~*OAOF%fxAUE2o?=`+HhLhVTy7WxT*G zPL<{|{7d2=H6*cXlvR>Nn6fu+o2D{!2#2elN$2Y(?3#~@h=5`v&-r(YHc0bWT)<;7 znqUg`Xn64T+ijElCJs@r{Or0dYxtcuTe zGc=V>3v`vjy5pN?*ZEl(^bqqHe+vYmbM73J6MmbBW|R^;&M$y-(e{PW3e;~s0roRkoT1!l)a`2VFD?w}U%BG@-^rt`DyurNt$O0AuoqrQ3%6Eil z^egOAONcQD=i9n=4s#6~N{{&W1ISzR<{#9)R}{1tVm^6rOO>?#qbWBIwSD-wos- z9c5inN@zpFAti2b{W(W0!JN&)9cqiUyAUB1^OT7f+~hH(PWgt1R<>%LA!Ob1au?C< zzFdBuS(fBAu%+Csb?Cr;eTB^V@jf)Jc1aW>%+eKxW+?T)@0E)JL`@?HNWE`#igcdMx{ zCfXW?j!ZJjVe1K2!{w8V%CA13qTp0WK*$m}l7lG7fnK#i7S*3+Wt{Z9U^3M8{V35x zDf@9kg`X4F)BU%p(|XwF8M>}8uT(3mCG-A{Y4LE){R}>JLYm?G+itg^c~4P=s=VPZ zbQ=8#uiBF;R2hH4*=6H62oQCv&Ugaym{+m$eoepK77jvPrz#Yj+un-&k1HWKTRHFy zSCc#0Hl`jqH|zQAluIGx7=i+k&d#_9a~aVFNB9}NuPkw?2w9$%87wtt3yjV9vg_2%ZVa7^H%>$;Z|V2N`1bti*WTt z+UaMlZKP$n&sD?o`YF?!%-{I6jVj_kV1lt-1Pk zy8Fb}g%RoJ!w0IyQ2vZ6n$$d}dkZqfHJLZZ}Lo{w*KR;+1k5{r~BeQ#) z6_4n3{?-aF(B9G26(EVBzF0$Rr;1HCh$!)idkOx zJ~6S$buE4Cadpq}w zw;8HBjwiR&zpTFCUXg?v@u#Il-q~63e{92@<$4hO*svmV?0fCB>U(^f?qCkm2xhgL zeHd>L#3*xZo?oI}`2krT>uaJAda@cF9PC=bRR-Pj=dv!rB*$}@U@rBI1j0XQo;73{ zy!uR=1izVBDMxsl1;!JYz&c4q7vmlJJ(CHh$-9F?mM8vXx1o-gEN_Yi(%(Zgpt?sz z9CXG{*V=qfRjokF(io>@N8=-1@+U1!aq47FIHwaEFn@+0_o4>NLd#Dq8oaJsQqGSp zpsjCz?5S)?N;vHQ)w|Rd@Kzuy3cc=+8Vvuj?huL}Q)|>vyAKmgR7Ef9qGR=F(r-$D>rcsp z>Mq7cL_A?#&do^*_SOe$-m&aAUd5fTn+5 zv@t?4)DEhe9JWA5g(=HOVQ{9~KHam!YRjQ@In2HY+b&-wz5;XEai5W1q=1TrHdfz% z!h-4+HUM=up@L;Jv*EU?7w!4h^7&%6mD;k9eS56!iv91-mx<53u5ylYrJLN2L+9-G z=$t+MP#kV1S|G2ry3-RQ@Ifr9b^vY&x%thgbkqv9yA&1k`8%{*gb)1 zl2bxCYg**xa#Qm6BSlOOZXo^8VePb0B*+viz&2@$Q_1|rhK(%m&|W?P;mu-{M(Jn2 zfr}Jy#*)Vt{}}&rmMz5mrq;?fzh{v^{3iR$qq{ia_j0=m<6i*KsWUCR*4%>zU6=o( zHX&xpFE&NFKq5)wUlTgqp~Qt5O(-&lUT(fQDu>*zUqJ1pZZp<^!%Q`Fv{0tHZNGzq zn12VV(%`VEKWbP@z|k_s@}ULq516ttWZ9OL?#W!_b zAb48Ef+}z>c;DM{El!Nbv|?l(ht5itWjb0nAKrL3YVXmRHo- zL>1?D*uEE4lguoU))Id!%f0X`OOv(aZSW>i32bs&gMfZz9(UaK>S~|TIqADcx4Ip8 zU<4%QZ#%lgG36-(4Y?Qr!rwhy70mOt(NjRt*ddD^*_85vvmB^veV@td(NPo4RhqU2oxtm5-rAlkxFZ4h z!kTB}q#74kP>4Y7VBsrS{fiu z0lWB-(WfW|#K*ttvAMEA*3k6Kn zKW3!YQGfRM=H2VqTsKA#j^$l>lb{^s^;-)uA&G(p(|$)jSUYP+u~Oorp%->87j z$|2v;znQJ&^p_MPw#0frc#X{N%d0_hli#5%tN9B`qhiaUtmt*N4AknEclXxb(v94a zHK}QVT$Z9uY-r)m+OuuOT=SDbb}0`ignCA#aulSeX?0hWn3jO6>5bIx z#2n86(MIyXGgL;#XsH4MQGA`etKlPr^2Z+_`-a=(;`;DfR++y+m}B;O2y>Hp$)&{B z>VjedI$4(o52Rw;I2)*j{7en0^5x?_o8^$zv!l@nq4OUm?^~G|PXG)p82<3XA+LyR zv_F$KoedJJQdk-vb9hr)mmGApR-7J+R$io;X2W61F!-ICzXzbAGSI16{l7|*23DvG z3C+d-s>2ocTf#Lzb7FOBmi?< z=9qLh?_QzN_pVA?p@RoKx1Wb7X8xfK{}kZ=EJUpufUE?tp)*zAW!#DMM`-qN3bS}7 zVP1u0S);j$=Br;EmnGd&L0PhS4S`t5cot_3R`m0Gp2W_q8fuxE=fw0cp*Q$jc-nq{ zcANbvH&%`fr_EEt_BwW@9gq~tnRKu`5<8_yWNG@7WF`1pRSXw znbW~^ZCTk+Qs0PGBrkimqR{_tq85vxKSqf@tV*bvb;C;Sb~0)J=4=r znbT@y6KODSw*FWla!1Zvp9S)I;Sbh&T6%B|U5W}%OVOsZ&U{*%GIw(RIh2tjBh=1h z@>dCt*C35OhbPf>vL-J&Ce|@lR|Jq&6u6IPY*PLVgo&(NYlh!-r~L7%VfRRtrA4b# zoMX1~CBO=Q!Ad6cD}jiVKw7)&pDwuJ7x*-df00AR(9g!Z=-XTQ#DoMIY`U-2FX%>& z=H3Z<^qIqSW4h%+jUic{ST#V<4RfL#x@t!+*D0#x@VR^osHeleU8p_p(MdpNM|2Z_ zje?%8w-x$DqLo}%5^^AyfBp{=oUn1*1Ve%~F(laRlbpzaS?nKzghlnc26f1y>MeYo z^(&HcEmpHkhYUxjD9=NZ&rp9rC#VWn{em4$eot_4dvEQ;>NmN;{;EUY$j?E=+SN~i zWax6RuF7M98bJI$bCW?0U;1u~a9Xv}M@>q`iB%)6_EYR@Qb6O7)#7Dq3@3vQmRQ7< zje|+tWRzNgosD$QKJZlcngo?Ybvc1|R?C@@VMhsD4k_F6ZO#xC9a`v6lQt%!)J;52 zEaOo1rvQoGyti5>3N+*h7SMHyME zR~Slkk3E?k0*}Uddeydqq+DmdB^q1dsZy|$0}ijVvle)AMzfDMQTi`(w6V({n`nB4 zmi*iEvxtJ)JG3rmfK*X1{7kO6k=3S1(r<148s{RF1m4T%j=XzxL3{_F`yR6hwIx63 zA2z!#V}m5?p8;j4MVevLnAY)p&Xw;)?{FPQ5icgA{hJFpR-N5mAxPa6MJ}`}#iwYA z>XZ(~#Jb8KN)x?a(xQpN(1o<8kuwiG0O!B?_HWLwBkd^grb+-C*&6ypujd*uNH*8$ zwt^ZMlFU}uW49#@d)rLaoC>R&MxhYon{MsI?!&6ZSkKMpGb@H96!f;XA> z=?H*7sLh&T~Nh&<^g7BuXPFo zU|e)Ct-kDCojHov?&RQBPY+VhF8umv@yv=r_Xw>};aVei(X8iIm2bL(AD>}pbJ-ZPv=!fLy9bHAXx%PalYWd%JeIm4qYx| z3jIu~tkQNL-yp~&*kfv~A<{+CH?s<^S+wJpPyvPqsOQ*iW@cW`RJ+I$+E%?EE4oqt z5v%dZA5_dAoQ#!oXoCcNZSoB*ofsEsF#$e6i^I|QyH@&(hL1-l34&uNT(F9vycTUl zr6go_{N~?-Y@f81+32v=4(COeQ%7+JzV$wHjZGCqDF#PC z7UUH_%!})4(+*zxxazELgJp6*_nZjl_DkVqny}Jdw0t3m=C&=&WOgp2OFoV)MjVZ| z$Ewc!q&tb(?Za(oW1FN}xZO)6tl2IpSJt=lg#t>|{fMB-Ou&O|4FadI!&1G4Kk|#q zml(jq=2#S$`}`WM-K_m;WjAk`nKNME;k}^$gojkvgYK2qahFeFL@c2503=R5oXd}2 zVzk)#;kfLbpP8VRG&i*t$O*2befg|US<4aRq2pHCSl`J=9X|S;af%7vsle#dg~rN% zB@#}fZT*|mxzPJs*FWoD#9azD*=)9|-xEx;EMjn-h{hLYzsJ-3jI+zRA?E_#ShAx{ z3(+MHt=Y3NVd*oVIS5@LnP9eL;cO1oeO21TVJMgmicQ)hctXIqqBASMd zyfhBf`pTXFtKK)m93At9z5nq&t(|>*CGAxf)R6J>n264rftZ@U&aUNRWy_xj6S~rh%PxrD%WOUcgm@UP z-hFkdq6{QqHeABMbQ#b{#X9F&847QF|>D>;UeY!sfq($8U$9U(_K-WzGpkq zHBn-d<>~ArnmhjLFHun*D92*$+Ms?;zTq^Dv9JF;Mp_H|kwo#L2<@~S(m)7x{RXma){!ia@9B=PS6f5%BZHEO4&tfyXK@@_OR@H- z>=oRlP{2vanv5+a{H@5%&TA#d>obr^3=atReLoL?{$%IMDk}<_Vm!hB=pZ#qV`Q2N^ypavYfMUb4LEbEb zwi{Yn&i95Y55GyIf!-~D(_KiE!+qP$?C}}A2NSOCG(7*1 z5r`gIZs@vFE z_5Tp$D;967SWzXM&;xw>v;@p5YPEb)c_z6aksuXyETmpXbT-Rt^X~c;s^gsqMyL_>W)M zAZ_T;TJAvpfQ}lsGE#6Tgqy>Im@z3N#3Wn!I`)!SC{3lAG=BU`(g8&sK$Ayq#kt-J zuV;&8tPvEdB!R#z~|4Aweg8*6&)V}J65Y<>vi{Dx?bQN`!s{S8;xm<5>4}- zlErMb#c-z_ku0G zKPCG2BHjO`iwcV+v`8B3HB^0a$|o$&5nw^DdW*6Zi402hY^Q}4ZFb5oOSpd_0>DI? zv8B@E2I07e#tYl3%x%DDJ%bdL|H$t~7Wic#2kHUkG+vNzX*Z7Q$xMHNcaW75Sokmn z;7oZE&HLm~C3_*1q#Ux-KRuQ<@66c<+B%NJ*77T!8;>Le_#3r$C7&Y6$npw&P3Zkf zLFS8~BJSqF7OZReW@flsSRt=vu$m#(^nxwAg)M3|Re$I=m@N2>7lDk+p)LEX_f+l5i0zbzoF@Mzv-@Po+;dT^7+oj1{YIheBATldAd zmqxY$N7X^BqIl|aUVD=0+j^%p`!X3i+3Pxi+q!@SWXhlxL>PX*VT**Tn_K<@t#eawq@*Y{2sc5@_ z;LID^uALdV4+I2;)-m{foXBhzn2V(8jWo#+o7;s;1W%hsf@Q_mstgpzW5GOXYzxK{W(&uAc2>l8H*r!HC&z!Vp zB?i3{C5F8%Sy~IeQe;7RR48oYOvm5*cn;GEY(KHV8m=(z_PK!}MtW}3j)x&Zn9^{W z-HFE;%jdG0K=s8KWc4k=_g_X3COp-kP=j!tjEy!Db5ex9E8&E>Y}35?XOs9DM`QZ)4PmIDnPai!w@*%rMO2Yf(Fsu|7Z|VcIbs`df?$tP0ig`^F8i} zJva#{Vm%qI4ZTAs4{G8t}I2oi46 z%3=!sK-49*u@5)C24|>AX;DI{LR;gud* z4dq&mVR8w6tRqx{NvLdcYyUVF{yK~^{)KnNo*IR26K^ePg<;5oG(@kvyo0qUq%JYu zYzJr-M?Zs#rM$U3om%ukxJq;L0^LI8#kji$p`q`M)M0t-_z4N#U+n>95@xcz&9i9a zi2eClzCNA~IX*KNDRBkV^l7yXLJ$z6&p#%KW@<&`b=mKMV^{z;OdOH6Iu_1e6^2Jf zov{VPSovyVxHVXwG}oghT1PCG=e#%%%2$OgHefJjyK6Q`K0VyK>%M5gzbEa9;17i76CqH|moY zB$)Tqx3@HU8IM2Ud{{(AWspmow-_F0_?XqdKfcpSQEo9r?Ft37!vEp0!kugGX9*sM zaO^NsjfY#>G8-}+rS=n*`d{kD9SPMZ%j3LMtjRu1YvPD*h7=a|b`YI%TIVR89xDR4 z`{8c(mw%zOXq6ldD#1#5aUAmUbBlJ85(y9~yoZme*0}+@-MC5$>E{c*+!iDu*}2UD zvg-lfkmsR)1t8}L+zx&1j;{zb3t-JoQpHw@A?O9+?m-T0OV6>D>92SZV!&1HO$}0T#_- zP#{?*^fm0+CB;(bgf9r8@`Dk0Ze)J=!d)-69I*^a$2x15RmYyv(l~2R2K-L1|F{u= z&E`LYwoB}t^mfwfLPJ1%sxm|`O86^|{ZpB%0-_RkqB24!*BXk^S+;fDJ7^eO<|D1n zEAQxqZJmqg79s{Dnmm2w03Rf1+(I+mdf`sjq4TCK91c(8KHh zr8?1)LdBXui8%A?Aqb;jOIKW}Jz->a*L28iG9wcpORk)0F6fcKq zP?PJ{ZR}6!X1cuSaLsL(7?igd3gffAm~=g0vS7Jo&&34Owks?oijV57BDJ_+K5qaT z(mFj{`OOqkUY4hP7IQ4o`it^^=`ZMDrRjG+$Re`#E?d6~;Zh00r{-lA$Z)5_N6f#n zZ?XqglI(G*j_sx}wAiE%n$5_2Cj2}50^HuKp))l;>cDU?o3rRj_*!J zb}U+}*E@|?TFXy2tlyM$AJbdQDV6F1*6xK}yV)}OSbj{y>yegJ*|Cl{4(eY&g*YzC8 zF}IT?#=E;*S6}v1P*b6tO#YNd73L}2_->za8GX}(7hBf5*W1d)uEj9#+Yf>2*xpz4 z;}NisR6;}Sc?>2+D05G%M?o2{PufE*q@}gAn`I_GI>lP?ykH)VjuyTI;}J2KUbJB4 z`PR5Bv1;El^$c4E^>73s20G3wpyT|bq5C6Ts@k1|C=<<}4F0b(8E2Q!FJ;g>wqRfY z;R@N^DG%ITpaM3jM_@}WX%w&=958z-0rr%{*}UU-*Fn@kj>!`D^-pwHDY0v6Q$m$UZI>vJ9f z{ns8Br@+PnKmz7|gCx(-TQ4nHavHu!625r-!3K#TyA(SjD^%oxh&pp{p@5x|j!$-0 z*;~Oan#q*sjMcw52wVN=KYoH9tk~Z^iV&Rnk0lSB4GxSn@D?X2Az_d3g6gH|e# zRsT>xd~~N>cs~$*Ko24UhP+nMmWru1ba>*X7Vu{^td4hX?5w6sNbwbW(qSWm>hJy5 z*J9xtY}baa(U#6Fzh5v2Y6TpKn{gCY1Wr*dK|FueuP@NJ<@Z?~j@=}p??y3V|{ zTS8LJ!To^Y0QD=UG+EgA0SX3a^11KdI=2&x$4>6*)|}jJ@(dVx09K4#vys)2-!!aA zNhw*iSXn9hG0w;g`(UE84F^;uV#hLopZFLXv}?jvx|D3zC7(vdV*0Jwh3+I8>(}mx!(~2L5T0j< z)sj)#JavlvZ>x4sU_6;3oR?GQ`m?i4F!s>k{DDbwYu|mvxK*E=C$n)Q*64j50Nos& z!zZGxqnc+%0*yvOKh(NK1L=^Q*Bi@8gjqJrzvE9*7vZNydgvP|Eck8A!bf}n?U2aE;^sm zCZZau`t#>3$wf=he#Nry5h2D#{#3lsC5=YC%br=3a>ay^a2^Vb{X7 z5ZyMCTX5f+N977$w=TLvvD$53n`p(^+X(nG<@f6+*O`3U?AyOa_>(5=#2Y-xqn!i>ys$szI2 zWZZ0>yqYR+%5R~bCA`g$Yrc2{FWlTCA0*H509$%ntz2ui=qH|Q(a$O|i!D*vve{Z3 z;aAbWT~5;KL1zpxO)Fi~vy(@trDo?tff#1JSJ?`mEWAw8=RU_de&t46kSCq>Lu6Tu zG=e&#(xq40o366?>#MWFLZ@{ZOdqRV_pUWxywHzL1I))fj!%fgOdPyLdC1lf@GGP+ z4rW;7$A;6+T=32ve4jYq3wQ)1M8CQ?|BH_L@vXta2vvYCp2zWU6R0wv*})WgA9Ona z+&xoo9Hs_@1Xk-uE~HIrzdX>@E?M>Mw@FmkXPS2EK({{+R+l5pdT=qusErbFdvs-ExQAEX_0# zc#2iZCgDZ>|A(?_o)RT$7<@$K>9JmshEWtglH$RPJf_@C4dYgQ-vOAL5pg7&V+@uT zepQ|jf=jN(OFi_q39{kM-2X1>4B|FMeAyE=7*29{0H=@v*KMQ%iej z9zPq4QGIItD`~nwL>gb{hgN#)YS$}=MNJ%fRbY|HcUngDx;7Zc`fE#UnhTZ3ck}}h zHRz`nqHU&V6+vhEU7NB5u$d;D1Ewvij{87G$k_baUB1~{UR*r_ z$aNN)tJK#5?O#LU^U2R=frXlR2K&nk0Px?nm`k38{{LAOCT_pYeu~L0S8;^ zCP#Cy-T=N_BDxPi0t#!^iSfrTosi^Mp8)CsKm`t1g4Xj3z!3f-J1E}e#Vo|^I~xUh z3;(tC50Fnv8@by2{;FotiE)YEDOtJBYJZUw4@{_pOuo*)Z&`G-E^A$V5JTKoT>2gq z56D+D&|fUySFkmk>E%q>(fcFHLatyMQ`Um);Y2_{=pR7L^+t*=H_9O$Ml4^{4kqId zgnW~a4AH?}avtCg_1))1Ra=Vhk(BM0zaRD+MX&-UO~#g#WBOrIu`E}Phy`^~5zMXp z@K7Ku5!=fU@>l1Q3ba_6CdVx5@3{P9f2IU+sp^s8$lYBI9_gmHp;xqEhU91fGc*8n zOc0xUVexeImWw+ig?lTeXjjg6bm~Ms*e=Q{-*}R1erzeEwps={{6c?H%T<-9PBCqc zy2`^bjI2w$x=#M5<)JCR@9QeNrTBz8t-<3*b+xl2Yl&{&&6T_!=cXHt4=yQF2pN%6 zH}c6duiTH{D1#m}RHm?~ah|xa0i(C5%sM8igr?=l+aO0pK5*vl^sL0bOHkdrbI%d} z7898T{KTijNT)4R;*aVuU;qX!)2>@^XH}MLAm2%EuibwOTBpG2cpapajOILJ5#T$T zIWRQaJc2uY_Weph3>KIStBO-9-w4<#TFV~3X02W`EF*`U|7BsgYK?|+v&G?$3sK3x zdi;b>0U2=*(A%SPAOx(WUpwiJZOeM8t&q_qZK0c9r_A|;5EJ9UZoPXW3LV;I(NX^R z!f`u3*k!NWu2ew#^)XrH{frHgo0WTP(R}5WWpX#WRItSg8`nlO)osVo+Iv?T%%5b@gQX!MPLZ=t z(|Ea-^A)ZSMYH!u&ao7$NNIr|fnVKio4m=V#e|yx(siO$iBzt0c+R2FnF2TfXl< ztIkOl0qwlE)No?8%HurO<$pXbF?^6QK>4!$5~5(7m~uuwcV>HW-nR|I*n5 zTL{IUUPf!@**LebDB=A0>`FCJO$%_PKmRv*2Sn#hxUwDaH~@`Cmp>}tnYgl&GtxE=D(8|XjvAE4eH9)7q{bEy7=X?at7(9^V_>sm&I)g`ep1gYhwNed3Ia6yWW!|HYwsx`7g!|nqYa@L zH@EL*HgXmsbRbJ!o`qRfZZ&*`YnLn}~c}w-@#JI*?a)7I| zqxjk&!xti9A`2ea%FmaP=t+X<6pc~1x^(9|zkhE-qVp$v%IjiD-**WLaSOVC*F6|& zzusZZSc$f#ejPmrk*pdW**Q^SySQ+&{~S<>v>k@B75jDFTi|D4Z#~XkGj&d!Hpb1} zSF zon=5m*Tx!POqJX%5dy6|Hy8Rh&5dWkYRK4XKD`SG{21a)_rV@Z^+{|6w4JM@$SLiE zW?YokWc3mRokoDR__r_UKZ_iDHih;@_vwi_171%?Be$^byT{or0Jk?_U(?U!WS7Qiqq)`kS$OESCb$<~iZp=mcmo*}by zI)NY0dDh)s;JeaUAi0>GN-i@9r|+^Mm@yTM^&augU1Ny;j%!$!a(H$x6d3VXHeW76$B`1&hGVZ{$l=CjLT- zJyJkp#1*ZMN>WfksVr#8SIa9%Dxkn3^IG{!#*izQfP2~RJOQun>O2e~Ud?-McNvN% zH~&{3F@x_iJ#G_+$3{1tZ@l0U4hD(bSrtxgF)zLg*lL(~=uxjT$Q0zj`~Ceb+U%3e ztS1aRS&v&Vh=~g|jTUYCqZ6XuL?2|Mz1};?PjZN)&X(6|gQ2NrKKTwJVb-5-3%F)O z<6H@f$?~&|jZJUp1@XO~jAB7`sEQwKPStZdfH?GSTJR(;kyQARTrS2JI+?5|7z$f| zL+=QfUZZGeXDKvI7VKda7=a#{|L)`#)Vul!3*eDFuYdD*GbMmM>=I>B-6k&DZw`ne zhwS7Jp_l~Oh$qs)L=NgzgF|U`_Li$;?P;?3@=_0Ts`St`8^mTJaIbIbQFXnTkt=_e zpUv8}^+FHW2Xnh^q`elMu|h%T_uWCL2zzj(V?3B{t$yh4V3=_=6BzSvZNIwk;eHR; zF;^^?rg?>M-66chNzoIf>vjhANfB<}F#8o7h)_`|_sC6Kk$EAy=<{w{MJTf9d&w0Ng*JxdLgWUN7Q9yauUzZ+p*RQR*1-)T#2?4Id^ z)ckhhqR>An9V`xiz`gjzf{rYhkDJv#k)H-rL^wDB1{h}$1{F8O(~eEv*1L{C$sDuqs_n%2EC3h1zW?do{*8;-Q^<{1=Zgg;eO&gxP*dO_@20>n13?VW9-j(T z-uDQ3Uv-rkBOeObt`0 z9BkMXkL-u`?ugrXht^W`jD{KwMuvQl7Jt+PW;QBJw1H*)#UyS#F%YkJD0Oto`!y=~ z=-~x(-!E79$!;qBt1T2Q4k_QVtnH&(9NM!u`dRk~8|nQ?P`GsU9G?9>!n&ThH_=Ac zOP%?GV<$4SHGB6s@D%hemttdqJx%Ymw%juu>F;H%%;~c#5!v~6x&Ai`XW|B4bCK4x z#lA%=Mh}LwqKoBOZ%a|n{|hP;v(MmqT>wsB_uqlaO66JueA~iD_ztWq^@0mmmeBJ; zs==`Yeky29C~eF*>s6XdbeE+lf6c!-v`-J4j)|b8Uhh~zLN`exn!N!#!ldGexywZ$ z$d9;k_32n2t@!o%ZUu$9?v%;c?V+FkxYQB5ys*INt)g|@;2qP(=KD3^pVEd@LmLwW zLt6ho!oE5z%58mnh7JJ{1*AhkrKB7{$^w-V5s(t38-{KM0ckKPDFs2LJB0yZ5RvYZ z7(zlqN^-vS0`BA9=lAV1*R}V#uCxDf`L6ZE{oMEcggB8KRkjxHGXvpM4!PYZxUEwM zrE%1NR5T!D2sRq(^OoEe6xxA0@1<)cZi?03#{ityeTnN^_KCLU;enez;XHDU6k^Pl z3q+E>A5#N|64Uf8IxN(@_8w0kT};ZGM;zCG<}%X!jrkynVR6a5<0oMXFRPazI&VEY z0s4F|=JrssOz*aUbmusRQj^FQN^G#(v%Ia}=U8jrzg-%6YC+-lDXhQb^pP$Gl?**T zO!K_9UW~ThZ33_Drc*l@f)YRrs?4Dv)dtrR>e&{=PEnts`b5#+60>Xj38Ht+dGbR6 z(%_*mR*dqC3HID^l>x!V>uACZQyza3F{Q70jv`fbcM?HMy6IuL+3EKFhNjX=F+;rm zp;3Y$0D%7JX1d4$$OXEYxEEZZPuC{7^*<*W*K}0|z{;X}`01SW3gm%|Vn!^0-2SB) znCSLxx5;$x7gFSqp>3ereoe{M3~;UrGKKW^WDSr?sD4f0v)fC0iynuUh8MY&W(@FT4<^Pxyq(+BzWe_tfI`*q z^Un0iy=90oGd9Kg2C(aa5{50ZenJ+;6gdSPFBogKuMZ_lOk=sXX{Mt?Q3{b~&)`L0 z5To^cW`g$yYc3etNaOrfv{jnZo$5oSw|iIxys^GgeZoDivOoXy{2Hk(diIVHVyygS zB&}VkiS~2%@*6RVE5&s2`d5d&|HSXy4`t#M zJWdQ$dZ0e3$iAgaiEu62hq{>sYE90uOAy=XaqI4UU-3_~(RLsto|S4$J5GmZ0RDea z4m**C04U)jKzf)tH(eV?dbbf5=-|nG_A&0DA)Oyw7GgwJwanhWhBtT%V04R>y)#}5 zo^ny4uIhSuyhj~qK;qj+_JoaJAk-DakP3LIS$NLy(tBayZ8}}2`jh%*uebgpQXV>$ zMBvZ9I20Qmz;?IhPv+ySHRoBSTW~7{zss)mFhE(mM5~KZ5f>Nh#MnvqV0Mz5fmI73 z%=Q!b(;K91R)>wc-QdAZ^Eu~!eY?r4HuKk<0QTbGK5l~h2vz!5^4Z1!4pi4%2XK;y zSzdMhcM)T#%XUDUOV_N@cuZnC{=&|3z20#Rx=;MOhPB|!Qcu!$_6ITM6{@IxZ+lXR zRC<77Bj8sV4G2Wbbxv48gRP+L$gnReE25`Do{tD0kMtFE0gBj<(e+$4i7HT;(rT@F0Z&8qjAylgYuvDj zNn}HkaU297AU}Ya=H^pov56{1b=S-JgF>3)VAzA-I2(#0=dc0T`L%JPgp)uBo%C_A zx6_I_F8cJZlVoZhKLSi+{uLdGdr?RDDp|5`@p<+xYY;nZ(Wtn#c0C%%fj!Qt&EZvT zelPF!*}e=>Vll*Hmw=h5fnkwpWyQ9CpYs%zevC!wGq=a@od23v!aiWTMm>_Yu2%Fu zvhN)^$8)myC=cXn{#8R;*RNdS*G&T8c*|v09meA$557={aomqy?O@Jey<&Sk*7_8v zN1gFmGDzIebnGO43LagNr7SEGQmIor03A`9eSac-je)d9;9myH zg2oDaPZZxZrzKs7i&n{B) zuVVmVi@-1RJW^XLbgeSRnPhkd?>k*j9~|r+C)_?ld4}_AQ&a6zFc5eTDiU1)-3d#< zN)y1%D>eoga>f3PoyA7$ZSQ20BftlSxp6aUR&ujJB+;E23jUugAI__DzS?z>UdisG z5aYsY4Or~T9sDdLp3_*OlJCH-?EauFX7aTnfme0Z-Hz<@0$DVf#nP${vR`$$7K#o4 zEzrcC4@Swes2O(OA>h3w+-$=)GW)s6eLz&bPukq)fAn!=_>K;4Sv|>8=X}lz^1|&| zGbt!JR2)<{#Vk)M6#nDQeZse|1d;Ly0lD3`?qXbHX}4Zd=F+NS;(u_Tb{QZ^pBWHH zvpT3tbQ<6H3CICus~+9AY7i=$ZQSBsQe0+}4{W9Z0GIoW5fEq(DFD(lwjOvMA-Aa^ ztRNex3ItqCL|LFY6t795{-@l9`Nsw19TTZT1fE4gA<8jcTl3l~vTj^WX zxO;80@2tbYpo1;a6r;)rUw-0P@W(qdC5G98>Vr*OF%yj8$}(Td>{MufRQ{M`GPfQ6 z^7awW6`TtIJ-fewo?vYoH%^`7{TN*rDL@Pu0ek^Da|Vg%FcZ-eaD85x%a2pOi{A+X z=m;VsGz>+)f&qDLI7Gi!Y>vn}TT$cU16PE>b@bHvEI-EOy6i|=TNh*ZnU@>I$H2LO zbJJgrFMrqw0C=?+6eM+@`}Ib8r-Ry*W!Cs$E(iv%m(Bh={Jy6U>bkyH z+K)CCM>%k`5O6ei33B0zZEicutsj@kDo(9fKi4=q)6iHu*~ICi0p!YzSg3rz;3s1d`t(5Basf>_`082^iW20fULqaq{`Bs_X5nmUe5!XPbCAw=f>0HJHe;fA-|gIWZVu{S(G4X5%?cKNuYNA zc33W$$vAC4eDS*`nS8T|>^>KLk`PU7rQ@;Rwq%8yC2#!(P9_0^DN>|&^+JtWrtjKg z#SFQcIbwg_#31FZPGK>^WE9sw=gI32suZN zaO-Y}6AsZ zAqq-yXM$19YHshD^!DGXyS{!q~OU6jFb~w8NXjPXl0t8hsEd^n+Lg7A~YHu6wf4{dhv2RlC zh5Awqk6`@+zfNT8QW7N9KfTH%8hVzHZY)tC+42WB>vwajsKQIIWyrpr4G6+T^>CY` zcb5h^+7Rb4M~FfU_ap#Y$sZpxa^x7P>(80bI)Em5@`?plApEN&heDu``gNvZPGcy^ zGvOV^`vgpUkq&qdtT^8c2_eQ(JZ-r&lEWNiz>rubDi6AuW1#v(0_w5Xtw+bpBm-$& z@RMpfI(D-ok4cQx=5n_0{x|#W!1C>Y{r0vs?c_64UmMN&8czx7!%$+Vb`VOs`w4%U zJ8HK1{ses7EQb;z*w|B0mJAQgM0fnGDa$y_0hHiy4ZqJJ`E`0!|E2uek! z+^_yRTA2-$B@w||j*TwTJ;IZDA5V0Od-w5@GxNY)&bNXWp`pi^S^9; zuOQpReqlu7mk^R0X7G_4Is-euR8w1Yq88{(JuTPWs5Lx3qGr#rA9<_%O^OJ-Rp<^; zlGmy&rK>%UORBv9)lDqe$P#;JPZyP43^-BbAAdE-7sxjzWWix>RiJwzNen!ly}N}d zTKmz*wUgjSa!5{qab39?HY-U3eXt?=Hk7zhCWW;5;K3z?gtOEwL^sf(ml=mpV&(Pu zZqOC1wC%6~mN}pI%DzZXMoGnV8TJS2%S=v0i2suCzi}N6(njwW<9W8DGeJ|*9~RSO z8t8A1L?WdD!T;K`1!552wu4lPabB)B@eIsR3Rw>BbIbVp0f1O?lh^qKY)Q&1XGUgU zHi&U3p$weu7#xO@j;*YGGml#wnj5)4sm1fQ|1d<3{j5*0OEjwkH7`$sGeRgb7E!t? ze8q|tZ|KcMO_o0G=X5O+&DPhy$2Z?PXPV3=URVR%_`U_^ge?sS)&~@r*rFelny6$c zFIvZC=HV^YldZ`Wv7TgVUV?^e=Pjp+Br7|CSa#z*hnsdTe*40IU&Q~=FrkZ>p0lMf z>Yno4AG<<^+PQCIfBdko`J}l2%(==lg|6n;#}aAx&pk9SR3j}=u&;fqHYwT_ShSdG ztIpBL75>F%7v{f zJBA=aYKE*zYK(#axl+c+GaoyY@%Otp1lm*K@cc+~uPk5>Q+@FYiEa`!=s4(3=if^W zEz=nmjXS+KgeNI)W=M9&0;ThzhvsQ^MpU2)hK5o zkqqGs1m$G&B)FhZ3s;=Hrwqg!316Z63BDnFyH;$+mt@~-AVk_!B$wX(T`oUXfX3X6 zgTW{SuH!N51-*`}m0;9ItUME>_+#m?1_a!)!hDK)bq)=dev1D2933Y{={grlAz||XzWnAvR0gfqh+AV{dq8o8VPqbEE;lp@ju!( zyoi`_`*~Tb8t-=@B!7NLBRsq@{~1P)eJoW`O+{-6GYloq4!$FN)o!?Z-FFjey_H4_ zH7*<>UFc=f(*+W3L8?+25t1s?B1P4SiKN;Jge5>U+ZH_p5C!Ur=}7LAg#yuE_laoX zF{jRPjzy4}L=?8&Tug0nb}(z!4GfwjvQ}3GAQ2CvMgK#85;tRugp>oCB{`s37SnhN z%2|m{2ubcsbcsPVr9s+Z(e+QbgpeUOV8m=_aMxV@puY*mio6g6F)lK)cs~rl%C#}N z+HhEzBak|)j?TCaR%|!geV?Ox5MxoCz9`Neax|MV5ILY+d`g%Wolcs!HD>BFXp6LA z<*&Tq`rzZRyvs;}Fr>Dpjw5oyl*fA4nc5{J1;jzQ`|xVchoYpMNrFRC8~A{XXgCDR zF?OMDGG;3*G$H$C(*~eySls1Aj48L7Z~3VF7+|QOPYrxl)2*D|DnbdMb4q%x|5hzP zC79pz{PPxp-l84*YoF*~m+|!sUpD)ppNriMPL<0KzXq$?G*)W!T}z@wxQGql!|a0q zs%4Z`DU=HZmU!R2?KLUKw|}7uk0FRsu1GLwcvzm%r|hspT`t%MLr`ikdb6Z#0HTDy zUq}7{dGq0`%2U+v&2b{#4K*^rm!aEB8N06vbpaN4I1vU$X$?bqEjdN=E4JY-xAqGp z;-GJ)1iqQ^--K>Q6gA=Vgz-zyvOaF!4|?Sp9}D4v-bmb9;IWAWE>f@|dN5ik(qPRd0 zs5`|QcR-B!02Ut9wndQWouZNCIiXaf{}5`N!eVSOCnb^hnGtz1u?A6U}R-`bIv-PVDnb8z<^#mM_qbxUV~~z8pp| z136bp#ME`_41=Q^Dd~RRi?RX^Dv+Dm0&^S`(?m>}$gj1f*JHtmqj4D3$dAXed=|(U zEG-g%EI!l9Y06e5F_8KrTk38^xo%`>tBA6VCAkQZNZ~(?As`+JSGFuRA{OhY_fE_pModGoaib)+pYQg_z2x>IZZZj;i8^uXCM~1C8EH zqwLESvn2Bv^IjF+2Cbf;r==1wl;VY=6eiE)I1+%c36F&csFycpqKY@Lo6c3P=s5kf&{HTw*)ijnwE`ByRe@4 zux;41U}r#WZ~xGg)ofz;oleeq))+{^_aopR^~tsuY_Y#5lNR_+z2#9Rb+46?6Ya zYUD%S7~mA!x@y=82P!p6DSgw1^tY|KJ-RMok#!Cm$P!y1H3X)c1nI3SzW@Wh z&Xf_!6-jDk^YYCLkoGyoWV0QepI!h2cEel#qWs9^2uybr$^9J2>En#xr`Db^fpSH8 z?dl;lyL|P|j3;w%ZN+#ZjN4=%`(aYRAqVjy@LN<4El3X-Gtcj)tXN_&OUagYHZu!d z0ff*{?x)ywCcw?hc)iAhSJK(r2uM+dqqCD^!Q@0}k;IFzvQ%Q2c{|_Zj+egffE~Ea zXz4uEg`BUmIdyPGv=eX;c1fbU7T;S(zX(hli72h_IpMn`S{hAgw+S)QZfkGS>-kwL ze`gFXzkYaKh4uNr45R!hGtW*K>Sslo4@8$kwe(^Af()DmWAIxM!>E}YR}tULRE@BL zG@o0Ht+%g@@;os~5j;oboL&tRX?042tiKOb?Fxyvz%3=s+YTd^5SQ%x&JJT?1!oGW z?~H=|GWP`S!CDd|*QPUY{O~w10JIstSY9q2buR zZxvVD7eH1RD;hWHWemo0=pKig^@^sKecg^u`G)*~P*rA?m!P zxEjSOMkjuaVTyhvcVs2}vi~|K9>3TnozsBLs0I>VYeL7*k4b}i4`Sas%rY#7(l8$X zEYwc_0$5@|iXRb$zZ5^9)I4QgRWBwk**hn|a&B|4?K8NODd0|GgN-g2zEfkGOe+C= zyzwmaw=GmP-C@Z%=~V$Tn5^(vm^X|?0S-$8?h763AiN9~j+l-b+Rq<`Q5ZXO`sy%! zm&10o(`FGB z^i+9ZF9?tIxbqdJ0`PRD^umj&^S)cmd{yp+1Emzhod*{ZCabtSCy970k}aO`t?pM2 zHmlO{`PO8`!UlWJ4+Vk*(oe3#iz@+!l$iI;<#5j%#h_D|jg4`@*I?T?(NR!5?pCFA zYG;ek77dd5SUIr09bR1il0_7g)|@NyObY)r5raP%FoKjoDI#;|l6ln0`Au8V4^bhC z_8Q2iYCcKm1cS!rcklo;Wp-3e=U~)mUsH#m**)0JwE!x#8WBvkhPQe>GzYh1mnk)B zHO&Vvy>NI8`^d)oeVe=V5Fzbkg7wrf!>V~LyT4*&?1a#~j!VVxm&Z|;U9;dTSx|NP zhQolyo|TgJ^MJgZla&qHy;PBa$r;}TGuuodHa#}a$ZMZv!eLNuiv~_*jVCl8b=Omr z34@gPKqZ?+pcUghd-{JrGd1*KZ>Nc+0Tme4!{Von>=SI16Jiu+SNT>}zWF8LzDq&8 zJK^&%5gY*tx{CxR>(^_o*|*<<0BWrf(+5AxPaP%#K&d|kPsWW%80ls$g(?+dgGS74 z&c^6PspZvO9ZdiL7;CJ$dE5kLlSAU89Vfnx1_sAjXPKd@o%{&qLcB(2Y2`Zv2`!nz zIe-`dmme)ies~=))b3s61w+SUVCX1xkA2xdpjul_yR55g;U(=l{m-+ehqtjA+(zIN zdB7{=Ju*Q$n51f?tfW85sBvTSbmJvJKMxQK=6rg;l@NVdU%F?Nbx)(wlQ`i99QFJR zOobPAaf;V#FWPpup|s~gtVQqJ1f3%Q?DL6E1CJzjf6z!%V=5R=V_9)`fiKr_tX7{~ zK-QulCX)MjVc+?(4~%)h>nP#;!UUspGnk+@1AO^Lvx9WSqltI)rDxK?27&CCx0DDZ zqsvaDaoM5^A=~_sXp0p*oA%}=d(DJ?6bSg!DZiV!IIs}nZ&^*8JE&26ufbpOMB`bQ z3sFt|1u0fM1H+C8NlI#B zq@p|TPFwH#LJdwEP_Ywk!BhN}u>@mH#4rQ;uQff6|%qj+zBFcJP7 z``YS3A#lSk#14&pvH*-?nFIF48Dmia!gO}k!jrD}8_a5_`V8%|$SzY>Cfj`5>&HZv zKba)MY6SN|35*l-1E`KTrIlML=&9}3??nz!0GFMzkpq_u8Q#oSdibbdW1MNVPDy7S>)IgeSl0CKCIb57D7Z>{wb!1+%x9QB}{9SNmsQDgX;P=ofHct@DgM!u;Ve z*Hlotcd6L2<;WJZBF4gxcXQ%Z+v8J~v&}?`j-||pz5M_zBJfL02+5e97hKiSBw#xI zMOaxZ_h&F_#~z=5Cq(W#iS;Q*#prMzWx$)!vm7HDUOde=I{#jHXo1dx#OFO5r7G-Kem#f>Z53RU1wHbs664Q#|eg7(xf86ht`X!6f(hs%LRWmZZ|*2Q^!8O z-f|aI7jBX7L#>eJ8R~#XGNZ?MdAf5qD8Ui?#-s)a&o8$12OfV6=Bz8o+a#fFmuJrUi5F;zU6fe5cJE;46t$nHbWe43}l%4#U{gn|89_ERwPiUl<+^euAc3yo%S`w@Ku;G1D>#M|+7VAK=CW11fr6oW z*bC|rxf=x-wXj%!yPHJ|fQQ(vg&eot?O$y%K0rwTpQPz7K4L6xssw;O?|PJ%0^^wn zZ*vX^KY4gmAp&jjYL`l49B>f*-GxfhTWoJ6*;uWnnzbes;2F$Z{_vCp)wUsC-y_EY z-9-kb=GK|0_1(sro~C_vGXr3OB#Xup!O(YRdD~{EeYcaQ7jx1)Nhdpxg1n$%PHC&K zNqc|qsTL69)rLnKh(WOt>KWk+wWGouccMss)lrB|K4Nl|);I$Kqd{MJ|2CQ0M3xS? zePCFxhQOXKebP74U!r(tIEo(Xxubsd8{ZfJMQ{uFa)8hK^J7khWAv~I!{gbY-er0VPgJy>+18O^?Ypb|NJ`99bRgXvgK=ub7u-kX%N@!maU zW(Y$W%lZ*WcEDvrV+2xPvU(|L;ue(RG@nXR% z$nM&{)0M0T@dF9ejiBj%^2Kkp$Jd6|)>*_iRV~cb5-3i+2MANd(~ExRG4(&RL{QYP zt?%00jnSWV!+j1hK7nU2+DfEj!V8s&sSop+a_lVDlYQQPqSHxu35PM@e>pQ2LIs;s zTEe`s-Rs!|`$1lOn+k8{Jv`XG*ZS1UTcg>+a^JN?5I*+<;sM?9s!?uPFR&l!E2c*1 zY|B|YFeu6@!ILtw11bqM;jr2w_{r=8ncD++}e8sba6`|1*0p8 zd+%)zMsMy+9Feo(sea-E`;$CUxD`)m4)7WdODDRgfL3FNbx($NTUbn~eCzI!*#=IN z0l#Mfce&DP)+BX^B5VN2TKQCPeg#?@g8RPg)jdJc)!3?_oEc zIg`21-{VIFak27f?R0go?+yuk`IoCKXjWK|2}~>&Kfu!hPHJL0VAx9`u!~Nmf+^BC zZsyKU`|jpQC=^=gC6zfrRC9p$sDqkL{RVoGzQbGmjT#LNSaM*if5eHDORzoFe`C== zX)LxCAxV=LKc6V|bl{R=HXor1LvV;U|Vs@=2|N z74SB_dGr03k=ilcaO~pHf&v$;MX=%btNK$xdhn_`ZzsQWVYM@#U!_xCdwvqO<0967 z!6@V!=rKtf9hR-HW#ZO&m~DR8PZPmV1Og~@Dm6^xDJXdn`x8TuTz^*gahc@Nv1A}# zjIimw#<(4!(NpnX1Y(_O0l_W@KbJG7CF;2=5YxYMY;Yd79x)0pXAHXjAqH%z=y~n* zx^euzR;jKgfo=h7UoGNXUbH-cF2^|yHm;>{y#w^adXxk)mKK-CXb)zgZ-I~Y<@8*& z@BdvQYW?GBf%v#eP_eSZJ?NW1lV$J**Kf~vK-h(_fypzqVkOeMcdcZ+^#L)aPz(&T z7v$h>UU(?3ytR=&r@c{Moow675zQ1aR}Y`p_n;^Ho$i>gA=2c)hd=~afF9gJo$|;U zOik2n0QlEtwE-Oisx@wcsJ{6u$Jp@9qskl})9kzSIO#_m11Xu7O=ap6&YG@-4XT2+ zA=i*H90q~IV9C&iDvELWbC)<5VoXB^ppa^I?@vkUX-MZ%?p>!ytv>m$j}7p5)k!{ zsh%dv2;AIG{6}xm2nF((qhjQH48))hKiyeKi?K%tu?Xgxan4iJPnKr#9)-#JSq(qE z$%zedrlB{e9s<`B{TTvw(huk3zF)fVO!Vv{9XoHy6^{{=QE?=>>qqYs$MJ^hA`>;) zb7YwjV@2R=E)N$+(mt5InH@UQ`Z_uMAybSbjKS!3^TF1U|5&{rvXjX~Skhir!||jB zrP>E`Sv{(WZ(oNEH(GK=U8@&NM4pL$?hmBcdl~w(=2kIbyZ z8IG`#P0^ho+PzEQg}k#O@q&L%jEQGH8q5L|Hn0-EhzNU=c3+Z)?oeYXdnnw7!GnC$ zJk7lHX6N=y>@aEw^1WH_o{N*7o=M?;K)?Q$0yP~w@%N=?M_k?_ya-~8w{|3ci_!y~ zy%}v2cm|uIl6YgJSC}Rzh4SxPthy%8H?;Y3dpgv`0c$wRV_(jXkeTlaC97*F;1Xdg#Gn&MbV z5*%a1F=n21p@K%9pfj-Tl7JUwsIkA{muJY#`uUv2dZu`8@7+@bAa7Bqwk`N!&oism(@!d_L{Z<9soDN@MygYihXEO`j%m>z* zV1Hf3oCh$QMO$BYd*zHzNoI)8F$NldpKpTI^7tzHj_|{@c=jn*ojt%YYtbrbyqar zw=WTWTEmFC12XWiWQPVhMvZp3kIi>&)F*~vGQwf4tQ!^sh2n1^yt zb1g+JH-T7hy*o+p)HG-Kb|-^eUY8Zd%;Aa5$E1Cf!$<*Zcn{BumJJ6!iEP9RAjj!^cOKbjpr7M zkNV)GN$WHpWM?(qdm`p=NB}cuk!H`D84ykz|7xQ-O|;rRyZAqLE>M41VZ8?|9PeM zX;RJV*qZ-N6vi~FX_Lw&DO>gOUwD%E>G@lq=NbfLx-p)~_TvCviH(27I(D84R%JH# z$9+GldyejVTS`)o>Gk};6}_hxZZjn*H!tmb69j%>Y19IevqHSSM|s^fVY=3skQSxR zIJch36PDQGb9&#Y5j;H4oNu7d?jSLw)4k8HS$(RTH2C^jS67aJx9Q}z%kWje#_VPz zSQL26NefrFYxh380RmvoU(wGvmm-)l@GteNKK@+QrnSy1)@+Fh{rB;({@X$%C~mM$ za^eXf{JrbJ?eqMQ^1!GAP|VKVfWo~UfL>{LT4FRa_IwKL0h zuVo0-Z!epVMj;|m5Zpo(ak`ucXR=)P>)}Hy+)=ol*#JAXm?Soa`8hZYC{9?V(GCQ> zLXq@~=e$$P(RnUJJetx~0B9&Dt{`O$ho1tU0tUB}V?>fAFDMfVEk)yN27pL)<6f12 z>JGSt6MssQ)X4t;T7tc;FmnRcFQg<} z=E_s+-5nA#^)LXZTjc=qo}eN+uJ8IpWGG4u=_dPQx0BS!$Fx!m6=VR&Ft6XsfB=^XF+ff(d_(69foi1+}d<%3XK zEd0?ZgCpQW&D8j~ZL@R1HY#vQ*;d@_;CqQ4Hcx^dk>NtoG?{cY+jkgi_5yf7#VPwU z1rLj)hhZ9q=lh)JbE|VVyrR@(4$mkO7Te$BP8ktDI2hWNeW}V2cVIIO^kn4T*&L0w zoL5H|fL}yV+e8Q;_sY64DSlXA#I6|urpka_oWI?>_6G<974K^hEs^^42arr|fTa#& zg6U2HR}H$NqZeIzbj;8CYD4GB`@cL*plLs7mQq^>y(`{kt0X1*TukysA)NmR7#xk2 zJKB4V`j)=ygl0mZj=?+<3U4%l(Vt3ut2MGazht%8N|teyAkA4=q_UT^L@X!cck)p@ zLh9wQ8vful$#T5WO&(eTDD?M!$I9Sf)TyZTx5vxsN&6#edEPlURGKwXpMq-+MD4Da zX>O3dw-Mt~F{*!cjteh(o=6v1YYuImlO>QWDT?fe>;~mmO9zES``}&TAU`7iB|pk1 zl3V-yy6)NLie0QRV|6sfscI3RML(S57<>P&WxtCKI@z3?U2-9)G11+Acf%VkVD#V4 z_m~49qWw#9)$H!CXf@DOKtB=GlZ{Sy+K8~j>xlW)=;~ri9%_somA~^&`{eett|L%< zhdsn=t>QZ2dUIH}hoWCItTWKN0#1D6#aaGO)ox0vUclM}M2yUav+52|z~|whvqeW3 z-~pPYccP{RK=gawvw_vu6Vc9(#$%EDPfbT%m|%G*!R_Hb&&9b-KINuYS6 zYtuwUSu6+ycv%X&YE;I3)EeZCiNI~|%<+D;XE=OhC{t>hN{P1A2l(F>#MG1YZQL3F zR|t{~=rJM-)F=CGLfSQ{RSP2OX=r*p5}ktpMQEY|8f!Z@Yn?S6?N|3mrJ~LQ6AxY^ z7kt~|w+($2b9_n|vRGTt(1k(`-QO({yCL<12n+C9z8C~la4U{VyEIio%S!%GNN>E+f(Zh$C_3a};f%g{xMn73^@K@X_BFV}JIcds+v(Y2j)YgJoA zb2n~}UW*p_`iDMXof#U({p9G21)I$JnIyh}|K$tSRN{}j=7irG?3%5z%jA)3z^P<^ z8eyOb8!2V9{}pR<#c!eLgYz~wa1pwW_J0eW5Hu`p8MSNkMaO;KKN^3?$<;tRo*EMzr+9@U&-GV2%9AWOR#T9A z7uurP8}F+D@AexX1Y?YI4a5r_Oq0Pnwxs$vv^4(KN~m)LWLyb3W`hVO%h-V>Y)CjB%DS=F&wc)44JZ*gsCg6Dj5~6tZ$QTlbHY_yV`a(5EI} z$kl)-N}AgKyW3P5tGr=E1)L|Z?fca>gw8#7o9@y23z zmKrLa(}LT`e0Uq#xKH(OFDpPG`V6@e_~WB2s$b(L<-sv+KZjhM0T8B;KEg1nEWUnN zEuqCoK$gAe-m(V<+yO}@dh$AqgXNqA8{(sn1FE$UV^8iBrPMeB?C+gOUf5M@K|mgy z03-ZGG{PHm+#I`ig!YN> zA)h?oH_F$rlEKNoV)bf`qXMV2B>5o1!VOQ40_(&p))97K<4=+r-{IF2345~Gx#~41 zIz|!keB`rReN~dlUgcpQeu;OjcoB(-JP$Z`C*bmlVfZ0MPlvYxI?NgYfrNN&@iaGU z4L3#zVIZF%2?SPAuX8fzch{P1i@pLkQ3nUQV~y`k&7i=d>au(siT_v{SacjrtEQo8700@o zD__8L%s&?0{T@?E-{ki0F59rUJb1Z1OkYZJ&;B%gxnYwNWUeD-%;#G!hPFTEW@UD- z2F>dvP=mn7hP;!#a*nKB7lKQUT2%4G!+R)ONCH&PX5Fz@tgl>r#W;E@_OZ(%iJy0C zDf??X(1&w9F5dD7`#AJeE#8ydzuUVXTIZ6+yP`x}$TEIwBP#nypaV-JqopqQZ6hIArJ{(E@dAOt5EN zDic%mim=w&)=SfX;UE@Plo16~laYI80;<8#U~oHvQ9oo^>;m3~*nD&)*x&%jhC3(V zo}1W^(LQ>h=72iHv~s5;&FuLC?c+XRp`t-!OE1B7G?@J!s7b$Y7&HK6ANMd()wNBQX}91gzRkt{nma{$+8D$>OO|%W9%DK#tL9FhcW3|e>c)B&e^)&rR zePHDLZeg(yCV`K1;oJ`P7>y^=;Dv(IMp>)n3z;&-#cbg+B)JQJ`g#x7YErv|k^Zhq zvYLH;_Q0#}cant5Uo7J__krLXe^PlPf?Y3?f@HSlOO_jrFawqtcpntO4Y=ZDN_x$z}Dqm1dp zQAnz?ID2G=Ls4-mx9_GS7~CCv&3K1G3UyW{c)DL;?r3KVZcVS)v@&7)@I$9)xhXn( zw`Jv!T79Ds`xy?#_mn?|!DOzY%QO*nHn&}Pl6EK;xOtTAnPOKPu+ID&XIf8=Sd$CJ zo@j*DlL+UKc1v}WM~oNOp7*j>!e5mXIb~!5A!|$z@LEJ zKV}2(gwHqIgSNU@U*?$a63uo_%M5LT{`gmT|J@s0Y{F9YwS~@7`!&AdzaZ}f19ODa z?yAN*fvZ8REig}iBYKPER z3l*nbN4iXs&^DO8P098IMq~%YeKIEB-tm5Cu2ziC_(>*L{*r3uEwJwC*f+zMfT#@k z8?G|!`9&dRz;!zgdGkzycgFYLMn}+ikHwUWm(*u76sP`4K0sF}ka0Ulj%hP&$SVYm! z3_Hrrg!);i+6F%^rO$3XtHTUJMSPK1iQW&xs+y5BdC1;~ig{B!f#5qY>B=OO3p6hI zC?@Hhq`UyUufns6zcfd2wpNtf_5;gDRbz%h5!0wH7OQW^k{H#?8BEzQ_2bqs>UCQY zl<2?kGbD86q>so{tcgzm4xxjwyptXk1 z##>lF0-bj8n$`gZ%fQ$ST0V;($)nEI_n;7qn*B&h$kO&OKDN?VsdRsC$5P;{{p~}f z3uXG0X7+KiUUuU#1OkvA`lj{V{0+6muNowe6$=0hPKQ_2+Y)b7d2km4_e^9e^BVyX zc&em|<@K;T^Amlal7YP!p(q}baBo3R%Gb-MJYJUJS4IGBzsL1`>G z2b$WzA-(lzoyp5CK98oOkBH6xXDu4{LhliFk28Dkr{7HFiRUWOn!AiTSDuC2bexgx z470A<3;_U`-ErJO44&W;*$=GJ<_O@TSS@A>&CVP_dGR+i+GndLkYDv3 zeG#qn1^b#V7;d@sFog(4MVFCP-<92~vGb(6x^D4%egRGUu^a-5qBA>d%r$}np9&o| zVnX)3v|QX>aAwWfX}_p0;R&8BaojL+eyaccvh7sVh=l)6B$(m|8js@iyhM~^!L%az z&JZ>6j?b{+)kbR*$HPhQ&1QVV7U6jiXXP>F3}~Qcx&Le_+bC4apo@>1sbMb z*9s`nMx?G^nCzND&R9WkMe)`+U4l1sd!M0LZ}!Z0u%yIg#AV93T>~uJzM$1qMP(i6 zzXE@Gx~rJXq?x{VuWf9Z7=3<4h_z2Apdt!wyY&z>Zpv;8*7HcRYWwJQF+!fau(~?X z{0kQJUJ#Jk2rO5`^Z6S!tgUj zt6=6S`@HU$$pHdjew}yY*Y!4^HO3!a`@zCcKO$R@l7-D@H4uUHGc7efI*ARZmDLXp z3v1^sh*x0rc^ol&HC3)Ohpqdt(tXrdeIR}UAoUb$dS1OY7*E3jIDVnY2zu<>AlPXFC6ljkcwRcL}<0R!u>=?Q~d6;2NJ@3?(& z!u2)KA3UNA*}6~syw-Rh-<+sYKWDbqcPn{t%lM`7;jv^3KhFt_^od7qSuHMMPG9TA z-ERHGWU=??K9=aY-sZ0Um73$z9(XczNv6Ic4+~`SK9j4pY)N}J+I?+aww^A0RTgG~ z2~iioicVYKV(S=~^w57lpj#if*Wbk!p_8_ducM+Do~xW>^m(d`zEF^Bloi7n&`M-@ zwYRI91zA%1g*5}YYG&;C$;@$jqwyX6^4{8gLo1le$#PHe?;$TsSePt#GL2@>tVpgn z--06C-%_&ux5wAJ6cWV+@S(ANl*ID_Qirl~I^{P%QrVu$boar_40+37DoCblp;Kj?8r0nR#k?c$MesSsd{{u(<)d$VeGCfTqyMX2a`iX=s z*pX!wvaMqAt*$YiUpVJg{dy&99{BS zofDbNExI;+^O6+BH81W0*@G-rQS0w)uNLCjv?zw>B@&K?>kBjb#t-DpaLC@T9*dsV zMxpb>f+aW7Y34jkNAEZm;H>qca7)Q-`-I>iv2(AQ7JM)IC{D|uiu!$va)@zL@`KxB z)NNY_2ZbJU#T_iK{d($v$-$*xu=0v5@(I#9xb(Vc4|akL0w4ZMt@}^vjB!2dRrCW1 zORKvtU$0C~d+8X3ZZ)xhMFU0-D-1?2VwiXKdtCJ?)_#@=QPXW0sZgQIaN1QX<=dtk z7Q^%j`2rKp`|BR^-8SJ(n~hud1IvVwai1?=)yzs5>79GqoVz4;cEEb{e(96YB~SBX zzc@ZGFBaXkyfzc>w;FSL?fT&M+)W*Qmf1Za^c?e)eCht&k* zp9CA|Z-dS6)slsOAJr3Dg;8%M#Qx9ALW%JGL{VkY!@sLLnpe|7nAe)`Tk?S3!T8}j z==1JF_A!5@C@cFa$7D;6Hw(f$MS071^w7`v7yMsClR<7*<(_<|-T%Z5)MnNruRm14 zcZS_Q;*%i^zF#hmX&sqGXGeB)e$0_@$8qOq(&Sr7*(+foO8xG*AQC-3IROPLgtMiJNSTf+Y8p!r`X3Yl~4xHoQIn9mCvx`*IXj@z&H+>~qC*HhW*s6Qdj^>OA%Lm9`I3Jh&u^dr$XGGdn6tV}Opxb2q1K z;M7IBi4~^JICIfh$x#`5J^P;ZQ(2IVy>UAs-aE1qShFiS@JmOR!IS$wwP>FGe|&v) zRMcD8^$Z>+Meyu3#aI!=OLjA)qfeKKqF zdrg*@)2`#oPYm3>!pg)cq4C=cgD2lB%5z?Q8u><-m!&IAw)yp>ZssvJ{8T(&k3(AI zp#}dCG7LyEiL0LA!H3Pk8k3QjVB}zSU?*8cF$ty7 zpWfzn=@-%*`~I%|mHp&Z^RL&n&bSNOZRb#x8y0%35Vf{vQH{B_*6f!iUK@FS+%@u1 z$VPvov0V59A0sKIe5I&oRW|NfE|b+Mb+X9(B|7xK0>G@xi%Ow7jBcZK-hkYty?wQA z20Jt7vyFMIy?;xN2MdNYc`9H{In7CDeZmu+$9bMmClY9~m4BUW$BFupMY1+_M3xlg z{ILFG2KyW^<=Hotnlc?AIyjfe?e$G8<9vgi7Hl%swxaTq%1Dr)&1-TyoVBNmtw0Wu zxwO&%c?jb4AfOlyRli&b+=z;Yz1&mVJHbXh*|=rhy_E9fEyfZtAXy5UdxjQN%$xo8 z*yahW4#7s_Y3ydqx5Y;#f3|GqBarhHRr1#z&xrgn?S5E5g6HcW0h)LDu zmmi8O;3SZ_%_$UxA$!GZb%!c`-G8yms=KA+7QnpilNkUcicoPgTa<(AhYrUMz-uCJ z{X;rBB!W4sv!%y%S?6gUFgeEASd$m}NJHp|<*-}MZqTcLCbVu?*4X+S7 z7|IF)r3HtfUN>=@1>g<=$&9Cvk$g{6D3d0p--^tHJ?in1?R$(ve$_dNaP9koFwxAr zvoYV2PPfa4j}D-_XfOgsD>GiV0G@oL#c^HJ(H7$5mIui|k7whr(IsSKlBV@*{m0#@ zb?o_p714B1F`M*LSAWUtNm#FT_Y)-RvetgEd_Bt122Lhoynj$IHJ3@3x5a8EmJEhp zjxAcFDFZD-DjCy)(W7sHiCEPqWbujwj(S`F-XsneM=6Vlp=R4DA5hzYR^~bzm^L?Q z(< zgS?ck(^CR6>t)~+De@yjBI9>|dn@EyW6#TEd-+Gb(S)IAv4drPz26F+gH7o;rjpA^ zynG!N4N=#46`YA@YH#!>oH8vR)+le3Fcf#sb>>k zW1LG%H^hWqfySYW8c+XmVJQ5ZOG@rkXfr##h_Z^iU1gU0! z_>hkWQ>G`he{=Z6-Sb`^+F&1>-a@LY^FnU6_a6>gd$sO|mUq*aIC z3_I8yY4;=dB*)L<{iCA7CvR6MU6PI=$_mv()?T0V0t2gf1HX67ub2b`RF#?%*V{-o znZN$jS3!~=I*?j;%XXn*`IQjnC6P>Vz6y;NtU?Rh-C^=csch;Li@!W13mJ6>*WGTt(F;?R1kDLK zS}wWaF@L=W@RZTNIQh0!VXy!Wq@%M-8)00Z>Z z*ullr1QlDb*U!F>Ta-IGy}PYRt0mMo%kCpgmGJ(lyx!0_Nh(mQqm(%$b? zAT({G`?G(Gz+^X6yr2&B6@xv%3E`>!8sgoPyPP+nb`83!=hZiViY~CF1^t*$x<7S1 zzS`-t!^c6btg6TK#^@s&c#ty-F_~L4=*dQ)s)h*#RqfBu4f2$jrB17}AVCjJmchA7yvJM1W1oW-ra*kOTc12kGN6+FYRiy8W9pI78Gv z%=+B3@T>p)h(+?zi?iJvjTr|Fq~$RU2^_*<6mMc*Sdfw7bEe5)v!VfGH|&1%taq|E zuC>^1wd%6D8UWd-osqOe&$@u7bk4}jXxpf~qwo)Hgj6sSpnXzu6F&tVYKR7jn2|Uu zl-4*3B|jvl=KMl~VZhO+IQ+y_vDK!+H>Nk2(B^U`@YzlD`hf3ZO57Ojgjw|l53nhW zJFD(GdrUvO4=~^wFyAQ95s&jJV(T$x$jfeL)@VJqtoW}r0D8P;aUUmg{mV4Dl+V2H zN=wU-kLZSxOi2%`>{CV3N$so3yPPbA_rB&^tlF6k$&Vcb^&$I{2OSJTII z5pU+uMwvYhzSudH8qs3qTO8+?lS|r#KM|dNK!;`KSq4buxuJ{N2EJeyQ{(i)GSL;l z`q);>>jU!~xgmfUQD!IwHpR{~C{$mX9|lP?m%WBnESVv~5m3=0yc%8^4iSlR&4h}4 zu)|cs^DGrIV)a=~>gpa#8WwDK-3&sO3`N`h(-HoJ{o)=lG4G{SL82d@4TTBIc)RaC zlUzgiS#ORCkF$vyfI3@aGXrUKU2;c%$l zVbHa2#uU_0PKxzss`tq9nzTxozlWVJZ-@EkhB6`~6+`h{{M~rw1WL*rPsZnHGw3#e zWnN0XPHcR|NX3g+xNRvBLT8pb1v(?QD~}6`=Ap~?-)pz}2qe{U)? ze!tKDgP`Sk@y2_lXJ0oGaWRnmO>*>gldkKs>Zmmias7#$A>Z(g`xh^6IP_t}oRnH$ zHVRg+aRZROE9|L|zQp8Kp+$MwVKO4)P{dZi`qvSD6uSVHWZ`+qcmBXOc_s>3E@JOM zRkL2c=!}&yWNfVpUxGscvVDJ0tOQuk=qoY|+P*MB25|r~u`^Z!;4MV=0>+Q@JjePC z-o!bmUxhlQ7ej=oz+yUJ&>?wC6b<&=beD2<{bsT5 z>9+UGa}ANfmI`*c(hy=G%^Msld_Hpc9D`T)Jj3maY%?KW;v0QQ{b)i6hadztXYdWS z%%K+}>Ke?lm$7k~3()Va+5zs3RQM90(%?=1FPqKaiaoPT|q6$vX~a0*{r zn!=F8t{oAtw?}{A*{%gRvae0E)f{uP*D)cVrNfD5RrYTiafv>}fTV)rJja(0-`wzF ze>TERZ;W$W_1>>fd`gT7hGC7HqS(>+V4R*)A=Z_tEDI=%&i=X9tSqn1k_j}#+mQtZhD8ArIzZU-M9SDs!lT1 zns#ZhEFbEDn;84+CYFL=a!&X8_2kH{+o;#2y1VwO2-Xl)`|yWQyPGG=95W~nX#(_> z6u4o3K`aV*xk??D3v8}mQ9s0UhcY{j_6(*WVv=VR1IhUyvTU|1zE%tuRL{vx8w}ju z%UbDIexG0vFe7A4$+d`oO%%GhUWZ@po*e?tiV_qros1dAS$VhMS24oCw9K`FH?W$e z!Tuw0ja+Gyv$LcZxQ#2Esi;OGIEfu*k}h~-CV=q`rYl9mpT$=Dt(Y^-ynGvd=hFUT zg98LaU`XiSC^FwQ4t%HPI4SE9-A_k-(pUiV5voR@4~xvbdkLMvw_Id;YK9vj{LD+( zkW9}o#sig;+Xk+pDVPw|^}5FQ6*nLo=MukZUIcfKb>wf+^HXB!u~ji??uEk%gOcHI zoPT0v1DW-s@WG;2Am7ou19npko^Fb3AA&AVN0sg{;uTwQQP=c-Z^k>iJdT@n&X_!@ z0|T6gU_BPiogPV9;yqEPnxt?LVgZIH_R80WjwHoeMMv5+q0linft~ zY7=J`RBvid_jmNNs4$SX>(NKX5*1m;297Lw33;ewEN7<(6!*ual9y8WsDWr|(QPB< zdkH?@?oJN(QvXCn_ISJE-+5@tCp=w(_*$yQh^A}sw!8aNk#ukWT*&h@2Ye7%l%=~I z%+2T=uNKcbfy#QKGY!}ou^Ow70)8>&nT8hDiqwNqm_Idf@i z9~@T!5%dD$kgJqMhHt5#c7e(?ftvq_9`do2gjMsT7@BU;==7*;Z{BwC2ck?J@Q=~I zk75BrQTGACn{8+Jxnq6`KgtVC^922s#$YN5e%6E6L^&|Dt3Q;e*3*wzDCN<<0D9B3 zLJe=+2^5ecbkyCfDYEbsV=`bVocc7@J(!S`hfV2Vj|YIVV3t?sg6Gk-FMZj3Qn*t4 za@@Qj5Fz5g#`H} zVmaAEZQgFLrA`CWqwXHWS?OMKwqy70sP8`CFERIW?zFu4P~O36;!Xznc!@;$F3jp; zz{8_)t1=Yzgm%^l`=wtW`;-1USU#a@LiqUM?|AvD(*OvmM9C|Z7tk7#EfP)L8V+ym zkXxc`exRxeRVKA!6RUU+79ZHsQBg!wjlTz4?vSw&-C8v3-L8Aog7L22qlz9)my{a` zj$FN4-MGKbuotYl1ZQY@_l|EPCKjTX>LY)9>E@;;Sb3a%71fS2)pPp;{EW6!7)UMX zT6^pHWx4hibk$Ll)WbeyjrdPl6{p@^xVvKIF0tA@q(WRhO$dRIaNPB?BBfZ&;aWgn z%~(B^zY|V*MX)A@Z(=u;EnL$sHh!&vLxedT23G~VAS=_gBEZE0|J!s{M&1dZ zL-cG&tO^j6RrV+yF?pUk*U2qRbuujIzSq z#ooz_;OjJgD}>K)=r4^M`iA~Y@UnC8{8Z#pCFvDPM-C~U5WLWJs?$vhh;|=2uz9Lm z29(4p&!kUn5kJSt>klZu4~Sfc?YaKL-lh8(uaZ?30m0_h)hRS>Z({8Az~=FSIiXe%c5Oe!7Z^ztiOn zq=;}OIWu@#_Yw_hCIek@64sSToRvKxKoK{;C5PQgy20Xw$UIPoYZ!a%yC_J4UA07i!!QN2h_eSvfJ|_ zjvk)|602-nl-!_c0I6O&tbQl1Z-l%;XgdaoBL`^W$iI#a&7dN)_J&}#;XbHOXMv{SOfaQW$)l5)D@9S*M$ zjF0xWe!JEY-8#4YnTD=afsw=9`xk}4V0T>_a6Gjyo*8zW>bzUQ$3TXl^R&X_{C>+_ zCSY5l1H1+!nHPvM(#_?F?g%l=zw05#y)mhOqbf<6{sM4p5@Ebnw`=;<;{IPHO{9+o z5ND!)aq`ViwXTyvJp!tdta*fmfM6Yz{bS*5UlYNHsA6$pkNS_Q0r>+Aa$Di%gV#Vr z^W2lCID#Im;(#kWT`t@22aFG}Z59BK80{bz7SI64Ybh%*I?T`x+J{Y-Q9%FKv?er9 zGvuC^Q<>XugsRzJ>Z62YeLB$jx`N`oaSx);PlZ+O^r`^}fDb~8WqgEEjMF#X35PLx zJ7z$xCDx^H5k9T2m0xZDAr&A>17SW5ihDol&Y#^jhR6Z5wW{H5seffTI=kMyKJmwc z3#i(hVo>pyC!3Umm55O4sA#;%&$VWHhSA0;37s9A4T{y2miK`+Bfe8W1S!y!BRRnk zYj@8M^X1oPYaHR+&nEkF%%etT9I>M5L1*)OCiJ(nL6hHAf57Gv9>DvT4kbWtV?ank zbYAPUoR-`gJsqGrGrwXLbOjP+2hFjPUec!nW*3Vd!$%9PEbAX@qO

yOjQ@E98IW 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≀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�@@S4BhyTj==jXfdeNFModXPie)!|EO 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
i2b{`Q&62In8k4QaR;1^Znp0y*{) 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%0Av>31Sxnd48SJCuTKtGY}ikB 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 literal 0 HcmV?d00001 diff --git a/pmpc.png b/pmpc.png new file mode 100644 index 0000000000000000000000000000000000000000..cd254742d448d05dc764de7add5a381526b1935e GIT binary patch literal 180837 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 Ua)0v%Fc+;}>Ee)Q$2k0d0APheqyPW_ literal 0 HcmV?d00001 diff --git a/robopack.png b/robopack.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0d7623f32e5cf50f4de8c81d18b9f970289ab5 GIT binary patch literal 54589 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ís(6Xa032_l{z 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 literal 0 HcmV?d00001 diff --git a/src/Api.ps1 b/src/Api.ps1 new file mode 100644 index 0000000..d9d3ae2 --- /dev/null +++ b/src/Api.ps1 @@ -0,0 +1,3008 @@ +# API-Endpoint-Handler +# Routing-Konvention: $Path startet mit /api/ und wird hier gematched. + +function Invoke-ApiHandler { + param( + [Parameter(Mandatory=$true)][string]$Path, + [Parameter(Mandatory=$true)][string]$Method, + $Body, + $Query + ) + + $key = "$Method $Path" + switch ($key) { + "GET /api/ping" { return @{ pong = $true; time = (Get-Date).ToString("HH:mm:ss.fff") } } + "GET /api/version" { return @{ version = $script:ToolVersion; build = $script:BuildStamp } } + "GET /api/status" { return Get-StatusEndpoint } + "GET /api/config" { return Get-ConfigEndpoint } + "GET /api/settings" { return Get-SettingsEndpoint } + "PUT /api/settings" { return Save-SettingsEndpoint -Body $Body } + "POST /api/settings/reset" { return Reset-SettingsEndpoint } + "POST /api/settings/test" { return Test-SettingsEndpoint -Body $Body } + "POST /api/settings/logo" { return Save-LogoEndpoint -Body $Body } + "DELETE /api/settings/logo" { return Remove-LogoEndpoint } + "POST /api/connect" { return Invoke-ConnectEndpoint } + "POST /api/connect/token" { return Invoke-ConnectWithTokenEndpoint -Body $Body } + "POST /api/connect/start" { return Start-DeviceCodeConnect } + "POST /api/connect/cancel" { Stop-ConnectFlow; return @{ ok = $true } } + "POST /api/disconnect" { return Invoke-DisconnectEndpoint } + + "GET /api/groups" { return Get-GroupsEndpoint -Query $Query } + "GET /api/groups/rpa" { return Get-RpaGroupsEndpoint } + "GET /api/groups/search" { return Search-GroupsEndpoint -Query $Query } + "POST /api/groups" { return New-GroupEndpoint -Body $Body } + "POST /api/groups/check" { return Test-GroupNameEndpoint -Body $Body } + "POST /api/groups/resolve-upns" { return Resolve-UpnsEndpoint -Body $Body } + + "GET /api/users" { return Search-UsersEndpoint -Query $Query } + + "GET /api/apps" { return Get-AppsEndpoint -Query $Query } + "GET /api/apps/categories" { return Get-AppCategoriesEndpoint } + "GET /api/apps/report" { return Get-AppInstallReportEndpoint } + "GET /api/apps/devicestatus" { return Get-AppDeviceStatusEndpoint -Query $Query } + "POST /api/apps/refresh" { return Get-AppsEndpoint -Query @{ refresh = "true" } } + + "GET /api/membership" { return Get-MembershipEndpoint -Query $Query } + "POST /api/membership/bulk" { return Get-MembershipBulkEndpoint -Body $Body } + + "POST /api/assignments/apply" { return Invoke-ApplyEndpoint -Body $Body } + } + + # 2-segment fallbacks (z.B. /api/groups//members) + # Export-Route VOR der generischen /members-Route pruefen + if ($Method -eq "GET" -and $Path -match "^/api/groups/([^/]+)/members/export$") { + return Get-GroupMembersExportEndpoint -GroupId $matches[1] + } + + if ($Method -eq "GET" -and $Path -match "^/api/groups/([^/]+)/members$") { + return Get-GroupMembersEndpoint -GroupId $matches[1] + } + + if ($Method -eq "POST" -and $Path -match "^/api/groups/([^/]+)/members$") { + return Add-GroupMembersEndpoint -GroupId $matches[1] -Body $Body + } + + if ($Method -eq "DELETE" -and $Path -match "^/api/groups/([^/]+)/members/([^/]+)$") { + return Remove-GroupMemberEndpoint -GroupId $matches[1] -UserId $matches[2] + } + + if ($Method -eq "GET" -and $Path -match "^/api/apps/([^/]+)/details$") { + return Get-AppDetailsEndpoint -AppId $matches[1] + } + + if ($Method -eq "DELETE" -and $Path -match "^/api/apps/([^/]+)$") { + return Remove-AppEndpoint -AppId $matches[1] + } + + if ($Method -eq "PATCH" -and $Path -match "^/api/apps/([^/]+)$") { + return Update-AppEndpoint -AppId $matches[1] -Body $Body + } + + if ($Method -eq "DELETE" -and $Path -match "^/api/apps/([^/]+)/assignments/([^/]+)$") { + return Remove-AppAssignmentEndpoint -AppId $matches[1] -GroupId $matches[2] -Query $Query + } + + if ($Method -eq "POST" -and $Path -match "^/api/apps/([^/]+)/assignments$") { + return Add-AppAssignmentEndpoint -AppId $matches[1] -Body $Body + } + + if ($Method -eq "POST" -and $Path -match "^/api/apps/([^/]+)/content$") { + return Update-AppContentEndpoint -AppId $matches[1] -Body $Body + } + + if ($Method -eq "POST" -and $Path -eq "/api/pickfile") { + return Invoke-FilePickerEndpoint -Body $Body + } + + return $null +} + +# ============================================================ +# Status & Connection +# ============================================================ + +function Get-ConfigEndpoint { + return @{ + tenantId = $script:Config.TenantId + clientId = $script:Config.ClientId + scopes = $script:Config.Scopes + } +} + +# ============================================================ +# Settings: lesen / schreiben / zuruecksetzen +# ============================================================ + +function Get-SettingsEndpoint { + # cacheTag fuer das Logo: nutzt File-Mtime — so kann das Frontend den + # Browser-Cache zuverlaessig brechen, unabhaengig davon ob das Logo gerade + # erst hochgeladen oder die Seite frisch geladen wurde. + $logoCacheTag = $null + if ($script:Settings.branding -and $script:Settings.branding.logoFile) { + $logoPath = Join-Path (Get-BrandingDir) $script:Settings.branding.logoFile + if (Test-Path $logoPath -PathType Leaf) { + $logoCacheTag = [DateTimeOffset]::new((Get-Item $logoPath).LastWriteTimeUtc).ToUnixTimeSeconds() + } else { + # Datei verschwunden -> Setting zuruecksetzen damit das Frontend + # nicht versucht ein 404-Image zu rendern + $script:Settings.branding.logoFile = $null + } + } + + # Klon des Settings-Objekts mit branding.logoCacheTag — damit kein + # zusaetzlicher Outer-Key noetig ist und das Frontend einheitlich nur + # 'branding' liest. + $settings = $script:Settings | ConvertTo-Json -Depth 10 | ConvertFrom-Json + if (-not $settings.branding) { + $settings | Add-Member -NotePropertyName 'branding' -NotePropertyValue ([pscustomobject]@{ logoFile = $null; logoCacheTag = $null }) -Force + } else { + $settings.branding | Add-Member -NotePropertyName 'logoCacheTag' -NotePropertyValue $logoCacheTag -Force + } + return @{ settings = $settings; path = (Get-SettingsPath) } +} + +function Sync-ConfigFromSettings { + # $script:Config spiegelt die settings.connection-Werte. Wird nach jedem + # Save aufgerufen damit Connect-Aufrufe sofort die neuen IDs verwenden. + $script:Config.TenantId = $script:Settings.connection.tenantId + $script:Config.ClientId = $script:Settings.connection.clientId + $script:Config.ClientIdRo = $script:Settings.connection.clientIdRo + $script:Config.Scopes = @($script:Settings.connection.scopes) + $script:Config.ScopesRo = @($script:Settings.connection.scopesRo) +} + +function Save-SettingsEndpoint { + param($Body) + if (-not $Body) { + return @{ __status = 400; error = "Request-Body fehlt" } + } + + # Body kann hashtable (vom Router) oder pscustomobject sein -> normalisieren + $incoming = $Body + if ($incoming -is [hashtable]) { + $incoming = $incoming | ConvertTo-Json -Depth 10 | ConvertFrom-Json + } + + # Mit aktuellen Settings mergen, damit ueberspringbare Sub-Sektionen aus dem + # Frontend nichts ueberschreiben was nicht mitgeschickt wurde. + $merged = Merge-Settings -Base $script:Settings -Override $incoming + + $errs = Get-SettingsValidationErrors -S $merged + if ($errs.Count -gt 0) { + return @{ __status = 400; error = ($errs -join " | "); errors = $errs } + } + + # Vergleich altes vs. neues Setting — Cache nur leeren wo wirklich noetig. + $old = $script:Settings + + $connectionChanged = ( + $merged.connection.tenantId -ne $old.connection.tenantId -or + $merged.connection.clientId -ne $old.connection.clientId -or + (($merged.connection.scopes -join "|") -ne ($old.connection.scopes -join "|")) + ) + # Normalisierte Praefix-Listen vergleichen (deckt sowohl 'prefixes' als auch + # den alten Single-String 'prefix' ab; Reihenfolge ignoriert, Case ignoriert). + $deptOld = @(Get-DepartmentPrefixes -Settings $old) | Sort-Object -Property { $_.ToLowerInvariant() } + $deptNew = @(Get-DepartmentPrefixes -Settings $merged) | Sort-Object -Property { $_.ToLowerInvariant() } + $deptChanged = (($deptOld -join '|') -ne ($deptNew -join '|')) + $rpaChanged = (($merged.rpa.groupNames -join "|") -ne ($old.rpa.groupNames -join "|")) + $userSearchChanged = ( + (($merged.userSearch.fields -join "|") -ne ($old.userSearch.fields -join "|")) + ) + # requiredGroupNaming + theme + branding sind reine UI-/Workflow-Werte — + # die brechen keine Backend-Caches. + + $script:Settings = $merged + Sync-ConfigFromSettings + try { + Write-Settings -Settings $script:Settings + } catch { + return @{ __status = 500; error = "Speichern fehlgeschlagen: $($_.Exception.Message)" } + } + + if ($connectionChanged -and $script:State.Connected) { + Write-Host "[SETTINGS] Connection-Werte geaendert -> Disconnect" -ForegroundColor Yellow + try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null } catch {} + $script:State.Connected = $false + $script:State.Account = $null + $script:State.TenantId = $null + $script:State.ReadOnly = $false + # Bei neuem Tenant ist ALLES potentiell anders — alle Caches weg. + $script:State.Groups = @() + $script:State.RpaGroups = @() + $script:State.Apps = @() + $script:State.GroupMembers = @{} + } else { + # Selektiv: nur die Caches leeren, deren Quelle sich tatsaechlich + # geaendert hat. + if ($deptChanged) { $script:State.Groups = @() } + if ($rpaChanged) { $script:State.RpaGroups = @() } + } + + $changed = @{ + connection = [bool]$connectionChanged + departments = [bool]$deptChanged + rpa = [bool]$rpaChanged + userSearch = [bool]$userSearchChanged + # Diese muss das Frontend lokal anwenden, kein Backend-Cache-Reset noetig: + branding = (($merged.branding.logoFile) -ne ($old.branding.logoFile)) + theme = (($merged.theme.colors | ConvertTo-Json -Compress) -ne ($old.theme.colors | ConvertTo-Json -Compress)) + requiredGroupNaming = ($merged.requiredGroupNaming.prefix -ne $old.requiredGroupNaming.prefix -or $merged.requiredGroupNaming.suffix -ne $old.requiredGroupNaming.suffix) + } + + Write-Host ("[SETTINGS] geaendert: " + (($changed.GetEnumerator() | Where-Object { $_.Value }) | ForEach-Object { $_.Key } | Sort-Object) -join ', ') -ForegroundColor DarkGray + + return @{ + ok = $true + settings = $script:Settings + disconnected = [bool]$connectionChanged + changed = $changed + } +} + +function Reset-SettingsEndpoint { + $script:Settings = Get-DefaultSettings + Sync-ConfigFromSettings + try { + Write-Settings -Settings $script:Settings + } catch { + return @{ __status = 500; error = "Reset fehlgeschlagen: $($_.Exception.Message)" } + } + if ($script:State.Connected) { + try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null } catch {} + $script:State.Connected = $false + $script:State.Account = $null + $script:State.TenantId = $null + } + $script:State.Groups = @() + $script:State.RpaGroups = @() + $script:State.Apps = @() + $script:State.GroupMembers = @{} + return @{ ok = $true; settings = $script:Settings; disconnected = $true } +} + +function Test-SettingsEndpoint { + # Prueft die im Body uebergebenen (oder, falls leer, die aktuell gespeicherten) + # Settings gegen Microsoft Graph. Liefert pro Pruefung ok/Trefferzahl/Fehler. + # Aenderungen werden NICHT gespeichert — nur ein temporaerer Swap fuers Lookup. + param($Body) + + $err = Test-Connected + if ($err) { + return @{ + ok = $false + connection = @{ ok = $false; reason = "not_connected"; message = "Bitte zuerst per Connect-Button verbinden." } + } + } + + # Body normalisieren (Hashtable -> PSCustomObject) und mit aktuellen Settings mergen. + $incoming = $Body + if ($incoming -is [hashtable]) { + $incoming = $incoming | ConvertTo-Json -Depth 10 | ConvertFrom-Json + } + $effective = if ($incoming) { Merge-Settings -Base $script:Settings -Override $incoming } else { $script:Settings } + + # Settings nur fuer die Dauer des Tests umschalten — Search-GraphUser greift + # auf $script:Settings.userSearch.fields zu. Im finally garantiert zuruecksetzen. + $original = $script:Settings + $script:Settings = $effective + + $result = @{ + ok = $true + connection = @{ ok = $true; tenantId = $script:State.TenantId; account = $script:State.Account } + } + + try { + # 1) Abteilungs-Lookup pro konfiguriertem Praefix + $prefixes = @(Get-DepartmentPrefixes -Settings $effective) + if ($prefixes.Count -eq 0) { + $result.departments = @{ ok = $false; reason = "not_configured"; message = "Kein Abteilungs-Praefix gesetzt." } + } else { + $perPrefix = @() + $totalCount = 0 + $allOk = $true + foreach ($p in $prefixes) { + try { + $groups = @(Get-GraphGroupByFilter -Filter "startswith(displayName,'$p')" -Property @("id","displayName")) + $sample = @($groups | Select-Object -First 3 | ForEach-Object { if ($_.displayName) { $_.displayName } else { $_.displayname } }) + $perPrefix += @{ prefix = $p; ok = $true; count = $groups.Count; sample = $sample } + $totalCount += $groups.Count + } catch { + $perPrefix += @{ prefix = $p; ok = $false; error = $_.Exception.Message } + $allOk = $false + } + } + $result.departments = @{ + ok = $allOk + prefixes = $prefixes + totalCount = $totalCount + perPrefix = $perPrefix + } + } + + # 2) RPA-Gruppen-Lookup + $rpaNames = @($effective.rpa.groupNames | Where-Object { $_ -and $_.Trim() }) + if ($rpaNames.Count -eq 0) { + $result.rpa = @{ ok = $false; reason = "not_configured"; message = "Keine RPA-Gruppen konfiguriert." } + } else { + $found = @() + $missing = @() + foreach ($n in $rpaNames) { + try { + $g = @(Get-GraphGroupByFilter -Filter "displayName eq '$n'" -Property @("id","displayName")) + if ($g.Count -gt 0) { $found += $n } else { $missing += $n } + } catch { + $missing += $n + } + } + $result.rpa = @{ + ok = ($missing.Count -eq 0) + expected = $rpaNames.Count + found = $found + missing = $missing + } + } + + # 3) User-Such-Probe — sehr kurzer Sondierungs-Request + $fields = @($effective.userSearch.fields | Where-Object { $_ }) + if ($fields.Count -eq 0) { + $result.userSearch = @{ ok = $false; reason = "no_fields"; message = "Mindestens ein Such-Feld waehlen." } + } else { + try { + # Such-Term "a" -> trifft praktisch immer mind. einen User, schnell genug. + $hits = @(Search-GraphUser -SearchTerm "a") + $result.userSearch = @{ ok = $true; fields = $fields; sampleCount = [Math]::Min($hits.Count, 10) } + } catch { + $result.userSearch = @{ ok = $false; fields = $fields; error = $_.Exception.Message } + } + } + + # 4) Vendor-Match-Counts — pro konfiguriertem Vendor zaehlen wie viele + # gecachte Apps unter dessen Detection-Regel fallen. 0 Treffer = die + # Regel greift nicht (Hinweis im UI). + $vendorList = @($effective.vendors) + if ($vendorList.Count -eq 0) { + $result.vendors = @{ ok = $true; configured = 0; counts = @() } + } else { + $counts = @() + foreach ($v in $vendorList) { + $count = 0 + if ($script:State.Apps -and $script:State.Apps.Count -gt 0) { + $count = @($script:State.Apps | Where-Object { $_.Source -eq $v.displayName }).Count + } + $counts += [pscustomobject]@{ + id = $v.id + displayName = $v.displayName + count = $count + detection = "$($v.detection.field) $($v.detection.match) '$($v.detection.pattern)'" + } + } + $allZero = -not ($counts | Where-Object { $_.count -gt 0 }) + $result.vendors = @{ + ok = $true + configured = $vendorList.Count + counts = $counts + hint = if ($allZero -and $script:State.Apps.Count -eq 0) { "Apps wurden noch nicht geladen — Counts sind 0." } else { $null } + } + } + } finally { + $script:Settings = $original + } + + # Gesamt-OK = alle Sub-Checks ok (Vendors sind informativ, schlagen nicht fehl) + $result.ok = ($result.departments.ok -and $result.rpa.ok -and $result.userSearch.ok) + return $result +} + +# ============================================================ +# Branding: Logo hochladen / loeschen +# ============================================================ + +# Wo Logos landen — gleiches Verzeichnis wie intune.png/pmpc.png, ausgeliefert +# ueber die vorhandene /assets/-Route. +function Get-BrandingDir { + return Split-Path -Parent $script:Config.WebRoot +} + +# Branding-Logos haben einen festen Praefix, damit wir alte Versionen sauber +# loeschen koennen wenn die Extension wechselt. +$script:BrandingLogoPrefix = 'branding-logo' + +function Remove-BrandingLogoFiles { + $dir = Get-BrandingDir + Get-ChildItem -Path $dir -Filter "$($script:BrandingLogoPrefix).*" -File -ErrorAction SilentlyContinue | + ForEach-Object { Remove-Item -Path $_.FullName -Force -ErrorAction SilentlyContinue } +} + +function Save-LogoEndpoint { + param($Body) + if (-not $Body) { return @{ __status = 400; error = "Body fehlt" } } + + $mime = [string]$Body.mime + $dataBase64 = [string]$Body.dataBase64 + + if (-not $dataBase64) { return @{ __status = 400; error = "dataBase64 fehlt" } } + if ($mime -notmatch '^image/') { return @{ __status = 400; error = "Datei muss ein Bild sein (mime: $mime)" } } + + $ext = switch -Regex ($mime) { + 'png$' { 'png'; break } + 'jpe?g$' { 'jpg'; break } + 'svg' { 'svg'; break } + 'webp' { 'webp'; break } + 'gif' { 'gif'; break } + default { $null } + } + if (-not $ext) { return @{ __status = 400; error = "Bildformat nicht unterstuetzt: $mime" } } + + try { + $bytes = [Convert]::FromBase64String($dataBase64) + } catch { + return @{ __status = 400; error = "Base64 ungueltig: $($_.Exception.Message)" } + } + + $maxBytes = 2 * 1024 * 1024 # 2 MB + if ($bytes.Length -gt $maxBytes) { + return @{ __status = 413; error = "Logo zu gross ($([int]($bytes.Length / 1024)) KB, max. 2 MB)" } + } + if ($bytes.Length -lt 4) { + return @{ __status = 400; error = "Datei zu klein / leer" } + } + + $fileName = "$($script:BrandingLogoPrefix).$ext" + $dir = Get-BrandingDir + if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null } + + # Alte Logo-Varianten weg, dann neue Datei schreiben + Remove-BrandingLogoFiles + $target = Join-Path $dir $fileName + [IO.File]::WriteAllBytes($target, $bytes) + + if (-not $script:Settings.branding) { $script:Settings | Add-Member -NotePropertyName 'branding' -NotePropertyValue ([pscustomobject]@{}) -Force } + $script:Settings.branding.logoFile = $fileName + try { Write-Settings -Settings $script:Settings } catch { + return @{ __status = 500; error = "Settings-Speichern fehlgeschlagen: $($_.Exception.Message)" } + } + + Write-Host "[LOGO] Gespeichert: $target ($([int]($bytes.Length / 1024)) KB)" -ForegroundColor Green + $mtime = [DateTimeOffset]::new((Get-Item $target).LastWriteTimeUtc).ToUnixTimeSeconds() + return @{ + ok = $true + logoFile = $fileName + sizeKb = [int]($bytes.Length / 1024) + # Cache-Bust-Tag = File-Mtime, identisch zu dem was Get-Settings liefert. + cacheTag = $mtime + } +} + +function Remove-LogoEndpoint { + Remove-BrandingLogoFiles + if ($script:Settings.branding) { + $script:Settings.branding.logoFile = $null + } + try { Write-Settings -Settings $script:Settings } catch { + return @{ __status = 500; error = "Settings-Speichern fehlgeschlagen: $($_.Exception.Message)" } + } + Write-Host "[LOGO] Entfernt" -ForegroundColor DarkGray + return @{ ok = $true } +} + +function Invoke-ConnectWithTokenEndpoint { + param($Body) + try { Initialize-GraphModule } catch { + return @{ __status = 500; error = "Microsoft.Graph.Authentication fehlt: $($_.Exception.Message)" } + } + + $token = $Body.accessToken + if ([string]::IsNullOrWhiteSpace($token)) { + return @{ __status = 400; error = "accessToken fehlt im Body" } + } + + Write-Host "[CONNECT] Token-Login fuer Account: $($Body.account)" -ForegroundColor Cyan + + # Eventuell aktive Session beenden + try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null } catch {} + + try { + # Microsoft.Graph.Authentication v2+ erwartet SecureString + $secure = ConvertTo-SecureString $token -AsPlainText -Force + Connect-MgGraph -AccessToken $secure -NoWelcome -ErrorAction Stop | Out-Null + } catch { + # Fallback fuer aeltere Modul-Versionen die Plain-String akzeptieren + try { + Connect-MgGraph -AccessToken $token -NoWelcome -ErrorAction Stop | Out-Null + } catch { + $msg = $_.Exception.Message + Write-Host "[CONNECT] Token-Login fehlgeschlagen: $msg" -ForegroundColor Red + return @{ __status = 500; error = "Connect-MgGraph mit Token fehlgeschlagen: $msg" } + } + } + + $ctx = $null + try { $ctx = Get-MgContext } catch {} + if (-not $ctx -or -not $ctx.Account) { + return @{ __status = 500; error = "Kein Kontext nach Token-Login (ungueltiger oder abgelaufener Token?)" } + } + + $script:State.Connected = $true + $script:State.Account = $ctx.Account + $script:State.TenantId = $ctx.TenantId + Write-Host "[CONNECT] OK via Token - Account: $($ctx.Account), Tenant: $($ctx.TenantId)" -ForegroundColor Green + + return Get-StatusEndpoint +} + +function Get-StatusEndpoint { + $cs = $script:ConnectState + $connect = $null + if ($cs -and ($cs.Active -or $cs.Error) -and -not $script:State.Connected) { + $connect = @{ + active = [bool]$cs.Active + done = [bool]$cs.Done + error = $cs.Error + } + } + return @{ + connected = $script:State.Connected + account = $script:State.Account + tenantId = $script:State.TenantId + readOnly = [bool]$script:State.ReadOnly + groupsLoaded = $script:State.Groups.Count + rpaLoaded = $script:State.RpaGroups.Count + appsLoaded = $script:State.Apps.Count + sessionCount = $script:State.Session.Count + connect = $connect + } +} + +# ============================================================ +# Device-Code-Flow: Login direkt in der Website, ohne WAM, mit +# voller Account-Kontrolle. Laeuft in Background-Runspace, damit +# der HTTP-Listener waehrend des Logins nicht blockiert. +# ============================================================ + +function Get-DeviceCodeState { + if (-not $script:DeviceCodeState) { + $script:DeviceCodeState = [hashtable]::Synchronized(@{ + Active = $false + Code = $null + Url = $null + UrlComplete = $null + DeviceCode = $null + ExpiresAt = $null + Done = $false + Error = $null + Runspace = $null + PowerShell = $null + }) + } + return $script:DeviceCodeState +} + +function Start-DeviceCodeConnect { + try { Initialize-GraphModule } catch { + return @{ __status = 500; error = "Microsoft.Graph.Authentication fehlt: $($_.Exception.Message)" } + } + + $dc = Get-DeviceCodeState + + # Idempotenz: laufender Code wird wieder zurueckgegeben + if ($dc.Active -and -not $dc.Done -and $dc.Code) { + return @{ + code = $dc.Code + url = $dc.Url + urlComplete = $dc.UrlComplete + existing = $true + } + } + + # Vorherige Session aufraeumen + Stop-DeviceCodeConnect | Out-Null + try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null } catch {} + $script:State.Connected = $false + $script:State.Account = $null + + $tenantId = $script:Config.TenantId + $clientId = $script:Config.ClientId + $scopeStr = (($script:Config.Scopes | ForEach-Object { "https://graph.microsoft.com/$_" }) + 'offline_access') -join ' ' + + # 1) Device-Code direkt von Microsoft holen (synchron, schnell) + Write-Host "[CONNECT] Hole Device-Code von Microsoft..." -ForegroundColor DarkGray + try { + $body = @{ client_id = $clientId; scope = $scopeStr } + $resp = Invoke-RestMethod ` + -Method POST ` + -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/devicecode" ` + -Body $body ` + -ContentType 'application/x-www-form-urlencoded' ` + -ErrorAction Stop + } catch { + $msg = $_.Exception.Message + Write-Host "[CONNECT] Device-Code-Anforderung fehlgeschlagen: $msg" -ForegroundColor Red + return @{ __status = 500; error = "Device-Code anfordern fehlgeschlagen: $msg" } + } + + $dc.Active = $true + $dc.Code = $resp.user_code + $dc.Url = $resp.verification_uri + $dc.UrlComplete = if ($resp.verification_uri_complete) { $resp.verification_uri_complete } else { "$($resp.verification_uri)?otc=$($resp.user_code)" } + $dc.DeviceCode = $resp.device_code + $dc.ExpiresAt = (Get-Date).AddSeconds([int]$resp.expires_in) + $dc.Done = $false + $dc.Error = $null + + Write-Host "[CONNECT] Code: $($resp.user_code) - Url: $($dc.UrlComplete)" -ForegroundColor Cyan + + # 2) Hintergrund-Runspace pollt das Token-Endpoint + $iss = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault2() + $iss.ImportPSModule("Microsoft.Graph.Authentication") + $rs = [runspacefactory]::CreateRunspace($iss) + $rs.Open() + $rs.SessionStateProxy.SetVariable("DeviceCode", $dc) + $rs.SessionStateProxy.SetVariable("MainState", $script:State) + $rs.SessionStateProxy.SetVariable("PollTenantId", $tenantId) + $rs.SessionStateProxy.SetVariable("PollClientId", $clientId) + $rs.SessionStateProxy.SetVariable("PollInterval", [int]$resp.interval) + + $ps = [powershell]::Create() + $ps.Runspace = $rs + $null = $ps.AddScript({ + $tokenUri = "https://login.microsoftonline.com/$PollTenantId/oauth2/v2.0/token" + $body = @{ + grant_type = 'urn:ietf:params:oauth:grant-type:device_code' + client_id = $PollClientId + device_code = $DeviceCode.DeviceCode + } + + while (-not $DeviceCode.Done -and (Get-Date) -lt $DeviceCode.ExpiresAt) { + Start-Sleep -Seconds $PollInterval + if ($DeviceCode.Done) { return } # vom User abgebrochen + + try { + $tok = Invoke-RestMethod ` + -Method POST ` + -Uri $tokenUri ` + -Body $body ` + -ContentType 'application/x-www-form-urlencoded' ` + -ErrorAction Stop + + if ($tok.access_token) { + # Token bekommen, an Connect-MgGraph weiterreichen + try { + $secure = ConvertTo-SecureString $tok.access_token -AsPlainText -Force + Connect-MgGraph -AccessToken $secure -NoWelcome -ErrorAction Stop | Out-Null + } catch { + # Fallback fuer aeltere Modul-Versionen + Connect-MgGraph -AccessToken $tok.access_token -NoWelcome -ErrorAction Stop | Out-Null + } + $ctx = Get-MgContext + if ($ctx -and $ctx.Account) { + $MainState.Connected = $true + $MainState.Account = $ctx.Account + $MainState.TenantId = $ctx.TenantId + } else { + $DeviceCode.Error = "Token erhalten aber Get-MgContext leer" + } + $DeviceCode.Done = $true + $DeviceCode.Active = $false + return + } + } catch { + # Fehler-Body parsen (authorization_pending ist erwartet) + $errStr = "$($_.ErrorDetails.Message)" + if (-not $errStr) { $errStr = $_.Exception.Message } + + if ($errStr -match 'authorization_pending') { + continue # User hat noch nicht abgeschlossen, weiterpollen + } elseif ($errStr -match 'slow_down') { + Start-Sleep -Seconds 5 + continue + } elseif ($errStr -match 'authorization_declined') { + $DeviceCode.Error = 'Anmeldung wurde abgelehnt' + $DeviceCode.Done = $true + $DeviceCode.Active = $false + return + } elseif ($errStr -match 'expired_token') { + $DeviceCode.Error = 'Code ist abgelaufen - bitte neu starten' + $DeviceCode.Done = $true + $DeviceCode.Active = $false + return + } else { + # Versuche JSON-Body zu extrahieren + try { + $j = $errStr | ConvertFrom-Json + $DeviceCode.Error = "$($j.error): $($j.error_description)" + } catch { + $DeviceCode.Error = $errStr + } + $DeviceCode.Done = $true + $DeviceCode.Active = $false + return + } + } + } + + if (-not $MainState.Connected -and -not $DeviceCode.Error) { + $DeviceCode.Error = "Anmeldung abgelaufen (Code nicht eingegeben)" + } + $DeviceCode.Done = $true + $DeviceCode.Active = $false + }) + + $dc.PowerShell = $ps + $dc.Runspace = $rs + $null = $ps.BeginInvoke() + + return @{ + code = $dc.Code + url = $dc.Url + urlComplete = $dc.UrlComplete + expiresIn = [int]$resp.expires_in + existing = $false + } +} + +function Stop-DeviceCodeConnect { + $dc = Get-DeviceCodeState + if ($dc.PowerShell) { + try { $dc.PowerShell.Stop() } catch {} + try { $dc.PowerShell.Dispose() } catch {} + } + if ($dc.Runspace) { + try { $dc.Runspace.Close() } catch {} + try { $dc.Runspace.Dispose() } catch {} + } + $dc.PowerShell = $null + $dc.Runspace = $null + $dc.Active = $false + $dc.Code = $null + $dc.Url = $null + $dc.Done = $true + $dc.Error = $null + return @{ ok = $true } +} + +# ============================================================ +# Status-Endpoint kennt jetzt auch den Device-Code-Flow +# ============================================================ + +function Initialize-WinFocus { + if ('WinFocusHelper' -as [type]) { return } + Add-Type -TypeDefinition @' +using System; +using System.Runtime.InteropServices; +using System.Text; +public class WinFocusHelper { + [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); + [DllImport("user32.dll")] public static extern bool BringWindowToTop(IntPtr hWnd); + [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); + [DllImport("user32.dll")] public static extern bool AllowSetForegroundWindow(int dwProcessId); + [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); + [DllImport("user32.dll")] public static extern bool EnumWindows(EnumProc lpEnumFunc, IntPtr lParam); + [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); + [DllImport("user32.dll")] public static extern bool IsWindowVisible(IntPtr hWnd); + public delegate bool EnumProc(IntPtr hWnd, IntPtr lParam); + + public static IntPtr FindAuthWindow() { + IntPtr found = IntPtr.Zero; + string[] needles = new string[] { + "Anmelden", "Sign in", "Konto auswählen", "Pick an account", + "Authentifizierung", "Microsoft Account", "Microsoft Authentication" + }; + EnumWindows((hWnd, lParam) => { + if (!IsWindowVisible(hWnd)) return true; + StringBuilder sb = new StringBuilder(256); + GetWindowText(hWnd, sb, sb.Capacity); + string title = sb.ToString(); + if (string.IsNullOrEmpty(title)) return true; + foreach (var n in needles) { + if (title.IndexOf(n, StringComparison.OrdinalIgnoreCase) >= 0) { + found = hWnd; + return false; // stop enumerating + } + } + return true; + }, IntPtr.Zero); + return found; + } + + public static void BringToFront(IntPtr hWnd) { + if (hWnd == IntPtr.Zero) return; + ShowWindow(hWnd, 9); // SW_RESTORE + BringWindowToTop(hWnd); + SetForegroundWindow(hWnd); + } +} +'@ +} + +# Status fuer den asynchronen interaktiven Login +function Get-ConnectState { + if (-not $script:ConnectState) { + $script:ConnectState = [hashtable]::Synchronized(@{ + Active = $false + Done = $false + Error = $null + StartedAt = $null + Runspace = $null + PowerShell = $null + }) + } + return $script:ConnectState +} + +function Stop-ConnectFlow { + $cs = Get-ConnectState + if ($cs.PowerShell) { + try { $cs.PowerShell.Stop() } catch {} + try { $cs.PowerShell.Dispose() } catch {} + } + if ($cs.Runspace) { + try { $cs.Runspace.Close() } catch {} + try { $cs.Runspace.Dispose() } catch {} + } + $cs.PowerShell = $null + $cs.Runspace = $null + $cs.Active = $false +} + +function Invoke-ConnectEndpoint { + try { + Initialize-GraphModule | Out-Null + + Write-Host "[CONNECT] Verbinde mit Microsoft Graph..." -ForegroundColor Cyan + + # Parallel-Runspace, der das WAM-Account-Picker-Fenster sucht und + # nach vorne bringt — sonst landet es hinter anderen Fenstern und + # der User sieht nichts, was er bestaetigen koennte. + $bringToFront = $null + try { + Initialize-WinFocus + $iss = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault2() + $rs = [runspacefactory]::CreateRunspace($iss) + $rs.Open() + $bringToFront = [powershell]::Create() + $bringToFront.Runspace = $rs + $null = $bringToFront.AddScript({ + Add-Type -TypeDefinition @' +using System; +using System.Runtime.InteropServices; +using System.Text; +public class WinFocusHelper2 { + [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); + [DllImport("user32.dll")] public static extern bool BringWindowToTop(IntPtr hWnd); + [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); + [DllImport("user32.dll")] public static extern bool EnumWindows(EnumProc lpEnumFunc, IntPtr lParam); + [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); + [DllImport("user32.dll")] public static extern bool IsWindowVisible(IntPtr hWnd); + public delegate bool EnumProc(IntPtr hWnd, IntPtr lParam); +} +'@ -ErrorAction SilentlyContinue + $deadline = (Get-Date).AddSeconds(30) + while ((Get-Date) -lt $deadline) { + $found = [IntPtr]::Zero + [WinFocusHelper2]::EnumWindows({ + param($hWnd, $lParam) + if (-not [WinFocusHelper2]::IsWindowVisible($hWnd)) { return $true } + $sb = New-Object System.Text.StringBuilder 256 + [void][WinFocusHelper2]::GetWindowText($hWnd, $sb, $sb.Capacity) + $t = $sb.ToString() + if ([string]::IsNullOrEmpty($t)) { return $true } + foreach ($n in @('Anmelden','Sign in','Konto','Pick an account','Authentifizierung','Microsoft Account','Microsoft Authentication')) { + if ($t.IndexOf($n, [StringComparison]::OrdinalIgnoreCase) -ge 0) { + $script:found = $hWnd + return $false + } + } + return $true + }, [IntPtr]::Zero) | Out-Null + if ($script:found -ne [IntPtr]::Zero) { + [WinFocusHelper2]::ShowWindow($script:found, 9) | Out-Null # SW_RESTORE + [WinFocusHelper2]::BringWindowToTop($script:found) | Out-Null + [WinFocusHelper2]::SetForegroundWindow($script:found) | Out-Null + Start-Sleep -Milliseconds 800 + } + Start-Sleep -Milliseconds 400 + } + }) + $null = $bringToFront.BeginInvoke() + } catch { + Write-Host "[CONNECT] WAM-Focus-Helper konnte nicht gestartet werden: $($_.Exception.Message)" -ForegroundColor DarkYellow + } + + # Erst Read/Write-App probieren, dann (falls konfiguriert) Read-Only-App. + $clientIdRw = $script:Config.ClientId + $clientIdRo = $script:Config.ClientIdRo + $useRo = $false + $connectErr = $null + + try { + Connect-MgGraph ` + -TenantId $script:Config.TenantId ` + -ClientId $clientIdRw ` + -Scopes $script:Config.Scopes ` + -NoWelcome -ErrorAction Stop + } catch { + $connectErr = $_.Exception.Message + Write-Host "[CONNECT] RW-App fehlgeschlagen ($connectErr)" -ForegroundColor Yellow + if ($clientIdRo -and $clientIdRo.Trim()) { + Write-Host "[CONNECT] Versuche Read-Only-App..." -ForegroundColor Cyan + try { + Connect-MgGraph ` + -TenantId $script:Config.TenantId ` + -ClientId $clientIdRo ` + -Scopes $script:Config.ScopesRo ` + -NoWelcome -ErrorAction Stop + $useRo = $true + $connectErr = $null + } catch { + $connectErr = $_.Exception.Message + } + } + } + + # Helper-Runspace aufraeumen + if ($bringToFront) { + try { $bringToFront.Stop() } catch {} + try { $bringToFront.Dispose() } catch {} + } + + if ($connectErr) { + Write-Host "[CONNECT] Beide App-IDs fehlgeschlagen: $connectErr" -ForegroundColor Red + return @{ __status = 401; error = "Anmeldung fehlgeschlagen: $connectErr" } + } + + $context = Get-MgContext + if ($context) { + $script:State.Connected = $true + $script:State.Account = $context.Account + $script:State.TenantId = $context.TenantId + $script:State.ReadOnly = $useRo + Write-Host "[CONNECT] Verbunden als: $($context.Account) ($(if ($useRo) { 'Read-Only' } else { 'Read/Write' }))" -ForegroundColor Green + return Get-StatusEndpoint + } + Write-Host "[CONNECT] Kein Context nach Connect-MgGraph" -ForegroundColor Red + return @{ __status = 401; error = "Anmeldung fehlgeschlagen — kein Context" } + } catch { + Write-Host "[CONNECT] Fehler: $_" -ForegroundColor Red + return @{ __status = 500; error = "Fehler beim Verbinden: $($_.Exception.Message)" } + } +} + +function Invoke-DisconnectEndpoint { + try { Disconnect-MgGraph | Out-Null } catch {} + $script:State.Connected = $false + $script:State.Account = $null + $script:State.TenantId = $null + $script:State.ReadOnly = $false + $script:State.Groups = @() + $script:State.RpaGroups = @() + $script:State.Apps = @() + $script:State.Session = @() + $script:State.GroupMembers = @{} + return Get-StatusEndpoint +} + +function Test-Connected { + if (-not $script:State.Connected) { + return @{ __status = 401; error = "Nicht mit Microsoft Graph verbunden" } + } + return $null +} + +function Get-AppCategoryNames { + # Extrahiert die Kategorie-Namen aus dem rohen Graph-Categories-Feld. + # Robust gegen alle Source-Types die MgGraph/Invoke-MgGraphRequest in + # PS 5.1 + PS 7 liefern kann (PSCustomObject, Hashtable, generische + # Dictionary, Array von Strings, Skalar). Loggt im Server-Console wenn + # Items leer durchrutschen — dann sehen wir live was schief geht. + param($RawCategories, [string]$AppId) + + # Wichtig: IMMER ein Array zurueckgeben (auch leer), nicht $null. + # @() wrap am Aufruf-Site reicht in PS5.1 oft nicht — explizite Liste. + $names = [System.Collections.Generic.List[string]]::new() + + if ($null -eq $RawCategories) { return ,$names.ToArray() } + + $items = @($RawCategories) + if ($items.Count -eq 0) { return ,$names.ToArray() } + + $typeNames = ($items | ForEach-Object { if ($null -eq $_) { 'null' } else { $_.GetType().Name } }) -join ', ' + Write-Host " [CATS] ${AppId}: $($items.Count) Roh-Items, Types: $typeNames" -ForegroundColor DarkGray + + foreach ($cat in $items) { + if ($null -eq $cat) { continue } + if ($cat -is [string]) { + if ($cat) { $names.Add($cat) } + continue + } + + $n = $null + + # Direkt-Dot-Access (PSCustomObject + PS-7-Hashtable + Dictionary) + try { if ($cat.displayName) { $n = [string]$cat.displayName } } catch {} + if (-not $n) { try { if ($cat.DisplayName) { $n = [string]$cat.DisplayName } } catch {} } + + # Hashtable-Indexer (PS 5.1 Hashtable) + if (-not $n) { + try { + if ($cat -is [System.Collections.IDictionary]) { + foreach ($k in 'displayName','DisplayName','name','Name') { + if ($cat.Contains($k) -and $cat[$k]) { $n = [string]$cat[$k]; break } + } + } + } catch {} + } + + # Letzter Versuch: JSON-Roundtrip + if (-not $n) { + try { + $obj = $cat | ConvertTo-Json -Depth 3 -Compress | ConvertFrom-Json + foreach ($k in 'displayName','DisplayName','name','Name') { + try { if ($obj.$k) { $n = [string]$obj.$k; break } } catch {} + } + } catch {} + } + + if ($n) { + $names.Add($n) + } else { + $dump = $null + try { $dump = $cat | ConvertTo-Json -Depth 2 -Compress } catch { $dump = $cat.GetType().FullName } + Write-Host " [CATS] ${AppId}: konnte Name nicht extrahieren aus: $dump" -ForegroundColor Yellow + } + } + + # Komma vor $names.ToArray() forciert dass PowerShell IMMER ein Array + # zurueckgibt — auch bei genau 1 Element (sonst Skalar = JSON-Fehler). + return ,$names.ToArray() +} + +function Find-VendorBySource { + # Liefert den Vendor-Eintrag aus Settings, dessen displayName mit dem + # Source-String einer App uebereinstimmt. $null wenn nichts passt + # (z.B. Source = "Intune"). + param([string]$Source) + if (-not $Source -or $Source -eq 'Intune') { return $null } + if (-not $script:Settings.vendors) { return $null } + return @($script:Settings.vendors | Where-Object { $_.displayName -eq $Source } | Select-Object -First 1)[0] +} + +# ============================================================ +# Gruppen +# ============================================================ + +function Get-GroupsEndpoint { + param($Query) + $err = Test-Connected + if ($err) { return $err } + + # Query-Override hat Vorrang (Debug-Pfad); sonst alle konfigurierten Praefixe. + if ($Query.prefix) { + $prefixes = @([string]$Query.prefix) + } else { + $prefixes = @(Get-DepartmentPrefixes -Settings $script:Settings) + } + if ($prefixes.Count -eq 0) { + return @{ + __status = 412 + error = "Abteilungs-Praefix(e) nicht konfiguriert. Bitte unter Einstellungen -> Abteilungs-Gruppen setzen." + code = "SettingsRequired" + setting = "departments.prefixes" + } + } + # OR-verketteter Graph-$filter: alle Praefixe in einem Listen-Request laden. + # Graph erlaubt mehrfache startswith-Klauseln per 'or'. + $parts = @($prefixes | ForEach-Object { "startswith(displayName,'$($_)')" }) + $filter = $parts -join " or " + $raw = Get-GraphGroupByFilter -Filter $filter -Property @("id","displayName") -ExpandMembers + + $items = @() + foreach ($g in $raw) { + $id = if ($g.id) { $g.id } else { $g.Id } + $name = if ($g.displayName) { $g.displayName } else { $g.displayname } + $members = if ($null -ne $g.members) { $g.members } else { $g.Members } + $hasMembers = ($members -is [array] -and $members.Count -gt 0) -or ($null -ne $members -and -not ($members -is [array])) + if ($id) { + $items += [pscustomobject]@{ + Id = [string]$id + DisplayName = [string]$name + HasMembers = [bool]$hasMembers + } + } + } + # Alphabetisch sortieren + $items = @($items | Sort-Object -Property DisplayName -Culture de-DE) + $script:State.Groups = $items + return @{ items = $items; count = $items.Count } +} + +function Get-RpaGroupsEndpoint { + $err = Test-Connected + if ($err) { return $err } + + $rpaNames = @($script:Settings.rpa.groupNames | Where-Object { $_ }) + if ($rpaNames.Count -eq 0) { + # Settings leer -> ehrlich melden, das Frontend zeigt einen Konfig-Hinweis. + return @{ items = @(); count = 0; notConfigured = $true } + } + $items = @() + foreach ($n in $rpaNames) { + try { + # WICHTIG: @() wrappen — sonst entwickelt PowerShell ein Single-Item- + # Resultat zu einem Skalar und $g[0] indexiert in Properties statt Array. + $g = @(Get-GraphGroupByFilter -Filter "displayName eq '$n'" -Property @("id","displayName") -ExpandMembers) + if ($g.Count -gt 0) { + $first = $g[0] + # Defensiv beide Casings abfragen, da $select je nach Modul-Version unterschiedlich casing zurueckgibt + $name = if ($first.displayName) { $first.displayName } elseif ($first.displayname) { $first.displayname } else { $n } + $id = if ($first.id) { $first.id } elseif ($first.Id) { $first.Id } else { $null } + $members = if ($null -ne $first.members) { $first.members } else { $first.Members } + $hasMembers = ($members -is [array] -and $members.Count -gt 0) -or ($null -ne $members -and -not ($members -is [array])) + if ($id) { + $items += [pscustomobject]@{ Id = [string]$id; DisplayName = [string]$name; HasMembers = [bool]$hasMembers } + Write-Host " RPA: $name ($id) members=$hasMembers" -ForegroundColor DarkGray + } + } else { + Write-Host " RPA-Gruppe nicht gefunden: $n" -ForegroundColor Yellow + } + } catch { + Write-Host " RPA-Gruppe-Lookup-Fehler ($n): $($_.Exception.Message)" -ForegroundColor Yellow + } + } + $script:State.RpaGroups = $items + return @{ items = $items; count = $items.Count } +} + +function Test-GroupNameEndpoint { + param($Body) + $err = Test-Connected + if ($err) { return $err } + $name = $Body.displayName + $existing = Get-GraphGroupByFilter -Filter "displayName eq '$name'" -Property @("id","displayName") + return @{ + exists = ($existing -and @($existing).Count -gt 0) + displayName = $name + } +} + +function New-GroupEndpoint { + param($Body) + $err = Test-Connected + if ($err) { return $err } + + $appName = $Body.appName + $customName = $Body.customName # optional - falls null wird automatischer Name verwendet + + # Intent steuert Naming + Zuweisung. Default "required" fuer Backwards-Compat. + $intent = if ($Body.intent) { ([string]$Body.intent).ToLower() } else { "required" } + if ($intent -notin @("required","available")) { + return @{ __status = 400; error = "Intent muss 'required' oder 'available' sein" } + } + + $namingObj = if ($intent -eq "available") { $script:Settings.availableGroupNaming } else { $script:Settings.requiredGroupNaming } + $defaultSuffix = if ($intent -eq "available") { "-available" } else { "-required" } + $namingPrefix = if ($namingObj -and $namingObj.prefix) { $namingObj.prefix } else { "intune-win-app-" } + $namingSuffix = if ($namingObj -and $namingObj.suffix) { $namingObj.suffix } else { $defaultSuffix } + + $cleaned = if ($customName) { Format-GroupNameSlug -Name $customName } else { Format-GroupNameSlug -Name $appName } + $displayName = "$namingPrefix$cleaned$namingSuffix".ToLower() + $mailNickname = $displayName + + # check duplikat + $existing = Get-GraphGroupByFilter -Filter "displayName eq '$displayName'" -Property @("id","displayName") + if ($existing -and @($existing).Count -gt 0) { + return @{ __status = 409; error = "Gruppe existiert bereits"; displayName = $displayName } + } + + $group = New-GraphSecurityGroup -DisplayName $displayName -MailNickname $mailNickname + + $assigned = $false + if ($Body.assignToApp -eq $true -and $Body.appId) { + try { + Add-GraphAppAssignment -AppId $Body.appId -Intent $intent -GroupId $group.id + $assigned = $true + } catch { + Write-Host "Auto-Assign fehlgeschlagen: $_" -ForegroundColor Yellow + } + } + + return @{ + id = $group.id + displayName = $group.displayName + intent = $intent + assigned = $assigned + } +} + +function Format-GroupNameSlug { + param([string]$Name) + $clean = $Name -replace '[^a-zA-Z0-9-]', '-' + $clean = $clean -replace '-+', '-' + $clean = $clean.Trim('-') + return $clean.ToLower() +} + +function Get-GroupMembersEndpoint { + param([string]$GroupId) + $err = Test-Connected + if ($err) { return $err } + $members = Get-GraphGroupMembersTransitive -GroupId $GroupId + $items = @() + foreach ($m in $members) { + $items += [pscustomobject]@{ + Id = $m.id + DisplayName = $m.displayName + UserPrincipalName = $m.userPrincipalName + } + } + return @{ items = $items; count = $items.Count } +} + +function Add-GroupMembersEndpoint { + param([string]$GroupId, $Body) + $err = Test-Connected + if ($err) { return $err } + + if ([string]::IsNullOrWhiteSpace($GroupId)) { + return @{ __status = 400; error = "GroupId fehlt" } + } + if (-not $Body) { + return @{ __status = 400; error = "Request-Body fehlt" } + } + + $ids = @() + if ($Body.userIds) { + $ids = @($Body.userIds | ForEach-Object { [string]$_ } | Where-Object { $_ }) + } elseif ($Body.userId) { + $ids = @([string]$Body.userId) + } + if ($ids.Count -eq 0) { + return @{ __status = 400; error = "userId oder userIds fehlt im Body" } + } + + $success = 0; $errors = 0 + $results = @() + foreach ($uid in $ids) { + try { + Add-GraphMember -GroupId $GroupId -DirectoryObjectId $uid + $success++ + $results += @{ userId = $uid; status = "Success" } + Write-Host " [ADD MEMBER] GroupId=$GroupId UserId=$uid OK" -ForegroundColor Green + } catch { + $details = Get-GraphErrorFriendly -ErrorRecord $_ + if ($details.IsWarning) { + $success++ + $results += @{ userId = $uid; status = "AlreadyMember"; message = $details.Friendly } + Write-Host " [ADD MEMBER] $uid bereits Mitglied in $GroupId" -ForegroundColor DarkGreen + } else { + $errors++ + $results += @{ userId = $uid; status = "Error"; code = $details.Code; message = $details.Friendly } + Write-Host " [ADD MEMBER] FAIL $uid -> $GroupId [$($details.Code)] $($details.Friendly)" -ForegroundColor Red + } + } + } + + if ($script:State.GroupMembers.ContainsKey($GroupId)) { + $script:State.GroupMembers.Remove($GroupId) + } + + return @{ + ok = ($errors -eq 0) + success = [int]$success + errors = [int]$errors + total = [int]$ids.Count + results = $results + } +} + +function Resolve-UpnsEndpoint { + # Loest eine Liste von UPNs/E-Mails per Graph auf und gibt userId + DisplayName zurueck. + # Nutzt $batch (20 pro Call) fuer Geschwindigkeit. + param($Body) + $err = Test-Connected + if ($err) { return $err } + + $upns = @($Body.upns | ForEach-Object { [string]$_.Trim() } | Where-Object { $_ -ne '' }) + if ($upns.Count -eq 0) { return @{ __status = 400; error = "upns fehlt oder leer" } } + + Write-Host "[IMPORT] Loese $($upns.Count) UPNs auf..." -ForegroundColor DarkCyan + + $batchSize = 20 + $resolved = [System.Collections.Generic.List[object]]::new() + + for ($i = 0; $i -lt $upns.Count; $i += $batchSize) { + $chunk = $upns[$i .. [Math]::Min($i + $batchSize - 1, $upns.Count - 1)] + $requests = @($chunk | ForEach-Object -Begin { $idx = $i } { + $upn = $_ + $enc = [Uri]::EscapeDataString("userPrincipalName eq '$upn' or mail eq '$upn'") + $idx++ + @{ id = [string]($idx - 1); method = 'GET'; url = "/users?`$filter=$enc&`$select=id,displayName,userPrincipalName,mail&`$top=1" } + }) + $body = @{ requests = $requests } | ConvertTo-Json -Depth 5 -Compress + try { + $resp = Invoke-MgGraphRequestRetry -Uri 'https://graph.microsoft.com/beta/$batch' -Method POST -Body $body -ContentType 'application/json' + $respMap = @{} + foreach ($r in @($resp.responses)) { $respMap[[string]$r.id] = $r } + + for ($j = 0; $j -lt $chunk.Count; $j++) { + $upn = $chunk[$j] + $rid = [string]($i + $j) + $r = $respMap[$rid] + if ($r -and [int]$r.status -eq 200 -and @($r.body.value).Count -gt 0) { + $u = $r.body.value[0] + $resolved.Add([pscustomobject]@{ + Upn = $upn + UserId = [string]$u.id + DisplayName = [string]$u.displayName + Mail = [string]$u.mail + Found = $true + }) + } else { + $resolved.Add([pscustomobject]@{ Upn = $upn; UserId = ''; DisplayName = ''; Mail = ''; Found = $false }) + } + } + } catch { + Write-Host " [IMPORT] Batch-Fehler: $($_.Exception.Message)" -ForegroundColor DarkYellow + foreach ($upn in $chunk) { + $resolved.Add([pscustomobject]@{ Upn = $upn; UserId = ''; DisplayName = ''; Mail = ''; Found = $false }) + } + } + } + + $found = @($resolved | Where-Object { $_.Found }) + $notFound = @($resolved | Where-Object { -not $_.Found }) + Write-Host " -> $($found.Count) gefunden, $($notFound.Count) nicht gefunden" -ForegroundColor DarkGray + return @{ items = @($resolved); found = $found.Count; notFound = $notFound.Count } +} + +function Remove-GroupMemberEndpoint { + param([string]$GroupId, [string]$UserId) + $err = Test-Connected + if ($err) { return $err } + + if ([string]::IsNullOrWhiteSpace($GroupId) -or [string]::IsNullOrWhiteSpace($UserId)) { + return @{ __status = 400; error = "GroupId und UserId erforderlich" } + } + + try { + $null = Invoke-MgGraphRequest ` + -Uri "https://graph.microsoft.com/v1.0/groups/$GroupId/members/$UserId/`$ref" ` + -Method DELETE + Write-Host " [REMOVE MEMBER] GroupId=$GroupId UserId=$UserId OK" -ForegroundColor Green + } catch { + $details = Get-GraphErrorFriendly -ErrorRecord $_ + $status = if ($details.Code -like '*404*') { 404 } elseif ($details.Code -like '*403*') { 403 } else { 500 } + Write-Host " [REMOVE MEMBER] FAIL [$($details.Code)] $($details.Friendly)" -ForegroundColor Red + return @{ __status = $status; error = $details.Friendly; code = $details.Code } + } + + if ($script:State.GroupMembers.ContainsKey($GroupId)) { + $script:State.GroupMembers.Remove($GroupId) + } + + return @{ ok = $true; groupId = $GroupId; userId = $UserId } +} + +function Search-GroupsEndpoint { + param($Query) + $err = Test-Connected + if ($err) { return $err } + + $term = [string]$Query.q + if ([string]::IsNullOrWhiteSpace($term) -or $term.Length -lt 2) { + return @{ items = @(); count = 0 } + } + + $sw = [System.Diagnostics.Stopwatch]::StartNew() + $raw = @(Search-GraphGroups -SearchTerm $term -Top 50) + $sw.Stop() + Write-Host " [GSEARCH] '$term': $($raw.Count) Treffer in $($sw.ElapsedMilliseconds)ms" -ForegroundColor DarkGray + + $items = @() + foreach ($g in $raw) { + $id = if ($g.id) { $g.id } else { $g.Id } + $name = if ($g.displayName) { $g.displayName } else { $g.displayname } + if ($id) { + $items += [pscustomobject]@{ + Id = [string]$id + DisplayName = [string]$name + Description = [string]$g.description + } + } + } + return @{ items = $items; count = $items.Count } +} + +function Get-GroupMembersExportEndpoint { + # Loest alle Benutzer einer Gruppe auf, einschliesslich Mitglieder aus + # verschachtelten Unter-Gruppen. Gibt die flache, deduplizierte Benutzer- + # liste mit SourcePath-Angabe zurueck — das Frontend erzeugt daraus den CSV. + param([string]$GroupId) + $err = Test-Connected + if ($err) { return $err } + + if ([string]::IsNullOrWhiteSpace($GroupId)) { + return @{ __status = 400; error = "GroupId fehlt" } + } + + $groupName = $GroupId + try { + $g = Get-GraphGroupById -Id $GroupId -Property @("id","displayName") + if ($g.displayName) { $groupName = [string]$g.displayName } + } catch { + return @{ __status = 404; error = "Gruppe nicht gefunden: $($_.Exception.Message)" } + } + + Write-Host "[EXPORT] Starte Aufloesung: '$groupName' ($GroupId)" -ForegroundColor Cyan + $sw = [System.Diagnostics.Stopwatch]::StartNew() + + $allUsers = @(Resolve-GroupMembersWithNesting -GroupId $GroupId -GroupName $groupName) + + # Deduplizieren: erster Treffer (= direktes Mitglied) gewinnt + $seen = @{} + $unique = [System.Collections.Generic.List[object]]::new() + $dups = 0 + foreach ($u in $allUsers) { + if (-not $seen.ContainsKey($u.Id)) { + $seen[$u.Id] = $true + $unique.Add($u) + } else { + $dups++ + } + } + + $sw.Stop() + Write-Host " -> $($unique.Count) eindeutige Benutzer, $dups Duplikate, $($sw.ElapsedMilliseconds)ms" -ForegroundColor Green + + return @{ + groupId = $GroupId + groupName = $groupName + users = $unique.ToArray() + count = $unique.Count + duplicates = $dups + resolvedMs = [int]$sw.ElapsedMilliseconds + } +} + +# ============================================================ +# Users +# ============================================================ + +function Search-UsersEndpoint { + param($Query) + $err = Test-Connected + if ($err) { return $err } + $term = $Query.q + if ([string]::IsNullOrWhiteSpace($term) -or $term.Length -lt 2) { + return @{ items = @(); count = 0 } + } + $raw = Search-GraphUser -SearchTerm $term + $items = @() + foreach ($u in $raw) { + $items += [pscustomobject]@{ + Id = $u.id + DisplayName = $u.displayName + UserPrincipalName = $u.userPrincipalName + Mail = $u.mail + Department = $u.department + } + } + return @{ items = $items; count = $items.Count } +} + +# ============================================================ +# Apps +# ============================================================ + +function Get-AppsEndpoint { + param($Query) + $err = Test-Connected + if ($err) { return $err } + + if (-not $Query) { $Query = @{} } + $forceRefresh = ($Query.refresh -eq "true") + + if (-not $forceRefresh -and $script:State.Apps.Count -gt 0) { + return @{ items = $script:State.Apps; count = $script:State.Apps.Count; cached = $true } + } + + $sw = [System.Diagnostics.Stopwatch]::StartNew() + Write-Host "Lade Apps aus Intune..." -ForegroundColor Cyan + $raw = Get-GraphMobileApps -WithAssignments + Write-Host " -> $($raw.Count) Apps gesamt vor Filter ($([int]$sw.Elapsed.TotalSeconds)s)" -ForegroundColor DarkGray + + # Eindeutige Gruppen-IDs aus allen Zuweisungen sammeln + $groupIds = @{} + foreach ($app in $raw) { + foreach ($a in @($app.assignments)) { + $tgt = $a.target + if ($tgt.'@odata.type' -eq '#microsoft.graph.groupAssignmentTarget' -and $tgt.groupId) { + $groupIds[$tgt.groupId] = $true + } + } + } + Write-Host " -> $($groupIds.Count) eindeutige Gruppen referenziert" -ForegroundColor DarkGray + + # Lookup mit bereits bekannten Namen vorbefuellen + $lookup = @{} + foreach ($g in $script:State.Groups) { $lookup[$g.Id] = $g.DisplayName } + foreach ($g in $script:State.RpaGroups) { $lookup[$g.Id] = $g.DisplayName } + + # Unbekannte IDs in Batches per directoryObjects/getByIds aufloesen (1 Request fuer 1000 IDs statt 1000 Requests) + $unknown = [string[]]@($groupIds.Keys | ForEach-Object { [string]$_ } | Where-Object { $_ -and -not $lookup.ContainsKey($_) }) + if ($unknown.Count -gt 0) { + Write-Host " -> Loese $($unknown.Count) Gruppen-Namen via getByIds auf..." -ForegroundColor DarkGray + $sw2 = [System.Diagnostics.Stopwatch]::StartNew() + Resolve-GroupNamesBulk -Ids $unknown -Lookup $lookup + $sw2.Stop() + Write-Host " -> Aufloesung in $([int]$sw2.Elapsed.TotalSeconds)s erledigt" -ForegroundColor DarkGray + } + + $items = @() + foreach ($app in $raw) { + if (-not (Test-AppTypeAllowed -Type $app.'@odata.type')) { continue } + $items += Format-AppForFrontend -RawApp $app -AllGroupsLookup $lookup + } + $sw.Stop() + Write-Host " -> $($items.Count) Apps nach Filter ($([int]$sw.Elapsed.TotalSeconds)s gesamt)" -ForegroundColor Green + + $script:State.Apps = $items + return @{ items = $items; count = $items.Count; cached = $false } +} + +function Get-AppCategoriesEndpoint { + # Liefert eine Map appId -> [KategorieNamen] fuer alle gecachten Apps. + # Wird vom Frontend NACH dem App-Laden im Hintergrund geholt (blockiert + # das App-Laden nicht). Throttle-sicher per $batch. + $err = Test-Connected + if ($err) { return $err } + $ids = @($script:State.Apps | ForEach-Object { [string]$_.AppId } | Where-Object { $_ }) + if ($ids.Count -eq 0) { return @{ map = @{}; count = 0 } } + $sw = [System.Diagnostics.Stopwatch]::StartNew() + Write-Host "[CATS] Lade Kategorien fuer $($ids.Count) Apps via batch..." -ForegroundColor DarkCyan + $map = Get-GraphMobileAppCategoriesBatch -AppIds $ids + $sw.Stop() + # Cache mitfuehren, damit Filter auch ohne erneuten Call konsistent ist + foreach ($a in $script:State.Apps) { + if ($map.ContainsKey($a.AppId)) { $a.Categories = @($map[$a.AppId]) } + } + Write-Host " -> Kategorien fuer $($map.Keys.Count) Apps in $([int]$sw.Elapsed.TotalSeconds)s" -ForegroundColor DarkGray + return @{ map = $map; count = $map.Keys.Count } +} + +function Get-AppInstallReportEndpoint { + # Faellt zurueck auf deviceStatuses pro App (via $batch), da installSummary + # und getAppInstallSummaryReport DeviceManagementManagedDevices.Read.All + # benoetigen (fehlt in dieser App-Registration -> 400). + $err = Test-Connected + if ($err) { return $err } + + Write-Host "[REPORT] Lade Apps fuer Report..." -ForegroundColor DarkCyan + $rawApps = @(Get-GraphMobileApps) + if ($rawApps.Count -eq 0) { return @{ items = @(); count = 0 } } + + Write-Host "[REPORT] Zaehle Installationsstatus fuer $($rawApps.Count) Apps via deviceStatuses..." -ForegroundColor DarkCyan + $sw = [System.Diagnostics.Stopwatch]::StartNew() + + $batchSize = 20 + # appId -> hashtable mit Zaehler + $counts = @{} + foreach ($a in $rawApps) { $counts[[string]$a.id] = @{ ok=0; fail=0; pending=0; notInst=0; notAppl=0 } } + + $firstBatch = $true + for ($i = 0; $i -lt $rawApps.Count; $i += $batchSize) { + $chunk = $rawApps[$i .. [Math]::Min($i + $batchSize - 1, $rawApps.Count - 1)] + $requests = @($chunk | ForEach-Object { + $aid = [string]$_.id + @{ id = $aid; method = 'GET'; url = "/deviceAppManagement/mobileApps/$aid/deviceStatuses?`$select=installState&`$top=999" } + }) + $body = @{ requests = $requests } | ConvertTo-Json -Depth 5 -Compress + try { + $resp = Invoke-MgGraphRequestRetry -Uri 'https://graph.microsoft.com/beta/$batch' -Method POST -Body $body -ContentType 'application/json' + foreach ($r in @($resp.responses)) { + $status = [int]$r.status + if ($status -eq 200) { + $aid = [string]$r.id + foreach ($ds in @($r.body.value)) { + switch ([string]$ds.installState) { + 'installed' { $counts[$aid].ok++ } + 'failed' { $counts[$aid].fail++ } + 'pendingInstall' { $counts[$aid].pending++ } + 'notInstalled' { $counts[$aid].notInst++ } + 'notApplicable' { $counts[$aid].notAppl++ } + } + } + } + } + if ($firstBatch) { + $f = $resp.responses[0] + Write-Host " [DEBUG] r[0]: status=$($f.status), value.count=$(@($f.body.value).Count)" -ForegroundColor Magenta + $firstBatch = $false + } + } catch { + Write-Host " [REPORT] Batch-Fehler: $($_.Exception.Message)" -ForegroundColor DarkYellow + } + if (($i / $batchSize) % 5 -eq 4) { + Write-Host " [REPORT] $([Math]::Min($i + $batchSize, $rawApps.Count))/$($rawApps.Count) Apps..." -ForegroundColor DarkGray + } + } + + $sw.Stop() + Write-Host " -> $($rawApps.Count) Apps in $([int]$sw.Elapsed.TotalSeconds)s" -ForegroundColor Green + + $items = @($rawApps | ForEach-Object { + $aid = [string]$_.id + $c = $counts[$aid] + $ver = if ($_.buildNumber) { $_.buildNumber } elseif ($_.versionNumber) { $_.versionNumber } elseif ($_.version) { $_.version } else { '' } + [pscustomobject]@{ + AppId = $aid + AppName = [string]$_.displayName + AppType = ([string]$_.('@odata.type') -replace '#microsoft.graph.', '') + Publisher = [string]$_.publisher + Version = [string]$ver + InstalledDeviceCount = $c.ok + FailedDeviceCount = $c.fail + PendingInstallDeviceCount = $c.pending + NotInstalledDeviceCount = $c.notInst + NotApplicableDeviceCount = $c.notAppl + } + }) + + return @{ items = $items; count = $items.Count } +} + +function Get-AppDeviceStatusEndpoint { + param([hashtable]$Query) + $err = Test-Connected + if ($err) { return $err } + + $appId = [string]$Query['appId'] + if ([string]::IsNullOrWhiteSpace($appId)) { + return @{ __status = 400; error = "appId fehlt" } + } + + Write-Host "[DEVSTATUS] Lade DeviceStatuses fuer App $appId..." -ForegroundColor DarkCyan + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$appId/deviceStatuses?`$top=999" + $items = @() + try { + $items = @(Get-GraphPaged -Uri $uri) + } catch { + return @{ __status = 500; error = "Graph-Fehler: $($_.Exception.Message)" } + } + + $result = @($items | ForEach-Object { + [pscustomobject]@{ + DeviceName = [string]$_.deviceName + UserName = [string]$_.userName + InstallState = [string]$_.installState + InstallStateDetail = [string]$_.installStateDetail + ErrorCode = [string]$_.errorCode + LastSyncDateTime = [string]$_.lastSyncDateTime + OsVersion = [string]$_.osVersion + } + }) + + Write-Host " -> $($result.Count) Eintraege" -ForegroundColor DarkGray + return @{ items = $result; count = $result.Count } +} + +function Get-AppDetailsEndpoint { + param([string]$AppId) + $err = Test-Connected + if ($err) { return $err } + if ([string]::IsNullOrWhiteSpace($AppId)) { + return @{ __status = 400; error = "AppId fehlt" } + } + + # Drei Calls (App-Details + InstallSummary + Relationships) in EINEM + # HTTP-Roundtrip via Graph $batch — server-seitig parallelisiert, + # spart 60-70% Latenz. + $batch = Get-GraphAppDetailsBatch -AppId $AppId + $app = $batch.App + if (-not $app) { + return @{ __status = 404; error = "App nicht gefunden (Batch-Response ohne App-Body)" } + } + + # Helper: Wert holen, leere Strings als $null normalisieren + $val = { + param($obj, $name) + if ($null -eq $obj) { return $null } + $v = $obj.$name + if ($null -eq $v) { return $null } + if ($v -is [string] -and [string]::IsNullOrWhiteSpace($v)) { return $null } + return $v + } + + $type = [string]$app.'@odata.type' + $shortType = $type -replace '^#microsoft\.graph\.', '' + + # Min-OS in lesbarem Format zusammenfassen + $minOs = $null + $mos = $app.minimumSupportedOperatingSystem + if ($mos) { + $flags = @() + foreach ($p in @('v8_0','v8_1','v10_0','v10_1607','v10_1703','v10_1709','v10_1803','v10_1809','v10_1903','v10_1909','v10_2004','v10_20H2','v10_21H1','v10_21H2','v10_22H2','v11_21H2','v11_22H2','v11_23H2')) { + if ($mos.$p -eq $true) { $flags += ($p -replace '^v','Win ') } + } + if ($flags.Count -gt 0) { $minOs = ($flags -join ', ') } + } + + # Architekturen + $arch = $null + if ($app.applicableArchitectures) { $arch = [string]$app.applicableArchitectures } + + # Detection-Rules in Kurzform + $detection = @() + if ($app.detectionRules) { + foreach ($r in @($app.detectionRules)) { + $rt = [string]$r.'@odata.type' -replace '^#microsoft\.graph\.win32LobApp', '' + $summary = switch -Wildcard ($rt) { + 'FileSystemDetection' { "Datei: $([string]$r.path)\$([string]$r.fileOrFolderName)" } + 'RegistryDetection' { "Registry: $([string]$r.keyPath) ($([string]$r.valueName))" } + 'MsiInformation' { "MSI: $([string]$r.productCode)" } + 'ProductCodeDetection' { "MSI-ProductCode: $([string]$r.productCode)" } + 'PowerShellScriptDetection' { "PowerShell-Skript" } + default { $rt } + } + $detection += $summary + } + } + + # MSI-Details + $msi = $null + if ($app.msiInformation) { + $msi = @{ + ProductCode = [string]$app.msiInformation.productCode + ProductVersion = [string]$app.msiInformation.productVersion + Publisher = [string]$app.msiInformation.publisher + PackageType = [string]$app.msiInformation.packageType + UpgradeCode = [string]$app.msiInformation.upgradeCode + RequiresReboot = [bool]$app.msiInformation.requiresReboot + } + } + + # Return-Codes + $returnCodes = @() + if ($app.returnCodes) { + foreach ($rc in @($app.returnCodes)) { + $returnCodes += @{ Code = [int]$rc.returnCode; Type = [string]$rc.type } + } + } + + return @{ + AppId = [string]$app.id + Type = $shortType + DisplayName = & $val $app 'displayName' + Publisher = & $val $app 'publisher' + Developer = & $val $app 'developer' + Owner = & $val $app 'owner' + Description = & $val $app 'description' + Notes = & $val $app 'notes' + DisplayVersion = & $val $app 'displayVersion' + Version = & $val $app 'version' + ProductVersion = & $val $app 'productVersion' + FileName = & $val $app 'fileName' + SetupFilePath = & $val $app 'setupFilePath' + InstallCommandLine = & $val $app 'installCommandLine' + UninstallCommandLine = & $val $app 'uninstallCommandLine' + CommandLine = & $val $app 'commandLine' + InformationUrl = & $val $app 'informationUrl' + PrivacyInformationUrl= & $val $app 'privacyInformationUrl' + InstallExperience = if ($app.installExperience) { [string]$app.installExperience.runAsAccount } else { $null } + Architectures = $arch + MinimumOS = $minOs + IsFeatured = [bool]$app.isFeatured + # Dates explizit als ISO 8601 zurueckgeben — ConvertTo-Json wuerde + # [DateTime]-Objekte je nach PS-Version unterschiedlich (und teils + # JS-untauglich) serialisieren. + CreatedDateTime = ConvertTo-IsoDate (& $val $app 'createdDateTime') + LastModifiedDateTime = ConvertTo-IsoDate (& $val $app 'lastModifiedDateTime') + Categories = (Get-AppCategoryNames -RawCategories $app.categories -AppId $AppId) + DetectionRules = $detection + ReturnCodes = $returnCodes + Msi = $msi + InstallSummary = Get-AppInstallSummaryNormalized -AppId $AppId -Raw $batch.InstallSummary + # WICHTIG: @() Wrap am Call-Site — PowerShell entpackt sonst ein + # Single-Element-Array zu einer einzelnen Hashtable, und ConvertTo-Json + # serialisiert sie als Objekt statt als Array. Frontend sieht dann + # d.Dependencies.length === undefined und ueberspringt das Rendern. + # Items kommt aus dem Batch — kein zweiter /relationships-Request. + Dependencies = @(Get-AppRelationshipsNormalized -AppId $AppId -OdataKind '#microsoft.graph.mobileAppDependency' -Items $batch.Relationships) + Supersedence = @(Get-AppRelationshipsNormalized -AppId $AppId -OdataKind '#microsoft.graph.mobileAppSupersedence' -Items $batch.Relationships) + } +} + +# Normalisiert das installSummary-Objekt von Graph in flache, JS-freundliche +# Properties. Bei API-Fehler / fehlenden Werten -> $null (Frontend zeigt die +# Sektion dann nicht). +function Get-AppInstallSummaryNormalized { + param( + [string]$AppId, + # Optional: bereits geladenes Raw-Objekt (z.B. aus $batch) — spart den + # zusaetzlichen HTTP-Roundtrip. + $Raw = $null + ) + if ($null -eq $Raw) { + $Raw = Get-GraphMobileAppInstallSummary -AppId $AppId + } + if (-not $Raw) { return $null } + $raw = $Raw + $int = { param($v) if ($null -eq $v) { 0 } else { [int]$v } } + return @{ + InstalledDeviceCount = & $int $raw.installedDeviceCount + FailedDeviceCount = & $int $raw.failedDeviceCount + NotInstalledDeviceCount = & $int $raw.notInstalledDeviceCount + NotApplicableDeviceCount = & $int $raw.notApplicableDeviceCount + PendingInstallDeviceCount = & $int $raw.pendingInstallDeviceCount + InstalledUserCount = & $int $raw.installedUserCount + FailedUserCount = & $int $raw.failedUserCount + NotInstalledUserCount = & $int $raw.notInstalledUserCount + NotApplicableUserCount = & $int $raw.notApplicableUserCount + PendingInstallUserCount = & $int $raw.pendingInstallUserCount + } +} + +# Filtert die Relationships nach @odata.type (Dependency oder Supersedence) +# und packt sie in eine flache, JS-freundliche Struktur. Bei fehlenden +# Properties (Microsoft liefert nicht immer Display-Name fuer Targets!) +# wird die App-ID als Fallback verwendet. +function Get-AppRelationshipsNormalized { + param( + [string]$AppId, + [string]$OdataKind, + # Optional: vorhandene Items (z.B. aus $batch). Wenn gesetzt wird + # KEIN zusaetzlicher /relationships-Request mehr gemacht. + $Items = $null + ) + if ($null -eq $Items) { + $items = @() + try { + $items = Get-GraphMobileAppRelationships -AppId $AppId + } catch { return @() } + } else { + $items = $Items + } + if (-not $items) { return @() } + + # Normalisierung: Casing + fuehrendes # entfernen, um Mikro-Unterschiede + # in der API-Response zuverlaessig zu matchen. + $norm = { param($t) ([string]$t).TrimStart('#').ToLower() } + $wanted = & $norm $OdataKind + $isDependency = $wanted -like '*dependency*' + $isSupersedence= $wanted -like '*supersedence*' + + $result = @() + foreach ($r in $items) { + $actual = & $norm $r.'@odata.type' + if ($actual -ne $wanted) { continue } + $entry = @{ + Id = [string]$r.id + TargetId = [string]$r.targetId + TargetDisplayName = if ($r.targetDisplayName) { [string]$r.targetDisplayName } else { [string]$r.targetId } + TargetPublisher = if ($r.targetPublisher) { [string]$r.targetPublisher } else { $null } + TargetDisplayVersion = if ($r.targetDisplayVersion) { [string]$r.targetDisplayVersion } else { $null } + TargetType = if ($r.targetType) { [string]$r.targetType } else { $null } + } + if ($isDependency) { + $entry['DependencyType'] = if ($r.dependencyType) { [string]$r.dependencyType } else { 'detect' } + } elseif ($isSupersedence) { + $entry['SupersedenceType'] = if ($r.supersedenceType) { [string]$r.supersedenceType } else { 'update' } + } + $result += $entry + } + Write-Host " [RELS] $AppId -> $($result.Count) gefiltert auf '$wanted'" -ForegroundColor DarkGray + return $result +} + +# ============================================================ +# Membership Check +# ============================================================ + +function Get-MembershipBulkEndpoint { + param($Body) + $err = Test-Connected + if ($err) { return $err } + + $targetIds = @($Body.targets | ForEach-Object { [string]$_ } | Where-Object { $_ }) + $groupIds = @($Body.groupIds | ForEach-Object { [string]$_ } | Where-Object { $_ }) + if ($targetIds.Count -eq 0 -or $groupIds.Count -eq 0) { + return @{ memberships = @{} } + } + + $sw = [System.Diagnostics.Stopwatch]::StartNew() + Write-Host " Bulk-Membership: $($targetIds.Count) Targets x $($groupIds.Count) Gruppen" -ForegroundColor DarkGray + + # Pro Target: ALLE Gruppen-Mitgliedschaften EINMAL holen (transitiveMemberOf) + # Statt pro Gruppe pro Target eine Anfrage. Bei 1 Target + 600 Gruppen + # = 1 Call statt 600. + $perTarget = @{} + foreach ($tid in $targetIds) { + $set = New-Object System.Collections.Generic.HashSet[string] + try { + $uri = "https://graph.microsoft.com/v1.0/directoryObjects/$tid/transitiveMemberOf?`$select=id&`$top=999" + $next = $uri + do { + $resp = Invoke-MgGraphRequest -Uri $next -Method GET + if ($resp.value) { + foreach ($g in $resp.value) { + if ($g.id) { [void]$set.Add([string]$g.id) } + } + } + $next = $resp.'@odata.nextLink' + } while ($next) + } catch { + Write-Host " -> transitiveMemberOf fehlgeschlagen fuer $tid : $($_.Exception.Message)" -ForegroundColor DarkYellow + } + $perTarget[$tid] = $set + } + + # Lokal mappen — Group-IDs gegen alle Target-Sets pruefen + $result = @{} + foreach ($gid in $groupIds) { + if ($gid -in @("ALL_USERS","ALL_DEVICES")) { + $result[$gid] = @{ status = "Native"; matched = 0; total = $targetIds.Count } + continue + } + $matched = 0 + foreach ($tid in $targetIds) { + if ($perTarget[$tid].Contains($gid)) { $matched++ } + } + $status = if ($matched -eq 0) { "None" } + elseif ($matched -eq $targetIds.Count) { "Full" } + else { "Partial" } + $result[$gid] = @{ status = $status; matched = $matched; total = $targetIds.Count } + } + + $sw.Stop() + Write-Host " Bulk-Membership: $($result.Count) Resultate in $($sw.ElapsedMilliseconds)ms" -ForegroundColor DarkGray + return @{ memberships = $result } +} + +function Get-MembershipEndpoint { + param($Query) + $err = Test-Connected + if ($err) { return $err } + + $targetIds = @($Query.targets -split ",") + $groupId = $Query.groupId + + if ([string]::IsNullOrWhiteSpace($groupId) -or $targetIds.Count -eq 0) { + return @{ status = "None"; details = @() } + } + + if ($groupId -in @("ALL_USERS","ALL_DEVICES")) { + return @{ status = "Native"; details = @() } + } + + if (-not $script:State.GroupMembers.ContainsKey($groupId)) { + try { + $members = Get-GraphGroupMembersTransitive -GroupId $groupId + $ids = New-Object System.Collections.Generic.HashSet[string] + foreach ($m in $members) { [void]$ids.Add($m.id) } + $script:State.GroupMembers[$groupId] = $ids + } catch { + return @{ status = "Unknown"; error = $_.Exception.Message } + } + } + + $set = $script:State.GroupMembers[$groupId] + $matchCount = 0 + $details = @() + foreach ($tid in $targetIds) { + $isMember = $set.Contains($tid) + if ($isMember) { $matchCount++ } + $details += @{ id = $tid; isMember = $isMember } + } + $status = if ($matchCount -eq 0) { "None" } + elseif ($matchCount -eq $targetIds.Count) { "Full" } + else { "Partial" } + return @{ + status = $status + matched = $matchCount + total = $targetIds.Count + details = $details + } +} + +# ============================================================ +# App-Loeschung & Assignment-Entfernung +# ============================================================ + +function Remove-AppEndpoint { + param([string]$AppId) + $err = Test-Connected + if ($err) { return $err } + if ([string]::IsNullOrWhiteSpace($AppId)) { + return @{ __status = 400; error = "AppId fehlt" } + } + + # App-Namen + Source fuer Logging aus Cache versuchen (nice-to-have) + $appName = $AppId + $appSource = $null + $cachedApp = $script:State.Apps | Where-Object { $_.AppId -eq $AppId } | Select-Object -First 1 + if ($cachedApp) { + $appName = $cachedApp.AppName + $appSource = $cachedApp.Source + } + + # Vendor-managed Apps (PMPC, Robopack, ...) koennen nur im jeweiligen + # Vendor-Portal geloescht werden. Ein Delete in Intune liefe auf einen + # verwirrenden 400er hinaus oder der Vendor wuerde die App beim naechsten + # Sync wieder anlegen. Wir blocken den Versuch hier. + $vendor = Find-VendorBySource -Source $appSource + if ($vendor -and $vendor.block -and $vendor.block.delete) { + Write-Host "[DELETE APP] BLOCK $appName ($($vendor.displayName)-managed)" -ForegroundColor DarkYellow + return @{ + __status = 409 + error = "Diese App wird durch $($vendor.displayName) verwaltet und kann nur im $($vendor.displayName)-Portal geloescht werden — nicht in Intune." + code = "$($vendor.id)Managed" + source = $vendor.displayName + } + } + + Write-Host "[DELETE APP] $appName ($AppId)" -ForegroundColor Yellow + try { + Remove-GraphMobileApp -AppId $AppId + } catch { + $exMsg = $_.Exception.Message + # Original-Graph-Body extrahieren (am informativsten) + $graphBody = $null + try { $graphBody = $_.ErrorDetails.Message } catch {} + if (-not $graphBody -and $exMsg -match 'Graph-Response:\s*(.+)$') { + $graphBody = $matches[1] + } + $graphMsg = $null + if ($graphBody) { + try { + $j = $graphBody | ConvertFrom-Json + if ($j.error -and $j.error.message) { $graphMsg = [string]$j.error.message } + } catch {} + } + + # Bei 400: Relationships pruefen — haeufige Ursache + $rels = @() + if ($exMsg -match '400|BadRequest') { + try { $rels = Get-GraphMobileAppRelationships -AppId $AppId } catch {} + } + + $details = Get-GraphErrorFriendly -ErrorRecord $_ + $friendly = if ($graphMsg) { $graphMsg } else { $details.Friendly } + $status = if ($details.Code -like '*403*') { 403 } elseif ($details.Code -like '*404*') { 404 } else { 500 } + + # Wenn Relationships gefunden: Hinweis daran haengen + if ($rels.Count -gt 0) { + $relTypes = @($rels | ForEach-Object { ([string]$_.'@odata.type' -replace '^#microsoft\.graph\.','') } | Select-Object -Unique) + $friendly = "$friendly`n`nDie App hat $($rels.Count) Abhaengigkeit(en) ($($relTypes -join ', ')). Bitte zuerst diese Beziehungen im Intune-Portal entfernen (Eigenschaften > Abhaengigkeiten / Supersedence)." + } + + Write-Host "[DELETE APP] FAIL [$($details.Code)] $friendly" -ForegroundColor Red + if ($graphBody) { Write-Host " Graph-Body: $graphBody" -ForegroundColor DarkRed } + + return @{ + __status = $status + error = $friendly + code = $details.Code + details = $details.Full + graph = $graphBody + relationships = $rels.Count + } + } + + # Cache aktualisieren: geloeschte App rauswerfen + if ($script:State.Apps -and $script:State.Apps.Count -gt 0) { + $script:State.Apps = @($script:State.Apps | Where-Object { $_.AppId -ne $AppId }) + } + Write-Host "[DELETE APP] OK $appName" -ForegroundColor Green + return @{ ok = $true; appId = $AppId; appName = $appName } +} + +function Update-AppEndpoint { + param( + [string]$AppId, + $Body + ) + $err = Test-Connected + if ($err) { return $err } + if ([string]::IsNullOrWhiteSpace($AppId)) { + return @{ __status = 400; error = "AppId fehlt" } + } + if (-not $Body) { + return @{ __status = 400; error = "Request-Body fehlt" } + } + + # Aktuell wird nur displayName per UI editiert. Andere Felder waeren leicht + # nachruestbar, brauchen aber jeweils eigene Validierung. + $newName = $null + if ($Body.displayName) { $newName = [string]$Body.displayName } + if (-not $newName) { + return @{ __status = 400; error = "displayName fehlt im Body" } + } + $newName = $newName.Trim() + if ($newName.Length -lt 1) { return @{ __status = 400; error = "Name darf nicht leer sein" } } + if ($newName.Length -gt 256) { return @{ __status = 400; error = "Name zu lang (max. 256 Zeichen)" } } + + # App im Cache nachschlagen — fuer Source-Check (PMPC blocken) und Typ (PATCH braucht @odata.type) + $cachedApp = $script:State.Apps | Where-Object { $_.AppId -eq $AppId } | Select-Object -First 1 + if (-not $cachedApp) { + return @{ __status = 404; error = "App im Cache nicht gefunden. Bitte Apps neu laden und erneut versuchen." } + } + + $vendor = Find-VendorBySource -Source $cachedApp.Source + if ($vendor -and $vendor.block -and $vendor.block.rename) { + Write-Host "[PATCH APP] BLOCK $($cachedApp.AppName) ($($vendor.displayName)-managed)" -ForegroundColor DarkYellow + return @{ + __status = 409 + error = "Diese App wird durch $($vendor.displayName) verwaltet — Namensaenderungen in Intune werden beim naechsten Sync ueberschrieben. Bitte im $($vendor.displayName)-Portal umbenennen." + code = "$($vendor.id)Managed" + source = $vendor.displayName + } + } + + if (-not $cachedApp.AppTypeRaw) { + return @{ __status = 500; error = "App-Typ unbekannt — Cache ist inkonsistent. Bitte Apps neu laden." } + } + + $oldName = [string]$cachedApp.AppName + if ($oldName -eq $newName) { + return @{ ok = $true; appId = $AppId; appName = $newName; unchanged = $true } + } + + Write-Host "[PATCH APP] '$oldName' -> '$newName' ($AppId)" -ForegroundColor Yellow + try { + Update-GraphMobileApp -AppId $AppId -AppTypeRaw $cachedApp.AppTypeRaw -Patch @{ displayName = $newName } + } catch { + $exMsg = $_.Exception.Message + $graphBody = $null + try { $graphBody = $_.ErrorDetails.Message } catch {} + if (-not $graphBody -and $exMsg -match 'Graph-Response:\s*(.+)$') { $graphBody = $matches[1] } + $graphMsg = $null + if ($graphBody) { + try { + $j = $graphBody | ConvertFrom-Json + if ($j.error -and $j.error.message) { $graphMsg = [string]$j.error.message } + } catch {} + } + $details = Get-GraphErrorFriendly -ErrorRecord $_ + $friendly = if ($graphMsg) { $graphMsg } else { $details.Friendly } + $status = if ($details.Code -like '*403*') { 403 } elseif ($details.Code -like '*404*') { 404 } else { 500 } + Write-Host "[PATCH APP] FAIL [$($details.Code)] $friendly" -ForegroundColor Red + if ($graphBody) { Write-Host " Graph-Body: $graphBody" -ForegroundColor DarkRed } + return @{ __status = $status; error = $friendly; code = $details.Code; graph = $graphBody } + } + + # Cache aktualisieren + $cachedApp.AppName = $newName + Write-Host "[PATCH APP] OK '$newName'" -ForegroundColor Green + return @{ ok = $true; appId = $AppId; appName = $newName; previousName = $oldName } +} + +# Oeffnet einen nativen Windows-Datei-Dialog auf dem Server-Rechner (= der +# Rechner des Users, da localhost-Tool). Browser geben den vollen lokalen Pfad +# nie heraus — deshalb der Backend-Dialog. Laeuft in einem STA-Runspace, weil +# WinForms-Dialoge zwingend STA brauchen. Owner-Form mit TopMost holt den Dialog +# vor das Browser-Fenster. +function Show-OpenFileDialog { + param( + [string]$Filter = "Alle Dateien (*.*)|*.*", + [string]$Title = "Datei auswaehlen" + ) + # Eigener powershell.exe -STA Prozess: in einem In-Process-Runspace blitzt + # der Dialog nur kurz auf (keine echte Windows-Message-Pump, er bleibt nicht + # modal). Ein separater STA-Konsolen-Prozess hat einen vollwertigen + # STA-Hauptthread -> der Dialog erscheint und bleibt offen bis zur Auswahl. + # Ergebnis-Pfad kommt ueber stdout zurueck. + $fEsc = $Filter -replace "'", "''" + $tEsc = $Title -replace "'", "''" + $inner = @" +`$ProgressPreference = 'SilentlyContinue' +Add-Type -AssemblyName System.Windows.Forms +`$dlg = New-Object System.Windows.Forms.OpenFileDialog +`$dlg.Filter = '$fEsc' +`$dlg.Title = '$tEsc' +`$dlg.CheckFileExists = `$true +`$dlg.Multiselect = `$false +`$owner = New-Object System.Windows.Forms.Form +`$owner.TopMost = `$true +`$owner.ShowInTaskbar = `$false +`$owner.WindowState = 'Minimized' +`$owner.Show(); `$owner.Activate() +`$r = `$dlg.ShowDialog(`$owner) +`$owner.Dispose() +if (`$r -eq [System.Windows.Forms.DialogResult]::OK) { [Console]::Out.Write(`$dlg.FileName) } +"@ + $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($inner)) + $psi = New-Object System.Diagnostics.ProcessStartInfo + $psi.FileName = "powershell.exe" + $psi.Arguments = "-NoProfile -STA -ExecutionPolicy Bypass -EncodedCommand $encoded" + $psi.UseShellExecute = $false + $psi.RedirectStandardOutput = $true + $psi.CreateNoWindow = $true + try { + $proc = [System.Diagnostics.Process]::Start($psi) + $path = $proc.StandardOutput.ReadToEnd() + $proc.WaitForExit() + } catch { + throw "Datei-Dialog-Prozess konnte nicht gestartet werden: $($_.Exception.Message)" + } + return ([string]$path).Trim() +} + +function Invoke-FilePickerEndpoint { + # Oeffnet den Datei-Dialog und liefert den gewaehlten Pfad. Braucht keine + # Graph-Verbindung. Body optional: { filter, title }. + param($Body) + $filter = "Intune-Pakete (*.intunewin)|*.intunewin|MSI (*.msi)|*.msi|MSIX/AppX (*.msix;*.appx)|*.msix;*.appx|Alle Dateien (*.*)|*.*" + $title = "Setup-Datei auswaehlen" + if ($Body -and $Body.filter) { $filter = [string]$Body.filter } + if ($Body -and $Body.title) { $title = [string]$Body.title } + try { + $path = Show-OpenFileDialog -Filter $filter -Title $title + } catch { + return @{ __status = 500; error = "Datei-Dialog fehlgeschlagen: $($_.Exception.Message)" } + } + if (-not $path) { return @{ ok = $true; cancelled = $true } } + return @{ ok = $true; path = $path } +} + +# App-Typ (@odata.type) -> unterstuetzter Content-Update-Pfad + erlaubte Endung. +# Phase 1: nur win32LobApp/.intunewin aktiv; MSI/MSIX kommen in Phase 2/3. +function Get-AppContentTypeMap { + param([string]$AppTypeRaw) + $t = ($AppTypeRaw -replace '^#microsoft\.graph\.', '') + switch ($t) { + 'win32LobApp' { return @{ graphType = 'win32LobApp'; exts = @('.intunewin'); phase = 1 } } + 'windowsMobileMSI' { return @{ graphType = 'windowsMobileMSI'; exts = @('.msi'); phase = 2 } } + 'windowsUniversalAppX'{ return @{ graphType = 'windowsUniversalAppX'; exts = @('.msix','.appx'); phase = 3 } } + default { return $null } + } +} + +function Update-AppContentEndpoint { + # Laedt eine neue Setup-Datei (lokaler Pfad) in eine native App und aktiviert + # sie als neue contentVersion. Body: { filePath, displayVersion? }. + param([string]$AppId, $Body) + $err = Test-Connected + if ($err) { return $err } + if ([string]::IsNullOrWhiteSpace($AppId)) { return @{ __status = 400; error = "AppId fehlt" } } + if (-not $Body) { return @{ __status = 400; error = "Request-Body fehlt" } } + + $filePath = [string]$Body.filePath + $displayVersion = if ($Body.displayVersion) { [string]$Body.displayVersion } else { $null } + if (-not $filePath) { return @{ __status = 400; error = "filePath fehlt im Body" } } + + # App aus Cache (fuer Typ + Vendor-Check) + $cachedApp = $script:State.Apps | Where-Object { $_.AppId -eq $AppId } | Select-Object -First 1 + if (-not $cachedApp) { return @{ __status = 404; error = "App im Cache nicht gefunden. Bitte Apps neu laden." } } + if (-not $cachedApp.AppTypeRaw) { return @{ __status = 500; error = "App-Typ unbekannt — Cache inkonsistent, bitte Apps neu laden." } } + + # Vendor-managed Apps blocken (PMPC/Robopack) — analog Rename/Delete + $vendor = Find-VendorBySource -Source $cachedApp.Source + if ($vendor) { + return @{ + __status = 409 + error = "Diese App wird durch $($vendor.displayName) verwaltet — der Content kann nur im $($vendor.displayName)-Portal aktualisiert werden." + code = "$($vendor.id)Managed" + source = $vendor.displayName + } + } + + # App-Typ unterstuetzt? + $map = Get-AppContentTypeMap -AppTypeRaw $cachedApp.AppTypeRaw + if (-not $map) { + return @{ __status = 400; error = "App-Typ '$($cachedApp.AppTypeRaw)' unterstuetzt keine Content-Aktualisierung." } + } + if ($map.phase -gt 1) { + return @{ __status = 501; error = "Content-Update fuer $($map.graphType) ist noch nicht aktiviert (kommt in einer spaeteren Phase). Aktuell nur .intunewin (win32LobApp)." } + } + + # Datei + Endung pruefen + if (-not (Test-Path -LiteralPath $filePath -PathType Leaf)) { + return @{ __status = 400; error = "Datei nicht gefunden: $filePath" } + } + $ext = [IO.Path]::GetExtension($filePath).ToLower() + if ($ext -notin $map.exts) { + return @{ __status = 400; error = "Dateiendung '$ext' passt nicht zum App-Typ $($map.graphType). Erwartet: $($map.exts -join ', ')" } + } + + Write-Host "[CONTENT] Update $($cachedApp.AppName) ($($map.graphType)) <- $filePath" -ForegroundColor Yellow + try { + $result = Update-GraphAppContent -AppId $AppId -GraphTypeRaw $cachedApp.AppTypeRaw -FilePath $filePath -DisplayVersion $displayVersion + } catch { + $exMsg = $_.Exception.Message + $graphBody = $null + try { $graphBody = $_.ErrorDetails.Message } catch {} + if (-not $graphBody -and $exMsg -match 'Graph-Response:\s*(.+)$') { $graphBody = $matches[1] } + $details = Get-GraphErrorFriendly -ErrorRecord $_ + $friendly = if ($exMsg) { $exMsg } else { $details.Friendly } + $status = if ($details.Code -like '*403*') { 403 } elseif ($details.Code -like '*404*') { 404 } else { 500 } + Write-Host "[CONTENT] FAIL [$($details.Code)] $friendly" -ForegroundColor Red + if ($graphBody) { Write-Host " Graph-Body: $graphBody" -ForegroundColor DarkRed } + return @{ __status = $status; error = $friendly; code = $details.Code; graph = $graphBody } + } + + # App-Liste-Cache invalidieren, damit neue Version/Daten nachgeladen werden + if ($displayVersion) { $cachedApp.Version = $displayVersion } + $script:State.Apps = @() + Write-Host "[CONTENT] OK $($cachedApp.AppName) -> contentVersion $($result.contentVersion)" -ForegroundColor Green + return @{ + ok = $true + appId = $AppId + appName = $cachedApp.AppName + contentVersion = $result.contentVersion + displayVersion = $displayVersion + } +} + +function Add-AppAssignmentEndpoint { + # Erzeugt eine neue Zuweisung fuer eine App. + # Body: + # { intent: "available"|"required", + # target: "ALL_USERS"|"ALL_DEVICES"|"" } + param( + [string]$AppId, + $Body + ) + $err = Test-Connected + if ($err) { return $err } + if ([string]::IsNullOrWhiteSpace($AppId)) { + return @{ __status = 400; error = "AppId fehlt" } + } + if (-not $Body) { + return @{ __status = 400; error = "Request-Body fehlt" } + } + + $intent = if ($Body.intent) { ([string]$Body.intent).ToLower() } else { "" } + if ($intent -notin @("required","available")) { + return @{ __status = 400; error = "intent muss 'required' oder 'available' sein" } + } + $target = [string]$Body.target + if ([string]::IsNullOrWhiteSpace($target)) { + return @{ __status = 400; error = "target fehlt (ALL_USERS / ALL_DEVICES / )" } + } + # Bei Group-Target: zumindest grobe Hex/GUID-Form pruefen damit wir keine + # Garbage an Graph schicken. + if ($target -notin @("ALL_USERS","ALL_DEVICES") -and $target -notmatch '^[0-9a-fA-F-]{8,}$') { + return @{ __status = 400; error = "Ungueltige target-GUID: $target" } + } + + # App-Cache fuer logging + $cachedApp = $script:State.Apps | Where-Object { $_.AppId -eq $AppId } | Select-Object -First 1 + $appName = if ($cachedApp) { $cachedApp.AppName } else { $AppId } + + Write-Host "[ADD ASSIGN] $appName -> intent=$intent target=$target" -ForegroundColor Yellow + try { + Add-GraphAppAssignment -AppId $AppId -Intent $intent -GroupId $target + } catch { + $graphBody = $null + try { $graphBody = $_.ErrorDetails.Message } catch {} + $graphMsg = $null + if ($graphBody) { + try { $j = $graphBody | ConvertFrom-Json; if ($j.error -and $j.error.message) { $graphMsg = [string]$j.error.message } } catch {} + } + $details = Get-GraphErrorFriendly -ErrorRecord $_ + $friendly = if ($graphMsg) { $graphMsg } else { $details.Friendly } + $status = if ($details.Code -like '*403*') { 403 } elseif ($details.Code -like '*409*') { 409 } else { 500 } + Write-Host "[ADD ASSIGN] FAIL [$($details.Code)] $friendly" -ForegroundColor Red + return @{ __status = $status; error = $friendly; code = $details.Code; graph = $graphBody } + } + + # Cache aktualisieren — neue Zuweisung im App-Eintrag ergaenzen + if ($cachedApp) { + $entry = if ($target -eq "ALL_USERS") { + @{ GroupId = "ALL_USERS"; GroupName = "All Users"; IsNative = $true } + } elseif ($target -eq "ALL_DEVICES") { + @{ GroupId = "ALL_DEVICES"; GroupName = "All Devices"; IsNative = $true } + } else { + # Group-Namen aus den geladenen Gruppen oder Graph nachschlagen + $groupName = $target + $lookup = @{} + foreach ($g in $script:State.Groups) { $lookup[$g.Id] = $g.DisplayName } + foreach ($g in $script:State.RpaGroups) { $lookup[$g.Id] = $g.DisplayName } + if ($lookup.ContainsKey($target)) { $groupName = $lookup[$target] } + else { + try { + $g = Get-GraphGroupById -Id $target -Property @("id","displayName") + if ($g.displayName) { $groupName = [string]$g.displayName } + } catch {} + } + @{ GroupId = $target; GroupName = $groupName; IsNative = $false } + } + if ($intent -eq "available") { + $cachedApp.AvailableGroups = @($cachedApp.AvailableGroups + $entry) + $cachedApp.AvailableCount = $cachedApp.AvailableGroups.Count + } else { + $cachedApp.RequiredGroups = @($cachedApp.RequiredGroups + $entry) + $cachedApp.RequiredCount = $cachedApp.RequiredGroups.Count + } + } + + Write-Host "[ADD ASSIGN] OK" -ForegroundColor Green + return @{ ok = $true; appId = $AppId; intent = $intent; target = $target } +} + +function Remove-AppAssignmentEndpoint { + param( + [string]$AppId, + [string]$GroupId, + $Query + ) + $err = Test-Connected + if ($err) { return $err } + if ([string]::IsNullOrWhiteSpace($AppId) -or [string]::IsNullOrWhiteSpace($GroupId)) { + return @{ __status = 400; error = "AppId und GroupId erforderlich" } + } + + $intent = $null + if ($Query -and $Query.type) { + $t = ([string]$Query.type).ToLower() + if ($t -in @('available','required')) { $intent = $t } + } + + Write-Host "[DELETE ASSIGN] App=$AppId Group=$GroupId Intent=$(if ($intent) { $intent } else { '(alle)' })" -ForegroundColor Yellow + try { + $deleted = Remove-GraphAppAssignmentByGroup -AppId $AppId -GroupId $GroupId -Intent $intent + } catch { + $details = Get-GraphErrorFriendly -ErrorRecord $_ + Write-Host "[DELETE ASSIGN] FAIL [$($details.Code)] $($details.Friendly)" -ForegroundColor Red + $status = if ($details.Code -like '*403*') { 403 } elseif ($details.Code -like '*404*') { 404 } else { 500 } + return @{ __status = $status; error = $details.Friendly; code = $details.Code } + } + + if (-not $deleted -or $deleted.Count -eq 0) { + Write-Host "[DELETE ASSIGN] Keine passende Zuweisung gefunden" -ForegroundColor DarkYellow + return @{ __status = 404; error = "Keine passende Zuweisung gefunden" } + } + + # Cache aktualisieren: zuweisungs-Eintrag aus der App entfernen + if ($script:State.Apps -and $script:State.Apps.Count -gt 0) { + foreach ($app in $script:State.Apps) { + if ($app.AppId -ne $AppId) { continue } + if ($intent -in @($null,'available') -and $app.AvailableGroups) { + $app.AvailableGroups = @($app.AvailableGroups | Where-Object { $_.GroupId -ne $GroupId }) + $app.AvailableCount = $app.AvailableGroups.Count + } + if ($intent -in @($null,'required') -and $app.RequiredGroups) { + $app.RequiredGroups = @($app.RequiredGroups | Where-Object { $_.GroupId -ne $GroupId }) + $app.RequiredCount = $app.RequiredGroups.Count + } + } + } + Write-Host "[DELETE ASSIGN] OK ($($deleted.Count) entfernt)" -ForegroundColor Green + return @{ ok = $true; appId = $AppId; groupId = $GroupId; removed = $deleted.Count } +} + +# ============================================================ +# Apply Assignments +# ============================================================ + +function Invoke-ApplyEndpoint { + param($Body) + $err = Test-Connected + if ($err) { return $err } + + # Pre-Flight: Token-Check + $ctx = $null + try { $ctx = Get-MgContext } catch {} + if (-not $ctx -or -not $ctx.Account) { + Write-Host "[APPLY] Get-MgContext leer — Token verloren!" -ForegroundColor Red + $script:State.Connected = $false + return @{ __status = 401; error = "Microsoft-Graph-Token verloren. Bitte neu anmelden." } + } + Write-Host "[APPLY] Pre-Flight OK — Account=$($ctx.Account)" -ForegroundColor DarkGray + + # Bevorzugt: flache Ops-Liste mit pro-Item-Empfaenger. + # Backwards-compat: alte targets/assignments-Struktur wird zur Ops-Liste expandiert. + $ops = @() + if ($Body.ops) { + $ops = @($Body.ops) + } elseif ($Body.targets -and $Body.assignments) { + foreach ($t in @($Body.targets)) { + foreach ($a in @($Body.assignments)) { + $ops += @{ + targetId = $t.id + targetName = $t.displayName + targetType = $t.type + appId = $a.appId + appName = $a.appName + groupId = $a.groupId + groupName = $a.groupName + type = $a.type + } + } + } + } + + if ($ops.Count -eq 0) { return @{ __status = 400; error = "Keine Vorgaenge angegeben" } } + + $isUserMode = ($ops | Where-Object { $_.targetType -eq 'user' }).Count -gt 0 + $total = $ops.Count + $success = 0; $errors = 0; $skipped = 0 + $log = @() + $detailedResults = @() + + Write-Host "[APPLY] Body geparst: ops.Count=$($ops.Count) (deptOps=$(@($ops | Where-Object { $_.targetType -ne 'user' }).Count) userOps=$(@($ops | Where-Object { $_.targetType -eq 'user' }).Count))" -ForegroundColor DarkGray + Write-Host "[APPLY] Starte $total Vorgaenge..." -ForegroundColor Cyan + $applyStart = Get-Date + + foreach ($op in $ops) { + $tId = [string]$op.targetId + $tName = [string]$op.targetName + $aGid = [string]$op.groupId + $aGname = [string]$op.groupName + $aApp = [string]$op.appName + $aType = [string]$op.type + + $entry = "$tName -> $aApp ($aGname - $aType)" + if ($aGid -in @("ALL_USERS","ALL_DEVICES")) { + $skipped++ + $log += "[SKIP] $entry (Native Target)" + $detailedResults += @{ target=$tName; app=$aApp; group=$aGname; type=$aType; status="Skipped"; message="Native target - nicht aenderbar" } + Write-Host " [SKIP] $entry" -ForegroundColor DarkYellow + continue + } + $opStart = Get-Date + try { + Write-Host " -> Add-GraphMember GroupId=$aGid DirectoryObjectId=$tId" -ForegroundColor DarkGray + Add-GraphMember -GroupId $aGid -DirectoryObjectId $tId + $opMs = [int]((Get-Date) - $opStart).TotalMilliseconds + $success++ + $log += "[OK] $entry" + $detailedResults += @{ target=$tName; app=$aApp; group=$aGname; type=$aType; status="Success"; message="Hinzugefuegt" } + Write-Host " [OK] $entry (${opMs}ms)" -ForegroundColor Green + } catch { + $opMs = [int]((Get-Date) - $opStart).TotalMilliseconds + $details = Get-GraphErrorFriendly -ErrorRecord $_ + if ($details.IsWarning) { + $success++ + $log += "[OK*] $entry (bereits Mitglied)" + $detailedResults += @{ target=$tName; app=$aApp; group=$aGname; type=$aType; status="AlreadyMember"; message=$details.Friendly } + Write-Host " [OK*] $entry (bereits Mitglied, ${opMs}ms)" -ForegroundColor DarkGreen + } else { + $errors++ + $log += "[FAIL] $entry [$($details.Code)] $($details.Friendly)" + $detailedResults += @{ target=$tName; app=$aApp; group=$aGname; type=$aType; status="Error"; code=$details.Code; message=$details.Friendly } + Write-Host " [FAIL] $entry [$($details.Code)] $($details.Friendly) (${opMs}ms)" -ForegroundColor Red + Write-Host " Vollstaendig: $($details.Full)" -ForegroundColor DarkRed + } + } + } + + # Targets/Assignments fuer den HTML-Report rekonstruieren + $targets = @{} + $assignments = @{} + foreach ($op in $ops) { + $targets[$op.targetId] = @{ id=$op.targetId; displayName=$op.targetName; type=$op.targetType } + $aKey = "$($op.appId)|$($op.groupId)|$($op.type)" + $assignments[$aKey] = @{ appId=$op.appId; appName=$op.appName; groupId=$op.groupId; groupName=$op.groupName; type=$op.type } + } + $targets = @($targets.Values) + $assignments = @($assignments.Values) + + $applyMs = [int]((Get-Date) - $applyStart).TotalMilliseconds + Write-Host "[APPLY] Fertig in ${applyMs}ms — OK=$success Skip=$skipped Err=$errors" -ForegroundColor Cyan + + # Report VOR Response generieren + $reportFile = $null + try { + $reportFile = New-HtmlReport -Targets $targets -Assignments $assignments -IsUserMode $isUserMode -Success $success -Errors $errors -Skipped $skipped -Total $total -Log $log -Details $detailedResults + Write-Host "[APPLY] HTML-Report: $reportFile" -ForegroundColor DarkGray + } catch { + Write-Host "[APPLY] HTML-Report-Erstellung fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor Red + } + + # Cache invalidieren - Membership stimmt nicht mehr + $script:State.GroupMembers = @{} + + $reportUrl = if ($reportFile) { "/reports/" + (Split-Path $reportFile -Leaf) } else { "" } + $resp = @{ + success = [int]$success + errors = [int]$errors + skipped = [int]$skipped + total = [int]$total + reportUrl = [string]$reportUrl + details = $detailedResults + build = [string]$script:BuildStamp + } + Write-Host "[APPLY] === Response: success=$success errors=$errors skipped=$skipped total=$total reportUrl='$reportUrl' details=$($detailedResults.Count) build=$script:BuildStamp" -ForegroundColor Yellow + return $resp +} + +function New-HtmlReport { + param($Targets, $Assignments, $IsUserMode, $Success, $Errors, $Skipped, $Total, $Log, $Details) + + Add-Type -AssemblyName System.Web + function _enc { param($s) if ($null -eq $s) { return "" } return [System.Web.HttpUtility]::HtmlEncode([string]$s) } + + $ts = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" + $tsHuman = Get-Date -Format "dd.MM.yyyy HH:mm:ss" + $name = "report-$ts.html" + $path = Join-Path $script:Config.ReportDir $name + $user = $env:USERNAME + $machine = $env:COMPUTERNAME + $tenant = if ($script:State.TenantId) { $script:State.TenantId } else { "" } + $account = if ($script:State.Account) { $script:State.Account } else { "" } + + # Erfolgsquote — Skipped zaehlen wir neutral, nicht als Fehler + $effective = [Math]::Max(1, ($Success + $Errors)) + $rate = [int](($Success / $effective) * 100) + $rateStatus = if ($Errors -eq 0 -and $Success -gt 0) { "ok" } elseif ($Errors -gt 0 -and $Success -gt 0) { "warn" } elseif ($Errors -gt 0) { "err" } else { "muted" } + + # Empfaenger-Mix + $targetGroups = @($Targets | Where-Object { $_.type -ne 'user' }) + $targetUsers = @($Targets | Where-Object { $_.type -eq 'user' }) + $grpSuffix = if ($targetGroups.Count -eq 1) { "" } else { "n" } + $assignSuffix = if ($Assignments.Count -eq 1) { "" } else { "en" } + + # Status-Mapping fuer Detail-Zeilen + $statusMeta = @{ + "Success" = @{ cls = "ok"; icon = "✓"; label = "Erfolgreich" } + "AlreadyMember" = @{ cls = "ok"; icon = "✓"; label = "Bereits Mitglied" } + "Skipped" = @{ cls = "skip"; icon = "–"; label = "Uebersprungen" } + "Error" = @{ cls = "err"; icon = "!"; label = "Fehler" } + } + + # Detail-Zeilen pro App gruppieren — ergibt eine kompaktere Darstellung + $byApp = @{} + foreach ($d in $Details) { + $key = [string]$d.app + if (-not $byApp.ContainsKey($key)) { $byApp[$key] = @() } + $byApp[$key] += $d + } + + $appBlocksHtml = "" + foreach ($appName in ($byApp.Keys | Sort-Object)) { + $rows = @($byApp[$appName]) + $okCount = @($rows | Where-Object { $_.status -in @('Success','AlreadyMember') }).Count + $skipCount = @($rows | Where-Object { $_.status -eq 'Skipped' }).Count + $errCount = @($rows | Where-Object { $_.status -eq 'Error' }).Count + + # Pro App: Gruppen-Spalte + Empfaenger-Zeilen + $rowsHtml = "" + foreach ($d in $rows) { + $st = $statusMeta[[string]$d.status] + if (-not $st) { $st = @{ cls = ""; icon = ""; label = [string]$d.status } } + $msg = if ($d.message) { _enc $d.message } else { "" } + $errCode = if ($d.code) { " $(_enc $d.code)" } else { "" } + $rowsHtml += "" + + "$($st.icon) $($st.label)" + + "$(_enc $d.target)" + + "$(_enc $d.group)" + + "$(_enc $d.type)" + + "$msg$errCode" + + "" + } + $appHeadStats = "" + if ($okCount -gt 0) { $appHeadStats += "$okCount OK" } + if ($skipCount -gt 0) { $appHeadStats += "$skipCount Skip" } + if ($errCount -gt 0) { $appHeadStats += "$errCount Fehler" } + $openAttr = if ($errCount -gt 0) { " open" } else { "" } + $appBlocksHtml += "

" + + "$(_enc $appName)" + + "$appHeadStats" + + "" + + "
" + + "" + + "" + + "" + + "$rowsHtml
StatusEmpfaengerIntune-GruppeTypMeldung
" + } + if (-not $appBlocksHtml) { + $appBlocksHtml = "
Keine Detail-Eintraege.
" + } + + # Empfaenger-Liste + $recipChipsHtml = "" + foreach ($t in $Targets) { + $isUser = ($t.type -eq 'user') + $cls = if ($isUser) { "chip chip-user" } else { "chip chip-group" } + $modeLbl = if ($isUser) { "User" } else { "Gruppe" } + $entraUrl = if ($isUser) { + "https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/$([uri]::EscapeDataString([string]$t.id))" + } else { + "https://intune.microsoft.com/#view/Microsoft_AAD_IAM/GroupDetailsMenuBlade/~/Overview/groupId/$([uri]::EscapeDataString([string]$t.id))/menuId/" + } + $recipChipsHtml += "
" + + "$modeLbl" + + "$(_enc $t.displayName)" + } + + # Zuweisungs-Liste + $assignChipsHtml = "" + foreach ($a in $Assignments) { + $intent = if ($a.type -eq 'Required') { 'req' } else { 'avail' } + $intentLbl = $a.type + $intuneUrl = "https://intune.microsoft.com/#view/Microsoft_Intune_Apps/SettingsMenu/~/2/appId/$([uri]::EscapeDataString([string]$a.appId))" + $assignChipsHtml += "
" + + "$(_enc $a.appName)" + + "
" + + "$(_enc $intentLbl)" + + "$(_enc $a.groupName)" + + "
" + } + if (-not $assignChipsHtml) { $assignChipsHtml = "
Keine Zuweisungen.
" } + + $logHtml = ($Log | ForEach-Object { + $line = _enc $_ + if ($line -like "`[OK`]*") { "$line" } + elseif ($line -like "`[OK*`]*") { "$line" } + elseif ($line -like "`[FAIL`]*") { "$line" } + elseif ($line -like "`[SKIP`]*") { "$line" } + else { $line } + }) -join "`n" + if (-not $logHtml) { $logHtml = "(kein Log)" } + + # Header-Status-Banner + $bannerCls = if ($Errors -gt 0) { "banner-err" } elseif ($Skipped -gt 0 -and $Success -gt 0) { "banner-warn" } else { "banner-ok" } + $bannerTxt = if ($Errors -gt 0) { + "$Errors Fehler aufgetreten - Details unten" + } elseif ($Errors -eq 0 -and $Skipped -gt 0 -and $Success -gt 0) { + "Alle Vorgaenge ohne Fehler. $Skipped uebersprungen." + } elseif ($Errors -eq 0 -and $Success -gt 0) { + "Alle $Success Vorgaenge erfolgreich" + } else { + "Keine ausgefuehrten Vorgaenge" + } + + $html = @" + + + + + +Intune Zuweisungs-Report - $tsHuman + + + + + +
+ +
+
+
+ +
+
Intune Zuweisungs-Report
+
$tsHuman · ausgefuehrt von $(_enc $user)
+
+
+
+"@ + if ($account) { $html += "Account $(_enc $account)" } + if ($tenant) { $html += "Tenant $(_enc $tenant)" } + $html += "Host $(_enc $machine)" + $html += @" +
+
+ +
+ +
+
$Total
Vorgaenge
+
$Success
Erfolgreich
+
$Skipped
Uebersprungen
+
$Errors
Fehler
+
$rate%
Erfolgsquote
$Success von $effective effektiv
+
+ +
+
+
+
Empfaenger
+
$($targetGroups.Count) Gruppe$grpSuffix · $($targetUsers.Count) Benutzer
+
+
+
$recipChipsHtml
+
+ +
+
+
+
Zuweisungen
+
$($Assignments.Count) eindeutige App-Gruppen-Zuweisung$assignSuffix
+
+
+
$assignChipsHtml
+
+ +
+
+
+
Detail-Ergebnisse
+
Gruppiert nach App · Bloecke mit Fehlern sind aufgeklappt
+
+
+ $appBlocksHtml +
+ +
+ Debug-Log ($($Log.Count) Zeilen) +
$logHtml
+
+ +
+ Intune Manager · Web Edition v$(_enc $script:ToolVersion) · Build $(_enc $script:BuildStamp) +
+
+ + +"@ + [IO.File]::WriteAllText($path, $html, [System.Text.Encoding]::UTF8) + return $path +} diff --git a/src/Graph.ps1 b/src/Graph.ps1 new file mode 100644 index 0000000..d8b7791 --- /dev/null +++ b/src/Graph.ps1 @@ -0,0 +1,1000 @@ +# Microsoft Graph API Helpers +# Verwendet ausschliesslich Microsoft.Graph.Authentication + Invoke-MgGraphRequest, +# um Versionskonflikte zu vermeiden. + +function Initialize-GraphModule { + if (Get-Module Microsoft.Graph.Authentication) { return $true } + try { + Import-Module Microsoft.Graph.Authentication -ErrorAction Stop -MinimumVersion 2.0.0 + $loaded = Get-Module Microsoft.Graph.Authentication + Write-Host "[GRAPH] Microsoft.Graph.Authentication v$($loaded.Version) geladen" -ForegroundColor DarkGray + return $true + } catch { + $available = @(Get-Module Microsoft.Graph.Authentication -ListAvailable) + if ($available.Count -eq 0) { + throw "Microsoft.Graph.Authentication ist nicht installiert. Bitte ausfuehren: Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force" + } + $maxVer = ($available | Sort-Object Version -Descending | Select-Object -First 1).Version + if ($maxVer -lt [version]"2.0.0") { + throw "Microsoft.Graph.Authentication v$maxVer ist zu alt. Mindestens v2.0 noetig. Bitte: Update-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force" + } + throw "Microsoft.Graph.Authentication konnte nicht geladen werden: $($_.Exception.Message)" + } +} + +function Invoke-MgGraphRequestRetry { + # Duenner Wrapper um Invoke-MgGraphRequest mit Retry-Backoff fuer 429/503. + # Microsoft-Best-Practice: Throttling (429) immer abfangen und mit + # Retry-After-Verzoegerung erneut versuchen. 503 analog (Service busy). + # Andere Fehler werden unveraendert durchgereicht (kein Verschlucken). + param( + [Parameter(Mandatory=$true)][string]$Uri, + [string]$Method = 'GET', + $Body, + [string]$ContentType, + [hashtable]$Headers, + [int]$MaxRetries = 3 + ) + $attempt = 0 + while ($true) { + try { + $params = @{ Uri = $Uri; Method = $Method } + if ($PSBoundParameters.ContainsKey('Body') -and $null -ne $Body) { $params.Body = $Body } + if ($ContentType) { $params.ContentType = $ContentType } + if ($Headers) { $params.Headers = $Headers } + return Invoke-MgGraphRequest @params + } catch { + $msg = $_.Exception.Message + $is429 = $msg -match '\b429\b|Too many requests|throttl' + $is503 = $msg -match '\b503\b|Service Unavailable' + if (($is429 -or $is503) -and $attempt -lt $MaxRetries) { + $attempt++ + # Retry-After aus dem Fehler ziehen wenn vorhanden, sonst Backoff 2/5/10s. + $wait = $null + if ($msg -match 'Retry-After[:\s]+(\d+)') { $wait = [int]$matches[1] } + if (-not $wait -or $wait -le 0) { $wait = @(2, 5, 10)[[Math]::Min($attempt - 1, 2)] } + $code = if ($is429) { '429' } else { '503' } + Write-Host " [THROTTLE] $code -> Retry $attempt/$MaxRetries in ${wait}s" -ForegroundColor DarkYellow + Start-Sleep -Seconds $wait + continue + } + throw + } + } +} + +function Get-GraphPaged { + param([Parameter(Mandatory=$true)][string]$Uri) + $results = @() + $next = $Uri + do { + $response = Invoke-MgGraphRequestRetry -Uri $next -Method GET + if ($response.value) { $results += $response.value } + $next = $response.'@odata.nextLink' + } while ($next) + return $results +} + +function Get-GraphGroupByFilter { + param( + [string]$Filter, + [string[]]$Property = @("id","displayName"), + [switch]$ExpandMembers + ) + $select = "`$select=" + ($Property -join ",").ToLower() + $uri = "https://graph.microsoft.com/v1.0/groups?$select" + if ($Filter) { $uri += "&`$filter=$([uri]::EscapeDataString($Filter))" } + # $expand=members($select=id) liefert bis zu 20 Mitglieder-IDs pro Gruppe — + # genug, um "leer ja/nein" zuverlaessig zu erkennen (Graph cap ist 20). + if ($ExpandMembers) { $uri += "&`$expand=members(`$select=id)" } + return Get-GraphPaged -Uri $uri +} + +function Get-GraphGroupById { + param([string]$Id, [string[]]$Property = @("id","displayName")) + $select = "`$select=" + ($Property -join ",").ToLower() + return Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/groups/$Id`?$select" -Method GET +} + +function Get-GraphGroupMembers { + param([string]$GroupId) + return Get-GraphPaged -Uri "https://graph.microsoft.com/v1.0/groups/$GroupId/members?`$select=id,displayName,userPrincipalName" +} + +function Search-GraphGroups { + # Sucht Gruppen nach displayName. Versucht zuerst startswith (schnell), + # dann $search-Fallback (Substring, braucht ConsistencyLevel: eventual). + param([string]$SearchTerm, [int]$Top = 50) + $term = $SearchTerm -replace "'", "''" + try { + $filter = "startswith(displayName,'$term')" + $uri = "https://graph.microsoft.com/v1.0/groups?`$select=id,displayName,description&`$filter=$([uri]::EscapeDataString($filter))&`$top=$Top" + $resp = Invoke-MgGraphRequest -Uri $uri -Method GET + $items = @() + if ($resp -and $resp.value) { $items = @($resp.value) } + if ($items.Count -gt 0) { return $items } + } catch { + Write-Host " [GSEARCH] startswith fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor DarkYellow + } + try { + $clean = $SearchTerm -replace '"', '' + $searchExpr = [uri]::EscapeDataString('"displayName:' + $clean + '"') + $uri = "https://graph.microsoft.com/v1.0/groups?`$select=id,displayName,description&`$search=$searchExpr&`$top=$Top" + $resp = Invoke-MgGraphRequest -Uri $uri -Method GET -Headers @{ ConsistencyLevel = "eventual" } + if ($resp -and $resp.value) { return @($resp.value) } + } catch { + Write-Host " [GSEARCH] search-Fallback fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor DarkYellow + } + return @() +} + +function Resolve-GroupMembersWithNesting { + # Loest alle Benutzer einer Gruppe rekursiv auf (inkl. verschachtelter Unter- + # gruppen). Gibt eine flache Liste zurueck; jeder Eintrag traegt den Pfad + # der Herkunfts-Gruppen (z.B. "Top-Gruppe > Unter-Gruppe"). + # Zirkulaere Referenzen werden ueber ein HashSet vermieden. + param( + [Parameter(Mandatory=$true)][string]$GroupId, + [string]$GroupName = "", + [System.Collections.Generic.HashSet[string]]$Visited = $null, + [string[]]$Path = @() + ) + if ($null -eq $Visited) { + $Visited = New-Object System.Collections.Generic.HashSet[string] + } + if (-not $Visited.Add($GroupId)) { return @() } + + $thisPath = if ($GroupName) { @($Path) + @($GroupName) } else { $Path } + $sourcePath = $thisPath -join " > " + + $raw = @() + try { + $raw = @(Get-GraphPaged -Uri "https://graph.microsoft.com/v1.0/groups/$GroupId/members?`$select=id,displayName,userPrincipalName,mail") + } catch { + Write-Host " [EXPORT] Mitglieder von $GroupId konnten nicht geladen werden: $($_.Exception.Message)" -ForegroundColor DarkYellow + return @() + } + + $result = [System.Collections.Generic.List[object]]::new() + foreach ($m in $raw) { + $type = [string]$m.'@odata.type' + if ($type -like '*#microsoft.graph.group*') { + $sub = Resolve-GroupMembersWithNesting ` + -GroupId ([string]$m.id) ` + -GroupName ([string]$m.displayName) ` + -Visited $Visited ` + -Path $thisPath + foreach ($u in $sub) { $result.Add($u) } + } else { + $result.Add([pscustomobject]@{ + Id = [string]$m.id + DisplayName = [string]$m.displayName + UserPrincipalName = [string]$m.userPrincipalName + Mail = [string]$m.mail + SourcePath = $sourcePath + }) + } + } + return $result.ToArray() +} + +function Get-GraphGroupMembersTransitive { + param([string]$GroupId) + return Get-GraphPaged -Uri "https://graph.microsoft.com/v1.0/groups/$GroupId/transitiveMembers?`$select=id,displayName,userPrincipalName" +} + +function Search-GraphUser { + param([string]$SearchTerm) + $term = $SearchTerm -replace "'", "''" + $select = "id,displayName,userPrincipalName,mail,department" + + # Welche Felder durchsucht werden ist konfigurierbar (Settings). + $allowed = @('displayName','userPrincipalName','mail','department') + $cfgFields = @($script:Settings.userSearch.fields | Where-Object { $_ -in $allowed }) + if ($cfgFields.Count -eq 0) { $cfgFields = @('displayName','userPrincipalName','mail') } + + # 1) startswith — schnell, deckt Praefix-Tippen ab (90%+ aller Suchen) + try { + $sw = [System.Diagnostics.Stopwatch]::StartNew() + $parts = @($cfgFields | ForEach-Object { "startswith($_,'$term')" }) + $filter = $parts -join " or " + $uri = "https://graph.microsoft.com/v1.0/users?`$select=$select&`$filter=$([uri]::EscapeDataString($filter))&`$top=25" + $resp = Invoke-MgGraphRequest -Uri $uri -Method GET + $items = @() + if ($resp -and $resp.value) { $items = @($resp.value) } + $sw.Stop() + Write-Host " -> User-Search '$SearchTerm' [$($cfgFields -join ',')]: startswith=$($items.Count) Treffer in $($sw.ElapsedMilliseconds)ms" -ForegroundColor DarkGray + if ($items.Count -gt 0) { return $items } + } catch { + Write-Host " -> startswith fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor DarkYellow + } + + # 2) Fallback: $search (substring) nur wenn startswith leer war + try { + $sw = [System.Diagnostics.Stopwatch]::StartNew() + $searchTerm = $SearchTerm -replace '"', '' + $parts = @($cfgFields | ForEach-Object { "`"$_`:$searchTerm`"" }) + $searchExpr = $parts -join " OR " + $uri = "https://graph.microsoft.com/v1.0/users?`$select=$select&`$top=25&`$search=$([uri]::EscapeDataString($searchExpr))" + $resp = Invoke-MgGraphRequest -Uri $uri -Method GET -Headers @{ ConsistencyLevel = "eventual" } + $items = @() + if ($resp -and $resp.value) { $items = @($resp.value) } + $sw.Stop() + Write-Host " -> User-Search '$SearchTerm': `$search-Fallback=$($items.Count) Treffer in $($sw.ElapsedMilliseconds)ms" -ForegroundColor DarkGray + return $items + } catch { + Write-Host " -> `$search-Fallback fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor DarkYellow + return @() + } +} + +function Resolve-GroupNamesBulk { + # Loest viele Gruppen-IDs in einem Schwung via directoryObjects/getByIds auf + # und schreibt {Id => DisplayName} in die uebergebene Hashtable. + param( + [Parameter(Mandatory=$true)][object[]]$Ids, + [Parameter(Mandatory=$true)][hashtable]$Lookup + ) + if (-not $Ids -or $Ids.Count -eq 0) { return } + + # WICHTIG: zu plain strings casten — sonst wickelt ConvertTo-Json (intern in + # Invoke-MgGraphRequest) PSObject-gewrappte Strings in .Chars und crasht mit + # "Self referencing loop". Genau das hat den Batch unbrauchbar gemacht. + $cleanIds = [string[]]@($Ids | ForEach-Object { [string]$_ } | Where-Object { $_ }) + + $batchSize = 800 # API-Limit ist 1000, Puffer fuer Safety + for ($i = 0; $i -lt $cleanIds.Count; $i += $batchSize) { + $end = [Math]::Min($i + $batchSize - 1, $cleanIds.Count - 1) + $chunk = [string[]]$cleanIds[$i..$end] + + try { + # JSON manuell serialisieren — vermeidet jeden Wrapper-Spass + $bodyJson = @{ + ids = $chunk + types = @("group") + } | ConvertTo-Json -Depth 3 -Compress + + $resp = Invoke-MgGraphRequest ` + -Uri "https://graph.microsoft.com/v1.0/directoryObjects/getByIds" ` + -Method POST ` + -Body $bodyJson ` + -ContentType "application/json" + + if ($resp.value) { + foreach ($obj in $resp.value) { + if ($obj.id -and $obj.displayName) { + $Lookup[[string]$obj.id] = [string]$obj.displayName + } + } + } + } catch { + Write-Host " -> getByIds-Batch fehlgeschlagen ($($chunk.Count) IDs): $($_.Exception.Message)" -ForegroundColor DarkYellow + # Fallback nur fuer den fehlgeschlagenen Batch — und auch nur wenn die ID + # noch nicht gesetzt wurde + foreach ($id in $chunk) { + if ($Lookup.ContainsKey($id)) { continue } + try { + $g = Get-GraphGroupById -Id $id -Property @("id","displayName") + if ($g.displayName) { $Lookup[$id] = [string]$g.displayName } + } catch { + $Lookup[$id] = "($id)" + } + } + } + } +} + +function New-GraphSecurityGroup { + param([string]$DisplayName, [string]$MailNickname) + $body = @{ + displayName = $DisplayName + mailEnabled = $false + securityEnabled = $true + mailNickname = $MailNickname + } + return Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/groups" -Method POST -Body $body +} + +function Add-GraphMember { + param([string]$GroupId, [string]$DirectoryObjectId) + # JSON manuell bauen — vermeidet PSObject-Wrapper-Probleme bei der Serialisierung + $bodyJson = '{"@odata.id":"https://graph.microsoft.com/v1.0/directoryObjects/' + $DirectoryObjectId + '"}' + # Out-Null suppressed das $null das Invoke-MgGraphRequest zurueckgibt — sonst + # landet es in der Pipeline des Aufrufers und korrumpiert die Response. + # Ueber den Retry-Wrapper: Member-Adds sind die haeufigste Bulk-Write-Operation + # (Session-Apply mit vielen Empfaengern) und damit am throttle-anfaelligsten. + $null = Invoke-MgGraphRequestRetry ` + -Uri "https://graph.microsoft.com/v1.0/groups/$GroupId/members/`$ref" ` + -Method POST ` + -Body $bodyJson ` + -ContentType "application/json" +} + +function Get-GraphMobileApps { + param([switch]$WithAssignments) + # WICHTIG: NUR assignments expandieren. categories zusaetzlich auf der + # Vollliste zu expandieren liess Graph hart drosseln (429 -> "Too many + # retries"). Kategorien werden separat + throttle-sicher per $batch + # nachgeladen (Get-GraphMobileAppCategoriesBatch). + $expand = if ($WithAssignments) { "?`$expand=assignments" } else { "" } + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps$expand" + return Get-GraphPaged -Uri $uri +} + +function Get-GraphMobileAppCategoriesBatch { + # Liefert eine Map appId -> @(KategorieNamen) fuer die uebergebenen App-IDs + # ueber Microsoft Graph $batch (20 Sub-Requests pro Batch — API-Limit). + # Throttle-sicher: schlaegt ein Batch fehl, werden dessen Apps einfach + # ohne Kategorien gefuehrt — die App-Liste funktioniert unabhaengig davon. + param([string[]]$AppIds) + $map = @{} + if (-not $AppIds -or $AppIds.Count -eq 0) { return $map } + + $chunkSize = 20 + for ($i = 0; $i -lt $AppIds.Count; $i += $chunkSize) { + $end = [Math]::Min($i + $chunkSize - 1, $AppIds.Count - 1) + $slice = $AppIds[$i..$end] + $requests = @() + foreach ($id in $slice) { + $requests += @{ id = $id; method = 'GET'; url = "/deviceAppManagement/mobileApps/$id/categories" } + } + $body = @{ requests = $requests } | ConvertTo-Json -Depth 5 -Compress + try { + $resp = Invoke-MgGraphRequestRetry -Uri 'https://graph.microsoft.com/beta/$batch' -Method POST -Body $body -ContentType 'application/json' + foreach ($r in @($resp.responses)) { + $rid = [string]$r.id + $st = [int]$r.status + if ($st -eq 200 -and $r.body -and $r.body.value) { + $names = @() + foreach ($cat in @($r.body.value)) { + $n = $null + try { if ($cat.displayName) { $n = [string]$cat.displayName } } catch {} + if (-not $n -and $cat -is [System.Collections.IDictionary] -and $cat['displayName']) { $n = [string]$cat['displayName'] } + if ($n) { $names += $n } + } + $map[$rid] = $names + } + } + } catch { + Write-Host " [CATS-BATCH] Batch $i-$end fehlgeschlagen (uebersprungen): $($_.Exception.Message)" -ForegroundColor DarkYellow + } + } + return $map +} + +function Get-GraphMobileAppDetails { + param([Parameter(Mandatory=$true)][string]$AppId) + # Liefert das vollstaendige App-Objekt inkl. typspezifischer Felder + # (Win32: installCommandLine etc., MSI: productCode, Store: licenseType, ...). + return Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId" -Method GET +} + +function Add-GraphAppAssignment { + param( + [string]$AppId, + [string]$Intent, # "available" | "required" + [string]$GroupId # GUID oder "ALL_USERS" / "ALL_DEVICES" + ) + $target = switch ($GroupId) { + "ALL_USERS" { @{ "@odata.type" = "#microsoft.graph.allLicensedUsersAssignmentTarget" } } + "ALL_DEVICES" { @{ "@odata.type" = "#microsoft.graph.allDevicesAssignmentTarget" } } + default { @{ "@odata.type" = "#microsoft.graph.groupAssignmentTarget"; "groupId" = $GroupId } } + } + $body = @{ + mobileAppAssignments = @(@{ + "@odata.type" = "#microsoft.graph.mobileAppAssignment" + intent = $Intent + target = $target + settings = $null + }) + } + Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/assign" -Method POST -Body $body +} + +function Get-GraphMobileAppAssignments { + param([Parameter(Mandatory=$true)][string]$AppId) + $resp = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/assignments" -Method GET + if ($resp.value) { return @($resp.value) } + return @() +} + +function Remove-GraphAppAssignmentByGroup { + # Loescht jede Zuweisung der App, deren Target zur uebergebenen Group passt. + # Optional kann ein Intent gesetzt werden, dann werden nur Zuweisungen mit + # genau diesem Intent (required/available) entfernt. + param( + [Parameter(Mandatory=$true)][string]$AppId, + [Parameter(Mandatory=$true)][string]$GroupId, + [string]$Intent + ) + $assignments = Get-GraphMobileAppAssignments -AppId $AppId + $deleted = @() + foreach ($a in $assignments) { + $tgt = $a.target + if (-not $tgt) { continue } + $tgtType = [string]$tgt.'@odata.type' + + $match = $false + switch ($GroupId) { + "ALL_USERS" { if ($tgtType -eq '#microsoft.graph.allLicensedUsersAssignmentTarget') { $match = $true } } + "ALL_DEVICES" { if ($tgtType -eq '#microsoft.graph.allDevicesAssignmentTarget') { $match = $true } } + default { + if ($tgtType -eq '#microsoft.graph.groupAssignmentTarget' -and [string]$tgt.groupId -eq $GroupId) { $match = $true } + } + } + if (-not $match) { continue } + if ($Intent -and ([string]$a.intent) -ne $Intent) { continue } + + $null = Invoke-MgGraphRequest ` + -Uri "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/assignments/$($a.id)" ` + -Method DELETE + $deleted += [pscustomobject]@{ + AssignmentId = [string]$a.id + Intent = [string]$a.intent + TargetType = $tgtType + } + } + return $deleted +} + +function Update-GraphMobileApp { + # PATCH auf eine MobileApp. Wichtig: '@odata.type' MUSS im Body sein, sonst + # gibt Graph "ResourceNotSupported" / 400 zurueck (polymorpher Typ). + # Versucht beta, faellt bei 400/404/405 auf v1.0 zurueck. + param( + [Parameter(Mandatory=$true)][string]$AppId, + [Parameter(Mandatory=$true)][string]$AppTypeRaw, # z.B. '#microsoft.graph.win32LobApp' + [Parameter(Mandatory=$true)][hashtable]$Patch # z.B. @{ displayName = 'neuer Name' } + ) + + $body = [ordered]@{} + $body['@odata.type'] = $AppTypeRaw + foreach ($k in $Patch.Keys) { $body[$k] = $Patch[$k] } + $json = $body | ConvertTo-Json -Depth 5 -Compress + + $endpoints = @( + "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId", + "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/$AppId" + ) + $lastErr = $null + foreach ($uri in $endpoints) { + try { + $null = Invoke-MgGraphRequest -Uri $uri -Method PATCH -Body $json -ContentType "application/json" + return + } catch { + $lastErr = $_ + $msg = "$($_.Exception.Message)" + try { $msg += " " + $_.ErrorDetails.Message } catch {} + if ($msg -match '404|400|405|MethodNotAllowed|NotSupported') { continue } + throw + } + } + if ($lastErr) { + $body = $null + try { $body = $lastErr.ErrorDetails.Message } catch {} + $detail = if ($body) { " | Graph-Response: $body" } else { "" } + throw [System.Exception]::new("PATCH fehlgeschlagen: $($lastErr.Exception.Message)$detail") + } +} + +# ============================================================ +# Content-Update: neue Setup-Datei in eine native App hochladen +# (Phase 1: .intunewin / win32LobApp — vorverschluesselt) +# ============================================================ + +function Read-IntuneWinPackage { + # Entpackt eine .intunewin (ZIP) und liest die bereits verschluesselte + # Innen-Datei + die EncryptionInfo aus Metadata/Detection.xml. Es wird + # NICHT neu verschluesselt — IntuneWinAppUtil hat das schon getan. + param([Parameter(Mandatory=$true)][string]$Path) + + Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction SilentlyContinue + $archive = [System.IO.Compression.ZipFile]::OpenRead($Path) + try { + $detEntry = $archive.Entries | Where-Object { $_.FullName -match 'IntuneWinPackage/Metadata/Detection\.xml$' } | Select-Object -First 1 + if (-not $detEntry) { throw "Detection.xml nicht im .intunewin gefunden — ist die Datei wirklich ein IntuneWinAppUtil-Paket?" } + + # Detection.xml lesen + $sr = New-Object System.IO.StreamReader($detEntry.Open()) + $xmlText = $sr.ReadToEnd(); $sr.Close() + [xml]$xml = $xmlText + $info = $xml.ApplicationInfo + $enc = $info.EncryptionInfo + if (-not $enc) { throw "EncryptionInfo fehlt in Detection.xml" } + + $fileName = [string]$info.FileName # innerer Dateiname (z.B. setup.intunewin) + $unencSize = [int64]$info.UnencryptedContentSize + + # Innere, bereits verschluesselte Datei extrahieren + $contentEntry = $archive.Entries | Where-Object { $_.FullName -match "IntuneWinPackage/Contents/.+" } | Select-Object -First 1 + if (-not $contentEntry) { throw "Verschluesselte Innen-Datei (Contents/) nicht gefunden" } + $ms = New-Object System.IO.MemoryStream + $cs = $contentEntry.Open() + $cs.CopyTo($ms); $cs.Close() + $encryptedBytes = $ms.ToArray(); $ms.Dispose() + + return @{ + EncryptedBytes = $encryptedBytes + Size = $unencSize + SizeEncrypted = [int64]$encryptedBytes.Length + FileName = $fileName + EncryptionInfo = @{ + '@odata.type' = '#microsoft.graph.fileEncryptionInfo' + encryptionKey = [string]$enc.EncryptionKey + macKey = [string]$enc.MacKey + initializationVector = [string]$enc.InitializationVector + mac = [string]$enc.Mac + profileIdentifier = [string]$enc.ProfileIdentifier + fileDigest = [string]$enc.FileDigest + fileDigestAlgorithm = [string]$enc.FileDigestAlgorithm + } + } + } finally { + $archive.Dispose() + } +} + +function New-GraphAppContentVersion { + # Schritt 1: neue contentVersion anlegen. GraphType z.B. 'win32LobApp'. + param([string]$AppId, [string]$GraphType) + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/$GraphType/contentVersions" + $resp = Invoke-MgGraphRequestRetry -Uri $uri -Method POST -Body '{}' -ContentType 'application/json' + $cvId = if ($resp.id) { [string]$resp.id } else { [string]$resp.Id } + if (-not $cvId) { throw "contentVersion-Anlage lieferte keine id zurueck" } + return $cvId +} + +function New-GraphAppContentFile { + # Schritt 2: File-Eintrag in der contentVersion anlegen (mit Klartext-Size + + # verschluesselter Size). Liefert fileId. + param( + [string]$AppId, [string]$GraphType, [string]$CvId, + [string]$Name, [int64]$Size, [int64]$SizeEncrypted, $Manifest = $null + ) + $body = [ordered]@{ + '@odata.type' = '#microsoft.graph.mobileAppContentFile' + name = $Name + size = $Size + sizeEncrypted = $SizeEncrypted + isDependency = $false + } + if ($Manifest) { $body['manifest'] = $Manifest } # base64 (MSI/MSIX); win32 = weglassen + $json = $body | ConvertTo-Json -Depth 5 -Compress + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/$GraphType/contentVersions/$CvId/files" + $resp = Invoke-MgGraphRequestRetry -Uri $uri -Method POST -Body $json -ContentType 'application/json' + $fileId = if ($resp.id) { [string]$resp.id } else { [string]$resp.Id } + if (-not $fileId) { throw "File-Anlage lieferte keine id zurueck" } + return $fileId +} + +function Get-GraphAppContentFile { + param([string]$AppId, [string]$GraphType, [string]$CvId, [string]$FileId) + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/$GraphType/contentVersions/$CvId/files/$FileId" + return Invoke-MgGraphRequestRetry -Uri $uri -Method GET +} + +function Wait-GraphContentFileState { + # Schritt 3/6: pollt den File-Eintrag bis TargetState erreicht ist. + # Bricht bei *Failed-Zustaenden und Timeout ab. + param( + [string]$AppId, [string]$GraphType, [string]$CvId, [string]$FileId, + [string]$TargetState, [int]$TimeoutSec = 180 + ) + $deadline = (Get-Date).AddSeconds($TimeoutSec) + while ($true) { + $f = Get-GraphAppContentFile -AppId $AppId -GraphType $GraphType -CvId $CvId -FileId $FileId + $state = if ($f.uploadState) { [string]$f.uploadState } else { [string]$f.uploadstate } + if ($state -eq $TargetState) { return $f } + if ($state -match 'Failed') { throw "Upload-State '$state' (erwartet '$TargetState') — Graph hat den Schritt abgelehnt." } + if ((Get-Date) -gt $deadline) { throw "Timeout beim Warten auf '$TargetState' (letzter State: '$state')." } + Start-Sleep -Milliseconds 1500 + } +} + +function Send-GraphContentToAzureBlob { + # Schritt 4: verschluesselte Bytes als Block-Blob in die SAS-URL laden. + # Chunked (6 MB). WICHTIG: die Bytes werden als ISO-8859-1-String gesendet + # (1:1 Byte<->Zeichen) mit content-type 'text/plain; charset=iso-8859-1' — + # NICHT als rohes byte[]. Invoke-WebRequest verfaelscht in PS 5.1 binaere + # byte[]-Bodies (Bytes > 127), was korrupten Content nach Azure laedt. + # Schema 1:1 aus der MSEndpointMgr/IntuneWin32App-Referenz uebernommen. + param([Parameter(Mandatory=$true)][string]$SasUri, [Parameter(Mandatory=$true)][byte[]]$Bytes) + + $isoEncoding = [System.Text.Encoding]::GetEncoding("iso-8859-1") + $chunkSize = 6 * 1024 * 1024 + $total = $Bytes.Length + $blockIds = New-Object System.Collections.Generic.List[string] + $idx = 0 + for ($offset = 0; $offset -lt $total; $offset += $chunkSize) { + $len = [Math]::Min($chunkSize, $total - $offset) + $chunk = New-Object byte[] $len + [Array]::Copy($Bytes, $offset, $chunk, 0, $len) + # Block-ID: base64 einer 0-gepaddeten Nummer (gleiche Laenge fuer alle) + $blockId = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($idx.ToString('D6'))) + $blockIds.Add($blockId) + $encodedChunk = $isoEncoding.GetString($chunk) + $putUri = "$SasUri&comp=block&blockid=$([uri]::EscapeDataString($blockId))" + $headers = @{ 'x-ms-blob-type' = 'BlockBlob'; 'content-type' = 'text/plain; charset=iso-8859-1' } + Invoke-WebRequest -Uri $putUri -Method PUT -Headers $headers -Body $encodedChunk -UseBasicParsing | Out-Null + $idx++ + } + # Block-Liste committen (Invoke-RestMethod, content-type text/plain; charset=UTF-8) + $xml = '' + foreach ($b in $blockIds) { $xml += "$b" } + $xml += '' + $listUri = "$SasUri&comp=blocklist" + Invoke-RestMethod -Uri $listUri -Method PUT -Body $xml -Headers @{ 'content-type' = 'text/plain; charset=UTF-8' } | Out-Null +} + +function Invoke-GraphContentRenewUpload { + param([string]$AppId, [string]$GraphType, [string]$CvId, [string]$FileId) + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/$GraphType/contentVersions/$CvId/files/$FileId/renewUpload" + $null = Invoke-MgGraphRequestRetry -Uri $uri -Method POST +} + +function Invoke-GraphContentCommit { + # Schritt 5: commit mit fileEncryptionInfo. + param([string]$AppId, [string]$GraphType, [string]$CvId, [string]$FileId, [hashtable]$EncryptionInfo) + $body = @{ fileEncryptionInfo = $EncryptionInfo } | ConvertTo-Json -Depth 5 -Compress + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/$GraphType/contentVersions/$CvId/files/$FileId/commit" + $null = Invoke-MgGraphRequestRetry -Uri $uri -Method POST -Body $body -ContentType 'application/json' +} + +function Update-GraphAppContent { + # Orchestrator: laedt eine neue Setup-Datei hoch und aktiviert sie. + # Phase 1 unterstuetzt .intunewin (win32LobApp). $ProgressCb (scriptblock) + # optional fuer Schritt-Logging. Gibt das Ergebnis-Objekt zurueck. + param( + [Parameter(Mandatory=$true)][string]$AppId, + [Parameter(Mandatory=$true)][string]$GraphTypeRaw, # z.B. '#microsoft.graph.win32LobApp' + [Parameter(Mandatory=$true)][string]$FilePath, + [string]$DisplayVersion, + [scriptblock]$ProgressCb + ) + $report = { param($step) if ($ProgressCb) { & $ProgressCb $step } ; Write-Host " [CONTENT] $step" -ForegroundColor DarkCyan } + + $graphType = ($GraphTypeRaw -replace '^#microsoft\.graph\.', '') # win32LobApp + $odataCast = "graph.$graphType" + + # 1) Paket lesen (Phase 1: nur .intunewin) + & $report "Lese Paket" + $ext = [IO.Path]::GetExtension($FilePath).ToLower() + if ($ext -ne '.intunewin') { throw "Phase 1 unterstuetzt nur .intunewin. Datei: $ext" } + $pkg = Read-IntuneWinPackage -Path $FilePath + + # 2) contentVersion + file anlegen + & $report "Lege Content-Version an" + $cvId = New-GraphAppContentVersion -AppId $AppId -GraphType $odataCast + $fileId = New-GraphAppContentFile -AppId $AppId -GraphType $odataCast -CvId $cvId -Name $pkg.FileName -Size $pkg.Size -SizeEncrypted $pkg.SizeEncrypted + + # 3) auf SAS warten + & $report "Warte auf Azure-Speicher-URL" + $f = Wait-GraphContentFileState -AppId $AppId -GraphType $odataCast -CvId $cvId -FileId $fileId -TargetState 'azureStorageUriRequestSuccess' -TimeoutSec 120 + $sas = if ($f.azureStorageUri) { [string]$f.azureStorageUri } else { [string]$f.azurestorageuri } + if (-not $sas) { throw "Keine azureStorageUri erhalten" } + + # 4) Upload zu Azure Blob + & $report "Lade Datei hoch ($([int]($pkg.SizeEncrypted/1MB)) MB)" + Send-GraphContentToAzureBlob -SasUri $sas -Bytes $pkg.EncryptedBytes + + # 5) commit + & $report "Committe Datei" + Invoke-GraphContentCommit -AppId $AppId -GraphType $odataCast -CvId $cvId -FileId $fileId -EncryptionInfo $pkg.EncryptionInfo + + # 6) auf commit-Erfolg warten + & $report "Warte auf Commit-Bestaetigung" + $null = Wait-GraphContentFileState -AppId $AppId -GraphType $odataCast -CvId $cvId -FileId $fileId -TargetState 'commitFileSuccess' -TimeoutSec 180 + + # 7) App auf neue Version zeigen (+ optional displayVersion) + & $report "Aktiviere neue Version" + $patch = @{ committedContentVersion = $cvId } + if ($DisplayVersion) { $patch['displayVersion'] = $DisplayVersion } + Update-GraphMobileApp -AppId $AppId -AppTypeRaw $GraphTypeRaw -Patch $patch + + & $report "Fertig" + return @{ ok = $true; contentVersion = $cvId; fileId = $fileId; size = $pkg.Size; sizeEncrypted = $pkg.SizeEncrypted; displayVersion = $DisplayVersion } +} + +function Get-GraphAppDetailsBatch { + # Holt App-Stammdaten + installSummary + relationships in EINEM + # HTTP-Roundtrip via Microsoft Graph $batch. Server-seitig parallelisiert + # — statt 3 sequenzieller Calls (jeder ~300-800ms) nur ein einziger + # Roundtrip in der Zeit des langsamsten Sub-Calls. + # Falls ein Sub-Call serverseitig fehlschlaegt, wird der jeweilige + # Teil $null gesetzt — der Rest funktioniert weiter. + param([Parameter(Mandatory=$true)][string]$AppId) + + $body = @{ + requests = @( + @{ id = 'app'; method = 'GET'; url = "/deviceAppManagement/mobileApps/$($AppId)?`$expand=categories" }, + @{ id = 'summary'; method = 'GET'; url = "/deviceAppManagement/mobileApps/$AppId/installSummary" }, + @{ id = 'rels'; method = 'GET'; url = "/deviceAppManagement/mobileApps/$AppId/relationships" } + ) + } + $json = $body | ConvertTo-Json -Depth 5 -Compress + + $sw = [System.Diagnostics.Stopwatch]::StartNew() + $resp = $null + try { + $resp = Invoke-MgGraphRequest ` + -Uri 'https://graph.microsoft.com/beta/$batch' ` + -Method POST ` + -Body $json ` + -ContentType 'application/json' + } catch { + Write-Host " [BATCH] $AppId fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor DarkYellow + return @{ App = $null; InstallSummary = $null; Relationships = @() } + } + $sw.Stop() + + $result = @{ App = $null; InstallSummary = $null; Relationships = @() } + $stati = @() + foreach ($r in @($resp.responses)) { + $st = [int]$r.status + $id = [string]$r.id + $stati += "$id=$st" + switch ($id) { + 'app' { + if ($st -eq 200) { $result.App = $r.body } + } + 'summary' { + if ($st -eq 200) { $result.InstallSummary = $r.body } + } + 'rels' { + if ($st -eq 200 -and $r.body.value) { + $result.Relationships = @($r.body.value) + } + } + } + } + Write-Host " [BATCH] $AppId in $($sw.ElapsedMilliseconds)ms ($($stati -join ', '))" -ForegroundColor DarkGray + return $result +} + +function Get-GraphMobileAppInstallSummary { + # Installations-Statistik einer App. Endpoint ist Singular ("installSummary"), + # nicht zu verwechseln mit deviceStatuses/userStatuses (Per-Device/Per-User). + param([Parameter(Mandatory=$true)][string]$AppId) + try { + return Invoke-MgGraphRequest ` + -Uri "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/installSummary" ` + -Method GET + } catch { + return $null + } +} + +function Get-GraphMobileAppRelationships { + # Liefert die Beziehungen einer App (Dependency / Supersedence). 400-Fehler + # beim Delete kommen oft daher, dass eine andere App diese App als Dependency + # oder Supersedence referenziert - dann muss erst die Gegenseite entfernt werden. + param([Parameter(Mandatory=$true)][string]$AppId) + try { + $uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId/relationships" + $resp = Invoke-MgGraphRequest -Uri $uri -Method GET + $items = @() + if ($resp.value) { $items = @($resp.value) } + Write-Host " [RELS] $AppId -> $($items.Count) Eintraege via /relationships" -ForegroundColor DarkGray + if ($items.Count -gt 0) { + $byType = $items | Group-Object { [string]$_.'@odata.type' } | ForEach-Object { "$($_.Name)=$($_.Count)" } + Write-Host " [RELS] Typen: $($byType -join ', ')" -ForegroundColor DarkGray + } + return $items + } catch { + Write-Host " [RELS] Lesen fehlgeschlagen fuer $AppId : $($_.Exception.Message)" -ForegroundColor DarkYellow + return @() + } +} + +function Remove-GraphMobileApp { + # Versucht die App ueber beta zu loeschen; fallback auf v1.0 falls beta 400/404 gibt. + # Wirft eine angereicherte Exception mit der Original-Graph-Fehlermeldung. + param([Parameter(Mandatory=$true)][string]$AppId) + + $endpoints = @( + "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$AppId", + "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/$AppId" + ) + $lastErr = $null + foreach ($uri in $endpoints) { + try { + $null = Invoke-MgGraphRequest -Uri $uri -Method DELETE + return # success + } catch { + $lastErr = $_ + # ErrorDetails.Message ist meist der Raw-JSON-Body von Graph + $body = $null + try { $body = $_.ErrorDetails.Message } catch {} + # 405/Resource-not-found auf beta -> v1.0 probieren. Bei 400 ebenfalls + # einen Versuch wagen, das ist im Test mit win32LobApp gelegentlich noetig. + $msg = "$($_.Exception.Message) $body" + if ($msg -match '404|400|405|MethodNotAllowed|NotSupported') { + continue + } else { + throw + } + } + } + # Beide Endpoints haben versagt -> letzte Fehlermeldung anreichern und werfen + if ($lastErr) { + $body = $null + try { $body = $lastErr.ErrorDetails.Message } catch {} + $detail = if ($body) { " | Graph-Response: $body" } else { "" } + throw [System.Exception]::new("Delete fehlgeschlagen: $($lastErr.Exception.Message)$detail") + } +} + +# Excluded App-Typen aus dem Original-Script +$script:ExcludedAppTypes = @( + '#microsoft.graph.iosLobApp', '#microsoft.graph.iosStoreApp', '#microsoft.graph.iosVppApp', + '#microsoft.graph.managedIOSLobApp', '#microsoft.graph.managedIOSStoreApp', + '#microsoft.graph.androidLobApp', '#microsoft.graph.androidStoreApp', '#microsoft.graph.androidForWorkApp', + '#microsoft.graph.androidManagedStoreApp', '#microsoft.graph.androidManagedStoreWebApp', + '#microsoft.graph.managedAndroidLobApp', '#microsoft.graph.managedAndroidStoreApp', + '#microsoft.graph.macOSDmgApp', '#microsoft.graph.macOSLobApp', '#microsoft.graph.macOSMicrosoftDefenderApp', + '#microsoft.graph.macOSMicrosoftEdgeApp', '#microsoft.graph.macOSOfficeSuiteApp', '#microsoft.graph.macOSPkgApp', + '#microsoft.graph.macOsVppApp' +) + +function Test-AppTypeAllowed { + param([string]$Type) + return -not ($script:ExcludedAppTypes -contains $Type) +} + +function ConvertTo-AppFriendlyType { + param([string]$Type) + switch ($Type) { + '#microsoft.graph.win32LobApp' { 'Win32' } + '#microsoft.graph.windowsStoreApp' { 'Store' } + '#microsoft.graph.microsoftStoreForBusinessApp' { 'MS Store' } + '#microsoft.graph.officeSuiteApp' { 'M365 Apps' } + '#microsoft.graph.windowsMicrosoftEdgeApp' { 'Edge' } + '#microsoft.graph.windowsWebApp' { 'WebApp' } + '#microsoft.graph.winGetApp' { 'WinGet' } + '#microsoft.graph.windowsPhone81AppX' { 'APPX' } + '#microsoft.graph.windowsAppX' { 'APPX' } + '#microsoft.graph.windowsUniversalAppX' { 'APPX' } + '#microsoft.graph.windowsMobileMSI' { 'MSI' } + default { + ($Type -replace '#microsoft\.graph\.','') + } + } +} + +function Get-GraphErrorFriendly { + param([Parameter(Mandatory=$true)]$ErrorRecord) + $msg = $ErrorRecord.Exception.Message + switch -Regex ($msg) { + "already exist|bereits vorhanden|One or more added object references already exist" { + return @{ Code="MemberExists"; Friendly="Mitglied bereits in Gruppe"; IsWarning=$true; Full=$msg } + } + "Insufficient privileges|Access denied|Authorization_RequestDenied|403" { + return @{ Code="Forbidden(403)"; Friendly="Keine Berechtigung. Erforderlich: Group.ReadWrite.All / DeviceManagementApps.ReadWrite.All"; IsWarning=$false; Full=$msg } + } + "does not exist|not found|Request_ResourceNotFound|404" { + return @{ Code="NotFound(404)"; Friendly="Objekt nicht gefunden"; IsWarning=$false; Full=$msg } + } + "Too many requests|throttled|429" { + return @{ Code="Throttled(429)"; Friendly="Zu viele Anfragen. Bitte warten."; IsWarning=$false; Full=$msg } + } + "BadRequest|400" { + if ($msg -match "exist|vorhanden|member") { + return @{ Code="MemberExists"; Friendly="Mitglied bereits in Gruppe"; IsWarning=$true; Full=$msg } + } + return @{ Code="BadRequest(400)"; Friendly="Ungueltige Anfrage"; IsWarning=$false; Full=$msg } + } + default { + return @{ Code="Error"; Friendly=$msg; IsWarning=$false; Full=$msg } + } + } +} + +function Test-AppVendorRule { + # True wenn die App den angegebenen Detection-Regel-Block matcht. + param($RawApp, $Rule) + if (-not $Rule -or -not $Rule.field -or -not $Rule.pattern) { return $false } + $value = switch ($Rule.field) { + 'commandLine' { @($RawApp.installCommandLine, $RawApp.uninstallCommandLine) -join " " } + 'developer' { [string]$RawApp.developer } + 'publisher' { [string]$RawApp.publisher } + 'displayName' { [string]$RawApp.displayName } + 'notes' { [string]$RawApp.notes } + 'owner' { [string]$RawApp.owner } + default { "" } + } + if (-not $value) { return $false } + switch ($Rule.match) { + 'equals' { return ($value -eq $Rule.pattern) } + 'startsWith' { return $value.StartsWith($Rule.pattern, [StringComparison]::OrdinalIgnoreCase) } + 'regex' { + try { return ($value -match $Rule.pattern) } + catch { return $false } # ungueltiger Regex -> Vendor matcht halt nicht + } + default { return ($value -match [regex]::Escape($Rule.pattern)) } # 'contains' + } +} + +function Resolve-AppVendorSource { + # Iteriert ueber Settings.vendors und liefert displayName des ersten + # passenden Vendors. Default: "Intune" wenn keiner matcht. + param($RawApp, $Vendors) + if ($null -eq $Vendors) { return "Intune" } + foreach ($v in @($Vendors)) { + if ($v -and (Test-AppVendorRule -RawApp $RawApp -Rule $v.detection)) { + return [string]$v.displayName + } + } + return "Intune" +} + +function Format-AppForFrontend { + param($RawApp, $AllGroupsLookup) + # AllGroupsLookup: hashtable groupId -> displayName (fuer Anzeige der zugewiesenen Gruppen) + $available = @() + $required = @() + foreach ($a in @($RawApp.assignments)) { + $tgt = $a.target + $tgtType = $tgt.'@odata.type' + $entry = $null + if ($tgtType -eq '#microsoft.graph.allLicensedUsersAssignmentTarget') { + $entry = @{ GroupId="ALL_USERS"; GroupName="All Users"; IsNative=$true } + } elseif ($tgtType -eq '#microsoft.graph.allDevicesAssignmentTarget') { + $entry = @{ GroupId="ALL_DEVICES"; GroupName="All Devices"; IsNative=$true } + } elseif ($tgtType -eq '#microsoft.graph.groupAssignmentTarget') { + $gid = $tgt.groupId + $name = if ($AllGroupsLookup -and $AllGroupsLookup.ContainsKey($gid)) { $AllGroupsLookup[$gid] } else { $gid } + $entry = @{ GroupId=$gid; GroupName=$name; IsNative=$false } + } elseif ($tgtType -eq '#microsoft.graph.exclusionGroupAssignmentTarget') { + continue + } + if ($null -ne $entry) { + switch ($a.intent) { + 'available' { $available += $entry } + 'required' { $required += $entry } + } + } + } + # Version aus moeglichen Feldern (je nach App-Typ) + $version = $null + foreach ($f in @('displayVersion','version','productVersion','identityVersion','officeSuiteAppVersion')) { + if ($RawApp.$f) { $version = [string]$RawApp.$f; break } + } + + # Quelle: PMPC-Direkterkennung zuerst (das hat schon immer funktioniert, + # bleibt damit auch bei kaputter Settings/Vendor-Registry zuverlaessig). + # Erst wenn das nicht greift, fragen wir die Vendor-Registry — dort liegen + # Robopack & weitere konfigurierbare Vendoren. + $source = "Intune" + if ($RawApp.installCommandLine -and $RawApp.installCommandLine -match "PatchMyPC") { + $source = "PatchMyPC" + } elseif ($RawApp.uninstallCommandLine -and $RawApp.uninstallCommandLine -match "PatchMyPC") { + $source = "PatchMyPC" + } else { + $vendorSource = Resolve-AppVendorSource -RawApp $RawApp -Vendors $script:Settings.vendors + if ($vendorSource -and $vendorSource -ne "Intune" -and $vendorSource -ne "PatchMyPC") { + $source = $vendorSource + } + } + + return [pscustomobject]@{ + AppId = $RawApp.id + AppName = $RawApp.displayName + AppType = ConvertTo-AppFriendlyType -Type $RawApp.'@odata.type' + AppTypeRaw = $RawApp.'@odata.type' + Publisher = $RawApp.publisher + Version = $version + Source = $source + IsAssigned = ($RawApp.isAssigned -eq $true) + AvailableGroups = $available + RequiredGroups = $required + AvailableCount = $available.Count + RequiredCount = $required.Count + # Kategorien fuer Filter + Anzeige. Get-AppCategoryNames liegt in Api.ps1, + # ist aber global dot-sourced. Liefert immer ein String-Array (ggf. leer). + Categories = (Get-AppCategoryNames -RawCategories $RawApp.categories -AppId $RawApp.id) + # ISO-Strings damit JS new Date() es zuverlaessig parst — fuer Filter + # nach Aenderungs-Zeitraum (App-Liste, ohne Detail-Roundtrip). + CreatedDateTime = ConvertTo-IsoDate $RawApp.createdDateTime + LastModifiedDateTime = ConvertTo-IsoDate $RawApp.lastModifiedDateTime + } +} diff --git a/src/Models.ps1 b/src/Models.ps1 new file mode 100644 index 0000000..5ce99a6 --- /dev/null +++ b/src/Models.ps1 @@ -0,0 +1,300 @@ +# Datenklassen / Hilfen fuer Frontend-JSON + +function ConvertTo-Json2 { + param([Parameter(ValueFromPipeline=$true)]$InputObject, [int]$Depth = 12) + process { + return $InputObject | ConvertTo-Json -Depth $Depth -Compress + } +} + +# Normalisiert ein potentielles Datum (DateTime, DateTimeOffset, String, +# /Date(ms)/, $null) auf ein ISO-8601-String — damit JS' new Date() es +# zuverlaessig parsen kann. +function ConvertTo-IsoDate { + param($Value) + if ($null -eq $Value) { return $null } + if ($Value -is [DateTime]) { return $Value.ToUniversalTime().ToString('o') } + if ($Value -is [DateTimeOffset]) { return $Value.UtcDateTime.ToString('o') } + $s = [string]$Value + if ([string]::IsNullOrWhiteSpace($s)) { return $null } + # Microsoft-Legacy "/Date(1234567890123)/" + if ($s -match '^\/Date\((-?\d+)') { + try { return ([DateTimeOffset]::FromUnixTimeMilliseconds([long]$matches[1])).UtcDateTime.ToString('o') } catch {} + } + # Schon ein parsbares Datum? + try { return ([DateTime]$s).ToUniversalTime().ToString('o') } catch {} + return $s +} + +# ============================================================ +# Settings: editierbare Konfiguration, persistiert als JSON +# unter %APPDATA%\IntuneAppManager-Web\settings.json +# ============================================================ + +function Get-SettingsPath { + $dir = Join-Path $env:APPDATA "IntuneAppManager-Web" + if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null } + return Join-Path $dir "settings.json" +} + +function Get-DefaultSettings { + # Tenant-spezifische Felder (tenantId, clientId, departments.prefix, + # rpa.groupNames) sind absichtlich leer — eine frische Installation + # zwingt den Admin durchs Setup. Generische Werte (Scopes, Naming-Schemas, + # Theme) sind branchenuebliche Startpunkte und bleiben besetzt. + return [pscustomobject]@{ + connection = [pscustomobject]@{ + tenantId = "" + clientId = "" + clientIdRo = "" + # DeviceManagementApps.ReadWrite.All ist Pflicht: assign (native All + # Users/Devices), PATCH (Rename) und DELETE auf mobileApps brauchen + # ReadWrite — Read.All allein liefert dort 403. Verifiziert via + # msgraph-Skill gegen den offiziellen Graph-Permission-Index. + scopes = @("Group.ReadWrite.All", "GroupMember.ReadWrite.All", "User.Read.All", "DeviceManagementApps.ReadWrite.All") + scopesRo = @("Group.Read.All", "GroupMember.Read.All", "User.Read.All", "DeviceManagementApps.Read.All") + } + departments = [pscustomobject]@{ + # Ein oder mehrere Praefixe fuer den Abteilungs-Modus (linke Spalte). + # Mehrfach moeglich (z.B. "abt-hm" + "abt-extern"). Pflicht: mindestens + # ein Eintrag im Setup. Der alte Single-String 'prefix' bleibt fuer + # Rueckwaerts-Kompatibilitaet — Get-DepartmentPrefixes liest beides. + prefixes = @() + prefix = "" + } + rpa = [pscustomobject]@{ + # Explizite Liste der RPA-Gruppen. Leer = RPA-Tab zeigt Hinweis. + groupNames = @() + } + userSearch = [pscustomobject]@{ + # In welchen Feldern bei der Benutzersuche gesucht wird. + # Erlaubt: displayName, userPrincipalName, mail, department. + fields = @("displayName", "userPrincipalName", "mail") + } + requiredGroupNaming = [pscustomobject]@{ + # Wird beim "+ Required-Gruppe"-Workflow verwendet: + # {prefix}{slug-vom-app-name}{suffix} + prefix = "intune-win-app-" + suffix = "-required" + } + availableGroupNaming = [pscustomobject]@{ + # Analog zu requiredGroupNaming — fuer "+ Available-Gruppe"-Workflow. + prefix = "intune-win-app-" + suffix = "-available" + } + branding = [pscustomobject]@{ + # Logo-Dateiname relativ zum Projekt-Root (dort liegen auch + # intune.png/pmpc.png/application.png). $null = Letter "I" Fallback. + logoFile = "application.png" + } + # Vendor-Registry: jede App wird gegen diese Liste in Reihenfolge + # gepruef; erster Match gewinnt. Source-String im App-Objekt = + # vendor.displayName (sonst "Intune"). Tenants koennen Detection- + # Regeln, Portal-URLs und Blocking pro Vendor in settings.json + # ueberschreiben. + vendors = @( + [pscustomobject]@{ + id = "patchmypc" + displayName = "PatchMyPC" + portalUrl = "https://portal.patchmypc.com/" + logoFile = "pmpc.png" + detection = [pscustomobject]@{ + field = "commandLine" # commandLine | developer | publisher | displayName | notes | owner + match = "contains" # contains | equals | regex | startsWith + pattern = "PatchMyPC" + } + block = [pscustomobject]@{ delete = $true; rename = $true } + }, + [pscustomobject]@{ + id = "robopack" + displayName = "Robopack" + portalUrl = "https://app.robopack.com/" + logoFile = "robopack.png" + detection = [pscustomobject]@{ + field = "developer" + match = "equals" + pattern = "Robopack" + } + block = [pscustomobject]@{ delete = $true; rename = $true } + } + ) + theme = [pscustomobject]@{ + # Hauptfarben fuer Highlights. Soft/Strong/Border/Bg werden im + # Frontend per rgba() aus dem Hex abgeleitet. + colors = [pscustomobject]@{ + brand = "#27a078" # Primaere Firmenfarbe: Logo-Hintergrund, Stepper-Indikator + accent = "#3b82f6" # Available-Pillen, Links, Akzent-Hover + required = "#cb2a7a" # Pink (Required-Badges) + success = "#10b981" # Bereits zugewiesen + warning = "#f59e0b" # Teilweise / Skip + error = "#ef4444" # Fehler / Destructive + rowSelected = "#71e5c4" # Hintergrund der aufgeklappten/markierten App-Zeile + detailPanel = "#f7f7f7" # Hintergrund des Details-Bereichs unter der App + } + } + } +} + +# Tiefer Merge: gespeicherte Werte ueberschreiben Defaults, neue Default- +# Keys werden trotzdem ergaenzt — robust gegen Settings-Schema-Erweiterungen. +function Merge-Settings { + param($Base, $Override) + if ($null -eq $Override) { return $Base } + $result = [ordered]@{} + foreach ($p in $Base.PSObject.Properties) { + $name = $p.Name + $bv = $p.Value + $ov = $null + $hasOverride = $false + if ($Override.PSObject.Properties[$name]) { + $ov = $Override.PSObject.Properties[$name].Value + $hasOverride = $true + } + if (-not $hasOverride) { + $result[$name] = $bv + } elseif ($bv -is [pscustomobject] -and $ov -is [pscustomobject]) { + $result[$name] = Merge-Settings -Base $bv -Override $ov + } else { + $result[$name] = $ov + } + } + # Zusaetzliche Properties aus Override, die nicht im Base sind, ignorieren — + # sie wuerden vom Backend ohnehin nicht gelesen. + return [pscustomobject]$result +} + +function Get-DepartmentPrefixes { + # Zentrale Quelle fuer die Abteilungs-Praefixe. Bevorzugt das neue + # 'prefixes'-Array; faellt sonst auf den alten Single-String 'prefix' + # zurueck (Rueckwaerts-Kompatibilitaet mit existierenden settings.json). + # Liefert immer ein String-Array (getrimmt, dedupliziert, ohne leere + # Eintraege), ggf. leer wenn nichts konfiguriert ist. + param($Settings) + $out = [System.Collections.Generic.List[string]]::new() + if ($null -eq $Settings -or $null -eq $Settings.departments) { return ,$out.ToArray() } + $d = $Settings.departments + $candidates = @() + if ($d.PSObject.Properties['prefixes']) { $candidates += @($d.prefixes) } + if ($d.PSObject.Properties['prefix'] -and $d.prefix) { $candidates += @([string]$d.prefix) } + $seen = @{} + foreach ($p in $candidates) { + if ($null -eq $p) { continue } + $t = ([string]$p).Trim() + if (-not $t) { continue } + $k = $t.ToLowerInvariant() + if ($seen.ContainsKey($k)) { continue } + $seen[$k] = $true + $out.Add($t) + } + return $out.ToArray() +} + +function Read-Settings { + $path = Get-SettingsPath + $defaults = Get-DefaultSettings + if (-not (Test-Path $path)) { return $defaults } + try { + $raw = Get-Content -Path $path -Raw -Encoding UTF8 + if ([string]::IsNullOrWhiteSpace($raw)) { return $defaults } + $saved = $raw | ConvertFrom-Json + return Merge-Settings -Base $defaults -Override $saved + } catch { + Write-Host "[SETTINGS] Lesen fehlgeschlagen, verwende Defaults: $($_.Exception.Message)" -ForegroundColor Yellow + return $defaults + } +} + +function Write-Settings { + param([Parameter(Mandatory=$true)]$Settings) + $path = Get-SettingsPath + $json = $Settings | ConvertTo-Json -Depth 10 + [IO.File]::WriteAllText($path, $json, [System.Text.Encoding]::UTF8) + Write-Host "[SETTINGS] Gespeichert: $path" -ForegroundColor DarkGray +} + +function Get-SettingsValidationErrors { + # Rudimentaere Validierung. Schwere Fehler -> Speichern ablehnen. + param($S) + $errs = @() + if (-not $S.connection.tenantId -or $S.connection.tenantId -notmatch '^[0-9a-fA-F-]{36}$') { + $errs += "Tenant ID muss eine GUID sein." + } + if (-not $S.connection.clientId -or $S.connection.clientId -notmatch '^[0-9a-fA-F-]{36}$') { + $errs += "Client ID (Read/Write) muss eine GUID sein." + } + if ($S.connection.clientIdRo -and $S.connection.clientIdRo.Trim() -and $S.connection.clientIdRo -notmatch '^[0-9a-fA-F-]{36}$') { + $errs += "Client ID (Read Only) muss eine GUID sein (oder leer lassen)." + } + if (-not $S.connection.scopes -or @($S.connection.scopes).Count -eq 0) { + $errs += "Mindestens ein Scope erforderlich." + } + $deptPrefixes = Get-DepartmentPrefixes -Settings $S + if ($deptPrefixes.Count -eq 0) { + $errs += "Mindestens ein Abteilungs-Praefix erforderlich." + } else { + $bad = @($deptPrefixes | Where-Object { $_.Trim().Length -lt 2 }) + if ($bad.Count -gt 0) { $errs += "Abteilungs-Praefixe muessen jeweils mindestens 2 Zeichen lang sein." } + } + if (-not $S.rpa.groupNames -or @($S.rpa.groupNames).Count -eq 0) { + $errs += "Mindestens eine RPA-Gruppe erforderlich." + } + $allowedUserFields = @('displayName','userPrincipalName','mail','department') + $bad = @($S.userSearch.fields | Where-Object { $_ -notin $allowedUserFields }) + if ($bad.Count -gt 0) { $errs += "Unbekannte User-Search-Felder: $($bad -join ', ')" } + if (-not $S.userSearch.fields -or @($S.userSearch.fields).Count -eq 0) { + $errs += "Mindestens ein User-Such-Feld erforderlich." + } + if (-not $S.requiredGroupNaming.prefix -or -not $S.requiredGroupNaming.suffix) { + $errs += "Required-Gruppen-Naming: Praefix und Suffix erforderlich." + } + if ($S.availableGroupNaming -and (-not $S.availableGroupNaming.prefix -or -not $S.availableGroupNaming.suffix)) { + $errs += "Available-Gruppen-Naming: Praefix und Suffix erforderlich." + } + # Vendor-Registry: jeder Eintrag muss id + detection mit field/match/pattern haben. + if ($null -ne $S.vendors) { + $allowedFields = @('commandLine','developer','publisher','displayName','notes','owner') + $allowedMatches = @('contains','equals','regex','startsWith') + $seenIds = @{} + foreach ($v in @($S.vendors)) { + if (-not $v.id -or [string]::IsNullOrWhiteSpace($v.id)) { $errs += "Vendor: 'id' erforderlich."; continue } + if ($seenIds.ContainsKey($v.id)) { $errs += "Vendor '$($v.id)': id ist nicht eindeutig."; continue } + $seenIds[$v.id] = $true + if (-not $v.displayName) { $errs += "Vendor '$($v.id)': displayName erforderlich." } + if (-not $v.detection) { $errs += "Vendor '$($v.id)': detection-Block fehlt."; continue } + if ($v.detection.field -notin $allowedFields) { $errs += "Vendor '$($v.id)': detection.field muss eines von $($allowedFields -join '|') sein." } + if ($v.detection.match -notin $allowedMatches) { $errs += "Vendor '$($v.id)': detection.match muss eines von $($allowedMatches -join '|') sein." } + if (-not $v.detection.pattern -or [string]::IsNullOrWhiteSpace($v.detection.pattern)) { $errs += "Vendor '$($v.id)': detection.pattern erforderlich." } + } + } + # Theme-Farben sind Hex-Strings (#RGB oder #RRGGBB) + if ($S.theme -and $S.theme.colors) { + foreach ($key in @('brand','accent','required','success','warning','error','rowSelected','detailPanel')) { + $val = $S.theme.colors.$key + if ($val -and $val -notmatch '^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$') { + $errs += "Farbe '$key' ist kein gueltiger Hex-Wert." + } + } + } + return $errs +} + +function New-AssignmentItem { + param( + [string]$AppId, + [string]$AppName, + [string]$AppType, + [string]$Type, # "Available" | "Required" + [string]$GroupId, + [string]$GroupName + ) + return [pscustomobject]@{ + Id = [guid]::NewGuid().ToString() + AppId = $AppId + AppName = $AppName + AppType = $AppType + Type = $Type + GroupId = $GroupId + GroupName = $GroupName + AddedAt = (Get-Date).ToString("o") + } +} diff --git a/src/Router.ps1 b/src/Router.ps1 new file mode 100644 index 0000000..10a05f2 --- /dev/null +++ b/src/Router.ps1 @@ -0,0 +1,99 @@ +# HTTP-Router: leitet Requests an statische Dateien oder API-Endpoints weiter. + +function Invoke-Router { + param([Parameter(Mandatory=$true)]$Context) + + $request = $Context.Request + $path = $request.Url.AbsolutePath.TrimEnd('/') + if ([string]::IsNullOrEmpty($path)) { $path = "/" } + $method = $request.HttpMethod + + $isApi = $path.StartsWith("/api/") + if ($isApi) { + Write-Host (">>> [{0}] {1} {2}" -f (Get-Date -Format "HH:mm:ss.fff"), $method, $path) -ForegroundColor DarkCyan + } + $reqStart = Get-Date + + # API-Endpoints + if ($isApi) { + $body = $null + if ($method -in @("POST","PUT","PATCH")) { + $body = Read-RequestBody -Context $Context + } + $query = @{} + foreach ($key in $request.QueryString.AllKeys) { + if ($null -ne $key) { $query[$key] = $request.QueryString[$key] } + } + + try { + $result = Invoke-ApiHandler -Path $path -Method $method -Body $body -Query $query + $handlerMs = [int]((Get-Date) - $reqStart).TotalMilliseconds + if ($null -eq $result) { + Send-JsonResponse -Context $Context -StatusCode 404 -Body @{ error = "Unknown endpoint: $method $path" } + Write-Host ("<<< [{0}] {1} {2} -> 404 ({3}ms)" -f (Get-Date -Format "HH:mm:ss.fff"), $method, $path, $handlerMs) -ForegroundColor DarkYellow + } else { + $statusCode = 200 + if ($result -is [hashtable] -and $result.ContainsKey('__status')) { + $statusCode = $result['__status'] + $result.Remove('__status') + } + Send-JsonResponse -Context $Context -StatusCode $statusCode -Body $result + $totalMs = [int]((Get-Date) - $reqStart).TotalMilliseconds + Write-Host ("<<< [{0}] {1} {2} -> {3} (handler={4}ms total={5}ms)" -f (Get-Date -Format "HH:mm:ss.fff"), $method, $path, $statusCode, $handlerMs, $totalMs) -ForegroundColor DarkCyan + } + } catch { + $msg = $_.Exception.Message + # Client-Disconnects (AbortController) sind harmlos und werden nicht geloggt + if ($msg -match "Netzwerkname.*nicht.*verfügbar|connection was forcibly closed|aborted by the software|response has been submitted") { + Write-Host " [client disconnect] $path" -ForegroundColor DarkGray + } else { + Write-Host "<<< [API ERROR] $path -> $msg" -ForegroundColor Red + Write-Host " Stack: $($_.ScriptStackTrace)" -ForegroundColor DarkRed + try { + Send-JsonResponse -Context $Context -StatusCode 500 -Body @{ + error = $msg + stack = $_.ScriptStackTrace + } + } catch {} + } + } + return + } + + # Assets aus dem Projekt-Root (Logos etc.) + if ($path.StartsWith("/assets/")) { + $name = $path.Substring("/assets/".Length) + $name = $name -replace "[^a-zA-Z0-9._-]", "" + $rootDir = Split-Path -Parent $script:Config.WebRoot + $file = Join-Path $rootDir $name + # Branding-Logos NIE cachen — sonst sieht der User nach dem Upload + # weiter die alte Version, auch wenn die URL gleich bleibt. + $extraHeaders = $null + if ($name -like 'branding-logo.*') { + $extraHeaders = @{ 'Cache-Control' = 'no-store, max-age=0' } + } + Send-FileResponse -Context $Context -FilePath $file -ExtraHeaders $extraHeaders + return + } + + # Reports (HTML-Reports werden in Temp gespeichert) + if ($path.StartsWith("/reports/")) { + $name = $path.Substring("/reports/".Length) + $name = $name -replace "[^a-zA-Z0-9._-]", "" + $file = Join-Path $script:Config.ReportDir $name + Send-FileResponse -Context $Context -FilePath $file + return + } + + # Statische Dateien aus www/ + $relativePath = if ($path -eq "/") { "index.html" } else { $path.TrimStart('/') } + $relativePath = $relativePath -replace '\.\.', '' # path traversal blocken + $file = Join-Path $script:Config.WebRoot $relativePath + + if (Test-Path $file -PathType Leaf) { + Send-FileResponse -Context $Context -FilePath $file + } else { + # SPA fallback - alle nicht erkannten Pfade auf index.html + Send-FileResponse -Context $Context -FilePath (Join-Path $script:Config.WebRoot "index.html") + } +} diff --git a/src/Server.ps1 b/src/Server.ps1 new file mode 100644 index 0000000..ffed947 --- /dev/null +++ b/src/Server.ps1 @@ -0,0 +1,159 @@ +# Lokaler HTTP-Server (System.Net.HttpListener) +# Single-threaded request loop - reicht fuer einen Admin-Nutzer. + +function Start-WebServer { + param([int]$Port = 8077) + + $listener = New-Object System.Net.HttpListener + $prefix = "http://localhost:$Port/" + $listener.Prefixes.Add($prefix) + + try { + $listener.Start() + } catch { + Write-Host "Server konnte nicht gestartet werden auf $prefix" -ForegroundColor Red + Write-Host "Moeglicherweise ist der Port belegt oder es fehlen Rechte." -ForegroundColor Red + Write-Host "Tipp: anderen Port mit -Port 8088 versuchen, oder als Admin starten." -ForegroundColor Yellow + Write-Host $_.Exception.Message -ForegroundColor Red + return + } + + Write-Host "Server laeuft. Warte auf Requests..." -ForegroundColor Green + Write-Host "" + + while ($listener.IsListening) { + try { + $context = $listener.GetContext() # blockiert + try { + Invoke-Router -Context $context + } catch { + Write-Host "[ERROR] $($_.Exception.Message)" -ForegroundColor Red + try { + Send-JsonResponse -Context $context -StatusCode 500 -Body @{ + error = $_.Exception.Message + stack = $_.ScriptStackTrace + } + } catch {} + } + } catch [System.Net.HttpListenerException] { + break + } catch { + Write-Host "[FATAL] $_" -ForegroundColor Red + } + } + + $listener.Stop() + $listener.Close() +} + +function Send-JsonResponse { + param( + [Parameter(Mandatory=$true)]$Context, + [int]$StatusCode = 200, + $Body = $null + ) + $response = $Context.Response + try { + $response.StatusCode = $StatusCode + $response.ContentType = "application/json; charset=utf-8" + $response.Headers.Add("Cache-Control", "no-store") + } catch { + # Headers schon gesendet — Client wahrscheinlich schon weg + return + } + + $sw = [System.Diagnostics.Stopwatch]::StartNew() + $json = if ($null -eq $Body) { "{}" } else { $Body | ConvertTo-Json -Depth 12 -Compress } + $sw.Stop() + if ($sw.ElapsedMilliseconds -gt 100) { + Write-Host " [JSON] Serialize $($json.Length) bytes in $($sw.ElapsedMilliseconds)ms (ACHTUNG > 100ms)" -ForegroundColor Yellow + } + + $bytes = [System.Text.Encoding]::UTF8.GetBytes($json) + try { + $response.ContentLength64 = $bytes.Length + $response.OutputStream.Write($bytes, 0, $bytes.Length) + $response.OutputStream.Close() + } catch [System.Net.HttpListenerException], [System.IO.IOException], [System.ObjectDisposedException] { + # Client hat die Verbindung abgebrochen (AbortController, Tab geschlossen, etc.) — irrelevant + } catch { + # Andere Fehler still mitloggen + Write-Host " [WRITE] Response-Schreiben fehlgeschlagen: $($_.Exception.GetType().Name): $($_.Exception.Message)" -ForegroundColor DarkYellow + } +} + +function Send-FileResponse { + param( + [Parameter(Mandatory=$true)]$Context, + [Parameter(Mandatory=$true)][string]$FilePath, + [string]$ContentType = $null, + [hashtable]$ExtraHeaders = $null + ) + $response = $Context.Response + if (-not (Test-Path $FilePath)) { + $response.StatusCode = 404 + $response.OutputStream.Close() + return + } + if (-not $ContentType) { + $ContentType = switch ([IO.Path]::GetExtension($FilePath).ToLower()) { + ".html" { "text/html; charset=utf-8" } + ".js" { "application/javascript; charset=utf-8" } + ".css" { "text/css; charset=utf-8" } + ".json" { "application/json; charset=utf-8" } + ".svg" { "image/svg+xml" } + ".png" { "image/png" } + ".jpg" { "image/jpeg" } + ".jpeg" { "image/jpeg" } + ".webp" { "image/webp" } + ".gif" { "image/gif" } + ".ico" { "image/x-icon" } + ".woff2"{ "font/woff2" } + ".md" { "text/markdown; charset=utf-8" } + default { "application/octet-stream" } + } + } + $bytes = [IO.File]::ReadAllBytes($FilePath) + $response.ContentType = $ContentType + + # Standard-Cache-Header: HTML/JS/CSS NICHT cachen (single-user Dev-Tool, + # Performance-Verlust irrelevant, dafuer immer aktueller Code im Browser). + # Bilder/Fonts cachen aber muessen — sonst flackert das Logo bei jedem Klick. + $ext = [IO.Path]::GetExtension($FilePath).ToLower() + $cacheCtl = if ($ext -in @('.html','.htm','.js','.css','.json')) { + 'no-store, no-cache, must-revalidate, max-age=0' + } else { + 'no-cache, must-revalidate' + } + if ($ExtraHeaders -and $ExtraHeaders.ContainsKey('Cache-Control')) { + $cacheCtl = $ExtraHeaders['Cache-Control'] + } + $response.Headers.Add('Cache-Control', $cacheCtl) + + if ($ExtraHeaders) { + foreach ($k in $ExtraHeaders.Keys) { + if ($k -eq 'Cache-Control') { continue } # bereits gesetzt + try { $response.Headers.Add($k, [string]$ExtraHeaders[$k]) } catch {} + } + } + + $response.ContentLength64 = $bytes.Length + $response.OutputStream.Write($bytes, 0, $bytes.Length) + $response.OutputStream.Close() +} + +function Read-RequestBody { + param([Parameter(Mandatory=$true)]$Context) + $request = $Context.Request + if (-not $request.HasEntityBody) { return $null } + $reader = New-Object System.IO.StreamReader($request.InputStream, $request.ContentEncoding) + $body = $reader.ReadToEnd() + $reader.Close() + if ([string]::IsNullOrWhiteSpace($body)) { return $null } + # -AsHashtable gibt es erst ab PowerShell 6 — Windows PowerShell 5.1 kennt es nicht. + # Die Endpoints behandeln sowohl Hashtable als auch PSCustomObject korrekt. + if ($PSVersionTable.PSVersion.Major -ge 6) { + return ($body | ConvertFrom-Json -AsHashtable) + } + return ($body | ConvertFrom-Json) +} diff --git a/www/app.js b/www/app.js new file mode 100644 index 0000000..0846f41 --- /dev/null +++ b/www/app.js @@ -0,0 +1,5025 @@ +// ============================================================= +// Intune Manager — Frontend +// Workflow: Connect → Select Targets → Pick Apps → Apply +// ============================================================= + +const State = { + connected: false, + readOnly: false, + account: null, + mode: 'dept', // 'dept' | 'rpa' | 'user' + targets: [], + selectedTargetIds: new Set(), + apps: [], + appFilter: { search: '', preset: 'all', category: '', onlyMember: false, hideNative: false, modFrom: '', modTo: '' }, + session: [], + membershipCache: new Map(), + loadedModes: new Set(), + appsLoaded: false, + sideTab: 'session', + // groupId → { members:Array|null, selected:Set, loading:bool, error:string|null, filter:string } + expandedGroups: new Map(), + // mode → { targets, selectedIds:Set, expandedGroups:Map } — verhindert Verlust beim Tab-Wechsel + modeCache: new Map(), + // appId → { details, loading, error } + appDetails: new Map(), + expandedApps: new Set(), +}; + +// ============================================================= +// API wrapper +// ============================================================= + +async function api(path, options = {}) { + const opts = { + method: options.method || 'GET', + headers: { 'Content-Type': 'application/json' }, + body: options.body ? JSON.stringify(options.body) : undefined, + }; + // Optionaler Timeout (z.B. fuer lange Upload-Operationen). fetch hat sonst + // keinen Default-Timeout — lauft auf localhost ewig, was hier ok ist. + let timer = null; + if (options.timeoutMs) { + const ctrl = new AbortController(); + opts.signal = ctrl.signal; + timer = setTimeout(() => ctrl.abort(), options.timeoutMs); + } + let res; + try { + res = await fetch(path, opts); + } finally { + if (timer) clearTimeout(timer); + } + let data; + try { data = await res.json(); } catch { data = {}; } + if (!res.ok) { + const msg = data.error || `HTTP ${res.status}`; + throw new Error(msg); + } + return data; +} + +// ============================================================= +// Toasts +// ============================================================= + +function toast(msg, type = 'info', title = null) { + const ico = { ok: '✓', warn: '!', err: '×', info: 'i' }[type] || 'i'; + const t = document.createElement('div'); + t.className = `toast ${type}`; + t.innerHTML = ` +
${ico}
+
+ ${title ? `
${escapeHtml(title)}
` : ''} +
${escapeHtml(msg)}
+
+ `; + document.getElementById('toasts').appendChild(t); + setTimeout(() => { + t.style.animation = 'slide-in 200ms reverse'; + setTimeout(() => t.remove(), 220); + }, type === 'err' ? 6000 : 3500); +} + +function escapeHtml(s) { + if (s == null) return ''; + return String(s).replace(/[&<>"']/g, c => ({ + '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' + }[c])); +} + +// Markdown -> HTML. Nutzt marked (gebundelt in /vendor/marked.min.js). +// breaks: true -> einzelne Newlines werden zu
, intuitiver fuer User +// gfm: true -> GitHub-Flavored Markdown (Tabellen, Strikethrough, Autolinks) +// Wenn marked aus irgendeinem Grund nicht geladen ist, faellt der Helper +// auf escapeHtml zurueck — kein Crash, nur kein Markdown. +let markedConfigured = false; +function renderMarkdown(s) { + if (s == null) return ''; + const text = String(s); + if (typeof window.marked === 'undefined') return escapeHtml(text); + if (!markedConfigured) { + window.marked.setOptions({ breaks: true, gfm: true }); + markedConfigured = true; + } + try { return window.marked.parse(text); } + catch { return escapeHtml(text); } +} + +// ============================================================= +// Loading overlay +// ============================================================= + +let loadingDepth = 0; +function setLoading(text) { + loadingDepth++; + document.getElementById('loadingText').textContent = text || 'Bitte warten...'; + document.getElementById('loading').classList.remove('hidden'); +} +function clearLoading() { + loadingDepth = Math.max(0, loadingDepth - 1); + if (loadingDepth === 0) document.getElementById('loading').classList.add('hidden'); +} + +// ============================================================= +// Workflow stepper +// ============================================================= + +// Stepper wurde entfernt — Funktion bleibt als No-Op, damit die ~12 +// bestehenden Aufrufer keine Errors werfen. Kann irgendwann mit Sed +// gemeinsam mit den Aufrufstellen rausgesnipt werden. +function updateStepper() { /* no-op */ } + +// ============================================================= +// Connection +// ============================================================= + +function showOnboarding(show) { + document.getElementById('onboarding').classList.toggle('hidden', !show); + document.getElementById('layout').classList.toggle('hidden', show); + if (show) { + // Reset state-View nur, wenn gerade keine Anmeldung lief + if (!connectInFlight) showOnboardingState('idle'); + } else { + stopDevicePolling(); + } +} + +async function refreshStatus() { + try { + const s = await api('/api/status'); + State.connected = s.connected; + State.account = s.account; + State.readOnly = !!s.readOnly; + applyReadOnlyMode(); + renderConnection(); + } catch (e) { + toast('Status konnte nicht geladen werden: ' + e.message, 'err'); + } +} + +function applyReadOnlyMode() { + document.body.classList.toggle('read-only', State.readOnly); + // Falls ein Schreib-Tab aktiv ist beim Wechsel in Read-Only -> Export-Tab zeigen + if (State.readOnly) { + const activeTab = document.querySelector('.gex-tab.active'); + if (activeTab && (activeTab.dataset.tab === 'add' || activeTab.dataset.tab === 'import')) { + if (typeof switchGexTab === 'function') switchGexTab('export'); + } + } +} + +// Bootstrap-Icons "person-circle" — Avatar mit eingebautem Kreis-Outline. +// 20px matches die visuelle Groesse der anderen Header-Icons (cog, logout). +const PERSON_ICON = ``; + +function renderConnection() { + const pill = document.getElementById('connStatus'); + const text = pill.querySelector('.conn-text'); + const btnD = document.getElementById('btnDisconnect'); + + // Avatar ist der Person-Icon — Identifikation des aktiven Accounts laeuft + // ueber den Tooltip (title-Attribut, hover). + text.innerHTML = PERSON_ICON; + + if (State.connected) { + pill.className = 'conn-pill conn-on'; + pill.title = State.account || 'Verbunden'; + btnD.classList.remove('hidden'); + showOnboarding(false); + } else { + pill.className = 'conn-pill conn-off'; + pill.title = 'Nicht verbunden'; + btnD.classList.add('hidden'); + showOnboarding(true); + } + updateStepper(); +} + +// ---------------------------------------------------------------- +// Device-Code-Login: Anmeldung direkt auf der Seite, ohne Popup- +// Fenster, ohne WAM. Nutzer kann jeden Account angeben. +// ---------------------------------------------------------------- + +let connectInFlight = false; +let devicePollTimer = null; + +function showOnboardingState(view) { + // view: 'idle' | 'requesting' | 'awaiting' | 'error' + document.querySelectorAll('[data-onboarding-view]').forEach(el => { + el.classList.toggle('hidden', el.dataset.onboardingView !== view); + }); +} + +function stopDevicePolling() { + if (devicePollTimer) { clearInterval(devicePollTimer); devicePollTimer = null; } +} + +document.getElementById('btnConnect').addEventListener('click', async () => { + if (connectInFlight) return; + connectInFlight = true; + + showOnboardingState('awaiting'); + + // Sekundenzaehler im UI + const startedAt = Date.now(); + const waitText = document.querySelector('[data-onboarding-view="awaiting"] .onboarding-text'); + const baseText = waitText ? waitText.textContent : ''; + const tickTimer = setInterval(() => { + if (waitText) { + const sec = Math.floor((Date.now() - startedAt) / 1000); + waitText.textContent = `${baseText} (Wartet seit ${sec}s)`; + } + }, 1000); + + // 90s Timeout — Connect-MgGraph blockt typisch 5-30s; 90s ist sicher + const ctrl = new AbortController(); + const timeoutId = setTimeout(() => ctrl.abort(), 90000); + + try { + const resp = await fetch('/api/connect', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + signal: ctrl.signal, + }); + clearTimeout(timeoutId); + let s = {}; + try { s = await resp.json(); } catch {} + if (!resp.ok) throw new Error(s.error || `HTTP ${resp.status}`); + if (!s.connected) throw new Error('Backend meldet nicht connected'); + + State.connected = true; + State.account = s.account; + State.readOnly = !!s.readOnly; + applyReadOnlyMode(); + renderConnection(); + const roHint = State.readOnly ? ' (Read Only)' : ''; + toast('Verbunden als ' + s.account + roHint, 'ok', 'Erfolgreich'); + autoLoadAfterConnect(); + } catch (e) { + clearTimeout(timeoutId); + let msg = e.message; + if (e.name === 'AbortError') { + msg = 'Anmeldung dauert über 90s. Möglicherweise ist das Login-Fenster im Hintergrund — prüfe die Taskleiste. Sonst PowerShell-Konsole prüfen.'; + } + document.getElementById('dcError').textContent = msg; + showOnboardingState('error'); + toast(msg, 'err', 'Verbindung fehlgeschlagen'); + } finally { + clearInterval(tickTimer); + if (waitText) waitText.textContent = baseText; + connectInFlight = false; + } +}); + +document.getElementById('btnCancelConnect')?.addEventListener('click', async () => { + stopDevicePolling(); + try { await api('/api/connect/cancel', { method: 'POST' }); } catch {} + showOnboardingState('idle'); + connectInFlight = false; +}); + +document.getElementById('btnRetryConnect')?.addEventListener('click', () => { + showOnboardingState('idle'); + connectInFlight = false; +}); + +document.getElementById('btnDisconnect').addEventListener('click', async () => { + setLoading('Trenne...'); + stopDevicePolling(); + connectInFlight = false; + try { + await api('/api/disconnect', { method: 'POST' }); + Object.assign(State, { + connected: false, account: null, + targets: [], apps: [], session: [], + appsLoaded: false, + }); + State.selectedTargetIds.clear(); + State.membershipCache.clear(); + State.loadedModes.clear(); + State.appDetails.clear(); + State.expandedApps.clear(); + State.modeCache.clear(); + renderConnection(); + renderTargets(); + renderPinnedTargets(); + renderApps(); + renderSession(); + renderExisting(); + toast('Verbindung getrennt', 'info'); + } finally { + clearLoading(); + } +}); + +async function autoLoadAfterConnect() { + // Load default mode targets + apps in parallel + const tasks = []; + if (!State.loadedModes.has(State.mode)) tasks.push(loadTargets({ silent: true })); + if (!State.appsLoaded) tasks.push(loadApps(false, { silent: true })); + await Promise.allSettled(tasks); +} + +// ============================================================= +// Mode tabs (segmented control) +// ============================================================= + +document.querySelectorAll('.seg').forEach(seg => { + seg.addEventListener('click', () => { + if (seg.classList.contains('active')) return; + const oldMode = State.mode; + const newMode = seg.dataset.mode; + + // Aktuellen Stand fuer alten Mode sichern + State.modeCache.set(oldMode, { + targets: State.targets.slice(), + selectedIds: new Set(State.selectedTargetIds), + expandedGroups: State.expandedGroups, + }); + + document.querySelectorAll('.seg').forEach(s => s.classList.remove('active')); + seg.classList.add('active'); + State.mode = newMode; + + // Stand fuer neuen Mode wiederherstellen — falls da + const cached = State.modeCache.get(newMode); + if (cached) { + State.targets = cached.targets; + State.selectedTargetIds = new Set(cached.selectedIds); + State.expandedGroups = cached.expandedGroups; + } else { + State.targets = []; + State.selectedTargetIds = new Set(); + State.expandedGroups = new Map(); + } + // Membership-Cache leeren da Targets sich aendern → andere Mitgliedschafts-Resultate + State.membershipCache.clear(); + + const search = document.getElementById('targetSearch'); + const hint = document.getElementById('userSearchHint'); + if (newMode === 'user') { + search.placeholder = 'Tippe Name oder UPN...'; + hint.classList.remove('hidden'); + // Suchwert bei User-Mode immer leer starten + search.value = ''; + search.focus(); + try { search.setSelectionRange(0, 0); } catch {} + } else { + search.placeholder = 'Filtern...'; + hint.classList.add('hidden'); + search.value = ''; + } + + renderTargets(); + onTargetSelectionChange(); + + // Auto-Load nur wenn fuer diesen Mode noch nichts geladen wurde UND es kein User-Mode ist + if (State.connected && newMode !== 'user' && !State.loadedModes.has(newMode) && State.targets.length === 0) { + loadTargets({ silent: false }); + } + }); +}); + +// ============================================================= +// Targets +// ============================================================= + +document.getElementById('btnReloadTargets').addEventListener('click', () => { + if (State.mode === 'user') { + const term = document.getElementById('targetSearch').value; + if (!term || term.length < 2) { + document.getElementById('targetSearch').focus(); + toast('Tippe mind. 2 Zeichen für Benutzersuche', 'warn'); + return; + } + runUserSearch(term); + } else { + State.loadedModes.delete(State.mode); + loadTargets({ silent: false }); + } +}); + +document.getElementById('targetSearch').addEventListener('input', e => { + if (State.mode === 'user') { + debouncedUserSearch(e.target.value); + } else { + renderTargets(); + } +}); + +// Enter key triggers explicit user search +document.getElementById('targetSearch').addEventListener('keydown', e => { + if (e.key === 'Enter' && State.mode === 'user') { + const term = e.target.value; + if (term && term.length >= 2) runUserSearch(term); + } +}); + +document.getElementById('btnTargetsSelectAll').addEventListener('click', () => { + getFilteredTargets().forEach(t => State.selectedTargetIds.add(t.Id)); + renderTargets(); + onTargetSelectionChange(); +}); + +document.getElementById('btnTargetsClear').addEventListener('click', () => { + State.selectedTargetIds.clear(); + renderTargets(); + onTargetSelectionChange(); +}); + +let userSearchTimer = null; +let userSearchAbort = null; +let userSearchCache = { query: '', results: [] }; + +function debouncedUserSearch(term) { + clearTimeout(userSearchTimer); + const t = (term || '').trim(); + if (t.length < 2) { + State.targets = []; + userSearchCache = { query: '', results: [] }; + renderTargets(); + return; + } + + // Optimistic: wenn neue Anfrage Verfeinerung der vorigen ist + // → sofort lokal filtern, kein Server-Request, NULL Latenz + const lower = t.toLowerCase(); + const cachedLower = userSearchCache.query.toLowerCase(); + if (cachedLower && lower.startsWith(cachedLower) && userSearchCache.results.length > 0) { + State.targets = userSearchCache.results.filter(u => + (u.DisplayName || '').toLowerCase().includes(lower) || + (u.UserPrincipalName || '').toLowerCase().includes(lower) || + (u.Mail || '').toLowerCase().includes(lower)); + renderTargets(); + return; + } + + userSearchTimer = setTimeout(() => runUserSearch(t), 220); +} + +async function runUserSearch(term) { + if (!State.connected) { toast('Bitte zuerst verbinden', 'warn'); return; } + + // Vorherige Anfrage abbrechen — sonst stapeln sich die Requests beim Tippen + if (userSearchAbort) { + try { userSearchAbort.abort(); } catch {} + } + userSearchAbort = new AbortController(); + const signal = userSearchAbort.signal; + + document.getElementById('targetList').innerHTML = ` +
+
+
+
+
`; + try { + const resp = await fetch('/api/users?q=' + encodeURIComponent(term), { + headers: { 'Content-Type': 'application/json' }, + signal, + }); + let data = {}; + try { data = await resp.json(); } catch {} + if (signal.aborted) return; + if (!resp.ok) throw new Error(data.error || `HTTP ${resp.status}`); + + State.targets = data.items || []; + userSearchCache = { query: term, results: State.targets.slice() }; + // Selektion auf das neue Result-Set einschraenken — sonst bleibt der alte + // User im selectedTargetIds-Set haengen und verfaelscht alle Membership- + // Anfragen (status wird Partial/None weil der alte User nicht mehr matcht). + if (State.selectedTargetIds.size > 0) { + const visibleIds = new Set(State.targets.map(t => t.Id)); + const before = State.selectedTargetIds.size; + for (const id of [...State.selectedTargetIds]) { + if (!visibleIds.has(id)) State.selectedTargetIds.delete(id); + } + if (State.selectedTargetIds.size !== before) { + State.membershipCache.clear(); + } + } + renderTargets(); + onTargetSelectionChange(); + if (State.targets.length === 0) toast(`Keine Benutzer für "${term}" gefunden`, 'warn'); + } catch (e) { + if (e.name === 'AbortError') return; // neue Suche laeuft schon + toast(e.message, 'err', 'Benutzersuche fehlgeschlagen'); + renderTargets(); + } +} + +let loadTargetsInFlight = null; // welcher Mode laeuft gerade + +async function loadTargets(opts = {}) { + if (!State.connected) { toast('Bitte zuerst verbinden', 'warn'); return; } + if (State.mode === 'user') { + const term = document.getElementById('targetSearch').value; + if (!term || term.length < 2) { + document.getElementById('targetSearch').focus(); + toast('Tippe mind. 2 Zeichen, um Benutzer zu suchen', 'warn'); + return; + } + return runUserSearch(term); + } + + const requestedMode = State.mode; + if (loadTargetsInFlight === requestedMode) return; // gleiche Anfrage laeuft bereits + loadTargetsInFlight = requestedMode; + + if (!opts.silent) setLoading('Lade ' + (requestedMode === 'rpa' ? 'RPA-Gruppen' : 'Abteilungen') + '...'); + document.getElementById('targetList').innerHTML = ` +
+
+
+
+
+
`; + try { + const url = requestedMode === 'rpa' ? '/api/groups/rpa' : '/api/groups'; + const res = await api(url); + // User koennte zwischenzeitlich den Tab gewechselt haben — Resultat verwerfen + if (State.mode !== requestedMode) return; + State.targets = res.items || []; + State.loadedModes.add(requestedMode); + State.selectedTargetIds.clear(); + State.membershipCache.clear(); + // Cache fuer diesen Mode aktualisieren + State.modeCache.set(requestedMode, { + targets: State.targets.slice(), + selectedIds: new Set(), + expandedGroups: new Map(), + }); + renderTargets(); + onTargetSelectionChange(); + if (!opts.silent) toast(`${res.count} ${requestedMode === 'rpa' ? 'RPA-Gruppen' : 'Abteilungen'} geladen`, 'ok'); + } catch (e) { + if (State.mode === requestedMode) { + toast(e.message, 'err', 'Laden fehlgeschlagen'); + renderTargets(); + } + } finally { + if (loadTargetsInFlight === requestedMode) loadTargetsInFlight = null; + if (!opts.silent) clearLoading(); + } +} + +function getFilteredTargets() { + const q = document.getElementById('targetSearch').value.toLowerCase().trim(); + if (!q || State.mode === 'user') return State.targets; + return State.targets.filter(t => + (t.DisplayName || '').toLowerCase().includes(q) || + (t.UserPrincipalName || '').toLowerCase().includes(q) + ); +} + +function renderTargets() { + const list = document.getElementById('targetList'); + const cnt = document.getElementById('targetCount'); + cnt.textContent = State.targets.length; + + const filtered = getFilteredTargets(); + + if (!State.connected) { + list.innerHTML = emptyState({ + title: 'Nicht verbunden', + text: 'Verbinde dich zuerst mit Microsoft Graph.', + }); + return; + } + + if (filtered.length === 0) { + if (State.mode === 'user') { + const term = document.getElementById('targetSearch').value; + list.innerHTML = emptyState({ + title: term && term.length >= 2 ? 'Keine Treffer' : 'Benutzer suchen', + text: term && term.length >= 2 + ? `Keine Benutzer für "${escapeHtml(term)}" gefunden.` + : 'Tippe mind. 2 Zeichen — Name, UPN oder E-Mail.', + }); + } else { + list.innerHTML = emptyState({ + title: State.targets.length === 0 ? 'Wird geladen...' : 'Keine Treffer', + text: State.targets.length === 0 + ? 'Wenn nichts kommt, klicke auf das Refresh-Icon oben rechts.' + : 'Filter zurücksetzen oder neu laden.', + }); + } + return; + } + + const isGroupMode = State.mode === 'dept' || State.mode === 'rpa'; + + list.innerHTML = filtered.map(t => { + const checked = State.selectedTargetIds.has(t.Id) ? 'checked' : ''; + const meta = t.UserPrincipalName + ? `
${escapeHtml(t.UserPrincipalName)}${t.Department ? ' · ' + escapeHtml(t.Department) : ''}
` + : ''; + const isSel = State.selectedTargetIds.has(t.Id) ? 'selected' : ''; + const isEmpty = isGroupMode && t.HasMembers === false ? 'empty' : ''; + const expanded = isGroupMode && State.expandedGroups.has(t.Id); + const expandBtn = isGroupMode + ? `` + : ''; + const expandedHtml = expanded ? renderExpandedMembers(t.Id, t.DisplayName) : ''; + // Externe Direkt-Links als dezente Icons rechts neben dem Namen. + // User → Entra-User. Gruppe → Entra-Gruppe + Mitglieder-Tab. + const linkIcons = t.UserPrincipalName + ? `${entraUserLink(t.Id, t.DisplayName)}${teamsChatLink(t.UserPrincipalName, t.DisplayName)}` + : `${entraGroupLink(t.Id, t.DisplayName)}${membersTabLink(t.Id, t.DisplayName)}`; + return `
+ + ${expandedHtml} +
`; + }).join(''); + + list.querySelectorAll('.target-row').forEach(row => { + row.addEventListener('change', e => { + const id = row.dataset.id; + if (e.target.checked) State.selectedTargetIds.add(id); + else State.selectedTargetIds.delete(id); + row.classList.toggle('selected', e.target.checked); + onTargetSelectionChange(); + }); + }); + + list.querySelectorAll('.row-expand').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + toggleGroupExpand(btn.dataset.groupId, btn.dataset.groupName); + }); + }); + + attachExpandedHandlers(list); +} + +function onTargetSelectionChange() { + State.membershipCache.clear(); + renderPinnedTargets(); + renderApps(); + renderExisting(); + updateMembershipForVisibleApps(); + renderSession(); + updateStepper(); +} + +function collectAllSelectedTargets() { + // Liefert [{ id, name, mode, meta }] ueber alle Modi hinweg. + // Aktueller Mode kommt aus State.targets/State.selectedTargetIds, + // andere Modi aus State.modeCache. + const all = []; + const seen = new Set(); + const push = (mode, targets, selectedIds) => { + const byId = new Map(targets.map(t => [t.Id, t])); + selectedIds.forEach(id => { + if (seen.has(id)) return; + seen.add(id); + const t = byId.get(id); + const name = t ? (t.DisplayName || id) : id; + const meta = t && t.UserPrincipalName ? t.UserPrincipalName : ''; + all.push({ id, name, mode, meta, hasMembers: t ? t.HasMembers : undefined }); + }); + }; + push(State.mode, State.targets, State.selectedTargetIds); + for (const m of ['dept','rpa','user']) { + if (m === State.mode) continue; + const c = State.modeCache.get(m); + if (c && c.selectedIds && c.selectedIds.size > 0) push(m, c.targets || [], c.selectedIds); + } + return all; +} + +function renderPinnedTargets() { + const wrap = document.getElementById('pinnedTargets'); + if (!wrap) return; + const items = collectAllSelectedTargets(); + if (items.length === 0) { + wrap.classList.add('hidden'); + wrap.innerHTML = ''; + return; + } + wrap.classList.remove('hidden'); + + const modeLabels = { dept: 'Abt', rpa: 'RPA', user: 'User' }; + const chips = items.map(it => { + const isEmpty = it.hasMembers === false ? 'pin-empty' : ''; + const title = `${it.name}${it.meta ? ' · ' + it.meta : ''} (${modeLabels[it.mode] || it.mode}) — Klick: zur Zeile springen, X: entfernen`; + return ` + ${escapeHtml(modeLabels[it.mode] || it.mode)} + ${escapeHtml(it.name)} + + `; + }).join(''); + + wrap.innerHTML = ` +
+ Aktuelle Auswahl + ${items.length} + +
+
${chips}
+ `; + + wrap.querySelectorAll('.pin-remove').forEach(btn => { + btn.addEventListener('click', e => { + e.stopPropagation(); + removePinned(btn.dataset.id, btn.dataset.mode); + }); + }); + wrap.querySelectorAll('.pin-chip').forEach(chip => { + chip.addEventListener('click', e => { + if (e.target.closest('.pin-remove')) return; + jumpToPinned(chip.dataset.id, chip.dataset.mode); + }); + }); + wrap.querySelector('.pin-clear-all').addEventListener('click', clearAllPinned); +} + +function removePinned(id, mode) { + if (mode === State.mode) { + State.selectedTargetIds.delete(id); + } else { + const c = State.modeCache.get(mode); + if (c && c.selectedIds) c.selectedIds.delete(id); + } + renderTargets(); + onTargetSelectionChange(); +} + +function clearAllPinned() { + State.selectedTargetIds.clear(); + for (const m of ['dept','rpa','user']) { + const c = State.modeCache.get(m); + if (c && c.selectedIds) c.selectedIds.clear(); + } + renderTargets(); + onTargetSelectionChange(); +} + +function jumpToPinned(id, mode) { + if (mode !== State.mode) { + const seg = document.querySelector(`.seg[data-mode="${mode}"]`); + if (seg) seg.click(); + // Nach Mode-Wechsel kurz warten, bis renderTargets durchgelaufen ist + setTimeout(() => focusTargetRow(id), 50); + } else { + focusTargetRow(id); + } +} + +function focusTargetRow(id) { + const row = document.querySelector(`#targetList .target-row[data-id="${CSS.escape(id)}"]`); + if (!row) return; + row.scrollIntoView({ behavior: 'smooth', block: 'center' }); + row.classList.add('flash'); + setTimeout(() => row.classList.remove('flash'), 1200); +} + +// ============================================================= +// Apps +// ============================================================= + +document.getElementById('btnReloadApps').addEventListener('click', () => loadApps(true)); + +document.getElementById('appSearch').addEventListener('input', e => { + State.appFilter.search = e.target.value.toLowerCase().trim(); + renderApps(); +}); +document.getElementById('appFilter').addEventListener('change', e => { + State.appFilter.preset = e.target.value; + renderApps(); +}); +document.getElementById('appCategoryFilter').addEventListener('change', e => { + State.appFilter.category = e.target.value; + renderApps(); +}); +document.getElementById('chkOnlyMember').addEventListener('change', e => { + State.appFilter.onlyMember = e.target.checked; + renderApps(); +}); +document.getElementById('chkHideNative').addEventListener('change', e => { + State.appFilter.hideNative = e.target.checked; + renderApps(); +}); + +// Date-Range Filter (Zuletzt geaendert) — flatpickr ersetzt den nativen +// date-input Popup. flatpickr garantiert konsistentes Look-and-Feel und +// vermeidet den Chromium-Quirk mit schwarzem Initial-Render des Popups. +(function setupDateModFilter() { + const inFrom = document.getElementById('dateModFrom'); + const inTo = document.getElementById('dateModTo'); + const btnX = document.getElementById('dateModClear'); + if (!inFrom || !inTo || !btnX) return; + + // Native type="date" auf type="text" umstellen — sonst klatscht der + // Browser sein Picker-UI ueber das von flatpickr drueber. + inFrom.type = 'text'; + inTo.type = 'text'; + inFrom.placeholder = 'tt.mm.jjjj'; + inTo.placeholder = 'tt.mm.jjjj'; + + const syncClearVisibility = () => { + btnX.hidden = !(State.appFilter.modFrom || State.appFilter.modTo); + }; + + const commonOpts = { + dateFormat: 'Y-m-d', // intern speichern wir ISO (matched Backend-Format) + altInput: true, // zweites Input fuer die Anzeige in DE-Format + altFormat: 'd.m.Y', // angezeigt: 18.05.2026 + allowInput: true, + locale: { + weekdays: { shorthand: ['So','Mo','Di','Mi','Do','Fr','Sa'], longhand: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'] }, + months: { + shorthand: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'], + longhand: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], + }, + firstDayOfWeek: 1, + rangeSeparator: ' bis ', + }, + }; + + const fpFrom = window.flatpickr(inFrom, Object.assign({}, commonOpts, { + onChange: (sel, str) => { + State.appFilter.modFrom = str || ''; + // "Bis" darf nicht vor "Von" liegen + if (fpTo && sel[0]) fpTo.set('minDate', sel[0]); + syncClearVisibility(); + renderApps(); + }, + })); + const fpTo = window.flatpickr(inTo, Object.assign({}, commonOpts, { + onChange: (sel, str) => { + State.appFilter.modTo = str || ''; + if (fpFrom && sel[0]) fpFrom.set('maxDate', sel[0]); + syncClearVisibility(); + renderApps(); + }, + })); + + btnX.addEventListener('click', () => { + fpFrom.clear(); + fpTo.clear(); + fpFrom.set('maxDate', null); + fpTo.set('minDate', null); + State.appFilter.modFrom = ''; + State.appFilter.modTo = ''; + syncClearVisibility(); + renderApps(); + }); +})(); + +async function loadApps(force, opts = {}) { + if (!State.connected) { toast('Bitte zuerst verbinden', 'warn'); return; } + if (!opts.silent) setLoading(force ? 'Lade Apps neu (kann Sekunden dauern)...' : 'Lade Apps aus Intune...'); + document.getElementById('appList').innerHTML = ` +
+
+
+
+
+
+
`; + try { + const url = force ? '/api/apps?refresh=true' : '/api/apps'; + const res = await api(url); + State.apps = res.items || []; + State.appsLoaded = true; + if (force) { + State.appDetails.clear(); + State.expandedApps.clear(); + } + rebuildCategoryFilterOptions(); + renderApps(); + updateMembershipForVisibleApps(); + if (!opts.silent) toast(`${res.count} Apps ${res.cached ? 'aus Cache' : 'geladen'}`, 'ok'); + // Kategorien NACH dem App-Laden im Hintergrund holen (separater $batch im + // Backend) — blockiert das App-Laden nicht. Fuellt danach den Kategorie-Filter. + loadAppCategoriesInBackground(); + } catch (e) { + toast(e.message, 'err', 'Apps laden fehlgeschlagen'); + renderApps(); + } finally { + if (!opts.silent) clearLoading(); + } +} + +async function loadAppCategoriesInBackground() { + // Holt die appId->Kategorien-Map separat (Backend nutzt $batch) und merged + // sie in die geladene App-Liste, dann Filter neu aufbauen. Fehler werden + // still verschluckt — die App-Liste funktioniert auch ohne Kategorien. + try { + const res = await api('/api/apps/categories', { timeoutMs: 300000 }); + const map = res && res.map ? res.map : {}; + let any = false; + for (const a of State.apps) { + if (Object.prototype.hasOwnProperty.call(map, a.AppId)) { + a.Categories = map[a.AppId] || []; + any = true; + } + } + if (any) { + rebuildCategoryFilterOptions(); + // Nur neu rendern wenn ein Kategorie-Filter aktiv ist (sonst unnoetig) + if (State.appFilter.category) renderApps(); + } + } catch (e) { + // bewusst still — Kategorien sind optional fuer den Filter + console.warn('Kategorien-Hintergrundladen fehlgeschlagen:', e.message); + } +} + +function getFilteredApps() { + let list = State.apps.slice(); + const f = State.appFilter; + if (f.search) list = list.filter(a => (a.AppName || '').toLowerCase().includes(f.search)); + switch (f.preset) { + case 'none': list = list.filter(a => a.AvailableCount === 0 && a.RequiredCount === 0); break; + case 'available': list = list.filter(a => a.AvailableCount > 0 && a.RequiredCount === 0); break; + case 'required': list = list.filter(a => a.RequiredCount > 0 && a.AvailableCount === 0); break; + case 'multipleAvail':list = list.filter(a => a.AvailableCount > 1); break; + case 'multipleReq': list = list.filter(a => a.RequiredCount > 1); break; + case 'allUsers': list = list.filter(a => + a.AvailableGroups.some(g => g.GroupId === 'ALL_USERS') || + a.RequiredGroups.some(g => g.GroupId === 'ALL_USERS')); break; + case 'allDevices': list = list.filter(a => + a.AvailableGroups.some(g => g.GroupId === 'ALL_DEVICES') || + a.RequiredGroups.some(g => g.GroupId === 'ALL_DEVICES')); break; + case 'srcIntune': list = list.filter(a => a.Source === 'Intune'); break; + default: + // Generisch "srcVendor:" — vendor.displayName aus Settings-Map ziehen + if (typeof f.preset === 'string' && f.preset.startsWith('srcVendor:')) { + const vid = f.preset.substring('srcVendor:'.length); + const v = (SettingsState.vendorsById || {})[vid]; + if (v) list = list.filter(a => a.Source === v.displayName); + } + break; + } + // Kategorie-Filter: leerer Wert = alle. Spezialwert '__none__' = Apps ohne + // zugewiesene Kategorie. Sonst exakter Match auf einen Kategorie-Namen. + if (f.category) { + if (f.category === '__none__') { + list = list.filter(a => !Array.isArray(a.Categories) || a.Categories.length === 0); + } else { + list = list.filter(a => Array.isArray(a.Categories) && a.Categories.includes(f.category)); + } + } + if (f.hideNative) { + list = list.filter(a => + !a.AvailableGroups.some(g => g.IsNative) && + !a.RequiredGroups.some(g => g.IsNative)); + } + if (f.onlyMember) { + list = list.filter(a => { + const all = [...a.AvailableGroups, ...a.RequiredGroups]; + return all.some(g => { + const m = getCachedMembership(g.GroupId); + return m && (m.status === 'Full' || m.status === 'Partial'); + }); + }); + } + // Zeitraum-Filter auf LastModifiedDateTime — von/bis inklusive + if (f.modFrom || f.modTo) { + const fromMs = f.modFrom ? Date.parse(f.modFrom + 'T00:00:00') : null; + // "Bis" inklusiv: bis Ende des Tages (23:59:59.999) + const toMs = f.modTo ? Date.parse(f.modTo + 'T23:59:59.999') : null; + list = list.filter(a => { + if (!a.LastModifiedDateTime) return false; + const t = Date.parse(a.LastModifiedDateTime); + if (isNaN(t)) return false; + if (fromMs !== null && t < fromMs) return false; + if (toMs !== null && t > toMs) return false; + return true; + }); + } + return list; +} + +function renderApps() { + const list = document.getElementById('appList'); + const cnt = document.getElementById('appCount'); + const total = State.apps.length; + const filtered = getFilteredApps(); + cnt.textContent = total === filtered.length ? total : `${filtered.length}/${total}`; + + if (!State.connected) { + list.innerHTML = emptyState({ + title: 'Nicht verbunden', + text: 'Verbinde dich zuerst mit Microsoft Graph.', + }); + return; + } + + if (State.apps.length === 0) { + list.innerHTML = emptyState({ + title: 'Apps werden geladen...', + text: 'Falls nicht, klicke auf das Refresh-Icon oben rechts.', + }); + return; + } + + if (filtered.length === 0) { + list.innerHTML = emptyState({ + title: 'Keine Treffer', + text: 'Filter oder Suche zurücksetzen.', + }); + return; + } + + list.innerHTML = filtered.map(app => renderAppRow(app)).join(''); + list.querySelectorAll('.app-row-wrap').forEach(wrap => attachAppRowEvents(wrap)); +} + +function renderAppRow(app) { + const sessionPills = State.session.filter(s => s.appId === app.AppId); + + // Aggregierter Member-Status fuer den Indikator vor App-Name + let isFullMember = false, isPartialMember = false; + if (State.selectedTargetIds.size > 0) { + for (const g of [...app.AvailableGroups, ...app.RequiredGroups]) { + if (g.IsNative) continue; + const m = getCachedMembership(g.GroupId); + if (!m) continue; + if (m.status === 'Full') isFullMember = true; + if (m.status === 'Partial') isPartialMember = true; + } + } + const statusDot = isFullMember + ? `✓` + : (isPartialMember ? `◐` : ''); + + const queuedCount = sessionPills.length; + const queuedBadge = queuedCount > 0 ? `${queuedCount}` : ''; + + // Sammel-Button pro Typ. Klick: + // - 1 zuweisbare Gruppe → direkt zu den geplanten Zuweisungen hinzufuegen + // - mehrere → Popover mit Auswahl + // - nur native → disabled + const renderTypeButton = (groups, type) => { + if (groups.length === 0) return ''; + const assignable = groups.filter(g => !g.IsNative); + const queuedForType = sessionPills.filter(s => s.type === type).length; + + let memberCls = ''; + if (State.selectedTargetIds.size > 0) { + let full = false, partial = false; + for (const g of assignable) { + const m = getCachedMembership(g.GroupId); + if (!m) continue; + if (m.status === 'Full') full = true; + if (m.status === 'Partial') partial = true; + } + if (full) memberCls = 'member-full'; + else if (partial) memberCls = 'member-partial'; + } + + const isNativeOnly = assignable.length === 0; + const hasQueued = queuedForType > 0; + const cls = ['type-btn', `type-${type.toLowerCase()}`, + isNativeOnly ? 'native-only' : '', + hasQueued ? 'has-queued' : '', + memberCls].filter(Boolean).join(' '); + + const countSuffix = assignable.length > 1 ? `${assignable.length}` : ''; + const queuedSuffix = hasQueued ? `${queuedForType}` : ''; + + let title; + if (isNativeOnly) { + title = `Nur native Zuweisung (${groups.map(g => g.GroupName).join(', ')}) — nicht änderbar`; + } else if (groups.length === 1) { + title = `${type}: ${assignable[0].GroupName}\nKlick: zu geplanten Zuweisungen hinzufügen`; + } else { + title = `${type} (${groups.length} Gruppen) — Klick zum Auswählen:\n • ` + assignable.map(g => g.GroupName).join('\n • '); + } + + return ``; + }; + + const availBtn = renderTypeButton(app.AvailableGroups, 'Available'); + const reqBtn = renderTypeButton(app.RequiredGroups, 'Required'); + const createBtn = ``; + + const removableReq = app.RequiredGroups.filter(g => !g.IsNative); + const removableAvail = app.AvailableGroups.filter(g => !g.IsNative); + const mkRemoveBtn = (groups, type, label) => groups.length > 0 + ? `` + : ``; + const removeReqBtn = mkRemoveBtn(removableReq, 'required', 'R'); + const removeAvailBtn = mkRemoveBtn(removableAvail, 'available', 'A'); + + const hasNoAssignments = app.AvailableGroups.length === 0 && app.RequiredGroups.length === 0; + // Direkt-Link in das Intune Admin Center fuer diese App (dezentes Icon, NICHT der Name selbst) + const intuneIcon = intuneAppLink(app.AppId, app.AppName); + // Source-Badge: pro Vendor (aus Settings) ODER Intune-Default. + const vendor = (SettingsState.vendorsByDisplayName || {})[app.Source]; + const srcLogo = vendor ? `/assets/${encodeURIComponent(vendor.logoFile || 'application.png')}` : '/assets/intune.png'; + const srcUrl = vendor ? (vendor.portalUrl || 'https://intune.microsoft.com/') : 'https://intune.microsoft.com/'; + const srcTitle = vendor ? `Bereitgestellt durch ${vendor.displayName} — Portal öffnen` : 'Native Intune-App — Intune öffnen'; + const srcClass = vendor ? `src-${escapeHtml(vendor.id)}` : 'src-intune'; + // Fallback: wenn das Vendor-Logo nicht da ist, zeigen wir den ersten Buchstaben des Vendor-Namens. + const srcFallback = vendor ? `this.replaceWith(Object.assign(document.createElement('span'), { className: 'app-source app-source-letter ${srcClass}', textContent: '${escapeHtml(vendor.displayName[0] || '?')}' }))` : ''; + const srcBadge = `${srcTitle}`; + // Vendor-managed Apps koennen NUR im jeweiligen Portal geloescht/umbenannt + // werden. Wir zeigen ein passives Lock-Icon mit Erklaerung statt Trash/Pencil. + const deleteLocked = !!(vendor && vendor.block && vendor.block.delete); + const renameLocked = !!(vendor && vendor.block && vendor.block.rename); + const deleteBtn = deleteLocked + ? `${LOCK_ICON}` + : ``; + const expanded = State.expandedApps.has(app.AppId); + const detailHtml = expanded ? renderAppDetailPanel(app.AppId) : ''; + return `
+
+
${statusDot}
+
+
+ ${escapeHtml(app.AppName)} + ${queuedBadge} + + ${renameLocked + ? `${LOCK_ICON}` + : ``} + ${intuneIcon} + +
+ ${app.Publisher ? `
${escapeHtml(app.Publisher)}
` : ''} +
+
${srcBadge}
+
${escapeHtml(app.AppType)}
+
${app.Version ? `${escapeHtml(app.Version)}` : '—'}
+
${availBtn || '—'}
+
${reqBtn || '—'}
+
${createBtn}
+
${removeReqBtn}
+
${removeAvailBtn}
+
${deleteBtn}
+
+ ${detailHtml} +
`; +} + +function renderAssignmentsSection(app) { + // Zwei Listen: Available + Required. Native (All Users / All Devices) werden + // mitgezeigt aber als nicht-loeschbar markiert. + const renderGroupList = (groups, type) => { + if (!groups || groups.length === 0) { + return `
Keine ${type === 'available' ? 'Available' : 'Required'}-Zuweisungen.
`; + } + return `
    ${groups.map(g => { + const isNative = g.IsNative; + const memb = getCachedMembership(g.GroupId); + let mLabel = ''; + if (memb && !isNative) { + if (memb.status === 'Full') mLabel = `alle Mitglied`; + else if (memb.status === 'Partial') mLabel = `${memb.matched}/${memb.total} Mitglied`; + } + const linkIcons = isNative + ? `native` + : `${entraGroupLink(g.GroupId, g.GroupName)}${membersTabLink(g.GroupId, g.GroupName)}`; + const delBtn = isNative + ? '' + : ``; + return `
  • + ${escapeHtml(g.GroupName)} + ${mLabel} + ${linkIcons}${delBtn} +
  • `; + }).join('')}
`; + }; + + const avail = renderGroupList(app.AvailableGroups, 'available'); + const req = renderGroupList(app.RequiredGroups, 'required'); + + return `
+
Zuweisungen
+
+
+
Available${app.AvailableGroups.length}
+ ${avail} +
+
+
Required${app.RequiredGroups.length}
+ ${req} +
+
+
`; +} + +function renderAppDetailPanel(appId) { + const entry = State.appDetails.get(appId); + if (!entry || entry.loading) { + return `
+
Lade Details aus Intune...
+
`; + } + if (entry.error) { + return `
+
Konnte Details nicht laden: ${escapeHtml(entry.error)}
+
`; + } + const d = entry.details || {}; + + const row = (label, value, opts = {}) => { + if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) return ''; + let v = value; + if (Array.isArray(v)) { + // Defensiv gegen Backend-Bugs: wenn Items Objekte sind, displayName/name + // extrahieren statt "[object Object]" zu rendern. + v = v.map(item => { + if (item === null || item === undefined) return ''; + if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') return String(item); + if (typeof item === 'object') return item.displayName || item.DisplayName || item.name || item.Name || item.id || ''; + return String(item); + }).filter(s => s !== '').join(', '); + if (!v) return ''; + } + if (typeof v === 'boolean') v = v ? 'Ja' : 'Nein'; + // Letzte Verteidigung: wenn v immer noch ein Objekt ist (single value). + if (v && typeof v === 'object') { + v = v.displayName || v.DisplayName || v.name || v.Name || v.id || JSON.stringify(v); + } + const cls = opts.mono ? 'app-detail-val mono' : 'app-detail-val'; + const copy = opts.copy ? `` : ''; + return `
+
${escapeHtml(label)}
+
${escapeHtml(String(v))}${copy}
+
`; + }; + + const fmtDate = (s) => { + if (!s) return null; + // Defensiv: new Date() wirft KEINE Exception, gibt aber Invalid Date + // zurueck — also explizit pruefen. Auch Legacy "/Date(ms)/" akzeptieren. + let d = new Date(s); + if (isNaN(d.getTime())) { + const m = String(s).match(/\/Date\((-?\d+)/); + if (m) d = new Date(Number(m[1])); + } + if (isNaN(d.getTime())) return null; + return d.toLocaleString('de-DE', { + day: '2-digit', month: '2-digit', year: 'numeric', + hour: '2-digit', minute: '2-digit', + }); + }; + + const sections = []; + + // Zuweisungen: zuerst — direkt sichtbar nach dem Aufklappen + const app = State.apps.find(a => a.AppId === appId); + if (app) { + sections.push(renderAssignmentsSection(app)); + } + + // Installationen — direkt nach Zuweisungen, damit die operative Kennzahl + // sichtbar ist ohne scrollen zu muessen. + if (d.InstallSummary) { + sections.push(renderInstallStatsSection(d.InstallSummary)); + } + + // Allgemein + const general = [ + row('Hersteller', d.Publisher), + row('Entwickler', d.Developer), + row('Owner', d.Owner), + row('Version', d.DisplayVersion || d.Version || d.ProductVersion), + row('Typ', d.Type), + row('Architekturen', d.Architectures), + row('Min. OS', d.MinimumOS), + row('Kategorien', (Array.isArray(d.Categories) && d.Categories.length > 0) ? d.Categories : 'Default'), + row('Install-Kontext', d.InstallExperience), + row('Featured', d.IsFeatured), + ].filter(Boolean).join(''); + if (general) sections.push(`
Allgemein
${general}
`); + + // Beschreibung + if (d.Description || d.Notes) { + let desc = ''; + if (d.Description) desc += `
${renderMarkdown(d.Description)}
`; + if (d.Notes) desc += `
Notizen: ${renderMarkdown(d.Notes)}
`; + sections.push(`
Beschreibung
${desc}
`); + } + + // Install / Uninstall + const installRows = [ + row('Datei', d.FileName, { mono: true }), + row('Setup-Pfad', d.SetupFilePath, { mono: true }), + row('Install-Befehl', d.InstallCommandLine, { mono: true, copy: true }), + row('Uninstall-Befehl', d.UninstallCommandLine, { mono: true, copy: true }), + row('Command-Line', d.CommandLine, { mono: true, copy: true }), + ].filter(Boolean).join(''); + if (installRows) sections.push(`
Installation
${installRows}
`); + + // MSI + if (d.Msi) { + const msiRows = [ + row('Product Code', d.Msi.ProductCode, { mono: true, copy: true }), + row('Upgrade Code', d.Msi.UpgradeCode, { mono: true, copy: true }), + row('Product Version', d.Msi.ProductVersion), + row('Publisher (MSI)', d.Msi.Publisher), + row('Package-Type', d.Msi.PackageType), + row('Reboot nötig', d.Msi.RequiresReboot), + ].filter(Boolean).join(''); + if (msiRows) sections.push(`
MSI
${msiRows}
`); + } + + // Detection-Rules — wide weil Registry-Pfade lang werden koennen + if (d.DetectionRules && d.DetectionRules.length) { + sections.push(`
+
Detection
+
    ${d.DetectionRules.map(r => `
  • ${escapeHtml(r)}
  • `).join('')}
+
`); + } + + // Return-Codes + if (d.ReturnCodes && d.ReturnCodes.length) { + const rows = d.ReturnCodes.map(rc => `
  • ${escapeHtml(String(rc.Code))} · ${escapeHtml(rc.Type)}
  • `).join(''); + sections.push(`
    Return-Codes
      ${rows}
    `); + } + + // Meta + const metaRows = [ + row('Erstellt', fmtDate(d.CreatedDateTime)), + row('Geändert', fmtDate(d.LastModifiedDateTime)), + d.InformationUrl ? `` : '', + d.PrivacyInformationUrl ? `` : '', + ].filter(Boolean).join(''); + if (metaRows) sections.push(`
    Meta
    ${metaRows}
    `); + + // Dependencies — Voraussetzungen dieser App + if (d.Dependencies && d.Dependencies.length) { + sections.push(renderRelationshipFlow({ + title: 'Abhängigkeiten', + subtitle: 'Apps, die installiert sein müssen, bevor diese App installiert werden kann.', + centerApp: { AppId: appId, AppName: d.DisplayName || 'Diese App' }, + related: d.Dependencies, + direction: 'incoming', // Pfeile von dep -> diese App + kindLabelFn: (r) => r.DependencyType === 'autoInstall' ? 'autoInstall' : 'detect', + explanationFn: (center, r) => { + const c = `${escapeHtml(center.AppName)}`; + const t = `${escapeHtml(r.TargetDisplayName || r.TargetId)}`; + if (r.DependencyType === 'autoInstall') { + return `Wenn ${c} einem Gerät zugewiesen wird, installiert Intune zuvor automatisch ${t} mit.`; + } + return `${c} erwartet, dass ${t} bereits installiert ist. Intune installiert es nicht automatisch — manuelle Bereitstellung nötig (Modus „detect“).`; + }, + })); + } + + // Supersedence — was diese App ersetzt/aktualisiert + if (d.Supersedence && d.Supersedence.length) { + sections.push(renderRelationshipFlow({ + title: 'Supersedence', + subtitle: 'Ältere Apps, die durch diese App ersetzt oder aktualisiert werden.', + centerApp: { AppId: appId, AppName: d.DisplayName || 'Diese App' }, + related: d.Supersedence, + direction: 'outgoing', // Pfeile diese App -> ersetzte App + kindLabelFn: (r) => r.SupersedenceType === 'replace' ? 'replace' : 'update', + explanationFn: (center, r) => { + const c = `${escapeHtml(center.AppName)}`; + const t = `${escapeHtml(r.TargetDisplayName || r.TargetId)}`; + if (r.SupersedenceType === 'replace') { + return `Bei der Installation deinstalliert ${c} eine vorhandene Version von ${t} und ersetzt sie vollständig (Modus „replace“).`; + } + return `${c} aktualisiert eine vorhandene Installation von ${t} (Modus „update“) — Benutzerdaten und Konfiguration bleiben erhalten.`; + }, + })); + } + + // Setup-Datei aktualisieren — Phase 1: nur win32LobApp (.intunewin), + // und nur fuer NICHT vendor-managed Apps (PMPC/Robopack ausgeschlossen). + if (app && app.AppTypeRaw === '#microsoft.graph.win32LobApp' + && !(SettingsState.vendorsByDisplayName || {})[app.Source]) { + sections.push(`
    +
    Setup-Datei
    +
    + +
    Lädt eine neue .intunewin hoch und aktiviert sie als neue Version. Betrifft alle zugewiesenen Geräte beim nächsten Sync.
    +
    +
    `); + } + + if (sections.length === 0) { + return `
    Keine zusätzlichen Details verfügbar.
    `; + } + + return `
    ${sections.join('')}
    `; +} + +// ============================================================= +// App-Detail: Installations-Statistik + Relationship-Flow-Viz +// ============================================================= + +function renderInstallStatsSection(s) { + const pct = (ok, fail) => { + const total = ok + fail; + if (total === 0) return null; + return Math.round((ok / total) * 100); + }; + const stat = (label, value, kind) => ` +
    +
    ${value}
    +
    ${escapeHtml(label)}
    +
    `; + + // Stacked-Balken: Segmente in Reihenfolge ok / err / pend / not / na + const stackedBar = (ok, fail, pend, not, na) => { + const total = ok + fail + pend + not + na; + if (total === 0) return `
    `; + const w = (v) => `${Math.max(0, Math.round((v / total) * 1000) / 10)}%`; + return `
    + ${ok ? `
    ` : ''} + ${fail ? `
    ` : ''} + ${pend ? `
    ` : ''} + ${not ? `
    ` : ''} + ${na ? `
    ` : ''} +
    `; + }; + + const dev = { + ok: s.InstalledDeviceCount || 0, + fail: s.FailedDeviceCount || 0, + pend: s.PendingInstallDeviceCount || 0, + not: s.NotInstalledDeviceCount || 0, + na: s.NotApplicableDeviceCount || 0, + }; + const usr = { + ok: s.InstalledUserCount || 0, + fail: s.FailedUserCount || 0, + pend: s.PendingInstallUserCount || 0, + not: s.NotInstalledUserCount || 0, + na: s.NotApplicableUserCount || 0, + }; + const devPct = pct(dev.ok, dev.fail); + const usrPct = pct(usr.ok, usr.fail); + + const axis = (title, d, ratePct) => ` +
    +
    + ${escapeHtml(title)} + ${ratePct !== null ? `${ratePct}% erfolgreich` : ''} +
    + ${stackedBar(d.ok, d.fail, d.pend, d.not, d.na)} +
    + Installiert + Fehler + Ausstehend + Nicht inst. + N/A +
    +
    + ${stat('Installiert', d.ok, 'ok')} + ${stat('Fehler', d.fail, 'err')} + ${stat('Ausstehend', d.pend, 'pend')} + ${stat('Nicht inst.', d.not, 'not')} + ${stat('N/A', d.na, 'na')} +
    +
    `; + + return `
    +
    Installationsübersicht
    +
    + ${axis('Geräte', dev, devPct)} + ${axis('Benutzer', usr, usrPct)} +
    +
    `; +} + +// Mini-SVG-Flow: zentraler App-Knoten + verbundene Target-Knoten. +// direction: 'incoming' = Pfeile target->center (Dependencies) +// 'outgoing' = Pfeile center->target (Supersedence) +// Verbindungen sind ORTHOGONAL (gerade Linien mit rechtwinkligen Knicken), +// keine Bezier-Kurven. Pro Relation wird zusaetzlich ein Klartext-Satz +// generiert (explanationFn), der direkt unter dem Diagramm steht. +function renderRelationshipFlow(opts) { + const { title, subtitle, centerApp, related, direction, kindLabelFn, explanationFn } = opts; + if (!related || related.length === 0) return ''; + + const flowId = 'flow-' + Math.random().toString(36).slice(2, 9); + // Layout-Geometrie — etwas grosszuegiger als vorher fuer "premium" Wirkung + const NODE_W = 230; + const NODE_H = 60; + const ROW_H = 84; // Vertikaler Abstand zwischen Target-Nodes + const COL_GAP = 170; // Horizontaler Platz fuer die Pfeil-Linie + const PAD = 16; + const count = related.length; + + // Hoehe so dass Center und Target-Stack vertikal gleich hoch sind + const stackH = (count - 1) * ROW_H + NODE_H; + const svgH = Math.max(stackH, NODE_H) + PAD * 2; + const svgW = NODE_W * 2 + COL_GAP + PAD * 2; + + // Center vertikal mittig + const centerY = (svgH - NODE_H) / 2; + // Center ist je nach Richtung links oder rechts + const centerOnLeft = (direction === 'outgoing'); + const centerX = centerOnLeft ? PAD : (svgW - PAD - NODE_W); + const targetX = centerOnLeft ? (svgW - PAD - NODE_W) : PAD; + + // Target-Y so verteilen dass Stack vertikal zentriert ist + const stackTop = (svgH - stackH) / 2; + const targetY = (i) => stackTop + i * ROW_H; + + const knownApp = (id) => State.apps.find(a => a.AppId === id); + + // Node-Renderer als HTML-Foreign-Object (Text-Wrapping einfacher als in SVG) + const nodeHtml = (a, isCenter) => { + const known = !!knownApp(a.AppId || a.TargetId); + const id = a.AppId || a.TargetId || ''; + const name = escapeHtml(a.AppName || a.TargetDisplayName || id); + const meta = isCenter ? '' : [a.TargetPublisher, a.TargetDisplayVersion].filter(Boolean).map(escapeHtml).join(' · '); + const cls = `flow-node ${isCenter ? 'flow-node-center' : 'flow-node-target'} ${known && !isCenter ? 'flow-node-known' : ''}`; + return `
    +
    ${name}
    + ${meta ? `
    ${meta}
    ` : ''} +
    `; + }; + + // Orthogonale Pfade: horizontal → vertikal → horizontal (Elbow). + // Wenn from-Y == to-Y degeneriert das automatisch zu einer geraden Linie. + const arrows = related.map((r, i) => { + const ty = targetY(i); + const cyMid = centerY + NODE_H / 2; + const tyMid = ty + NODE_H / 2; + const fromX = centerOnLeft ? (centerX + NODE_W) : (targetX + NODE_W); + const fromY = centerOnLeft ? cyMid : tyMid; + const toX = centerOnLeft ? targetX : centerX; + const toY = centerOnLeft ? tyMid : cyMid; + const midX = (fromX + toX) / 2; + const d = `M ${fromX} ${fromY} L ${midX} ${fromY} L ${midX} ${toY} L ${toX} ${toY}`; + const labelX = midX; + const labelY = (fromY + toY) / 2 - 6; + const kind = kindLabelFn ? kindLabelFn(r) : ''; + return ` + ${kind ? `${escapeHtml(kind)}` : ''}`; + }).join(''); + + // Target-Nodes (HTML overlay via foreignObject) + const targetNodesSvg = related.map((r, i) => { + const y = targetY(i); + return ` +
    ${nodeHtml(r, false)}
    +
    `; + }).join(''); + + // Klartext-Erklaerungen pro Relation + const explanations = explanationFn ? related.map(r => explanationFn(centerApp, r)).filter(Boolean) : []; + const explanationHtml = explanations.length ? ` +
    +
    Was bedeutet das?
    +
      ${explanations.map(e => `
    • ${e}
    • `).join('')}
    +
    ` : ''; + + return `
    +
    ${escapeHtml(title)}
    +
    ${escapeHtml(subtitle)}
    +
    + + + + + + + ${arrows} + +
    ${nodeHtml(centerApp, true)}
    +
    + ${targetNodesSvg} +
    +
    + ${explanationHtml} +
    `; +} + +// Klick auf einen Flow-Node: zur Ziel-App scrollen + expanden +function attachFlowNodeHandlers(wrap) { + wrap.querySelectorAll('[data-jump-app]').forEach(el => { + el.addEventListener('click', () => jumpToAppById(el.dataset.jumpApp)); + el.addEventListener('keydown', e => { + if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); jumpToAppById(el.dataset.jumpApp); } + }); + }); +} + +async function jumpToAppById(appId) { + if (!appId) return; + // Suchfeld leeren damit die App garantiert sichtbar ist + const search = document.getElementById('appSearch'); + if (search && search.value) { search.value = ''; State.appFilter.search = ''; } + + // WICHTIG: Wenn die App noch nicht expanded ist, muessen wir den DETAILS- + // FETCH triggern. Frueher haben wir nur expandedApps.add() gemacht — ohne + // Fetch — und der Spinner drehte ewig. Wenn der User dann die Zeile manuell + // klickt, sieht toggleAppExpand "schon offen" und KLAPPT WIEDER ZU. + const alreadyOpen = State.expandedApps.has(appId); + const wasCached = State.appDetails.has(appId); + + if (!alreadyOpen) { + State.expandedApps.add(appId); + } + renderApps(); + + // Fetch nur ausloesen wenn keine validen Daten im Cache liegen + const cached = State.appDetails.get(appId); + if (!cached || (!cached.details && !cached.loading)) { + State.appDetails.set(appId, { details: null, loading: true, error: null }); + renderApps(); + try { + const res = await api(`/api/apps/${encodeURIComponent(appId)}/details`); + State.appDetails.set(appId, { details: res, loading: false, error: null }); + } catch (e) { + State.appDetails.set(appId, { details: null, loading: false, error: e.message }); + } + if (State.expandedApps.has(appId)) renderApps(); + } + + // Im naechsten Frame: in den View scrollen + requestAnimationFrame(() => { + const wrap = document.querySelector(`.app-row-wrap[data-app-id="${CSS.escape(appId)}"]`); + if (wrap) { + wrap.scrollIntoView({ behavior: 'smooth', block: 'center' }); + wrap.classList.add('app-row-wrap--flash'); + setTimeout(() => wrap.classList.remove('app-row-wrap--flash'), 1200); + } else { + toast('Ziel-App nicht in der aktuell geladenen Liste', 'warn'); + } + }); +} + +async function toggleAppExpand(appId) { + if (State.expandedApps.has(appId)) { + State.expandedApps.delete(appId); + renderApps(); + return; + } + State.expandedApps.add(appId); + // Bereits geladene oder fertig im Cache → kein Reload + const cached = State.appDetails.get(appId); + if (cached && !cached.loading && !cached.error && cached.details) { + renderApps(); + return; + } + State.appDetails.set(appId, { details: null, loading: true, error: null }); + renderApps(); + try { + // 45s Timeout — falls Backend haengt, bricht der Spinner ab und der User + // bekommt eine Fehlermeldung statt ewig zu warten. + const ctrl = new AbortController(); + const timer = setTimeout(() => ctrl.abort(), 45000); + const opts = { method: 'GET', headers: { 'Content-Type': 'application/json' }, signal: ctrl.signal }; + const r = await fetch(`/api/apps/${encodeURIComponent(appId)}/details`, opts); + clearTimeout(timer); + let res = {}; + try { res = await r.json(); } catch {} + if (!r.ok) throw new Error(res.error || `HTTP ${r.status}`); + State.appDetails.set(appId, { details: res, loading: false, error: null }); + } catch (e) { + const msg = e.name === 'AbortError' ? 'Timeout (45s) — Graph-API antwortet nicht' : e.message; + State.appDetails.set(appId, { details: null, loading: false, error: msg }); + } + if (State.expandedApps.has(appId)) renderApps(); +} + +function attachAppRowEvents(wrap) { + wrap.querySelectorAll('.type-btn[data-type]').forEach(btn => { + btn.addEventListener('click', e => { + if (btn.disabled) return; + e.stopPropagation(); + onTypeButtonClick(btn); + }); + }); + wrap.querySelectorAll('[data-create-group]').forEach(btn => { + btn.addEventListener('click', e => { + e.stopPropagation(); + openCreateGroupModal(btn.dataset.appId, btn.dataset.appName); + }); + }); + wrap.querySelectorAll('[data-remove-group]').forEach(btn => { + btn.addEventListener('click', e => { + e.stopPropagation(); + const app = State.apps.find(a => a.AppId === btn.dataset.appId); + if (!app) return; + const type = btn.dataset.removeType; // 'required' | 'available' + const src = type === 'required' ? app.RequiredGroups : app.AvailableGroups; + const groups = src.filter(g => !g.IsNative).map(g => ({ ...g, _type: type })); + if (groups.length === 0) return; + if (groups.length === 1) { + removeAssignmentWithConfirm({ + appId: app.AppId, appName: app.AppName, + groupId: groups[0].GroupId, groupName: groups[0].GroupName, + type, + }); + return; + } + showRemoveGroupPicker(btn, app, groups); + }); + }); + wrap.querySelectorAll('[data-delete-app]').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + deleteAppWithConfirm(btn.dataset.appId, btn.dataset.appName); + }); + }); + wrap.querySelectorAll('[data-rename-app]').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + openRenameAppModal(btn.dataset.appId, btn.dataset.appName); + }); + }); + wrap.querySelectorAll('[data-update-content]').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + openUpdateContentModal(btn.dataset.appId, btn.dataset.appName, btn.dataset.appType, btn.dataset.appVersion); + }); + }); + // Im Detail-Panel (Zuweisungen-Sektion) sitzen die Delete-Assignment-Buttons + // und externe Link-Icons — hier auch verkabeln, damit Klicks weder zur + // Session togglen noch das Detail-Panel zuklappen. + wrap.querySelectorAll('[data-remove-assign]').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + removeAssignmentWithConfirm({ + appId: btn.dataset.appId, + appName: btn.dataset.appName, + groupId: btn.dataset.groupId, + groupName: btn.dataset.groupName, + type: btn.dataset.type, + }); + }); + }); + wrap.querySelectorAll('.asg-actions, .asg-row .entra-link').forEach(el => { + el.addEventListener('click', e => e.stopPropagation()); + }); + // Flow-Nodes (Dependencies / Supersedence) — Klicks fuehren zur Target-App + attachFlowNodeHandlers(wrap); + // Klicks innerhalb der Flow-Container sollen nicht den Row-Toggle ausloesen + wrap.querySelectorAll('.flow-container').forEach(el => { + el.addEventListener('click', e => e.stopPropagation()); + }); + // Klick auf Zeile = Detail-Toggle. Klicks auf interne Buttons/Links sind oben + // bereits mit stopPropagation versehen oder triggern via kein Bubble-Toggle. + const rowEl = wrap.querySelector('.app-row'); + if (rowEl) { + rowEl.addEventListener('click', e => { + // Direkte Links (App-Name in Intune oeffnen, Source-Badge) nicht abfangen + if (e.target.closest('a')) return; + // Buttons innerhalb der Zeile (Type-Btn, Create-Btn) haben ihre eigenen Handler + if (e.target.closest('button')) return; + const id = rowEl.dataset.appId; + if (id) toggleAppExpand(id); + }); + } + // Copy-Buttons im Detail-Panel + wrap.querySelectorAll('.app-detail-copy').forEach(btn => { + btn.addEventListener('click', e => { + e.stopPropagation(); + const txt = btn.dataset.copy || ''; + navigator.clipboard.writeText(txt).then( + () => { btn.classList.add('copied'); setTimeout(() => btn.classList.remove('copied'), 900); toast('In Zwischenablage kopiert', 'ok'); }, + () => toast('Kopieren fehlgeschlagen', 'err') + ); + }); + }); +} + +function onTypeButtonClick(btnEl) { + const appId = btnEl.dataset.appId; + const type = btnEl.dataset.type; + const app = State.apps.find(a => a.AppId === appId); + if (!app) return; + const groups = (type === 'Available' ? app.AvailableGroups : app.RequiredGroups).filter(g => !g.IsNative); + if (groups.length === 0) return; + + if (groups.length === 1) { + const g = groups[0]; + toggleSession({ appId, groupId: g.GroupId, groupName: g.GroupName, type }); + return; + } + + // Mehrere Gruppen → Popover mit Auswahl + showGroupPicker(btnEl, app, groups, type); +} + +let pickerEl = null; +function closeGroupPicker() { + if (pickerEl) { pickerEl.remove(); pickerEl = null; } + document.removeEventListener('click', onPickerOutsideClick, true); + document.removeEventListener('keydown', onPickerEscape); +} +function onPickerOutsideClick(e) { + if (pickerEl && !pickerEl.contains(e.target)) closeGroupPicker(); +} +function onPickerEscape(e) { + if (e.key === 'Escape') closeGroupPicker(); +} + +function showGroupPicker(anchorEl, app, groups, type) { + closeGroupPicker(); + + const queuedSet = new Set( + State.session.filter(s => s.appId === app.AppId && s.type === type).map(s => s.groupId) + ); + + pickerEl = document.createElement('div'); + pickerEl.className = `group-picker picker-${type.toLowerCase()}`; + pickerEl.innerHTML = ` +
    ${escapeHtml(type)} — Gruppe wählen
    +
    + ${groups.map(g => { + const queued = queuedSet.has(g.GroupId); + const memb = getCachedMembership(g.GroupId); + let mLabel = ''; + if (memb) { + if (memb.status === 'Full') mLabel = `Mitglied`; + else if (memb.status === 'Partial') mLabel = `${memb.matched}/${memb.total}`; + } + const sideActions = ` + + ${entraGroupLink(g.GroupId, g.GroupName)} + ${membersTabLink(g.GroupId, g.GroupName)} + + + `; + return ` +
    + + ${sideActions} +
    + `; + }).join('')} +
    + `; + document.body.appendChild(pickerEl); + + // Position relativ zum Button + const r = anchorEl.getBoundingClientRect(); + const pw = pickerEl.offsetWidth; + const ph = pickerEl.offsetHeight; + let left = r.left; + let top = r.bottom + 4; + if (left + pw > window.innerWidth - 8) left = window.innerWidth - pw - 8; + if (top + ph > window.innerHeight - 8) top = r.top - ph - 4; + pickerEl.style.left = left + 'px'; + pickerEl.style.top = top + 'px'; + + pickerEl.querySelectorAll('.picker-item').forEach(item => { + item.addEventListener('click', e => { + e.stopPropagation(); + toggleSession({ + appId: app.AppId, + groupId: item.dataset.groupId, + groupName: item.dataset.groupName, + type, + }); + closeGroupPicker(); + }); + }); + + // Side-Actions (Entra-Link, Members-Tab) duerfen den Picker nicht schliessen + // bzw. die Gruppe nicht zur Session togglen. Links lassen wir natuerlich oeffnen. + pickerEl.querySelectorAll('[data-stop]').forEach(box => { + box.addEventListener('click', e => e.stopPropagation()); + }); + + // Zuweisung entfernen + pickerEl.querySelectorAll('[data-remove-assign]').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + const ctx = { + appId: btn.dataset.appId, + appName: btn.dataset.appName, + groupId: btn.dataset.groupId, + groupName: btn.dataset.groupName, + type: btn.dataset.type, + }; + closeGroupPicker(); + removeAssignmentWithConfirm(ctx); + }); + }); + + // Click outside / Escape schliessen + setTimeout(() => { + document.addEventListener('click', onPickerOutsideClick, true); + document.addEventListener('keydown', onPickerEscape); + }, 0); +} + +function showRemoveGroupPicker(anchorEl, app, groups) { + closeGroupPicker(); + + pickerEl = document.createElement('div'); + pickerEl.className = 'group-picker picker-remove'; + pickerEl.innerHTML = ` +
    Gruppe entfernen — ${escapeHtml(app.AppName)}
    +
    + ${groups.map(g => { + const badge = g._type === 'required' + ? `Req` + : `Avail`; + return ` +
    + +
    `; + }).join('')} +
    + `; + document.body.appendChild(pickerEl); + + const r = anchorEl.getBoundingClientRect(); + const pw = pickerEl.offsetWidth; + const ph = pickerEl.offsetHeight; + let left = r.left; + let top = r.bottom + 4; + if (left + pw > window.innerWidth - 8) left = window.innerWidth - pw - 8; + if (top + ph > window.innerHeight - 8) top = r.top - ph - 4; + pickerEl.style.left = left + 'px'; + pickerEl.style.top = top + 'px'; + + pickerEl.querySelectorAll('.picker-remove-item').forEach(item => { + item.addEventListener('click', e => { + e.stopPropagation(); + const ctx = { + appId: app.AppId, appName: app.AppName, + groupId: item.dataset.groupId, groupName: item.dataset.groupName, + type: item.dataset.type, + }; + closeGroupPicker(); + removeAssignmentWithConfirm(ctx); + }); + }); + + setTimeout(() => { + document.addEventListener('click', onPickerOutsideClick, true); + document.addEventListener('keydown', onPickerEscape); + }, 0); +} + +// ============================================================= +// Membership +// ============================================================= + +function getCachedMembership(groupId) { + if (State.selectedTargetIds.size === 0) return null; + return State.membershipCache.get(membershipKey(groupId)); +} + +function membershipKey(groupId) { + const ids = [...State.selectedTargetIds].sort().join(','); + return groupId + '|' + ids; +} + +let membershipAbort = null; + +function abortMembershipFetch() { + if (membershipAbort) { + try { membershipAbort.abort(); } catch {} + membershipAbort = null; + } +} + +async function updateMembershipForVisibleApps() { + if (State.selectedTargetIds.size === 0) return; + const visible = getFilteredApps(); + const groupIds = new Set(); + visible.forEach(a => { + a.AvailableGroups.concat(a.RequiredGroups).forEach(g => { + if (!g.IsNative && !State.membershipCache.has(membershipKey(g.GroupId))) { + groupIds.add(g.GroupId); + } + }); + }); + if (groupIds.size === 0) return; + + // Vorherige Bulk-Anfrage abbrechen wenn neue Ziele/Apps + abortMembershipFetch(); + membershipAbort = new AbortController(); + + const targets = [...State.selectedTargetIds]; + const groupIdsArr = [...groupIds]; + try { + const resp = await fetch('/api/membership/bulk', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ targets, groupIds: groupIdsArr }), + signal: membershipAbort.signal, + }); + if (!resp.ok) return; + const data = await resp.json(); + if (!data.memberships) return; + for (const [gid, info] of Object.entries(data.memberships)) { + State.membershipCache.set(membershipKey(gid), info); + } + renderApps(); + renderExisting(); + } catch (e) { + if (e.name === 'AbortError') return; + // Stille — Mitgliedschaft ist Hintergrund-Info + } +} + +// ============================================================= +// Session (Cart) +// ============================================================= + +document.getElementById('btnSessionClear').addEventListener('click', () => { + if (State.session.length === 0) return; + State.session = []; + renderSession(); + renderApps(); + updateStepper(); +}); + +document.getElementById('btnApply').addEventListener('click', applyAssignments); + +function toggleSession({ appId, groupId, groupName, type }) { + // Eine Session entspricht GENAU EINEM Empfaenger (Gruppe ODER User). + // Toggle: existieren bereits Sessions fuer diese App+Intune-Group+Type + // mit den aktuell gewaehlten Empfaengern, werden diese entfernt. + // Andernfalls wird pro Empfaenger eine eigene Session angelegt. + const allSel = getAllSelected(); + const matching = State.session.filter(s => s.appId === appId && s.groupId === groupId && s.type === type); + if (matching.length > 0 && allSel.length === 0) { + // Keine Auswahl → toggle = entfernen aller Eintraege fuer diese App-Group-Combo + State.session = State.session.filter(s => !matching.includes(s)); + renderSession(); + renderApps(); + updateStepper(); + return; + } + if (allSel.length === 0) { + toast('Wähle erst Abteilungen oder Benutzer aus', 'warn'); + return; + } + + // Pruefen, ob fuer alle aktuellen Empfaenger schon Sessions existieren + // → dann komplett entfernen (Toggle aus). + const matchingByTarget = new Map(matching.map(s => [s.scope?.[0]?.id, s])); + const allCovered = allSel.every(t => matchingByTarget.has(t.Id)); + if (allCovered && matching.length === allSel.length) { + State.session = State.session.filter(s => !matching.includes(s)); + renderSession(); + renderApps(); + updateStepper(); + return; + } + + // Sonst: fuer jeden Empfaenger, der noch keine Session hat, eine neue anlegen + const app = State.apps.find(a => a.AppId === appId); + for (const t of allSel) { + if (matchingByTarget.has(t.Id)) continue; + State.session.push({ + id: crypto.randomUUID(), + appId, + appName: app ? app.AppName : '?', + appType: app ? app.AppType : '', + groupId, + groupName, + type, + scope: [{ id: t.Id, name: t.DisplayName, mode: t._mode }], + }); + } + renderSession(); + renderApps(); + updateStepper(); +} + +// Helfer: gesammelte Auswahl ueber ALLE Modi (current + cached) +function collectSelectedByMode(mode) { + if (State.mode === mode) { + return State.targets.filter(t => State.selectedTargetIds.has(t.Id)); + } + const cached = State.modeCache.get(mode); + if (!cached) return []; + return cached.targets.filter(t => cached.selectedIds.has(t.Id)); +} +function getAllSelected() { + const out = [ + ...collectSelectedByMode('dept').map(t => ({ ...t, _mode: 'dept' })), + ...collectSelectedByMode('rpa').map(t => ({ ...t, _mode: 'rpa' })), + ...collectSelectedByMode('user').map(t => ({ ...t, _mode: 'user' })), + ]; + // Auch in aufgeklappten Gruppen markierte User mit aufnehmen — der User + // erwartet, dass das Anhaken sofort wirkt, ohne erst "Benutzer uebernehmen" + // klicken zu muessen. Dedupliziert ueber Id, damit ein bereits committed + // User nicht doppelt erscheint. + const seen = new Set(out.map(t => t.Id)); + const collectExpand = (expandedMap) => { + if (!expandedMap) return; + for (const entry of expandedMap.values()) { + if (!entry || !entry.selected || !entry.members) continue; + const byId = new Map(entry.members.map(m => [m.Id, m])); + for (const id of entry.selected) { + if (seen.has(id)) continue; + const m = byId.get(id); + if (!m) continue; + seen.add(id); + out.push({ ...m, _mode: 'user' }); + } + } + }; + collectExpand(State.expandedGroups); + for (const m of ['dept','rpa','user']) { + if (m === State.mode) continue; + const c = State.modeCache.get(m); + if (c) collectExpand(c.expandedGroups); + } + return out; +} + +function renderSession() { + const list = document.getElementById('sessionList'); + const cnt = document.getElementById('sessionCount'); + const btnApply = document.getElementById('btnApply'); + const btnApplyLabel = document.getElementById('btnApplyLabel'); + const btnClear = document.getElementById('btnSessionClear'); + + cnt.textContent = State.session.length; + + // Aktuelle Auswahl (kann von Session-Scopes abweichen!) + // Auch "noch nicht uebernommene" Einzelmitglieder aus aufgeklappten Gruppen + // mitzaehlen — der User erwartet sofortiges Feedback beim Anhaken. + const currentDept = collectSelectedByMode('dept').length + collectSelectedByMode('rpa').length; + const userIds = new Set(collectSelectedByMode('user').map(t => t.Id)); + const collectExpandSelected = (expandedMap) => { + if (!expandedMap) return; + for (const entry of expandedMap.values()) { + if (entry && entry.selected) { + for (const id of entry.selected) userIds.add(id); + } + } + }; + collectExpandSelected(State.expandedGroups); + for (const m of ['dept','rpa','user']) { + if (m === State.mode) continue; + const c = State.modeCache.get(m); + if (c) collectExpandSelected(c.expandedGroups); + } + const currentUser = userIds.size; + + // Tatsaechliche Vorgaenge aus den eingefrorenen Per-Item-Scopes + let groupOps = 0, userOps = 0; + for (const s of State.session) { + if (!s.scope) continue; + for (const sc of s.scope) { + if (sc.mode === 'user') { userOps++; } + else { groupOps++; } + } + } + const total = groupOps + userOps; + const sessions = State.session.length; + + document.getElementById('sumGroupsSel').textContent = currentDept; + document.getElementById('sumUsersSel').textContent = currentUser; + document.getElementById('sumGroupsOps').textContent = groupOps; + document.getElementById('sumUsersOps').textContent = userOps; + document.getElementById('sumTotal').textContent = total; + + btnApply.disabled = (sessions === 0 || total === 0); + btnApplyLabel.textContent = total > 0 + ? `${total} Vorgang${total === 1 ? '' : 'e'} ausführen` + : 'Zuweisungen ausführen'; + + btnClear.hidden = sessions === 0; + + if (State.session.length === 0) { + list.innerHTML = emptyState({ + small: true, + title: 'Keine geplanten Zuweisungen', + text: 'Klicke auf "Available" oder "Required" bei einer App um eine Zuweisung hinzuzufügen.', + }); + return; + } + + list.innerHTML = State.session.map(s => { + const scope = s.scope || []; + // Eine Session = genau ein Empfaenger. Falls aus Altdaten noch ein Multi- + // Scope existiert, fallen wir auf eine kompakte Anzeige zurueck. + const single = scope.length === 1 ? scope[0] : null; + let scopeBlock = ''; + if (single) { + const isUser = single.mode === 'user'; + const tagCls = isUser ? 'scope-user' : 'scope-dept'; + const tagLbl = isUser ? '1 Benutzer' : '1 Gruppe'; + scopeBlock = `
    + ${tagLbl} + ${escapeHtml(single.name)} +
    `; + } else if (scope.length > 1) { + const deptN = scope.filter(x => x.mode !== 'user').length; + const userN = scope.filter(x => x.mode === 'user').length; + const tags = []; + if (deptN > 0) tags.push(`${deptN} Gruppe${deptN === 1 ? '' : 'n'}`); + if (userN > 0) tags.push(`${userN} Benutzer`); + const tip = scope.map(x => x.name).join('\n'); + scopeBlock = `
    ${tags.join('')}
    `; + } + return `
    +
    +
    ${escapeHtml(s.appName)}
    +
    ${escapeHtml(s.groupName)}
    + ${scopeBlock} +
    + ${s.type === 'Available' ? 'A' : 'R'} + +
    `; + }).join(''); + + list.querySelectorAll('.session-remove').forEach(b => { + b.addEventListener('click', () => { + State.session = State.session.filter(x => x.id !== b.dataset.id); + renderSession(); + renderApps(); + updateStepper(); + }); + }); +} + +// ============================================================= +// Existing assignments +// ============================================================= + +function renderExisting() { + const list = document.getElementById('existingList'); + if (State.selectedTargetIds.size === 0 || State.apps.length === 0) { + list.innerHTML = emptyState({ + small: true, + title: 'Keine Auswahl', + text: 'Wähle Empfänger und lade Apps, um Mitgliedschaften zu sehen.', + }); + return; + } + const items = []; + for (const app of State.apps) { + const flags = []; + for (const g of app.AvailableGroups) { + if (g.IsNative) { flags.push({ cls: 'n', label: 'A·N' }); continue; } + const m = getCachedMembership(g.GroupId); + if (m && (m.status === 'Full' || m.status === 'Partial')) { + flags.push({ cls: 'a', label: 'A' + (m.status === 'Partial' ? '·◐' : '·✓') }); + } + } + for (const g of app.RequiredGroups) { + if (g.IsNative) { flags.push({ cls: 'n', label: 'R·N' }); continue; } + const m = getCachedMembership(g.GroupId); + if (m && (m.status === 'Full' || m.status === 'Partial')) { + flags.push({ cls: 'r', label: 'R' + (m.status === 'Partial' ? '·◐' : '·✓') }); + } + } + if (flags.length > 0) items.push({ app, flags }); + } + if (items.length === 0) { + list.innerHTML = emptyState({ + small: true, + title: 'Nichts zugewiesen', + text: 'Keine bestehenden Zuweisungen für die Auswahl.', + }); + return; + } + list.innerHTML = items.map(({ app, flags }) => ` +
    +
    ${escapeHtml(app.AppName)}
    +
    + ${flags.map(f => `${escapeHtml(f.label)}`).join('')} +
    +
    + `).join(''); +} + +// ============================================================= +// Side tabs (Cart / Existing) +// ============================================================= + +document.querySelectorAll('.side-tab').forEach(tab => { + tab.addEventListener('click', () => { + document.querySelectorAll('.side-tab').forEach(t => t.classList.remove('active')); + tab.classList.add('active'); + State.sideTab = tab.dataset.side; + document.getElementById('sidePaneSession').classList.toggle('hidden', State.sideTab !== 'session'); + document.getElementById('sidePaneExisting').classList.toggle('hidden', State.sideTab !== 'existing'); + }); +}); + +// ============================================================= +// Apply +// ============================================================= + +async function applyAssignments() { + if (!State.connected) { toast('Bitte zuerst verbinden', 'warn'); return; } + if (State.session.length === 0) { toast('Keine geplanten Zuweisungen', 'warn'); return; } + + // Flache Ops-Liste aus den Per-Item-Snapshots bauen + const ops = []; + let deptOps = 0, userOps = 0; + for (const s of State.session) { + if (!s.scope || s.scope.length === 0) continue; + for (const sc of s.scope) { + ops.push({ + targetId: sc.id, + targetName: sc.name, + targetType: sc.mode, + appId: s.appId, + appName: s.appName, + groupId: s.groupId, + groupName: s.groupName, + type: s.type, + }); + if (sc.mode === 'user') userOps++; else deptOps++; + } + } + const total = ops.length; + if (total === 0) { toast('Keine ausführbaren Vorgänge', 'warn'); return; } + + document.getElementById('confirmText').innerHTML = ` + ${total} Vorgang${total === 1 ? '' : 'e'} wird ausgeführt: +
      + ${deptOps > 0 ? `
    • ${deptOps} auf Abteilungsgruppen
    • ` : ''} + ${userOps > 0 ? `
    • ${userOps} auf Einzelbenutzer
    • ` : ''} +
    `; + openModal('modalConfirm'); + + // wait for confirm or cancel via promise + const userConfirmed = await new Promise(resolve => { + const ok = document.getElementById('btnConfirmApply'); + const modal = document.getElementById('modalConfirm'); + function cleanup(value) { + ok.removeEventListener('click', onOk); + modal.querySelectorAll('[data-close]').forEach(x => x.removeEventListener('click', onCancel)); + resolve(value); + } + function onOk() { closeModal('modalConfirm'); cleanup(true); } + function onCancel() { cleanup(false); } + ok.addEventListener('click', onOk); + modal.querySelectorAll('[data-close]').forEach(x => x.addEventListener('click', onCancel)); + }); + + if (!userConfirmed) return; + + // Laufende Hintergrund-Anfragen abbrechen damit der Apply nicht hinten in der Queue hängt + abortMembershipFetch(); + + setLoading(`Führe ${total} Vorgang${total === 1 ? '' : 'e'} aus...`); + + // 60s-Timeout — sonst hängt die UI ewig wenn das Backend stirbt + const ctrl = new AbortController(); + const timeoutId = setTimeout(() => ctrl.abort(), 60000); + + try { + const resp = await fetch('/api/assignments/apply', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ ops }), + signal: ctrl.signal, + }); + clearTimeout(timeoutId); + let res = {}; + try { res = await resp.json(); } catch {} + if (!resp.ok) throw new Error(res.error || `HTTP ${resp.status}`); + // Defensiv: falls Backend versehentlich Array (mit Pipeline-Junk + Response) liefert, + // nimm das letzte Hashtable-Element + if (Array.isArray(res)) { + res = res.filter(x => x && typeof x === 'object').pop() || {}; + } + showResult(res); + toast(`${res.success} OK · ${res.errors} Fehler · ${res.skipped} Skip`, res.errors > 0 ? 'warn' : 'ok'); + State.session = []; + State.membershipCache.clear(); + renderSession(); + renderApps(); + renderExisting(); + updateMembershipForVisibleApps(); + updateStepper(); + } catch (e) { + clearTimeout(timeoutId); + if (e.name === 'AbortError') { + // Liveness-Check: lebt der Server noch? + try { + const ping = await fetch('/api/ping').then(r => r.json()); + toast(`Apply-Timeout nach 60s. Server lebt (Ping ${ping.time}). Apply hängt im Backend — siehe PowerShell-Konsole.`, 'err', 'Timeout'); + } catch { + toast('Apply-Timeout nach 60s. Server reagiert nicht — PowerShell-Konsole prüfen oder Server neu starten.', 'err', 'Server tot?'); + } + } else { + toast(e.message, 'err', 'Apply fehlgeschlagen'); + } + } finally { + clearLoading(); + } +} + +function showResult(res) { + const success = Number(res.success) || 0; + const skipped = Number(res.skipped) || 0; + const errors = Number(res.errors) || 0; + const total = Number(res.total) || 0; + const details = Array.isArray(res.details) ? res.details : []; + + document.getElementById('resOk').textContent = success; + document.getElementById('resSkip').textContent = skipped; + document.getElementById('resErr').textContent = errors; + document.getElementById('resTotal').textContent = total; + + // Status-Banner + const banner = document.getElementById('resBanner'); + let bannerCls = 'res-banner-ok'; + let bannerIco = '✓'; + let bannerText = `${success} Vorgang${success === 1 ? '' : 'e'} erfolgreich abgeschlossen`; + if (errors > 0) { + bannerCls = 'res-banner-err'; + bannerIco = '!'; + bannerText = `${errors} von ${total} Vorgang${total === 1 ? '' : 'en'} fehlgeschlagen`; + } else if (success === 0 && skipped > 0) { + bannerCls = 'res-banner-warn'; + bannerIco = '·'; + bannerText = `${skipped} Vorgang${skipped === 1 ? '' : 'e'} übersprungen (nichts zu tun)`; + } + banner.className = 'res-banner ' + bannerCls; + banner.innerHTML = `${bannerIco}${escapeHtml(bannerText)}`; + + // Details-Liste + const det = document.getElementById('resDetails'); + if (details.length === 0) { + det.innerHTML = ''; + } else { + const rows = details.map(d => { + const status = String(d.status || ''); + const cls = status === 'Success' || status === 'AlreadyMember' ? 'ok' + : status === 'Skipped' ? 'warn' + : status === 'Error' ? 'err' : ''; + const sym = cls === 'ok' ? '✓' : cls === 'warn' ? '·' : '✕'; + return `
    + ${sym} +
    +
    ${escapeHtml(d.target || '')} → ${escapeHtml(d.app || '')}
    +
    ${escapeHtml(d.group || '')} ${escapeHtml(d.type || '')}
    + ${d.message ? `
    ${escapeHtml(d.message)}
    ` : ''} +
    +
    `; + }).join(''); + det.innerHTML = `
    Details (${details.length})
    ${rows}
    `; + } + + // Report-Link als prominenter Button + const link = document.getElementById('resReportLink'); + if (res.reportUrl) { + link.innerHTML = `
    + + HTML-Report öffnen + `; + } else { + link.innerHTML = `
    ⚠ Kein Report-URL in der Response — siehe Debug unten
    `; + } + + // Debug-Sektion mit der RAW Response — damit wir sehen was tatsaechlich ankommt + const dbg = document.getElementById('resDebug'); + if (dbg) { + const raw = JSON.stringify(res, null, 2); + dbg.innerHTML = `
    + Raw Output${res.build ? ' (Backend-Build: ' + escapeHtml(res.build) + ')' : ' (kein build-Stamp — Backend wurde nicht neu gestartet!)'} +
    ${escapeHtml(raw)}
    +
    `; + } + + console.log('[APPLY] Response:', res); + openModal('modalResult'); +} + +// ============================================================= +// Modals +// ============================================================= + +function openModal(id) { document.getElementById(id).classList.remove('hidden'); } +function closeModal(id) { document.getElementById(id).classList.add('hidden'); } + +document.querySelectorAll('[data-close]').forEach(el => { + el.addEventListener('click', () => { + const modal = el.closest('.modal'); + if (modal) modal.classList.add('hidden'); + }); +}); + +document.addEventListener('keydown', e => { + if (e.key === 'Escape') { + document.querySelectorAll('.modal').forEach(m => m.classList.add('hidden')); + } +}); + +// ============================================================= +// Create Required Group Modal +// ============================================================= + +let createGroupContext = null; +let cgCheckTimer = null; + +// Naming-Schemas aus Settings holen. Fallback auf Defaults wenn Settings noch +// nicht geladen sind (z.B. waehrend des allerersten Init-Renders). +function getNamingFor(intent) { + const s = SettingsState && SettingsState.current; + const block = intent === 'available' + ? (s && s.availableGroupNaming) + : (s && s.requiredGroupNaming); + const defPrefix = 'intune-win-app-'; + const defSuffix = intent === 'available' ? '-available' : '-required'; + return { + prefix: (block && block.prefix) || defPrefix, + suffix: (block && block.suffix) || defSuffix, + }; +} + +function appSlug(appName) { + return appName.replace(/[^a-zA-Z0-9-]/g, '-').replace(/-+/g, '-').replace(/^-+|-+$/g, '').toLowerCase(); +} + +function suggestedGroupName(appName, intent) { + const { prefix, suffix } = getNamingFor(intent); + return `${prefix}${appSlug(appName)}${suffix}`; +} + +function getCurrentCgMode() { + const el = document.querySelector('input[name="cgMode"]:checked'); + return el ? el.value : 'req-group'; +} + +// Modus -> { intent, isGroup, target } — single source of truth +function cgModeMeta(mode) { + switch (mode) { + case 'req-group': return { intent: 'required', isGroup: true, target: null }; + case 'req-allusers': return { intent: 'required', isGroup: false, target: 'ALL_USERS' }; + case 'req-alldevices': return { intent: 'required', isGroup: false, target: 'ALL_DEVICES' }; + case 'avail-group': return { intent: 'available', isGroup: true, target: null }; + case 'avail-allusers': return { intent: 'available', isGroup: false, target: 'ALL_USERS' }; + case 'avail-alldevices':return { intent: 'available', isGroup: false, target: 'ALL_DEVICES' }; + } + return { intent: 'required', isGroup: true, target: null }; +} + +function openCreateGroupModal(appId, appName) { + createGroupContext = { appId, appName }; + document.getElementById('cgAppName').value = appName; + + // Bereits zugewiesene Native-Targets aus dem App-Cache ermitteln. + // ALL_USERS und ALL_DEVICES koennen je Intent nur EINMAL existieren — + // wenn schon da, Option deaktivieren statt einen 409 vom Backend zu kassieren. + const app = State.apps.find(a => a.AppId === appId); + const has = (arr, gid) => !!(app && arr && arr.some(g => g.GroupId === gid)); + const occupied = { + 'req-allusers': has(app && app.RequiredGroups, 'ALL_USERS'), + 'req-alldevices': has(app && app.RequiredGroups, 'ALL_DEVICES'), + 'avail-allusers': has(app && app.AvailableGroups, 'ALL_USERS'), + 'avail-alldevices': has(app && app.AvailableGroups, 'ALL_DEVICES'), + }; + + document.querySelectorAll('input[name="cgMode"]').forEach(radio => { + const isOccupied = !!occupied[radio.value]; + radio.disabled = isOccupied; + radio.checked = false; // Reset jeder Auswahl, Default unten gesetzt + const card = radio.closest('.cg-mode'); + if (!card) return; + card.classList.toggle('cg-mode--disabled', isOccupied); + + const desc = card.querySelector('.cg-mode-desc'); + if (desc) { + // Original-Description am ersten Aufruf merken, sonst wuerde wiederholtes + // Oeffnen den Text dauerhaft auf "bereits zugewiesen" pinnen. + if (!desc.dataset.origDesc) desc.dataset.origDesc = desc.textContent; + desc.textContent = isOccupied + ? 'Bereits zugewiesen — keine zweite Zuweisung möglich.' + : desc.dataset.origDesc; + } + }); + + // Default-Modus: erste verfuegbare Option (in der Reihenfolge: req-group ist + // immer da, fallback auf naechstes). Garantiert konsistente Vorauswahl. + const order = ['req-group','req-allusers','req-alldevices','avail-group','avail-allusers','avail-alldevices']; + for (const val of order) { + if (!occupied[val]) { + const r = document.querySelector(`input[name="cgMode"][value="${val}"]`); + if (r) { r.checked = true; break; } + } + } + document.getElementById('cgAssignToApp').checked = true; + applyCgModeUi(); + openModal('modalCreateGroup'); +} + +// Zeigt/versteckt das Namens-Input + Vorschlag je nach Modus. +// All-Users/All-Devices brauchen weder Name noch Validierung. +function applyCgModeUi() { + const mode = getCurrentCgMode(); + const meta = cgModeMeta(mode); + const nameGroup = document.getElementById('cgGroupNameGroup'); + const assignWrap = document.getElementById('cgAssignToAppWrap'); + const createBtn = document.getElementById('cgCreate'); + + const intentLabel = meta.intent === 'available' ? 'Available' : 'Required'; + if (meta.isGroup) { + nameGroup.hidden = false; + assignWrap.hidden = false; + document.getElementById('cgGroupName').value = suggestedGroupName(createGroupContext.appName, meta.intent); + document.querySelector('#cgAssignToAppWrap span').textContent = + `Gruppe direkt der App als ${intentLabel} zuweisen`; + checkGroupName(); + createBtn.textContent = `${intentLabel}-Gruppe erstellen`; + } else { + nameGroup.hidden = true; + assignWrap.hidden = true; + createBtn.disabled = false; + const tgtLbl = meta.target === 'ALL_USERS' ? 'All Users' : 'All Devices'; + createBtn.textContent = `Als ${intentLabel} für ${tgtLbl} zuweisen`; + } +} + +document.querySelectorAll('input[name="cgMode"]').forEach(r => { + r.addEventListener('change', applyCgModeUi); +}); + +document.getElementById('cgGroupName').addEventListener('input', () => { + clearTimeout(cgCheckTimer); + cgCheckTimer = setTimeout(checkGroupName, 400); +}); + +async function checkGroupName() { + const name = document.getElementById('cgGroupName').value.trim(); + const status = document.getElementById('cgStatus'); + const btn = document.getElementById('cgCreate'); + if (!name) { + status.textContent = 'Name darf nicht leer sein'; + status.className = 'form-hint err'; + btn.disabled = true; + return; + } + status.textContent = 'Prüfe...'; + status.className = 'form-hint'; + btn.disabled = true; + try { + const res = await api('/api/groups/check', { method: 'POST', body: { displayName: name } }); + if (res.exists) { + status.textContent = '✕ Gruppe existiert bereits'; + status.className = 'form-hint err'; + } else { + status.textContent = '✓ Name ist verfügbar'; + status.className = 'form-hint ok'; + btn.disabled = false; + } + } catch (e) { + status.textContent = 'Prüfung fehlgeschlagen: ' + e.message; + status.className = 'form-hint err'; + } +} + +document.getElementById('cgCreate').addEventListener('click', async () => { + if (!createGroupContext) return; + const meta = cgModeMeta(getCurrentCgMode()); + + if (meta.isGroup) { + // Gruppe erstellen + zuweisen + const { prefix, suffix } = getNamingFor(meta.intent); + const raw = document.getElementById('cgGroupName').value.trim(); + // Praefix/Suffix entfernen damit der Backend-Slug-Builder die Saettigung steuert + const customName = raw + .replace(new RegExp('^' + prefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')), '') + .replace(new RegExp(suffix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '$'), ''); + const assignToApp = document.getElementById('cgAssignToApp').checked; + setLoading(`Erstelle ${meta.intent === 'available' ? 'Available' : 'Required'}-Gruppe...`); + try { + const res = await api('/api/groups', { + method: 'POST', + body: { + appId: createGroupContext.appId, + appName: createGroupContext.appName, + customName, + assignToApp, + intent: meta.intent, + } + }); + toast(`Gruppe erstellt: ${res.displayName}` + (res.assigned ? ' (zugewiesen)' : ''), 'ok'); + closeModal('modalCreateGroup'); + if (assignToApp) await loadApps(true); + } catch (e) { + toast(e.message, 'err', 'Erstellen fehlgeschlagen'); + } finally { + clearLoading(); + } + return; + } + + // Native Zuweisung (All Users / All Devices) — Intent kann required ODER available sein + const intentLabel = meta.intent === 'available' ? 'Available' : 'Required'; + const targetLabel = meta.target === 'ALL_USERS' ? 'All Users' : 'All Devices'; + setLoading(`Weise als ${intentLabel} für ${targetLabel} zu...`); + try { + await api(`/api/apps/${encodeURIComponent(createGroupContext.appId)}/assignments`, { + method: 'POST', + body: { intent: meta.intent, target: meta.target }, + }); + toast(`${intentLabel}-Zuweisung (${targetLabel}) hinzugefügt`, 'ok'); + closeModal('modalCreateGroup'); + await loadApps(true); + } catch (e) { + toast(e.message, 'err', 'Zuweisung fehlgeschlagen'); + } finally { + clearLoading(); + } +}); + +// ============================================================= +// App umbenennen +// ============================================================= + +let renameAppContext = null; + +function openRenameAppModal(appId, appName) { + renameAppContext = { appId, appName }; + document.getElementById('raOldName').textContent = appName; + const input = document.getElementById('raNewName'); + input.value = appName; + document.getElementById('raError').textContent = ''; + openModal('modalRenameApp'); + // Im naechsten Frame fokussieren + komplett markieren, damit der User + // sofort lostippen oder gezielt aendern kann. + requestAnimationFrame(() => { + input.focus(); + input.select(); + }); +} + +async function submitRenameApp() { + if (!renameAppContext) return; + const input = document.getElementById('raNewName'); + const errEl = document.getElementById('raError'); + const newName = input.value.trim(); + errEl.textContent = ''; + + if (newName.length < 1) { errEl.textContent = 'Name darf nicht leer sein.'; return; } + if (newName.length > 256) { errEl.textContent = 'Name zu lang (max. 256 Zeichen).'; return; } + if (newName === renameAppContext.appName) { + closeModal('modalRenameApp'); + return; + } + + setLoading(`Benenne um zu "${newName}"...`); + try { + const res = await api(`/api/apps/${encodeURIComponent(renameAppContext.appId)}`, { + method: 'PATCH', + body: { displayName: newName }, + }); + // Cache lokal nachziehen + const app = State.apps.find(a => a.AppId === renameAppContext.appId); + if (app) app.AppName = res.appName || newName; + closeModal('modalRenameApp'); + renderApps(); + toast(`Umbenannt: "${renameAppContext.appName}" → "${newName}"`, 'ok'); + } catch (e) { + errEl.textContent = e.message; + } finally { + clearLoading(); + } +} + +// --- Setup-Datei aktualisieren --- +let updateContentContext = null; + +function openUpdateContentModal(appId, appName, appType, appVersion) { + updateContentContext = { appId, appName, appType }; + document.getElementById('ucAppName').textContent = appName; + document.getElementById('ucFilePath').value = ''; + document.getElementById('ucVersion').value = appVersion || ''; + document.getElementById('ucConfirm').checked = false; + document.getElementById('ucError').textContent = ''; + const prog = document.getElementById('ucProgress'); + prog.classList.add('hidden'); prog.innerHTML = ''; + document.getElementById('ucSubmit').disabled = true; + openModal('modalUpdateContent'); + requestAnimationFrame(() => document.getElementById('ucFilePath').focus()); +} + +async function submitUpdateContent() { + if (!updateContentContext) return; + const filePath = document.getElementById('ucFilePath').value.trim(); + const version = document.getElementById('ucVersion').value.trim(); + const errEl = document.getElementById('ucError'); + const prog = document.getElementById('ucProgress'); + const submit = document.getElementById('ucSubmit'); + errEl.textContent = ''; + + if (!filePath) { errEl.textContent = 'Bitte einen Dateipfad angeben.'; return; } + if (!document.getElementById('ucConfirm').checked) { errEl.textContent = 'Bitte die Bestätigung anhaken.'; return; } + + submit.disabled = true; + prog.classList.remove('hidden'); + prog.innerHTML = '
    Lade hoch und aktiviere — das kann je nach Dateigröße dauern…'; + + try { + const body = { filePath }; + if (version) body.displayVersion = version; + const res = await api(`/api/apps/${encodeURIComponent(updateContentContext.appId)}/content`, { + method: 'POST', + body, + timeoutMs: 1800000, // 30 Min — grosse Pakete + Commit-Polling + }); + closeModal('modalUpdateContent'); + // App-Liste neu laden (Backend hat den Cache geleert) + await loadApps(true, { silent: true }); + State.appDetails.delete(updateContentContext.appId); + renderApps(); + toast(`Setup-Datei aktualisiert: "${updateContentContext.appName}" → Version ${res.contentVersion}`, 'ok'); + } catch (e) { + errEl.textContent = e.message; + prog.classList.add('hidden'); + submit.disabled = false; + } +} + +// ============================================================= +// Destruktive Aktionen: App loeschen / Zuweisung entfernen +// ============================================================= + +async function deleteAppWithConfirm(appId, appName) { + if (!appId) return; + const msg = `App aus Intune LÖSCHEN?\n\n ${appName}\n\nDas entfernt die App und alle Zuweisungen aus Intune. Die Aktion kann nicht rückgängig gemacht werden.`; + if (!window.confirm(msg)) return; + + setLoading(`Lösche "${appName}"...`); + try { + await api(`/api/apps/${encodeURIComponent(appId)}`, { method: 'DELETE' }); + State.apps = State.apps.filter(a => a.AppId !== appId); + State.appDetails.delete(appId); + State.expandedApps.delete(appId); + State.session = State.session.filter(s => s.appId !== appId); + State.membershipCache.clear(); + renderApps(); + renderSession(); + renderExisting(); + updateStepper(); + toast(`App "${appName}" gelöscht`, 'ok'); + } catch (e) { + toast(e.message, 'err', 'Löschen fehlgeschlagen'); + } finally { + clearLoading(); + } +} + +async function removeAssignmentWithConfirm(ctx) { + const { appId, appName, groupId, groupName, type } = ctx; + if (!appId || !groupId) return; + if (groupId === 'ALL_USERS' || groupId === 'ALL_DEVICES') { + toast('Native Zuweisungen (All Users / All Devices) können hier nicht entfernt werden.', 'warn'); + return; + } + const typeLbl = type === 'required' ? 'Required' : 'Available'; + const msg = `Zuweisung entfernen?\n\nApp: ${appName}\nGruppe: ${groupName}\nTyp: ${typeLbl}\n\nDie Gruppe ist danach der App nicht mehr zugewiesen. Mitgliedschaften der Gruppe bleiben unverändert.`; + if (!window.confirm(msg)) return; + + setLoading(`Entferne Zuweisung "${groupName}"...`); + try { + const url = `/api/apps/${encodeURIComponent(appId)}/assignments/${encodeURIComponent(groupId)}?type=${encodeURIComponent(type)}`; + await api(url, { method: 'DELETE' }); + + // Lokal nachziehen — Backend tut das ebenfalls im Cache + const app = State.apps.find(a => a.AppId === appId); + if (app) { + if (type === 'available') app.AvailableGroups = app.AvailableGroups.filter(g => g.GroupId !== groupId); + if (type === 'required') app.RequiredGroups = app.RequiredGroups.filter(g => g.GroupId !== groupId); + app.AvailableCount = app.AvailableGroups.length; + app.RequiredCount = app.RequiredGroups.length; + } + // Geplante Zuweisungen auf die gleiche Gruppe ggf. ebenfalls aufraeumen — sie + // wuerden ja im naechsten Apply gegen eine nicht mehr zugewiesene Gruppe laufen. + State.session = State.session.filter(s => !(s.appId === appId && s.groupId === groupId && (s.type || '').toLowerCase() === type)); + State.membershipCache.clear(); + renderApps(); + renderSession(); + renderExisting(); + updateStepper(); + toast(`Zuweisung "${groupName}" entfernt`, 'ok'); + } catch (e) { + toast(e.message, 'err', 'Entfernen fehlgeschlagen'); + } finally { + clearLoading(); + } +} + +// ============================================================= +// Externe Direkt-Links (Entra, Intune, Members-Tab) +// ============================================================= + +const ENTRA_ICON = ``; +const MEMBERS_ICON = ``; +const TRASH_ICON = ``; +const LOCK_ICON = ``; +const PENCIL_ICON = ``; +// Microsoft Teams Icon — original aus Bootstrap Icons (microsoft-teams) +const TEAMS_ICON = ``; + +function entraUserLink(id, name) { + const url = `https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/UserProfileMenuBlade/~/overview/userId/${encodeURIComponent(id)}`; + return `${ENTRA_ICON}`; +} + +function entraGroupLink(id, name) { + // Group-Overview-Blade im Intune-Portal. Wichtig: schliessendes "/menuId/" + // ist Teil des Deep-Links und darf NICHT weggelassen werden. + const url = `https://intune.microsoft.com/#view/Microsoft_AAD_IAM/GroupDetailsMenuBlade/~/Overview/groupId/${encodeURIComponent(id)}/menuId/`; + return `${ENTRA_ICON}`; +} + +function intuneAppLink(id, name) { + const url = `https://intune.microsoft.com/#view/Microsoft_Intune_Apps/SettingsMenu/~/2/appId/${encodeURIComponent(id)}`; + return `${ENTRA_ICON}`; +} + +function membersTabLink(id, name) { + // Oeffnet die Members-Blade der Gruppe direkt im Intune-Portal (neuer Tab). + // Auch hier ist das "/menuId/" am Ende Pflicht. + const url = `https://intune.microsoft.com/#view/Microsoft_AAD_IAM/GroupDetailsMenuBlade/~/Members/groupId/${encodeURIComponent(id)}/menuId/`; + return `${MEMBERS_ICON}`; +} + +function teamsChatLink(upn, name) { + // Microsoft-Teams Deep-Link: oeffnet IMMER den installierten Desktop-Client + // ueber den msteams:-Protocol-Handler. Web-Variante (https://) wird hier + // bewusst nicht verwendet — der User hat den Desktop-Client als gewuenschten + // Zielort definiert. + if (!upn) return ''; + const url = `msteams:/l/chat/0/0?users=${encodeURIComponent(upn)}`; + return `${TEAMS_ICON}`; +} + +// ============================================================= +// Inline Mitglieder-Browser (Gruppe aufklappen → User auswaehlen) +// ============================================================= + +async function toggleGroupExpand(groupId, groupName) { + if (State.expandedGroups.has(groupId)) { + State.expandedGroups.delete(groupId); + renderTargets(); + return; + } + // Anlegen + Loading + State.expandedGroups.set(groupId, { + members: null, + selected: new Set(), + loading: true, + error: null, + filter: '', + name: groupName, + }); + renderTargets(); + + try { + const res = await api(`/api/groups/${encodeURIComponent(groupId)}/members`); + const entry = State.expandedGroups.get(groupId); + if (!entry) return; // user has collapsed in the meantime + entry.members = (res.items || []) + .filter(m => m.UserPrincipalName) + .sort((a, b) => (a.DisplayName || '').localeCompare(b.DisplayName || '', 'de', { sensitivity: 'base' })); + entry.loading = false; + } catch (e) { + const entry = State.expandedGroups.get(groupId); + if (!entry) return; + entry.loading = false; + entry.error = e.message; + } + renderTargets(); +} + +function renderExpandedMembers(groupId, groupName) { + const entry = State.expandedGroups.get(groupId); + if (!entry) return ''; + + if (entry.loading) { + return `
    +
    +
    + Lade Mitglieder... +
    +
    `; + } + + if (entry.error) { + return `
    +
    Fehler: ${escapeHtml(entry.error)}
    +
    `; + } + + const all = entry.members || []; + const q = entry.filter.toLowerCase(); + const items = q + ? all.filter(m => (m.DisplayName || '').toLowerCase().includes(q) || (m.UserPrincipalName || '').toLowerCase().includes(q)) + : all; + + const selectedCount = entry.selected.size; + + const filterInput = all.length > 6 + ? `` + : ''; + + const memberRows = items.length === 0 + ? `
    ${all.length === 0 ? 'Keine direkten Benutzer in dieser Gruppe.' : 'Keine Treffer.'}
    ` + : items.map(m => { + const isSel = entry.selected.has(m.Id) ? 'selected' : ''; + const checked = entry.selected.has(m.Id) ? 'checked' : ''; + return ``; + }).join(''); + + return `
    + ${filterInput} +
    + ${all.length} Mitglieder${selectedCount ? ` · ${selectedCount} ausgewählt` : ''} +
    + + · + +
    +
    +
    ${memberRows}
    +
    + +
    +
    `; +} + +function attachExpandedHandlers(list) { + // Filter-Input + list.querySelectorAll('.expand-filter').forEach(inp => { + inp.addEventListener('input', e => { + const gid = inp.dataset.groupId; + const entry = State.expandedGroups.get(gid); + if (!entry) return; + entry.filter = e.target.value; + // Nur die expand-list neu rendern, nicht alles — sonst verliert der Input den Focus + const wrapper = inp.closest('.target-row-wrap'); + if (wrapper) { + const oldList = wrapper.querySelector('.expand-list'); + const oldCount = wrapper.querySelector('.expand-count'); + const fresh = document.createElement('div'); + fresh.innerHTML = renderExpandedMembers(gid, entry.name); + const newList = fresh.querySelector('.expand-list'); + const newCount = fresh.querySelector('.expand-count'); + if (oldList && newList) oldList.replaceWith(newList); + if (oldCount && newCount) oldCount.replaceWith(newCount); + attachMemberHandlers(wrapper); + } + }); + }); + + attachMemberHandlers(list); + + // Action-Buttons (Alle / Leeren / Übernehmen) + list.querySelectorAll('[data-expand-action]').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + e.stopPropagation(); + const gid = btn.dataset.groupId; + const entry = State.expandedGroups.get(gid); + if (!entry) return; + const action = btn.dataset.expandAction; + if (action === 'all') { + const q = entry.filter.toLowerCase(); + const visible = q + ? (entry.members || []).filter(m => (m.DisplayName || '').toLowerCase().includes(q) || (m.UserPrincipalName || '').toLowerCase().includes(q)) + : (entry.members || []); + visible.forEach(m => entry.selected.add(m.Id)); + renderTargets(); + renderSession(); + renderPinnedTargets(); + } else if (action === 'clear') { + entry.selected.clear(); + renderTargets(); + renderSession(); + renderPinnedTargets(); + } else if (action === 'apply') { + applyExpandedSelection(gid); + } + }); + }); +} + +function attachMemberHandlers(scope) { + scope.querySelectorAll('.ex-member-row').forEach(row => { + row.addEventListener('change', e => { + const gid = row.dataset.groupId; + const mid = row.dataset.memberId; + const entry = State.expandedGroups.get(gid); + if (!entry) return; + if (e.target.checked) entry.selected.add(mid); + else entry.selected.delete(mid); + row.classList.toggle('selected', e.target.checked); + // Counter & Apply-Button updaten ohne Komplettrender + const wrapper = row.closest('.target-row-wrap'); + if (wrapper) { + const cnt = wrapper.querySelector('.expand-count'); + if (cnt) cnt.innerHTML = `${(entry.members || []).length} Mitglieder${entry.selected.size ? ` · ${entry.selected.size} ausgewählt` : ''}`; + const btn = wrapper.querySelector('[data-expand-action="apply"]'); + if (btn) { + btn.disabled = entry.selected.size === 0; + btn.textContent = entry.selected.size > 0 ? `${entry.selected.size} Benutzer übernehmen` : 'Benutzer übernehmen'; + } + } + // Rechte Spalte (Empfaenger-Zaehler) und Pin-Leiste aktualisieren + renderSession(); + renderPinnedTargets(); + }); + }); +} + +function applyExpandedSelection(groupId) { + const entry = State.expandedGroups.get(groupId); + if (!entry || !entry.members) return; + const picked = entry.members.filter(m => entry.selected.has(m.Id)); + if (picked.length === 0) { + toast('Keine Mitglieder ausgewählt', 'warn'); + return; + } + + // 1) Aktuellen Modus (dept oder rpa) in den Cache schreiben — sonst geht + // die Abteilungs-Auswahl + die geladene Liste verloren. + const oldMode = State.mode; + if (oldMode !== 'user') { + State.modeCache.set(oldMode, { + targets: State.targets.slice(), + selectedIds: new Set(State.selectedTargetIds), + expandedGroups: new Map(), // expand wird gleich geschlossen + }); + } + + // 2) In User-Modus wechseln. Bestehende User-Auswahl MERGEN, nicht ueberschreiben. + State.mode = 'user'; + document.querySelectorAll('.seg').forEach(s => s.classList.toggle('active', s.dataset.mode === 'user')); + + const cachedUser = State.modeCache.get('user'); + if (cachedUser && cachedUser.targets && cachedUser.targets.length > 0) { + const existingIds = new Set(cachedUser.targets.map(t => t.Id)); + const newOnes = picked.filter(p => !existingIds.has(p.Id)); + State.targets = [...cachedUser.targets, ...newOnes]; + State.selectedTargetIds = new Set([ + ...cachedUser.selectedIds, + ...picked.map(p => p.Id), + ]); + } else { + State.targets = picked.slice(); + State.selectedTargetIds = new Set(picked.map(m => m.Id)); + } + State.membershipCache.clear(); + State.expandedGroups.clear(); + + const search = document.getElementById('targetSearch'); + search.placeholder = 'Tippe Name oder UPN...'; + document.getElementById('userSearchHint').classList.remove('hidden'); + search.value = ''; + + renderTargets(); + onTargetSelectionChange(); + toast(`${picked.length} Benutzer aus "${entry.name}" übernommen — Abteilungs-Auswahl bleibt erhalten`, 'ok'); +} + +// (Alte Modal-Logik — unbenutzt, aber harmlos:) +let mmContext = { groupId: null, groupName: null, members: [], selectedIds: new Set() }; + +async function openMembersModal(groupId, groupName) { + mmContext = { groupId, groupName, members: [], selectedIds: new Set() }; + document.getElementById('mmTitle').textContent = `Mitglieder · ${groupName}`; + document.getElementById('mmSearch').value = ''; + document.getElementById('mmInfo').textContent = '0 ausgewählt'; + document.getElementById('mmList').innerHTML = ` +
    +
    +
    +
    +
    +
    `; + openModal('modalMembers'); + + try { + const res = await api(`/api/groups/${encodeURIComponent(groupId)}/members`); + mmContext.members = (res.items || []).filter(m => m.UserPrincipalName); // nur User, keine geschachtelten Gruppen + renderMembersList(); + } catch (e) { + document.getElementById('mmList').innerHTML = emptyState({ + title: 'Fehler beim Laden', + text: e.message, + }); + } +} + +function renderMembersList() { + const q = (document.getElementById('mmSearch').value || '').toLowerCase().trim(); + const items = q + ? mmContext.members.filter(m => + (m.DisplayName || '').toLowerCase().includes(q) || + (m.UserPrincipalName || '').toLowerCase().includes(q)) + : mmContext.members; + + const list = document.getElementById('mmList'); + if (mmContext.members.length === 0) { + list.innerHTML = emptyState({ small: true, title: 'Keine Mitglieder', text: 'Diese Gruppe hat keine direkten Benutzer.' }); + return; + } + if (items.length === 0) { + list.innerHTML = emptyState({ small: true, title: 'Keine Treffer', text: 'Filter zurücksetzen.' }); + return; + } + + list.innerHTML = items.map(m => { + const checked = mmContext.selectedIds.has(m.Id) ? 'checked' : ''; + const sel = mmContext.selectedIds.has(m.Id) ? 'selected' : ''; + return ``; + }).join(''); + + list.querySelectorAll('.member-row').forEach(row => { + row.addEventListener('change', e => { + const id = row.dataset.id; + if (e.target.checked) mmContext.selectedIds.add(id); + else mmContext.selectedIds.delete(id); + row.classList.toggle('selected', e.target.checked); + document.getElementById('mmInfo').textContent = + mmContext.selectedIds.size === 0 ? 'Keine ausgewählt' : `${mmContext.selectedIds.size} ausgewählt`; + }); + }); +} + +document.getElementById('mmSearch')?.addEventListener('input', renderMembersList); + +document.getElementById('mmSelectAll')?.addEventListener('click', () => { + const q = (document.getElementById('mmSearch').value || '').toLowerCase().trim(); + const items = q + ? mmContext.members.filter(m => + (m.DisplayName || '').toLowerCase().includes(q) || + (m.UserPrincipalName || '').toLowerCase().includes(q)) + : mmContext.members; + items.forEach(m => mmContext.selectedIds.add(m.Id)); + renderMembersList(); + document.getElementById('mmInfo').textContent = `${mmContext.selectedIds.size} ausgewählt`; +}); + +document.getElementById('mmClear')?.addEventListener('click', () => { + mmContext.selectedIds.clear(); + renderMembersList(); + document.getElementById('mmInfo').textContent = 'Keine ausgewählt'; +}); + +document.getElementById('mmApply')?.addEventListener('click', () => { + if (mmContext.selectedIds.size === 0) { + toast('Keine Mitglieder ausgewählt', 'warn'); + return; + } + + // In den User-Modus wechseln und die ausgewählten Mitglieder als Targets übernehmen + State.mode = 'user'; + document.querySelectorAll('.seg').forEach(s => s.classList.toggle('active', s.dataset.mode === 'user')); + + const picked = mmContext.members.filter(m => mmContext.selectedIds.has(m.Id)); + State.targets = picked; + State.selectedTargetIds = new Set(picked.map(m => m.Id)); + State.membershipCache.clear(); + + const search = document.getElementById('targetSearch'); + search.placeholder = 'Tippe Name oder UPN...'; + document.getElementById('userSearchHint').classList.remove('hidden'); + search.value = ''; + + renderTargets(); + onTargetSelectionChange(); + closeModal('modalMembers'); + toast(`${picked.length} Benutzer aus "${mmContext.groupName}" übernommen`, 'ok'); +}); + +// ============================================================= +// Helpers +// ============================================================= + +function emptyState({ title, text, small = false, ico = null }) { + return `
    + ${ico ? `
    ${ico}
    ` : ''} + ${title ? `
    ${escapeHtml(title)}
    ` : ''} + ${text ? `
    ${escapeHtml(text)}
    ` : ''} +
    `; +} + +// ============================================================= +// Hilfe-Modal: laedt www/help.md und rendert es mit marked. +// TOC wird aus den H2-Headings auto-generiert (mit Anker-IDs). +// ============================================================= + +let helpLoaded = false; + +async function openHelpModal() { + openModal('modalHelp'); + // Version-Badge im Footer setzen (immer aktuell, auch wenn helpLoaded == true) + try { + const v = await api('/api/version'); + const el = document.getElementById('helpVersion'); + if (el) el.textContent = `Version ${v.version} · Build ${v.build}`; + } catch {} + if (helpLoaded) return; + const contentEl = document.getElementById('helpContent'); + try { + const res = await fetch('/help.md', { cache: 'no-store' }); + if (!res.ok) throw new Error('HTTP ' + res.status); + const md = await res.text(); + // marked rendert das ganze Dokument + const html = renderMarkdown(md); + contentEl.innerHTML = html; + // H2 mit IDs versehen und TOC bauen + const tocEl = document.querySelector('#helpToc ul'); + tocEl.innerHTML = ''; + const slug = (txt) => txt.toLowerCase().replace(/[^\w\s-]/g, '').trim().replace(/\s+/g, '-'); + const seen = new Set(); + const headings = []; + const links = new Map(); // headingId -> element + contentEl.querySelectorAll('h2').forEach(h => { + let id = slug(h.textContent); + let n = 2; + while (seen.has(id)) { id = slug(h.textContent) + '-' + (n++); } + seen.add(id); + h.id = id; + headings.push(h); + const li = document.createElement('li'); + const a = document.createElement('a'); + a.href = '#' + id; + a.textContent = h.textContent; + a.addEventListener('click', e => { + e.preventDefault(); + h.scrollIntoView({ behavior: 'smooth', block: 'start' }); + }); + li.appendChild(a); + tocEl.appendChild(li); + links.set(id, a); + }); + + // Aktiver TOC-Eintrag via Scroll-Position erkennen. + // IntersectionObserver mit Top-Marker (kleiner Slot oben im Viewport) — + // sobald ein H2 darin auftaucht, ist es der "aktive" Abschnitt. + const setActive = (id) => { + links.forEach((a, key) => a.classList.toggle('active', key === id)); + }; + // Default: erstes Heading aktiv + if (headings.length > 0) setActive(headings[0].id); + + // Beobachtung: scroll-Position im help-content-Container + const onScroll = () => { + const containerTop = contentEl.getBoundingClientRect().top; + let currentId = headings[0]?.id; + // Nimm das letzte Heading dessen oben-Kante schon ueber dem 1/4-Mark + // des Containers ist — wirkt natuerlicher als "schwellt rein". + const threshold = containerTop + contentEl.clientHeight * 0.25; + for (const h of headings) { + if (h.getBoundingClientRect().top <= threshold) currentId = h.id; + else break; + } + if (currentId) setActive(currentId); + }; + contentEl.addEventListener('scroll', onScroll, { passive: true }); + onScroll(); + helpLoaded = true; + } catch (e) { + contentEl.innerHTML = `
    Hilfe konnte nicht geladen werden: ${escapeHtml(e.message)}
    `; + } +} + +document.getElementById('btnHelp')?.addEventListener('click', openHelpModal); + +// ============================================================= +// Branding / Theme: Logo + benutzerdefinierte Farben +// ============================================================= + +// Default-Hex pro Konzept — wird bei "Reset" pro Farbe verwendet. +// Diese Werte sind die VOM USER vorgegebenen Defaults (kein willkuerliches +// Bootstrap-Blau mehr). Spiegelt Get-DefaultSettings im Backend. +const ThemeDefaults = { + brand: '#27a078', + accent: '#3b82f6', + required: '#cb2a7a', + success: '#10b981', + warning: '#f59e0b', + error: '#ef4444', + rowSelected: '#71e5c4', + detailPanel: '#f7f7f7', +}; + + +// Welche Konzept-Farbe auf welche CSS-Variablen abgebildet wird. Die soft/ +// strong/bg/border/shadow-Werte werden zur Laufzeit aus dem Hex per rgba() +// abgeleitet (Alpha-Konstanten siehe applyThemeColors). +const ThemeMap = { + brand: { main: '--brand-primary' }, + accent: { main: '--brand-accent', soft: '--accent-soft', strong: '--accent-strong', bg: '--accent-bg' }, + required: { main: '--pink', soft: '--pink-soft' }, + success: { main: '--success', soft: '--success-soft', strong: '--success-strong', bg: '--success-bg', border: '--success-border', shadow: '--success-shadow' }, + warning: { main: '--warning', soft: '--warning-soft', strong: '--warning-strong', bg: '--warning-bg', border: '--warning-border' }, + error: { main: '--error', soft: '--error-soft', strong: '--error-strong', bg: '--error-bg', border: '--error-border' }, +}; + +function hexToRgb(hex) { + if (!hex) return null; + let h = hex.replace(/^#/, ''); + if (h.length === 3) h = h.split('').map(c => c + c).join(''); + if (!/^[0-9a-f]{6}$/i.test(h)) return null; + const n = parseInt(h, 16); + return { r: (n >> 16) & 255, g: (n >> 8) & 255, b: n & 255 }; +} + +function rgbaStr(hex, alpha) { + const rgb = hexToRgb(hex); + if (!rgb) return null; + return `rgba(${rgb.r},${rgb.g},${rgb.b},${alpha})`; +} + +// WCAG-Relative-Luminance — basis fuer Kontrast-Entscheidung +function relLuminance(rgb) { + const ch = (v) => { + const s = v / 255; + return s < 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4); + }; + return 0.2126 * ch(rgb.r) + 0.7152 * ch(rgb.g) + 0.0722 * ch(rgb.b); +} + +// WCAG Contrast Ratio zwischen zwei Farben +function contrastRatio(rgb1, rgb2) { + const l1 = relLuminance(rgb1); + const l2 = relLuminance(rgb2); + const hi = Math.max(l1, l2); + const lo = Math.min(l1, l2); + return (hi + 0.05) / (lo + 0.05); +} + +// Liefert eine gut lesbare Vordergrund-Palette fuer den gegebenen Hintergrund. +// Pickt zwischen weiss/schwarz basierend auf WCAG-Contrast (nicht nur Luminanz- +// Schwellwert — der wuerde bei mittel-hellen Farben wie Pink danebenliegen). +// Liefert {primary, secondary, muted} jeweils mit absteigender Saettigung +// gegen den Hintergrund. +function readableForeground(bgRgb) { + if (!bgRgb) return { primary: '#111111', secondary: '#374151', muted: '#6b7280' }; + const WHITE = { r: 255, g: 255, b: 255 }; + const BLACK = { r: 17, g: 17, b: 17 }; + const crWhite = contrastRatio(bgRgb, WHITE); + const crBlack = contrastRatio(bgRgb, BLACK); + if (crWhite >= crBlack) { + // Weisser Text ist kontrastreicher -> bg ist eher dunkel + return { primary: '#ffffff', secondary: '#e7eaf0', muted: '#c9d0db' }; + } + // Schwarzer Text ist kontrastreicher -> bg ist eher hell + return { primary: '#111111', secondary: '#374151', muted: '#475569' }; +} + + +function applyThemeColors(colors) { + if (!colors) return; + const root = document.documentElement.style; + for (const key of Object.keys(ThemeMap)) { + const hex = colors[key]; + if (!hex || !hexToRgb(hex)) continue; + const vars = ThemeMap[key]; + root.setProperty(vars.main, hex); + if (vars.soft) root.setProperty(vars.soft, rgbaStr(hex, 0.12)); + if (vars.strong) root.setProperty(vars.strong, rgbaStr(hex, 0.20)); + if (vars.border) root.setProperty(vars.border, rgbaStr(hex, 0.30)); + if (vars.bg) root.setProperty(vars.bg, rgbaStr(hex, 0.06)); + if (vars.shadow) root.setProperty(vars.shadow, rgbaStr(hex, 0.35)); + } + + // Background der aufgeklappten App: picked color wird 1:1 als solid + // Hintergrund gesetzt (keine Transparenz). Text und Icons werden per + // WCAG-Kontrast automatisch in Schwarz oder Weiss gewaehlt. + // Innere Surfaces (Chips, File-Paths, Asg-Boxen) werden als SOLID-Shade + // der Picked Color berechnet (heller bei dunkler Tint, dunkler bei heller). + const rgbToHex = (rgb) => '#' + ['r','g','b'].map(c => Math.max(0, Math.min(255, Math.round(rgb[c]))).toString(16).padStart(2,'0')).join(''); + const shade = (rgb, delta) => ({ + r: Math.max(0, Math.min(255, rgb.r + Math.round(delta * 255))), + g: Math.max(0, Math.min(255, rgb.g + Math.round(delta * 255))), + b: Math.max(0, Math.min(255, rgb.b + Math.round(delta * 255))), + }); + const surfaceShades = (rgb) => { + const isDark = relLuminance(rgb) < 0.5; + const d = isDark ? 0.06 : -0.04; // Dark bg -> heller machen, Light bg -> dunkler + return { + surface: rgbToHex(shade(rgb, d)), + surfaceStrong: rgbToHex(shade(rgb, d * 2)), + border: rgbToHex(shade(rgb, d * 3)), + borderSoft: rgbToHex(shade(rgb, d * 1.5)), + }; + }; + + if (colors.rowSelected && hexToRgb(colors.rowSelected)) { + const rgb = hexToRgb(colors.rowSelected); + // Picked color wird 1:1 als Background gesetzt — keine Transparenz, kein rgba. + root.setProperty('--row-selected-border', colors.rowSelected); + root.setProperty('--row-selected-bg', colors.rowSelected); + root.setProperty('--row-selected-bg-hover', colors.rowSelected); + const fg = readableForeground(rgb); + root.setProperty('--row-selected-text', fg.primary); + root.setProperty('--row-selected-text-muted', fg.secondary); + root.setProperty('--row-selected-icon', fg.primary); + root.setProperty('--row-selected-icon-hover', fg.primary); + const so = surfaceShades(rgb); + root.setProperty('--row-selected-surface', so.surface); + root.setProperty('--row-selected-surface-strong', so.surfaceStrong); + } + if (colors.detailPanel && hexToRgb(colors.detailPanel)) { + const rgb = hexToRgb(colors.detailPanel); + root.setProperty('--app-expanded-bg', colors.detailPanel); + const fg = readableForeground(rgb); + root.setProperty('--detail-text', fg.primary); + root.setProperty('--detail-text-muted', fg.secondary); + root.setProperty('--detail-text-faint', fg.muted); + const so = surfaceShades(rgb); + root.setProperty('--detail-surface', so.surface); + root.setProperty('--detail-surface-strong', so.surfaceStrong); + root.setProperty('--detail-border', so.border); + root.setProperty('--detail-border-soft', so.borderSoft); + } +} + +// Default-Logo das immer im Projekt-Root liegt — wird verwendet, wenn der +// User kein eigenes Logo hochgeladen hat (oder seines wieder entfernt). +const DEFAULT_LOGO_FILE = 'application.png'; + +function applyBranding(branding, cacheBust) { + const logoEl = document.getElementById('brandLogo'); + if (!logoEl) return; + const file = (branding && branding.logoFile) || DEFAULT_LOGO_FILE; + // cacheBust-Fallback-Kette: explizit uebergeben -> branding.logoCacheTag -> 1 + // (Default-Logo ist statisch, einmaliges Laden reicht; uploaded Logos + // bekommen vom Backend einen mtime-Tag.) + const tag = cacheBust || (branding && branding.logoCacheTag) || '1'; + const url = `/assets/${encodeURIComponent(file)}?v=${encodeURIComponent(tag)}`; + logoEl.innerHTML = `Logo`; + logoEl.classList.add('has-custom-logo'); +} + +// ============================================================= +// Einstellungen (Tenant/Client-ID, Gruppen-Praefixe, Naming, ...) +// ============================================================= + +// Fallback-Vendor-Definitionen falls SettingsState aus irgendeinem Grund +// (Settings-Load-Race, kaputte settings.json) leer ist. Damit zeigen PMPC- +// und Robopack-Apps IMMER Source-Badge + Lock-Icons, unabhaengig von Backend. +const VENDOR_FALLBACKS = [ + { id: 'patchmypc', displayName: 'PatchMyPC', portalUrl: 'https://portal.patchmypc.com/', logoFile: 'pmpc.png', block: { delete: true, rename: true } }, + { id: 'robopack', displayName: 'Robopack', portalUrl: 'https://app.robopack.com/', logoFile: 'robopack.png', block: { delete: true, rename: true } }, +]; + +const SettingsState = { + current: null, // zuletzt geladene Settings vom Server + filePath: null, + // Vendor-Indizes — werden bei jedem Settings-Load via rebuildVendorIndexes() + // neu aufgebaut, damit Render + Filter ohne wiederholten Lookup laufen. + // Initial mit Fallbacks befuellt, damit der erste Render schon korrekt rendert. + vendors: VENDOR_FALLBACKS.slice(), + vendorsById: Object.fromEntries(VENDOR_FALLBACKS.map(v => [v.id, v])), + vendorsByDisplayName: Object.fromEntries(VENDOR_FALLBACKS.map(v => [v.displayName, v])), +}; + +function rebuildVendorIndexes(settings) { + let list = (settings && Array.isArray(settings.vendors)) ? settings.vendors : []; + // Fehlende Standard-Vendoren immer mit reinmischen — verhindert dass eine + // unvollstaendige settings.json PMPC/Robopack aus dem UI verschwinden laesst. + for (const fb of VENDOR_FALLBACKS) { + if (!list.some(v => v && v.id === fb.id)) list = list.concat([fb]); + } + SettingsState.vendors = list; + SettingsState.vendorsById = {}; + SettingsState.vendorsByDisplayName = {}; + for (const v of list) { + if (v && v.id) SettingsState.vendorsById[v.id] = v; + if (v && v.displayName) SettingsState.vendorsByDisplayName[v.displayName] = v; + } + rebuildVendorFilterOptions(); +} + +function rebuildVendorFilterOptions() { + // Filter-Select hat statische Optionen fuer "Alle/Intune"; Vendor-Optionen + // werden hier nachgereicht. Vorhandene srcVendor:-Options vorher entsorgen. + const sel = document.getElementById('appFilter'); + if (!sel) return; + // Bestehende dynamische Eintraege entfernen + Array.from(sel.querySelectorAll('option[data-vendor-option]')).forEach(o => o.remove()); + // "Nur Intune" als Anker — Vendor-Eintraege werden direkt danach eingefuegt + const intuneOpt = Array.from(sel.options).find(o => o.value === 'srcIntune'); + const insertAfter = intuneOpt || sel.options[sel.options.length - 1]; + for (const v of SettingsState.vendors) { + if (!v || !v.id || !v.displayName) continue; + const opt = document.createElement('option'); + opt.value = `srcVendor:${v.id}`; + opt.textContent = `Nur ${v.displayName}-Apps`; + opt.dataset.vendorOption = '1'; + insertAfter.insertAdjacentElement('afterend', opt); + } +} + +function rebuildCategoryFilterOptions() { + // Baut die Optionen des Kategorie-Filters aus den tatsaechlich in den + // geladenen Apps vorkommenden Kategorien. Auswahl bleibt erhalten falls + // die Kategorie noch existiert. + const sel = document.getElementById('appCategoryFilter'); + if (!sel) return; + const prev = sel.value; + + // Distinkte Kategorien sammeln (alphabetisch, de-DE) + const set = new Set(); + let anyWithout = false; + for (const a of State.apps) { + if (Array.isArray(a.Categories) && a.Categories.length > 0) { + for (const c of a.Categories) { if (c) set.add(String(c)); } + } else { + anyWithout = true; + } + } + const cats = Array.from(set).sort((x, y) => x.localeCompare(y, 'de-DE')); + + // Neu aufbauen: "Alle Kategorien" fix, dann optional "Ohne Kategorie", dann die Namen + sel.innerHTML = ''; + const optAll = document.createElement('option'); + optAll.value = ''; + optAll.textContent = 'Alle Kategorien'; + sel.appendChild(optAll); + + if (anyWithout) { + const optNone = document.createElement('option'); + optNone.value = '__none__'; + optNone.textContent = 'Ohne Kategorie (Default)'; + sel.appendChild(optNone); + } + + for (const c of cats) { + const opt = document.createElement('option'); + opt.value = c; + opt.textContent = c; + sel.appendChild(opt); + } + + // Vorherige Auswahl wiederherstellen wenn noch gueltig + if (prev && (prev === '__none__' || cats.includes(prev))) { + sel.value = prev; + } else { + sel.value = ''; + State.appFilter.category = ''; + } +} + +function isSetupIncomplete(s) { + if (!s) return true; + const c = s.connection || {}; + const d = s.departments || {}; + const tenant = (c.tenantId || '').trim(); + const client = (c.clientId || '').trim(); + // Praefixe: 'prefixes'-Array bevorzugt, sonst alter Single-String 'prefix'. + // Setup ist komplett, wenn mind. ein nicht-leerer Praefix (>= 2 Zeichen) existiert. + let hasPrefix = false; + if (Array.isArray(d.prefixes)) { + for (const p of d.prefixes) { if (p && String(p).trim().length >= 2) { hasPrefix = true; break; } } + } + if (!hasPrefix && d.prefix && String(d.prefix).trim().length >= 2) { hasPrefix = true; } + return !tenant || !client || !hasPrefix; +} + +function applySetupNeededUI(needed) { + // Setup-Banner im Modal + Hinweis im Onboarding-Panel + Connect-Button disablen + const banner = document.getElementById('setupBanner'); + if (banner) banner.classList.toggle('hidden', !needed); + const hint = document.getElementById('onboardingSetupHint'); + if (hint) hint.classList.toggle('hidden', !needed); + const btn = document.getElementById('btnConnect'); + if (btn) { + btn.disabled = !!needed; + btn.title = needed ? 'Bitte zuerst in Einstellungen konfigurieren.' : ''; + } +} + +async function openSettingsModal() { + // Modal sofort oeffnen, Inhalt nachladen + document.getElementById('setFilePath').textContent = SettingsState.filePath || 'wird geladen…'; + // Test-Result-Box bei jedem Oeffnen leeren — stale Ergebnisse vermeiden. + const trBox = document.getElementById('settingsTestResult'); + if (trBox) trBox.innerHTML = ''; + openModal('modalSettings'); + try { + const res = await api('/api/settings'); + SettingsState.current = res.settings; + SettingsState.filePath = res.path; + rebuildVendorIndexes(res.settings); + fillSettingsForm(res.settings); + document.getElementById('setFilePath').textContent = res.path || '(unbekannt)'; + const banner = document.getElementById('setupBanner'); + if (banner) banner.classList.toggle('hidden', !isSetupIncomplete(res.settings)); + } catch (e) { + toast('Einstellungen konnten nicht geladen werden: ' + e.message, 'err'); + } +} + +async function onSettingsTest() { + const box = document.getElementById('settingsTestResult'); + const btn = document.getElementById('btnSettingsTest'); + if (!box) return; + // Aktuellen Form-State testen (nicht den gespeicherten). + const payload = readSettingsForm(); + box.innerHTML = '
    Pruefe Werte gegen Microsoft Graph…
    '; + if (btn) btn.disabled = true; + try { + const res = await api('/api/settings/test', { method: 'POST', body: payload }); + box.innerHTML = renderSettingsTestResult(res); + } catch (e) { + box.innerHTML = `
    Test fehlgeschlagen: ${escapeHtml(e.message || String(e))}
    `; + } finally { + if (btn) btn.disabled = false; + } +} + +function renderSettingsTestResult(res) { + const lines = []; + const ok = 'OK'; + const fail = 'FAIL'; + const conn = res.connection || {}; + if (conn.ok) { + lines.push(`
    ${ok} Verbindung: ${escapeHtml(conn.account || '')} (Tenant ${escapeHtml(conn.tenantId || '')})
    `); + } else { + const why = conn.reason === 'not_connected' ? 'Bitte zuerst per Connect-Button verbinden.' : (conn.message || 'unbekannter Grund'); + lines.push(`
    ${fail} Verbindung: ${escapeHtml(why)}
    `); + return lines.join(''); + } + const d = res.departments || {}; + if (d.reason === 'not_configured') { + lines.push(`
    ${fail} Abteilungs-Praefix(e) nicht gesetzt.
    `); + } else if (Array.isArray(d.perPrefix) && d.perPrefix.length > 0) { + // Neue Form: eine Zeile pro Praefix + lines.push(`
    ${d.ok ? ok : fail} Abteilungs-Gruppen — Total: ${d.totalCount || 0}
    `); + for (const pp of d.perPrefix) { + if (pp.ok) { + const sample = pp.sample && pp.sample.length ? ` (z.B. ${pp.sample.map(escapeHtml).join(', ')})` : ''; + const icon = pp.count > 0 ? ok : '0'; + const cls = pp.count > 0 ? '' : 'set-test-warn'; + lines.push(`
    ${icon} ${escapeHtml(pp.prefix)}: ${pp.count} Treffer${sample}
    `); + } else { + lines.push(`
    ${fail} ${escapeHtml(pp.prefix)}: ${escapeHtml(pp.error || '')}
    `); + } + } + } else if (d.ok) { + // Backward-compat: alte Single-Prefix-Response + const sample = d.sample && d.sample.length ? ` (z.B. ${d.sample.map(escapeHtml).join(', ')})` : ''; + lines.push(`
    ${ok} Abteilungs-Gruppen: ${d.count} Treffer fuer ${escapeHtml(d.prefix)}${sample}
    `); + } else { + lines.push(`
    ${fail} Abteilungs-Gruppen-Lookup fehlgeschlagen: ${escapeHtml(d.error || '')}
    `); + } + const r = res.rpa || {}; + if (r.ok) { + lines.push(`
    ${ok} RPA-Gruppen: ${(r.found || []).length} von ${r.expected} gefunden
    `); + } else if (r.reason === 'not_configured') { + lines.push(`
    ${fail} Keine RPA-Gruppen konfiguriert (optional — der RPA-Tab bleibt dann leer).
    `); + } else { + const miss = (r.missing || []).map(escapeHtml).join(', '); + lines.push(`
    ${fail} RPA-Gruppen: ${(r.found || []).length} von ${r.expected} gefunden. Fehlt: ${miss}
    `); + } + const u = res.userSearch || {}; + if (u.ok) { + lines.push(`
    ${ok} Benutzer-Suche: ok (${(u.fields || []).join(', ')})
    `); + } else if (u.reason === 'no_fields') { + lines.push(`
    ${fail} Keine User-Such-Felder gewaehlt.
    `); + } else { + lines.push(`
    ${fail} Benutzer-Suche fehlgeschlagen: ${escapeHtml(u.error || '')}
    `); + } + const ven = res.vendors || {}; + if (Array.isArray(ven.counts) && ven.counts.length > 0) { + for (const c of ven.counts) { + const icon = c.count > 0 ? ok : '0'; + const cls = c.count > 0 ? '' : 'set-test-warn'; + lines.push(`
    ${icon} Vendor ${escapeHtml(c.displayName)}: ${c.count} Apps (Regel: ${escapeHtml(c.detection)})
    `); + } + if (ven.hint) { + lines.push(`
    Hinweis: ${escapeHtml(ven.hint)}
    `); + } + } + return lines.join(''); +} + +function fillSettingsForm(s) { + const c = s.connection || {}; + document.getElementById('setTenantId').value = c.tenantId || ''; + document.getElementById('setClientId').value = c.clientId || ''; + document.getElementById('setClientIdRo').value = c.clientIdRo || ''; + document.getElementById('setScopes').value = (c.scopes || []).join('\n'); + document.getElementById('setScopesRo').value = (c.scopesRo || []).join('\n'); + + // Backward-compat: lese 'prefixes' (Array) bevorzugt, falle sonst auf + // alten Single-String 'prefix' zurueck. Beide werden in die Textarea + // gemerged (gleiche Logik wie Get-DepartmentPrefixes im Backend). + (function () { + const d = s.departments || {}; + const list = []; + if (Array.isArray(d.prefixes)) { for (const p of d.prefixes) if (p) list.push(String(p)); } + if (d.prefix) list.push(String(d.prefix)); + const seen = {}; const out = []; + for (const raw of list) { + const t = raw.trim(); if (!t) continue; + const k = t.toLowerCase(); + if (seen[k]) continue; seen[k] = true; out.push(t); + } + document.getElementById('setDeptPrefixes').value = out.join('\n'); + })(); + document.getElementById('setRpaGroups').value = ((s.rpa && s.rpa.groupNames) || []).join('\n'); + + const fields = (s.userSearch && s.userSearch.fields) || []; + document.getElementById('setUsfDisplayName').checked = fields.includes('displayName'); + document.getElementById('setUsfUpn').checked = fields.includes('userPrincipalName'); + document.getElementById('setUsfMail').checked = fields.includes('mail'); + document.getElementById('setUsfDepartment').checked = fields.includes('department'); + + const r = s.requiredGroupNaming || {}; + document.getElementById('setReqPrefix').value = r.prefix || ''; + document.getElementById('setReqSuffix').value = r.suffix || ''; + updateReqPreview(); + const av = s.availableGroupNaming || {}; + document.getElementById('setAvailPrefix').value = av.prefix || ''; + document.getElementById('setAvailSuffix').value = av.suffix || ''; + updateAvailPreview(); + + // Branding-Logo Preview + fillLogoPreview(s.branding); + + // Farben + const cols = (s.theme && s.theme.colors) || {}; + for (const key of Object.keys(ThemeDefaults)) { + const hex = cols[key] || ThemeDefaults[key]; + setColorInputs(key, hex); + } +} + +function setColorInputs(key, hex) { + const cap = key[0].toUpperCase() + key.slice(1); + const picker = document.getElementById(`setCol${cap}`); + const text = document.getElementById(`setCol${cap}Hex`); + const swatch = document.querySelector(`.color-swatch[data-swatch="${key}"]`); + if (picker) picker.value = hex; + if (text) text.value = hex; + if (swatch) swatch.style.background = hex; +} + +function fillLogoPreview(branding) { + const userFile = branding && branding.logoFile; + const file = userFile || DEFAULT_LOGO_FILE; + const preview = document.getElementById('logoPreview'); + const removeBtn = document.getElementById('btnLogoRemove'); + if (!preview) return; + const tag = (branding && branding.logoCacheTag) || '1'; + const url = `/assets/${encodeURIComponent(file)}?v=${encodeURIComponent(tag)}`; + preview.innerHTML = `Logo`; + // "Entfernen"-Button nur wenn ein eigenes Logo aktiv ist (Default-Logo + // application.png kann nicht entfernt werden — ist die Firmen-Vorgabe). + if (removeBtn) removeBtn.hidden = !userFile; +} + +function readSettingsForm() { + const splitLines = (txt) => (txt || '') + .split(/\r?\n/).map(s => s.trim()).filter(Boolean); + const fields = []; + if (document.getElementById('setUsfDisplayName').checked) fields.push('displayName'); + if (document.getElementById('setUsfUpn').checked) fields.push('userPrincipalName'); + if (document.getElementById('setUsfMail').checked) fields.push('mail'); + if (document.getElementById('setUsfDepartment').checked) fields.push('department'); + + return { + connection: { + tenantId: document.getElementById('setTenantId').value.trim(), + clientId: document.getElementById('setClientId').value.trim(), + clientIdRo: document.getElementById('setClientIdRo').value.trim(), + scopes: splitLines(document.getElementById('setScopes').value), + scopesRo: splitLines(document.getElementById('setScopesRo').value), + }, + departments: { + // Neuer Listen-Form: Praefixe aus Textarea. Alten Single-String 'prefix' + // beim Save auf leer setzen, damit nicht beide Quellen divergieren — + // das Backend liest ab jetzt nur noch aus 'prefixes'. + prefixes: splitLines(document.getElementById('setDeptPrefixes').value), + prefix: '', + }, + rpa: { + groupNames: splitLines(document.getElementById('setRpaGroups').value), + }, + userSearch: { + fields, + }, + requiredGroupNaming: { + prefix: document.getElementById('setReqPrefix').value, + suffix: document.getElementById('setReqSuffix').value, + }, + availableGroupNaming: { + prefix: document.getElementById('setAvailPrefix').value, + suffix: document.getElementById('setAvailSuffix').value, + }, + theme: { + colors: { + brand: document.getElementById('setColBrandHex').value.trim() || ThemeDefaults.brand, + accent: document.getElementById('setColAccentHex').value.trim() || ThemeDefaults.accent, + required: document.getElementById('setColRequiredHex').value.trim() || ThemeDefaults.required, + success: document.getElementById('setColSuccessHex').value.trim() || ThemeDefaults.success, + warning: document.getElementById('setColWarningHex').value.trim() || ThemeDefaults.warning, + error: document.getElementById('setColErrorHex').value.trim() || ThemeDefaults.error, + rowSelected: document.getElementById('setColRowSelectedHex').value.trim() || ThemeDefaults.rowSelected, + detailPanel: document.getElementById('setColDetailPanelHex').value.trim() || ThemeDefaults.detailPanel, + }, + }, + }; +} + +function updateReqPreview() { + const p = document.getElementById('setReqPrefix').value || ''; + const s = document.getElementById('setReqSuffix').value || ''; + const ex = (p + 'beispiel-app' + s).toLowerCase(); + document.getElementById('setReqPreview').textContent = ex; +} + +function updateAvailPreview() { + const p = document.getElementById('setAvailPrefix').value || ''; + const s = document.getElementById('setAvailSuffix').value || ''; + const ex = (p + 'beispiel-app' + s).toLowerCase(); + document.getElementById('setAvailPreview').textContent = ex; +} + +async function saveSettings() { + const payload = readSettingsForm(); + setLoading('Speichere Einstellungen...'); + try { + const res = await api('/api/settings', { method: 'PUT', body: payload }); + SettingsState.current = res.settings; + // Theme + Branding sofort live anwenden (kein Reload noetig) + if (res.settings) { + applyThemeColors(res.settings.theme && res.settings.theme.colors); + applyBranding(res.settings.branding); + rebuildVendorIndexes(res.settings); + applySetupNeededUI(isSetupIncomplete(res.settings)); + } + closeModal('modalSettings'); + if (res.disconnected) { + toast('Einstellungen gespeichert — Connection-Werte geändert, du wurdest abgemeldet.', 'warn', 'Disconnect'); + State.connected = false; + State.account = null; + // Komplettes Frontend-State neu starten + State.targets = []; + State.selectedTargetIds = new Set(); + State.apps = []; + State.session = []; + State.membershipCache.clear(); + State.expandedApps.clear(); + renderConnection(); + renderTargets(); + renderApps(); + renderSession(); + renderExisting(); + updateStepper(); + await refreshStatus(); + } else { + toast('Einstellungen gespeichert.', 'ok'); + // Nur was sich wirklich geaendert hat neu laden — Logo/Farben/Naming + // brechen keine Backend-Caches. + const changed = res.changed || {}; + if (changed.departments) { + State.loadedModes.delete('dept'); + if (State.modeCache.has('dept')) State.modeCache.delete('dept'); + } + if (changed.rpa) { + State.loadedModes.delete('rpa'); + if (State.modeCache.has('rpa')) State.modeCache.delete('rpa'); + } + if (State.connected && ((changed.departments && State.mode === 'dept') || (changed.rpa && State.mode === 'rpa'))) { + await loadTargets(); + } + } + } catch (e) { + toast(e.message, 'err', 'Speichern fehlgeschlagen'); + } finally { + clearLoading(); + } +} + +async function resetSettings() { + if (!window.confirm('Alle Einstellungen auf Standardwerte zurücksetzen?\n\nDu wirst dabei von Microsoft Graph abgemeldet.')) return; + setLoading('Setze Einstellungen zurück...'); + try { + const res = await api('/api/settings/reset', { method: 'POST' }); + SettingsState.current = res.settings; + if (res.settings) { + applyThemeColors(res.settings.theme && res.settings.theme.colors); + applyBranding(res.settings.branding); + rebuildVendorIndexes(res.settings); + } + fillSettingsForm(res.settings); + applySetupNeededUI(isSetupIncomplete(res.settings)); + State.connected = false; + State.account = null; + renderConnection(); + await refreshStatus(); + toast('Einstellungen zurückgesetzt.', 'ok'); + } catch (e) { + toast(e.message, 'err', 'Reset fehlgeschlagen'); + } finally { + clearLoading(); + } +} + +// Verkabelung +document.getElementById('btnSettings')?.addEventListener('click', openSettingsModal); +document.getElementById('btnSettingsSave')?.addEventListener('click', saveSettings); +document.getElementById('btnSettingsReset')?.addEventListener('click', resetSettings); +document.getElementById('btnSettingsTest')?.addEventListener('click', onSettingsTest); +document.getElementById('onboardingOpenSettings')?.addEventListener('click', e => { + e.preventDefault(); + openSettingsModal(); +}); +document.getElementById('setReqPrefix')?.addEventListener('input', updateReqPreview); +document.getElementById('setReqSuffix')?.addEventListener('input', updateReqPreview); +document.getElementById('setAvailPrefix')?.addEventListener('input', updateAvailPreview); +document.getElementById('setAvailSuffix')?.addEventListener('input', updateAvailPreview); + +document.getElementById('raSubmit')?.addEventListener('click', submitRenameApp); +document.getElementById('raNewName')?.addEventListener('keydown', e => { + if (e.key === 'Enter') { e.preventDefault(); submitRenameApp(); } +}); + +// Setup-Datei aktualisieren: Submit + Bestaetigungs-Checkbox steuert den Button +document.getElementById('ucSubmit')?.addEventListener('click', submitUpdateContent); +document.getElementById('ucConfirm')?.addEventListener('change', e => { + const btn = document.getElementById('ucSubmit'); + if (btn) btn.disabled = !e.target.checked; +}); +document.getElementById('ucBrowse')?.addEventListener('click', async () => { + const btn = document.getElementById('ucBrowse'); + const errEl = document.getElementById('ucError'); + errEl.textContent = ''; + btn.disabled = true; + const prevLabel = btn.textContent; + btn.textContent = 'Dialog offen…'; + try { + // Datei-Dialog auf dem Server-Rechner (Phase 1: .intunewin vorfiltern) + const res = await api('/api/pickfile', { + method: 'POST', + body: { filter: 'Intune-Pakete (*.intunewin)|*.intunewin|Alle Dateien (*.*)|*.*', title: 'Setup-Datei auswählen' }, + timeoutMs: 600000, + }); + if (res.path) document.getElementById('ucFilePath').value = res.path; + } catch (e) { + errEl.textContent = 'Datei-Dialog fehlgeschlagen: ' + e.message; + } finally { + btn.disabled = false; + btn.textContent = prevLabel; + } +}); + +// --- Branding: Logo-Upload --- +document.getElementById('btnLogoPick')?.addEventListener('click', () => { + document.getElementById('logoFile').click(); +}); +document.getElementById('logoFile')?.addEventListener('change', async e => { + const file = e.target.files && e.target.files[0]; + e.target.value = ''; // gleiche Datei nochmal auswaehlbar machen + if (!file) return; + const maxBytes = 2 * 1024 * 1024; + if (file.size > maxBytes) { + toast(`Datei zu groß (${Math.round(file.size/1024)} KB, max. 2 MB)`, 'err'); + return; + } + setLoading('Lade Logo hoch...'); + try { + const dataUrl = await new Promise((res, rej) => { + const r = new FileReader(); + r.onload = () => res(r.result); + r.onerror = () => rej(new Error('Datei konnte nicht gelesen werden.')); + r.readAsDataURL(file); + }); + const m = String(dataUrl).match(/^data:([^;]+);base64,(.+)$/); + if (!m) throw new Error('Unerwartetes Datei-Format.'); + const res = await api('/api/settings/logo', { + method: 'POST', + body: { name: file.name, mime: m[1], dataBase64: m[2] }, + }); + if (SettingsState.current) { + if (!SettingsState.current.branding) SettingsState.current.branding = {}; + SettingsState.current.branding.logoFile = res.logoFile; + SettingsState.current.branding.logoCacheTag = res.cacheTag; + } + applyBranding({ logoFile: res.logoFile, logoCacheTag: res.cacheTag }); + fillLogoPreview({ logoFile: res.logoFile, logoCacheTag: res.cacheTag }); + toast(`Logo hochgeladen (${res.sizeKb} KB)`, 'ok'); + } catch (e) { + toast(e.message, 'err', 'Logo-Upload fehlgeschlagen'); + } finally { + clearLoading(); + } +}); +document.getElementById('btnLogoRemove')?.addEventListener('click', async () => { + if (!window.confirm('Eigenes Logo entfernen?')) return; + setLoading('Entferne Logo...'); + try { + await api('/api/settings/logo', { method: 'DELETE' }); + if (SettingsState.current && SettingsState.current.branding) { + SettingsState.current.branding.logoFile = null; + } + applyBranding({ logoFile: null }); + fillLogoPreview({ logoFile: null }); + toast('Logo entfernt.', 'ok'); + } catch (e) { + toast(e.message, 'err', 'Entfernen fehlgeschlagen'); + } finally { + clearLoading(); + } +}); + +// --- Farben: Picker <-> Hex-Input synchronisieren + Live-Preview-Swatch --- +function bindColorPair(key) { + const cap = key[0].toUpperCase() + key.slice(1); + const picker = document.getElementById(`setCol${cap}`); + const text = document.getElementById(`setCol${cap}Hex`); + const swatch = document.querySelector(`.color-swatch[data-swatch="${key}"]`); + if (!picker || !text) return; + const sync = (hex) => { + if (!/^#[0-9a-fA-F]{6}$/.test(hex)) return false; + picker.value = hex.toLowerCase(); + text.value = hex.toLowerCase(); + if (swatch) swatch.style.background = hex; + return true; + }; + picker.addEventListener('input', () => sync(picker.value)); + text.addEventListener('input', () => { + const v = text.value.trim(); + if (v.length === 7 && sync(v)) { /* ok */ } + else if (swatch) swatch.style.background = v || ThemeDefaults[key]; + }); +} +['brand','accent','required','success','warning','error','rowSelected','detailPanel'].forEach(bindColorPair); + +document.querySelectorAll('[data-color-reset]').forEach(btn => { + btn.addEventListener('click', () => { + const key = btn.dataset.colorReset; + setColorInputs(key, ThemeDefaults[key]); + }); +}); + +// "Standardfarben wiederherstellen" — setzt ALLE Picker auf die Vorgabe und +// wendet sie sofort auf die UI an (Live-Vorschau ohne Speichern). User klickt +// dann selbst "Speichern" wenn er die Defaults persistieren will. +document.getElementById('btnRestoreColors')?.addEventListener('click', () => { + for (const key of Object.keys(ThemeDefaults)) { + setColorInputs(key, ThemeDefaults[key]); + } + applyThemeColors(Object.assign({}, ThemeDefaults)); + toast('Farben auf Standard zurückgesetzt — "Speichern" um zu persistieren.', 'ok'); +}); + +// ============================================================= +// Theme-Toggle +// ============================================================= + +(function setupTheme() { + const btn = document.getElementById('btnThemeToggle'); + if (!btn) return; + const sync = () => { + const isDark = document.documentElement.getAttribute('data-theme') === 'dark'; + btn.setAttribute('aria-checked', isDark ? 'true' : 'false'); + btn.title = isDark ? 'Auf Light Mode wechseln' : 'Auf Dark Mode wechseln'; + }; + btn.addEventListener('click', () => { + const cur = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light'; + const next = cur === 'dark' ? 'light' : 'dark'; + // Alle CSS-Transitions waehrend des Wechsels ausschalten — sonst animieren + // hunderte Elemente gleichzeitig ihre background/color/border-Aenderungen + // und alles ruckelt. + document.documentElement.classList.add('theme-switching'); + document.documentElement.setAttribute('data-theme', next); + try { localStorage.setItem('iam-theme', next); } catch {} + sync(); + // Im naechsten Frame Transitions wieder aktivieren + requestAnimationFrame(() => { + requestAnimationFrame(() => { + document.documentElement.classList.remove('theme-switching'); + }); + }); + }); + sync(); +})(); + +// ============================================================= +// Init +// ============================================================= + +(async function init() { + renderConnection(); + renderTargets(); + renderApps(); + renderSession(); + renderExisting(); + // Branding + Theme so frueh wie moeglich anwenden, damit nichts mit den + // Default-Farben kurz aufblitzt. Connection-Status danach. + let setupNeeded = false; + try { + const res = await api('/api/settings'); + SettingsState.current = res.settings; + SettingsState.filePath = res.path; + applyThemeColors(res.settings && res.settings.theme && res.settings.theme.colors); + applyBranding(res.settings && res.settings.branding); + rebuildVendorIndexes(res.settings); + setupNeeded = isSetupIncomplete(res.settings); + applySetupNeededUI(setupNeeded); + } catch (e) { + console.warn('Settings konnten beim Init nicht geladen werden:', e.message); + } + await refreshStatus(); + if (State.connected) autoLoadAfterConnect(); + // First-Run: wenn kritische Felder leer sind, Settings-Modal automatisch oeffnen. + if (setupNeeded) { + setTimeout(() => openSettingsModal(), 200); + } +})(); + +// ============================================================= +// Gruppen-Export +// ============================================================= + +const GexState = { + searchResults: [], + selectedGroup: null, + members: null, + memberFilter: '', + activeTab: 'export', + userSearchResults: [], + selectedUsers: new Map(), +}; + +function openGroupExportModal() { + if (!State.connected) { toast('Bitte zuerst verbinden.', 'warn'); return; } + GexState.searchResults = []; + GexState.selectedGroup = null; + GexState.members = null; + GexState.memberFilter = ''; + GexState.activeTab = 'export'; + GexState.userSearchResults = []; + GexState.selectedUsers = new Map(); + document.getElementById('gexSearch').value = ''; + document.getElementById('gexMemberFilter').value = ''; + document.getElementById('gexSearchResults').innerHTML = '
    Mindestens 2 Zeichen eingeben.
    '; + document.getElementById('gexMembersArea').innerHTML = '
    Gruppe auswählen um Mitglieder zu laden.
    '; + document.getElementById('gexMembersTitle').textContent = 'Mitglieder'; + document.getElementById('gexStats').textContent = ''; + document.getElementById('gexExportBtn').disabled = true; + // Add-Tab zurücksetzen + document.getElementById('gexUserSearch').value = ''; + document.getElementById('gexUserResults').innerHTML = '
    Mindestens 2 Zeichen eingeben.
    '; + document.getElementById('gexSelectedUsers').innerHTML = '
    Noch keine Benutzer ausgewählt.
    '; + document.getElementById('gexSelectedCount').textContent = '0'; + document.getElementById('gexAddBtn').disabled = true; + // Tab-Anzeige auf Export zurücksetzen + _gexSwitchTab('export'); + switchMainView('groups'); + setTimeout(() => document.getElementById('gexSearch').focus(), 80); +} + +function _gexSwitchTab(tab) { + GexState.activeTab = tab; + document.querySelectorAll('.gex-tab').forEach(b => b.classList.toggle('active', b.dataset.tab === tab)); + document.getElementById('gexPaneExport').classList.toggle('hidden', tab !== 'export'); + document.getElementById('gexPaneAdd').classList.toggle('hidden', tab !== 'add'); + document.getElementById('gexPaneImport').classList.toggle('hidden', tab !== 'import'); + document.getElementById('gexExportBtn').classList.toggle('hidden', tab !== 'export'); + document.getElementById('gexAddBtn').classList.toggle('hidden', tab !== 'add'); + document.getElementById('gexStats').textContent = ''; + if (tab === 'add') setTimeout(() => document.getElementById('gexUserSearch').focus(), 80); +} + +document.querySelectorAll('.gex-tab').forEach(btn => { + btn.addEventListener('click', () => _gexSwitchTab(btn.dataset.tab)); +}); + +// Nav-Tabs: App Management / Group Management / App Report +function switchMainView(view) { + const layout = document.getElementById('layout'); + const groupView = document.getElementById('groupMgmtView'); + const reportView = document.getElementById('appReportView'); + document.querySelectorAll('#topbarNav .nav-tab').forEach(t => { + t.classList.toggle('active', t.dataset.view === view); + t.setAttribute('aria-selected', t.dataset.view === view ? 'true' : 'false'); + }); + layout .classList.toggle('hidden', view !== 'apps'); + groupView .classList.toggle('hidden', view !== 'groups'); + reportView.classList.toggle('hidden', view !== 'report'); +} + +document.querySelectorAll('#topbarNav .nav-tab').forEach(btn => { + btn.addEventListener('click', () => { + const view = btn.dataset.view; + if ((view === 'groups' || view === 'report') && !State.connected) { + toast('Bitte zuerst verbinden.', 'warn'); + return; + } + switchMainView(view); + if (view === 'groups') openGroupExportModal(); + if (view === 'report' && ReportState.items.length === 0) loadAppReport(); + }); +}); + +// Suche mit Debounce +let _gexSearchTimer = null; +document.getElementById('gexSearch')?.addEventListener('input', e => { + clearTimeout(_gexSearchTimer); + const q = e.target.value.trim(); + if (q.length < 2) { + GexState.searchResults = []; + document.getElementById('gexSearchResults').innerHTML = '
    Mindestens 2 Zeichen eingeben.
    '; + return; + } + document.getElementById('gexSearchResults').innerHTML = '
    Suche…
    '; + _gexSearchTimer = setTimeout(() => _gexDoSearch(q), 350); +}); + +async function _gexDoSearch(q) { + try { + const data = await api(`/api/groups/search?q=${encodeURIComponent(q)}`); + GexState.searchResults = data.items || []; + _gexRenderResults(); + } catch (e) { + document.getElementById('gexSearchResults').innerHTML = `
    Suche fehlgeschlagen: ${escapeHtml(e.message)}
    `; + } +} + +function _gexRenderResults() { + const el = document.getElementById('gexSearchResults'); + if (!el) return; + const items = GexState.searchResults; + if (items.length === 0) { + el.innerHTML = '
    Keine Gruppen gefunden.
    '; + return; + } + el.innerHTML = items.map(g => ` +
    +
    ${escapeHtml(g.DisplayName)}
    + ${g.Description ? `
    ${escapeHtml(g.Description)}
    ` : ''} +
    + `).join(''); + el.querySelectorAll('.gex-group-item').forEach(item => { + item.addEventListener('click', () => _gexSelectGroup(item.dataset.id, item.dataset.name)); + }); +} + +async function _gexSelectGroup(id, name) { + GexState.selectedGroup = { Id: id, DisplayName: name }; + GexState.members = null; + GexState.memberFilter = ''; + _gexRenderResults(); // aktualisiert selected-Highlight + _gexUpdateAddBtn(); + notifyCsvImportGroupSelected(id, name); + + if (GexState.activeTab !== 'export') return; + + document.getElementById('gexMemberFilter').value = ''; + document.getElementById('gexMembersTitle').textContent = `Mitglieder — ${name}`; + document.getElementById('gexStats').textContent = ''; + document.getElementById('gexExportBtn').disabled = true; + document.getElementById('gexMembersArea').innerHTML = + '
    Mitglieder werden aufgelöst (inkl. verschachtelte Gruppen)…
    '; + + try { + const data = await api(`/api/groups/${encodeURIComponent(id)}/members/export`); + GexState.members = data; + _gexRenderMembers(); + document.getElementById('gexExportBtn').disabled = data.count === 0; + let stats = `${data.count} Benutzer`; + if (data.duplicates > 0) stats += ` · ${data.duplicates} Duplikate aus Verschachtelung entfernt`; + stats += ` · ${data.resolvedMs}ms`; + document.getElementById('gexStats').textContent = stats; + } catch (e) { + document.getElementById('gexMembersArea').innerHTML = + `
    Fehler beim Laden: ${escapeHtml(e.message)}
    `; + } +} + +// Live-Filter für die Mitgliederliste +document.getElementById('gexMemberFilter')?.addEventListener('input', e => { + GexState.memberFilter = e.target.value.trim().toLowerCase(); + _gexApplyFilter(); +}); + +function _gexApplyFilter() { + const q = GexState.memberFilter; + document.querySelectorAll('#gexMembersArea .gex-user-item').forEach(row => { + const text = row.dataset.search || ''; + row.classList.toggle('hidden-filter', q !== '' && !text.includes(q)); + }); + // Pfad-Gruppen ohne sichtbare Zeilen ausblenden + document.querySelectorAll('#gexMembersArea .gex-path-group').forEach(pg => { + const visible = pg.querySelectorAll('.gex-user-item:not(.hidden-filter)').length > 0; + pg.style.display = visible ? '' : 'none'; + }); +} + +function _gexRenderMembers() { + const area = document.getElementById('gexMembersArea'); + if (!area || !GexState.members) return; + const m = GexState.members; + + if (m.count === 0) { + area.innerHTML = '
    Keine Benutzer in dieser Gruppe gefunden.
    '; + return; + } + + // Nach SourcePath gruppieren + const byPath = new Map(); + for (const u of m.users) { + const p = u.SourcePath || m.groupName; + if (!byPath.has(p)) byPath.set(p, []); + byPath.get(p).push(u); + } + + let html = `
    ${m.count} Benutzer`; + if (m.duplicates > 0) html += ` (${m.duplicates} Duplikate aus verschachtelten Gruppen zusammengeführt)`; + html += '
    '; + + for (const [path, users] of byPath.entries()) { + html += `
    +
    ${escapeHtml(path)} ${users.length}
    +
    `; + for (const u of users) { + const upn = u.UserPrincipalName || u.Mail || u.Id; + const searchKey = `${(u.DisplayName || '').toLowerCase()} ${upn.toLowerCase()}`; + html += `
    + ${escapeHtml(u.DisplayName || '—')} + ${escapeHtml(upn)} +
    `; + } + html += '
    '; + } + + area.innerHTML = html; + if (GexState.memberFilter) _gexApplyFilter(); +} + +// ---- Benutzer-Suche im Add-Tab ---- + +let _gexUserSearchTimer = null; +document.getElementById('gexUserSearch')?.addEventListener('input', e => { + clearTimeout(_gexUserSearchTimer); + const q = e.target.value.trim(); + if (q.length < 2) { + GexState.userSearchResults = []; + document.getElementById('gexUserResults').innerHTML = '
    Mindestens 2 Zeichen eingeben.
    '; + return; + } + document.getElementById('gexUserResults').innerHTML = '
    Suche…
    '; + _gexUserSearchTimer = setTimeout(() => _gexDoUserSearch(q), 350); +}); + +async function _gexDoUserSearch(q) { + try { + const data = await api(`/api/users?q=${encodeURIComponent(q)}`); + GexState.userSearchResults = data.items || []; + _gexRenderUserResults(); + } catch (e) { + document.getElementById('gexUserResults').innerHTML = `
    Suche fehlgeschlagen: ${escapeHtml(e.message)}
    `; + } +} + +function _gexRenderUserResults() { + const el = document.getElementById('gexUserResults'); + if (!el) return; + const items = GexState.userSearchResults; + if (items.length === 0) { + el.innerHTML = '
    Keine Benutzer gefunden.
    '; + return; + } + el.innerHTML = items.map(u => { + const already = GexState.selectedUsers.has(u.Id); + return `
    + ${escapeHtml(u.DisplayName || '—')} + ${escapeHtml(u.UserPrincipalName || u.Mail || '')} + ${already ? '✓' : ''} +
    `; + }).join(''); + el.querySelectorAll('.gex-user-result-item:not(.selected)').forEach(item => { + item.addEventListener('click', () => _gexSelectUser({ Id: item.dataset.id, DisplayName: item.dataset.name, UserPrincipalName: item.dataset.upn })); + }); +} + +function _gexSelectUser(u) { + if (GexState.selectedUsers.has(u.Id)) return; + GexState.selectedUsers.set(u.Id, u); + _gexRenderUserResults(); + _gexRenderSelectedUsers(); + _gexUpdateAddBtn(); +} + +function _gexDeselectUser(id) { + GexState.selectedUsers.delete(id); + _gexRenderUserResults(); + _gexRenderSelectedUsers(); + _gexUpdateAddBtn(); +} + +function _gexRenderSelectedUsers() { + const el = document.getElementById('gexSelectedUsers'); + const countEl = document.getElementById('gexSelectedCount'); + if (!el) return; + const users = [...GexState.selectedUsers.values()]; + countEl.textContent = users.length; + if (users.length === 0) { + el.innerHTML = '
    Noch keine Benutzer ausgewählt.
    '; + return; + } + el.innerHTML = users.map(u => ` +
    + ${escapeHtml(u.DisplayName || '—')} + ${escapeHtml(u.UserPrincipalName || '')} + +
    + `).join(''); + el.querySelectorAll('.gex-selected-chip-remove').forEach(btn => { + btn.addEventListener('click', () => _gexDeselectUser(btn.dataset.id)); + }); +} + +function _gexUpdateAddBtn() { + const btn = document.getElementById('gexAddBtn'); + if (!btn) return; + btn.disabled = !(GexState.selectedGroup && GexState.selectedUsers.size > 0); +} + +document.getElementById('gexAddBtn')?.addEventListener('click', async () => { + if (!GexState.selectedGroup) { toast('Bitte zuerst eine Gruppe auswählen.', 'warn'); return; } + if (GexState.selectedUsers.size === 0) { toast('Bitte mindestens einen Benutzer auswählen.', 'warn'); return; } + + const btn = document.getElementById('gexAddBtn'); + btn.disabled = true; + const origHtml = btn.innerHTML; + btn.innerHTML = '
    Wird hinzugefügt…'; + + const userIds = [...GexState.selectedUsers.keys()]; + try { + const data = await api(`/api/groups/${encodeURIComponent(GexState.selectedGroup.Id)}/members`, { + method: 'POST', + body: { userIds }, + }); + if (data.errors > 0) { + toast(`${data.success} von ${data.total} hinzugefügt, ${data.errors} Fehler.`, 'warn'); + } else { + toast(`${data.success} Benutzer zu „${GexState.selectedGroup.DisplayName}" hinzugefügt.`, 'ok'); + GexState.selectedUsers.clear(); + _gexRenderSelectedUsers(); + document.getElementById('gexUserSearch').value = ''; + document.getElementById('gexUserResults').innerHTML = '
    Mindestens 2 Zeichen eingeben.
    '; + } + } catch (e) { + toast(`Fehler: ${e.message}`, 'err'); + } finally { + btn.innerHTML = origHtml; + _gexUpdateAddBtn(); + } +}); + +document.getElementById('gexExportBtn')?.addEventListener('click', () => { + if (!GexState.members?.users) return; + const m = GexState.members; + const rows = [['DisplayName', 'UserPrincipalName', 'Mail', 'SourcePath', 'GroupId', 'GroupName']]; + for (const u of m.users) { + rows.push([ + u.DisplayName || '', + u.UserPrincipalName || '', + u.Mail || '', + u.SourcePath || m.groupName, + m.groupId, + m.groupName, + ]); + } + const csv = rows.map(r => + r.map(v => `"${String(v).replace(/"/g, '""')}"`).join(',') + ).join('\r\n'); + const blob = new Blob(['' + csv], { type: 'text/csv;charset=utf-8;' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `${m.groupName.replace(/[^a-zA-Z0-9_-]/g, '_')}-members.csv`; + a.click(); + URL.revokeObjectURL(url); + toast(`${m.count} Benutzer exportiert.`, 'ok'); +}); + +// ============================================================= +// APP REPORT VIEW +// ============================================================= + +const ReportState = { + items: [], // alle geladenen Items + filtered: [], // nach Suche gefiltert + sortCol: 'AppName', + sortDir: 1, // 1 = asc, -1 = desc +}; + +async function loadAppReport() { + if (!State.connected) { toast('Bitte zuerst verbinden.', 'warn'); return; } + const tbody = document.getElementById('reportBody'); + tbody.innerHTML = `
    Lade Install-Statistiken… (kann 30–60 s dauern)`; + document.getElementById('btnReportExport').disabled = true; + document.getElementById('btnReportRefresh').disabled = true; + try { + const res = await api('/api/apps/report'); + ReportState.items = res.items || []; + applyReportFilter(); + toast(`${ReportState.items.length} Apps geladen`, 'ok'); + } catch (e) { + tbody.innerHTML = `${escapeHtml(e.message)}`; + toast(e.message, 'err', 'Report fehlgeschlagen'); + } finally { + document.getElementById('btnReportRefresh').disabled = false; + } +} + +function applyReportFilter() { + const q = (document.getElementById('reportSearch')?.value || '').toLowerCase().trim(); + ReportState.filtered = q + ? ReportState.items.filter(r => + (r.AppName || '').toLowerCase().includes(q) || + (r.Publisher || '').toLowerCase().includes(q) || + (r.AppType || '').toLowerCase().includes(q)) + : ReportState.items.slice(); + sortReport(); +} + +function sortReport() { + const col = ReportState.sortCol; + const dir = ReportState.sortDir; + const numCols = new Set(['InstalledDeviceCount','PendingInstallDeviceCount','FailedDeviceCount','NotApplicableDeviceCount']); + ReportState.filtered.sort((a, b) => { + let av = a[col] ?? '', bv = b[col] ?? ''; + if (numCols.has(col)) return dir * (Number(av) - Number(bv)); + return dir * String(av).localeCompare(String(bv), 'de', { sensitivity: 'base' }); + }); + renderReportTable(); +} + +function renderReportTable() { + const tbody = document.getElementById('reportBody'); + const count = document.getElementById('reportCount'); + count.textContent = ReportState.filtered.length; + document.getElementById('btnReportExport').disabled = ReportState.filtered.length === 0; + + // Sort-Icons aktualisieren + document.querySelectorAll('#reportTable th.sortable').forEach(th => { + const ico = th.querySelector('.sort-ico'); + if (!ico) return; + if (th.dataset.col === ReportState.sortCol) { + ico.textContent = ReportState.sortDir === 1 ? ' ▲' : ' ▼'; + } else { + ico.textContent = ''; + } + }); + + if (ReportState.filtered.length === 0) { + tbody.innerHTML = `Keine Apps gefunden.`; + return; + } + + tbody.innerHTML = ReportState.filtered.map(r => { + const failCls = r.FailedDeviceCount > 0 ? 'report-fail' : ''; + return ` + ${escapeHtml(r.AppName)} + ${escapeHtml(r.Publisher || '—')} + ${escapeHtml(r.AppType || '—')} + ${escapeHtml(r.Version || '—')} + ${r.InstalledDeviceCount} + ${r.PendingInstallDeviceCount} + ${r.FailedDeviceCount} + ${r.NotApplicableDeviceCount} + + + + `; + }).join(''); + + // Delegierter Click-Handler für alle Export-Buttons + tbody.querySelectorAll('.btn-report-device-export').forEach(btn => { + btn.addEventListener('click', () => exportDeviceStatusCsv(btn.dataset.appid, btn.dataset.appname, btn)); + }); +} + +async function exportDeviceStatusCsv(appId, appName, btn) { + const orig = btn.textContent; + btn.disabled = true; + btn.textContent = 'Lade…'; + try { + const res = await api(`/api/apps/devicestatus?appId=${encodeURIComponent(appId)}`); + const items = res.items || []; + if (items.length === 0) { toast('Keine Gerätedaten gefunden.', 'warn'); return; } + const cols = ['DeviceName','UserName','InstallState','InstallStateDetail','ErrorCode','OsVersion','LastSyncDateTime']; + const headers = ['Gerätename','Benutzer','Status','Status-Detail','Fehlercode','OS-Version','Letzte Synchronisierung']; + const rows = [headers, ...items.map(r => cols.map(c => r[c] ?? ''))]; + const csv = rows.map(r => r.map(v => `"${String(v).replace(/"/g, '""')}"`).join(',')).join('\r\n'); + const blob = new Blob(['' + csv], { type: 'text/csv;charset=utf-8;' }); + const url = URL.createObjectURL(blob); + const safe = appName.replace(/[\\/:*?"<>|]/g, '_').slice(0, 60); + const a = Object.assign(document.createElement('a'), { href: url, download: `devices-${safe}-${new Date().toISOString().slice(0,10)}.csv` }); + a.click(); + URL.revokeObjectURL(url); + toast(`${items.length} Geräte exportiert`, 'ok'); + } catch (e) { + toast(e.message, 'err', 'Export fehlgeschlagen'); + } finally { + btn.disabled = false; + btn.textContent = orig; + } +} + +function exportReportCsv() { + const cols = ['AppName','Publisher','AppType','Version','InstalledDeviceCount','PendingInstallDeviceCount','FailedDeviceCount','NotApplicableDeviceCount']; + const headers = ['App-Name','Publisher','Typ','Version','Installiert','Ausstehend','Fehlgeschlagen','Nicht anwendbar']; + const rows = [headers, ...ReportState.filtered.map(r => cols.map(c => r[c] ?? ''))]; + const csv = rows.map(r => r.map(v => `"${String(v).replace(/"/g, '""')}"`).join(',')).join('\r\n'); + const blob = new Blob(['' + csv], { type: 'text/csv;charset=utf-8;' }); + const url = URL.createObjectURL(blob); + const a = Object.assign(document.createElement('a'), { href: url, download: `app-report-${new Date().toISOString().slice(0,10)}.csv` }); + a.click(); + URL.revokeObjectURL(url); + toast(`${ReportState.filtered.length} Apps exportiert`, 'ok'); +} + +document.getElementById('btnReportRefresh')?.addEventListener('click', loadAppReport); +document.getElementById('btnReportExport')?.addEventListener('click', exportReportCsv); + +document.getElementById('reportSearch')?.addEventListener('input', applyReportFilter); + +document.querySelectorAll('#reportTable th.sortable').forEach(th => { + th.addEventListener('click', () => { + const col = th.dataset.col; + if (ReportState.sortCol === col) { + ReportState.sortDir *= -1; + } else { + ReportState.sortCol = col; + ReportState.sortDir = col.includes('Count') ? -1 : 1; + } + sortReport(); + }); +}); + +// ============================================================= +// CSV-IMPORT: Benutzer per UPN/CSV in Gruppe importieren +// ============================================================= + +const CsvImport = { + resolved: [], // Ergebnis des letzten Resolve-Calls + groupId: '', + groupName: '', +}; + +// Datei-Upload -> Textarea füllen +document.getElementById('csvImportFile')?.addEventListener('change', function () { + const file = this.files[0]; + if (!file) return; + const reader = new FileReader(); + reader.onload = e => { + document.getElementById('csvImportText').value = e.target.result; + this.value = ''; + }; + reader.readAsText(file, 'utf-8'); +}); + +// UPNs aus Textarea extrahieren (1. Spalte, Header erkennen) +function splitCsvLine(line) { + // Einfacher CSV-Splitter der quoted fields unterstützt + const fields = []; + let cur = '', inQ = false; + for (let i = 0; i < line.length; i++) { + const ch = line[i]; + if (ch === '"') { inQ = !inQ; continue; } + if (!inQ && (ch === ',' || ch === ';' || ch === '\t')) { fields.push(cur); cur = ''; continue; } + cur += ch; + } + fields.push(cur); + return fields.map(f => f.trim()); +} + +function parseCsvUpns(raw) { + const lines = raw.split(/\r?\n/).map(l => l.trim()).filter(Boolean); + if (lines.length === 0) return []; + + // Header-Zeile: prüfen ob erste Zeile Spaltennamen enthält + const UPN_HEADERS = ['userprincipalname', 'upn', 'mail', 'email', 'e-mail', 'emailaddress']; + const firstFields = splitCsvLine(lines[0]).map(f => f.toLowerCase()); + let colIdx = -1; + + // Suche in Header nach bekannten UPN-Spaltenbezeichnungen + for (const h of UPN_HEADERS) { + const idx = firstFields.indexOf(h); + if (idx !== -1) { colIdx = idx; break; } + } + + const startLine = colIdx !== -1 ? 1 : 0; // Header überspringen wenn gefunden + if (colIdx === -1) { + // Kein Header erkannt: erste Spalte die ein @ enthält verwenden + // oder Spalte 0 als Fallback + const firstDataFields = splitCsvLine(lines[0]); + colIdx = firstDataFields.findIndex(f => f.includes('@')); + if (colIdx === -1) colIdx = 0; + } + + const upns = []; + for (let i = startLine; i < lines.length; i++) { + const fields = splitCsvLine(lines[i]); + const val = (fields[colIdx] || '').trim(); + if (!val) continue; + if (!val.includes('@')) continue; // muss @ enthalten (UPN/E-Mail) + upns.push(val); + } + return [...new Set(upns)]; +} + +// Resolve-Button +document.getElementById('csvResolveBtn')?.addEventListener('click', async () => { + const raw = document.getElementById('csvImportText').value; + const upns = parseCsvUpns(raw); + if (upns.length === 0) { toast('Keine gültigen UPNs/E-Mails gefunden.', 'warn'); return; } + + const btn = document.getElementById('csvResolveBtn'); + const stats = document.getElementById('csvResolveStats'); + btn.disabled = true; + btn.textContent = 'Löse auf…'; + stats.textContent = `${upns.length} Einträge werden aufgelöst…`; + + try { + const res = await api('/api/groups/resolve-upns', { method: 'POST', body: { upns } }); + CsvImport.resolved = res.items || []; + renderCsvPreview(); + stats.textContent = `${res.found} gefunden, ${res.notFound} nicht gefunden`; + } catch (e) { + toast(e.message, 'err', 'Auflösung fehlgeschlagen'); + stats.textContent = ''; + } finally { + btn.disabled = false; + btn.textContent = 'Benutzer auflösen'; + } +}); + +function renderCsvPreview() { + const wrap = document.getElementById('csvPreviewWrap'); + const tbody = document.getElementById('csvPreviewBody'); + const foundBadge = document.getElementById('csvFoundBadge'); + const notFoundBadge = document.getElementById('csvNotFoundBadge'); + const importBtn = document.getElementById('csvImportBtn'); + + const found = CsvImport.resolved.filter(r => r.Found); + const notFound = CsvImport.resolved.filter(r => !r.Found); + + foundBadge.textContent = `${found.length} gefunden`; + notFoundBadge.textContent = `${notFound.length} nicht gefunden`; + wrap.classList.remove('hidden'); + + tbody.innerHTML = CsvImport.resolved.map(r => { + const cls = r.Found ? 'csv-row-ok' : 'csv-row-err'; + const ico = r.Found ? '✓' : '✗'; + const icoCls = r.Found ? 'csv-ico-ok' : 'csv-ico-err'; + return ` + ${ico} + ${escapeHtml(r.Upn)} + ${escapeHtml(r.DisplayName || '—')} + ${r.Found ? escapeHtml(r.Mail || r.Upn) : 'Nicht gefunden'} + `; + }).join(''); + + importBtn.disabled = found.length === 0 || !CsvImport.groupId; + updateCsvImportNote(); +} + +function updateCsvImportNote() { + const note = document.getElementById('csvImportNote'); + const importBtn = document.getElementById('csvImportBtn'); + const found = CsvImport.resolved.filter(r => r.Found).length; + if (!CsvImport.groupId) { + note.textContent = 'Gruppe links auswählen, dann Benutzer auflösen.'; + importBtn.disabled = true; + } else if (found === 0) { + note.textContent = `Gruppe: ${CsvImport.groupName} — keine aufgelösten Benutzer.`; + importBtn.disabled = true; + } else { + note.textContent = `Gruppe: ${CsvImport.groupName}`; + importBtn.disabled = false; + } +} + +// Import-Button: gefundene User zur Gruppe hinzufügen +document.getElementById('csvImportBtn')?.addEventListener('click', async () => { + const found = CsvImport.resolved.filter(r => r.Found); + if (!CsvImport.groupId || found.length === 0) return; + + const btn = document.getElementById('csvImportBtn'); + btn.disabled = true; + btn.textContent = 'Importiere…'; + + try { + const userIds = found.map(r => r.UserId); + const res = await api(`/api/groups/${encodeURIComponent(CsvImport.groupId)}/members`, { + method: 'POST', + body: { userIds } + }); + let cntAdded = 0, cntExist = 0, cntErr = 0; + const notFound = CsvImport.resolved.filter(r => !r.Found).length; + + // Status in Vorschau aktualisieren + if (res.results) { + const map = {}; + for (const r of res.results) map[r.userId] = r; + document.querySelectorAll('#csvPreviewBody tr').forEach((tr, idx) => { + const item = CsvImport.resolved[idx]; + if (!item?.Found) return; + const entry = map[item.UserId] || {}; + const st = entry.status || 'Error'; + const errMsg = entry.message || ''; + let icoCls, ico, label; + if (st === 'Success') { icoCls = 'csv-ico-done'; ico = '✔'; label = 'Hinzugefügt'; cntAdded++; } + else if (st === 'AlreadyMember') { icoCls = 'csv-ico-warn'; ico = '≈'; label = 'Bereits Mitglied'; cntExist++; } + else { icoCls = 'csv-ico-err'; ico = '✗'; label = errMsg || 'Fehler'; cntErr++; } + tr.querySelector('td:first-child').className = icoCls; + tr.querySelector('td:first-child').textContent = ico; + tr.querySelector('.csv-status').textContent = label; + tr.className = st === 'Success' ? 'csv-row-done' : st === 'AlreadyMember' ? 'csv-row-warn' : 'csv-row-err'; + }); + } + + // Ergebnis-Banner anzeigen + const banner = document.getElementById('csvResultBanner'); + banner.classList.remove('hidden'); + document.getElementById('csvResAdded').textContent = `${cntAdded} hinzugefügt`; + document.getElementById('csvResExist').textContent = `${cntExist} bereits Mitglied`; + document.getElementById('csvResError').textContent = `${cntErr} Fehler`; + document.getElementById('csvResSkipped').textContent = `${notFound} nicht gefunden`; + document.getElementById('csvResAdded').classList.toggle('hidden', cntAdded === 0); + document.getElementById('csvResExist').classList.toggle('hidden', cntExist === 0); + document.getElementById('csvResError').classList.toggle('hidden', cntErr === 0); + document.getElementById('csvResSkipped').classList.toggle('hidden', notFound === 0); + + const tone = cntErr > 0 ? 'warn' : 'ok'; + toast(`Import abgeschlossen: ${cntAdded} hinzugefügt, ${cntExist} bereits Mitglied${cntErr > 0 ? `, ${cntErr} Fehler` : ''}`, tone); + } catch (e) { + toast(e.message, 'err', 'Import fehlgeschlagen'); + } finally { + btn.disabled = false; + btn.textContent = 'Gefundene importieren'; + } +}); + +function notifyCsvImportGroupSelected(groupId, groupName) { + CsvImport.groupId = groupId; + CsvImport.groupName = groupName; + if (CsvImport.resolved.length > 0) renderCsvPreview(); + else updateCsvImportNote(); +} diff --git a/www/help.md b/www/help.md new file mode 100644 index 0000000..8dba180 --- /dev/null +++ b/www/help.md @@ -0,0 +1,324 @@ +# Intune Manager — Hilfe + +Web-Frontend für Microsoft Intune. Lädt Apps und Gruppen aus deinem Tenant über Microsoft Graph und macht das Verwalten von Zuweisungen schneller als im Intune-Portal selbst. + +--- + +## Schnellstart in 5 Schritten + +1. **Verbinden** — oben rechts *Anmelden* klicken → Microsoft-Anmeldefenster bestätigen. +2. **Tab wählen** — Topbar: *App Management* (Standard), *Group Management* oder *App Report*. +3. **Empfänger wählen** (App Management) — linke Spalte: Abteilung, RPA oder Benutzer markieren. +4. **Zuweisung sammeln** — bei einer App auf **Available** oder **Required** klicken. +5. **Ausführen** — rechts unten *Zuweisungen ausführen*. HTML-Report öffnet sich automatisch. + +--- + +## Navigation + +Der Header enthält drei Tabs: + +| Tab | Funktion | +|---|---| +| **App Management** | Haupt-Workflow: Apps laden, Gruppen zuweisen und entfernen | +| **Group Management** | Mitglieder anzeigen, exportieren, hinzufügen, CSV-Import | +| **App Report** | Installationszähler pro App, Geräte-Export als CSV | + +> Im **Read-Only-Modus** (Fallback auf eingeschränkte App-ID) sind die Tabs *Benutzer hinzufügen* und *CSV-Import* ausgeblendet. Alle Schreib-Buttons verschwinden automatisch. + +--- + +## App Management — der Hauptworkflow + +### Das mentale Modell + +Das Tool ändert **nicht die App-Zuweisungen selbst** — die Liste der Available/Required-Gruppen einer App bleibt unverändert. Stattdessen ändert es die **Mitgliedschaften in genau diesen Gruppen**. Beispiel: + +- App *Beispiel-App* hat die Required-Gruppe `intune-win-app--required` zugewiesen. +- Du wählst links die Abteilung `-team-controlling`. +- Klick auf die *Required*-Pille → Operation wandert in die Session. +- Beim Ausführen wird `-team-controlling` als Mitglied in der Required-Gruppe aufgenommen. +- Intune zieht beim nächsten Sync alle Mitglieder als Required-Targets. + +### Schritt-für-Schritt + +1. **Empfänger markieren** (linke Spalte) — Modi mischbar: Abteilungen + RPA + Benutzer gleichzeitig. Die *Pinned-Targets*-Leiste zeigt alles Aktive. +2. **Apps durchgehen** (mittlere Spalte) — Filter oder Suchfeld nutzen. +3. **Available- oder Required-Button klicken**: + - *Eine Gruppe*: Empfänger direkt zur Session hinzufügen. + - *Mehrere Gruppen* (Count-Badge): Picker öffnet sich. + - *Keine Gruppe* dieses Typs: Button deaktiviert. +4. **Session prüfen** (rechte Spalte) — alle gesammelten Vorgänge als Vorschau. +5. **Ausführen** — rechts unten. Report öffnet automatisch. + +### Pillen-Farben + +| Optik | Bedeutung | +|---|---| +| Neutral | Standard — kein Empfänger gewählt oder noch nicht geprüft | +| **Grüner Rahmen + Häkchen** | Alle Empfänger bereits Mitglied | +| **Gelber Rahmen + halbes Häkchen** | Teilweise Mitglied | +| **Schwarz gefüllt + Count-Badge** | Aktiv in der Session (Toggle: erneuter Klick entfernt) | +| Kursiv, ausgegraut | Nur native Zuweisung (All Users/Devices) — keine Gruppe änderbar | + +### Gruppen aus App entfernen (−R / −A) + +Jede App-Zeile zeigt rechts **−R** (Required entfernen) und **−A** (Available entfernen). + +- Klick auf −R / −A → Picker mit allen Gruppen dieses Typs → Gruppe auswählen → sofortiges Löschen der Zuweisung (nach Bestätigung). +- Bei nativen Zuweisungen (All Users/All Devices) erscheint stattdessen der Mülleimer-Icon direkt im Detail-Panel. + +### Plus-Button — Zuweisung hinzufügen + +Modal mit 6 Optionen: + +**REQUIRED** — Neue Gruppe / All Users / All Devices +**AVAILABLE** — Neue Gruppe / All Users / All Devices + +Bereits aktive native Kombinationen werden **ausgegraut** (verhindert Duplikate). + +### Die Session (rechte Spalte) + +Pro Eintrag: App-Name + Gruppen-Name + Empfänger-Tag + A/R-Badge + X-Entfernen. +Darunter Gesamtzahl — der Apply-Button zeigt diese Zahl. + +### Ausführen und Report + +- Member-Add pro Session-Eintrag +- Native Targets werden übersprungen +- Bereits-Mitglied = „OK" — kein Fehler +- HTML-Report in `%TEMP%\IntuneAppManager-Reports\` + +--- + +## Group Management + +### Mitglieder & Export + +- Gruppe links suchen und auswählen +- Mitgliederliste inkl. verschachtelter Gruppen +- Filter zum Einschränken der Anzeige +- **Als CSV exportieren** → `members--.csv` + +### Benutzer hinzufügen *(nur Read/Write)* + +- Benutzer per Name, UPN oder E-Mail suchen +- Mehrere auswählen und gemeinsam zur gewählten Gruppe hinzufügen + +### CSV-Import *(nur Read/Write)* + +Massenimport von Benutzern per CSV-Datei oder direkter Eingabe. + +**Ablauf:** +1. Gruppe links auswählen +2. CSV hochladen **oder** UPNs/E-Mails einfügen (eine pro Zeile) +3. **„Benutzer auflösen"** → Graph-Lookup → Vorschau mit ✓/✗ +4. **„Gefundene importieren"** → Benutzer werden zur Gruppe hinzugefügt + +**CSV-Format:** Header-Erkennung für `UserPrincipalName`, `Mail`, `Email`, `UPN`. +Ohne Header: erste Spalte mit `@` wird verwendet. Quoted fields und `,`/`;`/Tab als Trennzeichen werden unterstützt. + +**Ergebnis-Banner nach Import:** + +| Chip | Bedeutung | +|---|---| +| ✔ Grün | Erfolgreich hinzugefügt | +| ≈ Gelb | Bereits Mitglied | +| ✗ Rot | Fehler (Meldung in der Tabelle) | +| Grau | UPN in Graph nicht gefunden | + +--- + +## App Report + +- **Neu laden** — lädt Installationszähler für alle Apps (kann 1–2 Min. dauern) +- Tabelle sortierbar per Klick auf Spaltenheader (▲/▼) +- Suchfeld filtert nach Name, Publisher, Typ +- **Als CSV exportieren** — exportiert die gefilterte Tabelle +- **Geräte-Export** (Button pro Zeile) — lädt alle Geräte mit Installationsstatus für diese App als CSV + +> Zählwerte erfordern die Berechtigung `DeviceManagementManagedDevices.Read.All` in der Azure App-Registration. Fehlt sie, zeigen alle Spalten 0. + +--- + +## Header + +| Element | Funktion | +|---|---| +| **Logo** | Kann in den Einstellungen durch eigenes Firmenlogo ersetzt werden | +| **App Management / Group Management / App Report** | Haupt-Navigation | +| **Einstellungen** (Zahnrad) | Tenant/Client-ID, Naming, Farben, Logo | +| **Hilfe** (Fragezeichen) | Diese Seite | +| **Theme-Toggle** | Light/Dark-Mode — wird im LocalStorage gemerkt | +| **Avatar** | Angemeldeter Account — Mouseover zeigt vollen UPN; grüner Punkt = verbunden | +| **Logout** | Trennt die Graph-Verbindung | + +--- + +## Read-Only-Modus + +Ist nur eine Read-Only-App-ID konfiguriert (oder schlägt die RW-Anmeldung fehl), schaltet das Tool automatisch in den **Read-Only-Modus**: + +- Toast-Meldung „(Read Only)" beim Verbinden +- Alle Schreib-Buttons/Tabs werden ausgeblendet (`body.read-only`-CSS-Klasse) +- Sichtbar bleibt: App-Liste, Mitglieder-Ansicht, Export-Funktionen, App Report + +--- + +## Linke Spalte — Empfänger + +Drei Modi via Segment-Switch: + +- **Abteilung** — Gruppen mit konfigurierten Präfixen (mehrere möglich) +- **RPA** — explizit in den Einstellungen gelistete Gruppen +- **Benutzer** — Live-Suche über Graph (min. 2 Zeichen) + +**Gruppen aufklappen** → Mitglieder inline → *Benutzer übernehmen* in den User-Modus. + +**Icons pro Eintrag:** + +| Icon | Wirkung | +|---|---| +| Externer Link | Gruppe/User im Intune-Portal öffnen | +| Zwei Personen | Mitglieder-Ansicht im Intune-Portal | +| Teams-T | Direkt-Chat starten (Teams-Desktop) | + +--- + +## Mittlere Spalte — Apps + +### Filter + +| Filter | Zweck | +|---|---| +| Suchfeld | Volltext im App-Namen | +| Dropdown | Preset: Alle / Ohne Zuweisungen / Nur Available / Nur Required / Mehrere / All Users / All Devices / Intune / pro Vendor | +| Bereits Gruppenmitglied | Nur Apps wo Empfänger schon Mitglied ist | +| All Users/Devices ausblenden | Native Zuweisungen rausnehmen | +| Geändert (Datumsrange) | Nach Last-Modified-Datum filtern | + +### App-Zeile + +1. Status-Indikator (Häkchen) +2. App-Name + Hersteller → Klick öffnet Detail-Panel +3. Rename-Icon (Stift) / Lock bei Vendor-Apps +4. Source-Logo (Intune, PatchMyPC, Robopack, …) +5. Typ-Chip +6. Version +7. **Available**- und **Required**-Buttons mit Count +8. **−R** (Required-Gruppe entfernen) und **−A** (Available-Gruppe entfernen) +9. **Plus-Button** — Zuweisung hinzufügen +10. **Delete-Icon** — App löschen (bei Vendor-Apps: Lock) + +--- + +## App-Detail (Klick auf App-Namen) + +| Sektion | Inhalt | +|---|---| +| Zuweisungen | Available + Required mit Aktionen (Link, Mitglieder, Löschen) | +| Allgemein | Hersteller, Version, Typ, Min-OS | +| Beschreibung | Markdown-gerendert | +| Installation | Datei, Install-/Uninstall-Befehl (Copy-Icon) | +| Detection | Registry, Datei, MSI-Code, PowerShell | +| Return-Codes | Exit-Codes mit Typ | +| Meta | Erstellt + Geändert | +| Installationen | Geräte + Benutzer × Installiert/Fehler/Pending/N/A mit Erfolgsquote | +| Abhängigkeiten | SVG-Flow-Diagramm + Klartext; Klick auf Knoten springt zur Ziel-App | +| Supersedence | Was diese App ersetzt (update / replace) | + +--- + +## Einstellungen + +Persistiert in `%APPDATA%\IntuneAppManager-Web\settings.json`. + +| Sektion | Inhalt | +|---|---| +| Verbindung | Tenant-ID, Client-ID (RW), Client-ID (RO), Scopes RW + RO | +| Abteilungs-Gruppen | Präfixe (eine pro Zeile) | +| RPA-Gruppen | Explizite Gruppennamen | +| Benutzer-Suche | Felder (DisplayName / UPN / Mail / Department) | +| Required-Naming | Präfix + Suffix | +| Available-Naming | Präfix + Suffix | +| Branding | Logo-Upload (PNG/JPG/SVG/WEBP/GIF, max. 2 MB) | +| Farben | 8 Akzentfarben + Standardfarben wiederherstellen | + +--- + +## Benötigte Graph-Berechtigungen + +| Funktion | Berechtigung | +|---|---| +| Apps anzeigen | `DeviceManagementApps.Read.All` | +| Gruppen / Mitglieder anzeigen | `GroupMember.Read.All` | +| Benutzer suchen | `User.Read.All` | +| Zuweisungen ändern | `DeviceManagementApps.ReadWrite.All` | +| Gruppen-Mitglieder ändern | `GroupMember.ReadWrite.All` | +| App Report / Geräte-Export | `DeviceManagementManagedDevices.Read.All` ⚠ | + +> ⚠ Ohne `DeviceManagementManagedDevices.Read.All` zeigt der App Report 0 und der Geräte-Export liefert leere Dateien. + +--- + +## Wichtige Einschränkungen + +- **Vendor-Apps** (PatchMyPC, Robopack, …) können nicht gelöscht/umbenannt werden — Lock-Icon + HTTP 409. +- **Native Zuweisungen** (All Users / All Devices) sind je App und Intent einzigartig — Duplikate werden ausgegraut. +- **Required-Zuweisungen** werden beim nächsten Geräte-Sync erzwungen — bei Produktiv-Apps zuerst Available testen. +- **App-Löschung** ist irreversibel und entfernt alle Zuweisungen. +- **Cache**: Apps und Gruppen werden im PowerShell-Prozess gehalten — Refresh-Icon lädt neu. + +--- + +## Vendor-Erkennung + +Das Tool erkennt Vendor-Apps (PatchMyPC, Robopack, …) per konfigurierbaren Detection-Regeln in `settings.json → vendors[]`: + +| Feld | Optionen | +|---|---| +| `field` | `commandLine`, `developer`, `publisher`, `displayName`, `notes`, `owner` | +| `match` | `contains`, `equals`, `startsWith`, `regex` | +| `pattern` | Suchstring oder Regex | + +Erster Match gewinnt. Eigene Vendoren: neuen Eintrag im `vendors[]`-Array, Logo als `.png` im Projekt-Root ablegen. + +--- + +## Setup-Datei aktualisieren + +Native Win32-Apps (`.intunewin`) können mit einer neuen Setup-Datei aktualisiert werden ohne die App neu anzulegen. + +**Wo:** App-Detail → Abschnitt *Setup-Datei* → *Setup-Datei aktualisieren…* +**Ablauf:** lokalen Pfad auf dem Server-Rechner eingeben → optionale neue Versionsnummer → Bestätigung → *Hochladen & aktivieren* + +> **Achtung:** Ersetzt die ausgerollte Version für alle zugewiesenen Geräte. Nicht rückgängig machbar — zuerst an einer Test-App ausprobieren. + +--- + +## Tastatur / Tipps + +- **Ctrl+F5** — Hard-Refresh (Pflicht nach Tool-Updates) +- **Esc** — Modal schließen +- **Enter** im Umbenennen-Dialog — speichern +- **Klick auf App-Zeile** außerhalb Buttons — Detail öffnen/schließen + +--- + +## Fehlerbehebung + +| Symptom | Lösung | +|---|---| +| „User canceled authentication" | WAM-Fenster ist hinter anderen Fenstern — in Taskleiste suchen | +| Apps laden sehr lange | Bei > 1000 Apps normal (10–30 s); danach gecached | +| Änderungen wirken nicht | **Ctrl+F5** (Browser-Cache) | +| App Report zeigt nur 0 | `DeviceManagementManagedDevices.Read.All` fehlt in der App-Registration | +| Geräte-Export ist leer | Gleiche Ursache wie App Report | +| Read-Only-Modus obwohl RW gewünscht | RW-Anmeldung fehlgeschlagen — Berechtigungen in Azure prüfen | +| Port-Konflikt beim Start | `.\Start.ps1 -Port 8088` | +| PowerShell-Errors beim Start | `Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force` | +| Apply-Button bleibt grau | 0 Vorgänge in der Session oder nur native Targets | + +--- + +Stand: Juli 2026 · Hilfe-Datei: `www/help.md` · Änderungshistorie: `CHANGELOG.md` diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..2b92f56 --- /dev/null +++ b/www/index.html @@ -0,0 +1,994 @@ + + + + + + Intune Manager + + + + + + + + + + +
    +
    + +
    +
    Intune Manager
    +
    +
    + + + +
    + + + +
    + + Offline +
    + +
    +
    + + +
    + + +
    + + +
    +
    +
    +

    Abteilungen & Benutzer

    + 0 +
    + +
    + +
    + + + +
    + +
    + + + +
    + +
    +
    + + · + +
    +
    + + + +
    + +
    +
    + + +
    +
    +
    +

    Apps

    + 0 +
    +
    + +
    +
    + +
    +
    + + +
    + + +
    + +
    + + +
    + Geändert + + – + + +
    +
    + ✓ bereits zugewiesen + ◐ teilweise +
    +
    + +
    + +
    +
    + + + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/members.html b/www/members.html new file mode 100644 index 0000000..e342e5b --- /dev/null +++ b/www/members.html @@ -0,0 +1,151 @@ + + + + + + Gruppen-Mitglieder · Intune Manager + + + + + + + + +
    +
    + +
    +
    Gruppen-Mitglieder
    +
    +
    + +
    + +
    +
    +
    +

    Mitglieder werden geladen...

    +
    + + 0 +
    +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + +
    + + + + + diff --git a/www/styles.css b/www/styles.css new file mode 100644 index 0000000..253647c --- /dev/null +++ b/www/styles.css @@ -0,0 +1,5159 @@ +/* ============================================================= + Intune Manager — Cal.com-Aesthetik + Weißes Canvas, schwarze CTAs, Inter, dezente Hairlines. + ============================================================= */ + +:root { + /* Cal.com Tokens */ + --primary: #111111; + --primary-active: #242424; + --primary-disabled: #e5e7eb; + --ink: #111111; + --body: #374151; + --muted: #6b7280; + --muted-soft: #898989; + --hairline: #e5e7eb; + --hairline-soft: #f3f4f6; + --canvas: #ffffff; + --surface-soft: #f8f9fa; + --surface-card: #f5f5f5; + --surface-strong: #e5e7eb; + --surface-dark: #101010; + --surface-dark-elev: #1a1a1a; + --on-primary: #ffffff; + --on-dark: #ffffff; + --on-dark-soft: #a1a1aa; + + --brand-primary: #27a078; /* Logo-Hintergrund, Stepper-Indikator — Firmenfarbe */ + --brand-accent: #3b82f6; /* Available-Pillen, Links, Akzent-Hover */ + --success: #10b981; + --warning: #f59e0b; + --error: #ef4444; + --pink: #ec4899; + --violet: #8b5cf6; + --emerald: #34d399; + --orange: #fb923c; + --teal: #14b8a6; + --teal-deep: #0d9488; + + /* Tinted accent backgrounds — automatisch angepasst per Dark-Mode-Override */ + --success-bg: rgba(16,185,129,0.05); + --success-soft: rgba(16,185,129,0.12); + --success-strong: rgba(16,185,129,0.18); + --success-border: rgba(16,185,129,0.28); + --success-shadow: rgba(16,185,129,0.35); + --error-bg: rgba(239,68,68,0.06); + --error-soft: rgba(239,68,68,0.12); + --error-strong: rgba(239,68,68,0.18); + --error-border: rgba(239,68,68,0.30); + --warning-bg: rgba(245,158,11,0.06); + --warning-soft: rgba(245,158,11,0.12); + --warning-strong: rgba(245,158,11,0.18); + --warning-border: rgba(245,158,11,0.30); + --accent-bg: rgba(59,130,246,0.06); + --accent-soft: rgba(59,130,246,0.12); + --accent-strong: rgba(59,130,246,0.18); + --pink-soft: rgba(236,72,153,0.12); + --violet-soft: rgba(139,92,246,0.12); + --teal-soft: rgba(20,184,166,0.12); + + --app-expanded-bg: #f7f7f7; + + /* Aufgeklappte App-Zeile: solid background, kein rgba. Wird vom Frontend + per applyThemeColors() mit der gewaehlten Farbe 1:1 ueberschrieben. */ + --row-selected-border: #71e5c4; + --row-selected-bg: #71e5c4; + --row-selected-bg-hover: #71e5c4; + + /* Radii */ + --r-xs: 4px; + --r-sm: 6px; + --r-md: 8px; + --r-lg: 12px; + --r-xl: 16px; + --r-pill: 9999px; + + /* Spacing (Cal token-Basis 4px) */ + --s-xxs: 4px; + --s-xs: 8px; + --s-sm: 12px; + --s-md: 16px; + --s-lg: 24px; + --s-xl: 32px; + + /* Shadows — Cal: subtle, soft */ + --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05); + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04); + --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08); + --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.12); + + --tx: 150ms cubic-bezier(0.2, 0.7, 0.3, 1); + --tx-slow: 240ms cubic-bezier(0.2, 0.7, 0.3, 1); + + --font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace; +} + +@supports (font-variation-settings: normal) { + :root { --font-display: 'Inter var', 'Inter', sans-serif; --font-body: 'Inter var', 'Inter', sans-serif; } +} + +/* ============================================================= + Dark Mode — blau-getoente Schwarz-Skala, equal lightness steps, + entsaettigte Akzentfarben. Wird via data-theme="dark" am + aktiviert, JS persistiert die Wahl in localStorage. + ============================================================= */ +html[data-theme="dark"] { + --primary: #ffffff; + --primary-active: #f0f1f5; + --primary-disabled: #3a4150; + --ink: #f5f6fa; + --body: #d8dde6; + --muted: #9aa3b3; + --muted-soft: #6b7383; + --hairline: #353b4a; + --hairline-soft: #2a2f3d; + --canvas: #1f2430; /* aufgehellt — kein tiefschwarz mehr */ + --surface-soft: #262b38; + --surface-card: #2c313f; + --surface-strong: #353b4a; + --surface-dark: #f5f6fa; + --surface-dark-elev: #e0e4eb; + --on-primary: #1f2430; + --on-dark: #1f2430; + --on-dark-soft: #6b7383; + + /* Tints im Dark-Mode kraeftiger, mit den hellen Akzentfarben */ + --success-bg: rgba(102,204,190,0.10); + --success-soft: rgba(102,204,190,0.18); + --success-strong: rgba(102,204,190,0.26); + --success-border: rgba(102,204,190,0.40); + --success-shadow: rgba(102,204,190,0.45); + --error-bg: rgba(231,139,139,0.10); + --error-soft: rgba(231,139,139,0.18); + --error-strong: rgba(231,139,139,0.26); + --error-border: rgba(231,139,139,0.40); + --warning-bg: rgba(229,196,67,0.10); + --warning-soft: rgba(229,196,67,0.18); + --warning-strong: rgba(229,196,67,0.26); + --warning-border: rgba(229,196,67,0.40); + --accent-bg: rgba(127,177,240,0.10); + --accent-soft: rgba(127,177,240,0.18); + --accent-strong: rgba(127,177,240,0.26); + --pink-soft: rgba(240,166,204,0.18); + --violet-soft: rgba(192,134,234,0.18); + --teal-soft: rgba(102,204,190,0.18); + + /* Akzent-Farben entsaettigen — hellere Variante fuer dunklen Hintergrund */ + --brand-primary: #5ec4a0; + --brand-accent: #7fb1f0; + --success: #66ccbe; + --warning: #e5c443; + --error: #e78b8b; + --pink: #f0a6cc; + --violet: #c086ea; + --emerald: #66ccbe; + --orange: #f4a261; + --teal: #66ccbe; + --teal-deep: #5cc0b1; + + /* Schatten dezenter im Dark Mode */ + --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.4); + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.3); + --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5); + --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.6); +} + +/* Verhindert Flash beim ersten Render */ +html[data-theme="dark"] body { background: var(--canvas); color: var(--body); } + +/* Waehrend des Theme-Wechsels ALLE Transitions deaktivieren — sonst animiert + jedes Element gleichzeitig seine Farbaenderungen und das ganze Layout ruckelt. */ +html.theme-switching, +html.theme-switching *, +html.theme-switching *::before, +html.theme-switching *::after { + transition: none !important; + animation-duration: 0s !important; +} + +* { box-sizing: border-box; margin: 0; padding: 0; } + +html, body { + height: 100%; + background: var(--canvas); + color: var(--ink); + font-family: var(--font-body); + font-size: 14px; + line-height: 1.5; + font-feature-settings: 'cv11', 'ss01', 'ss03'; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; + color: var(--body); +} + +button { font-family: inherit; cursor: pointer; } +input, select { font-family: inherit; } +a { color: var(--ink); text-decoration: none; } +a:hover { text-decoration: underline; text-underline-offset: 2px; } +.hidden { display: none !important; } +.flex-1 { flex: 1; } +.muted { color: var(--muted); } + +/* Display headlines: -0.04em letter-spacing on Inter approximates Cal Sans */ +h1, h2, h3 { + font-family: var(--font-display); + color: var(--ink); + font-weight: 600; + letter-spacing: -0.025em; +} + +/* ============================================================= + HEADER (top-nav) + ============================================================= */ + +.topbar { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + gap: 24px; + height: 64px; + padding: 0 32px; + background: var(--canvas); + border-bottom: 1px solid var(--hairline); + position: sticky; + top: 0; + z-index: 50; +} +.topbar .header-actions { justify-self: end; } + +/* Topbar Navigation Tabs */ +.topbar-nav { + display: flex; + align-items: center; + gap: 4px; + height: 100%; +} +.nav-tab { + display: flex; + align-items: center; + height: 100%; + padding: 0 16px; + background: none; + border: none; + border-bottom: 2px solid transparent; + color: var(--muted); + font-size: 13.5px; + font-weight: 500; + cursor: pointer; + transition: color var(--tx), border-color var(--tx); + white-space: nowrap; +} +.nav-tab:hover { color: var(--ink); } +.nav-tab.active { + color: var(--ink); + border-bottom-color: var(--brand); + font-weight: 600; +} + +/* Group Management Vollbild-View */ +.group-mgmt-view { + display: flex; + flex-direction: column; + height: calc(100vh - 64px); + overflow: hidden; +} +.group-mgmt-body { + flex: 1; + display: flex; + flex-direction: column; + padding: 20px 28px; + overflow: hidden; +} +.group-mgmt-tabs { + flex-shrink: 0; + margin-bottom: 16px; +} +.group-mgmt-columns { + flex: 1; + overflow: hidden; + min-height: 0; +} +.group-mgmt-columns .gex-left, +.group-mgmt-columns .gex-right { + overflow-y: auto; +} +.group-mgmt-foot { + display: flex; + justify-content: flex-end; + gap: 8px; + padding-top: 12px; + border-top: 1px solid var(--hairline); + margin-top: 12px; + flex-shrink: 0; +} + +.brand { display: flex; align-items: center; gap: 12px; } + +.logo { + width: 32px; height: 32px; + border-radius: var(--r-md); + background: var(--brand-primary); + color: var(--on-primary); + display: grid; place-items: center; + font-weight: 700; + font-size: 16px; + letter-spacing: -0.04em; + overflow: hidden; + flex-shrink: 0; +} +/* Wenn ein eigenes Logo gesetzt ist: Hintergrund weg und Bild voll fuellen. */ +.logo.has-custom-logo { + background: transparent; + border-radius: var(--r-sm); +} +.logo-img { + display: block; + width: 100%; + height: 100%; + object-fit: contain; +} + +.brand-name { + font-size: 15px; + font-weight: 600; + color: var(--ink); + letter-spacing: -0.02em; +} + +.header-actions { display: flex; align-items: center; gap: 12px; } + +/* Theme-Toggle — Slide-Switch */ +.theme-toggle { + appearance: none; + background: transparent; + border: none; + padding: 0; + cursor: pointer; + flex-shrink: 0; + display: inline-flex; + align-items: center; +} +.theme-track { + position: relative; + display: block; + width: 44px; + height: 22px; + border-radius: 999px; + background: linear-gradient(135deg, #fcd34d 0%, #f59e0b 100%); + transition: background-color var(--tx-slow); + box-shadow: + inset 0 1px 2px rgba(120, 70, 0, 0.30), + inset 0 0 0 1px rgba(120, 70, 0, 0.18); +} +.theme-toggle:hover .theme-track { + filter: brightness(1.06); +} +.theme-ico { + position: absolute; + top: 50%; + width: 11px; + height: 11px; + z-index: 2; /* Icons UEBER dem Knob — Knob wirkt wie ein "Halter" */ + transform: translateY(-50%); + transition: opacity var(--tx); + pointer-events: none; +} +/* Knob-Mitte links: 3 + 8 = 11; Sun 11px breit -> left = 11 - 5.5 = 5.5 */ +.theme-ico-sun { left: 6px; color: #b45309; } +/* Knob-Mitte rechts: 44 - 3 - 8 = 33; Moon 11px breit -> right = 44 - 33 - 5.5 = 5.5 */ +.theme-ico-moon { right: 6px; color: #1e293b; transform: translate(1px, -50%); } +.theme-knob { + position: absolute; + top: 50%; + left: 3px; + width: 16px; + height: 16px; + border-radius: 50%; + background: #ffffff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.30), 0 0 0 1px rgba(0, 0, 0, 0.06); + transform: translate3d(0, -50%, 0); + transition: transform 220ms cubic-bezier(0.34, 1.2, 0.64, 1), background-color 220ms ease-out; + z-index: 1; /* unter den Icons */ + will-change: transform; +} + +/* Light-Mode: Sun sichtbar (sitzt unter dem Knob → erscheint AUF dem Knob), Moon ausgeblendet */ +html:not([data-theme="dark"]) .theme-ico-moon { opacity: 0; } +html:not([data-theme="dark"]) .theme-ico-sun { opacity: 1; } + +/* Dark-Mode: Knob slidet nach rechts (60 - 24 - 3 - 3 = 30) */ +html[data-theme="dark"] .theme-track { + background: #3b384f; + box-shadow: + inset 0 1px 2px rgba(0, 0, 0, 0.35), + inset 0 0 0 1px rgba(255, 255, 255, 0.08); +} +html[data-theme="dark"] .theme-knob { + /* Slide-Distance: 44 - 16 - 3 - 3 = 22 */ + transform: translate3d(22px, -50%, 0); +} +html[data-theme="dark"] .theme-ico-sun { opacity: 0; } +html[data-theme="dark"] .theme-ico-moon { opacity: 1; } + +/* Connection pill */ +/* Connection-Pill ist jetzt ein Avatar-Icon (Bootstrap person-circle). + Kein Border/Background — das Icon bringt seinen eigenen Kreis-Outline mit. + Status durch Icon-Farbe + kleiner Online-Dot unten rechts. Tooltip zeigt + den vollen Account-String. */ +.conn-pill { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + background: transparent; + color: var(--muted); + cursor: default; + transition: color var(--tx); + user-select: none; +} +.conn-pill .conn-text { + display: inline-flex; + align-items: center; + justify-content: center; + line-height: 0; +} +.conn-pill .conn-text svg { + display: block; +} +/* Online-Dot rechts unten — Status-Indikator wie aus Teams/Slack bekannt */ +.conn-pill .dot { + position: absolute; + right: 4px; + bottom: 4px; + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--muted-soft); + border: 1.5px solid var(--canvas); + box-sizing: content-box; +} +.conn-off { color: var(--muted); } +.conn-on { color: var(--brand-primary); } +.conn-on .dot { background: var(--success); animation: pulse 2.4s infinite; } +.conn-busy { color: var(--warning); } +.conn-busy .dot { background: var(--warning); animation: pulse 0.9s infinite; } + +@keyframes pulse { + 0%, 100% { opacity: 1; transform: scale(1); } + 50% { opacity: 0.4; transform: scale(0.7); } +} + +/* ============================================================= + BUTTONS — Cal.com (black primary, white secondary, text link) + ============================================================= */ + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + height: 40px; + padding: 0 20px; + border-radius: var(--r-md); + font-size: 14px; + font-weight: 600; + border: 1px solid transparent; + background: transparent; + color: var(--ink); + transition: all var(--tx); + white-space: nowrap; + letter-spacing: -0.005em; + user-select: none; + font-family: inherit; +} + +.btn:active:not(:disabled) { transform: scale(0.98); } +.btn:disabled { opacity: 0.5; cursor: not-allowed; } + +.btn-sm { height: 32px; padding: 0 12px; font-size: 13px; } +.btn-lg { height: 44px; padding: 0 24px; font-size: 15px; } + +.btn-primary { + background: var(--primary); + color: var(--on-primary); +} +.btn-primary:hover:not(:disabled) { background: var(--primary-active); } +.btn-primary:disabled { background: var(--primary-disabled); color: var(--muted); } + +.btn-secondary { + background: var(--canvas); + color: var(--ink); + border-color: var(--hairline); +} +.btn-secondary:hover:not(:disabled) { + background: var(--surface-soft); + border-color: var(--surface-strong); +} + +.btn-text { + background: transparent; + color: var(--muted); + font-weight: 500; + height: 36px; + padding: 0 12px; +} +.btn-text:hover:not(:disabled) { color: var(--ink); background: var(--surface-soft); } + +.btn-apply { + width: 100%; + height: 44px; + background: var(--primary); + color: var(--on-primary); + font-weight: 600; + border-radius: var(--r-md); + margin-top: 4px; +} +.btn-apply:hover:not(:disabled) { background: var(--primary-active); } +.btn-apply:disabled { background: var(--primary-disabled); color: var(--muted); } + +/* Icon button — circular */ +.icon-btn { + width: 32px; height: 32px; + border-radius: var(--r-md); + background: transparent; + border: 1px solid transparent; + color: var(--muted); + display: inline-grid; + place-items: center; + transition: all var(--tx); +} +.icon-btn:hover { background: var(--surface-soft); color: var(--ink); border-color: var(--hairline); } + +/* Link-style button */ +.link-btn { + background: transparent; + border: none; + color: var(--ink); + font-size: 13px; + font-weight: 500; + padding: 4px 6px; + border-radius: var(--r-sm); + letter-spacing: -0.005em; +} +.link-btn:hover { background: var(--surface-soft); } +.link-btn-danger { color: var(--error); display: block; margin: 8px auto 0; } +.link-btn-danger:hover { background: var(--error-bg); } + +.dotsep { color: var(--muted-soft); font-size: 12px; } + +/* ============================================================= + LAYOUT + ============================================================= */ + +.layout { + display: grid; + grid-template-columns: 440px minmax(0, 1fr) 440px; + gap: 14px; + padding: 16px 20px 24px; + max-width: 1920px; + margin: 0 auto; + width: 100%; + flex: 1; + align-items: stretch; +} + +.panel { + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-lg); + display: flex; + flex-direction: column; + overflow: hidden; + position: sticky; + top: 80px; + height: calc(100vh - 96px); /* feste, identische Hoehe */ +} + +.panel-head { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px 16px 12px; + gap: 12px; +} + +.panel-title { display: flex; align-items: center; gap: 10px; } +.panel-title h2 { + font-size: 16px; + font-weight: 600; + color: var(--ink); + letter-spacing: -0.015em; +} + +.panel-head-actions { display: flex; gap: 4px; } + +.count-badge { + display: inline-flex; + align-items: center; + padding: 2px 8px; + border-radius: var(--r-pill); + font-size: 12px; + font-weight: 500; + background: var(--surface-card); + color: var(--muted); + font-variant-numeric: tabular-nums; +} +.count-badge.accent { + background: var(--ink); + color: var(--on-primary); +} + +/* ============================================================= + MODE SEGMENT — nav-pill-group + ============================================================= */ + +.mode-segment { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 0; + margin: 0 16px 12px; + padding: 3px; + background: var(--surface-soft); + border-radius: var(--r-pill); + box-shadow: + inset 0 1px 2px rgba(0, 0, 0, 0.06), + inset 0 0 0 1px var(--hairline); +} + +.seg { + position: relative; + padding: 7px 10px; + background: transparent; + border: none; + border-radius: var(--r-pill); + color: var(--muted); + font-size: 13px; + font-weight: 500; + transition: color 180ms ease-out; + letter-spacing: -0.005em; + z-index: 1; +} +.seg:hover { color: var(--ink); } +.seg.active { + background: var(--ink); + color: var(--on-primary); + font-weight: 600; + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.30), + 0 0 0 1px rgba(0, 0, 0, 0.06); +} +.seg.active:hover { color: var(--on-primary); } + +/* ============================================================= + FORMS + ============================================================= */ + +.search-wrap { + position: relative; + margin: 0 16px 12px; + display: flex; + align-items: center; +} + +.search-ico { + position: absolute; + left: 12px; + color: var(--muted); + pointer-events: none; +} + +.input, .select { + width: 100%; + height: 38px; + padding: 0 14px; + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + color: var(--ink); + font-size: 14px; + transition: all var(--tx); + font-family: inherit; + letter-spacing: -0.005em; +} + +.input-search { padding-left: 36px; padding-right: 80px; } + +.input:focus, .select:focus { + outline: none; + border-color: var(--ink); + box-shadow: 0 0 0 3px rgba(17,17,17,0.08); +} + +.input::placeholder { color: var(--muted-soft); } + +.select { + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236b7280'%3E%3Cpath d='M4 6l4 4 4-4z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 10px center; + padding-right: 32px; +} + +.search-hint { + position: absolute; + right: 10px; + font-size: 10px; + color: var(--muted); + background: var(--surface-card); + padding: 3px 7px; + border-radius: var(--r-sm); + pointer-events: none; + font-weight: 500; + letter-spacing: 0.3px; + text-transform: uppercase; +} + +.select-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 16px 10px; +} + +.select-info { + font-size: 12px; + color: var(--muted); + font-weight: 500; +} + +.select-actions { display: flex; align-items: center; gap: 4px; } + +.apps-toolbar { + display: flex; + gap: 8px; + margin: 0 16px 10px; +} +.apps-toolbar .search-wrap { margin: 0; flex: 1; } +.apps-toolbar .select { width: 180px; flex-shrink: 0; } + +.filter-chips { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 20px; + margin: 0 16px 12px; +} + +.legend-group { + display: inline-flex; + align-items: center; + gap: 12px; + margin-left: auto; + padding-left: 12px; +} + +/* Date-Range-Filter (Geaendert von-bis) — kein Pillen-Rahmen mehr, + liegt nahtlos in der Filter-Zeile zwischen den anderen Filtern. */ +.date-filter-chip { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 0; + background: transparent; + border: none; + border-radius: 0; + font-size: 12px; + color: var(--body); + height: 28px; + box-sizing: border-box; +} +.date-filter-label { + font-weight: 500; + color: var(--body); + cursor: help; + line-height: 1; +} +/* Date-Inputs: gleiche Schriftart wie der Rest der UI (Inter), keine + Monospace. Hoehe so dass sie sauber im Chip sitzen. flatpickr legt ein + altInput direkt nach dem Original an — beide selectoren werden gestyled. */ +.date-filter-chip .date-input, +.date-filter-chip input.flatpickr-input { + border: 1px solid var(--hairline); + background: var(--canvas); + border-radius: var(--r-xs); + padding: 0 8px; + font-family: inherit; + font-size: 12px; + color: var(--ink); + width: 96px; + height: 22px; + box-sizing: border-box; + transition: none; + outline: none; + box-shadow: none; +} +.date-filter-chip .date-input:focus, +.date-filter-chip input.flatpickr-input:focus { + outline: none; + border-color: var(--brand-accent); +} +.date-sep { color: var(--muted); font-weight: 400; } +.date-clear { + background: transparent; + border: none; + color: var(--muted); + cursor: pointer; + font-size: 16px; + line-height: 1; + padding: 0 4px; + border-radius: var(--r-xs); + transition: all var(--tx); +} +.date-clear:hover { color: var(--error); background: var(--error-bg); } + +/* Dark-Mode: Input-Background dunkel halten — flatpickr macht den Picker- + Popup selbst (siehe Theming weiter unten). */ +html[data-theme="dark"] .date-filter-chip .date-input, +html[data-theme="dark"] .date-filter-chip input.flatpickr-input { + color: var(--ink); + background: var(--surface-soft); + border-color: var(--hairline); +} + +.legend-item { + display: inline-flex; + align-items: center; + gap: 5px; + font-size: 11px; + color: var(--muted); + cursor: help; +} + +.legend-item .row-status { + width: 14px; height: 14px; + font-size: 9px; +} + +.check-chip { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 0 4px 0 0; + background: transparent; + border: none; + border-radius: 0; + font-size: 12px; + color: var(--body); + cursor: pointer; + transition: color var(--tx); + user-select: none; + font-weight: 500; + /* Exakte Hoehe — synchron mit .date-filter-chip damit alles in der + Filter-Zeile auf einer Linie ist. */ + height: 28px; + box-sizing: border-box; +} + +.check-chip:hover { color: var(--ink); } +.check-chip input[type=checkbox] { + appearance: none; + width: 14px; height: 14px; + border: 1.5px solid var(--surface-strong); + border-radius: var(--r-xs); + display: inline-grid; place-items: center; + cursor: pointer; + transition: all var(--tx); +} +.check-chip input[type=checkbox]:checked { + background: var(--ink); + border-color: var(--ink); +} +.check-chip input[type=checkbox]:checked::after { + content: '✓'; + font-size: 10px; + color: var(--on-primary); + font-weight: 900; + line-height: 1; +} +/* Active-State: nur Text-Farbe verstaerken, kein flaechiger BG-Fill. + Der gefuellte Checkbox-Indikator (siehe input[type=checkbox]:checked + weiter oben) gibt schon ausreichend visuelles Feedback. */ +.check-chip:has(input:checked) { + color: var(--ink); + font-weight: 600; +} + +/* ============================================================= + LIST AREAS + ============================================================= */ + +.list-area { + flex: 1; + overflow-y: auto; + border-top: 1px solid var(--hairline); + background: var(--canvas); +} + +.list-area::-webkit-scrollbar { width: 8px; } +.list-area::-webkit-scrollbar-track { background: transparent; } +.list-area::-webkit-scrollbar-thumb { background: var(--surface-strong); border-radius: 4px; } +.list-area::-webkit-scrollbar-thumb:hover { background: var(--muted-soft); } + +/* Target rows */ +.target-row { + display: flex; + align-items: center; + gap: 6px; + padding: 8px 12px; + border-bottom: 1px solid var(--hairline-soft); + cursor: pointer; + transition: background var(--tx); + min-height: 38px; +} + +.target-row:hover { background: var(--surface-soft); } +.target-row.selected { + background: rgba(16,185,129,0.22); + border-left: 2px solid var(--success); + padding-left: 14px; +} +.target-row.selected:hover { + background: rgba(16,185,129,0.30); +} +html[data-theme="dark"] .target-row.selected { background: var(--success-strong); } +html[data-theme="dark"] .target-row.selected:hover { background: var(--success-strong); filter: brightness(1.1); } + +/* Gruppen ohne Mitglieder — analog zu Apps ohne Zuweisungen */ +.target-row.empty .target-name, +.target-row.empty a.target-link { + color: var(--error); +} +.target-row.empty a.target-link:hover { + filter: brightness(0.9); +} +.target-row.empty .target-meta { + color: var(--error); + opacity: 0.7; +} + +/* Flash-Animation beim Springen aus Pin-Chip */ +@keyframes flash-row { + 0% { background: var(--success-shadow); } + 100% { background: var(--success-soft); } +} +.target-row.flash { animation: flash-row 1.2s ease-out; } + +/* Pinned-Targets — kompakte Chip-Leiste, immer sichtbar oberhalb der Liste */ +.pinned-targets { + background: var(--success-bg); + border-top: 1px solid var(--success-strong); + border-bottom: 1px solid var(--success-strong); + padding: 8px 16px 10px 16px; + max-height: 160px; + overflow-y: auto; + flex-shrink: 0; +} +.pin-head { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 6px; +} +.pin-head-title { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--success); +} +.pin-head-count { + font-size: 11px; + background: var(--success); + color: white; + padding: 1px 7px; + border-radius: 10px; + font-weight: 600; +} +.pin-clear-all { + margin-left: auto; + font-size: 11.5px; + color: var(--muted); +} +.pin-chips { + display: flex; + flex-wrap: wrap; + gap: 4px; +} +.pin-chip { + display: inline-flex; + align-items: center; + gap: 6px; + background: var(--canvas); + border: 1px solid var(--success-shadow); + border-radius: 12px; + padding: 2px 4px 2px 8px; + font-size: 12px; + cursor: pointer; + transition: all var(--tx); + max-width: 100%; +} +.pin-chip:hover { + background: var(--success-strong); + border-color: var(--success); +} +.pin-chip.pin-empty { + border-color: var(--error-border); +} +.pin-chip.pin-empty .pin-name { color: var(--error); } +.pin-mode { + font-size: 9.5px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--success); + background: var(--success-soft); + padding: 1px 5px; + border-radius: 6px; + flex-shrink: 0; +} +.pin-name { + color: var(--ink); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 180px; +} +.pin-remove { + appearance: none; + background: transparent; + border: none; + color: var(--muted); + cursor: pointer; + width: 18px; height: 18px; + border-radius: 50%; + display: inline-grid; + place-items: center; + font-size: 14px; + line-height: 1; + flex-shrink: 0; + transition: all var(--tx); +} +.pin-remove:hover { + background: var(--error-soft); + color: var(--error); +} + +.target-row input[type=checkbox] { + appearance: none; + width: 16px; height: 16px; + border: 1.5px solid var(--surface-strong); + border-radius: var(--r-xs); + display: inline-grid; place-items: center; + cursor: pointer; + transition: all var(--tx); + flex-shrink: 0; + background: var(--canvas); +} +.target-row input[type=checkbox]:checked { + background: var(--ink); + border-color: var(--ink); +} +.target-row input[type=checkbox]:checked::after { + content: '✓'; + font-size: 11px; + color: var(--on-primary); + font-weight: 900; + line-height: 1; +} + +.target-name { + flex: 1; + font-size: 13.5px; + color: var(--ink); + word-break: break-word; + font-weight: 500; + letter-spacing: -0.005em; +} + +/* Empfaenger-Name als Link → in Entra oeffnen */ +a.target-link { + color: inherit; + text-decoration: none; +} +a.target-link:hover { + color: var(--brand-accent); + text-decoration: underline; + text-underline-offset: 2px; +} + +.target-meta { + font-size: 12px; + color: var(--muted); + margin-top: 2px; + font-weight: 400; +} + +/* Entra-Link-Icon (User/Group im Entra-Portal oeffnen) */ +.entra-link { + display: inline-grid; + place-items: center; + width: 22px; + height: 22px; + border-radius: var(--r-sm); + background: transparent; + border: 1px solid transparent; + color: var(--muted); + flex-shrink: 0; + text-decoration: none; + opacity: 0; + transition: all var(--tx); +} +.target-row:hover .entra-link, +.ex-member-row:hover .entra-link { opacity: 1; } +.entra-link:hover { + background: var(--surface-soft); + color: var(--brand-accent); + border-color: var(--hairline); + text-decoration: none; +} +/* Teams: Hover-Farbe im offiziellen Teams-Lila — sofortiger Wiedererkennungswert */ +.entra-link.teams-link:hover { + color: #4b53bc; + background: rgba(75, 83, 188, 0.10); +} +html[data-theme="dark"] .entra-link.teams-link:hover { + color: #8a91e3; + background: rgba(138, 145, 227, 0.16); +} + +/* Expand-Button auf dept/rpa-Zeilen → Mitglieder inline einsehen */ +.row-expand { + width: 24px; + height: 24px; + border-radius: var(--r-sm); + background: transparent; + border: 1px solid var(--hairline); + color: var(--muted); + font-size: 16px; + font-weight: 700; + display: inline-grid; + place-items: center; + flex-shrink: 0; + cursor: pointer; + transition: all var(--tx); + line-height: 1; +} +.row-expand:hover { + background: var(--surface-soft); + color: var(--ink); + border-color: var(--ink); +} +.row-expand.is-open { + background: var(--ink); + color: var(--on-primary); + border-color: var(--ink); + transform: rotate(90deg); +} + +/* Inline-Aufklapp-Bereich */ +.target-row-wrap { + border-bottom: 1px solid var(--hairline-soft); +} +.target-row-wrap > .target-row { border-bottom: none; } +.target-row-wrap.expanded { + background: var(--surface-soft); +} + +.expand-body { + padding: 8px 12px 12px; + border-top: 1px solid var(--hairline); + background: var(--surface-soft); + display: flex; + flex-direction: column; + gap: 8px; +} + +.expand-search .input { height: 32px; font-size: 12.5px; } + +.expand-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 11.5px; + color: var(--muted); + padding: 0 2px; +} +.expand-count strong { color: var(--ink); font-weight: 700; } +.expand-actions { display: flex; align-items: center; gap: 4px; } + +.expand-list { + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + max-height: 280px; + overflow-y: auto; +} + +.ex-member-row { + display: flex; + align-items: center; + gap: 10px; + padding: 7px 12px; + border-bottom: 1px solid var(--hairline-soft); + cursor: pointer; + transition: background var(--tx); + min-height: 36px; +} +.ex-member-row:last-child { border-bottom: none; } +.ex-member-row:hover { background: var(--surface-soft); } +.ex-member-row.selected { + background: var(--surface-soft); + border-left: 2px solid var(--ink); + padding-left: 10px; +} + +.ex-member-row input[type=checkbox] { + appearance: none; + width: 14px; height: 14px; + border: 1.5px solid var(--surface-strong); + border-radius: var(--r-xs); + display: inline-grid; place-items: center; + cursor: pointer; + transition: all var(--tx); + flex-shrink: 0; + background: var(--canvas); +} +.ex-member-row input[type=checkbox]:checked { + background: var(--ink); + border-color: var(--ink); +} +.ex-member-row input[type=checkbox]:checked::after { + content: '✓'; + font-size: 10px; + color: var(--on-primary); + font-weight: 900; + line-height: 1; +} + +.ex-member-info { flex: 1; min-width: 0; } +.ex-member-name { + font-size: 12.5px; + font-weight: 500; + color: var(--ink); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.ex-member-upn { + font-size: 11px; + color: var(--muted); + font-family: var(--font-mono); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-top: 1px; +} + +/* Member-Icons (Entra-Link + Teams-Chat) — rechtsbuendig und immer voll + sichtbar, identisch zur Empfaenger-Liste oben. */ +.ex-member-icons { + display: inline-flex; + align-items: center; + gap: 2px; + flex-shrink: 0; + margin-left: auto; +} +.ex-member-icons .entra-link { + opacity: 1; +} + +.expand-loading, +.expand-error, +.expand-empty { + padding: 16px; + text-align: center; + font-size: 12.5px; + color: var(--muted); + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-md); +} +.expand-loading { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; +} +.expand-error { color: var(--error); } + +.expand-foot { + display: flex; + justify-content: flex-end; +} + +/* Member-Liste im Modal */ +.mm-toolbar { + display: flex; + align-items: center; + gap: 4px; + padding: 0 0 8px; + border-bottom: 1px solid var(--hairline-soft); + margin-bottom: 8px; +} + +.member-list { + max-height: 50vh; + overflow-y: auto; + border: 1px solid var(--hairline); + border-radius: var(--r-md); +} + +.member-row { + display: flex; + align-items: center; + gap: 10px; + padding: 8px 12px; + border-bottom: 1px solid var(--hairline-soft); + cursor: pointer; + transition: background var(--tx); + min-height: 40px; +} +.member-row:last-child { border-bottom: none; } +.member-row:hover { background: var(--surface-soft); } +.member-row.selected { + background: var(--surface-soft); + border-left: 2px solid var(--ink); + padding-left: 10px; +} + +.member-row input[type=checkbox] { + appearance: none; + width: 16px; height: 16px; + border: 1.5px solid var(--surface-strong); + border-radius: var(--r-xs); + display: inline-grid; place-items: center; + cursor: pointer; + transition: all var(--tx); + flex-shrink: 0; + background: var(--canvas); +} +.member-row input[type=checkbox]:checked { + background: var(--ink); + border-color: var(--ink); +} +.member-row input[type=checkbox]:checked::after { + content: '✓'; + font-size: 11px; + color: var(--on-primary); + font-weight: 900; + line-height: 1; +} + +.member-info { flex: 1; min-width: 0; } +.member-name { + font-size: 13.5px; + font-weight: 500; + color: var(--ink); + letter-spacing: -0.005em; +} +.member-upn { + font-size: 11.5px; + color: var(--muted); + font-family: var(--font-mono); + margin-top: 1px; +} + +/* ============================================================= + APPS LIST — kompakt, 2 Spalten + ============================================================= */ + +.apps-list { border-radius: 0; } + +/* Tabellen-Layout: feste Spalten damit alles sauber untereinander steht. + Name nimmt den GANZEN Rest (1fr), andere Spalten so klein wie noetig. */ +.app-row { + display: grid; + grid-template-columns: + 22px /* status */ + minmax(200px, 1fr) /* name + publisher — alles uebrige */ + 24px /* source-logo (Intune/PMPC) */ + 58px /* type chip */ + 92px /* version */ + 98px /* available */ + 98px /* required */ + 26px /* + */ + 32px /* −R */ + 32px /* −A */ + 26px; /* delete */ + column-gap: 8px; + padding: 6px 12px; + border-bottom: 1px solid var(--hairline-soft); + transition: background var(--tx); + align-items: center; + /* Reihe waechst bei Bedarf — Default 48px, aber kein hartes Limit damit + lange App-Namen umbrechen koennen ohne abgeschnitten zu werden. */ + min-height: 48px; +} + +.app-row { cursor: pointer; } +.app-row:hover { background: var(--surface-soft); } +.app-row.has-queued { + background: var(--surface-soft); + box-shadow: inset 2px 0 0 var(--ink); +} +.app-row.is-open { + background: var(--row-selected-bg); + box-shadow: inset 3px 0 0 var(--row-selected-border); +} +.app-row.is-open:hover { + background: var(--row-selected-bg-hover); +} +/* Text und Icons werden vom Frontend auf Kontrast berechnet — vars werden + in applyThemeColors() gesetzt. Fallbacks fuer den allerersten Render. */ +.app-row.is-open .app-name { + color: var(--row-selected-text, var(--ink)); + font-weight: 600; +} +.app-row.is-open .app-publisher { + color: var(--row-selected-text-muted, var(--muted)); +} +.app-row.is-open .app-type, +.app-row.is-open .app-version { + color: var(--row-selected-text-muted, var(--body)); +} +/* Icons in markierter Row: volle Sichtbarkeit (overridet die globale + opacity: 0/0.55-Regel) UND Kontrast-Farbe aus applyThemeColors. */ +.app-row.is-open .app-name-icons .entra-link, +.app-row.is-open .app-rename-btn, +.app-row.is-open .app-rename-locked, +.app-row.is-open .col-delete .app-delete-btn, +.app-row.is-open .col-delete .app-delete-locked { + color: var(--row-selected-icon, currentColor) !important; + opacity: 0.85; +} +.app-row.is-open .app-name-icons .entra-link:hover, +.app-row.is-open .app-rename-btn:hover, +.app-row.is-open .col-delete .app-delete-btn:hover { + opacity: 1; + color: var(--row-selected-icon-hover, currentColor) !important; +} +/* Source-Logo + Type/Version Chip in markierter Row — Overlay-Vars werden + in applyThemeColors aus der effektiven BG-Helligkeit abgeleitet, daher + passt es automatisch sowohl in Light- als auch Dark-Mode. */ +.app-row.is-open .app-source { opacity: 0.95; } +.app-row.is-open .app-type { + background: var(--row-selected-surface-strong, var(--surface-soft)); + color: var(--row-selected-text, var(--ink)) !important; +} +.app-row.is-open .app-version { + background: var(--row-selected-surface-strong, var(--surface-soft)); + color: var(--row-selected-text, var(--body)) !important; +} +/* Queue-Badge invertieren */ +.app-row.is-open .row-queued { + background: var(--row-selected-text, var(--ink)); + color: var(--row-selected-bg, var(--on-primary)); +} + +.app-row-wrap { + border-bottom: 1px solid var(--hairline-soft); +} +.app-row-wrap > .app-row { border-bottom: none; } +.app-row-wrap.expanded { + background: var(--app-expanded-bg); + box-shadow: + inset 0 0 0 1px var(--success-border), + 0 6px 14px -8px var(--success-shadow), + 0 1px 0 0 var(--success-strong); + border-radius: var(--r-sm, 4px); + margin: 6px 4px 14px 4px; + border-bottom: none; +} +.app-row-wrap.expanded .app-detail { + background: var(--app-expanded-bg, var(--canvas)); +} +.app-row-wrap.expanded + .app-row-wrap { + border-top: 1px solid var(--hairline); +} +.app-row-wrap.expanded .app-detail { + border-bottom-left-radius: var(--r-sm, 4px); + border-bottom-right-radius: var(--r-sm, 4px); +} + +/* App-Detail-Panel — max. 2 Spalten, lange Inhalte (Zuweisungen, + Detection, ...) spannen ueber beide via .app-detail-section--wide. */ +.app-detail { + padding: 14px 18px 18px 44px; + font-size: 12.5px; + color: var(--detail-text, var(--ink)); + background: var(--canvas); + border-top: 1px dashed var(--hairline-soft); + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 14px 28px; + align-items: start; +} +.app-detail .app-detail-section-title { + color: var(--detail-text-muted, var(--muted)); + border-bottom-color: var(--detail-border-soft, var(--hairline-soft)); +} +.app-detail .app-detail-lbl { + color: var(--detail-text-faint, var(--muted)); +} +.app-detail .app-detail-val { + color: var(--detail-text, var(--ink)); +} +.app-detail .app-detail-desc { + color: var(--detail-text, var(--ink)); +} +/* Mono-Felder (Datei, Setup-Pfad, Befehle), Copy-Buttons und Listen-Border + nutzen die abgeleiteten Overlay-Surfaces, damit sie zur gewaehlten Tint- + Farbe passen — egal ob User Dark/Light Mode oder Custom-Color verwendet. */ +.app-detail .app-detail-val.mono { + background: var(--detail-surface, var(--surface-soft)); + border-color: var(--detail-border-soft, var(--hairline-soft)); + color: var(--detail-text, var(--ink)); +} +.app-detail .app-detail-copy { + background: transparent; + border-color: var(--detail-border-soft, var(--hairline-soft)); + color: var(--detail-text-muted, var(--muted)); +} +.app-detail .app-detail-copy:hover { + background: var(--detail-surface, var(--surface-soft)); + border-color: var(--detail-border, var(--surface-strong)); + color: var(--detail-text, var(--ink)); +} +.app-detail .app-detail-list { color: var(--detail-text, var(--ink)); } +.app-detail .app-detail-notes { color: var(--detail-text-muted, var(--muted)); } + +/* Zuweisungs-Block innerhalb des Detail-Panels */ +.app-detail .asg-col { + background: var(--detail-surface, var(--surface)); + border-color: var(--detail-border-soft, var(--hairline)); +} +.app-detail .asg-col-head { + background: var(--detail-surface-strong, var(--surface-soft)); + border-bottom-color: var(--detail-border-soft, var(--hairline-soft)); +} +.app-detail .asg-row { border-bottom-color: var(--detail-border-soft, var(--hairline-soft)); } +.app-detail .asg-row:hover { background: var(--detail-surface, var(--surface-soft)); } +.app-detail .asg-name { color: var(--detail-text, var(--ink)); } +.app-detail .asg-row.native .asg-name { color: var(--detail-text-faint, var(--muted)); } +.app-detail .asg-native-tag { + background: var(--detail-surface, var(--surface-soft)); + color: var(--detail-text-muted, var(--muted)); + border-color: var(--detail-border-soft, var(--hairline)); +} +.app-detail .asg-empty { color: var(--detail-text-faint, var(--muted)); } +.app-detail .asg-del { color: var(--detail-text-muted, var(--muted)); } +.app-detail .asg-actions .entra-link { color: var(--detail-text-muted, var(--muted)); } +.app-detail .asg-actions .entra-link:hover { color: var(--detail-text, var(--ink)); } +@media (max-width: 1100px) { + .app-detail { grid-template-columns: 1fr; } +} +.app-detail-loading, +.app-detail-error, +.app-detail-empty { + grid-column: 1 / -1; + padding: 8px 0; + color: var(--muted); + font-size: 12.5px; + display: flex; + align-items: center; + gap: 8px; +} +.app-detail-error { color: var(--error); } +.app-detail-section { + min-width: 0; +} +.app-detail-section--wide { + grid-column: 1 / -1; +} +.app-detail-section-title { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--muted); + margin-bottom: 6px; + padding-bottom: 4px; + border-bottom: 1px solid var(--hairline-soft); +} +.app-detail-row { + display: grid; + grid-template-columns: 110px 1fr; + gap: 8px; + padding: 3px 0; + align-items: baseline; +} +.app-detail-lbl { + color: var(--muted); + font-size: 11.5px; +} +.app-detail-val { + color: var(--ink); + word-break: break-word; + display: flex; + align-items: center; + gap: 6px; +} +.app-detail-val.mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 11.5px; + background: var(--surface-soft); + padding: 2px 6px; + border-radius: var(--r-xs); + border: 1px solid var(--hairline-soft); + word-break: break-all; + overflow-wrap: anywhere; + min-width: 0; +} +.app-detail-copy { + appearance: none; + background: transparent; + border: 1px solid var(--hairline-soft); + color: var(--muted); + cursor: pointer; + width: 20px; height: 20px; + border-radius: var(--r-xs); + display: inline-grid; place-items: center; + font-size: 11px; + flex-shrink: 0; + transition: all var(--tx); +} +.app-detail-copy:hover { color: var(--ink); border-color: var(--surface-strong); background: var(--surface-soft); } +.app-detail-copy.copied { color: var(--success); border-color: var(--success-border); } +.app-detail-desc { + white-space: pre-wrap; + line-height: 1.5; + color: var(--ink); +} +.app-detail-notes { margin-top: 6px; font-size: 12px; color: var(--muted); } +.app-detail-list { + margin: 0; + padding-left: 18px; + list-style: disc; + color: var(--ink); +} +.app-detail-list li { + padding: 2px 0; + word-break: break-all; + overflow-wrap: anywhere; + line-height: 1.5; +} + +/* Apps ohne irgendeine Zuweisung — leicht roetlich, damit sofort auffaellt */ +.app-row.no-assignments .app-name { + color: var(--error); +} +.app-row.no-assignments .app-publisher { + color: var(--error); + opacity: 0.7; +} + +.col { display: flex; align-items: center; min-width: 0; } +.col-status { justify-content: center; } +/* col-name als Flex-Column wie urspruenglich, mit position:relative — die + Icons werden per absoluter Positionierung an die rechte Mitte gelegt, sodass + sie vertikal in der ganzen Zeilenhoehe zentriert sind (nicht nur in der + oberen Name-Line). */ +.col-name { flex-direction: column; align-items: stretch; min-width: 0; gap: 1px; justify-content: center; position: relative; padding-right: 50px; } +.col-source { justify-content: center; } +.col-type { justify-content: flex-start; } +.col-version { justify-content: flex-start; } +.col-avail { justify-content: stretch; } +.col-req { justify-content: stretch; } +.col-create { justify-content: stretch; } +.col-remove-req { justify-content: stretch; } +.col-remove-avail { justify-content: stretch; } + +/* Buttons fuellen ihre Spalte komplett — saubere vertikale Linien. + Available/Required: Label klebt links, Count-Badge rechts, damit die + Schrift egal bei wievielen Gruppen immer an derselben Position startet. */ +.col-avail .type-btn, +.col-req .type-btn { + width: 100%; + justify-content: flex-start; + padding: 0 10px; +} +.col-create .type-btn, +.col-remove-req .type-btn, +.col-remove-req .type-remove, +.col-remove-avail .type-btn, +.col-remove-avail .type-remove { + width: 100%; + justify-content: center; + padding: 0; +} +.col-avail .type-btn > span:first-child, +.col-req .type-btn > span:first-child { + flex: 1 1 auto; + text-align: left; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; +} +.col-avail .type-btn > .type-btn-count, +.col-avail .type-btn > .type-btn-queued, +.col-req .type-btn > .type-btn-count, +.col-req .type-btn > .type-btn-queued { + flex-shrink: 0; +} + +.app-name-line { + display: flex; + align-items: center; + gap: 6px; + width: 100%; + min-width: 0; +} + +/* Aktions-Icons: absolut positioniert am rechten Rand der col-name, vertikal + ueber die ganze Zeilenhoehe (48 px) zentriert — egal ob die App nur einen + Namen hat oder Name + Publisher (zwei Zeilen). + Das padding-right: 50px auf col-name reserviert den Platz, damit lange + Namen/Publisher nicht unter die Icons rutschen. */ +.app-name-icons { + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); + display: inline-flex; + align-items: center; + gap: 2px; + flex-shrink: 0; +} + +/* Source-Logo: dezent, klein, klickbar */ +.app-source-link { + display: inline-grid; + place-items: center; + width: 18px; + height: 18px; + border-radius: var(--r-sm); + text-decoration: none; + transition: background var(--tx); +} +.app-source-link:hover { background: var(--surface-soft); } + +.app-source { + width: 14px; + height: 14px; + object-fit: contain; + opacity: 0.7; + border-radius: 2px; + transition: opacity var(--tx); + display: block; +} +.app-source-link:hover .app-source { opacity: 1; } + +/* Letter-Fallback wenn das Vendor-Logo nicht ausgeliefert werden kann + (z.B. fehlende Datei). Wird per onerror in app.js eingehaengt. */ +.app-source.app-source-letter { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 10px; + font-weight: 700; + color: var(--ink); + background: var(--surface-soft); + text-transform: uppercase; + line-height: 1; +} + +.cell-empty { + color: var(--surface-strong); + font-size: 12px; + font-weight: 500; +} + +.app-name { + font-size: 13.5px; + font-weight: 600; + color: var(--ink); + /* App-Namen NIE truncieren — bei Bedarf in mehrere Zeilen umbrechen. + overflow-wrap: anywhere greift auch fuer Namen ohne Leerzeichen. */ + white-space: normal; + overflow: visible; + overflow-wrap: anywhere; + word-break: normal; + letter-spacing: -0.01em; + min-width: 0; + text-decoration: none; + display: inline; + max-width: 100%; + line-height: 1.35; +} +a.app-name:hover { + color: var(--brand-accent); + text-decoration: underline; + text-underline-offset: 2px; +} +.app-row.no-assignments a.app-name { color: var(--error); } +.app-row.no-assignments a.app-name:hover { filter: brightness(0.9); } + +.app-meta { + display: inline-flex; + align-items: center; + gap: 6px; + flex-shrink: 0; +} + +.app-type { + font-size: 10px; + padding: 2px 7px; + border-radius: var(--r-xs); + background: var(--surface-card); + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.4px; + font-weight: 600; + flex-shrink: 0; +} + +.app-version { + font-size: 10.5px; + padding: 2px 7px; + border-radius: var(--r-xs); + background: var(--surface-soft); + color: var(--body); + font-family: var(--font-mono); + font-variant-numeric: tabular-nums; + font-weight: 500; + flex-shrink: 1; + min-width: 0; + max-width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; +} + +.app-publisher { + font-size: 12px; + color: var(--muted); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + min-width: 0; + max-width: 100%; + display: block; +} + +.row-status { + display: inline-grid; + place-items: center; + width: 18px; height: 18px; + font-size: 11px; + font-weight: 800; + flex-shrink: 0; + line-height: 1; + border-radius: 50%; + cursor: help; +} +.row-status.full { background: var(--success-soft); color: var(--success); } +.row-status.partial { background: var(--warning-soft); color: var(--warning); } + +.row-queued { + background: var(--ink); + color: var(--on-primary); + font-size: 10px; + font-weight: 700; + padding: 1px 7px; + border-radius: var(--r-pill); + flex-shrink: 0; + font-variant-numeric: tabular-nums; + letter-spacing: 0.2px; +} + +.app-row-actions { + display: flex; + align-items: center; + flex-wrap: nowrap; + gap: 6px; + justify-content: flex-end; +} + +/* Sammel-Buttons "Available" / "Required" / "+" */ +.type-btn { + display: inline-flex; + align-items: center; + gap: 5px; + height: 28px; + padding: 0 12px; + border-radius: var(--r-md); + font-size: 12px; + font-weight: 600; + font-family: inherit; + background: var(--canvas); + border: 1px solid var(--hairline); + color: var(--ink); + cursor: pointer; + transition: all var(--tx); + letter-spacing: -0.005em; + white-space: nowrap; + flex-shrink: 0; +} + +.type-btn:hover:not(:disabled) { + background: var(--surface-soft); + border-color: var(--ink); +} +.type-btn:active:not(:disabled) { transform: scale(0.98); } +.type-btn:disabled { opacity: 0.45; cursor: not-allowed; } + +/* Subtile Intent-Faerbung */ +.type-available { color: var(--brand-accent); border-color: var(--accent-soft); } +.type-available:hover:not(:disabled) { background: var(--accent-bg); border-color: var(--brand-accent); } +.type-required { color: var(--pink); border-color: var(--pink-soft); } +.type-required:hover:not(:disabled) { background: var(--pink-soft); border-color: var(--pink); } + +/* Im Warenkorb → schwarz mit weisser Schrift */ +.type-btn.has-queued { + background: var(--ink); + border-color: var(--ink); + color: var(--on-primary); +} +.type-btn.has-queued:hover { background: var(--primary-active); border-color: var(--primary-active); } + +/* Mitgliedschafts-State */ +.type-btn.member-full { + background: var(--success-soft); + border-color: var(--success-border); + color: var(--success); +} +.type-btn.member-partial { + background: var(--warning-soft); + border-color: var(--warning-border); + color: var(--warning); +} + +/* Native-Only (All Users / All Devices) */ +.type-btn.native-only { + background: var(--surface-card); + border-color: var(--hairline); + color: var(--muted); + font-style: italic; +} + +/* "+" Button */ +.type-create { + width: 28px; + padding: 0; + font-size: 16px; + color: var(--muted); + border-style: dashed; + justify-content: center; +} +.type-create:hover:not(:disabled) { + color: var(--ink); + border-color: var(--ink); + border-style: solid; +} +.type-remove { + width: 100%; + padding: 0; + font-size: 11px; + font-weight: 600; + color: var(--muted); + border-style: dashed; + justify-content: center; + letter-spacing: -0.5px; +} +.type-remove:hover:not(:disabled) { + color: var(--danger, #e55); + border-color: var(--danger, #e55); + border-style: solid; +} +.type-remove--empty { + visibility: hidden; + pointer-events: none; + border: none; +} + +/* Anzahl-Hinweis (z.B. "Available 3" wenn 3 Available-Gruppen existieren) */ +.type-btn-count { + display: inline-grid; + place-items: center; + min-width: 18px; + height: 18px; + padding: 0 5px; + border-radius: var(--r-pill); + background: var(--surface-card); + color: var(--muted); + font-size: 10px; + font-weight: 700; + font-variant-numeric: tabular-nums; +} +.type-btn.has-queued .type-btn-count { + background: rgba(255,255,255,0.18); + color: var(--on-primary); +} +.type-btn.member-full .type-btn-count { background: var(--success-strong); color: var(--success); } +.type-btn.member-partial .type-btn-count { background: var(--warning-strong); color: var(--warning); } + +/* Im-Warenkorb-Counter */ +.type-btn-queued { + display: inline-grid; + place-items: center; + min-width: 18px; + height: 18px; + padding: 0 5px; + border-radius: var(--r-pill); + background: var(--on-primary); + color: var(--ink); + font-size: 10px; + font-weight: 700; + font-variant-numeric: tabular-nums; +} + +/* ============================================================= + GROUP PICKER POPOVER + ============================================================= */ + +.group-picker { + position: fixed; + z-index: 800; + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + box-shadow: var(--shadow-lg); + min-width: 280px; + max-width: 420px; + overflow: hidden; + animation: picker-in 140ms cubic-bezier(0.2, 0.8, 0.3, 1); +} +@keyframes picker-in { + from { transform: translateY(-4px); opacity: 0; } + to { transform: translateY(0); opacity: 1; } +} + +.picker-head { + padding: 10px 14px; + font-size: 12px; + font-weight: 600; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.5px; + border-bottom: 1px solid var(--hairline); + background: var(--surface-soft); +} + +.picker-list { + max-height: 320px; + overflow-y: auto; +} + +.picker-item { + display: flex; + align-items: center; + gap: 10px; + width: 100%; + padding: 10px 14px; + background: transparent; + border: none; + border-bottom: 1px solid var(--hairline-soft); + font-size: 13px; + font-family: inherit; + color: var(--ink); + text-align: left; + cursor: pointer; + transition: background var(--tx); +} +.picker-item:last-child { border-bottom: none; } +.picker-item:hover { background: var(--surface-soft); } + +.picker-item.queued { background: rgba(17,17,17,0.04); font-weight: 600; } + +.picker-check { + width: 18px; + height: 18px; + display: inline-grid; + place-items: center; + flex-shrink: 0; + font-weight: 800; + color: var(--ink); +} + +.picker-name { + flex: 1; + word-break: break-all; + font-family: var(--font-mono); + font-size: 12px; +} + +.picker-mb { + font-size: 10px; + font-weight: 700; + padding: 2px 6px; + border-radius: var(--r-xs); + letter-spacing: 0.3px; + flex-shrink: 0; +} +.picker-mb.full { background: var(--success-soft); color: var(--success); } +.picker-mb.partial { background: var(--warning-soft); color: var(--warning); } + +/* A/R Marker — sehr dezent, nur farbiger Punkt mit Buchstabe */ +.pill-group-marker { + display: inline-grid; + place-items: center; + width: 16px; height: 16px; + font-size: 9px; + font-weight: 700; + border-radius: var(--r-xs); + margin-right: 2px; + flex-shrink: 0; + letter-spacing: 0; +} +.pill-group-marker.avail { background: var(--accent-soft); color: var(--brand-accent); } +.pill-group-marker.req { background: var(--pink-soft); color: var(--pink); } + +.pill-divider { + width: 1px; + height: 16px; + background: var(--hairline); + margin: 0 6px; + flex-shrink: 0; +} + +/* "+ Required-Gruppe" — nur sichtbar bei Hover oder wenn Apps keine Required-Pillen hat */ +.pill-create { + opacity: 0; + transition: opacity var(--tx); +} +.app-row:hover .pill-create, +.app-row .pill-create.always-show { + opacity: 1; +} + +/* ============================================================= + PILLS — Cal.com style: white, hairline border, ink hover + ============================================================= */ + +.group-pill { + position: relative; + display: inline-flex; + align-items: center; + gap: 4px; + padding: 3px 10px; + border-radius: var(--r-sm); + font-size: 12px; + background: var(--canvas); + border: 1px solid var(--hairline); + color: var(--ink); + cursor: pointer; + transition: all var(--tx); + font-weight: 500; + max-width: 100%; + height: 24px; + line-height: 1; + letter-spacing: -0.005em; +} + +.group-pill.pill-available { + border-color: var(--accent-soft); +} +.group-pill.pill-required { + border-color: var(--pink-soft); +} + +.group-pill:hover:not(:disabled):not(.queued) { + border-color: var(--ink); + background: var(--surface-soft); + box-shadow: var(--shadow-xs); +} + +.group-pill.queued { + background: var(--ink); + border-color: var(--ink); + color: var(--on-primary); + font-weight: 600; + padding-left: 8px; +} +.group-pill.queued::before { + content: '✓'; + font-size: 11px; + font-weight: 700; + color: var(--on-primary); + margin-right: 2px; +} +.group-pill.queued:hover { background: var(--primary-active); } + +.group-pill.member-full { + background: var(--success-bg); + border-color: var(--success-border); + color: var(--success); +} +.group-pill.member-partial { + background: var(--warning-bg); + border-color: var(--warning-border); + color: var(--warning); +} + +.group-pill.native { + background: var(--surface-card); + border-color: var(--hairline); + color: var(--muted); + cursor: not-allowed; + font-style: italic; +} + +.group-pill.unknown { + background: var(--error-bg); + border: 1px dashed var(--error-border); + color: var(--muted); + cursor: not-allowed; + font-style: italic; +} + +.group-pill .pill-name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 160px; +} + +.group-pill .pill-ico { + font-size: 11px; + margin-left: 2px; + opacity: 0.85; +} + +.pill-create { + background: transparent; + border: 1px dashed var(--surface-strong); + color: var(--muted); + width: 24px; + padding: 0; + font-size: 14px; + font-weight: 600; + display: inline-grid; + place-items: center; + flex-shrink: 0; +} +.pill-create:hover { + border-color: var(--ink); + color: var(--ink); + border-style: solid; + background: var(--surface-soft); +} + +.no-assignments { + font-size: 12px; + color: var(--muted); + font-style: italic; +} + +/* ============================================================= + SIDE PANEL (Cart / Existing) + ============================================================= */ + +.side-tabs { + display: grid; + grid-template-columns: 1fr 1fr; + border-bottom: 1px solid var(--hairline); +} + +.side-tab { + position: relative; + padding: 12px 14px; + background: transparent; + border: none; + color: var(--muted); + font-size: 13px; + font-weight: 500; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + transition: color var(--tx); + letter-spacing: -0.005em; + min-height: 56px; + line-height: 1.25; +} + +.side-tab:hover { color: var(--ink); } +.side-tab.active { color: var(--ink); font-weight: 600; } +.side-tab.active::after { + content: ''; + position: absolute; + inset: auto 0 -1px 0; + height: 2px; + background: var(--ink); +} + +.side-pane { padding: 16px; display: flex; flex-direction: column; gap: 12px; flex: 1; min-height: 0; } +.side-pane.hidden { display: none; } + +.side-pane-hint { + font-size: 12.5px; + color: var(--muted); + padding: 2px; + line-height: 1.5; +} + +.session-list { + flex: 1; + min-height: 120px; + max-height: 36vh; + overflow-y: auto; + border: 1px solid var(--hairline); + border-radius: var(--r-md); + background: var(--canvas); +} + +.session-item { + padding: 10px 12px; + border-bottom: 1px solid var(--hairline-soft); + display: flex; + align-items: center; + gap: 8px; + transition: background var(--tx); +} + +.session-item:hover { background: var(--surface-soft); } +.session-item:last-child { border-bottom: none; } + +.session-info { flex: 1; min-width: 0; } + +.session-app { + font-size: 13px; + font-weight: 600; + color: var(--ink); + word-break: break-word; + letter-spacing: -0.005em; +} + +.session-grp { + font-size: 11.5px; + color: var(--muted); + margin-top: 2px; + word-break: break-all; + font-family: var(--font-mono); +} + +.session-scope { + margin-top: 4px; + display: flex; + flex-wrap: wrap; + gap: 4px; +} +.scope-tag { + font-size: 10px; + font-weight: 700; + padding: 1px 6px; + border-radius: var(--r-xs); + letter-spacing: 0.2px; +} +.scope-tag.scope-dept { background: var(--teal-soft); color: var(--teal-deep); } +.scope-tag.scope-user { background: var(--violet-soft); color: var(--violet); } +.scope-target { + font-size: 11.5px; + color: var(--muted); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 200px; +} + +.session-type-badge { + font-size: 9px; + font-weight: 700; + padding: 2px 6px; + border-radius: var(--r-xs); + text-transform: uppercase; + flex-shrink: 0; + letter-spacing: 0.4px; +} + +.session-type-badge.avail { background: var(--accent-soft); color: var(--brand-accent); } +.session-type-badge.req { background: var(--pink-soft); color: var(--pink); } + +.session-remove { + background: transparent; + border: none; + color: var(--muted); + width: 24px; height: 24px; + border-radius: var(--r-sm); + font-size: 17px; + flex-shrink: 0; + display: grid; place-items: center; + transition: all var(--tx); +} +.session-remove:hover { background: var(--error-bg); color: var(--error); } + +.session-summary { + background: var(--surface-soft); + border-radius: var(--r-md); + padding: 12px 14px; +} + +.summary-section { + margin-bottom: 10px; +} +.summary-section:last-of-type { margin-bottom: 4px; } + +.summary-section-title { + font-size: 10.5px; + font-weight: 700; + text-transform: uppercase; + color: var(--muted); + letter-spacing: 0.5px; + margin-bottom: 4px; +} + +.summary-row { + display: flex; + justify-content: space-between; + font-size: 13px; + padding: 2px 0; + color: var(--body); +} + +.summary-row.sub { + font-size: 12.5px; + padding-left: 4px; +} + +.summary-row span:last-child { + color: var(--ink); + font-weight: 600; + font-variant-numeric: tabular-nums; +} + +.summary-row.total { + border-top: 1px solid var(--hairline); + margin-top: 8px; + padding-top: 10px; + font-size: 14px; + font-weight: 700; + color: var(--ink); +} + +.summary-row.total span:last-child { + font-size: 20px; + font-weight: 700; + letter-spacing: -0.02em; +} + +/* ============================================================= + EXISTING list + ============================================================= */ + +.existing-list { + flex: 1; + overflow-y: auto; + border: 1px solid var(--hairline); + border-radius: var(--r-md); + background: var(--canvas); + min-height: 120px; +} + +.existing-item { + display: flex; + justify-content: space-between; + align-items: center; + gap: 8px; + padding: 8px 12px; + border-bottom: 1px solid var(--hairline-soft); +} +.existing-item:last-child { border-bottom: none; } + +.existing-app { + flex: 1; + font-size: 12.5px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-weight: 500; + color: var(--ink); +} + +.existing-flags { display: flex; gap: 4px; flex-shrink: 0; } + +.exist-flag { + font-size: 9px; + font-weight: 700; + padding: 2px 6px; + border-radius: var(--r-xs); + letter-spacing: 0.3px; +} + +.exist-flag.a { background: var(--accent-soft); color: var(--brand-accent); } +.exist-flag.r { background: var(--pink-soft); color: var(--pink); } +.exist-flag.n { background: var(--surface-card); color: var(--muted); } + +/* ============================================================= + EMPTY STATE + ============================================================= */ + +.empty-state { + text-align: center; + padding: 40px 20px; + color: var(--muted); + font-size: 13px; + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; +} + +.empty-state.small { padding: 24px 16px; font-size: 12px; } + +.empty-ico { font-size: 28px; opacity: 0.5; } + +.empty-title { + color: var(--ink); + font-weight: 600; + font-size: 14px; + letter-spacing: -0.01em; +} + +.empty-text { + font-size: 13px; + color: var(--muted); + max-width: 280px; + line-height: 1.55; +} + +/* ============================================================= + ONBOARDING — Device-Code Login + ============================================================= */ + +.onboarding { + flex: 1; + display: flex; + align-items: flex-start; + justify-content: center; + padding: 80px 24px 40px; + background: var(--canvas); +} + +.onboarding.hidden { display: none; } + +.onboarding-card { + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-xl); + padding: 56px 56px 48px; + max-width: 540px; + width: 100%; + text-align: center; + box-shadow: var(--shadow-md); +} + +.onboarding-icon { + width: 64px; + height: 64px; + margin: 0 auto 20px; + display: grid; + place-items: center; + background: var(--ink); + color: var(--on-primary); + border-radius: var(--r-lg); +} + +.onboarding-icon-error { + background: var(--error-soft); + color: var(--error); +} + +.onboarding-title { + font-size: 28px; + font-weight: 600; + letter-spacing: -0.025em; + color: var(--ink); + margin-bottom: 12px; + line-height: 1.2; +} + +.onboarding-text { + color: var(--body); + font-size: 15px; + line-height: 1.55; + margin-bottom: 24px; + max-width: 400px; + margin-left: auto; + margin-right: auto; +} + +.onboarding-meta { + margin-top: 24px; + font-size: 12px; + color: var(--muted); + line-height: 1.55; + padding-top: 24px; + border-top: 1px solid var(--hairline-soft); +} + +/* Device-Code-Block */ +.dc-step { + font-size: 12px; + font-weight: 600; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 8px; +} + +.dc-code-block { + display: flex; + align-items: center; + gap: 12px; + justify-content: center; + margin: 8px 0 16px; +} + +.dc-code { + font-family: var(--font-mono); + font-size: 28px; + font-weight: 600; + letter-spacing: 0.15em; + background: var(--surface-soft); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + padding: 14px 22px; + color: var(--ink); + user-select: all; +} + +.dc-copy { flex-shrink: 0; } + +.dc-open-btn { + margin: 4px 0 8px; + text-decoration: none; +} +.dc-open-btn:hover { text-decoration: none; } + +.dc-waiting { + display: inline-flex; + align-items: center; + gap: 10px; + margin-top: 16px; + padding: 10px 16px; + background: var(--surface-soft); + border-radius: var(--r-pill); + font-size: 13px; + color: var(--muted); + font-weight: 500; +} + +.dc-spinner-wrap { display: flex; justify-content: center; margin-bottom: 24px; } + +/* ============================================================= + TOASTS + ============================================================= */ + +.toasts { + position: fixed; + bottom: 24px; + right: 24px; + display: flex; + flex-direction: column; + gap: 10px; + z-index: 3000; + pointer-events: none; +} + +.toast { + pointer-events: auto; + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + padding: 12px 14px; + font-size: 13px; + display: flex; + align-items: flex-start; + gap: 10px; + min-width: 280px; + max-width: 420px; + box-shadow: var(--shadow-md); + animation: slide-in 280ms cubic-bezier(0.2, 0.8, 0.2, 1); + border-left: 3px solid var(--ink); +} + +.toast.ok { border-left-color: var(--success); } +.toast.warn { border-left-color: var(--warning); } +.toast.err { border-left-color: var(--error); } + +.toast-ico { + flex-shrink: 0; + width: 22px; height: 22px; + border-radius: 50%; + display: grid; place-items: center; + font-size: 12px; + font-weight: 700; + background: var(--surface-card); + color: var(--ink); +} +.toast.ok .toast-ico { background: var(--success-soft); color: var(--success); } +.toast.warn .toast-ico { background: var(--warning-soft); color: var(--warning); } +.toast.err .toast-ico { background: var(--error-soft); color: var(--error); } + +.toast-content { flex: 1; min-width: 0; } +.toast-title { font-weight: 600; margin-bottom: 2px; color: var(--ink); } +.toast-msg { font-size: 12.5px; color: var(--body); word-wrap: break-word; } + +@keyframes slide-in { + from { transform: translateX(420px); opacity: 0; } + to { transform: translateX(0); opacity: 1; } +} + +/* ============================================================= + LOADING OVERLAY + ============================================================= */ + +.loading { + position: fixed; + inset: 0; + background: rgba(255,255,255,0.7); + backdrop-filter: blur(4px); + display: flex; + align-items: center; + justify-content: center; + z-index: 2000; + animation: fade-in 200ms ease-out; +} + +.loading-card { + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-lg); + padding: 28px 32px; + display: flex; + align-items: center; + gap: 14px; + box-shadow: var(--shadow-lg); + min-width: 260px; +} + +.spinner { + width: 24px; height: 24px; + border-radius: 50%; + border: 2.5px solid var(--surface-strong); + border-top-color: var(--ink); + animation: spin 800ms linear infinite; + flex-shrink: 0; +} + +.spinner-sm { + width: 14px; height: 14px; + border-width: 2px; +} + +.loading-text { + font-size: 14px; + color: var(--ink); + font-weight: 500; +} + +@keyframes spin { to { transform: rotate(360deg); } } +@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } + +/* Skeleton */ +.skeleton { + padding: 12px 16px; + display: flex; + flex-direction: column; + gap: 8px; +} +.sk-line { + height: 12px; + background: linear-gradient(90deg, var(--surface-soft) 0%, var(--surface-card) 50%, var(--surface-soft) 100%); + background-size: 200% 100%; + animation: shimmer 1.4s infinite; + border-radius: var(--r-xs); +} +.sk-line.short { width: 40%; } +.sk-line.med { width: 70%; } +@keyframes shimmer { + 0% { background-position: 200% 0; } + 100% { background-position: -200% 0; } +} + +/* ============================================================= + MODALS + ============================================================= */ + +.modal { + position: fixed; + inset: 0; + z-index: 1500; + display: flex; + align-items: center; + justify-content: center; + animation: fade-in 200ms ease-out; +} + +.modal-backdrop { + position: absolute; + inset: 0; + background: rgba(17,17,17,0.4); + backdrop-filter: blur(4px); +} + +.modal-box { + position: relative; + background: var(--canvas); + border-radius: var(--r-lg); + width: 92%; + max-width: 500px; + box-shadow: var(--shadow-lg); + animation: modal-in 240ms cubic-bezier(0.2, 0.8, 0.3, 1); + overflow: hidden; +} + +.modal-box.modal-lg { max-width: 720px; } +.modal-box.modal-xl { max-width: 1320px; } + +@keyframes modal-in { + from { transform: scale(0.96) translateY(-8px); opacity: 0; } + to { transform: scale(1) translateY(0); opacity: 1; } +} + +.modal-head { + display: flex; + align-items: center; + justify-content: space-between; + padding: 20px 24px; + border-bottom: 1px solid var(--hairline); +} + +.modal-head h3 { + font-size: 17px; + font-weight: 600; + letter-spacing: -0.015em; + color: var(--ink); +} + +.modal-close { + background: transparent; + border: none; + color: var(--muted); + font-size: 22px; + width: 32px; height: 32px; + border-radius: var(--r-sm); + transition: all var(--tx); + display: grid; place-items: center; + line-height: 1; +} +.modal-close:hover { background: var(--surface-soft); color: var(--ink); } + +.modal-body { + padding: 24px; + /* Hoch genug damit gaengige Modal-Inhalte (Settings, Create-Assignment) + ohne Scrollen passen. Bei extrem langen Inhalten oder kleinen Displays + greift der Scroll als Fallback. */ + max-height: 85vh; + overflow-y: auto; +} + +.modal-foot { + display: flex; + justify-content: flex-end; + gap: 10px; + padding: 16px 24px; + border-top: 1px solid var(--hairline); + background: var(--surface-soft); +} + +.form-group { margin-bottom: 16px; } +.form-group .lbl { + display: block; + font-size: 12px; + color: var(--muted); + margin-bottom: 6px; + font-weight: 600; + letter-spacing: -0.005em; +} +.form-group .input { width: 100%; } + +.form-hint { + font-size: 12px; + margin-top: 6px; + color: var(--muted); + font-weight: 500; +} +.form-hint.ok { color: var(--success); } +.form-hint.err { color: var(--error); } + +.confirm-text { + font-size: 15px; + margin-bottom: 16px; + line-height: 1.55; + color: var(--body); +} +.confirm-text strong { color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums; } + +.confirm-warn { + font-size: 13px; + color: var(--body); + background: var(--surface-soft); + border: 1px solid var(--hairline); + border-left: 3px solid var(--warning); + border-radius: var(--r-md); + padding: 12px 14px; +} + +/* Result Modal */ + +.res-banner { + display: flex; + align-items: center; + gap: 12px; + padding: 14px 16px; + border-radius: var(--r-md); + font-size: 14px; + font-weight: 600; + margin-bottom: 16px; + border: 1px solid; +} +.res-banner-ok { background: var(--success-soft); border-color: var(--success-shadow); color: var(--success); } +.res-banner-warn { background: var(--warning-soft); border-color: var(--warning-border); color: var(--warning); } +.res-banner-err { background: var(--error-soft); border-color: var(--error-border); color: var(--error); } + +.res-banner-ico { + display: inline-grid; + place-items: center; + width: 28px; height: 28px; + border-radius: 50%; + font-size: 16px; + font-weight: 800; + color: #fff; + flex-shrink: 0; + line-height: 1; +} +.res-banner-ok .res-banner-ico { background: var(--success); } +.res-banner-warn .res-banner-ico { background: var(--warning); } +.res-banner-err .res-banner-ico { background: var(--error); } + +.result-stats { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + margin-bottom: 18px; +} + +.rstat { + background: var(--surface-card); + border-radius: var(--r-md); + padding: 16px 12px; + text-align: center; + display: flex; + flex-direction: column; + gap: 4px; +} + +.rstat .num { + font-size: 32px; + font-weight: 700; + font-variant-numeric: tabular-nums; + letter-spacing: -0.025em; + line-height: 1; + color: var(--ink); +} + +.rstat .lbl { + font-size: 11px; + text-transform: uppercase; + color: var(--muted); + letter-spacing: 0.5px; + font-weight: 600; +} + +.rstat.ok .num { color: var(--success); } +.rstat.warn .num { color: var(--warning); } +.rstat.err .num { color: var(--error); } +.rstat.tot .num { color: var(--ink); } + +/* Detail-Liste */ +.res-details { margin-bottom: 16px; } +.res-details-head { + font-size: 12px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--muted); + margin-bottom: 8px; + padding: 0 2px; +} +.res-details-list { + border: 1px solid var(--hairline); + border-radius: var(--r-md); + max-height: 320px; + overflow-y: auto; + background: var(--canvas); +} +.res-row { + display: flex; + align-items: flex-start; + gap: 10px; + padding: 10px 12px; + border-bottom: 1px solid var(--hairline-soft); +} +.res-row:last-child { border-bottom: none; } + +.res-row-ico { + display: inline-grid; + place-items: center; + width: 20px; height: 20px; + border-radius: 50%; + font-size: 12px; + font-weight: 800; + flex-shrink: 0; + margin-top: 1px; +} +.res-row-ok .res-row-ico { background: var(--success-soft); color: var(--success); } +.res-row-warn .res-row-ico { background: var(--warning-soft); color: var(--warning); } +.res-row-err .res-row-ico { background: var(--error-soft); color: var(--error); } + +.res-row-main { flex: 1; min-width: 0; } +.res-row-line1 { + font-size: 13.5px; + color: var(--ink); + word-break: break-word; +} +.res-row-line1 strong { font-weight: 700; } +.res-row-line2 { + font-size: 11.5px; + color: var(--muted); + font-family: var(--font-mono); + margin-top: 2px; + word-break: break-all; +} +.res-row-type { + font-family: var(--font-body); + font-size: 9.5px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 1px 6px; + border-radius: var(--r-xs); + background: var(--surface-card); + margin-left: 4px; + vertical-align: middle; +} +.res-row-msg { + font-size: 11.5px; + color: var(--body); + margin-top: 4px; + font-style: italic; +} + +.report-link { + text-align: center; + padding: 8px; +} + +.report-link .btn { + text-decoration: none; + display: inline-flex; +} + +.res-debug { margin-top: 12px; } +.res-debug details { + background: var(--surface-soft); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + padding: 8px 12px; +} +.res-debug summary { + font-size: 11px; + color: var(--muted); + cursor: pointer; + user-select: none; + font-weight: 500; +} +.res-debug pre { + margin-top: 8px; + font-family: var(--font-mono); + font-size: 11px; + background: var(--canvas); + border: 1px solid var(--hairline); + border-radius: var(--r-sm); + padding: 10px; + overflow-x: auto; + color: var(--ink); +} + +/* ============================================================= + RESPONSIVE + ============================================================= */ + +@media (max-width: 1280px) { + .stepper { display: none; } + .topbar { grid-template-columns: auto 1fr auto; } +} + +@media (max-width: 1100px) { + .layout { grid-template-columns: 1fr; } + .panel { position: static; max-height: none; } + .panel-side { order: 99; } +} + +@media (max-width: 640px) { + .topbar { padding: 0 14px; height: auto; flex-wrap: wrap; gap: 12px; padding-block: 12px; } + .layout { padding: 12px; } + .mode-segment { grid-template-columns: 1fr; } + .result-stats { grid-template-columns: 1fr 1fr; } + .apps-toolbar { flex-direction: column; } + .apps-toolbar .select { width: 100%; } + .onboarding-card { padding: 32px 24px; } + .dc-code { font-size: 22px; padding: 12px 16px; } +} + +/* ============================================================= + Erweiterungen 2026-05-18: + - dezente Link-Icons neben Namen + - App-Delete-Button + - Picker mit Side-Actions (Entra, Members-Tab, Delete-Assignment) + - Standalone Members-Seite + ============================================================= */ + +/* Name-Spalten: nicht mehr klickbar, kleines Icon daneben */ +.target-name .target-text { + display: inline; + color: inherit; +} +.target-link-icons { + display: inline-flex; + align-items: center; + gap: 2px; + flex-shrink: 0; + margin-left: 4px; +} +.target-row .col-create { /* (no-op, just keeps cascade clean) */ } + +.app-name-line .entra-link { + margin-left: 2px; +} +.ex-member-name .entra-link { + margin-left: 4px; +} + +/* App-Delete-Button (Spalte ganz rechts) */ +.col-delete { justify-content: center; } +.app-delete-btn { + width: 24px; + height: 24px; + display: inline-grid; + place-items: center; + background: transparent; + border: 1px solid transparent; + border-radius: var(--r-sm); + color: var(--muted); + cursor: pointer; + opacity: 0; + transition: all var(--tx); + padding: 0; + flex-shrink: 0; +} +.app-row:hover .app-delete-btn { opacity: 0.7; } +.app-delete-btn:hover { + opacity: 1; + color: var(--error); + background: var(--error-soft, rgba(220, 38, 38, 0.12)); + border-color: var(--error); +} +.app-delete-btn.app-delete-locked { + cursor: not-allowed; + opacity: 0.35; +} +.app-row:hover .app-delete-btn.app-delete-locked { opacity: 0.55; } +.app-delete-btn.app-delete-locked:hover { + color: var(--muted); + background: var(--surface-soft); + border-color: var(--hairline); +} + +/* Inline-Edit-Icon neben dem App-Namen (Pencil). PMPC-Apps: passives Lock. */ +.app-rename-btn { + background: transparent; + border: 1px solid transparent; + padding: 0; + cursor: pointer; + display: inline-grid; + place-items: center; + width: 22px; + height: 22px; + border-radius: var(--r-sm); + color: var(--muted); + opacity: 0; + transition: all var(--tx); + flex-shrink: 0; +} +.app-row:hover .app-rename-btn { opacity: 0.65; } +.app-rename-btn:hover { + opacity: 1; + color: var(--brand-accent); + background: var(--surface-soft); + border-color: var(--hairline); +} +.app-rename-locked { + display: inline-grid; + place-items: center; + width: 22px; + height: 22px; + border-radius: var(--r-sm); + color: var(--muted); + flex-shrink: 0; + opacity: 0; + cursor: not-allowed; +} +.app-row:hover .app-rename-locked { opacity: 0.4; } + +/* Rename-Modal */ +.ra-old-name { + font-size: 13px; + color: var(--muted); + padding: 6px 0; + word-break: break-word; + font-style: italic; +} +.form-hint-err { + color: var(--error); + font-weight: 500; + min-height: 1.2em; + margin-top: 4px; +} + +/* Group-Picker: jede Zeile bekommt Side-Actions rechts */ +.picker-row { + display: flex; + align-items: stretch; + gap: 2px; + border-bottom: 1px solid var(--hairline-soft); +} +.picker-row:last-child { border-bottom: none; } +.picker-row.queued { background: rgba(17, 17, 17, 0.04); font-weight: 600; } +.picker-row .picker-item { border-bottom: none; flex: 1; } + +.picker-actions { + display: inline-flex; + align-items: center; + gap: 2px; + padding-right: 8px; + flex-shrink: 0; +} +.picker-actions .entra-link { + opacity: 0.55; +} +.picker-row:hover .picker-actions .entra-link { opacity: 1; } + +.picker-del { + width: 22px; + height: 22px; + display: inline-grid; + place-items: center; + background: transparent; + border: 1px solid transparent; + border-radius: var(--r-sm); + color: var(--muted); + cursor: pointer; + opacity: 0.55; + transition: all var(--tx); + padding: 0; +} +.picker-row:hover .picker-del { opacity: 0.85; } +.picker-del:hover { + opacity: 1; + color: var(--error); + background: var(--error-soft, rgba(220, 38, 38, 0.12)); + border-color: var(--error); +} + +/* Members-Standalone-Seite */ +body.members-page { + background: var(--canvas); +} +.members-page .topbar .brand-name { font-weight: 600; } +.members-main { + max-width: 980px; + margin: 28px auto; + padding: 0 16px 80px 16px; +} +.members-card { + background: var(--surface); + border: 1px solid var(--hairline); + border-radius: var(--r-lg); + overflow: hidden; + box-shadow: var(--shadow-soft, 0 1px 3px rgba(0,0,0,0.04)); +} +.members-head { + padding: 18px 22px 14px 22px; + display: flex; + flex-direction: column; + gap: 6px; + border-bottom: 1px solid var(--hairline-soft); +} +.members-title { + font-size: 18px; + font-weight: 700; + letter-spacing: -0.015em; + margin: 0; + color: var(--ink); + word-break: break-word; +} +.members-meta { + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; +} +.meta-mono { + font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace); + font-size: 11.5px; + background: var(--surface-soft); + color: var(--muted); + padding: 2px 8px; + border-radius: var(--r-xs); + border: 1px solid var(--hairline); +} +.members-toolbar { + display: flex; + gap: 8px; + align-items: center; + padding: 12px 22px; + border-bottom: 1px solid var(--hairline-soft); + background: var(--surface-soft); +} +.members-toolbar .search-wrap { flex: 1; } + +.members-list { + max-height: 70vh; + overflow-y: auto; +} +.m-row { + padding: 10px 22px; + border-bottom: 1px solid var(--hairline-soft); + transition: background var(--tx); +} +.m-row:last-child { border-bottom: none; } +.m-row:hover { background: var(--surface-soft); } +.m-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; } +.m-name { + font-size: 13.5px; + color: var(--ink); + font-weight: 500; + display: inline-flex; + align-items: center; + gap: 6px; +} +.m-name .entra-link { opacity: 0.5; } +.m-row:hover .m-name .entra-link { opacity: 1; } +.m-upn { + font-size: 12px; + color: var(--muted); +} +.m-loading { + padding: 32px 22px; + display: flex; + align-items: center; + gap: 10px; + color: var(--muted); + font-size: 13px; + justify-content: center; +} + +/* Picker-Item soll innerhalb der Row keinen Rand-Radius brechen */ +.picker-row .picker-item { border-radius: 0; } +.picker-row:first-child .picker-item { border-top-left-radius: var(--r-md); } +.picker-row:last-child .picker-item { border-bottom-left-radius: var(--r-md); } + +/* Zuweisungen-Sektion im aufgeklappten App-Detail */ +.asg-section .asg-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; + margin-top: 8px; +} +@media (max-width: 900px) { .asg-section .asg-grid { grid-template-columns: 1fr; } } +.asg-col { + background: var(--surface); + border: 1px solid var(--hairline); + border-radius: var(--r-sm); + overflow: hidden; +} +.asg-col-head { + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + background: var(--surface-soft); + border-bottom: 1px solid var(--hairline-soft); +} +.asg-badge { + font-size: 10px; + font-weight: 700; + letter-spacing: 0.4px; + text-transform: uppercase; + padding: 2px 7px; + border-radius: var(--r-xs); +} +.asg-badge.avail { background: var(--accent-soft, rgba(99,102,241,0.15)); color: var(--brand-accent); } +.asg-badge.req { background: var(--pink-soft, rgba(236,72,153,0.15)); color: var(--pink, #ec4899); } +.asg-count { + font-size: 11px; + color: var(--muted); + font-variant-numeric: tabular-nums; + margin-left: auto; +} +.asg-list { + list-style: none; + margin: 0; + padding: 0; +} +.asg-row { + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-bottom: 1px solid var(--hairline-soft); + transition: background var(--tx); +} +.asg-row:last-child { border-bottom: none; } +.asg-row:hover { background: var(--surface-soft); } +.asg-name { + flex: 1; + min-width: 0; + font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace); + font-size: 11.5px; + color: var(--ink); + /* nicht buchstabenweise brechen — overflow-wrap erlaubt nur Notbruch */ + overflow-wrap: anywhere; + word-break: normal; + line-height: 1.45; +} +.asg-row.native .asg-name { color: var(--muted); font-style: italic; } +.asg-native-tag { + font-size: 9.5px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.4px; + padding: 1px 6px; + border-radius: var(--r-xs); + background: var(--surface-soft); + color: var(--muted); + border: 1px solid var(--hairline); +} +.asg-mb { + font-size: 10px; + font-weight: 700; + padding: 1px 6px; + border-radius: var(--r-xs); + letter-spacing: 0.3px; + flex-shrink: 0; +} +.asg-mb.full { background: var(--success-soft); color: var(--success); } +.asg-mb.partial { background: var(--warning-soft, rgba(245,158,11,0.15)); color: var(--warning, #f59e0b); } +.asg-actions { + display: inline-flex; + align-items: center; + gap: 2px; + flex-shrink: 0; +} +.asg-actions .entra-link { opacity: 0.55; } +.asg-row:hover .asg-actions .entra-link { opacity: 1; } +.asg-del { + width: 22px; + height: 22px; + display: inline-grid; + place-items: center; + background: transparent; + border: 1px solid transparent; + border-radius: var(--r-sm); + color: var(--muted); + cursor: pointer; + opacity: 0.55; + transition: all var(--tx); + padding: 0; +} +.asg-row:hover .asg-del { opacity: 0.85; } +.asg-del:hover { + opacity: 1; + color: var(--error); + background: var(--error-soft, rgba(220,38,38,0.12)); + border-color: var(--error); +} +.asg-empty { + padding: 10px 12px; + font-size: 12px; + color: var(--muted); + font-style: italic; +} + +/* ============================================================= + Einstellungen-Modal + ============================================================= */ +.icon-btn-header { + width: 32px; + height: 32px; + border-radius: var(--r-sm); +} +.icon-btn-header svg { display: block; } +/* Disconnect-Button: Hover-Akzent in Fehlerfarbe damit "Trennen" als + destruktive Aktion sofort erkennbar ist. */ +#btnDisconnect:hover { + color: var(--error); + background: var(--error-bg); + border-color: transparent; +} + +.settings-form { display: flex; flex-direction: column; gap: 18px; } +.settings-sec { + border: 1px solid var(--hairline); + background: var(--surface); + border-radius: var(--r-md); + padding: 14px 16px; +} +.settings-sec.settings-sec-meta { background: var(--surface-soft); } + +/* First-Run / Setup-Required-Banner — wird im Settings-Modal-Body und im + Onboarding-Panel verwendet. Optisch warnend, aber dezent (kein rot). */ +.banner-warning { + border: 1px solid var(--warning, #f59e0b); + background: color-mix(in srgb, var(--warning, #f59e0b) 12%, var(--surface)); + color: var(--ink); + border-radius: var(--r-md); + padding: 10px 14px; + margin: 0 0 14px 0; + font-size: 12.5px; + line-height: 1.45; +} +.banner-warning strong { font-weight: 700; } +.banner-warning a { color: var(--accent); font-weight: 600; } +.banner-warning a:hover { text-decoration: underline; } + +/* Setup-Datei aktualisieren */ +.content-update-row { display: flex; flex-direction: column; gap: 6px; } +.uc-path-row { display: flex; gap: 8px; align-items: stretch; } +.uc-path-row .input { flex: 1; min-width: 0; } +.uc-path-row .btn { flex-shrink: 0; white-space: nowrap; } +.content-update-progress { + display: flex; + align-items: center; + gap: 8px; + margin-top: 10px; + padding: 8px 12px; + border-radius: var(--r-md); + background: var(--surface-soft); + border: 1px solid var(--hairline-soft); + font-size: 12.5px; + color: var(--ink); +} + +/* Konfig-Test-Ergebnisse im Settings-Modal — eine Zeile pro Pruefung, + farbliche Statuspille links. */ +.settings-test-result { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 4px; +} +.set-test-line { + font-size: 12.5px; + line-height: 1.5; + color: var(--ink); + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 6px; +} +.set-test-line code { font-size: 11.5px; } +.set-test-icon { + display: inline-block; + min-width: 36px; + padding: 1px 6px; + border-radius: var(--r-sm); + font-size: 10.5px; + font-weight: 700; + text-align: center; + letter-spacing: 0.04em; +} +.set-test-icon.ok { background: color-mix(in srgb, var(--success, #10b981) 18%, var(--surface)); color: var(--success, #10b981); } +.set-test-icon.fail { background: color-mix(in srgb, var(--error, #ef4444) 18%, var(--surface)); color: var(--error, #ef4444); } +.set-test-icon.warn { background: color-mix(in srgb, var(--warning, #f59e0b) 18%, var(--surface)); color: var(--warning, #f59e0b); } +.set-test-line.set-test-pending { color: var(--ink-muted); } +.set-test-line.set-test-warn { color: var(--ink-muted); } +.set-test-sample { color: var(--ink-muted); font-size: 11.5px; } +.settings-sec-head { margin-bottom: 10px; } +.settings-sec-head-row { + display: flex; + align-items: flex-start; + gap: 12px; + justify-content: space-between; +} +.settings-sec-head-row > div:first-child { flex: 1; min-width: 0; } +.settings-sec-head-row .btn { flex-shrink: 0; white-space: nowrap; } +.settings-sec-head h4 { + margin: 0 0 2px 0; + font-size: 13px; + font-weight: 700; + letter-spacing: -0.005em; + color: var(--ink); + text-transform: none; +} +.settings-sec-sub { + font-size: 11.5px; + color: var(--muted); + line-height: 1.45; +} +.settings-sec-sub code { + font-family: var(--font-mono); + font-size: 11px; + background: var(--surface-soft); + padding: 1px 5px; + border-radius: var(--r-xs); + color: var(--body); +} +.settings-form .form-group { margin-top: 8px; } +.settings-form .form-group:first-child { margin-top: 0; } +.settings-form .lbl { + display: block; + font-size: 11px; + font-weight: 600; + color: var(--muted); + margin-bottom: 4px; + text-transform: uppercase; + letter-spacing: 0.4px; +} +.settings-form .input { + width: 100%; + padding: 8px 10px; + font-size: 13px; +} +.settings-form textarea.input { + resize: vertical; + min-height: 80px; + line-height: 1.5; +} +.settings-form .input.mono { + font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace); + font-size: 12.5px; +} +.settings-form .form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; +} +@media (max-width: 600px) { + .settings-form .form-row { grid-template-columns: 1fr; } +} +.settings-form .form-check-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 6px; +} +.settings-form .form-hint { + font-size: 11.5px; + color: var(--muted); + margin-top: 6px; +} +.settings-form .set-preview { + font-family: var(--font-mono); + font-size: 12px; + background: var(--surface-soft); + padding: 2px 7px; + border-radius: var(--r-xs); + color: var(--ink); + border: 1px solid var(--hairline); +} +.settings-form .set-path { + font-family: var(--font-mono); + font-size: 11px; + color: var(--muted); + word-break: break-all; +} +.modal-foot-spacer { flex: 1; } + +/* Branding: Logo-Auswahl */ +.logo-row { + display: flex; + align-items: center; + gap: 16px; +} +.logo-preview { + width: 56px; height: 56px; + border-radius: var(--r-md); + background: var(--brand-primary); + color: var(--on-primary); + display: grid; place-items: center; + font-weight: 700; + font-size: 22px; + overflow: hidden; + flex-shrink: 0; + border: 1px solid var(--hairline); +} +.logo-preview:has(.logo-preview-img) { background: var(--surface-soft); } +.logo-preview-img { + width: 100%; height: 100%; + object-fit: contain; + display: block; +} +.logo-actions { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 6px; +} +.logo-actions .btn { white-space: nowrap; } +.input.hidden { display: none; } + +/* Farben-Grid */ +.color-grid { display: flex; flex-direction: column; gap: 6px; } +.color-row { + display: grid; + grid-template-columns: 22px 1fr 36px 92px 28px; + align-items: center; + gap: 10px; + padding: 8px 10px; + border: 1px solid var(--hairline); + border-radius: var(--r-sm); + background: var(--surface); + transition: border-color var(--tx); +} +.color-row:hover { border-color: var(--surface-strong); } +.color-swatch { + width: 22px; height: 22px; + border-radius: var(--r-xs); + border: 1px solid var(--hairline); + display: block; + background: var(--ink); +} +.color-meta { min-width: 0; } +.color-name { + font-size: 12.5px; + font-weight: 600; + color: var(--ink); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.color-desc { + font-size: 11px; + color: var(--muted); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.color-picker { + width: 36px; + height: 28px; + padding: 0; + border: 1px solid var(--hairline); + border-radius: var(--r-xs); + background: transparent; + cursor: pointer; +} +.color-picker::-webkit-color-swatch-wrapper { padding: 2px; } +.color-picker::-webkit-color-swatch { border: none; border-radius: 3px; } +.color-hex { + font-size: 12px !important; + padding: 4px 8px !important; + text-align: center; + width: 92px; +} +.color-row .link-btn { + font-size: 16px; + line-height: 1; + color: var(--muted); + background: transparent; + border: none; + cursor: pointer; + padding: 4px 6px; + border-radius: var(--r-xs); +} +.color-row .link-btn:hover { color: var(--ink); background: var(--surface-soft); } + +@media (max-width: 640px) { + .color-row { + grid-template-columns: 22px 1fr 36px; + grid-template-rows: auto auto; + gap: 6px 10px; + } + .color-row .color-hex { grid-column: 1 / 4; width: 100%; } + .color-row .link-btn { grid-column: 1 / 4; justify-self: flex-end; } +} + +/* Statische entra-Links (z.B. in der Members-Seite, der App-Zeile, + im Group-Picker). */ +.entra-link-static, +.app-name-line .entra-link, +.picker-actions .entra-link, +.m-name .entra-link { + opacity: 0.55; +} +.app-row:hover .app-name-line .entra-link { + opacity: 1; +} +/* Empfaenger-Liste (links): Icons sind IMMER voll sichtbar — egal ob + Abteilung, RPA-Gruppe oder Einzel-User. Vorher hover-only -> verwirrend. */ +.target-link-icons .entra-link { + opacity: 1; +} + +/* ============================================================= + Help-Modal — TOC-Sidebar links, gerenderter Markdown-Content rechts + ============================================================= */ +.help-body { + display: grid; + grid-template-columns: 260px 1fr; + gap: 28px; + padding: 32px 28px 24px 28px; + max-height: 80vh; + overflow: hidden; +} +@media (max-width: 800px) { + .help-body { grid-template-columns: 1fr; } + .help-toc { display: none; } +} +.help-toc { + position: sticky; + top: 0; + align-self: start; + max-height: 80vh; + overflow-y: auto; + padding: 0 12px 0 4px; + border-right: 1px solid var(--hairline-soft); +} +.help-toc-title { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--muted); + margin-bottom: 16px; +} +.help-toc ul { + list-style: none; + margin: 0; + padding: 0; +} +.help-toc li { + margin: 2px 0; +} +.help-toc a { + display: block; + padding: 6px 12px; + border-radius: var(--r-sm); + font-size: 12.5px; + color: var(--body); + text-decoration: none; + transition: background var(--tx), color var(--tx); +} +.help-toc a:hover { + background: var(--surface-soft); + color: var(--ink); +} +.help-toc a.active { + background: var(--accent-soft); + color: var(--brand-accent); + font-weight: 600; +} +.help-toc a.active:hover { + background: var(--accent-soft); + color: var(--brand-accent); +} +.help-content { + overflow-y: auto; + max-height: 80vh; + padding-right: 12px; +} +.help-content h1:first-child { + margin-top: 0; + margin-bottom: 14px; +} +.help-content h2 { + padding-top: 14px; + border-top: 1px solid var(--hairline-soft); + transition: background var(--tx); + border-radius: var(--r-sm); +} +.help-content h2:first-of-type { + border-top: none; + padding-top: 0; +} +/* Flash beim TOC-Klick */ +.help-h-flash { + background: var(--accent-soft); + padding-left: 8px; + padding-right: 8px; + margin-left: -8px; + margin-right: -8px; + animation: helpHFlash 1.2s ease-out; +} +@keyframes helpHFlash { + 0%, 100% { background: var(--accent-soft); } + 50% { background: transparent; } +} +.help-loading { + padding: 40px 20px; + text-align: center; + color: var(--muted); + font-size: 13px; +} +.help-error { + padding: 16px 20px; + background: var(--error-soft); + color: var(--error); + border: 1px solid var(--error-border); + border-radius: var(--r-md); +} +.help-version-badge { + font-family: var(--font-mono); + font-size: 11px; + color: var(--muted); + padding: 4px 10px; + background: var(--surface-soft); + border: 1px solid var(--hairline-soft); + border-radius: var(--r-pill); +} +/* Help-Modal: padding kommt komplett aus .help-body. KEINE eigene Regel + fuer #modalHelp .modal-body — die wuerde wegen ID-Specificity das + .help-body-Padding aushebeln. */ + +/* WICHTIG: das Help-Modal-Content-Div hat BEIDE Klassen am selben Element + (
    ), deshalb COMPOUND-Selector + (.help-content.md-content) — Descendant-Selector mit Leerzeichen wuerde + NICHT matchen. --detail-text wird global gesetzt (helle Panel-Farbe -> + dunkler readableForeground) und macht die md-content-Headings im Dark + Mode unlesbar. Wir overriden hier mit den Basis-Vars. !important + forciert Sieg gegen die generische .md-content-Regel — Specificity + alleine reicht nicht, weil die Help-/Detail-Regeln gemischt liegen. */ +.help-content.md-content { color: var(--ink) !important; } +.help-content.md-content h1, +.help-content.md-content h2, +.help-content.md-content h4 { color: var(--ink) !important; } +.help-content.md-content h3, +.help-content.md-content h5, +.help-content.md-content h6 { color: var(--muted) !important; } +.help-content.md-content p, +.help-content.md-content li, +.help-content.md-content td { color: var(--ink) !important; } +.help-content.md-content del { color: var(--muted) !important; } +.help-content.md-content blockquote { + color: var(--muted) !important; + border-left-color: var(--hairline) !important; + background: var(--surface-soft) !important; +} +.help-content.md-content code { + background: var(--surface-soft) !important; + border-color: var(--hairline-soft) !important; + color: var(--ink) !important; +} +.help-content.md-content pre, +.help-content.md-content th { + background: var(--surface-soft) !important; + border-color: var(--hairline-soft) !important; + color: var(--ink) !important; +} +.help-content.md-content th, +.help-content.md-content td { border-color: var(--hairline-soft) !important; } +.help-content.md-content tr:nth-child(even) td { background: var(--surface-soft) !important; } +.help-content.md-content hr { border-top-color: var(--hairline-soft) !important; } + +/* ============================================================= + Create-Assignment Modal — zwei Intent-Spalten (Required + Available) + mit je drei Optionen (Neue Gruppe / All Users / All Devices). + Farbliche Unterscheidung via cg-intent-required/-available. + ============================================================= */ +.cg-intent-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; + margin-top: 6px; +} +@media (max-width: 600px) { .cg-intent-grid { grid-template-columns: 1fr; } } + +.cg-intent-col { + display: flex; + flex-direction: column; + gap: 6px; + padding: 10px; + border: 1px solid var(--hairline); + border-radius: var(--r-md); + background: var(--surface); +} +/* Intent-Faerbung: Required = pink-ton, Available = accent-blau */ +.cg-intent-required { border-top: 3px solid var(--pink); } +.cg-intent-available { border-top: 3px solid var(--brand-accent); } + +.cg-intent-head { + display: flex; + flex-direction: column; + gap: 2px; + padding: 0 2px 4px; +} +.cg-intent-badge { + font-size: 10px; + font-weight: 700; + letter-spacing: 0.06em; + padding: 3px 8px; + border-radius: var(--r-xs); + align-self: flex-start; +} +.cg-intent-badge.req { background: var(--pink-soft); color: var(--pink); } +.cg-intent-badge.avail { background: var(--accent-soft); color: var(--brand-accent); } +.cg-intent-sub { + font-size: 11px; + color: var(--muted); +} + +.cg-mode { + display: flex; + align-items: flex-start; + gap: 10px; + padding: 10px 12px; + border: 1px solid var(--hairline-soft); + border-radius: var(--r-md); + background: var(--canvas); + cursor: pointer; + transition: all var(--tx); +} +.cg-mode:hover { background: var(--surface-soft); border-color: var(--surface-strong); } +.cg-mode input[type="radio"] { + margin-top: 2px; + flex-shrink: 0; +} +.cg-intent-required .cg-mode input[type="radio"] { accent-color: var(--pink); } +.cg-intent-available .cg-mode input[type="radio"] { accent-color: var(--brand-accent); } +.cg-intent-required .cg-mode:has(input:checked) { + border-color: var(--pink); + background: var(--pink-soft); +} +.cg-intent-available .cg-mode:has(input:checked) { + border-color: var(--brand-accent); + background: var(--accent-soft); +} +.cg-mode-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; } +.cg-mode-title { + font-size: 12.5px; + font-weight: 600; + color: var(--ink); +} +.cg-mode-desc { + font-size: 11.5px; + color: var(--muted); + line-height: 1.4; +} + +/* Disabled-Card: Option bereits zugewiesen, keine zweite Zuweisung moeglich. + pointer-events: none verhindert Klicks ohne JS-Logik dafuer schreiben zu + muessen. Strike-Through im Title macht visuell sofort klar dass die + Option nicht waehlbar ist. */ +.cg-mode--disabled { + opacity: 0.5; + pointer-events: none; + background: var(--surface-soft); + border-color: var(--hairline-soft) !important; +} +.cg-mode--disabled .cg-mode-title { + text-decoration: line-through; + color: var(--muted); +} +.cg-mode--disabled .cg-mode-title::after { + content: ' ✓ aktiv'; + font-size: 10px; + font-weight: 600; + letter-spacing: 0.03em; + color: var(--success); + margin-left: 4px; + text-decoration: none; + display: inline-block; +} +.cg-mode--disabled .cg-mode-desc { + font-style: italic; +} + +/* ============================================================= + App-Detail — Installations-Statistik (Erfolge/Fehler je User/Device) + ============================================================= */ +.install-stats { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; + margin-top: 6px; +} +@media (max-width: 900px) { .install-stats { grid-template-columns: 1fr; } } +.install-axis { + border: 1px solid var(--detail-border-soft, var(--hairline)); + border-radius: var(--r-md); + background: var(--detail-surface, var(--surface)); + padding: 10px 12px; +} +.install-axis-head { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 10px; + margin-bottom: 8px; +} +.install-axis-title { + font-size: 12px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--detail-text-muted, var(--muted)); +} +.install-axis-rate { + font-size: 11px; + font-weight: 600; + padding: 2px 8px; + border-radius: var(--r-pill); +} +.install-axis-rate.good { background: var(--success-soft); color: var(--success); } +.install-axis-rate.mid { background: var(--warning-soft); color: var(--warning); } +.install-axis-rate.bad { background: var(--error-soft); color: var(--error); } +.install-stats-grid { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 6px; +} +.stat-cell { + text-align: center; + padding: 8px 4px; + border-radius: var(--r-sm); + background: var(--canvas); + border: 1px solid var(--detail-border-soft, var(--hairline-soft)); +} +.stat-num { + font-size: 18px; + font-weight: 700; + line-height: 1.1; + font-variant-numeric: tabular-nums; + color: var(--detail-text, var(--ink)); +} +.stat-lbl { + font-size: 10px; + color: var(--detail-text-faint, var(--muted)); + text-transform: uppercase; + letter-spacing: 0.04em; + margin-top: 2px; +} +.stat-ok .stat-num { color: var(--success); } +.stat-err .stat-num { color: var(--error); } +.stat-pend .stat-num { color: var(--warning); } +.stat-not .stat-num { color: var(--muted); } +.stat-na .stat-num { color: var(--muted-soft); } + +/* Stacked-Balken */ +.install-bar { + display: flex; + height: 10px; + border-radius: var(--r-pill); + overflow: hidden; + background: var(--hairline); + margin-bottom: 6px; + gap: 1px; +} +.install-bar-seg { height: 100%; min-width: 2px; transition: opacity .15s; } +.install-bar-seg:hover { opacity: .75; } +.install-bar-ok { background: var(--success); } +.install-bar-err { background: var(--error); } +.install-bar-pend { background: var(--warning); } +.install-bar-not { background: var(--muted); } +.install-bar-na { background: var(--hairline-soft); } + +/* Balken-Legende */ +.install-bar-legend { + display: flex; + flex-wrap: wrap; + gap: 4px 10px; + margin-bottom: 10px; +} +.ibl { + font-size: 10.5px; + color: var(--muted); + display: flex; + align-items: center; + gap: 4px; +} +.ibl::before { + content: ''; + display: inline-block; + width: 9px; height: 9px; + border-radius: 2px; +} +.ibl-ok::before { background: var(--success); } +.ibl-err::before { background: var(--error); } +.ibl-pend::before { background: var(--warning); } +.ibl-not::before { background: var(--muted); } +.ibl-na::before { background: var(--hairline-soft); border: 1px solid var(--hairline); } + +/* ============================================================= + App-Detail — Flow-Visualisierung (Dependencies + Supersedence) + ============================================================= */ +.flow-subtitle { + font-size: 12px; + color: var(--detail-text-muted, var(--muted)); + margin: -2px 0 8px; +} +.flow-container { + width: 100%; + overflow-x: auto; + padding: 4px 0; +} +.flow-svg { + display: block; + color: var(--detail-text-faint, var(--muted)); + min-width: 640px; +} +.flow-arrow { + fill: none; + stroke: currentColor; + stroke-width: 1.5; + stroke-linecap: round; + stroke-linejoin: round; + opacity: 0.7; +} +.flow-arrow-label { + font-size: 10.5px; + font-family: var(--font-mono); + fill: var(--detail-text-muted, var(--muted)); + pointer-events: none; + font-weight: 600; +} +/* Label-Hintergrund — damit der Text nicht in die Linie reinlaeuft */ +.flow-arrow-label-bg { + fill: var(--detail-surface, var(--canvas)); + stroke: var(--detail-border-soft, var(--hairline-soft)); + stroke-width: 1; +} +.flow-node-wrap { + width: 100%; + height: 100%; + display: block; +} +.flow-node { + width: 100%; + height: 100%; + border: 1.5px solid var(--detail-border, var(--hairline)); + border-radius: var(--r-md); + background: var(--canvas); + padding: 8px 12px; + display: flex; + flex-direction: column; + justify-content: center; + gap: 1px; + overflow: hidden; + box-sizing: border-box; + transition: all var(--tx); +} +.flow-node-name { + font-size: 12.5px; + font-weight: 600; + color: var(--detail-text, var(--ink)); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.flow-node-meta { + font-size: 10.5px; + color: var(--detail-text-faint, var(--muted)); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.flow-node-center { + border-color: var(--brand-accent); + background: var(--accent-soft); +} +.flow-node-center .flow-node-name { color: var(--brand-accent); } +.flow-node-known { + cursor: pointer; +} +.flow-node-known:hover { + border-color: var(--brand-accent); + box-shadow: 0 2px 8px -2px var(--accent-soft); +} +.flow-node-known:focus-visible { + outline: 2px solid var(--brand-accent); + outline-offset: 1px; +} + +/* Klartext-Erklaerungen unter dem Flow-Diagramm — beschreibt was die + Visualisierung in der UI tatsaechlich bedeutet (in welcher Reihenfolge + Intune installiert, was bei Supersedence passiert, etc.). */ +.flow-explanations { + margin-top: 14px; + padding: 12px 16px 14px; + background: var(--detail-surface, var(--surface-soft)); + border: 1px solid var(--detail-border-soft, var(--hairline-soft)); + border-radius: var(--r-md); + border-left: 3px solid var(--brand-accent); +} +.flow-explanations-title { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--detail-text-muted, var(--muted)); + margin-bottom: 6px; +} +.flow-explanations ul { + margin: 0; + padding: 0; + list-style: none; +} +.flow-explanations li { + padding: 4px 0; + font-size: 13px; + color: var(--detail-text, var(--ink)); + line-height: 1.55; +} +.flow-explanations li + li { + border-top: 1px dashed var(--detail-border-soft, var(--hairline-soft)); + margin-top: 4px; + padding-top: 8px; +} +.flow-explanations strong { + font-weight: 600; + color: var(--detail-text, var(--ink)); +} + +/* Flash-Animation wenn man via Flow-Klick zu einer App springt */ +.app-row-wrap--flash { + animation: rowFlash 1.2s ease-out; +} +@keyframes rowFlash { + 0%, 100% { box-shadow: none; } + 30% { box-shadow: 0 0 0 3px var(--brand-accent); } +} + +/* ============================================================= + Markdown-Content (App-Beschreibung). Wird in renderMarkdown + per marked.js zu HTML. Styling so, dass es sich in das + App-Detail-Panel einfuegt — keine grossen Headings, alles dezent. + ============================================================= */ +.md-content { line-height: 1.55; } +.md-content > *:first-child { margin-top: 0; } +.md-content > *:last-child { margin-bottom: 0; } +.md-content p { margin: 0 0 8px 0; } +.md-content h1, .md-content h2, .md-content h3, +.md-content h4, .md-content h5, .md-content h6 { + margin: 14px 0 6px; + font-weight: 700; + line-height: 1.25; + color: var(--detail-text, var(--ink)); + letter-spacing: -0.005em; +} +.md-content h1 { font-size: 15px; } +.md-content h2 { font-size: 14px; } +.md-content h3 { font-size: 13px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--detail-text-muted, var(--muted)); } +.md-content h4 { font-size: 12.5px; } +.md-content h5, .md-content h6 { font-size: 12px; color: var(--detail-text-muted, var(--muted)); } +.md-content strong { font-weight: 700; } +.md-content em { font-style: italic; } +.md-content del { text-decoration: line-through; color: var(--detail-text-muted, var(--muted)); } +.md-content a { + color: var(--brand-accent); + text-decoration: none; + border-bottom: 1px solid transparent; + transition: border-color var(--tx); +} +.md-content a:hover { border-bottom-color: var(--brand-accent); } +.md-content ul, .md-content ol { + margin: 0 0 8px 0; + padding-left: 22px; +} +.md-content li { padding: 1px 0; } +.md-content li > p { margin: 0; } +.md-content blockquote { + margin: 0 0 8px 0; + padding: 4px 12px; + border-left: 3px solid var(--detail-border, var(--hairline)); + color: var(--detail-text-muted, var(--muted)); + font-style: italic; + background: var(--detail-surface, var(--surface-soft)); + border-radius: 0 var(--r-xs) var(--r-xs) 0; +} +.md-content code { + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 11.5px; + padding: 1px 5px; + border-radius: var(--r-xs); + background: var(--detail-surface, var(--surface-soft)); + border: 1px solid var(--detail-border-soft, var(--hairline-soft)); + color: var(--detail-text, var(--ink)); + word-break: break-all; +} +.md-content pre { + margin: 0 0 8px 0; + padding: 10px 12px; + border-radius: var(--r-sm); + background: var(--detail-surface, var(--surface-soft)); + border: 1px solid var(--detail-border-soft, var(--hairline-soft)); + overflow-x: auto; + line-height: 1.45; +} +.md-content pre code { + background: transparent; + border: none; + padding: 0; + font-size: 11.5px; + white-space: pre; + word-break: normal; +} +.md-content table { + width: 100%; + border-collapse: collapse; + margin: 0 0 8px 0; + font-size: 12px; +} +.md-content th, .md-content td { + border: 1px solid var(--detail-border-soft, var(--hairline-soft)); + padding: 5px 8px; + text-align: left; + vertical-align: top; +} +.md-content th { + background: var(--detail-surface, var(--surface-soft)); + font-weight: 700; + color: var(--detail-text, var(--ink)); + font-size: 11.5px; +} +.md-content tr:nth-child(even) td { + background: var(--detail-surface, transparent); +} +.md-content hr { + border: none; + border-top: 1px solid var(--detail-border-soft, var(--hairline-soft)); + margin: 12px 0; +} +.md-content img { + max-width: 100%; + height: auto; + border-radius: var(--r-xs); +} + +/* ============================================================= + flatpickr (Date-Picker Popup) — Dark-Mode-Theming + Light-Mode nutzt den Default des Pakets, im Dark-Mode passen wir + die wichtigsten Tokens an unsere Surface-/Ink-Vars an. + ============================================================= */ +html[data-theme="dark"] .flatpickr-calendar { + background: var(--surface-soft); + color: var(--ink); + box-shadow: 0 4px 20px rgba(0,0,0,0.5); + border: 1px solid var(--hairline); +} +html[data-theme="dark"] .flatpickr-calendar.arrowTop:before, +html[data-theme="dark"] .flatpickr-calendar.arrowBottom:before { + border-bottom-color: var(--hairline); + border-top-color: var(--hairline); +} +html[data-theme="dark"] .flatpickr-calendar.arrowTop:after, +html[data-theme="dark"] .flatpickr-calendar.arrowBottom:after { + border-bottom-color: var(--surface-soft); + border-top-color: var(--surface-soft); +} +html[data-theme="dark"] .flatpickr-months, +html[data-theme="dark"] .flatpickr-month { + color: var(--ink); + fill: var(--ink); + background: transparent; +} +html[data-theme="dark"] .flatpickr-current-month input.cur-year, +html[data-theme="dark"] .flatpickr-current-month .cur-month { + color: var(--ink); +} +html[data-theme="dark"] .flatpickr-monthDropdown-months { + background: var(--surface-soft); + color: var(--ink); +} +html[data-theme="dark"] .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month { + background: var(--surface-soft); +} +html[data-theme="dark"] .flatpickr-weekdays, +html[data-theme="dark"] span.flatpickr-weekday { + color: var(--muted); + background: transparent; +} +html[data-theme="dark"] .flatpickr-day { + color: var(--body); +} +html[data-theme="dark"] .flatpickr-day:hover, +html[data-theme="dark"] .flatpickr-day:focus { + background: var(--surface-strong); + border-color: var(--surface-strong); + color: var(--ink); +} +html[data-theme="dark"] .flatpickr-day.today { + border-color: var(--brand-accent); + color: var(--brand-accent); +} +html[data-theme="dark"] .flatpickr-day.today:hover { + background: var(--brand-accent); + color: var(--on-primary); +} +html[data-theme="dark"] .flatpickr-day.selected, +html[data-theme="dark"] .flatpickr-day.startRange, +html[data-theme="dark"] .flatpickr-day.endRange { + background: var(--brand-accent); + border-color: var(--brand-accent); + color: var(--on-primary); +} +html[data-theme="dark"] .flatpickr-day.flatpickr-disabled, +html[data-theme="dark"] .flatpickr-day.prevMonthDay, +html[data-theme="dark"] .flatpickr-day.nextMonthDay { + color: var(--muted-soft); +} +html[data-theme="dark"] .flatpickr-prev-month, +html[data-theme="dark"] .flatpickr-next-month { + color: var(--ink); + fill: var(--ink); +} +html[data-theme="dark"] .flatpickr-prev-month:hover svg, +html[data-theme="dark"] .flatpickr-next-month:hover svg { + fill: var(--brand-accent); +} +html[data-theme="dark"] .numInputWrapper:hover, +html[data-theme="dark"] .numInputWrapper span.arrowUp, +html[data-theme="dark"] .numInputWrapper span.arrowDown { + background: transparent; + border-color: var(--hairline); +} + +/* ============================================================= + Gruppen-Export Modal + ============================================================= */ + +.gex-body { + display: flex; + flex-direction: column; + min-height: 420px; + padding: 0 !important; + overflow: hidden; +} + +.gex-tab-bar { + display: flex; + border-bottom: 1px solid var(--hairline); + background: var(--surface-soft); + flex-shrink: 0; +} + +.gex-tab { + padding: 10px 18px; + font-size: 13px; + font-weight: 500; + color: var(--muted); + background: none; + border: none; + border-bottom: 2px solid transparent; + cursor: pointer; + margin-bottom: -1px; + transition: color var(--tx), border-color var(--tx); +} +.gex-tab:hover { color: var(--text); } +.gex-tab.active { + color: var(--text); + border-bottom-color: var(--ink); + font-weight: 600; +} + +.gex-columns { + display: flex; + flex: 1; + overflow: hidden; + min-height: 0; +} + +.gex-left { + width: 300px; + flex-shrink: 0; + border-right: 1px solid var(--hairline); + padding: 16px; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.gex-right { + flex: 1; + padding: 16px; + display: flex; + flex-direction: column; + overflow: hidden; + min-width: 0; +} + +.gex-section-title { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: .06em; + color: var(--muted); + margin-bottom: 8px; +} + +.gex-results { + flex: 1; + overflow-y: auto; + border: 1px solid var(--hairline); + border-radius: var(--r-md); +} + +.gex-group-item { + padding: 9px 12px; + border-bottom: 1px solid var(--hairline-soft); + cursor: pointer; + transition: background var(--tx); +} +.gex-group-item:last-child { border-bottom: none; } +.gex-group-item:hover { background: var(--surface-soft); } +.gex-group-item.selected { + background: var(--surface-soft); + border-left: 3px solid var(--ink); + padding-left: 9px; +} + +.gex-group-name { + font-size: 13px; + font-weight: 500; + color: var(--text); +} +.gex-group-desc { + font-size: 11.5px; + color: var(--muted); + margin-top: 2px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.gex-members-area { + flex: 1; + overflow-y: auto; + border: 1px solid var(--hairline); + border-radius: var(--r-md); +} + +.gex-summary { + padding: 8px 12px; + font-size: 12px; + color: var(--muted); + border-bottom: 1px solid var(--hairline-soft); + background: var(--surface-soft); +} + +.gex-path-group { + border-bottom: 1px solid var(--hairline-soft); +} +.gex-path-group:last-child { border-bottom: none; } + +.gex-path-head { + display: flex; + align-items: center; + gap: 6px; + padding: 7px 12px; + font-size: 12px; + font-weight: 600; + background: var(--surface-soft); + border-bottom: 1px solid var(--hairline-soft); + color: var(--muted); + position: sticky; + top: 0; + z-index: 1; +} + +.gex-user-list { } + +.gex-user-item { + display: flex; + align-items: baseline; + gap: 8px; + padding: 6px 12px; + border-bottom: 1px solid var(--hairline-soft); + font-size: 13px; +} +.gex-user-item:last-child { border-bottom: none; } +.gex-user-item.hidden-filter { display: none; } + +.gex-user-name { + font-weight: 500; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + min-width: 120px; + max-width: 220px; +} +.gex-user-upn { + font-size: 11.5px; + color: var(--muted); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.gex-loading { + display: flex; + align-items: center; + gap: 10px; + padding: 20px 16px; + font-size: 13px; + color: var(--muted); +} + +.gex-hint, .gex-empty, .gex-error { + padding: 16px; + font-size: 13px; + color: var(--muted); + text-align: center; +} +.gex-error { color: var(--error); } + +.gex-add-results { + max-height: 180px; + flex-shrink: 0; +} + +.gex-user-result-item { + display: flex; + align-items: baseline; + gap: 8px; + padding: 7px 12px; + border-bottom: 1px solid var(--hairline-soft); + cursor: pointer; + transition: background var(--tx); + font-size: 13px; +} +.gex-user-result-item:last-child { border-bottom: none; } +.gex-user-result-item:hover { background: var(--surface-soft); } +.gex-user-result-item.selected { + opacity: 0.45; + cursor: default; +} +.gex-user-added { + margin-left: auto; + font-size: 11px; + color: var(--success); + font-weight: 600; +} + +.gex-selected-area { + flex: 1; + overflow-y: auto; + border: 1px solid var(--hairline); + border-radius: var(--r-md); + min-height: 60px; +} + +.gex-selected-chip { + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px 6px 12px; + border-bottom: 1px solid var(--hairline-soft); + font-size: 13px; +} +.gex-selected-chip:last-child { border-bottom: none; } + +.gex-selected-chip-name { + font-weight: 500; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + min-width: 100px; + max-width: 200px; +} +.gex-selected-chip-upn { + flex: 1; + font-size: 11.5px; + color: var(--muted); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.gex-selected-chip-remove { + background: none; + border: none; + cursor: pointer; + color: var(--muted); + font-size: 17px; + line-height: 1; + padding: 0 3px; + flex-shrink: 0; + transition: color var(--tx); +} +.gex-selected-chip-remove:hover { color: var(--error); } + +/* Kompakte Optik fuer beide Themes — passt besser zum Tool */ +.flatpickr-calendar { + font-family: inherit; + font-size: 12.5px; +} +.flatpickr-day { + font-size: 12px; +} + +/* ============================================================= + READ-ONLY MODUS + Alle Schreib-Buttons/-Elemente ausblenden wenn body.read-only + ============================================================= */ + +/* Read-Only Indikator in der Topbar */ +body.read-only #connStatus::after { + content: 'Read Only'; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.04em; + color: var(--warning); + background: var(--warning-soft); + border-radius: var(--r-pill); + padding: 1px 6px; + margin-left: 5px; +} + +/* Schreib-Buttons ausblenden */ +body.read-only .type-create, +body.read-only .type-remove, +body.read-only .col-create, +body.read-only .col-remove-req, +body.read-only .col-remove-avail, +body.read-only .app-delete-btn, +body.read-only .app-rename-btn, +body.read-only .asg-del, +body.read-only [data-update-content], +body.read-only #btnApply, +body.read-only .gex-add-pane, +body.read-only .gex-tab[data-tab="add"], +body.read-only .gex-tab[data-tab="import"], +body.read-only #gexPaneImport { + display: none !important; +} + +/* Grid anpassen wenn Schreib-Spalten weg sind */ +body.read-only .app-row { + grid-template-columns: + 22px + minmax(200px, 1fr) + 24px + 58px + 92px + 98px + 98px + 26px; /* nur delete-spalte bleibt als spacing, ebenfalls versteckt */ +} + +/* ============================================================= + APP REPORT VIEW + ============================================================= */ + +.app-report-view { + display: flex; + flex-direction: column; + gap: 12px; + padding: 16px 20px; + height: calc(100vh - var(--topbar-h, 52px) - 32px); + box-sizing: border-box; +} + +.app-report-toolbar { + display: flex; + align-items: center; + gap: 10px; + flex-shrink: 0; +} + +.app-report-toolbar input[type="search"] { + flex: 1; + max-width: 320px; + padding: 5px 10px; + border: 1px solid var(--border); + border-radius: 4px; + background: var(--bg-input, var(--bg2)); + color: var(--text); + font-size: 13px; +} + +.app-report-table-wrap { + flex: 1; + overflow: auto; + border: 1px solid var(--border); + border-radius: 6px; +} + +.app-report-table { + width: 100%; + border-collapse: collapse; + font-size: 13px; +} + +.app-report-table thead { + position: sticky; + top: 0; + z-index: 2; + background: var(--bg2); +} + +.app-report-table th { + padding: 8px 10px; + text-align: left; + font-weight: 600; + font-size: 12px; + color: var(--text-dim, #888); + border-bottom: 1px solid var(--border); + white-space: nowrap; + user-select: none; +} + +.app-report-table th.sortable { + cursor: pointer; +} + +.app-report-table th.sortable:hover { + color: var(--text); + background: var(--bg3, var(--hover)); +} + +.sort-ico { + font-size: 10px; + opacity: 0.8; +} + +.app-report-table td { + padding: 6px 10px; + border-bottom: 1px solid var(--border); + vertical-align: middle; +} + +.app-report-table tbody tr:last-child td { border-bottom: none; } + +.app-report-table tbody tr:hover { background: var(--hover, rgba(255,255,255,0.03)); } + +.app-report-table td.report-name { + max-width: 280px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 500; +} + +.app-report-table td.report-pub { + max-width: 180px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--text-dim, #999); + font-size: 12px; +} + +.app-report-table td.num { + text-align: right; + font-variant-numeric: tabular-nums; + min-width: 60px; +} + +.report-ok { color: #4ade80; } +.report-pending { color: #facc15; } +.report-fail { color: var(--error, #f87171); font-weight: 600; } + +.report-hint { + text-align: center; + padding: 24px; + color: var(--text-dim, #888); + font-size: 13px; +} + +/* Per-App Gerätestatus-Export */ +.report-th-export { + width: 130px; + min-width: 130px; + font-size: 11px; + color: var(--text-dim, #888); + text-align: center; +} + +.report-export-cell { + text-align: center; + padding: 3px 8px; +} + +.btn-report-device-export { + display: inline-flex; + align-items: center; + gap: 5px; + background: var(--bg2); + border: 1px solid var(--accent, #60a5fa); + border-radius: 5px; + color: var(--accent, #60a5fa); + cursor: pointer; + font-size: 12px; + font-weight: 500; + padding: 4px 10px; + white-space: nowrap; + transition: background 0.15s, color 0.15s; +} + +.btn-report-device-export::before { + content: '⬇'; + font-size: 11px; +} + +.btn-report-device-export:hover:not(:disabled) { + background: var(--accent, #60a5fa); + color: #fff; +} + +.btn-report-device-export:disabled { + opacity: 0.35; + cursor: default; + border-color: var(--border); + color: var(--text-dim, #888); +} + +/* ============================================================= + CSV-IMPORT + ============================================================= */ + +.csv-import-input-row { + display: flex; + gap: 8px; + align-items: flex-start; +} + +.csv-import-textarea { + flex: 1; + height: 130px; + resize: vertical; + padding: 8px 10px; + border: 1px solid var(--border); + border-radius: 5px; + background: var(--bg2); + color: var(--text); + font-size: 12px; + font-family: 'Consolas', 'Menlo', monospace; + line-height: 1.5; +} + +.csv-import-textarea:focus { + outline: none; + border-color: var(--accent, #60a5fa); +} + +.csv-upload-label { + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 8px 12px; + border: 1px dashed var(--border); + border-radius: 5px; + cursor: pointer; + font-size: 11px; + color: var(--text-dim, #888); + white-space: nowrap; + transition: border-color 0.15s, color 0.15s; +} + +.csv-upload-label:hover { + border-color: var(--accent, #60a5fa); + color: var(--accent, #60a5fa); +} + +.csv-import-actions { + display: flex; + align-items: center; + gap: 10px; + margin-top: 8px; +} + +.csv-preview-wrap { margin-top: 4px; } + +.csv-preview-table-wrap { + max-height: 220px; + overflow-y: auto; + border: 1px solid var(--border); + border-radius: 5px; + margin-top: 6px; +} + +.csv-preview-table { + width: 100%; + border-collapse: collapse; + font-size: 12px; +} + +.csv-preview-table thead { + position: sticky; + top: 0; + background: var(--bg2); +} + +.csv-preview-table th { + padding: 5px 8px; + text-align: left; + font-weight: 600; + font-size: 11px; + color: var(--text-dim, #888); + border-bottom: 1px solid var(--border); +} + +.csv-preview-table td { + padding: 4px 8px; + border-bottom: 1px solid var(--border); + vertical-align: middle; +} + +.csv-preview-table tbody tr:last-child td { border-bottom: none; } + +.csv-ico-ok { color: var(--success, #4ade80); font-weight: 700; width: 20px; text-align: center; } +.csv-ico-err { color: var(--error, #f87171); font-weight: 700; width: 20px; text-align: center; } +.csv-ico-done { color: #34d399; font-weight: 700; width: 20px; text-align: center; } +.csv-ico-warn { color: #facc15; font-weight: 700; width: 20px; text-align: center; } + +.csv-row-err { opacity: 0.6; } + +.csv-upn { font-family: 'Consolas','Menlo',monospace; font-size: 11px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.csv-name { font-weight: 500; } +.csv-status { color: var(--text-dim, #999); font-size: 11px; } + +/* CSV-Import Ergebnis-Banner */ +.csv-result-banner { + margin-top: 10px; + padding: 10px 12px; + border-radius: 6px; + background: var(--bg2); + border: 1px solid var(--border); +} + +.csv-result-stats { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.csv-res-chip { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 20px; + font-size: 12px; + font-weight: 600; +} + +.csv-res-ok { background: rgba(74,222,128,.15); color: #4ade80; border: 1px solid rgba(74,222,128,.4); } +.csv-res-warn { background: rgba(250,204, 21,.12); color: #facc15; border: 1px solid rgba(250,204,21,.35); } +.csv-res-err { background: rgba(248,113,113,.15); color: #f87171; border: 1px solid rgba(248,113,113,.4); } +.csv-res-dim { background: var(--bg3,rgba(255,255,255,.05)); color: var(--text-dim,#888); border: 1px solid var(--border); } + +.csv-row-done { background: rgba(74,222,128,.05); } +.csv-row-warn { background: rgba(250,204,21,.06); opacity: 0.85; } diff --git a/www/vendor/flatpickr.min.css b/www/vendor/flatpickr.min.css new file mode 100644 index 0000000..a10acc6 --- /dev/null +++ b/www/vendor/flatpickr.min.css @@ -0,0 +1,13 @@ +.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* + /*rtl:begin:ignore*/left:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* + /*rtl:begin:ignore*/right:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} \ No newline at end of file diff --git a/www/vendor/flatpickr.min.js b/www/vendor/flatpickr.min.js new file mode 100644 index 0000000..b0f59ec --- /dev/null +++ b/www/vendor/flatpickr.min.js @@ -0,0 +1,2 @@ +/* flatpickr v4.6.13,, @license MIT */ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).flatpickr=n()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n){var t;return function(){var a=this,i=arguments;clearTimeout(t),t=setTimeout((function(){return e.apply(a,i)}),n)}}var c=function(e){return e instanceof Array?e:[e]};function s(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function d(e,n,t){var a=window.document.createElement(e);return n=n||"",t=t||"",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split("").map((function(n,a,o){return w[n]&&"\\"!==o[a-1]?w[n](e,i,t):"\\"!==n?n:""})).join(""):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,s=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var d=n||(t||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(t&&t.parseDate)l=t.parseDate(e,d);else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else{for(var f=void 0,m=[],g=0,p=0,h="";g=0?new Date:new Date(w.config.minDate.getTime()),t=E(w.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),w.selectedDates=[n],w.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=g(e),a=t;void 0!==w.amPM&&t===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),d=e.delta||(n?38===e.which?1:-1:0),u=s+c*d;if(void 0!==a.value&&2===a.value.length){var f=a===w.hourElement,m=a===w.minuteElement;ul&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&L(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+s===23:Math.abs(u-s)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var a=w._input.value;O(),ye(),w._input.value!==a&&w._debouncedChange()}function O(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0),l=void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0);if(void 0!==w.config.maxTime&&void 0!==w.config.minTime&&w.config.minTime>w.config.maxTime){var c=y(w.config.minTime.getHours(),w.config.minTime.getMinutes(),w.config.minTime.getSeconds()),s=y(w.config.maxTime.getHours(),w.config.maxTime.getMinutes(),w.config.maxTime.getSeconds()),d=y(t,a,i);if(d>s&&d=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function N(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&ee(t)}function P(e,n,t,a){return n instanceof Array?n.forEach((function(n){return P(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return P(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({remove:function(){return e.removeEventListener(n,t,a)}}))}function Y(){De("onChange")}function j(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0)}(n)&&!be(n)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&w.weekNumbers.insertAdjacentHTML("beforeend",""+w.config.getWeek(n)+""),De("onDayCreate",o),o}function W(e){e.focus(),"range"===w.config.mode&&oe(e)}function B(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&ne(c.dateObj))return c}}function J(e,n){var t=k(),a=te(t||document.body),i=void 0!==e?e:a?t:void 0!==w.selectedDateElem&&te(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&te(w.todayDateElem)?w.todayDateElem:B(n>0?1:-1);void 0===i?w._input.focus():a?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,s=l;s>=0&&s0?c:-1);s+=i){var d=r.children[s];if(-1===d.className.indexOf("hidden")&&ne(d.dateObj)&&Math.abs(e.$i-s)>=Math.abs(n))return W(d)}w.changeMonth(i),J(B(i),0)}(i,n):W(i)}function K(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-t,u=0;s<=a;s++,u++)o.appendChild(R("flatpickr-day "+l,new Date(e,n-1,s),0,u));for(s=1;s<=i;s++,u++)o.appendChild(R("flatpickr-day",new Date(e,n,s),0,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(R("flatpickr-day "+c,new Date(e,n+1,f%i),0,u));var m=d("div","dayContainer");return m.appendChild(o),m}function U(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=d("option","flatpickr-monthDropdown-month");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function $(){var e,n=d("div","flatpickr-month"),t=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=d("span","cur-month"):(w.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),P(w.monthsDropdownContainer,"change",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),De("onMonthChange")})),q(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function V(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=$();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function z(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=d("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var n=d("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(n)}return G(),w.weekdayContainer}function G(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function Z(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,De("onYearChange"),q()),U(),De("onMonthChange"),Ce())}function Q(e){return w.calendarContainer.contains(e)}function X(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=Q(n),a=!(n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)))&&!t&&!Q(e.relatedTarget),i=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));a&&i&&(w.config.allowInput&&w.setDate(w._input.value,!1,w.config.altInput?w.config.altFormat:w.config.dateFormat),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&_(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&w.clear(!1))}}function ee(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),De("onYearChange"),q())}}function ne(e,n){var t;void 0===n&&(n=!0);var a=w.parseDate(e,void 0,n);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(t=w.config.enable)&&void 0!==t?t:w.config.disable,r=0,l=void 0;r=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function te(e){return void 0!==w.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e))}function ae(e){var n=e.target===w._input,t=w._input.value.trimEnd()!==Me();!n||!t||e.relatedTarget&&Q(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ie(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),w.close(),n.blur();w.open()}else if(Q(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),_(),fe()):me(e);break;case 27:e.preventDefault(),fe();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else{e.preventDefault();var l=k();if(void 0!==w.daysContainer&&(!1===a||l&&te(l))){var c=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),Z(c),J(B(1),0)):J(void 0,c)}}break;case 38:case 40:e.preventDefault();var s=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),ee(w.currentYear-s),J(B(1),0)):r||J(void 0,7*s):n===w.currentYearElement?ee(w.currentYear-s):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),_(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),u=d.indexOf(n);if(-1!==u){var f=d[u+(e.shiftKey?-1:1)];e.preventDefault(),(f||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],O(),ye();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],O(),ye()}(t||Q(n))&&De("onKeyDown",e)}function oe(e,n){if(void 0===n&&(n="flatpickr-day"),1===w.selectedDates.length&&(!e||e.classList.contains(n)&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),a=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),i=Math.min(t,w.selectedDates[0].getTime()),o=Math.max(t,w.selectedDates[0].getTime()),r=!1,l=0,c=0,s=i;si&&sl)?l=s:s>a&&(!c||s ."+n)).forEach((function(n){var i,o,s,d=n.dateObj.getTime(),u=l>0&&d0&&d>c;if(u)return n.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){n.classList.remove(e)}));r&&!u||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){n.classList.remove(e)})),void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),at&&d===a&&n.classList.add("endRange"),d>=l&&(0===c||d<=c)&&(o=a,s=t,(i=d)>Math.min(o,s)&&i0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return ne(e)})),w.selectedDates.length||"min"!==e||F(t),ye()),w.daysContainer&&(ue(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function ce(){return w.config.wrap?p.querySelector("[data-input]"):p}function se(){"object"!=typeof w.config.locale&&void 0===I.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},I.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?I.l10ns[w.config.locale]:void 0),D.D="("+w.l10n.weekdays.shorthand.join("|")+")",D.l="("+w.l10n.weekdays.longhand.join("|")+")",D.M="("+w.l10n.months.shorthand.join("|")+")",D.F="("+w.l10n.months.longhand.join("|")+")",D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===I.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function de(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){De("onPreCalendarPosition");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,d="above"===o||"below"!==o&&ct,u=window.pageYOffset+l.top+(d?-t-2:n.offsetHeight+2);if(s(w.calendarContainer,"arrowTop",!d),s(w.calendarContainer,"arrowBottom",d),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),s(w.calendarContainer,"arrowLeft",!m&&!g),s(w.calendarContainer,"arrowCenter",m),s(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(s(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=t,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=be(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(O(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(De("onYearChange"),q()),De("onMonthChange")}if(Ce(),U(),ye(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():W(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&fe()}Y()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=P,w._setHoursFromDate=F,w._positionCalendar=de,w.changeMonth=Z,w.changeYear=ee,w.clear=function(e,n){void 0===e&&(e=!0);void 0===n&&(n=!0);w.input.value="",void 0!==w.altInput&&(w.altInput.value="");void 0!==w.mobileInput&&(w.mobileInput.value="");w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth());if(!0===w.config.enableTime){var t=E(w.config),a=t.hours,i=t.minutes,o=t.seconds;A(a,i,o)}w.redraw(),e&&De("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active"));De("onClose")},w.onMouseOver=oe,w._createElement=d,w.createDay=R,w.destroy=function(){void 0!==w.config&&De("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var n=w.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput);w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=ne,w.jumpToDate=j,w.updateValue=ye,w.open=function(e,n){void 0===n&&(n=w._positionElement);if(!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void De("onOpen")}if(w._input.disabled||w.config.inline)return;var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),De("onOpen"),de(n));!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))},w.redraw=ue,w.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==ge[a]&&ge[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==ge[e]?ge[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),ye(!0)},w.setDate=function(e,n,t){void 0===n&&(n=!1);void 0===t&&(t=w.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);pe(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),j(void 0,n),F(),0===w.selectedDates.length&&w.clear(!1);ye(n),n&&De("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var ge={locale:[se,G],showMonths:[V,S,z],minDate:[j],maxDate:[j],positionElement:[ve],clickOpens:[function(){!0===w.config.clickOpens?(P(w._input,"focus",w.open),P(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function pe(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||"number"==typeof e)t=[w.parseDate(e,n)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":t=[w.parseDate(e,n)];break;case"multiple":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case"range":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&ne(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function he(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ve(){w._positionElement=w.config.positionElement||w._input}function De(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||"static"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function Me(e){var n=e||(w.config.altInput?w.config.altFormat:w.config.dateFormat);return w.selectedDates.map((function(e){return w.formatDate(e,n)})).filter((function(e,n,t){return"range"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function ye(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=Me(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=Me(w.config.altFormat)),!1!==e&&De("onValueUpdate")}function xe(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?Z(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):n.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=he(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=he(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=I.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var s=I.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):s+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:le("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:le("max")});var d=function(e){return function(n){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(n,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:d("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:d("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0);Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(T).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=ce().className+" "+w.config.altInputClass);De("onParseConfig")}(),se(),function(){if(w.input=ce(),!w.input)return void w.config.errorHandler(new Error("Invalid input element specified"));w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=d(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling));w.config.allowInput||w._input.setAttribute("readonly","readonly");ve()}(),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&pe(e,w.config.dateFormat);w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]);void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i"));void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i"));w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=d("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=d("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=d("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=d("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,V(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(s(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(s(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],Ce(),w.monthNav)),w.innerContainer=d("div","flatpickr-innerContainer"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",w.l10n.weekAbbreviation));var n=d("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=d("div","flatpickr-rContainer"),w.rContainer.appendChild(z()),w.daysContainer||(w.daysContainer=d("div","flatpickr-days"),w.daysContainer.tabIndex=-1),U(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=E(w.config);w.timeContainer=d("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var n=d("span","flatpickr-time-separator",":"),t=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=t.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(t),w.timeContainer.appendChild(n),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr");if(w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}w.config.time_24hr||(w.amPM=d("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM));return w.timeContainer}());s(w.calendarContainer,"rangeMode","range"===w.config.mode),s(w.calendarContainer,"animate",!0===w.config.animate),s(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=d("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(n){return P(n,"click",w[e])}))}));if(w.isMobile)return void function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=d("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr));w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d"));w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d"));w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step")));w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}P(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),De("onChange"),De("onClose")}))}();var e=l(re,50);w._debouncedChange=l(Y,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&P(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&oe(g(e))}));P(w._input,"keydown",ie),void 0!==w.calendarContainer&&P(w.calendarContainer,"keydown",ie);w.config.inline||w.config.static||P(window,"resize",e);void 0!==window.ontouchstart?P(window.document,"touchstart",X):P(window.document,"mousedown",X);P(window.document,"focus",X,{capture:!0}),!0===w.config.clickOpens&&(P(w._input,"focus",w.open),P(w._input,"click",w.open));void 0!==w.daysContainer&&(P(w.monthNav,"click",xe),P(w.monthNav,["keyup","increment"],N),P(w.daysContainer,"click",me));if(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};P(w.timeContainer,["increment"],_),P(w.timeContainer,"blur",_,{capture:!0}),P(w.timeContainer,"click",H),P([w.hourElement,w.minuteElement],["focus","click"],n),void 0!==w.secondElement&&P(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&P(w.amPM,"click",(function(e){_(e)}))}w.config.allowInput&&P(w._input,"blur",ae)}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&F(w.config.noCalendar?w.latestSelectedDateObj:void 0),ye(!1)),S();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&de(),De("onReady")}(),w}function T(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i{for(var t in e)H(l,t,{get:e[t],enumerable:!0})},Re=(l,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Te(e))!we.call(l,s)&&s!==t&&H(l,s,{get:()=>e[s],enumerable:!(n=be(e,s))||n.enumerable});return l};var Se=l=>Re(H({},"__esModule",{value:!0}),l);var kt={};ye(kt,{Hooks:()=>L,Lexer:()=>x,Marked:()=>E,Parser:()=>b,Renderer:()=>$,TextRenderer:()=>_,Tokenizer:()=>S,defaults:()=>w,getDefaults:()=>z,lexer:()=>ht,marked:()=>k,options:()=>it,parse:()=>pt,parseInline:()=>ct,parser:()=>ut,setOptions:()=>ot,use:()=>lt,walkTokens:()=>at});module.exports=Se(kt);function z(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var w=z();function N(l){w=l}var I={exec:()=>null};function h(l,e=""){let t=typeof l=="string"?l:l.source,n={replace:(s,i)=>{let r=typeof i=="string"?i:i.source;return r=r.replace(m.caret,"$1"),t=t.replace(s,r),n},getRegex:()=>new RegExp(t,e)};return n}var m={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,"i")},$e=/^(?:[ \t]*(?:\n|$))+/,_e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Le=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,O=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ze=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,F=/(?:[*+-]|\d{1,9}[.)])/,ie=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,oe=h(ie).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Me=h(ie).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Q=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Pe=/^[^\n]+/,U=/(?!\s*\])(?:\\.|[^\[\]\\])+/,Ae=h(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",U).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Ee=h(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,F).getRegex(),v="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",K=/|$))/,Ce=h("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",K).replace("tag",v).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),le=h(Q).replace("hr",O).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex(),Ie=h(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",le).getRegex(),X={blockquote:Ie,code:_e,def:Ae,fences:Le,heading:ze,hr:O,html:Ce,lheading:oe,list:Ee,newline:$e,paragraph:le,table:I,text:Pe},re=h("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",O).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex(),Oe={...X,lheading:Me,table:re,paragraph:h(Q).replace("hr",O).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",re).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex()},Be={...X,html:h(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",K).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:I,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:h(Q).replace("hr",O).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",oe).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},qe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,ve=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ae=/^( {2,}|\\)\n(?!\s*$)/,De=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,ue=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,je=h(ue,"u").replace(/punct/g,D).getRegex(),Fe=h(ue,"u").replace(/punct/g,pe).getRegex(),he="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Qe=h(he,"gu").replace(/notPunctSpace/g,ce).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ue=h(he,"gu").replace(/notPunctSpace/g,He).replace(/punctSpace/g,Ge).replace(/punct/g,pe).getRegex(),Ke=h("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ce).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Xe=h(/\\(punct)/,"gu").replace(/punct/g,D).getRegex(),We=h(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Je=h(K).replace("(?:-->|$)","-->").getRegex(),Ve=h("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",Je).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),q=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Ye=h(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",q).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ke=h(/^!?\[(label)\]\[(ref)\]/).replace("label",q).replace("ref",U).getRegex(),ge=h(/^!?\[(ref)\](?:\[\])?/).replace("ref",U).getRegex(),et=h("reflink|nolink(?!\\()","g").replace("reflink",ke).replace("nolink",ge).getRegex(),J={_backpedal:I,anyPunctuation:Xe,autolink:We,blockSkip:Ne,br:ae,code:ve,del:I,emStrongLDelim:je,emStrongRDelimAst:Qe,emStrongRDelimUnd:Ke,escape:qe,link:Ye,nolink:ge,punctuation:Ze,reflink:ke,reflinkSearch:et,tag:Ve,text:De,url:I},tt={...J,link:h(/^!?\[(label)\]\((.*?)\)/).replace("label",q).getRegex(),reflink:h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",q).getRegex()},j={...J,emStrongRDelimAst:Ue,emStrongLDelim:Fe,url:h(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},fe=l=>st[l];function R(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,fe)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,fe);return l}function V(l){try{l=encodeURI(l).replace(m.percentDecode,"%")}catch{return null}return l}function Y(l,e){let t=l.replace(m.findPipe,(i,r,o)=>{let a=!1,c=r;for(;--c>=0&&o[c]==="\\";)a=!a;return a?"|":" |"}),n=t.split(m.splitPipe),s=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function me(l,e,t,n,s){let i=e.href,r=e.title||null,o=l[1].replace(s.other.outputLinkReplace,"$1");n.state.inLink=!0;let a={type:l[0].charAt(0)==="!"?"image":"link",raw:t,href:i,title:r,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,a}function rt(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let s=n[1];return e.split(` +`).map(i=>{let r=i.match(t.other.beginningSpace);if(r===null)return i;let[o]=r;return o.length>=s.length?i.slice(s.length):i}).join(` +`)}var S=class{options;rules;lexer;constructor(e){this.options=e||w}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:A(n,` +`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=rt(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:s}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let s=A(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:A(t[0],` +`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=A(t[0],` +`).split(` +`),s="",i="",r=[];for(;n.length>0;){let o=!1,a=[],c;for(c=0;c1,i={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");let r=this.rules.other.listItemRegex(n),o=!1;for(;e;){let c=!1,p="",u="";if(!(t=r.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=t[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,Z=>" ".repeat(3*Z.length)),g=e.split(` +`,1)[0],T=!d.trim(),f=0;if(this.options.pedantic?(f=2,u=d.trimStart()):T?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,u=d.slice(f),f+=t[1].length),T&&this.rules.other.blankLine.test(g)&&(p+=g+` +`,e=e.substring(g.length+1),c=!0),!c){let Z=this.rules.other.nextBulletRegex(f),te=this.rules.other.hrRegex(f),ne=this.rules.other.fencesBeginRegex(f),se=this.rules.other.headingBeginRegex(f),xe=this.rules.other.htmlBeginRegex(f);for(;e;){let G=e.split(` +`,1)[0],C;if(g=G,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),C=g):C=g.replace(this.rules.other.tabCharGlobal," "),ne.test(g)||se.test(g)||xe.test(g)||Z.test(g)||te.test(g))break;if(C.search(this.rules.other.nonSpaceChar)>=f||!g.trim())u+=` +`+C.slice(f);else{if(T||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||ne.test(d)||se.test(d)||te.test(d))break;u+=` +`+g}!T&&!g.trim()&&(T=!0),p+=G+` +`,e=e.substring(G.length+1),d=C.slice(f)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(o=!0));let y=null,ee;this.options.gfm&&(y=this.rules.other.listIsTask.exec(u),y&&(ee=y[0]!=="[ ] ",u=u.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:p,task:!!y,checked:ee,loose:!1,text:u,tokens:[]}),i.raw+=p}let a=i.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let c=0;cd.type==="space"),u=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=u}if(i.loose)for(let c=0;c({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[c]})));return r}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=A(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=de(t[2],"()");if(r===-2)return;if(r>-1){let a=(t[0].indexOf("!")===0?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,a).trim(),t[3]=""}}let s=t[2],i="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(s);r&&(s=r[1],i=r[3])}else i=t[3]?t[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),me(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[s.toLowerCase()];if(!i){let r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return me(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s||s[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(s[1]||s[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let r=[...s[0]].length-1,o,a,c=r,p=0,u=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+r);(s=u.exec(t))!=null;){if(o=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!o)continue;if(a=[...o].length,s[3]||s[4]){c+=a;continue}else if((s[5]||s[6])&&r%3&&!((r+a)%3)){p+=a;continue}if(c-=a,c>0)continue;a=Math.min(a,a+c+p);let d=[...s[0]][0].length,g=e.slice(0,r+s.index+d+a);if(Math.min(r,a)%2){let f=g.slice(1,-1);return{type:"em",raw:g,text:f,tokens:this.lexer.inlineTokens(f)}}let T=g.slice(2,-2);return{type:"strong",raw:g,text:T,tokens:this.lexer.inlineTokens(T)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]==="@"?(n=t[1],s="mailto:"+n):(n=t[1],s=n),{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,s;if(t[2]==="@")n=t[0],s="mailto:"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);n=t[0],t[1]==="www."?s="http://"+t[0]:s=t[0]}return{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}};var x=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||w,this.options.tokenizer=this.options.tokenizer||new S,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:B.normal,inline:P.normal};this.options.pedantic?(t.block=B.pedantic,t.inline=P.pedantic):this.options.gfm&&(t.block=B.gfm,this.options.breaks?t.inline=P.breaks:t.inline=P.gfm),this.tokenizer.rules=t}static get rules(){return{block:B,inline:P}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let t=0;t(s=r.call({lexer:this},e,t))?(e=e.substring(s.raw.length),t.push(s),!0):!1))continue;if(s=this.tokenizer.space(e)){e=e.substring(s.raw.length);let r=t.at(-1);s.raw.length===1&&r!==void 0?r.raw+=` +`:t.push(s);continue}if(s=this.tokenizer.code(e)){e=e.substring(s.raw.length);let r=t.at(-1);r?.type==="paragraph"||r?.type==="text"?(r.raw+=` +`+s.raw,r.text+=` +`+s.text,this.inlineQueue.at(-1).src=r.text):t.push(s);continue}if(s=this.tokenizer.fences(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.heading(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.hr(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.blockquote(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.list(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.html(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.def(e)){e=e.substring(s.raw.length);let r=t.at(-1);r?.type==="paragraph"||r?.type==="text"?(r.raw+=` +`+s.raw,r.text+=` +`+s.raw,this.inlineQueue.at(-1).src=r.text):this.tokens.links[s.tag]||(this.tokens.links[s.tag]={href:s.href,title:s.title});continue}if(s=this.tokenizer.table(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.lheading(e)){e=e.substring(s.raw.length),t.push(s);continue}let i=e;if(this.options.extensions?.startBlock){let r=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(c=>{a=c.call({lexer:this},o),typeof a=="number"&&a>=0&&(r=Math.min(r,a))}),r<1/0&&r>=0&&(i=e.substring(0,r+1))}if(this.state.top&&(s=this.tokenizer.paragraph(i))){let r=t.at(-1);n&&r?.type==="paragraph"?(r.raw+=` +`+s.raw,r.text+=` +`+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(s),n=i.length!==e.length,e=e.substring(s.raw.length);continue}if(s=this.tokenizer.text(e)){e=e.substring(s.raw.length);let r=t.at(-1);r?.type==="text"?(r.raw+=` +`+s.raw,r.text+=` +`+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(s);continue}if(e){let r="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(r);break}else throw new Error(r)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,s=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,s.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(s=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,r="";for(;e;){i||(r=""),i=!1;let o;if(this.options.extensions?.inline?.some(c=>(o=c.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let c=t.at(-1);o.type==="text"&&c?.type==="text"?(c.raw+=o.raw,c.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,r)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let a=e;if(this.options.extensions?.startInline){let c=1/0,p=e.slice(1),u;this.options.extensions.startInline.forEach(d=>{u=d.call({lexer:this},p),typeof u=="number"&&u>=0&&(c=Math.min(c,u))}),c<1/0&&c>=0&&(a=e.substring(0,c+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(r=o.raw.slice(-1)),i=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=o.raw,c.text+=o.text):t.push(o);continue}if(e){let c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return t}};var $=class{options;parser;constructor(e){this.options=e||w}space(e){return""}code({text:e,lang:t,escaped:n}){let s=(t||"").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,"")+` +`;return s?'
    '+(n?i:R(i,!0))+`
    +`:"
    "+(n?i:R(i,!0))+`
    +`}blockquote({tokens:e}){return`
    +${this.parser.parse(e)}
    +`}html({text:e}){return e}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
    +`}list(e){let t=e.ordered,n=e.start,s="";for(let o=0;o +`+s+" +`}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+R(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • +`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    +`}table(e){let t="",n="";for(let i=0;i${s}`),` + +`+t+` +`+s+`
    +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${R(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let s=this.parser.parseInline(n),i=V(e);if(i===null)return s;e=i;let r='
    ",r}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let i=V(e);if(i===null)return R(n);e=i;let r=`${n}{let o=i[r].flat(1/0);n=n.concat(this.walkTokens(o,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let r=t.renderers[i.name];r?t.renderers[i.name]=function(...o){let a=i.renderer.apply(this,o);return a===!1&&(a=r.apply(this,o)),a}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=t[i.level];r?r.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),s.extensions=t),n.renderer){let i=this.defaults.renderer||new $(this.defaults);for(let r in n.renderer){if(!(r in i))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let o=r,a=n.renderer[o],c=i[o];i[o]=(...p)=>{let u=a.apply(i,p);return u===!1&&(u=c.apply(i,p)),u||""}}s.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new S(this.defaults);for(let r in n.tokenizer){if(!(r in i))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let o=r,a=n.tokenizer[o],c=i[o];i[o]=(...p)=>{let u=a.apply(i,p);return u===!1&&(u=c.apply(i,p)),u}}s.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new L;for(let r in n.hooks){if(!(r in i))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let o=r,a=n.hooks[o],c=i[o];L.passThroughHooks.has(r)?i[o]=p=>{if(this.defaults.async)return Promise.resolve(a.call(i,p)).then(d=>c.call(i,d));let u=a.call(i,p);return c.call(i,u)}:i[o]=(...p)=>{let u=a.apply(i,p);return u===!1&&(u=c.apply(i,p)),u}}s.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,r=n.walkTokens;s.walkTokens=function(o){let a=[];return a.push(r.call(this,o)),i&&(a=a.concat(i.call(this,o))),a}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,s)=>{let i={...s},r={...this.defaults,...i},o=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&i.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));r.hooks&&(r.hooks.options=r,r.hooks.block=e);let a=r.hooks?r.hooks.provideLexer():e?x.lex:x.lexInline,c=r.hooks?r.hooks.provideParser():e?b.parse:b.parseInline;if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(n):n).then(p=>a(p,r)).then(p=>r.hooks?r.hooks.processAllTokens(p):p).then(p=>r.walkTokens?Promise.all(this.walkTokens(p,r.walkTokens)).then(()=>p):p).then(p=>c(p,r)).then(p=>r.hooks?r.hooks.postprocess(p):p).catch(o);try{r.hooks&&(n=r.hooks.preprocess(n));let p=a(n,r);r.hooks&&(p=r.hooks.processAllTokens(p)),r.walkTokens&&this.walkTokens(p,r.walkTokens);let u=c(p,r);return r.hooks&&(u=r.hooks.postprocess(u)),u}catch(p){return o(p)}}}onError(e,t){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let s="

    An error occurred:

    "+R(n.message+"",!0)+"
    ";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}};var M=new E;function k(l,e){return M.parse(l,e)}k.options=k.setOptions=function(l){return M.setOptions(l),k.defaults=M.defaults,N(k.defaults),k};k.getDefaults=z;k.defaults=w;k.use=function(...l){return M.use(...l),k.defaults=M.defaults,N(k.defaults),k};k.walkTokens=function(l,e){return M.walkTokens(l,e)};k.parseInline=M.parseInline;k.Parser=b;k.parser=b.parse;k.Renderer=$;k.TextRenderer=_;k.Lexer=x;k.lexer=x.lex;k.Tokenizer=S;k.Hooks=L;k.parse=k;var it=k.options,ot=k.setOptions,lt=k.use,at=k.walkTokens,ct=k.parseInline,pt=k,ut=b.parse,ht=x.lex; + +if(__exports != exports)module.exports = exports;return module.exports}));