From 8baba7b51f3d89086ac13e6f85f4ba64a2c28485 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sat, 18 Jul 2026 23:50:32 +0200 Subject: [PATCH] Initial commit --- .env.example | 4 + .gitignore | 5 + Dockerfile | 33 + backend/package.json | 15 + backend/src/consoleLog.js | 63 + backend/src/crypto-helper.js | 36 + backend/src/db.js | 710 +++ backend/src/index.js | 362 ++ backend/src/middleware/auth.js | 16 + backend/src/mqtt.js | 620 +++ backend/src/publicAccessLog.js | 85 + backend/src/pushLog.js | 17 + backend/src/routes/admin.js | 604 +++ backend/src/routes/auth.js | 179 + backend/src/routes/calendar.js | 69 + backend/src/routes/dashboard.js | 330 ++ backend/src/routes/search.js | 260 + backend/src/routes/system.js | 40 + backend/src/tools/bestellungen/routes.js | 169 + .../src/tools/dateien/public-share-public.js | 103 + backend/src/tools/dateien/public-share.js | 88 + backend/src/tools/dateien/routes.js | 444 ++ backend/src/tools/dateien/upload-share.js | 173 + backend/src/tools/dateien/webdav.js | 169 + backend/src/tools/gebietseroberung/routes.js | 617 +++ backend/src/tools/kalkulator3d/routes.js | 191 + backend/src/tools/kanban/routes.js | 155 + backend/src/tools/koepi/routes.js | 954 ++++ backend/src/tools/linkliste/routes.js | 212 + backend/src/tools/media/routes.js | 1265 +++++ backend/src/tools/nachrichten/routes.js | 216 + backend/src/tools/paywallkiller/routes.js | 5 + backend/src/tools/qrcodes/routes.js | 41 + backend/src/tools/schocken/routes.js | 609 +++ backend/src/tools/snippets/routes.js | 142 + backend/src/tools/statistik/routes.js | 266 + backend/src/tools/whiteboard/routes.js | 257 + backend/upload-page.html | 238 + build.sh | 16 + docker-compose.yml | 17 + env.example | 12 + frontend/generate-icons.mjs | 106 + frontend/index.html | 21 + frontend/package.json | 19 + frontend/public/favicon.svg | 10 + frontend/public/icon-192.png | Bin 0 -> 2564 bytes frontend/public/icon-512.png | Bin 0 -> 9398 bytes frontend/public/icon.svg | 7 + frontend/public/koepi/aldi.png | Bin 0 -> 25875 bytes frontend/public/koepi/edeka.png | Bin 0 -> 24540 bytes frontend/public/koepi/hornbach.png | Bin 0 -> 26835 bytes frontend/public/koepi/kasten_033.png | Bin 0 -> 94332 bytes frontend/public/koepi/kasten_033_05.png | Bin 0 -> 130923 bytes frontend/public/koepi/kasten_033_055.png | Bin 0 -> 130923 bytes frontend/public/koepi/kasten_050.png | Bin 0 -> 100824 bytes frontend/public/koepi/kasten_11er.png | Bin 0 -> 114370 bytes frontend/public/koepi/kasten_lang.png | Bin 0 -> 114370 bytes frontend/public/koepi/kasten_steini.png | Bin 0 -> 106622 bytes frontend/public/koepi/kaufland.png | Bin 0 -> 17408 bytes frontend/public/koepi/koepi_platzhalter.png | Bin 0 -> 41713 bytes frontend/public/koepi/lidl.png | Bin 0 -> 22416 bytes frontend/public/koepi/netto.png | Bin 0 -> 26394 bytes .../public/koepi/netto_getraenkemarkt.png | Bin 0 -> 31832 bytes frontend/public/koepi/palette_050.png | Bin 0 -> 102391 bytes frontend/public/koepi/penny.png | Bin 0 -> 20026 bytes frontend/public/koepi/rewe.png | Bin 0 -> 21796 bytes frontend/public/koepi/traeger.png | Bin 0 -> 132497 bytes frontend/public/koepi/trinkgut.png | Bin 0 -> 21762 bytes frontend/public/manifest.json | 28 + frontend/public/sw.js | 55 + frontend/public/vite.config.js | 10 + frontend/src/App.jsx | 4396 +++++++++++++++++ frontend/src/calendar.jsx | 401 ++ frontend/src/confirm.jsx | 53 + frontend/src/crypto.js | 216 + frontend/src/icons.jsx | 219 + frontend/src/lib.js | 80 + frontend/src/main.jsx | 101 + frontend/src/toolRegistry.js | 178 + frontend/src/tools/bestellungen.jsx | 1000 ++++ frontend/src/tools/codeschnipsel.jsx | 701 +++ frontend/src/tools/dateien.jsx | 1068 ++++ frontend/src/tools/devtools.jsx | 3284 ++++++++++++ frontend/src/tools/gebietseroberung.jsx | 643 +++ frontend/src/tools/kalkulator3d.jsx | 844 ++++ frontend/src/tools/kanban.jsx | 513 ++ frontend/src/tools/koepi.jsx | 468 ++ frontend/src/tools/linkliste.jsx | 728 +++ frontend/src/tools/media.jsx | 1403 ++++++ frontend/src/tools/nachrichten.jsx | 650 +++ frontend/src/tools/paywallkiller.jsx | 191 + frontend/src/tools/schocken.jsx | 686 +++ frontend/src/tools/skizze.jsx | 492 ++ frontend/src/tools/statistik.jsx | 510 ++ frontend/src/tools/wettrechner.jsx | 132 + frontend/src/tools/whiteboard.jsx | 975 ++++ frontend/vite.config.js | 21 + version.txt | 1 + 98 files changed, 30017 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 backend/package.json create mode 100644 backend/src/consoleLog.js create mode 100644 backend/src/crypto-helper.js create mode 100644 backend/src/db.js create mode 100644 backend/src/index.js create mode 100644 backend/src/middleware/auth.js create mode 100644 backend/src/mqtt.js create mode 100644 backend/src/publicAccessLog.js create mode 100644 backend/src/pushLog.js create mode 100644 backend/src/routes/admin.js create mode 100644 backend/src/routes/auth.js create mode 100644 backend/src/routes/calendar.js create mode 100644 backend/src/routes/dashboard.js create mode 100644 backend/src/routes/search.js create mode 100644 backend/src/routes/system.js create mode 100644 backend/src/tools/bestellungen/routes.js create mode 100644 backend/src/tools/dateien/public-share-public.js create mode 100644 backend/src/tools/dateien/public-share.js create mode 100644 backend/src/tools/dateien/routes.js create mode 100644 backend/src/tools/dateien/upload-share.js create mode 100644 backend/src/tools/dateien/webdav.js create mode 100644 backend/src/tools/gebietseroberung/routes.js create mode 100644 backend/src/tools/kalkulator3d/routes.js create mode 100644 backend/src/tools/kanban/routes.js create mode 100644 backend/src/tools/koepi/routes.js create mode 100644 backend/src/tools/linkliste/routes.js create mode 100644 backend/src/tools/media/routes.js create mode 100644 backend/src/tools/nachrichten/routes.js create mode 100644 backend/src/tools/paywallkiller/routes.js create mode 100644 backend/src/tools/qrcodes/routes.js create mode 100644 backend/src/tools/schocken/routes.js create mode 100644 backend/src/tools/snippets/routes.js create mode 100644 backend/src/tools/statistik/routes.js create mode 100644 backend/src/tools/whiteboard/routes.js create mode 100644 backend/upload-page.html create mode 100644 build.sh create mode 100644 docker-compose.yml create mode 100644 env.example create mode 100644 frontend/generate-icons.mjs create mode 100644 frontend/index.html create mode 100644 frontend/package.json create mode 100644 frontend/public/favicon.svg create mode 100644 frontend/public/icon-192.png create mode 100644 frontend/public/icon-512.png create mode 100644 frontend/public/icon.svg create mode 100644 frontend/public/koepi/aldi.png create mode 100644 frontend/public/koepi/edeka.png create mode 100644 frontend/public/koepi/hornbach.png create mode 100644 frontend/public/koepi/kasten_033.png create mode 100644 frontend/public/koepi/kasten_033_05.png create mode 100644 frontend/public/koepi/kasten_033_055.png create mode 100644 frontend/public/koepi/kasten_050.png create mode 100644 frontend/public/koepi/kasten_11er.png create mode 100644 frontend/public/koepi/kasten_lang.png create mode 100644 frontend/public/koepi/kasten_steini.png create mode 100644 frontend/public/koepi/kaufland.png create mode 100644 frontend/public/koepi/koepi_platzhalter.png create mode 100644 frontend/public/koepi/lidl.png create mode 100644 frontend/public/koepi/netto.png create mode 100644 frontend/public/koepi/netto_getraenkemarkt.png create mode 100644 frontend/public/koepi/palette_050.png create mode 100644 frontend/public/koepi/penny.png create mode 100644 frontend/public/koepi/rewe.png create mode 100644 frontend/public/koepi/traeger.png create mode 100644 frontend/public/koepi/trinkgut.png create mode 100644 frontend/public/manifest.json create mode 100644 frontend/public/sw.js create mode 100644 frontend/public/vite.config.js create mode 100644 frontend/src/App.jsx create mode 100644 frontend/src/calendar.jsx create mode 100644 frontend/src/confirm.jsx create mode 100644 frontend/src/crypto.js create mode 100644 frontend/src/icons.jsx create mode 100644 frontend/src/lib.js create mode 100644 frontend/src/main.jsx create mode 100644 frontend/src/toolRegistry.js create mode 100644 frontend/src/tools/bestellungen.jsx create mode 100644 frontend/src/tools/codeschnipsel.jsx create mode 100644 frontend/src/tools/dateien.jsx create mode 100644 frontend/src/tools/devtools.jsx create mode 100644 frontend/src/tools/gebietseroberung.jsx create mode 100644 frontend/src/tools/kalkulator3d.jsx create mode 100644 frontend/src/tools/kanban.jsx create mode 100644 frontend/src/tools/koepi.jsx create mode 100644 frontend/src/tools/linkliste.jsx create mode 100644 frontend/src/tools/media.jsx create mode 100644 frontend/src/tools/nachrichten.jsx create mode 100644 frontend/src/tools/paywallkiller.jsx create mode 100644 frontend/src/tools/schocken.jsx create mode 100644 frontend/src/tools/skizze.jsx create mode 100644 frontend/src/tools/statistik.jsx create mode 100644 frontend/src/tools/wettrechner.jsx create mode 100644 frontend/src/tools/whiteboard.jsx create mode 100644 frontend/vite.config.js create mode 100644 version.txt diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ff346ca --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +# Kopiere diese Datei zu .env und passe die Werte an +# .env wird NICHT ins Git eingecheckt + +JWT_SECRET=ersetze-mich-mit-einem-langen-zufaelligen-string diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aaf8d24 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +.env +*.db +*.db-bak +dist/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6bb801d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +# ── Stage 1: React bauen ───────────────────────────────────────────────────── +FROM node:20-alpine AS builder +WORKDIR /build +COPY frontend/package.json ./ +RUN npm install +COPY frontend/ ./ +# version.txt VOR dem Build generieren – Unix-Timestamp (Sekunden) +# Dieser Wert wird von vite.config.js als __BUILD_TIME__ ins Bundle gebacken +# UND vom Backend als /api/build-time ausgeliefert → exakt derselbe Wert +RUN date -u +"%s" > ./version.txt +# Build-Version in sw.js einsetzen damit der Browser bei jedem Deploy einen neuen SW erkennt +RUN BUILD_V=$(cat ./version.txt) && sed -i "s/__BUILD_VERSION__/${BUILD_V}/g" ./public/sw.js +RUN npm run build + +# ── Stage 2: Express liefert API + React in einem Container ────────────────── +FROM node:20-alpine +# Puppeteer/Chromium für KöPi Web-Scraping +RUN apk add --no-cache tzdata python3 make g++ chromium nss freetype harfbuzz ca-certificates ttf-freefont +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser +# Zeitzone fest auf Europe/Berlin setzen, damit Server und Browser (DE) immer +# dieselbe lokale Zeit berechnen – inkl. automatischer Sommer-/Winterzeit-Umstellung +ENV TZ=Europe/Berlin +RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +WORKDIR /app +COPY backend/package.json ./ +RUN npm install --production +COPY backend/ ./ +# version.txt aus dem Build-Stage kopieren (selber Wert wie im JS-Bundle) +COPY --from=builder /build/version.txt ./version.txt +COPY --from=builder /build/dist ./public +EXPOSE 4000 +CMD ["node", "src/index.js"] diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..f7007f5 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,15 @@ +{ + "name": "dickendock-backend", + "version": "1.0.0", + "main": "src/index.js", + "dependencies": { + "bcryptjs": "^2.4.3", + "better-sqlite3": "^9.4.3", + "express": "^4.18.2", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", + "ws": "^8.17.1", + "puppeteer-core": "^22.0.0", + "mqtt": "^5.10.1" + } +} \ No newline at end of file diff --git a/backend/src/consoleLog.js b/backend/src/consoleLog.js new file mode 100644 index 0000000..9dc4a88 --- /dev/null +++ b/backend/src/consoleLog.js @@ -0,0 +1,63 @@ +const fs = require('fs'); + +// Persistenter Pfad (selbes Volume wie die DB), übersteht Container-Neustarts +const LOG_FILE = process.env.CONSOLE_LOG_FILE || '/data/app-console.log'; +const MAX_AGE_MS = 24 * 60 * 60 * 1000; + +const origLog = console.log.bind(console); +const origError = console.error.bind(console); +const origWarn = console.warn.bind(console); + +function stringifyArg(a) { + if (typeof a === 'string') return a; + if (a instanceof Error) return a.stack || a.message; + try { return JSON.stringify(a); } catch { return String(a); } +} + +function localTimestamp() { + const d = new Date(); + const pad = (n, len=2) => String(n).padStart(len, '0'); + return `${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(),3)}`; +} + +function appendLine(level, args) { + try { + const msg = args.map(stringifyArg).join(' '); + fs.appendFileSync(LOG_FILE, `[${localTimestamp()}] [${level}] ${msg}\n`); + } catch { + // Darf niemals die eigentliche Konsolen-Ausgabe verhindern + } +} + +// Entfernt Zeilen, die älter als MAX_AGE_MS sind. Zeilen ohne erkennbaren +// Zeitstempel (z.B. Fortsetzungszeilen eines mehrzeiligen Stacktraces) werden +// bewusst behalten, um nichts mittendrin abzuschneiden. +function pruneOldLines() { + try { + if (!fs.existsSync(LOG_FILE)) return; + const content = fs.readFileSync(LOG_FILE, 'utf8'); + const cutoff = Date.now() - MAX_AGE_MS; + const lines = content.split('\n').filter(line => { + const m = line.match(/^\[([^\]]+)\]/); + if (!m) return true; + const t = new Date(m[1].replace(' ', 'T')).getTime(); + return Number.isNaN(t) || t >= cutoff; + }); + fs.writeFileSync(LOG_FILE, lines.join('\n')); + } catch (e) { + origError('Konsolen-Log-Aufräumen fehlgeschlagen:', e.message); + } +} + +function installConsoleCapture() { + console.log = (...args) => { origLog(...args); appendLine('LOG', args); }; + console.error = (...args) => { origError(...args); appendLine('ERROR', args); }; + console.warn = (...args) => { origWarn(...args); appendLine('WARN', args); }; + + pruneOldLines(); // einmal direkt beim Start + setInterval(pruneOldLines, 60 * 60 * 1000); // danach stündlich +} + +function getLogFilePath() { return LOG_FILE; } + +module.exports = { installConsoleCapture, getLogFilePath, pruneOldLines }; diff --git a/backend/src/crypto-helper.js b/backend/src/crypto-helper.js new file mode 100644 index 0000000..b186569 --- /dev/null +++ b/backend/src/crypto-helper.js @@ -0,0 +1,36 @@ +// ── Verschlüsselungs-Helper für sensible gespeicherte Zugangsdaten ────────── +// Nutzt AES-256-GCM. Der Schlüssel wird aus JWT_SECRET abgeleitet (kein +// zusätzlicher Env-Var nötig) — ausreichend für den Zweck hier (Zugangsdaten +// liegen nicht mehr im Klartext in der SQLite-DB), ersetzt aber kein +// dediziertes Secret-Management für hochsensible Fälle. + +const crypto = require('crypto'); + +const KEY = crypto.createHash('sha256') + .update(process.env.JWT_SECRET || 'dickendock-fallback-key-bitte-JWT_SECRET-setzen') + .digest(); + +function encrypt(text) { + const iv = crypto.randomBytes(12); + const cipher = crypto.createCipheriv('aes-256-gcm', KEY, iv); + const enc = Buffer.concat([cipher.update(String(text), 'utf8'), cipher.final()]); + const tag = cipher.getAuthTag(); + return Buffer.concat([iv, tag, enc]).toString('base64'); +} + +function decrypt(b64) { + if (!b64) return null; + try { + const buf = Buffer.from(b64, 'base64'); + const iv = buf.subarray(0, 12); + const tag = buf.subarray(12, 28); + const enc = buf.subarray(28); + const decipher = crypto.createDecipheriv('aes-256-gcm', KEY, iv); + decipher.setAuthTag(tag); + return Buffer.concat([decipher.update(enc), decipher.final()]).toString('utf8'); + } catch { + return null; // falsches/verändertes Secret oder korrupte Daten + } +} + +module.exports = { encrypt, decrypt }; diff --git a/backend/src/db.js b/backend/src/db.js new file mode 100644 index 0000000..856b492 --- /dev/null +++ b/backend/src/db.js @@ -0,0 +1,710 @@ +const Database = require('better-sqlite3'); +const bcrypt = require('bcryptjs'); +const path = require('path'); + +const db = new Database(process.env.DB_PATH || '/data/dickendock.db'); +db.pragma('journal_mode = WAL'); +db.pragma('foreign_keys = ON'); + +db.exec(` + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + role TEXT NOT NULL DEFAULT 'user', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + + -- Dashboard-Widgets + CREATE TABLE IF NOT EXISTS quick_links ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + title TEXT NOT NULL, + url TEXT NOT NULL, + icon TEXT NOT NULL DEFAULT '🔗', + sort_order INTEGER DEFAULT 0 + ); + CREATE TABLE IF NOT EXISTS todos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + text TEXT NOT NULL, + done INTEGER NOT NULL DEFAULT 0, + sort_order INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS notes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL UNIQUE REFERENCES users(id) ON DELETE CASCADE, + content TEXT NOT NULL DEFAULT '', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + + -- Tool: 3D-Kalkulator + CREATE TABLE IF NOT EXISTS calendar_feeds ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name TEXT NOT NULL, + url TEXT NOT NULL, + color TEXT NOT NULL DEFAULT '#4ecdc4', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS folders ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name TEXT NOT NULL, + parent_id INTEGER REFERENCES folders(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS folder_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + folder_id INTEGER NOT NULL REFERENCES folders(id) ON DELETE CASCADE, + shared_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + shared_with INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(folder_id, shared_with) + ); + + CREATE TABLE IF NOT EXISTS files ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + filename TEXT NOT NULL, + originalname TEXT NOT NULL, + mimetype TEXT NOT NULL DEFAULT 'application/octet-stream', + size INTEGER NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS file_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + file_id INTEGER NOT NULL REFERENCES files(id) ON DELETE CASCADE, + shared_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + shared_with INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(file_id, shared_with) + ); + CREATE TABLE IF NOT EXISTS admin_settings ( + key TEXT PRIMARY KEY, + value TEXT NOT NULL + ); + + CREATE TABLE IF NOT EXISTS orders ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name TEXT NOT NULL, + bemerkung TEXT NOT NULL DEFAULT '', + status TEXT NOT NULL DEFAULT 'warteliste', + custom_price REAL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS order_items ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + order_id INTEGER NOT NULL REFERENCES orders(id) ON DELETE CASCADE, + calculation_id INTEGER REFERENCES calculations(id) ON DELETE SET NULL, + calc_name TEXT NOT NULL, + preis_freundschaft REAL NOT NULL, + preis_normal REAL NOT NULL, + preis_auftrag REAL NOT NULL, + stueckzahl INTEGER NOT NULL DEFAULT 1 + ); + + CREATE TABLE IF NOT EXISTS calculations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name TEXT NOT NULL, + gramm REAL NOT NULL, + stunden REAL NOT NULL, + farben INTEGER NOT NULL DEFAULT 1, + materialpreis_pro_gramm REAL NOT NULL DEFAULT 0.01, + stromverbrauch_kw REAL NOT NULL DEFAULT 0.15, + strompreis_pro_kwh REAL NOT NULL DEFAULT 0.38, + druckerpreis REAL NOT NULL DEFAULT 550, + gesamtdruckstunden REAL NOT NULL DEFAULT 5000, + verschleiss_pro_stunde REAL NOT NULL DEFAULT 0.06, + preis_freundschaft REAL NOT NULL, + preis_normal REAL NOT NULL, + preis_auftrag REAL NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); +`); + +// Standard-Admin beim ersten Start anlegen +// Default admin settings +const settingDefaults = [ + ['file_max_size_mb', '50'], + ['file_max_count', '20'], + ['file_allowed_ext', '.pdf,.jpg,.jpeg,.png,.gif,.zip,.txt,.docx,.xlsx,.mp4,.stl,.3mf'], +]; +for (const [key, value] of settingDefaults) { + if (!db.prepare('SELECT key FROM admin_settings WHERE key=?').get(key)) + db.prepare('INSERT INTO admin_settings (key,value) VALUES (?,?)').run(key, value); +} + +if (db.prepare('SELECT COUNT(*) c FROM users').get().c === 0) { + db.prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)') + .run('admin', bcrypt.hashSync('admin123', 12), 'admin'); + console.log('✅ Erster Start: Admin angelegt: admin / admin123 → Bitte Passwort sofort ändern!'); +} + +// ── Migrationen (werden bei jedem Start geprüft) ───────────────────────────── +const cols = db.prepare("PRAGMA table_info(calculations)").all().map(r => r.name); +if (!cols.includes('image')) db.exec("ALTER TABLE calculations ADD COLUMN image TEXT"); +if (!cols.includes('bemerkung')) db.exec("ALTER TABLE calculations ADD COLUMN bemerkung TEXT NOT NULL DEFAULT ''"); + +// Migrationen orders +const ordCols = db.prepare("PRAGMA table_info(orders)").all().map(r => r.name); +if (!ordCols.includes('bezahlt')) db.exec("ALTER TABLE orders ADD COLUMN bezahlt INTEGER NOT NULL DEFAULT 0"); +if (!ordCols.includes('bezahlt_am')) db.exec("ALTER TABLE orders ADD COLUMN bezahlt_am DATETIME"); +if (!ordCols.includes('abgeholt')) db.exec("ALTER TABLE orders ADD COLUMN abgeholt INTEGER NOT NULL DEFAULT 0"); +if (!ordCols.includes('abgeholt_am'))db.exec("ALTER TABLE orders ADD COLUMN abgeholt_am DATETIME"); + +// Migrationen order_items +// files migrations +const fileCols = db.prepare("PRAGMA table_info(files)").all().map(r => r.name); +if (!fileCols.includes('folder_id')) db.exec("ALTER TABLE files ADD COLUMN folder_id INTEGER REFERENCES folders(id) ON DELETE SET NULL"); + +// folder_shares migrations (only if table exists) +const fsTableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='folder_shares'").get(); +if (fsTableExists) { + const fsCols = db.prepare("PRAGMA table_info(folder_shares)").all().map(r => r.name); + if (!fsCols.includes('created_at')) db.exec("ALTER TABLE folder_shares ADD COLUMN created_at DATETIME DEFAULT NULL"); +} + +const oiCols = db.prepare("PRAGMA table_info(order_items)").all().map(r => r.name); +if (!oiCols.includes('stunden')) db.exec("ALTER TABLE order_items ADD COLUMN stunden REAL NOT NULL DEFAULT 0"); +if (!oiCols.includes('custom_price')) db.exec("ALTER TABLE order_items ADD COLUMN custom_price REAL"); +if (!oiCols.includes('status')) db.exec("ALTER TABLE order_items ADD COLUMN status TEXT NOT NULL DEFAULT 'warteliste'"); +if (!oiCols.includes('qty_warteliste')) db.exec("ALTER TABLE order_items ADD COLUMN qty_warteliste INTEGER NOT NULL DEFAULT 0"); +if (!oiCols.includes('qty_in_arbeit')) db.exec("ALTER TABLE order_items ADD COLUMN qty_in_arbeit INTEGER NOT NULL DEFAULT 0"); +if (!oiCols.includes('qty_fertig')) db.exec("ALTER TABLE order_items ADD COLUMN qty_fertig INTEGER NOT NULL DEFAULT 0"); +// Bestehende Einträge: alle Stücke auf Warteliste setzen falls noch keine Qtys gesetzt +db.exec("UPDATE order_items SET qty_warteliste=stueckzahl WHERE qty_warteliste=0 AND qty_in_arbeit=0 AND qty_fertig=0"); + +// Migration: file_shares – Passwort und Zugriffszeit +const fShareCols = db.prepare("PRAGMA table_info(file_shares)").all().map(r => r.name); +if (fShareCols.length && !fShareCols.includes('password_hash')) + db.exec("ALTER TABLE file_shares ADD COLUMN password_hash TEXT DEFAULT NULL"); +if (fShareCols.length && !fShareCols.includes('accessed_at')) + db.exec("ALTER TABLE file_shares ADD COLUMN accessed_at DATETIME DEFAULT NULL"); + +// ── Nachrichten-Migrationen ─────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='messages'").get()) { + db.exec(` + CREATE TABLE messages ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sender_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + recipient_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + encrypted_content TEXT NOT NULL, + iv TEXT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + read_by_recipient INTEGER NOT NULL DEFAULT 0 + ) + `); +} +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='user_keys'").get()) { + db.exec(` + CREATE TABLE user_keys ( + user_id INTEGER PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + public_key TEXT NOT NULL, + updated_at DATETIME DEFAULT NULL + ) + `); +} +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='pushover_settings'").get()) { + db.exec(` + CREATE TABLE pushover_settings ( + user_id INTEGER PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + user_key TEXT NOT NULL, + app_token TEXT NOT NULL + ) + `); +} +// Migration: Soft-Delete-Spalten entfernen (nur Nachrichten übernehmen die noch sichtbar waren) +const msgCols = db.prepare("PRAGMA table_info(messages)").all().map(r => r.name); +if (msgCols.includes('deleted_by_sender')) { + db.exec(` + CREATE TABLE messages_v2 ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sender_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + recipient_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + encrypted_content TEXT NOT NULL, + iv TEXT NOT NULL, + created_at DATETIME DEFAULT NULL, + read_by_recipient INTEGER NOT NULL DEFAULT 0 + ); + INSERT INTO messages_v2 (id, sender_id, recipient_id, encrypted_content, iv, created_at, read_by_recipient) + SELECT id, sender_id, recipient_id, encrypted_content, iv, created_at, + COALESCE(read_by_recipient, 0) + FROM messages + WHERE deleted_by_sender = 0 AND deleted_by_recipient = 0; + DROP TABLE messages; + ALTER TABLE messages_v2 RENAME TO messages; + `); + console.log('✅ Migration: messages → Hard-Delete (Soft-Delete-Spalten entfernt)'); +} +// Falls read_by_recipient noch fehlt (sehr alte Installation) +const msgCols2 = db.prepare("PRAGMA table_info(messages)").all().map(r => r.name); +if (msgCols2.length && !msgCols2.includes('read_by_recipient')) { + db.exec("ALTER TABLE messages ADD COLUMN read_by_recipient INTEGER NOT NULL DEFAULT 0"); +} + +// User-Preferences (JSON-Blob) +const userCols2 = db.prepare("PRAGMA table_info(users)").all().map(r => r.name); +if (!userCols2.includes('preferences')) + db.exec("ALTER TABLE users ADD COLUMN preferences TEXT DEFAULT NULL"); +if (!userCols2.includes('last_active_at')) + db.exec("ALTER TABLE users ADD COLUMN last_active_at DATETIME DEFAULT NULL"); +if (!userCols2.includes('hidden')) + db.exec("ALTER TABLE users ADD COLUMN hidden INTEGER NOT NULL DEFAULT 0"); +if (!userCols2.includes('chat_active_at')) + db.exec("ALTER TABLE users ADD COLUMN chat_active_at DATETIME DEFAULT NULL"); +if (!userCols2.includes('hidden_tools')) + db.exec("ALTER TABLE users ADD COLUMN hidden_tools TEXT NOT NULL DEFAULT '[]'"); + +// ── Login-Sicherheit ────────────────────────────────────────────────────────── +// Spalten für Account-Lockout in users-Tabelle +const userCols = db.prepare("PRAGMA table_info(users)").all().map(r => r.name); +if (!userCols.includes('failed_attempts')) + db.exec("ALTER TABLE users ADD COLUMN failed_attempts INTEGER NOT NULL DEFAULT 0"); +if (!userCols.includes('locked_until')) + db.exec("ALTER TABLE users ADD COLUMN locked_until DATETIME DEFAULT NULL"); +if (!userCols.includes('last_failed_at')) + db.exec("ALTER TABLE users ADD COLUMN last_failed_at DATETIME DEFAULT NULL"); + +// Login-Fehlversuche Log +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='login_attempts'").get()) { + db.exec(` + CREATE TABLE login_attempts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT NOT NULL, + ip TEXT, + success INTEGER NOT NULL DEFAULT 0, + created_at DATETIME DEFAULT NULL + ) + `); +} + +// Default-Einstellungen für Login-Schutz +const loginDefaults = [ + ['login_max_attempts', '5'], + ['login_lockout_minutes', '30'], +]; +for (const [k, v] of loginDefaults) { + if (!db.prepare('SELECT value FROM admin_settings WHERE key=?').get(k)) + db.prepare('INSERT INTO admin_settings (key, value) VALUES (?, ?)').run(k, v); +} + +// ── Ideen-Board ─────────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='board_items'").get()) { + db.exec(` + CREATE TABLE board_items ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + type TEXT NOT NULL CHECK(type IN ('roadmap','wish')), + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + title TEXT NOT NULL, + description TEXT NOT NULL DEFAULT '', + promoted_from_wish INTEGER NOT NULL DEFAULT 0, + created_at DATETIME DEFAULT NULL + ) + `); +} +// Migration: promoted_from_wish Spalte +const boardCols = db.prepare("PRAGMA table_info(board_items)").all().map(r => r.name); +if (boardCols.length && !boardCols.includes('promoted_from_wish')) + db.exec("ALTER TABLE board_items ADD COLUMN promoted_from_wish INTEGER NOT NULL DEFAULT 0"); +if (boardCols.length && !boardCols.includes('promoted_at')) + db.exec("ALTER TABLE board_items ADD COLUMN promoted_at DATETIME DEFAULT NULL"); +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='board_reads'").get()) { + db.exec(` + CREATE TABLE board_reads ( + user_id INTEGER PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + last_read DATETIME DEFAULT NULL + ) + `); +} + +// Migration: Pushover retry/expire +const poCols = db.prepare("PRAGMA table_info(pushover_settings)").all().map(r => r.name); +if (poCols.length && !poCols.includes('retry')) + db.exec("ALTER TABLE pushover_settings ADD COLUMN retry INTEGER DEFAULT NULL"); +if (poCols.length && !poCols.includes('expire')) + db.exec("ALTER TABLE pushover_settings ADD COLUMN expire INTEGER DEFAULT NULL"); + +// ── Changelog ───────────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='changelog'").get()) { + db.exec(` + CREATE TABLE changelog ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + version TEXT NOT NULL, + title TEXT NOT NULL, + body TEXT NOT NULL DEFAULT '', + build_time TEXT DEFAULT NULL, + created_at DATETIME DEFAULT NULL + ) + `); +} +// Migration: build_time Spalte +const clCols = db.prepare("PRAGMA table_info(changelog)").all().map(r => r.name); +if (clCols.length && !clCols.includes('build_time')) + db.exec("ALTER TABLE changelog ADD COLUMN build_time TEXT DEFAULT NULL"); + +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='changelog_reads'").get()) { + db.exec(` + CREATE TABLE changelog_reads ( + user_id INTEGER PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + last_read DATETIME DEFAULT NULL + ) + `); +} + +// ── Push-Zeitplaner ─────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='push_schedules'").get()) { + db.exec(` + CREATE TABLE push_schedules ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + message TEXT NOT NULL, + scheduled_at DATETIME NOT NULL, + sent INTEGER NOT NULL DEFAULT 0, + created_at DATETIME DEFAULT NULL + ) + `); +} + +// ── Link-Liste ──────────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='link_list'").get()) { + db.exec(` + CREATE TABLE link_list ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + title TEXT NOT NULL, + url TEXT NOT NULL, + icon TEXT NOT NULL DEFAULT '🔗', + description TEXT NOT NULL DEFAULT '', + created_at DATETIME DEFAULT NULL + ) + `); +} +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='link_list_shares'").get()) { + db.exec(` + CREATE TABLE link_list_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + link_id INTEGER NOT NULL REFERENCES link_list(id) ON DELETE CASCADE, + shared_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + shared_with INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT NULL, + UNIQUE(link_id, shared_with) + ) + `); +} + +// ── Kalkulator-Shares ───────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='calculation_shares'").get()) { + db.exec(` + CREATE TABLE calculation_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + calc_id INTEGER NOT NULL REFERENCES calculations(id) ON DELETE CASCADE, + shared_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + shared_with INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT NULL, + UNIQUE(calc_id, shared_with) + ) + `); +} + +// ── Code-Schnipsel ──────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='snippets'").get()) { + db.exec(` + CREATE TABLE snippets ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + title TEXT NOT NULL, + code TEXT NOT NULL DEFAULT '', + language TEXT NOT NULL DEFAULT 'text', + description TEXT NOT NULL DEFAULT '', + created_at DATETIME DEFAULT NULL, + updated_at DATETIME DEFAULT NULL + ); + CREATE TABLE snippet_tags ( + snippet_id INTEGER NOT NULL REFERENCES snippets(id) ON DELETE CASCADE, + tag TEXT NOT NULL, + PRIMARY KEY (snippet_id, tag) + ); + CREATE TABLE snippet_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + snippet_id INTEGER NOT NULL REFERENCES snippets(id) ON DELETE CASCADE, + code TEXT NOT NULL, + language TEXT NOT NULL DEFAULT 'text', + saved_at DATETIME DEFAULT NULL + ); + CREATE TABLE snippet_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + snippet_id INTEGER NOT NULL REFERENCES snippets(id) ON DELETE CASCADE, + shared_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + shared_with INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT NULL, + UNIQUE(snippet_id, shared_with) + ) + `); +} + +// ── Link-Liste Ordner + Erweiterungen ───────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='link_list_folders'").get()) { + db.exec(` + CREATE TABLE link_list_folders ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name TEXT NOT NULL, + icon TEXT NOT NULL DEFAULT '📁', + sort_order INTEGER DEFAULT 0, + in_quickaccess INTEGER DEFAULT 0, + created_at DATETIME DEFAULT NULL + ) + `); +} +// link_list Spalten nachrüsten +{ + const cols = db.pragma('table_info(link_list)').map(c => c.name); + if (!cols.includes('folder_id')) db.exec('ALTER TABLE link_list ADD COLUMN folder_id INTEGER DEFAULT NULL'); + if (!cols.includes('sort_order')) db.exec('ALTER TABLE link_list ADD COLUMN sort_order INTEGER DEFAULT 0'); + if (!cols.includes('in_quickaccess')) db.exec('ALTER TABLE link_list ADD COLUMN in_quickaccess INTEGER DEFAULT 0'); +} + + +// ── QR-Codes ────────────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='qr_codes'").get()) { + db.exec(` + CREATE TABLE qr_codes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + label TEXT NOT NULL DEFAULT '', + url TEXT NOT NULL, + size INTEGER NOT NULL DEFAULT 256, + fg_color TEXT NOT NULL DEFAULT '#000000', + bg_color TEXT NOT NULL DEFAULT '#ffffff', + margin INTEGER NOT NULL DEFAULT 4, + dot_style TEXT NOT NULL DEFAULT 'square', + corner_style TEXT NOT NULL DEFAULT 'square', + caption TEXT NOT NULL DEFAULT '', + caption_pos TEXT NOT NULL DEFAULT 'bottom', + caption_color TEXT NOT NULL DEFAULT '#000000', + caption_size INTEGER NOT NULL DEFAULT 14, + created_at DATETIME DEFAULT NULL + ) + `); +} + +// ── Link-Folder Shares ──────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='link_folder_shares'").get()) { + db.exec(` + CREATE TABLE link_folder_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + folder_id INTEGER NOT NULL REFERENCES link_list_folders(id) ON DELETE CASCADE, + shared_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + shared_with INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at DATETIME DEFAULT NULL, + UNIQUE(folder_id, shared_with) + ) + `); +} + +// ── Kalender-Event-Cache für Suche ──────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='calendar_event_cache'").get()) { + db.exec(` + CREATE TABLE calendar_event_cache ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + feed_id INTEGER NOT NULL REFERENCES calendar_feeds(id) ON DELETE CASCADE, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + summary TEXT NOT NULL DEFAULT '', + description TEXT NOT NULL DEFAULT '', + location TEXT NOT NULL DEFAULT '', + start_dt TEXT, + end_dt TEXT, + synced_at DATETIME DEFAULT NULL + ) + `); +} + +// short_url auf upload_shares +{ + const cols = db.pragma('table_info(upload_shares)').map(c => c.name); + if (!cols.includes('short_url')) + db.exec('ALTER TABLE upload_shares ADD COLUMN short_url TEXT DEFAULT NULL'); +} + + +// ── Movie-Favoriten ─────────────────────────────────────────────────────────── +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='movie_favorites'").get()) { + db.exec(` + CREATE TABLE movie_favorites ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + tmdb_id INTEGER NOT NULL, + title TEXT NOT NULL DEFAULT '', + poster_path TEXT NOT NULL DEFAULT '', + release_date_de TEXT NOT NULL DEFAULT '', + added_at DATETIME DEFAULT NULL, + UNIQUE(user_id, tmdb_id) + ) + `); +} + +// movie_favorites neue Spalten (Migration) +{ + const cols = db.pragma('table_info(movie_favorites)').map(c => c.name); + if (!cols.includes('release_date')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN release_date TEXT NOT NULL DEFAULT ''"); + if (!cols.includes('genres')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN genres TEXT NOT NULL DEFAULT '[]'"); + if (!cols.includes('fsk')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN fsk TEXT NOT NULL DEFAULT ''"); + if (!cols.includes('acknowledged')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN acknowledged INTEGER NOT NULL DEFAULT 0"); + if (!cols.includes('acknowledged_at')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN acknowledged_at DATETIME DEFAULT NULL"); + if (!cols.includes('user_notified')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN user_notified INTEGER NOT NULL DEFAULT 0"); + if (!cols.includes('media_type')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN media_type TEXT NOT NULL DEFAULT 'movie'"); + if (!cols.includes('admin_seen')) + db.exec("ALTER TABLE movie_favorites ADD COLUMN admin_seen INTEGER NOT NULL DEFAULT 0"); +} + +// xREL Badge Cache (persistent, überlebt Container-Restarts) +if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='xrel_cache'").get()) { + db.exec(` + CREATE TABLE xrel_cache ( + cache_key TEXT PRIMARY KEY, + value TEXT NOT NULL, + expires_at INTEGER NOT NULL + ) + `); +} + +// TMDb-Token Default +if (!db.prepare("SELECT value FROM admin_settings WHERE key='tmdb_token'").get()) + db.prepare("INSERT INTO admin_settings (key,value) VALUES ('tmdb_token','')").run(); + +// Öffentliche Datei/Ordner-Freigabe Links +// CREATE TABLE IF NOT EXISTS – sicher bei jedem Start +db.exec(` + CREATE TABLE IF NOT EXISTS public_file_shares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + token TEXT NOT NULL UNIQUE, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + file_id INTEGER REFERENCES files(id) ON DELETE CASCADE, + folder_id INTEGER REFERENCES folders(id) ON DELETE CASCADE, + label TEXT, + password_hash TEXT NOT NULL, + expires_at INTEGER NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + download_count INTEGER NOT NULL DEFAULT 0 + ) +`); + +// 3D-Druck Ausgaben (Haushaltsbuch) +db.exec(` + CREATE TABLE IF NOT EXISTS expenses ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + date TEXT NOT NULL, + category TEXT NOT NULL DEFAULT 'Sonstiges', + description TEXT NOT NULL, + amount REAL NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) +`); + +// MakerWorld: Empfangs-Token pro Nutzer für den Bookmarklet-Ansatz (kein +// Login/Cookie-Handling mehr nötig — der Nutzer schickt seine eigenen, schon +// im Browser geladenen Daten per Klick auf ein Lesezeichen an DickenDock) +db.exec(` + CREATE TABLE IF NOT EXISTS makerworld_ingest_tokens ( + user_id INTEGER PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + token TEXT NOT NULL UNIQUE, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) +`); + +// Zuletzt per Bookmarklet empfangene Statistik — persistiert, damit ein +// Container-Neustart die zuletzt bekannten Zahlen nicht verwirft +db.exec(` + CREATE TABLE IF NOT EXISTS makerworld_stats ( + user_id INTEGER PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + data_json TEXT NOT NULL, + fetched_at INTEGER NOT NULL + ) +`); + +// Log aller verschickten Pushover-Nachrichten (für Admin-Übersicht "Logs") +db.exec(` + CREATE TABLE IF NOT EXISTS push_log ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER REFERENCES users(id) ON DELETE SET NULL, + title TEXT NOT NULL DEFAULT '', + message TEXT NOT NULL DEFAULT '', + priority INTEGER NOT NULL DEFAULT 0, + source TEXT NOT NULL DEFAULT '', + success INTEGER NOT NULL DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) +`); + +// KöPi: Whitelist der exakt gewünschten Filialen (echte marktguru Store-IDs, +// aufgelöst aus bestätigten Prospekt-Links — siehe koepi/routes.js) +db.exec(` + CREATE TABLE IF NOT EXISTS koepi_local_stores ( + store_id INTEGER PRIMARY KEY, + retailer TEXT NOT NULL DEFAULT '', + address TEXT NOT NULL DEFAULT '', + resolved_at DATETIME + ) +`); + +// Besuche öffentlicher, loginfreier Links (KöPi-Teilen-Link, ggf. künftig +// weitere) — für die Admin-Log-Übersicht +db.exec(` + CREATE TABLE IF NOT EXISTS public_access_log ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + link_type TEXT NOT NULL DEFAULT '', + path TEXT NOT NULL DEFAULT '', + ip TEXT NOT NULL DEFAULT '', + location TEXT NOT NULL DEFAULT '', + created_at DATETIME + ) +`); +{ + const cols = db.pragma('table_info(public_access_log)').map(c => c.name); + if (!cols.includes('device')) + db.exec("ALTER TABLE public_access_log ADD COLUMN device TEXT NOT NULL DEFAULT ''"); + if (!cols.includes('link_name')) + db.exec("ALTER TABLE public_access_log ADD COLUMN link_name TEXT NOT NULL DEFAULT ''"); +} + +// KöPi: benannte, öffentliche Teilen-Links (mehrere gleichzeitig möglich, +// jeweils mit eigenem Namen wie "Sina") statt nur einem einzigen globalen Link +db.exec(` + CREATE TABLE IF NOT EXISTS koepi_share_links ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + token TEXT NOT NULL UNIQUE, + name TEXT NOT NULL DEFAULT '', + created_at DATETIME + ) +`); +// Migration: den bisherigen einzelnen Link (war für Sina gedacht) einmalig in +// die neue Tabelle übernehmen, statt ihn ungültig zu machen +{ + const oldToken = db.prepare("SELECT value FROM admin_settings WHERE key='koepi_share_token'").get()?.value; + if (oldToken) { + const already = db.prepare('SELECT 1 FROM koepi_share_links WHERE token=?').get(oldToken); + if (!already) { + db.prepare(` + INSERT INTO koepi_share_links (token, name, created_at) + VALUES (?, 'Sina', datetime('now','localtime')) + `).run(oldToken); + } + db.prepare("DELETE FROM admin_settings WHERE key='koepi_share_token'").run(); + } +} + +module.exports = db; diff --git a/backend/src/index.js b/backend/src/index.js new file mode 100644 index 0000000..965c657 --- /dev/null +++ b/backend/src/index.js @@ -0,0 +1,362 @@ +require('./consoleLog').installConsoleCapture(); + +const express = require('express'); +const path = require('path'); +const fs = require('fs'); + +require('./db'); +const { logPush } = require('./pushLog'); + +const app = express(); +// Hinter Nginx Proxy Manager (SSL-Terminierung) — sonst meldet req.protocol +// immer "http", auch wenn der Nutzer über https zugreift (z.B. wichtig für +// das MakerWorld-Bookmarklet: sonst mixed-content-blockiert der Browser den +// fetch()-Call stillschweigend, weil die generierte Origin auf http:// zeigt) +app.set('trust proxy', true); +app.use(express.json({ limit: '10mb' })); + +// ── Aktivitäts-Tracking: nur bei echten Aktionen (POST/PUT/DELETE) ───────────── +app.use((req, res, next) => { + if (['POST','PUT','DELETE'].includes(req.method)) { + const auth = req.headers.authorization; + if (auth?.startsWith('Bearer ')) { + try { + const jwt = require('jsonwebtoken'); + const p = jwt.verify(auth.slice(7), process.env.JWT_SECRET || 'dev-secret'); + if (p?.id) { + // Prüfen ob User vorher >15 Min inaktiv war → "gerade online gegangen" + const user = db.prepare('SELECT last_active_at, role FROM users WHERE id=?').get(p.id); + const wasInactive = !user?.last_active_at || + (Date.now() - new Date(user.last_active_at).getTime()) > 15 * 60 * 1000; + + db.prepare("UPDATE users SET last_active_at=datetime('now','localtime') WHERE id=?").run(p.id); + + // Pushover an alle Admins (außer wenn User selbst Admin ist) + if (wasInactive && user?.role !== 'admin') { + const username = db.prepare('SELECT username FROM users WHERE id=?').get(p.id)?.username || 'Jemand'; + const admins = db.prepare(` + SELECT p.user_id, p.user_key, p.app_token FROM pushover_settings p + JOIN users u ON u.id = p.user_id + WHERE u.role = 'admin' AND p.user_key IS NOT NULL AND p.app_token IS NOT NULL + `).all(); + for (const admin of admins) { + const title = '👤 DickenDock'; + const message = `${username} ist gerade online gegangen.`; + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: admin.app_token, + user: admin.user_key, + title, + message, + priority: -1, + }), + }).catch(() => {}); + logPush({ userId: admin.user_id, title, message, priority: -1, source: 'presence' }); + } + } + } + } catch {} + } + } + next(); +}); + +// ── Security Headers ────────────────────────────────────────────────────────── +app.use((_req, res, next) => { + res.setHeader('Content-Security-Policy', [ + "default-src 'self'", + "script-src 'self'", + // unsafe-inline nötig für React inline-styles + @import Google Fonts + "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com", + "font-src 'self' https://fonts.gstatic.com", + // iCal-Feeds werden serverseitig geprosxt → nur 'self' nötig + "connect-src 'self' https://web.archive.org wss://dickendock.sermer.org ws://localhost:4000", + // data: für Avatare (base64), google.com + gstatic.com für Favicons im QuickLinks-Widget + "img-src 'self' data: https://www.google.com https://*.gstatic.com https://image.tmdb.org", + "worker-src 'self'", + "object-src 'none'", + "base-uri 'self'", + "form-action 'self'", + "frame-src https://archive.ph https://archive.is https://archive.today", + ].join('; ')); + res.setHeader('X-Content-Type-Options', 'nosniff'); + res.setHeader('X-Frame-Options', 'DENY'); + res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin'); + next(); +}); + +// ── API ─────────────────────────────────────────────────────────────────────── +app.use('/api/auth', require('./routes/auth')); +app.use('/api/admin', require('./routes/admin')); +app.use('/api/calendar', require('./routes/calendar')); +app.use('/api/dashboard', require('./routes/dashboard')); +app.use('/api/system', require('./routes/system')); + +// Öffentliche Datei-Share Verwaltung (vor Auto-Loader damit /:id nicht matcht) +app.use('/api/tools/dateien/public-shares', require('./tools/dateien/public-share')); + +// Tool-Routen automatisch laden +const toolsDir = path.join(__dirname, 'tools'); +fs.readdirSync(toolsDir, { withFileTypes: true }) + .filter(d => d.isDirectory()) + .forEach(d => { + const routeFile = path.join(toolsDir, d.name, 'routes.js'); + if (fs.existsSync(routeFile)) { + app.use(`/api/tools/${d.name}`, require(routeFile)); + console.log(` 🔧 Tool geladen: ${d.name}`); + } + }); + +app.use('/api/tools/snippets', require('./tools/snippets/routes')); +app.use('/api/tools/qrcodes', require('./tools/qrcodes/routes')); +app.use('/api/upload-shares', require('./tools/dateien/upload-share')); +app.use('/api/public/file-share', require('./tools/dateien/public-share-public')); +app.use('/api/search', require('./routes/search')); + +// Öffentliche Upload-Seite: React-App ausliefern – App erkennt /u/ Pfad selbst +app.get('/u/:token', (_req, res) => { + res.setHeader('Cache-Control', 'no-store, no-cache'); + res.sendFile(require('path').join(PUBLIC, 'index.html')); +}); + +// Öffentliche Datei-Share-Seite: React-App ausliefern – App erkennt /s/ Pfad selbst +app.get('/s/:token', (_req, res) => { + res.setHeader('Cache-Control', 'no-store, no-cache'); + res.sendFile(require('path').join(PUBLIC, 'index.html')); +}); + +const PUBLIC = path.join(__dirname, '../public'); + +app.get('/manifest.json', (_req, res) => { + res.setHeader('Content-Type', 'application/manifest+json'); + res.setHeader('Cache-Control', 'no-cache'); + res.sendFile(path.join(PUBLIC, 'manifest.json')); +}); +app.get('/sw.js', (_req, res) => { + res.setHeader('Content-Type', 'application/javascript'); + res.setHeader('Service-Worker-Allowed', '/'); + res.setHeader('Cache-Control', 'no-cache'); + res.sendFile(path.join(PUBLIC, 'sw.js')); +}); + +app.use(express.static(PUBLIC, { + setHeaders: (res, filePath) => { + // JS/CSS Assets haben Hash im Namen → lang cachen + if (filePath.match(/\.(js|css)$/) && !filePath.includes('sw.js')) { + res.setHeader('Cache-Control', 'public, max-age=31536000, immutable'); + } + } +})); + +// index.html nie cachen +app.get('*', (_req, res) => { + res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); + res.setHeader('Pragma', 'no-cache'); + res.sendFile(path.join(PUBLIC, 'index.html')); +}); + +// Build-Zeit Endpoint – Frontend prüft ob es eine neue Version gibt +app.get('/api/build-time', (_req, res) => { + res.setHeader('Cache-Control', 'no-store'); + try { + const ver = require('fs').readFileSync(path.join(__dirname, '../version.txt'), 'utf8').trim(); + res.json({ buildTime: ver }); + } catch { res.json({ buildTime: 'unknown' }); } +}); + +// ── HTTP + WebSocket Server ─────────────────────────────────────────────────── +const http = require('http'); +const { WebSocketServer } = require('ws'); +const jwt = require('jsonwebtoken'); + +const server = http.createServer(app); +const wss = new WebSocketServer({ server, path: '/ws/whiteboard' }); + +// Raum-Map: whiteboard_id → Set +const rooms = new Map(); + +wss.on('connection', (ws, req) => { + // Token aus Query-String auslesen: /ws/whiteboard?token=...&id=... + const params = new URL(req.url, 'http://localhost').searchParams; + const token = params.get('token'); + const wbId = parseInt(params.get('id')); + + let userId = null; + try { + const p = jwt.verify(token, process.env.JWT_SECRET || 'dev-secret'); + userId = p.id; + } catch { + ws.close(1008, 'Unauthorized'); + return; + } + + // Zugriff prüfen + const wb = db.prepare('SELECT owner_id FROM whiteboards WHERE id=?').get(wbId); + if (!wb) { ws.close(1008, 'Not found'); return; } + const isOwner = wb.owner_id === userId; + const perm = db.prepare('SELECT role FROM whiteboard_permissions WHERE whiteboard_id=? AND user_id=?').get(wbId, userId); + if (!isOwner && !perm) { ws.close(1008, 'Forbidden'); return; } + const role = isOwner ? 'owner' : perm.role; + + ws.userId = userId; + ws.wbId = wbId; + ws.role = role; + ws.username = db.prepare('SELECT username FROM users WHERE id=?').get(userId)?.username || 'Unbekannt'; + + // Raum beitreten + if (!rooms.has(wbId)) rooms.set(wbId, new Set()); + rooms.get(wbId).add(ws); + + // Anderen im Raum mitteilen wer jointe + broadcast(wbId, { type: 'user_join', userId, username: ws.username, role }, ws); + + // Aktive User-Liste an neuen Client schicken + const activeUsers = [...rooms.get(wbId)] + .filter(c => c !== ws && c.readyState === 1) + .map(c => ({ userId: c.userId, username: c.username, role: c.role })); + ws.send(JSON.stringify({ type: 'active_users', users: activeUsers })); + + ws.on('message', raw => { + let msg; + try { msg = JSON.parse(raw); } catch { return; } + + switch (msg.type) { + case 'cursor': + // Cursor-Position live broadcasten (nur wenn nicht view-only) + broadcast(wbId, { type:'cursor', userId, username:ws.username, x:msg.x, y:msg.y }, ws); + break; + + case 'elements': + // Canvas-Änderungen von Edit-Berechtigten an alle broadcasten + if (role === 'view') break; + broadcast(wbId, { type:'elements', userId, elements: msg.elements }, ws); + break; + + case 'ping': + ws.send(JSON.stringify({ type: 'pong' })); + break; + } + }); + + ws.on('close', () => { + const room = rooms.get(wbId); + if (room) { + room.delete(ws); + if (room.size === 0) rooms.delete(wbId); + else broadcast(wbId, { type: 'user_leave', userId, username: ws.username }); + } + }); + + ws.on('error', () => ws.terminate()); +}); + +function broadcast(wbId, msg, exclude = null) { + const room = rooms.get(wbId); + if (!room) return; + const data = JSON.stringify(msg); + for (const client of room) { + if (client !== exclude && client.readyState === 1) { + client.send(data); + } + } +} + +server.listen(4000, () => console.log('🚀 Dicken Dock läuft auf Port 4000')); + +// ── Push-Zeitplaner Hintergrund-Job ────────────────────────────────────────── +const db = require('./db'); +const koepiRoutes = require('./tools/koepi/routes'); +const mediaRoutes = require('./tools/media/routes'); +const mqttClient = require('./mqtt'); + +mqttClient.connectMqtt(); +// KöPi: Filial-Whitelist bei jedem Serverstart automatisch neu auflösen +// (nicht erst nach der 6-Tage-Frist) — läuft asynchron im Hintergrund, damit +// ein Deploy nicht auf den marktguru-Abruf warten muss +koepiRoutes.resolveLocalStores() + .then(n => console.log(`🍺 KöPi: Filial-Whitelist beim Start aufgelöst (${n} Filiale(n))`)) + .catch(e => console.error('🍺 KöPi: Filial-Whitelist-Auflösung beim Start fehlgeschlagen:', e.message)); +// HA-Button "KöPi Check jetzt" ist ein reiner Anzeige-Refresh — sendet nie +// Pushover. Benachrichtigungen bleiben exklusiv dem 06:00-Cron vorbehalten. +mqttClient.setKoepiCheckHandler(() => koepiRoutes.refreshOffersOnly()); +// HA-Buttons "Media Quittieren" / "Media Alle quittieren" — danach sofort den +// Media-Anfragen-Sensor + die dynamischen Buttons in HA aktualisieren +mqttClient.setMediaAckHandler((id) => { + mediaRoutes.ackFavorite(id); + mqttClient.publishMediaAnfragen(); +}); +mqttClient.setMediaAckAllHandler(() => { + mediaRoutes.ackAllFavorites(); + mqttClient.publishMediaAnfragen(); +}); + +async function sendPushoverMsg(userKey, appToken, message, opts = {}, userId = null) { + const title = 'DickenDock Erinnerung'; + let priority = 0; + try { + const params = { token: appToken, user: userKey, title, message }; + if (opts.retry && opts.expire) { + params.priority = 2; + priority = 2; + params.retry = opts.retry; + params.expire = opts.expire; + } + await fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: new URLSearchParams(params), + }); + logPush({ userId, title, message, priority, source: 'dashboard-erinnerung' }); + } catch(e) { + console.error('Pushover Fehler:', e.message); + logPush({ userId, title, message, priority, source: 'dashboard-erinnerung', success: false }); + } +} + +// Beim Start auf die nächste volle Minute synchronisieren +const msToNextMinute = (60 - new Date().getSeconds()) * 1000 - new Date().getMilliseconds(); +setTimeout(() => { + runScheduler(); + setInterval(runScheduler, 60 * 1000); +}, msToNextMinute); + +async function runScheduler() { + mqttClient.publishPresence(); + mqttClient.publishMediaAnfragen(); + mqttClient.publishDruckStatistik(); + mqttClient.publishPushErinnerungen(); + mqttClient.publishKanban(); + try { + const now = db.prepare("SELECT datetime('now','localtime') as t").get().t; + const due = db.prepare(` + SELECT s.*, p.user_key, p.app_token, p.retry, p.expire + FROM push_schedules s + JOIN pushover_settings p ON p.user_id = s.user_id + WHERE s.sent = 0 AND s.scheduled_at <= ? + `).all(now); + for (const row of due) { + await sendPushoverMsg(row.user_key, row.app_token, row.message, + { retry: row.retry, expire: row.expire }, row.user_id); + db.prepare('UPDATE push_schedules SET sent=1 WHERE id=?').run(row.id); + console.log(`✓ Push gesendet an user ${row.user_id}: "${row.message}" (fällig: ${row.scheduled_at})`); + } + } catch(e) { console.error('Push-Job Fehler:', e.message); } + + // KöPi Tages-Check: täglich um 06:00 (localtime), Duplikatschutz über admin_settings-Datum + try { + const now = db.prepare("SELECT datetime('now','localtime') as t").get().t; + const date = now.slice(0, 10); + const time = now.slice(11, 16); + if (time === '06:00') { + const lastRunDate = db.prepare("SELECT value FROM admin_settings WHERE key='koepi_cron_last_date'").get()?.value; + if (lastRunDate !== date) { + db.prepare("INSERT OR REPLACE INTO admin_settings (key, value) VALUES ('koepi_cron_last_date', ?)").run(date); + await koepiRoutes.runDailyCheck(); + } + } + } catch(e) { console.error('KöPi-Cron Fehler:', e.message); } +} + +console.log(`⏰ Push-Scheduler aktiv – nächste Prüfung in ${Math.round(msToNextMinute/1000)}s`); diff --git a/backend/src/middleware/auth.js b/backend/src/middleware/auth.js new file mode 100644 index 0000000..ae29f2e --- /dev/null +++ b/backend/src/middleware/auth.js @@ -0,0 +1,16 @@ +const jwt = require('jsonwebtoken'); +const SECRET = process.env.JWT_SECRET || 'dev-secret'; + +function authenticate(req, res, next) { + const h = req.headers.authorization; + if (!h?.startsWith('Bearer ')) return res.status(401).json({ error: 'Nicht eingeloggt' }); + try { req.user = jwt.verify(h.slice(7), SECRET); next(); } + catch { res.status(401).json({ error: 'Token ungültig' }); } +} + +function requireAdmin(req, res, next) { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + next(); +} + +module.exports = { authenticate, requireAdmin }; diff --git a/backend/src/mqtt.js b/backend/src/mqtt.js new file mode 100644 index 0000000..2a4320a --- /dev/null +++ b/backend/src/mqtt.js @@ -0,0 +1,620 @@ +// ── Home Assistant MQTT Integration ────────────────────────────────────────── +// Verbindet sich zum Mosquitto-Broker (HA Add-on) und meldet DickenDock-Entitäten +// per HA MQTT Discovery an. Kein Custom Component in HA nötig — Entitäten +// erscheinen automatisch unter "Einstellungen → Geräte & Dienste → MQTT". +// +// Namenskonvention: alle Entity-Namen beginnen mit ihrem Bereich ("KöPi", "Media", +// "3D", "System"), damit sie in Home Assistant alphabetisch sortiert gruppiert +// untereinander stehen. +// +// Aktiv nur, wenn MQTT_HOST in der .env gesetzt ist. Ohne Konfiguration bleibt +// der Rest der App unverändert lauffähig (alle publish-Funktionen sind No-Ops). + +const mqtt = require('mqtt'); +const db = require('./db'); + +const BASE_TOPIC = process.env.MQTT_BASE_TOPIC || 'dickendock'; +const AVAILABILITY_TOPIC = `${BASE_TOPIC}/status`; +const KOEPI_CHECK_CMD_TOPIC = `${BASE_TOPIC}/koepi/check/set`; +const MEDIA_ACK_ALL_CMD_TOPIC = `${BASE_TOPIC}/media/ack_all/set`; +const MEDIA_ACK_TOPIC_PREFIX = `${BASE_TOPIC}/media/ack/`; // + {id}/set +const MEDIA_ACK_SUBSCRIBE = `${BASE_TOPIC}/media/ack/+/set`; + +const DEVICE = { + identifiers: ['dickendock'], + name: 'DickenDock', + manufacturer: 'Flo', + model: 'DockStation', +}; + +let client = null; +let koepiCheckHandler = null; // wird von index.js gesetzt, um Zirkel-Requires zu vermeiden +let mediaAckHandler = null; // (id) => void — einzelnen Favoriten quittieren +let mediaAckAllHandler = null; // () => void — alle Favoriten quittieren + +// Zuletzt published dynamische Media-Quittier-Buttons (zum sauberen Retracten +// wenn ein Favorit quittiert/gelöscht wurde und der Button verschwinden soll) +let publishedMediaAckIds = new Set(); + +function connectMqtt() { + if (!process.env.MQTT_HOST) { + console.log('MQTT: MQTT_HOST nicht gesetzt – Home-Assistant-Integration deaktiviert.'); + return; + } + + client = mqtt.connect({ + host: process.env.MQTT_HOST, + port: parseInt(process.env.MQTT_PORT || '1883', 10), + username: process.env.MQTT_USERNAME, + password: process.env.MQTT_PASSWORD, + will: { topic: AVAILABILITY_TOPIC, payload: 'offline', retain: true }, + reconnectPeriod: 5000, + }); + + client.on('connect', () => { + console.log(`MQTT verbunden: ${process.env.MQTT_HOST}:${process.env.MQTT_PORT || 1883}`); + client.publish(AVAILABILITY_TOPIC, 'online', { retain: true }); + publishDiscovery(); + client.subscribe(KOEPI_CHECK_CMD_TOPIC); + client.subscribe(MEDIA_ACK_ALL_CMD_TOPIC); + client.subscribe(MEDIA_ACK_SUBSCRIBE); + }); + + client.on('message', async (topic) => { + try { + if (topic === KOEPI_CHECK_CMD_TOPIC && typeof koepiCheckHandler === 'function') { + await koepiCheckHandler(); + } else if (topic === MEDIA_ACK_ALL_CMD_TOPIC && typeof mediaAckAllHandler === 'function') { + await mediaAckAllHandler(); + } else if (topic.startsWith(MEDIA_ACK_TOPIC_PREFIX) && typeof mediaAckHandler === 'function') { + const id = topic.slice(MEDIA_ACK_TOPIC_PREFIX.length).replace(/\/set$/, ''); + if (id) await mediaAckHandler(id); + } + } catch (e) { + console.error('MQTT Command-Fehler:', e.message); + } + }); + + client.on('error', (e) => console.error('MQTT Fehler:', e.message)); +} + +function publishDiscovery() { + if (!client) return; + const entities = [ + // ── KöPi ────────────────────────────────────────────────────────────── + ['sensor', 'dickendock_koepi_angebot', { + name: 'KöPi Angebote', + unique_id: 'dickendock_koepi_bestes_angebot', + state_topic: `${BASE_TOPIC}/koepi/state`, + json_attributes_topic: `${BASE_TOPIC}/koepi/attributes`, + icon: 'mdi:beer', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + ['binary_sensor', 'dickendock_koepi_changed', { + name: 'KöPi Angebot geändert', + unique_id: 'dickendock_koepi_changed', + state_topic: `${BASE_TOPIC}/koepi/changed`, + payload_on: 'ON', + payload_off: 'OFF', + icon: 'mdi:bell-alert', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + ['button', 'dickendock_koepi_check', { + name: 'KöPi Check jetzt', + unique_id: 'dickendock_koepi_check', + command_topic: KOEPI_CHECK_CMD_TOPIC, + icon: 'mdi:refresh', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + ['sensor', 'dickendock_koepi_start', { + name: 'KöPi Angebot Start', + unique_id: 'dickendock_koepi_start', + state_topic: `${BASE_TOPIC}/koepi/start`, + device_class: 'date', + icon: 'mdi:calendar-start', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + ['sensor', 'dickendock_koepi_ende', { + name: 'KöPi Angebot Ende', + unique_id: 'dickendock_koepi_ende', + state_topic: `${BASE_TOPIC}/koepi/ende`, + device_class: 'date', + icon: 'mdi:calendar-end', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + + // ── Media ───────────────────────────────────────────────────────────── + ['sensor', 'dickendock_media_anfragen', { + name: 'Media Anfragen offen', + unique_id: 'dickendock_media_anfragen', + state_topic: `${BASE_TOPIC}/media/anfragen`, + json_attributes_topic: `${BASE_TOPIC}/media/anfragen_attributes`, + icon: 'mdi:movie-open-star', + unit_of_measurement: 'Anfragen', + state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + ['button', 'dickendock_media_ack_all', { + name: 'Media Alle quittieren', + unique_id: 'dickendock_media_ack_all', + command_topic: MEDIA_ACK_ALL_CMD_TOPIC, + icon: 'mdi:check-all', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + + // ── 3D ──────────────────────────────────────────────────────────────── + ['sensor', 'dickendock_3d_umsatz_monat', { + name: '3D Umsatz Monat', + unique_id: 'dickendock_3ddruck_umsatz_monat', + state_topic: `${BASE_TOPIC}/druck/umsatz_monat`, + icon: 'mdi:cash-multiple', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_umsatz_gesamt', { + name: '3D Umsatz Gesamt', + unique_id: 'dickendock_3d_umsatz_gesamt', + state_topic: `${BASE_TOPIC}/druck/umsatz_gesamt`, + icon: 'mdi:cash-multiple', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_grundkosten_monat', { + name: '3D Grundkosten Monat', + unique_id: 'dickendock_3d_grundkosten_monat', + state_topic: `${BASE_TOPIC}/druck/grundkosten_monat`, + icon: 'mdi:currency-eur-off', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_grundkosten_gesamt', { + name: '3D Grundkosten Gesamt', + unique_id: 'dickendock_3d_grundkosten_gesamt', + state_topic: `${BASE_TOPIC}/druck/grundkosten_gesamt`, + icon: 'mdi:currency-eur-off', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_rohgewinn_monat', { + name: '3D Rohgewinn Monat', + unique_id: 'dickendock_3d_rohgewinn_monat', + state_topic: `${BASE_TOPIC}/druck/rohgewinn_monat`, + icon: 'mdi:chart-line', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_rohgewinn_gesamt', { + name: '3D Rohgewinn Gesamt', + unique_id: 'dickendock_3d_rohgewinn_gesamt', + state_topic: `${BASE_TOPIC}/druck/rohgewinn_gesamt`, + icon: 'mdi:chart-line', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_ausgaben_monat', { + name: '3D Ausgaben Monat', + unique_id: 'dickendock_3d_ausgaben_monat', + state_topic: `${BASE_TOPIC}/druck/ausgaben_monat`, + icon: 'mdi:receipt-text-minus', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_ausgaben_gesamt', { + name: '3D Ausgaben Gesamt', + unique_id: 'dickendock_3d_ausgaben_gesamt', + state_topic: `${BASE_TOPIC}/druck/ausgaben_gesamt`, + icon: 'mdi:receipt-text-minus', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_nettogewinn_monat', { + name: '3D Nettogewinn Monat', + unique_id: 'dickendock_3d_nettogewinn_monat', + state_topic: `${BASE_TOPIC}/druck/nettogewinn_monat`, + icon: 'mdi:cash-check', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_nettogewinn_gesamt', { + name: '3D Nettogewinn Gesamt', + unique_id: 'dickendock_3d_nettogewinn_gesamt', + state_topic: `${BASE_TOPIC}/druck/nettogewinn_gesamt`, + icon: 'mdi:cash-check', + device_class: 'monetary', unit_of_measurement: '€', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_offen', { + name: '3D Bestellungen offen', + unique_id: 'dickendock_bestellungen_offen', + state_topic: `${BASE_TOPIC}/druck/bestellungen_offen`, + json_attributes_topic: `${BASE_TOPIC}/druck/bestellungen_offen_attributes`, + icon: 'mdi:cube-send', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_warteliste', { + name: '3D Bestellungen Warteliste', + unique_id: 'dickendock_3d_bestellungen_warteliste', + state_topic: `${BASE_TOPIC}/druck/bestellungen_warteliste`, + icon: 'mdi:timer-sand', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_in_arbeit', { + name: '3D Bestellungen In Arbeit', + unique_id: 'dickendock_3d_bestellungen_in_arbeit', + state_topic: `${BASE_TOPIC}/druck/bestellungen_in_arbeit`, + icon: 'mdi:printer-3d-nozzle', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_fertig', { + name: '3D Bestellungen Fertig', + unique_id: 'dickendock_3d_bestellungen_fertig', + state_topic: `${BASE_TOPIC}/druck/bestellungen_fertig`, + icon: 'mdi:check-circle-outline', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_bezahlt', { + name: '3D Bestellungen Bezahlt', + unique_id: 'dickendock_3d_bestellungen_bezahlt', + state_topic: `${BASE_TOPIC}/druck/bestellungen_bezahlt`, + icon: 'mdi:cash-check', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_abgeschlossen', { + name: '3D Bestellungen Abgeschlossen', + unique_id: 'dickendock_3d_bestellungen_abgeschlossen', + state_topic: `${BASE_TOPIC}/druck/bestellungen_abgeschlossen`, + icon: 'mdi:archive-check-outline', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + ['sensor', 'dickendock_3d_bestellungen_gesamt', { + name: '3D Bestellungen Gesamt', + unique_id: 'dickendock_3d_bestellungen_gesamt', + state_topic: `${BASE_TOPIC}/druck/bestellungen_gesamt`, + icon: 'mdi:cube-outline', + unit_of_measurement: 'Bestellungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + + // ── Dashboard ───────────────────────────────────────────────────────── + ['sensor', 'dickendock_dashboard_push_erinnerungen', { + name: 'Dashboard Push-Erinnerungen offen', + unique_id: 'dickendock_dashboard_push_erinnerungen', + state_topic: `${BASE_TOPIC}/dashboard/push_erinnerungen`, + json_attributes_topic: `${BASE_TOPIC}/dashboard/push_erinnerungen_attributes`, + icon: 'mdi:bell-ring-outline', + unit_of_measurement: 'Erinnerungen', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + + // ── Kanban ──────────────────────────────────────────────────────────── + ['sensor', 'dickendock_kanban_karten', { + name: 'Kanban Karten offen', + unique_id: 'dickendock_kanban_karten', + state_topic: `${BASE_TOPIC}/kanban/karten`, + json_attributes_topic: `${BASE_TOPIC}/kanban/karten_attributes`, + icon: 'mdi:view-column-outline', + unit_of_measurement: 'Karten', state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, device: DEVICE, + }], + + // ── System ──────────────────────────────────────────────────────────── + ['sensor', 'dickendock_system_online', { + name: 'System Nutzer online', + unique_id: 'dickendock_nutzer_online', + state_topic: `${BASE_TOPIC}/presence/state`, + json_attributes_topic: `${BASE_TOPIC}/presence/attributes`, + icon: 'mdi:account-multiple', + unit_of_measurement: 'Nutzer', + state_class: 'measurement', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }], + ]; + for (const [component, objectId, payload] of entities) { + client.publish(`homeassistant/${component}/${objectId}/config`, JSON.stringify(payload), { retain: true }); + } +} + +function round2(n) { return Math.round((n || 0) * 100) / 100; } + +function parsePrice(str) { + if (!str) return Infinity; + const n = parseFloat(String(str).replace(/[^0-9,.-]/g, '').replace(',', '.')); + return Number.isNaN(n) ? Infinity : n; +} + +// Parst ein deutsches Datum "10.07." oder "10.07.2026" aus einem Textschnipsel. +// Fehlt das Jahr, wird das aktuelle Jahr angenommen (mit Jahreswechsel-Korrektur +// in beide Richtungen, z.B. bei Angeboten die über Silvester laufen). +function parseGermanDate(str, ref = new Date()) { + const m = String(str).match(/(\d{1,2})\.(\d{1,2})\.(\d{4})?/); + if (!m) return null; + const day = parseInt(m[1], 10); + const month = parseInt(m[2], 10) - 1; + let year = m[3] ? parseInt(m[3], 10) : ref.getFullYear(); + const d = new Date(year, month, day); + if (!m[3]) { + const diffMonths = (d.getFullYear() - ref.getFullYear()) * 12 + (d.getMonth() - ref.getMonth()); + if (diffMonths < -3) d.setFullYear(year + 1); // z.B. Ref=Dez, Datum=Jan → nächstes Jahr gemeint + else if (diffMonths > 3) d.setFullYear(year - 1); // z.B. Ref=Jan, Datum=Dez → vergangenes Jahr gemeint + } + return d; +} + +// Ermittelt aus allen Angeboten den frühesten Start- und spätesten End-Termin +// (marktguru-Angebote für ein Produkt laufen i.d.R. im selben Wochenzeitraum) +function extractDateRange(offers) { + let start = null, end = null; + for (const o of offers) { + const text = o.dateRange || ''; + const found = [...text.matchAll(/\d{1,2}\.\d{1,2}\.(?:\d{4})?/g)].map(m => m[0]); + if (found.length >= 2) { + const d1 = parseGermanDate(found[0]); + const d2 = parseGermanDate(found[1]); + if (d1 && (!start || d1 < start)) start = d1; + if (d2 && (!end || d2 > end)) end = d2; + } else if (found.length === 1) { + const d1 = parseGermanDate(found[0]); + if (d1 && (!end || d1 > end)) end = d1; + } + } + return { start, end }; +} + +function toIsoDate(d) { + if (!d) return null; + const pad = n => String(n).padStart(2, '0'); + return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`; +} + +// Wird von koepi/routes.js nach jedem Check (Cron oder manueller Test) aufgerufen +function publishKoepiState({ offers, changed }) { + if (!client?.connected) return; + const list = [...(offers || [])].sort((a, b) => parsePrice(a.price) - parsePrice(b.price)); + + // State: nur die Anzahl (bleibt immer kurz und stabil) — die eigentlichen + // Angebote stehen vollständig in den Attributen + const state = list.length ? `${list.length} Angebote` : 'keine Angebote'; + + // Lesbarer Mehrzeiler fürs Dashboard, zusätzlich zur strukturierten Liste + const listeText = list.length + ? list.map(o => `${o.retailer}: ${o.price}${o.dateRange ? ' (' + o.dateRange + ')' : ''}`).join('\n') + : 'keine Angebote'; + + client.publish(`${BASE_TOPIC}/koepi/state`, state, { retain: true }); + client.publish(`${BASE_TOPIC}/koepi/attributes`, JSON.stringify({ + angebote: list, + liste_text: listeText, + anzahl: list.length, + letzter_check: new Date().toISOString(), + }), { retain: true }); + client.publish(`${BASE_TOPIC}/koepi/changed`, changed ? 'ON' : 'OFF', { retain: true }); + + const { start, end } = extractDateRange(list); + client.publish(`${BASE_TOPIC}/koepi/start`, toIsoDate(start) || 'unknown', { retain: true }); + client.publish(`${BASE_TOPIC}/koepi/ende`, toIsoDate(end) || 'unknown', { retain: true }); +} + +// Wird jede Minute vom Scheduler in index.js aufgerufen +function publishPresence() { + if (!client?.connected) return; + const alleNutzer = db.prepare(` + SELECT username, last_active_at, + CASE WHEN last_active_at > datetime('now','localtime','-5 minutes') THEN 1 ELSE 0 END AS online + FROM users + ORDER BY last_active_at DESC + `).all(); + const online = alleNutzer.filter(u => !!u.online); + + client.publish(`${BASE_TOPIC}/presence/state`, String(online.length), { retain: true }); + client.publish(`${BASE_TOPIC}/presence/attributes`, JSON.stringify({ + online: online.map(u => ({ benutzer: u.username, zuletzt_aktiv: u.last_active_at })), + alle_nutzer: alleNutzer.map(u => ({ + benutzer: u.username, + zuletzt_aktiv: u.last_active_at, + online: !!u.online, + })), + }), { retain: true }); +} + +// Wird jede Minute vom Scheduler UND direkt nach jeder Quittierung aufgerufen. +// Offene (unquittierte) Media-Favoriten, systemweit über alle Nutzer. +// Legt zusätzlich pro offener Anfrage einen eigenen "Quittieren"-Button in HA an +// und entfernt Buttons für Anfragen, die inzwischen quittiert/gelöscht wurden. +function publishMediaAnfragen() { + if (!client?.connected) return; + const open = db.prepare(` + SELECT f.id, f.title, f.added_at, u.username + FROM movie_favorites f JOIN users u ON u.id = f.user_id + WHERE f.acknowledged = 0 + ORDER BY f.added_at DESC + `).all(); + + client.publish(`${BASE_TOPIC}/media/anfragen`, String(open.length), { retain: true }); + client.publish(`${BASE_TOPIC}/media/anfragen_attributes`, JSON.stringify({ anfragen: open }), { retain: true }); + + const currentIds = new Set(open.map(f => String(f.id))); + + // Neue Buttons für neu hinzugekommene offene Anfragen anlegen + for (const fav of open) { + const id = String(fav.id); + if (!publishedMediaAckIds.has(id)) { + const label = `Media Quittieren: ${fav.title}${fav.username ? ' (' + fav.username + ')' : ''}`.slice(0, 255); + client.publish(`homeassistant/button/dickendock_media_ack_${id}/config`, JSON.stringify({ + name: label, + unique_id: `dickendock_media_ack_${id}`, + command_topic: `${MEDIA_ACK_TOPIC_PREFIX}${id}/set`, + icon: 'mdi:check-circle-outline', + availability_topic: AVAILABILITY_TOPIC, + device: DEVICE, + }), { retain: true }); + } + } + // Buttons für inzwischen quittierte/gelöschte Anfragen zurückziehen (leeres retained Payload) + for (const id of publishedMediaAckIds) { + if (!currentIds.has(id)) { + client.publish(`homeassistant/button/dickendock_media_ack_${id}/config`, '', { retain: true }); + } + } + publishedMediaAckIds = currentIds; +} + +// Umsatz eines einzelnen Auftrags — Festpreis falls gesetzt, sonst Summe der +// Positions-Festpreise (spiegelt die Logik aus statistik/routes.js) +function getOrderRevenue(order) { + if (order.custom_price != null && order.custom_price > 0) return parseFloat(order.custom_price); + const r = db.prepare(` + SELECT COALESCE(SUM(custom_price * stueckzahl), 0) AS s + FROM order_items WHERE order_id=? AND custom_price IS NOT NULL + `).get(order.id); + return r?.s || 0; +} + +// Grundkosten (Material/Zeit-Basis) eines Auftrags — spiegelt statistik/routes.js +function getOrderBaseCost(orderId) { + const r = db.prepare(` + SELECT COALESCE(SUM(COALESCE(c.preis_freundschaft, oi.preis_freundschaft, 0) * oi.stueckzahl), 0) AS s + FROM order_items oi + LEFT JOIN calculations c ON c.id = oi.calculation_id + WHERE oi.order_id = ? + `).get(orderId); + return r?.s || 0; +} + +// Wird jede Minute vom Scheduler aufgerufen — umfangreiche 3D-Druck-Statistik, +// systemweit über alle Nutzer, jeweils für den laufenden Monat und komplett (all-time) +function publishDruckStatistik() { + if (!client?.connected) return; + const now = new Date(); + const pad = n => String(n).padStart(2, '0'); + const monatsAnfang = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-01`; + const heute = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`; + + const allOrders = db.prepare('SELECT * FROM orders').all(); + const paidAll = allOrders.filter(o => !!o.bezahlt); + const paidMonat = paidAll.filter(o => { + const d = (o.bezahlt_am || o.created_at || '').slice(0, 10); + return d >= monatsAnfang && d <= heute; + }); + + const umsatzGesamt = paidAll.reduce((s, o) => s + getOrderRevenue(o), 0); + const umsatzMonat = paidMonat.reduce((s, o) => s + getOrderRevenue(o), 0); + const kostenGesamt = paidAll.reduce((s, o) => s + getOrderBaseCost(o.id), 0); + const kostenMonat = paidMonat.reduce((s, o) => s + getOrderBaseCost(o.id), 0); + const rohgewinnGesamt = umsatzGesamt - kostenGesamt; + const rohgewinnMonat = umsatzMonat - kostenMonat; + + const ausgabenGesamt = db.prepare('SELECT COALESCE(SUM(amount),0) AS s FROM expenses').get().s; + const ausgabenMonat = db.prepare( + 'SELECT COALESCE(SUM(amount),0) AS s FROM expenses WHERE date>=? AND date<=?' + ).get(monatsAnfang, heute).s; + + const nettoGesamt = rohgewinnGesamt - ausgabenGesamt; + const nettoMonat = rohgewinnMonat - ausgabenMonat; + + const byStatus = { warteliste: 0, in_arbeit: 0, fertig: 0, bezahlt: 0, abgeschlossen: 0 }; + for (const o of allOrders) { + if (o.bezahlt && o.abgeholt) byStatus.abgeschlossen++; + else if (o.bezahlt) byStatus.bezahlt++; + else if (o.status in byStatus) byStatus[o.status]++; + } + const offen = allOrders.length - byStatus.abgeschlossen; + + // Konkrete offene Bestellungen (nicht abgeschlossen) mit Besitzer, für die Attribute + const offeneBestellungen = db.prepare(` + SELECT o.id, o.name, o.status, o.bezahlt, o.abgeholt, o.created_at, u.username + FROM orders o JOIN users u ON u.id = o.user_id + WHERE NOT (o.bezahlt = 1 AND o.abgeholt = 1) + ORDER BY o.created_at DESC + `).all(); + + const pub = (topic, val) => client.publish(`${BASE_TOPIC}/${topic}`, String(val), { retain: true }); + pub('druck/umsatz_monat', round2(umsatzMonat)); + pub('druck/umsatz_gesamt', round2(umsatzGesamt)); + pub('druck/grundkosten_monat', round2(kostenMonat)); + pub('druck/grundkosten_gesamt', round2(kostenGesamt)); + pub('druck/rohgewinn_monat', round2(rohgewinnMonat)); + pub('druck/rohgewinn_gesamt', round2(rohgewinnGesamt)); + pub('druck/ausgaben_monat', round2(ausgabenMonat)); + pub('druck/ausgaben_gesamt', round2(ausgabenGesamt)); + pub('druck/nettogewinn_monat', round2(nettoMonat)); + pub('druck/nettogewinn_gesamt', round2(nettoGesamt)); + pub('druck/bestellungen_offen', offen); + client.publish(`${BASE_TOPIC}/druck/bestellungen_offen_attributes`, JSON.stringify({ + bestellungen: offeneBestellungen, + }), { retain: true }); + pub('druck/bestellungen_warteliste', byStatus.warteliste); + pub('druck/bestellungen_in_arbeit', byStatus.in_arbeit); + pub('druck/bestellungen_fertig', byStatus.fertig); + pub('druck/bestellungen_bezahlt', byStatus.bezahlt); + pub('druck/bestellungen_abgeschlossen', byStatus.abgeschlossen); + pub('druck/bestellungen_gesamt', allOrders.length); +} + +// Wird jede Minute vom Scheduler aufgerufen — offene (noch nicht versendete, +// in der Zukunft liegende) Push-Erinnerungen aus dem Dashboard, systemweit +function publishPushErinnerungen() { + if (!client?.connected) return; + const offen = db.prepare(` + SELECT s.message, s.scheduled_at, u.username + FROM push_schedules s JOIN users u ON u.id = s.user_id + WHERE s.sent = 0 AND s.scheduled_at > datetime('now','localtime') + ORDER BY s.scheduled_at ASC + `).all(); + client.publish(`${BASE_TOPIC}/dashboard/push_erinnerungen`, String(offen.length), { retain: true }); + client.publish(`${BASE_TOPIC}/dashboard/push_erinnerungen_attributes`, JSON.stringify({ + erinnerungen: offen, + }), { retain: true }); +} + +// Wird jede Minute vom Scheduler aufgerufen — alle Kanban-Karten über alle +// Nutzer-Boards hinweg (Kanban ist pro Nutzer, hier systemweit aggregiert) +function publishKanban() { + if (!client?.connected) return; + const karten = db.prepare(` + SELECT k.title, k.priority, col.title AS spalte, u.username + FROM kanban_cards k + JOIN kanban_columns col ON col.id = k.column_id + JOIN users u ON u.id = k.user_id + ORDER BY u.username ASC, col.position ASC, k.position ASC + `).all(); + const proNutzer = {}; + for (const k of karten) proNutzer[k.username] = (proNutzer[k.username] || 0) + 1; + + client.publish(`${BASE_TOPIC}/kanban/karten`, String(karten.length), { retain: true }); + client.publish(`${BASE_TOPIC}/kanban/karten_attributes`, JSON.stringify({ + karten, + pro_nutzer: proNutzer, + }), { retain: true }); +} + +// Wird von index.js gesetzt, um Zirkel-Requires zu vermeiden +function setKoepiCheckHandler(fn) { koepiCheckHandler = fn; } +function setMediaAckHandler(fn) { mediaAckHandler = fn; } +function setMediaAckAllHandler(fn) { mediaAckAllHandler = fn; } + +module.exports = { + connectMqtt, + publishKoepiState, + publishPresence, + publishMediaAnfragen, + publishDruckStatistik, + publishPushErinnerungen, + publishKanban, + setKoepiCheckHandler, + setMediaAckHandler, + setMediaAckAllHandler, +}; diff --git a/backend/src/publicAccessLog.js b/backend/src/publicAccessLog.js new file mode 100644 index 0000000..e57d775 --- /dev/null +++ b/backend/src/publicAccessLog.js @@ -0,0 +1,85 @@ +const db = require('./db'); + +// Sehr einfache, kostenlose IP-Geolocation ohne API-Key (ip-api.com, ~45 +// Anfragen/Minute im Free-Tier — für dieses Nutzungsszenario völlig ausreichend). +// Liefert bei privaten/lokalen IPs oder Fehlern bewusst leeren String zurück, +// statt den eigentlichen Log-Eintrag zu blockieren. +async function lookupLocation(ip) { + if (!ip) return ''; + const clean = ip.replace('::ffff:', ''); // IPv4-mapped IPv6-Adressen bereinigen + if (!clean || clean === '::1' || clean.startsWith('127.') || clean.startsWith('192.168.') || clean.startsWith('10.')) { + return ''; // lokale/private Adresse, Geolocation ergibt keinen Sinn + } + try { + const res = await fetch(`http://ip-api.com/json/${encodeURIComponent(clean)}?fields=status,country,city`); + if (!res.ok) return ''; + const data = await res.json(); + if (data.status !== 'success') return ''; + return [data.city, data.country].filter(Boolean).join(', '); + } catch { + return ''; + } +} + +// Sehr einfache User-Agent-Erkennung (kein externes Paket nötig) — liefert +// z.B. "iPhone · Safari" oder "Windows · Firefox". Reihenfolge ist wichtig: +// Edge/Samsung/Opera/Firefox enthalten selbst oft "Chrome" bzw. "Safari" im +// User-Agent, müssen also VOR diesen geprüft werden. +function parseDevice(ua) { + if (!ua) return ''; + let os = ''; + if (/iPhone/i.test(ua)) os = 'iPhone'; + else if (/iPad/i.test(ua)) os = 'iPad'; + else if (/Android/i.test(ua)) os = 'Android'; + else if (/Windows/i.test(ua)) os = 'Windows'; + else if (/Macintosh|Mac OS X/i.test(ua)) os = 'Mac'; + else if (/Linux/i.test(ua)) os = 'Linux'; + + let browser = ''; + if (/EdgA|Edge|Edg\//i.test(ua)) browser = 'Edge'; + else if (/SamsungBrowser/i.test(ua)) browser = 'Samsung Internet'; + else if (/OPR\/|Opera/i.test(ua)) browser = 'Opera'; + else if (/Firefox/i.test(ua)) browser = 'Firefox'; + else if (/CriOS/i.test(ua)) browser = 'Chrome'; // Chrome auf iOS + else if (/Chrome/i.test(ua)) browser = 'Chrome'; + else if (/Safari/i.test(ua)) browser = 'Safari'; + + return [os, browser].filter(Boolean).join(' · '); +} + +// Wird von öffentlichen (loginfreien) Routen aufgerufen, sobald sie besucht +// werden. linkType z.B. 'koepi_share'. Läuft bewusst asynchron/"fire and +// forget" im Hintergrund — ein Fehler hier darf niemals die eigentliche +// öffentliche Anfrage blockieren oder verlangsamen. +// +// Dedup: dieselbe IP, die denselben Link innerhalb der letzten 5 Minuten schon +// besucht hat, wird nicht erneut geloggt (verhindert Log-Spam bei mehreren +// Klicks/Tab-Wechseln hintereinander, spart nebenbei auch unnötige +// Geolocation-Abfragen). +const DEDUP_WINDOW_MINUTES = 5; +function logPublicAccess({ linkType, path, ip, userAgent, linkName }) { + try { + const recent = db.prepare(` + SELECT 1 FROM public_access_log + WHERE ip = ? AND path = ? AND created_at >= datetime('now','localtime',?) + LIMIT 1 + `).get(ip || '', path || '', `-${DEDUP_WINDOW_MINUTES} minutes`); + if (recent) return; // kürzlich schon geloggt, nichts weiter tun + } catch (e) { + console.error('Public-Access-Log Dedup-Fehler:', e.message); + } + + const device = parseDevice(userAgent); + lookupLocation(ip).then(location => { + try { + db.prepare(` + INSERT INTO public_access_log (link_type, path, ip, location, device, link_name, created_at) + VALUES (?, ?, ?, ?, ?, ?, datetime('now','localtime')) + `).run(linkType || '', path || '', ip || '', location || '', device || '', linkName || ''); + } catch (e) { + console.error('Public-Access-Log Fehler:', e.message); + } + }).catch(() => {}); +} + +module.exports = { logPublicAccess }; diff --git a/backend/src/pushLog.js b/backend/src/pushLog.js new file mode 100644 index 0000000..8d25dfb --- /dev/null +++ b/backend/src/pushLog.js @@ -0,0 +1,17 @@ +const db = require('./db'); + +// Wird von jeder Stelle im Code aufgerufen, die eine Pushover-Nachricht +// verschickt — unabhängig vom Versand selbst, damit ein Fehler im Logging +// nie den eigentlichen Push verhindert. +function logPush({ userId = null, title = '', message = '', priority = 0, source = '', success = true }) { + try { + db.prepare(` + INSERT INTO push_log (user_id, title, message, priority, source, success, created_at) + VALUES (?, ?, ?, ?, ?, ?, datetime('now','localtime')) + `).run(userId, title, message, priority ?? 0, source, success ? 1 : 0); + } catch (e) { + console.error('Push-Log Fehler:', e.message); + } +} + +module.exports = { logPush }; diff --git a/backend/src/routes/admin.js b/backend/src/routes/admin.js new file mode 100644 index 0000000..83e0b0c --- /dev/null +++ b/backend/src/routes/admin.js @@ -0,0 +1,604 @@ +const express = require('express'); +const fs = require('fs'); +const bcrypt = require('bcryptjs'); +const multer = require('multer'); +const db = require('../db'); +const { logPush } = require('../pushLog'); +const { authenticate, requireAdmin } = require('../middleware/auth'); + +const router = express.Router(); +const DB_PATH = process.env.DB_PATH || '/data/dickendock.db'; +const upload = multer({ dest: '/tmp/' }); + +// GET /api/admin/backup +router.get('/backup', authenticate, requireAdmin, (req, res) => { + if (!fs.existsSync(DB_PATH)) return res.status(404).json({ error: 'DB nicht gefunden' }); + const date = new Date().toISOString().split('T')[0]; + res.download(DB_PATH, `dickendock-backup-${date}.db`); +}); + +// POST /api/admin/restore +router.post('/restore', authenticate, requireAdmin, upload.single('database'), (req, res) => { + if (!req.file) return res.status(400).json({ error: 'Keine Datei erhalten' }); + try { + if (fs.existsSync(DB_PATH)) fs.copyFileSync(DB_PATH, DB_PATH + '.bak'); + fs.copyFileSync(req.file.path, DB_PATH); + fs.unlinkSync(req.file.path); + res.json({ success: true }); + } catch (e) { + res.status(500).json({ error: e.message }); + } +}); + +// GET /api/admin/users – alle Benutzer mit Statistiken +router.get('/users', authenticate, requireAdmin, (req, res) => { + const users = db.prepare(` + SELECT u.id, u.username, u.role, u.created_at, u.last_active_at, u.hidden, u.hidden_tools, + CASE WHEN p.user_id IS NOT NULL THEN 1 ELSE 0 END as has_pushover + FROM users u + LEFT JOIN pushover_settings p ON p.user_id = u.id + ORDER BY u.role DESC, u.username + `).all(); + const stats = users.map(u => { + const archiv = db.prepare('SELECT COUNT(*) c FROM calculations WHERE user_id=?').get(u.id).c; + const bestellung = db.prepare('SELECT COUNT(*) c FROM orders WHERE user_id=?').get(u.id).c; + const snippets_c = db.prepare('SELECT COUNT(*) c FROM snippets WHERE user_id=?').get(u.id).c; + const todos = db.prepare('SELECT COUNT(*) c FROM todos WHERE user_id=?').get(u.id).c; + const links = db.prepare('SELECT COUNT(*) c FROM quick_links WHERE user_id=?').get(u.id).c; + const files = db.prepare('SELECT COUNT(*) c FROM files WHERE user_id=?').get(u.id).c; + const noteLen = (db.prepare('SELECT content FROM notes WHERE user_id=?').get(u.id)?.content || '').length; + const icals = db.prepare('SELECT COUNT(*) c FROM calendar_feeds WHERE user_id=?').get(u.id).c; + let hidden_tools = []; + try { hidden_tools = JSON.parse(u.hidden_tools || '[]'); } catch {} + return { ...u, hidden_tools, archiv, bestellung, snippets_c, todos, links, files, icals, noteLen }; + }); + res.json(stats); +}); + +// POST /api/admin/users – neuen Benutzer anlegen +router.post('/users', authenticate, requireAdmin, (req, res) => { + const { username, password, role = 'user' } = req.body; + if (!username?.trim() || username.trim().length < 3) + return res.status(400).json({ error: 'Benutzername mind. 3 Zeichen' }); + if (!password || password.length < 8) + return res.status(400).json({ error: 'Passwort mind. 8 Zeichen' }); + if (!['user','admin'].includes(role)) + return res.status(400).json({ error: 'Ungültige Rolle' }); + const exists = db.prepare('SELECT id FROM users WHERE username=?').get(username.trim()); + if (exists) return res.status(400).json({ error: 'Benutzername bereits vergeben' }); + const r = db.prepare('INSERT INTO users (username, password_hash, role) VALUES (?,?,?)') + .run(username.trim(), bcrypt.hashSync(password, 12), role); + res.json({ id: r.lastInsertRowid, username: username.trim(), role }); +}); + +// DELETE /api/admin/users/:id – Benutzer löschen +router.delete('/users/:id', authenticate, requireAdmin, (req, res) => { + const id = parseInt(req.params.id); + if (id === req.user.id) return res.status(400).json({ error: 'Du kannst dich nicht selbst löschen' }); + const user = db.prepare('SELECT * FROM users WHERE id=?').get(id); + if (!user) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + // Sicherstellen dass mindestens ein Admin bleibt + if (user.role === 'admin') { + const adminCount = db.prepare("SELECT COUNT(*) c FROM users WHERE role='admin'").get().c; + if (adminCount <= 1) return res.status(400).json({ error: 'Mindestens ein Administrator muss verbleiben' }); + } + // Cascade: alle Daten des Users löschen + db.prepare('DELETE FROM calculations WHERE user_id=?').run(id); + db.prepare('DELETE FROM orders WHERE user_id=?').run(id); + db.prepare('DELETE FROM todos WHERE user_id=?').run(id); + db.prepare('DELETE FROM quick_links WHERE user_id=?').run(id); + db.prepare('DELETE FROM notes WHERE user_id=?').run(id); + db.prepare('DELETE FROM users WHERE id=?').run(id); + res.json({ success: true }); +}); + +// PUT /api/admin/users/:id/reset-password – Passwort zurücksetzen +router.put('/users/:id/reset-password', authenticate, requireAdmin, (req, res) => { + const { newPassword } = req.body; + if (!newPassword || newPassword.length < 8) + return res.status(400).json({ error: 'Mind. 8 Zeichen' }); + const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.params.id); + if (!user) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('UPDATE users SET password_hash=? WHERE id=?').run(bcrypt.hashSync(newPassword, 12), req.params.id); + res.json({ success: true }); +}); + +// ── Login-Sicherheit Admin-Endpoints ───────────────────────────────────────── + +const getSetting = k => db.prepare('SELECT value FROM admin_settings WHERE key=?').get(k)?.value; + +// GET gesperrte Konten mit IPs +router.get('/lockouts', authenticate, requireAdmin, (req, res) => { + const locked = db.prepare(` + SELECT id, username, failed_attempts, locked_until, last_failed_at + FROM users + WHERE locked_until IS NOT NULL + ORDER BY locked_until DESC + `).all(); + + // IPs aus login_attempts hinzufügen + const result = locked.map(u => { + const ips = db.prepare(` + SELECT DISTINCT ip FROM login_attempts + WHERE username=? AND success=0 + ORDER BY created_at DESC LIMIT 10 + `).all(u.username).map(r => r.ip).filter(Boolean); + return { ...u, ips }; + }); + res.json(result); +}); + +// DELETE Sperre aufheben + Login-Versuche löschen +router.delete('/lockouts/:userId', authenticate, requireAdmin, (req, res) => { + const user = db.prepare('SELECT username FROM users WHERE id=?').get(req.params.userId); + if (user) { + db.prepare('DELETE FROM login_attempts WHERE username=?').run(user.username); + } + db.prepare('UPDATE users SET failed_attempts=0, locked_until=NULL, last_failed_at=NULL WHERE id=?') + .run(req.params.userId); + res.json({ ok: true }); +}); + +// GET Login-Einstellungen +router.get('/security-settings', authenticate, requireAdmin, (req, res) => { + res.json({ + login_max_attempts: getSetting('login_max_attempts') || '5', + login_lockout_minutes: getSetting('login_lockout_minutes') || '30', + }); +}); + +// PUT Login-Einstellungen +router.put('/security-settings', authenticate, requireAdmin, (req, res) => { + const { login_max_attempts, login_lockout_minutes } = req.body; + for (const [k, v] of [['login_max_attempts', login_max_attempts], ['login_lockout_minutes', login_lockout_minutes]]) { + if (v !== undefined) + db.prepare('INSERT OR REPLACE INTO admin_settings (key, value) VALUES (?, ?)').run(k, String(parseInt(v) || 0)); + } + res.json({ ok: true }); +}); + +// GET Login-Verlauf (letzte 50) +router.get('/login-log', authenticate, requireAdmin, (req, res) => { + res.json(db.prepare(` + SELECT * FROM login_attempts ORDER BY created_at DESC LIMIT 50 + `).all()); +}); + +// Toggle hidden +router.put('/users/:id/hidden', authenticate, requireAdmin, (req, res) => { + const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.params.id); + if (!user) return res.status(404).json({ error: 'Nicht gefunden' }); + const newHidden = user.hidden ? 0 : 1; + db.prepare('UPDATE users SET hidden=? WHERE id=?').run(newHidden, user.id); + res.json({ hidden: newHidden }); +}); + +// PUT /api/admin/users/:id/hidden-tools – Sidebar-Sichtbarkeit für einen User setzen +// body: { hidden_tools: ['schocken', 'paywallkiller', ...] } (tool-ids aus toolRegistry.js) +router.put('/users/:id/hidden-tools', authenticate, requireAdmin, (req, res) => { + const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.params.id); + if (!user) return res.status(404).json({ error: 'Nicht gefunden' }); + const { hidden_tools } = req.body; + if (!Array.isArray(hidden_tools)) return res.status(400).json({ error: 'hidden_tools muss ein Array sein' }); + const cleaned = [...new Set(hidden_tools.filter(t => typeof t === 'string'))]; + db.prepare('UPDATE users SET hidden_tools=? WHERE id=?').run(JSON.stringify(cleaned), user.id); + res.json({ hidden_tools: cleaned }); +}); + +// Test-Pushover an beliebigen User senden +router.post('/users/:id/test-push', authenticate, requireAdmin, async (req, res) => { + const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.params.id); + if (!user) return res.status(404).json({ error: 'Nicht gefunden' }); + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(user.id); + if (!poCfg?.app_token || !poCfg?.user_key) return res.status(400).json({ error: 'Kein Pushover eingerichtet' }); + const { message = 'Wat is mit meinen Fische?' } = req.body; + const title = '📣 DockStation'; + try { + const r = await fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ token: poCfg.app_token, user: poCfg.user_key, title, message, priority: 0 }), + }); + const d = await r.json(); + if (d.status === 1) { + logPush({ userId: user.id, title, message, priority: 0, source: 'admin-test' }); + res.json({ ok: true }); + } else { + logPush({ userId: user.id, title, message, priority: 0, source: 'admin-test', success: false }); + res.status(500).json({ error: d.errors?.join(', ') || 'Pushover-Fehler' }); + } + } catch(e) { + logPush({ userId: user.id, title, message, priority: 0, source: 'admin-test', success: false }); + res.status(500).json({ error: e.message }); + } +}); + +// ── WebDAV / Synology NAS Einstellungen ─────────────────────────────────── +router.get('/webdav', authenticate, requireAdmin, (req, res) => { + const get = k => db.prepare('SELECT value FROM admin_settings WHERE key=?').get(k)?.value || ''; + res.json({ + url: get('webdav_url'), + user: get('webdav_user'), + password: get('webdav_password'), + basePath: get('webdav_base_path') || '/dickendock', + enabled: get('webdav_enabled') === '1', + }); +}); + +router.put('/webdav', authenticate, requireAdmin, (req, res) => { + const { url, user, password, basePath, enabled } = req.body; + const set = (k, v) => db.prepare('INSERT OR REPLACE INTO admin_settings (key,value) VALUES (?,?)').run(k, v || ''); + set('webdav_url', url); + set('webdav_user', user); + set('webdav_password', password); + set('webdav_base_path', basePath || '/dickendock'); + set('webdav_enabled', enabled ? '1' : '0'); + res.json({ ok: true }); +}); + +router.post('/webdav/test', authenticate, requireAdmin, async (req, res) => { + // Temporär die gesendeten Werte zum Testen nutzen (noch nicht gespeichert) + const { url, user, password, basePath } = req.body; + try { + const https = require('https'); + const http = require('http'); + const base = new URL(url); + const testPath = (base.pathname.replace(/\/$/, '') + (basePath || '/dickendock')).replace(/\/+/g, '/'); + const mod = base.protocol === 'https:' ? https : http; + const auth = 'Basic ' + Buffer.from(`${user}:${password}`).toString('base64'); + + await new Promise((resolve, reject) => { + const req2 = mod.request({ + hostname: base.hostname, + port: base.port || (base.protocol === 'https:' ? 443 : 80), + path: testPath, + method: 'PROPFIND', + headers: { 'Authorization': auth, 'Depth': '0', 'Content-Type': 'application/xml' }, + rejectUnauthorized: false, + timeout: 8000, + }, r => { r.resume(); r.statusCode < 400 || r.statusCode === 404 ? resolve(r.statusCode) : reject(new Error(`HTTP ${r.statusCode}`)); }); + req2.on('error', reject); + req2.on('timeout', () => { req2.destroy(); reject(new Error('Timeout')); }); + req2.write(''); + req2.end(); + }); + + res.json({ ok: true }); + } catch(e) { + res.status(502).json({ error: e.message }); + } +}); + +// ── WebDAV Sync: alle lokalen Dateien auf NAS kopieren ──────────────────── +router.post('/webdav/sync', authenticate, requireAdmin, async (req, res) => { + const webdav = require('../tools/dateien/webdav'); + const nodePath = require('path'); + const fs = require('fs'); + const UPLOAD_DIR = process.env.UPLOAD_DIR || '/data/uploads'; + + const cfg = webdav.getConfig(); + if (!cfg.enabled) return res.status(400).json({ error: 'WebDAV nicht aktiviert' }); + + const results = { folders: 0, ok: 0, failed: 0, errors: [] }; + + try { + // ── Ordnerpfad rekursiv auflösen ─────────────────────────────────────── + function getFolderPath(folderId) { + if (!folderId) return ''; + const parts = []; + let cur = folderId; + const seen = new Set(); + while (cur) { + if (seen.has(cur)) break; seen.add(cur); + const fo = db.prepare('SELECT name, parent_id FROM folders WHERE id=?').get(cur); + if (!fo) break; + parts.unshift(fo.name.replace(/[\/]/g, '_')); + cur = fo.parent_id; + } + return parts.join('/'); + } + + // ── Schritt 1: User-Basisordner + alle DB-Ordner anlegen ─────────────── + const users = db.prepare('SELECT id, username FROM users ORDER BY id').all(); + for (const user of users) { + const userBase = webdav.userPath(cfg, user.username); + try { await webdav.mkdirp(userBase); results.folders++; } catch {} + try { await webdav.mkdirp(`${userBase}/_Upload-Freigaben`); } catch {} + + // Ordner iterativ sortieren (flach, nach Tiefe) + const allFolders = db.prepare('SELECT id, name, parent_id FROM folders WHERE user_id=? ORDER BY id').all(user.id); + const depthCache = {}; + function depth(fid) { + if (!fid) return 0; + if (depthCache[fid] !== undefined) return depthCache[fid]; + const fo = allFolders.find(f => f.id === fid); + depthCache[fid] = fo ? 1 + depth(fo.parent_id) : 0; + return depthCache[fid]; + } + const sorted = [...allFolders].sort((a, b) => depth(a.id) - depth(b.id)); + for (const folder of sorted) { + const fp = getFolderPath(folder.id); + if (fp) try { await webdav.mkdirp(`${userBase}/${fp}`); results.folders++; } catch {} + } + } + + // ── Schritt 2: Dateien hochladen ─────────────────────────────────────── + const files = db.prepare(` + SELECT f.*, u.username FROM files f + JOIN users u ON u.id = f.user_id + ORDER BY f.user_id, f.folder_id, f.id + `).all(); + + for (const file of files) { + const localPath = nodePath.join(UPLOAD_DIR, file.filename); + if (!fs.existsSync(localPath)) { + results.failed++; + results.errors.push(`${file.originalname}: lokale Datei fehlt`); + continue; + } + try { + const buf = fs.readFileSync(localPath); + const fp = getFolderPath(file.folder_id); + const base = webdav.userPath(cfg, file.username); + const davPath = fp ? `${base}/${fp}/${file.originalname}` : `${base}/${file.originalname}`; + await webdav.uploadFile(buf, davPath, file.mimetype || 'application/octet-stream'); + results.ok++; + } catch(e) { + results.failed++; + results.errors.push(`${file.originalname}: ${e.message}`); + } + } + + res.json({ + total: files.length, + ...results, + message: `${results.folders} Ordner angelegt, ${results.ok} Dateien kopiert${results.failed ? ', ' + results.failed + ' fehlgeschlagen' : ' – alles erfolgreich ✓'}`, + }); + + } catch(err) { + console.error('[webdav sync error]', err); + res.status(500).json({ error: err.message, ...results }); + } +}); + + +// ── Waisen aufräumen ────────────────────────────────────────────────────── +// Findet und löscht: +// 1. Dateien auf Disk die nicht in der DB sind (Disk-Waisen) +// 2. DB-Einträge die keine Datei auf Disk haben (DB-Waisen) +router.post('/cleanup-orphans', authenticate, requireAdmin, (req, res) => { + const { dry_run = false } = req.body; + const UPLOAD_DIR = process.env.UPLOAD_DIR || '/data/uploads'; + const path = require('path'); + const fs = require('fs'); + + const results = { + disk_orphans: [], // auf Disk aber nicht in DB + db_orphans: [], // in DB aber nicht auf Disk + disk_deleted: 0, + db_deleted: 0, + }; + + try { + // Alle Dateinamen aus DB + const dbFiles = db.prepare('SELECT id, filename, originalname, size FROM files').all(); + const dbFilenames = new Set(dbFiles.map(f => f.filename)); + + // Alle Dateien auf Disk + const diskFiles = fs.readdirSync(UPLOAD_DIR).filter(f => !f.startsWith('.')); + + // 1. Disk-Waisen: auf Disk aber nicht in DB + for (const diskFile of diskFiles) { + if (!dbFilenames.has(diskFile)) { + const fullPath = path.join(UPLOAD_DIR, diskFile); + const stat = fs.statSync(fullPath); + results.disk_orphans.push({ filename: diskFile, size: stat.size }); + if (!dry_run) { + try { fs.unlinkSync(fullPath); results.disk_deleted++; } catch(e) { + console.error('[cleanup] disk unlink failed:', diskFile, e.message); + } + } + } + } + + // 2. DB-Waisen: in DB aber nicht auf Disk + const diskFileset = new Set(diskFiles); + for (const dbFile of dbFiles) { + if (!diskFileset.has(dbFile.filename)) { + results.db_orphans.push({ id: dbFile.id, filename: dbFile.filename, originalname: dbFile.originalname }); + if (!dry_run) { + db.prepare('DELETE FROM files WHERE id=?').run(dbFile.id); + results.db_deleted++; + } + } + } + + res.json({ + dry_run, + disk_orphans_count: results.disk_orphans.length, + db_orphans_count: results.db_orphans.length, + disk_deleted: results.disk_deleted, + db_deleted: results.db_deleted, + disk_orphans: results.disk_orphans.slice(0, 50), + db_orphans: results.db_orphans.slice(0, 50), + }); + } catch(err) { + res.status(500).json({ error: err.message }); + } +}); + +// ── Disk-Analyse ────────────────────────────────────────────────────────── +router.get('/disk-analysis', authenticate, requireAdmin, (req, res) => { + const fs = require('fs'); + const path = require('path'); + + function dirSize(dirPath) { + let total = 0; + try { + for (const entry of fs.readdirSync(dirPath, { withFileTypes: true })) { + const full = path.join(dirPath, entry.name); + if (entry.isDirectory()) total += dirSize(full); + else try { total += fs.statSync(full).size; } catch {} + } + } catch {} + return total; + } + + function fmt(b) { + if (b < 1024) return b + ' B'; + if (b < 1024**2) return (b/1024).toFixed(1) + ' KB'; + if (b < 1024**3) return (b/1024**2).toFixed(1) + ' MB'; + return (b/1024**3).toFixed(2) + ' GB'; + } + + // Alle relevanten Verzeichnisse scannen + const locations = [ + '/data', + '/data/uploads', + '/tmp', + '/app', + '/root', + '/var/log', + '/var/lib/docker', + ]; + + const result = {}; + for (const loc of locations) { + if (fs.existsSync(loc)) { + result[loc] = { raw: dirSize(loc), fmt: fmt(dirSize(loc)) }; + } + } + + // DB-Größe + const dbPath = process.env.DB_PATH || '/data/db.sqlite'; + if (fs.existsSync(dbPath)) { + result['database'] = { raw: fs.statSync(dbPath).size, fmt: fmt(fs.statSync(dbPath).size) }; + } + + // /tmp Details + const tmpFiles = []; + try { + for (const f of fs.readdirSync('/tmp')) { + try { + const stat = fs.statSync('/tmp/' + f); + if (stat.size > 1024*1024) tmpFiles.push({ name: f, size: fmt(stat.size) }); + } catch {} + } + } catch {} + + // Node modules Größe + const nodeModules = '/app/node_modules'; + const nodeSize = fs.existsSync(nodeModules) ? dirSize(nodeModules) : 0; + + // Top 10 größte Dateien in /data + const bigFiles = []; + function scanBig(dir) { + try { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) scanBig(full); + else try { + const s = fs.statSync(full).size; + if (s > 5*1024*1024) bigFiles.push({ path: full, size: fmt(s), raw: s }); + } catch {} + } + } catch {} + } + scanBig('/data'); + bigFiles.sort((a,b) => b.raw - a.raw); + + res.json({ locations: result, tmpFiles, nodeModulesMb: fmt(nodeSize), bigFiles: bigFiles.slice(0,20) }); +}); + +// GET /push-logs – Übersicht aller verschickten Pushover-Nachrichten (Admin) +router.get('/push-logs', authenticate, requireAdmin, (req, res) => { + const limit = Math.min(parseInt(req.query.limit) || 200, 1000); + const logs = db.prepare(` + SELECT pl.id, pl.user_id, u.username, pl.title, pl.message, pl.priority, + pl.source, pl.success, pl.created_at + FROM push_log pl + LEFT JOIN users u ON u.id = pl.user_id + ORDER BY pl.id DESC + LIMIT ? + `).all(limit); + res.json(logs); +}); + +// GET /logs – kombinierte Übersicht: Pushover-Nachrichten + Besuche +// öffentlicher Links, für den Logs-Bereich mit Filter-Dropdown (Admin) +router.get('/logs', authenticate, requireAdmin, (req, res) => { + const limit = Math.min(parseInt(req.query.limit) || 200, 1000); + + const pushRows = db.prepare(` + SELECT pl.id, pl.user_id, u.username, pl.title, pl.message, pl.priority, + pl.source, pl.success, pl.created_at + FROM push_log pl + LEFT JOIN users u ON u.id = pl.user_id + ORDER BY pl.id DESC + LIMIT ? + `).all(limit).map(r => ({ + logType: 'pushover', + id: `push-${r.id}`, + created_at: r.created_at, + username: r.username, + title: r.title, + message: r.message, + priority: r.priority, + source: r.source, + success: !!r.success, + })); + + const accessRows = db.prepare(` + SELECT id, link_type, path, ip, location, device, link_name, created_at + FROM public_access_log + ORDER BY id DESC + LIMIT ? + `).all(limit).map(r => ({ + logType: 'public_access', + id: `access-${r.id}`, + created_at: r.created_at, + linkType: r.link_type, + path: r.path, + ip: r.ip, + location: r.location, + device: r.device, + linkName: r.link_name, + })); + + const combined = [...pushRows, ...accessRows] + .sort((a, b) => (b.created_at || '').localeCompare(a.created_at || '')) + .slice(0, limit); + + res.json(combined); +}); + +// DELETE /logs/:id – einzelnen Log-Eintrag löschen (Admin). Die ID trägt ein +// Präfix ("push-123" / "access-45"), damit klar ist, aus welcher Tabelle +// gelöscht werden muss. +router.delete('/logs/:id', authenticate, requireAdmin, (req, res) => { + const raw = req.params.id; + const [prefix, numStr] = raw.split('-'); + const numId = parseInt(numStr, 10); + if (!numId) return res.status(400).json({ error: 'Ungültige ID' }); + + if (prefix === 'push') { + db.prepare('DELETE FROM push_log WHERE id=?').run(numId); + } else if (prefix === 'access') { + db.prepare('DELETE FROM public_access_log WHERE id=?').run(numId); + } else { + return res.status(400).json({ error: 'Ungültige ID' }); + } + res.json({ ok: true }); +}); + +// GET /console-log/download – Live-Konsolen-Mitschnitt (letzte 24h) als +// Datei herunterladen (Admin) +router.get('/console-log/download', authenticate, requireAdmin, (req, res) => { + const { getLogFilePath } = require('../consoleLog'); + const filePath = getLogFilePath(); + if (!fs.existsSync(filePath)) return res.status(404).json({ error: 'Noch keine Logs vorhanden' }); + const stamp = new Date().toISOString().replace(/[:T]/g, '-').slice(0, 19); + res.download(filePath, `dickendock-console-${stamp}.log`); +}); + +module.exports = router; diff --git a/backend/src/routes/auth.js b/backend/src/routes/auth.js new file mode 100644 index 0000000..59976bc --- /dev/null +++ b/backend/src/routes/auth.js @@ -0,0 +1,179 @@ +const express = require('express'); +const bcrypt = require('bcryptjs'); +const jwt = require('jsonwebtoken'); +const db = require('../db'); +const { authenticate } = require('../middleware/auth'); + +const router = express.Router(); +const SECRET = process.env.JWT_SECRET || 'dev-secret'; + +const getSetting = k => db.prepare('SELECT value FROM admin_settings WHERE key=?').get(k)?.value; + +// ── Helpers ─────────────────────────────────────────────────────────────────── +function logAttempt(username, ip, success) { + db.prepare("INSERT INTO login_attempts (username, ip, success, created_at) VALUES (?,?,?,datetime('now','localtime'))") + .run(username, ip || 'unknown', success ? 1 : 0); +} + +function getClientIp(req) { + return req.headers['x-forwarded-for']?.split(',')[0]?.trim() || req.socket?.remoteAddress || 'unknown'; +} + +function checkAndLock(user) { + const maxAttempts = parseInt(getSetting('login_max_attempts') || '5'); + const lockoutMinutes = parseInt(getSetting('login_lockout_minutes') || '30'); + + // Gesperrt? + if (user.locked_until) { + const until = new Date(user.locked_until.replace(' ', 'T')); + if (until > new Date()) return { locked: true, until }; + // Sperre abgelaufen → zurücksetzen + db.prepare('UPDATE users SET failed_attempts=0, locked_until=NULL, last_failed_at=NULL WHERE id=?').run(user.id); + } + + // Fehlversuch zählen + const newAttempts = (user.failed_attempts || 0) + 1; + if (newAttempts >= maxAttempts) { + db.prepare(`UPDATE users SET failed_attempts=?, locked_until=datetime('now','localtime','+${lockoutMinutes} minutes'), last_failed_at=datetime('now','localtime') WHERE id=?`) + .run(newAttempts, user.id); + const until = new Date(Date.now() + lockoutMinutes * 60 * 1000); + return { locked: true, until, newLock: true }; + } + db.prepare("UPDATE users SET failed_attempts=?, last_failed_at=datetime('now','localtime') WHERE id=?") + .run(newAttempts, user.id); + return { locked: false, remaining: maxAttempts - newAttempts }; +} + +// ── POST /api/auth/login ────────────────────────────────────────────────────── +router.post('/login', (req, res) => { + const { username, password } = req.body; + const ip = getClientIp(req); + + if (!username || !password) + return res.status(400).json({ error: 'Benutzername und Passwort erforderlich' }); + + const user = db.prepare('SELECT * FROM users WHERE username = ?').get(username); + + // Unbekannter User → trotzdem loggen (kein Timing-Angriff) + if (!user) { + logAttempt(username, ip, false); + return res.status(401).json({ error: 'Benutzername oder Passwort falsch' }); + } + + // Gesperrt? + if (user.locked_until) { + const until = new Date(user.locked_until.replace(' ', 'T')); + if (until > new Date()) { + logAttempt(username, ip, false); + const min = Math.ceil((until - Date.now()) / 60000); + return res.status(403).json({ + error: `Konto gesperrt. Noch ${min} Minute${min !== 1 ? 'n' : ''} warten.`, + locked: true, + lockedUntil: until.toISOString(), + }); + } + // Abgelaufen → zurücksetzen + Attempts löschen + db.prepare('UPDATE users SET failed_attempts=0, locked_until=NULL, last_failed_at=NULL WHERE id=?').run(user.id); + db.prepare('DELETE FROM login_attempts WHERE username=?').run(username); + } + + // Passwort prüfen + const valid = bcrypt.compareSync(password, user.password_hash); + logAttempt(username, ip, valid); + + if (!valid) { + const result = checkAndLock(user); + if (result.locked) { + const min = parseInt(getSetting('login_lockout_minutes') || '30'); + return res.status(403).json({ + error: result.newLock + ? `Zu viele Fehlversuche. Konto für ${min} Minuten gesperrt.` + : `Konto gesperrt. Bitte später versuchen.`, + locked: true, + }); + } + return res.status(401).json({ + error: `Benutzername oder Passwort falsch. Noch ${result.remaining} Versuch${result.remaining !== 1 ? 'e' : ''}.`, + }); + } + + // Erfolgreich → Zähler zurücksetzen + Attempts löschen + db.prepare('UPDATE users SET failed_attempts=0, locked_until=NULL, last_failed_at=NULL WHERE id=?').run(user.id); + db.prepare('DELETE FROM login_attempts WHERE username=?').run(username); + + const token = jwt.sign( + { id: user.id, username: user.username, role: user.role }, + SECRET, { expiresIn: '7d' } + ); + res.json({ token, user: { id: user.id, username: user.username, role: user.role } }); +}); + +// ── POST /api/auth/change-password ─────────────────────────────────────────── +router.post('/change-password', authenticate, (req, res) => { + const { currentPassword, newPassword } = req.body; + const user = db.prepare('SELECT * FROM users WHERE id = ?').get(req.user.id); + if (!bcrypt.compareSync(currentPassword, user.password_hash)) + return res.status(400).json({ error: 'Aktuelles Passwort falsch' }); + if (!newPassword || newPassword.length < 8) + return res.status(400).json({ error: 'Mindestens 8 Zeichen erforderlich' }); + db.prepare('UPDATE users SET password_hash = ? WHERE id = ?') + .run(bcrypt.hashSync(newPassword, 12), req.user.id); + res.json({ success: true }); +}); + +// ── POST /api/auth/change-username ─────────────────────────────────────────── +router.post('/change-username', authenticate, (req, res) => { + const { newUsername, password } = req.body; + if (!newUsername || newUsername.trim().length < 3) + return res.status(400).json({ error: 'Mind. 3 Zeichen' }); + const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.user.id); + if (!bcrypt.compareSync(password, user.password_hash)) + return res.status(400).json({ error: 'Passwort falsch' }); + const exists = db.prepare('SELECT id FROM users WHERE username=? AND id!=?').get(newUsername.trim(), req.user.id); + if (exists) return res.status(400).json({ error: 'Benutzername bereits vergeben' }); + db.prepare('UPDATE users SET username=? WHERE id=?').run(newUsername.trim(), req.user.id); + const token = jwt.sign({ id: user.id, username: newUsername.trim(), role: user.role }, SECRET, { expiresIn: '7d' }); + res.json({ token, user: { id: user.id, username: newUsername.trim(), role: user.role } }); +}); + +// ── DELETE /api/auth/account ────────────────────────────────────────────────── +router.delete('/account', authenticate, (req, res) => { + const { password } = req.body; + const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.user.id); + if (!password || !bcrypt.compareSync(password, user.password_hash)) + return res.status(400).json({ error: 'Passwort falsch' }); + if (user.role === 'admin') { + const adminCount = db.prepare("SELECT COUNT(*) c FROM users WHERE role='admin'").get().c; + if (adminCount <= 1) return res.status(400).json({ error: 'Letzter Admin kann nicht gelöscht werden' }); + } + db.prepare('DELETE FROM users WHERE id=?').run(req.user.id); + res.json({ success: true }); +}); + +// ── GET/PUT /api/auth/preferences ───────────────────────────────────────────── +router.get('/preferences', authenticate, (req, res) => { + const user = db.prepare('SELECT preferences FROM users WHERE id=?').get(req.user.id); + try { res.json(JSON.parse(user?.preferences || '{}')); } + catch { res.json({}); } +}); + +router.put('/preferences', authenticate, (req, res) => { + const user = db.prepare('SELECT preferences FROM users WHERE id=?').get(req.user.id); + let current = {}; + try { current = JSON.parse(user?.preferences || '{}'); } catch {} + const merged = { ...current, ...req.body }; + db.prepare('UPDATE users SET preferences=? WHERE id=?').run(JSON.stringify(merged), req.user.id); + res.json(merged); +}); + +// ── GET /api/auth/hidden-tools ──────────────────────────────────────────────── +// Liefert die vom Admin für diesen Nutzer ausgeblendeten Sidebar-Bereiche. +// Bewusst NICHT über /preferences (das ist selbst-editierbar) — Sichtbarkeit +// darf nur der Admin ändern. +router.get('/hidden-tools', authenticate, (req, res) => { + const user = db.prepare('SELECT hidden_tools FROM users WHERE id=?').get(req.user.id); + try { res.json(JSON.parse(user?.hidden_tools || '[]')); } + catch { res.json([]); } +}); + +module.exports = router; diff --git a/backend/src/routes/calendar.js b/backend/src/routes/calendar.js new file mode 100644 index 0000000..0562f31 --- /dev/null +++ b/backend/src/routes/calendar.js @@ -0,0 +1,69 @@ +const express = require('express'); +const https = require('https'); +const http = require('http'); +const db = require('../db'); +const { authenticate } = require('../middleware/auth'); +const router = express.Router(); + +// Fetch mit Redirect-Unterstützung +function fetchWithRedirects(url, hops = 0) { + return new Promise((resolve, reject) => { + if (hops > 5) return reject(new Error('Zu viele Redirects')); + let parsed; + try { parsed = new URL(url); } catch { return reject(new Error('Ungültige URL')); } + const lib = parsed.protocol === 'https:' ? https : http; + const req = lib.get(url, { + headers: { 'User-Agent': 'Mozilla/5.0 DickenDock/1.0', 'Accept': 'text/calendar, text/plain, */*' } + }, res => { + if ([301,302,303,307,308].includes(res.statusCode) && res.headers.location) { + const next = res.headers.location.startsWith('http') + ? res.headers.location + : new URL(res.headers.location, url).href; + res.destroy(); + return fetchWithRedirects(next, hops + 1).then(resolve).catch(reject); + } + if (res.statusCode !== 200) return reject(new Error(`HTTP ${res.statusCode}`)); + let data = ''; + res.setEncoding('utf8'); + res.on('data', d => { data += d; if (data.length > 3*1024*1024) { res.destroy(); reject(new Error('Feed zu groß')); } }); + res.on('end', () => resolve(data)); + }); + req.on('error', reject); + req.setTimeout(10000, () => { req.destroy(); reject(new Error('Timeout')); }); + }); +} + +// GET /fetch?url=... +router.get('/fetch', authenticate, async (req, res) => { + const { url } = req.query; + if (!url) return res.status(400).json({ error: 'URL fehlt' }); + try { new URL(url); } catch { return res.status(400).json({ error: 'Ungültige URL' }); } + try { + const data = await fetchWithRedirects(url); + if (!data.includes('BEGIN:VCALENDAR')) + return res.status(502).json({ error: 'Kein gültiger iCal-Feed' }); + res.type('text/calendar; charset=utf-8').send(data); + } catch(e) { res.status(502).json({ error: e.message }); } +}); + +// GET /feeds +router.get('/feeds', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM calendar_feeds WHERE user_id=? ORDER BY id').all(req.user.id)); +}); + +// POST /feeds +router.post('/feeds', authenticate, (req, res) => { + const { name, url, color='#4ecdc4' } = req.body; + if (!name?.trim() || !url?.trim()) return res.status(400).json({ error: 'Name und URL erforderlich' }); + const r = db.prepare('INSERT INTO calendar_feeds (user_id,name,url,color) VALUES (?,?,?,?)').run(req.user.id, name.trim(), url.trim(), color); + res.json(db.prepare('SELECT * FROM calendar_feeds WHERE id=?').get(r.lastInsertRowid)); +}); + +// DELETE /feeds/:id +router.delete('/feeds/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM calendar_feeds WHERE id=? AND user_id=?').run(req.params.id, req.user.id); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ success: true }); +}); + +module.exports = router; diff --git a/backend/src/routes/dashboard.js b/backend/src/routes/dashboard.js new file mode 100644 index 0000000..5262f22 --- /dev/null +++ b/backend/src/routes/dashboard.js @@ -0,0 +1,330 @@ +const express = require('express'); +const db = require('../db'); +const { authenticate, requireAdmin } = require('../middleware/auth'); +const router = express.Router(); +const uid = req => req.user.id; + +// ── Quick Links ─────────────────────────────────────────────────────────────── +router.get('/links', authenticate, (req, res) => { + const id = uid(req); + // Rückwärtskomp: bestehende quick_links + neue link_list-Einträge mit in_quickaccess=1 + Ordner mit in_quickaccess=1 + const legacy = db.prepare("SELECT *, 'quicklink' as item_type FROM quick_links WHERE user_id=? ORDER BY sort_order,id").all(id); + const listLinks = db.prepare("SELECT *, 'link_list' as item_type FROM link_list WHERE user_id=? AND in_quickaccess=1 ORDER BY sort_order,id").all(id); + const folders = db.prepare("SELECT *, 'folder' as item_type FROM link_list_folders WHERE user_id=? AND in_quickaccess=1 ORDER BY sort_order,id").all(id); + res.json([...legacy, ...listLinks, ...folders]); +}); +router.post('/links', authenticate, (req, res) => { + const { title, url, icon = '🔗' } = req.body; + if (!title || !url) return res.status(400).json({ error: 'Titel und URL erforderlich' }); + const max = db.prepare('SELECT MAX(sort_order) m FROM quick_links WHERE user_id=?').get(uid(req)); + const r = db.prepare('INSERT INTO quick_links (user_id,title,url,icon,sort_order) VALUES (?,?,?,?,?)') + .run(uid(req), title, url, icon, (max?.m ?? -1) + 1); + res.json(db.prepare('SELECT * FROM quick_links WHERE id=?').get(r.lastInsertRowid)); +}); +router.put('/links/:id', authenticate, (req, res) => { + const ex = db.prepare('SELECT * FROM quick_links WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!ex) return res.status(404).json({ error: 'Nicht gefunden' }); + const { title=ex.title, url=ex.url, icon=ex.icon } = req.body; + db.prepare('UPDATE quick_links SET title=?,url=?,icon=? WHERE id=? AND user_id=?') + .run(title, url, icon, req.params.id, uid(req)); + res.json(db.prepare('SELECT * FROM quick_links WHERE id=?').get(req.params.id)); +}); +router.delete('/links/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM quick_links WHERE id=? AND user_id=?').run(req.params.id, uid(req)); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ success: true }); +}); + +router.put('/links-order', authenticate, (req, res) => { + const { ids } = req.body; + if (!Array.isArray(ids)) return res.status(400).json({ error: 'ids erforderlich' }); + const update = db.prepare('UPDATE quick_links SET sort_order=? WHERE id=? AND user_id=?'); + db.transaction(() => { ids.forEach((id, i) => update.run(i, id, uid(req))); })(); + res.json({ ok: true }); +}); + +// ── Todos ───────────────────────────────────────────────────────────────────── +router.get('/todos', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM todos WHERE user_id=? ORDER BY done,sort_order,id').all(uid(req))); +}); +router.post('/todos', authenticate, (req, res) => { + const { text } = req.body; + if (!text?.trim()) return res.status(400).json({ error: 'Text erforderlich' }); + const max = db.prepare('SELECT MAX(sort_order) m FROM todos WHERE user_id=?').get(uid(req)); + const r = db.prepare('INSERT INTO todos (user_id,text,sort_order) VALUES (?,?,?)') + .run(uid(req), text.trim(), (max?.m ?? -1) + 1); + res.json(db.prepare('SELECT * FROM todos WHERE id=?').get(r.lastInsertRowid)); +}); +router.put('/todos/:id', authenticate, (req, res) => { + const ex = db.prepare('SELECT * FROM todos WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!ex) return res.status(404).json({ error: 'Nicht gefunden' }); + const text = req.body.text ?? ex.text; + const done = req.body.done !== undefined ? (req.body.done ? 1 : 0) : ex.done; + db.prepare('UPDATE todos SET text=?,done=? WHERE id=? AND user_id=?').run(text, done, req.params.id, uid(req)); + res.json(db.prepare('SELECT * FROM todos WHERE id=?').get(req.params.id)); +}); +router.delete('/todos/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM todos WHERE id=? AND user_id=?').run(req.params.id, uid(req)); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ success: true }); +}); + +// ── Notizen ─────────────────────────────────────────────────────────────────── +router.get('/note', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM notes WHERE user_id=?').get(uid(req)) || { content: '', updated_at: null }); +}); +router.put('/note', authenticate, (req, res) => { + db.prepare(`INSERT INTO notes (user_id,content,updated_at) VALUES (?,?,CURRENT_TIMESTAMP) + ON CONFLICT(user_id) DO UPDATE SET content=excluded.content,updated_at=CURRENT_TIMESTAMP`) + .run(uid(req), req.body.content ?? ''); + res.json({ success: true, updated_at: new Date().toISOString() }); +}); + + +// ── Statistiken ─────────────────────────────────────────────────────────────── +router.get('/stats', authenticate, (req, res) => { + const uid = req.user.id; + + const orders = db.prepare(` + SELECT status, bezahlt, + SUM(COALESCE(custom_price_sum_view,0)) AS revenue + FROM ( + SELECT o.status, o.bezahlt, + SUM(COALESCE(oi.custom_price,0)*COALESCE(oi.stueckzahl,0)) AS custom_price_sum_view + FROM orders o + LEFT JOIN order_items oi ON oi.order_id=o.id + WHERE o.user_id=? + GROUP BY o.id + ) + GROUP BY status, bezahlt + `).all(uid); + + const totalOrders = db.prepare('SELECT COUNT(*) c FROM orders WHERE user_id=?').get(uid).c; + const bezahltOrders = db.prepare('SELECT COUNT(*) c FROM orders WHERE user_id=? AND bezahlt=1 AND (abgeholt=0 OR abgeholt IS NULL)').get(uid).c; + // Revenue: Gesamt-Festpreis hat Priorität, sonst Summe der Positions-Festpreise + const paidOrders = db.prepare('SELECT * FROM orders WHERE user_id=? AND bezahlt=1').all(uid); + let totalRevenue = 0; + for (const o of paidOrders) { + if (o.custom_price != null) { + totalRevenue += parseFloat(o.custom_price); + } else { + const sum = db.prepare('SELECT COALESCE(SUM(custom_price*stueckzahl),0) s FROM order_items WHERE order_id=? AND custom_price IS NOT NULL').get(o.id).s; + totalRevenue += sum; + } + } + + const openOrders = db.prepare("SELECT * FROM orders WHERE user_id=? AND bezahlt=0 AND status!='warteliste'").all(uid); + let offeneRevenue = 0; + for (const o of openOrders) { + if (o.custom_price != null) { + offeneRevenue += parseFloat(o.custom_price); + } else { + const sum = db.prepare('SELECT COALESCE(SUM(custom_price*stueckzahl),0) s FROM order_items WHERE order_id=? AND custom_price IS NOT NULL').get(o.id).s; + offeneRevenue += sum; + } + } + const thisMonth = new Date(); + thisMonth.setDate(1); thisMonth.setHours(0,0,0,0); + const ordersThisMonth = db.prepare('SELECT COUNT(*) c FROM orders WHERE user_id=? AND created_at>=?').get(uid, thisMonth.toISOString()).c; + const totalCalcs = db.prepare('SELECT COUNT(*) c FROM calculations WHERE user_id=?').get(uid).c; + + const byStatus = { warteliste:0, in_arbeit:0, fertig:0 }; + for (const r of db.prepare('SELECT status, COUNT(*) c FROM orders WHERE user_id=? AND bezahlt=0 GROUP BY status').all(uid)) { + byStatus[r.status] = r.c; + } + + // Grundkosten berechnen (preis_freundschaft = Selbstkosten pro Stück aus Kalkulation) + function getBaseCost(orderId) { + const items = db.prepare(` + SELECT oi.stueckzahl, oi.custom_price, + COALESCE(c.preis_freundschaft, oi.preis_freundschaft) as basis + FROM order_items oi + LEFT JOIN calculations c ON c.id = oi.calculation_id + WHERE oi.order_id = ? + `).all(orderId); + return items.reduce((sum, i) => sum + (i.basis * i.stueckzahl), 0); + } + + function getRevenue(order) { + if (order.custom_price != null) return parseFloat(order.custom_price); + return db.prepare('SELECT COALESCE(SUM(custom_price*stueckzahl),0) s FROM order_items WHERE order_id=? AND custom_price IS NOT NULL').get(order.id).s; + } + + let totalProfit = 0; + for (const o of paidOrders) { + const rev = getRevenue(o); + const cost = getBaseCost(o.id); + totalProfit += rev - cost; + } + + let offeneProfit = 0; + for (const o of openOrders) { + const rev = getRevenue(o); + const cost = getBaseCost(o.id); + offeneProfit += rev - cost; + } + + res.json({ totalOrders, bezahltOrders, totalRevenue, offeneRevenue, ordersThisMonth, totalCalcs, byStatus, totalProfit, offeneProfit }); +}); + +// ── Ideen-Board ─────────────────────────────────────────────────────────────── +router.get('/board', authenticate, (req, res) => { + const u = uid(req); + const items = db.prepare(` + SELECT b.*, us.username as author + FROM board_items b JOIN users us ON us.id=b.user_id + ORDER BY b.type ASC, b.created_at DESC + `).all(); + + const lastRead = db.prepare('SELECT last_read FROM board_reads WHERE user_id=?').get(u)?.last_read; + const unread = lastRead + ? db.prepare("SELECT COUNT(*) c FROM board_items WHERE created_at > ? AND user_id != ?").get(lastRead, u).c + : db.prepare('SELECT COUNT(*) c FROM board_items WHERE user_id != ?').get(u).c; + + res.json({ items, unread }); +}); + +router.get('/board/unread', authenticate, (req, res) => { + const u = uid(req); + const lastRead = db.prepare('SELECT last_read FROM board_reads WHERE user_id=?').get(u)?.last_read; + const unread = lastRead + ? db.prepare("SELECT COUNT(*) c FROM board_items WHERE created_at > ? AND user_id != ?").get(lastRead, u).c + : db.prepare('SELECT COUNT(*) c FROM board_items WHERE user_id != ?').get(u).c; + const unreadPromoted = lastRead + ? db.prepare("SELECT COUNT(*) c FROM board_items WHERE promoted_at > ?").get(lastRead).c + : db.prepare("SELECT COUNT(*) c FROM board_items WHERE promoted_at IS NOT NULL").get().c; + res.json({ unread, unreadPromoted }); +}); + +router.post('/board/read', authenticate, (req, res) => { + const u = uid(req); + db.prepare(`INSERT OR REPLACE INTO board_reads (user_id, last_read) VALUES (?, datetime('now','localtime'))`).run(u); + res.json({ ok: true }); +}); + +router.post('/board', authenticate, (req, res) => { + const u = uid(req); + const { type, title, description = '' } = req.body; + if (!['roadmap','wish'].includes(type)) return res.status(400).json({ error: 'Ungültiger Typ' }); + if (type === 'roadmap' && req.user.role !== 'admin') return res.status(403).json({ error: 'Nur Admins' }); + if (!title?.trim()) return res.status(400).json({ error: 'Titel erforderlich' }); + const r = db.prepare(`INSERT INTO board_items (type, user_id, title, description, created_at) VALUES (?,?,?,?,datetime('now','localtime'))`) + .run(type, u, title.trim(), description.trim()); + res.json({ ...db.prepare('SELECT * FROM board_items WHERE id=?').get(r.lastInsertRowid), + author: req.user.username }); +}); + +router.put('/board/:id', authenticate, (req, res) => { + const item = db.prepare('SELECT * FROM board_items WHERE id=?').get(req.params.id); + if (!item) return res.status(404).json({ error: 'Nicht gefunden' }); + const isAdmin = req.user.role === 'admin'; + const isOwn = item.user_id === uid(req); + if (!isAdmin && (!isOwn || item.type === 'roadmap')) return res.status(403).json({ error: 'Kein Zugriff' }); + const { title, description } = req.body; + db.prepare('UPDATE board_items SET title=?, description=? WHERE id=?') + .run(title ?? item.title, description ?? item.description, item.id); + res.json({ ...db.prepare('SELECT * FROM board_items WHERE id=?').get(item.id), author: req.user.username }); +}); + +router.delete('/board/:id', authenticate, (req, res) => { + const item = db.prepare('SELECT * FROM board_items WHERE id=?').get(req.params.id); + if (!item) return res.status(404).json({ error: 'Nicht gefunden' }); + const isAdmin = req.user.role === 'admin'; + const isOwn = item.user_id === uid(req); + if (!isAdmin && !isOwn) return res.status(403).json({ error: 'Kein Zugriff' }); + db.prepare('DELETE FROM board_items WHERE id=?').run(item.id); + res.json({ ok: true }); +}); + +// Wunsch zur Roadmap befördern (Admin only) +router.post('/board/:id/promote', authenticate, (req, res) => { + if (req.user.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + const item = db.prepare('SELECT * FROM board_items WHERE id=?').get(req.params.id); + if (!item) return res.status(404).json({ error: 'Nicht gefunden' }); + if (item.type !== 'wish') return res.status(400).json({ error: 'Nur Wünsche können befördert werden' }); + db.prepare("UPDATE board_items SET type='roadmap', promoted_from_wish=1, promoted_at=datetime('now','localtime') WHERE id=?").run(item.id); + const updated = db.prepare(` + SELECT b.*, u.username as author FROM board_items b + JOIN users u ON u.id=b.user_id WHERE b.id=? + `).get(item.id); + res.json(updated); +}); + +// ── Changelog ───────────────────────────────────────────────────────────────── +router.get('/changelog', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM changelog ORDER BY created_at DESC').all()); +}); + +router.get('/changelog/unread', authenticate, (req, res) => { + const u = req.user.id; + const lastRead = db.prepare('SELECT last_read FROM changelog_reads WHERE user_id=?').get(u)?.last_read; + const count = lastRead + ? db.prepare('SELECT COUNT(*) c FROM changelog WHERE created_at > ?').get(lastRead).c + : db.prepare('SELECT COUNT(*) c FROM changelog').get().c; + res.json({ unread: count }); +}); + +router.post('/changelog/read', authenticate, (req, res) => { + db.prepare(`INSERT OR REPLACE INTO changelog_reads (user_id, last_read) VALUES (?, datetime('now','localtime'))`) + .run(req.user.id); + res.json({ ok: true }); +}); + +router.post('/changelog', authenticate, requireAdmin, (req, res) => { + const { version, title, body, build_time } = req.body; + if (!version?.trim() || !title?.trim()) return res.status(400).json({ error: 'Version und Titel erforderlich' }); + const r = db.prepare(`INSERT INTO changelog (version, title, body, build_time, created_at) VALUES (?,?,?,?,datetime('now','localtime'))`) + .run(version.trim(), title.trim(), body?.trim() || '', build_time || null); + res.json(db.prepare('SELECT * FROM changelog WHERE id=?').get(r.lastInsertRowid)); +}); + +router.delete('/changelog/:id', authenticate, requireAdmin, (req, res) => { + db.prepare('DELETE FROM changelog WHERE id=?').run(req.params.id); + res.json({ ok: true }); +}); + +// ── Push-Zeitplaner ─────────────────────────────────────────────────────────── +router.get('/push-schedules', authenticate, (req, res) => { + const rows = db.prepare(` + SELECT * FROM push_schedules + WHERE user_id=? AND sent=0 AND scheduled_at > datetime('now','localtime') + ORDER BY scheduled_at ASC + `).all(uid(req)); + res.json(rows); +}); + +router.post('/push-schedules', authenticate, (req, res) => { + const { message, scheduled_at } = req.body; + if (!message?.trim() || !scheduled_at) return res.status(400).json({ error: 'Nachricht und Zeitpunkt erforderlich' }); + // Normalisieren: T→Leerzeichen, Sekunden ergänzen + const normalized = scheduled_at.replace('T',' ') + (scheduled_at.length <= 16 ? ':00' : ''); + const r = db.prepare(` + INSERT INTO push_schedules (user_id, message, scheduled_at, created_at) + VALUES (?, ?, ?, datetime('now','localtime')) + `).run(uid(req), message.trim(), normalized); + res.json(db.prepare('SELECT * FROM push_schedules WHERE id=?').get(r.lastInsertRowid)); +}); + +router.put('/push-schedules/:id', authenticate, (req, res) => { + const row = db.prepare('SELECT * FROM push_schedules WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!row) return res.status(404).json({ error: 'Nicht gefunden' }); + const { message, scheduled_at } = req.body; + const normalized = scheduled_at ? scheduled_at.replace('T',' ') + (scheduled_at.length <= 16 ? ':00' : '') : row.scheduled_at; + db.prepare('UPDATE push_schedules SET message=?, scheduled_at=?, sent=0 WHERE id=?') + .run(message ?? row.message, normalized, row.id); + res.json(db.prepare('SELECT * FROM push_schedules WHERE id=?').get(row.id)); +}); + +router.delete('/push-schedules/:id', authenticate, (req, res) => { + db.prepare('DELETE FROM push_schedules WHERE id=? AND user_id=?').run(req.params.id, uid(req)); + res.json({ ok: true }); +}); + +// Unquittierte Favoriten für Admin-Dashboard-Badge +router.get('/media-favorites/unacked', authenticate, (req, res) => { + if (req.user.role !== 'admin') return res.json({ count: 0 }); + const count = db.prepare('SELECT COUNT(*) as n FROM movie_favorites WHERE acknowledged=0').get(); + res.json({ count: count.n }); +}); + +module.exports = router; diff --git a/backend/src/routes/search.js b/backend/src/routes/search.js new file mode 100644 index 0000000..4d6daef --- /dev/null +++ b/backend/src/routes/search.js @@ -0,0 +1,260 @@ +const express = require('express'); +const https = require('https'); +const http = require('http'); +const db = require('../db'); +const { authenticate } = require('../middleware/auth'); +const router = express.Router(); + +const safe = fn => { try { return fn(); } catch { return []; } }; +const safeGet = fn => { try { return fn(); } catch { return null; } }; + +// ── iCal Fetch + Parse ──────────────────────────────────────────────────────── +function fetchIcal(url) { + return new Promise(resolve => { + try { + const parsed = new URL(url); + const lib = parsed.protocol === 'https:' ? https : http; + const req = lib.get(url, { + headers: { 'User-Agent': 'Mozilla/5.0 DickenDock/1.0', 'Accept': 'text/calendar,*/*' } + }, res => { + // Redirects verfolgen + if ([301,302,303,307,308].includes(res.statusCode) && res.headers.location) { + res.destroy(); + const next = res.headers.location.startsWith('http') + ? res.headers.location : new URL(res.headers.location, url).href; + fetchIcal(next).then(resolve); + return; + } + let data = ''; + res.on('data', d => { data += d; if (data.length > 1e6) { res.destroy(); resolve(null); } }); + res.on('end', () => resolve(data.includes('BEGIN:VCALENDAR') ? data : null)); + }); + req.on('error', () => resolve(null)); + req.setTimeout(10000, () => { req.destroy(); resolve(null); }); + } catch { resolve(null); } + }); +} + +function parseIcal(raw) { + const events = []; + const parts = raw.split('BEGIN:VEVENT'); + for (let i = 1; i < parts.length; i++) { + const b = parts[i]; + const get = key => { + // Handle folded lines and key variants like DTSTART;TZID=... + const m = b.match(new RegExp(key + '[^:]*:([^\\r\\n]+)')); + return m ? m[1].replace(/\\n/g,' ').replace(/\\,/g,',').replace(/\\;/g,';').trim() : ''; + }; + const summary = get('SUMMARY'); + if (!summary) continue; + events.push({ summary, description:get('DESCRIPTION'), location:get('LOCATION'), start:get('DTSTART'), end:get('DTEND') }); + } + return events; +} + +// ── Kalender-Sync Endpoint (POST /api/search/sync-calendar) ────────────────── +// Frontend ruft das beim Dashboard-Laden auf — kein Sync beim Suchen selbst +router.post('/sync-calendar', authenticate, async (req, res) => { + const uid = req.user.id; + const force = req.body?.force === true; + + const feeds = safeGet(() => db.prepare('SELECT * FROM calendar_feeds WHERE user_id=?').all(uid)) || []; + if (!feeds.length) return res.json({ ok: true, synced: 0, message: 'Keine Kalender-Abos vorhanden' }); + + // Alter des Caches prüfen + // Alte Cache-Prüfung: Wenn noch historische Events drin (start_dt < 2000), force-sync + const hasOldData = safeGet(() => + db.prepare("SELECT 1 FROM calendar_event_cache WHERE user_id=? AND start_dt < '20200101' LIMIT 1").get(uid) + ); + if (!force && !hasOldData) { + const lastSync = safeGet(() => + db.prepare("SELECT MAX(synced_at) as s FROM calendar_event_cache WHERE user_id=?").get(uid)?.s + ); + if (lastSync && (Date.now() - new Date(lastSync).getTime()) < 10 * 60 * 1000) { + return res.json({ ok: true, synced: 0, message: 'Cache noch frisch' }); + } + } + + let totalSynced = 0; + const errors = []; + + for (const feed of feeds) { + try { + const raw = await fetchIcal(feed.url); + if (!raw) { errors.push(`${feed.name}: kein gültiger iCal-Feed`); continue; } + const events = parseIcal(raw); + if (!events.length) { errors.push(`${feed.name}: 0 Events geparst`); continue; } + + // Nur zukünftige Events speichern (ab gestern rückwärts 1 Tag für Tagesevents) + // start_dt Format: YYYYMMDD oder YYYYMMDDTHHmmssZ → string-vergleichbar + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + const minDt = yesterday.toISOString().replace(/-/g,'').slice(0,8); // '20260604' + const futureEvents = events.filter(ev => !ev.start || ev.start >= minDt); + + // prepare INSIDE try-catch – wirft wenn Tabelle nicht existiert + const ins = db.prepare(` + INSERT INTO calendar_event_cache + (feed_id, user_id, summary, description, location, start_dt, end_dt, synced_at) + VALUES (?,?,?,?,?,?,?,datetime('now','localtime')) + `); + db.transaction(() => { + db.prepare('DELETE FROM calendar_event_cache WHERE feed_id=?').run(feed.id); + futureEvents.slice(0, 500).forEach(ev => + ins.run(feed.id, uid, ev.summary||'', ev.description||'', ev.location||'', ev.start||'', ev.end||'') + ); + })(); + totalSynced += futureEvents.length; + } catch(e) { + console.error(`[CalendarSync] Feed "${feed.name}" (${feed.url}): ${e.message}`); + errors.push(`${feed.name}: ${e.message}`); + } + } + + console.log(`[CalendarSync] uid=${uid} synced=${totalSynced} feeds=${feeds.length} errors=${errors.length}`); + res.json({ ok: true, synced: totalSynced, feeds: feeds.length, errors }); +}); + +// ── Suche ───────────────────────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const q = (req.query.q || '').trim(); + const uid = req.user.id; + + if (q.length < 2) return res.json({ + links:[], folders:[], snippets:[], calculations:[], orders:[], + todos:[], notes:[], board_items:[], changelog:[], + files:[], file_folders:[], push_schedules:[], + calendar_feeds:[], calendar_events:[], qr_codes:[] + }); + + const like = `%${q.toLowerCase()}%`; + + const links = safe(() => db.prepare(` + SELECT id, title, url, icon, description FROM link_list + WHERE user_id=? AND (LOWER(title) LIKE ? OR LOWER(url) LIKE ? OR LOWER(description) LIKE ?) + ORDER BY title LIMIT 8 + `).all(uid, like, like, like)); + + const folders = safe(() => db.prepare(` + SELECT id, name, icon FROM link_list_folders + WHERE user_id=? AND LOWER(name) LIKE ? ORDER BY name LIMIT 5 + `).all(uid, like)); + + const snippets = safe(() => db.prepare(` + SELECT id, title, description, language FROM snippets + WHERE user_id=? AND (LOWER(title) LIKE ? OR LOWER(description) LIKE ?) + ORDER BY title LIMIT 6 + `).all(uid, like, like)); + + const calculations = safe(() => db.prepare(` + SELECT id, name FROM calculations + WHERE user_id=? AND LOWER(name) LIKE ? ORDER BY name LIMIT 5 + `).all(uid, like)); + + const orders = safe(() => db.prepare(` + SELECT id, name, status FROM orders + WHERE user_id=? AND LOWER(name) LIKE ? ORDER BY name LIMIT 5 + `).all(uid, like)); + + const todos = safe(() => db.prepare(` + SELECT id, text, done FROM todos + WHERE user_id=? AND LOWER(text) LIKE ? + ORDER BY done, created_at DESC LIMIT 6 + `).all(uid, like)); + + const noteRow = safeGet(() => db.prepare( + 'SELECT content FROM notes WHERE user_id=? AND LOWER(content) LIKE ?' + ).get(uid, like)); + const notes = noteRow ? [(() => { + const idx = noteRow.content.toLowerCase().indexOf(q.toLowerCase()); + const s = Math.max(0, idx - 30); + return { id:'note', preview: (s>0?'…':'') + noteRow.content.slice(s, idx+60) + '…' }; + })()] : []; + + const board_items = safe(() => db.prepare(` + SELECT id, title, description, type FROM board_items + WHERE user_id=? AND (LOWER(title) LIKE ? OR LOWER(description) LIKE ?) + ORDER BY created_at DESC LIMIT 5 + `).all(uid, like, like)); + + const changelog = safe(() => db.prepare(` + SELECT id, version, title, body FROM changelog + WHERE LOWER(title) LIKE ? OR LOWER(body) LIKE ? + ORDER BY created_at DESC LIMIT 4 + `).all(like, like)); + + const files = safe(() => db.prepare(` + SELECT id, originalname, mimetype, size FROM files + WHERE user_id=? AND (LOWER(originalname) LIKE ? OR LOWER(filename) LIKE ?) + ORDER BY originalname LIMIT 6 + `).all(uid, like, like)); + + const file_folders = safe(() => db.prepare(` + SELECT id, name FROM folders + WHERE user_id=? AND LOWER(name) LIKE ? ORDER BY name LIMIT 5 + `).all(uid, like)); + + const push_schedules = safe(() => db.prepare(` + SELECT id, message, scheduled_at FROM push_schedules + WHERE user_id=? AND LOWER(message) LIKE ? AND sent=0 + ORDER BY scheduled_at LIMIT 5 + `).all(uid, like)); + + const calendar_feeds = safe(() => db.prepare(` + SELECT id, name, url FROM calendar_feeds + WHERE user_id=? AND (LOWER(name) LIKE ? OR LOWER(url) LIKE ?) + ORDER BY name LIMIT 4 + `).all(uid, like, like)); + + const calendar_events = safe(() => db.prepare(` + SELECT c.id, c.summary, c.description, c.location, c.start_dt, f.name as feed_name + FROM calendar_event_cache c + JOIN calendar_feeds f ON f.id=c.feed_id + WHERE c.user_id=? AND f.user_id=? + AND (LOWER(c.summary) LIKE ? OR LOWER(c.description) LIKE ? OR LOWER(c.location) LIKE ?) + AND c.start_dt >= strftime('%Y%m%d', 'now') + ORDER BY c.start_dt LIMIT 8 + `).all(uid, uid, like, like, like)); + + const qr_codes = safe(() => db.prepare(` + SELECT id, label, url FROM qr_codes + WHERE user_id=? AND (LOWER(label) LIKE ? OR LOWER(url) LIKE ?) + ORDER BY created_at DESC LIMIT 5 + `).all(uid, like, like)); + + // Gebietseroberung-Spiele + const geo_games = safe(() => db.prepare(` + SELECT g.id, u1.username as owner_name, u2.username as opp_name, g.status, g.current_turn + FROM geo_games g + JOIN users u1 ON u1.id=g.owner_id + JOIN users u2 ON u2.id=g.opponent_id + WHERE (g.owner_id=? OR g.opponent_id=?) + AND (LOWER(u1.username) LIKE ? OR LOWER(u2.username) LIKE ?) + ORDER BY g.updated_at DESC LIMIT 5 + `).all(uid, uid, like, like)); + + // Andere Benutzer – für Chat-Navigation (nur Benutzernamen, keine sensiblen Daten) + const users = safe(() => db.prepare(` + SELECT id, username FROM users + WHERE id != ? AND LOWER(username) LIKE ? + ORDER BY username LIMIT 5 + `).all(uid, like)); + + res.json({ links, folders, snippets, calculations, orders, todos, notes, + board_items, changelog, files, file_folders, push_schedules, + calendar_feeds, calendar_events, qr_codes, users, geo_games }); +}); + +// Debug-Endpoint: Kalender-Cache inspizieren +router.get('/calendar-debug', authenticate, (req, res) => { + const uid = req.user.id; + const count = db.prepare('SELECT COUNT(*) as n FROM calendar_event_cache WHERE user_id=?').get(uid); + const samples = db.prepare('SELECT summary, start_dt FROM calendar_event_cache WHERE user_id=? ORDER BY start_dt LIMIT 10').all(uid); + const today = db.prepare("SELECT strftime('%Y%m%d','now') as d").get(); + const future = db.prepare("SELECT COUNT(*) as n FROM calendar_event_cache WHERE user_id=? AND start_dt >= strftime('%Y%m%d','now')").get(uid); + const search = db.prepare("SELECT summary, start_dt FROM calendar_event_cache WHERE user_id=? AND LOWER(summary) LIKE '%arzt%'").all(uid); + res.json({ count: count.n, today: today.d, future_count: future.n, samples, arzt_matches: search }); +}); + + +module.exports = router; diff --git a/backend/src/routes/system.js b/backend/src/routes/system.js new file mode 100644 index 0000000..561875e --- /dev/null +++ b/backend/src/routes/system.js @@ -0,0 +1,40 @@ +const express = require('express'); +const fs = require('fs'); +const path = require('path'); +const { authenticate } = require('../middleware/auth'); + +const router = express.Router(); + +let VERSION = 'v1.0.0'; +try { VERSION = fs.readFileSync(path.join(__dirname, '../../version.txt'), 'utf8').trim(); } catch {} + +const GITEA_URL = process.env.GITEA_URL; +const GITEA_REPO = process.env.GITEA_REPO; + +router.get('/version', authenticate, (_req, res) => res.json({ version: VERSION })); + +router.get('/update-check', authenticate, async (_req, res) => { + if (!GITEA_URL || !GITEA_REPO) + return res.json({ hasUpdate: false, currentVersion: VERSION, configured: false }); + try { + const r = await fetch(`${GITEA_URL}/api/v1/repos/${GITEA_REPO}/releases?limit=5`, + { signal: AbortSignal.timeout(5000) }); + const releases = await r.json(); + if (!Array.isArray(releases) || !releases.length) + return res.json({ hasUpdate: false, currentVersion: VERSION, configured: true }); + res.json({ + hasUpdate: releases[0].tag_name !== VERSION, + currentVersion: VERSION, + latestVersion: releases[0].tag_name, + configured: true, + releases: releases.map(r => ({ + version: r.tag_name, name: r.name || r.tag_name, + body: r.body || '(Keine Beschreibung)', publishedAt: r.published_at, + })), + }); + } catch (e) { + res.json({ hasUpdate: false, currentVersion: VERSION, configured: true }); + } +}); + +module.exports = router; diff --git a/backend/src/tools/bestellungen/routes.js b/backend/src/tools/bestellungen/routes.js new file mode 100644 index 0000000..c3efc25 --- /dev/null +++ b/backend/src/tools/bestellungen/routes.js @@ -0,0 +1,169 @@ +const express = require('express'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); +const uid = req => req.user.id; + +// Status der Bestellung automatisch aus den Stück-Zählern berechnen +const autoUpdateOrderStatus = (orderId) => { + const items = db.prepare('SELECT * FROM order_items WHERE order_id=?').all(orderId); + if (!items.length) return; + const totalPieces = items.reduce((s,i) => s + (i.stueckzahl||0), 0); + const fertigPieces = items.reduce((s,i) => s + (i.qty_fertig||0), 0); + const arbeitPieces = items.reduce((s,i) => s + (i.qty_in_arbeit||0), 0); + let newStatus = 'warteliste'; + if (fertigPieces >= totalPieces && totalPieces > 0) newStatus = 'fertig'; + else if (fertigPieces > 0 || arbeitPieces > 0) newStatus = 'in_arbeit'; + db.prepare('UPDATE orders SET status=?,updated_at=CURRENT_TIMESTAMP WHERE id=?').run(newStatus, orderId); +}; + +const loadOrder = (id, userId) => { + const order = db.prepare('SELECT * FROM orders WHERE id=? AND user_id=?').get(id, userId); + if (!order) return null; + order.items = db.prepare('SELECT * FROM order_items WHERE order_id=? ORDER BY id').all(id); + return order; +}; + +// GET / – Liste mit Zählern + Items +router.get('/', authenticate, (req, res) => { + const orders = db.prepare(` + SELECT o.*, + COUNT(oi.id) AS item_count, + SUM(COALESCE(oi.qty_fertig,0)) AS qty_fertig_total, + SUM(COALESCE(oi.stueckzahl,0)) AS qty_total, + SUM(COALESCE(oi.custom_price,0) * COALESCE(oi.stueckzahl,0)) AS custom_price_sum, + SUM(COALESCE(oi.stunden,0) * COALESCE(oi.stueckzahl,0)) AS stunden_total + FROM orders o + LEFT JOIN order_items oi ON oi.order_id = o.id + WHERE o.user_id = ? + GROUP BY o.id + ORDER BY o.created_at DESC + `).all(uid(req)); + // Attach items to each order + const items = db.prepare('SELECT * FROM order_items WHERE order_id IN (SELECT id FROM orders WHERE user_id=?) ORDER BY order_id, id').all(uid(req)); + const itemsByOrder = {}; + for (const item of items) { + if (!itemsByOrder[item.order_id]) itemsByOrder[item.order_id] = []; + itemsByOrder[item.order_id].push(item); + } + for (const order of orders) order.items = itemsByOrder[order.id] || []; + res.json(orders); +}); + +router.get('/:id', authenticate, (req, res) => { + const order = loadOrder(req.params.id, uid(req)); + if (!order) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json(order); +}); + +router.post('/', authenticate, (req, res) => { + const { name, bemerkung='', status='warteliste', custom_price=null } = req.body; + if (!name?.trim()) return res.status(400).json({ error: 'Name erforderlich' }); + const r = db.prepare('INSERT INTO orders (user_id,name,bemerkung,status,custom_price) VALUES (?,?,?,?,?)') + .run(uid(req), name.trim(), bemerkung, status, custom_price); + res.json(loadOrder(r.lastInsertRowid, uid(req))); +}); + +router.put('/:id', authenticate, (req, res) => { + const ex = db.prepare('SELECT * FROM orders WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!ex) return res.status(404).json({ error: 'Nicht gefunden' }); + const { name=ex.name, bemerkung=ex.bemerkung, status=ex.status, custom_price=ex.custom_price } = req.body; + + // Bezahlt-Status mit Datum (optional überschreibbar) + let bezahlt = ex.bezahlt; + let bezahlt_am = ex.bezahlt_am; + if (req.body.bezahlt !== undefined) { + bezahlt = req.body.bezahlt ? 1 : 0; + bezahlt_am = req.body.bezahlt + ? (req.body.bezahlt_am_override || new Date().toISOString()) + : null; + } + + // Abgeholt-Status mit Datum (optional überschreibbar) + let abgeholt = ex.abgeholt; + let abgeholt_am = ex.abgeholt_am; + if (req.body.abgeholt !== undefined) { + abgeholt = req.body.abgeholt ? 1 : 0; + abgeholt_am = req.body.abgeholt + ? (req.body.abgeholt_am_override || new Date().toISOString()) + : null; + } + + db.prepare('UPDATE orders SET name=?,bemerkung=?,status=?,custom_price=?,bezahlt=?,bezahlt_am=?,abgeholt=?,abgeholt_am=?,updated_at=CURRENT_TIMESTAMP WHERE id=? AND user_id=?') + .run(name, bemerkung, status, custom_price, bezahlt, bezahlt_am, abgeholt, abgeholt_am, req.params.id, uid(req)); + res.json(loadOrder(req.params.id, uid(req))); +}); + +router.delete('/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM orders WHERE id=? AND user_id=?').run(req.params.id, uid(req)); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ success: true }); +}); + +router.post('/:id/items', authenticate, (req, res) => { + const order = db.prepare('SELECT * FROM orders WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!order) return res.status(404).json({ error: 'Nicht gefunden' }); + const { calculation_id, stueckzahl=1, custom_price=null } = req.body; + const calc = db.prepare('SELECT * FROM calculations WHERE id=? AND user_id=?').get(calculation_id, uid(req)); + if (!calc) return res.status(404).json({ error: 'Archiv-Eintrag nicht gefunden' }); + const existing = db.prepare('SELECT * FROM order_items WHERE order_id=? AND calculation_id=?').get(req.params.id, calculation_id); + if (existing) { + const newQty = existing.stueckzahl + stueckzahl; + db.prepare('UPDATE order_items SET stueckzahl=?,qty_warteliste=qty_warteliste+? WHERE id=?').run(newQty, stueckzahl, existing.id); + } else { + db.prepare(`INSERT INTO order_items + (order_id,calculation_id,calc_name,preis_freundschaft,preis_normal,preis_auftrag, + stueckzahl,custom_price,status,qty_warteliste,qty_in_arbeit,qty_fertig,stunden) + VALUES (?,?,?,?,?,?,?,?,'warteliste',?,0,0,?)`) + .run(req.params.id, calc.id, calc.name, calc.preis_freundschaft, calc.preis_normal, calc.preis_auftrag, + stueckzahl, custom_price, stueckzahl, calc.stunden || 0); + } + autoUpdateOrderStatus(req.params.id); + res.json(loadOrder(req.params.id, uid(req))); +}); + +router.put('/:id/items/:itemId', authenticate, (req, res) => { + const order = db.prepare('SELECT * FROM orders WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!order) return res.status(404).json({ error: 'Nicht gefunden' }); + const item = db.prepare('SELECT * FROM order_items WHERE id=? AND order_id=?').get(req.params.itemId, req.params.id); + if (!item) return res.status(404).json({ error: 'Position nicht gefunden' }); + + // Stückzahl geändert → Warteliste anpassen + if (req.body.stueckzahl !== undefined) { + const newQty = Math.max(1, req.body.stueckzahl); + const diff = newQty - item.stueckzahl; + const newWarte = Math.max(0, item.qty_warteliste + diff); + db.prepare('UPDATE order_items SET stueckzahl=?,qty_warteliste=? WHERE id=?').run(newQty, newWarte, item.id); + } + + // Status-Zähler direkt setzen + if (req.body.qty_warteliste !== undefined || req.body.qty_in_arbeit !== undefined || req.body.qty_fertig !== undefined) { + const fresh = db.prepare('SELECT * FROM order_items WHERE id=?').get(item.id); + const w = req.body.qty_warteliste ?? fresh.qty_warteliste; + const a = req.body.qty_in_arbeit ?? fresh.qty_in_arbeit; + const f = req.body.qty_fertig ?? fresh.qty_fertig; + // Summe darf stueckzahl nicht überschreiten + const total = w + a + f; + if (total <= fresh.stueckzahl) { + db.prepare('UPDATE order_items SET qty_warteliste=?,qty_in_arbeit=?,qty_fertig=? WHERE id=?').run(w, a, f, item.id); + } + } + + // Festpreis + if (req.body.custom_price !== undefined) { + db.prepare('UPDATE order_items SET custom_price=? WHERE id=?').run(req.body.custom_price, item.id); + } + + autoUpdateOrderStatus(req.params.id); + res.json(loadOrder(req.params.id, uid(req))); +}); + +router.delete('/:id/items/:itemId', authenticate, (req, res) => { + const order = db.prepare('SELECT * FROM orders WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!order) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM order_items WHERE id=? AND order_id=?').run(req.params.itemId, req.params.id); + autoUpdateOrderStatus(req.params.id); + res.json(loadOrder(req.params.id, uid(req))); +}); + +module.exports = router; diff --git a/backend/src/tools/dateien/public-share-public.js b/backend/src/tools/dateien/public-share-public.js new file mode 100644 index 0000000..1a6658e --- /dev/null +++ b/backend/src/tools/dateien/public-share-public.js @@ -0,0 +1,103 @@ +// Öffentliche Endpunkte – kein Login nötig +const express = require('express'); +const bcrypt = require('bcryptjs'); +const path = require('path'); +const fs = require('fs'); +const db = require('../../db'); +const { logPublicAccess } = require('../../publicAccessLog'); +const router = express.Router(); + +const UPLOAD_DIR = process.env.UPLOAD_DIR || '/data/uploads'; + +function getShare(token) { + return db.prepare(` + SELECT s.*, + f.originalname as file_name, f.size as file_size, f.mimetype as mime_type, f.filename as file_path, + fo.name as folder_name + FROM public_file_shares s + LEFT JOIN files f ON f.id = s.file_id + LEFT JOIN folders fo ON fo.id = s.folder_id + WHERE s.token = ? + `).get(token); +} + +function isExpired(s) { + return s.expires_at && s.expires_at < Math.floor(Date.now() / 1000); +} + +// GET /:token – Metadaten +router.get('/:token', (req, res) => { + const s = getShare(req.params.token); + if (!s) return res.status(404).json({ error: 'Link nicht gefunden' }); + if (isExpired(s)) return res.status(410).json({ error: 'Link abgelaufen' }); + logPublicAccess({ linkType: 'file_share', path: `/s/${req.params.token}`, ip: req.ip, userAgent: req.headers['user-agent'] }); + res.json({ + label: s.label, + file_name: s.file_name, + file_size: s.file_size, + mime_type: s.mime_type, + folder_name: s.folder_name, + is_folder: !!s.folder_id, + needs_password: !!s.password_hash, + expires_at: s.expires_at, + }); +}); + +// POST /:token/verify – nur Passwort prüfen, kein Download +router.post('/:token/verify', async (req, res) => { + const s = getShare(req.params.token); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + if (isExpired(s)) return res.status(410).json({ error: 'Link abgelaufen' }); + const ok = await bcrypt.compare(req.body?.password || '', s.password_hash); + if (!ok) return res.status(403).json({ error: 'Falsches Passwort' }); + res.json({ ok: true, file_name: s.file_name, file_size: s.file_size, mime_type: s.mime_type, is_folder: !!s.folder_id }); +}); + +// POST /:token/download – Datei herunterladen +router.post('/:token/download', async (req, res) => { + const s = getShare(req.params.token); + if (!s || !s.file_id) return res.status(404).json({ error: 'Nicht gefunden' }); + if (isExpired(s)) return res.status(410).json({ error: 'Link abgelaufen' }); + const ok = await bcrypt.compare(req.body?.password || '', s.password_hash); + if (!ok) return res.status(403).json({ error: 'Falsches Passwort' }); + const filePath = path.join(UPLOAD_DIR, s.file_path); + if (!fs.existsSync(filePath)) return res.status(404).json({ error: 'Datei nicht gefunden' }); + db.prepare('UPDATE public_file_shares SET download_count = download_count + 1 WHERE id=?').run(s.id); + res.setHeader('Content-Disposition', `attachment; filename="${encodeURIComponent(s.file_name)}"`); + res.setHeader('Content-Type', s.mime_type || 'application/octet-stream'); + fs.createReadStream(filePath).pipe(res); +}); + +// POST /:token/folder – Ordnerinhalt +router.post('/:token/folder', async (req, res) => { + const s = getShare(req.params.token); + if (!s || !s.folder_id) return res.status(404).json({ error: 'Nicht gefunden' }); + if (isExpired(s)) return res.status(410).json({ error: 'Link abgelaufen' }); + const ok = await bcrypt.compare(req.body?.password || '', s.password_hash); + if (!ok) return res.status(403).json({ error: 'Falsches Passwort' }); + const files = db.prepare(` + SELECT id, originalname as name, size, mimetype as mime_type, filename as file_path FROM files + WHERE folder_id=? AND user_id=? ORDER BY name + `).all(s.folder_id, s.user_id); + db.prepare('UPDATE public_file_shares SET download_count = download_count + 1 WHERE id=?').run(s.id); + res.json({ folder_name: s.folder_name, files, token: s.token }); +}); + +// POST /:token/folder/:fileId – Einzelne Datei aus Ordner +router.post('/:token/folder/:fileId', async (req, res) => { + const s = getShare(req.params.token); + if (!s || !s.folder_id) return res.status(404).json({ error: 'Nicht gefunden' }); + if (isExpired(s)) return res.status(410).json({ error: 'Link abgelaufen' }); + const ok = await bcrypt.compare(req.body?.password || '', s.password_hash); + if (!ok) return res.status(403).json({ error: 'Falsches Passwort' }); + const file = db.prepare('SELECT * FROM files WHERE id=? AND folder_id=? AND user_id=?') + .get(req.params.fileId, s.folder_id, s.user_id); + if (!file) return res.status(404).json({ error: 'Datei nicht gefunden' }); + const filePath = path.join(UPLOAD_DIR, file.file_path || file.filename); + if (!fs.existsSync(filePath)) return res.status(404).json({ error: 'Datei nicht gefunden' }); + res.setHeader('Content-Disposition', `attachment; filename="${encodeURIComponent(file.name || file.originalname)}"`); + res.setHeader('Content-Type', file.mime_type || file.mimetype || 'application/octet-stream'); + fs.createReadStream(filePath).pipe(res); +}); + +module.exports = router; diff --git a/backend/src/tools/dateien/public-share.js b/backend/src/tools/dateien/public-share.js new file mode 100644 index 0000000..e0ac57c --- /dev/null +++ b/backend/src/tools/dateien/public-share.js @@ -0,0 +1,88 @@ +// Authentifizierte Endpunkte zum Verwalten öffentlicher Datei-Links +const express = require('express'); +const bcrypt = require('bcryptjs'); +const crypto = require('crypto'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +function generateToken() { return crypto.randomBytes(24).toString('base64url'); } + +// GET / – eigene Shares auflisten +router.get('/', authenticate, (req, res) => { + try { + const shares = db.prepare(` + SELECT s.id, s.token, s.user_id, s.file_id, s.folder_id, s.label, + s.password_hash, s.expires_at, s.created_at, s.download_count, + f.originalname as file_name, f.size as file_size, + fo.name as folder_name + FROM public_file_shares s + LEFT JOIN files f ON f.id = s.file_id + LEFT JOIN folders fo ON fo.id = s.folder_id + WHERE s.user_id = ? + ORDER BY s.created_at DESC + `).all(req.user.id); + res.json({ shares }); + } catch(e) { + console.error('[public-shares GET]', e.message); + res.status(500).json({ error: e.message }); + } +}); + +// POST / – neuen Share erstellen +router.post('/', authenticate, async (req, res) => { + const { file_id, folder_id, password, expires_hours, label } = req.body; + if (!file_id && !folder_id) return res.status(400).json({ error: 'file_id oder folder_id erforderlich' }); + if (!password || !password.trim()) return res.status(400).json({ error: 'Passwort ist Pflicht' }); + if (!expires_hours || Number(expires_hours) <= 0) return res.status(400).json({ error: 'Ablaufzeit ist Pflicht' }); + + if (file_id) { + const f = db.prepare('SELECT id FROM files WHERE id=? AND user_id=?').get(file_id, req.user.id); + if (!f) return res.status(403).json({ error: 'Keine Berechtigung' }); + } + if (folder_id) { + const fo = db.prepare('SELECT id FROM folders WHERE id=? AND user_id=?').get(folder_id, req.user.id); + if (!fo) return res.status(403).json({ error: 'Keine Berechtigung' }); + } + + const token = generateToken(); + const password_hash = await bcrypt.hash(password.trim(), 10); + const expires_at = Math.floor(Date.now() / 1000) + Number(expires_hours) * 3600; + + const r = db.prepare(` + INSERT INTO public_file_shares (token, user_id, file_id, folder_id, label, password_hash, expires_at) + VALUES (?, ?, ?, ?, ?, ?, ?) + `).run(token, req.user.id, file_id || null, folder_id || null, label || null, password_hash, expires_at); + + const share = db.prepare('SELECT * FROM public_file_shares WHERE id=?').get(r.lastInsertRowid); + res.json({ share, token }); +}); + +// DELETE /:id – Share löschen +router.delete('/:id', authenticate, (req, res) => { + const s = db.prepare('SELECT id FROM public_file_shares WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM public_file_shares WHERE id=?').run(s.id); + res.json({ ok: true }); +}); + +// Debug: Tabellenstatus + eigene Shares mit Token +router.get('/debug-table', (req, res) => { + try { + const exists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='public_file_shares'").get(); + const count = exists ? db.prepare('SELECT COUNT(*) as n FROM public_file_shares').get() : null; + const cols = exists ? db.pragma('table_info(public_file_shares)').map(c=>c.name) : []; + const sample = exists ? db.prepare('SELECT id, token, user_id, file_id, folder_id, expires_at, download_count FROM public_file_shares LIMIT 5').all() : []; + // Test: ersten Token direkt abfragen wie public endpoint es tut + let publicTest = null; + if (sample.length > 0) { + const t = sample[0].token; + const s = db.prepare('SELECT s.*, f.originalname as file_name, fo.name as folder_name FROM public_file_shares s LEFT JOIN files f ON f.id = s.file_id LEFT JOIN folders fo ON fo.id = s.folder_id WHERE s.token=?').get(t); + const now = Math.floor(Date.now()/1000); + publicTest = { token: t, expires_at: s?.expires_at, now, isExpired: s?.expires_at < now, typeof_expires: typeof s?.expires_at }; + } + res.json({ exists: !!exists, count: count?.n, cols, sample, publicTest }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +module.exports = router; diff --git a/backend/src/tools/dateien/routes.js b/backend/src/tools/dateien/routes.js new file mode 100644 index 0000000..baff25b --- /dev/null +++ b/backend/src/tools/dateien/routes.js @@ -0,0 +1,444 @@ +const express = require('express'); +const multer = require('multer'); +const path = require('path'); +const fs = require('fs'); +const db = require('../../db'); +const { authenticate, requireAdmin } = require('../../middleware/auth'); + +const router = express.Router(); +const UPLOAD_DIR = process.env.UPLOAD_DIR || '/data/uploads'; +if (!fs.existsSync(UPLOAD_DIR)) fs.mkdirSync(UPLOAD_DIR, { recursive: true }); +const webdav = require('./webdav'); + +// ── WebDAV Hilfsfunktionen ──────────────────────────────────────────────── +function getFolderPathById(folderId) { + if (!folderId) return ''; + const parts = []; + let cur = folderId; + const seen = new Set(); + while (cur) { + if (seen.has(cur)) break; seen.add(cur); + const fo = db.prepare('SELECT name, parent_id FROM folders WHERE id=?').get(cur); + if (!fo) break; + parts.unshift(fo.name.replace(/[\/]/g, '_')); + cur = fo.parent_id; + } + return parts.join('/'); +} + +function davFileUrl(username, folderId, filename) { + const cfg = webdav.getConfig(); + if (!cfg.enabled) return null; + const base = webdav.userPath(cfg, username); + const folder = getFolderPathById(folderId); + return folder ? `${base}/${folder}/${filename}` : `${base}/${filename}`; +} + +function davFolderUrl(username, folderId) { + const cfg = webdav.getConfig(); + if (!cfg.enabled) return null; + const base = webdav.userPath(cfg, username); + const folder = getFolderPathById(folderId); + return folder ? `${base}/${folder}` : base; +} + +function getUserName(userId) { + return db.prepare('SELECT username FROM users WHERE id=?').get(userId)?.username || String(userId); +} + +const getSetting = key => db.prepare('SELECT value FROM admin_settings WHERE key=?').get(key)?.value; + +const diskStorage = multer.diskStorage({ + destination: UPLOAD_DIR, + filename: (req, file, cb) => cb(null, `${Date.now()}-${Math.random().toString(36).slice(2)}${path.extname(file.originalname)}`), +}); +const memStorage = multer.memoryStorage(); + +const storage = diskStorage; // Standard: Disk +const getUpload = () => multer({ + storage, + limits: { fileSize: parseInt(getSetting('file_max_size_mb') || '50') * 1024 * 1024 }, + fileFilter: (req, file, cb) => { + const allowed = (getSetting('file_allowed_ext') || '').split(',').map(e => e.trim().toLowerCase()).filter(Boolean); + if (!allowed.length) return cb(null, true); + const ext = path.extname(file.originalname).toLowerCase(); + allowed.includes(ext) ? cb(null, true) : cb(new Error(`Dateityp nicht erlaubt: ${ext}`)); + }, +}); + +// Walk folder tree upward to check if any ancestor is shared with user +function isInSharedFolder(folderId, uid) { + let cur = folderId; + while (cur) { + if (db.prepare('SELECT id FROM folder_shares WHERE folder_id=? AND shared_with=?').get(cur, uid)) return true; + const p = db.prepare('SELECT parent_id FROM folders WHERE id=?').get(cur); + cur = p?.parent_id || null; + } + return false; +} + +const enrichFolder = (folder) => ({ + ...folder, + fileCount: db.prepare('SELECT COUNT(*) c FROM files WHERE folder_id=?').get(folder.id).c, + subCount: db.prepare('SELECT COUNT(*) c FROM folders WHERE parent_id=?').get(folder.id).c, + totalSize: db.prepare('SELECT COALESCE(SUM(size),0) s FROM files WHERE folder_id=?').get(folder.id).s, +}); + +// ── Ordner ──────────────────────────────────────────────────────────────────── +router.get('/folders', authenticate, (req, res) => { + const uid = req.user.id; + const parentId = req.query.parent_id ? parseInt(req.query.parent_id) : null; + + // Own folders in this directory + const own = parentId + ? db.prepare('SELECT * FROM folders WHERE user_id=? AND parent_id=? ORDER BY name').all(uid, parentId) + : db.prepare('SELECT * FROM folders WHERE user_id=? AND parent_id IS NULL ORDER BY name').all(uid); + + // Shared folders + let shared = []; + if (!parentId) { + shared = db.prepare(` + SELECT f.*, u.username as owner, + GROUP_CONCAT(su.username) as shared_with_names, + MIN(fs.created_at) as shared_at + FROM folders f JOIN users u ON u.id=f.user_id + JOIN folder_shares fs ON fs.folder_id=f.id + JOIN users su ON su.id=fs.shared_with + WHERE fs.shared_with=? + GROUP BY f.id ORDER BY f.name + `).all(uid); + } else if (isInSharedFolder(parentId, uid)) { + const parentFolder = db.prepare('SELECT * FROM folders WHERE id=?').get(parentId); + if (parentFolder) { + shared = db.prepare('SELECT f.*, u.username as owner FROM folders f JOIN users u ON u.id=f.user_id WHERE f.parent_id=? AND f.user_id!=? ORDER BY f.name').all(parentId, uid); + } + } + + // Folders shared BY me (root only) + const sharedByMe = parentId ? [] : db.prepare(` + SELECT DISTINCT f.*, u.username as owner, + GROUP_CONCAT(su.username) as shared_with_names, + MIN(fs.created_at) as shared_at + FROM folders f JOIN users u ON u.id=f.user_id + JOIN folder_shares fs ON fs.folder_id=f.id + JOIN users su ON su.id=fs.shared_with + WHERE f.user_id=? + GROUP BY f.id ORDER BY f.name + `).all(uid); + + res.json({ own: own.map(enrichFolder), shared: shared.map(enrichFolder), sharedByMe: sharedByMe.map(enrichFolder) }); +}); + +router.post('/folders', authenticate, (req, res) => { + const { name, parent_id } = req.body; + if (!name?.trim()) return res.status(400).json({ error: 'Name erforderlich' }); + const parentId = parent_id ? parseInt(parent_id) : null; + if (parentId) { + const parent = db.prepare('SELECT * FROM folders WHERE id=? AND user_id=?').get(parentId, req.user.id); + if (!parent) return res.status(404).json({ error: 'Überordner nicht gefunden' }); + } + const r = db.prepare('INSERT INTO folders (user_id,name,parent_id) VALUES (?,?,?)').run(req.user.id, name.trim(), parentId); + const newFolder = db.prepare('SELECT * FROM folders WHERE id=?').get(r.lastInsertRowid); + // WebDAV: Ordner anlegen + const _davFolderCreate = davFolderUrl(getUserName(req.user.id), newFolder.id); + if (_davFolderCreate) webdav.mkdirp(_davFolderCreate).catch(e => console.warn('[webdav] mkdir:', e.message)); + res.json(enrichFolder(newFolder)); +}); + +router.delete('/folders/:id', authenticate, (req, res) => { + const uid = req.user.id; + const folder = db.prepare('SELECT * FROM folders WHERE id=? AND user_id=?').get(req.params.id, uid); + if (!folder) return res.status(404).json({ error: 'Nicht gefunden' }); + + // Alle Unterordner rekursiv sammeln + function collectSubfolderIds(parentId) { + const children = db.prepare('SELECT id FROM folders WHERE parent_id=? AND user_id=?').all(parentId, uid); + let ids = [parentId]; + for (const c of children) ids = ids.concat(collectSubfolderIds(c.id)); + return ids; + } + const allFolderIds = collectSubfolderIds(folder.id); + + // WebDAV: Ordner löschen (vor DB-Löschung damit Pfad noch auflösbar) + const _davFolderDel = davFolderUrl(getUserName(uid), folder.id); + if (_davFolderDel) webdav.deleteFile(_davFolderDel).catch(e => console.warn('[webdav] rmdir:', e.message)); + + // Alle Dateien in allen Unterordnern löschen (Disk + DB) + for (const fid of allFolderIds) { + const files = db.prepare('SELECT * FROM files WHERE folder_id=? AND user_id=?').all(fid, uid); + for (const f of files) { try { fs.unlinkSync(path.join(UPLOAD_DIR, f.filename)); } catch {} } + db.prepare('DELETE FROM files WHERE folder_id=? AND user_id=?').run(fid, uid); + } + // Alle Unterordner + Hauptordner aus DB löschen + for (const fid of allFolderIds.reverse()) { + db.prepare('DELETE FROM folders WHERE id=?').run(fid); + } + res.json({ success: true }); +}); + +router.get('/folders/:id/shares', authenticate, (req, res) => { + const folder = db.prepare('SELECT * FROM folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!folder) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json(db.prepare('SELECT u.id,u.username,fs.created_at as shared_at FROM folder_shares fs JOIN users u ON u.id=fs.shared_with WHERE fs.folder_id=?').all(folder.id)); +}); + +router.post('/folders/:id/share', authenticate, (req, res) => { + const folder = db.prepare('SELECT * FROM folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!folder) return res.status(404).json({ error: 'Nicht gefunden' }); + const target = db.prepare('SELECT * FROM users WHERE username=?').get(req.body.username); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + if (target.id === req.user.id) return res.status(400).json({ error: 'Kann nicht mit dir selbst teilen' }); + db.prepare('INSERT OR IGNORE INTO folder_shares (folder_id,shared_by,shared_with) VALUES (?,?,?)').run(folder.id, req.user.id, target.id); + res.json({ success: true }); +}); + +router.delete('/folders/:id/share/:userId', authenticate, (req, res) => { + const folder = db.prepare('SELECT * FROM folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!folder) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM folder_shares WHERE folder_id=? AND shared_with=?').run(folder.id, req.params.userId); + res.json({ success: true }); +}); + +// ── Dateien ─────────────────────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const uid = req.user.id; + const folderId = req.query.folder_id ? parseInt(req.query.folder_id) : null; + + // Own files in this directory + const own = folderId + ? db.prepare('SELECT f.*, u.username as owner FROM files f JOIN users u ON u.id=f.user_id WHERE f.user_id=? AND f.folder_id=? ORDER BY f.created_at DESC').all(uid, folderId) + : db.prepare('SELECT f.*, u.username as owner FROM files f JOIN users u ON u.id=f.user_id WHERE f.user_id=? AND f.folder_id IS NULL ORDER BY f.created_at DESC').all(uid); + + // Files shared BY me + const sharedByMe = folderId ? [] : db.prepare(` + SELECT DISTINCT f.*, u.username as owner, + GROUP_CONCAT(su.username) as shared_with_names, + MIN(s.created_at) as shared_at, + MAX(s.accessed_at) as accessed_at, + MAX(CASE WHEN s.password_hash IS NOT NULL THEN 1 ELSE 0 END) as has_password + FROM files f JOIN users u ON u.id=f.user_id + JOIN file_shares s ON s.file_id=f.id + JOIN users su ON su.id=s.shared_with + WHERE f.user_id=? + GROUP BY f.id ORDER BY f.created_at DESC + `).all(uid); + + // Files shared with me + let shared = []; + if (!folderId) { + shared = db.prepare(` + SELECT f.*, u.username as owner, sb.username as shared_by_name, + CASE WHEN s.password_hash IS NOT NULL THEN 1 ELSE 0 END as has_password + FROM files f JOIN users u ON u.id=f.user_id + JOIN file_shares s ON s.file_id=f.id + JOIN users sb ON sb.id=s.shared_by + WHERE s.shared_with=? + ORDER BY f.created_at DESC + `).all(uid); + } else if (isInSharedFolder(folderId, uid)) { + const folder = db.prepare('SELECT * FROM folders WHERE id=?').get(folderId); + if (folder) { + shared = db.prepare('SELECT f.*, u.username as owner FROM files f JOIN users u ON u.id=f.user_id WHERE f.folder_id=? AND f.user_id=? ORDER BY f.created_at DESC').all(folderId, folder.user_id); + } + } + + res.json({ own, shared, sharedByMe }); +}); + +router.post('/', authenticate, (req, res) => { + const uid = req.user.id; + const maxSizeMb = parseInt(getSetting('file_max_size_mb') || '50'); + const totalLimitMb= parseInt(getSetting('file_total_size_mb') || '500'); + const usedBytes = db.prepare('SELECT COALESCE(SUM(size),0) AS s FROM files WHERE user_id=?').get(uid).s; + if (usedBytes >= totalLimitMb * 1024 * 1024) + return res.status(400).json({ error: `Gesamtlimit von ${totalLimitMb} MB erreicht` }); + getUpload().single('file')(req, res, err => { + if (err) { + if (req.file) try { fs.unlinkSync(req.file.path); } catch {} + return res.status(400).json({ error: err.message }); + } + if (!req.file) return res.status(400).json({ error: 'Keine Datei' }); + const folderId = req.body.folder_id ? parseInt(req.body.folder_id) : null; + const r = db.prepare('INSERT INTO files (user_id,filename,originalname,mimetype,size,folder_id) VALUES (?,?,?,?,?,?)') + .run(uid, req.file.filename, req.file.originalname, req.file.mimetype||'application/octet-stream', req.file.size, folderId); + const newFile = db.prepare('SELECT f.*,u.username as owner FROM files f JOIN users u ON u.id=f.user_id WHERE f.id=?').get(r.lastInsertRowid); + + // WebDAV: Datei asynchron spiegeln + const _davPath = davFileUrl(getUserName(uid), folderId, req.file.originalname); + if (_davPath) { + fs.readFile(path.join(UPLOAD_DIR, req.file.filename), (err, buf) => { + if (!err) webdav.uploadFile(buf, _davPath, req.file.mimetype).catch(e => console.error('[webdav upload]', e.message)); + }); + } + + res.json(newFile); + }); +}); + +// ── 3D-Modelle Hilfsendpoints ───────────────────────────────────────────────── + +// Sucht einen Ordner ohne ihn anzulegen – gibt null zurück wenn nicht gefunden +router.get('/find-folder', authenticate, (req, res) => { + const uid = req.user.id; + const { name, parent_id } = req.query; + if (!name?.trim()) return res.json(null); + const parentId = parent_id ? parseInt(parent_id) : null; + const folder = parentId + ? db.prepare('SELECT * FROM folders WHERE user_id=? AND name=? AND parent_id=?').get(uid, name.trim(), parentId) + : db.prepare('SELECT * FROM folders WHERE user_id=? AND name=? AND parent_id IS NULL').get(uid, name.trim()); + res.json(folder ? enrichFolder(folder) : null); +}); + +// Stellt sicher dass ein Ordner existiert (Name + optionaler parent), gibt ihn zurück +router.post('/ensure-folder', authenticate, (req, res) => { + const uid = req.user.id; + const { name, parent_id } = req.body; + if (!name?.trim()) return res.status(400).json({ error: 'Name erforderlich' }); + const parentId = parent_id ? parseInt(parent_id) : null; + + // Suche existierenden Ordner + const existing = parentId + ? db.prepare('SELECT * FROM folders WHERE user_id=? AND name=? AND parent_id=?').get(uid, name.trim(), parentId) + : db.prepare('SELECT * FROM folders WHERE user_id=? AND name=? AND parent_id IS NULL').get(uid, name.trim()); + + if (existing) return res.json(enrichFolder(existing)); + + const r = db.prepare('INSERT INTO folders (user_id,name,parent_id) VALUES (?,?,?)').run(uid, name.trim(), parentId); + res.json(enrichFolder(db.prepare('SELECT * FROM folders WHERE id=?').get(r.lastInsertRowid))); +}); + +// Upload 3D-Dateien (ohne Ext-Beschränkung, für den Kalkulator) +const upload3d = multer({ + storage, + limits: { fileSize: parseInt(process.env.MAX_3D_SIZE_MB || '200') * 1024 * 1024 }, +}); + +router.post('/upload-3d', authenticate, (req, res) => { + upload3d.array('files', 20)(req, res, err => { + if (err) { + if (req.files?.length) req.files.forEach(f => { try { fs.unlinkSync(f.path); } catch {} }); + return res.status(400).json({ error: err.message }); + } + if (!req.files?.length) return res.status(400).json({ error: 'Keine Dateien' }); + const uid = req.user.id; + const folderId = req.body.folder_id ? parseInt(req.body.folder_id) : null; + const inserted = []; + for (const f of req.files) { + const r = db.prepare('INSERT INTO files (user_id,filename,originalname,mimetype,size,folder_id) VALUES (?,?,?,?,?,?)') + .run(uid, f.filename, f.originalname, f.mimetype || 'application/octet-stream', f.size, folderId); + inserted.push(r.lastInsertRowid); + } + res.json({ uploaded: inserted.length }); + }); +}); + +router.get('/storage', authenticate, (req, res) => { + const uid = req.user.id; + const used = db.prepare('SELECT COALESCE(SUM(size),0) AS s FROM files WHERE user_id=?').get(uid).s; + const count = db.prepare('SELECT COUNT(*) AS c FROM files WHERE user_id=?').get(uid).c; + const maxSizeMb = parseInt(getSetting('file_max_size_mb') || '50'); + const totalLimitMb = parseInt(getSetting('file_total_size_mb') || '500'); + res.json({ used, count, maxSizeMb, totalLimitMb }); +}); + +router.get('/:id/download', authenticate, async (req, res) => { + const uid = req.user.id; + const file = db.prepare('SELECT * FROM files WHERE id=?').get(req.params.id); + if (!file) return res.status(404).json({ error: 'Nicht gefunden' }); + + const isOwner = file.user_id === uid; + const share = db.prepare('SELECT * FROM file_shares WHERE file_id=? AND shared_with=?').get(file.id, uid); + const inSharedDir = file.folder_id && isInSharedFolder(file.folder_id, uid); + + if (!isOwner && !share && !inSharedDir) return res.status(403).json({ error: 'Kein Zugriff' }); + + // Passwortprüfung für Shares (Owner braucht kein Passwort) + if (!isOwner && share?.password_hash) { + const bcrypt = require('bcryptjs'); + const pw = req.query.password || req.headers['x-share-password'] || ''; + const ok = pw && await bcrypt.compare(pw, share.password_hash); + if (!ok) return res.status(403).json({ + error: 'Falsches Passwort', + passwordRequired: !pw // true = noch kein PW eingegeben, false = falsches PW + }); + } + + const fp = path.join(UPLOAD_DIR, file.filename); + if (!fs.existsSync(fp)) return res.status(404).json({ error: 'Datei fehlt' }); + + // Zugriff tracken (immer aktualisieren damit es sicher gesetzt wird) + if (share) { + db.prepare("UPDATE file_shares SET accessed_at = datetime('now','localtime') WHERE file_id=? AND shared_with=?") + .run(file.id, uid); + } + + res.download(fp, file.originalname); +}); + +router.delete('/:id', authenticate, (req, res) => { + const file = db.prepare('SELECT * FROM files WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!file) return res.status(404).json({ error: 'Nicht gefunden' }); + // WebDAV: Datei löschen + const _davFileDel = davFileUrl(getUserName(file.user_id), file.folder_id, file.originalname); + if (_davFileDel) webdav.deleteFile(_davFileDel).catch(e => console.warn('[webdav] delete:', e.message)); + try { fs.unlinkSync(path.join(UPLOAD_DIR, file.filename)); } catch {} + db.prepare('DELETE FROM files WHERE id=?').run(file.id); + res.json({ success: true }); +}); + +router.get('/:id/shares', authenticate, (req, res) => { + const file = db.prepare('SELECT * FROM files WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!file) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json(db.prepare(` + SELECT u.id, u.username, s.created_at as shared_at, + s.accessed_at, + CASE WHEN s.password_hash IS NOT NULL THEN 1 ELSE 0 END as has_password + FROM file_shares s JOIN users u ON u.id=s.shared_with + WHERE s.file_id=? + `).all(file.id)); +}); + +router.post('/:id/share', authenticate, async (req, res) => { + const file = db.prepare('SELECT * FROM files WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!file) return res.status(404).json({ error: 'Nicht gefunden' }); + const target = db.prepare('SELECT * FROM users WHERE username=?').get(req.body.username); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + if (target.id === req.user.id) return res.status(400).json({ error: 'Kann nicht mit dir selbst teilen' }); + let passwordHash = null; + if (req.body.password) { + const bcrypt = require('bcryptjs'); + passwordHash = await bcrypt.hash(req.body.password, 10); + } + const existing = db.prepare('SELECT id FROM file_shares WHERE file_id=? AND shared_with=?').get(file.id, target.id); + if (existing) { + db.prepare('UPDATE file_shares SET password_hash=?, accessed_at=NULL WHERE file_id=? AND shared_with=?') + .run(passwordHash, file.id, target.id); + } else { + db.prepare('INSERT INTO file_shares (file_id,shared_by,shared_with,password_hash) VALUES (?,?,?,?)') + .run(file.id, req.user.id, target.id, passwordHash); + } + res.json({ success: true }); +}); + +router.delete('/:id/share/:userId', authenticate, (req, res) => { + const file = db.prepare('SELECT * FROM files WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!file) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM file_shares WHERE file_id=? AND shared_with=?').run(file.id, req.params.userId); + res.json({ success: true }); +}); + +// Settings +router.get('/settings', authenticate, requireAdmin, (req, res) => { + const s = db.prepare('SELECT * FROM admin_settings').all(); + const obj = {}; for (const r of s) obj[r.key] = r.value; + res.json(obj); +}); +router.put('/settings', authenticate, requireAdmin, (req, res) => { + for (const key of ['file_max_size_mb','file_total_size_mb','file_allowed_ext']) { + if (req.body[key] !== undefined) + db.prepare('INSERT OR REPLACE INTO admin_settings (key,value) VALUES (?,?)').run(key, String(req.body[key])); + } + res.json({ success: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/dateien/upload-share.js b/backend/src/tools/dateien/upload-share.js new file mode 100644 index 0000000..cee0ae3 --- /dev/null +++ b/backend/src/tools/dateien/upload-share.js @@ -0,0 +1,173 @@ +const express = require('express'); +const bcrypt = require('bcryptjs'); +const crypto = require('crypto'); +const multer = require('multer'); +const path = require('path'); +const fs = require('fs'); +const db = require('../../db'); +const { logPublicAccess } = require('../../publicAccessLog'); +const { authenticate, requireAdmin } = require('../../middleware/auth'); +const router = express.Router(); + + +const UPLOAD_DIR = process.env.UPLOAD_DIR || '/data/uploads'; + +function generateToken() { return crypto.randomBytes(20).toString('base64url'); } + +function getOrCreateUploadFolder(userId) { + let f = db.prepare("SELECT * FROM folders WHERE user_id=? AND is_upload_folder=1 LIMIT 1").get(userId); + if (!f) { + const r = db.prepare("INSERT INTO folders (user_id,name,is_upload_folder,created_at) VALUES (?,?,1,datetime('now','localtime'))").run(userId,'Upload'); + f = db.prepare('SELECT * FROM folders WHERE id=?').get(r.lastInsertRowid); + } + return f; +} + +function canUseUploadShare(userId) { + const u = db.prepare('SELECT role,allow_upload_share FROM users WHERE id=?').get(userId); + return u && (u.role==='admin' || !!u.allow_upload_share); +} + +// ── Eigene Shares ───────────────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + if (!canUseUploadShare(req.user.id)) return res.status(403).json({ error:'Keine Berechtigung' }); + const folder = getOrCreateUploadFolder(req.user.id); + const shares = db.prepare(` + SELECT s.*, COUNT(l.id) as upload_count + FROM upload_shares s + LEFT JOIN upload_share_logs l ON l.share_id=s.id + WHERE s.user_id=? + GROUP BY s.id ORDER BY s.created_at DESC + `).all(req.user.id); + res.json({ shares, folder }); +}); + +router.post('/', authenticate, (req, res) => { + if (!canUseUploadShare(req.user.id)) return res.status(403).json({ error:'Keine Berechtigung' }); + const { password, expires_hours=24, max_size_mb=10 } = req.body; + if (!password?.trim()) return res.status(400).json({ error:'Passwort erforderlich' }); + const folder = getOrCreateUploadFolder(req.user.id); + const token = generateToken(); + const hash = bcrypt.hashSync(password.trim(), 10); + const expires = new Date(Date.now() + Number(expires_hours)*3600000).toISOString(); + const r = db.prepare(` + INSERT INTO upload_shares (user_id,token,password_hash,expires_at,max_size_mb,folder_id,created_at) + VALUES (?,?,?,?,?,?,datetime('now','localtime')) + `).run(req.user.id, token, hash, expires, Number(max_size_mb), folder.id); + res.json(db.prepare('SELECT * FROM upload_shares WHERE id=?').get(r.lastInsertRowid)); +}); + +router.delete('/:id', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM upload_shares WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!s) return res.status(404).json({ error:'Nicht gefunden' }); + db.prepare("UPDATE upload_shares SET is_active=0, deactivated_reason='manual' WHERE id=?").run(s.id); + res.json({ ok:true }); +}); + +router.delete('/:id/remove', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM upload_shares WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!s) return res.status(404).json({ error:'Nicht gefunden' }); + db.prepare('DELETE FROM upload_shares WHERE id=?').run(s.id); + res.json({ ok:true }); +}); + +router.get('/logs', authenticate, (req, res) => { + if (!canUseUploadShare(req.user.id)) return res.status(403).json({ error:'Keine Berechtigung' }); + const logs = db.prepare(` + SELECT l.*, s.expires_at, s.max_size_mb + FROM upload_share_logs l + JOIN upload_shares s ON s.id=l.share_id + WHERE l.user_id=? ORDER BY l.uploaded_at DESC LIMIT 100 + `).all(req.user.id); + res.json(logs); +}); + +// ── Admin ───────────────────────────────────────────────────────────────────── +router.get('/admin/logs', authenticate, requireAdmin, (req, res) => { + const logs = db.prepare(` + SELECT l.*, s.expires_at, s.max_size_mb, u.username + FROM upload_share_logs l + JOIN upload_shares s ON s.id=l.share_id + JOIN users u ON u.id=l.user_id + ORDER BY l.uploaded_at DESC LIMIT 500 + `).all(); + res.json(logs); +}); + +router.get('/admin/shares', authenticate, requireAdmin, (req, res) => { + const shares = db.prepare(` + SELECT s.*, u.username, COUNT(l.id) as upload_count + FROM upload_shares s JOIN users u ON u.id=s.user_id + LEFT JOIN upload_share_logs l ON l.share_id=s.id + GROUP BY s.id ORDER BY s.created_at DESC + `).all(); + res.json(shares); +}); + +router.post('/admin/permission', authenticate, requireAdmin, (req, res) => { + const { user_id, allow } = req.body; + db.prepare('UPDATE users SET allow_upload_share=? WHERE id=?').run(allow?1:0, user_id); + res.json({ ok:true }); +}); + +// ── Öffentlich: Share-Info ──────────────────────────────────────────────────── +router.get('/public/:token', (req, res) => { + const s = db.prepare("SELECT id,expires_at,max_size_mb,is_active,failed_attempts,deactivated_reason FROM upload_shares WHERE token=?").get(req.params.token); + if (!s || !s.is_active) return res.status(404).json({ error: s?.deactivated_reason==='too_many_attempts' ? 'Link wegen zu vieler Fehlversuche gesperrt' : 'Link ungültig oder deaktiviert' }); + if (new Date(s.expires_at) < new Date()) return res.status(410).json({ error:'Link abgelaufen' }); + logPublicAccess({ linkType: 'upload_share', path: `/u/${req.params.token}`, ip: req.ip, userAgent: req.headers['user-agent'] }); + res.json({ ok:true, max_size_mb:s.max_size_mb, expires_at:s.expires_at }); +}); + +// ── Öffentlich: Passwort prüfen ─────────────────────────────────────────────── +router.post('/public/:token/verify', (req, res) => { + const s = db.prepare("SELECT * FROM upload_shares WHERE token=?").get(req.params.token); + if (!s || !s.is_active) return res.status(404).json({ error:'Link ungültig' }); + if (new Date(s.expires_at) < new Date()) return res.status(410).json({ error:'Link abgelaufen' }); + + if (!bcrypt.compareSync(req.body?.password || '', s.password_hash)) { + const attempts = (s.failed_attempts||0) + 1; + if (attempts >= 3) { + // Link sperren + db.prepare("UPDATE upload_shares SET is_active=0, failed_attempts=?, deactivated_reason='too_many_attempts' WHERE id=?").run(attempts, s.id); + return res.status(401).json({ error:'Zu viele Fehlversuche – Link wurde gesperrt', locked:true }); + } + db.prepare("UPDATE upload_shares SET failed_attempts=? WHERE id=?").run(attempts, s.id); + return res.status(401).json({ error:'Falsches Passwort', attempts_left: 3-attempts }); + } + + // Erfolgreich – Fehlversuche zurücksetzen + db.prepare("UPDATE upload_shares SET failed_attempts=0 WHERE id=?").run(s.id); + res.json({ ok:true, max_size_mb:s.max_size_mb, expires_at:s.expires_at }); +}); + +// ── Öffentlich: Upload ──────────────────────────────────────────────────────── +router.post('/public/:token/upload', (req, res) => { + const s = db.prepare("SELECT * FROM upload_shares WHERE token=?").get(req.params.token); + if (!s || !s.is_active) return res.status(404).json({ error:'Link ungültig' }); + if (new Date(s.expires_at) < new Date()) return res.status(410).json({ error:'Link abgelaufen' }); + + const pw = req.headers['x-upload-password'] || ''; + if (!bcrypt.compareSync(pw, s.password_hash)) return res.status(401).json({ error:'Nicht autorisiert' }); + + const storage = multer.diskStorage({ destination: UPLOAD_DIR }); + const upload = multer({ storage, limits:{ fileSize: s.max_size_mb*1024*1024 } }).single('file'); + + upload(req, res, err => { + if (err) { + if (err.code==='LIMIT_FILE_SIZE') return res.status(413).json({ error:`Datei zu groß (max ${s.max_size_mb} MB)` }); + return res.status(500).json({ error:err.message }); + } + if (!req.file) return res.status(400).json({ error:'Keine Datei' }); + try { + db.prepare(`INSERT INTO files (user_id,filename,originalname,mimetype,size,folder_id,created_at) VALUES (?,?,?,?,?,?,datetime('now','localtime'))`).run(s.user_id,req.file.filename,req.file.originalname,req.file.mimetype,req.file.size,s.folder_id); + db.prepare(`INSERT INTO upload_share_logs (share_id,user_id,originalname,size,ip_address,uploaded_at) VALUES (?,?,?,?,?,datetime('now','localtime'))`).run(s.id,s.user_id,req.file.originalname,req.file.size,req.ip||''); + res.json({ ok:true, filename:req.file.originalname }); + } catch(e) { + try { fs.unlinkSync(path.join(UPLOAD_DIR, req.file.filename)); } catch {} + res.status(500).json({ error:e.message }); + } + }); +}); + +module.exports = router; diff --git a/backend/src/tools/dateien/webdav.js b/backend/src/tools/dateien/webdav.js new file mode 100644 index 0000000..d6565f9 --- /dev/null +++ b/backend/src/tools/dateien/webdav.js @@ -0,0 +1,169 @@ +/** + * WebDAV Storage Backend für Synology NAS + * Abstrahiert alle Datei-Operationen – lokal oder WebDAV + */ +const https = require('https'); +const http = require('http'); +const fs = require('fs'); +const path = require('path'); +const db = require('../../db'); + +function getSetting(key) { + return db.prepare('SELECT value FROM admin_settings WHERE key=?').get(key)?.value || ''; +} + +function getConfig() { + return { + url: getSetting('webdav_url'), // z.B. http://192.168.1.100:5005 + user: getSetting('webdav_user'), + password: getSetting('webdav_password'), + basePath: getSetting('webdav_base_path') || '/dickendock', // z.B. /dickendock + enabled: getSetting('webdav_enabled') === '1', + }; +} + +function authHeader(cfg) { + return 'Basic ' + Buffer.from(`${cfg.user}:${cfg.password}`).toString('base64'); +} + +// WebDAV Request ausführen +function davRequest(method, davPath, opts = {}) { + return new Promise((resolve, reject) => { + const cfg = getConfig(); + const base = new URL(cfg.url); + const fullPath = base.pathname.replace(/\/$/, '') + davPath; + const mod = base.protocol === 'https:' ? https : http; + + const headers = { + 'Authorization': authHeader(cfg), + 'Accept': '*/*', + ...opts.headers, + }; + + const reqOpts = { + hostname: base.hostname, + port: base.port || (base.protocol === 'https:' ? 443 : 80), + path: fullPath, + method, + headers, + rejectUnauthorized: false, // Synology Self-Signed Certs + }; + + if (opts.body) { + headers['Content-Length'] = Buffer.byteLength(opts.body); + } + + const req = mod.request(reqOpts, res => { + let data = ''; + res.setEncoding('binary'); + res.on('data', d => data += d); + res.on('end', () => resolve({ status: res.statusCode, headers: res.headers, body: data })); + }); + + req.on('error', reject); + if (opts.body) req.write(opts.body); + req.end(); + }); +} + +// ── Öffentliche API ──────────────────────────────────────────────────────── + +/** + * Ordner auf WebDAV anlegen (inkl. alle Parent-Ordner) + */ +async function mkdirp(davPath) { + const parts = davPath.split('/').filter(Boolean); + let current = ''; + for (const part of parts) { + current += '/' + part; + const r = await davRequest('MKCOL', current); + // 201 = erstellt, 301/405/409/423 = schon vorhanden oder Konflikt (ignorieren) + const ok = [201, 301, 405, 409, 423].includes(r.status); + if (!ok) { + console.warn(`[webdav mkdirp] MKCOL ${current} → ${r.status} (ignoriert)`); + } + } +} + +/** + * User-Basispfad auf WebDAV: /dickendock/{username} + */ +function userPath(cfg, username) { + return cfg.basePath.replace(/\/$/, '') + '/' + username.replace(/[^a-zA-Z0-9_-]/g, '_'); +} + +/** + * Datei auf WebDAV hochladen + * @param {Buffer} buffer - Dateiinhalt + * @param {string} davPath - Zielpfad auf WebDAV + * @param {string} mimeType + */ +async function uploadFile(buffer, davPath, mimeType = 'application/octet-stream') { + try { await mkdirp(davPath.split('/').slice(0, -1).join('/')); } catch(e) { + console.warn('[webdav] mkdirp warning:', e.message); + } + const r = await new Promise((resolve, reject) => { + const cfg = getConfig(); + const base = new URL(cfg.url); + const fullPath = base.pathname.replace(/\/$/, '') + davPath; + const mod = base.protocol === 'https:' ? https : http; + + const headers = { + 'Authorization': authHeader(cfg), + 'Content-Type': mimeType, + 'Content-Length': buffer.length, + }; + + const req = mod.request({ + hostname: base.hostname, + port: base.port || (base.protocol === 'https:' ? 443 : 80), + path: fullPath, + method: 'PUT', + headers, + rejectUnauthorized: false, + }, res => { res.resume(); resolve({ status: res.statusCode }); }); + + req.on('error', reject); + req.write(buffer); + req.end(); + }); + + if (r.status !== 201 && r.status !== 204) { + throw new Error(`PUT ${davPath} → ${r.status}`); + } +} + +/** + * Datei von WebDAV downloaden (gibt Buffer zurück) + */ +async function downloadFile(davPath) { + const r = await davRequest('GET', davPath); + if (r.status !== 200) throw new Error(`GET ${davPath} → ${r.status}`); + return Buffer.from(r.body, 'binary'); +} + +/** + * Datei/Ordner auf WebDAV löschen + */ +async function deleteFile(davPath) { + const r = await davRequest('DELETE', davPath); + if (r.status !== 204 && r.status !== 200 && r.status !== 404) { + throw new Error(`DELETE ${davPath} → ${r.status}`); + } +} + +/** + * Verbindung testen + */ +async function testConnection() { + const cfg = getConfig(); + if (!cfg.url || !cfg.user || !cfg.password) throw new Error('WebDAV nicht konfiguriert'); + const r = await davRequest('PROPFIND', cfg.basePath || '/', { + headers: { 'Depth': '0', 'Content-Type': 'application/xml' }, + body: '', + }); + if (r.status !== 207 && r.status !== 200) throw new Error(`Verbindung fehlgeschlagen: HTTP ${r.status}`); + return true; +} + +module.exports = { getConfig, userPath, mkdirp, uploadFile, downloadFile, deleteFile, testConnection }; diff --git a/backend/src/tools/gebietseroberung/routes.js b/backend/src/tools/gebietseroberung/routes.js new file mode 100644 index 0000000..97d81e9 --- /dev/null +++ b/backend/src/tools/gebietseroberung/routes.js @@ -0,0 +1,617 @@ +const express = require('express'); +const db = require('../../db'); +const { logPush } = require('../../pushLog'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +// ── DB-Migration ────────────────────────────────────────────────────────────── +(function migrate() { + const cols = db.pragma('table_info(geo_games)').map(c => c.name); + if (!cols.length) { + db.exec(` + CREATE TABLE IF NOT EXISTS geo_games ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + owner_id INTEGER NOT NULL, + opponent_id INTEGER NOT NULL, + grid TEXT NOT NULL, + terrain TEXT NOT NULL DEFAULT '[]', + current_turn INTEGER NOT NULL, + status TEXT NOT NULL DEFAULT 'active', + winner_id INTEGER, + move_count INTEGER NOT NULL DEFAULT 0, + last_event TEXT, + created_at TEXT NOT NULL DEFAULT (datetime('now','localtime')), + updated_at TEXT NOT NULL DEFAULT (datetime('now','localtime')) + ); + `); + } + for (const [col, def] of [ + ['move_count', 'INTEGER NOT NULL DEFAULT 0'], + ['terrain', 'TEXT'], + ['last_event', 'TEXT'], + ['owner_head', 'TEXT'], + ['opp_head', 'TEXT'], + ['owner_scouts', 'TEXT'], + ['opp_scouts', 'TEXT'], + ['seen_by', 'TEXT'], + ]) { + if (!cols.includes(col)) db.exec(`ALTER TABLE geo_games ADD COLUMN ${col} ${def}`); + } + // fog_owner/fog_opp waren alte Spalten, ignorieren +})(); + +// ── Konstanten ──────────────────────────────────────────────────────────────── +const GRID = 20; +const DIRS8 = [[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]]; +const T_NORMAL = 0; +const T_GOLD = 1; +const T_MINE = 2; +const T_ROCK = 3; + +// ── Terrain generieren ──────────────────────────────────────────────────────── +function generateTerrain(ownerHead, oppHead) { + const t = Array(GRID).fill(null).map(() => Array(GRID).fill(T_NORMAL)); + const safe = new Set(); + // 3x3 Sicherheitszone um beide Startecken + for (const headStr of [ownerHead, oppHead]) { + const [hr,hc] = headStr.split(',').map(Number); + for (let dr=-2;dr<=2;dr++) for (let dc=-2;dc<=2;dc++) { + const r=hr+dr, c=hc+dc; + if (r>=0&&r=0&&c0;i--) { const j=Math.floor(Math.random()*(i+1)); [cells[i],cells[j]]=[cells[j],cells[i]]; } + + let idx=0; + for (let i=0;i<12&&idx Array(GRID).fill(false)); + for (let r=0;r=0&&nr=0&&nc=0&&nr=0&&nc0;i--) { + const j=Math.floor(Math.random()*(i+1)); + [corners[i],corners[j]]=[corners[j],corners[i]]; + } + const [or,oc] = corners[0]; + const [pr,pc] = corners[1]; + const g = Array(GRID).fill(null).map(() => Array(GRID).fill(0)); + g[or][oc] = ownerId; + g[pr][pc] = oppId; + return { grid:g, ownerHead:`${or},${oc}`, oppHead:`${pr},${pc}` }; +} + +// Prüft ob [row,col] an den Kopf [hr,hc] angrenzt (8 Richtungen) +function isAdjacentToHead(row, col, hr, hc) { + return Math.abs(row - hr) <= 1 && Math.abs(col - hc) <= 1 && !(row === hr && col === hc); +} + +// Fallback für canMove: prüft ob Spieler noch irgendwo vom Kopf aus ziehen kann +function isAdjacent(grid, row, col, playerId) { + for (const [dr,dc] of DIRS8) { + const r=row+dr, c=col+dc; + if (r>=0&&r=0&&c=0&&r=0&&c=GRID||c<0||c>=GRID) continue; + if (terrain[r][c] === T_ROCK) continue; // schon Felsen + + // Ketten-Mine merken BEVOR terrain geändert wird + if (terrain[r][c] === T_MINE && !exploded.has(`${r},${c}`)) { + chainMines.push([r,c]); + } + + // Punktabzug für besetzte Felder + if (grid[r][c] === ownerId) destroyedByOwner++; + else if (grid[r][c] === oppId) destroyedByOpp++; + + // Feld wird zu Felsen + grid[r][c] = 0; + terrain[r][c] = T_ROCK; + blastCells.push([r,c]); + } + + // Kettenexplosionen + for (const [mr,mc] of chainMines) { + const chain = explodeMine(grid, terrain, mr, mc, ownerId, oppId, exploded); + destroyedByOwner += chain.destroyedByOwner; + destroyedByOpp += chain.destroyedByOpp; + blastCells.push(...chain.blastCells); + } + + return { destroyedByOwner, destroyedByOpp, blastCells }; +} + +function sendPush(userId, title, message) { + const cfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(userId); + if (!cfg?.app_token || !cfg?.user_key) return; + fetch('https://api.pushover.net/1/messages.json', { + method:'POST', headers:{'Content-Type':'application/json'}, + body: JSON.stringify({ token:cfg.app_token, user:cfg.user_key, title, message, priority:0 }), + }).catch(() => {}); + logPush({ userId, title, message, priority: 0, source: 'gebietseroberung' }); +} + +// Spiel laden + Fog anwenden + echte Scores beifügen +function getGameForUser(id, requesterId) { + const game = db.prepare(` + SELECT g.*, u1.username as owner_name, u2.username as opp_name + FROM geo_games g + JOIN users u1 ON u1.id = g.owner_id + JOIN users u2 ON u2.id = g.opponent_id + WHERE g.id = ? + `).get(id); + if (!game) return null; + + const grid = JSON.parse(game.grid); + const terrain = JSON.parse(game.terrain || '[]'); + + // Echte Scores auf ungemasktem Grid berechnen + const ownerScore = terrain.length ? calcScore(grid, terrain, game.owner_id) : 0; + const oppScore = terrain.length ? calcScore(grid, terrain, game.opponent_id) : 0; + // Dem Requester mitteilen welcher Score seiner ist + const myScore = requesterId === game.owner_id ? ownerScore : oppScore; + const oppSc = requesterId === game.owner_id ? oppScore : ownerScore; + + const myHead = requesterId === game.owner_id ? game.owner_head : game.opp_head; + const oppHead = requesterId === game.owner_id ? game.opp_head : game.owner_head; + + // Altes Spiel ohne Terrain: direkt zurückgeben, kein Fog + if (!terrain.length) { + return { ...game, myScore:0, oppScore:0, myHead, oppHead }; + } + + // Scouts des anfragenden Spielers laden + const myScoutsRaw = requesterId === game.owner_id ? game.owner_scouts : game.opp_scouts; + const myScouts = myScoutsRaw ? JSON.parse(myScoutsRaw) : []; + + // Bei beendetem Spiel: vollständiges Grid ohne Fog + let maskedGrid, maskedTerrain; + if (game.status === 'finished') { + maskedGrid = grid; + maskedTerrain = terrain; + } else { + const visible = computeFog(grid, requesterId, myScouts); + maskedGrid = grid.map((row,r) => row.map((cell,c) => visible[r][c] ? cell : (cell===requesterId ? cell : 0))); + maskedTerrain = terrain.map((row,r) => row.map((cell,c) => visible[r][c] ? cell : -1)); + } + + return { + ...game, + grid: JSON.stringify(maskedGrid), + terrain: JSON.stringify(maskedTerrain), + myScore, + oppScore: oppSc, + myHead, + oppHead, + myScouts, + }; +} + +const uid = req => req.user.id; + +// ── Alle Spiele ─────────────────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const me = uid(req); + const games = db.prepare(` + SELECT g.*, u1.username as owner_name, u2.username as opp_name + FROM geo_games g + JOIN users u1 ON u1.id = g.owner_id + JOIN users u2 ON u2.id = g.opponent_id + WHERE (g.owner_id=? OR g.opponent_id=?) + AND NOT (g.status='finished' AND g.move_count < 2) + ORDER BY g.updated_at DESC + `).all(me, me); + res.json(games); +}); + +// ── Meine Züge + ungesehene Spielenden ────────────────────────────────────── +router.get('/my-turns', authenticate, (req, res) => { + const me = uid(req); + // Aktive Spiele wo ich dran bin + const { count: turns } = db.prepare(` + SELECT COUNT(*) as count FROM geo_games + WHERE status='active' AND current_turn=? + `).get(me); + // Beendete Spiele wo ich beteiligt bin aber noch nicht gesehen habe + const games = db.prepare(` + SELECT id, seen_by FROM geo_games + WHERE status='finished' AND move_count >= 2 + AND (owner_id=? OR opponent_id=?) + `).all(me, me); + const unseen = games.filter(g => { + const seen = g.seen_by ? JSON.parse(g.seen_by) : []; + return !seen.includes(me); + }).length; + res.json({ count: turns + unseen }); +}); + +// ── Topliste ────────────────────────────────────────────────────────────────── +router.get('/leaderboard', authenticate, (req, res) => { + const rows = db.prepare(` + SELECT u.username, COUNT(*) as wins + FROM geo_games g + JOIN users u ON u.id = g.winner_id + WHERE g.status='finished' AND g.winner_id IS NOT NULL AND g.move_count >= 2 + GROUP BY g.winner_id ORDER BY wins DESC LIMIT 20 + `).all(); + res.json(rows); +}); + +// ── User ────────────────────────────────────────────────────────────────────── +router.get('/users', authenticate, (req, res) => { + const me = uid(req); + const isAdmin = req.user?.role === 'admin'; + const users = isAdmin + ? db.prepare('SELECT id, username FROM users WHERE id != ? ORDER BY username').all(me) + : db.prepare('SELECT id, username FROM users WHERE id != ? AND hidden != 1 ORDER BY username').all(me); + res.json(users); +}); + +// ── Einzelnes Spiel ─────────────────────────────────────────────────────────── +router.get('/:id', authenticate, (req, res) => { + const me = uid(req); + const game = getGameForUser(req.params.id, me); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' }); + res.json(game); +}); + +// ── Neues Spiel ─────────────────────────────────────────────────────────────── +router.post('/', authenticate, (req, res) => { + const me = uid(req); + const { opponent_id } = req.body; + if (!opponent_id) return res.status(400).json({ error: 'Gegner fehlt' }); + if (Number(opponent_id) === me) return res.status(400).json({ error: 'Du kannst nicht gegen dich spielen' }); + + const opp = db.prepare('SELECT id, username FROM users WHERE id=?').get(opponent_id); + if (!opp) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + + const { grid, ownerHead, oppHead } = createGrid(me, Number(opponent_id)); + const terrain = generateTerrain(ownerHead, oppHead); + + const result = db.prepare(` + INSERT INTO geo_games (owner_id, opponent_id, grid, terrain, current_turn, move_count, owner_head, opp_head) + VALUES (?, ?, ?, ?, ?, 0, ?, ?) + `).run(me, Number(opponent_id), JSON.stringify(grid), JSON.stringify(terrain), me, ownerHead, oppHead); + + const myName = db.prepare('SELECT username FROM users WHERE id=?').get(me)?.username || 'Jemand'; + sendPush(Number(opponent_id), '⬡ Hex Wars', `${myName} hat dich zu einem Spiel eingeladen! Du bist zuerst dran.`); + res.json({ id: result.lastInsertRowid }); +}); + +// ── Zug machen ──────────────────────────────────────────────────────────────── +router.post('/:id/move', authenticate, (req, res) => { + const me = uid(req); + const { row, col } = req.body; + if (row === undefined || col === undefined) return res.status(400).json({ error: 'row/col fehlt' }); + + const game = db.prepare('SELECT * FROM geo_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' }); + if (game.status !== 'active') return res.status(400).json({ error: 'Spiel beendet' }); + if (game.current_turn !== me) return res.status(400).json({ error: 'Nicht dein Zug' }); + + const grid = JSON.parse(game.grid); + const terrain = JSON.parse(game.terrain || '[]'); + + if (row<0||row>=GRID||col<0||col>=GRID) return res.status(400).json({ error: 'Ungültige Position' }); + if (grid[row][col] !== 0) return res.status(400).json({ error: 'Zelle belegt' }); + if (terrain.length && terrain[row][col] === T_ROCK) return res.status(400).json({ error: 'Felsen — nicht betretbar' }); + // Schlangen-Regel: Zug muss an den eigenen Kopf angrenzen + const myHeadStr = game.owner_id === me ? game.owner_head : game.opp_head; + const [myHR, myHC] = myHeadStr ? myHeadStr.split(',').map(Number) : [null, null]; + if (myHR !== null && !isAdjacentToHead(row, col, myHR, myHC)) + return res.status(400).json({ error: 'Nur an deinen Kopf anbauen!' }); + if (myHR === null && !isAdjacent(grid, row, col, me)) + return res.status(400).json({ error: 'Nicht angrenzend' }); + + const opponent = game.owner_id === me ? game.opponent_id : game.owner_id; + const newMoves = (game.move_count || 0) + 1; + const myName = db.prepare('SELECT username FROM users WHERE id=?').get(me)?.username || 'Jemand'; + const oppName = db.prepare('SELECT username FROM users WHERE id=?').get(opponent)?.username || 'Jemand'; + + // Zug ausführen + grid[row][col] = me; + + // Neuen Kopf setzen + let newOwnerHead = game.owner_head; + let newOppHead = game.opp_head; + if (game.owner_id === me) newOwnerHead = `${row},${col}`; + else newOppHead = `${row},${col}`; + + let lastEvent = null; + let mineHit = false; + let blastCells = []; + let destroyedOwn = 0; + let destroyedOpp = 0; + + // ── Mine betreten: Explosion der 8 Nachbarn ────────────────────────────── + if (terrain.length && terrain[row][col] === T_MINE) { + mineHit = true; + const explosion = explodeMine(grid, terrain, row, col, me, opponent); + blastCells = explosion.blastCells; + destroyedOwn = explosion.destroyedByOwner; + destroyedOpp = explosion.destroyedByOpp; + lastEvent = JSON.stringify({ type:'mine', player:me, row, col, blastCells, destroyedOwn, destroyedOpp }); + + // Kopf zurücksetzen: Mine-Feld gehört dem Spieler, aber Kopf soll auf das letzte + // noch existierende eigene Feld vor dem Mine-Zug zeigen. + // Der alte Kopf (myHR, myHC) wird durch explodeMine nicht zerstört (Explosion trifft Nachbarn), + // also ist er noch vorhanden — Kopf bleibt beim alten Kopf (vor dem Mine-Zug). + // Falls kein alter Kopf bekannt: suche nächstes eigenes Feld neben der Mine. + // Kopf nach Explosion: erstes eigenes Feld das AUSSERHALB des 3x3-Radius der Mine liegt + // (Mine + 8 Nachbarn sind alle Felsen — der Kopf muss weiter weg sein) + let safeHead = null; + // Alle eigenen Felder sammeln und nach Entfernung zur Mine sortieren + const ownCells = []; + for (let r=0;r1 || Math.abs(c-col)>1; + if (outside) ownCells.push([r, c, Math.abs(r-row)+Math.abs(c-col)]); + } + } + // Nächstes eigenes Feld außerhalb des Radius (Manhattan-Distanz minimal) + if (ownCells.length > 0) { + ownCells.sort((a,b) => a[2]-b[2]); + safeHead = `${ownCells[0][0]},${ownCells[0][1]}`; + } + if (safeHead) { + if (game.owner_id === me) newOwnerHead = safeHead; + else newOppHead = safeHead; + } + } + + // ── Mine ins Sichtfeld gekommen: Explosion prüfen ──────────────────────── + // Alle Minen die jetzt im Sichtfeld von BEIDEN Spielern liegen und noch nicht explodiert sind + // werden gezündet sobald ein Spieler sie sieht (d.h. sie grenzen an sein Gebiet) + // Dieses Feature: Mine explodiert wenn sie ins Sichtfeld kommt (nicht wenn betreten) + // → wird beim Betreten gehandhabt (oben), kein extra Trigger nötig + + // Nächster Zug + let nextTurn = mineHit ? opponent : opponent; // Mine = Zug verlieren + let status = 'active'; + let winnerId = null; + + // Effektiver Kopf nach Zug (bei Mine: zurückgesetzter Kopf, sonst neue Position) + const oppHeadStr = game.owner_id === me ? game.opp_head : game.owner_head; + const [oppHR, oppHC] = oppHeadStr ? oppHeadStr.split(',').map(Number) : [null, null]; + const effectiveMyHeadStr = game.owner_id === me ? newOwnerHead : newOppHead; + const [effectiveMyHR, effectiveMyHC] = effectiveMyHeadStr + ? effectiveMyHeadStr.split(',').map(Number) : [row, col]; + + // Spielende: niemand kann mehr ziehen + if (!canMove(grid, terrain, opponent, oppHR, oppHC) && !canMove(grid, terrain, me, effectiveMyHR, effectiveMyHC)) { + status = 'finished'; + } else if (!canMove(grid, terrain, opponent, oppHR, oppHC)) { + nextTurn = me; + } + + // Schnellsieg: jemand hat doppelt so viele Punkte wie der Gegner (mind. 10 Züge gespielt) + if (status === 'active' && newMoves >= 10) { + const ms = calcScore(grid, terrain, me); + const os = calcScore(grid, terrain, opponent); + if (ms >= os * 2 && os > 0) { status = 'finished'; } + else if (os >= ms * 2 && ms > 0) { status = 'finished'; } + } + + if (status === 'finished') { + const ms = calcScore(grid, terrain, me); + const os = calcScore(grid, terrain, opponent); + winnerId = ms > os ? me : (os > ms ? opponent : null); + } + + // last_event: nach jedem Zug das vorherige Event clearen (war vom letzten Zug) + // Nur das neue Event (falls Mine) bleibt stehen + const finalEvent = lastEvent; // null wenn kein Mine-Treffer + + db.prepare(` + UPDATE geo_games SET grid=?, terrain=?, current_turn=?, status=?, winner_id=?, move_count=?, last_event=?, + owner_head=?, opp_head=?, updated_at=datetime('now','localtime') WHERE id=? + `).run(JSON.stringify(grid), JSON.stringify(terrain), nextTurn, status, winnerId, newMoves, finalEvent, newOwnerHead, newOppHead, game.id); + + // Pushover + if (status === 'finished') { + const ms = calcScore(grid, terrain, me); + const os = calcScore(grid, terrain, opponent); + const reason = newMoves >= 10 && (ms >= os*2 || os >= ms*2) ? ' (Dominanzsieg!)' : ''; + if (winnerId === me) { + sendPush(opponent, '⬡ Hex Wars beendet', `${myName} hat gewonnen!${reason} ${ms} vs ${os} Punkte.`); + sendPush(me, '⬡ Hex Wars gewonnen!', `Du hast gewonnen!${reason} ${ms} vs ${os} Punkte. 🎉`); + } else if (winnerId === opponent) { + sendPush(me, '⬡ Hex Wars beendet', `${oppName} hat gewonnen.${reason} ${ms} vs ${os} Punkte.`); + sendPush(opponent, '⬡ Hex Wars gewonnen!', `Du hast gewonnen!${reason} ${os} vs ${ms} Punkte. 🎉`); + } else { + sendPush(me, '⬡ Hex Wars — Unentschieden!', `${ms} vs ${os} Punkte.`); + sendPush(opponent, '⬡ Hex Wars — Unentschieden!', `${os} vs ${ms} Punkte.`); + } + } else { + if (mineHit) { + sendPush(me, '⬡ Hex Wars — 💣 Mine!', `Du hast eine Mine getroffen! Explosion zerstörte ${destroyedOwn + destroyedOpp} Felder. Du verlierst deinen nächsten Zug.`); + sendPush(opponent, '⬡ Hex Wars — 💥 Explosion!', `${myName} hat eine Mine getroffen! ${destroyedOpp} deiner Felder wurden zerstört. Du bist dran!`); + } else if (nextTurn === opponent) { + sendPush(opponent, '⬡ Hex Wars — Du bist dran!', `${myName} hat gezogen!`); + } + } + + res.json(getGameForUser(game.id, me)); +}); + +// ── Spiel als gesehen markieren ────────────────────────────────────────────── +router.post('/:id/seen', authenticate, (req, res) => { + const me = uid(req); + const game = db.prepare('SELECT * FROM geo_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' }); + const seen = game.seen_by ? JSON.parse(game.seen_by) : []; + if (!seen.includes(me)) { + seen.push(me); + db.prepare('UPDATE geo_games SET seen_by=? WHERE id=?').run(JSON.stringify(seen), game.id); + } + res.json({ ok: true }); +}); + +// ── Scout: 3x3 Bereich aufdecken (kostet Zug) ─────────────────────────────── +router.post('/:id/scout', authenticate, (req, res) => { + const me = uid(req); + const { row, col } = req.body; + if (row === undefined || col === undefined) return res.status(400).json({ error: 'row/col fehlt' }); + + const game = db.prepare('SELECT * FROM geo_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' }); + if (game.status !== 'active') return res.status(400).json({ error: 'Spiel beendet' }); + if (game.current_turn !== me) return res.status(400).json({ error: 'Nicht dein Zug' }); + + const opponent = game.owner_id === me ? game.opponent_id : game.owner_id; + const newMoves = (game.move_count || 0) + 1; + + // Scouts des Spielers laden und neuen hinzufügen + const isOwner = game.owner_id === me; + const scoutsKey = isOwner ? 'owner_scouts' : 'opp_scouts'; + const existingRaw = game[scoutsKey]; + const existing = existingRaw ? JSON.parse(existingRaw) : []; + existing.push([row, col]); + const newScoutsStr = JSON.stringify(existing); + + // Zug weitergeben (Scout kostet Zug) + const grid = JSON.parse(game.grid); + const terrain = JSON.parse(game.terrain || '[]'); + let status = 'active', winnerId = null; + + // Schnellsieg-Check + if (newMoves >= 10 && terrain.length) { + const ms = calcScore(grid, terrain, me); + const os = calcScore(grid, terrain, opponent); + if (ms >= os*2 && os > 0) status = 'finished'; + else if (os >= ms*2 && ms > 0) status = 'finished'; + if (status === 'finished') { + winnerId = ms > os ? me : (os > ms ? opponent : null); + } + } + + const updateFields = isOwner + ? 'owner_scouts=?, current_turn=?, status=?, winner_id=?, move_count=?, last_event=NULL' + : 'opp_scouts=?, current_turn=?, status=?, winner_id=?, move_count=?, last_event=NULL'; + + db.prepare(`UPDATE geo_games SET ${updateFields}, updated_at=datetime('now','localtime') WHERE id=?`) + .run(newScoutsStr, opponent, status, winnerId, newMoves, game.id); + + const myName = db.prepare('SELECT username FROM users WHERE id=?').get(me)?.username || 'Jemand'; + sendPush(opponent, '⬡ Hex Wars — Du bist dran!', `${myName} hat gekundschaftet — jetzt bist du dran!`); + + res.json(getGameForUser(game.id, me)); +}); + +// ── Aufgeben ────────────────────────────────────────────────────────────────── +router.post('/:id/resign', authenticate, (req, res) => { + const me = uid(req); + const game = db.prepare('SELECT * FROM geo_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' }); + if (game.status !== 'active') return res.status(400).json({ error: 'Spiel bereits beendet' }); + + const winner = game.owner_id === me ? game.opponent_id : game.owner_id; + // move_count auf min. 2 setzen damit Spiel in Liste + Leaderboard erscheint + // seen_by: aufgebender Spieler hat es gesehen, Gewinner noch nicht + const newMoveCount = Math.max(game.move_count || 0, 2); + const seenBy = JSON.stringify([me]); // nur der Aufgebende hat es "gesehen" + db.prepare(` + UPDATE geo_games SET status='finished', winner_id=?, move_count=?, seen_by=?, + updated_at=datetime('now','localtime') WHERE id=? + `).run(winner, newMoveCount, seenBy, game.id); + const myName = db.prepare('SELECT username FROM users WHERE id=?').get(me)?.username || 'Jemand'; + sendPush(winner, '⬡ Hex Wars gewonnen!', `${myName} hat aufgegeben. Du gewinnst! 🎉`); + res.json({ ok: true }); +}); + +// ── Löschen (Admin) ─────────────────────────────────────────────────────────── +router.delete('/:id', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + const game = db.prepare('SELECT * FROM geo_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + if (game.status !== 'finished') return res.status(400).json({ error: 'Nur beendete Spiele können gelöscht werden' }); + db.prepare('DELETE FROM geo_games WHERE id=?').run(req.params.id); + res.json({ ok: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/kalkulator3d/routes.js b/backend/src/tools/kalkulator3d/routes.js new file mode 100644 index 0000000..773f13e --- /dev/null +++ b/backend/src/tools/kalkulator3d/routes.js @@ -0,0 +1,191 @@ +// Tool: 3D-Druck-Kalkulator +const express = require('express'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +router.get('/', authenticate, (req, res) => { + const uid = req.user.id; + const items = db.prepare('SELECT * FROM calculations WHERE user_id=? ORDER BY created_at DESC').all(uid); + + const baseFolder = db.prepare( + "SELECT id FROM folders WHERE user_id=? AND name='3D-Modelle' AND parent_id IS NULL" + ).get(uid); + let filesMap = {}; + if (baseFolder) { + const rows = db.prepare(` + SELECT f.name, COUNT(fi.id) AS cnt FROM folders f + LEFT JOIN files fi ON fi.folder_id = f.id + WHERE f.parent_id = ? AND f.user_id = ? GROUP BY f.id + `).all(baseFolder.id, uid); + for (const r of rows) filesMap[r.name] = r.cnt > 0; + } + + // Geteilt mit mir + const shared = db.prepare(` + SELECT c.*, u.username as owner_name, 1 as is_shared + FROM calculations c + JOIN calculation_shares cs ON cs.calc_id = c.id + JOIN users u ON u.id = c.user_id + WHERE cs.shared_with = ? + ORDER BY c.created_at DESC + `).all(uid); + + // Geteilt von mir + const sharedByMe = db.prepare(` + SELECT c.*, u.username as shared_with_name, cs.created_at as shared_at + FROM calculations c + JOIN calculation_shares cs ON cs.calc_id = c.id + JOIN users u ON u.id = cs.shared_with + WHERE c.user_id = ? + ORDER BY c.name ASC + `).all(uid); + + // has_files auch für shared items prüfen (anhand owner's Ordner) + const sharedWithFiles = shared.map(i => { + const ownerBase = db.prepare( + "SELECT id FROM folders WHERE user_id=? AND name='3D-Modelle' AND parent_id IS NULL" + ).get(i.user_id); + let has_files = false; + if (ownerBase) { + const sub = db.prepare( + 'SELECT id FROM folders WHERE user_id=? AND name=? AND parent_id=?' + ).get(i.user_id, i.name, ownerBase.id); + if (sub) { + const cnt = db.prepare('SELECT COUNT(*) AS c FROM files WHERE folder_id=?').get(sub.id); + has_files = cnt.c > 0; + } + } + return { ...i, has_files }; + }); + + res.json({ + own: items.map(i => ({ ...i, has_files: !!filesMap[i.name] })), + shared: sharedWithFiles, + sharedByMe: sharedByMe.map(i => ({ ...i, has_files: !!filesMap[i.name] })), + }); +}); + +// Dateien eines Modells abrufen (für Owner + shared users) +router.get('/:id/files', authenticate, (req, res) => { + const uid = req.user.id; + const calc = db.prepare('SELECT * FROM calculations WHERE id=?').get(req.params.id); + if (!calc) return res.status(404).json({ error: 'Nicht gefunden' }); + const isOwner = calc.user_id === uid; + const isShared = db.prepare('SELECT id FROM calculation_shares WHERE calc_id=? AND shared_with=?').get(calc.id, uid); + if (!isOwner && !isShared) return res.status(403).json({ error: 'Kein Zugriff' }); + + const baseFolder = db.prepare( + "SELECT id FROM folders WHERE user_id=? AND name='3D-Modelle' AND parent_id IS NULL" + ).get(calc.user_id); + if (!baseFolder) return res.json([]); + const sub = db.prepare('SELECT id FROM folders WHERE user_id=? AND name=? AND parent_id=?') + .get(calc.user_id, calc.name, baseFolder.id); + if (!sub) return res.json([]); + res.json(db.prepare('SELECT * FROM files WHERE folder_id=? ORDER BY created_at ASC').all(sub.id)); +}); + +// Einzelne Datei herunterladen (Owner + shared users) +router.get('/:id/files/:fileId/download', authenticate, (req, res) => { + const uid = req.user.id; + const calc = db.prepare('SELECT * FROM calculations WHERE id=?').get(req.params.id); + if (!calc) return res.status(404).json({ error: 'Nicht gefunden' }); + const isOwner = calc.user_id === uid; + const isShared = db.prepare('SELECT id FROM calculation_shares WHERE calc_id=? AND shared_with=?').get(calc.id, uid); + if (!isOwner && !isShared) return res.status(403).json({ error: 'Kein Zugriff' }); + + const file = db.prepare('SELECT * FROM files WHERE id=?').get(req.params.fileId); + if (!file) return res.status(404).json({ error: 'Datei nicht gefunden' }); + + const path = require('path'); + const fs = require('fs'); + const UPLOAD_DIR = process.env.UPLOAD_DIR || '/data/uploads'; + const fp = path.join(UPLOAD_DIR, file.filename); + if (!fs.existsSync(fp)) return res.status(404).json({ error: 'Datei fehlt' }); + res.download(fp, file.originalname); +}); + + +// Share-Management +router.get('/:id/shares', authenticate, (req, res) => { + const calc = db.prepare('SELECT * FROM calculations WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!calc) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json(db.prepare(` + SELECT u.id, u.username, cs.created_at as shared_at + FROM calculation_shares cs JOIN users u ON u.id = cs.shared_with + WHERE cs.calc_id = ? + `).all(calc.id)); +}); + +router.post('/:id/share', authenticate, (req, res) => { + const calc = db.prepare('SELECT * FROM calculations WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!calc) return res.status(404).json({ error: 'Nicht gefunden' }); + const target = db.prepare('SELECT * FROM users WHERE username=?').get(req.body.username); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + if (target.id === req.user.id) return res.status(400).json({ error: 'Kann nicht mit dir selbst teilen' }); + db.prepare("INSERT OR IGNORE INTO calculation_shares (calc_id, shared_by, shared_with, created_at) VALUES (?,?,?,datetime('now','localtime'))") + .run(calc.id, req.user.id, target.id); + res.json({ ok: true }); +}); + +router.delete('/:id/share/:userId', authenticate, (req, res) => { + const calc = db.prepare('SELECT * FROM calculations WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!calc) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM calculation_shares WHERE calc_id=? AND shared_with=?').run(calc.id, req.params.userId); + res.json({ ok: true }); +}); + +router.post('/', authenticate, (req, res) => { + const { name, gramm, stunden, farben, + materialpreis_pro_gramm, stromverbrauch_kw, strompreis_pro_kwh, + druckerpreis, gesamtdruckstunden, verschleiss_pro_stunde, + preis_freundschaft, preis_normal, preis_auftrag, + image = null, bemerkung = '' } = req.body; + + if (!name || gramm == null || stunden == null) + return res.status(400).json({ error: 'Name, Gramm und Stunden erforderlich' }); + + const r = db.prepare(`INSERT INTO calculations + (user_id,name,gramm,stunden,farben,materialpreis_pro_gramm,stromverbrauch_kw, + strompreis_pro_kwh,druckerpreis,gesamtdruckstunden,verschleiss_pro_stunde, + preis_freundschaft,preis_normal,preis_auftrag,image,bemerkung) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`) + .run(req.user.id, name, gramm, stunden, farben, + materialpreis_pro_gramm, stromverbrauch_kw, strompreis_pro_kwh, + druckerpreis, gesamtdruckstunden, verschleiss_pro_stunde, + preis_freundschaft, preis_normal, preis_auftrag, image, bemerkung); + + res.json(db.prepare('SELECT * FROM calculations WHERE id=?').get(r.lastInsertRowid)); +}); + +router.put('/:id', authenticate, (req, res) => { + const ex = db.prepare('SELECT * FROM calculations WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!ex) return res.status(404).json({ error: 'Nicht gefunden' }); + + const { name, gramm, stunden, farben, + materialpreis_pro_gramm, stromverbrauch_kw, strompreis_pro_kwh, + druckerpreis, gesamtdruckstunden, verschleiss_pro_stunde, + preis_freundschaft, preis_normal, preis_auftrag, + image = ex.image, bemerkung = ex.bemerkung } = req.body; + + db.prepare(`UPDATE calculations SET + name=?,gramm=?,stunden=?,farben=?,materialpreis_pro_gramm=?,stromverbrauch_kw=?, + strompreis_pro_kwh=?,druckerpreis=?,gesamtdruckstunden=?,verschleiss_pro_stunde=?, + preis_freundschaft=?,preis_normal=?,preis_auftrag=?,image=?,bemerkung=?, + updated_at=CURRENT_TIMESTAMP WHERE id=? AND user_id=?`) + .run(name, gramm, stunden, farben, + materialpreis_pro_gramm, stromverbrauch_kw, strompreis_pro_kwh, + druckerpreis, gesamtdruckstunden, verschleiss_pro_stunde, + preis_freundschaft, preis_normal, preis_auftrag, image, bemerkung, + req.params.id, req.user.id); + + res.json(db.prepare('SELECT * FROM calculations WHERE id=?').get(req.params.id)); +}); + +router.delete('/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM calculations WHERE id=? AND user_id=?').run(req.params.id, req.user.id); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ success: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/kanban/routes.js b/backend/src/tools/kanban/routes.js new file mode 100644 index 0000000..5603ebd --- /dev/null +++ b/backend/src/tools/kanban/routes.js @@ -0,0 +1,155 @@ +const express = require('express'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +// ── DB-Migration ────────────────────────────────────────────────────────────── +(function migrate() { + db.exec(` + CREATE TABLE IF NOT EXISTS kanban_columns ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + title TEXT NOT NULL, + color TEXT NOT NULL DEFAULT '#4ecdc4', + position INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (datetime('now','localtime')) + ); + CREATE TABLE IF NOT EXISTS kanban_cards ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + column_id INTEGER NOT NULL REFERENCES kanban_columns(id) ON DELETE CASCADE, + user_id INTEGER NOT NULL, + title TEXT NOT NULL, + description TEXT NOT NULL DEFAULT '', + priority TEXT NOT NULL DEFAULT 'none', + position INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (datetime('now','localtime')), + updated_at TEXT NOT NULL DEFAULT (datetime('now','localtime')) + ); + `); + // Nachrüsten falls Tabelle schon existiert aber color fehlt + const cols = db.pragma('table_info(kanban_columns)').map(c => c.name); + if (!cols.includes('color')) { + db.exec("ALTER TABLE kanban_columns ADD COLUMN color TEXT NOT NULL DEFAULT '#4ecdc4'"); + } +})(); + +const uid = req => req.user.id; + +// ── Alle Spalten + Karten laden ─────────────────────────────────────────────── +router.get('/board', authenticate, (req, res) => { + const me = uid(req); + const columns = db.prepare( + 'SELECT * FROM kanban_columns WHERE user_id=? ORDER BY position ASC, id ASC' + ).all(me); + const cards = db.prepare( + 'SELECT * FROM kanban_cards WHERE user_id=? ORDER BY position ASC, id ASC' + ).all(me); + const colMap = {}; + for (const c of columns) { c.cards = []; colMap[c.id] = c; } + for (const card of cards) { + if (colMap[card.column_id]) colMap[card.column_id].cards.push(card); + } + res.json({ columns }); +}); + +// ── Spalte erstellen ────────────────────────────────────────────────────────── +router.post('/columns', authenticate, (req, res) => { + const { title, color = '#4ecdc4' } = req.body; + if (!title?.trim()) return res.status(400).json({ error: 'Titel fehlt' }); + const me = uid(req); + const maxPos = db.prepare('SELECT MAX(position) as m FROM kanban_columns WHERE user_id=?').get(me); + const pos = (maxPos?.m ?? -1) + 1; + const r = db.prepare( + "INSERT INTO kanban_columns (user_id,title,color,position) VALUES (?,?,?,?)" + ).run(me, title.trim(), color, pos); + res.json(db.prepare('SELECT * FROM kanban_columns WHERE id=?').get(r.lastInsertRowid)); +}); + +// ── Spalte aktualisieren (Titel + Farbe) ───────────────────────────────────── +// Feste Route vor :param (Lesson Learned) +router.post('/columns/reorder', authenticate, (req, res) => { + const { order } = req.body; + if (!Array.isArray(order)) return res.status(400).json({ error: 'order fehlt' }); + const me = uid(req); + const upd = db.prepare('UPDATE kanban_columns SET position=? WHERE id=? AND user_id=?'); + db.transaction(() => { for (let i = 0; i < order.length; i++) upd.run(i, order[i], me); })(); + res.json({ ok: true }); +}); + +router.patch('/columns/:id', authenticate, (req, res) => { + const me = uid(req); + const col = db.prepare('SELECT * FROM kanban_columns WHERE id=? AND user_id=?').get(req.params.id, me); + if (!col) return res.status(404).json({ error: 'Spalte nicht gefunden' }); + const title = req.body.title !== undefined ? req.body.title.trim() : col.title; + const color = req.body.color !== undefined ? req.body.color : col.color; + if (!title) return res.status(400).json({ error: 'Titel fehlt' }); + db.prepare('UPDATE kanban_columns SET title=?, color=? WHERE id=?').run(title, color, col.id); + res.json({ ok: true }); +}); + +router.delete('/columns/:id', authenticate, (req, res) => { + const me = uid(req); + const col = db.prepare('SELECT * FROM kanban_columns WHERE id=? AND user_id=?').get(req.params.id, me); + if (!col) return res.status(404).json({ error: 'Spalte nicht gefunden' }); + db.prepare('DELETE FROM kanban_columns WHERE id=?').run(col.id); + res.json({ ok: true }); +}); + +// ── Karten ──────────────────────────────────────────────────────────────────── +router.post('/cards', authenticate, (req, res) => { + const { column_id, title, description = '', priority = 'none' } = req.body; + if (!column_id || !title?.trim()) return res.status(400).json({ error: 'column_id und title erforderlich' }); + const me = uid(req); + const col = db.prepare('SELECT * FROM kanban_columns WHERE id=? AND user_id=?').get(column_id, me); + if (!col) return res.status(404).json({ error: 'Spalte nicht gefunden' }); + const maxPos = db.prepare('SELECT MAX(position) as m FROM kanban_cards WHERE column_id=?').get(column_id); + const pos = (maxPos?.m ?? -1) + 1; + const r = db.prepare( + "INSERT INTO kanban_cards (column_id,user_id,title,description,priority,position) VALUES (?,?,?,?,?,?)" + ).run(column_id, me, title.trim(), description.trim(), priority, pos); + res.json(db.prepare('SELECT * FROM kanban_cards WHERE id=?').get(r.lastInsertRowid)); +}); + +router.patch('/cards/:id', authenticate, (req, res) => { + const me = uid(req); + const card = db.prepare('SELECT * FROM kanban_cards WHERE id=? AND user_id=?').get(req.params.id, me); + if (!card) return res.status(404).json({ error: 'Karte nicht gefunden' }); + const title = req.body.title !== undefined ? req.body.title.trim() : card.title; + const description = req.body.description !== undefined ? req.body.description.trim() : card.description; + const priority = req.body.priority !== undefined ? req.body.priority : card.priority; + if (!title) return res.status(400).json({ error: 'Titel darf nicht leer sein' }); + db.prepare( + "UPDATE kanban_cards SET title=?,description=?,priority=?,updated_at=datetime('now','localtime') WHERE id=?" + ).run(title, description, priority, card.id); + res.json(db.prepare('SELECT * FROM kanban_cards WHERE id=?').get(card.id)); +}); + +router.delete('/cards/:id', authenticate, (req, res) => { + const me = uid(req); + const card = db.prepare('SELECT * FROM kanban_cards WHERE id=? AND user_id=?').get(req.params.id, me); + if (!card) return res.status(404).json({ error: 'Karte nicht gefunden' }); + db.prepare('DELETE FROM kanban_cards WHERE id=?').run(card.id); + res.json({ ok: true }); +}); + +router.post('/cards/:id/move', authenticate, (req, res) => { + const { column_id, position } = req.body; + const me = uid(req); + const card = db.prepare('SELECT * FROM kanban_cards WHERE id=? AND user_id=?').get(req.params.id, me); + if (!card) return res.status(404).json({ error: 'Karte nicht gefunden' }); + const targetColId = column_id !== undefined ? column_id : card.column_id; + const col = db.prepare('SELECT * FROM kanban_columns WHERE id=? AND user_id=?').get(targetColId, me); + if (!col) return res.status(404).json({ error: 'Zielspalte nicht gefunden' }); + const siblings = db.prepare( + 'SELECT id FROM kanban_cards WHERE column_id=? AND id!=? ORDER BY position ASC, id ASC' + ).all(targetColId, card.id).map(r => r.id); + const targetPos = position !== undefined + ? Math.max(0, Math.min(position, siblings.length)) + : siblings.length; + siblings.splice(targetPos, 0, card.id); + const upd = db.prepare('UPDATE kanban_cards SET column_id=?, position=? WHERE id=?'); + db.transaction(() => { for (let i = 0; i < siblings.length; i++) upd.run(targetColId, i, siblings[i]); })(); + res.json({ ok: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/koepi/routes.js b/backend/src/tools/koepi/routes.js new file mode 100644 index 0000000..7b516d4 --- /dev/null +++ b/backend/src/tools/koepi/routes.js @@ -0,0 +1,954 @@ +const express = require('express'); +const https = require('https'); +const crypto = require('crypto'); +const db = require('../../db'); +const mqttClient = require('../../mqtt'); +const { logPush } = require('../../pushLog'); +const { logPublicAccess } = require('../../publicAccessLog'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +// ── Cache ───────────────────────────────────────────────────────────────────── +const cache = {}; +function cacheGet(k) { const e=cache[k]; if(!e||Date.now()>e.ex) { delete cache[k]; return null; } return e.d; } +function cacheSet(k,d,ms=60*60*1000) { cache[k]={d,ex:Date.now()+ms}; } + +// ── marktguru Cookie (Standort Duisburg 47259) ──────────────────────────────── +const MG_SETTINGS = encodeURIComponent(JSON.stringify({ + location: { name:'Duisburg', uniqueName:'duisburg', longitude:6.7625, latitude:51.4332, zipCodes:['47259'] }, + locationSource: 'manual', hidePageflipMenu: false, cookieAccept: true, userGroup: 35, +})); + +// ── Gewünschte Händler (grobe Vorfilterung, bevor die genaue Filiale geprüft wird) ─ +const TARGET_RETAILERS = ['edeka','e center','rewe','netto','kaufland','penny','trinkgut','lidl','aldi','hornbach']; +function isTargetRetailer(name) { + if (!name) return false; + const n = name.toLowerCase(); + return TARGET_RETAILERS.some(r => n.includes(r)); +} + +// Straßennamen robust vergleichbar machen (Groß-/Kleinschreibung, "straße"/"str.", +// Kommas/Leerzeichen/Punkte egal) +function normalizeAddress(s) { + return (s || '') + .toLowerCase() + .replace(/straße|strasse/g, 'str') + .replace(/[^a-zäöüß0-9]/g, ''); +} +// Adressen mit mehreren kommagetrennten Hausnummern (z.B. "Straße 173,173a") +// in einzelne vollständige Varianten zerlegen ("Straße 173" / "Straße 173a"), +// damit ein Treffer gegen nur eine der beiden Hausnummern trotzdem zählt +function expandAddressVariants(addr) { + const m = (addr || '').match(/^(.*?)(\d.*)$/); + if (!m) return [addr]; + const streetPart = m[1].trim(); + const numbers = m[2].split(',').map(s => s.trim()).filter(Boolean); + if (numbers.length <= 1) return [addr]; + return numbers.map(n => `${streetPart} ${n}`); +} +function addressesMatch(a, b) { + for (const va of expandAddressVariants(a)) { + for (const vb of expandAddressVariants(b)) { + const na = normalizeAddress(va), nb = normalizeAddress(vb); + if (na && nb && (na.includes(nb) || nb.includes(na))) return true; + } + } + return false; +} + +// Die gewünschten Filialen. Zwei Wege, wie eine Filiale hier eingetragen wird: +// - leafletId bekannt (Prospekt-Link bestätigt): wird direkt aufgelöst. +// - nur addressMatch bekannt: wird automatisch unter allen AKTUELL laufenden +// Prospekten dieser Kette in der Umgebung gesucht — die closestStore-Adresse +// wird gegen die angegebene Zieladresse abgeglichen, kein Prospekt-Link nötig. +const LOCAL_STORE_SEED_LEAFLETS = [ + { retailer: 'Netto Marken-Discount', leafletId: 5653691 }, // Im Bonnefeld 19 + { retailer: 'Netto Getränke-Discount', leafletId: 5627267 }, // Im Bonnefeld 21 + { retailer: 'trinkgut', leafletId: 5634593 }, // Keniastraße 39 + { retailer: 'REWE', leafletId: 5616164 }, // Fischerstr. 110-112 + { retailer: 'Kaufland', leafletId: 5628827 }, // Auf der Höhe 20 + { retailer: 'Penny', leafletId: 5638286 }, // Sittardsberger Allee 10 + { retailer: 'E center', leafletId: 5637005 }, // Düsseldorfer Landstr. 361 +]; +const LOCAL_STORE_SEED_BY_ADDRESS = [ + { retailer: 'Lidl', matchRetailerKey: 'lidl', addressMatch: 'Mündelheimer Str. 184' }, + { retailer: 'ALDI Süd', matchRetailerKey: 'aldi', addressMatch: 'Mündelheimer Straße 173' }, + { retailer: 'HORNBACH', matchRetailerKey: 'hornbach', addressMatch: 'Düsseldorfer Straße 400' }, +]; + +function isKnownLocalStore(storeId) { + if (storeId == null) return true; // Store konnte nicht ermittelt werden -> lieber behalten als faelschlich verstecken + return !!db.prepare('SELECT 1 FROM koepi_local_stores WHERE store_id=?').get(storeId); +} + +// Explizit unerwünschte Marken/Franchise-Label, unabhängig von der Filiale — +// zusätzliches Sicherheitsnetz, greift aber durch die ID-Whitelist ohnehin kaum +// noch (REWE Dortmund taucht dort schlicht nicht auf) +const EXCLUDED_RETAILER_NAMES = ['rewe dortmund']; +function isExcludedRetailer(retailer) { + const n = (retailer || '').toLowerCase(); + return EXCLUDED_RETAILER_NAMES.some(x => n.includes(x)); +} + +// ── Angebote von marktguru ──────────────────────────────────────────────────── +// Primär über die öffentlich bekannte marktguru-JSON-API (schnell, kein Browser +// nötig, kein Cloudflare-Risiko). Schlägt das fehl (z.B. weil die Keys mal +// ungültig werden), fällt der Code automatisch auf das alte Puppeteer/HTML- +// Scraping zurück, damit KöPi nicht komplett ausfällt. +const MARKTGURU_API_URL = 'https://api.marktguru.de/api/v1/offers/search'; +const MARKTGURU_CLIENT_KEY = 'WU/RH+PMGDi+gkZer3WbMelt6zcYHSTytNB7VpTia90='; +const MARKTGURU_API_KEY = '8Kk+pmbf7TgJ9nVj2cXeA7P5zBGv8iuutVVMRfOfvNE='; +const MG_ZIP = '47259'; +const MG_QUERY = 'könig pilsener'; + +function formatIsoDate(iso) { + if (!iso) return ''; + const d = new Date(iso); + if (Number.isNaN(d.getTime())) return ''; + const pad = n => String(n).padStart(2, '0'); + return `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.`; +} + +// Duisburg 47259 Zentrum — für den closestStore-Abgleich im leaflets-Detail-Call. +// Innerhalb der zipCode-Filterung spielt der genaue Punkt kaum eine Rolle. +const MG_LAT = '51.3543213'; +const MG_LON = '6.7151937'; + +const mgHeaders = { + 'x-clientkey': MARKTGURU_CLIENT_KEY, + 'x-apikey': MARKTGURU_API_KEY, + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', +}; + +// Holt für eine PLZ alle laufenden Prospekt-Kampagnen (leafletFlights) und baut +// eine Zuordnung leafletFlightId -> mainLeafletId, die wir brauchen, um darüber +// später das leaflet-Detail (inkl. closestStore) abzurufen. +async function fetchLeafletFlightToLeafletMap() { + const url = `https://api.marktguru.de/api/v1/leafletflights?as=mobile&limit=100&zipCode=${MG_ZIP}`; + const res = await fetch(url, { headers: mgHeaders }); + if (!res.ok) throw new Error(`leafletflights HTTP ${res.status}`); + const json = await res.json(); + const map = new Map(); + for (const f of (json.results || [])) { + if (f.id && f.mainLeafletId) map.set(f.id, f.mainLeafletId); + } + console.log(`🍺 KöPi: ${map.size} leafletFlight→Leaflet Zuordnungen geladen (von ${json.totalResults} gesamt)`); + return map; +} + +// Holt für ein einzelnes Leaflet den kompletten Datensatz von marktguru: +// closestStore (id/address/distanceInMeters — Grundlage der Filial-Whitelist), +// name (enthält oft "(KW29 Do-Sa)" o.ä.) und children (Liste aller Angebote +// mit ihrem pageIndex, für den seiten-genauen Direktlink). +async function fetchLeafletDetail(leafletId, cache) { + if (cache.has(leafletId)) return cache.get(leafletId); + const empty = { id: leafletId, name: '', closestStore: { id: null, address: '', distanceMeters: null }, children: [] }; + try { + const url = `https://api.marktguru.de/api/v1/leaflets/${leafletId}?as=mobiledetailed&latitude=${MG_LAT}&longitude=${MG_LON}&zipCode=${MG_ZIP}`; + const res = await fetch(url, { headers: mgHeaders }); + if (!res.ok) { cache.set(leafletId, empty); return empty; } + const json = await res.json(); + const store = json.closestStore; + const result = { + id: json.id ?? leafletId, + name: json.name || '', + closestStore: store + ? { id: store.id ?? null, address: store.address || '', distanceMeters: store.distanceInMeters ?? null } + : { id: null, address: '', distanceMeters: null }, + children: json.children || [], + }; + console.log(`🍺 KöPi: Leaflet ${leafletId} ("${result.name}") → closestStore: ${store ? `id=${store.id} "${store.address}" (${Math.round(store.distanceInMeters||0)}m entfernt)` : 'keine'}`); + cache.set(leafletId, result); + return result; + } catch (e) { + console.log(`🍺 KöPi: Leaflet-Detail-Abruf für ${leafletId} fehlgeschlagen: ${e.message}`); + cache.set(leafletId, empty); + return empty; + } +} + +// Extrahiert eine "(KW29 Do-Sa)"-artige Angabe aus dem Leaflet-Namen. Manche +// Ketten (z.B. ALDI) schreiben die KW-Angabe ohne umschließende Klammern +// ("... KW32 ...") — die wird dann selbst eingeklammert, damit die Anzeige +// überall einheitlich aussieht. +function extractWeekInfo(name) { + // Fängt nur "KW29" bzw. "KW 29" plus optional einen kurzen Wochentag-Bereich + // wie "Do-Sa" direkt danach ein — ignoriert bewusst alles andere drumherum + // (z.B. technischen Datensatz-Text wie "HHZ Dataset 2"), egal ob das Ganze + // in Klammern steht oder nicht. Klammert das Ergebnis immer selbst neu ein, + // damit die Anzeige überall einheitlich aussieht. + const m = (name || '').match(/KW\s*\d+(?:\s*[A-Za-zÄÖÜäöüß]{2,3}-[A-Za-zÄÖÜäöüß]{2,3})?/i); + return m ? `(${m[0].replace(/\s+/g, ' ').trim()})` : ''; +} + +// Entfernt bekannten Stör-/Metatext aus dem angezeigten Prospekt-Titel: +// "(weekly)"-Zusätze und jede KW-Klammer (die steht ja schon separat als +// eigene weekInfo daneben, muss also nicht nochmal im Titel stehen — und dort +// hängt bei manchen Ketten zusätzlich technischer Datensatz-Text mit dran). +const TITLE_NOISE_PATTERNS = [/\(weekly\)/gi, /\([^)]*KW[^)]*\)/gi]; +function cleanTitle(name) { + let t = name || ''; + for (const p of TITLE_NOISE_PATTERNS) t = t.replace(p, ''); + return t.replace(/\s{2,}/g, ' ').trim(); +} + +// Fallback, falls eine Kette (z.B. REWE) gar keine KW-Angabe im Namen mitliefert: +// Kalenderwoche selbst aus dem Gültig-ab-Datum berechnen +function getISOWeekNumber(dateStr) { + const d = new Date(dateStr); + if (Number.isNaN(d.getTime())) return null; + d.setHours(0, 0, 0, 0); + d.setDate(d.getDate() + 4 - (d.getDay() || 7)); + const yearStart = new Date(d.getFullYear(), 0, 1); + return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); +} +function weekInfoWithFallback(name, validFromIso) { + const found = extractWeekInfo(name); + if (found) return found; + const week = validFromIso ? getISOWeekNumber(validFromIso) : null; + return week ? `(KW${week})` : ''; +} + +// Löst die feste Liste gewünschter Filialen (LOCAL_STORE_SEED_LEAFLETS) einmalig +// zu echten Store-IDs auf und speichert sie in der DB als Whitelist. Wird beim +// ersten Scrape automatisch ausgeführt (falls die Tabelle leer ist) und kann +// über den Admin-Button jederzeit erneut angestoßen werden, falls sich mal ein +// Prospekt-Link ändert oder eine Filiale ergänzt werden soll. +async function resolveLocalStores() { + const cache = new Map(); + let resolved = 0; + + // 1) Direkt bekannte Leaflet-IDs (per Prospekt-Link bestätigt) + for (const seed of LOCAL_STORE_SEED_LEAFLETS) { + const detail = await fetchLeafletDetail(seed.leafletId, cache); + const store = detail.closestStore; + if (store.id != null) { + db.prepare(` + INSERT OR REPLACE INTO koepi_local_stores (store_id, retailer, address, resolved_at) + VALUES (?, ?, ?, datetime('now','localtime')) + `).run(store.id, seed.retailer, store.address); + console.log(`🍺 KöPi: Filiale aufgelöst — ${seed.retailer} → Store-ID ${store.id} ("${store.address}")`); + resolved++; + } else { + console.log(`🍺 KöPi: Filiale NICHT auflösbar — ${seed.retailer} (Leaflet ${seed.leafletId}) — evtl. Prospekt abgelaufen, Link erneuern`); + } + } + + // 2) Nur Adresse bekannt — unter allen aktuell laufenden Prospekten dieser + // Kette in der Umgebung suchen, closestStore-Adresse gegen Zieladresse prüfen + if (LOCAL_STORE_SEED_BY_ADDRESS.length) { + try { + const flightsUrl = `https://api.marktguru.de/api/v1/leafletflights?as=mobile&limit=100&zipCode=${MG_ZIP}`; + const flightsRes = await fetch(flightsUrl, { headers: mgHeaders }); + const flightsJson = flightsRes.ok ? await flightsRes.json() : { results: [] }; + + for (const target of LOCAL_STORE_SEED_BY_ADDRESS) { + const candidates = (flightsJson.results || []).filter(f => + (f.advertiser?.name || '').toLowerCase().includes(target.matchRetailerKey) + ); + console.log(`🍺 KöPi: Suche "${target.retailer}" per Adresse — ${candidates.length} laufende Prospekt(e) dieser Kette gefunden`); + let found = null; + for (const c of candidates) { + if (!c.mainLeafletId) continue; + const detail = await fetchLeafletDetail(c.mainLeafletId, cache); + const store = detail.closestStore; + if (store.id != null && addressesMatch(store.address, target.addressMatch)) { + found = store; + break; + } + } + if (found) { + db.prepare(` + INSERT OR REPLACE INTO koepi_local_stores (store_id, retailer, address, resolved_at) + VALUES (?, ?, ?, datetime('now','localtime')) + `).run(found.id, target.retailer, found.address); + console.log(`🍺 KöPi: Filiale per Adresse gefunden — ${target.retailer} → Store-ID ${found.id} ("${found.address}")`); + resolved++; + } else { + console.log(`🍺 KöPi: Filiale per Adresse NICHT gefunden — ${target.retailer} (gesucht: "${target.addressMatch}") — evtl. gerade kein laufender Prospekt dieser Kette in der Gegend`); + } + } + } catch (e) { + console.log('🍺 KöPi: Adress-basierte Filial-Suche fehlgeschlagen:', e.message); + } + } + + return resolved; +} + +async function fetchOffersViaApi() { + const url = `${MARKTGURU_API_URL}?as=web&limit=24&offset=0&q=${encodeURIComponent(MG_QUERY)}&zipCode=${MG_ZIP}`; + const res = await fetch(url, { headers: mgHeaders }); + if (!res.ok) { + const text = await res.text().catch(() => ''); + throw new Error(`API HTTP ${res.status}: ${text.slice(0, 200)}`); + } + const json = await res.json(); + console.log('🍺 KöPi API: totalResults=', json.totalResults, '| results.length=', json.results?.length); + + const rawOffers = json.results || []; + + // Echte Filial-ID + Adresse pro Angebot auflösen (leafletFlightId -> mainLeafletId -> closestStore) + let flightToLeaflet = new Map(); + try { + flightToLeaflet = await fetchLeafletFlightToLeafletMap(); + } catch (e) { + console.log('🍺 KöPi: leafletflights-Abruf fehlgeschlagen, Filial-Filter bleibt diesmal wirkungslos:', e.message); + } + const leafletCache = new Map(); + const detailByOfferId = new Map(); + for (const r of rawOffers) { + const leafletId = flightToLeaflet.get(r.leafletFlightId); + if (leafletId) { + const detail = await fetchLeafletDetail(leafletId, leafletCache); + detailByOfferId.set(r.id, detail); + } + } + + return rawOffers.map(r => { + const advertiser = r.advertisers?.[0] || {}; + const priceNum = typeof r.price === 'number' ? r.price : parseFloat(r.price); + const oldPriceNum = typeof r.oldPrice === 'number' ? r.oldPrice : parseFloat(r.oldPrice); + const detail = detailByOfferId.get(r.id); + const storeInfo = detail?.closestStore || { id: null, address: '', distanceMeters: null }; + const validity0 = r.validityDates?.[0] || {}; + const weekInfo = weekInfoWithFallback(detail?.name, validity0.from); + const baseDateRange = validity0.from && validity0.to + ? `${formatIsoDate(validity0.from)} - ${formatIsoDate(validity0.to)}` + : formatIsoDate(validity0.to); + // Seiten-genauer Direktlink zum Angebot innerhalb des Prospekts — wird bei + // jedem Scrape frisch aus den aktuellen API-Daten ermittelt (children[].id + // == "offers/{id}"), funktioniert also automatisch weiter bei neuen + // Prospekten, ohne dass irgendwas hartkodiert werden muss. + const child = detail?.children?.find(c => c.id === `offers/${r.id}`); + const leafletUrl = detail + ? `https://www.marktguru.de/leaflets/${detail.id}${child ? `/page/${child.pageIndex}` : ''}` + : null; + const knownStore = storeInfo.id != null + ? db.prepare('SELECT retailer FROM koepi_local_stores WHERE store_id=?').get(storeInfo.id) + : null; + const retailerLabel = knownStore?.retailer || advertiser.name || ''; + return { + name: r.description || r.title || advertiser.name || '', + brand: r.brand?.name || '', + price: Number.isFinite(priceNum) ? `€ ${priceNum.toFixed(2).replace('.', ',')}` : (r.price || ''), + oldPrice: Number.isFinite(oldPriceNum) ? `€ ${oldPriceNum.toFixed(2).replace('.', ',')}` : (r.oldPrice || ''), + retailer: retailerLabel, + dateRange: weekInfo ? `${baseDateRange} ${weekInfo}` : baseDateRange, + weekInfo, + validity: '', + description: r.description || '', + badge: '', + // Adresse kommt jetzt direkt von marktguru (closestStore.address), nicht mehr fest hinterlegt + address: storeInfo.address || '', + realAddress: storeInfo.address || '', + storeId: storeInfo.id, + storeDistanceMeters: storeInfo.distanceMeters, + leafletFlightId: r.leafletFlightId || null, + offerId: r.id || null, + leafletUrl, + image: r.image?.url || r.images?.[0]?.url || null, + }; + }); +} + +async function fetchOffersViaPuppeteer() { + let puppeteer; + try { puppeteer = require('puppeteer-core'); } + catch(e) { throw new Error('puppeteer-core nicht installiert'); } + + const browser = await puppeteer.launch({ + executablePath: '/usr/bin/chromium-browser', + args: ['--no-sandbox','--disable-setuid-sandbox','--disable-dev-shm-usage','--disable-gpu','--single-process'], + headless: true, + }); + + try { + const page = await browser.newPage(); + await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'); + await page.setViewport({ width:1280, height:800 }); + await page.setCookie({ name:'mg_user-settings', value:MG_SETTINGS, domain:'.marktguru.de', path:'/' }); + + await page.goto('https://www.marktguru.de/search/k%C3%B6nig%20pilsener?zipCode=47259', { + waitUntil: 'networkidle2', timeout: 30000, + }); + // Seite nach unten scrollen damit lazy-loaded Bilder geladen werden + await page.evaluate(async () => { + await new Promise(resolve => { + let totalHeight = 0; + const distance = 300; + const timer = setInterval(() => { + window.scrollBy(0, distance); + totalHeight += distance; + if (totalHeight >= document.body.scrollHeight) { + clearInterval(timer); + resolve(); + } + }, 200); + }); + }); + await new Promise(r => setTimeout(r, 3000)); + + const offers = await page.evaluate(() => { + // Exakte Selektoren basierend auf marktguru HTML-Struktur + const cards = document.querySelectorAll('li.offer-list-item'); + return Array.from(cards).map(card => { + const name = card.querySelector('h3')?.textContent?.trim() || ''; + const brand = card.querySelector('dd.brand a')?.textContent?.trim() || ''; + const price = card.querySelector('span.price')?.textContent?.trim() || ''; + const oldPrice = card.querySelector('.price-bubble .old-price, .crossed')?.textContent?.trim() || ''; + const retailer = card.querySelector('dd.retailer-name a')?.textContent?.trim() || ''; + const dateRange= card.querySelector('dd.valid')?.textContent?.trim() || ''; + const daysLeft = card.querySelector('dd.time-left span')?.textContent?.trim() || ''; + const validity = daysLeft ? `Noch ${daysLeft} Tag${daysLeft==='1'?'':'e'}` : + card.querySelector('dt.time-left')?.textContent?.includes('Brandneu') ? 'Neu' : ''; + const descEl = card.querySelector('.info div, .info'); + const description = descEl?.textContent?.trim() || ''; + const img = card.querySelector('img.offer-list-item-img'); + const badge = card.querySelector('.badge, .discount-badge')?.textContent?.trim() || ''; + const imgSrc = img?.src?.replace('/medium.webp', '/large.webp') || img?.src || null; + const allDds = Array.from(card.querySelectorAll('dd')); + const retailerIdx = allDds.findIndex(d => d.classList.contains('retailer-name')); + let realAddress = ''; + if (retailerIdx !== -1 && allDds[retailerIdx + 1]) { + const next = allDds[retailerIdx + 1]; + const isOtherField = next.classList.contains('valid') || next.classList.contains('time-left'); + if (!isOtherField) realAddress = next.textContent?.trim() || ''; + } + return { name, brand, price, oldPrice, retailer, dateRange, validity, description, badge, address: '', realAddress, image: imgSrc }; + }); + }); + return offers; + } finally { + await browser.close(); + } +} + +// Prüft, ob "COUNT x VOL" (z.B. "20 x 0,5") in der Beschreibung vorkommt — +// robust gegen Leerzeichen um das "x", Komma/Punkt als Dezimaltrennzeichen, +// und verhindert Fehltreffer wie "0,5" innerhalb von "0,55" +function hasQty(desc, count, vol) { + const volPattern = vol.replace(',', '[,.]'); + const re = new RegExp(`${count}\\s*x\\s*${volPattern}(?!\\d)`, 'i'); + return re.test(desc); +} + +// Bild pro Angebot exakt nach Mengenangabe wählen (siehe Vorgabe): +// 20x0,5 -> kasten_050 | 20x0,33 -> kasten_steini | 24x0,33 -> kasten_033 +// 11x0,5 -> kasten_11er | 6x0,33 -> traeger | 24x0,5 -> palette_050 +// 20x0,5 UND 24x0,33 gleichzeitig -> kasten_033_05 | sonst -> koepi_platzhalter +function pickOfferImage(description) { + const d = (description || '').toLowerCase(); + const q2005 = hasQty(d, 20, '0,5'); + const q2433 = hasQty(d, 24, '0,33'); + if (q2005 && q2433) return '/koepi/kasten_033_05.png'; + if (hasQty(d, 20, '0,33')) return '/koepi/kasten_steini.png'; + if (q2433) return '/koepi/kasten_033.png'; + if (hasQty(d, 11, '0,5')) return '/koepi/kasten_11er.png'; + if (hasQty(d, 6, '0,33')) return '/koepi/traeger.png'; + if (hasQty(d, 24, '0,5')) return '/koepi/palette_050.png'; + if (q2005) return '/koepi/kasten_050.png'; + return '/koepi/koepi_platzhalter.png'; +} + +// Gemeinsame Weiterverarbeitung, egal ob die Rohdaten über die API oder per +// Puppeteer/HTML-Scraping ermittelt wurden +function processOffers(offers) { + // Lokale Bilder auswählen basierend auf Beschreibung + for (const offer of offers) { + offer.imageLocal = pickOfferImage(offer.description); + offer.image = null; // CDN nicht mehr nötig + } + + // Filtern auf Ziel-Händler + nur König Pilsener + const filtered = offers.filter(o => { + const isKP = (o.name + ' ' + o.brand + ' ' + o.description).toLowerCase(); + const hasKP = isKP.includes('pilsen') || isKP.includes('pilsener'); + return hasKP && isTargetRetailer(o.retailer); + }); + + const excludedNow = filtered.filter(o => isExcludedRetailer(o.retailer)); + if (excludedNow.length) { + console.log('🍺 KöPi: Angebote per Namens-Filter ausgeschlossen:', excludedNow.map(o => o.retailer).join(', ')); + } + + console.log('🍺 KöPi Filial-Whitelist-Diagnose:', filtered.map(o => + `${o.retailer} | Store-ID=${o.storeId ?? 'unbekannt'} | ${o.realAddress||'keine Adresse'} | bekannt=${isKnownLocalStore(o.storeId)}` + ).join('\n ')); + + const localOnly = filtered + .filter(o => !isExcludedRetailer(o.retailer)) + .filter(o => isKnownLocalStore(o.storeId)); + + for (const o of localOnly) { + o.retailerDisplay = o.retailer; + } + + // Deduplizieren: gleicher normalisierter Händler + gleicher Preis + gleiche + // Filiale → ein Eintrag + const merged = new Map(); + for (const o of localOnly) { + const normalizedRetailer = o.retailer?.toLowerCase().replace('e center','edeka') || ''; + const key = `${normalizedRetailer}|${o.price}|${o.storeId ?? ''}`; + if (merged.has(key)) { + const existing = merged.get(key); + if (o.description && (!existing.description || o.description.length < existing.description.length)) { + existing.description = o.description; + } + } else { + merged.set(key, { ...o }); + } + } + return [...merged.values()]; +} + +async function scrapeMarktguru(forceRefresh = false) { + const cacheKey = 'koepi:mg'; + if (!forceRefresh) { + const cached = cacheGet(cacheKey); + if (cached) return cached; + } + + // Filial-Whitelist beim allerersten Lauf automatisch auflösen (Tabelle leer) + const knownCount = db.prepare('SELECT COUNT(*) AS n FROM koepi_local_stores').get().n; + if (knownCount === 0) { + console.log('🍺 KöPi: Filial-Whitelist ist leer, löse sie jetzt einmalig auf...'); + try { await resolveLocalStores(); } + catch (e) { console.error('🍺 KöPi: Auflösen der Filial-Whitelist fehlgeschlagen:', e.message); } + } + + let offers, source; + try { + offers = await fetchOffersViaApi(); + source = 'marktguru.de (API)'; + console.log(`🍺 KöPi: ${offers.length} Rohtreffer über die marktguru-API`); + } catch (apiErr) { + console.error('🍺 KöPi: API-Weg fehlgeschlagen, falle zurück auf Puppeteer:', apiErr.message); + try { + offers = await fetchOffersViaPuppeteer(); + source = 'marktguru.de (Puppeteer-Fallback)'; + console.log(`🍺 KöPi: ${offers.length} Rohtreffer per Puppeteer (Fallback)`); + } catch (ppErr) { + console.error('🍺 KöPi: auch Puppeteer-Fallback fehlgeschlagen:', ppErr.message); + return { offers: [], error: `API: ${apiErr.message} | Puppeteer: ${ppErr.message}`, scrapedAt: new Date().toISOString() }; + } + } + + const unique = processOffers(offers); + const result = { offers: unique, total: unique.length, scrapedAt: new Date().toISOString(), source }; + cacheSet(cacheKey, result); + return result; +} + +// ── Prospekte von marktguru (dieselbe Filial-Whitelist wie bei den Angeboten) ── +async function scrapeProspekte() { + const cacheKey = 'koepi:prospekte'; + const cached = cacheGet(cacheKey); + if (cached) return cached; + + const knownCount = db.prepare('SELECT COUNT(*) AS n FROM koepi_local_stores').get().n; + if (knownCount === 0) { + console.log('🍺 KöPi Prospekte: Filial-Whitelist ist leer, löse sie jetzt einmalig auf...'); + try { await resolveLocalStores(); } + catch (e) { console.error('🍺 KöPi Prospekte: Auflösen der Filial-Whitelist fehlgeschlagen:', e.message); } + } + + const flightsUrl = `https://api.marktguru.de/api/v1/leafletflights?as=mobile&limit=100&zipCode=${MG_ZIP}`; + const flightsRes = await fetch(flightsUrl, { headers: mgHeaders }); + if (!flightsRes.ok) throw new Error(`leafletflights HTTP ${flightsRes.status}`); + const flightsJson = await flightsRes.json(); + console.log(`🍺 KöPi Prospekte: ${flightsJson.results?.length} von ${flightsJson.totalResults} Prospekt-Kampagnen geladen`); + + // Nur Kampagnen der gewünschten Ketten überhaupt im Detail auflösen (spart API-Calls) + const candidates = (flightsJson.results || []).filter(f => isTargetRetailer(f.advertiser?.name)); + + const leafletCache = new Map(); + const all = []; + for (const f of candidates) { + if (!f.mainLeafletId) continue; + const detail = await fetchLeafletDetail(f.mainLeafletId, leafletCache); + const store = detail.closestStore; + const weekInfo = weekInfoWithFallback(detail.name, f.validFrom); + // Store-spezifische Bezeichnung aus der Whitelist bevorzugen (z.B. "Netto + // Getränke-Discount") statt dem generischen advertiser.name von marktguru + // (liefert für diese Filiale fälschlich nur "Netto Marken-Discount") + const knownStore = store.id != null + ? db.prepare('SELECT retailer FROM koepi_local_stores WHERE store_id=?').get(store.id) + : null; + all.push({ + id: f.id, + publisher: knownStore?.retailer || f.advertiser?.name || '', + title: f.advertiser?.name || cleanTitle(detail.name) || '', + rawName: detail.name || '', // nur intern, für den Ausschluss-Filter unten + weekInfo, + street: store.address || '', + zip: MG_ZIP, + city: 'Duisburg', + storeId: store.id, + image: null, + validFrom: f.validFrom || null, + validTo: f.validTo || null, + pageCount: f.pageCount || null, + url: `https://www.marktguru.de/leaflets/${f.mainLeafletId}`, + isTarget: isKnownLocalStore(store.id) && store.id != null, + badges: [], + }); + } + + // Bier-Icon: mit den aktuellen König-Pilsener-Angeboten abgleichen, welche + // Filialen gerade wirklich König Pilsener im Angebot haben + try { + const offersResult = await scrapeMarktguru(false); + const storeIdsWithKoepi = new Set((offersResult.offers || []).map(o => o.storeId).filter(id => id != null)); + for (const b of all) b.hasKoenigPilsener = b.storeId != null && storeIdsWithKoepi.has(b.storeId); + } catch (e) { + console.log('🍺 KöPi Prospekte: Abgleich mit aktuellen Angeboten fehlgeschlagen (ignoriert):', e.message); + for (const b of all) b.hasKoenigPilsener = false; + } + + // Unerwünschte Prospekt-Typen ausblenden (Sondermagazine, Reise-Prospekte etc.) + // WICHTIG: gegen rawName (den echten Leaflet-Namen) prüfen, nicht gegen + // title/publisher — die zeigen nur noch den sauberen Kettennamen und würden + // "Sondermagazin"/"Bestellmagazin" im echten Namen sonst nie mehr finden. + const EXCLUDED_TITLE_KEYWORDS = ['sondermagazin', 'reisen', 'bestellmagazin']; + const withoutSondermagazin = all.filter(b => { + const t = (b.rawName || '').toLowerCase(); + return !EXCLUDED_TITLE_KEYWORDS.some(kw => t.includes(kw)); + }).map(({ rawName, ...rest }) => rest); // rawName war nur intern nötig + const targeted = withoutSondermagazin.filter(b => b.isTarget); + + // Chronologisch in "aktuell laufend" und "kommend" trennen + const todayIso = new Date().toISOString().slice(0, 10); + const isCurrent = b => { + const from = (b.validFrom || '').slice(0, 10); + const to = (b.validTo || '').slice(0, 10); + if (!from) return true; // ohne Datum lieber anzeigen als verstecken + if (from > todayIso) return false; // startet erst noch + if (to && to < todayIso) return false; // schon abgelaufen + return true; + }; + const byValidFrom = (a, b) => (a.validFrom || '').localeCompare(b.validFrom || ''); + const current = targeted.filter(isCurrent).sort(byValidFrom); + const future = targeted.filter(b => !isCurrent(b)).sort(byValidFrom); + + const result = { + current, + future, + scrapedAt: new Date().toISOString(), + }; + console.log(`🍺 KöPi Prospekte: ${current.length} aktuell laufend, ${future.length} kommend, ${current.filter(b=>b.hasKoenigPilsener).length} davon aktuell mit König Pilsener im Angebot`); + cacheSet(cacheKey, result); + return result; +} + +// ── Bild-Proxy (für evtl. externe Bilder) ─────────────────────────────────── +router.get('/img', authenticate, (req, res) => { + const url = req.query.url; + if (!url || !url.startsWith('https://')) return res.status(400).end(); + try { + const parsed = new URL(url); + const allowed = ['content-media.bonial.biz','publisher-media.bonial.biz']; + if (!allowed.some(h => parsed.hostname === h)) return res.status(403).end(); + const r = https.get(url, { headers: {'User-Agent':'Mozilla/5.0'} }, imgRes => { + res.setHeader('Content-Type', imgRes.headers['content-type'] || 'image/jpeg'); + res.setHeader('Cache-Control', 'public, max-age=3600'); + imgRes.pipe(res); + }); + r.on('error', () => res.status(502).end()); + } catch { res.status(400).end(); } +}); + +// ── Tages-Cron: neue/geänderte Angebote per Pushover melden ───────────────── +const KOEPI_SETTINGS_KEY = 'koepi_last_offers'; + +// Vergleichbare, stabile Signatur eines Angebots (Reihenfolge-unabhängig). +// Bewusst NUR dateRange (echtes Datum), NICHT validity ("Noch X Tage") — der +// Countdown-Text ändert sich täglich von allein und würde sonst jeden Tag +// eine Pushover-Benachrichtigung auslösen, auch wenn sich am Angebot nichts +// geändert hat. +function offerSignature(offers) { + return offers + .map(o => `${(o.retailer || '').toLowerCase().trim()}|${(o.price || '').trim()}|${(o.dateRange || '').trim()}`) + .sort() + .join('\n'); +} + +function formatOfferMessage(offers) { + if (!offers.length) return 'Aktuell keine König Pilsener Angebote gefunden.'; + return offers + .map(o => `${o.retailer || '?'}: ${o.price || '?'} (${o.dateRange || 'Gültigkeit unbekannt'})`) + .join('\n'); +} + +// onlyUserId gesetzt: nur an diesen einen Nutzer schicken (z.B. Admin-Testklick), +// sonst an alle Nutzer mit hinterlegtem Pushover (echter Tages-Cron) +async function sendKoepiPushover(offers, onlyUserId = null) { + const recipients = onlyUserId + ? db.prepare(` + SELECT user_id, user_key, app_token FROM pushover_settings + WHERE user_id = ? AND user_key IS NOT NULL AND app_token IS NOT NULL + `).all(onlyUserId) + : db.prepare(` + SELECT user_id, user_key, app_token FROM pushover_settings + WHERE user_key IS NOT NULL AND app_token IS NOT NULL + `).all(); + const message = formatOfferMessage(offers); + const title = '🍺 KöPi Angebote'; + for (const r of recipients) { + try { + await fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: new URLSearchParams({ + token: r.app_token, + user: r.user_key, + title, + message, + priority: 0, + }), + }); + logPush({ userId: r.user_id, title, message, priority: 0, source: 'koepi' }); + } catch (e) { + console.error('KöPi Pushover Fehler:', e.message); + logPush({ userId: r.user_id, title, message, priority: 0, source: 'koepi', success: false }); + } + } +} + +// Reiner Anzeige-Refresh für den HA-Button "KöPi Check jetzt" — scraped frisch +// und aktualisiert nur die MQTT-Entitäten. Sendet NIE Pushover und rührt den +// in admin_settings gespeicherten Vergleichsstand nicht an (der bleibt exklusiv +// dem 06:00-Cron vorbehalten, damit dessen Diff-Erkennung korrekt bleibt). +async function refreshOffersOnly() { + try { + const { offers } = await scrapeMarktguru(true); + const currentSig = offerSignature(offers); + const lastSig = db.prepare('SELECT value FROM admin_settings WHERE key=?').get(KOEPI_SETTINGS_KEY)?.value || ''; + const changed = currentSig !== lastSig; // nur zur Anzeige im "geändert"-Sensor, löst nichts aus + mqttClient.publishKoepiState({ offers, changed }); + console.log(`🍺 KöPi-Refresh (HA-Button): ${offers.length} Angebot(e) angezeigt, keine Pushover.`); + return { changed, sent: false, offerCount: offers.length }; + } catch (e) { + console.error('KöPi Refresh Fehler:', e.message); + return { error: e.message }; + } +} + +// Wird täglich um 06:00 vom Scheduler in index.js aufgerufen (ohne onlyUserId +// → geht an alle). forceNotify=true (manueller Admin-Test): Pushover wird auch +// ohne Änderung verschickt; onlyUserId gesetzt: nur an diesen einen Nutzer. +// Löst die Filial-Whitelist automatisch neu auf, wenn die letzte Auflösung +// mehr als 6 Tage her ist — läuft als Teil des täglichen 06:00-Checks, damit +// ein einmalig falscher/veralteter Treffer sich von selbst korrigiert, statt +// dauerhaft stehen zu bleiben. +const RESOLVE_MAX_AGE_DAYS = 6; +async function resolveLocalStoresIfStale() { + const row = db.prepare('SELECT MIN(resolved_at) AS oldest FROM koepi_local_stores').get(); + const oldest = row?.oldest; + const staleOrMissing = !oldest || + (Date.now() - new Date(oldest.replace(' ', 'T')).getTime()) > RESOLVE_MAX_AGE_DAYS * 24 * 60 * 60 * 1000; + if (!staleOrMissing) return; + console.log(`🍺 KöPi: Filial-Whitelist ist älter als ${RESOLVE_MAX_AGE_DAYS} Tage (oder unvollständig) — löse automatisch neu auf...`); + try { await resolveLocalStores(); } + catch (e) { console.error('🍺 KöPi: automatische Neu-Auflösung fehlgeschlagen:', e.message); } +} + +async function runDailyCheck(forceNotify = false, onlyUserId = null) { + try { + await resolveLocalStoresIfStale(); + const { offers } = await scrapeMarktguru(true); + const currentSig = offerSignature(offers); + const lastSig = db.prepare('SELECT value FROM admin_settings WHERE key=?').get(KOEPI_SETTINGS_KEY)?.value || ''; + const changed = currentSig !== lastSig; + + if (!changed && !forceNotify) { + console.log('🍺 KöPi-Check: keine Änderungen an den Angeboten.'); + mqttClient.publishKoepiState({ offers, changed: false }); + return { changed: false, sent: false, offerCount: offers.length }; + } + + await sendKoepiPushover(offers, onlyUserId); + db.prepare('INSERT OR REPLACE INTO admin_settings (key, value) VALUES (?, ?)') + .run(KOEPI_SETTINGS_KEY, currentSig); + console.log(`🍺 KöPi-Check: ${offers.length} Angebot(e)${changed ? ' geändert' : ' (Test, unverändert)'} – Pushover versendet${onlyUserId ? ` (nur an User ${onlyUserId})` : ''}.`); + mqttClient.publishKoepiState({ offers, changed }); + return { changed, sent: true, offerCount: offers.length }; + } catch (e) { + console.error('KöPi Tages-Check Fehler:', e.message); + return { error: e.message }; + } +} + +// ── Routes ──────────────────────────────────────────────────────────────────── +router.get('/offers', authenticate, async (req, res) => { + try { res.json(await scrapeMarktguru()); } + catch(e) { console.error('KöPi offers:', e.message); res.status(500).json({ error: e.message }); } +}); + +router.get('/prospekte', authenticate, async (req, res) => { + try { res.json(await scrapeProspekte()); } + catch(e) { + console.error('🍺 KöPi Prospekte-Fehler:', e.message); + res.status(500).json({ error: e.message }); + } +}); + +router.post('/clear-cache', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + ['koepi:mg','koepi:prospekte'].forEach(k => delete cache[k]); + res.json({ ok: true }); +}); + +// Manueller Test des Tages-Checks (Admin) — sendet Pushover auch ohne echte +// Änderung, aber NUR an den Admin selbst (nicht an alle Nutzer) +// GET /local-stores – aktuelle Filial-Whitelist anzeigen (Admin) +router.get('/local-stores', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + const stores = db.prepare('SELECT * FROM koepi_local_stores ORDER BY retailer').all(); + res.json({ stores, seedCount: LOCAL_STORE_SEED_LEAFLETS.length + LOCAL_STORE_SEED_BY_ADDRESS.length }); +}); + +// POST /local-stores/resolve – Filial-Whitelist neu auflösen (Admin, z.B. wenn +// sich ein Prospekt-Link geändert hat oder eine Filiale ergänzt wurde) +router.post('/local-stores/resolve', authenticate, async (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + try { + const resolved = await resolveLocalStores(); + const stores = db.prepare('SELECT * FROM koepi_local_stores ORDER BY retailer').all(); + res.json({ ok: true, resolved, total: LOCAL_STORE_SEED_LEAFLETS.length + LOCAL_STORE_SEED_BY_ADDRESS.length, stores }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +router.post('/run-daily-check', authenticate, async (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + try { + const result = await runDailyCheck(true, req.user.id); + if (result.error) return res.status(500).json({ error: result.error }); + res.json(result); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// ── Öffentliche Teilen-Links (kein Login nötig) ───────────────────────────── +// Sicherheitsprinzip: die öffentlichen Routen unten liefern AUSSCHLIESSLICH +// bereits gecachte Daten aus (kein forceRefresh, kein Puppeteer-Trigger, kein +// Zugriff auf irgendeine Admin-Funktion) und sind zusätzlich pro IP +// ratenbegrenzt — ein gefundener/erratener Link kann also weder einen echten +// marktguru-Abruf erzwingen noch den Server sonst irgendwie belasten. +// +// Mehrere benannte Links gleichzeitig möglich (z.B. einer pro Person), damit +// in den Logs nachvollziehbar ist, WER welchen Link benutzt hat. +function getShareLinkByToken(token) { + return db.prepare('SELECT id, name FROM koepi_share_links WHERE token=?').get(token) || null; +} + +// Einfache In-Memory-Ratenbegrenzung pro IP (30 Anfragen/Minute) — bewusst +// simpel gehalten, reicht für dieses Nutzungsszenario, kein Redis o.ä. nötig +const publicRateLimits = new Map(); +function publicRateLimit(req, res, next) { + const ip = req.ip || 'unknown'; + const now = Date.now(); + const windowMs = 60000, maxReq = 30; + const arr = (publicRateLimits.get(ip) || []).filter(t => now - t < windowMs); + if (arr.length >= maxReq) return res.status(429).json({ error: 'Zu viele Anfragen, bitte kurz warten.' }); + arr.push(now); + publicRateLimits.set(ip, arr); + next(); +} +// Gelegentliches Aufräumen alter IP-Einträge, damit die Map nicht unbegrenzt wächst +setInterval(() => { + const now = Date.now(); + for (const [ip, arr] of publicRateLimits) { + const fresh = arr.filter(t => now - t < 60000); + if (fresh.length) publicRateLimits.set(ip, fresh); else publicRateLimits.delete(ip); + } +}, 5 * 60 * 1000); + +// GET /share-links – alle benannten Links auflisten (Admin) +router.get('/share-links', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + const links = db.prepare('SELECT id, token, name, created_at FROM koepi_share_links ORDER BY created_at DESC').all() + .map(l => ({ ...l, url: `${req.protocol}://${req.get('host')}/kp/${l.token}` })); + res.json({ links }); +}); + +// POST /share-links – neuen benannten Link erstellen (Admin) +router.post('/share-links', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + const name = (req.body?.name || '').trim(); + if (!name) return res.status(400).json({ error: 'Name fehlt' }); + const token = crypto.randomBytes(20).toString('hex'); + db.prepare(`INSERT INTO koepi_share_links (token, name, created_at) VALUES (?, ?, datetime('now','localtime'))`).run(token, name); + const link = db.prepare('SELECT id, token, name, created_at FROM koepi_share_links WHERE token=?').get(token); + res.json({ ...link, url: `${req.protocol}://${req.get('host')}/kp/${token}` }); +}); + +// POST /share-links/:id/reset – Token dieses Links neu erzeugen (Name bleibt, +// alter Link wird ungültig) +router.post('/share-links/:id/reset', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + const existing = db.prepare('SELECT * FROM koepi_share_links WHERE id=?').get(req.params.id); + if (!existing) return res.status(404).json({ error: 'Nicht gefunden' }); + const token = crypto.randomBytes(20).toString('hex'); + db.prepare('UPDATE koepi_share_links SET token=? WHERE id=?').run(token, req.params.id); + res.json({ id: existing.id, token, name: existing.name, url: `${req.protocol}://${req.get('host')}/kp/${token}` }); +}); + +// DELETE /share-links/:id – Link löschen (Admin) +router.delete('/share-links/:id', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + db.prepare('DELETE FROM koepi_share_links WHERE id=?').run(req.params.id); + res.json({ ok: true }); +}); + +// GET /public/:token/manifest.json – eigenes PWA-Manifest für die öffentliche +// Prospekt-Seite: eigener Name ("Dickens Prospekte") und eigener start_url, +// damit die installierte App direkt wieder auf der öffentlichen Seite landet +// statt auf dem normalen Login der Haupt-App. +router.get('/public/:token/manifest.json', (req, res) => { + const link = getShareLinkByToken(req.params.token); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + res.setHeader('Content-Type', 'application/manifest+json'); + res.json({ + name: 'Dickens Prospekte', + short_name: 'Prospekte', + description: 'Wöchentliche Prospekte', + start_url: `/kp/${req.params.token}`, + scope: `/kp/${req.params.token}`, + display: 'standalone', + orientation: 'portrait', + background_color: '#0f1117', + theme_color: '#0f1117', + icons: [ + { src: '/favicon.svg', type: 'image/svg+xml', sizes: 'any', purpose: 'any maskable' }, + { src: '/icon-192.png', type: 'image/png', sizes: '192x192' }, + { src: '/icon-512.png', type: 'image/png', sizes: '512x512' }, + ], + }); +}); + +// GET /public/:token/offers – öffentlich, nur Cache, kein Login +router.get('/public/:token/offers', publicRateLimit, async (req, res) => { + const link = getShareLinkByToken(req.params.token); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + try { + const result = await scrapeMarktguru(false); // niemals forceRefresh über die öffentliche Route + res.json(result); + } catch (e) { res.status(500).json({ error: 'Angebote gerade nicht verfügbar' }); } +}); + +// GET /public/:token/prospekte – öffentlich, nur Cache, kein Login +router.get('/public/:token/prospekte', publicRateLimit, async (req, res) => { + const link = getShareLinkByToken(req.params.token); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + logPublicAccess({ linkType: 'koepi_share', path: `/kp/${req.params.token}`, ip: req.ip, userAgent: req.headers['user-agent'], linkName: link.name }); + try { + const result = await scrapeProspekte(); + res.json(result); + } catch (e) { res.status(500).json({ error: 'Prospekte gerade nicht verfügbar' }); } +}); + +module.exports = router; +module.exports.runDailyCheck = runDailyCheck; +module.exports.refreshOffersOnly = refreshOffersOnly; +module.exports.resolveLocalStores = resolveLocalStores; diff --git a/backend/src/tools/linkliste/routes.js b/backend/src/tools/linkliste/routes.js new file mode 100644 index 0000000..72fa2de --- /dev/null +++ b/backend/src/tools/linkliste/routes.js @@ -0,0 +1,212 @@ +const express = require('express'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +// ── Ordner ──────────────────────────────────────────────────────────────────── +router.get('/folders', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM link_list_folders WHERE user_id=? ORDER BY sort_order,id').all(req.user.id)); +}); + +router.post('/folders', authenticate, (req, res) => { + const uid = req.user.id; + const { name, icon='📁' } = req.body; + if (!name?.trim()) return res.status(400).json({ error: 'Name erforderlich' }); + const max = db.prepare('SELECT MAX(sort_order) m FROM link_list_folders WHERE user_id=?').get(uid); + const r = db.prepare(`INSERT INTO link_list_folders (user_id,name,icon,sort_order,created_at) VALUES (?,?,?,?,datetime('now','localtime'))`) + .run(uid, name.trim(), icon, (max?.m ?? -1) + 1); + res.json(db.prepare('SELECT * FROM link_list_folders WHERE id=?').get(r.lastInsertRowid)); +}); + +router.put('/folders/:id', authenticate, (req, res) => { + const f = db.prepare('SELECT * FROM link_list_folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!f) return res.status(404).json({ error: 'Nicht gefunden' }); + const { name=f.name, icon=f.icon, in_quickaccess } = req.body; + const qa = in_quickaccess !== undefined ? (in_quickaccess ? 1 : 0) : f.in_quickaccess; + db.prepare('UPDATE link_list_folders SET name=?, icon=?, in_quickaccess=? WHERE id=?').run(name, icon, qa, f.id); + res.json(db.prepare('SELECT * FROM link_list_folders WHERE id=?').get(f.id)); +}); + +router.delete('/folders/:id', authenticate, (req, res) => { + const f = db.prepare('SELECT * FROM link_list_folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!f) return res.status(404).json({ error: 'Nicht gefunden' }); + // Links aus Ordner herauslösen + db.prepare('UPDATE link_list SET folder_id=NULL WHERE folder_id=? AND user_id=?').run(f.id, req.user.id); + db.prepare('DELETE FROM link_list_folders WHERE id=?').run(f.id); + res.json({ ok: true }); +}); + +// Ordner-Inhalt abrufen (für Folder-Modal im Dashboard) +router.get('/folders/:id/links', authenticate, (req, res) => { + const f = db.prepare('SELECT * FROM link_list_folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!f) return res.status(404).json({ error: 'Nicht gefunden' }); + const links = db.prepare('SELECT * FROM link_list WHERE folder_id=? AND user_id=? ORDER BY sort_order,id').all(f.id, req.user.id); + res.json({ folder: f, links }); +}); + +// ── Sortierung ──────────────────────────────────────────────────────────────── +router.put('/sort', authenticate, (req, res) => { + const uid = req.user.id; + const { links=[], folders=[] } = req.body; + const upLink = db.prepare('UPDATE link_list SET sort_order=? WHERE id=? AND user_id=?'); + const upFolder = db.prepare('UPDATE link_list_folders SET sort_order=? WHERE id=? AND user_id=?'); + db.transaction(() => { + links.forEach((id, i) => upLink.run(i, id, uid)); + folders.forEach((id, i) => upFolder.run(i, id, uid)); + })(); + res.json({ ok: true }); +}); + +// ── Eigene Links ────────────────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const uid = req.user.id; + const own = db.prepare(` + SELECT l.*, 0 as is_shared, NULL as owner_name, + (SELECT COUNT(*) FROM link_list_shares WHERE link_id=l.id) as share_count + FROM link_list l WHERE l.user_id=? ORDER BY l.folder_id IS NULL DESC, l.folder_id, l.sort_order, l.id + `).all(uid); + + const folders = db.prepare('SELECT * FROM link_list_folders WHERE user_id=? ORDER BY sort_order,id').all(uid); + + const shared = db.prepare(` + SELECT l.*, 1 as is_shared, u.username as owner_name, 0 as share_count + FROM link_list l + JOIN link_list_shares s ON s.link_id=l.id + JOIN users u ON u.id=l.user_id + WHERE s.shared_with=? + ORDER BY l.created_at DESC + `).all(uid); + + const sharedByMe = db.prepare(` + SELECT l.*, 0 as is_shared, u.username as shared_with_name + FROM link_list l + JOIN link_list_shares s ON s.link_id=l.id + JOIN users u ON u.id=s.shared_with + WHERE l.user_id=? + ORDER BY l.title ASC + `).all(uid); + + // Ordner die mit mir geteilt wurden (inkl. deren Links) + const sharedFolders = db.prepare(` + SELECT f.*, u.username as owner_name + FROM link_list_folders f + JOIN link_folder_shares s ON s.folder_id=f.id + JOIN users u ON u.id=f.user_id + WHERE s.shared_with=? + ORDER BY f.name ASC + `).all(uid); + + const sharedFolderLinks = sharedFolders.map(folder => ({ + ...folder, + links: db.prepare('SELECT * FROM link_list WHERE folder_id=? ORDER BY sort_order,id').all(folder.id) + })); + + // Ordner die ich geteilt habe + const sharedFoldersByMe = db.prepare(` + SELECT f.*, u.username as shared_with_name + FROM link_list_folders f + JOIN link_folder_shares s ON s.folder_id=f.id + JOIN users u ON u.id=s.shared_with + WHERE f.user_id=? + ORDER BY f.name ASC + `).all(uid); + + res.json({ own, folders, shared, sharedByMe, sharedFolders: sharedFolderLinks, sharedFoldersByMe }); +}); + +router.post('/', authenticate, (req, res) => { + const uid = req.user.id; + const { title, url, icon = '🔗', description = '', folder_id = null } = req.body; + if (!title?.trim() || !url?.trim()) return res.status(400).json({ error: 'Titel und URL erforderlich' }); + const max = db.prepare('SELECT MAX(sort_order) m FROM link_list WHERE user_id=?').get(uid); + const r = db.prepare(` + INSERT INTO link_list (user_id, title, url, icon, description, folder_id, sort_order, created_at) + VALUES (?,?,?,?,?,?,?,datetime('now','localtime')) + `).run(uid, title.trim(), url.trim(), icon, description.trim(), folder_id || null, (max?.m ?? -1) + 1); + res.json(db.prepare('SELECT * FROM link_list WHERE id=?').get(r.lastInsertRowid)); +}); + +router.put('/:id', authenticate, (req, res) => { + const link = db.prepare('SELECT * FROM link_list WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + const { title, url, icon, description, folder_id, in_quickaccess } = req.body; + db.prepare('UPDATE link_list SET title=?, url=?, icon=?, description=?, folder_id=?, in_quickaccess=? WHERE id=?') + .run( + title ?? link.title, + url ?? link.url, + icon ?? link.icon, + description ?? link.description, + folder_id !== undefined ? (folder_id || null) : link.folder_id, + in_quickaccess !== undefined ? (in_quickaccess ? 1 : 0) : link.in_quickaccess, + link.id + ); + res.json(db.prepare('SELECT * FROM link_list WHERE id=?').get(link.id)); +}); + +router.delete('/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM link_list WHERE id=? AND user_id=?').run(req.params.id, req.user.id); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ ok: true }); +}); + +// ── Shares ──────────────────────────────────────────────────────────────────── +router.get('/:id/shares', authenticate, (req, res) => { + const link = db.prepare('SELECT * FROM link_list WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json(db.prepare(` + SELECT u.id, u.username, s.created_at as shared_at + FROM link_list_shares s JOIN users u ON u.id=s.shared_with + WHERE s.link_id=? + `).all(link.id)); +}); + +router.post('/:id/share', authenticate, (req, res) => { + const link = db.prepare('SELECT * FROM link_list WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + const target = db.prepare('SELECT * FROM users WHERE username=?').get(req.body.username); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + if (target.id === req.user.id) return res.status(400).json({ error: 'Kann nicht mit dir selbst teilen' }); + db.prepare(`INSERT OR IGNORE INTO link_list_shares (link_id, shared_by, shared_with, created_at) VALUES (?,?,?,datetime('now','localtime'))`) + .run(link.id, req.user.id, target.id); + res.json({ ok: true }); +}); + +router.delete('/:id/share/:userId', authenticate, (req, res) => { + const link = db.prepare('SELECT * FROM link_list WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!link) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM link_list_shares WHERE link_id=? AND shared_with=?').run(link.id, req.params.userId); + res.json({ ok: true }); +}); + +// ── Ordner-Shares ───────────────────────────────────────────────────────────── +router.get('/folders/:id/shares', authenticate, (req, res) => { + const f = db.prepare('SELECT * FROM link_list_folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!f) return res.status(404).json({ error: 'Nicht gefunden' }); + const shares = db.prepare(` + SELECT u.id, u.username, s.created_at as shared_at + FROM link_folder_shares s JOIN users u ON u.id=s.shared_with + WHERE s.folder_id=? + `).all(f.id); + res.json(shares); +}); + +router.post('/folders/:id/share', authenticate, (req, res) => { + const f = db.prepare('SELECT * FROM link_list_folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!f) return res.status(404).json({ error: 'Nicht gefunden' }); + const target = db.prepare('SELECT * FROM users WHERE username=?').get(req.body.username); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + if (target.id === req.user.id) return res.status(400).json({ error: 'Kann nicht mit dir selbst teilen' }); + db.prepare(`INSERT OR IGNORE INTO link_folder_shares (folder_id, shared_by, shared_with, created_at) VALUES (?,?,?,datetime('now','localtime'))`) + .run(f.id, req.user.id, target.id); + res.json({ ok: true }); +}); + +router.delete('/folders/:id/share/:userId', authenticate, (req, res) => { + const f = db.prepare('SELECT * FROM link_list_folders WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!f) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM link_folder_shares WHERE folder_id=? AND shared_with=?').run(f.id, req.params.userId); + res.json({ ok: true }); +}); + + +module.exports = router; diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js new file mode 100644 index 0000000..180880b --- /dev/null +++ b/backend/src/tools/media/routes.js @@ -0,0 +1,1265 @@ +const express = require('express'); +const router = express.Router(); +const db = require('../../db'); +const { logPush } = require('../../pushLog'); +const { authenticate, requireAdmin } = require('../../middleware/auth'); + +const TMDB_BASE = 'https://api.themoviedb.org/3'; +const XREL_BASE = 'https://api.xrel.to/v2'; +const THIS_YEAR = new Date().getFullYear(); +const MIN_YEAR = THIS_YEAR - 1; + +// Sprachen die wir NICHT wollen +const BLOCKED_LANGS = new Set(['tr', 'hi', 'te', 'ta', 'ml', 'kn', 'bn', 'mr', 'pa']); + +// Genre-IDs die wir nicht wollen (nur wenn das der EINZIGE Genre ist) +// 16=Animation, 99=Documentary – aber nur rausfiltern wenn explizit kein Spielfilm-Genre dabei +const DOC_GENRE_ID = 99; + +// Umlaut-Normalisierung für xREL-Suche (Nürnberg → Nuernberg etc.) +function normalizeUmlauts(s) { + return (s||'') + .replace(/ä/g,'ae').replace(/ö/g,'oe').replace(/ü/g,'ue') + .replace(/Ä/g,'Ae').replace(/Ö/g,'Oe').replace(/Ü/g,'Ue') + .replace(/ß/g,'ss'); +} + +// ── SQLite Cache ────────────────────────────────────────────────────────────── +function cacheGet(key) { + const row = db.prepare('SELECT value, expires_at FROM xrel_cache WHERE cache_key=?').get(key); + if (!row) return undefined; + if (Date.now() > row.expires_at) { db.prepare('DELETE FROM xrel_cache WHERE cache_key=?').run(key); return undefined; } + try { return JSON.parse(row.value); } catch { return undefined; } +} +function cacheSet(key, value, ttlMs = 12 * 60 * 60 * 1000) { + db.prepare('INSERT OR REPLACE INTO xrel_cache (cache_key,value,expires_at) VALUES (?,?,?)') + .run(key, JSON.stringify(value), Date.now() + ttlMs); +} +function cacheDelete(key) { + db.prepare('DELETE FROM xrel_cache WHERE cache_key=?').run(key); +} + +// ── TMDb ────────────────────────────────────────────────────────────────────── +function getToken() { + return db.prepare("SELECT value FROM admin_settings WHERE key='tmdb_token'").get()?.value || ''; +} +async function tmdb(path, params = {}) { + const token = getToken(); + if (!token) throw new Error('Kein TMDb API-Token konfiguriert'); + const url = new URL(TMDB_BASE + path); + url.searchParams.set('language', 'de-DE'); + url.searchParams.set('region', 'DE'); + for (const [k, v] of Object.entries(params)) url.searchParams.set(k, v); + const res = await fetch(url.toString(), { headers: { Authorization: `Bearer ${token}`, Accept: 'application/json' } }); + if (!res.ok) throw new Error(`TMDb ${res.status}`); + return res.json(); +} +let genreCache = null; +async function getGenreMap() { + if (genreCache) return genreCache; + const d = await tmdb('/genre/movie/list'); + genreCache = {}; + for (const g of d.genres) genreCache[g.id] = g.name; + return genreCache; +} +function extractFSK(rd) { + const de = rd?.results?.find(r => r.iso_3166_1 === 'DE'); + if (!de?.release_dates?.length) return null; + const sorted = [...de.release_dates].sort((a, b) => a.type === 3 ? -1 : 1); + for (const r of sorted) { const c = (r.certification||'').trim(); if (c) return c; } + return null; +} + +const RELEASE_TYPE_LABEL = { 2:'Kino (limited)', 3:'Kinostart', 4:'Web', 5:'Retail', 6:'TV' }; + +function extractReleaseDates(rd) { + if (!rd?.results) return []; + // Nur DE und US, Typen 2-5 (kein Premiere=1, kein TV=6) + const entries = []; + for (const country of ['DE', 'US']) { + const c = rd.results.find(r => r.iso_3166_1 === country); + if (!c) continue; + for (const r of c.release_dates) { + if (!r.release_date) continue; + const label = RELEASE_TYPE_LABEL[r.type]; + if (!label) continue; + entries.push({ + country, + label: `${label} (${country})`, + date: r.release_date.slice(0, 10), + }); + } + } + entries.sort((a, b) => a.date.localeCompare(b.date)); + return entries; +} +async function fetchAllPages(path, maxPages = 3) { + const first = await tmdb(path, { page: 1 }); + const total = Math.min(first.total_pages || 1, maxPages); + let results = [...first.results]; + if (total > 1) { + const extra = await Promise.all(Array.from({ length: total-1 }, (_,i) => tmdb(path, { page: i+2 }))); + for (const p of extra) results = results.concat(p.results); + } + return results; +} +function filterMovies(list) { + const seen = new Set(); + return list.filter(m => { + if (BLOCKED_LANGS.has(m.original_language)) return false; + const y = m.release_date ? parseInt(m.release_date.slice(0,4)) : 0; + if (y > 0 && y < MIN_YEAR) return false; + if (seen.has(m.id)) return false; + seen.add(m.id); + // Reine Dokus rausfiltern + const genres = m.genre_ids || []; + if (genres.length === 1 && genres[0] === DOC_GENRE_ID) return false; + if (genres.length === 0 && m.vote_count < 5) return false; + return true; + }); +} +function enrichMovie(m, genreMap, fsk, rank) { + return { + id: m.id, title: m.title||m.original_title, original_title: m.original_title, + original_language: m.original_language, poster_path: m.poster_path, + overview: m.overview, release_date: m.release_date, vote_average: m.vote_average, + genres: (m.genre_ids||[]).map(id => genreMap[id]).filter(Boolean), + fsk: fsk??null, rank: rank??null, + }; +} + +// ── xREL ───────────────────────────────────────────────────────────────────── +const XREL_DATE_LABEL = { + 'de-cine': 'Kinostart (DE)', + 'us-cine': 'Kinostart (US)', + 'de-web': 'Web (DE)', + 'us-web': 'Web (US)', + 'de-retail': 'Retail (DE)', + 'us-retail': 'Retail (US)', + 'de-hd': 'Blu-ray (DE)', + 'us-hd': 'Blu-ray (US)', + 'de-rental': 'Rental (DE)', + 'us-rental': 'Rental (US)', + 'r5': 'R5', +}; + +const QUALITY_BLOCKLIST = r => /\b(2160p|4k|uhd|uhdbluray|uhdbd|remux)\b/i.test(r) || /COMPLETE[._](?:BLURAY|BD)/i.test(r); + +async function xrelFetch(path, params = {}) { + const url = new URL(XREL_BASE + path); + for (const [k,v] of Object.entries(params)) url.searchParams.set(k, String(v)); + const res = await fetch(url.toString(), { + headers: { Accept: 'application/json' }, signal: AbortSignal.timeout(7000), + }); + if (res.status === 429) { + await new Promise(r => setTimeout(r, (parseInt(res.headers.get('Retry-After')||'10'))*1000)); + const r2 = await fetch(url.toString(), { headers: { Accept: 'application/json' }, signal: AbortSignal.timeout(7000) }); + if (!r2.ok) throw new Error(`xREL ${r2.status}`); + return r2.json(); + } + if (!res.ok) throw new Error(`xREL ${res.status}`); + return res.json(); +} + +// Einzige Funktion für xREL: benutzt immer die ext_info_id und gibt max 5 deutsche ≤1080p Releases +// Cache-Key: tmdb_id (immer eindeutig, konsistent zwischen Badge und Modal) +async function getXrelData(tmdbId, imdbId, title, originalTitle, movieYear, mediaType='movie') { + const cacheKey = `xrel:${mediaType}:${tmdbId}`; + const cached = cacheGet(cacheKey); + if (cached !== undefined) return cached; + + const clean = (s) => normalizeUmlauts(s||'').replace(/[*#!?:]/g,'').trim().toLowerCase(); + + // Suchqueries: original, deutsch, und normalisierte Varianten + // Wichtig: xREL nutzt oft den englischen Originaltitel auch bei deutschen Filmen + const rawQueries = [originalTitle, title].filter(Boolean).filter((v,i,a) => a.indexOf(v)===i); + // Normalisierte Versionen (Umlaute) als zusätzliche Queries + const normQueries = rawQueries.map(q => normalizeUmlauts(q).replace(/[*#!?:]/g,'').trim()) + .filter(q => !rawQueries.map(r => r.replace(/[*#!?:]/g,'').trim()).includes(q)); + const allQueries = [...rawQueries, ...normQueries].filter(Boolean).filter((v,i,a) => a.indexOf(v)===i); + + // Alle parallel suchen + const searchResults = await Promise.all(allQueries.map(async q => { + try { + return { + q, + data: await xrelFetch('/search/ext_info.json', { + q: normalizeUmlauts(q).replace(/[*#!?:]/g,''), type:mediaType, limit:10 + }) + }; + } catch(_) { return null; } + })); + + let extInfoId = null; + + // Strategie 1: IMDb-URI exakter Match (zuverlässigste Methode) + if (imdbId) { + for (const r of searchResults) { + if (!r) continue; + const hit = (r.data?.results||[]).find(h => (h.uris||[]).includes(`imdb:${imdbId}`)); + if (hit?.id) { extInfoId = hit.id; break; } + } + } + + // Strategie 2: Titel/alt_title Match gegen alle Queries (normalisiert) + if (!extInfoId) { + const allCleanQueries = allQueries.map(q => clean(q)); + for (const r of searchResults) { + if (!r?.data?.results) continue; + for (const h of r.data.results) { + if (allCleanQueries.includes(clean(h.title)) || allCleanQueries.includes(clean(h.alt_title))) { + extInfoId = h.id; + break; + } + } + if (extInfoId) break; + } + } + + if (!extInfoId) { + cacheSet(cacheKey, [], 60*60*1000); + return []; + } + + // Releases + ext_info Details parallel holen + const [sceneData, p2pData, infoData] = await Promise.all([ + xrelFetch('/release/ext_info.json', { id: extInfoId, per_page: 50 }).catch(()=>({})), + xrelFetch('/p2p/releases.json', { ext_info_id: extInfoId, per_page: 50 }).catch(()=>({})), + xrelFetch('/ext_info/info.json', { id: extInfoId, type: mediaType }).catch(()=>({})), + ]); + + // xREL Erscheinungsdaten + const xrel_dates = (infoData.release_dates||[]) + .filter(d => XREL_DATE_LABEL[d.type]) + .map(d => ({ label: XREL_DATE_LABEL[d.type], date: d.date })) + .sort((a,b) => a.date.localeCompare(b.date)); + + const results = []; + + // Jahresfilter: nur für Filme ab 2015 anwenden + // Alte Filme (< 2015) haben oft Releases die Jahre später erschienen → nicht filtern + const releaseYearOk = (releaseDate) => { + if (!movieYear || !releaseDate) return true; + if (movieYear < 2015) return true; + if (mediaType === 'tv') return true; // TV-Serien: kein Jahresfilter (Staffeln erscheinen über Jahre) + const y = parseInt(releaseDate.slice(0,4)); + return Math.abs(y - movieYear) <= 3; + }; + + for (const r of sceneData.list||[]) { + if (!/\b(german|deutsch)(\.dl)?\b/i.test(r.dirname||'')) continue; + if (QUALITY_BLOCKLIST(r.dirname||'')) continue; + const date = r.time ? new Date(r.time*1000).toISOString().slice(0,10) : null; + if (!releaseYearOk(date)) continue; + results.push({ + dirname: r.dirname, size: r.size ? `${r.size.number} ${r.size.unit}` : null, + category: 'Scene', url: r.link_href, date, p2p: false, + }); + } + for (const r of p2pData.list||[]) { + if (r.main_lang !== 'german') continue; + if (QUALITY_BLOCKLIST(r.dirname||'')) continue; + const date = r.pub_time ? new Date(r.pub_time*1000).toISOString().slice(0,10) : null; + if (!releaseYearOk(date)) continue; + results.push({ + dirname: r.dirname, size: r.size_mb ? `${(r.size_mb/1024).toFixed(1)} GB` : null, + category: r.category?.sub_cat||'P2P', url: r.link_href, date, p2p: true, + }); + } + + results.sort((a,b) => (b.date||'').localeCompare(a.date||'')); + const top5 = results.slice(0, 5); + const payload = { releases: top5, xrel_dates }; + cacheSet(cacheKey, payload, top5.length > 0 || xrel_dates.length > 0 ? 12*60*60*1000 : 60*60*1000); + return payload; +} + +// ── Routes ──────────────────────────────────────────────────────────────────── + +router.get('/now-playing', authenticate, async (req, res) => { + try { + const [pages, genreMap] = await Promise.all([fetchAllPages('/movie/now_playing',3), getGenreMap()]); + const filtered = filterMovies(pages); + const top10raw = filtered.slice(0,10), restRaw = filtered.slice(10); + const top10 = await Promise.all(top10raw.map(async (m,i) => { + let fsk = null; + try { fsk = extractFSK(await tmdb(`/movie/${m.id}/release_dates`)); } catch(_) {} + return enrichMovie(m, genreMap, fsk, i+1); + })); + res.json([...top10, ...restRaw.map(m => enrichMovie(m,genreMap,null,null))]); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +router.get('/upcoming', authenticate, async (req, res) => { + try { + const [pages, genreMap] = await Promise.all([fetchAllPages('/movie/upcoming',3), getGenreMap()]); + const filtered = filterMovies(pages).filter(m => m.release_date); + filtered.sort((a,b) => a.release_date.localeCompare(b.release_date)); + const groups = {}; + for (const m of filtered) { + const d = new Date(m.release_date), dow = d.getDay(); + const mon = new Date(d); mon.setDate(d.getDate()+(dow===0?-6:1-dow)); + const key = mon.toISOString().slice(0,10); + if (!groups[key]) groups[key] = []; + groups[key].push(enrichMovie(m,genreMap,null,null)); + } + res.json(groups); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// GET /api/tools/media/search?q=TITEL – Filmsuche mit Wildcard-Support +// hulk*2008 → sucht "hulk" mit year=2008 +router.get('/search', authenticate, async (req, res) => { + try { + let q = (req.query.q || '').trim(); + if (!q || q.length < 2) return res.json([]); + + // Wildcard: z.B. "hulk*2008" → query="hulk", year="2008" + let yearFilter = null; + const wildcardMatch = q.match(/^(.+?)\*(\d{4})$/); + if (wildcardMatch) { + q = wildcardMatch[1].trim(); + yearFilter = wildcardMatch[2]; + } + + const searchParams = { query: q, include_adult: 'false' }; + if (yearFilter) searchParams.year = yearFilter; + + const [movieResults, tvResults, genreMap, tvGenreMap] = await Promise.all([ + tmdb('/search/movie', searchParams), + tmdb('/search/tv', { query: q, include_adult: 'false', ...(yearFilter ? { first_air_date_year: yearFilter } : {}) }), + getGenreMap(), + tmdb('/genre/tv/list').catch(()=>({genres:[]})), + ]); + const tvGenres = {}; + (tvGenreMap.genres||[]).forEach(g => { tvGenres[g.id] = g.name; }); + + const seen = new Set(); + const movies = (movieResults.results || []) + .filter(m => { if (BLOCKED_LANGS.has(m.original_language)) return false; if (seen.has('m'+m.id)) return false; seen.add('m'+m.id); return true; }) + .map(m => ({ ...enrichMovie(m, genreMap, null, null), media_type: 'movie' })); + + const tvShows = (tvResults.results || []) + .filter(m => { if (seen.has('t'+m.id)) return false; seen.add('t'+m.id); return true; }) + .map(m => ({ + id: m.id, media_type: 'tv', + title: m.name || m.original_name, + original_title: m.original_name, + release_date: m.first_air_date || '', + poster_path: m.poster_path || '', + genres: (m.genre_ids||[]).map(id => tvGenres[id] || genreMap[id]).filter(Boolean), + vote_average: m.vote_average, + original_language: m.original_language, + origin_country: m.origin_country || [], + })); + + // Sortierung: mit Datum zuerst (neueste), ohne Datum danach + const combined = [...movies, ...tvShows] + .sort((a,b) => { + if (!a.release_date && !b.release_date) return 0; + if (!a.release_date) return 1; + if (!b.release_date) return -1; + return b.release_date.localeCompare(a.release_date); + }) + .slice(0, 30); + + res.json(combined); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// TV-Serie Detail +router.get('/tv/:id', authenticate, async (req, res) => { + try { + const [detail, genreMap, extIds] = await Promise.all([ + tmdb(`/tv/${req.params.id}`, { append_to_response: 'credits,content_ratings' }), + getGenreMap(), + tmdb(`/tv/${req.params.id}/external_ids`).catch(()=>({})), + ]); + // FSK aus content_ratings (DE) + let fsk = ''; + const deRating = (detail.content_ratings?.results || []).find(r => r.iso_3166_1 === 'DE'); + if (deRating?.rating) fsk = deRating.rating; + + res.json({ + id: detail.id, media_type: 'tv', + title: detail.name || detail.original_name, + original_title: detail.original_name, + tagline: detail.tagline || '', + overview: detail.overview, + poster_path: detail.poster_path, + backdrop_path: detail.backdrop_path, + release_date: detail.first_air_date || '', + runtime: detail.episode_run_time?.[0] || null, + vote_average: detail.vote_average, + genres: (detail.genres||[]).map(g=>g.name), + fsk, + cast: (detail.credits?.cast||[]).slice(0,8).map(c => c.name), + countries: (detail.production_countries||[]).map(c => c.name), + imdb_id: extIds.imdb_id || '', + number_of_seasons: detail.number_of_seasons, + number_of_episodes: detail.number_of_episodes, + status: detail.status, + }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// Modal: TMDb-Daten sofort, xREL via separaten Endpoint +router.get('/movie/:id', authenticate, async (req, res) => { + try { + const [detail, genreMap, extIds] = await Promise.all([ + tmdb(`/movie/${req.params.id}`, { append_to_response: 'credits,release_dates' }), + getGenreMap(), + tmdb(`/movie/${req.params.id}/external_ids`).catch(()=>({})), + ]); + const fsk = extractFSK(detail.release_dates); + const imdbId = extIds.imdb_id || null; + res.json({ + id: detail.id, title: detail.title||detail.original_title, + original_title: detail.original_title, tagline: detail.tagline, + overview: detail.overview, poster_path: detail.poster_path, + backdrop_path: detail.backdrop_path, release_date: detail.release_date, + runtime: detail.runtime, vote_average: detail.vote_average, + genres: (detail.genres||[]).map(g => g.name), fsk, + cast: (detail.credits?.cast||[]).slice(0,8).map(a => a.name), + director: detail.credits?.crew?.find(c => c.job==='Director')?.name||null, + tmdb_url: `https://www.themoviedb.org/movie/${detail.id}`, + imdb_url: imdbId ? `https://www.imdb.com/title/${imdbId}` : null, + imdb_id: imdbId, + countries: (detail.production_countries||[]).map(c => c.name), + }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// xREL on-demand – ?refresh=1 ignoriert Cache, ?imdb_id=tt...&title=...&orig=... vermeidet TMDb-Calls +router.get('/movie/:id/xrel', authenticate, async (req, res) => { + try { + const xrelMediaType = req.query.media_type || 'movie'; + const cacheKey = `xrel:${xrelMediaType}:${req.params.id}`; + const forceRefresh = req.query.refresh === '1'; + + if (!forceRefresh) { + const cached = cacheGet(cacheKey); + if (cached !== undefined) { + const releases = Array.isArray(cached) ? cached : (cached.releases || []); + const xrel_dates = Array.isArray(cached) ? [] : (cached.xrel_dates || []); + if (releases.length > 0 || xrel_dates.length > 0) { + return res.json({ xrel: releases, xrel_dates, has_xrel: releases.length > 0 }); + } + } + } + if (forceRefresh) { + db.prepare('DELETE FROM xrel_cache WHERE cache_key=?').run(cacheKey); + // Auch alten Key löschen + db.prepare('DELETE FROM xrel_cache WHERE cache_key=?').run(`xrel:tmdb:${req.params.id}`); + } + + let imdbId = req.query.imdb_id || null; + let title = req.query.title || null; + let origTitle = req.query.orig || null; + + if (!title) { + const endpoint = xrelMediaType === 'tv' ? 'tv' : 'movie'; + const [detail, extIds] = await Promise.all([ + tmdb(`/${endpoint}/${req.params.id}`, { append_to_response: '' }).catch(()=>({})), + tmdb(`/${endpoint}/${req.params.id}/external_ids`).catch(()=>({})), + ]); + imdbId = extIds.imdb_id || null; + title = detail.name || detail.title || null; + origTitle = detail.original_name || detail.original_title || null; + } + + let filmYear = null; + if (req.query.year && req.query.year !== '0' && xrelMediaType !== 'tv') filmYear = parseInt(req.query.year); + const data = await getXrelData(req.params.id, imdbId, title, origTitle, filmYear, xrelMediaType); + const releases = Array.isArray(data) ? data : (data.releases || []); + const xrel_dates = Array.isArray(data) ? [] : (data.xrel_dates || []); + res.json({ xrel: releases, xrel_dates, has_xrel: releases.length > 0 }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + + + +// GET /api/tools/media/xrel-cached?ids=1,2,3 – welche Filme haben Releases im Cache +router.get('/xrel-cached', authenticate, (req, res) => { + const ids = (req.query.ids || '').split(',').map(Number).filter(Boolean); + if (!ids.length) return res.json({}); + const result = {}; + for (const id of ids) { + const cached = cacheGet(`xrel:movie:${id}`) || cacheGet(`xrel:tv:${id}`) || cacheGet(`xrel:tmdb:${id}`); + result[id] = cached !== undefined && (Array.isArray(cached) ? cached.length > 0 : cached.releases?.length > 0); + } + res.json(result); +}); + +// ── Streaming Top 10 pro Anbieter ────────────────────────────────────────────── +// TMDb Watch-Provider-IDs für Deutschland (watch_region=DE) +// HINWEIS: Eine frühere Version hat hier versucht die offizielle Netflix-XLSX-Datei +// (komplette Historie seit 2021, alle ~90 Länder) direkt zu laden und zu parsen. +// Das hat den Container überlastet (CPU ~90%, RAM voll, Container kurzzeitig nicht +// erreichbar) – die Datei ist für ein synchrones Parsing im selben Prozess zu groß. +// Netflix läuft daher wie alle anderen Anbieter über die leichtgewichtige +// TMDb-Näherung weiter unten. + +// HINWEIS: Ein Versuch, die Netflix-Tudum-HTML-Seite zu parsen, wurde wieder +// entfernt – das echte Markup ist modernes React/Next.js mit CSS-in-JS +// (emotion-Klassen), keine saubere serverseitig gerenderte Tabelle wie +// angenommen. Das Regex-Parsing fand 0 Treffer und wäre zudem bei jedem +// Netflix-Frontend-Update erneut kaputt gegangen. Netflix läuft daher wie +// alle anderen Anbieter über die TMDb-Näherung weiter unten. + +const STREAMING_PROVIDERS = [ + { id: 'netflix', label: 'Netflix', tmdbId: '8' }, + { id: 'disney', label: 'Disney+', tmdbId: '337' }, + { id: 'prime', label: 'Amazon Prime Video', tmdbId: '9|119' }, + { id: 'appletv', label: 'Apple TV+', tmdbId: '350' }, + { id: 'max', label: 'HBO Max', tmdbId: '1899' }, + { id: 'paramount', label: 'Paramount+', tmdbId: '531' }, + { id: 'wow', label: 'WOW (Sky)', tmdbId: '30' }, + { id: 'rtlplus', label: 'RTL+', tmdbId: '421' }, +]; + +// Admin: ALLE verfügbaren Watch-Provider für Deutschland live von TMDb holen +// MUSS vor /streaming/:providerId stehen, sonst matched Express "all-providers" als providerId! +router.get('/streaming/all-providers', authenticate, requireAdmin, async (req, res) => { + try { + const [movieProv, tvProv] = await Promise.all([ + tmdb('/watch/providers/movie', { watch_region: 'DE' }), + tmdb('/watch/providers/tv', { watch_region: 'DE' }), + ]); + const merged = {}; + for (const p of [...(movieProv.results||[]), ...(tvProv.results||[])]) { + merged[p.provider_id] = { id: p.provider_id, name: p.provider_name, logo: p.logo_path, + priority: p.display_priorities?.DE ?? p.display_priority ?? 999 }; + } + const list = Object.values(merged).sort((a,b) => a.priority - b.priority); + res.json(list); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +router.get('/streaming/providers', authenticate, (req, res) => { + res.json(STREAMING_PROVIDERS.map(p => ({ id: p.id, label: p.label }))); +}); + +// GET /streaming/:providerId – Top 10 Filme + Serien für einen Anbieter (DE) +// GET /streaming/:providerId/new – Neuerscheinungen (letzte 60 Tage, neueste zuerst) +// Zuverlässig für ALLE Anbieter, da nur release_date + watch_provider kombiniert wird – +// keine Sprach-/Popularitäts-Heuristik nötig, die Reihenfolge ergibt sich einfach +// aus dem tatsächlichen Veröffentlichungsdatum. +router.get('/streaming/:providerId/new', authenticate, async (req, res) => { + try { + const provider = STREAMING_PROVIDERS.find(p => p.id === req.params.providerId); + if (!provider) return res.status(404).json({ error: 'Unbekannter Anbieter' }); + + const cacheKey = `streaming-new:${provider.id}`; + const cached = cacheGet(cacheKey); + if (cached !== undefined) return res.json(cached); + + const today = (() => { + const d = new Date(); + return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; + })(); + function daysAgo(n) { + const d = new Date(); + d.setDate(d.getDate() - n); + return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; + } + + function baseParams(mediaKind, sinceDate) { + return { + watch_region: 'DE', + with_watch_providers: provider.tmdbId, + with_watch_monetization_types: 'flatrate', + sort_by: 'popularity.desc', + ...(mediaKind === 'movie' + ? { 'primary_release_date.gte': sinceDate, 'primary_release_date.lte': today } + : { 'first_air_date.gte': sinceDate, 'first_air_date.lte': today }), + }; + } + + async function fetchWindow(mediaKind, sinceDate) { + const path = mediaKind === 'movie' ? '/discover/movie' : '/discover/tv'; + const [p1, p2] = await Promise.all([ + tmdb(path, { ...baseParams(mediaKind, sinceDate), page: 1 }), + tmdb(path, { ...baseParams(mediaKind, sinceDate), page: 2 }), + ]); + return [...(p1.results||[]), ...(p2.results||[])].filter(m => !BLOCKED_LANGS.has(m.original_language)); + } + + // Manche Anbieter (z.B. Disney+, RTL+) haben bei TMDb nur sehr wenige Titel + // mit korrekt erfasstem Veröffentlichungsdatum + Verfügbarkeit verknüpft. + // Statt einer fast leeren Liste wird das Zeitfenster INDIVIDUELL pro Anbieter + // und getrennt für Filme/Serien schrittweise vergrößert, bis mindestens 10 + // Titel zusammenkommen – der tatsächlich verwendete Zeitraum wird im + // Ergebnis ehrlich mitgegeben (kein versteckter Fake-"neu"). + const WINDOW_STAGES = [21, 45, 90, 180, 365, 730]; + const TARGET_COUNT = 10; + async function fetchCandidatesWithExpansion(mediaKind) { + let usedWindow = WINDOW_STAGES[0]; + let result = await fetchWindow(mediaKind, daysAgo(WINDOW_STAGES[0])); + for (let i = 1; i < WINDOW_STAGES.length && result.length < TARGET_COUNT; i++) { + usedWindow = WINDOW_STAGES[i]; + result = await fetchWindow(mediaKind, daysAgo(WINDOW_STAGES[i])); + } + return { items: result, usedWindow }; + } + + // Gleiche Sprachgewichtung wie bei Top 10: Deutsch/Englisch unbegrenzt, + // alle anderen Sprachen zusammen max. 2 Plätze + const UNLIMITED_LANGS = new Set(['de', 'en']); + const MAX_OTHER_LANGUAGE_TOTAL = 2; + function applyLanguageWeighting(rawList) { + let otherCount = 0; + const picked = []; + const overflow = []; + for (const item of rawList) { + const lang = item.original_language || 'xx'; + if (UNLIMITED_LANGS.has(lang)) { + picked.push(item); + } else if (otherCount < MAX_OTHER_LANGUAGE_TOTAL) { + picked.push(item); + otherCount++; + } else { + overflow.push(item); + } + if (picked.length >= 10) break; + } + for (const item of overflow) { + if (picked.length >= 10) break; + picked.push(item); + } + return picked.slice(0, 10); + } + + const [movieResult, tvResult, genreMap] = await Promise.all([ + fetchCandidatesWithExpansion('movie'), + fetchCandidatesWithExpansion('tv'), + getGenreMap(), + ]); + + // Titel die bereits in der (gecachten) Top-10-Liste dieses Anbieters stehen + // aus den Neuerscheinungen ausschließen, damit beide Reiter sich nicht + // überschneiden, selbst wenn sich die Zeitfenster teilweise überlappen + const top10Cached = cacheGet(`streaming-top10:${provider.id}`); + const top10MovieIds = new Set((top10Cached?.movies || []).map(m => m.id)); + const top10TvIds = new Set((top10Cached?.tvShows || []).map(m => m.id)); + + const movies = applyLanguageWeighting(movieResult.items.filter(m => !top10MovieIds.has(m.id))) + .map((m, i) => ({ ...enrichMovie(m, genreMap, null, i + 1), media_type: 'movie' })); + + const tvShows = applyLanguageWeighting(tvResult.items.filter(m => !top10TvIds.has(m.id))) + .map((m, i) => ({ + id: m.id, media_type: 'tv', rank: i + 1, + title: m.name || m.original_name, + original_title: m.original_name, + release_date: m.first_air_date || '', + poster_path: m.poster_path || '', + genres: (m.genre_ids||[]).map(gid => genreMap[gid]).filter(Boolean), + vote_average: m.vote_average, + original_language: m.original_language, + origin_country: m.origin_country || [], + })); + + const result = { + provider: { id: provider.id, label: provider.label }, + movies, tvShows, + movieWindowDays: movieResult.usedWindow, + tvWindowDays: tvResult.usedWindow, + }; + cacheSet(cacheKey, result, 6 * 60 * 60 * 1000); + res.json(result); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// ── Cache leeren für einen Provider (Admin) ────────────────────────────────── +router.post('/streaming/:providerId/clear-cache', authenticate, requireAdmin, (req, res) => { + const provider = STREAMING_PROVIDERS.find(p => p.id === req.params.providerId); + if (!provider) return res.status(404).json({ error: 'Unbekannter Anbieter' }); + cacheDelete(`streaming-top10:${provider.id}`); + cacheDelete(`streaming-new:${provider.id}`); + res.json({ ok: true, provider: provider.id }); +}); + +router.get('/streaming/:providerId', authenticate, async (req, res) => { + try { + const provider = STREAMING_PROVIDERS.find(p => p.id === req.params.providerId); + if (!provider) return res.status(404).json({ error: 'Unbekannter Anbieter' }); + + const streamCacheKey = `streaming-top10:${provider.id}`; + const cachedResult = cacheGet(streamCacheKey); + if (cachedResult !== undefined) return res.json(cachedResult); + + // Nur Titel der letzten 2 Jahre (aktuelles Jahr - 1) + // Für kleine Kataloge (HBO Max, WOW, RTL+) kein Jahresfilter — TMDb hat dort + // zu wenige Titel mit korrekt erfasstem DE-Datum seit letztem Jahr + const SMALL_CATALOGS = new Set(['max']); + const minYear = new Date().getFullYear() - 1; + const minDate = SMALL_CATALOGS.has(provider.id) ? null : `${minYear}-01-01`; + + // Deutsch & Englisch sind unbegrenzt erlaubt. Alle anderen Sprachen + // zusammen (Koreanisch, Japanisch, Spanisch, etc.) dürfen max. 2 Plätze + // in den Top 10 belegen – KEINE Ausnahme mehr für "hohe vote_count", + // weil genau das die Liste mit populären Anime/K-Dramen geflutet hat. + const UNLIMITED_LANGS = new Set(['de', 'en']); + const MAX_OTHER_LANGUAGE_TOTAL = 2; + + // Manche Anbieter (z.B. HBO Max) nutzen bei TMDb DE nicht nur 'flatrate' + const monetizationType = ['max'].includes(provider.id) + ? 'flatrate|free|ads|rent|buy' + : 'flatrate'; + + function buildParams(mediaKind, minVotes, dateFrom) { + return { + watch_region: 'DE', + with_watch_providers: provider.tmdbId, + with_watch_monetization_types: monetizationType, + sort_by: 'popularity.desc', + 'vote_count.gte': minVotes, + ...(dateFrom + ? (mediaKind === 'movie' ? { 'primary_release_date.gte': dateFrom } : { 'first_air_date.gte': dateFrom }) + : {}), + }; + } + + async function fetchPages(mediaKind, minVotes, pageCount, dateFrom) { + const params = buildParams(mediaKind, minVotes, dateFrom); + const path = mediaKind === 'movie' ? '/discover/movie' : '/discover/tv'; + const calls = []; + for (let p = 1; p <= pageCount; p++) calls.push(tmdb(path, { ...params, page: p })); + const pages = await Promise.all(calls); + return pages.flatMap(p => p.results || []); + } + + // "Ganz frisch"-Fenster: letzte 90 Tage, sehr niedrige Vote-Schwelle. + // TMDb's popularity-Wert reagiert auf kurzfristige Trend-Spitzen (Suchanfragen, + // Watchlist-Einträge etc.), das geht in der riesigen 2-Jahres-Gesamtliste aber + // unter alten Dauerbrennern unter. Durch die enge Zeitspanne kommen aktuell + // virale Titel (z.B. ein Release dieser Woche) automatisch nach vorne – + // ganz ohne zusätzliche Einzel-Abfragen pro Titel. + const freshDate = (() => { + const d = new Date(); + d.setDate(d.getDate() - 90); + return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; + })(); + + // Robuster Fallback in vier Stufen, garantiert genug Kandidaten: + // 1) hohe Schwelle (letzte 2 Jahre, bekannte Titel) + // 2) mittlere Schwelle (letzte 2 Jahre) + // 3) niedrige Schwelle (letzte 2 Jahre) + // 4) OHNE Jahresfilter (für kleinere Kataloge wie RTL+, die laut TMDb in den + // letzten 2 Jahren kaum neue Lizenzen bekommen haben – die zeigen wir dann + // mit ihren ältesten verfügbaren beliebten Titeln statt einer leeren Liste) + async function fetchCandidates(mediaKind) { + // Schritt 1: ganz frische Titel (letzte 90 Tage, niedrige Schwelle) – + // werden später vorne in die Liste gemischt, damit aktuelle Hits Vorrang haben + const freshRaw = await fetchPages(mediaKind, 5, 1, freshDate); + const fresh = freshRaw.filter(m => !BLOCKED_LANGS.has(m.original_language)); + + // Schritt 2: normaler Pool der letzten 2 Jahre, gestaffelte Vote-Schwelle + let raw = await fetchPages(mediaKind, 300, 2, minDate); + let filtered = raw.filter(m => !BLOCKED_LANGS.has(m.original_language)); + if (filtered.length < 15) { + const more = await fetchPages(mediaKind, 50, 2, minDate); + const seen = new Set(filtered.map(m => m.id)); + for (const m of more) if (!seen.has(m.id) && !BLOCKED_LANGS.has(m.original_language)) { filtered.push(m); seen.add(m.id); } + } + if (filtered.length < 10) { + const more = await fetchPages(mediaKind, 0, 2, minDate); + const seen = new Set(filtered.map(m => m.id)); + for (const m of more) if (!seen.has(m.id) && !BLOCKED_LANGS.has(m.original_language)) { filtered.push(m); seen.add(m.id); } + } + // Schritt 3: kleine Kataloge (z.B. RTL+) – TMDb hat dort oft kaum Titel + // der letzten 2 Jahre korrekt eingetragen, dann ganz ohne Jahresfilter + if (filtered.length < 10) { + const more = await fetchPages(mediaKind, 20, 2, null); + const seen = new Set(filtered.map(m => m.id)); + for (const m of more) if (!seen.has(m.id) && !BLOCKED_LANGS.has(m.original_language)) { filtered.push(m); seen.add(m.id); } + } + + // Frische Titel vorne einmischen (Duplikate raus) + const seenIds = new Set(); + const merged = []; + for (const m of fresh) { if (!seenIds.has(m.id)) { merged.push(m); seenIds.add(m.id); } } + for (const m of filtered) { if (!seenIds.has(m.id)) { merged.push(m); seenIds.add(m.id); } } + return merged; + } + + const [movieRaw, tvRaw, genreMap] = await Promise.all([ + fetchCandidates('movie'), + fetchCandidates('tv'), + getGenreMap(), + ]); + + // Liste bleibt nach Popularität sortiert. DE/EN unbegrenzt, alle anderen + // Sprachen zusammen maximal 2 Plätze in den Top 10. + function applyLanguageWeighting(rawList) { + let otherCount = 0; + const picked = []; + const overflow = []; + for (const item of rawList) { + const lang = item.original_language || 'xx'; + if (UNLIMITED_LANGS.has(lang)) { + picked.push(item); + } else if (otherCount < MAX_OTHER_LANGUAGE_TOTAL) { + picked.push(item); + otherCount++; + } else { + overflow.push(item); + } + if (picked.length >= 10) break; + } + // Falls weniger als 10 zusammenkommen (z.B. sehr kleiner Katalog), + // mit den nächstbeliebtesten auffüllen – auch über den Sprachdeckel hinaus + for (const item of overflow) { + if (picked.length >= 10) break; + picked.push(item); + } + return picked.slice(0, 10); + } + + const movies = applyLanguageWeighting(movieRaw) + .map((m, i) => ({ ...enrichMovie(m, genreMap, null, i + 1), media_type: 'movie' })); + + const tvShows = applyLanguageWeighting(tvRaw) + .map((m, i) => ({ + id: m.id, media_type: 'tv', rank: i + 1, + title: m.name || m.original_name, + original_title: m.original_name, + release_date: m.first_air_date || '', + poster_path: m.poster_path || '', + genres: (m.genre_ids||[]).map(gid => genreMap[gid]).filter(Boolean), + vote_average: m.vote_average, + original_language: m.original_language, + origin_country: m.origin_country || [], + })); + + const result = { + provider: { id: provider.id, label: provider.label }, + movies, tvShows, + isOfficialData: false, + filterInfo: { minYear, maxOtherLanguageTotal: MAX_OTHER_LANGUAGE_TOTAL }, + }; + cacheSet(streamCacheKey, result, 6 * 60 * 60 * 1000); // 6h Cache + res.json(result); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// ── Favorites Routen (feste VOR :param) ────────────────────────────────────── + +// GET /favorites – eigene Favoriten +router.get('/favorites', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM movie_favorites WHERE user_id=? ORDER BY release_date ASC').all(req.user.id)); +}); + +// GET /favorites/all – Admin: alle User gruppiert +router.get('/favorites/all', authenticate, requireAdmin, (req, res) => { + const favs = db.prepare(` + SELECT f.*, u.username + FROM movie_favorites f + JOIN users u ON u.id = f.user_id + ORDER BY u.username ASC, f.added_at DESC + `).all(); + res.json(favs); +}); + +// POST /favorites/user-notify – User hat quittierte Favoriten gesehen +router.post('/favorites/user-notify', authenticate, (req, res) => { + db.prepare('UPDATE movie_favorites SET user_notified=1 WHERE user_id=? AND acknowledged=1 AND user_notified=0').run(req.user.id); + res.json({ ok: true }); +}); + +// GET /favorites/unacked – unquittierte Zählung (Admin: neue Requests; User: quittierte aber unbestätigte) +router.get('/favorites/unacked', authenticate, (req, res) => { + const isAdmin = req.user.role === 'admin'; + if (isAdmin) { + const count = db.prepare('SELECT COUNT(*) as n FROM movie_favorites WHERE acknowledged=0').get(); + const newCount = db.prepare('SELECT COUNT(*) as n FROM movie_favorites WHERE acknowledged=0 AND admin_seen=0').get(); + res.json({ count: count.n, newCount: newCount.n, isAdmin: true }); + } else { + // User: Favoriten die vom Admin quittiert wurden aber User noch nicht gesehen hat + const count = db.prepare('SELECT COUNT(*) as n FROM movie_favorites WHERE user_id=? AND acknowledged=1 AND user_notified=0').get(req.user.id); + res.json({ count: count.n, isAdmin: false }); + } +}); + +// POST /favorites/mark-seen – Admin hat die offenen Requests angesehen (noch +// nicht zwingend quittiert) — nimmt ihnen das "neu"-Label im Dashboard +router.post('/favorites/mark-seen', authenticate, (req, res) => { + if (req.user.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' }); + db.prepare('UPDATE movie_favorites SET admin_seen=1 WHERE acknowledged=0 AND admin_seen=0').run(); + res.json({ ok: true }); +}); + + + +// ── Quittier-Logik (wiederverwendbar: HTTP-Routen + MQTT-Buttons) ─────────── +function ackFavorite(id) { + const fav = db.prepare('SELECT * FROM movie_favorites WHERE id=?').get(id); + if (!fav) return null; + db.prepare('UPDATE movie_favorites SET acknowledged=1, acknowledged_at=CURRENT_TIMESTAMP, user_notified=0 WHERE id=?').run(fav.id); + try { + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(fav.user_id); + if (poCfg?.app_token && poCfg?.user_key) { + const title = '✅ Favorit bestätigt'; + const message = `"${fav.title}" wurde von einem Admin bestätigt.`; + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + title, + message, + priority: 0, + }), + }).catch(() => {}); + logPush({ userId: fav.user_id, title, message, priority: 0, source: 'media-favorit' }); + } + } catch {} + return fav; +} + +function ackAllFavorites() { + const toAck = db.prepare('SELECT id, user_id, title FROM movie_favorites WHERE acknowledged=0').all(); + db.prepare('UPDATE movie_favorites SET acknowledged=1, acknowledged_at=CURRENT_TIMESTAMP, user_notified=0 WHERE acknowledged=0').run(); + try { + const userIds = [...new Set(toAck.map(f => f.user_id))]; + for (const userId of userIds) { + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(userId); + if (!poCfg?.app_token || !poCfg?.user_key) continue; + const userFavs = toAck.filter(f => f.user_id === userId); + const title = '✅ Favoriten bestätigt'; + const message = userFavs.length === 1 + ? `"${userFavs[0].title}" wurde von einem Admin bestätigt.` + : `${userFavs.length} deiner Favoriten wurden von einem Admin bestätigt.`; + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + title, + message, + priority: 0, + }), + }).catch(() => {}); + logPush({ userId, title, message, priority: 0, source: 'media-favorit' }); + } + } catch {} + return toAck.length; +} + +// POST /favorites/acknowledge-all – Admin: alle quittieren +router.post('/favorites/acknowledge-all', authenticate, requireAdmin, (req, res) => { + ackAllFavorites(); + res.json({ ok: true }); +}); + +// POST /favorites – Favorit hinzufügen (alle User inkl. Admin bekommen Pushover) +router.post('/favorites', authenticate, (req, res) => { + const { tmdb_id, title, poster_path, release_date_de, release_date, genres, fsk, media_type } = req.body; + if (!tmdb_id) return res.status(400).json({ error: 'tmdb_id fehlt' }); + try { + const r = db.prepare(`INSERT OR IGNORE INTO movie_favorites + (user_id,tmdb_id,title,poster_path,release_date_de,release_date,genres,fsk,media_type,added_at) + VALUES (?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)`) + .run(req.user.id, tmdb_id, title||'', poster_path||'', release_date_de||'', release_date||'', JSON.stringify(genres||[]), fsk||'', media_type||'movie'); + + if (r.changes > 0) { + try { + // Admin-Pushover-Einstellungen aus pushover_settings Tabelle + const adminUser = db.prepare("SELECT id FROM users WHERE role='admin' LIMIT 1").get(); + const poCfg = adminUser + ? db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(adminUser.id) + : null; + const user = db.prepare('SELECT username FROM users WHERE id=?').get(req.user.id); + if (poCfg?.app_token && poCfg?.user_key) { + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + message: `${user?.username || 'Jemand'} hat "${title}" zur Merkliste hinzugefügt`, + title: '⭐ Neue Favoriten', + priority: 0, + }), + }).catch(() => {}); + } + } catch {} + } + res.json({ ok: true }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// DELETE /favorites/:tmdb_id – eigenen Favoriten löschen (jeder User) +router.delete('/favorites/:tmdb_id', authenticate, (req, res) => { + db.prepare('DELETE FROM movie_favorites WHERE user_id=? AND tmdb_id=?').run(req.user.id, Number(req.params.tmdb_id)); + res.json({ ok: true }); +}); + +// POST /favorites/:id/acknowledge – Admin: einzelnen quittieren +router.post('/favorites/:id/acknowledge', authenticate, requireAdmin, (req, res) => { + const fav = ackFavorite(req.params.id); + if (!fav) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ ok: true }); +}); + +// POST /favorites/:id/unacknowledge – Admin: Quittierung rückgängig machen +router.post('/favorites/:id/unacknowledge', authenticate, requireAdmin, (req, res) => { + const fav = db.prepare('SELECT * FROM movie_favorites WHERE id=?').get(req.params.id); + if (!fav) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('UPDATE movie_favorites SET acknowledged=0, acknowledged_at=NULL, user_notified=0, admin_seen=0 WHERE id=?').run(fav.id); + res.json({ ok: true }); + // Pushover an den User — Quittierung zurückgezogen (fire & forget) + try { + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(fav.user_id); + if (poCfg?.app_token && poCfg?.user_key) { + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + title: '↩ Favorit zurückgezogen', + message: `Die Bestätigung für "${fav.title}" wurde vom Admin zurückgezogen.`, + priority: 0, + }), + }).catch(() => {}); + } + } catch {} +}); + +// Admin: ALLE verfügbaren Watch-Provider für Deutschland live von TMDb holen +// Admin: Streaming-Top10-Cache leeren (z.B. nach Logik-Änderungen) +// Debug: rohe TMDb-Treffer pro Anbieter/Schwelle prüfen +// Debug: Top10 vs Neuerscheinungen direkt vergleichen +router.get('/streaming/debug-compare/:providerId', authenticate, requireAdmin, async (req, res) => { + try { + // Cache umgehen, beide Endpoints intern nochmal frisch ausführen indem wir + // einfach die echten Routen über fetch auf uns selbst aufrufen würde Auth + // brauchen - stattdessen Cache direkt leeren und Original-Handler-Logik + // duplizieren ist zu viel Aufwand für Debug. Einfacher: aktuellen Cache-Inhalt + // (falls vorhanden) UND since-Werte direkt ausgeben. + const top10 = cacheGet(`streaming-top10:${req.params.providerId}`); + const newRel = cacheGet(`streaming-new:${req.params.providerId}`); + res.json({ + top10_cached: !!top10, + new_cached: !!newRel, + top10_tv_titles: (top10?.tvShows || []).map(t => ({ id: t.id, title: t.title, release_date: t.release_date })), + new_tv_titles: (newRel?.tvShows || []).map(t => ({ id: t.id, title: t.title, release_date: t.release_date })), + new_since: newRel?.since, + }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// Debug: Neuerscheinungen-Discover-Query roh prüfen (ohne Filterung danach) +router.get('/streaming/debug-new/:providerId', authenticate, requireAdmin, async (req, res) => { + try { + const provider = STREAMING_PROVIDERS.find(p => p.id === req.params.providerId); + if (!provider) return res.status(404).json({ error: 'Unbekannter Anbieter' }); + + const since = (() => { + const d = new Date(); + d.setDate(d.getDate() - 21); + return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; + })(); + const today = (() => { + const d = new Date(); + return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; + })(); + + async function raw(mediaKind, sortBy) { + const path = mediaKind === 'movie' ? '/discover/movie' : '/discover/tv'; + const params = { + watch_region: 'DE', + with_watch_providers: provider.tmdbId, + with_watch_monetization_types: 'flatrate', + sort_by: sortBy, + ...(mediaKind === 'movie' + ? { 'primary_release_date.gte': since, 'primary_release_date.lte': today } + : { 'first_air_date.gte': since, 'first_air_date.lte': today }), + }; + const data = await tmdb(path, { ...params, page: 1 }); + return { + total_results: data.total_results, + sample: (data.results||[]).slice(0,10).map(m => ({ + title: m.title||m.name, lang: m.original_language, + vote_count: m.vote_count, popularity: m.popularity, + date: m.release_date||m.first_air_date, + })), + }; + } + + const [movieByPop, movieByDate, tvByPop, tvByDate] = await Promise.all([ + raw('movie', 'popularity.desc'), + raw('movie', 'primary_release_date.desc'), + raw('tv', 'popularity.desc'), + raw('tv', 'first_air_date.desc'), + ]); + + res.json({ provider: provider.label, since, today, movieByPop, movieByDate, tvByPop, tvByDate }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +router.get('/streaming/debug/:providerId', authenticate, requireAdmin, async (req, res) => { + try { + const provider = STREAMING_PROVIDERS.find(p => p.id === req.params.providerId); + if (!provider) return res.status(404).json({ error: 'Unbekannter Anbieter' }); + const minYear = new Date().getFullYear() - 1; + const minDate = `${minYear}-01-01`; + + async function countFor(mediaKind, minVotes) { + const path = mediaKind === 'movie' ? '/discover/movie' : '/discover/tv'; + const params = { + watch_region: 'DE', + with_watch_providers: provider.tmdbId, + with_watch_monetization_types: 'flatrate', + sort_by: 'popularity.desc', + 'vote_count.gte': minVotes, + ...(mediaKind === 'movie' ? { 'primary_release_date.gte': minDate } : { 'first_air_date.gte': minDate }), + }; + const data = await tmdb(path, { ...params, page: 1 }); + return { total_results: data.total_results, total_pages: data.total_pages, sample: (data.results||[]).slice(0,3).map(m=>m.title||m.name) }; + } + + // Auch OHNE Jahresfilter testen, um zu sehen ob der Jahresfilter das Problem ist + async function countNoYearFilter(mediaKind, minVotes) { + const path = mediaKind === 'movie' ? '/discover/movie' : '/discover/tv'; + const params = { + watch_region: 'DE', + with_watch_providers: provider.tmdbId, + with_watch_monetization_types: 'flatrate', + sort_by: 'popularity.desc', + 'vote_count.gte': minVotes, + }; + const data = await tmdb(path, { ...params, page: 1 }); + return { total_results: data.total_results, total_pages: data.total_pages }; + } + + const [movies300, movies50, movies0, moviesNoYear, tv300, tv50, tv0, tvNoYear] = await Promise.all([ + countFor('movie', 300), countFor('movie', 50), countFor('movie', 0), countNoYearFilter('movie', 0), + countFor('tv', 300), countFor('tv', 50), countFor('tv', 0), countNoYearFilter('tv', 0), + ]); + + res.json({ + provider: provider.label, tmdbId: provider.tmdbId, minDate, + movies: { withVotes300: movies300, withVotes50: movies50, withVotes0: movies0, noYearFilter: moviesNoYear }, + tv: { withVotes300: tv300, withVotes50: tv50, withVotes0: tv0, noYearFilter: tvNoYear }, + }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +router.post('/streaming/clear-cache', authenticate, requireAdmin, (req, res) => { + const r = db.prepare("DELETE FROM xrel_cache WHERE cache_key LIKE 'streaming-top10:%' OR cache_key LIKE 'streaming-new:%'").run(); + res.json({ ok: true, cleared: r.changes }); +}); + +router.get('/settings', authenticate, requireAdmin, (req, res) => res.json({ configured: !!getToken() })); +router.put('/settings', authenticate, requireAdmin, (req, res) => { + const { tmdb_token } = req.body; + if (typeof tmdb_token !== 'string') return res.status(400).json({ error: 'tmdb_token fehlt' }); + db.prepare('INSERT OR REPLACE INTO admin_settings (key,value) VALUES (?,?)').run('tmdb_token', tmdb_token.trim()); + genreCache = null; + res.json({ ok: true }); +}); + + +// DEBUG ext_info – nach Test entfernen +router.get('/debug-extinfo', authenticate, async (req, res) => { + const id = req.query.id || ''; + if (!id) return res.json({ error: 'id required' }); + try { + const data = await xrelFetch('/ext_info/info.json', { id, type: 'movie' }); + res.json(data); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +// DEBUG – nach Test entfernen +router.get('/debug-xrel3', authenticate, async (req, res) => { + const title = req.query.title || ''; + const orig = req.query.orig || ''; + const imdb_id = req.query.imdb_id || null; + const log = { title, orig, imdb_id }; + try { + const clean = (s) => normalizeUmlauts(s||'').replace(/[*#!?:]/g,'').trim().toLowerCase(); + const rawQueries = [orig, title].filter(Boolean).filter((v,i,a) => a.indexOf(v)===i); + const normQueries = rawQueries.map(q => normalizeUmlauts(q).replace(/[*#!?:]/g,'').trim()) + .filter(q => !rawQueries.map(r => r.replace(/[*#!?:]/g,'').trim()).includes(q)); + log.rawQueries = rawQueries; + log.normQueries = normQueries; + log.allQueries = [...rawQueries, ...normQueries].filter(Boolean).filter((v,i,a) => a.indexOf(v)===i); + + const results = []; + for (const q of log.allQueries) { + try { + const data = await xrelFetch('/search/ext_info.json', { + q: normalizeUmlauts(q).replace(/[*#!?:]/g,''), type:'movie', limit:5 + }); + results.push({ + query: normalizeUmlauts(q).replace(/[*#!?:]/g,''), + hits: (data.results||[]).map(h => ({ id: h.id, title: h.title, alt_title: h.alt_title, uris: h.uris })) + }); + } catch(e) { results.push({ query: q, error: e.message }); } + } + log.searchResults = results; + } catch(e) { log.error = e.message; } + res.json(log); +}); + +// Debug xREL für TV +router.get('/debug-xrel-tv', authenticate, async (req, res) => { + const { title='', orig='', imdb_id='', year='0', id='0' } = req.query; + try { + const clean = s => (s||'').toLowerCase().trim(); + const allQueries = [orig, title].filter(Boolean).filter((v,i,a)=>a.indexOf(v)===i); + + // 1. Suche + const searchResults = await Promise.all(allQueries.map(async q => { + try { + const data = await xrelFetch('/search/ext_info.json', { q: q.replace(/[*#!?:]/g,''), type:'tv', limit:10 }); + return { q, results: data?.results||[], total: data?.total||0 }; + } catch(e) { return { q, error: e.message }; } + })); + + // 2. IMDb-Match + let extInfoId = null; + if (imdb_id) { + for (const r of searchResults) { + const hit = (r.results||[]).find(h => (h.uris||[]).includes(`imdb:${imdb_id}`)); + if (hit) { extInfoId = hit.id; break; } + } + } + + // 3. Titel-Match + if (!extInfoId) { + for (const r of searchResults) { + for (const h of r.results||[]) { + if (clean(h.title)===clean(orig)||clean(h.title)===clean(title)|| + clean(h.alt_title)===clean(orig)||clean(h.alt_title)===clean(title)) { + extInfoId = h.id; break; + } + } + if (extInfoId) break; + } + } + + // 4. Releases wenn gefunden + let releases = []; + if (extInfoId) { + const [scene, p2p] = await Promise.all([ + xrelFetch('/release/ext_info.json', { id: extInfoId, per_page: 25 }).catch(()=>({})), + xrelFetch('/p2p/releases.json', { ext_info_id: extInfoId, per_page: 25 }).catch(()=>({})), + ]); + releases = [ + ...(scene.list||[]).map(r=>({ src:'scene', dirname:r.dirname, german:/german|deutsch/i.test(r.dirname||'') })), + ...(p2p.list||[]).map(r=>({ src:'p2p', dirname:r.dirname, german: r.main_lang==='german' })), + ]; + } + + res.json({ searchResults, extInfoId, releases: releases.slice(0,20) }); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + +module.exports = router; +module.exports.ackFavorite = ackFavorite; +module.exports.ackAllFavorites = ackAllFavorites; diff --git a/backend/src/tools/nachrichten/routes.js b/backend/src/tools/nachrichten/routes.js new file mode 100644 index 0000000..c170973 --- /dev/null +++ b/backend/src/tools/nachrichten/routes.js @@ -0,0 +1,216 @@ +const express = require('express'); +const db = require('../../db'); +const { logPush } = require('../../pushLog'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +// ── Pushover Helper ─────────────────────────────────────────────────────────── +async function sendPushover(userKey, appToken, title, message, opts = {}, userId = null) { + let priority = 0; + try { + const params = { token: appToken, user: userKey, title, message }; + if (opts.retry && opts.expire) { + params.priority = 2; + priority = 2; + params.retry = opts.retry; + params.expire = opts.expire; + } + await fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: new URLSearchParams(params), + }); + logPush({ userId, title, message, priority, source: 'nachrichten' }); + } catch { + logPush({ userId, title, message, priority, source: 'nachrichten', success: false }); + } +} + +// ── Public Keys ─────────────────────────────────────────────────────────────── +router.get('/keys/:userId', authenticate, (req, res) => { + const row = db.prepare('SELECT public_key FROM user_keys WHERE user_id = ?').get(req.params.userId); + res.json({ public_key: row?.public_key || null }); +}); + +router.post('/keys', authenticate, (req, res) => { + const { public_key } = req.body; + if (!public_key) return res.status(400).json({ error: 'Kein Schlüssel' }); + db.prepare(` + INSERT INTO user_keys (user_id, public_key, updated_at) + VALUES (?, ?, CURRENT_TIMESTAMP) + ON CONFLICT(user_id) DO UPDATE SET public_key=excluded.public_key, updated_at=CURRENT_TIMESTAMP + `).run(req.user.id, public_key); + res.json({ ok: true }); +}); + +// ── Users ───────────────────────────────────────────────────────────────────── +// Presence: User ist gerade aktiv im Chat +router.post('/presence', authenticate, (req, res) => { + const { active } = req.body; + if (active) { + db.prepare("UPDATE users SET chat_active_at=datetime('now','localtime') WHERE id=?").run(req.user.id); + } else { + db.prepare("UPDATE users SET chat_active_at=NULL WHERE id=?").run(req.user.id); + } + res.json({ ok: true }); +}); + +router.get('/users', authenticate, (req, res) => { + const me = req.user.id; + const isAdmin = req.user.role === 'admin'; + + // Admins sehen alle. Normale User sehen: + // - keine hidden User + // - wenn sie selbst hidden sind: nur Admins + const meUser = db.prepare('SELECT hidden FROM users WHERE id=?').get(me); + const isMeHidden = !!meUser?.hidden; + + let whereExtra = ''; + if (!isAdmin && isMeHidden) { + // Ich bin hidden → sehe nur Admins + whereExtra = "AND u.role = 'admin'"; + } else if (!isAdmin) { + // Normaler User → sieht keine hidden User + whereExtra = "AND (u.hidden = 0 OR u.hidden IS NULL)"; + } + // Admin → kein Filter + + const users = db.prepare(` + SELECT u.id, u.username, uk.public_key, + (SELECT COUNT(*) FROM messages + WHERE sender_id = u.id AND recipient_id = ? AND read_by_recipient = 0) AS unread, + (SELECT MAX(created_at) FROM messages + WHERE (sender_id = u.id AND recipient_id = ?) + OR (sender_id = ? AND recipient_id = u.id)) AS last_message_at + FROM users u + LEFT JOIN user_keys uk ON uk.user_id = u.id + WHERE u.id != ? ${whereExtra} + ORDER BY last_message_at DESC, u.username ASC + `).all(me, me, me, me); + res.json(users); +}); + +// ── Unread Count ────────────────────────────────────────────────────────────── +router.get('/unread', authenticate, (req, res) => { + const row = db.prepare( + 'SELECT COUNT(*) AS count FROM messages WHERE recipient_id = ? AND read_by_recipient = 0' + ).get(req.user.id); + res.json({ count: row.count }); +}); + +// ── Messages ────────────────────────────────────────────────────────────────── +router.get('/messages/:userId', authenticate, (req, res) => { + const me = req.user.id; + const other = parseInt(req.params.userId); + + db.prepare(` + UPDATE messages SET read_by_recipient = 1 + WHERE recipient_id = ? AND sender_id = ? AND read_by_recipient = 0 + `).run(me, other); + + const msgs = db.prepare(` + SELECT id, sender_id, encrypted_content, iv, created_at, + (sender_id = ?) AS is_mine, + read_by_recipient + FROM messages + WHERE (sender_id = ? AND recipient_id = ?) + OR (recipient_id = ? AND sender_id = ?) + ORDER BY created_at ASC + `).all(me, me, other, me, other); + + res.json(msgs); +}); + +router.post('/messages/:userId', authenticate, async (req, res) => { + const me = req.user.id; + const recipId = parseInt(req.params.userId); + const { encrypted_content, iv } = req.body; + if (!encrypted_content || !iv) return res.status(400).json({ error: 'Fehlende Felder' }); + + const recipient = db.prepare('SELECT id FROM users WHERE id = ?').get(recipId); + if (!recipient) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + + const result = db.prepare( + "INSERT INTO messages (sender_id, recipient_id, encrypted_content, iv, created_at) VALUES (?, ?, ?, ?, datetime('now', 'localtime'))" + ).run(me, recipId, encrypted_content, iv); + + const senderName = db.prepare('SELECT username FROM users WHERE id = ?').get(me)?.username || 'Jemand'; + const pushover = db.prepare('SELECT * FROM pushover_settings WHERE user_id = ?').get(recipId); + if (pushover) { + // Kein Push wenn Empfänger gerade im Chat ist (aktiv in letzten 45 Sekunden) + const presence = db.prepare(` + SELECT chat_active_at FROM users WHERE id=? AND chat_active_at > datetime('now','localtime','-45 seconds') + `).get(recipId); + if (!presence) { + await sendPushover(pushover.user_key, pushover.app_token, 'DickenDock', `Neue Nachricht von ${senderName}`, + { retry: pushover.retry, expire: pushover.expire }, recipId); + } + } + + res.json({ id: result.lastInsertRowid }); +}); + +// DELETE einzelne Nachricht – hard delete, beide Seiten dürfen löschen +router.delete('/messages/:messageId', authenticate, (req, res) => { + const me = req.user.id; + const mid = parseInt(req.params.messageId); + db.prepare( + 'DELETE FROM messages WHERE id = ? AND (sender_id = ? OR recipient_id = ?)' + ).run(mid, me, me); + res.json({ ok: true }); +}); + +// DELETE gesamte Konversation – hard delete +router.delete('/conversation/:userId', authenticate, (req, res) => { + const me = req.user.id; + const other = parseInt(req.params.userId); + db.prepare(` + DELETE FROM messages + WHERE (sender_id = ? AND recipient_id = ?) OR (sender_id = ? AND recipient_id = ?) + `).run(me, other, other, me); + res.json({ ok: true }); +}); + +// DELETE alle eigenen Nachrichten (für Schlüssel-Reset) +router.delete('/my-messages', authenticate, (req, res) => { + db.prepare('DELETE FROM messages WHERE sender_id = ? OR recipient_id = ?') + .run(req.user.id, req.user.id); + res.json({ ok: true }); +}); + +// ── Pushover Settings ───────────────────────────────────────────────────────── +router.get('/pushover', authenticate, (req, res) => { + const row = db.prepare('SELECT user_key, app_token, retry, expire FROM pushover_settings WHERE user_id = ?').get(req.user.id); + res.json(row || { user_key: '', app_token: '', retry: null, expire: null }); +}); + +router.post('/pushover', authenticate, (req, res) => { + const { user_key, app_token, retry, expire } = req.body; + if (!user_key || !app_token) return res.status(400).json({ error: 'Beide Felder erforderlich' }); + db.prepare(` + INSERT INTO pushover_settings (user_id, user_key, app_token, retry, expire) + VALUES (?, ?, ?, ?, ?) + ON CONFLICT(user_id) DO UPDATE SET user_key=excluded.user_key, app_token=excluded.app_token, + retry=excluded.retry, expire=excluded.expire + `).run(req.user.id, user_key, app_token, retry || null, expire || null); + res.json({ ok: true }); +}); + +router.delete('/pushover', authenticate, (req, res) => { + db.prepare('DELETE FROM pushover_settings WHERE user_id = ?').run(req.user.id); + res.json({ ok: true }); +}); + +router.post('/pushover/test', authenticate, async (req, res) => { + const row = db.prepare('SELECT * FROM pushover_settings WHERE user_id = ?').get(req.user.id); + if (!row) return res.status(400).json({ error: 'Keine Pushover-Einstellungen gespeichert' }); + const useEmergency = req.body?.emergency === true && row.retry && row.expire; + const msg = useEmergency + ? `🚨 Emergency-Test! Wiederholt alle ${row.retry}s für max. ${row.expire}s. Bitte in Pushover quittieren.` + : 'Pushover-Verbindung erfolgreich! 🎉'; + await sendPushover(row.user_key, row.app_token, 'DickenDock', msg, + useEmergency ? { retry: row.retry, expire: row.expire } : {}, req.user.id); + res.json({ ok: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/paywallkiller/routes.js b/backend/src/tools/paywallkiller/routes.js new file mode 100644 index 0000000..9e41680 --- /dev/null +++ b/backend/src/tools/paywallkiller/routes.js @@ -0,0 +1,5 @@ +const express = require('express'); +const router = express.Router(); +// Paywall-Killer: gesamter Flow läuft im Browser des Users. +// Kein aktiver Backend-Endpoint nötig. +module.exports = router; diff --git a/backend/src/tools/qrcodes/routes.js b/backend/src/tools/qrcodes/routes.js new file mode 100644 index 0000000..c18cff8 --- /dev/null +++ b/backend/src/tools/qrcodes/routes.js @@ -0,0 +1,41 @@ +const express = require('express'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +router.get('/', authenticate, (req, res) => { + res.json(db.prepare('SELECT * FROM qr_codes WHERE user_id=? ORDER BY created_at DESC').all(req.user.id)); +}); + +router.post('/', authenticate, (req, res) => { + const uid = req.user.id; + const { label='', url, size=256, fg_color='#000000', bg_color='#ffffff', margin=4, + dot_style='square', corner_style='square', caption='', caption_pos='bottom', + caption_color='#000000', caption_size=14 } = req.body; + if (!url?.trim()) return res.status(400).json({ error: 'URL erforderlich' }); + const r = db.prepare(` + INSERT INTO qr_codes (user_id,label,url,size,fg_color,bg_color,margin,dot_style,corner_style,caption,caption_pos,caption_color,caption_size,created_at) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,datetime('now','localtime')) + `).run(uid, label.trim(), url.trim(), size, fg_color, bg_color, margin, dot_style, corner_style, caption.trim(), caption_pos, caption_color, caption_size); + res.json(db.prepare('SELECT * FROM qr_codes WHERE id=?').get(r.lastInsertRowid)); +}); + +router.put('/:id', authenticate, (req, res) => { + const qr = db.prepare('SELECT * FROM qr_codes WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!qr) return res.status(404).json({ error: 'Nicht gefunden' }); + const fields = ['label','url','size','fg_color','bg_color','margin','dot_style','corner_style','caption','caption_pos','caption_color','caption_size']; + const updates = {}; + fields.forEach(f => { if (req.body[f] !== undefined) updates[f] = req.body[f]; }); + if (!Object.keys(updates).length) return res.json(qr); + const sets = Object.keys(updates).map(f=>`${f}=?`).join(','); + db.prepare(`UPDATE qr_codes SET ${sets} WHERE id=?`).run(...Object.values(updates), qr.id); + res.json(db.prepare('SELECT * FROM qr_codes WHERE id=?').get(qr.id)); +}); + +router.delete('/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM qr_codes WHERE id=? AND user_id=?').run(req.params.id, req.user.id); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ ok: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/schocken/routes.js b/backend/src/tools/schocken/routes.js new file mode 100644 index 0000000..a758566 --- /dev/null +++ b/backend/src/tools/schocken/routes.js @@ -0,0 +1,609 @@ +const express = require('express'); +const db = require('../../db'); +const { logPush } = require('../../pushLog'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +// ── DB-Migration ────────────────────────────────────────────────────────────── +(function migrate() { + db.exec(` + CREATE TABLE IF NOT EXISTS schocken_games ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + players TEXT NOT NULL, -- JSON: [{id, username, order}] + status TEXT NOT NULL DEFAULT 'lobby', + -- status: lobby | half1 | half2 | endkampf | finished + phase_status TEXT NOT NULL DEFAULT 'playing', + -- phase_status: playing | finished + stock INTEGER NOT NULL DEFAULT 15, -- Scheiben auf dem Stock + player_chips TEXT NOT NULL DEFAULT '{}', -- JSON: {userId: chipCount} + has_16th INTEGER, -- userId der die 16. Scheibe hat + loser_h1 INTEGER, -- userId Verlierer Hälfte 1 + loser_h2 INTEGER, -- userId Verlierer Hälfte 2 + current_round TEXT, -- JSON: aktueller Rundenstand + round_number INTEGER NOT NULL DEFAULT 1, + beginner_id INTEGER, -- wer fängt die Runde an + current_player_idx INTEGER NOT NULL DEFAULT 0, + max_rolls INTEGER, -- vom Beginner bestimmt + first_round INTEGER NOT NULL DEFAULT 1, -- 1 = erste Runde der Hälfte + drink_losses TEXT NOT NULL DEFAULT '{}', -- {userId: count} + created_at TEXT NOT NULL DEFAULT (datetime('now','localtime')), + updated_at TEXT NOT NULL DEFAULT (datetime('now','localtime')) + ); + `); +})(); + +// ── Würfellogik ─────────────────────────────────────────────────────────────── +function rollDice(count = 3) { + return Array.from({ length: count }, () => Math.floor(Math.random() * 6) + 1); +} + +// Würfel klassifizieren +function classifyDice(dice) { + const sorted = [...dice].sort((a,b) => a-b); + const [a,b,c] = sorted; + + // Schock aus: 1-1-1 + if (a===1 && b===1 && c===1) return { type:'schock_aus', scheiben: 0, label:'Schock aus! 💀' }; + + // Julchen: 4-2-1 (unsortiert erkannt) + if (dice.includes(1) && dice.includes(2) && dice.includes(4)) return { type:'julchen', scheiben:7, label:'Julchen! 🎉' }; + + // General: 3x gleich (außer 3x1) + if (a===b && b===c) return { type:'general', scheiben:3, label:`General ${a}er! 🎲`, value: a }; + + // Schock: 2x Eins + andere + if (a===1 && b===1) { + const schockVal = c; + const label = schockVal === 2 ? 'Schock doof 😅' : `Schock ${schockVal}!`; + return { type:'schock', scheiben: schockVal, label, value: schockVal }; + } + + // Straße: aufeinanderfolgende Zahlen (nur wenn alle 3 auf einmal gewürfelt) + if (c-a===2 && b-a===1) return { type:'strasse', scheiben:2, label:`Straße ${a}-${b}-${c}!`, value: a }; + + // Normale Zahl + // Normale Zahlen: absteigend sortiert als dreistellige Zahl (z.B. 6-2-1 = 621, 5-5-4 = 554) + const desc = [...sorted].reverse(); // absteigend + const normalValue = desc[0]*100 + desc[1]*10 + desc[2]; + return { type:'normal', scheiben:1, label:`${desc[0]}-${desc[1]}-${desc[2]}`, value: normalValue }; +} + +// Wertungsvergleich: wer hat schlechtere Würfel (bekommt Scheiben) +// Gibt -1 wenn a schlechter, 1 wenn b schlechter, 0 bei echtem Gleichstand +const TYPE_ORDER = ['normal','strasse','general','schock','julchen','schock_aus']; +function compareResults(a, b) { + const ai = TYPE_ORDER.indexOf(a.result.type); + const bi = TYPE_ORDER.indexOf(b.result.type); + if (ai !== bi) return ai < bi ? -1 : 1; // niedrigerer Typ = schlechter + + // Gleicher Typ — Detailvergleich + if (a.result.type === 'normal') { + // Niedrigere Augensumme = schlechter + if (a.result.value !== b.result.value) return a.result.value < b.result.value ? -1 : 1; + return 0; + } + if (a.result.type === 'strasse') { + if (a.result.value !== b.result.value) return a.result.value < b.result.value ? -1 : 1; + return 0; + } + if (a.result.type === 'schock') { + if (a.result.value !== b.result.value) return a.result.value < b.result.value ? -1 : 1; + return 0; + } + if (a.result.type === 'general') { + if (a.result.value !== b.result.value) return a.result.value < b.result.value ? -1 : 1; + return 0; + } + return 0; +} + +function sendPush(userId, title, message) { + const cfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(userId); + if (!cfg?.app_token || !cfg?.user_key) return; + fetch('https://api.pushover.net/1/messages.json', { + method:'POST', headers:{'Content-Type':'application/json'}, + body: JSON.stringify({ token:cfg.app_token, user:cfg.user_key, title, message, priority:0 }), + }).catch(() => {}); + logPush({ userId, title, message, priority: 0, source: 'schocken' }); +} + +const uid = req => { + // Testmodus: Admin kann als anderen User agieren + const testAs = req.headers['x-schocken-test-as']; + if (testAs && req.user?.role === 'admin') { + const testId = parseInt(testAs); + if (!isNaN(testId)) return testId; + } + return req.user.id; +}; + +// ── Alle Spiele des Users ───────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const me = uid(req); + const games = db.prepare(` + SELECT * FROM schocken_games + WHERE players LIKE ? ORDER BY updated_at DESC LIMIT 20 + `).all(`%"id":${me}%`); + res.json(games.map(g => ({ + ...g, + players: JSON.parse(g.players), + player_chips: JSON.parse(g.player_chips), + drink_losses: JSON.parse(g.drink_losses), + current_round: g.current_round ? JSON.parse(g.current_round) : null, + }))); +}); + +// ── Users für Einladen ──────────────────────────────────────────────────────── +router.get('/users', authenticate, (req, res) => { + const me = uid(req); + const isAdmin = req.user?.role === 'admin'; + const users = isAdmin + ? db.prepare('SELECT id, username FROM users WHERE id != ? ORDER BY username').all(me) + : db.prepare('SELECT id, username FROM users WHERE id != ? AND hidden != 1 ORDER BY username').all(me); + res.json(users); +}); + +// ── Einzelnes Spiel ─────────────────────────────────────────────────────────── +router.get('/:id', authenticate, (req, res) => { + const me = uid(req); + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + const players = JSON.parse(game.players); + if (!players.find(p => p.id === me)) return res.status(403).json({ error: 'Kein Zugriff' }); + res.json({ + ...game, + players, + player_chips: JSON.parse(game.player_chips), + drink_losses: JSON.parse(game.drink_losses), + current_round: game.current_round ? JSON.parse(game.current_round) : null, + }); +}); + +// ── Neues Spiel erstellen ───────────────────────────────────────────────────── +router.post('/', authenticate, (req, res) => { + const me = uid(req); + const { player_ids = [] } = req.body; + if (player_ids.length < 1) return res.status(400).json({ error: 'Mindestens 1 weiterer Spieler' }); + + const allIds = [me, ...player_ids.filter(id => id !== me)]; + const userRows = db.prepare(`SELECT id, username FROM users WHERE id IN (${allIds.map(()=>'?').join(',')}) ORDER BY username`).all(...allIds); + + // Reihenfolge: Ersteller zuerst, dann die anderen + const ordered = [ + userRows.find(u => u.id === me), + ...allIds.slice(1).map(id => userRows.find(u => u.id === id)).filter(Boolean), + ]; + const players = ordered.map((u, i) => ({ id: u.id, username: u.username, order: i })); + const playerChips = Object.fromEntries(players.map(p => [p.id, 0])); + const drinkLosses = Object.fromEntries(players.map(p => [p.id, 0])); + + const result = db.prepare(` + INSERT INTO schocken_games (players, stock, player_chips, drink_losses, beginner_id, status) + VALUES (?, 15, ?, ?, ?, 'lobby') + `).run(JSON.stringify(players), JSON.stringify(playerChips), JSON.stringify(drinkLosses), me); + + // Pushover an andere Spieler + const myName = ordered[0].username; + for (const p of players.slice(1)) { + sendPush(p.id, '🎲 Schocken', `${myName} lädt dich zu einer Runde Schocken ein!`); + } + + res.json({ id: result.lastInsertRowid }); +}); + +// ── Spiel starten (Lobby → Hälfte 1) ───────────────────────────────────────── +router.post('/:id/start', authenticate, (req, res) => { + const me = uid(req); + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + const players = JSON.parse(game.players); + if (players[0].id !== me) return res.status(403).json({ error: 'Nur der Ersteller kann starten' }); + if (game.status !== 'lobby') return res.status(400).json({ error: 'Spiel läuft schon' }); + + db.prepare(`UPDATE schocken_games SET status='half1', first_round=1, beginner_id=?, + current_player_idx=0, updated_at=datetime('now','localtime') WHERE id=?`).run(me, game.id); + + for (const p of players.slice(1)) { + sendPush(p.id, '🎲 Schocken', 'Das Spiel beginnt! Du bist dran.'); + } + + res.json(getGame(game.id, me)); +}); + +// ── Würfeln ─────────────────────────────────────────────────────────────────── +router.post('/:id/roll', authenticate, (req, res) => { + const me = uid(req); + const { keep_dice = [], flip_sixes = false, go_dark = false } = req.body; + // keep_dice: array of indices (0-2) der Würfel die stehen bleiben + // flip_sixes: zwei Sechsen zu Eins umdrehen + // go_dark: dunkel legen nach diesem Wurf + + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + + const players = JSON.parse(game.players); + const activePlayers = getActivePlayers(game); + const currentPlayer = activePlayers[game.current_player_idx % activePlayers.length]; + + if (!currentPlayer || currentPlayer.id !== me) + return res.status(400).json({ error: 'Nicht dein Zug' }); + + let round = game.current_round ? JSON.parse(game.current_round) : initRound(game, activePlayers); + const myState = round.playerStates[me]; + + if (myState.done) return res.status(400).json({ error: 'Du hast schon gewürfelt' }); + if (myState.dark) return res.status(400).json({ error: 'Du bist dunkel' }); + + // Flip sixes: nur wenn noch Würfe übrig und nicht letzter Wurf + if (flip_sixes) { + const sixes = myState.dice.reduce((acc, v, i) => v === 6 ? [...acc, i] : acc, []); + if (sixes.length >= 2) { + myState.dice[sixes[0]] = 1; + myState.dice[sixes[1]] = 1; + // Kostet keinen Wurf, braucht aber noch einen + } + } + + // Würfeln + const rollCount = myState.roll_count; + const isFirstRound = !!game.first_round; + + // Neue Würfel für nicht-stehen-gelassene + if (!isFirstRound || rollCount === 0) { + const newDice = rollDice(3 - keep_dice.length); + let newIdx = 0; + for (let i = 0; i < 3; i++) { + if (!keep_dice.includes(i)) myState.dice[i] = newDice[newIdx++]; + } + } + + myState.roll_count++; + + // Straße nur gültig wenn im ersten Wurf (keine stehen gelassenen Würfel) + const classified = classifyDice(myState.dice); + if (classified.type === 'strasse' && (keep_dice.length > 0 || myState.roll_count > 1)) { + // Straße ungültig — als normal werten + classified.type = 'normal'; + classified.scheiben = 1; + classified.label = 'Normal (Straße ungültig)'; + } + + // Max rolls durch Beginner bestimmt + const maxRolls = round.max_rolls || 3; + const isDark = go_dark || myState.roll_count >= maxRolls || isFirstRound; + const isDone = isDark || myState.roll_count >= maxRolls || isFirstRound; + + myState.dark = go_dark || (myState.roll_count >= maxRolls && !isDone) || isFirstRound; + myState.done = isDone; + myState.result = isDone && !go_dark ? classified : null; // bei dunkel: result erst am Ende + + // Wenn Beginner (erster Spieler): max_rolls setzen + if (currentPlayer.id === round.beginner_id && round.max_rolls === null) { + round.max_rolls = myState.roll_count; + } + + // Nächsten Spieler + const nextIdx = (game.current_player_idx + 1) % activePlayers.length; + const allDone = activePlayers.every(p => round.playerStates[p.id]?.done); + + round.playerStates[me] = myState; + + if (allDone) { + // Alle dunkel aufdecken + for (const p of activePlayers) { + const ps = round.playerStates[p.id]; + if (!ps.result) { + ps.result = classifyDice(ps.dice); + // Straße bei dunkel-legen auch ungültig wenn keep_dice vorhanden (nicht trackbar nachträglich) + } + } + round.phase = 'reveal'; + } + + db.prepare(`UPDATE schocken_games SET current_round=?, current_player_idx=?, + updated_at=datetime('now','localtime') WHERE id=?`) + .run(JSON.stringify(round), allDone ? game.current_player_idx : nextIdx, game.id); + + // Pushover an nächsten Spieler + if (!allDone) { + const next = activePlayers[nextIdx]; + if (next && next.id !== me) { + sendPush(next.id, '🎲 Schocken', `${currentPlayer.username} hat gewürfelt — du bist dran!`); + } + } + + res.json(getGame(game.id, me)); +}); + +// ── Runde auswerten ─────────────────────────────────────────────────────────── +router.post('/:id/evaluate', authenticate, (req, res) => { + const me = uid(req); + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + + const players = JSON.parse(game.players); + const activePlayers = getActivePlayers(game); + if (players[0].id !== me && activePlayers[0]?.id !== me) + return res.status(403).json({ error: 'Kein Zugriff' }); + + const round = JSON.parse(game.current_round); + if (round.phase !== 'reveal') return res.status(400).json({ error: 'Noch nicht alle fertig' }); + + const playerChips = JSON.parse(game.player_chips); + let stock = game.stock; + + // Schock aus prüfen + const schockAus = activePlayers.find(p => round.playerStates[p.id]?.result?.type === 'schock_aus'); + if (schockAus) { + return handleSchockAus(game, round, activePlayers, res, me); + } + + // Bestes Ergebnis finden (höchster Typ) + const results = activePlayers.map(p => ({ + player: p, + state: round.playerStates[p.id], + result: round.playerStates[p.id]?.result, + rolls: round.playerStates[p.id]?.roll_count || 1, + })).filter(r => r.result); + + // Schlechtestes Ergebnis = bekommt Scheiben + results.sort((a, b) => { + const cmp = compareResults(a, b); + if (cmp !== 0) return cmp; // -1 wenn a schlechter + // Gleicher Typ: mehr Würfe = schlechter (vorne in der Liste = Index 0 = Verlierer) + if (a.rolls !== b.rolls) return a.rolls - b.rolls; // mehr Würfe = schlechter (vorne) + // Nachleger: später in Reihenfolge = schlechter (vorne) + return activePlayers.indexOf(a.player) - activePlayers.indexOf(b.player); + }); + + const loser = results[0]; // schlechtestes Ergebnis (Index 0 nach sort) + const winner = results[results.length - 1]; // bestes Ergebnis + // Scheiben die verteilt werden = Wert des BESTEN Ergebnisses der Runde + const scheiben = winner.result.scheiben; + + // Scheiben verteilen + let fromStock = 0; + let newStock = stock; + if (stock >= scheiben) { + fromStock = scheiben; + newStock = stock - scheiben; + } else { + fromStock = stock; + newStock = 0; + } + + const fromOthers = scheiben - fromStock; + playerChips[loser.player.id] = (playerChips[loser.player.id] || 0) + scheiben; + + // Wenn vom Stock nicht genug: Rest von aktivsten Spielern nehmen (noch nicht implementiert vereinfacht) + if (fromOthers > 0) { + // Scheiben von anderen Spielern umverteilen (von denen mit meisten Scheiben) + const donors = activePlayers + .filter(p => p.id !== loser.player.id && playerChips[p.id] > 0) + .sort((a,b) => playerChips[b.id] - playerChips[a.id]); + let remaining = fromOthers; + for (const donor of donors) { + if (remaining <= 0) break; + const take = Math.min(playerChips[donor.id], remaining); + playerChips[donor.id] -= take; + remaining -= take; + } + } + + // Hälfte/Endkampf vorbei? Prüfen ob Stock leer und nur einer Scheiben hat + const playersWithChips = activePlayers.filter(p => playerChips[p.id] > 0); + const phaseOver = newStock === 0 && playersWithChips.length <= 1; + + let newStatus = game.status; + let newPhaseStatus = 'playing'; + let loserH1 = game.loser_h1; + let loserH2 = game.loser_h2; + let has16th = game.has_16th; + let eventMsg = null; + + if (phaseOver) { + const phaseLoser = playersWithChips[0] || loser.player; + + if (game.status === 'half1') { + // Verlierer H1 bestimmt + loserH1 = phaseLoser.id; + has16th = phaseLoser.id; + newStatus = 'half2'; + // Chips reset, Stock reset + Object.keys(playerChips).forEach(k => { playerChips[k] = 0; }); + newStock = 15; + eventMsg = `${phaseLoser.username} hat die erste Hälfte verloren. Die erste Hälfte kostet nur Nerven! 😅`; + // Pushover + for (const p of players) { + sendPush(p.id, '🎲 Schocken', eventMsg); + } + } else if (game.status === 'half2') { + loserH2 = phaseLoser.id; + if (loserH1 === loserH2) { + // Doppelfeige! + newStatus = 'finished'; + newPhaseStatus = 'finished'; + const dl = JSON.parse(game.drink_losses); + dl[phaseLoser.id] = (dl[phaseLoser.id] || 0) + 1; + eventMsg = `${phaseLoser.username} ist DOPPELFEIGE! 🪶 Die Runde ist vorbei.`; + db.prepare(`UPDATE schocken_games SET status=?, phase_status=?, loser_h2=?, has_16th=?, + player_chips=?, stock=?, drink_losses=?, current_round=NULL, + updated_at=datetime('now','localtime') WHERE id=?`) + .run(newStatus, newPhaseStatus, loserH2, has16th, JSON.stringify(playerChips), + newStock, dl, game.id); + for (const p of players) sendPush(p.id, '🎲 Schocken', eventMsg); + return res.json(getGame(game.id, me)); + } + // Endkampf + newStatus = 'endkampf'; + Object.keys(playerChips).forEach(k => { playerChips[k] = 0; }); + newStock = 15; + eventMsg = `${phaseLoser.username} verliert die zweite Hälfte! Endkampf: ${players.find(p=>p.id===loserH1)?.username} vs ${phaseLoser.username}`; + for (const p of players) sendPush(p.id, '🎲 Schocken', eventMsg); + } else if (game.status === 'endkampf') { + newStatus = 'finished'; + newPhaseStatus = 'finished'; + const dl = JSON.parse(game.drink_losses); + dl[phaseLoser.id] = (dl[phaseLoser.id] || 0) + 1; + eventMsg = `${phaseLoser.username} hat den Endkampf verloren und muss die nächste Runde zahlen! 🍺`; + db.prepare(`UPDATE schocken_games SET status=?, phase_status=?, loser_h2=?, + player_chips=?, stock=?, drink_losses=?, current_round=NULL, + updated_at=datetime('now','localtime') WHERE id=?`) + .run(newStatus, newPhaseStatus, loserH2, JSON.stringify(playerChips), newStock, JSON.stringify(dl), game.id); + for (const p of players) sendPush(p.id, '🎲 Schocken', eventMsg); + return res.json(getGame(game.id, me)); + } + } + + // Nächste Runde vorbereiten + const nextBeginner = loser.player; + db.prepare(`UPDATE schocken_games SET player_chips=?, stock=?, status=?, loser_h1=?, loser_h2=?, + has_16th=?, beginner_id=?, current_round=NULL, current_player_idx=0, first_round=0, + updated_at=datetime('now','localtime') WHERE id=?`) + .run(JSON.stringify(playerChips), newStock, newStatus, loserH1, loserH2, + has16th, nextBeginner.id, game.id); + + // Pushover an Verlierer der Runde (er fängt an) + sendPush(loser.player.id, '🎲 Schocken', `Du hast die Runde verloren und fängst die nächste an! (${scheiben} Scheibe${scheiben!==1?'n':''})`); + + res.json({ ...getGame(game.id, me), round_result: { loser: loser.player, scheiben, eventMsg } }); +}); + +// ── Becher umdrehen (Runde bereit signalisieren) ────────────────────────────── +router.post('/:id/ready', authenticate, (req, res) => { + const me = uid(req); + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + + const players = JSON.parse(game.players); + const playerChips = JSON.parse(game.player_chips); + const activePlayers = getActivePlayers(game); + + // Spieler der eigentlich raus wäre aber trotzdem ready drückt → wird wieder aktiv (Falle!) + const isActuallyActive = activePlayers.find(p => p.id === me); + const isOut = !isActuallyActive && playerChips[me] === 0 && game.stock === 0; + + let round = game.current_round ? JSON.parse(game.current_round) : null; + if (!round) { + round = initRound(game, isOut ? [...activePlayers, players.find(p=>p.id===me)] : activePlayers); + } + + round.ready = round.ready || {}; + round.ready[me] = true; + + // Wenn isOut und drückt trotzdem: wird als "gefangen" markiert + if (isOut) { + round.trapped = round.trapped || []; + if (!round.trapped.includes(me)) round.trapped.push(me); + } + + db.prepare(`UPDATE schocken_games SET current_round=?, updated_at=datetime('now','localtime') WHERE id=?`) + .run(JSON.stringify(round), game.id); + + res.json(getGame(game.id, me)); +}); + +// ── Hilfsfunktionen ─────────────────────────────────────────────────────────── +function getActivePlayers(game) { + const players = JSON.parse(game.players); + const playerChips = JSON.parse(game.player_chips); + const stock = game.stock; + + if (game.status === 'endkampf') { + return players.filter(p => p.id === game.loser_h1 || p.id === game.loser_h2); + } + + // Wenn Stock noch voll oder erste Runde: alle mitspielen + if (stock > 0) return players; + + // Stock leer: nur Spieler mit Scheiben + return players.filter(p => playerChips[p.id] > 0); +} + +function initRound(game, activePlayers) { + const playerStates = {}; + for (const p of activePlayers) { + playerStates[p.id] = { + dice: [null, null, null], + roll_count: 0, + done: false, + dark: false, + result: null, + }; + } + return { + phase: 'rolling', + beginner_id: game.beginner_id, + max_rolls: game.first_round ? 1 : null, + ready: {}, + trapped: [], + playerStates, + }; +} + +function handleSchockAus(game, round, activePlayers, res, me) { + const players = JSON.parse(game.players); + const playerChips = JSON.parse(game.player_chips); + + // Alle Scheiben (Stock + Spieler) → schlechtester Spieler + const allChips = Object.values(playerChips).reduce((s,v) => s+v, 0) + game.stock; + + // Wer hat die wenigsten Punkte (außer dem der Schock aus hat)? + const schockAusPlayer = activePlayers.find(p => round.playerStates[p.id]?.result?.type === 'schock_aus'); + const others = activePlayers.filter(p => p.id !== schockAusPlayer?.id); + + // Vereinfacht: Schock aus Spieler hat gewonnen, alle Scheiben gehen an den schlechtesten der anderen + // (Schock aus steht über allem) + const newChips = Object.fromEntries(Object.keys(playerChips).map(k => [k, 0])); + + // Verlierer = wer die wenigsten Punkte hat unter den anderen + // Bei nur einem anderen: der verliert + const phaseLoser = others.length > 0 ? others[others.length - 1] : schockAusPlayer; + newChips[phaseLoser.id] = allChips; + + let newStatus = game.status; + let loserH1 = game.loser_h1; + let has16th = game.has_16th; + + if (game.status === 'half1') { + loserH1 = phaseLoser.id; + has16th = phaseLoser.id; + newStatus = 'half2'; + Object.keys(newChips).forEach(k => { newChips[k] = 0; }); + const eventMsg = `SCHOCK AUS! ${phaseLoser.username} verliert die erste Hälfte! Die erste Hälfte kostet nur Nerven! 😅`; + for (const p of players) sendPush(p.id, '🎲 Schocken', eventMsg); + db.prepare(`UPDATE schocken_games SET player_chips=?, stock=15, status=?, loser_h1=?, has_16th=?, + beginner_id=?, current_round=NULL, current_player_idx=0, first_round=1, + updated_at=datetime('now','localtime') WHERE id=?`) + .run(JSON.stringify(newChips), newStatus, loserH1, has16th, phaseLoser.id, game.id); + } + + res.json({ ...getGame(game.id, me), schock_aus: true, phase_loser: phaseLoser }); +} + +function getGame(id, requesterId) { + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(id); + if (!game) return null; + return { + ...game, + players: JSON.parse(game.players), + player_chips: JSON.parse(game.player_chips), + drink_losses: JSON.parse(game.drink_losses), + current_round: game.current_round ? JSON.parse(game.current_round) : null, + }; +} + +// ── Spiel abbrechen (Admin only) — wird komplett gelöscht ─────────────────── +router.post('/:id/cancel', authenticate, (req, res) => { + if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Nur Admin' }); + const game = db.prepare('SELECT * FROM schocken_games WHERE id=?').get(req.params.id); + if (!game) return res.status(404).json({ error: 'Nicht gefunden' }); + const players = JSON.parse(game.players); + db.prepare('DELETE FROM schocken_games WHERE id=?').run(game.id); + for (const p of players) { + sendPush(p.id, '🎲 Schocken', 'Das Spiel wurde vom Admin abgebrochen.'); + } + res.json({ ok: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/snippets/routes.js b/backend/src/tools/snippets/routes.js new file mode 100644 index 0000000..8897a4c --- /dev/null +++ b/backend/src/tools/snippets/routes.js @@ -0,0 +1,142 @@ +const express = require('express'); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); +const router = express.Router(); + +const uid = req => req.user.id; + +const getTags = id => db.prepare('SELECT tag FROM snippet_tags WHERE snippet_id=?').all(id).map(r=>r.tag); + +const enrich = (s) => ({ ...s, tags: getTags(s.id) }); + +// ── Alle Snippets (eigene + geteilt) ──────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const me = uid(req); + const own = db.prepare(` + SELECT s.*, u.username as owner + FROM snippets s JOIN users u ON u.id=s.user_id + WHERE s.user_id=? ORDER BY s.updated_at DESC, s.created_at DESC + `).all(me).map(enrich); + + const shared = db.prepare(` + SELECT s.*, u.username as owner, 1 as is_shared + FROM snippets s + JOIN snippet_shares sh ON sh.snippet_id=s.id + JOIN users u ON u.id=s.user_id + WHERE sh.shared_with=? + ORDER BY s.updated_at DESC + `).all(me).map(enrich); + + const sharedByMe = db.prepare(` + SELECT s.*, u.username as shared_with_name + FROM snippets s + JOIN snippet_shares sh ON sh.snippet_id=s.id + JOIN users u ON u.id=sh.shared_with + WHERE s.user_id=? + ORDER BY s.title ASC + `).all(me).map(enrich); + + res.json({ own, shared, sharedByMe }); +}); + +// ── Einzelnes Snippet ──────────────────────────────────────────────────────── +router.get('/:id', authenticate, (req, res) => { + const s = db.prepare('SELECT s.*, u.username as owner FROM snippets s JOIN users u ON u.id=s.user_id WHERE s.id=?').get(req.params.id); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + const isOwner = s.user_id === uid(req); + const isShared = db.prepare('SELECT id FROM snippet_shares WHERE snippet_id=? AND shared_with=?').get(s.id, uid(req)); + if (!isOwner && !isShared) return res.status(403).json({ error: 'Kein Zugriff' }); + res.json(enrich(s)); +}); + +// ── History ────────────────────────────────────────────────────────────────── +router.get('/:id/history', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM snippets WHERE id=?').get(req.params.id); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + const isOwner = s.user_id === uid(req); + const isShared = db.prepare('SELECT id FROM snippet_shares WHERE snippet_id=? AND shared_with=?').get(s.id, uid(req)); + if (!isOwner && !isShared) return res.status(403).json({ error: 'Kein Zugriff' }); + res.json(db.prepare('SELECT * FROM snippet_history WHERE snippet_id=? ORDER BY saved_at DESC').all(s.id)); +}); + +// ── Erstellen ──────────────────────────────────────────────────────────────── +router.post('/', authenticate, (req, res) => { + const { title, code='', language='text', description='', tags=[] } = req.body; + if (!title?.trim()) return res.status(400).json({ error: 'Titel erforderlich' }); + const r = db.prepare(` + INSERT INTO snippets (user_id, title, code, language, description, created_at, updated_at) + VALUES (?,?,?,?,?,datetime('now','localtime'),datetime('now','localtime')) + `).run(uid(req), title.trim(), code, language, description); + const id = r.lastInsertRowid; + const insertTag = db.prepare('INSERT OR IGNORE INTO snippet_tags (snippet_id, tag) VALUES (?,?)'); + db.transaction(()=>{ tags.forEach(t => insertTag.run(id, t)); })(); + res.json(enrich(db.prepare('SELECT s.*, u.username as owner FROM snippets s JOIN users u ON u.id=s.user_id WHERE s.id=?').get(id))); +}); + +// ── Aktualisieren ──────────────────────────────────────────────────────────── +router.put('/:id', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM snippets WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + const { title, code, language, description, tags } = req.body; + + // History-Eintrag wenn Code geändert + if (code !== undefined && code !== s.code) { + db.prepare(`INSERT INTO snippet_history (snippet_id, code, language, saved_at) VALUES (?,?,?,datetime('now','localtime'))`) + .run(s.id, s.code, s.language); + } + + db.prepare(`UPDATE snippets SET title=?,code=?,language=?,description=?,updated_at=datetime('now','localtime') WHERE id=?`) + .run(title??s.title, code??s.code, language??s.language, description??s.description, s.id); + + if (Array.isArray(tags)) { + db.prepare('DELETE FROM snippet_tags WHERE snippet_id=?').run(s.id); + const ins = db.prepare('INSERT OR IGNORE INTO snippet_tags (snippet_id, tag) VALUES (?,?)'); + db.transaction(()=>{ tags.forEach(t => ins.run(s.id, t)); })(); + } + + res.json(enrich(db.prepare('SELECT s.*, u.username as owner FROM snippets s JOIN users u ON u.id=s.user_id WHERE s.id=?').get(s.id))); +}); + +// ── Löschen ────────────────────────────────────────────────────────────────── +router.delete('/:id/history/:hid', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM snippets WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!s) return res.status(403).json({ error: 'Kein Zugriff' }); + db.prepare('DELETE FROM snippet_history WHERE id=? AND snippet_id=?').run(req.params.hid, s.id); + res.json({ ok: true }); +}); + +router.delete('/:id', authenticate, (req, res) => { + const r = db.prepare('DELETE FROM snippets WHERE id=? AND user_id=?').run(req.params.id, uid(req)); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ ok: true }); +}); + +// ── Shares ─────────────────────────────────────────────────────────────────── +router.get('/:id/shares', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM snippets WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json(db.prepare(` + SELECT u.id, u.username, sh.created_at as shared_at + FROM snippet_shares sh JOIN users u ON u.id=sh.shared_with WHERE sh.snippet_id=? + `).all(s.id)); +}); + +router.post('/:id/share', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM snippets WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + const target = db.prepare('SELECT * FROM users WHERE username=?').get(req.body.username); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden' }); + if (target.id === uid(req)) return res.status(400).json({ error: 'Kann nicht mit dir selbst teilen' }); + db.prepare(`INSERT OR IGNORE INTO snippet_shares (snippet_id,shared_by,shared_with,created_at) VALUES (?,?,?,datetime('now','localtime'))`) + .run(s.id, uid(req), target.id); + res.json({ ok: true }); +}); + +router.delete('/:id/share/:userId', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM snippets WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!s) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM snippet_shares WHERE snippet_id=? AND shared_with=?').run(s.id, req.params.userId); + res.json({ ok: true }); +}); + +module.exports = router; diff --git a/backend/src/tools/statistik/routes.js b/backend/src/tools/statistik/routes.js new file mode 100644 index 0000000..d5203f7 --- /dev/null +++ b/backend/src/tools/statistik/routes.js @@ -0,0 +1,266 @@ +const express = require('express'); +const router = express.Router(); +const db = require('../../db'); +const { authenticate } = require('../../middleware/auth'); + +const uid = req => req.user.id; + +// ── Ausgaben CRUD ────────────────────────────────────────────────────────── +router.get('/expenses', authenticate, (req, res) => { + const { from, to } = req.query; + let q = 'SELECT * FROM expenses WHERE user_id=?'; + const p = [uid(req)]; + if (from) { q += ' AND date>=?'; p.push(from); } + if (to) { q += ' AND date<=?'; p.push(to); } + res.json(db.prepare(q + ' ORDER BY date DESC, id DESC').all(...p)); +}); + +router.post('/expenses', authenticate, (req, res) => { + const { date, category, description, amount } = req.body; + if (!date || !description || !amount) return res.status(400).json({ error: 'Fehlende Felder' }); + const r = db.prepare('INSERT INTO expenses (user_id,date,category,description,amount) VALUES (?,?,?,?,?)') + .run(uid(req), date, category||'Sonstiges', description, parseFloat(amount)); + res.json(db.prepare('SELECT * FROM expenses WHERE id=?').get(r.lastInsertRowid)); +}); + +router.delete('/expenses/:id', authenticate, (req, res) => { + const e = db.prepare('SELECT id FROM expenses WHERE id=? AND user_id=?').get(req.params.id, uid(req)); + if (!e) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('DELETE FROM expenses WHERE id=?').run(e.id); + res.json({ ok: true }); +}); + +// ── Revenue eines Auftrags ──────────────────────────────────────────────── +function getOrderRevenue(order) { + if (order.custom_price != null && order.custom_price > 0) return parseFloat(order.custom_price); + const r = db.prepare( + 'SELECT COALESCE(SUM(custom_price * stueckzahl), 0) as s FROM order_items WHERE order_id=? AND custom_price IS NOT NULL' + ).get(order.id); + return r?.s || 0; +} + +function getOrderBaseCost(orderId) { + const r = db.prepare(` + SELECT COALESCE(SUM(COALESCE(c.preis_freundschaft, oi.preis_freundschaft, 0) * oi.stueckzahl), 0) as s + FROM order_items oi + LEFT JOIN calculations c ON c.id = oi.calculation_id + WHERE oi.order_id = ? + `).get(orderId); + return r?.s || 0; +} + +function round2(n) { return Math.round((n||0) * 100) / 100; } + +// ── Statistik-Übersicht ──────────────────────────────────────────────────── +router.get('/overview', authenticate, (req, res) => { + const { from, to } = req.query; + const u = uid(req); + + // Datums-Vergleich: ISO-String slice(0,10) = YYYY-MM-DD + const inRange = (dateStr) => { + if (!dateStr) return !from && !to; // kein Datum + kein Filter = ja; kein Datum + Filter = nein + const d = dateStr.slice(0, 10); + if (from && d < from) return false; + if (to && d > to) return false; + return true; + }; + + // Alle Aufträge + const allOrders = db.prepare('SELECT * FROM orders WHERE user_id=? ORDER BY created_at DESC').all(u); + + // Zeitraum-Filterung: + // - Bezahlte Aufträge: Datum = bezahlt_am (wann wurde Geld erhalten) + // - Offene Aufträge (noch nicht bezahlt): Datum = created_at (wann erstellt) + const filteredOrders = allOrders.filter(o => { + if (!from && !to) return true; // kein Filter → alle + if (o.bezahlt) { + // Bezahlt → nach bezahlt_am wenn vorhanden, sonst created_at + // Wenn bezahlt_am NULL ist (alte Aufträge vor dem Feature): created_at nutzen + const d = o.bezahlt_am || o.created_at; + return inRange(d); + } else { + return inRange(o.created_at); + } + }); + + const paidOrders = filteredOrders.filter(o => !!o.bezahlt); + const openOrders = filteredOrders.filter(o => !o.bezahlt && o.status !== 'warteliste'); + + // KPI-Werte für den gewählten Zeitraum + const totalRevenue = paidOrders.reduce((s,o) => s + getOrderRevenue(o), 0); + const openRevenue = openOrders.reduce((s,o) => s + getOrderRevenue(o), 0); + const totalBaseCost = paidOrders.reduce((s,o) => s + getOrderBaseCost(o.id), 0); + const totalProfit = totalRevenue - totalBaseCost; + + // Ausgaben im Zeitraum + let eq = 'SELECT * FROM expenses WHERE user_id=?'; + const ep = [u]; + if (from) { eq += ' AND date>=?'; ep.push(from); } + if (to) { eq += ' AND date<=?'; ep.push(to); } + const expenses = db.prepare(eq + ' ORDER BY date DESC').all(...ep); + const totalExpenses = expenses.reduce((s,e) => s + e.amount, 0); + const netProfit = totalProfit - totalExpenses; + + // Status-Verteilung im Zeitraum + const byStatus = { warteliste:0, in_arbeit:0, fertig:0, bezahlt:0, abgeschlossen:0 }; + for (const o of filteredOrders) { + if (!!o.bezahlt && !!o.abgeholt) byStatus.abgeschlossen++; + else if (!!o.bezahlt) byStatus.bezahlt++; + else if (o.status in byStatus) byStatus[o.status]++; + } + + // Ausgaben nach Kategorie (Zeitraum) + const byCategory = {}; + for (const e of expenses) { + byCategory[e.category] = (byCategory[e.category] || 0) + e.amount; + } + + // ── Diagramm-Daten: immer nach dem relevanten Datum gruppiert ──────────── + // Für Diagramme: alle Aufträge (ungefiltert) in Monatsbuckets einordnen + // damit das Balkendiagramm den vollen Kontext zeigt (letzte 12 Monate) + // ABER: wenn ein konkreter Zeitraum gewählt ist, zeigen wir nur diesen Zeitraum + // aufgeteilt in Tages/Wochen/Monats-Buckets je nach Länge + + // Granularität bestimmen + let granularity = 'month'; // Standard + if (from && to) { + const days = (new Date(to) - new Date(from)) / 86400000; + if (days <= 14) granularity = 'day'; + else if (days <= 31) granularity = 'week'; + // > 31 Tage → month (Monatsauswahl, Jahresauswahl, Gesamt) + } + + function getBucketKey(dateStr) { + if (!dateStr) return null; + const d = dateStr.slice(0, 10); // YYYY-MM-DD, immer lokal + if (granularity === 'day') return d; + if (granularity === 'week') { + // Montag der Woche – rein mit String-Arithmetik (kein UTC-Bug) + const [y, m, dd] = d.split('-').map(Number); + const dt = new Date(y, m - 1, dd); // lokaler Konstruktor + const day = dt.getDay() || 7; // 1=Mo … 7=So + dt.setDate(dt.getDate() - day + 1); + const py = dt.getFullYear(); + const pm = String(dt.getMonth() + 1).padStart(2, '0'); + const pd = String(dt.getDate()).padStart(2, '0'); + return `${py}-${pm}-${pd}`; + } + return d.slice(0, 7); // YYYY-MM + } + + // Buckets aus gefilterten Aufträgen (damit der Zeitraum stimmt) + const buckets = {}; + + // Auch alle Aufträge für Diagramm wenn kein Filter (zeige letzte 12 Monate) + const diagramOrders = (from || to) ? filteredOrders : allOrders; + + for (const o of diagramOrders) { + const dateStr = o.bezahlt ? (o.bezahlt_am || o.created_at) : o.created_at; + const key = getBucketKey(dateStr); + if (!key) continue; + if (!buckets[key]) buckets[key] = { month:key, revenue:0, expenses:0, orders:0 }; + if (o.bezahlt) { + buckets[key].revenue += getOrderRevenue(o); + buckets[key].base_cost = (buckets[key].base_cost||0) + getOrderBaseCost(o.id); + } + buckets[key].orders++; + } + + // Ausgaben in Buckets (gefiltert) + const diagramExpenses = (from || to) ? expenses : db.prepare('SELECT * FROM expenses WHERE user_id=?').all(u); + for (const e of diagramExpenses) { + const key = getBucketKey(e.date); + if (!key) continue; + if (!buckets[key]) buckets[key] = { month:key, revenue:0, expenses:0, orders:0 }; + buckets[key].expenses += e.amount; + } + + // Leere Buckets auffüllen – lokaler Date-Konstruktor um UTC-Bug zu vermeiden + if (from || to) { + const parseLocal = s => { const [y,m,d] = s.split('-').map(Number); return new Date(y, m-1, d); }; + const fmtLocal = dt => { + const y = dt.getFullYear(), m = String(dt.getMonth()+1).padStart(2,'0'), d = String(dt.getDate()).padStart(2,'0'); + return `${y}-${m}-${d}`; + }; + const firstBucket = Object.keys(buckets).sort()[0]; + const startD = parseLocal(from || firstBucket || to); + const endD = parseLocal(to || fmtLocal(new Date())); + const cur = new Date(startD); + while (cur <= endD) { + const key = getBucketKey(fmtLocal(cur)); + if (key && !buckets[key]) buckets[key] = { month:key, revenue:0, base_cost:0, expenses:0, orders:0 }; + if (granularity === 'day') cur.setDate(cur.getDate() + 1); + else if (granularity === 'week') cur.setDate(cur.getDate() + 7); + else cur.setMonth(cur.getMonth() + 1); + } + } + + // Sortiert + ohne Filter auf letzte 12 Monate begrenzen + let monthlyData = Object.values(buckets) + .sort((a,b) => a.month.localeCompare(b.month)) + .map(m => ({ ...m, revenue: round2(m.revenue), base_cost: round2(m.base_cost||0), expenses: round2(m.expenses) })); + + if (!from && !to) monthlyData = monthlyData.slice(-12); + + // Kumulierter Nettogewinn (pro Bucket) + let cum = 0; + const cumulativeData = monthlyData.map(m => { + cum += (m.revenue||0) - (m.base_cost||0) - (m.expenses||0); + return { month: m.month, value: round2(cum) }; + }); + + // Aufträge-Tabelle mit korrekten Werten + const recentOrders = filteredOrders.slice(0, 50).map(o => ({ + id: o.id, name: o.name, status: o.status, + bezahlt: o.bezahlt, abgeholt: o.abgeholt, + created_at: o.created_at, bezahlt_am: o.bezahlt_am, + revenue: round2(getOrderRevenue(o)), + base_cost: round2(getOrderBaseCost(o.id)), + })); + + const paidOrdersOut = paidOrders.slice(0,50).map(o => ({ + id: o.id, name: o.name, status: o.status, + bezahlt: o.bezahlt, abgeholt: o.abgeholt, + created_at: o.created_at, bezahlt_am: o.bezahlt_am, + revenue: round2(getOrderRevenue(o)), + base_cost: round2(getOrderBaseCost(o.id)), + })); + + res.json({ + totalRevenue: round2(totalRevenue), + openRevenue: round2(openRevenue), + totalBaseCost: round2(totalBaseCost), + totalProfit: round2(totalProfit), + totalExpenses: round2(totalExpenses), + netProfit: round2(netProfit), + totalOrders: filteredOrders.length, + granularity, + byStatus, byCategory, monthlyData, cumulativeData, + expenses: expenses.slice(0, 100), + recentOrders, + paidOrders: paidOrdersOut, + }); +}); + +// Bestellungen nach created_at (für "Bestellungen diesen Monat" Tab) +router.get('/month-orders', authenticate, (req, res) => { + const { from, to } = req.query; + const u = uid(req); + let q = 'SELECT * FROM orders WHERE user_id=?'; + const p = [u]; + if (from) { q += ' AND DATE(created_at)>=?'; p.push(from); } + if (to) { q += ' AND DATE(created_at)<=?'; p.push(to); } + q += ' ORDER BY created_at DESC'; + const orders = db.prepare(q).all(...p); + res.json(orders.map(o => ({ + id: o.id, name: o.name, status: o.status, + bezahlt: o.bezahlt, abgeholt: o.abgeholt, + created_at: o.created_at, bezahlt_am: o.bezahlt_am, + revenue: round2(getOrderRevenue(o)), + base_cost: round2(getOrderBaseCost(o.id)), + }))); +}); + + + +module.exports = router; diff --git a/backend/src/tools/whiteboard/routes.js b/backend/src/tools/whiteboard/routes.js new file mode 100644 index 0000000..b4fff99 --- /dev/null +++ b/backend/src/tools/whiteboard/routes.js @@ -0,0 +1,257 @@ +const express = require('express'); +const db = require('../../db'); +const { logPush } = require('../../pushLog'); +const { authenticate, requireAdmin } = require('../../middleware/auth'); +const router = express.Router(); + +// ── DB-Migration ────────────────────────────────────────────────────────────── +(function migrate() { + db.exec(` + CREATE TABLE IF NOT EXISTS whiteboards ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + owner_id INTEGER NOT NULL, + title TEXT NOT NULL DEFAULT 'Neues Whiteboard', + created_at TEXT NOT NULL DEFAULT (datetime('now','localtime')), + updated_at TEXT NOT NULL DEFAULT (datetime('now','localtime')) + ); + CREATE TABLE IF NOT EXISTS whiteboard_data ( + whiteboard_id INTEGER PRIMARY KEY REFERENCES whiteboards(id) ON DELETE CASCADE, + elements TEXT NOT NULL DEFAULT '[]', + viewport TEXT NOT NULL DEFAULT '{"x":0,"y":0,"zoom":1}' + ); + CREATE TABLE IF NOT EXISTS whiteboard_permissions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + whiteboard_id INTEGER NOT NULL REFERENCES whiteboards(id) ON DELETE CASCADE, + user_id INTEGER NOT NULL, + role TEXT NOT NULL DEFAULT 'edit', + UNIQUE(whiteboard_id, user_id) + ); + CREATE TABLE IF NOT EXISTS whiteboard_unread ( + whiteboard_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + reason TEXT NOT NULL DEFAULT 'updated', + created_at TEXT NOT NULL DEFAULT (datetime('now','localtime')), + PRIMARY KEY (whiteboard_id, user_id) + ); + `); +})(); + +const uid = req => req.user.id; + +function getAccessUsers(whiteboardId, exceptUserId) { + const wb = db.prepare('SELECT owner_id FROM whiteboards WHERE id=?').get(whiteboardId); + if (!wb) return []; + const users = new Set(); + if (wb.owner_id !== exceptUserId) users.add(wb.owner_id); + const perms = db.prepare('SELECT user_id FROM whiteboard_permissions WHERE whiteboard_id=?').all(whiteboardId); + for (const p of perms) if (p.user_id !== exceptUserId) users.add(p.user_id); + return [...users]; +} + +function markUnread(whiteboardId, userIds, reason = 'updated') { + const upsert = db.prepare(` + INSERT INTO whiteboard_unread (whiteboard_id, user_id, reason, created_at) + VALUES (?, ?, ?, datetime('now','localtime')) + ON CONFLICT(whiteboard_id, user_id) DO UPDATE SET reason=excluded.reason, created_at=excluded.created_at + `); + for (const u of userIds) upsert.run(whiteboardId, u, reason); +} + +function markRead(whiteboardId, userId) { + db.prepare('DELETE FROM whiteboard_unread WHERE whiteboard_id=? AND user_id=?').run(whiteboardId, userId); +} + +// Hilfsfunktion: Hat User Zugriff? Gibt 'owner'|'edit'|'view'|null zurück +function access(whiteboardId, userId) { + const wb = db.prepare('SELECT owner_id FROM whiteboards WHERE id=?').get(whiteboardId); + if (!wb) return null; + if (wb.owner_id === userId) return 'owner'; + const perm = db.prepare('SELECT role FROM whiteboard_permissions WHERE whiteboard_id=? AND user_id=?').get(whiteboardId, userId); + return perm?.role || null; +} + +// ── Unread count ────────────────────────────────────────────────────────────── +router.get('/unread', authenticate, (req, res) => { + const me = uid(req); + const { count } = db.prepare('SELECT COUNT(*) as count FROM whiteboard_unread WHERE user_id=?').get(me); + res.json({ count }); +}); + +// ── Unread IDs (welche Whiteboards konkret) ─────────────────────────────────── +router.get('/unread-ids', authenticate, (req, res) => { + const me = uid(req); + const rows = db.prepare('SELECT whiteboard_id FROM whiteboard_unread WHERE user_id=?').all(me); + res.json({ ids: rows.map(r => r.whiteboard_id) }); +}); + +// ── Liste ───────────────────────────────────────────────────────────────────── +router.get('/', authenticate, (req, res) => { + const me = uid(req); + // Eigene + geteilte Whiteboards + const own = db.prepare(` + SELECT w.*, 'owner' as role, u.username as owner_name + FROM whiteboards w JOIN users u ON u.id=w.owner_id + WHERE w.owner_id=? ORDER BY w.updated_at DESC + `).all(me); + const shared = db.prepare(` + SELECT w.*, p.role, u.username as owner_name + FROM whiteboards w + JOIN whiteboard_permissions p ON p.whiteboard_id=w.id AND p.user_id=? + JOIN users u ON u.id=w.owner_id + ORDER BY w.updated_at DESC + `).all(me); + res.json({ whiteboards: [...own, ...shared] }); +}); + +// ── Erstellen ───────────────────────────────────────────────────────────────── +router.post('/', authenticate, (req, res) => { + const { title = 'Neues Whiteboard' } = req.body; + const me = uid(req); + const r = db.prepare("INSERT INTO whiteboards (owner_id, title) VALUES (?,?)").run(me, title.trim() || 'Neues Whiteboard'); + db.prepare("INSERT INTO whiteboard_data (whiteboard_id) VALUES (?)").run(r.lastInsertRowid); + res.json(db.prepare('SELECT * FROM whiteboards WHERE id=?').get(r.lastInsertRowid)); +}); + +// ── Umbenennen ──────────────────────────────────────────────────────────────── +router.patch('/:id/title', authenticate, (req, res) => { + const { title } = req.body; + if (!title?.trim()) return res.status(400).json({ error: 'Titel fehlt' }); + const me = uid(req); + const role = access(req.params.id, me); + if (!role || role === 'view') return res.status(403).json({ error: 'Kein Zugriff' }); + db.prepare("UPDATE whiteboards SET title=?, updated_at=datetime('now','localtime') WHERE id=?").run(title.trim(), req.params.id); + res.json({ ok: true }); +}); + +// ── Löschen ─────────────────────────────────────────────────────────────────── +router.delete('/:id', authenticate, (req, res) => { + const me = uid(req); + const wb = db.prepare('SELECT * FROM whiteboards WHERE id=?').get(req.params.id); + if (!wb) return res.status(404).json({ error: 'Nicht gefunden' }); + if (wb.owner_id !== me) return res.status(403).json({ error: 'Nur der Ersteller kann löschen' }); + db.prepare('DELETE FROM whiteboards WHERE id=?').run(wb.id); + res.json({ ok: true }); +}); + +// ── Canvas laden ────────────────────────────────────────────────────────────── +router.get('/:id/data', authenticate, (req, res) => { + const me = uid(req); + const role = access(req.params.id, me); + if (!role) return res.status(403).json({ error: 'Kein Zugriff' }); + const data = db.prepare('SELECT * FROM whiteboard_data WHERE whiteboard_id=?').get(req.params.id); + const wb = db.prepare('SELECT * FROM whiteboards WHERE id=?').get(req.params.id); + const perms = db.prepare(` + SELECT p.*, u.username FROM whiteboard_permissions p + JOIN users u ON u.id=p.user_id WHERE p.whiteboard_id=? + `).all(req.params.id); + const owner = db.prepare('SELECT username FROM users WHERE id=?').get(wb.owner_id); + markRead(req.params.id, me); + res.json({ ...data, role, title: wb.title, owner: owner.username, permissions: perms }); +}); + +// ── Canvas speichern ────────────────────────────────────────────────────────── +// Feste Route vor :id-Routen +router.post('/:id/save', authenticate, async (req, res) => { + const me = uid(req); + const role = access(req.params.id, me); + if (!role || role === 'view') return res.status(403).json({ error: 'Kein Schreibzugriff' }); + const { elements, viewport } = req.body; + db.prepare(` + UPDATE whiteboard_data SET elements=?, viewport=? WHERE whiteboard_id=? + `).run(JSON.stringify(elements || []), JSON.stringify(viewport || {x:0,y:0,zoom:1}), req.params.id); + db.prepare("UPDATE whiteboards SET updated_at=datetime('now','localtime') WHERE id=?").run(req.params.id); + res.json({ ok: true }); + + // Pushover an alle anderen mit Zugriff (fire & forget) + try { + const wb = db.prepare('SELECT * FROM whiteboards WHERE id=?').get(req.params.id); + const saver = db.prepare('SELECT username FROM users WHERE id=?').get(me); + const message = `${saver?.username || 'Jemand'} hat das Whiteboard "${wb?.title || ''}" gespeichert.`; + + // Alle User mit Zugriff: Owner + alle Permissions — außer dem Speichernden selbst + const notify = getAccessUsers(req.params.id, me); + markUnread(req.params.id, notify, 'updated'); + + for (const userId of notify) { + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(userId); + if (!poCfg?.app_token || !poCfg?.user_key) continue; + const title = '🖊 Whiteboard aktualisiert'; + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + title, + message, + priority: 0, + }), + }).catch(() => {}); + logPush({ userId, title, message, priority: 0, source: 'whiteboard-save' }); + } + } catch {} +}); + +// ── Berechtigungen: alle User für Share-Modal ───────────────────────────────── +router.get('/users-list', authenticate, (req, res) => { + const me = uid(req); + const users = db.prepare('SELECT id, username FROM users WHERE id!=? ORDER BY username').all(me); + res.json({ users }); +}); + +// ── Berechtigungen setzen ───────────────────────────────────────────────────── +router.put('/:id/permissions', authenticate, async (req, res) => { + const me = uid(req); + const wb = db.prepare('SELECT * FROM whiteboards WHERE id=?').get(req.params.id); + if (!wb) return res.status(404).json({ error: 'Nicht gefunden' }); + if (wb.owner_id !== me) return res.status(403).json({ error: 'Nur der Ersteller kann Berechtigungen vergeben' }); + const { permissions } = req.body; // [{user_id, role: 'edit'|'view'|null}] + if (!Array.isArray(permissions)) return res.status(400).json({ error: 'permissions fehlt' }); + + // Vorherigen Stand merken um neue User zu erkennen + const before = db.prepare('SELECT user_id FROM whiteboard_permissions WHERE whiteboard_id=?').all(req.params.id).map(r => r.user_id); + + const upsert = db.prepare("INSERT INTO whiteboard_permissions (whiteboard_id,user_id,role) VALUES (?,?,?) ON CONFLICT(whiteboard_id,user_id) DO UPDATE SET role=excluded.role"); + const remove = db.prepare("DELETE FROM whiteboard_permissions WHERE whiteboard_id=? AND user_id=?"); + db.transaction(() => { + for (const p of permissions) { + if (!p.user_id) continue; + if (p.role === null || p.role === 'none') remove.run(req.params.id, p.user_id); + else upsert.run(req.params.id, p.user_id, p.role); + } + })(); + + const owner = db.prepare('SELECT username FROM users WHERE id=?').get(me); + const newlyAdded = permissions.filter(p => p.role && p.role !== 'none' && !before.includes(p.user_id)); + if (newlyAdded.length) markUnread(req.params.id, newlyAdded.map(p => p.user_id), 'shared'); + + for (const p of newlyAdded) { + try { + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(p.user_id); + if (!poCfg?.app_token || !poCfg?.user_key) continue; + const roleLabel = p.role === 'edit' ? 'bearbeiten' : 'ansehen'; + const title = '🖊 Whiteboard geteilt'; + const message = `${owner.username} hat das Whiteboard "${wb.title}" mit dir geteilt (${roleLabel}).`; + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + title, + message, + priority: 0, + }), + }).catch(() => {}); + logPush({ userId: p.user_id, title, message, priority: 0, source: 'whiteboard-share' }); + } catch {} + } + + const updated = db.prepare(` + SELECT p.*, u.username FROM whiteboard_permissions p + JOIN users u ON u.id=p.user_id WHERE p.whiteboard_id=? + `).all(req.params.id); + res.json({ permissions: updated }); +}); + +module.exports = router; diff --git a/backend/upload-page.html b/backend/upload-page.html new file mode 100644 index 0000000..bf129d6 --- /dev/null +++ b/backend/upload-page.html @@ -0,0 +1,238 @@ + + + + + +Datei hochladen – DickenDock + + + +
+

📤 Datei hochladen

+

Dateien senden

+ +
+
⏳ Link wird geprüft…
+ + + + + +
+ + +
+ + + + diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..4c198f7 --- /dev/null +++ b/build.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# Dicken Dock – Image bauen und in Gitea-Registry pushen +# Ausführen auf dem Server: sh build.sh + +REGISTRY="192.168.1.26:3000" +USER="admin" +IMAGE="$REGISTRY/$USER/dickendock:latest" +REPO="http://$REGISTRY/$USER/dickendock.git" + +echo "🔨 Baue Image direkt aus Gitea..." +docker build "$REPO" -t "$IMAGE" + +echo "📤 Pushe in Registry..." +docker push "$IMAGE" + +echo "✅ Fertig – starte mit: docker compose up -d" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f4ae04c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +services: + dickendock: + build: + context: "http://192.168.1.26:3000/Dicken/dickendock.git#main" + dockerfile: Dockerfile + container_name: dickendock + restart: unless-stopped + env_file: + - .env + environment: + - GITEA_URL=http://192.168.1.26:3000 + - GITEA_REPO=Dicken/dickendock + - TZ=Europe/Berlin + volumes: + - ./data:/data + ports: + - "8080:4000" \ No newline at end of file diff --git a/env.example b/env.example new file mode 100644 index 0000000..598cf7d --- /dev/null +++ b/env.example @@ -0,0 +1,12 @@ +# Kopiere diese Datei zu .env und passe die Werte an +# .env wird NICHT ins Git eingecheckt + +JWT_SECRET=ersetze-mich-mit-einem-langen-zufaelligen-string + +# Home Assistant / Mosquitto MQTT (optional — ohne MQTT_HOST bleibt die +# Integration deaktiviert, der Rest der App läuft unverändert) +MQTT_HOST=192.168.1.222 +MQTT_PORT=1883 +MQTT_USERNAME=dickendock +MQTT_PASSWORD=ersetze-mich +MQTT_BASE_TOPIC=dickendock diff --git a/frontend/generate-icons.mjs b/frontend/generate-icons.mjs new file mode 100644 index 0000000..67fb64f --- /dev/null +++ b/frontend/generate-icons.mjs @@ -0,0 +1,106 @@ +// Generates icon-192.png and icon-512.png without external dependencies +// Uses a minimal PNG encoder written in pure JS +import { writeFileSync } from 'fs'; +import { deflateSync } from 'zlib'; + +function createPNG(size) { + const r = Math.round(size * 0.22); + + // Draw pixels + const pixels = new Uint8Array(size * size * 4); + + const setPixel = (x, y, R, G, B, A = 255) => { + if (x < 0 || x >= size || y < 0 || y >= size) return; + const i = (y * size + x) * 4; + pixels[i] = R; pixels[i+1] = G; pixels[i+2] = B; pixels[i+3] = A; + }; + + // Gradient background with rounded corners + for (let y = 0; y < size; y++) { + for (let x = 0; x < size; x++) { + // Rounded corner check + const inCornerTL = x < r && y < r && (x-r)**2 + (y-r)**2 > r**2; + const inCornerTR = x >= size-r && y < r && (x-(size-r))**2 + (y-r)**2 > r**2; + const inCornerBL = x < r && y >= size-r && (x-r)**2 + (y-(size-r))**2 > r**2; + const inCornerBR = x >= size-r && y >= size-r && (x-(size-r))**2 + (y-(size-r))**2 > r**2; + if (inCornerTL || inCornerTR || inCornerBL || inCornerBR) continue; + + // Linear gradient: top-left #4ecdc4 → bottom-right #ff6b9d + const t = (x + y) / (size * 2); + const R = Math.round(0x4e + (0xff - 0x4e) * t); + const G = Math.round(0xcd + (0x6b - 0xcd) * t); + const B = Math.round(0xc4 + (0x9d - 0xc4) * t); + setPixel(x, y, R, G, B); + } + } + + // Draw ⚒ as a simple hammer shape (dark color on gradient) + const cx = Math.floor(size / 2); + const cy = Math.floor(size / 2); + const s = Math.floor(size * 0.18); + + // Hammer head (rectangle) + for (let dy = -s; dy <= 0; dy++) { + for (let dx = -s; dx <= s; dx++) { + setPixel(cx + dx, cy + dy, 13, 13, 15); + } + } + // Handle + for (let dy = 0; dy <= s * 2; dy++) { + for (let dx = -Math.floor(s*0.25); dx <= Math.floor(s*0.25); dx++) { + setPixel(cx + dx, cy + dy, 13, 13, 15); + } + } + + // Encode as PNG + const width = size, height = size; + const signature = Buffer.from([137,80,78,71,13,10,26,10]); + + // IHDR + const ihdr = Buffer.alloc(13); + ihdr.writeUInt32BE(width, 0); ihdr.writeUInt32BE(height, 4); + ihdr[8] = 8; ihdr[9] = 2; // 8-bit RGB... wait we need RGBA + // Use RGBA (color type 6) + ihdr[9] = 6; + const ihdrChunk = makeChunk('IHDR', ihdr); + + // IDAT - raw image data with filter bytes + const raw = Buffer.alloc(height * (1 + width * 4)); + for (let y = 0; y < height; y++) { + raw[y * (1 + width * 4)] = 0; // filter type None + for (let x = 0; x < width; x++) { + const si = (y * width + x) * 4; + const di = y * (1 + width * 4) + 1 + x * 4; + raw[di] = pixels[si]; + raw[di+1] = pixels[si+1]; + raw[di+2] = pixels[si+2]; + raw[di+3] = pixels[si+3] || (pixels[si] || pixels[si+1] || pixels[si+2] ? 255 : 0); + } + } + const compressed = deflateSync(raw); + const idatChunk = makeChunk('IDAT', compressed); + const iendChunk = makeChunk('IEND', Buffer.alloc(0)); + + return Buffer.concat([signature, ihdrChunk, idatChunk, iendChunk]); +} + +function makeChunk(type, data) { + const len = Buffer.alloc(4); len.writeUInt32BE(data.length); + const typeB = Buffer.from(type); + const crc = crc32(Buffer.concat([typeB, data])); + const crcB = Buffer.alloc(4); crcB.writeUInt32BE(crc >>> 0); + return Buffer.concat([len, typeB, data, crcB]); +} + +function crc32(buf) { + let crc = 0xFFFFFFFF; + for (const b of buf) { + crc ^= b; + for (let i = 0; i < 8; i++) crc = (crc >>> 1) ^ (crc & 1 ? 0xEDB88320 : 0); + } + return (crc ^ 0xFFFFFFFF) >>> 0; +} + +writeFileSync('public/icon-192.png', createPNG(192)); +writeFileSync('public/icon-512.png', createPNG(512)); +console.log('Icons generated.'); diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..fa8ccd5 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + Dicken Dock + + +
+ + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..1935a6d --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,19 @@ +{ + "name": "dickendock-frontend", + "version": "1.0.0", + "scripts": { + "prebuild": "node generate-icons.mjs", + "dev": "vite", + "build": "vite build" + }, + "dependencies": { + "qrcode": "^1.5.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "recharts": "^2.12.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.0.0", + "vite": "^5.0.0" + } +} diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg new file mode 100644 index 0000000..f576035 --- /dev/null +++ b/frontend/public/favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/frontend/public/icon-192.png b/frontend/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..fed0decc56e8748389f631a8f58f1c16466bc23a GIT binary patch literal 2564 zcmZ8jdt6gT7QQ@#ykc5JL1Pf1wn*hiU8MyvqM~Acf)$0bsKKgbS4t!Jh>GUMDj-nm zYYQqqYQ_2hjEWeM(i@r}R;sjWjS4XV&ALJ%HzMXPx!${HZqV)SAIZ#|neUu$zB6a$ z7A;Ji>*E>diD8&e!o1mwpw*zChdcZ)>iC?8VZ&MzX2&hwbhy`G+qig%UyIf5Jjuux zwAU=RnAcE8D3d5BJT4HCpWL+8!lt?AK5xq>dL`wib6y6l?RQ_{z(mt*|=`vRF!?<{j8jR+o`Ftrrt~Hv~YGb2N z{j01kPW|o|7o?e2Lvti@yKrr5SDCyrU7)`B>Saout$s&fS)i`fXYXqNm;PbT)Vh}sOP_S^*WTjO8?E;2 zms!tp(*L?8P+VZ0P-vh$M6^kzv*@4b4^NU+eP=nI{N7e_2OdJHuQk@5xHXF;oA}Ic zUAFeiCt|{7t+s({@sx>2xH59}srDZmP2)D9p}&FA6&+#O`?gk;%0m?2E8o$ zX8X&AvTS>QX-3C0zv)!dF`j}*A>_FpPP8e)lR1(D=rlT8k=_#IOzt2~Q<4?Swg{9W zI=)4^raQOckY6w+rh426X~TL~6AzE=lo^9ZVN{b;M#Xe#_=;LeZqI%cHRz$?Gh14W z0a4u;*At&b?VKheGx@6B6UfLy=se2=41)Yd+I!nS{0SlE=)~V~>za*qIkNk)E)Z;V z0L%E;JP>3(tuWLf0`Hqt0T5K?gxdzgoPb^mY10`-Ad?$zIf5)@r0rb$V~&x%>r)K& z6-)Cjf^$U)#jmbG{?r9*hCjjx*kwbIRCi24rfZGFJ6uPH#{ffP5Hl+)S_ljMaSm6^ zlHF+2GQsQdJY@Ii6fd>!YZTJmdI~jj ztc8eK6;+tB6Ll)6S%~oxx@9J6Kc>ea8evSQITCe(nc*n<2-eEAeyr6joOGd>-Od}k zO8!eAV=HUMsyl70xovd1Akzo;&;&E_t_wHZBaeAFjnXAybuQ<35@VE8=#pXIc2{?b zFI>`w`djVzv!6Kt`*S#!MGgCQu)34)^ofqxiLG(Z7{;D?V-?p`8W4chRzzJ6z7@#a zNyF}ucCqaGe*>;|UE79Lo5cIwGx%bsyS|#Yn8_vW%RUtlY{{)3E{w>zM-ozB%_xQQ zX`wQd{yXMwRRt-}))uhUd`<9>HFG4l6X{xWY0a+M0 zcJN?3DniRa%VtMW~u&KTj#v>8vsF^ryj`Xmge zF}avY-=LW!z^DzR^aY^#cza4cris{1j6t^YogAt}r3NQkC`o#Qj>APjm8fuWA>Et4it`IZ2T1um zu;tLwObE{-KEX_>P3%Bc%ra+1EZvaLt&`n=IX8mcCkeyI*2hUM7!k-M9!DJ5eS8d< zHN!ejM$!*etZ#~dDj#BH#IFa#$ZVDRf(svFF`CCWFRzjy$|@K_wB8P=)YqJ$jCwk4 zqKor5`HcAxq(BN`drW+!55ew<55dSP6RSw{1|_LbATtdW+W=|jr-g8QMNpEd+6cIR z%+_+4_hr6tkiGFoN;z_}3Q2{p-Y5w~f$b6X4jkvj22Uu6m3jvv=Q|=3(N)c%CcV}; z5r~?t>;X<)Mlz`gNq}yYSbEzcq!F8xhEl4X$fcD1OD)31&U_!JthP#9f!!nF@-ryG z?89F^11>g?y4jp2jUT`s4+nn(7w>aQ)wT<~S$tL899&UEpJ0sx_7t5i3pt-Vc}T3W z$ICbjesC;o72LleWf*_=190QQs{V&mbjBFxl%*GZo2~PdQOM#gXJn6mBHCx5Msr(IfTbw!h=vt)pFsE#lrO; z&it`mM1N*Yoer<(IOa@0JMI6i3-R9%>cQ>0e;+vcH~0uheN~`d4gn&b-w7=x;iVP4 kT6#R6r)Z%1FWdN|50>AXCN`zP*BzD+pE%#1Jp11ok5-T(jq literal 0 HcmV?d00001 diff --git a/frontend/public/icon-512.png b/frontend/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..024646e6471ec6c1aabb76263d153082ff8a07f5 GIT binary patch literal 9398 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 G8~+z_nKnoO literal 0 HcmV?d00001 diff --git a/frontend/public/icon.svg b/frontend/public/icon.svg new file mode 100644 index 0000000..8c4cade --- /dev/null +++ b/frontend/public/icon.svg @@ -0,0 +1,7 @@ + + + + DD + DOCK + + diff --git a/frontend/public/koepi/aldi.png b/frontend/public/koepi/aldi.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7ee3800df6d13bf4b0a90670df6c24fab774af GIT binary patch literal 25875 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

)^dQia=QDn#ODBxLNFb8`@s=?*8`UsQyw`&$<${ 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 z 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� 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%0AmWO& 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

ObrAE|F z!N_q%(4H~`b;*ClMIbRWh@sY&9e=42lZ`ziYUGj;NoJI*ZkZDJX^U`&!_n#orL?Bq z#?F}jJVcT(lL0!^T2+9u;-_dkW-wK>hTleEl{y-YfoiCJ2yKZcvdh? zILH9lmG`PbgqvvFv_mH@!`IU%r~0>Uow6UBdwXOOtMD)NFw3=Xhz_D<+UU2dm+sRM zy-oPbslSH4r~H0Ymag}C6tD(?2v^_V!Z4`YT&sxaA*1s?*pA@N^jgS1tIMmAEGTAD zIhUzb9p^WvUiGyeK?~`7BI*PlbUL`aUVj;|rA zXd-;+fU}zwI9epoelMi`iI2C&He!8#e)GuMVi^O4;oL2GV_ZqL9uWYOUs7sV=stf6 zMQv_YE&K=12)c{v2IbG*$pVog$)M-Sp#4`VWFSGtC!robWs+ku+t1{LQn3J;@6GPB zRgs*gH1Eh2v&)Ot{;PfQ6Ng;rv?aDm4`N0T1&7p?9lfXVaL&D2aBrDV=lEeZDgTQS z0b$rH7E!+@Beqvk?mymPSA2Q?O};w?hfk{c_5b{K$VwsPkMY_;;AGb635M?WwHWRY zFWId1lR0xw&su({Fvvh7n+NImstSr?8~CM8 zF2687JKjQ3xQbt5&PEfzEAb4=<^>=-=xb~ZrT~{_$Ojkzk|2(ZetGJrBq4h}#cOaw%XF*8^e z0;w9FkoqK&X+CDw;V*4jBhTLGj%;{KJzw^lcNF$|)6VAQpDc-Dgpvos(+^}IKyGX| zQZuj<7EBCGw0`bhM-$lF*A?xs^^ILA{Cp||Llt#5NlHV3|7s9p>W^>~049f?S^l@Y zwY8(@;e0I>{pxMWo05$4s$C*v57#%>1|u5OAOn#Xj%xcRd5(&WGZW08%z;#YPt1rP z!qi?@t;d5OS#FXz@dRn2Pl$w+*G%R60+BN+Yj+MS?q$rRbg=Epr(_?08yg!Rt#&jY zk8xx%Ex&HZ%)?b85U?$Q9DQ#iebV27_%G0m?)Jr2xmE52IL!a!I-8dVs%T^GSV`AT zS7E%H!-?g_&bD4mN*g~Dl#^IB(*>lh-XH*~&}*a8_=!FS<6{j$Ixt;QS0(qv#83Tp zFE$@ChqN9%Lz;Rv$uJ|nWNpW625gd8|2zA>XbArHYYk-wZA#&DciK%7(-`wm+(A|e z|L3np6c3uEt7xiX|IcPRn4Zdmbfas4aE=M!Od&kq-GG)B1|~57Pu2Cddi%HU(Ryi7 z!A(Nb)MT_ztB~7M90vT$QWuQNR>Z`(V9VkeU%&2-xtpPjMQdq+?LQE(E9za_WN^_p zSKX&AjA@W|)WU|mdK>M)DZzUyw=@POiN&xve=|XwcGs^;Bi)Cr>z_NL0>XbATwUDV z^-NwoWy4qzDYH!D(KF0$?E)6=Z(RA8StDw9nKvkN&|`z3nZQs8&W}$_h`x~L39g*k zMO=q95q)g?+EYCb7I5yLN<}No?*03{xUv$WpZ6b|{6HoCrQHC=Ro^XFQ8;RkFYbN& z{W}F7egXegsl2F3Qq*Pn8yxr9$x65i!P1<|m68(TYyKyj{3_f}(RD)U>Hk*OBjkV9 zl=gxcAP+{H6LhIYY(fauX`^4Mj<0aJgbm2K;n!^p;7d2hkb2wWFfafA*Z=oC+--C` ZvWIx9@DIIou6}~KbTstU--GO9{|^U_Ie`EG literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/kasten_033_05.png b/frontend/public/koepi/kasten_033_05.png new file mode 100644 index 0000000000000000000000000000000000000000..57ef7c0abdb44877fd144a213041c53f98132515 GIT binary patch literal 130923 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ʥrX|VWvf9 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 eJw3R(F9RJD?Ru0$%>M%;N*)3L literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/kasten_033_055.png b/frontend/public/koepi/kasten_033_055.png new file mode 100644 index 0000000000000000000000000000000000000000..57ef7c0abdb44877fd144a213041c53f98132515 GIT binary patch literal 130923 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ʥrX|VWvf9 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 eJw3R(F9RJD?Ru0$%>M%;N*)3L literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/kasten_050.png b/frontend/public/koepi/kasten_050.png new file mode 100644 index 0000000000000000000000000000000000000000..332b5e50b744c1755e7d8d97fd4c17d23da9a8d7 GIT binary patch literal 100824 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 KMNUMnLSTY^YuG0M literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/kasten_lang.png b/frontend/public/koepi/kasten_lang.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd32350ec04f34068e49295afba260d1b4004f5 GIT binary patch literal 114370 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 KMNUMnLSTY^YuG0M literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/kasten_steini.png b/frontend/public/koepi/kasten_steini.png new file mode 100644 index 0000000000000000000000000000000000000000..d0aff8973856324c2321547f63f2424d017e21e3 GIT binary patch literal 106622 zcmaI7V{~Rs&^8+9j&0l4#J2C)6Whte$;7s8+qP}nnj{lDIrF^d`_?+|pYx+vuhq48 zRoAtvy1Tk+hbt*aBEaIpf`EV^NK1(UK|nz1|7!rKe(Sg|MSj+h-}#J zBw2eP27nkS68RfFo|2XX23aPIB!3-4xgSMb90G4FFAO{;=64i^GCh0*>>BhDNkL3t zVOYe(`@UD9^-94(WmyeH*v=6!m1k`;I4gk_8pV`NZANq}SA(E~O`a1};&n5ncEZ{df zh>&NDNC}9L1nBSVG)fhaJP44Vlg37eAW94%KdJmq7D0YzzodJCg6JfXV1VYugAk*c zhKYe#@Pbs$sz-=}XflJKo5>DwgRC)tFiUHgNrBY0g7nQG!!>{a;6a#`!-8o*AiO|+ zj**eMg9N36piA6o@ZHkYAfM9yLn^(2ubrG*++PR4;0Udu!AM9wBaKCe&S?l{m?6YC z;E|5Q>d%g}cRvLJk{6HhPuu%X_Zh^RnHkQQ7DNMvi(aU2QX`|oujAQD2O$uUeHY*P zFM6g%+~2%Vziqz?D6Sza^x^VcpCip0kc65+^3FFj?j8QaMm#^ReSQ7-=x9x5NJPhQ zLc{0Fe88Yjm*k4qZRJ^gJ6+# zNZP1flNS9@8PzdHEF9>O`a9C;$XREYF{| zP8jc@ADg}p3cnw6s~_&;Cufid`Ots}vIwlnZ+xepG*tm2)FIP#1hhYymV^k{`;;w0 z5*-j32h`dS`5lnn3;{X))Ls5C5W-^sG((b&Fi@iiO|lpOR(kLYNxu{XY9u-Fco@1e zscbxl6bmpyl~_%R;Evx3j5}0Uq9dMn41_h{Bcw}`CCR@*nSTksS+u>33pYrj0B+92 zg(V{vGcR+_sR@@qiZlOouF?W&BUV6kl)3K=8=7s%hM93>P^A6`JxrqUWIbsWeB}sk zoq82`XZWM>Y`q%YVYa^s=>N`e=LRTkA76cQ~qOg2p24~lP}=PO*6h?YQ#vK-MpBtNtru^lO-grX#& zl$F1bzs>;4x0leA@XGPZjZRNZ7fi3Db7b9Pyf=GH3KRMXaLl&H?Grda8$?kq(qZC6NCsLWY0AFR7=8E+|X#i=`9gW9ZV zv2F1&G&jOBZyl}~yiV*+^y%=4{^W;72wg|4B+w@Cb#8J(=TYa`$(YHy7W5f@NI7RR z*PKP3U1K|JL7Su*vdmV=T$D7&GH-Vdybp^EmkpR?Och|v#2eWj>pqfkd34m<_gr|) z&TPyaxGLMMz2>~Oybj&Uonp_W$LX7^fzxlC1WyX zir1)Kt!piIt9UlN!4h~9aLPRtIOOBnVcpR(nBwYd9c!Ib9JJ3d2;LR-Bl|Y__WYg) zDg8|WY7QRmFYK=a_Wt7OP0|}9$g^qs)UbXf9F^BDj3FEwP#tjGUrk~$_9w2IY-JAG@We23&=;O6I5b!zL@>r7OcQsWC6&W%eoNGOSL{tJMQkV2oJEnl zmO+MtR-l5>if@CfgS|s=gwafEYFRT|Q`$xrpPP}khSScbXZPdkKJ*~_0PfHWD~)MP z&%q;qX5b;X6tkQWm7XU>NG?p_N77$mWZE*!D2h8YH;Ncoj{$-Kb5f>x&iSx4QC(U> zg*z!)dC!DD@m(AqDv? zdj1p`@7YuXRg+&fTQ+@{es6phtO>6;e@S__)vH#pb-Wq{UjYAvCPQplZC_d@Sm0L$ z#;(v^N+OOD^?YUDxG^AbBB(`YjU13Uh(qE=*9yu0rUTh!e?j~^@|3rWcSiTF&E>9P^B7H|O(Ub0$H4Z&<$~`kaZz!! zGpjSBrd`*%{o1p;*~{$t9507!X8WPr;}-LKWjTkNf4lqM)Bbt*`EeI>+t-Qeb7r!0 z-HqzHx=XRk;6dn0cwKZmbXid6YisRh%g?IME$@DQOY#{iIB@nW{xKFw6f!nFb}|GZ zpyTWDOQ3lkdy&VlH!p!u^;uf#cTbe%3SGtB2HrBHw1Xv{f99d z!{)#9Cb6*;P#y%tlL7?fcOVGJ>-WF@90bIb83g3wCkO~n8VCrMeS*QT1PEwyxwM$D zs{6*DPq!x1Q;!{(ub!LD^P^1BV_NhI*kF;FpF%%lNNHpW%EV-GpQ+ot=)L$Fwi`FL zt;;!{nvRR=HWE5G3dFTJDU_$krI3k1NHJlPoog}&+o`S}f?thuY2%u}C>Cv{1&~(s z+Fb3nofWPcpBs1ocFoddIm5FIA&Y*v{>CQ^APK=XlF}6YpOFDvqcD{e@O5!*8kr6zg+$g>3?(i-va&*m;Wu`|8V)=0{#z| z|0Ur6&gFki^Z!pk@5bMd(4S$w7n=Nz+E8$GC5?4LJ#~O;%!WnrRvz+dM$(zT*?rXE za6T@1$nmlCsVvQo7mH}j>cyOF3bvC^bDg#ZoO~7k1Hlb~aJF~zmdEQ5=Wg8inm&AnbL!MgWsAl_i%*DCk`Hy0nQ=!eGW0+ElY-%VyH(M)Vk zSGCLa(slF6T_;;2t2QEyxM>xvqh=A+JSWw!5d2UXrvm&5YNKMQV$tP^w1(J~jN75# z;4}~(DT$OmPKEOl2|T%dkv;KSJ*QHi*|ENki@duZ$?>197yG6E^Qm7rk8)o(avomM zklYXndMf$dTvg0HENN#u?Vlz<@AHRSLn@M9;``VFfRYK^k$=%yA8xCKwE~r3qsaz| zn}oPS*%6BwK;lGTTQ1!n z1Pe&YJAcDAz8#1Y!&A*T@Jb+$dr?=K!5@KR=_#;huLt9kj9{Urs6niA3S;rern0qFeB_aZ9jMGdZlCAeV$PnRCM@fLLUet2lb2k@55L` zQwrIeqxER57x(6Fm%bl6OVUnAKo|)?Qqvy&fWO#p=c9proif>6DA-+|DC8fY>L9>9 zWRu^R#MOOVsIx=VmvIV4!Ne&sF%xkzhK^EHeg5KmP5sVb2A-7-2)JDwuwWI#JmY zH%iIHngm<&C!`3BljS(SKTu#sllGVubIdu~HD(K!9g%@voqB>gfP7Q~bOkAW9Af0y z!e9?3_gFo1IsPx){1-n}$?n_Osu@w+ckoEypwZ_)Pk*rvq*L^Y!%CXAzD${GU_VT8ZnK2rRZ$ZG@xT~kNVTYAsX43eILKKLO;*+?DM&pyd$b}n7oC0>( zhXsltNIu7n8h$Fo?VpGl^d19%^R_KNRCWb3rDug#%8^uxpcV(+euMb+%@D=!DR`H{ zUsR0R;ep}2kBZ+L=4Oi0yJ-CN0@I~0fgV&vu7`T;Fmr%zVJ$5ma4Y97f-Z?M}NTB@_spGz4>e?&Tm^o*Uor`R!$M-Rd{07=naqG(#s24&Hc0J>~SSxX{odY?+^ zEMXm4J zoQ8EonA|^<9&&AcZ9VW3eJ`}!_}wTG{_f#rX3jPzA%~yn>DBvC_(}qM3&t*E>fj6FJNvmWwm2w zuVg6l`5F}Ld;~sVh0P*$xO8a(DRmjQVrUXCVg(aFFGV$mTqZNrrSMwFSF(O>4Ef@p zhxz>4SCYAIkV|>~95;hX9wR3VeEiuyF0<~$d3|qWp6xuLjOt2@Q=}|`?>|qI{KI^L z&e7Z>it7y3cx3M0*`+XKDdJb7Bp09u_s`BRyAS?YAKz0ld*2H0o9*p=Ew2BRlx^z0 z9Z>Z?I=Z?(MtiPg)3Be>i6pD`J_Oe*KabxdpDHG_18xBw8!_5yOjC3&i z&kYztSnQX15}Ni|%2pwyE+jDphv=WwO%$dM%V`Ztw*E1#HK3Y)*EAhNl~$@a=siW` z>3tj3r8A$>ph(@6pGk|Vi3tlPeN-vw01GwlA(^v`$kplc9NUKI5?x7ukWI=eh>{F2 z-8QQ#4RJ4e3Z1X^Qp9&(-R$}C+3Nd{IoNp16uM8pzk7s!Q>kdj5*oX0Ih(Uy8bqPC}7RR0Sl_IU4vRg%&8|S`KtH z9{DR8aVP}bL;AbAgJZN)VdMbipeaNSRc2WyHbzq~n0zG(n3Hg}G$H>Pxol`WqB+5g zc2L}rc7j%5C`BvSY4FiHejA7(m-ySDnhjXFeC^j?;aOU%r2QnBZrZNDM!@!XM3Z)15*Uw$lmu zeTey;f7OO3mbGksIwq2jIrX75_D76s4H`KKcN4~CMrrva$sn^DLsS5b{DA#Mn6tQM zNd=@7?@2`wBQW8m-sFe|)TpOrr4h{VFyO)#@Q*(s=tQe_ixW=b=&~?_2J*9qQ(>*) zwRwW*hq7wfl88r*swq`Xo1Vh6$uL;*onLY!uZ655#SbJ&IJu<2Ia^)$WS2FPf%OKURVy(HwgR_+>V#;%!33m*<<1JG zDb6_u83Ddf8Cg=ELFuvAk7?ENbqA~+q=!GZjwqFj4{j1eD5?*nupKo zf37Xp`aUjd_};g!+IL*mh#q{#dYj#E5_PlkMTQ1Fa$({r_WoGp^?ds+;Nxy^e^FfB ze|&6f9C;O+Q~;8weIyngU2)_T=Um;Xfai~aIjh1RWTYOvRyPoa{(_O~REE6_ny|bj{VLRohS9^4%n?RQ&*|k+ z^^<109Ng1<#`@1~E3xZ;oowXuy!$Qa%aW{Yj$ra1w8lElB*tXi0=@oFM+4Jsqfu0; z{Po|#UoUv5W{85B{PqbnO1Ky_c5eTsn(scQFv%fa>WL1#UB(n+>Eq5*&0eoc#uAMw z7;NC_>#bq_>LB7IHP3tu7Yzo2&aQLH$Q(p7YHV6Zap2N(%j>Drz=`S!4dM*&L1Q3W zLQ_v@E5$P8PziCj{K(}`hn^q~5`_g<9%{oP2@-p9!X+)zc+`|!q&)F%>0geP{ZZ`h zZ9>QP2zzSKQm;P2j|)pu|Ap5)cDXgAcT(ND3l;;Fl0jPnly^lQUzVK&ope)w=;A$da$@ zK?|%TVi%%_5I0jK=*Nd#1Wf~3P*TQW&f9UZ^akc#z-KLRCFWEJIY`ogC_0k}Z&y(@ zH;uG=q$zEk{Y^wHgf9@ZKg~4TRYQ-ovzhunK4lN@#xJ8J3AmKy5&$!C$c|qK7^AM^5sQ z&Uv06ATAcw{F^Nqr)>l1DMkKF8ocETZNP*ZsoN7?e1P%KUX~si<%+LmEC5DhS!6xf zi2-Mny>G8*42Lm;=10v3Wz>J!l660;kJ$AFrgwJ&7F@F;&&Ub4UnvsQCl=PZd6)#` zm$c0~v6RO-(2jrGsY{%)=$|oDk~zeTVOV(@6Xd8^q#Db|s05J9-gW~NrFHFCP@S~U zpLrDyqa=)!Wt3(a+}eNJKEh~A=TeWKy(7k-sv;jbM%goDc7h$RmWyGW9Ab9!?bEXu zw-@Egk{VhjO^#Jait?^BBtPf$HjJDJ3f?uI3f_h*wsUPgZB3CO@i*U-5qa4D7jz^G z-wczHRUeK%U1G)ZQP1dg&}gow-F1EO2n`I#5N5;^_tj2>1Rn(gJN84}!q9{N5 z?rb}hK_;XT-LrD5oXxC)yuLeQ9iMr3!bwd&g9EF)&&91YPU=Q}BK|RX8Wos&d3vsU zo5=j}b|WDD@gTdkJl@vKDx#(q#)J2gFImF@@V~(qk;!tUF8xbq>SP+em{f;uXxm>T z0*Fd_sQ*DjUCzq0h^+%}WKP&dZ_28%Bx8E870)BDB@1Sd-x%e@U67$I;qQ69c99BD z>l5ED4nJwT(L|$Z9SRul8Eshrkg@iyWzASf^myM69w1=}c0DCy^~`-ND>A+z?L2;* zxbfX3*SGTjGW`#FgNWqA(87n8b^c|z)L+G=vp113S)I1sS$+>I9K%LC#=}KRdVT$M zibeY(aSqkX2lA{3kn;zhB@;!QHZ-v+WP3Zl*>y)Mc2UgnS{WRZ63{XdjY_l2-Q0#QS#>F3e7Ei*_>U{3MD!XF?cPOvGE+XrMMHMp-^C<;8o%@3`! zq$OV{DCu_|?#Ssu_8m z^M#$iQW)^8O`I>o^ke6lg{mLNu~yR88Uk-SiB8V3^!JnDO3(GQP8hb+(#N52;znT< zG~aT_+4ec?9Y__^^f)sNs%?`SQZs1Ef`hXnT+-q^(QMlBDqd z4}d5!7}4JpO(A@M_zgo7iJw4k%XNsP0a}7Y)DF~CnGiC^&`+P(K5jcqk_J)>Rk}D) z4T_tY+MGhKizP+E?NG_=g)#57y2`Tg}l7i@f^kVbjiPs%x4KMoM<~*EX?p5GqHLIEUdv%E3eG>(9 zM^VDu{!FQ0-i3cqh4lz|6FDX6O^ zQz>O5H$E3`>wZUwCD-eN#kfN^J)zUBSLPK0(o2&Tw8I~CrQB~9!ZG;Va!lw|so)92 zL639c3rwSsVwHl?bJJjx~Koop~dgup*+F7GThc zApzz9nj+%H@jN3GqH;5tproLmlo~@a3CrLC>|UK-*K?a*iUgm~mAv17 zci-J^c-bFMLVH;5(F7j`{tFRj2R;^OXNqbGIv0CBF1pVb?p&T1iV0rdHoUN81u|`t z#R;6L|NMP&k7D9d6s9seE#YBuNzGR;r~vn7`dNuj5&OPmA|y^t3BXAP#W+@RMm1%Z z`8}>8mV+V{F1a7(pjSi#%|Z4`Rb&W&(pRn_raO(`K^m^Ba|!lKb^xQoM+~h;3>No@ z=m~2dtW~Mm8q!#(>`Gyu=NzbfJ6kG58^y-?N*|q2Mz$=Ym<~tX9;>%^iZIJ^*#8T& zvOw5+)1B;f?ag)>e>^aNkA>7T(tK<^RB7$93DfR6b;_MOHV!qLN(rMGDUzTCcfr&{ zKcO6#j1o*awFm1|`qNkVb}d)Vu7)s5wqf)9LW6M)xJ`b1OKOz4z~t3YOn}B34WHV>}hEz1LCYGS^l& z&wpX6Zj*txZp79@a)9YUdBb_A6eGP+?m^nj+Kgz$h)7B^hE*ffW8*C9 zXaIkw;otRmP5TiKmBfse&}Qztp5lmri4I|zqX0uT;C^?MoX;BR(;UgVXj1-6K1FeXVONSHkNu}TxyT%yOQlq8-nQxIw_00beJupM z?Orzwa?xCA45=1WggSQdS({zqflR$pC#@FQx<8FTl>>W+KJfTc}?I+_#Kdw}=Cg z(jRHVa>!9oo~1@hWQH2T*HZvat7h!*`wo%_(no@`i^ zIE^$Th5iaz+?-Pk^IsH3%GH3b-C?na^KckKS-iFpb2nxnRJy|(&m25 z%Jm4pfGd|nX0rdDGdXbH-%c8g7AD+8L(L}#O|umZp|Azu&!&!oX8FJcz;Q*t|M#lwUu7>!&|IE2JUBNoOR^8muY zh%kP@6H30zk97am<}b=Jk@El@aF&zmcVX1LtoB*+y{;t6dB32uZ-46a`;a+AcoyLL zdg)e_-~C?Qb@+FU>X*)b^J-p_kQ%dnrO)eT?sPk#;9+XGDJAG<&L1?U*%5D|Mb4-E zE9;u#MZfP_w~hfm4+6MkSVGC!^{K-*$sR}l( zYcDdWzaXC@^RH^*tv z@4tKwm&TC>R>-iXJgiYjwj-+nnnp$N(ae2HT!qH_ck-YJA&SG4f{!?TTpssUiR2Al zHg*j@cd2?^K5DvaZNJY#1w0l*{r1M<>b{`J_}!~2kg~g+KOb&=4$j6mKO!%ACA_+y zpFg^!CTTG+&B?^r4t4F*?YMvHS1szKZpCX@1fg(_;ZXD)l)*}mQb^@1)s%S$0X)Hi z;>0&7Bd@caTcpHIlo7bZZ(yk+&iW8YgH~(Zp$hyj1>aZ7_8-&sbuL*~{p=vgQM2mB zMv&=5t5x&cF`dn-LfU+|Y_i4IK;{=;+9~a78rQ5EJba>MGzupP;VNVcP3tDi=P8=T zVfcHALjQzM^!O5PGT(C2S`Sm}>x#*>t|dL3CnGGuvTRHQ(lr z?lL4*gVN#C2<riTu;s{ABm7SB^9?v$&v^$B(ZDe?+9Ned%;(*8pSxGL9G|B> zyi?y}uG#3WbANLQLchht&7IpP*?-X&-tS07ets3-^H=CpB%)qDecd&jYCG>KoAn1T7`aTzZ$xRILaOZ0#efL-ApB~+a#_~V=Pu{c@TqE`rU-n4Kj3EB-aaf_s6|Jcl_~}>)=ky$z%H3*NM9SF^B{k# z)5C}w2yxJ&@DAP`@Fgartkme6lF2*x#{vVkxvtD?O@kjFDJkHJozmIw((J1Xtqc9G zS&&yd{m_jTE{{xyg>-2lM5LNP3aP#K2!`h#`)CFbRZS&+%nj!zA^$L@eg%yu+N%=h z>6hwOsNqOP?%p_#J3rV=P1nrSh@q~Ks$z@;AZM?0G3vMf9V!04{}@dX{Q6hhK=^gU zRT(Sr@;Lo0__8qeFJb%dl4cd6+dL;bVpe}`ThRSM-|OjM+RDS!s&M(EKSWJxmP~E# z@_1~^xMtI^9{#iu(G+I^q@&$T-Af6nO>cFLnT0oKR6=c0Ii-AxjuGs9tR8^ipZF4} zI#d`|6;aH5Ct+K>S6Zx>aJXd$T|Nb(! z`wr<@Ex_hn`QUqlCdNca8pCD-a;~$}cb)q}V)u2MdpLx*JCXXm+dFhsn`7jsKERg3 zAy^t|it0xU`r^Ek8Yq-(;lZzdm{vVQhC;J!6;AyS{(-A1s(wJIUp%$5iRAF7dC(;R zTX4mKMoP5blTI8OHWgdxpp%p#s4t>Gp90h+W|CnIpN_u$Cf-o0dN7eBC&3-~lbWx+ zZm){sFPw&&qDNG86#6vc<(#ENxvI#6aZyqeCubSQg^8t%Ce7lkN`Ms(6KtGvUyA&u zgF>&L{lD{yS>Zr zbnsN%X#S*-+tX5-G(>cMfna7l?zugB4~97zVN*TH5%0ipu0o@Dm!WsCZvh=`H${(P z3E_4mu%LmDjM31CdK54Qu#z}{Mx~=KM^go$Y{ccAzhfG+^3jbai@-)IO65=-2^`^i zCm$ZiOa)pfIcSJ%*XhI~2GKOBO91G>g28G;9=o>*8i50Dnc+CvU-H#KlASeP^Doulwb z(;7+eB;?$kYX@?12s=#Lt+5BvrG_0s7FeOE^UGf&h_D0%>JX3G(f}m@ zVI)`=X?2oj87)svLC4$?*Y|PnexGeC3nz=TX63=Im*B5a#xAEmnac6~RmQ)`wOvzm zr3U>B&tnC&=7pvbhbDQOKo>EE6L<<7qb$&&yp<=06Q2V2!v*p`cVJJEVce;O_0-VZ zDL=v^AyIioaWwVxDgW{p%nfRVM;iZv!f06ae98 zF^gAFqDww+(RNwYd9hTOH6_n6B#SuyPHz;eagZO@e534_ba7@#J- zdO9nm(J^nW?`jEI%orIW?@ku)8WNILLV?|~=Z_z~U&)j8_t!*YmGpij3RlZD?HZscPz{uWsUYE0l`l6Tk(vhTF2KKF-5(Wo z7sJ+vgdiTM+Koy=n6AJgZi;o<#}kPPerXtiJMLX#~$E2glsZ zC}qVe6O9Sq$hcbCxq5tK1Qswovo4=?HdW7Fkw+ANNw@(fl0X~IA&w@@9oi6>o`;u3 z0d11$SZZ(#Tr(AR8!H-W6~8kJ7S+)~?}C)t1y`e2nC9mz#|pENQNI|peP6rX z{S>{hcZcKhJJb8{`!e|cU7F(&{|t#1#UY`!qiJktN0@0E)<@==VwV*cohmISaV@Kg z$ZsC5TCcidIL1t_*%Y*9Wt2&lHG3z4cI?%}L%>sw$=2A|q>UFOJmk_nGcaLFIf2j@ zk0(t{qBM*^l0*muT%?OikWkQ#ClzK6TE;Jqb<*1n+0;ZaE2l`s*LgSv*|w8ipWN*J za17h&4;0*ekB+C(;cYcY^PbG?p%nOgW^Q)V)hS3`bpxuN>u#j;Ja)eMI5~Qqh=uv< zkt@a5Ww@%*5Y-ciw#*+>OZ5j(Vv%qQv=5iG+KjWPIkvsNj!jq+DUrn}VM|j2P4tCX zzuA)v7&BXfOu~oAAw|!N8b%@?(O0xS`dtTQps<%k;TY0$he9D;0MSz_g+L7_qnGP} z5(xJG`!`g4zw6`cW7t^7rO7cfdQ7HxynEgdA+iRG2y59aNcjv(4z+|06l9i>rzHAK zzqV=y3ngAuil_|dz(E=|-f7O}jftmONcuX>LbXqe4MFj$&AhJO@tsx(ZAO_5@(hzO2e4|ORkDA2`S`KcBYxddI9sKj!Pyi3Le5*)xnu3sFT>>^P|`Ai(<8N4zZZo->-S<~W06(X`7ttRYJ; znPr5Z==WS|R0?SoN2~#l+ske9J(aKL(f7-eM(uX*GsU;F4gIs}!%!e}@ak zx?g9>R?jczK2I;_;Kz}xzZ&XT8#@{}m&3h?G#h<5RYx+$QG}!Qkw}$I6Y&NoJTBr3 zlDxKP`F7Hz6vPvsf~^ zMwN)-2-B74S2w@EL~S0Y@-{mS z$@)3YmpZ!&_6@=@vkM=5<_2F-myvMzyzUvtzPTpeSy-6rWmO|`OBGFr0?2^qW2^7lNS4K*0&Sr+?|IME

4 zv+G9^Lp`dp#L&W>{l@o>TEbr5PQKo4UN6VkEzR#RbCnD*%me{z?3!1?(ME(PNmq53 zsczr!lm&<$lYxhJoV6-Go)O|e+666{0Y?qYge3^lmLxu;UfqJA{H@t}AX|JeH39J; z>G6GH)|`s_gd{+^hz~4cX%HlcFyVlSfX|LVB_((8C(p ze>6reK7YPL^Xi&JnwQ^+X}CDxZVW=b!e}_DV21 zrAX2vROK0hjFyw7;{cGubwgrb$047LJwlHAjb{W2gRL2*D6Z)+==fKvCM=~-a3dm_ zw;mNP(`KYWlRB@4R^1ozyxySxvV%tAHXIZ6iLpJhc11g4qPR9AxstNPg3Sf zHKTunahrg8rU+@UXDJT51!83CWLzCTpGsm`68JuzYWN+t=CZ%L<&^O`%`P?~ZGA7C zw03_^_^AXn|N2nk=Kb|c@%eB1=GCopYsBlZyhrI{p?>Xbnlo|;`M|;*g?VF;Mk1$l zS(;j*Tm`F&Ax<%V;f7(b$<{rMwdlIcghB$0Fb&{ubZ8$YO$3$QOH`--g;v|;^Y=~J znr|d)2LK)Rd1}>K7SR@d;QoxZt-~ARW+wZro+YbA6RqCqk#)IYwCg%?nZsBer6{0$ z;)nnJnJLY-Jer)mEkzS|VPT<5=B3yb>0`RCd|LTRxx1R@IBl|LIt|N&lzmX~7Zh4F zPtM{|HDQm6rkV>9FK21CS&*g30h~)`pgewqE-6<)d)Ms1GD62Bo|tgBES2Iy*>ZYD z8ZmXUrE5o0vQdHh;h8K`J&#**Gksxe-BeVm7GZn3UKk$a&6XC>JOb>k)dKHNYlWs> zJSz;9mUG5&Tdc^>Id_pbEqObVJF*~^IIAvvQvNa8?g3##=Iv0-x_o?F`1rasLBl^f zq-XBjV9^%8{y9>HOj|pPaAW(#VJv?LkrZulTz&jil&ZBwA-C5FzTe03tnx2Y&+V+M zOityFHByb3o*+I|O{9Y@QZ*8MS0Fgcg1dWz9E;}}i47uwG_|alx=>1f)3Hq)X=^O9 zWM+Cja&?tbM_ZI*N=>vSocsyin`Oj|3axUwNq4jihf1c|*)g|%0rn~(9OvK#K9o*$ zlzX}m_1PtJ4A+Oefd)G|-2}e%>U&}iNAuCCvfSh}T5abkq_(6;7 z?e?ouk|?(4Yh$*zInp^fa9QXm4ueItLR^kLhW zIrN0?Vhbl#M9JG575YVZ*0i&TGq%xcb!nN6Sjr&yYUUlx7wRhRwd}Q ziAh?1u#3(zEj-J*%;+24zNRv-Vy+1`V$fi)jSSXGh&f6y0F;`uGVYlviC1vRAPte{ zxM=ijnTz9manX?HR&cu26Fm&ru46G}N#6K*JZ2`ExofD^=>3rc&_-h#OhAWqLDQFqD5+dQQ4o)Wuz8U!^?PYvf;FS*I1S~s&?DGqm2+ZM zBDMf4T%I;#5Ji2s(HJRX_u=l_h6iu*#`3rsoQ0Hp$Q5Nvewndd#4cc)7p%OT)A`1w z>psu6x*hI0zJkZ=<~b*4@y6cY&wgoeShJ1xHv%=&(8(qoH=8O(* zRFoH{Nus$+ARFTB1 zX**)Zz9=4FaP9*I)%{86+O!=W5!37$Nw3kEk4|H2LqFi0HOf?JqmUcYe#Hd}|C+sb z0M7*&GUUX$OL^nRC;hN4lNA^5!`xrI!_8u+IW79h=&I{fX){Y^mm;9^5hi`il4C7_ zprlqc^QP)`j|612?gwROqJICBIY zOQh+3^^*OzRh&6#eU%&KNkgWkKr8q1fYn;3$~EwNTGSWNEA=r~Y#R^{gh3zhx z-YOJWPS#ADNamVRDeDqFSd2pkoJR?8MbLNPKS(N?LCzG}*nS_ah77 z%9A@$=DCTb*bUof+Jh(QZK_ZSp3gS2^tf)0?}p*1Y1|+8Ch-Nl(~^seMLuAfykM;9 ztcygP_Fq^CYgB10|MCeZ;02jS%w#t`#JeOZ{!tsFMa252S=azFZw1aYaba6Iq{Klh zFe;ZhK_??S==4P2WY;~Kw*u@9(SY|uY~DFztq1~`=ObO=9mLsGLodW+=KaojS0nrY zS?mQd7)ysFA~Oua8X*T-29NSCs~e_@5?3S_(64Kv#l=5U8golupnSW| zKt?!5N@?2{b`u{YkS>i=8HAnP?e{8c;PE|AmFsD9{rt6Uy$pTh>v(bt-P`^sZ{K;R zkyEGM^Yu{jGM2uX85+C8s9>fh*jW;(R&}^6>vkM9 zzA33_Hm5$bPAi>4kneK@$@k0;zA7wrX8Ov&x^_D3c&6o7>!+cgNBHd{WpiE7Tu6N0 zgp40Jxy=zvexk`hDV<@5{z+etrM|~2J1du_;oQpnwd=p1L*RTisu6t!kB-h&nmD!H z7nq8`7nBz;P1)|sg5nSp@tPPm{#7M&%!L;?ABa6u_%l&z)<}wcf zier{q9VtZ?{c^TkQ*0IsfHJ`HxDRzy+TSGsBKk&1M;=pT7%n}WzI<+sor;tgBP6D7 zsQu8Wa@1Nm)gA)W%cjp(D?QT|lId>DCF&GDbCmA?0f|6%zsx4)(cUYEA6|Y7OYJT;rThAd5TJy`a~7d={-(tS_na@A8y3*p_#w@@2yT8Ga^T*hC=R>>@w`lF(!#(@nM_8@U_as-dl$23BK{n6FmF$Q>?G9(91Rb+)(j-yvRcaAuQzeXuF`41g*>f0^W3<6q7@ruYT=IG8 z)x)?>m&AiG^O@Q=O|O$t?rIVb+KmQt(<986L;9glsx_(L==MFk4j#C9|I>SR-u%+^ z)bzz$@4PL(eyzOl+zXqVt&Lymb-QDWyO($Bg`0KSJO9`v@@{xM~`PUxo zzIOV~{+Z)@n-@>)=;{1%Ck6dDCaXq-jSA8$l)X)>N!xAuCZ{hgJ!Q$ABX9)~864IQ z=G{cG7(gNMrALs1Cl#SJj4Pk?zk68{5olS(`J{CCaz&|DBuey8H8+ zH|;#QDVpf+zHk4^cOJXh*_m^`=aZP6N~y~6V@FtCTV~g`UF_Slmyy}+bn_l3PrSzB zm3bB}T&1(PMtQu(uHC!I;-vbW&-uVT_bxtg&%M9TkNw#1|IwE||HwDL{_82d=DuFkyZEuQ$ZsI)qX}&RkU0{PnP*a(BbwU{U|^4 z3%`Kt$CwM}Ir$%dkI}0uOp9VDyZ)|s^0r6cz*|4~4qkiidH%&e`==~iyu`}d61_Mf zDwSDjwHWmRN>UL>Rn!-)`xECWOHQy}GAzZK&DzniePkpFrNj>dum+>^LKR<%@cn>^ zu`$-O3}H3pDBzYm?qFhJgI7+TNA20dQoYQob+q~kwQBg%9k<{0^qU@e^mpFy_}fqX zY1ht!Z+LJHn7jVxr=I-!?(^r*9ql&PH+R;X|I8n4&^% z0sU)Ne){}x{MJuj{P^#GZp%IQzB=^-@BIB8ANs(F|00CdKYSz-2QS>+e&y)B3#VSW zrMCQUd32o+7asnQ+vi5?NfRd{Zeg)}m}N?^XC; z4}3q2#dn4EZzu$ziim=UR&Lo|uCk>vO5GSb#v%fVz#_lPabY_USn7eBq!zY_s>DE? z>57^N6se>ckeSXiFqSa#alS$Yl6|tmoRpkN60Y5{`^YkbG@DJW|_~5H=yLREsJtwX%zi~9GGHC)(f}qx5UT7Ly zw{Yj|I9CrJq^}L0RQO5}C?D+rQT)4;ULTv~C{I%IEEOq;)0FeNO;oL8a)pl|#8Prl zv5G)Cv=CSU)iA_Z%W~jxzER_~l4Sqb6t0wPciqWN`}Wc6_vv&xbdwGXtrnHqD7l5Y6okq{xYut!--%3G>ds?Ecqloz;TeUt zg-%R3TMV8HNppRj=U;e%UO&MTlCWAr^&K|wsO{d({NxB{ben~RMfQ$wY#|fHn1yo|V;!qY%dGc0Ox8yjt&egx>0z}k{Jfk+1`?->+J}(Wg}DOh zGzu6IimFoxS?1u-Gg)a^h1k&n;(*blt)pG8>hqelXL;mWS$ zn};7>eEINw$(5_yY}|eKdfZ|ol0^&GlgN=V0%NJf2Iom~lVGs;_=H9lj+i)V$@7U+h+m3WYxYSI%nBdn9DQRD(#I-` zXTIH*I3G#>YqT@Mw94Ya>%U zKQ5n*4jg#$eUH8CSMRw0zLoFh*xvWh19PAG^rtUYY9)>zKgzAQ+{)TglV_iL4xKsT zBq7t5D;F;D@I80ZU0g=RDV~%pE-mu5x4->M-_7g%@Q1$t^FREd@BjSo{QmEM_~g@1 z&7Dscf5@(;gsJ5A#~xsG)aT6VI;-tA^XqM@wK52SCp|nVF}cQb1JgQV38aUoJZx^T zp5dxXcqQ9_+>r*LGD%%q>JrMHA`*^RScH@`mBH&}l=kiB;^rEY3jv2d{{=ohzr^+j z?jV+M+XsG#6SrQ(l;c4 ze5t?=M4E$J*!9m}3c-rXxu;*{QO5YP-^CLio)B0Jd7k4b32u-=3Q3-(#rYv6-6X*` z0u%Yf)e+WDUBdO-JbKGrgp<|Zj`nRj@s}a1Z^d2r-rI66KXK^jYna&Q(s-H4$L>R2 z+{Wmsv$)IG$onZ?2uh@2LrkEEg+mxit___|mtF{)M@MkZv5_TARVzfogCx72^xwEf zgeW}O5}Sb4C?Oe_A$2Ed+;*WlBO$DHn|79zm=TB}*DvVw>X` zN#7Ku7EgwR&PT;L(r7{<@jb<^Frbq3-@0+|g|~kB0mn z@D;BfInK_Tw$uFb7g<#Rba_-D&wrrj~_ZNAskNwaO zed^_1JD>i{*S~mW>GY-jS*!ORxp{6yx8M|v2H{H6K;I+$awAQ$^ zGS9_lI*e}Jj%NcJo2#sEWV~?Vd3viYk~rt`wX0~8v1w|Wn{K{|W_6Sk=T3pMthKv1 z=`$`pECty*lj4*^8AsqClMPA1z?NC5kk1aX2ug}rwVrkli>wE zzVNZOPbn%>);>pHd5(6w$=*G;vbM7J+Jgu7AN}c%{oHSVH=o7R&pxwrWMXvjj(rDW zfP_&{evb7NUaQA>-69G+rbi}N?lviTKE@RT`$bn1SXaDe12a;zFy)ij>>Yij} zZlcugejt(oOSD(jF-LC`>D#l<+IDvW22w385Ekv1kS_3-)$!AQsmifT_X zRtc#1W&D{<95)>cgo5(35I#tO$y9wW~+Uwz^$Kl7tM_P2ijFYf5 zk)*(i%PHlC+(M#6;VC9GT6hGmXrKE+qM{NnU%o`A>@zz%g9{veEVpjj%DuPW&GgJH z^?IFVv&ogKS7|j`EUqljjytTaEVE^5h66iy@$|V1+$RDMHgZutY| z;$=#n!=gz9WWrDtf>;WKb(pwE)9bNoatmX%2Ira!R8fV`zmQ-HXAnVQQYZoCikh)= zg3LNnRjf+$tOaYSN`u$(}ga6?_A*>U>^#A=ZPe1?2#=_!^ z*yw(^+~55B4jDR2?fSb6&`^XkxENfz((L$?>AXpZ?T+q*)_R|1JM-PS`u4qW^q#9Fi~UR z#eIE%_;uS`NS#6ppENPlT}Wvoqirl3l`0$cF_IvpwsQx0*dWfAS&0o-=dQBe?=#bu z?Dxm1&u-KQVQcNxhrP$I-aC$a#9r%IfZnu?`gcA|MDrAIx$LBgm_~kv^GyL?HpIGT;kaAqhx8H-8bKI z`0xDfpZUap_{8rXx%R~;TUD?06V%bXOu@CLM%YlBtO|@}^HFRuFfQOX~ zhDryz^MT{R_2T*UahX6sxt}tU2XrbSr<}mtatmW`xtG~D-%D-NIC<#NyU=8ZP8eU$ zFe)X+yeC)*cY*tFCOb95IB0^8HZ*q)DWtkNj zBPPbg#m1Ye9ARpFj8e;z8B+)@%ca(9hYyb3dB;6}sR7iV`}v>$xBuo>e_c8B!HuPb zU+=cpDJcooBa9-lEW=5I^nKEPLQsl|4LjE18Bo3|qA&+mN;*gaouj0nB#Xi29EX3M z^n@Vt1Fi;!uN*!|G%~@SoA$8UZ?kRl77o7hGCD8pkx!gB&i(h_&yk}?sn_d(}K2S57bUwLlF_S3IE@%6)3pLppb$(8Q?C6OV8Pl8tz&yAxgG}<|2FJ~=jQ)@Js zo}FQCZH2-I=+BwzxS>fLj8#cNt_?a*@LY=LBqaoqgVM+(W#bX1IW1y3sivzloX(5r zTtaFxtdkg1h?ccyak8*jlB(FZS#}!6gWIqE{%1e$0knSi5ASdOkN@nK#!d6BabUn} zVA7m^nz3m5TrrwBvxK1nm(%l8Mum^CAVtBJg@N4bJK3(E5NbeLit9@_#bAc3cnn*t zsM1+NKZy}4pj<9tfwnbV&AU7wFVpfulq`|>f?NseY8($mZZwJ0n?EbBn;|m~ZIazMBvKoxe}{z#dBd4DpRuIQ7NP5?;N;Ol=G)s_gl($JzO| zcVHiV2TyGO1HSs{Kjwe>;g9`44%~Vm`(DaI`f=Ro_xseVW3*cvB-H>IC3ik6c}}$= z$=2tH(=MB8mYV3Zktl?OZm;*3CadfCJ3s%kzwz6@_3Jjb}yhEB9TAiG7EhEtx z()S2UC1R(UnVqJW^jTZ%QnQi(5S}XB2M`DulB1E*6^mW1yRiycIzi+q(oW1mZ-dpa zOL^6CxYNZ1in8ZponZG(d$@Gr0?oBGE}T0@tz4$vY$BCJILoWAyu|9t5))&iG}oIL zQJh?!r^v7vEU~p*UqvAXA%wU=T!rIB5_znX7ah>SwxH{3aH}oaYR0QobYQ_I2n*F9 z#KTc4N7zzCuhZkUH{E;i?l-*oyH;?YKY#vy2V*{hvFZrB$2YNS_9nJ&-O8qkkS1{H zzIs2 zST2@otfZ6^s7Z-*9+fB{)HxlU6ANA3q^(3~L0~LiStERl^orbFW3UyU*(E`y!0SHq z&8dt3>p%U+^>pK{)Jh~-lTy|~DoHJ@a=2$$bA^?Nvz7*7ak9yxBX`5OQ55ELgC!$3 zEI^dFzG$*A^OvGHL98o`%CwSb;pm#Uut#wzx))Q88f>kOaBmROU2z=FW26n(=*DzJ zinMJaZwu>E5Nb&`fZSMoA&b|tg)AXUGfFl@`5vh;#m`cKQI^X!pVt~C#->K7Z`s7s zwI!mVjn*ErUo`3#_4%~X+%fU>x|*pHa$(!yOpaKFY?kip5@e)3(T!7 zW2_~Jy!<<#^GE;wFZ>_>KDFhQFMr*rOXnUMk2|bH8MRW4TF+8Lai*Lg;+&DLW`fwv6#*kEKwAx1q*QE3%d*Lfxu?LRBosm$#=PK$Cy{vl-Zl8{^>tEmz+MGm6&erU zFqr8A-wFIdcMqNnbf;{4(885Lf}m66>Nnd7)n7?9?PJVOThQmdKOz$haIPcn{ph%)8!8 z?Trtk?zxNgsVQ1n!k7N|kNEuOKhH+9Ns=b&eee6efB!vI-der#^(YM13+&g|4Qzxa>-;ScQIyYD~C(&OamIkj!)oCD!>I6F z@AW`P78VvLm&@$mzn|mBj?wRR38E0=91lM95DS;D(rj;_e7}hDEqG2+k%l|GGSk8% zkwuqE$YQoLLgLj%d7`<(6Pz2mO;f8e`1FZS)-ckOrn?Z5rSO08Onla!6tI_n#2JoD@~$omOj z`NEfIx7$4X&2O@_v`nwt=IE(YG)6~Qo}1^#f8@vi@f~;Hd-6M<_rRMUerai=t>+i7 zO;`K*Rxi&$ID{wgDJDIvHq=$fdeTE1!@e!M=-Zq;&lwG?^mIx_QEmtjM1xJ@`E^&@ zL3(Iq;f`UQ#o9uzhBlZqEBrBpK!pKuC=rb^vp4VL($YN5jV9wkNI;76Ql?6ueY*G}2<-UcmJRt{*l3t(HGdja$DbiV{M;mOa)~P0z zW}31j4I_S)HhtaHpN@F@r@caG3Xy3$b5u$XrVG}KBJg3&Ql5OG9mmbPwT zWYaWD3s+d3Uu1n@namGSGt;y^%UrL;x%n%+dh|73c;*=nz48j$TE<34DVNJfH*MbX zmD$}NmA+UK93`r0YVhfZ?s z;30y^I(r|yhlk$u24*+Sa_Q0~Os-j5UM2A@kv2@?p~;~Z5Q+esYXal&a~M&I2`?a& z4o`ruJYo%BT%Tj?<~{7W^;Vwy##1OM3L9jjDV0iCW6{P^sZ_|ajLVm=pz{nRiofT8 zJMO%bg)3KCUSCD{Ug5B+HBw0G3hwYKObCxy7?2X_1lANP|07Av7kaB)E&C|x;U$_> zYqW(p%jv{1eVwEH5IjYv-$w|AUn#S?v4J0!nVQ*#$}{}Ai%hO=?9C4zxqE8I)<0G= zGy2au_Rl`|%(j2`JHPXfeJ`Nb?cyuR+Ug2Mr>tGO$_vjuLlSqna`__1j~r#RG0O7V z3UQj!@Adi6hra)x?z(yJ;-B=~dmp;*@RjDe-dJ3n6syf`k&>jLAx$&NA|%#1eh|<# zIpblKt(&(n-(Dw=W2#<2Vhx!rHZ}QD5DuJ7v=|7iDVAYa@j6*S5pd*MlUYM%4Msv{ zHM$!!GC9dy(&6hDj&eF~lX(#h6*1~Owwi!Ze55Vb-=P%35AgQv!@KX^AMkF!^{2ev z#28LHBIf}TjYTU(;5)+9FoQq`HRfDQC(p4$5%{H|!#7w``MS5zcZci0@w)H094y&% zH)>(h4-gvS)&{AtG&axhfvFu#i87yY3v5FWSc69535mA4SjO<}4WMF#MisR)YaPaD zbeiHK4^b}{HHx(kqxETogw300*t2~P+h%rA8VgwOv}x8VOnQ=QzK3*%%NH)9Jdfq& z#mo+mqFH!O`A_&^?B<y4_bDpd0xog}7}W|(pb=Lh6AW_+~49yiX) zMu(^z#DAIBI(Oof`n7-kZ+Om zI(LrETXs@zj1rW}%+73LZDES|KQ{Hu((Hr8# zTsT~$a8ht>VII%-@ueVl1wjb`S(f34C6Xjzbaad`3~6tygEgo@O>JdmgtpM8M+mJoD>In3B&+K|uHNRW_R!-+!>Z@s-^_^&|ga^4;I}{GWQWc;Uql zE-$Z;bQ9vV&**5K*-evpGUwv_RW^+_Sif|I+xP9KU8?i+H=iRHmZkMIy3Gxa9Xs~W zTi^Y@Lw~AB_!s`}|L?cjt+6X{vv$)`^LCx)J`T@0 zMyx=1KAtozI6-${x2mzl5&d?%Zgnh^MJ$K+AxP^_2*I1ovGj`i{F85ZE%|+@{Go;Igg-(ZVYS?why>#-IsjaM# zCJ8#v8JigIzWd$p`JR#$fXaj!k&1Whn&u7T8P;jMNe|D1$WtUaM5!XG)+iln^86u9 zbE7x*7kQ11qi0GN&z-yfg;U4hxVEtPi1r2l^jH2j9=zv`?7aCV+S4KeHwN+?YYj8A)0CnT&9xPDHVD;? ztbVS2VdWp(^z%RcCkjYU96#}hC*^OsWjdYyh$VY%7j z{DliRPvDdy^aCzmzP#tp`>cQZpZt@5@oT=a`6oa3FN4@&g(5Z<=b(=P&m$C)l~#+? zQ%q0HQ0f~t`YQ-)FtT{PR5(z@KFvNkImL!+HK;kcLCHrrK_VSO*nu-dQSZttlBzR| zCXW03QSP1?VG5{bh9pqLWoR46MxN2jG-(*1OC@TRGA2?Q!1M3eOY`NOL{DF#5*d^y z2=fFXB&k#gB^Wa~4XKzCiWTW-QgrnY0_l95EEHDSW#1M?NeiAG_!F7D2q&E&RYgZh z3BiUijHHforA&+|1ZC2ZyM#bHe5uF<=;j(yLNql?ZM=b6_aIFPmBU&~uh_*x$;x6K zl+=_Jgh7d1`}A80rCgC~NfJqRb~R?c#W%+;A(D)Bx6VX9$<;$w2(vP$j-J8~b4p%= zFMsJPeBcK^$n#HqgRK)Y+_Y&EM@}5)Lm&FU$G_KPb>!foF|-OiB^Xx;<$6f&h4>;N zw2siLQuY-}cS&`dwsmae;HZCB5!U*PFU`z-`Kh0|{Q0l_56imS&>wg!JEx~v>MkIR z=B00bgQdkQ?A^ByJv+NChq@=k) z`5{Up7sf&5FMvPQXrHdBd6j5deYIC28pJtU_1!9 zk~uzYW0Kkkch<&v`}ci-ANYxnQL2xiaGd$lSFx=Y{Vb(1x`kWb`c}U0qd&yLnTve& z4Y({?-rv$gh6$($b#Q7oYjrv9%492+_Gm-!H~px;A0nrBp^5Y#JS-xq6w7N$|9x zuRKN)pGur!Yl7S+eRa2A#f+!>q66>Jj z3@e_atNX+TjFxl-#6siaVLXRd8f7GC^Z~qbsX}MV1dCHuCNjgAj4*jpq*5*?cMc&H zzVsP!j;i(8hM*NlQY?vum<;0t!ME<1bC3msuCS=g5-J~@AaE8>39?+%@1=Nyg$ZfW z#|RL1a2F1ILfdF-n0V@5UrfV=2aZObEjBN&6i#nc+nxrWXqQ=43&U1Bso>yLa>4Sgkr~mK2^SvajR(oZ0++VwYwCbbDSg|FhrKS-=tSW?7 zqT&{~ z=R1Qj8tE&v)-+dEP*#xUDM6;t!jK7p?}Y?H;Ab&qq0r?LCq>4YUQ8+_q32PN9<|0e zEA4gSxQ7>pcwRA1WvxO8L9@9ILQ?V-E{z$jjA3#O))5%>ZF8f}75-ZtEGs&r>-ohx zwst~LF7cFFsaHQXcXsLi z$`73RUuJ&#CtjaM5Z0v17K=q}VUgqc3K2L$lVgNNJ4xmo8{HngB*7B`oo3{Dj&b(8 zs>JNwzssl}|Dj+0bnDutXtxQH7u>nu{yWJp@WARAF0ya+F;k%2;0jILfhf)O=E0y)_CIV zS-$Y)&yrZ5I7v8l=Hwf{*AdqIl?(UGU%tSWkuqCH%j^!p8BM33av|?PUT35{N@YBt zqaOBFlx7~N&{h#=@Vf9ab`aSB|BOjeRdgSq!&L5s>nm*x33FAv- zo+EO@YHywYKYRZjWNCih_o1I(c+-iUdwO!%*_?N=*aa7f02oDxAVE=LkZc92Bn8m`6F?AQ0W21~05-?jog8{*dOD{Q-}DRjkN0%X zYyuY`NXaUns;Qmr>2Ug-_kDiP^L@UdHP+^~>Dql#a-pVY|pFYXQ=Fl=gI^ zfKyqICkI_lml>thgwA6ILyCIkq*xUxI~wskWmzTrgkeZt6gX$_#t=mTX<1U_S+%1c zZKJ*S)#}|@x>3MY3++oEK+aQ^o4*Z=K5QLkV4(d1J<`9Cy1{K%yr|F8e{|MMH4{`TjC+>#21vlgc+ z^@uD=tODbLsta|F(i+BUb+TbbT&weukNxQ9-s`n>(+5Ae@WA%+|8#ogH>TIlU-%JC zMnHgK{!zNculS|`Mh`;so+;ZEU9GW~tMn-3_PPw(g)=Q_@^WrJQFr$$fT0ug4 zgbxZY3A`Zm5JT|L{TjtLrRYp6B$7FA{&_Me6H42C-#O z=EPPop<@a=#FizgS1bhu1MRWSvgQiL3W2D{L|VYWveDZnh!t6)klm8H3}`jm%s%`8 zi`TBQvVMsvCn3OTJ@7+|HhSUNmw$To+9E&w@!ObedS2?Sv$!S+!)ay`OMhVa&Y6sfsYzsSp6RK8 zcDspN?lAwtiy!XabI@YwPPcYq|5TJNeqzzRn{bcm!`sUOVwB zNfNQOwa&`QB7-ug71fAU1OlQsgebvE!{$ndo=8Y)ZJdQ?@-EMnCFfj3--0D05SB8} zSllkrQlM3c5Fw>;NFfPAaMn>2CB_;`p$Ov!TfLMrD+yGHGX^Ck&QuGXz(d_>j8JqiI#s_tqgGrNV z>+oH(C;!gVzt%tX%A@)Dpa1V3`oKM3n4FwuV`&KyfHW3WI)n$~JSs_WR5!ee>X4<_ zJVzt=3!nVy&;0Gb`}aQc{ajxk{h43*PWRl>zkcK2{#JY6`tVNg!H?u@7bD46TaLf* zxBn`i{Mk=oMTR+fp6qjfOnBl|T7!)G#sHIV5r~o~ssQb})i?o$iW#5<45TOXC53Yo z!eez6ZDs+dDhnFvtB5s+#QKq!hNvn?ECW(+3BnK=ho~s1Fsw#v3?UVX3~|D+VGWV5 zfK2nK0qwT;D*<9`O@^FhU`z5ye9X{OHhZw7~FdU-ug6YHicx-8&6DMEi;!=$( zlM5U?dXx(nFH}j>){^HrNffiXw8C9?+(Bn!n=Bo2<;rEG6s)eTP?iPtIKq}CK9C4m zVJ%3H5Q-s^!5{@W&U|TkD&OX`l4#XN1y!(w7oJjhlnn63p=F47vI<=FR2{$fl{4iL2jozyA}O9&Zc zf%xlE%6}CLi3v0|&&fwBih-Aulr&^nW$_7+5`0;08RUp8T0?Nidxk>L@q#{(DaB?0 zz1a!Q2JqpBKEmA}{|Ocrm#8f+pbuy zAEehWxDbTj?1hcBiT#KFl3cn*6ohyO8i&bptO=1aM3e?+6GH9itgRETI0)ayvo_dvjigM)Mk%Y${}4}a97->9Vk?AIR z+$z~{B@>f19{<)iIePF2X>QrKZ$HMA>^rcRd+xgjp%hb-Q}k;+vi=sw?>@}six(MW z9eRt`=xwiIhAFPd39O@Ct5Ga(bMPbY(fLTDvTUm{1RpH#c0Y6BPN7uYdb7zWMnt zvv+Ka#YRSVra^HcMNzVqc2J?J{CXM@K@^bWmX-<`<{LQY85SjV)nM$%9E?v9F0HYh zI<6*~mFb!DfAjzMU;o-&CrAx3Ot21L^33lk~GWEy7J&E%aQV(*3w8enZ1w^W{ zIP%8RRi4ejP$o4lT$-mXYHT+)7@wMAVq%=HeB~?Lckg}txBu;b!zVxaNw&7OM%+Nh z_VzXhW@fo~>J)b$znNFgyg}Hiv$nL(z!n5rv$?Uwfzre4sYL{sS|ZyiN*45-^@lzfWAiq3LlRo`oc;vDQ;8c08ALlS_jEF3o98 zPLL!~_Jdw;KmN0yeBraF-uNSTcK#`s|yRX#v*i? z(N0=)okY2qX=#x~N|xm;iI_ZQ?O2&|6zVaoPQWAKL$Sf4q(!^RzC?wdD zTBC+31og2N!z`yTo-`dYKR?gb<`!9&69$UytqzwiU1Vx%lI?Df!Z?tc!c@dUtwLOu z64%=#`wnsT;(0d1fR+y_vjP`L0s@M>q}^__w7f*O-$TlZixq|eS}CNg_upjV7wLKiwJ_+D2`3BnH7{;axLxSk`S#m z=g*&^Kj`!D2Op)?YSCykIDhd17tWvMYma?};c!T44ENl9H{bZ$*Z9OoKf)jzaPjIT zhDAoGS`6}xtSl=WXKRCIyTy@1M=8Ji3P)>oHu~FKj0~Mx#AOS=(Z9lX*yL|5CiqT{ z7Xg_wCkS4rpqCnR=9Ks>U+*m3arexKe>O%p=ky+a5= z6i28aC~m&{u41=f2`QbB0S7(6ia z8ho{;los+@gw_Qg@29kv6Bf#Sq(@>FH$8zuJ1A)d-fR))Efk{%jO^;37~5{ z-EPiQbCT(LNuH(5jZgnTy1mbS?z5lJIx3FceEh{&7~AL%+s}XD%l{xfd*+eau%J0H zMQ^Odk9_Kr9DL{@e)6Y(o`3z%{yBgAd!MCs%dK2kTEeRuWF<|}p|B-!V;mLK+1Tpf z^d<+}4Q@^ahn=EOf;<417kDWNbVxK5)C0}s^-aRUp&iH_+$zhc*AhD0+myy4gP1JK zximkIF@|QdfwP7*OL^?E$C#d;raMR(rWwsfgDg#nY6(!;PNU$|#wulIX*o@a#YdW0 z2wdq%YBdJK0hcb%)9LjHgv1t>C=L)(kQz%;uOWnBY;24uiU^bj=gCdM$v0kS&)i{p zP026)_?;BpRW5ESE)U1p9&E6+)uEeZc&&+qW=6MJO9wb%sgF-kn3Au2=_`Ek3xCAa z)D&r&G2Uu%{>&LBCnxE2yDZGlvv+Em7hZaSt+d01wJX?e%HFLmS&>qDgGZ96k}J!X z*;u^BY-xD3*(Qh*UK(t1A~h_BiZqBgi{+oKo#2u*lu|J+18gAC4uU8_h6(doL|9~` zJxNvwN?*MuRXmrY%(L1LTCC3h?(aSl{U4wGua2yB*xaKqQJrE?AcP`Ob$W#(H-c^g zg)b|ztKvyXEiaabu>s^Hq>u7={QX-J2|ub*(ncghsiY zTs}s#WtE&EyxSEwyUIkUYP}H@N-$1Hi(?KxXOBUu7vzxiZ_v zwi?v#Iu6YmlQO0orHmih$Jo>u4+Ig9Klub{7gjGXBi8#Iojt&mju?cB5=-noHUMEE zh?^|?>Qpxvaw!; zCL@VMZXKKAf$18zAD_WmOPOvGsf7KBrs)H`o?u`LzJ7L*L1$|Z@O{}5pMLt~egEno z{j<;i+W+V8C-uoT&p!DCKhoaI@U_d-xBIk=Bi>r3anR7Jg%rTl)C_x%AEP!m$L$9X zG5GGYTv=G49%`H^NRo)C7LyJ#WFTn8371{Tg-~#FuE`>Y&L9eESmy|gp%F?tGUxJR zk2AC>^(bW6*&@&Z?|<|GE-x;zw7y9Yh6DnV+Kv#ptgt012*ZG~ELmM$#T!ecHAPy5 zGwhw7CCvwHT_l|+PsAkRrxHc6Uo-uK`wOpLdY%^IcitY5rL zcX^rh{st@S8$A8|bNHg9RDz+Dgg#{9+A=rabsuAg_cPck*zD$9*n-Tp=sHKwJ9@sr zl?9XIH73TV*_gjTnHC&Ac9d&Zud%tkK@e!poIk_G`3r<$yxV!kam?E4Dv_34ygbh! zPYG%=#K$Y&EHHlu<-xEGs@ERRR-M*b{gHU8U+c>u{rd&I&-Uf;x7M{{+`l zs@~Q?i5q$;u^TeONCBg%?2?g!07WSyh!R{76>ln7G6)JU)Gml#RnL*MrXscM`b!Ba z0Muk910is-@)~M7L0wd}RZ;Osw5xuwQGhj!ONbX%sBLsu>ZN@1#aB4?;SZC`nEvJ_ zGqW>%`8!W=`#rbw$}`_(z1L;m_%z#L!6D;G&R!&Ml$c1P0)dw)cux>UlvHcreyGT6 z31y?nv4C7cw`ObIw;LrW+umAFY^0)rw+X$8YbOH}bM`#>3jYYiwaKcUdp%F}A zoI=_fVQ8W3a&={knjK<-gw1}@{(di*uYKvO|9Q7Y^1Gk;ckHRP8LN-;^6DbVCm!M8 z(WA&n(hg%nrLec%%y4U!KYHR-zW(^v21_?@ zrzz(fb!^gROn9VlltF;77D+%1l%k~UY!WC-s5Hq~0}9K<)2G-P4hgjw#c~L6mZB(- zc$C(ow!Jz5hr=OC2D`4L&N+JBE=8GASc57Q%~}l;c)HmTSC&X5QLWD0#4I0q^n={= z@cp>4I&G&ocyJ$k_U@-Jg7q|G@#K?>e>oY36xgU>ot^C z;8hjl9)=V}!Q%1~aHS^s@!nVdt^G;i8f z^oC4S{?{4cT!5C6NC;x8i`{vL8WF<`FsT(|+Zp?^RVHFVH+!7l%ePp}hum`aJ#3u6 z#Fbvo#MC7H;gHK$=1GSI>egH6U-XnADDSBmNk1pes8-Bwm_*ztImk{}4sTBEhXJ21we zwW2hhZnulWAiSq23;F}kf95aqi@)-pvS>SOUp`Oz#B=nX z`X-SN@ggR?;}(A8M?b{J?!T8G|G7``Z$I-HzV+BQxO({#!``4;0yx8qFTOx)?l{c@ z2Pn_HLfPq%8A)!7DnwOk%A#O=vV{&JHrKa^qKJis1w3f+<2^PA2thLypM5ut?pwEOJ6XmKSS zAcFy}9#NDfA}wgdF-lZj>c%kVE6=adY#bv@S`6_xnbMkUGSN#}-`e8p#WVL^eC5^J z(R=S1?siZYPO0r{S8v)rbN0UA%+=fCQ@TaKe} z28+Z=g_8n{tfr-%(5Vsi!1HJK@H-pCQ6!sFK%h`snKyS>QaUMRHU7!>RvrVbv63o{ z#%eM=tCYlE(eMI`s`P?4+Rp%6q9Cp-YQq5!ss_EYOB^UXUyJ&@c={C%-ghet7ZzE0 zc7@KcPf_G}skk&AGkIu^_{wFP)=^4}!(lC`Aizn1k>HyN+p)xVyFCBQbF8Q7bD#Xw zU;OXh?f1BJ>Cy+XEJH+^S|q6{g%UAV35GtaM6@~pFEOs5o;V&nFvI6hE_3?i3y;EI z|7Y*@4f*|l^1uAu&TxHtvX`-?u2JsY!%dBY>>HotmfLURz@b^T!h*rZ7Mq3T!leb2 zkjzX?qopSwrp!&xGCRA6H%`2U5CUf{));bI*|A_OQL{;HW`^|(mw3JCaVrVPlE`Vg zC0r?U=1tBi0jp(6y~t?9G0tg%B*K;j!~T##ULb>@a+Ne@7Z7#MRo2rZL&WOumA#0R z5+xN;6rsa}BFnMH;Jl|SN^qXrZoQ2|M-GvuDSK`^LSwegY&Rw-m$N+GC8MHwq{R}ff9z1d`9 zW)3yGhu7nXFivPT8r19S+|=2iwb^4x$e}Z5f2Q{@{?$L~9zK4`^n2}%S6=@Sae3|b z$zJEkbT%X_Q*3Cd*Ahf?ih*?Wq@zUQOaUfCXkB^J`KkdCIHV9LUxiToc|YXHE!g4l zO5#IJ5QJ|Y35AfA<%hVjN&Ay51uCC*?*yt^6tbl~HE*$AP&!9T37Sgox+sW|G^ayB zeIg+*QndE$4JE%^Hu=y}z#q*&PiOBKuXnf6))R#hU6-@4+U3*Zw@|!x4OxTrrpII+ zVSKgKl$Gp8#hOF6-Nb4?}MZc?HrTN=B6$JGyTq<4D$(T!85KYZ%t7k*;p z(8S62|J=t8p8nd?Y@ayE;p0c}k;O-r!~6GOO+d{kT(`@?$s#M71skr_2TlwZUzJ^x1@*lSjsbyt3Z5?qvLAUDkL&X(e;#D2z3mSwh`;s$RpOeba8#6bZeU}p;#CxRg=;vEQkB-v7*lm$VKBln zt0IQ;WWyopaLAt7878Nvxp?UkPk!qgOg1LC?XLI1!9DE#)t@04eiGAPr$5{x&n>5d z0GZ~@&tK*nU;jpxWV~-b{q8pN>&s+ijug=8Y$Nv^LQm|a*vc3xLrs7w4QN4oY@Cga z4T?OkNWy@Ul^u%Kdbbd3t*b4UsJbp41l)c1-K4!PFTVUT$ZE~6@m#&SP(^}?>OLyU zf?6D*yug-*D2(vfD)p(|qAMbv*k0mmYMq|*L_R=EK`_>0veDw^y+`=aM?cOT?|+Ea zp<`?>o};_jr&!!VTs+Am!7{iZGh-73gOcKpzWjH$iZ3EdPrKfr2qayp2Oz8<)m<_ zceDbH8>YxA;27^2v5fuOc9f>PZdh+d2`I@3^BM>kD$f>@8j`y7w56aS1Wl@KqbN$O zuoT*32}q>nCg5+j+RW#UnWVwDy6arEhJG)j+wH)_9-OuG8X3tT1QDZjMq_-OAe=xA zJB*KyGd_KQ?Wl*sp8n8B9(~si=)2E8b@=r&Z$wJPC<>0W6XqtMK0QIwI!1qRj#jck zP|jfMA%U|D`Z<%0MLvEg;Q43Is;_?Gi;w*HC;!6J02^Qa_5+=zYd19)FWh41SMMDz zuHJH`vvK=V3n!2ZTg*m3wXfTEjD;=ky8nH|y3VCH&N4eT&F}o)|H=N@{amk&jTNP$oaXB=xA8<@={ zd}`QCJl$xF8K>D4C9jH-3#DVt2sT8{SYB{s?f?tD9{FaM)Wle-48bI*7A-|tAa}H3 z&LOnKNKcqV__8u~ES*JaaAgTXF&K8R-XW}~mDCW<Fb@$1v-1Uwev;ImMaIDH=f~5(Y;jP7pZyy#Y}i)3t{7_!uTFFlA9uCw2<6_b4TC z&LS0P4c$%$pIJiZkWP>aK`b;z7={uWqs&4p`iN3f=q5{E;6;t`LUUEEGU+lF4177; zWJ_A6R9xY%c#e+m=eD^6{Iy^Eo810mKT-ky&zxcN55Labr7P4nSIHNzGF?>MHKjCO zL`1a^UvoGIMkx@A4Cs4{vj%HzmGGqA3-C%J z0*$m5Ed}*<=Su9^b>np__Q_)N9=N(EEPtzDFLNf7is4-}>#(tX;dx+<2Rt z#x>JPfQ?&x{nRD$vmM-Ui*}r1`-}8s&Vi=n*w{GZiQ>Uyhxk=r=Z}BufBE%0W%0KM zfB5)+K7MKW-k`I2q|7Z#f#;QUomaM2DVmap_wS`Wgx~vjUtr1gm>wJFi1bYFnZ;x| zSLWxLnVjb2>5~LOz(%)PLX<_$Rm;a3Rqyg*7tElw!&g3^>IT}fvAsH1K+n+!VL-HY8COM7CB!JyBfBgdE+AEVpr zF}H6orYwl0q8Zl+0!8U9-Z{qFZTj5~^A|5-i<}?~Xt!IG>5$pEJ)EAuP=WtZMAC>5 zz_BAoIr+v3LR8fujg|yOUSO@+T_8UYy)LOzMQV{hRK-JO?)Gw zx4F%Mi5X_Y78{)|J`xO{ev$qkJjG4leieECJi?^tL|_Al!6Ji@l97M9t#0{JRB||r z#R{>T5M`C$Z9H~O33g})-t*@_^nD-A*2p4ADQ(_bu&UG3`yXm+r?tWdn!;JOY{|B@ zOoft~)F`0{q$HrykRd^ONyA8TX(+>#Utydd3#a*PE2dc4qUg<23l+k6ob;G{q|zUx z#9@fA9zDpoy0}1Jh|hlTBR~3&-|gu=`NWgAKL6BrA895D8(W(+RTFCjUwQ3ywp7Tv zuao7_OadrMde-pcx9;PfJuR-Bf0g$gRgBNh@z~3kZh7LF7oIq53tpXnosLU6h2~6u zlTKOE@^v1K$2s67r=~Q|J$r#@kg^r8aBco76O$91IdcZ36kD5HY;SKMgyajK|3lvQ zz6UvZ@+6lpUuJP}k$wC2a??%6Sz2BpHwC@*ZKRY4B`J-mx*s7b?wqmMSdm8&9WOD) z@|~>DnVMwi3mgXP0`7V6K^o0AYa83t;xW=f29p?dlaaJBF-3z)OJ&1G2%8(t4apxq9^~ zw|(Lc+U+)J-bYGF9LMB&zWaRAG$o26E?v4rD5`(ABm8ZrU^(YdN>LUCajnK!tHt)x zB1M_9fA3xf!;CUZk)f)Ly+>J`*oq@nD9a_2@mPO_Obq#z`Z2Ehl5eK#^lJf039Fq| zTA||MTaR%}Y37zXH2;f#NLZH4Tw7&z!s90;&U$hMNgNXnOf|;&ohe6vP^7+!;44Sj zo4e^%p7##({D<&x4mn!TAwY&29lWJrd4ba-YttWYiL8hk9)VRFlxD*j`p#09il&rA zD6}hgJ>I>iiU3!dMbV?K41Zfrvog%-mz!uM(1zW%y%^+-)#@}GEr#1?sV6btI)CQX zeLwo)uiSRWo$v0aZOZ5ue(o1oSiC|($<>8xTs(Q6G?-#_*e7lpCS{6s3LR!l2Z}Ri zFLUxrf(`4OKDj~q;zi=-UY=Z9VqvVochWB1e8^^?5x{|{!M$>vqp8O$$IC0132O;S zH)Fd$V3-w@#&Y58dB$2T`uPCss!lVCLV{3m?%YLIS64}D4OUjxnA>-Nq*kNX?GObD zg`hB1aDb4KIEZjUkYlN-m}YZ=rChLFba}&D@-je|o>WQ7C}hv!!#w}`^K=V~P9%Yj z*n40ft843Q^*d-Oan=&(fK&*gD8%GB?N*z8x82U>_7>wa)6AJUR#sLjP`W5VK&#cn z<^_3gfYz#V`!I%;m1TN^l)G=glc|YGUU}_R?!5DE{^0lifcL%sAtuJ#EH5oHJ~7Vv z+B&!2b{iMZpJQ?1Dif1qT)1?e$;KEL=jTa_jKY>o)LZB{px5j1#v3Q;bUH+_s)|)n zphilLChEwAI8A`p6%Krq5{ zy(bi!SVEu$DKPIngTV$z>^QH7DSclsn|fM-=M(iAJ{UB(??RWcGG}&JVM~jClkF)< z=wbo_!Z08jW>9#tD8d*^X~C-ikH_F~LSn?|*@zJqHTol{qVE2~e%zol90glAJb{*| z;4K)I)XE4Us#9jv&i_d>>N|eyt>dJxh@F)@NK{clIE)y@d|5#xEMs1cNU5$Wa2~V^ zXgP<;hO9+~Isvs@l4?P7*3}-ciovk``9<{4@8OW^yboqYY!Y%0e3w55hm`qjb3*RIkf!VXFkJo&wQJ1)~BZ% z40;H6<^<^fC@dquHR>*(T5$ z83c&YHmk4(;~iRQBCjY0Ij5xOa@HqBQ)X4iB!y&drZUTW`P>C+;|=su8&UTb>Y9zhh+Y}Dyk zi%<${N@`Kng=r}%g&;E}&N*7G76MpZ-$aL+PMR~Y8Cpf41juS^%%#T%0ioAKnIRF9 zS{Pw~6{q;(V3TV;V=|EZVlmE-hjY}dVX}1Syu(%`xl|LNBvMT?Hn0RLVNjH$T2Sg3 zD;$OO7*pX)QV85=Q!hq^Nh9$%Dx>I8&Vqk)*1^u-{X5VU#CtC-Kh#p?M|>_JDh(kX z2t#BLf>LkhVMR%txg7<(t3byai;(c*ZO>8)_a_&uk+1ts<=mm1c_f*KOjH1-B_zO+ zc!=-_;W4uEyOL57We!A%l#;{?G#=|qhTaia!L?_er`X)ae&A8guCF7)Is58UPu}#E zr=I@1k39I`Z@&NGk1YY1%U2%S{@iE(MZUDnRI^1?3@Glno#{PCSjjD)`1p@v@LXM5 z;-*H8mrtD_?QYXZ#>n%WVJIncPwWI%f>Hrx60mmeD$NIPr#6}JzCsgwLljDyKExPF z9*5`xN}02%Gun*f${|WxgmyIII(gsFFNTCsIHC{;PM$oud)k*p1$_5<9VVxy=ytnE zttp*DkLU#>nH4n=;JP{CY{VUR-^r;HC+VamK`kV;u$d1Ky_8U`@$}X=Sy<~a){2le zXHW<(oV$dzhMHDHT9c+jvMj}UOQ-^jgWP*wJAIn>Kk_iAFVB;$^_U211lpoiz#uQ_ zZfwwMG%3=8v^3<-6Bx_Uqep4CTDZxPNTjY9}eE}=_?QEucZ<*?49 zy%=ri!DGM+q_6(3>I~eQ3X&5$?DLVFMqFp1zr9%b_gG+lI3wncdd7Oc3&Dq4qm4s2 zk8U=RI!1(VVY=@YCMo_jnEMaJxsU=jMM3BtMo64cL=IHpMlY~k)1}kNcMiR5< z{s(9snc|^|TNvg!SCW*PN(SOVnwYGv~vqV$l)?!Miy*|94!JOuNZ5L^YM@U7;)0#w|@KI zP!u^q5MV~k;%2jn_ntJZEZf5%s3PM>hl-T)O$UV>#fJ}t!DK0o$#IPG^b};iWFnei zY-Wn7J(DzM#_9HY9J|evn*o;>uV8y6{ay!zr_o5rvdRz3Sxd8CubeQ3Ly|aVd1;9& z^Yi@DFZ~r>eC*rIzwsI^9Z_VK2+44>M=!0$+o35dMZdEgJAM;Ip0l*PT*bZxnk!eY zVy&gwY*v=bQt|p5Z|n+^FJHb)zh8}(Nm66~{=KZMtWp+Pb%WSO~M;5r$@NK-UJhU5fk&XfqaEfRbnp5en&dpTBE^!g^<*b!=l zFLDYe@Iv7&q{35rixnPcNA4-2a@e@BOY;23_PBoFx}6JIfN|y*;yBLUT(E?2JF(sT zIRkVa&(Isn(Ys+##G)c_3LHwwY6)ZQE|E=okWQeof|*eAKvJU-1iZMh%GcRKmzD`R zfoll<>A(HW-}%VZjeq>Bzxwl^>1B~#{OOOfZ*H1qp0W4vL1d%Fr9nY<_8d<>@l9TO z@p>ICh&2_LMhK5^rgAhDlFiO0GqOfrmR#vtIZA*jRpsg-$E2er0MWYgvC71cMFnpjzCJvvfSki zDOGKylv1O`36#cA3W%iOi+}t_)S{4?{d>9j=3BY<;Scf9M?Zp^h_R_69ym6x%rmxk zl4S1$3opLR>#x4bS04Kk!{Gp}`xI$Tqu#(dN1hD`!w};DXq+K48a|8jC)&C+!@3i9vEuf0ajRS5}-Ad5(-;VU=b*+sK~CRs8W8^ zjzztYqu{BEbN3(ZW0bJv93Uk^D?EZDx83pdxQu(&JzHf4}z1 zlfT;BGc#YCm}0VCCk_)%zJ8IVi!$H0icOp6)Jl&)7lkE)(LSB&#Kunq)glN%|0&oIz|DGX)d% zm_1`{uAY9Kljly84pXF32q~+vMC;vxwUdvhl&-9djlp|RO6_j7ysvbAwIoJ(i6{(O zY3i*8cied=f9F5@``q>;4-?sprDvbx{NqnCW;Bx- zI)+m8e&ZHzHkJV6+Ml61OV zgsTMDI}^g;!-rT|Sw#q_*XtN#7z~EgYBjPfqgJaiHZe|-XB26H%S(ox{)itoM(HhS zk>WKNTOd`4(Sm+D#NsKmz<9@co>JJ7JxPOB5TMfmwSK`^m~b#|a%VEegK?WF;jm?n z?w5??=;?wKNvINxx1?o`4`K@KC`axDjDqSUj7$fr1DX*Z(!8agkpB_2T036+*4xVQ zMN5PdZ(5vH1uKd&Z#}Xcfq8ys9LErDB1hHKfs|EZjs%S&ah~xo;;0RHu&a12H#}q4Sk{JM@9aId%pJbx z&SST5d~QGC%mi5^2zwopx?rnaC!VY^Ob4v4tS~t_!OFEovTVp$yUp6_3dUK4Gq}-7 zEJx90MQ%uS#6+V>St`!=*Xe{YQSMQRVa%6EAF)|lUd{*13qv3Slvc!nCM!}-pFTy$ zI);M|wYWwoCAl-mP*T&iih(@xh$_k)twm+rGJ218inw!*xtSTlIOgKz%TO8~dGP%V z@*y|hd<&0!_ye3?Tf|G$s`%CuiXta3O2Qxj=LwX;8Z*iXw-trL8tV0W zh1ED;@$wGr|H06& z9bzsckR2q>S6{p1fn}Trp^-WU86b4@_JTzi81FpNdCHLjTf7BY6F=Zo`c@!*_xBbz zdf<%GPIjuSsMO*{2r@4y5R_gJQ!Qo!A&^3$Y=QCuWPlOS5r#5`u?!w6JX70-)2A0% z+RW(Gp7=^s@;>%1;Pq4PJ&Y<6;%yWV` zA<_YvH3TEeUXVyMqMneY84PnusaP5gFa#JfW>t;8wOs9_yiyKXrKF`5nYAo;2NcDS z```BvAAj^i{O`ZVj8el~Q%z7KtXXl9Ztr_T{c$?V=)_S|-itDDPA z1|hlkyn6a1x)xC{8U%4f+Ut|&B|6Y3Au6IJ(AnH%dUlSqmaw|H%~-vLNmHz=5`$3+ zt)bWN^1`#v)7{#}l_jC7QkJ~6l?#BabZl`DVXXz{n4X*@OH<1125iszO2q9Q&KnRO zr8E~VTpS6Q13KGV%_Z-GkQUYEr6CDxyU*nMNsdQaNE8=jkghg#tO6ceEL zVx(cLd}6!2zr>SI zJ%?6``|i1i`3n~*jA3nagRO3-!auyL09_kkMo+S|mM{tt-qY>%u*Raa=6t%zuyuf- z2SyEbuk3w<}+j+^w#bq2JsTyK%#8P8>IW7TfDjrl`7IN)rPi#+}G(`@%TOi%8^gb}N&Yjn1^cMl-zE0+xKD*|ts=G=P6?L7D7 zlLSSM^$wIo*lJsbguE!&T3A49h0@ho=|=4G-L2M$u&Jf4WF^j#W*Jc&?~c9KH`3xw z%LhgT&L9j~Tw0<(91_P7E=q`kfZhIsm=vsR zEMT@aQ5TjtUMMEE6x*_ftv85EPbfW3ISOGAR^hzEd&gijUN{xv9N3ZhW$7H5E2>*d zj9?eP(?R{&Q3d|53SvnqN8uF~r6sBs4&UBkQGxDquQg3lGu2e|UA%#PFhsrI(z%f*gRD!Q5T-M>%mxs*G%yMlbtZtkK z6|hte*eElay3Vo^yd(=&1S}UhS!q#TB9y>*14?k_;#poid6Jga>1m8HbhfrC(yZ1rTP@16WV74dm8VpJ4PdNga(bH9*f>ioi;Oj=3F~bx&7Wgy z&|&((VGeHexbvpF*xcOW((4ylT3)6z>~L-IGR<1TL_J0!+3NNXLZIV_(i$>bR`KL+ zWawrL#V}>=z&^rugY}IKnqiEPy5iRCXiW| z@zCG@t8~+CW=~wg{F^@@e(fS*wgF2U2^J;5H8pW=v8AAp0%0XU&kZ5Ns6&FBM8ljL9j=f@VD+Ee2>E;?h13?>)lN zeRKTlZ$3%C9@4fN?>$>vTa_b%t}K9h!<2nT4pFPuSby$Ck|ZI^^Qv2RJJu?Sp~;y$ zdWhwPRc2K{a$t;G?z)}#-~4`NrpJkzAt2ay`3kFxOKfyDS(<>6~_6$Q;qH8hURYGY$qFG2K>GgWllR8CF5XbSZ z&hI*=F?!E!#mf#x6pkMG7;L|T(8fsJa^GDo}6*pY(4D}@>=`aYwt zGrSRGg$1FiYtTFF2&|P-5;}LCCWZgMyQ%M`%o*t$MW7&1SS{V#3YJcip_3Y83$R(m zlJ#x`uDN%dT;I`PUR0B)91$d>7rPAH8%xli#ICLMu^5qi&TvCW6JBbrOAd_!cc-@K1&WuMh+SD27Bz;o`> zRZ^YcG1#(C=}Y3cKJu{kBOqMjtf}Z2)?kdKB{Y2<&`xR~;EA<)RzgpRA(0*<99C7a z+(Lv5Gsm5`-pStm2l(9AALCkYgJVo01C8|x?;X|{ilP7yDwK?kk5QJEnh4oGdyVm+ zMrw1)(m<$DDrCCdW^s9$Mx)O8ix)V2_%Knd*|>0(V)_7IKmR!n9z9BHVw|!pSy;GA zuiIt+o>{sZ9afe%nHZns%GKAIJ8%yd=Pwh;5J`qN5_EtQpu>>c?z)S!r%&?2GtUu3 zA=-iQaNj+5(jD}9{mf~?BqB^=2Bts+3Nz9@y3x&CjaH+PZe;Zm#W8lIyzoL)c-ZJr z)k0PtP6&jMn9|_$f zNd{msSm5E>pfF3(nO%%`~KSZh^@?<77h7Q<}m% za%0dagcPHMT8N?=VHlF8DPB4XA<&cK^p|>^Z#YhAgSQeRK&g=ob#&t?tr_I5b;+e< zyW6jx(_qMn6K^oquH+?ey!skp7_qgq!WaMei#+lpAHX@stFOGmr+?uW`26QSOQZts zz3)EGo;=H4cin}OiW6_V!KpK+E1!QUFogkEIn-L4F@NO>gTW9yWW$W{MicD?OUuh- zWkH-In30+-3L~5`l{@DR8|NEE$5P75Pk$s>7CW1%oeh(F0>+*Md+29fWwLNs{E9FsvKc z?n1uDdi?MIA$?^_lVcfKLbjTS~|2K_!#Nb)>mWjRF)g+{V(e~XJ3FETwf&C236wmX}Y z#gHez`E?HLou#wg=hDTC1X}a*i!ah24oPh#(iTdPn-VE1u-#dM5Q4>P*U-YFv?9_G z2M->kv$DpOg{!D2#4AZ!7HA!SbrtBWRJH9>Vnjt4iHMb?bPgq|#AYqzsKa8{5!ZSu zn#ssr0aNMf2GZj-42{7J2FwOAe<|M2M{DC8Lo-oRsLl}GPjMRZz|oVI&}#yxDm#`D zbH-SQmx5Bsip=R9V#E*fQt~GK%byu9NxVaM@_!-cg&%ZtDCDmAIj+~=Ua*vuP6w4| zkn`7ltp7uQSh+Lzjv|IU6iQ=9T&{ulB*Ig#D6}XyYSpt0p};jFa$n-5<4{pBH;{a! zc@vMl%a#Lj?OgJdrDtcLSHEebU?S?<@D*(BjK#V7nbqH1dp*mIdI59 z$(4MKx`4ieBvD92C9x?BR2Z_by259E@3X8gUZEYfmsQb~lC6Mnq;9=)`zBzR3KlF0vWhF(@ zs;WhC?HxKSA(YcaGIssaXh-6jG2<5_*NS5|J9Vk_^Ivap(Ejf#8veoA`!vJifiei-VLU>zIiX z66+btsykBF5eP+T3_%zo0h?wlp1Fii1c&_?KX&w1g1wVWXiY~Lwzs$Gt!=TmvdHTC zDq2de%+F(Sw6rI16+XA^a(w6sa*tH9%8QE=&Yd~K%*+&rj~(ai!Xi_9j!-6JEH7;k zBr&C}Vz_Fx8m&f??afWJ(pW4$Q1pw8!Df!%T%#BkggT_OB~chv3DcpZH|SP|ea=wg z>GgW-J+Pm&$VXV6K?{W!egvEcgpnpM3bHg~Fc?;BeCsepQDJLBVbc_69qm?&IEu-8 zLtJ5ql9({6VU3~R??V7#txl~KQ%`F2yM2bkA;wmz;(<^!(Bw8}OBh@|AhRWtLpTzS z^MRSY{FF<$hdS%FPhSpj0o3{s%ZR?R6_HegV5<;@QdWj{MtH0k6)f+NUZAOxqj$h4 z;oU9)+W!Dsbtk|nkfT^V@2k;Lj%Yki?8IIPysNB#6_pgMDqe5Kj&^)RcRpyvsQB+l z*$@Q&x)|EOLs@$__l7^;p|dK;VGtsuLIlBIi|e(w7c8l3hCm>stpt~{!VN08OCrTP z>9gMfKy#zaveAp8Mdc0c-;BIbvBSh}MH5=?7Be~OmfrdUotJM@iQicKD(`6zF5mr_ z5`rATCQuU!FBRS?q?RN?g0%=NXoo5Sd>AtvB|$bz$6t(MK6>DG9?ypS_SzNZ(;@XJ zq8*o;6&C|O;a!{Lxim#)yRHMo-J7%W3q zppuXhTbU-Juz7)tE0VAbRAr3jxq(I?2x}F$N$UV1Jl5n`1JZh&Em2ZdS#i#hgdxRX zh%z4MORNH|HA*S&zWXkmbG-1v3(U>UF|&6c8=WrY#t^)$?0mf-3^ZfoQ`~v?9h`XK zB_`{2!ntvlx*fI$Im$yAM_6IWvJ|B?M`x$#U0ug|i&c`+S*E2%w-U0ch{@rQBSvuC z)_5pva7(SpoRUbNu}&A2gO?g#c)WBBgvFt;qB_isbZ_pIJXD4Z^2Sup(dUR8E5+{h z`X_I?-E}HP1;U}NL)nS|?R0<}B}_SAg{wGG`CJLDP+nKtX(5oI#f`E8rIc9bvCfY0 zABm9QoyFQp%H(9FHVIutGV(ix&yP5A(&I(tuxj24iu?D1GQan}?QI>UuYPW&mDC_4 zd7cwCL;BVe)!M^@cisDTT0>ZihdJ)QQr7(UKdhEG?+?Xi4b#XaS{g7QIimQi4vZ`f^q^o(lJRP@Inv*!LXo~b@^nw#Y2a0<%{JO zUtFGNwKpV8TEsSHGf0^jtHah1*=Vu<_)UEJ$3M+q__?1$&D1el%LG@~S$*ae#QX(r z*}soY81UeOAK=IX_pjhUwzjq#4iSbSWm&#S8u3<&z|NLurx5MjoDSI9 z+QP%`$GyK!KUi5=A##~W$rwDGi9JScIzGdmH)@z;rVZUmxG-#;hlD>*e<@M<<@r&!<-9=ZfKmx$BSyFC-FGZl0L`hf%`6J>(p7ZL zAE4m+5hyAB&cz{iE&FyRZS;uQlic>`2hf96hTT4Ky-91|0aU9^(rRLL z!1D4cJ~xC>NTc1R*Xa<((P%whwe;2+q>?!2$@7B6#YK+abewC~mRVd{q_e$E5LCF5 zbCr~5M^G9B!R}`BM#lAx9G@F01;DN+JEMTzJkNLO22go|?Q~ez)dhI&m0t`yF@i;g5fegGY`ay}(U0xU{s$RMh5$W8;dp$LqHzHWKqP{OhVDFBgV$an+@_X zpxctjT7rrbtWuTjjKAJZ2q6)^M7qkr(G(?lQIK@|s6mSCWyo%ZN^|PN0bx-Rrx~?j ziYiM~SWP@q$~Pr2|9R3GcFYC6ABAd2iH-wgGp0Q=zW%NSE0~yG--;5H9}w;GNZhF8 zh<63Nua9037{M^~810FXXj@`TiAPhSF(`Tgn81TnRZyZ7geX*L(3v4D3u5bO34zcG zt6(54CeTn6#D%98gg7C{MxNV3h~2i{zio{oL5y@}zOtneLSv;T^PbFAihu7sA%a*c zVibX_$e`A`D&)ahytfz!$`~GY5f8{ce0zF=$6be&^{Yh9Y050;AN|Aso=<%0Q;6{z zPb^)eI6Th%_x&hgpc&t@pOx-_zD~$iuJPUHUf`*(d>NY+OixYFZno%ccSn{eIYLw{ ze`_5AiLsV24A|VL(5TfJYqmLX@DQK+ znV;t`e)^Ztvu!$8FSGFUvqZ0-=;l3cpo>LPal>z#0@N&~jL^}7*c5#IwI79P~DjHEh< zl@}-nSy<6&D5`EJ)D?c014HjAkqjFNy~!4KYK+13IAx=OZ8s2cf=6P#gwZwVe3gd7 zh?WwKG7u}w7_bUwt4xG|0I6b%$pk;;Dm~}OaB`#HC+ZHVt!@!-bP2jWqE45_uwcS@ z+Hpch7&33sNTl;~Tmec!lSC+gez_Xb?&uag;?yVM>O9WTPI?9UI3bZTfpAC~85~ zEooV8OALszL}mrjltg*P`1Tg+h- zaUi01WG^n1{O<4n9>)$HWuhK1J3GVtW{UKZ=U;n@q+Vm;+GV!ZS1GfUAeP*G>?j*+ z>j*1|bi^<%M&og1Ot+(5)Pcr2N4;L>{Dlh@ARdMEl_1LuvC!<@KgY~iixVeKP^%@B zWx3mB-PrQqsK?upx7^r$?Tm$4n(lsXAa`DKi*sAsv_Wo z0J=a$zsI8RUXUTMI9%bdyIVH{WmSz_Ajn4e|>e2NTD zm>0yW>vZN9SiiPHln$W{t9d79n*c))*L6YWyu}0fkUeWuG5JbY}L@9_DOxyNF(onO@55#(;KDpz8ta zHA`!#Nh}!e@EUC3k>&^MObcr(Y4ynUF}9MrS4aU`1So>h3L&e`2T`32^R*6B1I=F< z)_KJAd41zN7w4w2M-R}PNjP}uICtHACyjQSG#zmD@+CHwmzk*5h^D7my0*YD%Q$=G z3WH(FPyFOh@an6t@$}Qr5JdsTTAZs!V<)O5La$f(jBjqN)9G}H14%s0kAP) z8~GGJz!Fa0&}ljEF+z}6N^qR03YW4DSr{TOXav!_7py1>i$Q-t?CkfAdi&8xs4`d) zp3TWRSC5Qi_RJym80$Vmq%b9G^kkQ9G6E@3x8^p%ADF zp63SP1+yubz_A{uOj^Z9)+Glwu5fPtDwofnXX#@frRFRLX6D$;hn2W`m@+pt&H5&s zTv=gx=^CwOoikUj(!cXg!YDv1Noie`<~$k$l&%2uMx(*n`Z`ewHuog&YMZ2u~^vLP%;hLfaT=9q0E%bY|M*M-E^Q?xCC1 z=}C>Z7Ucx>R8o{FsYz)>F`<;~>7)aC-7bT{fV?R1rP;+2owF#Vh@vV{DM=FQ z^#)-WQm@yj)#`vD9j5q^>`RS;aD}L*1t9{23a~=qOOGi_@;JedYkbmTz11K)wvXQB zby|y?G;@zs_PQkMPbm-DISB0y@2&S$m+EDu|Fy0n1PdkqMi_mMg4GP-BFrr^HQ)Ei zBmnDSsS&Vxc!tgWdyqj3>orcp9_k1@1DT@=L9Nu7vZN?Yl{D-#Qw=y6OY7EDltlZvY_P_+w3)@UBt}=!vR0>>yb%sFvUHBV@h-*Ci!fX8G zhklADp85uz-X_NnAL8uE*LmLq?;{8U{@@S)fOMGRtVL*DIWX=d_exP&1dl>7oE>p- zBF}xI&imB_7yL3;T}d2ITsL-9)N8VWK-2)=sBY6a}+;_RwlJxqSID zeiRF5e1)-H?X6?Iq2VmYWy0;zBp=sJ<`())WQMl4m;zjsK*N)n5!E3TkG5OJ3aEUI$+AO z1XUdlMOlmvRaME8gg|SJ4m7n|jj72grlzK7Hk-7XO@dmDS`c8Z#X3tI#<(mPK=_-<^7w@1X7Xo3c8^8(3L(Tf( zee{mbp~uFmm?;nSFvjLN8I}TvMWSSY^A?k4xY8n=#SI6TJY|p$F?oT~0ahtw91(;G z+6;+Jho~2_+N`m3tj)pkh{FqA*y^Ia18*>~ATBCq`%qboaD>+--S5smW(Uml*FC(X z$9T^`2!=RHuc%3l^q^e@ylw<3A)eR8ND$VLW*Hm(KC5f1tgNlEva&+A(_zr> zQ#wm5LbR_!71YSr-}&l&s0a0tPnZSkh@#3XY}g%=_J(vfx4C@r5Q5b`99_8}NGc8aAx}p;q0Y+9^^iaguY(Nx*4C`&OTbj7`9){n3hMCPS!@7Xn zk%o%MRoS6-L>sCWU1FDPE=Pymj(f|_3!h4l8PON2c|{?RsL=@|OG7C&UP;0ml5*a; zVBwKURRI99N+%IFj6QEISPlr3!dZ(Ko^Wg&b?YsJN+NrXj2s_mFpg3RoCTFbQ5FaZ zS~&8uAnSG+^tW-q_F%wPug@Sa7?jlwr$!pCMjSIeF+ozRF_yInqlnjA3Bx<)nBJ%{ zzOc;EO--#dY&SFmXK1I;aDqbnKam*dg?kf)?nWzTH`;^raHPIO`%3Dd5X44dsA9qc zIU+dvDiK9VP-&05yhNVe`WqC?V->0qf#j)f}T_ncck5KXDom@A5HK1(oA`1>k!v$i1Pbpe_Rr z^c4MC$R+3K9GE1%^BC#Dy{v?u(m<=9QrHxqF$!(%vcA5-+WI>4moBljy~VIUpo$|? zyPa<%3afJKuY=Q!h?F}D59L&LV_F#$nzrS+_|&N&tGA3dYYrhk1;+q zS&@ca<&IIh0Ph7_Xq2dy8&XOFAqnaNReH45$a;u4(m}T{!uu>zG z!;T1_2+4MTNWV9rRy<=l4gR?_W)C!hH? z*;rH=7`}rPVuzaWR?z*%qP4?{-z{3!V)C55`{qc7Tio0XIIw4udL-GxbFMSw>a`U% zw;i2ml4h1swn926TBhy1<~jI*3vC3tJ_^t;~Sy(d7BqY0#?rmGuKI*&1qsIW}c69zL1pLUoUWc+8R6Ye45f896B zW1H&?ttRoFnvyuBDKMnQ5Xfq!@2y2xSAo9bx(|Pn#Ju|2Y37j(nh_F-qoM%386Mru zih7HDYP5xtRjXpXBh*#FQc_~9K1LK9u48VRW8uML zaA1~B?&un*SxqZ51j^AF^m*yp6_(GRr@Od}OA88HG8puj-FJXyy+&pYrMDDCwFa%S zB&!<~Z!4O@Ti% zBll2W3A?=@)RpVSP9b*g?M7BgN`z9_Ko;M-V1+>;wW^f$?^Sg^V%Q=CA}=^nI?gs= zfFkNkaNt$te_lym4CQc0*6oq^`&e606a@>z45Kur5+V?)urm0!RmUe>b&(H-Ly{z+ z*=&;+1!w&hy(>K?Hzr6A?V&q8&Hg?6QLTivv!|KdNEr*8q^8O`^dt92DaH46Mtrx2 z-Vp$Z>u;PP#|lA-B9#h_#+sZ^C_*GsdJ1Qeg(S{BvC?##5$EhO_vaD+W;n-pYE%5X z&Jxe)jDd0tiX4q3lmUULcsO}!s&t%@)JTq6aP0-Xe#Y3$49zm9GaOLLDt$)WpyC(4 zLJfoxyJKSMtJg)lYE5s1M+^%@qjJ2!dt6~D1iW_XD*a}SxuDISV2ttH6L02>Z%Xzu zMN$)(VTWErG4KU}6*wY{7{!oR2sz4M2U~+1Du(bC`4V5rR{pFV0(R-5qqrI`#mKP% zB#K5VSoMbCEr;medyH()3_}&MoTo&oV@5;_bjf_W!TgD{TsU)qm9-6$z%voXBtlYa zHrXgMu3oxK;SEkp`som*B0?2bV&~ELtJU>GXm{i?1~pO_SZgWDf+R_poSbC4(_v+0 zrFxH@-3{;XfDAOt%gclau#WR*&yfm49L3aXwcWIE!6=}3bSq>#*GcK)Yr%E-PaNwIF3GfhW=`WqT;X)bgu9= zDD>q@gEYa*g0oJn=vGRCsuFU!5%%R8*E=&RO4(zLNSDX_7iZE~C~h=pQQ^>fpn>$&T`yU~pr zMXN)_2NG|Z7w9C$T8}G0M^LE+yJ+u2fJBz&)atd8Jt^p>8P-E=JpDc<$IvPk$rl6@ zeOGd2F+ii6)8DC5aRPLgw%6oIOzteHgO+j#pCJhyqVy{~pq8aDVi~7d2`;${s42bt z!IuKlduj`DiLGa^qX-yRhQv@%#VLi51swrNq^TKC(J~aNW^Q7Xv)62*b=z(_k)Sy> zL#+x!LJ`#y4jnzpq5TJ#nw;Xq`|=P>tg1 z?GRTPo| zQc$xNV}g&CLtu)6BFizxAye>08=R#U_faG@-1smUN3zsqvgT2lp`PWW!c$8k-W>Pw z2DO$wBB5GDNNcE@h(tTI&7oUsL%UvnO;NTDw6BCTD znc&RXX^hE{sBmDGg}^z77m}{YK`90X`big>9D3mpBGz1;Xx5CcCsS3rbkV*`^dwx!C zqy%V%)XKbE!E%9vb9pSR&^m`BO?hYwhiflz%Tq9r37+1)fmWqPCC$iMU5fc8&ABCt ztYD$l;_On3R47CohtZOi{z8IAe;=DRZ|2~^gA_$hQmv4tDM^wrJUkrYpSoQlt;3ch zil8to9G*m4N#qsH+A!Tc+c;e>*mD@h=5l5ti%2xWctTMZFHWR(9lnX(k+L?Yrxi#~oL>*t`zI8e`cTp9LD!=Y?}rZ9|-jFK70 z^yDnHr1YG+X*sI5tRsW32T}23l^ZI`o~hp|8_Yys`o+062dFNAz7#- zBzcP+M^2GNihWyFkpo4$MR$II?otb39lmR^4pgL(PLavdT+W3Q+`<${9kIB$NS5cs zNlc_Qq81XCdp=JHv785}MA&p#A2EIGB(B?K>z187n|Il^eJcY@k-l(>x|9fS&^q8Y z4j+Wm@&flr|LQB2Dlr-7LNc*MVudCW66+vUKBQQ$u&(uZ(z0O3-IT8Iv}=m>DAtKO zx8)wZqSH6Rant6sirG(x(-W&`6)-R{LA+|1t8Tr8+wZ)S+nY?RcuiS*Q!CT(SxDY_m)8?nXbXSfX-r< zh+vqQ`>+L+J$`-uZ71J8E8S%OPZp>%-9h2HG42OUCC*i zlT6REx~~DM!l|jVEEP+fJbi+vpME9)%ElmNxv7mbwMGNeO=-4Ucw@27lNaINRFtM# zuW{hu0T%OufuSK-(65eCAK*buBL@(W8ZP~TcJt@6I zo&){-vR{x`!A%m&PYUnLRkSCv0wE&~^<`|#+Uz)HsiQBd z(bbyyG{ahh*J14)NkQT@l|)fX6!SCFL1Aw_&UuQwSoU~QO3_WzW#cbnP2jTBDkx() zJAIn2vs|-bH_p{KylVqf!!HT_YAhAps>q^mMA zYw6-S>MY5EM|g=52~HZcbtE!EJCKDVm%bDYuNVba7&ZDAxpXh(Ms?v%S6qTU6(ZX` zFGtl92wWM-rK1YQrZg%F3c(5E$*xa(9ulSK*;=HGkg6=sK5VajX%}5hDtI9%j3G6KZk`2yHKl2_+r&w7UNQA6l6L0j z=NTFvB#slD4Q?66nqV_j(oDi8-(yTs27#QzVLb%6L~3$tiIWN&)~uy%ET>N&V`nwy zjRWg=%kVe@-4ym6#?CJ?FEbXj!kYqNERm`bDUEW5yl{A>FiMhI8!&4j1Iz)-xRG{K(tK<$ z(O7~law@5%Dl1rb36HH;A@U4>>Ppk?GJF$*E5)^p9xhwEUluR%x91L+uUJZg{8!WMP@YL^ttagP7Hz4f|t9_=*sB*NGNi=^rjI_*VHkB-0{H`Cm~__=jsR$gCrsJIh+3*c?afBH?v|>p1B$ju&0_ z<{ci-+MFnIiX^5=jJ5`EbENR7La}AjW?ndZmg%J?ef2sbxc8Cg`LY*NFNGN&>^2H# zkt#STdgnMhKMi?@O;VB0TH-6l$wkJ*Q!g-7Q7qIQ^>#)cCs^UXV-t+?V9H06%aKt6 z5k;sdLMlm8t)h&fCo%uVrJrk zMdk5QQ85m@Bb6eU03gV{!#IPmjv5lJ6keWd7)oc&S9cMJ-lSF%{mX+!DfPc4FNa|f ztU`?7@<^8F{DsavU*UbQKPF&HRyqpbLAERdA|}Z+V?uFbb(lK`#(5@d@?>j+{sXV4dN&YN_6Xjtx5UD=6MkcmMq(8AL_O%(?#N*_mdK6CvcsVd|?4q zi8$yXy>27bj%VHeGtB9nnTDp%e4Bl}FBFUS3P3L%7?3JPS7JmGBa;XfX?&iAG;8PZ zxuI2b5ekw@C14fKQZXQ{!{!E8VtVJAl-^Pycn(=5vBKkIu;jHOxI$z$M4jfc=Ybx& zS4p_(=)nY+a7O!X{1D5DGXmYHaT?1~J*IufRV?1N2j?YrDMcj}q{=yd^cYV)@)%D) z@;H?!qSmO=%`?(YhlQD0j4$n51ZW}2x+z3q*^}F#_OLbtWu(TTy+Fnh2sm`;FaZM( z+rZ#;6*3)-F(tL5qz{!A)uH&5xReNm(3Y;R0|WiUQA}DU6A2yKDj|=wFk>B=62unj9gkJeRi4Z{vch09yd>^)yBf;RS7HSgcA$ zsPM?CrGCvciz{bfOkxW`Ol;H*jL=ailyK zQDm(NvVtU9c987J4V2Qsp|cztrA&~kMrhYHHCs?Img(t&BX78#`Q%YH?kyO#6*|5X z=I3v7(dzwpgI|`Q^bQ$?MClkCClE)_S4Gx`iLIj=#pGFzZZ#2k28Bf#M@%aTDs+B>b zC2L(sPof-6YdF>4Aie!2I$PE=+f4%y??JRW%uG%3`Oklr`MG)GYC=0Jh`VV>+cu7F zr;T-%T2dkFHfiJOT0=dqpoAb!LYj49g19$Uib%zv6={(or65algqGCn4eGTT^9!@# zc`m!UR&d5HPc4NpXw}np21i^~dPe0YI5@;oqm(4K7A+(QMUJPEW!&f^-j-CjK}K9# zYY^p*DQD>jMd4%Gg~KP7BoB7(P3>{YVT31>K~bIIuJ*-1ly zlVaJ*94SzV&R>+geIAD8gH4REAxw3dzAwVq($oI*e5>6uSQZ%MU1NxZLPU9y+ zo_Hj_@XNd{2x&aIDbQuRt!2mrk#WN6O&h5?NvqYQ-s-S#c81a2+o%?r{^w6psYXyZ zOe8402`p@Janj|*WK#dKYzVPpgj()^eJT3vnYNWId}|%T7?c(`lVc3XC?bnIg%ju` zfwUl9Xp*&4gmt)5GoeZxPY8jxDs;a}fl`PlLDi}VT?P+0kIB1aX^J)H*ypm;^ZC+J z#ET2-fjDmre5pj@3zLh*C0+NxQ+{$~deG zv20Nk+)J!C;2hq0k|e>(Kv0e%O-C3CXK7eZt%wjxGw0hFrO~=VZd2CaxuVj?yQ+ii zF%es3jFcH&-{w?B1^3Vbr0{4Im>{uhE6bv?XcuxZwU;DB#42bNy|;K5I_}^j&+>ce zUj!4ll<%7Jw$%2Pc@HH<9-Ju!R#}{^fQZ~>6)YztLMpH&3)f$0*(Ji(uD7}@|BdVw zFs(wQIv`xISuUiY?ZVHiOMx=^fAR#N-9BmKPcWTrzmza_C!PMeAIS>}6Z+m%(XANJ3H0BAi4P2AL~_ z3hoRz8!l{Pf@n30u*wmc;Jxpcnc@O(!^!2mL{h$9)<6_Q)xrj%p>ZxqpoCry-w@*5 z^YND`xZmpTO88}C&9K!Imw1&gJSa-Vzb;Mxa_h)MK~*>^CXCwcdOwplZX_`H;S5?UjQ8Z$ zQ70@?(mZEkbTz^`PMw~lT8*hyli>8}EUQ+nVtQ^aP<5mZ9_FT?C^D=u)T&hm`-f<^ z+N7N>LP`>;QMpGaA)8XQQ#!SXLKudXVuMY%G8$m_NI%zRf~&G{RT=Fl(v%h%-3U|> z96pU!!Ccxq779mZg1wK{r7MVs$VznCRas${(`{C|nY=mx(=A{1J?N{K*baeUO%$V& z%H?%fk=7=PG(I;kyC7Q`QSJ$UDjBM;bq;62N>`fyD-^*gvMv-F5H<*1r3LE*X}!&R zUBsYU%YQ6R^R!Q?RT_|k%~O(CfpO>gN?-h9mCwg{j5i_erJHf0ozh%b;`wKu<<#UP zL-mBUx2$Hd+veF=vir7MNbddujm0KfD55CFCmL_fcV?U^J1y(W$#;)oO)RV`Eg3DyNPdrAQr8D2y|uR~%p+Cd=t-G^ivAbMvzS-^z2m@WK1ddWHsv zSX^AfJ6}#g5@U)|2pv+9!o3&~x!}j<8VS~W7K6`=nINDvFDt9)i6>WLyFD*ROV9|}(qG663qn$qVFC#OAXKHN)apFvSf3-!Qm)Ud z{O^rb{1Y+_PJT&;6~eC^x*VZ1~7(%-~6lyj&a```DRNBy~VaqmxY zu|c7ifnMNz*rp0+@lJx3!Q*>{o2d6IoE-ih)GQA~UVyda&Z4BE7RBf^=B)ReTr*1a zfj6-?aa2#YSu;3HXR(bR80OG{Lp*ZdJsdlJoFq<43t~$WN8yC`rPi-!Ei5HkX$A)e zsn-UmHu~svx?oE)IswL7ymcfh;>_vO;d>%Yr_%|X!6+s-mR7rsX|`$9>*Sp-4p+vp zdEzJ{&oUN`4IQm>7^$!|#X@(9*c&!iD!fUL@c!WmwstI;GjvrKyVSxMwTxF}GNP3m zOeBd12Qk*On0CpmrDGjwx#mr@B#9F=0*pi9%7sdKK)%}T->W{fJx)q={W1&Iasj$b zhVrs?>hgNC3@+fDP&i)^v1AcMB8Y@zDG^>`BRE^{Qt$K=xjwpbme+aMQLN$L)E!@T z8Bv@d%{kCrEpxD5+L%uY8Tct$qN)jAO0qOX)GHi3eiR)mHeG!sr%oNlZQaQ&yA4ZU zyO*JX8hK&9iBZvEN`Hdh02u|yW(87nD0>rOWVQ1 zdyE(5B3zT8XgW)Vr|w0Vi#-^ZP>~)fG9*<_QxHXl|6jbGoqmzuPiL9OFlH-Qub7Jp z28~%J%883u(JQ8A>oCruRag~Q<2u3%a+h=XQzBZlGCFpky$rYqmRBW2n~ajICM4!qOsXt3xGUHKT95f18!Lhm!gbh|W(yNQ`ME@d?(K)39SfQ3fZM_JD1ckyPa7tmdCKHM% zu3TQh(s7b|DPM7A6)S!xDb4}4lEABQUX-@4E^vTKQ!iC+8Y{U5Z!s>#3Q5()c;S&) ze#(!qN(z2Cnq*!VjO3cQ*S4vbU#}~nf<3S6`GgB>8jQ~tn=OtUJw~loM@NQ3r%tl! z+KtrD9H)PB5?K{ETa;3Z0^=-7M3;DbzD12gZws?*6d1O%emQzeykeY5ywozlU*5vt zJKbeo_;*ptHk4L)=dhiO({;yyPN>f092=`K^RC;7w{7RZ>@-$-Vj<`hZ7NB`vrj+G zm+$%txhVqK(z+Fd+EAnh8g-VMO^U*lzEa`w3}JbpbVRLMrPio{6c|$=wL%FUau1ey zYJmWnWhs$VNTnE`n7|eVr;i=SS{JNWv}DmcgpZk6Oo*)@Z6w&ZV2_Xa;h|03-Wa66 zlcAeSq%x%&3lbCVtHOrKA(tu$lYQ7)nncsg4Q-#3@0=%IHkU=xAgKN;iBJT zMaS|Tp4gTn-B)~y?{Eo|LZF4j3Kv2wlw`<6)aM;18-2`w@0)4u+{$wcE!y=4T`zF1 zppis8@%ZC>=ChwA?WX5$OuwSjb-~tU)yN1*6opP#mb>sWyw!P6ZVI|-y4+toAJSf= zv88@;1r})xaU5ferBbcnAjEIwhCVd9ze=kj>09(9Ezg-+&f;pv)w$!hI&1l}#xCAb zc>3oi5zVuxC?nAx@{GdCAXSr+Txo1vB}=NzDbFd<<*;3335OO51FFt|Xi)PBT889k zRjPrd`0k_s3cxFgszjH!C5+=Z_uqsslor7a)0V#HZbdaMN)nSL_&_;=!({{%%2V^6 znh$_{jzvY9!I5E3BssNqlRJ_+zs_dWj$2Q+E-$IF}|{F3^@8H9ejvRy1n0 zK<;ynD3UZ6TfwebDY7i%@ZrM@jf_yM)L1;*=ET?-(e+oLo_r2PhR9NK{rJPKA6EB_sCd4zw7w(UD{A(u`bsS3rbQAuFF%aQe~So*#bVwCxv(C zgq6mz)NCSJt?(S2BZ?zTVM20<*38Y$@xlv-xoX!njHH^wlV_-1yNOk&r$~>VqOVq= zTPo(i9pm820=1lA)ALzh*?EP&{^Fu`S(ieOpZ?N}D)BO7<#)7R^)#Y*3g?kg5EFM7 z+jQ5B)B4C;I5Jd)(@S)tg2X!1VwYG)JpJsm-1pG^benCw3)rd>vW%u;1>rH|E6&Z$ zEeCMm!52ALM@2|t53ZY%X+_rQgpMlMA|Rw#{<}36Tu!xCVSav&bsN^v>9%1hL#UXg ztV>jh!F0K%KEUmbwY*N%*<}oLLUL5A=CIDND$`_2fr#jM!8{rwLGE)3JZ+oPEDG}8 zrGchTN~%gz2#a(Ejlf6|3aJlJPtRD=_h#*vDNGkZEag2=U=dQGY)FT;-^6{<^YU=c zlQio8HmcV;msPMbRW%`R(4mqDYqM|`DOGBlUL4$BIb-%TMz*}$+_EMrw9;XJqVYa# z3LTCNXvyGUP-sb?DClc-P%6SlG0tnI^&&&E!;eP&?5^$RkD5n#NOUPwjnzerbp=iv zoCGHovIyY~K4Mu$AVlE02o)@!d*KUnb8|Rh=&HbXI+bNqZ@-r4)GVoVUX_02)ND>7_aP)8@;<&U}4Rxcb`G|QXS%{!hgk+q;8APP1 z3q{onM5PP@b{_2kC2>fkmq;s0y3C6AK)CRE;XUn3I!x(lB}-juFJasHU?r4B0XUB{ ziFO_|2&I;ju~&9pD_A+pTWbd>AL0ZphQv9RkW}i8&X#Mgzr2DK#ZfNAw>CZZ9B>?- zb#HUzyd(FH!hu#H_NgNvS0xp~3L-p-wZuh6rBcN;hDlqCROi~fTMe?ax`kg)kMJem zq!rZzqdrNfT93;!y5z`6Qz1G>@VgYSTe>|SJaCY0+qP4!RaiPRkKMYRrCWDXz4tLj zm8TtXdjnH<=!@Lh104K;=78`aGoUzf?Rnb zW2jFT%v`gTg%8}$f{>`pqN9jTw~H$ZqBv%5ex7HZeww-Yd8*YaowQ4*(?OTcv|&_} zFWXu4u8BO)Sz20Ra&i)54N3+59zukJ(FIIRNQqXWR0%km9mCX#1@f-r^gx@@Nbn!s zCO#Mq)2SIun$b?1L|TRr;6fmrAh!l9L8*wsIHr6~)1~AFd=|v(l_a81R=@`nNWFZ2 zeRJ=jvo4TX%iqJg;CClV>VpLe?XXHPkZWvi$@(aV2-lma-7xJ;qD46BNp$37KYiLB%_S6$tO>Zx#rx zS!`6v8jfz-W=zKX+sYPh>&)}VW}2sTL1GoL3k+zZH3)?$SbjtO1(Dm{`{fh;*s)^_ z4i2(*-8!^~XHTEzitDeWet44FiR0*6f;HbJ1W9ln(7qfg7JNu>Dwz6v6>bzS&reyo z97JDANpB16g6Bp&8hN!OP#V!bed=ER&$3FoEH& zRTR`5y-C7*qAUQ%MdUf%oW=Trw^pnC>tX{NBgx6=3`4o3o@$VS%sGs=WLARE*d!(^ zVU4tKEDA?kIg}7ogeFNe%7txTBqSb#@doew3jN-zyaZ(_lk(@(D?&%oFSVtoz9i>9sSU#OpcW_b=yM&t1NMp%No1!N9f&LM0==Sm7 z>=X~TmYDYzUu)1Pbnud@ilFTFzO?i`H#zsl*QKQ;#>U1tJ3YPmxga zo6aj({__0%za7PT<@kVg;bv5UBj(yUXRo`0xewfd??R)M(ymMBbb{Z16tk2zx$CQ6 z<@D4PN-4C~^)oLFQYqqUjP(wa7r~zl zfs_hk1#{YAT+XCo~nMEluz|59V?fKrTsa@^1tyS`0p?OZzWCQJIJZJ)Q4RTP6(q1&QpmJ z7Ho%x)1;ZBdHog4zUy}KR^VVM?TMA7>x0fR&2k=j^ifWoI6RDtms ziG;z(vq@HY@4#waXA`zMMZ4ljyGsnD9w)2J$BuU4FiK#eAPHLZ1x;(ov1Hx`6UTZ? z(s2x@&{dKJ>F6(P@RC;n8xHuTM2b?+yKGMo+&}z_jN84Q+LSn9O>nw!F znSz=~IAq(L7M7`OiIFwix%uaRmV2Iim?Qh2>D z^_bn(L8k=nV#nt$hJf-m6J#(gU-u` zV#Eb3b5U+{Y)LI~We&Uafz|E&#rCz|mT~X$(oD{Q_|74OWKI`UjVEtqEZn$@?0eo! z(?C8qLlP^D^jPD_J6)u4JpcSYp5M0*>4I?A&VU`wQaAXll z(<_Fs3|L3iEIV=m!CBNu!Gg@#G8gd=lL4+9jQDKpEDxG4lY^Q?uc>!p>b?MF@k$^? zgcKp_`-!KY!Wj##C6*SKh=xYdUQ+Rb{T0KW*Wb$Nzx*7lr6l$eSxvB6{;fot&l4p3 z7XeZIE9h?gc|ZF+RQbCCV2?sR6$K8jB}RgDhJiF<>Z(onAAAR=J1JtJOPnO+F2@K@ ztKC8)IDY&%k3ae-S}JM-{j^#w>U|A{s}-haW|*FyCeJgpj%YLhi9mM0YP6ailnlb; z!WtqSg|sFqkwS-vxLmT{IF>4&c0-YxoTSrXlZ@G1X|SVGXGm#QS<5COCS1gzf;ft4 z*#+q4xYFZEtC&oB=By(_lQ~TnOUI^ki#!1ANrRe)s*_X+OBMk%Q$ubc78)%)PW$k4 zzlpr)53U9H42ggVMD5OWF1xOIa5tBvfyf? zxGq`G^V;&cVummI76%#y{cTT@d9p|b0-zUAWTY;o)@U$4Gsm$*hZ(tbi~>bf*V%V+ ziZ$D=B-yi@=9AAcRA9*K-nk@!Sr*!%>-8{u>=(gJwX-1wJo_*?R=4a=L8?`XPcu%EXV`gp+FJ(Cn zLZi{3*;=AjtBy=D)0fA!0p`d?p%`Y2KVYDVfq96WSC|MkE9MV z3MX5Oha^V!zqnJw#RW@Aqm^3W!0^g$25T+Ggw=1)^h-%qc3GtzY!6rQ=PZK#IRgT$ zSi##U(~=83+F68jbajZ=?h3^~krLyBpN|N*PG%iG(L`EMq&dbm*%`-N5smRW+s9pI zn!9Drq;w!ON=A?wDmtQwV5!@ozrUZ^Q>R&+UqVcb5vPvzdVsG_p5o0nUyIszn9kA? zQBpw&7j%l>5f6cw%Ut&A5ojlvJTh5ZZjByB@F zkdPLJT!P6`Xy>Th@zBGMFh4uTV1GZ&tc&#)r4>hx9V4k#N#YpgWqBhxYSk*vIr{n< ztXaL9=He3VZWn>VbTg86%C0Epilm<{D6UiucJ@^m^Pn-9qK%M(rtnNEheDAU$%6Mp zM2zGS!qjOBnDsde%F?C4S91dY!SYdTy0T1kmLiz!^;YK>^bqcXi(M#*h%~YQi=k1C znObVnXso8MTTpbn*jj{eA=|C=T|***Zm^VM3VgX%4Zy!C-MOL=DhxJsWhssfOYEUv zC>jnbGPrQ+)S{HfD+zH#?!hXlU%op_})j+H9_V*>Sb3FmnuGD1t-m;rNoOc|4XNr z#m~KUwO@e+cnsd#URA%S@%BA1yL{LlkEZ8)FF3a`T?X^ZuK0XciC#x0FL>s!uFwf_ zKJe?kBbEtW?-|fF&dyBJzG4-%5512=(lN6z$5^dKt`tQlI5QO84v|v4aO^M#5A8!) zfly)jA)}bAFsz-}z}ULg95`?gF`rV8E3~yI_ntmm!5GC~-*Xp@kt({9GHwLd>MF05 ztJzs?5NprcZh^8ED{?YnXbFeX5^V+AN=EZw^p^=wUX59h(4{~mn%QoL1($}Uk#`hY zQmGEnT58h~&}y}ig9(u{T<2@V6+ugQ#xl#&fT!8ckT<`U_$_bbFMj(sx%#?W$Yh`@Qk>k&!GDG$1Ez}w@_ul_Fc7Bd)t9|%|`49%{LZR~V zT(`6m9ug}SO1`%aC_5C3BPZk#NE8-D)EHX0{DP&FaVs&bbC~c;_X3{a2W>4~D=4~< zwF2Q-d@0Y#Odt;(4|Fv4a*eyjAo_^}X*R6BJ z)*@A@VsSwn?QBRiL3(lxSI=kMuzfopxZy_be&GNQKluzt7w0)q$vIh-)O>|LQ{nLO z!))BK6ND?hs!@e@H={c?M*Tf+=42#kpPgfMy$|mV zHqAh|fEPN)Qn$n7&pb&x?GT|6&ISgx1!dvt&D)tgb_!-wT7wmeBB!kjq<|`(npOPp z_$F?P8?2sOV5H_*U5y#dJXyX#+Z)=df|g-ilSYs@4_b%BYw7V;VzeL?4l5N4CZ|(a zoSo;a=^_UE(5;-&JmU0h#_5p?*`BLdb>j{6t!c2}TeJ^P^Tn?}!uqK>uB`Nv$sAJ2 z$wr;)e((qQ(?9tiaGv`Z?JA*k?P<8rT|e*mJ_4T8%4`5!IzsaxuW|x_ZR`7 zU)C&%axDsU2wK8O2&y_l;)nfXSVF-oyj0io;u0h zi<8_tf0|B_6QNn0o@Q}wj%0O$Rf<|tpzn?xQSukzdqQGQ1T5FuM?A!M|r%#`zuhGDC zvcUh*3Y+EB2O8Y-#6w7-@Kwq1(h?hG%&3eQixgMa2DnnxnP>@Csf?^&)0Zn;%P}W2 zynvcb$aE5xS}v^Hjex=iMMhT$Y~)$;j)fw_8bNA^O#*5x&2@K9IH3( z%|G{3oH%}r;+|)yTz3uQH(yJ>)ME13 z5pHifqPiwdbC3?9SOyzjIj!869{vHt5=s2am1^bkiKA<;+HImJ%3sZ?E2Uy8ZBl*L z8(8y^5A*QXzsC5Mw{zmYrx<+p1QT)0eBFkYIzQjmNeXe1AJ2s)Agt$o@bNC&OW`yS zSi#0QG6A{NsM7U8`!Xy;m%*Aspnz^AWExJtaDch#Nru+1<+d#wxM6M;@2{@muG!-} zRkS#nMzl{(p;nFIwZJ=z%nQ2SBQ}m>p4l5*K(+d=*}A=2kpJTD@7wp7%l6trpsk=# z5v{GON!JgN$(S0NB#LM+ETJn2+Cn>Dpi-%F=FA!P?%Rv-p2&gpvP@EnDF$mK168uK zrx_z>TVI3sj;v>kiy8NVbsbCGax7K~s!oymf|f5>)O9kcAnKz}Mr56WmM};ktd9$= z$f7{A>3T=g7IbrqkwIc6g(gy(NC;{I8jTu2Oq{*!~gt?Kj+BPd&y^; zs78hN{KQ9j!&~3Sj;pUHz4cD^{?YHSePo!kyEk#;d)~z-|McSw$%64Uo4EV_ySc$a zVig@%gpgnyN`O;fy(JPFArv;&MBYLX@vvzz^@eNN@#fca_g!D+qwo0vHq|z8>g*D& zMg{97N1}-J?|CP-+TgA)e3iAkcQCkp19$z#$JyFwF!Tmv*ot+5d1YXC%?Xjdi$nv!9o$&6$gP2~pr(Yo>0d4*AZPv48 zHbR7mu9B@BgeYO4)TJayAxQENI%$@=H21$iGBU!@zyMcmTt!kZ*wAe9)y0C=nHiLG z6gcLKCWDm`ROTq8gUBQ7WjjiLR~N1G z8|M0h0bb!GX{@kTQYm6`n~^ARM$q-1mXZ`glW2_-j=4N#AvYn27BF6tBdE!6Fh)AU z7oJE&)N;Y+#VqkpyqDL!={HKJ%AsO%)%g_0tz8oLXq|z;FEySFYd8?c1-% z?cB`SiD5Qpn#wz0N9H^yK7ThmH?4^^wBg4D6eeGH{Eu>WY zY8=@zj_YLDfjS2j40jD%`ubQhX^_llmbG-tQDPUYNYx7IL=U`6RY=@b9;A~<2P*gn zlOreybA2Qf+6!VY&`7km7#Z|g+Bs^Or1sz~de zLFc$qH+aM84!fg%whoOjAT7>jG;I)$8{sk5)9NKWS&I?Sjt#MKBwpZkw48BSc*QB( zVZml-AxUJ66BccuCKMH^iKM2ba&nV0;9}}3;)|-wRX_VPBv)?bm;UL`(cOQ5|8w2- zOcW9q8Kms8t6C>+r_4P1B-7VjL!zL_3XTp}xpC(%9(&?m7EhjJ`v-oO=g&-X>)H9Q%^ws*YX^IuDR8ffYBtI)rOYcHf<~eng0W`{Mq{^t& zhgz?=U}>$*D;)`i4}#@-QlazcevU~?V|0M1tr!{|qKS>q$t`k0L! z$A&D%)dbdLh|G{ij&8a6R6T*MEwIJ~+iWR9hbJUO6wz^>)HyQegRi+MNQFZyK}~3? zLgA%E%kt1Ojx_PmE*P^Bi+xqTW|z3)XMcvltFPeS{L6pBo~b4u>bsI-odq85>#z>V zhK@rg6(%Y%&FQmLl8ENQ0x!%ia@FhhFg!BK!+(4?_2D|LE7$StAOAHU)g!F;b*2`Y z3`&JaplMR_z6R6XD)YBpPyFFG@#nwy34ZR!eiD84c8>h*1B{Livb9~~g@aG=#69pKUU9w!`RLMx~w8>7?A; zt}tA?g7G3ox}3;cqRfzz)2-($c!Ln0{z{#M1ea#CBgkwxP-Ij=MFMX;sqhqdtnsux zw4I~t3UUEnc?KduO~+`VNUT6QhjTuJOLzy~(#WWq?)$Co>2>HD$wv-Y-I`1zmv zX>LE>;q8sJJT(I1$9{wdKlvxz@WfdLckJPC>lDM?4#UGEWQ$Aeed00lp&=&jxQ)|u zGn{zt0I$3KcKS{=(TDca9-ZJzvorMP@QiA)p})>(RHHeUkzao^JO8(z=9mA?zhdq2 zE~XlB?8)cZ8dZq4uA}Z_zP9galBsFdUB8);kx`zTonqUM`}mZLg3&J;*zk;dSxK?}ifRZzuY(hhmWvnX;@iAicB=(BZl@0fN4 zsV<k3k9YDntRB7{fUV1%cf87mCx0>vG@EdI2vX#|0?Bq+I`fEB1T{hly2VeZmr?{pT(XLdOdiVD* zvT-AG&pgYiuYZ--W|9+)I#>SG2ig0?gQ!QI<*ncUL!4>P;UCybvT2C1Z4;bM=Q+0b zS@tAV2G*^nJzC}XBM&n$-NbLNllLWPQ*d@}lH1~8W>!zI`Ul>_@BI1yWJhHcx?l6D z|Mdx~XBJph-@w-g1n>OCf5-iQ{pTF}{l8+}*eY_DQxVat>#&^15iEA1TBUP2b>Mt_ zLJ6}RYS?qpU6BZKNe|~>+ejv1S`{SC7K1V&8Cy-KoiTG_61jdYJKp?8_C5A6{;31( z(0x#e%gvy_bfU`z4=7&bQ;PFxO1;G6-n!J6@m8*MWc1!+eHa&032g~2=V&8nE6I`& zEGfy7hFO=f6glQq!JM`<6(JBds^E2nOBrbROF#XWT=Opr##iVr&<bd<6GmZ{bDH zVi}L}E4Wzx($7<@cx6k9>5Kd>7rzt!g3n7nrP2n)YlW{wM5$#Uvosc#5J!*UPMyRq z%wfAt3Y*fAIbCh=KBw@Ou7qjnF`1;^jX+eeKA}iqRtP$k3bCp%Vq(@55xJCP8k$(9 zimQ--mCG>e{SVvrLAyvqt0xg2ONEtKcl%f_#oSvHEp^m!G7uZJgnE-^kNnx|@OdHr?wsGP-Vp#ZxD!96dwL6b$a%L{W>Fdf^z# zdbaMqiosf)B&qP4Yi^-)-L;JUv!CStdmmuqqsOtQkMpzt<{$Cwm%hX`dWZwlb8LI_ z+sU0~@59e9R_SNhMkK|>VNREnn2D9d^D-JxK;a6Em)Oe)#<-}%>Lem}THuYP5Kxg4 zVf@85xfc?-MKIiNL=|Q$^DI$ixUrhHaBR8mT6Vwh9Xxh$KVSRZ-{+2vt2xv5R791e z$jPh=&JLUlkhrjGxg@A8&)r@nSst^}Td53)bn+Z+GZa=C$fX`s85RI`87cHwijtm( zmf;k(AW=9WDN55(;j$3%bYV$(5vHwJ>GIioer1_(&Mtd~K`CQe7A&twdG_UsLl_Xg z9B%C;9?aoIh_ChGMF8vZwnPBkIqYxwlb$Emx&QByzmFG}`qCw^P5+{pr?S4x;fqOC z*fIz-dC7nWfv}W=eW1Q56yAapl0^!X^yreVBC9cp^MNF)AdNhQFl64-?sUjaK@>-* zGE=ZmX>@6c9QESaeb@pDsY?0EikPwT=IU+3oN-iQINhg-Z@Z1rEj#)BU-=cbxp0DZ zSFh)qTVKzKvxhiw_5>57ql~QG#p#Y`=IjhV{(T?ev1jh*p^yDfuHUhXwY#n%o1Wvq zb9?!T@B0Y%JoZ&KjSO@1PyAyZ-nWD;S46bE-qS{{})3C zPO*7tj8->A%L)ejvP9%w)}a^Sy0>hI{_20?&7+$+wr@Wt@0;V@!yAb1xR(B%JNVQu{0*D0y`Iq>>-f|E@}GHK{~+>~ zoorsUmd@fL2bZQ8ndwly=4$!}#%L{d`S4HuBsEv?KYsgnxbEg#xaLi-WB%+S_kQlr z8GQ6*Ssa*lTJz^t-wL<4V@yT znH6+g4#Yud59lZ&A|fUyDl_?{1DwULz&X8jI3+GiyuR`pR9ewG+eTiomGzspa`>s| zST*0_n$_!hT%SR#pP-@Z9G#xRpFP9w{sxcz@t^SEgO70L^hwS>`2_z=kE6N~>7Fa` zjed?DIl-N;yMwRX^JR9Zn4xQTGLcnTw|NWq9=n^jwZ(w%&I5X3W^bHO$bLs>;G7FUo)qw#jNrkN&*7JwI@bB1hdXd(r zzQ|`k_XQR@9j;W0k5o4ir3KFpOHMR9OmA4r*!#ba-EX{;zy0ISa^Mr6;w>Y?Y;aJt z7ZJnt5N7f!H-({T@K^yam6r43TSBFbmNJ<4c@xCA9z>vvzvzQ@y{CQk4(8H%c;YP8 zRpZnr#(3oJdl;-$_{i(u$fk#%?G5_Yz| ze|wId-BYPwT&gYt>*YB%y)Q?#jC00!!c(&1#R}o3Sbo9&j$``1EyU5D^~|^0gj8JW z><}yYY3CLwEAc!jC91p*r3#Gd)D^T{fw396aOBQnjREgaLJ}#$n203uEO*eN^sqNR z2*-nQVmN+;@XJ$#@M2khc`4qZb8cDKTa}uVx=X%pHJg%QK0SY&z9fb`XKp~VZFn_} z792Wym`2*-hM@*0=VtlL=f1%DN}ac@S;O`P&tr*Y;+9)jJUWM2GsNlE0^L*aj_n!ab-S-Xon7MK)gyf6cmJ3-9B#2?%{u1Za3jy2 zI?HRWybYNd+D|^u$Uu$u;v%QA1r`?D{N?ZdHe>sa@`2%TtamhP0^8qDzwhJV+#)A+ zPHSQVqkC@P`nSK0X1l|m{NKNf`NjjhrGJF2c@?hK9G=INlEb@nFn5zQo6L)_7o~uGiG=!7UK*ZZ^-hL z!Z}o=5v43fOF<-JVyV#5l>&OZY*?to3cGF*;@@0p9O)2PEpR5dxZ1?yO~Hs&bX9on zaz*fHAwry&my$>*&h{z16*L+{$jpJuXt$fRHVm@mie1P&^`Y|Ljk=roRtF#$+J$0I| z{K~I$W^RV9XIi{@Y!xnFph1nrnUuB?92$)9x9(!cop&;}eLIU3eEM(xCwu?;3tTbV z<$JeoquOaxq+LW!<5WZ}BWzJ1^!aHb=gNjZZ==5wUh$>Tg0qTtq^S-Lyo!-9PI4y# z+gJ9S*u}-|&B}|`im**d_rJh~H@$^@6JyA2Tj-N9lg~ZN*6{)QS8wI?mi6>+*uWqE z;m5dX`wm|F;SX})_kNF&`XCJ*6PpfI@6k@NlzZl!WuxvxE6;q^LPc>n8GX3mqEwRT z(D^wBv6AH8oYN|;0I@HkNci)2X)7(DJ(nhfI&r=$^`-99UJCW4SNi30p!`NJR_Z28 ziPDNLq!;`uoGSw-JmP{KU};sp;)(R6O7gsIp1;HflS_!qeYqX>FFH_P`s1a0pdCB(sRp`zbhRo-<|c z+1{UvAMd@&W$vLZ_Yh@}gLIDESVXMoWEM-nyIc=z5dtkF#)f4^C(EfRiCpS3*`c2fM z7&oSv{rWzly$88^&1UB3&an5(Ut-hFtI4WkY+ru`@A}Y(`Taw`!tUYq)Z;2s(`Q*T zwM2hkozr`^QoVL3U->V;!w5j6)cKqmzSQi&J6 zP|m+9#rgM5nU3YWB=!7ZQhRCP^QA|^C^F~bqr?hq7968ysi$!N*A-evI9X2HnCi zGd_;lIKr_f53x?=R2vCC3m0V=T{R++EVu$$OYp`L8H+B&3eO$RqYAtfr_1_FkWO-(?~$ z-$am(cMesC#R?zvoI*ud5lk7Kgv>j-wxDYQZNZArJ!>gRl%h|@L_$z;VI)%ywA47^ zF}N~-HZTuzAusZgzsOpg@Di%B5pzIYNtA#=8PQtm(5`DL2q+1s!R=TOxqx|L~oej?k5hi@ru`zNX_1m+8`ihNgdFyT5_1hn3_mbuQ!;kUlfA$sPL&y2v@io|P%5W~J*7}(#V82h9 zYVG%9d$M4Yb- zKza2Tf^%iZ9bR9zcIVZvd`l=JoiA&GdRsy-UUoBA6pq9gUij+gX{ECquI}TRFMghP zR0a{J&XBxukZv3?Jw3y)6V#+*)@1BEbeyqw>}37>-pTan2+d=s=O>ucy)!yU+VAD zUv!i7Iyk?ggL0)UkN09ZeOMCc45CbgMuw2i9`OIFi-$koBKgG*p>yy1OD`@it4PX_ zR-NIog(VY?ObV>`SnqJwHx*TN!mw`vUy;TIafsvuc0Ag?z;Pn ztXayqW?-C?S(77?WEHUbu>*Xr_A$QyAN@00Gi~}!hBz~e6`pnLH}DVt-7j)hw)pek z`0uPeJjIR40FOL+kb0%c_QA~z6^fz|Oyw!h4`!q{Y-QUG*YN&5x1pj@9zFRSfAwGf zGkfoUgwbQuTw5RDeZyl+SQwO=+1N1K=@5BAg2ts5l>VmI!=dO0(X;m+>+EImUdiS+-p>5O zJPXeqWA@p@jATowBngE{%F>nbtAI&*Euos^5cGs7M$WzAT^NN0)wCEs0e`tKCJ!35#i$HE7;lR5*EJo{6N!zWxyg`$uuL zh{@we*^mSM0y$VE^629ci%(bYp!Nfbu~{OJjgfx=ug;mXo}mnt)-SO@xjV!v{fv& zGG0&xlLIwsx81>=x7|r&%>*)%eBtgd@wG2}nd0aRY|Jbls@K`I{R$f1Bg`U37-pk{ zs0{g#J2Uf>Fg!s4AlNEza+UhG2f;UrQP z2IdrvKFyBG04#LqBpJ4up|U1%f1T{qDf$P-IJ02`S9c1E;heE;n|bJOzRdHJ`}nE< z{g;r^;rd6IJ2=CZPK%^c#a6qhG$&OJ7SkofrnPMN=l_IseE3@U-g4#dS<#KL42WCj@YbQUf>;N&fHM@%ETf)yk24li6c|w^c`HdxE2>B$ zrHH&lc+fU2r+bo>fUizt9w&3@0k#;=eEm zVMTEd^cz7!%#2-PJnH9YYk|QZ{s6cB*gxcB|JT3Z`R6~+M0GW-Tu|4V0UgtAbwMcR zs)`e>oD=;KX+F>EZ6A^K^i^Svu2AbZ&D6E=GgcAb6i#HV=gj8<69UP1AOe* zlk9O7y28?_MQj`H<8-IRh_m!J6whIZ?zoN3ofh-=+{IDd&*0!HmRy%ZU%7`XWrfj& zCingPzv2^EDob6ii7VVZF-*17rkPu&ead8C%*?K}jNNn-Z@K;TG^ztUdvqV4|Ln(k z;)`DxKF4UQfz(ynhflDjze?LXju%a? zyXh@_VEYxE`PJWKQWRtz$-1^;q?XebIpQsMaA4s$PyOG&#@NX@o*Aq%@$T1i3or7xWUMxp&h$r2KP#==B4>tuMWSu^jv>25M-QPUf=fuA+(fOV`;WpwAyXr zIHEdGr|KJ2qlmgpK=@^^@U$?cnVY|e54K!dS9Wloz%TPI7!P{NO|Zq8QX_{5$^a#? zT7->WVZ-;9w2`hB0B*GeX?+DW@uWbwoc>?j1SN&+JT^sO1@ z@S)Sh-JCfJ*f7Q|-}626ojA+qzxoh|Hm+mGd*8-qKldr7_ddm2R;^{kDu!)B+hmLk ztwCwUT-xRdmyvClV8d0{bN#J1QrWg16mJ^5t}DS`vx&nb4;{PQ|%T+ zBkMSF_z+tcT5Q|8fwQaoIQpfpvww9TyFT(ZmOl1b(jujzE$A5_aZP(L!$59^s z&5tv;_b@v@`hNEQi(g~uiAQ*|7+`K!m2n|S;)uSH2J_Q1#4=`R<9ePyImMhc-1@-} zu=>Vpc=C&1;eoGyg)5F)#;0be)+AY_j(o%Q?0n~)$ba`SWAhd0 zH4ssEaR_Vd(E|MC0r8jWB)=v3gM`pc=?Sg?gotrvA<_~ejf`VdtZ@~MtV9&fqMWBF z4BbwKHW{%NI3dYbjI%w$fE2PM+=}HJ)hQ9|oXaF=7l|_G(S>wq!qzU$3%Y4WVGULa ztUA}ViC9q;n%D`vb!Z`ooWzLG?a8tLE2)A{nl%{baU#U4D*_f`3Gy%R1D2KOkm#J@ zP(DGDW2Iv;OPMqUTR-@2w%z(#?!WsUx{o};)dK@aZ!vhh)CjA}k@n(rrKzaM)nD<{y$`VXrpHk0SF!J&2T1oH=0oc?vzrQ& zi;L`6DP3J9-@JzUo*nGD^>)^7zLIt~rI+e1oOe`(rj{C7QBJ*)F!kxX7+STN{@1;k*4kBUyJimu{^~32 z{HH(3n||xR^2i_lF|DsZ!N60e_`<@UGT)siSv|tpnK`-(UFstv%ssJ>k?T%qwyeLBC%ogK&LVeCr=*V_q4Jtt*!%8dD2iEV z8*q-kD8XP6m*6sA4v;N8-|;!NDv_d<87dPKY}&A$Vy?xb4}1+RmKYf5!?rqj9e{b2Nk~c!tSgHv0x1LTW_!-9 zIwsF74uf(To0a6gFMf?3zRorMHTqna$67OtzUEHe_0fO8$3Oj9KJoAWA6|RgE&S{M z{F|Jdnq>O%r?_dLfypyGj!vh`xEv<0NLH=iz~byY`<{H7>+Ag?WoP{eeU%2YC#GrT znoaM27yILsFa5z^bLWm58QVC{!1#JT^IN}1=d<_mliPRj!q@I&AzR`#ePfKT-HLCu zc+4(veDxreJvXp*_l=C~xthLp<4hkp$zOizi#&PvmsvP+fQ{)AZ?5*UW9*Ew*wdU8|N?^BRoEW#Dwa( z+IvoZ@iPouyMy70HB{dI4i4@=!QcF+-(vlBS90LkQP$Ty>!#)?Uib`KZIyh+amAez zbU*qL{JL@Slaq{%R%qrk9Q)G!Y^e>f@gMvMhsQ?gd+a&7`8?gokoH%ZJ#dU|dv>tu zgKIhZ{25kXbrovuMkY_Zz^R?<=7)53a=Hh~+F!bp(B$^n?6RYY=3Pla68AM?3L2+bKImjqyH&GB}Sj8D3aa6k&28@gP%1yPAEb z!@-TCy#AyAioKuvG)GUIWIk0K+_Hur`N&W4!hvJ_O}_e+u#Re%99;%wUN(jH5e_fwdF-_%Hn*EY%Fp{PLgj zep}_spZGnR53lCH{m-*@c9HjP-^?oCVr2CIQP$7t)N@LCvR#`PxOzKR-*PkCwqJv{ zf}_to#b5o!$9U|)2dN#Mxcjq@~ousB;|odnbdB5@Vl};zzc=M zL@}mt-*VmDw@2)^Lf23N+Pd&)TXIMR!ECU6e=OzrB{f1wi~yuUsss^Luu&ja=2?am z8n3~rs5Gc67XT{({8vl;5`x%Oan_J2%Ur|ZBMn^vspMdub8H~P-M*7`x7@&OSMFkD zVl7Yn>aWm-PuP6>%@}9++GAg5?WuWgtWPlM7O9&W`^e}h7)>NYZB61M zAjc<;uFHvxAQKT@XmFOgQ$#Z6r1l&dALUIy|Ibl-c5(0BU!Ywmj(N+5_q>yVjpO{v zKm9d!6pAZGCur(HWSnr~zqv(CdHSngBI&l77+b~s z(jpW68)&x-*WPp^&+dPKPyFI9@%kCqvvHKi_aCNs{3+fW53p@uh`61SImMYG<;2EO zhOgMgrt5EI-Hq2%AL(addXl@o@+BU*?`s@8@C>7iE$$@Ys`XphBsFonOG}3MJK;TA zgv`J5oD_VZbzHb;G9{U3CG^qOuC(?EY62}KH4!hnXb1$(1*;<>iE*CHJA||4X0W`3 zB^Ylo2)vLK-s7DmE-$b+j`LSlutpmFt$94ntjlnJjLHMfayb{RC}XvBAmOm1Ug4>G z?&r{5U*{PjlF z@5QHQak(XF8fsex=%yXg#YI*r%^IQDKQ>G|R#a1if93_ufzu4$b``Rd^K@&0H~joR z;>qWZuyEucH;)Y?pFD|d=)WI|WnYFz_;V(FJ#CwE0Yvu_D91TlwnWl7A|G@>vb69J z!Xi!3AZCR@c5}1|r>BqtB|O#?m8~w`vP+a)HWIlZ;CZUNLI~&0DWv=k{GZKYf%3KKB{kTvWMRoMk%= zo{J^zAAdJ5JohBG-m{ zl%R6KX$hOR?Iae0$G`9eu8I@JB+LlIp`}x-AK1;8|MHW3H<57l#31eIDef2^ zLHQ92i4aZNiLuhWU*12kU z3xkEB*>2NShK1M?n<}x0k>x_eT1yWjc=2)WoRm#L=|ToIAFx*K1={(5mzU}A-j%FE zXYs<}bg)X#oC!R_@&I(Q+%dZF7{&)GjdLDj35}9UP5!cvM>Bn{omYOLi9(k5Cm6-eIXE<`^7_YzW4NP4B8b+?% z#j#I+i5*|MpVepQIQ18Q#@==7k^P!G-}ip(6%*K9YgtTNRGcFc2C|ge$R-NwF=@*D z^b}`4`8n3U`L+DzU0-2nc!0|IFsFa}6O3FjPE$EHM|E;*kTUu^NIiZzp8TcAEGr~6 z{v6@a%CK~?0(yd!piOjmK{#Orn3DUYyhYl8+*Iytefq9cK;IOZOBj;uM4sjQ;!mR)QZ-@v{1 zeu4S3r`f*tN}jK0j9#^q*_qQEJ9e1eQG-Wf!C6yqhpyt98D`Ts+its!r|*A+&i=#P zGO!vwzd$YaJo)k8=MVn+FaH1R{dc?_<$3Q7fA2CgtL?tkdq)xoAt8zYA$kWJY>bUt z9JjFlT=_YCsTZFlnUefO~Uh36>jKfv*#%+X`UG0}OVhJ{*#nh-dl@KWKV%`OZf zM#dhaqT~H29qXZPaazc1X#xa3o3RG@r*HEx7XWEMmcNT55gB*R4@=)1LO7gpcu8jG zBQplO!RJPfnTrMh%kPC6E!#*+74!u-qMMSamC zp1wafe~;aJc5?O~{|WK-1MJzemE%r3mIE(t#2SSZ4kr)R8vZI8E+Od`X#9vXgBxubEe>Yo3o^m6msv8lklB$y2#IwzgEsFGGBd<;KL2{c9+AFsB#ze` zf!YvBlvwK0v$tO3<%u11e&{mhEjyL#zx!?Oz3vBe))Qt=n#zgYlL;G!9Xnq}4ee)a zp^XDhGB|ZICmwwQPi|SyL*KuS*=fkQ^UvgjkA09ofBZ?>CQo3?3!B(*=i~GSA#F;q z%Nt&dJe_Br%)QS)!_-N$_~0LXioPghOd@d8rm}h4Q_L=P(>r4-K_%p+b!!;cR$yzr z%Isx}NfN_`O)oP>Llk@Vbd;Dgbv*T*eeBwjxrY``S<3ylf1hKb0D_0f?njvH7jIp59P?X zc)5>U9z6-p<=1Q`t+JyC$vX9vOA&*q)o%*03e~<+W6Ks2l^OdNbVws_8p#iU{rZHMM#&mVkAvHq+c0BYbcR#zDhtE8PQ!hA&Wqt2k=uTb3m5RFTF^mdlG|q>aT2J%z|SWd&z|q zHoU^AszUE^3%Tpz$LN?l1#297%YICI8!oO9Acv1zGAAGQbjKY;NH}H!V`UI7}krvP>-kA+vN{C9t_2v=S04EI2_Z0xS;WJj!R8 zfrl>*UY$MuYIIrWJyk2{)3CD`Fz2dwQ(So(Klzuh^56~M;_U7TERA}3Vdi9H5aAQp zyJI(#>z=lf;(2eGdGUoz?w!b2zV~HsWB^X_$Hgl~xJDcKRh$QrHs=(lL8BL;XW+eEDTM z_SWc{Ig=?9XOh(Gy!^@*76lP|>jt&_I41Rs<>99vquqO{-9fC{!KgVu>*aEOpaheWzx}%x=0D&SLh874*!SOIy&% z_Mtu8{lHzUx#wOst$G4KFvu~Y!clFLm{ur(tJ6qgv~A#pM(PloLP2ELvCCyj&4-y5 znJi5Tk%bUjGdvHK4kE3Hq#X7RQyz@-7-2|7ws}sxB{rGLW!Q>bN_?)f%)n~I#z;sx zY$@cNM>W$bb4%pJXZ~Z(JCgiZSrn2e(D)!SZwj#dV54o@x)p3Y+0hzEwyW7{!f+Nss647{>~DXNWqiKaexGBZzI z!i|sJ%H|tx<>H`&NG9BM{g1h8?`ApC)veT_n*`LF-||Ht-PKL_^gLI#@s<%lH<7ScaB$hHmZneQTOdpo^tT_j1J zc>iw3stV8g8dEMhn_{ZjxcPa8T*}l_mk^dah@&o6w{^4fqgQYsXz=ZC{2Nyl%1m_v zl}Nk|siu})KIP>}W#R?1n10kEE?9ape(F>zk>E;Q+Wukd0)$r-TS&Q(VlE{u@S}B5JKkW#P61(CC zJ!89fy*a?zKhWJ%3W)-Zi&Mfvfz+8{PQ@?G@OG-1fq-}T5- zzR!1GSWgr{9Kgge6Brn`mtv{Fj`i!9JZlco)G2K5?O?(5$@FjDg6JP0m^hZ*)gcD< z9-w>aVs`ZJXWGo^Y}&n^O;4}kyz*qko_@-eAU_)Y$`R}5h610r>cg{$pXd8`xlh0I zBSLQR*1rcHPbd_As6oAZ40Fyti=k?R)i>VCA`>xRRgidAseYK;O{KlUmhHRQvuy`+ z!xHO+V8**IK_R)}8((ATkmvaJHg=X1Zo2njq6ys`eg4_hyl3c{^*k_ifZF5^7F~J; zqP>gV`}!DDY2%3pALjY%Zf5a$=P@u;V`u+9*u5W@q=Yl)p-OG+*|q~yA7V<=6YNoW;;(`Y3!UFJc<^N~;!nRn=if{AaAm~(LuP*XQb@G)R0?HkL-yYC zqJ(P*~EWh6p06J~Lg@O1veh3%+@LQG!5#cA!lgY1uL02AI|s zF^?kao_U^^_U&iqxQWcY=v*dz=KW|b*tPyeCT}^wgpa(NiGTUKq!W92;kq9%NmpQO zJHk4A+<^81#qqs_TXyrp4R^BQxaGtrEM(suk1%2LD^!XK>lpTI|3%rozqFn#k1J!; z1^Y(3GcigJotf&rJ+IXZh%6*lvUP4Ri|5T?-?q*4@7>C&K_`U-e4q&1I~g-(JduN) zJ9n^uXn>(cjjr?0WAe!-@w0!wj%4F2tn8UY+%Rl3{hal__p$hr3n{l3X=uUCKmIOT z)^6hLE8owp-~BGVTetF&Klpt%t$m(5Z~8u0_DsP}m_%t@FPoowgsve=WPx#G>1gZW znGKKNTuP^jXv~|AlL{jfjyrxi)#GMRoHmzY-LSvDpMf3QI9`=_;=0@L?;nGag1dhD zQ?}lCGpEUjB_ibMcpsZ5bkZ~Hc#b;uWWwX-(L1S^N*pn;Yd<&Lb0<$f{s8+Pdy;Vf zewKA~F~4g(5E67ImCEEx7LnVrFlrIw$@H00Wb>my>dYl|*iF`F zw$f=z8pqk9MM_WsUg|8$%vpTuky2%IF5_`Y#_r3E4{|3FIm#>T5YqK9snj`ylEc@k zQ(4z1mBbs1w}voI84UdGW8QPoPcHx5|Ni_Ny|xYltiEU0hH}@w@upHnd4;Y!;s|^w zk!fzWm9yZp8H_k+rs0~06yIzc4;S&t=1r1!38@DcNK`$g9gWe7L04s_kc{c>roURJ zcK`kCWHB$@v5B%(1QW+`+qE|^;nc~19#CeehLF#vTO6p6bCgG)q_%=XK%WN z$q6ic?>TH*yOqi*3y9+(qFsG-D4D6|wWVxAaGpk}P*zY#EG85O4d&m7zOcy#KC~|q zhYhpAc!%{aAA)C^N8=sZ=lMENr88Q)TDWMtQh9Z9A@t#^QnU$v88oboOhXJ z&8R2!@a!wMac)v5tauIdI|7YCjB4akAs7lI#i)c!EMd)1bdtTc#!#t1vUeZl?oK97 zU%>u)O5dK{R0jswK6NbToOK!ZKedV<-0~GZ5*MkoC;ZG;S$OFOn0)!!-1Fk|yldfd z_G`;~&$)ti^EYzOxBrue@41VQ|HWU>7FO7}>Ul(x(y2SpQzk)b*s|#*#>O#wwPehc zxs;+3&#rrx`rZTd9din^jysvXX^rk7xcUPh;o0qLxclZ?`IB?b<-v_x+1v-X8GJoE6wJb&N4 z^lw_vv_Nxy`$VSC7)M*(64V@48Jx`SDQmL@h)x~e3WUyWl9a*-o2ek2M|(javLm5Z znTAv4&MMA1QlAaqt#cTe{hSjXq4IDQV{`YAOc(0%W1An9Zzd2ZHA>th{K2|gpG&?x z1O|){)HFyJ6BR;?^;C4$weFJ*+G`No;GyzK%N|+!;VZv2`^u}H{&^mT2LV>SZ)bNg zuB}K41qc*Qrzq#qQejE69ag?B&A2@W2S;c>io7VB+${gv*Si4eQ@j)yvH@{m6;yfABjL?_A9z-?$Ev?VQ=$O^t+(P%>%EboL&%0DaOT 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 DXYPaR literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/koepi_platzhalter.png b/frontend/public/koepi/koepi_platzhalter.png new file mode 100644 index 0000000000000000000000000000000000000000..3c54c30fa41c6d244489d1fe178ad22d3270ae28 GIT binary patch literal 41713 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 z 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

`BzM3nsl8 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ⅈrqW4bLG)tM{()`)sJZ zxTvrws7Q?s)`dZD3fU(!l4Tg08Sd;K;!m9Bb*`8c_IA!g9V`R5YooWB@_NxY@ z^^e1T8eRaK(4zHv6YXA=)t(>PqkLT@mdMTl*EMasFfw9*cU4<(myU0NIj_Y)$@h-UMP?H zJo?%rxre+E2=rR@b2TqS5Yq(rm|=A9hy-{#UF4qGJ@~YX$-}x2UoSPOVH$1L>=Heu zqiD^~@cD*hWE#!!N;euU7PI&^H=>e&q;-*WLh7f~=-Os9yuoRcMx;?^vloV4vQK1;9#Euf ziy3zf!&Dl)vudp?J=yRsMzYK0N)yIhzA*#i95x52%bR_MXacdeJ*mBM8(EFkPSn&S zi8d=xMdye|9zD6QoJn&%b<7R(m5>PPkW_JJVfBs-wh~s81wJx=nB|3etYnnB?A6K) zBw}&I#eP)$Yb*5uToFA zuZ=x3@eelFp~st%!*?Bs<3ewN4=o*JQ|I7mSbg6RacO}v*N4(a2TkHrEbTm_sGOvo z&6}wBE-J@}@hd9Lw58!l<8&(~BGK$n#Ys~{dO6U|AziUhYuEv45n~Z+ z5SuXQ&2z`Do4D9tB3bP)d|!?}0d}@i7-6w;LoC%Q3y}ter+oj71+g-@1G=qAU3U|v zN8q|%t6^|ydC_J~65FUWFA+7xzUBZnBXv{vB0RBkVUt_-Y|5EGaOl~b9)`b}ImkV` zc7u!&^;jK;Y1ceQT)79xMWMP~!)^m3Zv*mZBg>eE!AsQ_nx;^5g+>~){S~2=<1=lV zZ`z*4_JxhtfX7T~gO~(07PSd#JAv|Hl|1S5*y2$>zUvsNS)y~dvi19lXjs0APf<+^ z(K{P`j@WR0sUjE{3GKzHt?WBqT_y2e9i0Ren>% zFpma)U23`X7oLp|D}Cwk=*({JxavkW=H{^3I52U@3z3upm5Yp~i5N$_K6Ns!m6kvg z%|xzMvdU#1FMv&GF-Byjxl=#Q`Ls?!1oxIOZw2|bxJUKHvtU!yq^M2twu85QyiHMS zz;;=ko##DQ-OOV<_ASg~ij4IF)e6m0ow9_u zD3go#uTc%tM8w+Jf3uL^CPAUKp0@%=YTJ^&B)iBH1fU!{=e@)LrPg0EruxcV}+52_c{MxQ~NNoDiwG#A~5k%&@I z2;jV&Gt-lXKFgEw8A?II?_ThG0_j`FUn zZso$v4${Yz^=uiUaU8_G)fNFqwSLcG0_i*P=15Bs%dr zRT?Z(5oKbZu14?@cI&vUgbTmvk$aR`+v5}S*YW<{uV9!gU|fz@izmUWDa^w#A%vnj zd7T<83cY+EN7~bbaSanmJXPPH2FG5JHH`{BuyaGtBa)-6P$M5@u=P8tNzp?4+?4$q zH0lWybL#b`uR=JGa+8?F7c~kdL5yM8S>S_vUd$c)uR&O3{N9}P-^wsaip&L07A9z- zL4a4)*A2mD!>A~tb((UdRICJTMSup-5i5ow&AB4lsR{L_Y|~1DTX1b-v3yYml>L=T z@I}f!Jt>=iq`2R6?35WE=pW%-`)=c@`9q}Qi}x1T)SeEW4r-F-F8OI#W3h&$Is$R( zt(Pxw^z-#O{~mrlXWTRIT|zO)h0mjipcTY9sS4jrc|(y~Uqlnlp;zU0ydBv@SJX)3 zXUn4#reQ)y{X%aSf4JvXZe3gE=!LVa|I&cu#+3e78l2DYV;9JbRko-F{M+PEHSeTM zQWkVlKtki@T;VM*r@5!v*5vUuPAFQ5FgCTZi3H0bv(Q47YineCE&SlIl@0Sgy; zJlnmVckg{IpV@Zb&3Q8fXni<0jt}THa@nIa*^WmH^Q9+f}2@NaF1D*|9wvSaEHzQLH^+2t9k#CSD~{DB*orQ zYfO-AiWcKG7Uqgv_LkPDw_JXu%#_V(&5PPlw>h%1)KPE~5ImaCRSU0PiH zYRj@|KD;q_DRx1()Et{Vhm!c{>*c6k!)}&5M+-wx?^&^nyl3x=__JMm$z-05k0qS@ z=^^=}7CW1wP#6j1UUB8qc?#~8PCp=VDplD@{k@euLluJK8!vD3>F-yFE$BX!_>t4e7o%4V&mJ}~(p&Mrl zdQ$PBj178oWz`y|&6VMsCR@A$cUr)Pgp|Do4i)cDV-Li*h$2F9Bqn}RIqP-8C4aZ zgW1_dM?Eh7?0}8mS9bYDKDcxZzjF9io}Qb>_yM`k3kfO^wE;*dN13H`Of`G53iMRJ;Nqf20WUq^< zMMK@!sI;2}B`D|{ANnRLDR(Vh&#xU?XE7V_lJzY%e`mlsU1Qe|&13cnY!1RCa~T9| z)alSxCK+jVO?#syOe;70RCB2#{R+RmOv30UKeo?>Xu1o+xHFuN?8r(F7}oaJ9~ z%ns-H_~Nzv%;A@D&#t{BZVNJlio;Xtr4b90O)=&e&1t2UQ#Yg4&Dn{WvKGg#%*v|z zMe|@ZVZ^~(UI3A1VXl9nyEI4cJYvh`sHUjqZ5Zhf(*qONTr?hVmhHnyG!LLt;mkS> z&|-5zJ=mEcgt-!x5#Dt9_>LR+rSTTu^W+9M4cA$H_ZV1X=MVKs_A9zI!l>3I6mja& z=C)jJ7(}OZ<7pM|)3%PruRFa#So>u^VXs~_G$wZ%vJK1nPmJ08<(%1#Sss}^%1`fq z6(8Gk7~{v7(RxtL6e{L;$T8j2F1<)J(yUQ5lqp4jWF}_5Sq-|!!L!&T;w|$*P zG*UKK_t%3U0ERJncaA#_zKUNsd>apS_tGDy4Bwrx`foPy4|YgqdYB{uNs8ua5+0`b z9^nzTJ=+@gZcjB%%r|Vqbcj*eiUnRi%ICJx!$g!BQwZ<{5e~s420D8Tdd9N)y&2hm zbo4hCxO?#^KY8%Ad}!}=_%y6U^y=|s0Wow$i<+9_1GNx}wq|6Qlpt<&Rkz7c8^e6@ zEKz{|!z@towF|p*_V1g2{I$0p{F5s_()2pX%CS8Q4}Ug0f4d}U*nkmv=vtDNDF;WZ z*>Rnc;Yb@vX>YD=@tqp}x~dxt9xXU#Ht0O7$EUM=WdAF$qAOd z9Y5M5eN!6JypgY0csFW^s9md4?cr>ujyjQr=+v0nmh)|)gA<5hJUU(j0BQtD4M`V9 zA67R1?TF-~hHgI3-|W1WpFI3(?%8n!-*G|Xt+*a&%(*LMvD!80c2WS-Ks;?h@l&#g z>DvR^_q=F;`>;A}exZAAzTf%86(4Cn^~iO=JfR!TzOrwJs zPfV6RyPS1VUmPfHA~G_4Q5{lhas|ZBlj7;%q=QNk4aG9~|L@M9S+(7{9@!`_a_f*n=!6_^H0-7I@6%ZM%^3`BG7EH4=Ar5F zqC-|TE3F_V5Iqrxmo9f5yosNg>2mVqC;7_dr`UV`A{#%tf!>+Z`4=;oTl;7-LbFlW z4j}bpq)<;w{@n=iOcu^1+o7^WnO@;lXQn z-`#y1zkTo}d~RtTiv+QC6EXm=<;s#+$&?A{*LcpSAyQ7WiK_AN%+&7f6xEdoB`i5; zW!)5{41$o!^+$F*@SR_L{FheNhuQOGH1?hEeCKoW#AnxrbP}`NGiK%kpE>oK*||R6 z)rFjIXg0?l$~V%p_#jP_PH!AGX<|t_t-Dq=;mTPIQ;yX*IAF4>DKLCr%S8?XRFW zR+Dw6A4shx%}h0HRslW*n^^(1idw}>&agYjeX~b+qQAh57xsBavcARUCq`uV4e2Bu z*u4ZZ0iq@Mc<1X>N@<`<(`MnzVXM+ybb{Hb6RRt#1X~K)knJGSN1y4E{oa7#|G9?$ z0|%RyXBYSIXS-j@&mH*!{$lTqtoC;S4(}c64T=k?CbkkrY>X+i2&7F_t|o0~f{iUv zIw$2QLX)jtk0`VT%!;8vV~QYJHd4Lt`j;QM`(OUU+rMp)`K>ffxcYwXqmi&@6_30S{l#PH$uFfKgb$1Z@KahSwZo7$_W zYHGrzm}uc{eEDt;l4(-{`GQA*#j^l2UA>y`5Gk$KETj zD6}W)>kzU6HK0y8c6j&dH-Gs{e`IN<`*C0J?p_c^BLcZoh6DHb?uGus-4C7pg0YGi z@rchcKEn`=%T{tjg)#Y-*NRELN;E`Ok0$GsrfKcPr_ZER2%Huh2g-pe7ib(f2Ra0G ztfjm7SpN|BcW23gp3UhF2e=c;;KMoN2ZqRsLtQ5fzx4#^3bvz2IooFH+Cyx)rMmcV zRtiTig}S8=I}nXPBB%|&do^TR!uYgh^ijjgf5}<-$t{L|G$uQ58P4>1bbc?tx9>PV zedvw+&C+cQ(;)DtJ}b6bXW+)Q23oaFu^3rKTIsPgB6;n@WP*fEdxocxed$!cS3XZn z7pi(;CP3=>C}&~5&+WGz`}v(S>CYV6HAn6P_2z~HbI*&>h(1SqJsvo<8jL1a9(wE& zk3O@q@X*QSUwQ8bAN=}tm(%G6QkUYxY=+i}nKbIaD2hmHCr!!WZ74}jFiV<&MeAA0 zM%okgOsbXLA6Xr?0#f(?^!j-%Eha30t^6VUo8|!qpz$zp=p>sQQULmA6 zrgW}Wl6^UL!9ZUiHT6pOYKM>3;%gPd+e4F9l<2Mg+C)J`S}=e% zMK&7ro)#BTqI)S4O+J)Xn1s79%D8IpqJGtzkN?JO$9(5a2N${N&`z?VR(`|HJ6~8v zbKese*c|8cE1R1?|Cb*<@eOCrulCZ8C+UF4;);ntjdpZa9<4FXY-kHaXtZwbas;I2 za6-8m*w+wmIlk+C0UNu5v*v41TnezlSd=b`XUFgoFI{<(+XkQG#e*~4v~`ii@c@%~ z9AK89a}>JAgwEB5&H=&fHrNG&%p^!^i^vm=PW|r(R;9>Bu23Uv3yeoNLjOO`ymEuBf4)XP*2X}nOzxvKM-t}KU_|V%wbMI3x-&kIQB*UhL zv?Ca?(JG75P;4vr-KNpFEkPARr&=mdmW+XNXNxwxy%dvETInmBDyoS(gdtum zYyAU!uzwwQdds!LOT1?NAznUwjB7?`*fToE&U}r|Lk|CdvXyu?yNc}!Nk_1qJW%v( z7&&&vgel4#WT@nuFkXdx%N9nALy^E^6#g!|^Mu)*q^Dp|wSH1t;`**(M z?CFcIe)`n;+fH6sNj6v3iq+;8G^x32Vxot%W;vwM)0sMl(N;!@;cf5gY0^@vwWc&j zeWP;IS_!Wipj+5=4%V|Ki`-+b;zV}`@AKDljemxt+2^=1Kg~_~vmDIU=#NI&tsJX? z_#&0iUWiKLh}|VcVwhnVkg`F_1-hJOo|DXT(k^nUzn@2DZ(yyrFRVS>$bbzTBb+JU zzY8Mim5QcoY*#?r-TfA!wxJ~#8;wMR|7;`0)@EwP;&PE>ZrpG0bh&ER0ta@^KY8=< zBOhN_oc+lE@})Qa^6!51gy+A5U&-_Rf+E6Tob&X#wTItu{J_6F@rw?-+fp4Me3-no~s7VTKhe|Zb6z9PR zLa2L-ND_=lysAjxu2q;1BBB9lP|;i~9-#zhe7l;CrGN?-EgO#iAUmk zJQw>r)6MQuYI`&0K$@^mI#|JXjUO44JELQdW(q2*ST9MCpHNj*6~%`js)~k&l&E49 zXDZQ53cH1mNF*#u2x=qZK}5t` zYxAQ=_MAVxI(+(uy>oYc>zCa0fuDZQ{ajod{C!S1KR-3i|M>Mke!WnC{eJ@h$TG@a T$^GLe00000NkvXXu0mjf;eiiH literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/netto.png b/frontend/public/koepi/netto.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2f2cc531894d2c1a51c61eb0f9e4d10e793d51 GIT binary patch literal 26394 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 X5EISDu7O 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

555Za={B3jzT{UIb zeeeFJS#|ha6;Q1^wv_7I!Yo5E=b^k}&G=u0< zedKPdKl#;KKK*KJ|7e#FheDz~c&{}hU=k1)B+9@-f1++L?D`nOu0NhS<>jfPp?(Z) zBn?fte$L#pVM0BkK23r1QSz#O2p6Zn>#*9;d*Hq|r@6f*SsAb0UjZ(F3u%#sF8DQr zX+x1tQ$K{b)4drK_~}{%tpAy>_>&+1clq)E9{@xZ4T#-H$~pi5002ovPDHLkV1m(@*mnQ` literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/netto_getraenkemarkt.png b/frontend/public/koepi/netto_getraenkemarkt.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e4243d86df3a0bf5acfae54382b76055c5b22a GIT binary patch literal 31832 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

u%UtO#eW#JJomz>09{!UR_q2N|AP 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 XsI9i66SL|g00000NkvXXu0mjf6~xNK literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/palette_050.png b/frontend/public/koepi/palette_050.png new file mode 100644 index 0000000000000000000000000000000000000000..d55d60960a45f59a1c93b9f0155f4f6647da0231 GIT binary patch literal 102391 zcmc$_RahKf^exyBq;Ux@!8N$MJHg!o1P{R>xNC3=5Hz?$@Zjzap$RnZPH?BEelzob zxR3KN_kJHu(M9#?sv~=^we~vS)K%p%P)SfhAP|P4f{Z2z1jq8<3ycJu@%E4R01hb5 z3I=W<5Zc@SUT~nyY$6Z{Rn1OXT3y}N$=%7#*2$StQCgbP+11I~?u!)&yr=F#?gGJi&7*-qJt|o}9AuF&tRtx(#&AJl za6Rrx0?ObZJdlJ>yi^HDLJlq{Cxc!K^b-MOHg5508>G$(GGhqbn+FBu-2d=}0~w`K z;luq*0#UxTijo1@3WKVqb)#iL`WzrUYvln!&|g*%hoYXf0_ax@sAmcrtsVqM2XSab zg)@N=d_iU-G&EkIupb~ixl28fi}y9y`^-R3{iqjdr4^J7HUhJ{AnWO|y8K?bVCd6lTrT6kmKZrYY-DHxi8c)2Hp%-RVka z2@q)0Jz(~gg}s3!NEj)|;kAJ748isz+E0(W80&g0i6+p`!)3iI=l}XfHb1d-X=!(7 z=daR$l#%(Ep8u;&pJ|WY%a?}$k>|Ucjjk=)U@ntjd4&6ozKQD(#bndTC}E#g_7dcu zThL(7)q3h^_O2eti~$^G#wc zGqHGctIU9{@7}X@2LfHTJN5oy1iuNg4c(mfgq@4O$p54R1z9U5yMRC+WoX&7#~Q?k z!61;#&tT?XlBCzYL@Yf>WW9(hy=c#7d|^_w1AS81QmB?eWUgjRRUuN05tF~jna$Y$ zNRadNXxK)iIAgN)>HNkNb;f!$2j})Ob_Am!NREKtno})D!F`I>r-=s>{s_OP>Qz9% zjiIF+jl$EQR!-to;M9!Prqod&zZ7+a7mPHPYfBOy0da*qM|8+@rUut*i2gxul5Q>I zCkc})K%232=gdqX_?b21+DIZA%a^}DQ)!E}oFFDW%+Yf|gv>qgg@bLVU#d=k1trB| zypFmGy>f`;mu}UY_HQ>9({-K*xWTeLD0~Q>Qk3TJBo*{O=&Sx!D5E5!<-u7-;YWEB zrqRbhol>UUNZ*F@FhKN)i!)MRfrSQwoA8z$+c!#jfS(rkn=}_gYa+a2U6J-2?ws75 zqbAKEOL-QL0trpZ=(44KJ+fdb3+4Nf@SU8U{vGZe(jBTxBh;Kv5-vseT3d{oW1p3X zcd>VQc9EE5e4i(=CA7V> zt37aU!&&|QPBnc-Z*Kfh{viF}&9x^wMg)H7aFh)raTXCWkqxmYQEkSD65{z7;$dwL ze$L~J{U2CAoOJY=o0@g}MJc4-#=<6nz{Jt``XS|TN$B0&x=L<@6D{<>JXkMjSiz9DmxZG#EtD@{PmZo0? zM6cnUGi@=EmhgON<+L)kuSiQz)2~#h)Top{?&PaEEzK$Elx;V73dWQiR$?$_khe*g zLd@CMTGCoAMJ**z5f!?rVXLq&Ce3e`@$7aiJ*6Fr&OQvi(2zFimyj+t|8AbX8J5&KD^j>17bk}mYd2)P zO}p(d&JudH&Ua+ay7(pth)BK$%4!|>$9WWgll2XB@r=OWjB)_&Gv)_RMX zp_d^`b6N9mE5-U9!xDqD<_^bjLqUULeH}xS2D$2-YC1@Jb$cmJX{&0AYGp3OrvKMP z^JsH<3-Pbrzev!UW`|~fbDK|uHZ6lS{bwniDgJH#aWA6C7?DeumE?xx0d9@1ctW~D zYnfBoXX5^Y*J+3BHu}@p(|@_Qo8OKz4cO&qWzEam5Zbi5gN_oi)}Ha5*_}nM{)SVeoiQME9RQFEw(Mfzs9v@U^>Cy(=yUBuGa6A zYZ|^T9Y_PSg!#Z`L8U=-a5itg1xp4S!9U&m_)&Goiwi-mZtIs$C1ZcKO5#f`UB7z!Xv}=BE;jJqx4B;In#MPXIG@% z)@2@L(qz`MY&g{fYgv_enZ+vDK8q~#xAC-z53yMrOf2Z<=qr9vCKF_1uHke1(zX74 zdKI~qvxTA)o_ z)X5o|oRsJyRY9ea(rj~NvuFKvyvi!P{&mnXriK08cjQs~hQumF16I^#sgeV2L&imB zEBlYdLdnZb>MVV7OWSno)n)N?!;@pRUF=@Jvo?Et2(%x4!@au z^MXu+*}T~LXMuc9R9iCv^8Q#JbC{y*HRs%u6@w2$CoX$vi^f^Td*|>DW&Q3QhS2iY zSl_Bm|#WcFTt$ z^C>o$)3G_#+Sd{FYBSZZ}oob zW!4IrIvlwliM*!Fs|~kjw`bP08r!#?`E)kjbL-t_&|z$ZO4x?kP&A4P zQ~H!boRR`Vc$0DUY{AV61@I=Ng@UFE2;@Tt0tJPFKo2nBcnAV{aDYHZW+0GI1_(sx zlx#XE2Z9TyR+N#{_F6u9@&5H?$zu)q^>)ohOmOX?>!H(!w-5wR3GTs`Ok^FSX61EA z3Sm)Bvy9|zgr?zJLszT8;Zm%TRpLcp!MpcvxrgB)Uj*bJb%DkS^O&GQ!QG`aC)n^+U`69c|StXp63l&WezNt3E5JV2O z`RkqQ>+8Cv+ko1|c3(d~zw<(hmxDsRkKTg;M_PGXLvf_nKB57y`+>Q6&!c%Oenj1a z&QmXLFqP+d7$YB!edxO7j`!K?O5T%O0rd2BO||suVtacVYudWu*u#WD5}Shv{ow8i zXk?B@7A&cO_s1hnGg@SNX>F|pditrl*p7rC22o|+EH>YcB-@QgMcQOh-@eo?vx_e5 zzO|wPHgyVB^WO}7H4O+cy>HDU^gLf%^`q>*fgAUqCnorXqEG4vJ#ZJYt!58VY=I6E z^?z>aBf3(1xn|>V4m?Tluew@0zn_9F+K64nh=&MJjlTu@Pa!#s1N~b;lxnFo*)W1+ z5OxU5_%Fz(*!=lJ=iM>hFE=!&k`;3 zFA|xhfx6&3Q`nJ>_)}oJ?_JH(3atC);>bt{_cbQKJQO2<)$hKa!dm1V_m2-5s-=Dh z(iB_Q*QtS*YOkZ>+oh&K0&Y1*uCRm6rG#rAsJjrAMisWyM}&?m&2a23YNA^o(HfKX zA$Hg$dtnp3iq_CJCl-YmZM=o!YTF$_329mIOq*Zy0(U3S0->|F_h_#Ia^&Q{xL75i?E7rnRR_<_NRm81FSd&>KI zWcpJ1#mVVv5%y?W>R`lX+BH!qpWt=7WFsgnY{5e^dzdP7u`dwy+8N2-vA?{3EB}He z>g^|03$^g{%u+4wzqmkYSW0bnu*;07XZC&>uiehxo-39H8j?!0TImkV)6p=tv`ly> z+Ey0%p;T+Eey7|>?V`rB6RjGf)W#+|H%>t0FID{9wExcflYh$eYZH4w{|kFD@XWxq zm%HNwE)&A%9sOErqJyrjJNNe)cb(_{EA5^Mv$g|IYj;6_2zf%M- zG}?hjYA;MoVH;C9!q$O--54Q1A53A3u%_40z<*e5HVsRc6#hpP`0SleboQ&P*O%rd z(`&h5C03>H^=sr}v$wC^WuOoRCKpJ)kxJU0-*q8Hp#uqh3KM)V1j(MoE_vqoc0`!G zfP*@krjZXlQaIHrc<|qmeXZ;D4w%W%(YRBJU1$?ht&Ft>I}2QWZt8y3`@6orkM-Is zKC%vb3e1DHI9>hGQoA@*3(OS19e&mS-O!NodfNTcGM^CmyscrfxCyKi;+sP8$HI<_ zA=2mmz0LD@jc{#4di>Ek0jHq&?BYA z9!Aw%{ro0?`T6wpwDqu`=P7>YCO+&X@~XG@?uk(3PMi={Rq#X~3ws~WGJgL)aJSa^ z<Lv3YP-&l3|Y4 zqf;ShDrJ`B+hyu9>9jZ)g_-LkFlP|zcyQ%RzC-_GTT!tmUY6Bx<}6&&gmI-47S;ac z{9S=1VVHzHV+{n}x_bQ;(_Bo2Qq~W`{`cT&yr`13Xz5 zJXsC0;Z0`&JPkY)Duf{-BfRjhQw!!q5C>@5P)0fD9{6`{Q&)pw_1g0KI&4g@`*Fed z?tICj`~PQ)G?Q-C|j^x zJw)%ihBqJ;OVzWKLMPdyuQc!y={f80%6c}IacxLT#!*U3Z5mY)WK&%B%lvpg9tA@j z)|y$pbLUULE-fwPFCODWP)S93U}u|<5ww-rd zCzAbX#r$DMEAPsq!SPAL>G^s0WjgHAbZ#gO7hWHr&5hO5x4@i`iV~R?J{J`g_O11}75CX&vVmQRKVFDG@{7M5syRVM zYo%vb{YgD?oo-{FNd0q6E5H2{J`_6Re-gT*5XD<`T=hHKJ2fJ*h)T&&N2FDh%H5aI z2utmXAuQ{$(QUKhAWEb~0di~c;;}{=9T3bc`LgP|yVb~sEe*cn9AuVAwq)wIu%x>Y zj0?_>a;i9GnKY@HuxL=pD9S(%Lng|M!jp05n;YATSxLe?6bQEr<(mwts{4kbDPt+I z!B(>+eMA_H&bU@@GKJ_*cF3%KX3wb2#rZ3q z_zV9a-&9m!cX|20Gz|ozH`ozWno6qiY63!HTWF^D@W{x>E5BVrfox;R z)k~y|%}77bR9adpqag!rCR`ob&kM}$H4B1ZFq95YSi51en_7#t#e9z+;teb5{T%u| zo+FhKVMsr-WbhzD0LlJ^)I5iMs(pkC(F_A3*hBe!P%)TZGK|T)w%?cC)W)ybk}rpw z=z3{=9T`quEtex}QbUP4yvXtMn%|X5bb*<@eGCxL8yXt=4-c6DG{8g$-0bue+ge@$ zqdr?YkmG&VpFXB)5?TCqyL%_ldwUxMY3lZR>V6e5q9J;j`aK-b0NLgz{}oWpaG&n| ztQL6QvL)2LHvK{xkki>I`q66>(dFycJpf@iIVJF@tbT6V>J3G91m29NvvX%nt_+L6 zx~zF^V~D{XrpFWfc4#E$d1iBjJwwi4*3R)`2BrKiVoY};0}di5YG03PGgDGhZlx(6 z)vt~!Yuh%R6?Am`E>rSk%4c3iuwLxlSBz$N97i4N`)3<>tFk$NWaH3r8bPJAT?kj( z2|s!zoj=xKX{8}nev)ljg!@eyfcfZusT#=v#+Ir#WF?LpW=TWK74hx^fUvh*3eKv? zR;y9ELUgV31INZj`MUJ{pONN#6msSn87hThg~CKiO$B_8ylD>ACkI2Mkw#=iEW)oG zL6T-*94dq)+S9=z^Vp2s3&?S|RB1zK9LD$|v4atnRS+){9U^8Ve&Su*e;InvcG8lI z3RM~&pE8I?^}xN|U5LD%g$|vj2$!YA4T!Xcq^h~u&Ub5~^z+24#+T&NCMECbjobZS zRACS2JIY%@<+%SrqqdsEuk8Ss$hBxS#zhDgE_J+q@=v!SuI;#t_I*4oJ-qRG{trg1 zJgvh5Zf|eB0PMDc#@^BMA4J>F@iZoiu&s8P%5VC*9|m3cEUTl_y>P7I_qMy`5cgG8 zs(XDu;dNGgEK>a0JcN=mn!0V(@q9tg)Sp=~ximf@p_Zwb&B~yen+Uzxron(Ae)|JB zsn{;l+JKX?h z$6Da$_PkjQ6Kh%7LwKQn>10~DC^BiOc^JMNS$c= zH#yq;pPHAKmXb8^TI*SEreV+1$H45(Pu5H`eVj`tVDGx$a^)bJ=>8YZj%SeO@^ESO z-+~UfwFyjXSr5pfc+98Ra(b!m9t1!W`63;9*W~rTJTcg-;XWkrquxfA_gUcgnyYEQ zv!yR`L=heLTQS0Uu;=|iXOVZX*IC=^*TGLNlZKTLxY&U11h@Fm(9jr1$fr6WYNl!e z@$~GBO)(i80ZvCpLkHhV13+tjU2nAX@aL0y4^tVt!pq29rt3PZIZG&~OA+#^!Gr_m zQfW4}Z`F0XXmm3}<}Whp%X)~~Tn2vaw|~=@r_{WhV$=A7T_Xu{XfJTkWwCLiN93s= z{<9amc8`h`Z@M=-inHB-qho+0htuhpz;lir!KuV7L0K%JsF+KK7fw5kG0@wltfzs8 zD0Tnyh>XWWrBd10E62d7A=BtDlCYoV;)je>S~{{iZJtPS{1sS{Gc! zd=F1fPLi9xK8>5cUSf}=Y94-Wir&BS{?*U`OxTJ2tC#^P`^omT8@A{I344cJ@5dh% zEaL@snTM~huPz#RSbJ9wdhM%c>9xkKmq)-Tjk&h+9J5t8PqkjbV0;F5>$(v)q>^pV z*3iQ4-07DrkDT>icS=f!0oMSdCh+kd z^J3+6BFso0m3~{EPfdn62ylh72V2K&HJxR@%Uv)FI7${LQE2|IW46|r%*3!tk^xvp zF*|uzP?CryTn4NR<@>;(rQ1L^WVpo$knF@=!OyEI=zSo2GL_Ytqf8ynQZ~J+3dC{x zt=Df`l?kXN^FWdwX^3T+1c>xb&Ps~3ufH}nHX@v?0awlkjv;KuQHWVjaldky%Lfet z76P=-^Yz9oKU7Ou_S}x@i^|_;heP0{5=%L~$?EwNMLd?0B3U)64(@~pT%uD^Fe9-{NT%03RlD%)DXjG9?*UH>_wM(SN0nc5IyOn8Zd zk?Dz=mQUw9fJW?it0vPbFd48AOjvVQH6cj$0Q3UrMOwuWNM-?J#`Hd+&uCkX9rQLt zv#!Ma5Ad(r$^9#sHxJ1RKM+924u%7thX-TWyGHD5JNE+GtDc+~`X8+;9-om!U*r7F z)?F4K{tkDgpFjM)dlk-mxMnwAhe8YI4}Yebf_r4gUyQ+Ds>PFmj9P8f@?Yfr9SD1s zt$YEPG-3Gm@nUU5XQxVCT4OdLFpVCBgpD|J;zxu8bDohrOsHrS8F7=#l+&!iI2#|L zUEr(rcpT#FNS%?sNoQs5jukj4XL^GBuzAdS4T5>cN=4vf6@H{KIjtEL$WAmJBM)dG zz*oUBAXK|d=+RZS(SMUJpp;=AjXPe{XVY8h^i5DsXVYqC^`sEl00?o3L+jU567RXq z-vUF#@_55U+mL}dx}ncjxU9HQR|~ zt?6$uN+Q6i3M?<1RreDI|AG&;)U|%z8dobbRP+=ugUujY(!JPts}|cr3HDb87Xcid zUt=GJZQSY_4)Fg^b^j#2>dXYl3Yxlp#%0G$5yl`I+V^opsi~^2rPGc+ef|3Nb@lw= z;O@DnQ~2&o%Q2&kBJX_1{G6o;bMPOc%SYJKw(8mIpv&?Yf1hO(bwf z05EEJ@G~(DuBh;SxnZB@!Km$eWah6~-*~(^ChS{xldMZk2Dleh_?@!|A%ghLA1#rq zi3SAop4k){RkegA(Z9og=;CpPq~`g;98{ppQcMzt&X|SvnI)GoEU1!=0_ajfO*lhD zsi@8Z&aZbNKV`pxsVJv3`-FA}?^ZquWz9i&I~~&*qnB1!8KP;@tR%Hs6cGCi&sMyL zZS;}3F|pX|ns|#Gj4CcNc3lCj?&SP5X#i!accF4ILv{E=$=lnzyH@Wj`XQp|`i+AF zPB|k?th*mm=WY(AXsVRPK@wD87hTP2C1azMu^?J_8r~sDV|DFnxOtS+qr@&cSpFvh z22z~WLd3Nv7BN^cxdhDQ3`w#Pw971j4^K^IjCO|9>9c*?j_U81{tr9>`U;?leV~5} z%|ukZ zZ;vs?n;f3HTi3s9vVq~L!kq1&-cc31+tY=DLwc%N{lc1Vx9%X~G!QoOb>^4NEHPZi zinDbD$Ccl`=dY{X(43r{iz{*16(Rq)vw)?&J(@kMhl$(QuS2h|V%rz@9aB9`_KRLG zH;WH%1Gm&D!_0(oE;oALh~1Q{T|~alP;3F}i{EWS9v}tY`F-gzy;l=^O{(zToTopD z8vT=Rq`Y=GYdGoJ+SAC&tPYaV_>f&<>p+w+%vk()bp# zk0whU7RG4!U*JPJ9`9y(TpMsP2Xh}va9xn{3||kjjV^N*hI%v(MB3><#S+J-I6(w5Q zsb;$?77&GG$k7qm|6u=5DjBF1_*iDRD5AWu_K@N-`AxBDS3L_a=0K7&2ozTk6| zOB(;0Pw0cYT+8D2AyloQyG6}pF;=cH215mNWvWee^ijVwDUA)P_iLonAPzWEkrOTTILL}8`COgnl%>dPq)tUYQ6AOELTSK%8qA8K$-RW*V+M3W?+7cs!)%n}LL#?sb0v z2jMgBZk(pXj4G^uuDQ6qCloWfctbIAusoC#KSbzPmy<)j_HyRQO%fNiodJX|fE5V{ z2y9qTJP}bmZy+V?LMy8Ut{Sn1@ z!JvVEL_?#ez+Hf=ZHZ4KI|$bnN3%)2%8*%xbER=UZ!j#+7}WJn;?(I~qi1G0!y z7ta_?j2=0{@w5DWX7iu`^3=yN_%LiRzQxd;Ks&5brY?W|Tyr7QzzSvC;c>Mxil-ly z1EQ{*S#igarit>MEU*laZ07TD7(tvppFe2V|D` zAAjLGz}nh$CW2!|m)^{707_nPoSWXkk7KA?^F!+cs*M0mzH@t#gv$>doK}d0RGG3xRAL$T<)Sh4Ec$b+L5Fw zulEWOPU-6G3V(1wgP)_NQN_#oHOPd0*ou(56%OuE+B2|F~ z*2gUqgiohFIqk!q53SGK&r$bDgaOY0bLkco72W;!FOgP}t-j!Dx%YF^CF_xn0+E;N z=Goa<_$$k_8;}nZe*>T`qMr&NKSUN~W4P74E@WDGgW;V{*a#z()T58?eN^cY_#voa zvWQGvCk5Z^V%r$ENRCage-RvJ?^FIrYi6@6mWjf%$(J*0lx#sNB!{46bNrRKuqF9d z+%lzatC&&ZUZ36BX>!RT&y*)yY@mdV5GMJX?OD&#Ab^TUOhg2LYxb<8IDb4Q%{Tx7 znfu2yV+@^@hNjN@<+l6^`vM-S=ublPn4Oecx78UF%?P*%oPCPxGuRO<=r~FJG6ahf zvpSSn;%0n0YIggB?e zw~q7S z8E4zkHAv&kn$%|@APo6e&l2wDsBGU!7v=?2o1cxOz*oh3rY}qXsi&|-)5pQ-POi*s zs^VwDn)CJ9+%qF1BN>f>+1Xis%cy;X_GSkFSoIn{v5I@vE*jadpw~E#5We;N`c+r- zY31rFCueo-Q{C?kag3IT9q-{394G-3T`;QG^IyW+mX?-Qk7N4IkLeuf#0kTM{O40s zm{2H`k!eZzFT?RpF3K7o*$G9Eo3_U!0LZ@ZY|ZT|ACy?P8YW)T%C#gaX{XX`Ba};p zx#?FjMbkNG;Y7e`(o&L52`)os$_Vh~MkF3qCv%4FkRfoH#c5=$G)ElUW`PoTkzfeI zd^5e)lC0b2vC6l4mhGd3;|?Hf{#Uu}NCE0#zuor9t*?l^(}3z^%OO_V2kWcv5;fSa(+_DcgD<~M?h^v_r5IKIfJ5Y1tc8n`L69sqQ*86nzXoOWxHicVk3w= zoiqUD=(T_+hp(QVbr9G6DRO`cN$KbqclrI`Q30ZJ+lDlv`G~8S4IimRwFNb9A7fDp z?R7!6a!Uhm-ur?XTn4f}$-g9x%?fW02sV2lybDs)jkTUk<+C-tpX>}nUCeOwdj!xh z(;WIoJ2vBdu}})a#?!GBw}~v!HI=S2iF{R)k~HhjqOPvz)qoDUAJgmV14Irbrgvg~ zBiq9XOwl2$t0s>xVm3B5c(R)f%O2QSlchWk<4Xsz9MRgjyWMw9iyzTcv$oIE%bbjq z?}d@N&jF`dQR?#@>?II}@ne?awLkDbm<0F;0=J!>w`~&nE z`C980AAgN$DI;1*3W}9Z5UTVocXG_fX8T~@O@uikZi0GAz11!fnpH$6k#fB|!RrpW_R`ih))}sor*vMK$k71~&Y{vSbLf~MXM0N6)7Hbc?(o{DGiDp+4e>af zqXV=p5P$&y%E|RE0Y}RD^vI)XKGg~k;rjgeEY8QMtVE@t2r)7I6&@3Xuy0HgpcDRI&*&?p}xCta63r`|;tNIj5NI z?d^=k02{SuReCtP0{H!Q!_aOrpbFnu*9eMWaN`#TLAQ3vkMs$H~OaWsYXR&6*A4B$Tz^*Y3 zZLV%^X%QrkTb=Ao?s$3YcQPGddT;xHl_%u8&D*vlR$3V{+%Q~bIRZHoi)?QvTK&YL zUx?BlWs~ch#PN@h#yj_;HU}U&LG_%40RdN3fcl1g<&+QaKXv?^K*QNk_Iz;r;jEn0>#*pQ7BUA z#Hx(h9*z0pM*?Va1McD0*E{n&E&H2^V+2J zSpRl?P3crtD?CPwM>0NLy5W*RjAv0m*_h6Ygxc9^6@p^^1G6JWV1SU-0= zhOnNkcTX=Z5lf*a4?w4Yx)Usz4(%@Ob>z@7mU zl2hB&>H~Hmx>VneDAnFI z7=CEYJ?9{)O=SK#e^{qq<8^s|vAjQFlcYgpo?~;@eK|(xeO%r08xXeCaz)IAaz0hl zDZT}6?wt3#U3BVY$dB&!mSI40&d!NPnTw_V=(24Rc~V4W!2UP^`-w34GJVm$eeM=# z`+7$g@VbF4K62;3eh1*hkt-3HN%yg*=+iPF^?LdFJ;!qH>6$F22USyo+my;xi6Q`z z%^XkGoG1b?8UW4`aDQT31=D*|TK6el@aJHCyFv!TWA6Qx&ciQ{*0>e?Ekb%9SE03H zu8)t?&n+IUMcp|ma)Om(8lPpCMQKO5!q9`lbV&)UMk_oTm+whO9tXFwuPlC9N@OA` z>?Y{=0CbsEF*C7<7hbwH%gsu-pn{%^oFWN4`WiQWUE{~@(GcoLdQ|aq0YfYaudB-( zT?#dXk#bzKfDwM5F*+HN=}}3ZdP&e9oQRN5tBHz_6vZLOYP0gR01Iyz6>T%})n+qq z1nqxnZf58HyL`7QYQagc+$=d3#G`@|l1Qm8W|nV z7D8_NLM@=UEn$y&=f-AoJQv3cl^nd;?~d6y8s@m~bG5~gY7uLHOR!JUSZ+(ArsQ#q znUjcXPghN#4+kHdxK<#i0EaLj-HB{RKN%bGA(n|E?B z;UR`PifOx+-f}+*oA;V=v|9(QcC@|(|0nFUA^U02;N$ED&g zrLZ&DzTRISk1R@^=RWr5zVnlyrlzLB@9*_8KG6FCw#fnq==#&;I6EvKsOLTT0&(!B z#E$lu-$Q^b7rEi44~1<9Wq+`*wx#Rk@j}g%zXj9&6mfRmFm#9~DYfFQHZ!5ctuTgN z%`Y~Is6@xwP|Xkt!~r|iQfRM`yuBo;EL6xkhVH6-znro7z{B^t4Mp+DGk~s`0uL1o z-7=ImU^C!zD^VWrFN_{V)qUSzA97gLw*}O8?C(Gxvr^(VN;ckdwd)L%e#o`eq_MZd zr1n*{<|yJ+fE&lOC_RmKk{DH%_W`$A^wVF5(R#7CD8}(*fmQ10ComJXc}NPA$0?&O zhR5n0iFCRBQ3;)~r*e*)J6COj{W6jb2E_J~r8tF&S_2!2DwKydhWTAC8TSu1g~HUc zTh=cDF&ATXhAfM`bnGT}i_@p&Ceb{KkWjrBvxPRhvSXwczRAnpKW}r`GF}-xXXb_7 zwfd(xN?qwv=CH@vUe@^dCOD|&#u5t{%av3XY!jnNlq)fU(G#0~mXmI=P=ApApw+lVE=qEAlzvR} z8QJhUc43~hHWyn9f0ISS^Ws{gSi5hFx>69Lv5JBU<=ARP3t47L)c22~qYF6>1Xm~w z3~EtQgFsxfIe(bK3K$N&u@JvKV1FSLA9Uw}rLB?#KxL~O*DM59TmxUHVf(H;B(OM& zr#je$IN#9BvB%Qt5|xVP)}MClFmsvYfn!JmEf~*W&wpe(CK@1qgotx)y$7u^y+E}M zFtXLNFpgh-0+lxLDb2-pK5zVH;3+s8KH=_m#YnAr;;9OrOnwONbhH83md4n|j8uTWL<#?{n8k`ia8 zkz}~S+Gs~G=6EeN6c`{yqsffuC>APfSl_naIiz@*(8SkQ1F$>4S}E{DG_H`hLTL)N zoPSs-Z8SJEv4pjbzEq#hAoXpD;jc#D*i5lfdF82(Pt5a&@7FG<(21^*zc@I|9=d-k z{Ckyrl-cIUSk;P6e)sgIEeBI^MN?<3DgO&e>@1Ip|16JfqwMd>4}`ol_J=pZ?hVQ2 z)`tV{E!C-YKCGQ$(=j>Z+)v;tYourA#+MzFq$_MO(w|#j`y@-ygK_IwXks+op&MnK zHAVW9Owp*882KP#ErH&nQ9bW}8!BhwUVVoLQKLQ+26%GlNYXwp?+nr&3Jcr_pZSY* zQ+0yvklou&wiqRprFHC7>B$c;-Q9rY$oQDG;VJEGTsn z8f=~ zucy9gHBoAI%w|5sq>r<)9cKlkHwVdhGi9*W!fi^Dh@RfTr@8O;)UtW>Bm zlKP=+N~p&Pu^*-C#m2zjTydIa{mx<%0LL+!5L8eYSu~lEK^>C`UH55u(Y5KP9diMr z9Md<>H08)heS2Ul;0gIz1K@4b;?2&@aR#27DD3ryb#J1i>)*2Nq-&F9ld;Akh9p=q zZC1sVemt!4?Hq=hOP^Voq)|-EFEl&m7%7@xjCLA*P>j-Gx+p(89_>tZyRb@>;(^b< zmRs(OObR_@E8l-k|2N35+;s_&&O{2~prJUa3rtLw$xo*k#PLphEBkG61+X5D*UKnL z63P8XGy&%r=a9``NHQ(T{9!8K?J%eT;%))6ZIc{-gg#?(hcwrDVpx1>E#uY*j!`H& zOCK>pCT)Bo7s&k3imD=xQP+A>HNA*j7NQe2rX`x{4*tx+3Tf2Vk<_yLg3+fSL&W9T z?stLj<$4|SrNGdzXZqqPjQI(hWx^0g%=qM^_0=l@Wn*vktb&-Kec;4 z>j0L-j(dN;!p{gX4I)bRjN9D5H8gOqUFF{W22}q(jsc=>0pHGdF@qsM zxzMd9k}*02m~Iz)Sx#JJm_Y5rlF!Kb`d`eKbJ5{@W#pUcb@AsvubbZk_t%86qWTgY z`K_F~)v`-I&~ul}GwJ9&T>miyEbz)K1j@~x&8;tg9M*2;V!|Xx{KVd5-%+W(9djN0 z!q+QUHkN$ou7npZ0_#Il*hCvwi%$^9iWB_1B(KZr@`@Ln8Dcy~UCxVONb@IF{Tf^h zZ_l}`k}-Pg51y&U~a=eD7}^yL-HvDGy1{lg@a;s3ai_ik>*sw^Lr47VeTp>}6T_N$|w? z-6{goTHg;K`Pxy*R71g~l zm5SCN^YWx&`X2yquKsOG0~NRN!D#se3NDfyoM99|-~2r@!i1l^n=CTjky>2wLkDqw zf$Z2!V5K1av>s|SclcGY{`95?Bm6C{h0$`e%rS}n)rxatn`Bi_Vyy0|s5;pLT{Teu@UVGP5B9@sK~!iK=V6OE$UN zfEBugMY+bfb;z%4XY{}Ny_y{~qEfFmv50t>fg#nZp(HPC!W!}FFuB=5-8BNpoSE1r zYvzG1F=+54Z3>?(Es{!ZYpR;*61yt*-Ia~d2)I3yQYm>Mi2Cnc*akGVZ8-{tqEIdD z)2yV$TU9q}WOLSU<^q@e9$_yp7nOAnU+pl~tL))G>FlOMg2TYR5QDDc_O2N5*I}3d z);p1nHx&1vyoU)Jwg5S%!8lU>``2?=z<&x4_q0gA+RGm`7eIRQyxLO{`xlJm3=r{L zpChLK+Za}$k89F7rsowY?*9<@%lh_>DZwloKbxn3ppm9d+96AUAD6jM-lu9w#c=Je zh^yx-cJo+scRs+cIZXDB%q+)(FAH!SPrIdpdzqS>kr0?EmD}BYkI_{TM7-{UmL{}t z*vQXZe_172k4_Q>@J}iIqJyyfTu?Bdtsel#Xhrv+gy3bPGR8zN_{H}J{X$@tks&tE zo~=L_ab`n6;nOZ!O&r&Y|9x{p;CUu016Ir|CObLR;^&o@mj_&#A-oJDg2Suro`8}~ zgDwpW(F9EuuOZE<5K-&Nrpu`?x-2$)nD z)mn|Z9RXspJE8Mma%E@+YnRd2UNG_@ZjHC;=Or0`TJVM)mX8<91>mo(| zzf1`1K8V?N!45k)Jx$sdggn9#^=}dY8(R+DKcp4^SB!2SIiV2up75*N8QZmQtmIVj zSG6lsR}29oXhwVluaX?KNhn28Z@yu-K2^Y}d2?Y{zeAQuz`!emx++D3PrXDH-Fz@b z$KGj^cVQcb!|Iazb{MB!_=(nKt9^V36i=zWrVKlHx9XTq2?o6Ujco>5+z=iWmE7Gg zr^fkhy1t2DFat_npU#1;^Y-U28$qYnZx3%<9f~REN{g9M z`nPOQg(FQrwL-2!9G*L)86Nf4LSj2NH=qg< zOfB}eXAQZ$yH&earAQI2JvcQVze-9#P!y4Ks&#Xxp^9K?T&Vz4OmsUoxTE3PG(VZk z8!36Hwt(3)B14@J6#|zIL7i5KHnixFT49S6$-O&BP(Ot)`L7#Jr zIe&hASF=hrpN+<*o0qT&>a&=8PT~NU;$KsI6*^6lvjjN2g0m0T zvZkmRoyH0pHIuqu)7q`~_ViX^4mxuf*VxFVh+f1gRrOiIkLjluzl8|p z+}j%&l;XnKxm(j~r;PbpZ0EW{1?+BXK*4Fk8WK5N=f2A*28HksD9cn1B~ z@4l(G^5if^OXZ`WDi)*+X2nz)*5`0kRuRJa@~{i=X07E(7-VLa-(gBR8B!ojmhwue z8-(x(>JF@SJ=(C=IkJw+hTu^>M!uFm_PyB@Yy2C^c@cE!jyKbiwX=ht7K@_)WByog zac#}AjWr{VVSSS`1}>M7Ch%eyKSwg*_IRHL*%fdAn)#My-b5iN+xLR zYZ$zl#G+M($YUuYrlfvhL1A=#j zK*s*OqUtx?ntKUXiZ<-WrqrR|*=N7n8pWjDZ2{jGxjc;E?6S5)-<+vVBrlV9J4G4d zEkgI29~g{Bf3pNDvX@!1;2hpiQ~Y@7%*Wq-69T_Xiu1NUWKUrbNgU3nN`zy z5y|nbl_nkvuHPA(i5vDB-2T+872nh!mr?B=Q(K;b0U9l%%g}i}m~ZVJn64W9I`bxj zAfhNbs=?*q|J71VGHzBz17jEG0!irfagR0_l3FyMXIKEYszwg2V$I;NjT^S|T9G(? zudZMxxHu`$Ig8TKr(@Of8mU(7Id?$#ZSM#L@qMuqxJrt`bQ8!xpoHIP}g`?tw#kY)kvBbja= zB9&&idyi{{B1wWjxE`$JbSm6>Ecdew>L`})?(g5{#l3&Co07aklNQVMEcufs{i7g> zoQy&L>B`h>+ZC0gKcgNbl`b(xoo+x<9)i3K*Iz4Iu>5Gn=VDdQE`uD(DgPNnDpA9? zEEsp~Ct>m~C4MLst2iKk=d6n(*{8*wz6^%UudL93-Cx6Iz57?4DAGGkK=o+%O%cSJ z%Pi@D)Pj+TMU6mp8~Re9#&G%`OWh35EB%nu32OQmE44*4#Btnxmqn`w@gWe z_kVb0F*1|Ppz8DtU@GT-MgLtGVe8{9qK49L;s3kOzsO5pA2j;VbqmmWyA1#4I(*K9 z)C|(3YxoqB0FoyNWHU7R2fHiii@+afYncNum{KmE!>B);oSb~O*pX*+orjZceEh|J z1>VDX@G88SPl0(f#X|TO1?C&Yd6I>s5~$Ydw5o8w7~rSmqh{JGrKYoEg<5Gh{E zB%4Kl(;noQ;5kV?uCo`eRHdJcAI8}$bbzGCXY+E%Xa4htuKc^v3i5s!k<8yjfdsdP z*VMAil5JIi=~_l{I=nT15@3jNaDmqjX?VkzgXUUmzi7DzLg-~?MlDhM6M0<>awxdO zC~;8{I@0eJ1GerUJLPpGW9{b6Ku$2Jh|&Hyt<1&Ym`p2x?}uPKME{tzV~t%((Qr+3 zo=|{O6%ww`VH?t~{w6qeX-O23*N+H-G+gE2fOdFuH`?d|#f;j9>SBzw7rJ28xN0yP z`k)iSYn@EtU?|?R6=>OEnOk95=~y8qwf?iHu|8q*_j=2{bQ`Arei8rF+|haVCdd? z0Jy*5|8{_IjrbLD&mI~4)qP{{hG#&?Nr z{@IYhQws7o`IE#|R5M*Ai;vfi9dal|KKDwq8T7=ZVzHp?rUW*WnlG|{n%sOd-5IINs{=|mUcclcM_Ge(MyV@SE2n^1;B?75kl#8FZ+CI)3RefU2W2+r-vqES1Hk%RngnoDrnSGh*280LWfavXX51 z{K{kF@P7063QVi2rw}p>GiZB<$-tiBbOuCt;iSy!G8z(i5%O!Zyo4%RS_DdCmf@O7 z0#m&$zvL;!1$RbgQXX;Mx&?mRjV$EfGrU-(ntB+}_%6mi)=coTFow`Qb5`hm(tv!a zI89zXG+ifM zr}{uGr>LilX4Q4NaZ6wl7L_7EmS}^97zt*{nQu~2F-iYvhtjWKSpB)oq@i?()-_g< z+}NcK;k!EC>li)`pVPH&D)nS*#~D`??~-C?0fotX0R0 zSOQt3(#bUV)O+3g_{fyux0mZi;22NELUFP`zUgtKl$)SUowkx0Puc{=L;+fJ`)tIJ%bWs%Yug=NDs|)%Wv9V%@qZcL)&(sB z?0WaA_2g%f?I_^QAO^QdpaEk4P3J&i5eI~R@M`{?r32X#pg_}F-~(90oV+~nFdER1 z#QyaV?U}SgjUDVu#y?JCjFX>>;~n?q*6O@bo>Yf{NlHMVunf+_(0GU6uToxFxYzbA zqS`q@UC^L|M-gR)noJ>${w}0N;CstPerzkYWdo=uBd(i}(tTex13-3ca~7uKw0Stl zr}=bxN|JotCv_*oAK6^xP8#%3=vW`!Vcd87m$>B?#g(<>6(P;3+{O5@nVEfHQ%6VZ z9pO-u6SqsB0dA4yM5*bdQd{pbK&L!d`OHZ`qNU6t+$3Zqk|TLT%rqQWN37l#@oE%2 zRd5`;HJ7?N8fs|}9jnYXf$S13Ml?TMFK1)nQ2wLIqLx4j_g6(Rj&75wlrs&rnslypLdqsFXYcV}1m+B0(1#Pzui2vj}7yFSJ*UxFO_KX=OFp zjN$KwvMQyjhN2p*kQlBp&6X@#KKfH#Sk)^%BUnXXJlqfIJ+xO4jb92zlcJwL8&}tT z`T4DfQ@kGJK1b6seh?P@ZP{PNAqCam>*f@hbtbg>^9IuP^3-$A%46%l+=aE%YHuozO{ysi_01)^;6fnMbC1nSM z!mH&Q`M2cg2S`t-D_*_a_2ip=i%dz{^B4__#2IOb+k*2~&)}wWn3UTmB>u8r z&^#im!f#TI+QEDebwfO6j$@Pj1v+BWTW!}#@D#9GNXCV#xrYypMirqQ;e7OcIHFwU zmHDa`tphp2X?aqi>3pjW_WSZ@)IQK+bOs1f0Qju@96^oI&<+~V^WOw~ig<10?1J@N z?;yJT2@q8D^aTHS!yFSj>NRH1yA6zMY&?L0vt7MHtTzI4;(&$}!JkgTIyaJ=Wtm!p zEpL~}-h-}uig$F97&CfTc6q9pQgzpy>~6^cHt2O(85;#JT@_Dn zM5USAXD+8!b*3ITq7U1$%&I8b-``zYEiLU7Cs@&ai%MA(n-n%0_x1M4OqcDpj4667 zBLAMQMf`7~_AE!;I3eiLK<{o>ULMDQ55%E1H$MY^7H96;Fr$UJ1OROwpGUW&aL>Ul zr*a45#Q|P=Y`uKWL&WbEnE35qvLxjK$9l-%SCZw71sS`$`KIeLmqvxZAhprA`@+Cmy z`<@4E9EUZb>$BR5d=Jj=>iUF8hvwCHmP+h?ifl*3%Wtmn4dkLi#=uB=4{_$R51Wf; zV5!Aumh12~Z?vyQ)0T0HZ+%PECm$Xs4UN%|a=&K!u~!{hJUmGx5z+IH&r3I0UJO!DK225)>i3n_r}mq5D)BWeh!V_4H69d;Es{|r zPKG7uiGAD9K1GfKBKp1pT#r}JE;5UyT6`j(Sjt)TNbDrgwi(+lPTvjPQ#ZH)R9zr{ z&qZw2ahAvwFsJLP7|qMg<;qnBMo`2pJPuj2=eK}k24G8P3YcSoOJLHn+nnEsb8%x3 z6=BeF401Z11-9zqB3Qu`L1uyMGUq$2g$v_>eTz@(AbA)uY-9>F$Lk9wV!rSe7O(4L z08NsXB+6Jw%{75iURq9Vg1nzM?EXdm6J8MaIvvvc*YhpNnlF3y?U_fSY#he;uJ+96 zpT#vHh-wE3EnH!&{kEjLfgYR2b?v(X*w-**jeA{6w{^fmzCcQOjXP_CBz{<#!78h& zM1L|vb*O0&h>GWAr$=JWq6+(GmS}xlj*B4IPsM-DrT9nPx8=LU{f&-*I)b7A9@*8K zA1$|QF;$f_HIl*zn(E*1bt94Ri%V$|S!8Yv(lCaDx(Ds~EmsFpWaFj3mI+$m`7eih z12)jt|C({W4scWwb@~TR$}bMu;ri^0J)OhX z?_BFd0!BR5{y7a~Lfa8$W}}iM3=#LhlJbllix3G8qF*jhH*5x4jf|Zn%o;pvum!R` z@vNeF{qR0|CUk)Rebi?QjK(V^;|`DL)-#bJB4EJ(y{Sj7fB=}Dn+xULFXZ}S0Mm-L z>p#LNKyt&zxZ`6y;36@hTo(KO$MtrE4y93 zV!&cf^=kF6F#jCeN$z?if-+1dZNh5f5w;MP430&wcaX5@aD#DblsgP*f0gL0XYE5M3;fR=qTBhHht9Z4;3t3sls@gYm(4CIFJd$W{-&@%o z#zd_3N4fgQgRPOT&~s@aUr=h;{jPj}TBm8E8s#WE8V7tC8bluYg4qiH`?30Vt%@^d zlso^20u}rX^@oN7g8@`hkQs-@tdaKsg2irB5k;erbov+lc(uhd9KjRopL(Gm{gs#3 z3OClMqS~7@EntNejxn;M9`)3ih!0^k%|q&mwu0WLgFkqP07h=C!InS!@uVoTsG4xl zF*=2A!KYPlb%h~rKZU^zatuAZdgZ@RFS(yfv?v$-ifKY<)&HB93m=@cua<@&blPy$ z&`i%Mn7|%co^T6#6OYE^K55z9Zx~&N^2_J@zlVdUi1g?tOa9u-{2_qmZ~Ob}wArBG z_PAd^l#_PcvxGof=l^yNgj7`}*Lu2K$V+4TTF{DheDD97!&=0`>*J8x%kIX(%?XLs zuyKcf@5Fcj0Rzr=UeFQNh6>?Z>YTxC&LSyXNdJJ^VIj3w+D*>1eP?SL7amK2WI^e- zOZ@{on!MKaT=!qia;-!fHFejItHD>YN!DNHSKWkg^x5=EG-PsUfl?g^Vj!rZNA$Cq z`o5q*!A=`2;*3RARk52n2ZFf?-~Q1>zZGpUtYPP`2I@27pj#VC(ZGSgHuHd<{*L@^ zXiolBZ8bvCBYT#vg{6H_T*=C94(ANsF?zG1zmd!2=@c^aVF8+(#b=s9TyvyY-1WjA zgK7Go>x0gUU2m7?5v52IhtL{F<5(4N`vQimC8%qrN_HOvp0U34Bv8_Y2j@TE?LBPd zFchFir;Hs7<)RF4f%XR%?+IoP|JgJ#F z|3I?xP>7;QonvNnch_NnKQ-#7G-fVZ)L}(n>ukT>?v_mV%;bP|%=K z>DW|cWwpt4y)wmwaVs`0Is$2|2lu3&*k{oT@xLcOyx+2BN$}O9eaUNuS6q3TQ^ zEU13D{yeG+Z}T6x5S(PW8K<2eyAZknp+|%JZF3&Od`rMue2LX_P!|F)a1x$z6hD#}toX*Hti(tJ%=oLABYo#jjjatxJp z9)CIty*@f0^!$^3s`XLmIZj_GKJd-FUAaYpx}v$uW6f(Apr4r()V(_s{V7ND zY}U+lfZ8%a|rhXAw%?jvtjv{0WNC!o!n{I-Hh zMV&Yq8&3Xy4xXa&)5z!G>9>)OA2%}-5grwV24-&Oux`0@&xW1AV$s|&tdUVcgH@0m zNKl|49@zERkoM=gObt31X0@~}&Hz0h>}kRKw2`-le4|nm!M$C&tbJPl&u0l%H(mVf zEKVqdQ|4>&iq5V9h+1Oovo1NAONI*Hb=#nRWXkjrWBXbnttzf2bvPu>(y(S>-$vWI2l`;njW75w!hU8namHDiz$i59xO zPH%%jf!g|(*GWfBH&=b1(7$#6^*n>~)g;cisNxJ&hH~*m>V)ms%hREZ*oE^NKauG9 zqRLo7Ia4ZmLVlQfr7g$xk{_7mszfpaAMtCFwV=VfK|@Iczd>kyo$)W$be0XQMj}F} zS7QpT^4G6L)vS-1knU!sckVK{P5~~lU@W->GI}Y!-|^^&Z-=9|J`44_q{!c^AyVvgqH*WU5Qcety?_&V@~u|Xw* z-%G@XoAle7MAvWg0MWhORohaRj-cM(j%^={^-b=T9g1-!zymU)Vm3~hEqnnTq!x8I zlnU)q%(8gQv_Wptc+B#}vBgIXRtmd_P9i_}L4^yr)(#RRzS8{?Xq!2co2RB#4JB3N zzgy_!BYA~3x4!P&%)iT2H7jLwio3>&kW^wwBa7|sh@j*N%tm{EUClnxc z2&e|tW?fcdqeq4^ZtHdC4%6CQf0QJymwY7DnVW?oGNtV{eV3!r4%eh(il`Y#erp59 zj}S#pXkaG&LNVS@gi@qFGlBTfCN5h?pAezpYvE(%rDOsF?r<@smQVrJ1y>@vklbmk z$hd5f-x)PaH^0JaZCL8v176Ut#dqJE@4a`%sU}xggOS_=*UAO*uZpoWD3a-!?Ccmm z1L@5|J~r`-Z^7c?kCkfwGZKIT^Q0s2z+hg;@o!t4S+Q_V@Ko$z4|^{)V2w+CfOEru zD)yTArO#~BqB?C+&Oi844j7ggd##6Q|m8cCuiKGxtu48Fk}}#cL-WCHgjB8KskQi<2=lM45d$g zyLSq~iv$L5Dk{|6THe;17W&}Fa*>==s-EJK&e5%NF(izSy7H;^{5CqwO=a%l=*hCJ z$d&gp(2wdIO}d#VNPG&I+*BNA0kMNn2q3>0c})1iaP#^TKsf@FP~tVV0}2}hz+O>N zg-GaIo4yc@l3_lQ`hq8k!Av*mKcJD%spy6nrvd8CB6CstT_&5uljFXA;i_ZV{0>szN_AtU)LE%2Y<=~k()V2gyTf$(8XM@yyl`vM1^*J|44}z615k^I(Z@cYuqmW0f#A(mS^iy=vF&ZUxO%bU zruFX)wRA@PVw(CXDe`mxQq!q3bA+a%W9r-U$aHHK8@S;{@MPD1=I8j8i_P)*ZeQV{ z1_kER^SBnc;PZ+2dMOSFa{ZGp&o+tfPib*)lA_VcuWKE2tF|>lhq+F>Mmrio*&Q-B zVR9p&V&ss|kjbbp7c#||zd2=u0_1*YsAwT%<~B0NPl#~rD7=j^mja`j{j&0VwWF|j(g%5%Na+(|%X9KdsR@b%dp^5AP4G)WgbEDBb`Mcdwd>|JE z1=r~VE9m_um5GULwab&nAj6tkAX7A)B0HF>q?eH=wtuyk4w@qzV`6UXTS`;ql8wNn zj|)uvh-ilntp?Z1ez*N(TrYsajlIyB+#K1CU?*LN$bhI!Q9v#m9MIc1n!qtY16*nl zu-EHPLTl_p4{MwtL@7e<%(%>{azFyI38)1weFG)Q1;ph}Pfm>En1#)nROas6Je>M| z3L5y->vQIF2y_O<4(TuJc$$9bJwz-bkWXZn90gIaxvZ$`vB{AqF&3thF(Es;6goBa z8*Z6BwsThJ3@p7mLM*vn?zf>65aQCuce@?STPWDJUq%(ZUab-Mvphqq(24DxYf|Dc z8K3>GE#QD1Fd3mwiJvne?ObL=;=CEk>v)|zTMuS(z&HD=TfvWwCctbe@c0R{Wd-P1sEOIw}J zi~l(C-IQmw;R0@H3hyL!_)SA)Y{HLsq;;mj&)z`~<-svHK^I6riLZmNujZZBFV>sZ zF|s4j)m3qkag!)2g}?&p5#V?{JQ@mJGFo&x+Ir}83shytj|)D-YZ_Kk+RN1ZQR*fz zfm3-z*lhFW-kbf@c+X43u9^8s=1YTh+l}WG^hR2`G-W{HC*b+Q)ATp1xb*$`9DsA= zb=9m}4@r35oCCK0x7!#8L!L>tU?|{z@@U(>++kp~!&ru2+{~p%&*8J1@fiDWtqG79 z=Gb)z8x=8%1nBu+*%Cl${lXeiVCY^Nf9sVe{aR#mw)%4TN2c$w)6hDt!WeLeof)Wh z29JTyCl=VQ6?-e;4N_2?S-`focHYOyIq3wEP;0<+G0xVz!d%Jv4n0?c9vlE~wSbry zkmIq4qr#M?6c75@6>t}LY*2|Y>j*{-91iFX10uxDrjI`Veta@Lyd}XF`f0~t9K02o zc#3?3C@pQpR-0+n7o%SWLXv8c-*c<+srYp~3)N)PAi$UR+uDSLmv|@WGO^+ct(9TX zW~31e$5*ojbfA3sa)ukRp3uH>>h9}%6l%W;+cSS@%m;S69{{VXS{}v!3cLShk$`e` zh-6!!JEQ#WcK<8DHnxFIUQLPKiD*7##wQ;^fe3FBEpV|!E}e|uL=gQ(-LggIr%NNE z-ZE>gnQ_?}r_)bln|$~a^!e@Je(c=Kr@Bd=zVO8FjD3gLihrUXO=iQW3>qS%B1nqu zC-ADfbiQzPFM;jDHPG1xWWm~sg(VMixpg87oc@Sknr2_K5~_FXZ{OQ5WI7{UINwNS*kd_eHuDN z#ky&j(f%wN0h;39wH4AxkYU|WYejClF-GgYdlOq(pp@SY_sp(KL@qXuQ-+vEMcpv4 zN(<{RPvq`(Y^4m{-1xog!~C#3n>H`T0IEXcJ(DgvVk*_%tG2W62qWsD+TEj{Y0eF} z0|5h7Ubri4kjmlfx|0#J_||~mesd$0hB|oZecXnBc+JUY4VO$9MYW|O$)Jov-^&Xn zJcp+VMR-NH^QQK0(=AReC{!tJkJzJ<5&P)QKS*9G3H-iW-w4J$l#EtwsakJ*@h98I zH}EN=rRICn%GNTRZ+jlewEdP~W?hBzokr~?{y8kY@&2J!QUPe@zd9+bM8K*#!v?dg z4?&5NpLK9+u4}w$=xQ{(B~B2HH{ELJC+v{_qzf)C500|1>MD_$(4=l}b-mBYq0rJT zB~FV(uqa8?tncdT_Y&F~|JDV>wpO>6o2%{DxXI${;fXeX2YIcS2>tT>$4>?+N(qGf zO=^wXM=z6yK{J-W(T(CuaK}$D3T?qm%K9sMz2%^xrQe~i) zB?oho^qqzEG>drml7*Q*YN1iF+oNq$cU=FottqW={N+D;9avxDfN7Cbt3;3G(zZR> z|61hwrqS#1Q^U^=3xH7IBC$TMJTSBB&Tm{l%}S;N3$R2LC$f%57iSz81muo0N})QcmQJOGp)jQX`{)(VOQ0o;^$UUQ+droW;MJ>Made9+`bxe<_nt}Q_wl|G|E{cxHbkoa-UCkg#kCAUt&bhW0u0Z*dGKzh{^7cY~RQXn=cN=s^CGxlyCWp^It3!8^=@e09EKZQx z-JurBX^P7&wr%>FI((Ccy4AqoZ^)8=m>*?1g1TkIo-Q45*CycHNWt1PyT(BL>F(zFgs~pwp6V$^kmRq+AuF@9+g(F=oqiWx?0X7J|i!YFJsXic6%O1nd?=Cao| zp{fGy()CG9E1u}heuSoa>~^i>L?Q{nZ5FU$pHHZ z4=__vK3YRgKmML+jX z+%EXR+Tr8IUyFRt$;NfjyPspr)z$v5$sVO%(f+WJm)K>ceV=nVf;|q$Ls!~LWb4s@ zKI7cSy9ipp*Dp-8W`Pw-VeDn%3hrXc7NA+aCOee#(bHMTN?n=geEihXct7ZOHUazX znmB<9#wzHj=KdfyCD^m~_#7Dd(^ku?^!P`|<+d>{1X_hdB|nD>Jf0RGv0+W*Ct1q( zNBN_?I>SGCDo#V5YSqjvdQ}o?;j%S?!xBqga{LT5?(7g(Tzae`+CmU@L#H|SB?)OI zEgS@)Ppn!;-IuSF*9=c=&s&=SAace^duZr1;c6!``8VgfHh)5y!Oh)75B~C~W!^Qe z+2#rvXcIcDcky%Q)ytp&QS+z49vlD?2HR_F(VAu-4v@C%p~EmlYVhMd+t=al`!hxo zXhn&fH@=V>7P5F`JFMcF&wrf(`Gbw8XMn*PD|5y5zvoXpZd8egRm=SNvRsM}Y#%8e z&3Z^~xpug&1HLHmDB;QNK8x;_vgsR88FtBh*h9R|v=I=q;iZ^$eK+%GmB}DqKi0Lz z7&SD7@8N*vtv+1g?-zrWhr68NZ-2w&Kq1~i0cmAiAyG5B=B2c5*rDc?Obz2^qaEAC zMrdhWjprdQHU6TW{uoe@;L%-Xf?bMEbY0eB3Y5JJuO7#(cgrgRAKe;Lw}4H1=sjt) zI(4|T&_oRWA}Pt9V@gaJX$r5l3?vsv3!ImgK^$&JszWH7sioh)F0l8Kx4&sWo0KNZMqaVD0z}{8HU|-v?$a~al`}u>Pg*v|^pTEG;-lf3)WAK#; zWzJ7QQtT01Pnc(k!tZoy78Ws4I@PXkGrp$DT&T&!1PtY{@07VfD4_T_JXdGbOGtJh z_!~c2WGO3pOha#UY*d16t!NvcqpjB*+Qcg%g$VSr5|wz__u6QPV0oHU7M_SmoTYHn` znq=cF({FHRyoj&)#qz*9SjkHj98tk(ZfBQl`t3D#{wz;s(m)rPg9v^8R98s}y`66A z@V&Y8temnTZ&V)`SDGLpS~i@IOO+gvizb@7J^mFFH7!$Vtw5ZoEswZ|Iy#w(eJcd? z)H%Nuo;^uGS*Pzf7C0#~&NS}mAg(#vYH&TuRFg|uBwq!-X8UcOJp3kmE~XK?K2qZ%N%*_} z?j?u(T`g{e!n5*nIU5g#+dNOU@P>bt;ny=^8YVjX`0O-$%sy@7`>SExXS9j@Q;YS^ z{tI)dhx?R?;OApy-M4ef93d`TnJQ718ez=&X;74qzP38kG+$rajC(mEQ6B;#jn4076F53w=(%HwR2P1<_)op7kAN35T-b$d40@l^48Ct`R zpEVP2_BoyqmqsZ+`b(tVG1-<2Ae15)*xVKtx_!NPrv|2KF5*_-Co5LU@2(DAHe>w# zqh&}ap8D1C1>(v>HX*9l$mXwV_jkZcP;%r<7T1#j z6YZZE@dsxgguZ?x{1Tzn;=`}+@)0d8(KuaOcGQ~JRxB5n0WEnT*%pcLmxEZ6QU@Tb z{D~9%MB~pQT9+`lBNqAoea_9}&oZ8t)|SP^#ZBM501-8kBzmUW1o`|4dP+6!B;>C} zsd6Ln7)?f-15gP*^{Vh%O=ePy8kneaL>2Gin6O``#)9U=fweB49Hj{jv{(3$D9mDm zijfdfI%F7$m*l6x{VqYkq_hSez0LoZ)hLEO6<$##g%0LR@~h`Eavp~YygR8C{<Hnxvu)iUB@}5@Do#yn3nEqQjN8i-smhOua z?!9G>RAy}*zhijp!saO2gWVT(<^n>c`zGs zSGUeFL=~?}ci#)w0TZ)VfCJh`&Z_jL9qgm(Z0jUX|b-eDq zo)x+YmfEe+@GC;bh%nsbnZ)c?*M}Bmr6S+3n{A>#(l|c#1g^nXE}nfJs4b9IYz;!j z@~@MhZ^s@X$a<0*R?fLMx9$XVraaWh5wDIdnRk5riK4$|aiSTR<=46I5#gMR+VW2= z8XM4@4mdlzf+Gtfzr_#f@4U`2bOOFjsl(2W{*`ey$>XRlQI6eExTTqe5JgY(sT zPS5JbRt0R;)z!dOVM;1X^}GMABU==vpy-=v@iVJ7|~Yf{&FN< zV2$malAIyZ^Hn`KE_x*Xx)WoL3|e@zO-&?*lZ8vyk~TUnGt`B8QRa`O?p4f}TYgfk z_q#f>DJ5Q6Sh{+;hacN1D>aG6Y4b#;x}2qai*M&y^c?tCKqY$l!VXb4`x$tCnjucS{mBN0BF=vbTR7ETCpcss=7_FW6nxonPw@mJDeJI{zug!jhFI| zP7;kY9;qX+hVMrvs){i(E&?V*rmwmXYtdA~$@iW|ekL1Ap#|YFE3{ooyd2#_B92tv z5h-ooOmlA?BqcvjB ztnd%a(yengV)^v}Thw7&pNpTR#U8_fVmP#flqyBv^(*n4-q5m(6AC5yy&2^p4IPwt zUeloX%a!vw4*|ZQ3k&!u=s`ZBW^NTqUkbUdQ|Bu*gxs3od1MmWuou{W~G#KGat;*alJpm2* z;u!&A1;V6x4nMK#Ms_TRajz`yleWu{c!k(FYmfA`TOCTV z&i8r5(0XgT0DMA#^YzMqsgHbz8bS>`PC`II>8H~LC#*^PXAHH!JnQ(tldGCe2}o@5 ztA0ny9~DLd&caM(;GsNX)4-6}^pB(06yHa}9&r{|7q^F+$0<&_BrEXFw^%$fZqbZG z9QoV}HxOCgF%*<|khx%d^J^eVfoP(CX}L?nJVjPzX~KF6*29YGfHKoM+)hh=ah;Wl z!0KVG3?n#c!^-0dI@t{UTm=J#nvaGXUW^lG5EkxwMDMW#*XhEqLjBi`j%+XvW|r3f z>FZKbPuuf5De3GZDfea6Ot77GK4asYt!}lEPhF>edntO2^Fr8GR5X-n=NB=9O8037 z_$}Oqz(~~`CbD}@8Mo}zS@_0F^kNfW22z_wg?`7Y^B&oURAO*7mqSA+`%{`WvRzDo z5fWW#B2-d_-~qh%*ZI#3Gwk2)zrSyhE@I7|bzasto&zu#2OeXGabk^X=x`L#5a})- zBoIgvR1*Y!J>rK&{0D$*9&|Jp`~39tpJ<->Ar1u{ij;vOt}i$f zD#7mtB_Z`?Bp=Ea(TXAul00exf?muuTp*F=c^vUUE$^y+LFu`P#g0d|BCjy*+Y!&f zmtMRGtd>^xhJdXij%+7b9bcLR6W~-`vR8M=7h01iCkUU4O>SOloOfh1+7h{Q**}Wb zE4fok@H?Jp6%YuN(wJN_Hrsn>)){k_Y9w)g9>Xxluc`|HJ%7|y3Q57P?nP}bGz6v0 zlo(O2S;dz!dWkN!EJAw4WxbE7x`g2doXf##28CREB>Un!Kh!*BR*SQyGUJi<=K`Z+ z+uSaxH-p7Aec67UoyjiO5CM-!P+&Uv2m>u4zmaw-y$b$v?mo8$V>CWR!qLEv?ocu= z@I={%;A7#FQ_&K}eXkBS*R{?N@{Rr3k0`kd=If9YvO-=Pa6vzjLUD*X;aF+~^LsVB zsFBxsipQW7>Nrj33{7S<=04n=xB(f2sA=iG@P1*-)JQR*NRtQ8H_V_)=J=FQT9q!? zLC)v`Sz}y~k?|iX&^N7=q88T6>+861HD!1zJ%|7G0_PyLrXa2)+&G1HF+^tRiS7`a*FmeSZ1)-T1Erem}!QQJ{R z&M)sUG+oND7|?PE@nq{L(qi-R(b?QUc23?Mwn7=4xsw7yB0%iUwrqQHYJJb`L;e;q zYT%h?z8N<0coi)=4gb4$f^RTM6GY#NR?t-bx`NN>GpMUlA5XkxuZZ*~)D(!jePGbQ z$2hSZF>|cAeynKC3pF(9d9@#~foR)4>~&8m5XOrHHzFiw8!Um1RDZS?dtblJ)vsxx ztz1Y&4j6EDUkcqCUJQR1_SEmnMkFD)1Fy);zSV7Pv!h=MmD`O<-CHK=3_L|7W^ZwT zMvPv5UOId=<8?TLV0lcEdcy9_pUSt`$1p&$^WmlHYUO>7k+b>JD;*hv_M7?4>Pgf- zsb6_w=U2=%KR_yCqP=mHns4%_6|?2#q;FW2&`5ab{0u#L;6$(!fS%{1r3p%rQH>i;7lfc2HFFYJ|F&<%%Jnxl-4)bntEi$Ni>_WHV!z06 z9$vy6&JI8BFMr7)(g|*yfyB_*&Q%_KMr)ICeI0Vwih2uKH;Am8)YH@aWvBnfaLf5w z>w;`>P?imPk^X+K6jf96_%}5Uv3kOR>1yfE*UIz^%EJk2ogYK87fh*R7NWASJgVKL zI0XcXJl69A)<1Wuw>*x^!BIb{Ogk2)Ak%RfNOEO>P0b_)l>XSitq)e7RR%R#T+MaB z#C%fSTv8qD)c6`p*b$DZ?WvCWzr!uqvG*W1l%`Zqm>9booPU>kz5|kjf&m^!9*u94 z>7IV|-{mR7=CsOa)a(JRiEiU)f8^u;^0K~8!%HA1`Ni*OPf!1-hF#6)!zxynk@%eg zeSAdEr})Y++?0h|eJ72{B5U;kyf?a^J(nM=e{*QU&GKiK$rW_sr`Li5PrLn>$UIwg_u5l+~BDVUB5_ z1z~_Ge=!hcpBZW$zS7u9Cbq(45CF6;j?FhI7QThdW_1hOv_(tKoC2c2=UaeSa-n>C z6ir;9T8KCGlc0chH<5YjFV9JZ77zB9MnU6HRn}_G(wmca{ICmNhR=TqCtM!=U zE4%?;W@=Dpe$&-DyKw#f!eyY!H3izKNNDl%2eAW1yC$(t3Z1Ha96ZV(I&&Xp+5vrI zM^e2McqVk+MKhon_I;(dv!iu@hK7#$V%`9P)U%0z1A^VAV-QRhT`5}H{IjhTM2zG) zh?97$`@Q|nJ2q?%VP`AxHdP1M{b(}%xx>j&v-{ucJNJU7$ebi#TK6wKwQt)uW%g~v zQs92Lv&CnA%gk@B>UtQC&GK;U!#S zjWQ@v%A%QLt04rA!psN*jZzI-NkO+0(nwPb$&%P+tz|SG(LXU%mA`o6D5BX+X*OGg zVO(qS1WD4Uld-2*Q+Zz5WK5n{prH|UDD{*=gDVEKd#fCl^(LXP%d;g?!1kRCGmXmM2MforO5*{5ODvgp6Zmoy< z%&T<&_7{nIA$oF3XXQC;m@=D=X}C5bluI%9`8o801X~mZ)>u@i5Y2?f&N`Fh1A?_K zCXTUb%rtOJW-~6la*f&k9?@tHaYWi}q3dmAx6|=kR{=%t=gG1j#ZUwO7C(pG-QDVM zR$&R}tf`!EqQ*~r*uf>vnHs%Pb~>5RYPC5z9Z;49E30d$Ag0mjFd7c&pPcZ*^UqV{ zna^{J8&4g7Qm{mlARJYmqeKGId!($CNcXJFLY(ad7GE=9#JPvB-eNky)<_MX&*th6 zBO=eH9QKFwI=2`ejxlBrVJoDla6*C&>PK3EP(-o!<4M`3szQuW^&FrCs%5^S*4n2_ z3xkq=Qx+#NN!+L(LI<++1Oy9OScG&;id9~Jd&vDqdwv#>HfXok*jV4C(M)JG5}Ij~ zvyjc7-8*@(v*}YAVJ|=L{az|jTNDf91{hO66*{Ijg%H#iM0Y#hG>-` zo%Pk7b5y0IsC+)7HU*U_G0wM=IE`=`TN*MoWttCJks(BiqSC}hQI-ZljuQ%vkED~e zmlNR+bGN{+Nb$^t>D>y}cysa616SLK7PBcw35B8EObL`E&oj@6Gf);Kt1GJv2B&Oq zZt#^af06(6Kl@MF-{0r@^&4l;tYAqyegCT^mRoqgiT9VX6S9^p1hll^;`1V3qGYVZ$RC&EAN|uMd5Ryu3WF-ldCW@k^&Sr7+2Fj9&kawO; zc<^YCRRRoA^i|k=HfJ`OF-fN0{JStX*HL6)7;@|RTZ~6z-hA^-E?v5`+`v6~ z@`S-)K%VF9?Ch|*x=LAWin+v9@qLGN0P=wQHWbzr@PuiRzrl*wM8i+ zZuE%K21Y0(3g`SB%{b554^%)&FNN^r59(x2S0G#oR#N1G zxU-7rzC;#ZAa;_nnqY7UtEsdgsH!@Tk7caahuKn|?Ha@)Fu`)Ja@R{jsWuvk$1Vp& zMp@)^8mnk)k1g4axhEag40dodWUH`{10#O22V4fkgKb zY&9m6hVJth+5XxWIr)P>N56YOn8tMHhT^~aBg!%${f$?d+I`Y=4O3aPDG7u484-Y3 zLjI(b9xWY5pe=S@B2$49ig>k)jAL|VkWoN+Jft(2qgyfIXKvwoDOF*~=QAe7jI`1A z)+D3rjih+$9kuo0m?XvDtipQZCqw2X&XapSyscc^K>pQt1W|+p_V@RQlwxCbozZlR zQ@-UGPR2Zb@`P7jc@-f9yoORQD6}StQsN+@+v&2_>(!PFU%@R}jnQbt!NI{Yk!EFOrG8l?^SK}J&t@~? zIOf{5YpkuU`9({!$@=B%uc5U{$vPJi$oTg|3lCgcT^$p|SO z+O|oP4uMMQ%R-=w9IH#x(9hPWGD2W6VTcGf=(L*j zu5OU7T*5?&_wTtW7_hY-P+99^)QwpZ84v<%{0KqThI6sF)Xp7d()tu*;UuDtrZUEh zahGxqkI3))q{sBbv?j*}-&vB=I4G z7b*P=$x1(4YBd@N?Wk-;Z&twF$4DUPsY1n;WewLe>rv_~2>_PR+ODVt3ulq%Bx2aF=#jGt5KIO!(ZsqcHms0X* z|A4g9p^-GuWr2_aYy3f|(lw&S7OnMHa8%$5q@Lq!g|h{?0wV+>kVs|yjG^p6G@+W! zsEWLX_c^3WkVzYn#5mQUP$620x*Z8Xc@u2Xi0O^)vc4X$v9-b8@qkb`+MPBV>zfSv z1D-tDtCja^*$x&(!NZ3Sy_r`jHa9o9dGjX2;gGv`?~>>F(v5#`aNun-bpUFXWsJvT z(lq6T7hd4<<;%?Hb1q%F!h=Wm>8-AD?ebLygMHeUZnCzz31x<`1x5)<2Z50URv-h7 zRDzJ0K&(*IYj*6m0xB1cYc|& z(WBB$29raigd~oZ;j?EdgW5?^Z}7F&;56$S|Jp|$x{Fq`34jb_`L+YT+QSG}`DT=lg>Q`CbB0GM!Gie&Ys8Dhg8|om?K0S_=Z9 zkTOB303j?!wQ)g&Kv7EVJ!w)BN+0DNHobN}aF$MO2dXNAE;PakjF4ETFjAqV?~%OH zI6zoSBpjV&#=YA=rQN+kTS$hpDJGjTJ(-}Ql$F&DdOdU2W;n;%+8Qsu_#$bV((m`l z^PFzCi`JSbj*&vpY&PljdP^o&6h}2>bi#N%Vm{9p3G}o8-&yM zxEPHHcAjIXyCibeFCRjIjU^@xF=>hm6f#it##SSZCalgjlU3zCk6MU2)HGhUB*LkB z<_CrlYXXcBo~A*Dux9B^MM_$&2BV=s>&nkx&JDGVF<5a{%PeRRXBBz9?Y3@dTXE;a z(dVT+y3*)Md%Ur82KhpZyGt#B-vW%_hhFV*(Y> z>-DIr>gOgmh`KV2&7;*%P_+cv*DCmzxHMJzWYDW`sDLOAG?Zb zwXiZGyL*az{0L4as0#_Y2ndzm%nR$5%P6BYrj|DZp$9_>ZLm?y%4c4qsD4N_o}#81 z7;sUDxxCHB-}(x>fA80@>njwZhftws)mNI`on0#Dm{#SP`$e$)eHM}mr4)kbBg-1x zl`B`sXLCe%#htBu&&>kmIb_A6anp`+mLoe28tpFmbc)l0z{K47^LNPq@Q<na(&p zJ>{owzKK$bU;gD^rrBuvS&=w90R@m{89^AbwYkY)Fr>&mBu@Gh&~N>uAP@!4f>d?a zU(cPKJ&Q9E&QmNFylq>9>$H_vEJB?*_AR2`aDpK4h9ze`>9U$&#zzE`0Yx@ob)`kC z88MzXiabQMR_HW$2;+_yHr6bztjHOho-z;+gb~el2Z1CF69N&CWf{}qlqxR~k-`{D zp3NBzhYU_nsmc;vmCUmVWie&78}rhu>#TP}$e)lO-)3d4OH}SKcLpOtSV^S?LV++6 zVM3G&aZW8;Ri_+6)zz)FXys>`OTAOg4_k}@mIxvYw*Hr=A4soT5(Z}_Vdyu`NgQ!9 zIHlcc)@v0nWmqh5qA2pso^g?|{5lsS5ie^9 z5K^E^&1i5+Yo|wkT*CekJD5>DIi>uV#zq12y*_Kd_zP5-pz04WGrfFIvMi(1=`7(9 zt|m4}|3e~>p8Ao*F$hWY$&ZuVxQM-T2gWm+Q9`)3iMX^4TP?=jlpt8e5;C98D65KY zr|aJZ>oX!nJ&%^sv&$CSL7%MUtTBIsn6Hz5pZRzSJMg{(>uE)RKb0%PT<0{pZB!DI zhNrA;N}l}a5$f(fC`0jZk91bhy0k(5=!oXKW9IMPWAA6Tx$=+xF3m5!f)e?e!%(mU z@bf;yB+GQ?MOL#EFr7~6_xsFd6Z)s8tgf!pKR#w{rN@JZ4|)9?f6j0G#&05@DZBj; z)zEDEP}ib3U^E#oB?Bsq{LEMQ%rdMGT&tnHFX^~FUhiOd_b$*!aoR2#L1_P@a}BRP+z^GuE{*1l;t5VYEtD= z^yd}}3NKwqk_2ZKvP&OX=A30b8q)9gdGz=ZpZw&f*xJ7E{))yuolmuRF3u0+ORbmD zS6EkXhyB-Dl@+Z{k8%G#CZ1#Fj&d}mp)D;Tu;vcsdJ7#}y3I8%t-r|BMa;69PX})_ zP=R_{CUg#RCu(+7nxQ z0;>hMaJg8is>+L>YcH&)Gbn%9yM^1|Pj8eB+HDyKjB_TkiRnUUCS*U$rKb zLiqWGb+nn$k`?auF^g&|2CQI(pq$}uLV%rdg+glXkdfx{^BP5@)j)ri&3gy}HCs2Hnt zoeAiczb0mgm$0J0xn1i$g4yA&8|idZ`Mp)zZ#+0coX6k~pN1#yBj~ z$(ZqI%<$BQaWvX3_V%AJnN0YjKl&qn=kNXQ(&Ycw`(rT=^Mc$(TNwydTW>slcb-iN z(l*CG8^FK(Chncv1cf0)VmmG3SFW-78($>(WQTnAGf1wnwRM61@gZRtAn{HF^FE}e zAP7T>Jg3MDw5|vw$S7drr5j{FdW&wijk>mjNn?^1FMIgmL7$6X`$e*&0ctcygaR3c zOXG8q=bls%Mi}R)%4(S~6$EN|fIH`K+9FIu*j{H|rewn*_ipdAv)km0zwi=8>8)q8 z>5#H0n9gTh+`U)_U$ERdE~Tmq0dE~=F9cLtn=tz5QS}aB@9|@dv1fQ0C(g=accvo| z5>8GIXf|84+HIP02#-(DfBa3>l91MgRi4~=k4EK~>>r_ic8}~ypN3M*0!K3ttSU?Y zn}0^W(m;GsEe}Fr>-yv8WCaNUSvKYHaGyv;G^J!do8pY&(ZdI{I&J>^o8RR2?YFpc z<2rFOt+zvGfs;asrxaqK5>=M4GB{OW1AoJomBFEF3Z%nUhO&@2o8olgOL`%(21;8p%0{d)CyrN{mJTKH zbV+Rqv_WZ&PztAI9Xhed#j6)7LcLE{zKp2CSN3kH4LX})TI)QyW2u)itgWmdr68M4 zake6;ht)}(Fd2=B(}dsuTffi${r~nKar>Qj`TQ?@aVe2;);)E3EPgEZnK8s-8}9X7 zUOX(6M}xPM1UWh(fBPP@)h??4ge0HRxN#A&HzYbfq52nx9KCr5@prz)?(h9Fv*3s_ z5^Qg7vw!$x8IbaRVU{2a0$da=FWDf9{Xq~aRxe**qDvZAw;9eSBwMRYhhy3wyMa|8 z-`OM8hJ0g{a5bWke#6-5b^HR$`FMI)8-kQtL?*hrRr7_za5NydIsL&9=LDydDfZxi zw|@3Bu$CZDR9Z8ePPp;hb2M8`zgexjH1963%gS-_dpOU+z*NRL<34&z_{+cc>wNl) zUv%>_w@SQUr1{hj5l5@jsQq{|nrPLGk%lIG&6c7jx{@b=-{z zb@vI{STu^*8Dv#0OJc!?%4XhoU`?iD(ln;kXtTe!N2}Q)2m%^$gF;9S51w#wcZcn* z4es5&!}{tvt842|J)~zTz`lKR=g`l%v+bpGaw)D`{KwB0+*4p9S*Q6}p_ZPdMfG*| z&&sonX#If(LBQ$Yh=~?lzVTH=y3Ogm+hE2Rr>UF<6BCL6=^VltlDJKp^a$b*WQ3O9 ze~HzU#SE=|=%}odY8D6Ne3qk)^*pUO@wzluC-`9fpQWUdoP}Xp$8=sGgOEma856%q zC__v!_F*H77r+>_@#IaZ9Qr&xd?AGqPdihe2HH8#x_1s?ys}&dUb$Wrh4+R!OI1{~ zJ58cECJIBUs-W3Sk#*kP=}Dh?Q6Q6uKlp=xOqCUEZfqBwuX;oE3 zK|~RR$kC8iR-n2YXjxDwM|yFSwcr0$X5V}h_s@Ss6ePq}BL3_<9OMU=gh_x(HH=5(_xEYZ5PM~vFj$95W3r6mv_pkoGxA$1*H8-d`nSLu!{Ol(-Srj1_By*S{5rcgK2JV;Ks7sLIyu73r%018 zH8Mq!A!P_E@taIy59+fOrmVc^(^^ldTma#0eIz@NNm*j7msXKlG^`{>3qM$o8zjLN z>+3CA>lbM?cQ8gF%^an?xf|)@4ve)+6w0FQK2M`vw1wWoD4u$-muBpGSTE}!RFD)! z`IJRwDR9KkV3H&yo6V`pl8x0>tbtV}sib4Df5`Q#R}oTj+CO1srB?@|Jbg_%J{U&g zMW6ojwAv9gQk?LT9&>brdvKrDr3*~odxDzhcm|z9a;gQlk^=sS}w-&vT};F;)uFt2+$KIc_v$ zTO`D#A+Uz&+B%&tzKo_xl?#*-3`Y}+qFOp57Q#_mijz~atIwqLSFe`1;&0R)s-=VR!ivGbN^6nvt3b60( zBhn7hr46blLz2%w=Uwx4!q0;L?u5gh1L&XQxYl2k^^ET%^%&l&qS0uuw!Vo7Vsue) zdOG0b_%Yq~3ZMDh7cs)p?R5}Iz~g)O*xcA8j9T?f>YRkn4*{2I`sH6+Yz6D2lBEtz zKp6PhmQQAOOG}5=)meBYXZ^f<%FpQA%twchDa(>xs|Te;Qz2wTyn2&#?G{~Ifh{oQ z99d>)H^%7+);UV6F;zwqc$okcgrUI+Nm&Sr+IYM;1j0B*h?GDz5iZ1vkkSgD8AQ$JngE;7AqNzx+PxlP?k62q{IdHm>y?Ck7t^~zO_j*e)xntb)Ezr>X*SI}kUGYq9%?lBgh z<5}S&aK``oi<=>g1DvqdI{ncOtjZQR?WlBxwbsEIv+8WKb#@0CW5|k(jg@tTE~#=K z80w^iBtk##Gm8S$)eY>o48@&2s5H@~b>!)c>7B>O&wrdy1@%h%tg2aDw#)g_(h_JF zc1O>BQa-hIduN-&y~l(rG1qoehU0=Xk#ss2vC`4)RJ6h#jnyrLcC2()$g-SA`$w$T zZNjsTSBbwNp4}LoUpaHeHas(L*E1OFe8iZ=)w&Z=E4al|m|Q3P#N_Dcn9Z$C;WX?xr<7to&v4GMv2_s@`1XBXRAfcP{_&7kUU`LXw}V2l zwzb1(Jfg@;)>hZi^%hrrNKJqK(v0GWIEicEU5+*tYIBwKMuTZFN2L+NAH2n_U;7MC z21ANa(EY@9#3UzNTSxAlqVj^-n-7Ry*hG{DrDBhbsW-=qPpB;Ya)&yNso7|dO=na} zpjKNH?;PNsJRuy+QUnls~4KhL`F;-jhqM+01F4Kt?mxz?! zX+d4A_;bM3;l?4ayz&Ys{S)5!$xq3$f-ijG3%vN^^8`|nW%K&y_cT;MSJg70W~p`mC#S?e4heTF4!bgQjv!bSD*fmo(~p zt|K-(=&B;#StrWXHwg*v}{cxr1Zo;vu& zxwIHj-wI__p|v576C^(PA&fjnK1oudC}KPsa^>m{#%36sGn>!YUVDwTwF|6tc4;&c zR1h$k%?PCMSnJ*@olbi>(0{)Ljhdrg)h)fp@pyu1K=;}%gS{t&?G%@lOx}5j2?XK6 zhzdva3m3@`@1tMn5hgL*-lsb1lV}K}WIXj1a2nU!G7#`f0dzi&@ad$OKg%L{S*AvA#j6E3!OWs?9|G z{yPg=8?cTj@P>b5Emc{vva-rA|I%0M1og;UtZI1WVk<0#L`azBIeG3eQPdi;`8@Z} zw>1Pocm|L(#(?{1=I63*%e)HN*=Ju!>S!QW3pSNhY;0~|aTG?fy4uDxBh)OXeE5X; z$~NIan^}KAosM5!y3h;YdY$)}!U{dd1a^R*^0&9~m-xbi zY}d;la+YV_vcAt)WX)YJCIIb&P9z|>{9N5_4+u0LxlmMRJ9=2VokLaHkM^hQRKB`%F`i! z^y42AhKgVRwXe}`^{~R*PYix;Vy*SsyLy(g$a!>&pik$)gtFFN1ycC{595WUGhNbX zHaYFzXWl<0$_(XjPBgcy5~7C{ zy?T`k+dFhR9fW|>qa#XVNINaRs4(?#T}q7AwGg)!!m3(q4TeyCv;*sf=U=F;D260S zJUH*?XtAUaOvY2@<0;LnySUB@@#S^gn-2&d9Ak{5{fS%X=>UR~txtmar~_xkd!bBC2{6Z7gp%)u2KBxK1nuY z@)zIY$^HY9-~KInzx4%X!9GE{&Bod)dryw|oBpAsB%9ATK0c->GmeiASy@?UHZN&3 zQhxilev5zlKmIc=U%bfGt5?q@?=JQ6SZh7hE{v$EiY&{aC`g+P!YCrJ=SFzWd3#DA z5mNc#y>&}JnzkBM&xXz?r7R8sAqCQ@r5DuyTb=_k)+b=i;TQGH(w!}LmP1u%9j!)# zK>1%!Ny%h9Vl*C+&F2_n*u8j>gM)pZyK$X&Z@Ay21`IB$qe)cwuXOv-xXg09dFR}TnUn2a4SE=#` zsQ3aK8|xgL9Fu1mSkGBE&*FpY!Ld^Hp`|r4^kv_Zli-|(K8{CYdh2VbFz_}Rt{d{ZA`__Let84UD*66LQVvTjy{M9Sp(O^XAB-ylLBx2Mj zZ(tN8na1{qP*kW2L>ST8Sj7Z_635I`Wcz)@ctFvO$<``bT7pK*MrAO6@;ZnA&9`aUgs2$cbn$+> z#)qsW-8245iC{V&addP_073uw7-1br98+XD!_$F}9b3dMJ$pD?%X$B% z(VA>Nr^s>-b8{a1qm6%nr>;Le&ZP*oLWRn{DLv&@4$FUxq!SNGHbcYew8 zG~{i;*U$4DQ4fNx^;PhEHfK5>(`$EVrU`2+J)E_io}O~!#!W6>yu^EV?ot(gfQ>!d zN;&@OpTTnOw?GKng`iW=Nn(O&AN#`}VaF3@$HzqD3C-uWh}$uplL_tbzRAgd^q+I| zpZxbU`i8_Dqs;;9>zf#3n2v@%H=tf1oLA*b=~+=x6xJD;0dW!&8kpRFf{Y`g%^tJ< zfcBLO*dQRhd69fPp~TU6`6}67A9XzOpWEsR1RipfCMoM1>&xwEQI_?fUDdPCb7_Un zS3=s9AfVmYW|lR1bO?X(y$2ZCqP@Av)M!q|WA+aYn9XO5#$$RbD`)0#Yccj*f>k|N z75GJmRC0N+xq8EVaBx5rg?#oipQV4&$6CwI);78<8IMLxMq{5C9V(J2L@Me{v0qFn zB^i%KoSgPCRmtOrj~ESxc$K^RXhZjMp4Z|uhX^Al76gQ+_9kbkwWT&#;RxF?nVB)p zTO=2sBYfq6;#)r=o|epi`X1$EiZTVUap>{{os}3@(Vdq_Le#}w#P)_ynOzQ|eLAhN zmO#|Ey%dyHLH}UD#Y-1Gy+Ao;-}xD>@4QK}vrg2ENxt_Ml}R}K>3fJMqJMHs9E3zh z5)qL^0n=~4&g5#3m9Ku1kTJ$qPtBLktJ2>`Cp~u=6-7~}#&|;Na4u5Y`O|;?r#yIYkC$I~nNF*XULdy5I{=nQMn0fT7iZhEnqP0UPhJUv zfZ$|EBhSb-yHp{#RKZ%C&42aRncaCz^#|WXB51{m^rvsr|9?2P{++*%*qV@4Jvz-U zWj?`F8Up$LC4um|B!nXfBuSb;?R=2qg2N|=G+(?7Rf(8p4DLQAUTcwVZ?JxG3v)O? z{PZD731u@Nef}!O1?VbZ@5uw!*Vj=|jL{Zr98!6FkgK=P4&gWF(qV;RIvX>ed;ATy z#1uK95Zry|4wJ#C-exA0g-^hK>7|#5qNwIlE%GN7*7@=GqCi>j*{nU=hzIp%JI`{q zx3|fQe2F5uclRz;SoaoMrXUPktzp83%C`v9Y=e zNRn_$aD2l2tw%JH2({P8Oy;O|6aCAdq@0h)f$+8GNMuTW|A2`Ugjl*#G5_ZG;kDOD zqB;oR+zb5IZ3U+_Idyw`liTm!CQX|}QAk{yMu)>8H?CbHNmFjW^DcXjA9MZ24chIl z&zo~@X*@RN-0!55cO(!cLt!dvc6NEZnda~r@p-j&WS3{gt&`& z&ElYwb!@p$VLrEPsSU+J5O^`CgV}t>+S(er%sD;jv$noY94B%8^m zn`~@vv$DGS!7bo&?kOwlli?z$Wxz;Jbd>) z<=uS(W4&IOZFc2Yl#Xy`4Hrs^s`UG?C#Q&Efk|TQts6wwE|R$xvuw_MK4mlxSl`_C z!4vfy&2fHB@1IRmTZL5M=?~-al-1Q$#-lOg@tEV|W5$y)+gsc0KRKY=>+8a6y1|17582+@B8d}Ldn-J7{Fslu`Z1y)pg)}v z28uk-IO_L_;*fT`gAkJGWXxLbb;9zTA_>u4V?pFOXMm=vN`k=i zx5~1>SW6fNesfgjtgWu0tCGQR#Ju!)=fQZw(eWv#C#P6rxNzYzzx#W?OAsh@O{s7n z9wC4b_zFSiIOki8D2^zKf+EWag(0eD6hHVWt3^ie{4Q0sjx9=PCj?)7k=gMH@gPH5 zK~pAVcW*O&<1X=6t}-u&G&(8yY)+PC#A)N{+37+AE2ym~C0RBhZgnt15?OPeCv6kRC2lW znT*HSMuRI?E)zx}2Tu-ZHk+)iuQ3`7h~tPN&k4ei?VT-V^BKFlyMSdl91=xwoiy%< z!-&CfKqe$vo+AUrbTSUhc@}+SSwj#8T-e-2BHU9IhdaXUY6rm)karLrejv3 zH7XY~4qLQ-;U#)EyUf0SlkA6gsm4=e6p~!oru*_G?CvT>uLZJ;mcwNtv_K-PXSfS> zMsToo7-blSIA@5Rgp&!Oye?0O6P#=9g}u5j=_9byYjkXzh?L(I+Rh&ye}@r3xZ zFEbDJkq=KPPx}PoB0|_DyW7_7ns6Un>Bt2+KtP&C?4KMm&*nG>E8QL+d*u@t9H*00 z?%jVtXKkHd`Q@+DZnUvD);2ddI_Zr^2w%*LzB}Ta(o?C~m zN5j5NsjDubo|(M}Dr0Kqkw@`7<#1ebp)BtY6L)p6r>xr{i7}OrC6kK*wBH8$8AV9H z-^W?Y`pPPeW|NLF$RK2RI^tmOh^?(HKL43dQyELz>k>Bu9^QYCwe@X68J&w@ddAA} z)GW#!o-_XG+w6Y+C1%1P0L|aw0rA{Ac+%_IHas*gfCntP9@{-ew*Z- zW90D&IUXS^jdC6#WGchF8IipDGCN=YD&k^~N;ViyC(LG3!XToovU*eM4{vKh$zV~^ zE;IeAsstgpa^)KR{t0is`4;VNo8C&7t?g|dK6=Eho45G#m%c)`+odearGfnXEZ8lJ zH;YuFUN5WVd{8Nca|#s*LI;l8IFbokq1tm4o~T<_GtCG1aZvZ z^punS5m6Y^>-N|`JYYB&5k?VZp|K4?)M)szO8=yJ-0ycj(t-8w|NH+38jS|4-41z{ zxy33{2;q4|%kS{%XDSK>y(*Dgcz z0!9fc-lNjh2kM*7YsAW`LO6)h*k|(PIZg_6tcWb=Cw<(tEmn87c=+RYscs)25JX!m zOx}BfeAGvM`I8WYxSFpXiL>m$#a5=)O`h3kp4kBScI#|=vbna#XgKEd=rOyOdJM*g zq+-U+3jsGbUL=&KSUaK7S|toLQL2dIE)VYAqt)q>qzQkWM)bo-4}M_k5aR4G6++^S zAyhStu+F*T84cL8zvigBp}Ts)g9P@Z)a z2Q;6*i0MzL(iklS{hz(Z?yvp=`52yWJ8wP`OBAvn>U--`o)^B|G}fnC)z8I(UvHg7DM2=$ zGdLYE&*p4zZP7nIrm8C5e)nA(jRvKzc=z^g;y7kJ7?Q*(N=PQ7F^xu(MzcY?-C6$n zd;3q&+Jcbjbc(0(G#{ecId6F&>sv)1I2VQB0rcQ?%u||^8}k4j1Yvq9?`WO)Xt2m zJSOg4B5ZCD?p$D+O&N|yXZ|brV457uaOw}0d`Kxg`v|XPnocJi9Ut=O@guHZzroJV z?lJ-9Ok*V9UrEBbwYUF%%hIp7<0x7NPXsFPu6t`qlEjC@W^+VfIX$|=wT_~Cbb{+o z5Y`YTP2~C%x7DDWIl|6mR(sbeD#zMd#%MC6)988t;D_uDrIhHZ-h$TELs=FmV^C>> zLH_|*P_JB}nY6I)9bt}!q`Mm!DJdQtp?5FS-d?4U3Q-t88x)p6DAF{oh09{eimED& zQewHuc6QOeM>x|Yqe1IALA&|Cv~SSzGH9#+T!RT7o2{X*|czEQI!AZj2 zlPA1;`yJl;>0A8v-~K!7UbwiZ{t=>9vx}#EN4{mS7M5N=Q4fMWH(dZKQfRBa|4k|) z8M4-i7!0N~bVM;8bNi3KPxz;=6OJ;!%?i8pn=$RzZgTPO{wm?e=46vM36oo_tgUl! zbU;fasK7$J;4&!>lB*AkIEuV2tSl(1k}&p3$fDGklbrSIS2_9Cj}fJ&bL}F95KNki z_RULVdwp!0(0J(z^T$WTxyE!9E&yTuCq5hwX}4M==YkVd;Gcz11!ocuD?w-w1}9o% zB1HBQs!s=0uUz(2(xgG@B)JM`Hg`yRm;5E^EQ8^Is`5!wGVtHiB0F(mq+g6EsAVHc z3bd}JC3ryO;!rJ$f;;ctW;U78YP7j|<2tKrE2K$^KrkAPu=v1NoG%tkeJT6Hs`4IQ zT_RnI5+0B^o6T71blF(nqI7Wmxm$F5U1qZxJ3AMMuEw+*9w!s7M`&#jLNS}odHCSI z&p50sMWyLaCX`6Fuic;-I*pgy5>YhK}bHIds=4@FdTYqM!Vhebj2j5f7<7p-~1-6W|MBG z$;rupc{V#YEEXRs8+8tzJbA)ut3|ufMqb;cT4~Z4P08PR3^#Y^e(D8uHt~L~yH9A} zx&l!^cWaBu-XY1O0V#rNrG>h7l|oCf`sZv1pKg(i(G*3-O3z1kw;6M_lko2M9-w~q z2J+e_It-!JBL4hM-0dgCdjnK|M)rq)%F&ZPm;UF!jeK>BqB^9PTw@aEjH=N&qxl(e z^8IkkS_Ll8+9V|<)7g~4=?NHbS`DKZoMSv1@NfT{|0e&%fBygGJKz2`zw6 zTRePpz}D~n2J6551y1!oD%fUs?Et^^4rR@e-;&D5@%FG#-%` z1-i1VU))%l>=&Ky`Jb_KXVLXiDvZwk&!N`Jg-X#sIpI6s`7Z5lhbxyZv(jCmC<+Fr z0~!|+rsEM0A3mhfNZHujsztckQ%l4m?4tDSEv=VX2T%4M6NLfB8s2^H4nb$V2xZe(x{&!Y_XrDX>rS(CC!@k$$a(_K0WmI!o8x%$+HZdq-0e>x!xjrZU^_>w~0q3 zv%>*FH^EgEv{JaZMyUi^IE=8UhfiqD4I)YjUwr{qVqC7k&ffp+JyXbdy|;f!<5*xd z1nG#_%^3gXZPsE%_VQKcvjUYvyt_*0H$TI;{Zp#P-+>??Y9@3KkLdp={|!6;>)$7R zHAYu`nvE1GgXN%{^Wm`1;GxeILM2fc`>Ifri=$qaQ%J6;fS<9pnbRpj}NfJ zi4QSJ6Zg&k%U@LG0vMbcXoC;IXUL1 zKY4>Vin)0CGD)0p<=R!!MvJ{C2VB_M;mcqC1vb{#dHwa*Yi^rg-HP*B5$95xoioId zB25+3X-=~dvhn%X7~bil4)=+s8Rn-C3Gz9Ku1K6D?;oLN1*nkrToao)#pR2veCbt6 z2||SwMF#Gi2FpF2%tLL5u+H%K$zyhQc2E>F!;JY)?xOzUJ8ZSv%(vGWy?d83FUbZo zV*)|L&i&ap50f*C)6l@g7cVm$Z7EC%g*x0TFAQ{r|>j zM#BLTm`%pavy4V7r6?;}ttMMrn|$wk-^V(~&0Ehgo6kt%bos(9CWNlue!36R+%0%X z)}kwol71NxC~styt{_D)|H)f4-+6~L)rWIfYbnZ{yeO$$h%Ga! z>5%Mj54Zn-q`!}Q@C0*sikg=w2O?0EO8V+N5S4W*|40>9cWsR?{VTujd*x7>>3G8N z(Gf+FQC6BDj6B!-ugSvR+TNnq>+pjg{E$EUmw!gH+2Zu{6n8r0mwxG&c=_d*F~*P= z#S(A9&uIx4_5dLT6rEFeU0W1|+s0@b+qP}nR%6>nW7{|}8{0`^+qRpev6H*+V;)bw zwbz<+%rXDbKbk%>L7CMt(Q#hnf2@J^$?=Kmdd#P*#N^!=hb5;(Oo)seolomr--LhJ zl(zcZ(IeG{zJF5Z?;38cJ6rAV1 z%+UlFGGzol-H_j`q5VzbZ@3N)ov-|zeDW`RRsSRTX!{vl{^&mMzD8w_ce5Zh&Pa%pBE@{B^zDfUG%X*BsGZIqxIG!7LfmU?RG+pAtZCla+qo!4GW^%y7bUm-C zB@oRZHJ8jgO;r&&`JEwkkm}_fMcyg{*np$%N}&fV2*$fPvoO1k@!4G_noR`x&}d!3^B3}p&mE48w}zg)r==fKW@uuU0*a+HMNKQ> zD9>xwm7iHXBA%9Dr5bfYqH~h*%r~NnrxBv+J`U>@t|887b+D2J@a|Wr&nLmmi6>bY zicVQh${yW|UEaFS>$!(JxxP`Sjd`za#|cor*ylJ06vhjxDxJ3oUC-77O&7*Y9hycv z{+CnzpYM*Sz#bF@g>Q7T&0pPvk01$nag^9NC_p;h>hg^%pgpaA_@kvw7ng{SATi)5 zi|AFo0u}Rw(c_-CaN|GhD4aTO?}aoR9~GlM@j_! zt)98``G#&!RLSRcSk!()EE;y~16o?fQo)Kq`>caCSsRb6M^QpH4Wv{mH_xX8e)0^5s$$BQb$q-YRp($pMV`S>;8X5A( z@DwC^UZ)W47wmmn0Gv4K8q*jaCkrRpbo6XY8ZSF*c}A-2?0ao;;Hgh23J!dzhzX*S z3Cj_Sm>N~ITN9OzVT#x)Y=Yd*6ZGv9(rS?Rz-w4*Z}3PfH^HjCiYY0h{Bo%M6-Z5z zK|Q4)eD7c3WNr6HQ%!yatTEk?F|m@+ucb_2`Tg>8kbCVUqv@RG)s4bOxuFauR7-E> zqUvAE=hU{C^`r~)*F)o9bCeH;2vPOkLOQ&qe;=gn+6GEQ4P|SV4eeMXnu^E;F^J~x z=})ix(VowoRsA1+4qa^&Q^Un44i%5z0kX@+no;XKxoQQt&=0AIQCdtLf4py0)1sNv z-A&R`s6+vElF~=-Usci0ZrIO;$jk(MvP`T)R+C8XE{1_Z$%B*l+&s8ubD;YXQ=6%G ziY=00OGLp;)mUQTs~Cuyr0f>HJ( z-db<**ZD9&73#o!Z&;p9Q?IKN?Yd9DSyCI&hT@n5C+LapY6;TDkd)#N%3FZdEnC}%v!X@(C`)boUF$YJmx@E(72Ks4c8##;BaluQL;W98uH z>Vti<#y?VPrWp0R>K;jLHmZ%SEzvpGc0qljQ$iYLswj+xPB!{3=7n3BPK!3L&r`U) z&;Io4+7@x7@Rr}JdFR8Lwa=-HJ}^3-&XAxp^v!A1mQgwbtF6=#GXASvNnNz9PF;M` zxDGDNjHLkGACJ?Lvwz)Bft!mvYsKy}sD+arRgkx7+0fB&UQx?iNGlCQjV)U4|KGd? zu&GWtdiV@T*Yw|4EVuc8677Hdnvpt65hPJ0rx+Pd@BQ*<^5b!b|7Hh9NpFredRUmw zfjP>?gtvrzfF$`naMC_&{C6-XEsnBpBkZ}t$DKYc)z=!Izxzv3Sa?g=H@p;b$dR7n zYZlqxzY3gm`I&8ygMI?;bgGtgfu&E$dwO^$h+!%btGGT01t1 zN-g<*v>H9?A-Zs`9D<}>&G>_5Kqf1FQ6Vu}Kc9+}QYgX{xtKHyBO)tJiC8ooYkwEl zm^yowa^uyO>G)oHP7xI%LK&P{5Gt^&@+}{kQWdq307O{$Yw3Y{4#v#=2PLHO8U}-r zjGWtN{N5b>>}4uOqgB{~>q(zJ(&zn${3KoB;Q9qQr-U=v(QaYx^%)!n<&XkqoV=Et z2)o{933Dm#UtcIB(#lGk`IEmucAzU@of{5=0&th(rG0PNuxl+CnWPU?^v*wxz$tCJ zh_pEqIrG!y${t?Ab(SsuR;qvy$}jN*5odINn)L(z(R?s$6H{I$BTF(_C1m&^P<7qQ)M}HX$|Qw6Z`ai3{Q9$bi31ZMRMYy@wd3#A)w~5OCl{Y7BWLlfMZ7r{ka_cQ z%~U0ywd>KhXuTXhPp*IvizzQII}Xc*Phzfeu!HJeD{=pXbhZ;tN`ttD2>CUoJSo`9 zvCa30FkYFyqBUefZ^slTpg2C|!vbn)yrvUYF!fN9$^|tnSZTn4^I&N*3xL)_1|ezG z=o*=t-qYrL_Ie6X{MI#@RSM(o1Plh-9`9MYZGJILDQWBfy*<;d3TSky+Q{(VViQb z)5wAQ52uWts;FaN9scXN?qsuHGoLHMz5(kbw2p1IV=Lp0LDw#LK22X5LlWT9@IFWH zRg2qXRFZrhq(OZxZKW*oJcm6j1Er!CHj^+Iy{miN;~@G0!}T3tEhE>7X( zfg5m)dvv-JSYwZb?i}9RXf~( znC#Sv80-r&VQ#|!Wu;S=6kN+cFdpJ=dI_S-Ym^wdHPc)M5NHPAn8i{=Q8S)lT7Un1Gojs3Lm8Xk}z^ zqFdTq+27pE7q}F-Kh=XHrg2xi-_kv`{{7qa^*hw?v-PCp_qmH-yo9x`r~ocf=zLPo zR3*#F%S-yCQSftk0Fi%x@l!rjMSjTn|CC|rn$a<nd|910fPWAMtk&sy!z^JJOw)9 z=ze~Q8d6Ob>jfquKIp3k;mLu#{b2v| z>?|JI-wuWa0Iu@4F1xhCLXnbrphC{(iH10C0OiiHF17h1NEOZ+@aK|%iK(Sd#Fe;c z)Afm;8Ry8eg@ut^^7)L^JkU3Er!W#IIEb_4PL)wlny~No4UXR_KxIcQKmBP-Xz)rNadz?#i!WSh4KhvXVk>>k{e^l zl94ei4y2`B2{QU;ZpW5Q%EPx-d#rLDobfgHbLDc0d|-$e_hwPM02-$|D!+cKIZ= z&i<=>A7jdt2jc9KO?$`2)|^y2`tKE)6yANaNw*-A-M&1CRt{aU>4A z4FhxUti_jl02?I#;_F3Ip@*r{vTyEI%VLn*l%sUc0PzFA>~~_*JsaSsJN*IWb2_dM z1o4f_QW$ezAgpI)>2^9KoSMjDiis)>Snv*M_Mh$~pV|Oc=V%EP1Sn&>o=1EoHd7g) zxv;mB__JQ3tcL8^S=AHn6^)&uo3xI2(Xp_xNbK+U;9C)h-~kf3VDdN&?0P01zZ+Us zi5xsLa=TkTXQ^q8VG$DrKIZ*zuDEf!i_Z1tvBw=hgZB$b>~uSXS~iaiu3)~--^}>6u zPF2aa0jEsMI&g|-uLxMOrYzWTG%HTs);2mG@qxy`2yMo;CEXlLi~Tr7Lyt%rTOr?4 zK$f)~(E^_UuQ0iA@r00lJ-mthZyclda5`z;Z3qSzNZt~9{B(1;ECs!Ox#0O4XCPR1 z%Oh@T6qh)ly)(p;N|)$NbfX7yz|Js*N?LTSKoli{q#2t@%ME<{6>Ic%8Oi#m3r+ET zRIaFM>R8-IGVi18|m$9vtC#X_sQm!IgbG4hhS;OZbowb?nmsX)8P6QuZgd5 z42J#-@1To#InB^K6~eFqXVIe7%!M11wt(8EfQ}T`u_E=q%t~#|cHYVX;#65C>=>X+ zTvihLb6BCFsjo#ANixPukt=V}oQZqES3nJSLz%aD_VnFGjkpjxf+RVx{!adz?f0cV zpPXxtE2f6kXjVDOsBHOCk&1OwR?O=vd*3WYskN%)0!q*0ixwd65S{Fn)|fksDPy`b zLK`Pg5ve`#!R3#6#>@!;(Zi!szlx|DQq-4STs7n*I2jAFmG(SD1R^@q6cos>OHZp! zOwEuaPr8AFv=Ek1(IVP16)nvE_r|$T7HCW7{tw&C*%LM0AIIBIKltA>7??BU zgsAl+qK5~B{s0DXf%j7dU`4A;aIf~R4}VIy4E(|^$tQ;i6JALgFe(_H2>k1~+8m^o zYMCce_51!hC&K`w2sk2oz(vO&n8P}0>4O6B<*$tKuDvE$V zQaRmf%eJsNHj-!~am3SZ99LuH{pX@R3hRriQC3q79%Ly+V~8L`uL_Op@dUGn3z1ne z^*=3VZgIUWv1&d-Ud}$;qvVU=lOuE|b>c+Kbz6gVs+0ys4sd}siBiQC=s=8WWZe_S zG^Sgvq1jm`VKEmC4N98rz??V^eVf=rX5}%XX!2N*?4bP*s-RuyLbfVaVpM~%Nc-*& zIwK-WcI7_OB7di`qan!U>aBlOd8(YYR))W|so$pQrQAaWk@IMNUgcIE*N_0`OCk>c ze_(snaqjW3{aZQ!Jf*+TI{=)THr&IOF$4A!KAo`9Do@@m9m94F#r>F3$Nx4S)^2orXP6L3k zyV^AZ7%p#t$#uuL3A0}64!(TLO02J@?{(v_yw2p9bQ~uvklXQf3Z}Wa8K&=x`FADE znTwbEOHfD4^8$sy=r}`nCobV@vGCVR-H}9|r0=w2KEa}CSOKW4h3sDF%H+1(4ElvW z`$TqEFqR@l1o%i3N0Jqm?l==sfoGS-qSdFCVmt5+V@SRqD54zf=~?UzT4JdR&oq1V z4owmF2Rre0H4;3jq>iy&&XKPlS(WNTS>6&NcOJ2>iL*bp#2}FkX+3d?&e8lyCSVi~-Lgo4xc_m;J6{i1H=C%|$eiK$!BQq^$Vkg3&I<4TK{P7}+o*7cu z?k=f>KA?=uu4D4!$81A1sjMZZVw-7e^VnI9PbTf0YKep%yd|49;EBovJuq`Yndiud zSLcTPrmkC>u_yvA&fs`}#YdFVrzxRi0v`tE5KGOly0vANIz4j3#nAP{%u%f`fs_04 z&QFuf12@O_BSvwI0!54sN_wepT9E4KmaCn%&FPtW{uI1|4e*Kr5@{hdta>|NWal4D zdn-HktZ~njrquZ)ltfaX9XX8Q*veZ!Wwwkvaa(U1Cl-lN*L_oeMK-NYxd78xzrPaYkb`uvaARb}(Ncf_x`T~Z+Q zubfJGC;E?7P}0XFuM8gYF?7ATdiN~}q<(K;Q{q^gP4##j@vi*aTe8?L9)Z=89B*k zDyVB1uwOC(2?fZI72oGaQLVox?GAjhmCpnp>puoSWi*AVSM&mwvj2@c-On-h z^-WEaK)ym`{obbg_8|a2d>hm74_Rzd`(3X+$Agj1PbDVD`~D9mu?~_VJ5Dn5!Lpg2 z*;1Rk=fgAhP> ziCp#{djo}WvXpZ23#CGuq9rttrU)K$iE)^DT|+GS?`tSxxG_$(+=*KQ7N&**59(dd zQz~82-bKHbyb>enVojZ&`=8V6{!r^~n~$I!^Qxx)QI2D8eei$3!UT~C{}4ug$rp@F zPB~2A#UI~y^W3<&_9(Hk+W3iAV&(Olj}713%f@}(wxxq?yu3;<0=Zl;lItrWGrr!` z)sgen=<(m$zPGvuu1Ee~1<{w~o@&%c2Vf4{T;4VJaNAeM9X;ECV3kEn$H2mKE|v@} zRIW<|OH%!_W9W3A!t=6CVWx~@#F$Lt{au(mcXME)2H z&Xc547)MM(2-4AT?JjNbzHwgs z@-GTGSn~C$2z9t5=nm72iaZ!O>6{pALmt5|?6?*WV!K^x9al_A38DjLR}A*hJm*Pz z0X;0^uDgfCB_%|;oD~*F05Rg~wilNdf|QjzI|!iD>%QxZ_~XlnfwEB{iA zs^ZMj`EW*)?R`R2K-s4)QL!k_y|TGhpk5&-TPTEzoFc=j6NbzFBfO|UxvJLlm0k(c z$-&`E$f7Vt!iH30URB}pMSXL(9|6Py8q#Cb%`YM)1&AFHe0f1$Todj(x9J^gM)^6Iu-i=OUX`y(uToXn(9)-} zgx|*+!6*1`DTUgEuhwf2x6ktsIz&a}Dt(JIQgxh&FhP8iefn>t52sL4_o(^5kwsHK zwuo+TWkxtfrIqr2nm9T{kPHX?Gb~@y4u-8=GXNQTdS(nwz^5_j?~OH8Wb=9^hE0L? z*A}fM^PducXMa|LV30emtnG@Mwhya&`)#fzUm~ZQQc*LB<>c|yl_z64R3#IvM%%taxt4@Pe_|LN=KWFhkH`le10N)M%4mVF$pUIR4>I|xUl*z}iUEG4a(s`Lw%D^s%j zaN;bLl?Uh!s!Qa33!(Dn%I|dIx!jVw0`Bh--`cx6629fh1Mj|-onNY6&GgFES_-AeF7)&c{v>w;E_`TV^?;z{SX_>Qq4C$-F}2KXzmP4nBnuO!fIrof%%2N|to&a1uOrlL zk%W|mRU+o8t-9pZ$>pePIdw0eApT)u0hHozfsCSudI2CDkv82u5`qutj#ux_o3#pD zeB7J-AHL~7IzPcgg;Xm)21Tb`J7=?16$6Nu@xiKwu!+eo-6goL96_M0VqN;#4S_se zY9>COprlBSZI2|Ba~yby(Sea{jN8_j7*|0?=|tk%{&PHYGqcrg`#Gx?$En$?$JO<9 zl4xRfb@eu{d+bShC_D&BP;Z$`w%G~DcHm+?{DQ8)E{(EIR5BR8miUkKt_VwZwv7PA z!K|@ArS$~34$FtlhKZeL5l_~W3`pcS1A~qxq}i^IHmV;QPs-*@g8nic-@1N;F;u*Y zH(guH%N|O7VGUa>EUdHV`b&!$>5D_0_vo(*4SVL3xOm~Z#@0VKd&q~%(TIMS8uV#E z)Mwaqt^@^1jb2NrUd{O0kd)o_s)@CA(s8bT4$3(NrYV(53{`4cDyQoitG2b9n>$4o zu)BZf#b4x@IR5Z1nzHx04*{N|WttuK+ym?YxwQWrbBwrOR6{>HjwtL4Oz;E`qp?BW zXTDc(#*eXov}ziw-7Z|mW5h@sHI~|*e2Li(qgjxbC34FRHH?f$k}8%}SAwTe3%nt& zZwzE1Qn&DWM;|hga8Y;+y2ZMsC7Xq5m^amT)c(}6pe08zNG|Na`)!_DPB)Ry@k6S( zmsUX~mZs>H&xxY0cx4k2jGM0%nOc}JS;sNWU31gUTK+!dH6JGK4AU>h`K z6UU74yzRz*xSev0GK&Gh4}efmg6@WfAkT4dB&ndmKBrOXdCc4$B^p(Iv>ky36Gz?z z$7qfb;0~l2f`ZU9=S_ZGkdKR{A7t`OWjgzTc?U^LOY7h;Lo1pWdYPwy8dl^f-?C0d zpVA6!yrJGLbzRs#WI?fJ$)%!Wj5e9=4@d=49z0Bu7YfAjhv-w`XT&PD)PSTm= z@ybY3U2b%o2T3L+EPrUqSakQbaagY-#AR|Gm4!qg?N(}UNznZ&v#3Uyv@@|>(rQK0AMk@b@9!Utx zr%E8v;XCqog4R%#9OZVz0vmk{KH{W=Bs)Y>EyIeInWrZjo}?CGztaPa3MMd}GnQ#> zSMC`-jOs6r1U0KtXD#>R37RopfvT8jqCs*ZK{FMfS7tAP9TG0NY_9(=QZ`A746i%X zF53JK_dgj50#PRj4qf?=kfBQXw`eE2-cAP-xI&081Ey6`F$r92b7-&*Jbv*pB?7pL z_N)%|qWJ3ZXfnterwHDfM2wb#UEG5c6Yx!IsC^KeR2EG-MV685p{wl*b5zQTS7vtI;r3l2_-7vJgH>SG`1jUE=%shHF0;xK!eovc>Q*MUNJE}?fAU&#TLG% z>zaE!DhfU<_2R;|vI($2^l=(_nMLYVh;T(_l(U`C2{tT~r)92l)F`7-DSgJ5n`I4w zL^hWAfsO5Y^!ztLT`4g_5oTk?-+7iNKEk-gGoqUkJ?RsFKs}972qw`yH!f=4F5!6n zn;U5}r~T#c=4#>Aj7Kg1Mi5+(5i$p)si)hwf2dQeJpE@Ru={P?!vO|1 zns3HxIV@Zh9K3q!2}3nwww@6pgF!K21EOZsd?xF-rfzmA+ldmDM!NlkvQ`nQ@hj^ zbnN%ZOG2L_DGsKZhxzcDPFbp5u^%2$sxY^CHctSd+v5gmN-@RvIY1S+cFCE$c)*P5 zTy7AMT;Z(iox0RZP`(Qi3N*x2s!)StYbLc)Jy{$}MtC_n&l;hSN6OVK_M9-upMw9I_x=T0-TZ*Nc=2$%vQ6F0LILtI zFdR?Myh(=6uAwv)!iXsdr@g;cD{=TDNoLuia|gT)hp+*_;%o3}In_%S|2oflHg8?; zJb@3SZFbE{^x;6n_ddddoxIVBzwkp(LS6li4l~3G&fFLDAiXqDKVSR$W7!3P@)fS~ z#Y6ccRJe;^5yY63Zdt9e9O?9wCvxCCBo(eBDl_xT&%R}*(x2#RF|;PMo{ko+##OoZ z9D_`JnVtI2`bC^t=PFh45{pTw!+lyQ9>Wi6s90&4DmbNK#{xIkkD7*BAZoJOfW8zG zVv1Tixl=+ii|qoRclLRu;G7&HeVvkqc4>c8u%9(TqzOV9dZ~)lDUODJ1kESt=m<^z z?43~?A|gS4bYh@KsQ;tdjo_3~v{KDmFfiQuc&?FgS@CKWQ2o|F_P!S{ZH zF+qF^-XP#CMnMsEte7XqE6(QQiz}xpSR`}l2;%&ksMjg;_7BE|KaUr?_HoEHT4{km zyT3%l4EW%-HwwBpOA~qiss=qBeB(2hbeZaX_!}nCsxjf?RMU9JW90r8o#lfeExAWY8uP85l?)cuGSlH|>*rM)BYGj75@wPqSRbQ7HS_qw9e^qC z^t~n?@}RaV)HAoY$Eb3?p)K78W)lclB~(FvX}koxiR?GEG8GisdSx&O`W1gcV_aSb$OydNjoXYc|_LjYA zt0;`W-Dkg7Y-mm+u~I#k5B>CiKRFiA2O_rG$$nayJ>gtYJ!{1&6M;)h60FjZQh&+K zLPErpVU$Je$6I*7zdx}}%)lOffepG>f!A0X!Tw%9LD-j`KNeolXB|d}xV3;SPEpR8IcYblkdY+a4P%ckB z{Sij!6LK2d2NPEfvQgbY@|oun>F|}LqG!U^hMbSQd7YYV^9i%c+_$?RN;?lGf(Mc5 zQx<+V34lOL#5Fsq$fC_cW=DYLcgV3|C(o0gQ}A_BL1g9;2xGd`bUjoYOtpKH!m@@# zZ&RSIUi=NLTTrJUtIVq$SVB(Kx3W%Gt#cqP&2HG&cXahf#IS(}s-MS)5%>isQ79xH zKG%toAG3h*PA^SY!)lFl)(#9$K8s?Eu25dI{N$cKxm(ZXc8*lWZD?rdf7{^ISzqtA zVh!a~g+9&?hHIDyS2if3Rs0w-hqIVm98a4SXJO$J>(b6ws!^#~Dod`gv9mV@8QU4= z;I!DkQa3D{fA0KZy+r9vWl-Xq(YkFS`u6`&{r2q+Z*Ob_Z2S3C9~tV z;W6{@^4Y{08P|Oi-^Pgo<{U&(!>ZZ#K*~)Tq&-XaCw@hr$v#o7f^u`bV$)F<&e1}pRIvcK1|n>RL3{2iX2ha;S%mb5Nk zF2yY7|4Kz*ToGprlw@qbr=0Dj`Ahh7Gjj4hYZW>+kM2%cCMM|;OS#xt0Iq}zf>DWi z$!e!>m{no#yn;ag-X4&`Apa$@TCf$GR4IV-TNt~952ZPs5F%l5&9@n@=h`rMRA$%& z!vm7KZ(=n9e~7~O(=R6F>RFEipr(y(vP}+X9%(06wpR0%E083}w4vk*C`sotd2fGp zyR9Qi3Kgp7!q29mr%`H9b6RWaY4z@DHpZenTlQEu#9K$9eWPMF5Z%JtVQ(3!(If3? zh*{&w=e`=6Nlg4v)V3ofHxr zWtivmV#Te3C<})hV$_oS5Z{$aaIz+8y6+td4;*~U}qE3icQeb&X+B>c^tyR z-OB8M{}6a%OxtSzv&v##u0aEQW|+ohi&ieLd_{@yP`;JT$px6kP4*SRMM^a+n0HFj zKmt17zN3g#s&{SPz0;R{LXOl8bQXN$I;}{2R;5Y08yXHocXk+^pM6Tgo}CfSVnT=z zt-_uH2v=+&o|vA&E;nCWzg4gW`M~$1qAWZ;IpH;o53QA6Z_H}4Fr^WUe#dQN7aOmN z%zyO|KZP|9r*muH*(@U6no2DwpbkvVDsyKpFW-y91FlFB}wWU&hH4!79=V} zRzCk0LLE2Q3>S?odYI0OC-;FU3<2O6&9H)zm=w8BjNSByeXiuFoxfY*;1p5FGi&M* z*)L#brn9nuJBrh_G_L(b*FYbgOYZLnaw2-fQN=oM#%QvAci^3`d8;1imN=HA=Ce<| zV*E;vp{hOQF~KLMChD8I#Jbdh2)NPjYaZTGg#a=59A5~jbZbJ{DhBe<3WDOD7&v2q z$o$8F5&ZO?!MOo$I59EKS)BLVFxvIm8fP?Ha51ui-#^Q0{f?<9hR$&1NT4eVR(^Ym zd!sxi;ES6L-K7LcQsU->UBTw(P?xP5$)09pYv@^Eh#>({bBzcH4pYb};36vh3*W2+ zK9O#`V(!jsP#)}z+d~Pl3{ptake$Sc@q*?nvH=3O;N1+j2uF|`+a7d#6#~mGOBvbesVMt#laS0!MMn;CI{pT-1$*CNEkv8?? zn_?P#MGLwVX{<1JGmFv;eO&`HzbXH;L77FXCI<`PO~0@cP9+;C4!@|P!(L=gfUPZN z=JECp77|P>#x(zf9Zxg`ePa`Tf=3LD__w;G7B(bUbyy*}@)h$?<$p_|35eHA`W9V2 z`kVFOrAnjcHu14%elg{>8RrA2&{iI}^RWy4e!=Dz-9Ya;f@- zr)hT3pMme94{bWMsnvZH&8LYEeHUMUB^rb5Lo~sHD*U{-H#bDze>q@r+vbQFdekU{ z(X0M_)>A&mY=lt|PNHF*d?+6gALZOfit?wS9p%z2U>P;0yn1AOwa?S{&+_rgJh+3I zyGManS06b(#?+EAUodv>Ic;Km|5`Cl6KwcPInk=P55U@CMT;j>t7W77|G>r?17lyQ z+w9^&G3_uY&3&qG0Cz;MW&9$mWkpjbYoNut%JX)TBO_P;kM?+z_3}s~(fAu-qb~iv z13Z*SJD$J6`)al;N880vKw;^0wwbMMOq#x522dH@44_=mtaYOX&>jJTOAGDN)EOnW z+(vF9%X5#>4lX2FNr@Te_b`hj?<=@5i{Sszd^m_lYVXfjy6BRd< zX1t6T%L=?Bo({ohSP+&ye^06dH#`X9gY#X+EbgnTnpznupg8S4d%YxmW7NJ`P*HF^ z3TV)6_sN*{IbxZRoi=cZovMF5sb5+p{wEY)l0$|s_Q4Dv^h=2Qt{$$6qTd)sZ&%Oc zMa`Ox!Dm3JO0`!g_2|yacPfW#(jlD@H#R*p6L?V)k3&%?)cN{<>zP|SH;j-~s!*k@ ztgo6nTW2X!A^bo9E;dm^(Q;KIYx6AmmMB=`K1q~#lp`<`|6gq_3bn3j2If$U=ZGd) zrbG$qJE~uV!twn}hlq;=poh+|bQ-ga=eu~_3}b)TmXr2*y%SE!Q}!4$pL22=%O-Q` z?aDTHp&%Az-Mu_Q)S%jSEC05@dp9g;;+Gyql)zZi6(j#erTxM?9c8{z zSgiw9wVNwO<+&VC4AC~pR*sK|nyykrs7gdW?t4}P4~@rZ%{Zq-l{Ukd`>mj0#@Ug4 zPa=#`Z0lPRtS|*7USq^VrU^rjyk&`ecek|P5p5JTDXu(=G&QaZ&;JhbDpNzl0Pjb) za<;KbIfdCvm-6H>K!2RuSTEixW8vT!7HT-NE?No6A$|l>rqC2=O&PF~MicLq$x7o1i#=IL zd)`yc#pMdQJ4rJOrjXQ2OH!n^dV$JskcHWyQ}VY@nQ)^i(|o(LH4-qGjIIU@F@|jz z^SN3Dno?Y+m?R-psZIHBc7FgkfYsHlhoF;81>WWm21RM!_eB^1IId==AAw(NeRMmS zu#Mwpn2nHScLx(3G0|2%sLZ}Vg~^2meJxc0nYnvM5i06-`()&W7j?LvqXRz#4ICFA zpP7S0BC!PiQC#)+_puayWvV_#lQM7~Z@m?))G-6LW*)&}n3VUQe~<7EF7X!)<&$v= z1QRWSlD=j*2TK!2O)uhA9bB?FE2y4awSKK^FxW6bHwDFU^>b$@J{JG&RLSPbdByYB z>w;cDolXJ0;eZ+>J!u)2v|Q{crnh~|83zloz=Z;ym>?*>1QHJ5Rzwe1?Y8c*4B4N8 z5-$%{S)|&OJ>ys^!{ke!;p{y&M_ZX0O2$hVRbdMwzKNMZtZBFR69wFP`tDm)UzhWJ zcq<$Gj4^(rAd?gug&mv3fBt|-j7sw`@{2v_BYQcwUeOL`q5`STVUs4iWhF~1RwQ$} z?y;)GKuW_~k58^} z>(5bU+bUNuqRR_kpdj+#*S1-3p^;s~EEI|*a{lVNw3w?XM0}csxHUATN`HF*JB3rz z11RBzx>U}4129X=OX*o4ph56J9R4C zLNqx+Sd%EL4asxNGz*umQBiZt6xWZ9-4Ul~+Zt7!xP?WFlQ@Bx_%4yMw{i{B)Tt(K4V+RKH>U<67j>U8}aU z=r-Nu*Q=QzG$jO5+hpyYg@IueS*&kjg>?mg+-^DaYayuU)pY9a= z!ljFY*)mBdEn0Yf6|P&dun0($YtxUpPVYW~so&e(s$45aGO5<=yp9`D@;c&6MvSs- zbvpzAj<5e8TnczFc@X!Y#mumU95Z%)QQji&KQz@Gq_i>2eXZjFRZ18oTmzfSAmM^9 z)=r^a_+b~RHPI#5vJAAqIUL^DBUTPZ6z6?g*=M!-4lMXrR9Lqbqn$NjlTVj(l+1XF z`_BwxPWE0Bg{3hhkc!;s8dsXeM|0Y+WyIh)D@EK4j+;Do%g^wd^jZY+5;?^3#)IS9 zE{C8Fnv=xs^S@O}!Xp~ijp$f%dPK1H;5E^zvf!i48{f*a*UTszB7r5V3&c( z7G9^7iwJsj0|4Xu)}F=6y;>4^ylyM#WO|t5AqDp%=j0$lL4)jDow9E|LS}D@2t9h3 z4S|%ED9X~6vz%0j)PJz{?H3gDvP%~JDz4hH_@1(}sGxme{n6Bc40 zI)x}w7f54e8(W#BZdkOxe_eXX_rw$ztt(QlP^Qu-SF={FP#Y^ocEm*sk{vy1;+Pp? z#zaWZ$})9x%h@$J;R^~Pg1dzSmqu$SF$y(y0z#*otTKjFjgbSWl8rbq>l?Zz$IhtD zr*aOfTDF8S$4QRy&75!XxyMi3I*Kf%x#*Ly!UG)=-Q08qceZwul5Z@&8#ERx|BfdW z=~1M_eCy*XXr0*I;_rj?+C<10ZS&jbZjx^MQ~$J(;np$P*Y_yL@t~ezQnn#!DRm3B}d!-|$8J*p8cX)f>b@2Ue;_l$-&?I5{ z1J|OTw|o&0WYr|wr7c1wg)5%UN}=G~xEL)fYz04sDJ`vtg3WfOyuEGiXr5)^o$GY_ zi%=#)HQ0$?U}h{H7wSRs9)xjius?vK--J(woFNzwGb4|zX)oMeQ{g6oO|H;>k1@j2 z4Gtfxdd%Ou+P3FeVlY5(3x;3#tJP6V75;gUXRb1cG1F$8VqJ4Lmc4bG!$o{U|2=@g zBi0rwlMAXjt4N6+6!n8mVGFVJZCG&+FVCBdDfU z)WltT!sltpB!pdUZ;`2)AF`MnO`>qrp0{nWT);7)GsHv={hH-|wKD+gLH+VkuOn_iPJrg_j^n)zGkPMu=DP6t-1`1J=tgo+f1&Ke9u}pnSj?CM<_Nl)H#x%J)f#$86JfC)*fwx%=-h6mK z;~c7OP=*+e<@{O;q&Vh1olNlJ#$$U_S_%Uep;*8O{pxWGjA_OWnfrJ3dL!2c4zMe} zFE+7>TSl^lDx)F|BNeiWNCzxoc~24n-<4m>@I5eLDv0+g9NJhwy=}6TK14P|t*>vF zZqg-#H}(p`=WdBkOxA7!{=UzeRD8xNfG9_04o5_Tc2pG;pWBqMfBqA4@FKTj$;=}e zUX{c8TJmq@@Z=TsllpE6{SuEKoyT{j<>eg6%4j&Jo48G!vgYq2R7@Xc6q^KB9)9idmYBKo z)HAJ&b(HDo`zfaoVti~6+t9>g!5mIf&`%>#d4YyUuZjp3;NkA(vEmxA=na ztpvZdD;i<~!-Id|!Ga-ThiG1A-l&F^4?17o#Dy@j#DlMr;(lyzaCW)#-qvr;^1)QN z@LTjrZ3ixz1YeM!Ov&9?w@_(--3&t9#Hf&#P8*n^kB%p*rxqm6ni!V{0^)guvA=;D zjoKa~H3F`biBTZq04Lz@7lxH0Bm>E3nQ)qTS|;#Hd0dBJJkPKY?ETyMwYrMcR~tL! z44%5WYI#FyICK8$UmY24`YS#W1i}N}AgHV?kg2_UnljbVz!3MQU7Ag@B7GVbJQOg0 z58mU?{@dDxJdDWkC?NPzQ&lG`CpUZA+y>OU&M{bkvU(aVe)sAt$(DstUGH@Uewbl- zxz!V~OO#$DEIA^VB$hmbXD^h`OWwKO%q5Jeu8 zh}82^#EM8Ct_;s(`21#-W7I|&VnW9xB`I)9QC3q*i(KU$KHwK58fA%Q)2tZ1B_f_D zy#O2NrGFm8aX3adtO>z>C>#G`BUnkSh^ztF)ntCp*hR0iY?uV^Ex$`#EL_uFdE}s? zHYgf`N_){oqxV_CJSV_Rqjp;Xj?aYXHfa#zSBNZWd3L{jnMuwcvGB>66RE=oFlt5S z1Ozi3!ivJ6rD-b26iD*5~Z+4>6E1E(3x%rdOh zNu|P$3~Crq3S-J~i8RS5$8j;^2??Ua^PB|i?(I^mm5;4!9rap`et*cL=O4v7i_SBY zk{lc~nVp@%S)XawJ#5kGbeL{581_eOoI1(k;vzS$-(-}gL{Z4f+8VunpS6vRqB@Zv zB=hqN9CX@6iEhcQK^N*{pPDQFj8F?Lt*tXPJ{A4?g`tq>x8L&|_PlKAVrwm2| z9(>>&bNdJMhXV$KHV-`XIQ427ooQxgXK5d{u+}j@H%AaC=4NME3L~`93iu+kW(Y^D;33`?;c{8jG#(-++3io6J7@bdUM2w*Mn@6dg|N)wNYl(4R)g@q586nm)M_MyQStIv-&jcL@v7R~hozYKz>3Cj z{H}Q6nw`9;wlH2AV@Qog7Rp$FK!jAvRkA#zqz&Pf>x9>?5xw*><>h6P)n)P%YxL&k z>6dCGu_nz^hFMA__Tc}p923PMQ5166I$&jaksxT$ZntQ+4;l3O%+Jiz>vnnQ!3Wsg z-DYKFnL)pg2tCidnA#O>-3n3&2BQQShCKYxIg|`}{mnO+o14ct>*st*k{gRQmc_*- z<`bA}?Rt0&vgHI|>l7#8$Y4SWr zNx{ier`X-!r#>}J7)LyO{t@1O`)zW)$yB4}Gx3TLR8y$fPo6qOl8pRkKN?Qd{7XyA z>@}MV`aQxRB282Fn|sVn&+^deQ?z?sc6axvHyWg)1ZzP{iNqnD-zeHq8-1{kxqBDx z-KKhQK-3u$r-l%af%0P6NRa9rAp_8cD2haprP&x-@p9c|wHz}ij}>T;4rShz5-6Z@F9McAE#APlg%^*M*W?(k@sqWT>t zQ%}em)}Tr;ZZiD#+N$v(Dr9j;696`LRr7r%5(oL zj79^bgi@*GjqF-etCk7FfP>~Cold7na#0){957XH(C_!j^PEbh%y2j$%Th|E61VT& zEd-h|hled%hb?w@cUW87V0(LqhtEC2^i+ex!#3NyJLFo^>2-<25>`s2Gsu1ux3`16 zu}NufkMiLmGD(PYOQ}$rTcwW39NG_5rS;4;grrm|)9LoTR6)x7UbrLlirX@DY;6d2gcj$mQ{WFYuj&5M!*h zoqTqI5QI@U`roC0F6%S*-VUspna1$2pAg_>_bMnP^wv(c_73l4ACG2nj&chALt$#E%JoZ9!dI7e-uls;rpTQ@m<#~+ek4HwZu)*pHGrFjPZKBHC_7X%1X3^xsg zLFBbMJNs03_Nl+|HhOxB-pT^W+0(f76C{l}vQh<^2DG|;?riO`IzNxjG}BYlNFg|X z{ycMY^Ry0{%*@SFtJSd9va`Pp*0Hy@Pp{YG%<0qY@9$D7m5HK|{rx>gX~w;K_lV<| zwY4>FT)$4aRN}2S-=J2hurNQ*jholK`aM)6$*6cKe8kjfIHKR{Qz?0I<=AZfPT}4} z%;!Wg{PdrAt_{Xm9)I*Po_z92&w=Xu6zEW?$;IG~9e(2j*k@Noev1=^n0~*wo$X{e zEDMPT&f<(uAU=8G1TG9|w+{)FAQ|{1;dZOdt(!Ob)K7ehBuNOQWPf*$?qQ3KjT3Zx zJ@)pSfMYZoQYx32pI@NWY7vI8w6ur}q)#Oe6c;aFBv6ip#dRv>8d+*7rvsdBBKCG+ za}zeVDIc_{rP>Q}mB0xfO=b(R=5dmcD}ok+;CO-?rIYzstRFR3j*i^NT54V2PyzsSA)`aj02m5Ds$uGcIKzK(z&7(m795PztB* zeJ$u%#3chsK!nIGLy_ZjPLOFb8Q~Td7!Es>Q(No@9M1jVFyH&UrsKJr^nn%=v$Iqa z!OuibI1YUgzQD;domBMaj0!aHcisze)aELTkXm5Liih(E(&g|auyuX_9|%RRb4;d- zZIRdIh+>{13w_6U=Jn1$=yCX$a1O>_jxqNsbSHiNv3MW>>>f19vW%*f470>T$cp}4 z8}0EJ(%+P^am4!_D!WaRH!qN{EMV4G$xojmUE81{a*{!xtxR+0_Dyzow+N(UVQGbK zx5reY#?)f+4?uh8vuIB{Zwxw&~p!=l>CQYz&tckkTc*4?`}r}(iS|1qLC zDh^x6($W$qPps2w9#E@RSX*DEKN`?HJoG=mu!KQCyVYWDc9tYbh~oIjTrA$r<(eGo z`ja|de-^YimOaONy?b92<{UO?JycW8Gy%+Jjt92hLQ$q9nU z&oHGV&oY#d=sYKmB9u@Cp){vbsqn#5PhzYkO-5c4p}eK$_RX6#n@yg7{u7)yd4hvx z6D1V$b90<~@IkUPqt%6l#RZHpj7AAcsp9_!v|26N-8Ogb-r@T78;ml|?Ccb0POnjQ z8U4$zQ-1qRs(WqXyn2`?MJ67*A<~K>15wKp6YWeB2@)>Db%^JUIC|oW$l9qXI;|Li1sTpN(j(C-Vy_ zCAJWr>0&nnncN)KV*4ZSYm%zCp*)NuiXxKK76@HSvHSAcA{kII;O=#> zJ8jGxSI`UdJbhvXoAl|-FCo!XYIV|N#P-e(&E^4tgi5u{$&C#b=I02CVROA+=i2pa zJp9mu*RwjFLYb|SQYh1j1iRBd^Sye8VCroisgknfp-0ow6@wi=(tn{ z=nAI2IVP4o-nNYgthO*9hecS)cz%0CBq*SNLSTF*J9d+?>d(0D6&JQ4i< z@D~3}I;l9Ck7gYoHiF+gu;va0NxYkeIZivN)WAf_`~i zhg1@QFTGVk>n!E~X_EMtwm8Jbw~l{_ooBME03`&m6J&RGP`9_RwTpy}DP}iT8Lcie zT3V)AsggKBnx!Pe0qu4dCCa2Gr$0EPR8}m{FY?-}uT!g5nVp;EjW^#Ucb0aq&kHZS zOt04`jw7b0rkR_cqgJg_io;1;5rv_T__n?>8jTXF)f(p?eZ=47R?|9YQi?(vwW^=* z3A~6GL$}+fQZCbo8uvY0#%lKVcIb9m{Me8ED9!x?Zr!@Y&-~2K(A?i=IOvlM2k2Z= zsg^L>5eCJ#WNeX&BQe4f1&Tlk($Rn@4#|=McWz&&)~FH15%)G*EW|UEs}*kFz02I( zESb)^c{nN{XUgZLSPLl4grNz4lVqYCyK?cF39SuW;3KiD*xbi3pG1e6u41oh(JP zUWZbt?4!{|2*T0pcj$FmOi$I3ft*-k2E!r!L7&yNRZ682-L6MA-@JJft8h91O18fZdrh*D! zdN^xQ_?*S@=5JzA!ee~H7)13VDPjcb&e*mw%#L4GA z%{Q;!VtRkq6F_HX>9!BaF1*f@Hm5=CV^5@-EN`Te6KJ;|_eh*^6NC1+8a>|f8s}wA zs*nebNwH%Tl*3MzcPK$F7^ICk7Ei|S?ZA5L!j&wpmOaxw&n7>V_X+wzYZ!P$gmieK zgA%?|2p%UCzehV>4kCnwt0pTkllWV^OD6}m& za6-PTtTxsV2i^`~^f;8%L&?Z;rW@0=@(!8KkRq6T(MK+GPp2?piO2{l2Q8w#P4rt= zh^lq$!Zdbmnf~G&$;>QyeVSgWf=**fam>hQ;y5CV%f#h~a;=7N0Z|+yq$Cbw;y5G- z6@dy10iP-6ZT@yQxi7(^D5Bf#(&==lHyVUd#5ce34bDAujz+`JPo}45z!@YkH8t(Y z2!r87X&e-qIAaZmhliwD%FN6RtyYVEx5L>}rzn@o^twH=QO3f;0=I77q|@uMxU_^Z zx_~IgWVxQq8wY~{je30YHafp=Oxvw2KlaXiIM|h1fDtUtG zwUNCRdUuEX`YrU`yOdgoREHxXr%*_&l;p7>!=X_ArasnEjqg4WXUvW<%#IRW##5C{ z=YB*{_}hdKe%x{V@|4ogYJ&h#Y+jx9m2j+r$tG?rob<6^N4mBn7L@XSykh|#t|$Pk zHl*uo)PCq$zWP7@Gagu)XLju*wM$osn%h`2q9+~hfd|-Y?yEhaIlqc--l6{BSx)`(FSDbebm{@p3zs>(yUp6E)7*RE8$ABRr})knzR2T`zmLv- zljJjVplfk>jwQaA`mHo3UR_qGfHvE=hc-el*=W`r7}^Jds{{zkld2Q+(GL1XkddQwcjzd`B-&*RJAh+YaR2W z#-d1yTuUh>A__5iN+_gH(<$!M;~FGSu{fIVj4QOUM{it(SnDuC5n{-VW%0Qm<<+ZK zspyOk{mS3qi=X{0E2Erc8PH9J7$*orj%{(Y5d4mX^uRo`O>kk}a$hLohEglf6W%*-s?JDxeU zu(Zq%f9!{O>+Oqv=oxwV+&F8{&s9QBo<7ZRF!I`+z-xOB4-P3;y#KP-?M^1D+uK{r zOgAW(%hVbT_V)M4Qq5>MBG>s*SckAkp)go%Izo>In0`vsJ|H^S#azFMyt7F-=rU6f zR+S1+HrOAq38t z2@OgWLQub*_JiRZ`(YXh? z_N)J#6H6=Ds7lrx5=WxnvWL$2D z;uz%wLL2PBps#OIxpogzdzHcRETyxjaOKMX2A)!or0FES>xc(cEM<&glxo5!KS1UAXSsfJ2l}Hmi=??eUeU^lC<`5#Ud;U0vuy?y(q#^E!O=RiOfNO*5(NQ$MKD* zosdVyt)$il5val#9w2f3T<7=00snmttQ+?>^_+;E7^Y$*hZ7ByEvy>WT0{^KR7%+X z2$$(%jV=p8p2X=KHOwem!QI0q54`Vb-v8W>aCLu+y(^cIaf4yf#}xhVWaw!vVZo2b zjkD00kQqfG^>@~bAp<87!b>1zql(r!VP@&IJ6Ig0Ai^p^rogH3mPaFsc2pNeUJqJ3 z@AB*|4W+`361aXFee(_?ev!(;4B4qQ1}9ID zFRw8ySIBjRZV(d&H7Y?wQj(}Bq|@)Qv$xBFo5vW#nFr4L16c@`mzOy_*k_a`%+AeG ziet7mx5)DptmXArU*nPU57Qs?D3wcIhm+;x+EZ4ywl;bG`5&Rz>w&Yh4qEK*?y*b!{ypZ(jz@mx=eV@D z&!a!~EVpl7K_o*?oIb@j{^%>rE-%n-wNWBw>hx)J>yU?@{{%DVPw~Rr7dbODu(?BJ zeTDAKG+e#J6v0t}GA>pMa>yhf#1(CLF-)hp@U0#n%JzN`p^|vtvzu&J?N}Lrr7<%z zYRt_}q$mI02Uf4s&8Lmk5h~O+pE&U;<_F`R*6XK=cFy`uf_L@{65%ZZB32CZ0ayRW zf6Lu3e37}IdLFqjhyM5nX@2>u%o{JPv(A7$rrSC~-5`~mxWYY;3(`DAN#*An78HWc z-l3mGNlA#D%r$hDV@IjKrN?uM;(Hj2IISp*pT%rJ2!XN=BOIy{Gs@EYULsdW4kZE+ z_*nNK46)Xb<4~mtnF~T3VVc9OZREWj;ukL9=I0r$&%x<+^!iCU^?5pRjU)?@VL+$X zquuQgMG*%FP43*eLz-u-tgLzpL=^JG``$;IBt${T>gp=PeveM8#kq421F+xRXJ%@e zI1agY?=FY!E?2Hy=b?ulVq@b3H?CbpYt7-o0q4&@f;EOtyG^Z8N6COeHss{VlLZQ9 zI8m3EDkUyoxx)49w-^k368EEzJxCB3=r);YwyE5`hS<4Fx!ECTwxQoenG7LIgfj3z zyHJo@O?No(x;f_vi;K}Y=LMcpVsq^;o;W1W^<++^lp=SQz*^E#hC6wRg-?BwtGin) zm@c-}qC7Ltfz2=&gi{ll_4sv=LU7xid>V^ytI5H{WJ?b)DIzRraoHzVbi( zbAJ3Me}O@%N^5J2v+sL|U}lM@e)2P1x^$5TKlpy!CqKcr|INRqwta`eOW$T8)lC1; zpX17{n>3P~*>Zee!*>*1dw=@)apCefrtY1rGn8X$-h4w z@CO}Oje1qP(ZC2LL+Or&m8u{HI=uL^*X@w!HZ>WNjN?tqoKDOP{z zJaagDr_NVN0FUSF+9gj85zCzX{e*4f3M&}Xm#=|Rgw3dh^YiK#$f@_bBxB?V z-d$R)Ly{z=-RW?*QlT8jl){MBDW`SwRJw zo#p{gKKUdotE;qHEvBZXh=PFGnHi!e!dgwW=An&wmQkNJLciEk#ke1kwZl(j*}) zB(8C(gtgWW?Tw}1>k}3FscxrRZ1I>>*Uz}UWy_zKUdXT`$V~B<@`BH zGYt+eUP6Y7Q_p^a)^}b--pmPS7P-5(Lw4^baTp@(kTZYrr?~Jx42fqOy!P@-T>KZm z&Lig@Waj*%9JIO&S}hcsnYC%QfA0dVFMb*Iz4L5uZL_ey&$_dSdPM2ZeVV&K>$UH3 zGKveT!`SXsfIN+UhfPPk>pve~puH2vY^}q&BbC1j6}FIfWJ$`I4?L8fdgd`~lD$W! zd%c#22m40n8NwJu7!pLjKlQ^&ONj6hMGlnoa|=6O#yEwj*XZ{a0HjT$GL zLmn%KeE368^1?s*r<6uz`sIL9dpOQLx&LF3p0kyv*(8bCrw;o<-a5-@F!V-BDG{z< z`xJH{o#m7GtX%k^vMf~FIyb1$E0)J=)l`or7+V2|K!Nr17kA8+?h19ZEMkvr;XO-| z1Thx5=6a03JJRzM5m-UVd&{ESU^klt`yKQf7oi+cTA8M{zCmPj`tu8v>XMntJdq7B zN+NQ@sMDo$*dZOIq@&EEor~Gd-0Tzw2m8cvL=XgQZSNKaXSjLm4&QtE4Ign;j+w4E zxDzT&AW%VZ18U>bk+PgbXJol0iYk;#B^IhN3qoS0K^|SwTfVN(I zX>)_tke@q8^;4gre&!S}{)4~6a+dIc^N+GUXtMj(1>PT*A=eB?>11@`xmF$lW1ZIn zn&lZ<)qt&G%90DHh=}e~m1ubxB1!Y@E42RcKgL>#t?J8h`R% z{oiT7@+walMdhW}D3`#kO;J1je#8@xbF1Cw#^*lE!w%{};Ahas61SC-1)%>Zh{Xvr zVYM9{Tk2@rF2`<5`7ZT4g{j*s3LH*nZsWPnTtEE_zXo|&VW*kj!aVqrIc5`Hd2})(s<~EQ1`JZCP81DZ5cj$lVt4tkqss4o@;UoXi zU*cQ;@Yjgr5+VqY&A!L39E0!+A<)K5#Ae4=$EpyoDOn5!1(@7U*z?C>_fi$K2y1bn zMCTggELh_Qrw&hR2qT{oQ+&jsipbqjiR!gQaw1$EF9F7u09VXZj!0)me5$dA%?}+z zRH(?bAuN}@$yr_;OYVrDMH^ajKh z%B3>7?%&5Pcg2R%7)|Od?xW8z`oPn4q8OVb44WsvHVz4wX>cjpQS0~+1WRicbYHSU;nqB z4Dq-A*1!LObM;V8)?2O&Kl>%ry*-}(3qQlM z_6%f5ZX zEn;UDIaphvyS7H#YQiLimtQ8Fsv%FWBjP&QUP2s(NCAVxHZ#&v7ZzKNIHd$8&3p(e zAd)V2&?-VWit8`e==KoRPjRh%2KR1Y5B9KWj>s}X1gc!2QkkaTZj;9fVL@nH9O(W~ z&x-2SGuSQe9T8z;@t`=C60DB3++!)g@jGw5~iDw=hg>}zJrtxkR=KEV~@kfKE{`Sf%v`a*iM@B9+D>zA@vc@FU8xk^7xrjJ5B`kE2+#%VJ&Yjv+(@VdN3gd7e!Y zR46hVqcHF?ljHuq-WpLvTb8iLAEG@JA*aHmOJMyY`E z>@+mW812xhMin=hav4^8&D=Brp;X99iDtjYpg;6Hs3Ngf2rydv3e-YWWF~6qJP0oE zqSC(2(JsZwG5(|w4r7a~yaEOXgvCL1Jh0QlA%n@LXsnAGhikrD+Eb7dgqJ!5MQdr| zn0_3w^U{l~J@PQ6u*#SI+ke8|jjKHIv8S0ixXVfDSj=-$lOwt@rL*gFcADtT7G*22 z$HG*skVt3AN)hpgp60c;FA&|i#rpCR*LQA!$yojHv+TC}-2Uz>JoDJ2Jn|p@Z+Y<> zFR(Sr+3a>%aTY5i>C`MU51*%V`6jlzL+K+QWw6<#U6o9K?4!K&)febqzX3n-Qw+9t zSr!s472(Dz`^{bQq)%yep56U6;reOBxpN?^JoK4Q!O{}*v$L4B{{ISPT1 z?tcEqJ50^)c>1|JLYv#M70OvMlTFAG9yDmN#jIOci**_s%VD+F_*Q*(@wes|7QPVG z=I^Sh8JsnLR*vfT@e-asWjgn^j2@*(5fUhY(;8FgVd5|%8;ra51t7J3{iq77-ggHoZdu8K0>V5!X2(ftHFD9omiBA}Gb!!GJ(Y0%381VEV*K20_5^ zD_>*PSk9fDW3lFV>TmxCR4Y^5c;Q9veB-;gYx~$yM&*$cBx#1)ZlflMZUMr_d6|`E zvgsLizw{;68q-wjB}OmYrBR+^<)hE?vODFSRQ7?k3Wie z^l{A6Jo%ZkZ2iU;;f+4)r82v__o%O|p{ivL-hPwQ8*6lv9=6$|EF@Y2XFlmSjMw6nYS&_1n#HT$^#G0Pcv1cTm2=iSkam1jbEt zXXBNbk9ivx4ThW)83x+bre3Pm8^5*qz$3purJ~E$fl}UOpqzt0V?+3T53JptT@&bB zkL?M$HU(qK>nL=tC;mbyB~nRrF|#3%K!SIK)RZaQM&nTOfr zZOn~Lb}wC}zPd#J=9aew=+x63q$IbNbbf*8p%d6FC)wJk(&=Jt4mL*>*>9l=(A}XQ z(g!|u+KnCY#(B+{QshbE+c%|%l$!Y1j<0NGF)Y=&F6;zu5@Z?$p%+A2i-405qS$t>67) z?tbnoh^-ctl|_?Go_d)6x4*;O2j0i*U-%h@^*Wcn{yk1k&C>}J%v7C)a+##v;?(*H`k6sD zcUk}N2k5k#&>iA(hninT)Th{f{dMNU2<2dQX^vOF`*kX>yurc2J?^DFHVzJ11_Bkq z>>TxnA7<(UkD?wr%Sc3AzIK%>|MFj=-@Ztr-C`pMSO_b`ag1}BPcw1~qh(Ru`aD5h zv}x{m_{lpEQSX!-xB^`>MzBd2VuUM{lmabraVdUnd1K?V#=(n(CJ z*}t>Ja&4BR(`T>SVfLv9XqOzFH?Oepp%2o%y^E;Eh{MD`yjo+{mWh7(FLITX)#VeI zJDc46hkuXLjRq#F6SW3@gBK_Q7ZL`6cY%+GfA>L>4@4 zA^e6i*BV(!FMMpfov4<>Fe20Wk-p2=iH&4zBhuDDv5wEv3?ux3sk9@`z>YC4&LILt zY`h(Uz*{5I%+J}XMq-^nMUkHqNQD&=i$OZ&1%1br)b2d*ZQANtUvZ2p_iarKMe zA?qHJg^<jfc)W%%I(( zTB|U!g1k3mW^R$BpI{u!o_mPxtsR1D3C^5g<};t>&9`4CymNzexa_~6r~`_*q6lMg3$15Xa6fSnc8QRj*P14p1j z0u?aGQ{;9|*CzCOeJa%|X>*6_{4!Z3!t5PVE|nQH52!B9(cL*DoM|vhQs(0l(DfS! zox{ck*G0}B|HJ>5zx=oV3pSH3qjsAof8sMN{L-K25B}Ewg@@WL$TdL_k!Q(dlQ9;Z zI^l4s^2d1brrJ7JuwQz({ zgiCD^j_Kz?em-S!McFKa0F&lKQlV6c)CO%mZ2=*OgZx48oA0 z$i&ODe8T>A#*%97A4ud;pzZhZfsIU#R3Sz}Nh%zY++;^{BxCPOIT|BWT;T^BkFkRS zwK5*iD&+$z#^l=Enj>!1v3Mz^JQX2Hk|KQJC>pD{!@V9a&oL^*v|Bv-_!ES+5@$|7 z#2^3Nf6m;C-(h-f1sBv&X^zPHT=>;rC8(4*^HV>@S6_LPxYMV8YL)!bwL(j1!9|2v z^!6T6`w%%*MpYYxVVScZd5YJ*^8)V54Nk>^cxj#WpZ^*D^}qWyKK1jzjN4e^OaGsL z#4r5S|B$yXU1z>hM@1n?v%~7yb&^p^GRl!_vlu6sI`;&%htG5OH$KY;f9#Vy|JQzn zuf6svul(wN!~2zE-U#%ompEZ^TpXaLXHaK1n1B2nm5p-@gDP+DZL|61Z;)KPOt5#C z1vlaYQJJZ79ZZS}m3Lu`D@f@1EwEI|+yh-g0_FbK3MG7u~E zThptvUyw85XQ$>jzTHUkp)A)h$q=LScg=*~MLGr|r3j>aZwJ=1|H}(!WQ}#n+ zn`VA~Rm2v>VFW;$rhcngY#EK#$4C%IB*~ztu<|S`Dg#|?IhaTqj>liQV=LXU5qliG zF-{f9M zre_+o?`$$VGl$I*(r$~|@(0)-bXb4lJWS6szkHI9{qmnDbAs0X7SYi0?ce`nzWML| z4QF}-reuZ8mSMI|{nRq*+ylr{C$P0C?(H73`>pTMymWzhcayo?@IWA$RS;1@I)7yt zr@$(}PCABh<$XMFVVr6+-lpdTz~DZD$|M`pZ+%taCDzIjhNZ2UrKvw&I63>= zL7*mZus{XmHb-kisTBLvSpmAR05I7ET90QHfq!AfVl_8Ldly7gC5x)U9i{Y)qpymj zU1JKO!#Gj5P`L{+KCFrjS%EVNgd|rIi7I?;V|Ji3v`?cJC-Ij*?I)#`oFH*3gKT~w@I`f(%)QJCDfHEb-> zQvp$Ec<6}@E;R=nNtC(93z|~C|Fch zcoZ~&?;?EEo}9o9{dl;@IyhDdJ0b4N3_Z$BWYSW4(4~P=tr?f%FE`efK3kt(|C2eT z_iHl&t*aeOo@0eUD))U4rl>HIhe}b4AkzXH2)?tuMQ3l1zw?!^&`s0#IKz7FMQ5@+ z70%zNlkHkjML6eGs*~W;!t^+#%5NneU%Ut(Pg5r82@`FSnOkSk|0nMJ=-KM&iQSXv_peDIVlg+i9P)No{h;bI18-g$_ zOw7kiZU=?az*XX2xH$g}Rj>SZd4BPaW@U8Glp;2J@x>p z9x>QEVAyC-t<}i-UH^e6DUGW)DL?!Zs7j4b|MkDds~6tlyZ_{$a|+4F|C9fmi`Oqx zx_pK9m%c$oNl!&AUWC1a1COqGhiK7RFtRwJoWR z0;3bEaB`Tv6Sv{RHj8L?Ay8pR=dg`&hS({DaFcdN8$GFZ!Z1V{K`HPMxG}xb6^n!@ ziWrDvXNM4I>(FV2ah3o<=#FV;gb%>A&Q4ml$=_Op`%cAYxK^Rt_USi5 z6lV8QL}P7%-K$qw_`qkl`StIj|M1InzVcmWD+-=E!)Pj|zC1&BsX={h8k6T7ymgK4 z);3|ePEfB9uFjEO8xV{K%43}h0*s?H-N04LbocitS%b+El#oP~1{g=Owa5CYv*b>4 z_tFKP`v9##QorPn((ZL}{T{M=$l=x|*S`EkrVsXT$}yM5G|oLicKrh9AAW=zm#;8$ zW`$4v$NwpIW|NpCFKhfKVUZ)gaj3o(_n7uJHh~Oa>ptM;g`L!Py}Iglz43K zCtZT@IgU<{CmF^XN~JPco-rH^{m-7JxF9Zqw8v^NL5OcT?bv`j7SS@soXdAvRs$i? z&JWIAfeEr{Mo9)B9a&)p_g+$b>hU=8N{mrJVzSKeO9eMcLLS?ym@Gux1eWOBQOM|6 z88fcbv@skU91x7tkgP#Vfl~_G9}+Co38t#-zWgS$QXuV+>1RGnHycr2ndiT|~=C{7CG!W>2^hRqgpLZQYLVPHWz`dQA2AN_IO zdiyOnJV3@}ZoT{_v$;jS_yX-0Ug2b`$*QoFgh0RVeT?4s6uVL&PM+byzy5X3KludT zx_E)tzxv; zj7#7AI<<`r7C-u7-gxseU;p)A<8+##wIB?9cAj;Xq&|&mOcQQz`jxxzVm1kka!L5X zr>TDU5%kcIT)K|Bc!8)tz#$lAiC66xU;J1#ABJIJmM%`lKp~7rk%(hS)MIOjILdk? z%YDw^al^IN+It<92h^!TGd3EH{H#Iig86;~Ks&xtKHi$uYjp;L0ovs63@!ZA2cE*~ z%S@gXbHL(Ya2{Sb)|jb46_%%?^k69jVdNv@#rTj_ve*>*+jyF2xa111}5d?e5d~;2C=R2jqKg#L65qkDo;>H0b@&+f?RfaQzXn zk~HsZ;lee)B?gi#Bawo|P3rFGpFO^vbERQ^mQK4%)@;$J)jVV_2xxaY42C2A z-2drsV)LAD{QbYnsaVte!si(t9Po%TR68x=Fd$o+BR=yWx}T8hA&V!MXq@~7zVfv{ z#N4||x7Xyx@BR*pdCn6;QHx3hQecEdAQ>d-QEId`IP|2W_RB6GuHu}>D1|}jXM9D~ zCxtbLe60xCDYeg5Ozy>o-_{XhOOQ$O`AXa3_~VrhDXjYzV+bB{mz zJO7lEr8;(QmUM2$v#}z9snn6}0kT{}&&|;O<}N2oA@x&hH0v=x@xT9%xLdFA+@p^Y zx9?IP

$ky>x{jX%l6J{Paoq7>cb2v4KDY}b`=VQ6=-KM@`yfQvYk^`|KE z#y^j7j?8JS@MdriVf2gaBaSx{PoFb+MB+-NeLA4^kW(vFOEaO3oviJQP3`2>$w zt@keg#4(SWy-!;v0!96?vmCzm1`DT7(!aNd4h7{0*S&eZ98+?V>5k?gD)|c~2#6Xr zMuQRI+9KV2M3xMRwsr}IUe02LUnnT&X(O2oh!vOEEFY>)Fe1X+Fw>eo7RGND%1QNGAhh0BOc=iFJ#gk;y4Z3%4v-R(Oll)hIm3}s) ze6Y`nP%zy+1@6uQVG1$uD^7g|7x#VSP@ z2jtxml8{n8zFuq0e?B_3{#&Q!8{d87##R(GPu;^oNRXMzRn@1me1Q(RZ))%Qgc8=fpKm4Eh>7W03&is|X z$>q1d&C*JT#L8d~^{p?TkufFsrxVLZe@aYw{ zf8#f4{N=ww{?X@fU;0BD#*yZJMrZ%O?7eriUDtiz`PqA)b8dO>-Pap{hf0tj!78yA zQ6*{?P06Atd0b+9ti<*>YfbFQj5Eo^E0dXI#^dgZWk-o+%du=p5sN6Xh*e_mBnW^6 zQ6KPt2jKN~+c{_NJ%8+d?!AwoWO;14Naw4?MUVpV+C9JfE8h|a2o-=3G#U+*l%_!cyprrWXLQyr@PpLyT_O zj2y18u(Cv9s296hr*~qEMv_upuCei*L)2DQFe^LDEL z%7xEr-~GtKTUmYNB( zM^7^Q(o?KV9$>gprCeR5KL8a*SYZjJKp8Mrl1g{5!esGhWcT;hF(w5oTo-tt9Gaew;$j0I%=aPjK=Gy_a8%Fd?$g&+2j=W@qT{D)H(oFLL;W zXW6#vDjt5}DXzWgMov8SG#6fQ0mVj&j;kyMlF&p%X@j(P2t6=Lb^kstzxitVZoHZK zfBkRaspp73{C;Mh_y#13?ptr6d1Mmad=sTyY*{26+uN9ox01G zVdh96Xfg9u$7x>}FM&xlDCMKZHG#_7df5_)Mk=6$B9?}#Ff7Mazbgy=au#tbw83|2 zQnei?GQWH&5yrSj#%D!_LFo1$S%84-kZX8isf&&j>zo(b;&Goj+2MJMB#Kt}2J zV@Dw99U5V1$1X;%x{|)#7m^GNvrtW#I(Ue~&pyiR!2=Y}oMy1zWV3?qKu{K;qY0!g zaVGFrcbQog`D?E6JJKL@QZCWqZrRecc3!YWc99mXy{i_6LMs6hZ-wD8!_wu$oawH>>@plb0l@L)mA8G_6bL8~p&bSJ??=I!o0~^B z;#l}J++wjvoF=3sKBmZenNH$IgvfD`w01s2iOZWaLejHV<z1G9a}Hp)PYx7d-Fxadv0J#1&p4*gSo@U=o_rC@gM&*v5_p_ z`w)%AMVgH!fmDXL!i!u$Z&r8JX@8Y=G=5VzxmB#53twlv4&&2C|$x;T=+SoVY~oAb`LX zvSyOfOr4{KL{RXu3Q0SC_Z*wr>;Mpk*p~m4^nPBJhH)!)+3|Z-pfG61+_#yJkz98I z4>I?KfOE8F&e7CmErz86u}Klyo@Xxhcf+59-Iqm_y}hSa1;-`$#8oq7^8 zylXpiXJ=3&eI$XTdu)i+GBjsashymqTy5?Foz4s=DFTR*s0*79ElYRF* z!0}gKK%6*8Wv$62LNOQ#ibX}}sV%LdqnyE^HpY9kxy!4_)EAZ(H!xe88{-5}nXJi$ z=!({XBe9my2si#k(X#6AeY~d}+*w%dda&F-G5yH$Dejq`M9v;#^1=hGUAZRaDOg_H ztk{kp>f8SM37)X~*oVb(n$zF$_x=t2`Y$h7)p!|Wgf41<#Sn>3(=;DeNt^QT zY>REn-BTOm+iM9y$jF(qyz;O9EtSuGj-c2_IxtN6Q=cR)l-M(Wn%95pcepA^=?Vfc z2_^{WnO~%G$34_7j7Y_pETi}CVg8xtxZ*<}VDiLKKK{S`E7tl-9D43WuKMYp;gw_i z*}h>jwWVe1NtK{?fVor8u>Gc+Svmh=_P(@-+kfNtxclGyGDFWi&Gw5fLyqiV?#+Yj z_~Ba#dxu$W2o_7j*vqfwm2W=9?u*Z3)~1Xj{kgrplaew(2}v`K*L9wmOeal~mZN5; zJxyC`;{KeaS`|d*+}e?w=WVH-J7(It_L+<&9tKbh5zUlHDDP%abU~kg3A?y6j%uAN zl(1gM?07Wzcq)X8c9VWL=L(c}>=eSqdWp8{1=dNAwARFN>|&k501+tCT9d%GFQQtf zuEX=Zpk^~hDM2A}9elQ~u?TdM(l|4ZGKPk7#opFpR!^Q~^qR{s#<0?;QJ-0)Z~G>~ zW|7+2Ng69v`YyX19fc&d27~8sXZqN2R(R17hk}>XP)BJeUDPR<%gK6 zEmFSoORR0bfQb*hpOt&>W1!NFx$GKVzW;vuHf>;xj7YV` z8LhS@LY;(6agNE_xt~WTF;;l7dwW~%zTOt87FxpOjM8q5AqZ8={x}MQbt-=+Epm>q zGBt$7f-jn$Q)ILc=~bYiP%N%9*E8O-SM-!9ZrRA{-q&f=>U8y0s3sOBXVJUslrG%D z{L~bcO~as5>{6A`f{6{=-+Kdl_v~lW`8x}ABwctJW7l6x*Hu?g92jL~cA2NYbO-w$dyvNA{fss0> z5~`Cc+d-JMNTs|Ux6=(ltmF0Bb)B*|A{NqdvZP35rTc|}p-p!m67yf5E!x+IOA%)# z4w7J~-Kz-d&x*zVt=b_P>n0`g%sL zoZzzFPf?2-6jVgiKg9fFFR*!Zgq77<)a)E1Ys>T#6O=<%&z>Zm3D`4xn(C`B^Nvq{ zn#nUujBMG&-ml)xB|cO_dPa1bF@gouf+pYw7UXabl4Q z5k`}cwjR(-6(9ILV&W+dBJ&|r3e(V7q0rKxfJUQ^@ecW&qSCfKb4E08XZwka|0D$3 zI{jqoBk7e=PSdD$TSJN@P24^$>!RGrJnOo2tLx5u!m>Z3nKX!0fDA*7=bB}otdtqM zJ>zaV7X{%`vJgU|)|#Y8r|D@L(wQZOcbvz{vW=_NAW>nrrc z;${-B)BQ;)u-e6fS&`5bA)zgzx(lz$O7OMuzO7%a)w^FFIB(GYhl8JIh9<)s6@_sl zjKRtkjhc0nLCp7Q!Fq1|CB#P10#TmpUH#(Y!(T(Gul=8wmd0k9s~=2GOx>QYnRmwx z)1{=3@HW<+U8QQh6K9#k$#r+<#F)jIV92RQN6<19S=Jc~~}%_VUa`|MuM7{Q6=8kgL7 z0~dY#!z>j_6uWxaa^VHc%*|t$RVu!pt`!|k2s1T zbeWJAi>%eqDq<-r!@dJt`iYNmxWAudaRIZmO8nv>IB|y6xdoQi8Z;7(>K@>dpZOF| z-}?~7sU^xIDUI1_iih^IsaSSzCc+h&BsGZPQM#_V7B0J-U~nT#y20TG9^~jZpCmYa zj2%KVQ3xm!B4t2`A|>@5k!=|kTJLL;SwV-PGbgmR)7+8Pb+u*r?KxLu?h0`VK|oJe z<)H2_eVs!2u6m>Tycivdzp!~LRXxCo*B)l(Img+W{Rs^dK)Npf;rj;X6fCjq{$4J? z=MTTgS5J3A0Ncx#ojJcg_W870`23YucJEa2>McvBPT$sCUcN@eNuYwrbrdGk8p_tY zI^NzT(w1RDSCqUjP7<^qbZHG(L7%py4?WD({r9sX47MP#K}gU)OwYsw+ur$3c3t}} z#{bzbu@Z)a}yETyDLFgC&QmtUekDiQT{Q??P$Kl>WD{QS?;Qwdmm=n?dDdmUd%NQ!}P z^YO_dp7_{`LGxpf$aped@S9!0vI|-i6-Z)>_NIPO^lG4=W$_CNR__UIvY*_8gGqDV+&m8XDcj7go|>+MW1TI_w( za#*$Et^7Fa0#dAPSxs5(UQebN9q&JH$Ng0i-uc3jqfcGg-&Z?%-V`g{r`a1dxO1Qi zU0U$+@s9Z!Nc>;+2cTg6-UG`1*diU*TY45A7zWxT6 zq=NX!0UrIm-{gjW{x4acn&H|{|1`Zaq;kzoJoM#1qgMumJ-sAHrih9a!tM(Dzw~7` z>QyQ`H}k+#&;&; z3B!ogq%`B$@u)lM*n;t0D0puJ0jRgUavfu^vSGSi zq-jE$fbzS)mb+{AEGx&xP8zY>R9lPcst{aw5xs-sochyOIQH0+T=x?{$+J^usXhKI z)+D4TnlYrCN4Vw}|0#!Mlb3$&^K5DwO4~Q0H*aP3?g!Ws7M$|II46SQMHdiXe*>#M zT@;g;*Y5iUi_bp8)>@VEFrpWQ)Y9)IJ%QKzjY%*1#s^Szq-(bLXK9+O3u+C60Hag1 zZID`t)CIy&AwzMtdtl%}8AW%To}T;G<-4z0I{Mm+teu?Z%d;~){8EY#h_%64%ZRfo zXR5>D;H$uW{!>`{0Vr6@SNLBPfo}m1XRpDNta1`8;tyVTFUfCAo?`fx557E=%9l59 zocQ+_?-;mYY4XU&DE2z$-&zl+N41$nHz%|H$o>t~g2I&BG+!C8`fS%upzp zd;LvThWgq53%|(y4}YDL58cH(HcX(Eq8cUiUvmv7mseSS`DJ#en(nh}Ts3wPFMQ=s zc;7$&d8T^CN!Ds~z5m^;yz)GQ+jgDZZN*QbWRs%2M8+Eyg9?$t)Nq-epLEs3cN;;7|E`-;`#tWpCewC2= zk+t2W777tbtXq3HTj^#lP1t_j)yzHi0F(DU&4$b0$@~AGf5)+}e}l!BUZ9{ALznDi ze?HB-Bs)ux389C{mFUX|}_oKvuvZ?VLn_MQLZ zv$ZO>l`HVE+r-YqHh$&wbC2vVEcY$??EKO{YBp*EjYfk|NrY%$ zLaa|$4pfJL6G0#Yv`JAx!3lFy<7Fxmp#=e8WRoBg^b&ENRn*QdvN-)LQ_noZiJ?)7 zTenhJT;QT>uji`&`Ik9-@&s$gk5fN>oI5`CDHh@tE-PAks}01`X|Dd!PjP1EEJKN* zt5~22ocQX!T=cU)!6BW=dHW# zTihD8@IrNek!*R-`|eL#i}IsoO=#+YAu*cRY620qE_H1-x~Enc+cG|EOCdVED}8aa zSm%D4jguWYgqbIz@n?c8^G+$%9*a%e`Ujx2VTk2sozt(qj;xH1q3qftTRy4Tba#B1>K zv()##z_$7dt}zOV6c~7ZQ1vk&vMnz{5VGv z&5p~jW`1s(un_Xq-}qfV`BVQrV(Ug8`-?B|$$#>bJp4cWk8CUTGWMbOv3T+fjc+|o zZ@r077Ac)%LR$YdOVQc~;V*QR!2#A5mz)EplIXe)NZV{Lybvcs27 zh=k{MSbx>~=kX5nt($>Oh!e52pTB1#Y9-}@E;03y^R|BW$nx@MH|*HDdqnG7Yjbly z(p;-uMKdKpVgu8%+7;mCAD->q;sv?IaTtW&F|kAJiSeF4uFm#~fPNXGqXNmw5`|}; zre8_)>#y;}|NLLr`K}w;{42jgG&9fq^Uo2#`VzY)Pg1B>Y5w^am^^<6vS)w`f9!U| z&{j@A`#75}tMTBMzrez?&vW7BSF`JVH}Hke{2`Ua8afe7TER7+{so>}oug72p}3k5 zoIHXY?MEIxg{-d;CMluKQjpyP?sSBPnb{da(IyzSh12d~*BHlYFN7pmf?|P0I^TN9 z`pEEgJgaOJ^#W~WpdbS@so#ZVU7RGcZl@%?6^Za2g%r~Hwd#qT{t0s(=7Xk~)Tc+PW0V)={DnyBK%@)TU=BomgPUdv1ace3-^PkJ1$> ziU9L9#PkwFAG;0puJ>^EjypKH{34sLzm~$)H*@gd8`PhEiVK6X=bM4iDQUy)pjw@$ zQV8oTwcD1`;%zUg85y{9uh)`g8BJoGKCx$f;FYku>z>e&c2IZum5*`Y6#+hUHgBWp17An#qiwhA8_{c zNw#0Qd;j=A|Nc|`{lC`Ts9xPzYupx}o%!LkQM*8Dmv&>6%SV%*E#2a!xJ>{`IeQjA zJ)ZOFNFdUd)cW0z5R8PD&}y2~vrJFk%bst1mD<=giWl!@6zdG!Qq2aX{w+{H&f^bwXfp2yHl?_qnUysu1^F#PAP)lyGT)!ahnP5vZm>Cpm!84t?ci;kLR-d#o5{K_F4O@KabzLU;k}?obRe&{WS(nNJC8$r$m8kn*;yC zHCkiR)O1yPpY7SW?O8E4_HWNFFTTs3ow>caR{LPA(+wpVq7s9Zeu*ipb66CTRJ(4f zU92oBOQH1%GN~saDvjG6xql+Uu&q#Ji?FQConh{gNoF7W29pD06n0(6(C$kazxHZ& zu2#|e_OkfOD-@;=p^}8@&;AMJkA9ft!9n)j|1dwc^FmhVX4rbs1-yLZC}DRuX%zCV zkN*e_(d593FY^A6e~RhTv%LA@bJ)|TxJD=pF7Q;U}`l=#Ul09H3B0DynZoMK`WLiqb+8RpDGAY){!yeB=)J&&Pt~2LrpCfBLt~% zBdZb4rbc7YCRral?ngDps!v-xso2vqGFMTZnwA%nPy*$NuxaWpq19T=i>STHqEu+> zC=4!I&GVa#Xo<{2Szuw$E1Y`zX|{gi6D(f5o95&ZSgukU9iacRcQA9}B#ppO8XTmt z*5L5h?_>M&GJ`>ZLYlU+5)B3^+udyHB}3LYBCZc5qBR}T_Gwg7Icb)ONzw*F6d{tw z1~*MSU}jq(HMZmY`oiKW^(4lm1|i*FO5}ah_oBo4p28RdX-cG2wba{pzY2o; zc9GecCprDXvz+R!(6eh78{Y9w#%{ch@zomf-d9%C=_VKjdmV^7o%GnucLt&Z6LFM@uD=Hrf%021ZM_%H$A9& zhVGb8mL4CtXy=j{*i8JwQ!e>O>%7W*KNPIDo`apwbTCsWmjA4H#l)YDjt_5}y!XII zmRHYyB3)X$u3&V8(I|hpvHskiNnGei5YEPt)-DAn*v&?kRvL%_Wd#)l6(QN8Esfa) zmQFp!^b=3Be`J`hOD<;1<(IMjy*IMy^jYe!>}P)O0j3{)fQzVc?9abK{I1iyzUOt` z^JAaleb?VeynQF#*Iv(pN?1KJ&E=6`+;b{5wq?qe*@-Bn99c7jFp6AivX}d0l!UZe zck&b@jktl4fp?B{d%LE;tYwxZMzli}z>;X!t+=tr4{_GXi!!~T@sWkrTKC4_!$*u2 z=M=5XK_DCZr1uHSoK`bi6e$I18hhfXcXbfXswTB5DBBX#3(=NhXFp$?ExoNfv=}K| zLUw(XwfnwGadfRtrYp_PsJqiw|sy( zB{=lzi(EGR9`wRIy)q;af<(IPLDv`xq!Kh6jaGpbxDm?el+?(UGlrCkKno-aVKpKE zj6fJiV$2x#fV0U>QevZ9{~v%xxD+6S6Iugd6uO{^)DS31(^E~IhR^*zEd+_*xwZLZ z{#z*9LR}#o^WAFQDwh87CI}TqL!%M5w5Ba#wDDI=1PIeg-AR4NY_;`bb9@+u`?D3$ zn@Yl0_c8POo6LXfVK&_Sel}lvDZPWe-24B2mW^*7VOL4fEt<}M-YSd)RR~Fvlq5~O zuT#6TjN{mmbnyvMwuz1mf$Ul9>gj*HZ)ot&x=J71Ix#*)d4!Xvj-Zbp0;lb#ZpAZYW6T1J{eIh~+Mofo#U^h-&gKBj)>H(9I)3~kxOiKRIzD{~ZuA+Vu)(FrHnaZG1R z6a}P73c}Gkblh~LOzAx33&kRFGx2*T$98ufS*#U}bv@k^)R>oO_0p=PdNIa8zeM({UiMxKwA~VF|ytigmKipUb5_8-(wmM8|$C z^*^gHifE?I){$?z;{1}NCytSU)3efX zfepi;WsB3gV)`>N=3m7r@woPmIdGm_gInU_3CYSSbyDxV8wB7?usIJ@(HtW&giNRTS<#mX53#u7|x zmqg1xM|cMX&u#@eyyMz`q$UVhs0{K|G+?bl`7 zx;gcs6@fM&ELvDfL4-gu6IThskjPjqk=bBrJksA&qhmk_61AjD$bjx3A~p@jx)Ux)LfXtUPC7dqKiXIz3PYN$48ZpHB~Wh8 zHQu=(TSmviu&QGg(wH+rnc9Yp^jvx|<6AaSQIcYEyYRK{fx)}x8;dV&8{K3p!vpL)ILQTL!@PO)I9oSP&=p8d zFU+!Wq@O1i5@u&l5$J$FK75p-)U3q`2Ulx^QaU-5wRv0gH(0R#&X?{h&1Nf}`VQ|Y z4RGN2m#O(>?LXeVn=`dlN@4Ij% z-daC6`SDtP?J8-sk_b#DPW5N@Z13e)HW+KEH<}#>HXk67rX*ORC?suagz@8*e;B%D zfu5+qHX~V^I?dV1NzRlD932@(jg65OdRctqb+#^?C5b}1gp0U0I`t_tnRd>#9?dv* zX+(ib_SN;+(L1DUby!gp(nx#+6oRHny=RvoumaW4M1=xcYMM6n7eaeZsH`gxs?~v} zLgVhLvSr09d@uqXddO_d%*Jr*FO$kgqB()LGjPoIhn)%HnLBOk=;9an)>sJJvGti_ zt4=joOQBex(X6|ljqujgc*hDsd(8A-XQz2#mhJ-xvvJ+Fb$REiPzAOH5FU1CgLdHz9+gx_QA ztaLNeOt^e#lwbVdPWG-W5uJ(oK+iC?uaCY$L~&r8#);F+isVX;AG@uwFn_CQBo|>M zLK-5WNR7oxjkF4bXYT6wM=e3z{-t|RvTnNxri?*NsMOZqAfI5Y78GeO}V>^hE9o- z1cf7m5(vUVNUc`)G9c+(9n85u-%jtW7)|2kDP3U^EdeBW!0=C9A92$>+n{V7bTNo zFHc>##L{p;`sErAzA;T|oYz;P^Fs6kJre#+;ljQOi;3o)<0IU5`8#-g?|yE+;5@D< zhEOP#!s*Eymlo@{TWdd5n>#)sO%W}vzY=+8OwoQ>$dD+sV06p+MTQ2F}jdQHYR=W}|@-hSL{p!ZtL6 zlcy=F5ETT}n~j#pR!d7cERxn6Z9jg*I=6=GXRSNNmJ~zNv)}_Q&_FC44M1jISFI!) zf2H+fcBck#-JAwQQRKo}eX>hbED?KuDAkUeZT)3!$AKXGQ$iOfM(P*vQlPbIbyTuL zxrMk^zWT2DKXG9XPf2p9X6>GG_x-p?E_-j*!`LwB*%-YEe@pjNwvN1iBEdcKl~ z@WHA6`l*#GCpk40^O?JDW#7Ew`ZdF?w=1ebAgaCCWkXk{6KEyX<^|;Ym)7w23^i++ zE0zg_;K=wEn&12u2dnYi$Nt6t^ril(GhZqV_iaw6r$4+fJ#%|fuiYRLQ#97;F_chF zaI74MNOoAhWD#7MX-IXr3xKiS3dS$#g$PtYnphfX6P>!RB@9A@ULUJvd?6Is*W~wm!pD3`>HW#A z=nz-8ODc z+U(rN)5g*}gG3`!MNOr26$_X+A&C>W2l4x=mQY#Pb%{5bia+ZjvWMOH{fAOc#GNE5 zR%>TBtTkc5vE1FrC0fz%SnI+F{NrS-@sVII9xQVL@*f=Qoh~!dtc#%6=a_jI=hxiI zQ*0HKw>+`y4OZGT1LGA6+FH*^Xn*}JuX1CZh`A#b=B?bZEHTGgoK_Um9ywdC9l}ej zGVYuvO%jTwvSzUF1=}-l_om+Adl$OmeU+d{cUXbe#|{uyA`KL1+ZD;YGUWy9AJnYu z#n@O&R4nYXedGIr!Tw)gS)RKlX~rM7E7c#ii!0~Z#DM7#{UY4eN&2GF@#@d6WSwSu z!pm%owG;{wI?<#yb*ayS*7Ds*FTfQ7p|df^w75sYYgD9?NSSqenL@X{^N~`ZRM^oG z>ekri0uVYZz?GyB1dtl)I&Kei{yLcX)W5ZWC5d*{$9^AYI<9j7Y37J3vp^Cb0;)C2 z$Iq`zezrdFUYt`cTiiGy1cCRo4~l(z`Ud;&85r)rr>|0Z`OT&_1uc=p?t88B<#=AO zzRwqZ))lYB5I#Bj-mOm-MCDh_^QUf}ojdV~WMTP(x*m^99T16tB+w*2T{Q|qjE`3D zTpDJ*L?H-Cw8dCWR4CG<;f2Flexb9Kh?}twDsXzp%$yJFtcInOB&l;+Fg}t?22L=& zZhz!=aG9%Tt2p5TSOe{fpq3WA3#L@gUdCkh1m9-)X|lrU1?9>M%IR=OZH={_&Jcx> zzlwU^RvIIfLV7)8*0I_&b>@u1APEpgqHT;8h9Hy>72fO`9=g|-D|Zi9MxWg<*qbb@ z%(*hGwNH-DU(0#H`oXJSSYrrF;abR5xck^t4(VYR%bghd7tB}1Cc#PN@` zOJK>;qC4d=QsCMA?Lbt6MHnb*K_C=Ot4Xvwx>@U!Ti*J8Xw7bIfwS?~({+i~o!3F( zI!gRVoDnyTPLW=yp6%qKVv%~i+3|hz9jXL$jFE~$Av#g)FF#Nk+j!SNSLum`V!0YO z5~K(mg~H@jDlb?$d}HG-au$tnfG;V9mFI{7jG|GI~ zGZs*iW|}@X(u6^PkdicxTkD=EjGXUzk`M-=8#_(g(%5>wmX?CLPFnu!TI=>B`WE9p zr4(Txsn+Vg$T$*bv)RN5Xjn~PEr~T~DG)yUMkt9jX)7bIeJNZ&qR9@@Y$uJN`!|PRg`B zigV-zE62C%x-?cBtO|~ldn&&>bn&*|)n}%zm_9T2@y6LRx7sAW)R>r}b!o!xonN&^ z9&Mawy)=H8W!xC!yu2hvf>gp0F|FHGp$$?fj5eeuaT$SDVMW_?uSFsd0#bv~ejK$H zVY0=#bMVy0I1#PyzO>P3qlp8z&Oz*9u2eXMK79m;j!-Ikl7=fmK}_vdI%}q zNb3o)Ns_b_0*SR)B_RwEriN7p85WnruD)+}bp>D1n>RgJ80wn|7v@oEK&p)^ROCe} zFIYMLe-$rxg%flQ4!trTmS5>DmH&NEDPO-jxA2MT%=8Ztr(1|!>{YQ)a70P6EI->~ zdb^MVpPY#tq6{K%N52q_!o!NEs|M>jlrYU5a6 zb9Ui9!Sc%O)%p4N$8jVV$=q0=QdYUg6% z9C^X|yWDqqngr@(-xU*ow4s#z(dp;w7lrZSEvqvNx5>uJRbfL5V}o|WeMjdOT4&p0 z0*O-Y5^1!?N++E$DeGA0!iOj5B=r}%_4$NaxIMMfhF%#lr!{pnaZ)F-7VTs2H3l>U z!V)5gJG`l~*6G{HO|{kpQi8Fh7(`d$&GJas*N4x$;%+r_{P{)@#EFd@X;r7~?8O{8 z@`CmEsCcCslWGdx-LDUHm0w>V{EY#|t}5B|<7ZEvzExLiyR31eTt+}mU5GG6oXdcb zmOx74)OBUCc1v*Q<<+)t=_FZ(D#T*l{!DtJt2P8%s&vYvbFxS#>%<8a%Qg2)v@bJN zIh6EghZb-lx6>N^d0l-Q!t$+?H?l1KWM~|)qyBeW=kBysCoePGX6nAuvi{X_?O*X( zQ0&(K&z^4h?n!=+X6UbZ(s#Ff+*wfaqdq=zX8m-F-DS656@7K~ymLcj=`52CF9HG# z0(3+o)`mtep6fP=>p6G)6vneEWxH3OTT#WmZK>&(OVSB9kLZNXUMKzOs3sS)N3al2 zV}ORte($INu^`17p(3%HIReLa)aQ!^E;Lwsy0yJ|-lMsTrOj%KcWTGI)BbK)og%i_ z*Y4fZ6WrInJAd4i*%h!#jPIMB!L8j78{HO~l)QQ{@B8Vi&(urSev5nLc7N8E6I*W- zu5WSZWKd*&<)%Ev;o98v%CyMGPYmKNCF`y<&3GyH=1~0IO&R*LTNh?se$<~Dbjas| zPE<{;w}$AlnF5PDPiGlwO_6^qb+;rveB+OTt#R``r|d3TBwe{Dv~N#B?ft%~0~^q7a=1FuaqwXKd->X@Qp*mfgp2}j1$h#gzSvejaBzn9w^S{asv z@7?{oF=biZrkIzlCLd$g-x0EKkK0h!kTt#Be8ViK_@@>3k6gRIp6AP-e_3nmZr-}N zvwyALnc6KoHyH2c{06K;z&uZM*_eRQY^IHWL@J6n5`l=+iOpC(C2%1yMox+rd~r(kPRLPCH^ zR_Vf0t*JpuJkEjLvlp#gtK)Z;{cvINvIw4co?fl%#n^U#U#Bbms`Wyo>~gF3ON#!? zb$Ft`N5-<~kF#SQ!)#@DU>rR?F;N*9R7GHi0;Qgu;0ErW1C_DBCHKH$;S^AMkSY7r vG_{@^-N8UXphHm|46NN~rR>MHAOG1Hes?s=_x8_U#sCDKu6{1-oD!MWN@S00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z002W}Nklpb~UwZG} zbN2jk&b{~C@Tz4m7wE_6*Xwot!h1KIdv^Nn@7`Nfl`nsN`RmJHU;J10rEn43|MjDH z6^}jks%xKksR67M(Me|68*^*875eQAB%)-P4?AmO}5T=-tVg!6?% z3y8Y#y-7a}>MfqI2C5dX2Cp`(yQ1pj-^5mD7Hj9^w!kvS7$=#TXM6Xa+VzUBdi$=g zdFYpx9(d8&Kk5A{e^QpFJay7O_m-dg$t%C}zQ3?_{K>s;YZK-U=M^uYK5Sp_(}&P( zTuGj`#BDB8$xZuj&D|!SllYcOV4@f;_+>;sC_&lJE{YZd=4K73k?G{+F| zctjMeFj`w<*S+_g-TS6D{LKCz{ox<`|CP{O{=a|Xe?Rkczw!@fPd$l{V{P6nEMZ|C zCJ2wF`%~%%Dsk7<0z%JulP5ST9rj_3BTJKd_4?I1^A|>C|^3u8D zMlu=R=}PZvC6S6|Ei|qfwQ?Dj9PNA?SAN00$aO^8OZzE!AM~C_@adVNVU+>pBBH1V zQIDHD)D?K^ncjK}xBlh7^ke&f`0xCqKh;80KKiMn&;00*z4zk#{_uqvj(nWqB}0wD z#q01Iw2;@ZLA8Fu+H5J+)+0)tDUr6F=x(U`ezo(Eg~e7v8Qf)>9(QO9_11Pke6`ux z(z)ukInssJrYFgjMU`Q37g@C72d-N?*0Hk`T?-=}MN<8oE_?NCJ5Ofe8VS){h7Eyw zkDqN)IA!nGyz%M#|Jjc`l)dETPyVSBnyn9h@FgdI=!ZYP@z@hKpR8b2@B&^vW#Z=4 z8&{;iO|-K;H5HchZ+aa~*xmBY2GvD6R~pyrd7PT-p0lM{doJV92c)%ybdh_et&b$J z&-1u-GAzzLfnI3lWT7LeLuXX*Ed_R+W7UsaD_IGj7lVmr+|LVibDh=u?&bwQ@#Ak; z{+4fi_)m?{Y<}b;FZ{v}{?I2kKlSO+WbZyuk9T1KL!2uMwY)6yNwjTAB-ueS=w|f1 zvE;!tdQ=BoChaL`63iTcMS(zE9uyU-g4>S6L>y# zqzk>Zw$f9s`&h#x>D+eZx<{V`i(pDmv3{BHJul$CfBDZJ-1WxS|G|zIn)&fBj86XT zAO75hcfISb>HY&CidS$g>mo7G@5U{1y(_ODb}cy4{(JbFpdGcQL)x?Ta0WDM@)Wgp zrMeqS2fdrV!IZXA?F0$!+t2}-*Fhby$g0UAw@o^MSM>~Jf#4=<;1>ywNQFu^LRsCP zYD-CUec8@Z>=jh4#uZ++W8 zIrpCT+?DOwgIA#_mC`BR2f^{FLl7UTh$Ne`+Q!ZIl4@nqdS__*pH`YF`Mab7)3G4e zb?T)4tV$oZBfUaRubOr=o*;jc_?1H&UbQ(E1K>k_z4|Ee;StJZ~1S^Fim|Ipl5b-u>3XwUt6Ue}05(CaHyhneJLS zzW3`k-~NuT+p$7(IdFL=2mM^ofV&AOHC6J5OjHd+b%~pZ~&cGs@ffgT!Z+1RxZwC z#+LcBr@8v@`~TvN+S@mbd$xJ(u~+H(HSB1N_kK`6^+I6Lg}Hz($fq5ASf#xMw9BLF zg4i8YN>k=Y<+fA^T^bfw=$Ae}@S1*Flb`CaqE-~rze;K1v6j-&hPg153~akO5xLS~ zB(I?+X$Kvvu3p-?rNs4ZjADnHl-`F9WW`hlv$I<52aRW~ETuN!O^XWDf^H-LKI#!8 z_^oYb$B(^i#|h1~&ma3LEef*bB?_OoU%EJ}-2S~JL1jDH)pvv!qQlqaku6MtXgA?G zL@i0P-V3tzI+RoyZ~#Sz1yEYswn+hXVd4dePU#Q~q!XTXa=U>|p=s`_{hU;_o#tvO zDrup8i+Fe1#pV+Dz7i7Y_-wtHu8P-`#Nx%ziiOfKd-lvdJ4$FaKL6P6`I+-~;~gf; zkka)YWH(hJ3ph{p+pa@N>HVzjPwUVw8Qh>>OnPt#IO;RT`qUT}3b^QSj;1ml+7zBTU`=P|Dbl|Hfozb*(1(ss3Jdz;+HFtPz~BXeRR6#2PTd z_L)<6Z5@AVG`;KA`OdI3s<^T^>T$K3Bps4vn^4hwt{pgP3z!dzP!|!N+K;9aRBNhg zoBV0dX4JZ{O47AlilEwB$xqQb-%*F=9hEQA7Ftb`h>}XQ$^v$=wALl%WT__C+)5I5 zs4|NLMF-GN zTfcE_4{&y82u&K`MGbBSG)H4?bTHf9$c+vVD63sB4Yh^EZ2O^2(AMnI61bKFB#HMf z1EE*Tz3Qe&JJjbYB9Y|SnhL>URV{r_FY*6%fqN*6cj18h({piY>4zjX8F0nAW>RF( zPm`2+AVdCfQ-35Ke=|)CON%mP>fbw~SOKwFv4dh7jX40REkj?MRDV+jL*bV1E{icR z8Bk;~?3Rugchq|;c-H=7T`b%!-*Uh;Lwnk}A3R0aI&tlEQ1eT|I*}SwK!#$%FD7== zUa+Hlk(tGzgUdjCsVo3`I?E6rn4w3X?YWx0?}vC4(s&ah2D0&d=Lk(zxtO>O!lEqN zqIK2QDoN#|C*;O-VVl5I8~<3^0xApKkj31tH2J0rcaAK=w6zm`x5C*j=~U02GlSm{L2zy!ObtExoDj+9;8> zLJXdO!H9%JxClE&Xe5GwY2Lsrv=Z9$_a%vGv=f4=4upy-Jt33@{(39rA&X%ic|Kyt zfNLl13Xnk#6?#3pnZ!|p>U=O{Ul9GYtyKqbuM@mnPqS;IxJ0`KW`VGDg=VOFKpAAU z*1})An{60WMF!E<7XQ?Mkr)h^rY!wSUudkjkOVW~HI!)SsN@t*)}hDWEd&#}URhRO zIC`2-+L%E%Z_tTf`))!banf@4BoX=nPp0dlNJqe9E~d4KhCq&9LZ@#!rH467dr{ID zMHXuX?EoHwQj{D=2g(huTl+om9u?DALeW-jk+$6JuIC_i;o^<4GdIlA^oc~OeYZvj zd|vI8r`ILO(m|0H2?(^X|3)~pM&O$3ihnb-HmdeqpborRn~YX1cD%-}osjOG^d9n{ z${&{bp1XxEj$%YLYG>^$4(+>(j=LJs_x5Mk zrm3_u{q$VM%EgocG_A9Bx(HWCWi&x^d-FH@QF|amw?{yIC{ZM4+>h^RxwibZZ9zrsEtJuX*+X?QISOFOGn$&0U5Lsy7^174Qr9NAaG2R5$gr0e?p-qoAj78s~2KyFL z*eDI@XI#Y8XidYfYFN;fJ7yT5>33jjk#-)zR~te5HqR&dr8ZgxcnH1o&Fp7!#JywuHim%@vDAyt*WSPc*O*#F%#7OuS5o zpz2$6ltw$Y@huY*ai-S39+PE><%{XJieBTRR(Gyu5^Gh-8k4JPZCwuTV?gX%>;Q*) zUkig|S>x&?*A@Dd#dyxSsIb~mBVrJ1>kVwQiP1!)u49Uvm8KRbK0_O2%czEX3Qv`w z1`?0L7*tG~7+aTHG&Mr%Jl<=4&poT%&A!Hh#7bza^Wb-q&~z(QRQrtGC;7ZZ=hY1*)MaNi}X1gNddmn@-6_ITEcOCdh}yqs5G3tBA%=QSa-F zwZ{aZNAS|Ll?qDD)X0~JU`mHr$R`uB(I{-p^$m2p2mrilK!j8gV{l&4JR=`Zu-3+& z35lcXJ@c(CirE|uE%R{k?^$$}e4aBJjWO0DIEt(5xT3@)o79Ss8KLkVZ*xY=%jB79 zX>S9FE17LvrJNTr4)qvgu+a)hR7~o^@g-UXA2njAlW`!1Y|~kIXxcOvOaXrFCxNO;Uhg$<9i4|#M>{M}V+KO>wve={lhZf> z6Exjy9a&vv@9Q39vTFpJ1x7M3f;AQ+7KvOVF$O!zq6P3c=kV)Sx%&8VHqV?wuU=wl zWtEZ55by9FyeQdSce4DzJy@GzOM@0ZbXj#FfY8!4U2`fp6DZ?(!bWmz7bP|~xMRoJ zdg>%*G-B5S53q9oT>(aR7M+(+7MM}a9KmdDbLo*!QCzwbEK~$7tT$}AlF5ti;o!aZ zBE}#NN_7}F2Up^aK`*a!^^>22tC#U2tlobQ(>rb<%W_O*m2rp`l%otb=WKlD7{!H4 zSTSLp#p0dAPex2$dLPr9kC4e2@g|6AIY-1&N{M~$D&A(;-Mbm*ONhxSRT1%c<0&T= zna{cQu}?5N_9VH@B6Mshfq7Z5^x}Kj_p%pZM`KiNcuun!zAPw;8P3m<5@yHGvi^mq z5Mw*lqr>S0!652mW5L*mzD2_#E!v8ph*}3W5HM?vyj;k|ER}%hi+}N@9Y^iKK)rPy!T<|ANwft%U4() zkCAyvDTV`Yd?WjQ@NXb07_rgp``|wL;Qpi~19jkB^~{YOAPW(!fpb6p6I?lY0yCa+ z@NfJzR^RlsG52DiEYQ+HW>B?AIm7+bzvSf4|1v8YbhikocgzLu{A+)egKv6MICtq$ zUxF*}&LNXA+aLH4k3IT-P?Q_kwL{$UxBez;uls7m`4B`01O=}SZw)rH9Q#K<&ZS>{ z2V)G31hEQON!yc&}lVg#QM7t?mBq2+cATqS3E z*F8+W@|B2ph|!oVO^_Tj$Tg^|{PNrHVCAbGWbIAgz_ky5fTw=uEnGhKIIGhscqPC6 zPVz&yrrt`k=q(k@Opr;=p+En^3c!p$%%D@6KrFJ^X9TPn~0FbqPN!0L%Vw{xvzC-f_E+` z6Km@@bOcb&IQ`cDz@<-on(=so)^OqV;p3WFu0uJposg$7#$hbj5NI0_jQWOJZ=%4& z-o7=|UUkAY0!4`#kC`031!KW)ZNOwL2ZNvD*FJ|9EujSk?{t}`FBN>JBn0*Ifd6{xvU}m#$jiJ+i zIL3IywPPo7F=jFc4kF_Tt|;)c?Xc9*N{R{bN4c@dzSn;pCm(n##qWHW5la{>g@@5? zw__&baGvdLCgrI9EsDs_p2sgcVFn?|HiNt>Me_*w8;!tyesTaJ(ml%ouj z=TT&ujSU+oMV6Qf2Ckde)tHOK-myuU_3@L*QhTe z4cEo{K`M@q2wr*R8uLpRDS@SZd&t+;z?dNHCJ3+fJ_w|VuySTO{Jr1B>36;h_uO-2 z`3P6c$qpVSUs(=4xosi;QrdsmcE7!QEOV<+qCMC{dc7#~u{y0OXA4I-c2AfXW_Ds@c_J+Voc(CT9d zq*#d?FcVZf+5WvuZ@(>GXpCiIoKfd;yvIGaj$XKoUR%ew5@WOQ@M8|7=9eL;bBM{= z^V-+2bjMNbuH7*hbwT^N;0A?0P$7nJTU+S*CVFihUEjoSZlPOS_{|N9&28M~HpRv! z+n;;{zcnWxkJ)wi-Iz(Nu$Rf9 zLrF3?&Ax^$GJEn#WOI&QIM3#19u3ylT71Zd)OnIBDZ6s#U5xhZ!7i_G_|N@W#y1}d zZfeTJkbpee>6Fb!ALaC0ei50M$S6lkhgFGruXrn@Exn=_6TOxw=gFI8XK~N!FJGnk zq}>QGB59%nvsX-$JQyE6#OT&r0w`d*j6)A5V}AKECw}HF6rXy8m3@1$tE()%;w#zx zwQs^M<&B+-u8R8b{p9FP`1|h1j{QLzT{fU1@cIi1L#zNt6(F#cp z>IBI%^0B4-t5OTIi}a{KLlhP5$`A8sUieg^fPwb#FvT@O9T{9W(IjF(ut{{_f+ z47j*cs!i!JqcQ8Bdz{&Y3ry5AT3TUz^e8gUF+~x!kR)-?OslP6(oMpl;0KKgOocf1+1e-By~AxBcRNsFT}Mh6dL_v~iv z!6O`a<3sqeK%H+?rU}TIjK}!ru5#|@f0>Psf0SK&4^eE-BFiAu{a0RzHhEQA-Lys9 zvgy&I*xf6rcl|od*avNX=?Z6l zrcMMiwn&AF!%Hpf?y}**b9|p z8yl?TtBjYYl~nhaY428{PzQXc zympA? zDkiTFygUP4J`Z^`sEZ_1HmR|E3 z#LZ(*;;`%qdxy_kh{5dEJRF!OPFLr4q zI7sbU?fuc6h+fAt%_8MpgLgkpyo$>n^L;==g=&F4Ae7rz*@veK}F+w_d2b&S?* za4kJ%X@#}dzK-dgw};K{VnUNhx{Lz1efkWutJi{6HWrnP%};)c;=~u2zU)OIc^Su$ zcoDoHTO?f-&{LRHgGLn-}29 zU@@B^5Y z)d15+7D3HYui)l$=W$!xn0y4zBjaV(AAg+9V_#tUl@GM5HRBT(F$G-VSytUoFQwvr>G4a64Qv>jBrDWC}o7UJ-J zOTM&7%_pQgT*+wfenvOl3}qR$PAZCmI#0Gd<&N+Ev)uHOmy_+=O*XcSZ@P);y?3Kl zP;4^8B`{zOiobZ4_22&>E8p;~@c{)$A}n^&Od@t_5R(U3S_F)Xo6?{$XS4a}as25s zWY$uaj_i)xF*XXg_qDcH6QlktXRz`xx=#6lwSefACB6!VO<-J$2;0YwQCz)7?mgrE zyBQrh6lKJ>dXx3L%h06Kjo`dz`JTJ+-s8)%>0pyoRI2wBXU`(rGwgJNcOEmDQeHaG z)+axUe)BiNC=b_W4OYWg6s>*qILleWGs9%ae9rl|{u);wewba8HM}d@gRbaKY-{&W ztJ+Rfa5UN))6*J4wSz28kZ?7ocPA$8fmS~sZL+!ElUu{`?YENObQH>>&o46sEj%7` z;B{XOulwqD9nAKuH|$njpt=|>+4|t`vVH7X_I&3m>Rj-DD{vv5{gO1NQ-C~gJe|Z! zY#%#;o6Q(amyt=%^zOUkL-w^zHL)f}tVK4jA>$>;vzBXCR{$49t7D6LAM!ieBpR8` z0Z+bXH`%V0h5=Dk=~W3%nxVeFqTXkRaqN;|(X1+XSxwTEXxfx$u&880Y0B|LCl#@@!Y`p*XIQ1X?BiU^)K(Z{3Ren<|*`i0x-jv;EAoK?hh9=rTCWWWwfWKFikQj|Xs~s+UTebyxRfZLpY= z3I57+oPFEd*nI2>CeuCmvLtsNvsu8^ZT!_4Zexa&o=i>jw3-1<29kQGhSlup_nY5Y z-DrHMew9ueBqIYHVQCbI#EL$XkI47!4}?jcf8Kr4Sva_NWze`{4JIF9@(g$R3YQ*! zHz$AmpRs-BB8Ts}KL`N9?+ m8G%Z3eLUneO!I`cUf9m!MZZAjf*ePhT;j=F;BU3X$8|2w8Hyq}x@{tsa$6SOQ7P)=Hn z!*)3~!|v9>Dei*d?5n-y3OEBh>FZ-x_P>uSmD>K3YFa%=!pOdAQP*zvw9*^sC!d~|`MRoy}E znYJE&b@46soMX2QbZg4>YaII*Kf}4V|0fP4^o^8Jm&aFT zmzXRsGsBS|I!L~MPvCn+Hm6DhWO%@D%z5r3A7$$^pJDaER|TM=;(7VNWKMH3s)`mR zVlA^Pm)JV~1!Q{@QDyo5`^lygd@+xLlJqjOHk1uNbB;@&{u~GY!uK$}=LI2)@3r60 zGHou9#XQ)>3&{F9HnWjr8}G;FAQ@NR{}I-{{RyTozaPK3MO~6!fr7^1ohP4+nLYY> z&iw4pqi4>tv}+IZVvEtuh6Ar$V%Jws8QpI1cFxu_b1r;flXHKtg}c1Om@IeV# zlCLzKKQ%zkqKZ~M0=(Loi{1f1fO<mIZO=j&19K;&;HtfzU5}@(j>YuNtK-s zZfH@=**blh;^G-DzWtpnzv3$)kE~zs8-eL`D^%wp%h-PG2{xZO#iW>_cFg3?JCHnw z&CPI(n2_||W5?r=lq}b|`uHDl^$$MAjdPbSV&+@e+yZ6T zv{7L>Ezxowi_nr8H_q1&TfN6*BXnzv3%~N~Z2bO*SlK;gUaXTJ5pMoVyIA|)DeNgx zyGdqetg2__H97nTIP=yy_L{|F@ak~to7tb*0f%Cbg5Z*S#P6`i8coN1ZS%Ucxy@!i zQeY>m7nnP;-TTRp-j-ywqp6j^DwcdgdG;)4|J}c5z-YgI9T#_*wNHtl{eCKF{pRRkA|K)|Rn*_SO8g`aUAkCn9Y8(WltFcoh-L#b5t* z)?WV*<6Ca3!3M1c<4O`Sh}4$aoj(snL7s(5POlyv;5=gSLrkc#reg0HN<3p=tHl(#{CF1dsAbXrfUoi7y!)K1g=!&4CF} z!M5tbf|6mZr8skzGe7-r*?jgSRwg)|VFH|h$D*SV)1@h+gMs?*#8DOnG9Iyf?|m2n zZ*5ZSCk=I9gluV*LvQ}}>w+DX)ja=+k1%&7qvaLG_uLcmFFxsmA2Z>2&+MtE*go|v zc|KzM*b`j*_21y8zw@_4o~7Om+7`Mbo3-`iNlaPdT*30by^PjY`y=#w8ig!9W@IQYU*YsG|0=`a+AY&f&5P)Fe^V zf)ob5Tw)J<4t&*!tA9{Y=aP1dohf&fakg~}C#~GG9b##WxPZ=^I$tAA(9#*jT@C*c zv~(CeqeFX;y}M(;nocqfZH)ljxpSCOS-trVL~^un0nU!;eD6bp3@r-`LEuX7v1_{- z-4(2XS{v%=lR7{V69EWm5}WG7gDA`3CaH${p7EG+YlEv#oIus!msZJ+#`>IaAr0Ib zA=l!>3Chb?80Ay40xtZ@+c@~=zLWgcTcS(Xrm8ihfq-1iPM*Y+j?$M*Z@vw?yi|h* zP1{7Rc}BAnCvlrwj8<3Jx^#hyzxj6dJoH-Z{sW=oCK5{`;yRmHQVkSm&M|xD6yi0M z^E;0jjo7?;iPe|BiX(sJ`?0&HxUKDI4PB^f%Cgw1Ny&1{+2496=imNzM&mJF46YQ$ zBQUEalFfsg9HPCD1hop{(5a9e&B!K#UIlBVE|vEJMw>a{wX2CX1m_zhH0DMLO~`#T zMOr2%=`67&5J~cufV!wFk&$J5^I`1D5~`szxWNz&~xBmOfl0bb~?o_g_jwR zLs`MbI_}&V#Ch`R5_Zq-CaIa^3@Yne96t{80xcY)Y{dHK9_8A*-i>!9YBIbCuBO~n zt$l+8&97dieER9|d6db$FThMEvAtE57u2eh6uowh*~yckA%{S|y2{1heIFa2e=N2; z&Vq%rwgF*cEE=HgQ_Rnu4T)j_$titv!_1*$j;; z_!1Wykud08gnF!Zz}tOzMH5#EjFkvgx;e5uBD?L@a17@|wPl2QeNlwxx_OPQC%=I6 z4r2nUV>KMp;zKoPg6UTaY}Jz=+(&-&aIj+P0ySnn3%vp6b96q#&*$j8K#MY3m!>O? z)(!6h##vlAk2`+`<^^VL4YRV0FA987qGjNoRdBEtGiJw6U?M}sWfsM9{#V{cdEruk zsl5*!V4REP+GQx-@}BwAPvK9WLy9>1RQZnG(IGf_rHnsSkJto+V#&qQ1u*VNpqwBSssI-}LiRt3sp zj@^F?OAov(Sg4g{C_R1@T_h7AW;fqv`>B%w7OmTscE<2k0wYz0V5n!G-v2^ugtG(L zD~mA`u`q1WEErl4Z~*><^3-|!`AeA6F}?F{Mu!fEfH)sD!sb0I zJP-G%9!1HPm)Lyb81r)%Lar*Z8^%i$F8!DP!h!GpE~a_T!)9*%9s_F3m=}b|3R33-550mstzxN)>3)K#fLMVes6}VO{yHEU0qWTt4$c(Qdjxz zB*Laz>5jK+6<+lRCQ0n*!g!hT!eur;^C_4Wh{@{yTL6qQX2*^(f9y#zvG{q}8r9vO zAkZ+F{bU09h>g#G7I8ih5GBk7R&9?43^>0F4F1yB?U%F&agKUmGGYCFzmM6RV{A?) zmW@X~fk*`#``ADN{Ak3+fBh)iC!d9UgtuYHs$>@3^ql*-pJ#H%U5wUNLM@W>v45M# zsp5AnbMgHj!fkE=Ioa|OdiD$(pZW~4wF!lfjl#uxu zSPEa_eTf>2j3%7=`JZRwkj%KAqy2WvuCq#I!qZba5}cI@$$C;r9{UR!_o{Y(!Z zp`3?gnxwTPX_LTcYn^krJR>`}CnVFVEF%%as zl3l)rl!_bWjBY-}$S7G6YIBT@xe*)M&d#r`qg>{zoxJQ7j$@Yimpo?+wtb^8o-6 z39g*6_@ZET;Uc=eg{{U{lpfu)8+K2yF63W~9fcf}21d76#btsoN@nM;V7KRF0YwM` zS&?(qP$F!X1=(83+KVjtO&&7O>@-~dv|)B3XDN>*-_kUyuiD&J9!%=Qm^{N@yNtd0 zChmX7Z?8`7xqW>Hl?G^o16Hk@eAnU8gzc;tWAXEXt>aGyw=5zh?QwoWo{z}KlaTrM zv@}pNG$|=2i{0r*rDOZ_dGuLF=|g|xDw$Z--Bd26#$L^;Nv~lgg0m69LC8iE%xHq* zDKA~YoxKoHoj3u&)TInCo=g~x#{sqS%>a$ygIlhhI)#=c-fOENNl5-0M&oIyX_GyuNuyejZmCF!}ilBu^Ke9LqhZL%3U^=d^$yJ zhO2T%7>cv!@Xr=llhsY*E8xITkyJfmEaS-%nT>64lkp&?>P{_&$tY*G4$pq53;{h$i(+(;PXa=HpG-_LBn$G)LQ@M@JneN)xPJq@xd~*h0 zmiP#bx+-=`Alqizg)|_RSVp5IjJ2Sl`%TRXmSmVvOIW0xPpWuMTD3y+0g%8jnXV$s zvCN=K8YWXi#rryIpZ02V5@_|yyVvSGR+HMg)?yyQoLK z!^hb#DUZ@AVn%+*QGQhpXE9 z4$NYb*c^Xsawd}zWnBRvsG3Nb>J-*>rxr?o#FsC)-D{ds! z&^09_kLFP!YAZ3>-q6zGuT>TRuQ)ev{VkoaR-M|`40s>u_%Tf*>3DH)34-3*Y;hV| z>3quqwAdV))})wPK>(DcB4ts>esy~(e5*XWRh61F_-GA)uX;kLMuu3`_Ddn6tb!!O z-wt1~)eBr(Eb$6S+c}H?5l1p_MAD)nO-ctk6U)+Jt=d|w{ut(JG@pnh^`Gtc^(PT) zJA>RgXKMYrpQJmuHYGWB_eWF)QfDdCXs$b%x~)kyYEGjvSVSdC0qG4E@-pJ1w=a8R z!qWl3Y4u+fTU7m9(^;B6*@(5pOWfC_cTxiO*xoQMZ7~`;zC)eiHck7dlu^<;zO?3> ziabxJ=BjVNPGUK$BvZ;$Sj)GA^j7~(86NUoJ53^K6x1QQ^*48W4yz_ELVFW07$Sb% z-&{|FHHF;miOOmDg2KRDp6*rAz~4zhyM4df)5Uv3bkk9VshnvtGO$0P zu-*8t70z}T;l!XlwOZOK{g(xIB%z}$lYmiom+0KVBM*xJJO3z zJe0(T)pL>dG-*RJic#4)+%uzUn;1ru0dfryA?=K)$;0Yc^VFF1oF*BXiY$xte{1@8 zy`u*wSGESArgo8DTqdocwquC~+uBP#27SoZq*IBzO){J7?oG&Td4a8dH!aoM?-`&2 z5+ovNh|tvv?IEdynqBHPThx6#Bx!Wt2{fUjG#WRnm5-5jDj|iNr5?Pccnyq%o#mcY z`3~pmTC_&vx2M8(QIPIKlzkap|WNoGU} zi$+~{Zn4u`F&%?04WzCEs#{yjn`j&DEUGMaX9urI2G&OhoaF(53QN``nNy2ckI5RS z@Rou5ZzaPu33rl!Ok*M6jw%gMuT~?SzoLTpcBi}q$!XtstFvM!h*r`$<=uJp&CYG( z2SXlj3-=ECz58Ia?bEb1exen%y?LYsa%jsX)Wn_Ao(*h-U9>$AeUWI1c77+cvQ^SC zG(#p(TV))|zzG&a8eK7y*2eE5%;^F*9b}}VAlvI&30teFWV)_sr$iuHTrXAAfE`p% zqfN^u(FUGfq`{=Snkh=tRfVcOucJF?Ne2V>w$Lu#inI#l1|YNcail?ew7b`2AZ%9Y z1k?iu9SlRH4_tKnfoa<^rX$Cz7-a}>=qa8AR!3NfNop^d-HrZ|Ge}p&2IjD)NT^6# zp=f6%wQbc@wN)~X7u3rRo9^5iiLR}HRYZsSYjk`v9dxC2f#7w6?R4Oi>LMR62`F{J zu@m>JC7Fqq>x zKQ(kWI$*u2QWV-QERxPphOBj>z;;*2^Xw~1}1CW4eHZTJB?1!fhZ`A$%X?j)mBoX z1Li2=-43!eVw`5#S%)4{7qR&ygC%vlKpnW<;mx7a!-bLuD1*5a9q_(ezP)zNHxR_u z4F`4D=4sE7OX8yrvLW4j(4h#S>mqgDI1n3lg=aw4NKpb2>1%=n-D=Uegaz){P<3hB zBB#)KpD92+2x`b5)o#4Bz@1KGCefy1H3m032R)nK`-1h+!9yn?KU6h)NC#|%*_gha zo6!`rry0z1JzqsT#LrIq+J#<`_Kzzf49?qDy$)*Ef26%QWZ)iZ1(390?b?HuZ0h1A zkdAAsEV4Ax#CAhR(#4N3# zn_HOagi@PkudQY5hc&_&mw&jVTwWL)~G z6CL2VC6+YF{C5zEBnFd~Qc)esAN7ND>3qM4=p=*d*hlU}hi!Ew&L)m8(ZV6dFgbeD z<2Pz=-!S)V_ZwdS2Wt<$;(b0gb{-kQipN%kQZ!>kL^{3Fs)kQ++PHR2erNz3 zNMjk*0VGxG&x*oOSuN7OmY&n04KugbAajVHrHfoKxjxfSyWBl({YxjcrHeEJ3H-k( z%UKy6$2!yGIkj(dId7O`U0g3_qKZ9X!a=YhUwA zJ5Fc-4t~qG{6FKvhbY$985>LH6^oLg7}ZWEcm|?@WPvsDW>tEwg(McJv0{-D8oS{S zKG;@A$VRv{Ej(52ph8^_UfQEn5@vdrOWNa>R+RAi)e(p)4%1E@UMHNEo}f#pSWWIz z+c(wRcU*&JjU<`t(}|;$cEgla~w7 zecji5bVmx!?(cl_Z|#2l*M6Yb+Q3>ENqAW_l;l>HhHl#(Y1fz#=P9OIH3qx&Yse8! zl3uMxT(|n6nkrFCk;Z_st;ySfgVw<|&2^;vA*~OIQ_xh~M`_+0AAEfu(y~y!>*&N! zO~F-qZ|z9{>CBy>SF<#2>)iWOG76%PgQR95xliqVx8?Q2&Vjm8-D^-P-Dj!1iwRcfWR z$2iuu7Hc^n-ATsjfSG*lNs(ld4lAasYy?yCnV|~AD;lX1yY+nUcg45jlfLkqX!&D_zn;vJuV=0Rn z1+eFvzUkpz-|-FaxRHBWZqy8q^y}Nb;-CK0f3loqjBSQ@^Ds>yf;_$hB&JoB zN|%)^*Uy>gLilBIqT_mq&;Ov3S^e*LlU^rl(fdib9j} zi>X@!(6};?d6(yxSb4sC(BX5d47^KQ=ap`?2GXljLfV}MbU|(=?Ji(yX1c{|L9wyU z%BvrI?w+6g@t6H^?B_ogOH+M4^S}Mrzq;^me(ta5ML`~W#d=j-j0vhPigD<~fOEkh zYflEeh3npQhrImXYa{fF5ScE|VBz6paV^Ubd9ux8>obY3TOV^BLD7ZC+4EZ-`6A7= zc0g+t)BcpS%K)krg=hehOf1Qqm&%qZdmnt|(|7z||M*p-m;RYkf9iw=;Of8qH-G)< zfBv)oYWta|80Urzix_Y&HhV}K$_3%+)~wU3daQCkhGr1(bzKY@NCjMv+$4RvwO%LV zuW9EU?Uqw7PRumHZjwywJfC*XGVScsp}=%j`mpp6ZZrR@dxX zRz{k6ol#(XB3hwWLWo-of^mv33g)v-WObE8-};>o-~6M0>&^DwyVw7?_V6FO&;V>c z_UPVozxd1l_``>(sFo?=`SSZ}cT7;g;T7+e$@uNueMYh5PXOe1b@1Y7yOB44x* zF9Qk2FLp&lIpiH>G25-M=%lA4*|dF2EIsy$c39rjBl)ClRgTWUOj&u^S6({$m%smi+4p_l`wM^E z`}a>oXsWNR$Ddfa^saaR&5aL!_WOvayg8MQw`lS)pbBDX_Go)D^=oT zg4UGeL6nODGZVLk_GyJ_uA*Bfl6GuaL^IL0CrK|%PB%z>KIyqy_4MVzSZbhBW{}-e zB`2lT|EWjO=@L1s?|pMm#15hjAtTz4A-Yh?{O$;5w~va^q(NhhT`(D=J$snmb=Q39 zEAD^ao`+uZO9#IHdw$_hYTy2e3QbFZ9y`8r^|POS-NvyKuh98yD&AS~&T8p$_0FpI zw#U1Q{naqy5b;r9TqFWIktA6vxT;1+HT2wTZM3HIitPxEYtkL!TIWt3pqeY9Ho~ZJ zPPkf)!-ZOn4Abo?;+j1io5PBviorFf6%ZW8IAe^9Gl0U#=^o!X?Z~1@GYv`3*$MFC zb*p-dSBv*nJ(kd{!fI&YZ|hnouV%dq7DE6 literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/rewe.png b/frontend/public/koepi/rewe.png new file mode 100644 index 0000000000000000000000000000000000000000..b859df491ce9bc79f165cbec47e87fa784b2dea9 GIT binary patch literal 21796 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 X<&J1uQ2pR{00000NkvXXu0mjf!|joc literal 0 HcmV?d00001 diff --git a/frontend/public/koepi/traeger.png b/frontend/public/koepi/traeger.png new file mode 100644 index 0000000000000000000000000000000000000000..b590c941e19cd3dd01aa2362552eac1cb9ce4567 GIT binary patch literal 132497 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 literal 0 HcmV?d00001 diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json new file mode 100644 index 0000000..8b8b433 --- /dev/null +++ b/frontend/public/manifest.json @@ -0,0 +1,28 @@ +{ + "name": "Dicken Dock", + "short_name": "DickenDock", + "description": "Dein 3D-Druck Verwaltungstool", + "start_url": "/", + "display": "standalone", + "orientation": "portrait", + "background_color": "#0d0d0f", + "theme_color": "#4ecdc4", + "icons": [ + { + "src": "/favicon.svg", + "type": "image/svg+xml", + "sizes": "any", + "purpose": "any maskable" + }, + { + "src": "/icon-192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "/icon-512.png", + "type": "image/png", + "sizes": "512x512" + } + ] +} \ No newline at end of file diff --git a/frontend/public/sw.js b/frontend/public/sw.js new file mode 100644 index 0000000..d7580d8 --- /dev/null +++ b/frontend/public/sw.js @@ -0,0 +1,55 @@ +// Service Worker – Version wird zur Build-Zeit injiziert via Dockerfile +// Dadurch erkennt der Browser bei jedem Deploy einen neuen SW → Cache-Purge +const VERSION = '__BUILD_VERSION__'; // wird im Dockerfile ersetzt +const CACHE_NAME = 'dickendock-' + VERSION; + +self.addEventListener('install', () => { + self.skipWaiting(); // neuen SW sofort übernehmen +}); + +self.addEventListener('activate', e => { + e.waitUntil((async () => { + // alle alten Caches löschen + const keys = await caches.keys(); + await Promise.all(keys.filter(k => k !== CACHE_NAME).map(k => caches.delete(k))); + await self.clients.claim(); + // allen offenen Clients sagen: neue Version aktiv → reload + const clients = await self.clients.matchAll({ type: 'window' }); + clients.forEach(c => c.postMessage({ type: 'SW_ACTIVATED', version: VERSION })); + })()); +}); + +self.addEventListener('fetch', e => { + const url = new URL(e.request.url); + + // Cross-Origin-Requests nicht abfangen + if (url.origin !== self.location.origin) return; + + // API immer direkt ans Netz + if (url.pathname.startsWith('/api/')) { + e.respondWith(fetch(e.request)); + return; + } + + // sw.js selbst nie cachen + if (url.pathname === '/sw.js') { + e.respondWith(fetch(e.request, { cache: 'no-store' })); + return; + } + + // HTML-Navigation: IMMER frisch vom Netzwerk + if (e.request.mode === 'navigate') { + e.respondWith( + fetch(e.request, { cache: 'reload' }) + .catch(() => caches.match('/index.html')) + ); + return; + } + + // Same-Origin Assets: durchreichen + e.respondWith(fetch(e.request).catch(() => caches.match(e.request))); +}); + +self.addEventListener('message', e => { + if (e.data === 'SKIP_WAITING') self.skipWaiting(); +}); diff --git a/frontend/public/vite.config.js b/frontend/public/vite.config.js new file mode 100644 index 0000000..af132f8 --- /dev/null +++ b/frontend/public/vite.config.js @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +export default defineConfig({ + plugins: [react()], + server: { proxy: { '/api': 'http://localhost:4000' } }, + define: { + __BUILD_TIME__: JSON.stringify(new Date().toISOString()), + }, +}) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx new file mode 100644 index 0000000..42e1717 --- /dev/null +++ b/frontend/src/App.jsx @@ -0,0 +1,4396 @@ +import { useState, useEffect, useRef, useCallback } from 'react'; +import { api, S } from './lib.js'; +import { TOOLS, getGroupedTools } from './toolRegistry.js'; +import CalendarWidget, { CalendarSettings } from './calendar.jsx'; +import { DateiSettings } from './tools/dateien.jsx'; +import { useConfirm } from './confirm.jsx'; +import { HomeIcon, AppsIcon, AdminIcon, MoreIcon, UserIcon, LogOutIcon, ChevronIcon, TrashIcon, MessageIcon } from './icons.jsx'; +import { getOrCreateKeyPair, getPublicKeyJwk, getFingerprint, exportEncrypted, importEncrypted, generateNewKeyPair } from './crypto.js'; + +const CONST_ICONS = ['🔗','🌐','📊','📁','🛠','📧','🗓','💾','🖥','📡','🔒','📖','🎯','⚡','🏠','🔧','📱','🎮','🚀','💡']; + +// Schlüsselpaar beim Login generieren und public key registrieren (fire & forget) +async function initNachrichtenKeys() { + const LS_KEY = 'dd_msg_keypair'; + let pubJwk; + const stored = localStorage.getItem(LS_KEY); + if (stored) { + try { pubJwk = JSON.parse(stored).pub; } catch { localStorage.removeItem(LS_KEY); } + } + if (!pubJwk) { + const kp = await crypto.subtle.generateKey({ name:'ECDH', namedCurve:'P-256' }, true, ['deriveKey']); + pubJwk = await crypto.subtle.exportKey('jwk', kp.publicKey); + const priv = await crypto.subtle.exportKey('jwk', kp.privateKey); + localStorage.setItem(LS_KEY, JSON.stringify({ pub: pubJwk, priv })); + } + try { await api('/tools/nachrichten/keys', { body: { public_key: JSON.stringify(pubJwk) } }); } catch {} +} + +// ── Responsive Hook ─────────────────────────────────────────────────────────── +function useIsMobile() { + const [mobile, setMobile] = useState(window.innerWidth < 768); + useEffect(() => { + // Nur auf Breite reagieren, nicht auf Keyboard-Open (Höhenänderung) + const fn = () => { + const isMob = window.innerWidth < 768; + setMobile(prev => prev === isMob ? prev : isMob); + }; + window.addEventListener('resize', fn); + return () => window.removeEventListener('resize', fn); + }, []); + return mobile; +} + +// ── Toast ───────────────────────────────────────────────────────────────────── +function Toast({ msg, type }) { + if (!msg) return null; + const c = type === 'error' ? '#ff6b9d' : '#4ecdc4'; + return ( +

+ {type==='error'?'✕ ':'✓ '}{msg} +
+ ); +} + +// ── Modal ───────────────────────────────────────────────────────────────────── +function Modal({ title, onClose, children }) { + return ( +
=768 ? 'center' : 'flex-end', + justifyContent:'center', padding: window.innerWidth>=768 ? 24 : 0 }} + onClick={e=>e.target===e.currentTarget&&onClose()}> +
=768 ? 16 : '16px 16px 0 0', + padding:'20px 20px 40px', width:'100%', + maxWidth:600, maxHeight:'85vh', overflowY:'auto', + boxShadow: window.innerWidth>=768 ? '0 24px 80px rgba(0,0,0,0.6)' : 'none' }}> + {window.innerWidth < 768 &&
} +
+ {title} + +
+ {children} +
+
+ ); +} + +// ── PWA Splash Screen ───────────────────────────────────────────────────────── +function SplashScreen({ onDone }) { + const [fade, setFade] = useState(false); + useEffect(() => { + const t1 = setTimeout(() => setFade(true), 1200); + const t2 = setTimeout(() => onDone(), 1700); + return () => { clearTimeout(t1); clearTimeout(t2); }; + }, []); + return ( +
+
+ DICKENDOCK +
+
+
+ ); +} + +// ── Login ───────────────────────────────────────────────────────────────────── +function Login({ onLogin }) { + const [u,setU]=useState(''); const [p,setP]=useState(''); + const [err,setErr]=useState(''); const [busy,setBusy]=useState(false); + const go = async () => { + setErr(''); setBusy(true); + try { const d=await api('/auth/login',{body:{username:u,password:p}}); localStorage.setItem('sk_token',d.token); initNachrichtenKeys(); onLogin(d.user); } + catch(e) { setErr(e.message); } finally { setBusy(false); } + }; + return ( +
+
+
+
+
+ DICKENDOCK +
+
+ {[['BENUTZERNAME',u,setU,'text'],['PASSWORT',p,setP,'password']].map(([l,v,s,t])=>( +
+ + s(e.target.value)} + onKeyDown={e=>e.key==='Enter'&&go()} + style={{ ...S.inp, fontSize:16, padding:'13px 14px', borderRadius:10, + border:'1px solid rgba(255,255,255,0.12)' }} + autoCapitalize="none" autoCorrect="off" /> +
+ ))} + {err &&
✕ {err}
} + +
+
+ ); +} + +// ── Update Modal ────────────────────────────────────────────────────────────── +// ── Desktop Sidebar ─────────────────────────────────────────────────────────── +function Sidebar({ active, setActive, user, onLogout, unreadMsgs=0, hexWarsTurns=0, whiteboardUnread=0, isAdmin=false, hiddenTools=[] }) { + const [appsOpen, setAppsOpen] = useState(true); + const [collapsed, setCollapsed] = useState(false); + const [collapsedGroups, setCollapsedGroups] = useState({}); + const toggleGroup = (group) => setCollapsedGroups(prev => ({ ...prev, [group]: !prev[group] })); + + const NavBtn = ({ item, sub=false }) => { + const ic = active===item.id ? '#4ecdc4' : 'rgba(255,255,255,0.55)'; + return ( + + ); + }; + + return ( + + ); +} + +// ── Mobile Bottom Navigation ────────────────────────────────────────────────── +function BottomNav({ active, setActive, user, onLogout, unreadMsgs=0, hexWarsTurns=0, whiteboardUnread=0, isAdmin=false, hiddenTools=[] }) { + const [menuOpen, setMenuOpen] = useState(false); + const [appsOpen, setAppsOpen] = useState(false); + const [mobileCollapsedGroups, setMobileCollapsedGroups] = useState({}); + const NAV_H = 56; + + const MI = ({Icon, icon, label, onClick, color='rgba(255,255,255,0.85)', dot=false}) => { + const Ic = Icon; + return ( + + ); + }; + + const Sheet = ({open, onClose, children}) => { + if (!open) return null; + const isDesktop = window.innerWidth >= 768; + if (isDesktop) return ( +
+
e.stopPropagation()}> + {children} +
+
+ ); + return ( +
+
e.stopPropagation()}> +
+ {children} +
+
+
+ ); + }; + + const mainNav = [ + { id:'dashboard', Icon:HomeIcon, label:'Home' }, + { id:'_apps', Icon:AppsIcon, label:'Apps' }, + { id:'admin', Icon:AdminIcon, label:'Einst.' }, + { id:'_mehr', Icon:MoreIcon, label:'Mehr' }, + ]; + + return ( + <> + {/* Apps Sheet mit Gruppenüberschriften */} + setAppsOpen(false)}> +
+ {getGroupedTools(user?.role==='admin', hiddenTools).map(([group, tools]) => { + const isGrpCollapsed = !!mobileCollapsedGroups[group]; + return ( +
+ + {!isGrpCollapsed && tools.map(t => ( + 0) || (t.id==='whiteboard' && whiteboardUnread>0) || (t.id==='nachrichten' && unreadMsgs>0)} + onClick={() => { setActive(t.id); setAppsOpen(false); }} /> + ))} +
+ ); + })} +
+
+ + {/* Mehr Sheet */} + setMenuOpen(false)}> +
+ {}} color="rgba(255,255,255,0.35)"/> + {onLogout();setMenuOpen(false);}} color="#ff6b9d"/> + + + {/* Bottom Bar */} + + + ); +} + + +// ── Dashboard Widgets ───────────────────────────────────────────────────────── +// ── QuickLinks Carousel (Mobile) ───────────────────────────────────────────── +function QuickLinksCarousel({ links, onFolderClick, navigateTool }) { + const perRow = 4; + const gap = 6; + const pageSize = perRow * 2; + const pageCount = Math.ceil(links.length / pageSize); + + const [page, setPage] = useState(0); + const scrollRef = useRef(null); + + const onScroll = () => { + if (!scrollRef.current) return; + const p = Math.round(scrollRef.current.scrollLeft / scrollRef.current.offsetWidth); + setPage(p); + }; + + const canLeft = page > 0; + const canRight = page < pageCount - 1; + + const scrollTo = (p) => { + scrollRef.current?.scrollTo({ left: p * scrollRef.current.offsetWidth, behavior:'smooth' }); + }; + + if (pageCount <= 1) return ( +
+ {links.map(l => )} +
+ ); + + return ( +
+
+ {Array.from({length: pageCount}, (_,pi) => ( +
+ {links.slice(pi*pageSize, (pi+1)*pageSize).map(l => )} +
+ ))} +
+ + {/* Page dots */} + {pageCount > 1 && ( +
+ {Array.from({length:pageCount}, (_,i) => ( +
scrollTo(i)} style={{ + width: i===page ? 14 : 5, height:5, borderRadius:3, cursor:'pointer', + background: i===page ? '#4ecdc4' : 'rgba(255,255,255,0.2)', + transition:'all 0.2s', + }}/> + ))} +
+ )} +
+ ); +} + +function QuickLinkIcon({ l, onFolderClick, navigateTool }) { + const [imgOk, setImgOk] = useState(true); + const isTool = l.url?.startsWith('tool://'); + + const hasCustomIcon = l.icon && l.icon !== '🔗'; + const faviconUrl = (!hasCustomIcon && !l.isFolder && !isTool) ? (() => { + try { return `https://www.google.com/s2/favicons?sz=64&domain=${new URL(l.url).hostname}`; } + catch { return null; } + })() : null; + + const showFavicon = !hasCustomIcon && !!faviconUrl && imgOk && !l.isFolder && !isTool; + const showCustomImg = hasCustomIcon && !l.isFolder && l.icon.startsWith('http'); + const showEmoji = !showFavicon && !showCustomImg; + const emoji = l.isFolder ? (l.icon||'📁') : (hasCustomIcon ? l.icon : (isTool ? '⚡' : '🔗')); + + const content = ( + <> + {showFavicon && setImgOk(false)}/>} + {showCustomImg && setImgOk(false)}/>} + {showEmoji && {emoji}} + {l.title||l.name} + + ); + + const baseStyle = {display:'flex',flexDirection:'column',alignItems:'center',justifyContent:'center',gap:3, + padding:'4px 2px',background: isTool ? 'rgba(160,132,250,0.06)' : 'rgba(255,255,255,0.04)', + border: l.isFolder ? '1px solid rgba(78,205,196,0.25)' : isTool ? '1px solid rgba(160,132,250,0.2)' : '1px solid rgba(255,255,255,0.08)', + borderRadius:10,textDecoration:'none',height:48,width:'100%',boxSizing:'border-box',cursor:'pointer'}; + + if (isTool) { + return ; + } + if (l.isFolder && onFolderClick) { + const realId = typeof l.id==='string'&&l.id.startsWith('folder-') ? parseInt(l.id.replace('folder-','')) : l.id; + return ; + } + return
{content}; +} + +function FolderModal({ folder, onClose, navigateTool }) { + const [links, setLinks] = useState([]); + const [loading, setLoading] = useState(true); + useEffect(()=>{ + api(`/tools/linkliste/folders/${folder.id}/links`) + .then(d=>{ setLinks(d.links||[]); setLoading(false); }) + .catch(()=>setLoading(false)); + },[folder.id]); + const mob = window.innerWidth < 768; + return ( +
e.target===e.currentTarget&&onClose()}> +
+ {mob&&
} +
+
+ {folder.icon} {folder.name} +
+ +
+ {loading ?
+ : links.length===0 ?
Ordner ist leer
+ :
+ {links.map(l=>)} +
+ } +
+
+ ); +} + +function QuickLinks({ toast, mobile, setActive, setDevToolsNav }) { + const [links, setLinks] = useState([]); + const [folderModal, setFolderModal] = useState(null); + const [editMode, setEditMode] = useState(false); + + useEffect(() => { api('/dashboard/links').then(setLinks).catch(() => {}); }, []); + + // Tool-Navigation für tool://-Links + const navigateTool = (url) => { + if (!url?.startsWith('tool://')) return; + const withoutScheme = url.replace('tool://', ''); + const [toolId, query] = withoutScheme.split('?'); + const sub = query?.replace('sub=', ''); + if (toolId === 'devtools' && sub && setDevToolsNav) { + setActive('devtools'); + setDevToolsNav({ tool: sub, ts: Date.now() }); + } else if (setActive) { + setActive(toolId); + } + }; + + const legacyItems = links.filter(l => l.item_type === 'quicklink' || !l.item_type); + const hasLegacy = legacyItems.length > 0; + + const deleteLegacy = async id => { + try { + await api(`/dashboard/links/${id}`, { method:'DELETE' }); + setLinks(p => p.filter(l => l.id !== id)); + toast('Entfernt'); + } catch(e) { toast(e.message,'error'); } + }; + + const allItems = links.map(l => l.item_type === 'folder' + ? { ...l, id:`folder-${l.id}`, isFolder:true, icon:l.icon||'📁', title:l.name } + : l + ); + + return ( +
+ {folderModal && setFolderModal(null)} navigateTool={navigateTool}/>} +
+
SCHNELLZUGRIFF
+ {hasLegacy && ( + + )} +
+ + {/* Edit-Modus: alte Quick-Links verwalten */} + {editMode && hasLegacy && ( +
+
+ ÄLTERE LINKS (aus Einstellungen) — können hier gelöscht werden +
+ {legacyItems.map(l=>( +
+ {l.icon?.startsWith('http') + ? + : l.icon||'🔗'} +
+
{l.title}
+
+ +
+ ))} +
+ Neue Links über Linkliste → ● Schnellzugriff verwalten +
+
+ )} + + {allItems.length === 0 + ?
+ Links oder Ordner in der Linkliste mit ● Schnellzugriff aktivieren. +
+ : mobile + ? + :
+ {allItems.map(l => )} +
+ } +
+ ); +} + +function TodoList({ toast }) { + const [items, setItems] = useState([]); + const [text, setText] = useState(''); + const [isOpen, setIsOpen] = useState(false); + useEffect(() => { api('/dashboard/todos').then(setItems).catch(() => {}); }, []); + + const add = async () => { + if (!text.trim()) return; + try { const n = await api('/dashboard/todos', { body:{ text:text.trim() } }); setItems(p => [...p, n]); setText(''); } + catch(e) { toast(e.message, 'error'); } + }; + const toggle = async item => { + try { const u = await api(`/dashboard/todos/${item.id}`, { method:'PUT', body:{ done:!item.done } }); setItems(p => p.map(i => i.id===item.id ? u : i)); } + catch(e) { toast(e.message, 'error'); } + }; + const del = async id => { + try { await api(`/dashboard/todos/${id}`, { method:'DELETE' }); setItems(p => p.filter(i => i.id!==id)); } + catch(e) { toast(e.message, 'error'); } + }; + + const open = items.filter(i => !i.done); + const done = items.filter(i => i.done); + + return ( +
+ + {isOpen && <>
+ setText(e.target.value)} + onKeyDown={e => e.key==='Enter' && add()} + style={{ ...S.inp, flex:1, fontSize:16 }} placeholder="Neue Aufgabe…" /> + +
+
+ {open.length === 0 && done.length === 0 && ( +
Noch keine Aufgaben.
+ )} + {open.map(item => ( +
+ +
+ ))} + {done.length > 0 && ( + <> +
ERLEDIGT
+ {done.map(item => ( +
+ + {item.text} + +
+ ))} + + )} +
} +
+ ); +} + +function Notepad({ toast }) { + const [content, setContent] = useState(''); + const [saved, setSaved] = useState(true); + const [saveTime, setSaveTime] = useState(null); + const [isOpen, setIsOpen] = useState(false); + const tmr = useRef(null); + + useEffect(() => { + api('/dashboard/note').then(d => { setContent(d.content || ''); setSaveTime(d.updated_at); }).catch(() => {}); + }, []); + + const change = val => { + setContent(val); setSaved(false); clearTimeout(tmr.current); + tmr.current = setTimeout(async () => { + try { const r = await api('/dashboard/note', { method:'PUT', body:{ content:val } }); setSaved(true); setSaveTime(r.updated_at); } + catch(e) { toast(e.message, 'error'); } + }, 900); + }; + + return ( +
+ + {isOpen &&
+ {saved ? (saveTime ? `✓ ${new Date(saveTime).toLocaleTimeString('de-DE', { hour:'2-digit', minute:'2-digit' })}` : '✓') : '…'} +
} + {isOpen &&