From 914e8bd528910dacf9cbf5a8374c54269996d786 Mon Sep 17 00:00:00 2001 From: DeathKaioken Date: Mon, 16 Mar 2026 20:03:54 +0100 Subject: [PATCH] fmlfmlflmflm --- QRCode/qr_120.png | Bin 0 -> 39648 bytes QRCode/qr_60.png | Bin 0 -> 35641 bytes controller/admin/CompanySettingsController.js | 247 +++++++++++++++++- .../auth/EmailVerificationController.js | 4 +- controller/login/LoginController.js | 5 +- .../password-reset/PasswordResetController.js | 2 +- database/createDb.js | 6 + .../settings/CompanySettingsRepository.js | 36 ++- server.js | 6 +- services/invoice/InvoiceService.js | 217 +++++++++++++-- templates/abo/abo-contract-template.html | 6 +- templates/invoice/invoiceTemplate.html | 61 ++++- templates/invoice/qr/README.md | 6 + templates/invoice/qr/qr_120.png | Bin 0 -> 39648 bytes templates/invoice/qr/qr_60.png | Bin 0 -> 35641 bytes 15 files changed, 556 insertions(+), 40 deletions(-) create mode 100644 QRCode/qr_120.png create mode 100644 QRCode/qr_60.png create mode 100644 templates/invoice/qr/README.md create mode 100644 templates/invoice/qr/qr_120.png create mode 100644 templates/invoice/qr/qr_60.png diff --git a/QRCode/qr_120.png b/QRCode/qr_120.png new file mode 100644 index 0000000000000000000000000000000000000000..80e38a73969d80f5111b1cbbe556fe8995aed5e5 GIT binary patch literal 39648 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 aDkwC>f>03hR=c8EwGUD&;GxZaefU48ZKeYN literal 0 HcmV?d00001 diff --git a/QRCode/qr_60.png b/QRCode/qr_60.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd81c71b2b2a193ef9a3c27e5b44c817cf4901a GIT binary patch literal 35641 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 literal 0 HcmV?d00001 diff --git a/controller/admin/CompanySettingsController.js b/controller/admin/CompanySettingsController.js index b6b88eb..dd92ccb 100644 --- a/controller/admin/CompanySettingsController.js +++ b/controller/admin/CompanySettingsController.js @@ -1,12 +1,122 @@ const CompanySettingsRepository = require('../../repositories/settings/CompanySettingsRepository'); +const { logger } = require('../../middleware/logger'); +const crypto = require('crypto'); const repo = new CompanySettingsRepository(); class CompanySettingsController { + static _normalizeBase64ImageInput(value) { + if (value === undefined) return undefined; + if (value === null) return null; + + const stripDataUri = (str) => { + const s = String(str || '').trim(); + if (!s) return ''; + const m = s.match(/^data:([^;]+);base64,(.*)$/i); + return m ? (m[2] || '').trim() : s; + }; + + if (typeof value === 'string') { + // If base64 came via urlencoded forms, '+' often becomes ' ' after decoding. + // Restoring spaces back to '+' makes the payload usable again. + let normalized = stripDataUri(value); + if (normalized.includes(' ') && !normalized.includes('+')) { + normalized = normalized.replace(/ /g, '+'); + } + normalized = normalized.replace(/\s+/g, ''); + return normalized || null; + } + + if (typeof value === 'object') { + // Common Node.js JSON shape for Buffers: { type: 'Buffer', data: [..bytes..] } + if (value && value.type === 'Buffer' && Array.isArray(value.data)) { + try { + const buf = Buffer.from(value.data); + const asBase64 = buf.toString('base64'); + return asBase64 || null; + } catch (_) { + return undefined; + } + } + + // Common frontend shapes: + // { kind: 'base64', base64: '...' } + // { kind: 'base64', data: '...' } + // { dataUrl: 'data:image/png;base64,...' } + // { value: '...' } + const candidates = [ + value.base64, + value.data, + value.value, + value.content, + value.full, + value.raw, + value.payload, + value.src, + value.b64, + value.base64String, + value.dataUrl, + value.dataURL, + value.data_uri, + value.dataURI, + value.uri, + ]; + for (const c of candidates) { + if (typeof c === 'string' && c.trim()) { + let normalized = stripDataUri(c); + if (normalized.includes(' ') && !normalized.includes('+')) { + normalized = normalized.replace(/ /g, '+'); + } + normalized = normalized.replace(/\s+/g, ''); + return normalized || null; + } + } + + // Fallback: scan shallow object for a base64-ish string + const looksLikeImageBase64 = (str) => { + const s = String(str || '').trim(); + return s.startsWith('data:image/') || s.startsWith('iVBORw0KGgo') || s.startsWith('/9j/') || s.startsWith('R0lGOD'); + }; + + for (const v of Object.values(value)) { + if (typeof v === 'string' && looksLikeImageBase64(v)) { + let normalized = stripDataUri(v); + if (normalized.includes(' ') && !normalized.includes('+')) { + normalized = normalized.replace(/ /g, '+'); + } + normalized = normalized.replace(/\s+/g, ''); + return normalized || null; + } + if (v && typeof v === 'object') { + for (const vv of Object.values(v)) { + if (typeof vv === 'string' && looksLikeImageBase64(vv)) { + let normalized = stripDataUri(vv); + if (normalized.includes(' ') && !normalized.includes('+')) { + normalized = normalized.replace(/ /g, '+'); + } + normalized = normalized.replace(/\s+/g, ''); + return normalized || null; + } + } + } + } + } + + // Unknown shape; ignore instead of persisting garbage + return undefined; + } + static async get(req, res) { try { const settings = await repo.get(); - return res.json(settings || { company_name: '', company_street: '', company_postal_city: '', company_country: '' }); + return res.json(settings || { + company_name: '', + company_street: '', + company_postal_city: '', + company_country: '', + qr_code_60_base64: null, + qr_code_120_base64: null, + }); } catch (err) { return res.status(500).json({ message: 'Failed to load company settings' }); } @@ -14,10 +124,141 @@ class CompanySettingsController { static async update(req, res) { try { - const { company_name, company_street, company_postal_city, company_country } = req.body; - const updated = await repo.update({ company_name, company_street, company_postal_city, company_country }); + const body = req.body || {}; + + const requestId = req.id; + + const contentType = (req.get('content-type') || '').toLowerCase(); + const contentLength = req.get('content-length') || null; + if (contentType.includes('multipart/form-data')) { + logger.warn('companySettings:update:multipart_not_supported', { + requestId, + contentType: req.get('content-type') || null, + hint: 'Send JSON (application/json) or add multer middleware for this route.' + }); + } + if (Object.keys(body).length === 0 && contentLength && Number(contentLength) > 0) { + logger.warn('companySettings:update:empty_parsed_body', { + requestId, + contentType: req.get('content-type') || null, + contentLength, + hint: 'Body parser may not match the request content-type or size limit.' + }); + } + + const summarizeValue = (val) => { + const t = val === null ? 'null' : Array.isArray(val) ? 'array' : typeof val; + const summary = { type: t }; + if (t === 'string') { + const s = String(val); + summary.length = s.length; + summary.hasDataUriPrefix = s.trim().toLowerCase().startsWith('data:image/'); + summary.hasWhitespace = /\s/.test(s); + summary.startsWithPngSig = s.trim().startsWith('iVBORw0KGgo'); + } else if (t === 'array') { + summary.length = val.length; + } else if (t === 'object' && val) { + summary.keys = Object.keys(val).slice(0, 30); + if (val.type === 'Buffer' && Array.isArray(val.data)) { + summary.bufferLike = true; + summary.dataLength = val.data.length; + } + } + return summary; + }; + + const hash12 = (s) => { + try { + if (typeof s !== 'string' || !s) return null; + return crypto.createHash('sha256').update(s).digest('hex').slice(0, 12); + } catch { + return null; + } + }; + + // Log request shape (not the base64 itself) + const incoming60Raw = body.qr_code_60_base64 ?? body.qrCode60Base64; + const incoming120Raw = body.qr_code_120_base64 ?? body.qrCode120Base64; + if (incoming60Raw !== undefined || incoming120Raw !== undefined) { + logger.info('companySettings:update:incoming_qr', { + requestId, + contentType: req.get('content-type') || null, + contentLength, + bodyKeys: Object.keys(body).slice(0, 50), + qr60: summarizeValue(incoming60Raw), + qr120: summarizeValue(incoming120Raw), + }); + } + + // Accept both snake_case and camelCase + const payload = { + company_name: body.company_name ?? body.companyName, + company_street: body.company_street ?? body.companyStreet, + company_postal_city: body.company_postal_city ?? body.companyPostalCity, + company_country: body.company_country ?? body.companyCountry, + qr_code_60_base64: CompanySettingsController._normalizeBase64ImageInput(body.qr_code_60_base64 ?? body.qrCode60Base64), + qr_code_120_base64: CompanySettingsController._normalizeBase64ImageInput(body.qr_code_120_base64 ?? body.qrCode120Base64), + }; + + // Only forward keys that were actually provided (so we don't wipe values on partial updates) + const provided = {}; + for (const [key, value] of Object.entries(payload)) { + if (value !== undefined) provided[key] = value; + } + + // Debug without leaking base64 + if (incoming60Raw !== undefined && provided.qr_code_60_base64 === undefined) { + logger.warn('companySettings:update:qr60_ignored', { + requestId, + incoming: summarizeValue(incoming60Raw), + reason: 'normalize_returned_undefined_or_unrecognized_shape' + }); + } + if (incoming120Raw !== undefined && provided.qr_code_120_base64 === undefined) { + logger.warn('companySettings:update:qr120_ignored', { + requestId, + incoming: summarizeValue(incoming120Raw), + reason: 'normalize_returned_undefined_or_unrecognized_shape' + }); + } + + if (provided.qr_code_60_base64 !== undefined || provided.qr_code_120_base64 !== undefined) { + const len60 = typeof provided.qr_code_60_base64 === 'string' ? provided.qr_code_60_base64.length : null; + const len120 = typeof provided.qr_code_120_base64 === 'string' ? provided.qr_code_120_base64.length : null; + logger.info('companySettings:update:qr_normalized', { + requestId, + has60: provided.qr_code_60_base64 !== undefined, + type60: provided.qr_code_60_base64 === null ? 'null' : typeof provided.qr_code_60_base64, + len60, + sha60: typeof provided.qr_code_60_base64 === 'string' ? hash12(provided.qr_code_60_base64) : null, + has120: provided.qr_code_120_base64 !== undefined, + type120: provided.qr_code_120_base64 === null ? 'null' : typeof provided.qr_code_120_base64, + len120, + sha120: typeof provided.qr_code_120_base64 === 'string' ? hash12(provided.qr_code_120_base64) : null, + }); + } + + const updated = await repo.update(provided); + + if (updated && (provided.qr_code_60_base64 !== undefined || provided.qr_code_120_base64 !== undefined)) { + const storedLen60 = typeof updated.qr_code_60_base64 === 'string' ? updated.qr_code_60_base64.length : null; + const storedLen120 = typeof updated.qr_code_120_base64 === 'string' ? updated.qr_code_120_base64.length : null; + logger.info('companySettings:update:qr_stored', { + requestId, + storedLen60, + storedSha60: typeof updated.qr_code_60_base64 === 'string' ? hash12(updated.qr_code_60_base64) : null, + storedLen120, + storedSha120: typeof updated.qr_code_120_base64 === 'string' ? hash12(updated.qr_code_120_base64) : null, + }); + } + return res.json(updated); } catch (err) { + logger.error('companySettings:update:failed', { + requestId: req && req.id, + message: err?.message, + stack: err?.stack, + }); return res.status(500).json({ message: 'Failed to update company settings' }); } } diff --git a/controller/auth/EmailVerificationController.js b/controller/auth/EmailVerificationController.js index 9c24e39..81fbfe9 100644 --- a/controller/auth/EmailVerificationController.js +++ b/controller/auth/EmailVerificationController.js @@ -22,7 +22,7 @@ class EmailVerificationController { res.json({ success: true, message: 'Verification email sent' }); } catch (error) { await unitOfWork.rollback(error); - logger.error('Error sending verification email:', error); + logger.error('Error sending verification email', { message: error?.message, stack: error?.stack }); res.status(400).json({ success: false, message: error.message }); } } @@ -44,7 +44,7 @@ class EmailVerificationController { } } catch (error) { await unitOfWork.rollback(error); - logger.error('Error verifying email code:', error); + logger.error('Error verifying email code', { message: error?.message, stack: error?.stack }); res.status(400).json({ success: false, error: error.message }); } } diff --git a/controller/login/LoginController.js b/controller/login/LoginController.js index f80e68e..f65c84d 100644 --- a/controller/login/LoginController.js +++ b/controller/login/LoginController.js @@ -125,7 +125,10 @@ class LoginController { lang: lang // <-- pass lang from request body }); } catch (mailError) { - logger.error('Error sending login notification email', { error: mailError }); + logger.error('Error sending login notification email', { + message: mailError?.message, + stack: mailError?.stack, + }); // Do not block login } diff --git a/controller/password-reset/PasswordResetController.js b/controller/password-reset/PasswordResetController.js index 3077456..ffd5ad4 100644 --- a/controller/password-reset/PasswordResetController.js +++ b/controller/password-reset/PasswordResetController.js @@ -72,7 +72,7 @@ module.exports = { await uow.commit(); } catch (err) { await uow.rollback(); - logger.error('passwordReset:request_error', { error: err }); + logger.error('passwordReset:request_error', { message: err?.message, stack: err?.stack }); } return res.json({ success: true, diff --git a/database/createDb.js b/database/createDb.js index 0acfeaf..1b36207 100644 --- a/database/createDb.js +++ b/database/createDb.js @@ -810,6 +810,8 @@ const createDatabase = async () => { company_street VARCHAR(255) NOT NULL DEFAULT '', company_postal_city VARCHAR(255) NOT NULL DEFAULT '', company_country VARCHAR(100) NOT NULL DEFAULT 'Germany', + qr_code_60_base64 LONGTEXT NULL, + qr_code_120_base64 LONGTEXT NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CHECK (id = 1) ); @@ -820,6 +822,10 @@ const createDatabase = async () => { `); console.log('✅ Company settings table created/verified'); + // Backward-compatible: add QR code columns if missing + await addColumnIfMissing(connection, 'company_settings', 'qr_code_60_base64', 'LONGTEXT NULL'); + await addColumnIfMissing(connection, 'company_settings', 'qr_code_120_base64', 'LONGTEXT NULL'); + // --- Dashboard Platforms (admin managed dashboard cards) --- await connection.query(` CREATE TABLE IF NOT EXISTS dashboard_plattforms ( diff --git a/repositories/settings/CompanySettingsRepository.js b/repositories/settings/CompanySettingsRepository.js index a0f9f13..7153f1b 100644 --- a/repositories/settings/CompanySettingsRepository.js +++ b/repositories/settings/CompanySettingsRepository.js @@ -6,16 +6,42 @@ class CompanySettingsRepository { return rows[0] || null; } - async update({ company_name, company_street, company_postal_city, company_country }) { + async update({ + company_name, + company_street, + company_postal_city, + company_country, + qr_code_60_base64, + qr_code_120_base64, + } = {}) { + const current = await this.get(); + const next = { + company_name: company_name !== undefined ? company_name : (current?.company_name ?? ''), + company_street: company_street !== undefined ? company_street : (current?.company_street ?? ''), + company_postal_city: company_postal_city !== undefined ? company_postal_city : (current?.company_postal_city ?? ''), + company_country: company_country !== undefined ? company_country : (current?.company_country ?? ''), + qr_code_60_base64: qr_code_60_base64 !== undefined ? qr_code_60_base64 : (current?.qr_code_60_base64 ?? null), + qr_code_120_base64: qr_code_120_base64 !== undefined ? qr_code_120_base64 : (current?.qr_code_120_base64 ?? null), + }; + await pool.query( - `INSERT INTO company_settings (id, company_name, company_street, company_postal_city, company_country) - VALUES (1, ?, ?, ?, ?) + `INSERT INTO company_settings (id, company_name, company_street, company_postal_city, company_country, qr_code_60_base64, qr_code_120_base64) + VALUES (1, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE company_name = VALUES(company_name), company_street = VALUES(company_street), company_postal_city = VALUES(company_postal_city), - company_country = VALUES(company_country)`, - [company_name || '', company_street || '', company_postal_city || '', company_country || ''] + company_country = VALUES(company_country), + qr_code_60_base64 = VALUES(qr_code_60_base64), + qr_code_120_base64 = VALUES(qr_code_120_base64)`, + [ + next.company_name || '', + next.company_street || '', + next.company_postal_city || '', + next.company_country || '', + next.qr_code_60_base64 ?? null, + next.qr_code_120_base64 ?? null, + ] ); return this.get(); } diff --git a/server.js b/server.js index 5268713..47e0922 100644 --- a/server.js +++ b/server.js @@ -19,6 +19,9 @@ const RenewalCronService = require('./services/abonemments/RenewalCronService'); const app = express(); const PORT = process.env.PORT || 3001; +// Increase body size limits for base64 payloads (e.g. QR code images) +const JSON_LIMIT = process.env.JSON_LIMIT || '2mb'; + // CORS configuration const ALLOWED_ORIGINS = (process.env.CORS_ALLOWED_ORIGINS) .split(',') @@ -41,7 +44,8 @@ const corsOptions = { app.use(cors(corsOptions)); // Middleware -app.use(express.json()); +app.use(express.json({ limit: JSON_LIMIT })); +app.use(express.urlencoded({ extended: true, limit: JSON_LIMIT })); app.use(cookieParser()); // -- Replace inline console logging with structured request logger -- diff --git a/services/invoice/InvoiceService.js b/services/invoice/InvoiceService.js index 04485fc..998821c 100644 --- a/services/invoice/InvoiceService.js +++ b/services/invoice/InvoiceService.js @@ -8,12 +8,114 @@ const { GetObjectCommand, PutObjectCommand } = require('@aws-sdk/client-s3'); const { s3: sharedExoscaleClient } = require('../../utils/exoscaleUploader'); const { logger } = require('../../middleware/logger'); const puppeteer = require('puppeteer'); +const fs = require('fs/promises'); +const path = require('path'); const CompanySettingsRepository = require('../../repositories/settings/CompanySettingsRepository'); class InvoiceService { constructor() { this.repo = new InvoiceRepository(); + this._qrDataUriCache = new Map(); + } + + _inferImageMimeFromBase64(base64) { + const s = String(base64 || '').trim(); + if (!s) return 'image/png'; + if (s.startsWith('iVBORw0KGgo')) return 'image/png'; + if (s.startsWith('/9j/')) return 'image/jpeg'; + if (s.startsWith('R0lGOD')) return 'image/gif'; + return 'image/png'; + } + + _templateHasVars(template, varNames) { + if (!template) return false; + return varNames.every((name) => { + const re = new RegExp(`{{\\s*${name}\\s*}}`); + return re.test(template); + }); + } + + async _loadLocalInvoiceTemplateHtml() { + try { + const filePath = path.resolve(__dirname, '../../templates/invoice/invoiceTemplate.html'); + return await fs.readFile(filePath, 'utf8'); + } catch (e) { + logger.warn('InvoiceService._loadLocalInvoiceTemplateHtml:error', { message: e?.message }); + return null; + } + } + + _resolvePieceCountForQr(abonement) { + const packGroup = String(abonement?.pack_group || '').toLowerCase(); + if (packGroup.includes('120')) return 120; + if (packGroup.includes('60')) return 60; + + const breakdown = Array.isArray(abonement?.pack_breakdown) ? abonement.pack_breakdown : []; + const totalPacks = breakdown.reduce((sum, item) => sum + Number(item?.packs || 0), 0); + const piecesByPack = totalPacks ? totalPacks * 10 : null; + if (piecesByPack === 60 || piecesByPack === 120) return piecesByPack; + + return null; + } + + _getLocalQrImagePath(pieceCount) { + const safePieceCount = pieceCount === 120 ? 120 : 60; + const fileName = safePieceCount === 120 ? 'qr_120.png' : 'qr_60.png'; + return path.resolve(__dirname, '../../templates/invoice/qr', fileName); + } + + async _getCompanySettingsQrDataUri(pieceCount) { + const safePieceCount = pieceCount === 120 ? 120 : 60; + try { + const repo = new CompanySettingsRepository(); + const row = await repo.get(); + const raw = safePieceCount === 120 ? row?.qr_code_120_base64 : row?.qr_code_60_base64; + const value = (raw == null) ? '' : String(raw).trim(); + if (!value) return null; + if (value.startsWith('data:image/')) return value; + const mime = this._inferImageMimeFromBase64(value); + return `data:${mime};base64,${value}`; + } catch (e) { + logger.warn('InvoiceService._getCompanySettingsQrDataUri:error', { + pieceCount: safePieceCount, + message: e?.message, + }); + return null; + } + } + + async _getLocalQrDataUri(pieceCount) { + const safePieceCount = pieceCount === 120 ? 120 : 60; + + if (this._qrDataUriCache.has(safePieceCount)) { + return this._qrDataUriCache.get(safePieceCount); + } + + const filePath = this._getLocalQrImagePath(safePieceCount); + try { + const buffer = await fs.readFile(filePath); + const dataUri = `data:image/png;base64,${buffer.toString('base64')}`; + this._qrDataUriCache.set(safePieceCount, dataUri); + return dataUri; + } catch (e) { + logger.warn('InvoiceService._getLocalQrDataUri:missing_qr_file', { + pieceCount: safePieceCount, + filePath, + message: e?.message, + }); + return null; + } + } + + async _buildQrCodeImageTag({ abonement }) { + const pieceCount = this._resolvePieceCountForQr(abonement); + if (!pieceCount) return ''; + + const dataUri = await this._getCompanySettingsQrDataUri(pieceCount) || await this._getLocalQrDataUri(pieceCount); + if (!dataUri) return ''; + + return `QR Code`; } _escapeHtml(value) { @@ -175,13 +277,47 @@ class InvoiceService { Key: selected.storageKey, }); const obj = await sharedExoscaleClient.send(command); - return await this._s3BodyToString(obj.Body) || null; + const html = await this._s3BodyToString(obj.Body) || null; + if (!html) return null; + return html; } catch (e) { logger.warn('InvoiceService._loadInvoiceHtmlTemplate:error', { message: e?.message }); return null; } } + _getProfitPlanetBankBlockHtml({ bankAccountHolder, bankIban, bankBic }) { + return `${this._escapeHtml(bankAccountHolder)}
${this._escapeHtml(bankIban)}
${this._escapeHtml(bankBic)}`; + } + + _prepareVariablesForTemplate(templateHtml, variables) { + // Ensure backwards compatibility with older templates that only contain {{paymentInfoText}} + // by injecting the Profit Planet bank block (and optionally QR) into paymentInfoText. + if (!templateHtml) return variables; + + const supportsBankVars = this._templateHasVars(templateHtml, ['bankAccountHolder', 'bankIban', 'bankBic']); + const supportsQrVar = this._templateHasVars(templateHtml, ['qrCodeImage']); + + const bankBlock = this._getProfitPlanetBankBlockHtml({ + bankAccountHolder: variables.bankAccountHolder || 'Profit Planet GmbH', + bankIban: variables.bankIban || '', + bankBic: variables.bankBic || '', + }); + + const next = { ...variables }; + if (!supportsBankVars) { + // Replace the default instruction text entirely with bank info + next.paymentInfoText = bankBlock; + } + + if (!supportsQrVar && variables.qrCodeImage) { + // Append QR under payment info text when there's no dedicated placeholder + next.paymentInfoText = `${next.paymentInfoText || ''}

${variables.qrCodeImage}`; + } + + return next; + } + async _buildInvoiceTemplateVariables({ invoice, items, abonement, lang }) { const isDe = lang === 'de'; const isGift = abonement?.details?.is_for_self === false; @@ -189,15 +325,33 @@ class InvoiceService { const dueAt = invoice.due_at ? new Date(invoice.due_at).toISOString().slice(0, 10) : '-'; const vatRate = invoice.vat_rate != null ? Number(invoice.vat_rate) : 0; - // Load company info from DB - let companyInfo = { company_name: 'ProfitPlanet GmbH', company_street: '', company_postal_city: '', company_country: 'Germany' }; - try { - const repo = new CompanySettingsRepository(); - const row = await repo.get(); - if (row) companyInfo = row; - } catch (e) { - logger.warn('InvoiceService._buildInvoiceTemplateVariables:company_settings_error', { message: e?.message }); - } + // Hardcoded bank info (Profit Planet) + const bankAccountHolder = 'Profit Planet GmbH'; + const bankIban = 'AT16 2081 5000 4639 9507'; + const bankBic = 'STSPAT2GXXX'; + + // Hardcoded footer/contact info (Profit Planet) + const footerText = [ + 'Profit Planet GmbH', + 'Kärntner Straße 227', + '8053 Graz', + '', + 'Kontakt', + 'Telefon: 0676 344 0274', + 'E-Mail: office@profit-planet.com', + '', + 'Profit Planet GmbH', + bankIban, + bankBic, + ].join('
'); + + // Hardcoded company address (Profit Planet) + const companyInfo = { + company_name: 'Profit Planet GmbH', + company_street: 'Kärntner Straße 227', + company_postal_city: '8053 Graz', + company_country: '', + }; // For gift subscriptions: "Bill To" = recipient, "Ordered by" = purchaser // For self subscriptions: "Bill To" = the subscriber @@ -223,6 +377,8 @@ class InvoiceService { customerEmail = abonement?.email || invoice.buyer_email || ''; } + const qrCodeImage = await this._buildQrCodeImageTag({ abonement }); + return { lang: isDe ? 'de' : 'en', documentTitle: isDe ? 'Rechnung' : 'Invoice', @@ -263,9 +419,11 @@ class InvoiceService { paymentInfoText: isDe ? 'Bitte überweisen Sie den Gesamtbetrag unter Angabe der Rechnungsnummer.' : 'Please transfer the total amount stating the invoice number as reference.', - footerText: isDe - ? 'Vielen Dank für Ihr Vertrauen.' - : 'Thank you for your business.', + bankAccountHolder: this._escapeHtml(bankAccountHolder), + bankIban: this._escapeHtml(bankIban), + bankBic: this._escapeHtml(bankBic), + qrCodeImage, + footerText, // Legacy key used by S3-stored templates itemsHtml: this._buildItemsHtml(items, invoice.currency), }; @@ -276,7 +434,8 @@ class InvoiceService { const template = await this._loadInvoiceHtmlTemplate(); if (template) { - return this._renderTemplate(template, variables); + const varsForTemplate = this._prepareVariablesForTemplate(template, variables); + return this._renderTemplate(template, varsForTemplate); } // Absolute fallback if template file is missing @@ -309,10 +468,11 @@ class InvoiceService { }); const obj = await sharedExoscaleClient.send(command); const html = await this._s3BodyToString(obj.Body); - return html || null; + if (!html) return await this._loadLocalInvoiceTemplateHtml(); + return html; } catch (error) { logger.warn('InvoiceService._loadInvoiceTemplateHtml:error', { message: error?.message }); - return null; + return await this._loadLocalInvoiceTemplateHtml(); } } @@ -372,7 +532,30 @@ class InvoiceService { let html = null; if (templateHtml) { - html = this._renderTemplate(templateHtml, variables); + const supportsBankVars = this._templateHasVars(templateHtml, ['bankAccountHolder', 'bankIban', 'bankBic']); + const supportsQrVar = this._templateHasVars(templateHtml, ['qrCodeImage']); + const pieceCountForQr = this._resolvePieceCountForQr(abonement); + logger.info('InvoiceService._sendInvoiceEmail:template_compat', { + invoiceId: invoice?.id, + lang, + supportsBankVars, + supportsQrVar, + pieceCountForQr, + hasQrImage: Boolean(variables?.qrCodeImage), + }); + + const varsForTemplate = this._prepareVariablesForTemplate(templateHtml, variables); + html = this._renderTemplate(templateHtml, varsForTemplate); + + // Final guard: if we still didn't embed QR but we expected one, force local template + const missingQr = variables.qrCodeImage && !html.includes('data:image/png;base64,'); + if (missingQr) { + const localTemplate = await this._loadLocalInvoiceTemplateHtml(); + if (localTemplate) { + const varsForLocal = this._prepareVariablesForTemplate(localTemplate, variables); + html = this._renderTemplate(localTemplate, varsForLocal); + } + } } const htmlForPdf = html || await this._buildFallbackInvoiceHtml({ invoice, items, abonement, lang }); diff --git a/templates/abo/abo-contract-template.html b/templates/abo/abo-contract-template.html index 9367398..3342b3b 100644 --- a/templates/abo/abo-contract-template.html +++ b/templates/abo/abo-contract-template.html @@ -536,8 +536,10 @@

(c) fremde Produkte auf den gestellten Kaffeemaschinen zubereitet.

(3) Im Falle einer außerordentlichen fristlosen Kündigung durch Profit Planet GmbH, behält sich diese vor, dem Kunden eine Deckungsausgleichzahlung für die Restlaufzeit in Höhe von 25% der vereinbarten Mindestabnahmemenge, sowie der vertraglich vereinbarten Mietzinsen in Rechnung zu stellen. Die Geltendmachung weiteren Schadensersatzes bleibt vorbehalten. Dem Kunden bleibt der Nachweis offen, dass kein oder ein wesentlich geringerer Schaden entstanden ist.

-

§ 7 Eigentumsverhältnisse

-

Die gelieferten Maschinen bleiben Eigentum von Profit Planet GmbH.

+
+

§ 7 Eigentumsverhältnisse

+

Die gelieferten Maschinen bleiben Eigentum von Profit Planet GmbH.

+
diff --git a/templates/invoice/invoiceTemplate.html b/templates/invoice/invoiceTemplate.html index f4d9e5b..9e541ae 100644 --- a/templates/invoice/invoiceTemplate.html +++ b/templates/invoice/invoiceTemplate.html @@ -179,6 +179,41 @@ line-height: 1.6; } + .payment-grid { + display: flex; + justify-content: space-between; + gap: 20px; + align-items: flex-start; + } + .payment-text { + flex: 1; + min-width: 0; + } + .payment-qr { + flex: 0 0 auto; + width: 170px; + text-align: right; + } + .payment-qr img { + width: 160px; + height: 160px; + object-fit: contain; + display: inline-block; + background: #ffffff; + border-radius: 6px; + padding: 6px; + } + + @media (max-width: 560px) { + .payment-grid { + flex-direction: column; + } + .payment-qr { + width: auto; + text-align: left; + } + } + /* ── Footer ────────────────────────────────── */ .footer { border-top: 1px solid #e5e7eb; @@ -195,7 +230,7 @@
-
{{companyName}}
+
Profit Planet GmbH
Coffee Subscription Service
@@ -210,10 +245,9 @@

{{fromLabel}}

- {{companyName}}
- {{companyStreet}}
- {{companyPostalCity}}
- {{companyCountry}} + Profit Planet GmbH
+ Kärntner Straße 227
+ 8053 Graz

@@ -273,13 +307,24 @@
-

{{paymentInfoTitle}}

-

{{paymentInfoText}}

+

PAYMENT INFORMATION

+
+
+

+ Profit Planet GmbH
+ AT16 2081 5000 4639 9507
+ STSPAT2GXXX +

+

+ Please use the Invoice number as a reference when making the payment. +

+
+
{{qrCodeImage}}
+
diff --git a/templates/invoice/qr/README.md b/templates/invoice/qr/README.md new file mode 100644 index 0000000..6773a9f --- /dev/null +++ b/templates/invoice/qr/README.md @@ -0,0 +1,6 @@ +Place the locally-stored QR code images here: + +- `qr_60.png` — QR for the 60-piece abo +- `qr_120.png` — QR for the 120-piece abo + +The invoice PDF renderer embeds these files as base64 data-URIs so Puppeteer can render them without network access. diff --git a/templates/invoice/qr/qr_120.png b/templates/invoice/qr/qr_120.png new file mode 100644 index 0000000000000000000000000000000000000000..80e38a73969d80f5111b1cbbe556fe8995aed5e5 GIT binary patch literal 39648 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
H5JkN!Do zcWaR=z`sPZH7_NDG(1F+lgiiih<;f{*;3s7ClUtj9nAk!N^7xK8yowdn+H+KY(1g) z{mVI{cIu~iAioWiFA#?BMCjld*zp|K;FGU6$Q}R}RImozT><+Yq6mHK-M^Q6@QrT* z$}o38g~5KsI=Y4j3f>r5bjc^bjcX3h{jL_J*eoKk1`y775>e-nON#fwHVCv+!InaJ zs;TBPYCeJ(1T5RO(@QDg`7Q7nG3>pb*_|SxOct~OJ1iLr&t^X7%QBWWLEzO##j=t2 zlocp%N#Dk$6=>5W((25SDdrdKgjc@5q~)ZB0vUiX_vjMjLzs9IHE;pmu=)$RH_&p5 zDs|1Rm}wPUxe|UcrhfxGM!pM*WRFI$?CMge)70BBG1jtnZ;{Rb{>Wdm3_@T^m#tDQ z@pGbGj#74S6;?7TQ)83MWL_TT7 zB#+=_I4uENcl}V71cgZ_`$BcWgTmbpj=UZo3#bBBvRUF=56#Y0UE+fCFckZEtT?EE z7_f)J`qDHCU~iIyrU#Q7*uA5oHuBoYz794FD6+J(gRWfb;6y{wzF8s9PT!H1JaA%a zi<*x@a|3C0Z61SNIW*hr4~Q1+NT1`g=;gl~F;^1fl)_^uge5P6y&9c+e7OcJU;`jK zmJ=1B3vziV+r&Y_S_rt60`vJk|8LX0tE0cDi6JvVRuq9JTF~C=QGkPJ#fT5=^s(as zNzR2fPyrb>?1b|LmhjQbWRThEU<*p3*IKdsAMLEBHD`n}$Y1lV4(PG~ z&@#|`^eGq#E_M0(axtjj+Gr3|m@Yv!VQ&s9)~hwt_2RDCI+Zs8yc3a29w~RVXeVg) zd58fUNE8VohoP5~#0>xOwtuPa|APUr=}H+(=1uHayCR&wIhud2Kbo>4C_r;q6G;CR z#x}f8+6-~9LsWtFo2KsA4OJu%^I@SfB!Ul;WN6I?WJ4(k6uj^_0;j4E?5%&{NVl)A aDkwC>f>03hR=c8EwGUD&;GxZaefU48ZKeYN literal 0 HcmV?d00001 diff --git a/templates/invoice/qr/qr_60.png b/templates/invoice/qr/qr_60.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd81c71b2b2a193ef9a3c27e5b44c817cf4901a GIT binary patch literal 35641 zcmeEubwCtr+xINx0t+nNxb%XcOGzzCmvo4t(h6dLG>A$!h=_`ml%$9v9Be58>9nv= zKoCS)6yv*hXE+ag4(Ghj`~CZUh%-C0Gk0F`yMNbp^ZWVlcM#TC-$)-qp&$qa{z1Qo zAsq-!N4JTN7QJcHCVF}_1BQbM!^nu?Wn*XI5ain|B*-TqfD_v)i4&0#6%fEHOUV%A z6crUWOR8$9$P>3JD9V!xLDAFGV;C_!OiVoT!UDqb|LdRMjSwpuwTN1zMu|XFtSD+$ z)bD194}z#s;0OB84=o)HH5KVQ4vO342Y$bVFw`iB3QLWJAga^6$s*p~lAEZIgS00d zrYU^K`5*}5QDCO|Zu+jqP1+N@$f&Pfoafr2!ak`S(U+Pnz_Sb;QjBk?&laFZ4rQef z{VPccs?@A4jha>TRQJUgzBT3C*SkZ=eHM=!dE{zg#^F|LM969M_ReWA7j{fauWPzZ z^NC^BUOtsSPIh)ivUjH@GyC#ZH@eXVYnh#SSMq3P*w3R3O)re#?4rUQ*l0sXy5ESr zf=IVH=Q+na-NGFVY0r3+&=R9V!*fYrai^giRg=_h+Ne8^y}~lH-c$DAyi}FpOu+Lneor6C>PYG%3I>mjod zRZ=t9xJsiwgqgj2rHYhy9*pg_f$aE~ODv|E5DoN>J%uZ`a>OH+$~yxLrx}f1WJ)OF4CD)#Jj=yE2NV%K(5<_QG4dOwxn z8#Qk~7`zO#5fv4$q##4fEN1z~LA9xD7}7gb3$;c#6*Ff34?=7lhnkXZI!Jo!y7!gt zbHGbI@l0he-7-*ZzfpM*t*JJy4ju7IgwZ=rwh??>g(N`T`zkZNw-p}7Sr~+yji^Tm zUywc#^#}HgGnQpgIS;%eQsV6%R~ILw9>+BN+JoLRHKj~sQ(S%B<2o(uz9_BZthBdv zxkkXpQ(+J)GQ^kqdHEdpBzN~-dR2B9cXhlS5ma8QPkpd-5DTa^$N`g%;H<2oIizwE3P~IH$;`A9yMA| zml$L(T%V04?CC6lAXvz6OEnxW7rDgxCVZc^sQxM1(C83h+54Y?O43A!hS@b9Rh0bP zETBB?nOfCiyl>A?G2-2-_0IFmYeOjJSMZ3tp!mv1_lKMDwBt#r4L}pIV0bPMF!!=v^pYt_eY6TSjT$LA1Z2vxi$~H1`L_)u{$)X7{#V zP^ph&Oqt^vZ49LE@WIKph28$bdfYtkbXc7T)teIsf;Fskxlc(>psX$8KAglk&Fniz zd)s^Rvr1D9XHY##MBO{?wH4?9tcn=^febJQms?Sr!y8Yu9ECLW91b@B!VP3F{&=aS z@{aBO8SLRs+8umuqfLXhA0_fg6+vK-7d%T)XPxMnCOa8}V*e;>tStHoNqT2zxYdx2 z&DOggdl~mq73TrP3&94YL%kyzGfD|X4zEiDPFwmfY43y+xH948>yPEQ>awmFWvIO#a^jN&H6<06|zG|fj_v$u?H>57}6 z3eBVciB{yCd_|=k1_58trrajVD=YO%(pytSodY-(vfDuAihS}jQ(^G?DB|Z`v*g97 z>#o_i_jLBC*|X9RPogyNBUERCpS)b+YmM+GsSHZ>OTAs2hM=yc+1Uwk-Z+K3^O6Fx z8vB~}g+V#3Y<%~hy8=y=dZibzWuWx^K?W_shl2GY_I7EQ*nAbsv>}{`{WkBnH_Npj z@$%SoKqGf>ByFW8>dmm8qWMLwP8ZyoMyGK3Ws#%S6)n~)`an=nO}_f^rnCY;r>x#G zzk`S;%?Kh?*M0SZVQa&2OpJk~6rU=*!#qo6$8N-)M1v2EV3Jm~>@raF{1orr+_O$(71#ot0;}wn z0kV^^OJbI9iCR2Kzlmv;uZV1SMsC-0B^6=ZcLm9|EV4Z3)U4UdS*Bq%*k3r8tO+RZ#tYDOxPD;;KYy_Wx)S}S}98Nz~YrW(WU+po`8rd z#nxfqQLySk9}#N@(P_kYzK2Rq2s>&4YRBOIJ`DLO{=)3IG7Lp3L zTmiNU`kL{5 z8{L8Pk>M&Tv!y(Y4QKsLjfPCvBco=(ye{f~Jyo8t+c1!sDBU0UdD5fJj7fFjxx4K% zbY`*r{UzChYDWWi=6P4Nu=<<$2N#IE!9g6t&GyU z{Xd~Hx}d~YVqs4_faed!xvGYda2Jkbp|%Txsaxbz2m==JMn#;*bgF=)?6Vt-I(Avi zC%EPyh^~p(ft_n55CV?R$K|2+{nxF;@Z-9)k8a!jiIK)esC-_<0bSXu-n{R8d1aH@ zixR4N5+buLEA3CUlUXo{rj~634R*f&?V1xWR=5 z%{NWBbl{O{h3SDC>q&kx~H*rx7==~|O_6_Jnwf%bE-Jm2yn1i5#c&n`6g8Av%C zo&mlExU;I%=X=vo0Kf+005DUydSCB0`eI`HQUMP7Y~_BU^(KUgz6vAWD_UOJsR+!2 zAogfpSu3Cr;Edz%-RWc~csn{Yrm^#48AS5TWTdqQx^~pl5AA*@?Fsyf!E*o~lnSWq zi$td(NQAEs6alOs(3WN7OnX}_faVMttnH{LefeMgP_Hd1AZqZu@Inu9!{1qI3?Uk$ zkPK0^s>~bUskDjYJH$CNLSr4b4Xr7uq46b^-Do zA~>=|LnG!yh?Yp*LwrYzNA6NgRZ zk_qySG}Ij`@+i<>n#NY*0zF198AC+_HSH3hHj|l+B0%9P3ZOlp5HrF;5AY2dV9bSDT4Axj0HwWW2gxFi^xw0 zBo7hgx^XCaXs#WCT4DJiG%;c7n^Ztw2(>r)6nX4o7LF-y+p)*WupA0M za#HK@$?aMR^=Vfvba(B0fo|WPllimZp?q@5p-0|cG1hLIWu(MxAF*(qC-qU@+p;#L9YkY*WkG?(wcoAR#_+5Vh8TwFi?P^G1iVnsMTbYrj@m zyTnPC@@Sgcy+FSHfPWcqdM)%U{^ZoJtLodVp`>#1M?7R_0S=9DRN*;MRH02rEXQxF&4l4$|aVa;FwF%cl z*{J0gy`Ddd6@FG!Yyq80oqFIG5D|iVsXXJ;YptuUJ>UPwaV}0<{hO`XM=)#_kChmF zgtZbBV{4R4s`e|?J8_iR*Al}tESr2WAKDH)D>1w1(HX0`WFl?ZWvXFJkzaQnvl*_dFv8|Po3lj&+HzsDA zH#py9TIn#+w*t!Bx`{Eb**R>oRHUbOMVnkL747Qy_2Wah1n;BldtdgCnaoshs0<#3+IgT>A3fb!j`Q&mW9CcDj!zABa5&Z(VwJ62h8bs>c& z6ZL0xHbvf&Jh-+TTGee?C5a zR68w0ip4_|ZU@qwk@HXI$D=$aP57FNZ+fs!mJ|qfJumI@VGS{HYo>l7RM9V4`C?@D zlTGFB6fL3KNa@1u1qW5>KyheTPx$+H2{Ukq4ngp>1zjSt-4Rd{QlKc?YFR*+2$z!YmjyW% z-EqSz)w>Qbc^SSTKc~&}lBwqEFk)$t9yZUkIob^h?8~m<=wt4EpkDiIXfaBzhX3%c zKNepey~nL*BvOnMtNcuJkpE#9^T^u}t0&4cNofU6khs?&`4c4`kAjZJC%Pzx7SOP= zT}(NXzTJe&FHOHVGMhnB-%Rl{_ZOz#v4&A&>fL#pgd^#VvkT3Y4cg_C-yVwf{*sh^ z_~o`Y{Q2ou>9#PG@oKTkI(m4mm(=^;_a`+LbF?y~13L~^w&6Q!X@3N~>&X5To;)ag zSD=lrV93_kzf72>!7ye<#QLjYfo_7Xhp=Y8A@fRl*QL;jC(<_c(1i!7_dglG7>?ZP zTTZ8J5i{Y7^Gvk0m3mqf#ZD{2Uu87b)=7A7Eg)^F=eUg29(A6^QbcbY6lHQiFgG`S zJJY0iYD`_J^HT0d-DBB%#jnTI6;X8IJ;ie_fo|I>J~7L7+cS8?dN{0~myn6iG>cj_ zUK@%)O0T&tzd_=<>8V@Uym!V=|HYa(eYy5kP4wsk-yKU8Umy7egoIc;S1!7!&G#lh z_UXwS);~_TUA)Wp=G^)ju8XI5F8+1u!>Ur1I#my;0>S){z#~-^lW0nJMDhGDF4zGb zCtGNpm8~f~=EnSVt7MafD81aRVUNUW3u2(w^z;>sO|5WfafJ z$sG+mYNHtexmxxtBxMJ_6n>*#C@Huc7nm~fr1eyR;D@{NC*FF*2F=8qTn*ToR9|BeWAYr0BJL!T733#wEp$IoWFeR$Z%JolPyyw&5e zA~Q}xmiTtZRx|a_*e`;8=Tla7)m#0LN0_q&0Telbk_*YN4ofV$prnX>=UhOEE)Z0( z`V1b!*4?LvI8)BW)rt|)J)pPjhpSmKFNh`Np@r&dxHF&ZzjxfW%`dEYiuE;95%W2} zv|=?cVI1Vc@HA2)?R@X5F~WRs{TiA$II z_i^&O&|&c8x^I!VEU{6;am)IVqI5Bv-~F>>#?HYS+5+1#X7wqp?(|`=Co)k=4|G~6 zjL>hu43f+hwx##j)va&D`(8{=>Nvg8_n5njOWS3O^QE;&;m>dv(w_P6Ptg}G8ym}u zubueFLm`_F>eGI_?LIaqr>DBh=X&#Pag1jK@yC@f?JCEevx6D$iXXwh-=9{Vd9x+c z;AgD6{LyEsbdj8L*tM$Tw_MG+rTR?6l`7rWvX}cd{Fc})ZnHN6i4}YDa&`_<7a?wx z32iHc(}@7KwW2^2lz^K`KEfvS+g<&XBTr~bnC=94ete(Sm5kxd?5cfr#w{q zvyK|s7knORyR(IZy(Bj!HHGHV_%C0t*sA@za&jtc2_9()SMxR%t7)}IbZPbxa;;k5QnUYn9#jv z1|E_HOoba5`&cT-1;m%l}0Z(JOw)O6Wmcr|Bp*nx0 z*aqE=ud^AIj}VtL6rtj14zHegsCq$9n+_9fVy~vX_`2|dM4~|Qkeq&s1@5e-j(&<& zP(*^VO_X$)gj^gB;%FiEsOdDL?{fC-<8F}F>9fx)E-7E&*Z3pup2+F6L^)wAlU4zo z4~Nvm|1<&r)0{bFDxHk?G&itZ8m(Lz%51gNS6sXMM|i)4el-b6b4^k6Q142f12zExaFt zVF}yi>MuFG;>H;eTU|AGu|kRLW_&n0HND0+Y$@~u{`Im)AoEJQ@~KS0riVfgEa&UX z^DMBkj)zty%L#i(<%|DW{%q16-fG-8Ux9L|ZkqAY(N&$x)He3zWoETvxC|-m>)`Yk z0r&(XPC1m4mxm}^^y)LjARiDv`Z?hU35b{zVjbK6f?0ZgJ+k9mo_#ya*wHortp({% z`temo_1IA3LmdzO+%8BvLB?;|95TAIYXGJa(YEUArXE^|Fw4GgQE4NhsTWJ}y_?ff~pA%4=9Fc;KQZZ@HVHVcffR2~=^|=u}c+;EViM>T82=Nmcz1 zsq5a5T-o@y#I53)l8nm+!2X*7Zg zdG){C(zzYD@s~{LoS8*srA4FEOx)v?Gc!{2v%fpduvwo37ojhdSSbkcqA(I+d6%{q zeIz6XK|K_H=IsW{US#ETwsMo2^|41}0M5d>l=sp2*rR%~taU7qm&eF+urJhwLCJM8 z+|vIEqqGypDJ~sPx!>vIcjx*jORK0;L$R=W;P+;#a(NAXJ%`~oY`x({QY_cxgJ=6b zpGMw&ND}?(rOwr-Rc{u^Zq&u-NPguc1%?Uwm!>)V3kULGd;0ZneYS>A!cfwyI=m`h zYIN=gIv|UW8EekW@^c;Zxhhw+_aUk_=43NsTC2*Gr<%N{SOC0&dyTt&aJ-`xekPw7*Yg=FUlW1ixCGhMu#e(G{; zB0?1H9eg}s5GBGegfB5)LQV1@c;cPWX|IplSB`DSfIk@nDwpep+sCUiNxV5qe`Iu5fdd1 zD4fQ$%bKV!2twKL6rUi~zVAYScmv+mhV|pZip7j_a1JLQd4tV*+{c<>l3GLWO*Bt(QL<28F}W#>H6Y zR*=6ShXt-g?;usFwV^-aqTz?2rLrUvJTb_CM%Gq?uAK`-L`?*WoK@&fouh&Qf~JP2 zE6R9`m316aaUk122c)X?tun>#?R;!&Vfd-o6R*l>$ReibF(w&@FZ4ImE~RqiiGWZh za1Bw<^gO+dQx|=Ql$1Yi1YHO|f(r4>mQs;<+Hnv&4}%4%<_!>C6OQfXacd|n;$YFH zF$U>O@oVMLIR6X}xC>aFbK0mjCpm*6x~#9-5gjfoVkse8tZizR^w%RnwwM&_OcCEY zo2v}Lx)FlZ>ldS5eB_lWvl6_TcuTPgptQZnAO>}kiAmTxzlRqpEbErb?_qsJ$g$V! z*Y#&2)-8j**p4pgGZ~j_TC!?5dLkS~)WNo{bDKIc#w^XeC6y&5Us8I~f}>BiGbf~J zJEO$CJeOgQKf8SN-l!G{tndM_a{Br5KCf2b zr-Qa2M03P$vq8Kxi$m!*CtC|Vnyc#8NyNiv8C$pvmKPnQ(Oo)~|6nWNQ64LG`)jt8 zWaw0l(Hrs=+~fp=NDMWJ5Fzt;x2ws_*x#W;jQr@qrCEKIX9bzh#(Qj>K&iB>>_f|i z2>S9Hoq5IU8-_|AqQ~Q}>Fw&)K}BRBkW6fWvzX_olp!a+plTJds$NPtsvfUOvGMe~ zo>BvH9%hUv!3^>`KYojnk+r2!8y(-ayX&bSwp1lO7isHCBMcpbuJQ>AenEK#Ayr^< z4u+v?q{;^H0uU%9Hsu4%=df_C_W(iDWWf51@qgs|&M2*c3NqXLf5+<0lc!+rP-pt- z!7?#%6!p{PHD=_}c6EKJJit;M9{+}LdwX{cK39`3509d`a4G|dS8!dD-EQNEbKz7{ z4g2vU`-;bI%}EZkvXo>Re1-=rz_?cf+Y-un36PSbhb!!AXQYi1I#@*(vg<915pN%R zE#2jYSZO*bjPpn;Bx{qttpy=0t?CvMN@}tb3wTwLO2csc-dD0~d;y~n-D0bI-1@fG z5;(Dn>Ey|z3mtXsTXl+Pl?2{vIN~Xr((LN~M<4gWZ!oPY_83Hfg1epY)(B3~ne^%Z zo?(qWGN8AwlROFWx5PKsN*mE@YA!t}MTjEtu9Ut64*^XR`{0M(F#kj(lTkYx)T_CN zmNp5&%sLs`9h}O(HQ1k0{{f~!m-=4PPegjm!PEbU4Dl!yEfhdkUsceA@*U%6>Z9K&7#jN)P zFc8E=zqNRZM#%g9)1U3jB6ZVkWg!iY#fI@O=_bu;i|GxTtHL1&n@s7|DX%C(AK4w5 z_biz2+9sh4ma&M(e!rd)&@s9<1}KjzBa=L6RrpzOhr}1@k%20^taNPz2Ou=dh9_($ z(Pu=F)4tl12kl)hkSB+5H5zWObE%;m_Wi)>H4OK)Gl>F#3?-)bkE;Pc{CPg?4t7sH^$u7l1 zI(Z?*ocQsQJlBl~8CVJ?*(JUZR{W-hDh%+k{~8(l+hjCRj#f)njZaaZ>$$td_`Y@; z)(LdFqEB`od(Pdfc;yl;XRIv?Okb*6dE9J!ZO!2^MulFaSx<$?;f!?mWS1Aa zFk^!;9DcOZFiEi<8R)~y{`F`;Sjl=%ZJI?1b9J&ZOm}QRy!>SmADDiC!-K?1bnO{L ziiCL;hV2K~p4xJv1rNz`$Mv;GQIk5h7*6xo_pe9OUVJ=jB(S)EG9&s4H>ssNFvDpgo4pEa_hH4ya! z&;u$O4OaDbMYUy>x(AgTPnkEn^*sK$v(v=whtR9?k*R*q8r#Cet=ZlueZ|A7j4G_{ z-Ll4Bm%*7QK8$UViE3M=h#AhN8UhZ5mp#8o_E&Vq%q+AVmAUp48 zr3tO$V5O`<@_UTa zxoQ=yc@^f)m@i?Jy$DSWYibh78~ zd2wtlmg})LSUAGLPjZ>d6+RlAkCT%k@5s!ve}Cjj$a!5J@H}W zu+P9jy?HueYwHY_o+nS1W3B9D`7itC2up=Tk@y7-Q~Wd|;^=h_eLRQXnu8XI!3fgN zCli0}#8W0rM3sEry(gX{(aIO4oyznZsvncvTVBSMV5aq_heyI6YtfiB`e8p?NQROp zl}@^MdRZHXuV3gIBjES^vj8u39DU*tQ##E7v9hwfSZb!VY!ovId?!IgBwO0r)N6hj zPJ@{pYmh99+?^+;Y5?Ms;RebE-D`m*U)LI!%uQH!u3WEd={%A6A!RuRi9Z<)S2=xW zM;hyBW2wsEy{k66)$~OMQyVSws6$n~jXpUImC`d?Hd>Y7EW7&F0$BOH3G(S$31h11 z=GjJF9UWi)k}=}@8@gfp_*4?ha^t-3kB62BHzS=Hn4KbI~cZ_LF|KN}y{TsT8}h#bfA{WG(* z0e=$w&wN}8h;|S}Mz2}$1y3M=B+AkhgpKsdHOJ9#gBA`a7RSe9cbDlN{*{MtCDDFR!xodgUp1-B zbA#Ln^2zAX)|~sQ+`DgTshug^Wa#j(6u}p>;;orPVbCBw@H7j^86c;f7*Oq6IHOwE zbl7)y0)4M>SrqWIx4dtZmn)?ZKkRXSm7f5@QP{l4Cb}B=pB{*~y&m7poD)*( zF@~K&IuC*sq)Z_0Ztc>`ao$D640LP!%bAr>F5&Nc?2iBotr+_21i~dnRc2kByk4%9 zZjtAk>^#Q$kCaPqb-T(QTbm)!k`3ZoOqZ42_W_9Z>PLa{6?fGfkfC#LpWxKi%TZ`cgswtQ%mz*E>yZGsLrmLP;dzHu!u!plAV6_xPo zf&I`8harL2mT+8+7rKz>lR-nnE{ofVzfx4tX=rm^t`#j1%@9Hd$J`p){JO=7-I5tKGGKzw3MeEQd#1Vf_a~Rql83%Ufj(0 zlVQknED6vF3=t37Z)A?yY$&Zf7_tVSiY)LvxeZ-^Ok3 zIE=`CkXc<~@VfMxM?EmDKf4}?dLa3a9l zwE0ovyBm+@cGq(F04sj3e$S=+JjSMyidW3bRw$0^Dp+6H`p@x+LM+}k zH!e)ddU_Nlv)sk5xy)>92LnCr|B#4Gd^^{qoC2Y(pQdAELvK=yBFRM_`9 zH+@C2wMD%r;Y`*uG9l1*fSLC0VV9agJQrw+ih0aV=ZFU9Gc&cG__1*S_{g}}`TSAS zd~B6NC9%eG;71)r?gJc*nS=8@&d$N)9YW5)?&T(8IpIu`N93U6{qMcLSGNztJPHy$ zO0%Ch5@N7Y{87!PHbsZtgu^GSub=fSvHQ{-oft#uE%wW{m=ldGQZcz<58%5TK6f9N zm$wV3C3$+W4yU)#h(;S*Oi;(^7#z0^ittncvD+{@sT2^qZ4v2F(rH3B?;S4mhhsk^Ws;v+5oTHbCxJoD}K z?~1azXXcMYxyUTo5D7_oxt_5xtZ}!xEM^WR=T(yxji_S09(r=!%XztC9rA zv7(U#wN%sKf@YYrEC8tPMi z*^EbSlwjSDv|1wZ+Dn&mLutSBvK-i$JnA&K))wM|nqxDMrT@i3hO!<5C0FayM)Q}L(fbD>SsYrnnvGPR4?7VY%DC%dmh`q%Ifl&a`qQV)%xjQrp*4ESo#vc` z>;WiyTtHlEK3d@QUjgvHq&rh0<+b)A(KN~osI~U~6#uMoVOpx%UN&j#LalZ{ ziU$5OM3>lV_<24NuyThZFZmkl-Zt};*|bGWL_X%L4UAu)_!5mZTe`Wwdl zYjW25@L%KnAIGvv?-~wS%Ez}U#inX+NK7I(|7)-se22NH(gj=K$|MlRu^0stbMaDb zU6%*^oHXBGRkGnL)I&W(0)sG}g@566Vyq#$z4gfW|=xZHJ*M_vfRmKi_O ztGOd~$tE6ee^|InGgd|;WUzBTDH6%irHN`PM^16f6CBW z7gNmGfKFV`p8kh^WQ#nfS|F(!MhY-`Oz^BHOL0QAa$#3}fV+YOcE%uCxfD@BB-@u_ z=^MQYM-4!d6TD@k`0D|$+ST=n$uf&**80$q7Ytq>lhZ`jco(C@8J6R=-u{zH_EH7w zNi<$_xmGtF?h5-{`^Cl3D!}&P-j$DhvaqkQEtYqG|Le;5+8iAuHos)WIMmt)AL$#I zPZ4ZAb0l%F>2!|gVxPIB4NMlUJ9bS`WPsyxc^eN~>-nM(sF&m}`5QW7&9ZN4i?!Wv z=!yqSCO)~6`29@A7Q5mr74nY3sg)=$VsLuk}updvciS zvn+({Rd_eOZPIy5-*3nUMx5|bx8+15Q~O1#t8|s7o?h~~fKiOuW?xCHotXSa@m#e# zfV2H1I9qoAL637b{<@N$FMVmlFX!pA>>mDe2}2&EWd`Qm3sOQVy@?+4gTG2x3eZ_+;Ft+9^R8Xcsj%M7BaCT~<=y8dq@B)sycR(FE~`zrkjmr>4e_8xme% zu_l9PtXkFno(G;kzhp;QMChbrEGMwVFuK<5^UpG|HKH|3J6I5b9fW*zB(EoZyJIru zjIyW+%MMvN>rng{ONxYM{uv4V-)ySea68^?`pe8p9mbA9iX!`P1 zIfTzt@-aBpeh1Plo^e}o>3}rIB3nfp!1Nqa z6eR`uH!4xm)Y4-%O7nuT)Ig89;Tt3zol%f|^^Tp(ezq7TEuquqU&oO2DMp#X=xAHh zJs-N2XWZY^p8k3pP6%6z2g6sadfO)=Kz0~)hVYBdETwKO63MB)mWbZ*j75565QLFa zsS}d=J^=815zxB~`DjxiRqsrO%DqY$8Wme+3m&8`xz)#eP+?|QJqPFGmJqzYK~CDb zN|Ajz_ENVqiqfuL(<)8{tU|c>w@2B-AK=rwv>2&U>vIek%OZ_@$_!Mek0NgD+4WYj zhRLk|7-3xxsn+jid1Kj*&MdEx(E21-x&gIDL3UDPew}{d5AdHzeiNO*Rap&Dg!laS zT=xyg(fG~NH&&ia?5?n5oF3>wFzGgYxyQxoa*pt)&INED8Pbk`&(+tSnJUu@jGJg) zm8#d(kNd}*{Am8I@kgW+qL^=SCBi`fIJ4^hlPN2Z`lYH%;vOZLOV?v6BuS1En^q*^ zRoOwBR|bPcNxFVYIK?QTrmT4w?C^1C38<$3?LH+qbE9r8DRSR>DE1KEiy}*zJw|$> zZUNc6KoMa6mt9elNmrr-IQMH9Gwx2PX(7iX-&~R#*+jRC-YVj0aRMCGMUG)Nx4m}d zoZVTr`zl9Y$1|9>WBd3D_p1HfCkxLSYtvO2fxUlC<|pBxuB)ons(l8-qcZ!g$2l-K8FeKtsJ{Ji}RyuMs~6$jcxku=_LK@s^^h23tuQ=p0x3& zr+7fj)3_F2oZ@gBhH>kIyu{sB#1r}4Ez(Z`*{QKp1%`P4%`s${J-~0vvkC)Q4!?g6 zBSj*!Lb-_<35>3i)Bm^aAImLH51^$SkXL`-8hPJ<9G`y-r&J+{*>EZkK>-L0g2lT6R)PDCB*Oi;q(PFN*8iMA{V|CAIw?)NB;;G3fp-|Z|HTcn>s&T8~R z(uNTRvv}rJiQ=9p?=oW!A5^m%741|Zhq3z>G>Zy-Ya-4_>54#kF<3Q%yb!Q7C3Axj z*!WbmcDS)1#BsvmfuCJBgWVR0Dkcy50PMj!y3x2-uk#L|;S)+d0S#|>R)$*QDuJi+ z9E#bQYSY?Yad@G^u4{7w#AOoqd;r^%Td7PG&Zq`%cxt}5f3mPC$FDryx^NX*T%!zO zpBuctFDux`2<#S)R*bfsiuDbUR@e{r3-iiB%LZ#}))R3$_ zs=d3f3#whXb4Szbf7nmFwyiiV_Q`$CkJ=FzG+CD;tKw!Xz8NHD$5~n9!Om^}zqPTb z@PVq8#1`J}=CPB8A!7^%+dCR5B7eh^DR&~la5K1I(vsPEN z2?BIXdOJGy)Hm{O(I5&An^IJN*r~dgT@?&(LGoH*+Xb73-_ShSI3PKgYoU>O1%u>1 zu>Tl1S?MUs_~n0b^&j%430|W7YZSBj)Bd4Cc|ov+-v+>oMW*GyXMD$WS$brg1Nm#o z#KpI1wR*!%=X`eKCCxPig%O@?gDvh}s&22x_N)1STJVWOK+78#+_Jp?*P!dlf>B}1 z0;iRcXAuLQA%88o8v!Y7JwIBwH~-wv$+>ep;j|+j!4U!4#dAJbyp#==d3B;oNLiN+ zyw2=Yj_p7G4UkY%{nmJBN1Okg%^!ZItmLidj2agPOv%%ezffWo2|-B<(+o-&7S3$Na>YE|CJ5(pZ9PyGvg` z_g|Tvztr1|?2n`CC|DT>iCjE#V{#soEbsrCrsnpf4@3vEWFQ8vb8IY*LdW~s&+Da- z=qm#})*w%G{YJgSTrIZ~Nzw-5N*>qj)xK!BP4r~*R9?h#GHHfyx=ukY!L?&9t8Ez{ zS2!33VvizPQ@^1fo4_ANk->t$S3*TgO+!uo8^7RBr=VD&S*);}WdlyjnQ$WfoM!$_ zi@uS$b${JN_&4;9+8ol$aG0zs8Lm72`d+~2;hXdX?F&h$l5nwjv&la+?n&f|MTn_y z{VDv{J1g1~W6l{nhp^{qr1ng$zi9ZNELwCt>%(yM;rE6jI@MpIwx;anjr{34T$l7J z=2rFRxWn(zw-{e-mD99h|4Sh)Xvg{kb%_o22?S9?msfNgHzHQ^^ z>A_&$#R0RGQ-AE`RU+QbXE!-2AFOdh=gfjU_6c3M<*56Bsrup@7n2)L7CuMt|AsE7 z#uzFxTq-=JX!-W~Y`||wwNv5N1TF%NixB+UEn{?Y=%c#>jr=oWbi8YwF&YnPM%1v{@PZ3&Ld~M#(w*@WV$0IRq>!nS<5}8@iL~)- zhv*7vw*Q6{#4(K?8F{e-2hX3kZi))#U1~L3$%}bA?v|fn$_6@fz$T#Sb9Gx+{%8Zb zU!kS2M4v{|u!oQC0Uj5@yP9i2F!$xyrmhi+77l0Z?x}Ae9j#`O@#_OuU$kic{JxXA zhpj_C=ls!=;<>bu@`A0Q>TYV)W1YnQ=e$bVErM6IoW?bhs$EI*MlWJ;<5&WBPDXH7 z+Y$bh=gZTXK@o=Mrum&23sYk>&v3-(rWQ%&HJY%2?4FO|&X<{|9%ApRqTM#l8M+xU zXnO~1O&l3jcYZOto5_OpuPy1(p(8a5gLViA;m&yz1KOz#TK#$g7yZ$_Dx8KS0V`xV z07r)azXKoL^}!1dXt4LEr|M&LDz;)GTg`#MO6H<2x}A)9o*(>TAhM=ZMj-Z1u8H~~ zwd&C>;&;J&0pUaKqn$z?M|Csv+y_4o|3Sy*6fMfZLNub$4mdD-p|9RRd}o4=h>?Xt zWIKzsBWjqr!^N#nSda(1k6I$$a1w~;(P#P+ht5tR!wjS{gCHESaBmJpnJZoFxp_A8Qlw#+ zFu3>)c?lU!_kFJ@Nup~#=t<=Co7+3RsuEPbaF2!m&aN>#bHym8urv`*tG%N#=I1fR zri5>$Xnqu}ZEr9Gu=x{z#Gc5M(>)z5%Q(^mZy!w(}{w3KbMsmNea- zNOSEJ49B2>sITx~?*s7%eF#B=|3H+$)oC@fQ$r-}$H07&B5TjW-)C$Ccl1D)N!oEO zf`_o)*wzaL#qeI3R$mIJ|AWqy?c4+~sZ`W1Vnfs_0pIFQ4D;6c2h?vDF||+tjds4l z<{5p(oc3LGUwaebOu07=#4Gh8SMYw`lHWYj?ERU?V9X@kSl*|$rP*MFYMQqRhc{;I_72(wLGV-A(-vc9fm*r9m?@3^e3=S2x^%Q3YF5b`^;4PgO zlGDO;UiRC(ElK_>F~upR8!vnqN?937;H8(}rQG@u9r#w|ruY|&8ZWiD+;prKx?kqv z(LM2eDd02Hsz$Yc@2vAS{qLV79~^S)$om%ReCf`pFHL|aG3oo^lF%K)GD(@a`>{Eq zM9;hLW6#{mHadBMMgRMI$-2_;<^WXuHy~SggNqw`;~noaNTx9vbR8fL4Lnxm?>uNK?9748+nI9^`DjELR8s2Yc7oFEJ-*9*Ywhf|SRpIj zZeNKEBFR=ws>TMt&fUmO$HZU681~Q?&a4Sz{j@B@GI?MT`znvl`pKWW_&Ckze z=4AG!PxHGzSDckmpno0Mq|_I8S#+g@EQOby!EIXfg_(Qr`GUAGje&x5pI_9oqTEUj z?FnEaqO`?NUSC;eA!>wL1#t z8iwMzP@=rXz)^MmPviMf#Wc_SL3yS0^_f7h!%2c2jEdB~M(U!hVfqZe%f%onnYOQ{ zH$ID2gf*pQ`#S<1mG3<3J&ee1hGB#a%_0z1Ed1hd_i;PJSIUhG)e${xy>Vtu4+U=t z?)5p8>j|uQuNLq;Ck_z3%SB?k{_pe?#snX|aB~})9}&{mAPoG07k>2ZGTJRt^V-jD zq7=`b!3IV{%yM@UHd$0)g3rcO?#7eRAk5tY%B*R+VA-Vl*`cIVa# zi$$;NA}9S1${&vH+S{4wwBY})A^l15W+k%GmrZFL3?`6e{y&Ex=0>@lJpXYDl62uH z7M_#FpB(*3%D`c%5$V`by>WY$t-_WJA zih-V|h6cKX=+X^yfNh&;YMHV6W{cbaw(U$JuxvmS?)8F!Rs$aXbzks{USQE2zxbpv zo%a6n)uE-V<2S_fH8A>To4ei7ohKJlCugbxUWx3<7R*26W7sz=G}HU&rp%|$18=yO zamj*rPu_d9FFoqWoWsdEcA6H!U+wW{>7IXGt#Z{p_!~-6dm1w!n7Q~hFxacP`4;C} z?ytCH)7dX?#>CY^pXL70ZIFxI^Bc<9{6_H5M||Jafass`qB@}#b8qA0MMBi?c6D18 z8vpd_XD_+M^7JQ;Z*|LyI{FybXa9j(U+U`tbeT!KKeGrr{G$d7H2PjI5PX1KF=(LG zuesq~@&S=;B#A74MP>|J2K#{_#=>(c9%l}ysB1?&?mWqRsI|@oK$9&(;YTr<;-V$M zc>pvvs?j;`{Bo1smh*(*{F`i^;o0gz09L)b=laryi&^JYj|3vg9-~%F7VNQJymy$~ z4-Ug1=K^hH>Q{v)v4@BDTlz#9s~v5v^U4YoyqOgsn5*T~C(1K^SAks-1Oe$xQm=|` ziV{l6HF_wR4IG?tp!?b5y=r&%Uykeo0Br@ULkGN3+n;?U2nPat_0e4$IIT59?tVQu zk*z1xqVvgl%lV+kH1hIpgP}s+pMUvgxFbHHacf4GLF!xr+H`=vbXLfFJ!1d!J4!q6 zki6Ju5K6{BJD7_IX6I7;1--TVQG#<7H1dHevsay5cNZE~@4e|F=1I_z^=+e%P`8og z?=Fy}**^WXZNRPrSR^}uuCojpB6#m*2V1b6&p+_6+m~sY!j+tkjGLxrhdsdFV-=PO z_3nAVQT#_O)`20idkEV*dd(a_6~aD&@c4NkM49Nm?0ofH}_L2JQzJd(`oHnv!zsy|0gq^dHXTJ_kxR@j2GM_l@K|<6FK_69fG- zq@U-H?udDQ9$0-_RAL@z7Z^y=7+6u$VMR5}jb7b8LTDbizimc~kAE>AXyg@%=YcUl zbeq@@%$@P!?HgvU&A)FRaAA5ls!6W*(Va~S|8Dd(Z92$wD$m8KOlLK7j$wD*)nv$&q{(|s>1d(A{QEYoWx!>>#{{=}J0jv}r?&e2S74tN0NNaasR zRftHD#5Ebb0756zi4xl3*85UJyi(j=Cs2UR2MFNl^{afH0-5If7vNH1z>{iw6= z+($a5TqD-SjH{{*EeD^(=Nyd}Fh|}EYdbLtjIL^Hc)khK8d(~^B~yV|!W6Xx*DO=R znzMf!N|QicR`&MGB*FcEYQEZC5#>xvdd2sy;QLN`Ui#Aack^ea0dz4~k0asL8tcU= zQ0gjl_Z*XQ<9+>`=M3GFRdu*_P`qArJVl%Pdjb)A=5g=#fn(B?SpE7O+{-o-&iq?m z5;*m3!c1jl78Iz7k%UQ0P!pr|IkA@k>;d=_9672OT(RM_j%U*wK5rPLN$G+RVw$Lt zOtnoC_1eDJug$Dq6;_C@R$cnkIjE315xdOAf;y+R1G?f z1|0|ojio6n3{d^mz@tY2b%T4+jmzNV9LpYU7}|Es$?z-lO-pW*@x}@tRXZO2T2HT+ zLrN|lbmPr5>i1_S&K}IJ2cwnJb|>*x+1^J2m-dmP!NHj;$Qf*x@fgaR>zH+8oH>B` zdrH_3-QLWe#KEf#%MX)!^_O2?*LplP*~{#>!|eY=%t1>mhm78Ni;Bs2yQXFMB;TEX zy2Vt9tNvHTWZ&~sh7Rxio5}-0047lREsm4u-k~V$zi|J^fTo69-|y!ch>(8m-=>Bw z&0hi;q!lQ)q74$cD`WN1=reZdlp4l+3Y7TUi@Hdv7t{Ot5g9yHJuz0_w@g!MZ3E2! z@N&&m*`=qr1Jkq+{Fx+j6Y!{uaO;|U%B3`We!t-QC!knMEqn~x^||KSR9zjut!EVj zclzX=csCyirQK}2^PwcY65@fb22th-R9uwTE52vZ9HXt*R&LvI5cF!OY3I@t`3Tfm<0A3RDsp zWSpSDY-v+?xazx`{}|wZny&8iUWic)V7Hw}4HiAvhW`TN+E}0$sKZu(@I2fsCKBHC zkx~kHxCGAr4NBU7^p-v|g%bX2ukI$c!Rm=wkT-?0^)s;t6mSaAxaOla!53;6ik3R` z(UZo}ktaT|WnMC!dj-2?;Omokz8k+(09DFp1%r6dl+ghex*soyO8>R&w!S$NOh4)} zTO>&QGq$wz2R6riQNn||1s;?6;QU=Hx_^r$%H3<2U+RLIP7!?sfWy#?9Z>l6-oY04 zuFY|Oa~eqMESapU7qF%(3v}=fu{bl|q2t@DymxXq&LU21M<*?f*F}fSgsV8OfSggl z@97wpmvPp{zy0!!^>JOxC1+JkKs`CB7>2e5$NL4Rfbfdc7`t;5J`TRWqb7ypTL*CN zpR=D>ba56;>8MQ3`=-dBFJwjPb38h7PGWP@ffdT4=xCsd!NK?;JbuB82%H#5FoA0n zojN4^-&3sLm}uO!HS@cUYGig`x6xpfE6}Hz$;+=*l3x%0sOR}f6Owr{Hgjj)aRn6+ z|B0I8%>VeJHq-_ra4-|ipOmBgZR_#z|0^r|O@JHY-U+)NqWMjm9lcVaV-8rPVFZjB zwB%40{d01gq-!wcx{X{)aCe$0D=YTgFvF%X#l+e3?2VVKgPoGH8^M?2o?UQw0JxeE z7mzDOe!I>m;OSc)wr z{8~@xxIW`)0K5K~yXmB*+fe+e=XH@>{5ruQyBKR=EX6QBESxQtJhci%+R+bHd5_MS z=Ghr4&6c${CM&~too*=okthFZ4;7;-_Md1&jyXG}z z{>D7C3oRe!_{^r9HQ9gLrO-@<3r^&I)HZvxfZ!41lRv8mwf$pI6jvX=fuw1HZec?f1{#iczt8C1i`)Uoj9Wjp8@6vpxw~@FmNq zxAbxwyEzUV^S%#Q?L#ve}W0j#O-^ zbHQuw2adhJCb~&07k9#(l^}R1a3*i(nHeF3zu4^iQ*6pyT=`ck_Vgl<_MAXHBBu0r zq7oBD-F9zNCFUP#v&b8?uB&Sa-1ReGz{kb#F3qUmX&nk(z!rUJ72>lqEmD{*jT7vk zA9|#%l--jXdecdw0IXcW&NSD1boRDO-fU?i0Z(@l;V_MQqVMnM4+=|>isf^BCQWN< z&+fdN^;GH#3K8g<%o99&LsH>;Qyfo2VkQ~m_&ocikiuRbE!oWwHM77zP$!E}Xq&$k zhBGr%9Hh5X;BuI|(=>C>p^@9HrykPpen5yKICaYz z!c@)&*@16paR+HjUNsmBeiTR_v=D-XH*L1(XT23Erpi4#b4uob0y1hGl&`)k9+opv ztJRT&-WP*vHtw_3&4SqEH>U?PY9~j{%hBhCr8br$t8NoS9A^P_mmMWpvsOZuqDy_T z0x{ffmCJP63y16orOL;zA2nQ)k3m)beJ`T}V!3*$l|tOdk3p%}`oD2uR87&aW9?c8 z&W*~2hp|KTeWOTQHgUa5YDmU`jcKAM5bWMk0{Ol#rBb6CC9}dgt0epiUxdU*5DOHO zB!cvJKR1G`OXa;EB}8pgVS%V}(*d1%>VXBZm$-};MvXF{o3?eEwFoP3u8%8k37WpG zr%yngV`+(;KW3v<{l?rjIc9l${IhpiT2@P_1qRyZ4Y{IYQcQCV2P)19{a}&>urR1-kQ)>H+IITx%WVy1nHxI`(OMsVWXNLrDyAIPwxI4kdhqs>pt;ey zeq^b_-5HwELr_LoL4UCyvVQU;j+C6>fG)*7i#-M0J)*h$HNYJ8s+t)(oK!BUZ=9c@ zB|BhEdupJv-NES|qdx3~MJ(l_8taTEMukos zgCtMIZ4$d$4(Oa4+jOq!0PS>`v=z*le`;P9NB-~?i6Wv9Vb0vvxi4^7)xqL&TFwz7 zWNpmf)X+=D*!e!t!-rX6U;#QL<|w~*O$^RXDpnfqSzoBQP-^%lGrZfURj5I*y);f+ zi3+CF8*sVKu{govgJq!Y)oPu|m9-XQaoTu;s=$Ar<>Fw4pA~s^E+iLwY-VALB(*Gr zf@9gX<9J|(`c~!Ny>2X&IUn@A;~Toyx_F~~_VVZAa6Ay_CRD}u74;KknhzHLMuGO) zy*GkQ_=;5KooJ(4_s=KCNByhkm$EtbEc9f?_h@URh8ybZ9|4!H<2FXTVYIo(p?h|w zWd!`Ub_-6JnBrASY3tKx2$I}AG;m3yvo^-kTN9sCa%HZlNQP;Q>vmA6`0J9jop#ki zvMPsK8>Y)BRwZBZ;!MDh*T$KliH6Y0GD_$--Fpu_9+vmK=uQ(e5^eHW>}vC2@v0=Z zJf7QVB{08dE=E0(xYA5LQ{y}UI&@JX{OSFx&r{Au%pv$~{l_AY%I>mOeXx9N%-U=d zi}0pXcUDBk1Vvo8(pQj>;vOu0ME;Ugu2sEl-y!V;GpUwR+kp~IgMje;3Xel@FgAMy zdj(~opmT**5l)v=KtsrpB1+U{S=C}gw7LsMkIX=51i#OgcyEH_7B@KvRUA7j*j;E% zg+B(@kIHpCFkfh$&+%3xsR)+9w`Y{a&MV?Gjfx;LYnRB8u z2R~dCj)^r24N{dSUWK@dKKm02@u1OS`CcT7vmnZ?%B>iEV_oo_fK$Q8WQZ<*vz;z~ zDZZ@LU04m8iC|C=yb48Szd@`h+0k9{vb(^DMFpwsj!=r*j$Q27v2;U+pD*0IW%6F3 zb;{PKs78JX>=?N>1&(%2njSKj85)vc%>Ps8;cz6znDwY!tS1nEZlRjsII)2qy*C=(t_RU4>VA&#)na1;n%*0uv3M> zm5Y;%DyBwnOkCrx(oUqP|5=e6{?p%VPSM(%IAK;{BsGc!|4LWv{W9u%-}j7KEVkNO zx))H#pLP)e141{u_V@Dt3tw@r3dh)*6^E&G*R`!9r081g@IoQRoxXa3{EC|p* ze)|E0p}nf6hio`5oO zh%YiMOyA1Eg(o(Y$yk$tJze3|Xmk9rq1M>5{E5l|nG<_fA@Q*|g;~(sTYHMMcb5?^ zh$S179gAySV4excgr_Gpx?V3NX_DSP=6(M7jMN!e3ApJ2b`d~Oq`zI@efwXRr_s6B zoN7q5*qK+WkV#OaiG9?PUddoqfx&JU%7Au@nWTpuW_X;(ih{Oo+425jvk{MAHDzx# z(6aZsOP;P6l+gnVER#ee`~Y{wu$>G8^b*W=YmdQJSk=JohKqTpFq`;9lDgVH(th-8 zzsmn8@aAB14BOed-Q%G$2fVK24Nd1$D6Aa}RXjevfQAl!510h||Fg`q5z{Q!@%~@m z+onnprTKKU`oTXik_4R#Z;CgbQ!m6bBnkp;rE9>HC?i31rfW`x$i!EGof~46zt@iQ zr9x%K)k9=94tpR0a}ixAE%0E8kh@$n<dB|k-d`!$L#0BR&b=bFO_!F&J#J!^Z;@MSbEF*L&aa?j@ zgys{`soFhhO(RLGa^4UrZZO|bGU%q*6BYlcljpK^Ykcn z#V@{3IoE?cK4KBfIMi`daDe*#+pkUVZR^?hv9jf$gL7?yC&#I+Gx^i6>bJi<6|@|T zUBoyjU!20MgBsN(Zw`vwT)_&v)oHZ7y>eM}74Qni5yof*)c0pHVvF=0ZusH9QR30! z{FlP4+6l_oTe5&3fyt;IBK$YtO9+n)Q{2Y}@GUl!uGeSNyD(%lL{v0W@W6_5!sGO; z6o=#XY0h*y&Fu(Qc7r;S212ZJe<}5lZ<)Pa=cu#E&lR?8c}y?(Pau#u2O1qla9u z?>YHnnA`MzNd|!Cw6uY6sr9ZlYx@~SwBo#S+|Dd?b>}3rv#PLv+%PhhgJH14%|nl$ z1yZSVa5jZ7ZQvhP+>pLZDn|4HRoUc%dO-|^REpqaqoiZp>~6)R zs5Dw8M3_x+kR2i4TtJF~XRPfn&-(+V+z>Nyg{y-}kcjONE@SJP;4eZpK5_-50?c4$ zxdXj37yqT;8ZjHpjx+LTK3hk~lWz0l;Ng;Tr}5`x(Aw}Mv6$(0bP+-;+{57Ku0m9x zcP1_izm2kS%y-tg`uxHCM+D$$voRQbD*`8G%e<*)MHbZ24oBXI&4}%YlP8cIJOA zxo7X5YMTCsSW5*;PD-=E91DDNaoNpyg?hlO7bEP9fu-pJHVgonj(g9mqaXU7XX*Cr zWWBom!Q{eK7vBswc`e>=<3CgDu6sJyI!XJ#Swlr$a5TEYsokeUm*6}NVGtQWUE#;#(g8xeUHGcctdAgB9s;s@R ztqbLfj5?%>#EVG}Sm#;{J5+kI3);~Rk-52a(5xtgMbXUc7?W!OtfOQlsR}X``zO1O z9Xt_JPy#KyT^qXf{$*N(GXQOD9g9Zhl`@SoSY!E~%8N2A#7nL%-ZQzT{Qey3wk@ST zdH{+>S;0O!^A!O+k*HC&fp2pUoG-PzZlkO*6@uBZ9!hxK;47GVlbJV8spL=O4kArF z=)jc6WI_mveNJqKI5V+W_ki*z8MMOG@X3e1pCm>2mF4=p$^Y0~R2Da3&WaQS%#h~` zys(15SO_a~7YuR|QVsKZ@vT<>d7U1qv1Q?c@Sa{cQuyy}f8m~D!lBGPp7-*wem7tW zQ$393#Ol{6cwvMjm_TzczoP$4CL?uG71D8zU*`sOKt^y@K{oQ#JW#wH)@NoC!C2i$ zU=l9;K?)!h7Ad;Sf9!D{xCj5pXlDOn(;_q{7ZqffZ3lBnU?>1^%r5wKQDm zYG=6<3w~$4)Si7M?z;>JAInXJ$Nqt|)Fv>JJ`h-n?kK%&x4))$Z0}#KzuEuv06jG> ztkJ~%LNIXC|J&H9)vE3`ufNW+e9Wr7VFa=wM7}Q*?JiKjH5k;xhjX4&G6rQ2NjxfNb-Wg~^1CHY*AVG#M7bAlZE zyb-aCLGcGa7~@1)%_6()q_LlIN+mw*vJs%F@+_ zUmX;{Jb-ApG#|$@k39QtpE_6vL{wtoH=k$;2iL(_B2u3X;mD@RS$GoI8y(bp4AfF4 z4tfN1fdHRa%;$6Qp#3oQ1f4(rLZ0DoXG!a?OTz z7fB#RWb!}z>;54!-1tRvmMnZ^v;Y^Cki`krB#gz40yiXJWF9j@2et4S($~v*U#8W~ zDu|{kFee1ih9WXC+&1(a&3ib|U9Dm2xOEmoh%!CcgP3O+qXg+_F$$%gl}}BMtaH9- zvBe{*pBvAp7(<1f9l7RXGkCs(_OR(bIyi-D#khx0z*&Orer_&hmEd#SSOOQzU!=Nu z2$z;`|K0=ujr+|bvgKAo4=SDP$ z;s7ROe@u6Pce~BG)|#5;HM*GuD(%Rc-QY}0Exp(f1fp7SCcH%xok6hBS!>9@uUs-r zC4?7vX6#H~-7N;!EG>mQ)EiqxoT}AY{LLdhAfe<(xMxk~Gm==g+y2|)|0TIvkHkXQ zK|?QbP(j3cb}k%kR)B9n4p{1b$=ZzQw-m1#mbp?{41RL=;_RzNfJwhdh0rdDbTPL^hB1x2Qs4^E91O6F?ux*@tUZ##0Bo=K0FEiNj z+#FK06IdoOxpZQ{y{_(Mnske!LqY*IRv8}1X6mkm~=EVc5%R@uCN7AxZ=X> z*la?ut59-`SfM6%oSC*_6)&;VPG~KTI8wC@BFn`es|<6Dp-yD^yq&VY)-JvGujiB| znIxi()X9$^@E=)!vdL%pn%=NkGtE*>hC>jcsgSw~#WJ&9I=Kq5vTl->B$yu(tcx9Y z2w0%G(4F$-<1_}M8(lu7EBa+0zZ9Dq-oLA*J1wp5P|uNt9+2{))e~OMu8_26(XvG{{kl1`TLDtZYm5tPPAQgAV-Ta@%_#SgEGE8&m x_0E!a0x;p&>2`3=JPtyd-~OS6LqTO}q?VIke(M?N2*xlhs@tr)z`OeHe*laBZMpye literal 0 HcmV?d00001