From 581a7c9ed3d7d5ea28a6e3d901912e3a8cb40a38 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 27 Aug 2026 15:06:00 +0200 Subject: [PATCH] =?UTF-8?q?Initial=20commit:=20WireGuard=20config=20genera?= =?UTF-8?q?tor=20(g=C3=A9n=C3=A9ration=20de=20cl=C3=A9s=20c=C3=B4t=C3=A9?= =?UTF-8?q?=20navigateur)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Dockerfile | 16 + README.md | 39 + app/app.js | 257 ++++ app/index.html | 91 ++ app/style.css | 272 +++++ app/vendor/qrcode.min.js | 2297 +++++++++++++++++++++++++++++++++++ app/vendor/tweetnacl.min.js | 1 + docker-compose.yml | 16 + docs/screenshot.png | Bin 0 -> 176387 bytes nginx.conf | 23 + 11 files changed, 3014 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app/app.js create mode 100644 app/index.html create mode 100644 app/style.css create mode 100644 app/vendor/qrcode.min.js create mode 100644 app/vendor/tweetnacl.min.js create mode 100644 docker-compose.yml create mode 100644 docs/screenshot.png create mode 100644 nginx.conf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9fa88ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +*.log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bbb54bb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +# Image "unprivileged" officielle : nginx tourne nativement en non-root, écoute sur un port >1024 +FROM nginxinc/nginx-unprivileged:1.27-alpine + +USER root +RUN rm -rf /usr/share/nginx/html/* /etc/nginx/conf.d/default.conf + +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY app/ /usr/share/nginx/html/ + +RUN chown -R nginx:nginx /usr/share/nginx/html + +USER nginx +EXPOSE 8080 + +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget -qO- http://127.0.0.1:8080/healthz || exit 1 diff --git a/README.md b/README.md new file mode 100644 index 0000000..5b5248a --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# WireGuard Config Generator + +Générateur de configurations WireGuard entièrement statique, sans backend. + +La génération des paires de clés (X25519), des clés pré-partagées et des QR codes se fait **intégralement dans le navigateur** : aucune donnée (clé privée, clé publique, configuration) n'est jamais envoyée à un serveur. + +## Aperçu + +![Aperçu du générateur](docs/screenshot.png) + +## Fonctionnalités + +- Génération de paires de clés WireGuard (X25519) côté client via [TweetNaCl](https://github.com/dchest/tweetnacl-js) +- Génération optionnelle d'une clé pré-partagée (PresharedKey) par pair +- Attribution automatique des adresses IP à partir d'un réseau CIDR +- Support multi-clients : ajout/suppression dynamique de pairs +- Génération de la configuration serveur (`wg0.conf`) et d'un fichier `.conf` par client +- QR code par client pour import direct dans l'application mobile WireGuard +- Aucune dépendance réseau au runtime (CSP `connect-src 'none'`) + +## Déploiement + +```bash +docker compose up -d --build +``` + +L'application est alors disponible sur `http://:8090/`. + +## Stack technique + +- HTML / CSS / JavaScript vanilla, aucun build step +- [TweetNaCl.js](https://github.com/dchest/tweetnacl-js) pour la cryptographie X25519 +- [qrcode-generator](https://github.com/kazuhikoarase/qrcode-generator) pour les QR codes +- Servi par `nginx-unprivileged` (image non-root) +- Conteneur durci : `read_only`, `cap_drop: ALL`, `no-new-privileges`, en-têtes de sécurité (CSP, X-Frame-Options, etc.) + +## Sécurité + +Toutes les clés privées et publiques sont générées localement dans le navigateur et ne transitent jamais sur le réseau. Le serveur ne fait que servir des fichiers statiques. diff --git a/app/app.js b/app/app.js new file mode 100644 index 0000000..c645d1d --- /dev/null +++ b/app/app.js @@ -0,0 +1,257 @@ +(() => { + "use strict"; + + // ---------- base64 helpers ---------- + function toBase64(bytes) { + let bin = ""; + for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]); + return btoa(bin); + } + + // ---------- WireGuard key generation (X25519 via TweetNaCl) ---------- + function genKeyPair() { + const kp = nacl.box.keyPair(); + return { + privateKey: toBase64(kp.secretKey), + publicKey: toBase64(kp.publicKey), + }; + } + + function genPresharedKey() { + return toBase64(nacl.randomBytes(32)); + } + + // ---------- IP helpers (IPv4 only) ---------- + function parseCidr(cidr) { + const [ip, prefixStr] = cidr.trim().split("/"); + const prefix = parseInt(prefixStr, 10); + const parts = ip.split(".").map(Number); + if (parts.length !== 4 || parts.some((p) => isNaN(p) || p < 0 || p > 255) || isNaN(prefix)) { + throw new Error("Réseau CIDR invalide: " + cidr); + } + const base = ((parts[0] << 24) >>> 0) + (parts[1] << 16) + (parts[2] << 8) + parts[3]; + return { base: base >>> 0, prefix }; + } + + function intToIp(int) { + return [ + (int >>> 24) & 255, + (int >>> 16) & 255, + (int >>> 8) & 255, + int & 255, + ].join("."); + } + + function nthAddress(cidr, n) { + const { base, prefix } = parseCidr(cidr); + const hostBits = 32 - prefix; + const maxHosts = Math.pow(2, hostBits); + if (n >= maxHosts) throw new Error("Le réseau " + cidr + " est trop petit pour ce nombre de pairs."); + const network = (base >>> hostBits) << hostBits; + return intToIp((network >>> 0) + n); + } + + // ---------- DOM ---------- + const clientsList = document.getElementById("clients-list"); + const addClientBtn = document.getElementById("add-client"); + const generateBtn = document.getElementById("generate-btn"); + const resetBtn = document.getElementById("reset-btn"); + const resultsEl = document.getElementById("results"); + const serverSummary = document.getElementById("server-summary"); + const serverConfText = document.getElementById("server-conf-text"); + + let clientCounter = 0; + + function addClientRow(name) { + clientCounter++; + const row = document.createElement("div"); + row.className = "client-row"; + row.innerHTML = ` + + + `; + row.querySelector(".remove-client").addEventListener("click", () => { + row.remove(); + }); + clientsList.appendChild(row); + } + + addClientBtn.addEventListener("click", () => addClientRow()); + addClientRow("client1"); + + resetBtn.addEventListener("click", () => { + clientsList.innerHTML = ""; + clientCounter = 0; + addClientRow("client1"); + resultsEl.innerHTML = ""; + serverSummary.style.display = "none"; + }); + + document.addEventListener("click", (e) => { + if (e.target.matches("[data-copy-target]")) { + const targetId = e.target.getAttribute("data-copy-target"); + const el = document.getElementById(targetId); + const text = el.tagName === "TEXTAREA" || el.tagName === "INPUT" ? el.value : el.textContent; + navigator.clipboard.writeText(text).then(() => { + const original = e.target.textContent; + e.target.textContent = "Copié !"; + setTimeout(() => (e.target.textContent = original), 1200); + }); + } + }); + + function buildClientConfig({ clientPrivateKey, clientIp, network, dns, serverPubKey, endpoint, port, allowedIps, psk }) { + const prefixLen = network.split("/")[1]; + let conf = `[Interface]\n`; + conf += `PrivateKey = ${clientPrivateKey}\n`; + conf += `Address = ${clientIp}/${prefixLen}\n`; + if (dns) conf += `DNS = ${dns}\n`; + conf += `\n[Peer]\n`; + conf += `PublicKey = ${serverPubKey}\n`; + if (psk) conf += `PresharedKey = ${psk}\n`; + conf += `Endpoint = ${endpoint}:${port}\n`; + conf += `AllowedIPs = ${allowedIps}\n`; + conf += `PersistentKeepalive = 25\n`; + return conf; + } + + function buildServerPeerBlock({ name, clientPubKey, clientIp, psk }) { + let block = `# ${name}\n[Peer]\n`; + block += `PublicKey = ${clientPubKey}\n`; + if (psk) block += `PresharedKey = ${psk}\n`; + block += `AllowedIPs = ${clientIp}/32\n`; + return block; + } + + function renderQr(container, text) { + try { + const qr = qrcode(0, "M"); + qr.addData(text); + qr.make(); + container.innerHTML = qr.createSvgTag(4, 8); + } catch (err) { + container.textContent = "QR indisponible (config trop longue)"; + } + } + + function downloadFile(filename, content) { + const blob = new Blob([content], { type: "text/plain;charset=utf-8" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + } + + generateBtn.addEventListener("click", () => { + resultsEl.innerHTML = ""; + serverSummary.style.display = "none"; + + try { + const endpoint = document.getElementById("srv-endpoint").value.trim(); + const port = document.getElementById("srv-port").value.trim() || "51820"; + const network = document.getElementById("srv-network").value.trim(); + const serverIp = document.getElementById("srv-server-ip").value.trim(); + const dns = document.getElementById("srv-dns").value.trim(); + const allowedIps = document.getElementById("srv-allowed-ips").value.trim() || "0.0.0.0/0, ::/0"; + const usePsk = document.getElementById("use-psk").checked; + let serverPubKeyInput = document.getElementById("srv-pubkey").value.trim(); + + if (!endpoint) { + alert("Merci de renseigner l'endpoint du serveur."); + return; + } + + parseCidr(network); // validate + + const clientNames = Array.from(document.querySelectorAll(".client-name")) + .map((i) => i.value.trim()) + .filter((v) => v.length > 0); + + if (clientNames.length === 0) { + alert("Ajoutez au moins un client."); + return; + } + + let serverKeyPair = null; + let serverPubKey = serverPubKeyInput; + if (!serverPubKey) { + serverKeyPair = genKeyPair(); + serverPubKey = serverKeyPair.publicKey; + } + + const serverPeerBlocks = []; + const resultCards = []; + + clientNames.forEach((name, idx) => { + const clientIp = nthAddress(network, idx + 2); // .1 reserved for server + const clientKeys = genKeyPair(); + const psk = usePsk ? genPresharedKey() : null; + + const clientConf = buildClientConfig({ + clientPrivateKey: clientKeys.privateKey, + clientIp, + network, + dns, + serverPubKey, + endpoint, + port, + allowedIps, + psk, + }); + + serverPeerBlocks.push( + buildServerPeerBlock({ name, clientPubKey: clientKeys.publicKey, clientIp, psk }) + ); + + resultCards.push({ name, clientIp, clientConf }); + }); + + // Server config summary + let serverConf = `[Interface]\n`; + serverConf += `Address = ${serverIp}/${network.split("/")[1]}\n`; + serverConf += `ListenPort = ${port}\n`; + if (serverKeyPair) { + serverConf += `PrivateKey = ${serverKeyPair.privateKey}\n`; + } else { + serverConf += `PrivateKey = \n`; + } + serverConf += `\n` + serverPeerBlocks.join("\n"); + + serverConfText.textContent = serverConf; + serverSummary.style.display = "block"; + + resultCards.forEach((card, i) => { + const wrapper = document.createElement("div"); + wrapper.className = "panel result-card"; + const preId = `client-conf-${i}`; + wrapper.innerHTML = ` +

${card.name} — ${card.clientIp}

+
+
${card.clientConf}
+
+
+ Scanner avec l'app WireGuard mobile +
+
+
+ + +
+ `; + wrapper.querySelector(".download-btn").addEventListener("click", () => { + downloadFile(`${card.name}.conf`, card.clientConf); + }); + renderQr(wrapper.querySelector(".qr-canvas"), card.clientConf); + resultsEl.appendChild(wrapper); + }); + + resultsEl.scrollIntoView({ behavior: "smooth", block: "start" }); + } catch (err) { + alert(err.message || String(err)); + } + }); +})(); diff --git a/app/index.html b/app/index.html new file mode 100644 index 0000000..571be10 --- /dev/null +++ b/app/index.html @@ -0,0 +1,91 @@ + + + + + + WireGuard Config Generator + + + +
+

WireGuard Config Generator

+

Générez des configurations WireGuard prêtes à l'emploi.

+ 🔒 100% local — aucune clé ne quitte votre navigateur +
+ +
+
+

Paramètres du serveur

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+
+ +
+
+

Clients

+ +
+
+

L'adresse IP de chaque client est attribuée automatiquement à partir du réseau VPN défini ci-dessus (serveur = .1, premier client = .2, etc.).

+
+ +
+ + +
+ + + +
+
+ +
+ Générateur WireGuard — aucune donnée n'est envoyée à un serveur, tout est calculé dans votre navigateur (tweetnacl / X25519). +
+ + + + + + diff --git a/app/style.css b/app/style.css new file mode 100644 index 0000000..9041f15 --- /dev/null +++ b/app/style.css @@ -0,0 +1,272 @@ +:root { + --bg: #0f1420; + --bg-elevated: #171d2c; + --surface: #1e263a; + --surface-hover: #262f47; + --border: #2a3349; + --border-strong: #3a4560; + + --text: #e6e9f0; + --text-muted: #8a93a8; + --text-faint: #6b7690; + + --accent: #7c5cff; + --accent-strong: #9c85ff; + --accent-contrast: #ffffff; + --accent-soft: rgba(124, 92, 255, 0.12); + + --ok: #4fd1c5; + --ok-soft: rgba(79, 209, 197, 0.12); + --warn: #fbbf24; + --warn-soft: rgba(251, 191, 36, 0.12); + --danger: #ff6b6b; + --danger-soft: rgba(255, 107, 107, 0.12); + + --radius-sm: 6px; + --radius-md: 10px; + --radius-lg: 16px; +} + +* { box-sizing: border-box; } + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + background: var(--bg); + color: var(--text); + line-height: 1.5; +} + +header { + padding: 2.5rem 1.5rem 1rem; + text-align: center; +} + +header h1 { + margin: 0 0 0.4rem; + font-size: 1.7rem; +} + +header h1 span { + color: var(--accent-strong); +} + +header p { + margin: 0; + color: var(--text-muted); + font-size: 0.95rem; +} + +.badge { + display: inline-block; + margin-top: 0.7rem; + padding: 0.25rem 0.7rem; + border-radius: 999px; + background: var(--ok-soft); + color: var(--ok); + border: 1px solid rgba(52, 211, 153, 0.3); + font-size: 0.78rem; +} + +main { + max-width: 980px; + margin: 0 auto; + padding: 1rem 1.5rem 4rem; + display: grid; + gap: 1.5rem; +} + +.panel { + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 1.25rem 1.5rem; +} + +.panel h2 { + margin-top: 0; + font-size: 1.1rem; + color: var(--text); +} + +.grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 1rem; +} + +label { + display: block; + font-size: 0.85rem; + color: var(--text-muted); + margin-bottom: 0.3rem; +} + +input[type="text"], input[type="number"], select { + width: 100%; + padding: 0.55rem 0.7rem; + background: var(--bg-elevated); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + color: var(--text); + font-size: 0.9rem; + font-family: inherit; +} + +input:focus, select:focus { + outline: 2px solid var(--accent-strong); + outline-offset: 1px; + border-color: var(--accent); +} + +.field { + margin-bottom: 0.9rem; +} + +.checkbox-row { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.checkbox-row input { width: auto; } + +.clients-list { + display: grid; + gap: 0.6rem; + margin-bottom: 1rem; +} + +.client-row { + display: flex; + gap: 0.6rem; + align-items: center; +} + +.client-row input { flex: 1; } + +button { + cursor: pointer; + border: none; + border-radius: var(--radius-sm); + padding: 0.55rem 1rem; + font-size: 0.9rem; + font-family: inherit; + font-weight: 600; +} + +.btn-primary { + background: var(--accent); + color: var(--accent-contrast); +} + +.btn-primary:hover { background: var(--accent-strong); } + +.btn-secondary { + background: var(--surface-hover); + color: var(--text); + border: 1px solid var(--border-strong); +} + +.btn-secondary:hover { border-color: var(--accent); color: var(--accent-strong); background: var(--accent-soft); } + +.btn-danger { + background: transparent; + color: var(--danger); + border: 1px solid rgba(248, 113, 113, 0.4); + padding: 0.4rem 0.6rem; +} + +.btn-danger:hover { background: var(--danger-soft); } + +.actions { + display: flex; + gap: 0.7rem; + flex-wrap: wrap; + margin-top: 1rem; +} + +.result-card { + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 1rem; + background: var(--bg-elevated); + margin-bottom: 1rem; + border-top: 3px solid var(--accent); +} + +.result-card h3 { + margin: 0 0 0.6rem; + font-size: 1rem; + color: var(--accent-strong); +} + +.result-body { + display: flex; + gap: 1.2rem; + flex-wrap: wrap; +} + +pre { + flex: 1; + min-width: 260px; + background: var(--bg); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + padding: 0.8rem; + font-size: 0.8rem; + overflow-x: auto; + margin: 0; + white-space: pre-wrap; + word-break: break-all; +} + +.qr-wrap { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; +} + +.qr-wrap canvas, .qr-wrap img { + background: white; + padding: 8px; + border-radius: var(--radius-sm); +} + +.server-block { + background: var(--bg); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + padding: 0.8rem; + font-size: 0.8rem; + overflow-x: auto; + white-space: pre-wrap; + word-break: break-all; +} + +.hint { + color: var(--text-faint); + font-size: 0.8rem; + margin-top: 0.3rem; +} + +footer { + text-align: center; + color: var(--text-faint); + font-size: 0.78rem; + padding: 1rem 1.5rem 2.5rem; +} + +.copy-btn { + font-size: 0.78rem; + padding: 0.3rem 0.6rem; + margin-left: 0.4rem; +} + +.section-title-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.6rem; +} diff --git a/app/vendor/qrcode.min.js b/app/vendor/qrcode.min.js new file mode 100644 index 0000000..76889b5 --- /dev/null +++ b/app/vendor/qrcode.min.js @@ -0,0 +1,2297 @@ +//--------------------------------------------------------------------- +// +// QR Code Generator for JavaScript +// +// Copyright (c) 2009 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// The word 'QR Code' is registered trademark of +// DENSO WAVE INCORPORATED +// http://www.denso-wave.com/qrcode/faqpatent-e.html +// +//--------------------------------------------------------------------- + +var qrcode = function() { + + //--------------------------------------------------------------------- + // qrcode + //--------------------------------------------------------------------- + + /** + * qrcode + * @param typeNumber 1 to 40 + * @param errorCorrectionLevel 'L','M','Q','H' + */ + var qrcode = function(typeNumber, errorCorrectionLevel) { + + var PAD0 = 0xEC; + var PAD1 = 0x11; + + var _typeNumber = typeNumber; + var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel]; + var _modules = null; + var _moduleCount = 0; + var _dataCache = null; + var _dataList = []; + + var _this = {}; + + var makeImpl = function(test, maskPattern) { + + _moduleCount = _typeNumber * 4 + 17; + _modules = function(moduleCount) { + var modules = new Array(moduleCount); + for (var row = 0; row < moduleCount; row += 1) { + modules[row] = new Array(moduleCount); + for (var col = 0; col < moduleCount; col += 1) { + modules[row][col] = null; + } + } + return modules; + }(_moduleCount); + + setupPositionProbePattern(0, 0); + setupPositionProbePattern(_moduleCount - 7, 0); + setupPositionProbePattern(0, _moduleCount - 7); + setupPositionAdjustPattern(); + setupTimingPattern(); + setupTypeInfo(test, maskPattern); + + if (_typeNumber >= 7) { + setupTypeNumber(test); + } + + if (_dataCache == null) { + _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList); + } + + mapData(_dataCache, maskPattern); + }; + + var setupPositionProbePattern = function(row, col) { + + for (var r = -1; r <= 7; r += 1) { + + if (row + r <= -1 || _moduleCount <= row + r) continue; + + for (var c = -1; c <= 7; c += 1) { + + if (col + c <= -1 || _moduleCount <= col + c) continue; + + if ( (0 <= r && r <= 6 && (c == 0 || c == 6) ) + || (0 <= c && c <= 6 && (r == 0 || r == 6) ) + || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) { + _modules[row + r][col + c] = true; + } else { + _modules[row + r][col + c] = false; + } + } + } + }; + + var getBestMaskPattern = function() { + + var minLostPoint = 0; + var pattern = 0; + + for (var i = 0; i < 8; i += 1) { + + makeImpl(true, i); + + var lostPoint = QRUtil.getLostPoint(_this); + + if (i == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i; + } + } + + return pattern; + }; + + var setupTimingPattern = function() { + + for (var r = 8; r < _moduleCount - 8; r += 1) { + if (_modules[r][6] != null) { + continue; + } + _modules[r][6] = (r % 2 == 0); + } + + for (var c = 8; c < _moduleCount - 8; c += 1) { + if (_modules[6][c] != null) { + continue; + } + _modules[6][c] = (c % 2 == 0); + } + }; + + var setupPositionAdjustPattern = function() { + + var pos = QRUtil.getPatternPosition(_typeNumber); + + for (var i = 0; i < pos.length; i += 1) { + + for (var j = 0; j < pos.length; j += 1) { + + var row = pos[i]; + var col = pos[j]; + + if (_modules[row][col] != null) { + continue; + } + + for (var r = -2; r <= 2; r += 1) { + + for (var c = -2; c <= 2; c += 1) { + + if (r == -2 || r == 2 || c == -2 || c == 2 + || (r == 0 && c == 0) ) { + _modules[row + r][col + c] = true; + } else { + _modules[row + r][col + c] = false; + } + } + } + } + } + }; + + var setupTypeNumber = function(test) { + + var bits = QRUtil.getBCHTypeNumber(_typeNumber); + + for (var i = 0; i < 18; i += 1) { + var mod = (!test && ( (bits >> i) & 1) == 1); + _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod; + } + + for (var i = 0; i < 18; i += 1) { + var mod = (!test && ( (bits >> i) & 1) == 1); + _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod; + } + }; + + var setupTypeInfo = function(test, maskPattern) { + + var data = (_errorCorrectionLevel << 3) | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); + + // vertical + for (var i = 0; i < 15; i += 1) { + + var mod = (!test && ( (bits >> i) & 1) == 1); + + if (i < 6) { + _modules[i][8] = mod; + } else if (i < 8) { + _modules[i + 1][8] = mod; + } else { + _modules[_moduleCount - 15 + i][8] = mod; + } + } + + // horizontal + for (var i = 0; i < 15; i += 1) { + + var mod = (!test && ( (bits >> i) & 1) == 1); + + if (i < 8) { + _modules[8][_moduleCount - i - 1] = mod; + } else if (i < 9) { + _modules[8][15 - i - 1 + 1] = mod; + } else { + _modules[8][15 - i - 1] = mod; + } + } + + // fixed module + _modules[_moduleCount - 8][8] = (!test); + }; + + var mapData = function(data, maskPattern) { + + var inc = -1; + var row = _moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + var maskFunc = QRUtil.getMaskFunction(maskPattern); + + for (var col = _moduleCount - 1; col > 0; col -= 2) { + + if (col == 6) col -= 1; + + while (true) { + + for (var c = 0; c < 2; c += 1) { + + if (_modules[row][col - c] == null) { + + var dark = false; + + if (byteIndex < data.length) { + dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1); + } + + var mask = maskFunc(row, col - c); + + if (mask) { + dark = !dark; + } + + _modules[row][col - c] = dark; + bitIndex -= 1; + + if (bitIndex == -1) { + byteIndex += 1; + bitIndex = 7; + } + } + } + + row += inc; + + if (row < 0 || _moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + }; + + var createBytes = function(buffer, rsBlocks) { + + var offset = 0; + + var maxDcCount = 0; + var maxEcCount = 0; + + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + + for (var r = 0; r < rsBlocks.length; r += 1) { + + var dcCount = rsBlocks[r].dataCount; + var ecCount = rsBlocks[r].totalCount - dcCount; + + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + + dcdata[r] = new Array(dcCount); + + for (var i = 0; i < dcdata[r].length; i += 1) { + dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset]; + } + offset += dcCount; + + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1); + + var modPoly = rawPoly.mod(rsPoly); + ecdata[r] = new Array(rsPoly.getLength() - 1); + for (var i = 0; i < ecdata[r].length; i += 1) { + var modIndex = i + modPoly.getLength() - ecdata[r].length; + ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0; + } + } + + var totalCodeCount = 0; + for (var i = 0; i < rsBlocks.length; i += 1) { + totalCodeCount += rsBlocks[i].totalCount; + } + + var data = new Array(totalCodeCount); + var index = 0; + + for (var i = 0; i < maxDcCount; i += 1) { + for (var r = 0; r < rsBlocks.length; r += 1) { + if (i < dcdata[r].length) { + data[index] = dcdata[r][i]; + index += 1; + } + } + } + + for (var i = 0; i < maxEcCount; i += 1) { + for (var r = 0; r < rsBlocks.length; r += 1) { + if (i < ecdata[r].length) { + data[index] = ecdata[r][i]; + index += 1; + } + } + } + + return data; + }; + + var createData = function(typeNumber, errorCorrectionLevel, dataList) { + + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel); + + var buffer = qrBitBuffer(); + + for (var i = 0; i < dataList.length; i += 1) { + var data = dataList[i]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) ); + data.write(buffer); + } + + // calc num max data. + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i += 1) { + totalDataCount += rsBlocks[i].dataCount; + } + + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw 'code length overflow. (' + + buffer.getLengthInBits() + + '>' + + totalDataCount * 8 + + ')'; + } + + // end code + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + + // padding + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + + // padding + while (true) { + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD0, 8); + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD1, 8); + } + + return createBytes(buffer, rsBlocks); + }; + + _this.addData = function(data, mode) { + + mode = mode || 'Byte'; + + var newData = null; + + switch(mode) { + case 'Numeric' : + newData = qrNumber(data); + break; + case 'Alphanumeric' : + newData = qrAlphaNum(data); + break; + case 'Byte' : + newData = qr8BitByte(data); + break; + case 'Kanji' : + newData = qrKanji(data); + break; + default : + throw 'mode:' + mode; + } + + _dataList.push(newData); + _dataCache = null; + }; + + _this.isDark = function(row, col) { + if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) { + throw row + ',' + col; + } + return _modules[row][col]; + }; + + _this.getModuleCount = function() { + return _moduleCount; + }; + + _this.make = function() { + if (_typeNumber < 1) { + var typeNumber = 1; + + for (; typeNumber < 40; typeNumber++) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel); + var buffer = qrBitBuffer(); + + for (var i = 0; i < _dataList.length; i++) { + var data = _dataList[i]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) ); + data.write(buffer); + } + + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalDataCount += rsBlocks[i].dataCount; + } + + if (buffer.getLengthInBits() <= totalDataCount * 8) { + break; + } + } + + _typeNumber = typeNumber; + } + + makeImpl(false, getBestMaskPattern() ); + }; + + _this.createTableTag = function(cellSize, margin) { + + cellSize = cellSize || 2; + margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + + var qrHtml = ''; + + qrHtml += ''; + qrHtml += ''; + + for (var r = 0; r < _this.getModuleCount(); r += 1) { + + qrHtml += ''; + + for (var c = 0; c < _this.getModuleCount(); c += 1) { + qrHtml += ''; + } + + qrHtml += ''; + qrHtml += '
'; + } + + qrHtml += '
'; + + return qrHtml; + }; + + _this.createSvgTag = function(cellSize, margin, alt, title) { + + var opts = {}; + if (typeof arguments[0] == 'object') { + // Called by options. + opts = arguments[0]; + // overwrite cellSize and margin. + cellSize = opts.cellSize; + margin = opts.margin; + alt = opts.alt; + title = opts.title; + } + + cellSize = cellSize || 2; + margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + + // Compose alt property surrogate + alt = (typeof alt === 'string') ? {text: alt} : alt || {}; + alt.text = alt.text || null; + alt.id = (alt.text) ? alt.id || 'qrcode-description' : null; + + // Compose title property surrogate + title = (typeof title === 'string') ? {text: title} : title || {}; + title.text = title.text || null; + title.id = (title.text) ? title.id || 'qrcode-title' : null; + + var size = _this.getModuleCount() * cellSize + margin * 2; + var c, mc, r, mr, qrSvg='', rect; + + rect = 'l' + cellSize + ',0 0,' + cellSize + + ' -' + cellSize + ',0 0,-' + cellSize + 'z '; + + qrSvg += '' + + escapeXml(title.text) + '' : ''; + qrSvg += (alt.text) ? '' + + escapeXml(alt.text) + '' : ''; + qrSvg += ''; + qrSvg += ''; + qrSvg += ''; + + return qrSvg; + }; + + _this.createDataURL = function(cellSize, margin) { + + cellSize = cellSize || 2; + margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + + return createDataURL(size, size, function(x, y) { + if (min <= x && x < max && min <= y && y < max) { + var c = Math.floor( (x - min) / cellSize); + var r = Math.floor( (y - min) / cellSize); + return _this.isDark(r, c)? 0 : 1; + } else { + return 1; + } + } ); + }; + + _this.createImgTag = function(cellSize, margin, alt) { + + cellSize = cellSize || 2; + margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + + var size = _this.getModuleCount() * cellSize + margin * 2; + + var img = ''; + img += '': escaped += '>'; break; + case '&': escaped += '&'; break; + case '"': escaped += '"'; break; + default : escaped += c; break; + } + } + return escaped; + }; + + var _createHalfASCII = function(margin) { + var cellSize = 1; + margin = (typeof margin == 'undefined')? cellSize * 2 : margin; + + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + + var y, x, r1, r2, p; + + var blocks = { + '██': '█', + '█ ': '▀', + ' █': '▄', + ' ': ' ' + }; + + var blocksLastLineNoMargin = { + '██': '▀', + '█ ': '▀', + ' █': ' ', + ' ': ' ' + }; + + var ascii = ''; + for (y = 0; y < size; y += 2) { + r1 = Math.floor((y - min) / cellSize); + r2 = Math.floor((y + 1 - min) / cellSize); + for (x = 0; x < size; x += 1) { + p = '█'; + + if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) { + p = ' '; + } + + if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) { + p += ' '; + } + else { + p += '█'; + } + + // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square. + ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p]; + } + + ascii += '\n'; + } + + if (size % 2 && margin > 0) { + return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀'); + } + + return ascii.substring(0, ascii.length-1); + }; + + _this.createASCII = function(cellSize, margin) { + cellSize = cellSize || 1; + + if (cellSize < 2) { + return _createHalfASCII(margin); + } + + cellSize -= 1; + margin = (typeof margin == 'undefined')? cellSize * 2 : margin; + + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + + var y, x, r, p; + + var white = Array(cellSize+1).join('██'); + var black = Array(cellSize+1).join(' '); + + var ascii = ''; + var line = ''; + for (y = 0; y < size; y += 1) { + r = Math.floor( (y - min) / cellSize); + line = ''; + for (x = 0; x < size; x += 1) { + p = 1; + + if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) { + p = 0; + } + + // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square. + line += p ? white : black; + } + + for (r = 0; r < cellSize; r += 1) { + ascii += line + '\n'; + } + } + + return ascii.substring(0, ascii.length-1); + }; + + _this.renderTo2dContext = function(context, cellSize) { + cellSize = cellSize || 2; + var length = _this.getModuleCount(); + for (var row = 0; row < length; row++) { + for (var col = 0; col < length; col++) { + context.fillStyle = _this.isDark(row, col) ? 'black' : 'white'; + context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize); + } + } + } + + return _this; + }; + + //--------------------------------------------------------------------- + // qrcode.stringToBytes + //--------------------------------------------------------------------- + + qrcode.stringToBytesFuncs = { + 'default' : function(s) { + var bytes = []; + for (var i = 0; i < s.length; i += 1) { + var c = s.charCodeAt(i); + bytes.push(c & 0xff); + } + return bytes; + } + }; + + qrcode.stringToBytes = qrcode.stringToBytesFuncs['default']; + + //--------------------------------------------------------------------- + // qrcode.createStringToBytes + //--------------------------------------------------------------------- + + /** + * @param unicodeData base64 string of byte array. + * [16bit Unicode],[16bit Bytes], ... + * @param numChars + */ + qrcode.createStringToBytes = function(unicodeData, numChars) { + + // create conversion map. + + var unicodeMap = function() { + + var bin = base64DecodeInputStream(unicodeData); + var read = function() { + var b = bin.read(); + if (b == -1) throw 'eof'; + return b; + }; + + var count = 0; + var unicodeMap = {}; + while (true) { + var b0 = bin.read(); + if (b0 == -1) break; + var b1 = read(); + var b2 = read(); + var b3 = read(); + var k = String.fromCharCode( (b0 << 8) | b1); + var v = (b2 << 8) | b3; + unicodeMap[k] = v; + count += 1; + } + if (count != numChars) { + throw count + ' != ' + numChars; + } + + return unicodeMap; + }(); + + var unknownChar = '?'.charCodeAt(0); + + return function(s) { + var bytes = []; + for (var i = 0; i < s.length; i += 1) { + var c = s.charCodeAt(i); + if (c < 128) { + bytes.push(c); + } else { + var b = unicodeMap[s.charAt(i)]; + if (typeof b == 'number') { + if ( (b & 0xff) == b) { + // 1byte + bytes.push(b); + } else { + // 2bytes + bytes.push(b >>> 8); + bytes.push(b & 0xff); + } + } else { + bytes.push(unknownChar); + } + } + } + return bytes; + }; + }; + + //--------------------------------------------------------------------- + // QRMode + //--------------------------------------------------------------------- + + var QRMode = { + MODE_NUMBER : 1 << 0, + MODE_ALPHA_NUM : 1 << 1, + MODE_8BIT_BYTE : 1 << 2, + MODE_KANJI : 1 << 3 + }; + + //--------------------------------------------------------------------- + // QRErrorCorrectionLevel + //--------------------------------------------------------------------- + + var QRErrorCorrectionLevel = { + L : 1, + M : 0, + Q : 3, + H : 2 + }; + + //--------------------------------------------------------------------- + // QRMaskPattern + //--------------------------------------------------------------------- + + var QRMaskPattern = { + PATTERN000 : 0, + PATTERN001 : 1, + PATTERN010 : 2, + PATTERN011 : 3, + PATTERN100 : 4, + PATTERN101 : 5, + PATTERN110 : 6, + PATTERN111 : 7 + }; + + //--------------------------------------------------------------------- + // QRUtil + //--------------------------------------------------------------------- + + var QRUtil = function() { + + var PATTERN_POSITION_TABLE = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ]; + var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0); + var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0); + var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1); + + var _this = {}; + + var getBCHDigit = function(data) { + var digit = 0; + while (data != 0) { + digit += 1; + data >>>= 1; + } + return digit; + }; + + _this.getBCHTypeInfo = function(data) { + var d = data << 10; + while (getBCHDigit(d) - getBCHDigit(G15) >= 0) { + d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) ); + } + return ( (data << 10) | d) ^ G15_MASK; + }; + + _this.getBCHTypeNumber = function(data) { + var d = data << 12; + while (getBCHDigit(d) - getBCHDigit(G18) >= 0) { + d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) ); + } + return (data << 12) | d; + }; + + _this.getPatternPosition = function(typeNumber) { + return PATTERN_POSITION_TABLE[typeNumber - 1]; + }; + + _this.getMaskFunction = function(maskPattern) { + + switch (maskPattern) { + + case QRMaskPattern.PATTERN000 : + return function(i, j) { return (i + j) % 2 == 0; }; + case QRMaskPattern.PATTERN001 : + return function(i, j) { return i % 2 == 0; }; + case QRMaskPattern.PATTERN010 : + return function(i, j) { return j % 3 == 0; }; + case QRMaskPattern.PATTERN011 : + return function(i, j) { return (i + j) % 3 == 0; }; + case QRMaskPattern.PATTERN100 : + return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; }; + case QRMaskPattern.PATTERN101 : + return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; }; + case QRMaskPattern.PATTERN110 : + return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; }; + case QRMaskPattern.PATTERN111 : + return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; }; + + default : + throw 'bad maskPattern:' + maskPattern; + } + }; + + _this.getErrorCorrectPolynomial = function(errorCorrectLength) { + var a = qrPolynomial([1], 0); + for (var i = 0; i < errorCorrectLength; i += 1) { + a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) ); + } + return a; + }; + + _this.getLengthInBits = function(mode, type) { + + if (1 <= type && type < 10) { + + // 1 - 9 + + switch(mode) { + case QRMode.MODE_NUMBER : return 10; + case QRMode.MODE_ALPHA_NUM : return 9; + case QRMode.MODE_8BIT_BYTE : return 8; + case QRMode.MODE_KANJI : return 8; + default : + throw 'mode:' + mode; + } + + } else if (type < 27) { + + // 10 - 26 + + switch(mode) { + case QRMode.MODE_NUMBER : return 12; + case QRMode.MODE_ALPHA_NUM : return 11; + case QRMode.MODE_8BIT_BYTE : return 16; + case QRMode.MODE_KANJI : return 10; + default : + throw 'mode:' + mode; + } + + } else if (type < 41) { + + // 27 - 40 + + switch(mode) { + case QRMode.MODE_NUMBER : return 14; + case QRMode.MODE_ALPHA_NUM : return 13; + case QRMode.MODE_8BIT_BYTE : return 16; + case QRMode.MODE_KANJI : return 12; + default : + throw 'mode:' + mode; + } + + } else { + throw 'type:' + type; + } + }; + + _this.getLostPoint = function(qrcode) { + + var moduleCount = qrcode.getModuleCount(); + + var lostPoint = 0; + + // LEVEL1 + + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount; col += 1) { + + var sameCount = 0; + var dark = qrcode.isDark(row, col); + + for (var r = -1; r <= 1; r += 1) { + + if (row + r < 0 || moduleCount <= row + r) { + continue; + } + + for (var c = -1; c <= 1; c += 1) { + + if (col + c < 0 || moduleCount <= col + c) { + continue; + } + + if (r == 0 && c == 0) { + continue; + } + + if (dark == qrcode.isDark(row + r, col + c) ) { + sameCount += 1; + } + } + } + + if (sameCount > 5) { + lostPoint += (3 + sameCount - 5); + } + } + }; + + // LEVEL2 + + for (var row = 0; row < moduleCount - 1; row += 1) { + for (var col = 0; col < moduleCount - 1; col += 1) { + var count = 0; + if (qrcode.isDark(row, col) ) count += 1; + if (qrcode.isDark(row + 1, col) ) count += 1; + if (qrcode.isDark(row, col + 1) ) count += 1; + if (qrcode.isDark(row + 1, col + 1) ) count += 1; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + + // LEVEL3 + + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount - 6; col += 1) { + if (qrcode.isDark(row, col) + && !qrcode.isDark(row, col + 1) + && qrcode.isDark(row, col + 2) + && qrcode.isDark(row, col + 3) + && qrcode.isDark(row, col + 4) + && !qrcode.isDark(row, col + 5) + && qrcode.isDark(row, col + 6) ) { + lostPoint += 40; + } + } + } + + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount - 6; row += 1) { + if (qrcode.isDark(row, col) + && !qrcode.isDark(row + 1, col) + && qrcode.isDark(row + 2, col) + && qrcode.isDark(row + 3, col) + && qrcode.isDark(row + 4, col) + && !qrcode.isDark(row + 5, col) + && qrcode.isDark(row + 6, col) ) { + lostPoint += 40; + } + } + } + + // LEVEL4 + + var darkCount = 0; + + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount; row += 1) { + if (qrcode.isDark(row, col) ) { + darkCount += 1; + } + } + } + + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + + return lostPoint; + }; + + return _this; + }(); + + //--------------------------------------------------------------------- + // QRMath + //--------------------------------------------------------------------- + + var QRMath = function() { + + var EXP_TABLE = new Array(256); + var LOG_TABLE = new Array(256); + + // initialize tables + for (var i = 0; i < 8; i += 1) { + EXP_TABLE[i] = 1 << i; + } + for (var i = 8; i < 256; i += 1) { + EXP_TABLE[i] = EXP_TABLE[i - 4] + ^ EXP_TABLE[i - 5] + ^ EXP_TABLE[i - 6] + ^ EXP_TABLE[i - 8]; + } + for (var i = 0; i < 255; i += 1) { + LOG_TABLE[EXP_TABLE[i] ] = i; + } + + var _this = {}; + + _this.glog = function(n) { + + if (n < 1) { + throw 'glog(' + n + ')'; + } + + return LOG_TABLE[n]; + }; + + _this.gexp = function(n) { + + while (n < 0) { + n += 255; + } + + while (n >= 256) { + n -= 255; + } + + return EXP_TABLE[n]; + }; + + return _this; + }(); + + //--------------------------------------------------------------------- + // qrPolynomial + //--------------------------------------------------------------------- + + function qrPolynomial(num, shift) { + + if (typeof num.length == 'undefined') { + throw num.length + '/' + shift; + } + + var _num = function() { + var offset = 0; + while (offset < num.length && num[offset] == 0) { + offset += 1; + } + var _num = new Array(num.length - offset + shift); + for (var i = 0; i < num.length - offset; i += 1) { + _num[i] = num[i + offset]; + } + return _num; + }(); + + var _this = {}; + + _this.getAt = function(index) { + return _num[index]; + }; + + _this.getLength = function() { + return _num.length; + }; + + _this.multiply = function(e) { + + var num = new Array(_this.getLength() + e.getLength() - 1); + + for (var i = 0; i < _this.getLength(); i += 1) { + for (var j = 0; j < e.getLength(); j += 1) { + num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) ); + } + } + + return qrPolynomial(num, 0); + }; + + _this.mod = function(e) { + + if (_this.getLength() - e.getLength() < 0) { + return _this; + } + + var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) ); + + var num = new Array(_this.getLength() ); + for (var i = 0; i < _this.getLength(); i += 1) { + num[i] = _this.getAt(i); + } + + for (var i = 0; i < e.getLength(); i += 1) { + num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio); + } + + // recursive call + return qrPolynomial(num, 0).mod(e); + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // QRRSBlock + //--------------------------------------------------------------------- + + var QRRSBlock = function() { + + var RS_BLOCK_TABLE = [ + + // L + // M + // Q + // H + + // 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + + // 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + + // 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + + // 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + + // 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + + // 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12, 7, 37, 13], + + // 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + + // 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + + // 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + + // 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + + // 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + + // 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + + // 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + + // 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + + // 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + + // 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + + // 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + + // 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + + // 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + + // 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + + // 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + + // 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + + // 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + + // 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + + // 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + + // 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + + // 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + + // 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + + // 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + + // 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + + // 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + ]; + + var qrRSBlock = function(totalCount, dataCount) { + var _this = {}; + _this.totalCount = totalCount; + _this.dataCount = dataCount; + return _this; + }; + + var _this = {}; + + var getRsBlockTable = function(typeNumber, errorCorrectionLevel) { + + switch(errorCorrectionLevel) { + case QRErrorCorrectionLevel.L : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectionLevel.M : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectionLevel.Q : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectionLevel.H : + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default : + return undefined; + } + }; + + _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) { + + var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel); + + if (typeof rsBlock == 'undefined') { + throw 'bad rs block @ typeNumber:' + typeNumber + + '/errorCorrectionLevel:' + errorCorrectionLevel; + } + + var length = rsBlock.length / 3; + + var list = []; + + for (var i = 0; i < length; i += 1) { + + var count = rsBlock[i * 3 + 0]; + var totalCount = rsBlock[i * 3 + 1]; + var dataCount = rsBlock[i * 3 + 2]; + + for (var j = 0; j < count; j += 1) { + list.push(qrRSBlock(totalCount, dataCount) ); + } + } + + return list; + }; + + return _this; + }(); + + //--------------------------------------------------------------------- + // qrBitBuffer + //--------------------------------------------------------------------- + + var qrBitBuffer = function() { + + var _buffer = []; + var _length = 0; + + var _this = {}; + + _this.getBuffer = function() { + return _buffer; + }; + + _this.getAt = function(index) { + var bufIndex = Math.floor(index / 8); + return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1; + }; + + _this.put = function(num, length) { + for (var i = 0; i < length; i += 1) { + _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1); + } + }; + + _this.getLengthInBits = function() { + return _length; + }; + + _this.putBit = function(bit) { + + var bufIndex = Math.floor(_length / 8); + if (_buffer.length <= bufIndex) { + _buffer.push(0); + } + + if (bit) { + _buffer[bufIndex] |= (0x80 >>> (_length % 8) ); + } + + _length += 1; + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // qrNumber + //--------------------------------------------------------------------- + + var qrNumber = function(data) { + + var _mode = QRMode.MODE_NUMBER; + var _data = data; + + var _this = {}; + + _this.getMode = function() { + return _mode; + }; + + _this.getLength = function(buffer) { + return _data.length; + }; + + _this.write = function(buffer) { + + var data = _data; + + var i = 0; + + while (i + 2 < data.length) { + buffer.put(strToNum(data.substring(i, i + 3) ), 10); + i += 3; + } + + if (i < data.length) { + if (data.length - i == 1) { + buffer.put(strToNum(data.substring(i, i + 1) ), 4); + } else if (data.length - i == 2) { + buffer.put(strToNum(data.substring(i, i + 2) ), 7); + } + } + }; + + var strToNum = function(s) { + var num = 0; + for (var i = 0; i < s.length; i += 1) { + num = num * 10 + chatToNum(s.charAt(i) ); + } + return num; + }; + + var chatToNum = function(c) { + if ('0' <= c && c <= '9') { + return c.charCodeAt(0) - '0'.charCodeAt(0); + } + throw 'illegal char :' + c; + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // qrAlphaNum + //--------------------------------------------------------------------- + + var qrAlphaNum = function(data) { + + var _mode = QRMode.MODE_ALPHA_NUM; + var _data = data; + + var _this = {}; + + _this.getMode = function() { + return _mode; + }; + + _this.getLength = function(buffer) { + return _data.length; + }; + + _this.write = function(buffer) { + + var s = _data; + + var i = 0; + + while (i + 1 < s.length) { + buffer.put( + getCode(s.charAt(i) ) * 45 + + getCode(s.charAt(i + 1) ), 11); + i += 2; + } + + if (i < s.length) { + buffer.put(getCode(s.charAt(i) ), 6); + } + }; + + var getCode = function(c) { + + if ('0' <= c && c <= '9') { + return c.charCodeAt(0) - '0'.charCodeAt(0); + } else if ('A' <= c && c <= 'Z') { + return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10; + } else { + switch (c) { + case ' ' : return 36; + case '$' : return 37; + case '%' : return 38; + case '*' : return 39; + case '+' : return 40; + case '-' : return 41; + case '.' : return 42; + case '/' : return 43; + case ':' : return 44; + default : + throw 'illegal char :' + c; + } + } + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // qr8BitByte + //--------------------------------------------------------------------- + + var qr8BitByte = function(data) { + + var _mode = QRMode.MODE_8BIT_BYTE; + var _data = data; + var _bytes = qrcode.stringToBytes(data); + + var _this = {}; + + _this.getMode = function() { + return _mode; + }; + + _this.getLength = function(buffer) { + return _bytes.length; + }; + + _this.write = function(buffer) { + for (var i = 0; i < _bytes.length; i += 1) { + buffer.put(_bytes[i], 8); + } + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // qrKanji + //--------------------------------------------------------------------- + + var qrKanji = function(data) { + + var _mode = QRMode.MODE_KANJI; + var _data = data; + + var stringToBytes = qrcode.stringToBytesFuncs['SJIS']; + if (!stringToBytes) { + throw 'sjis not supported.'; + } + !function(c, code) { + // self test for sjis support. + var test = stringToBytes(c); + if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) { + throw 'sjis not supported.'; + } + }('\u53cb', 0x9746); + + var _bytes = stringToBytes(data); + + var _this = {}; + + _this.getMode = function() { + return _mode; + }; + + _this.getLength = function(buffer) { + return ~~(_bytes.length / 2); + }; + + _this.write = function(buffer) { + + var data = _bytes; + + var i = 0; + + while (i + 1 < data.length) { + + var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]); + + if (0x8140 <= c && c <= 0x9FFC) { + c -= 0x8140; + } else if (0xE040 <= c && c <= 0xEBBF) { + c -= 0xC140; + } else { + throw 'illegal char at ' + (i + 1) + '/' + c; + } + + c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff); + + buffer.put(c, 13); + + i += 2; + } + + if (i < data.length) { + throw 'illegal char at ' + (i + 1); + } + }; + + return _this; + }; + + //===================================================================== + // GIF Support etc. + // + + //--------------------------------------------------------------------- + // byteArrayOutputStream + //--------------------------------------------------------------------- + + var byteArrayOutputStream = function() { + + var _bytes = []; + + var _this = {}; + + _this.writeByte = function(b) { + _bytes.push(b & 0xff); + }; + + _this.writeShort = function(i) { + _this.writeByte(i); + _this.writeByte(i >>> 8); + }; + + _this.writeBytes = function(b, off, len) { + off = off || 0; + len = len || b.length; + for (var i = 0; i < len; i += 1) { + _this.writeByte(b[i + off]); + } + }; + + _this.writeString = function(s) { + for (var i = 0; i < s.length; i += 1) { + _this.writeByte(s.charCodeAt(i) ); + } + }; + + _this.toByteArray = function() { + return _bytes; + }; + + _this.toString = function() { + var s = ''; + s += '['; + for (var i = 0; i < _bytes.length; i += 1) { + if (i > 0) { + s += ','; + } + s += _bytes[i]; + } + s += ']'; + return s; + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // base64EncodeOutputStream + //--------------------------------------------------------------------- + + var base64EncodeOutputStream = function() { + + var _buffer = 0; + var _buflen = 0; + var _length = 0; + var _base64 = ''; + + var _this = {}; + + var writeEncoded = function(b) { + _base64 += String.fromCharCode(encode(b & 0x3f) ); + }; + + var encode = function(n) { + if (n < 0) { + // error. + } else if (n < 26) { + return 0x41 + n; + } else if (n < 52) { + return 0x61 + (n - 26); + } else if (n < 62) { + return 0x30 + (n - 52); + } else if (n == 62) { + return 0x2b; + } else if (n == 63) { + return 0x2f; + } + throw 'n:' + n; + }; + + _this.writeByte = function(n) { + + _buffer = (_buffer << 8) | (n & 0xff); + _buflen += 8; + _length += 1; + + while (_buflen >= 6) { + writeEncoded(_buffer >>> (_buflen - 6) ); + _buflen -= 6; + } + }; + + _this.flush = function() { + + if (_buflen > 0) { + writeEncoded(_buffer << (6 - _buflen) ); + _buffer = 0; + _buflen = 0; + } + + if (_length % 3 != 0) { + // padding + var padlen = 3 - _length % 3; + for (var i = 0; i < padlen; i += 1) { + _base64 += '='; + } + } + }; + + _this.toString = function() { + return _base64; + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // base64DecodeInputStream + //--------------------------------------------------------------------- + + var base64DecodeInputStream = function(str) { + + var _str = str; + var _pos = 0; + var _buffer = 0; + var _buflen = 0; + + var _this = {}; + + _this.read = function() { + + while (_buflen < 8) { + + if (_pos >= _str.length) { + if (_buflen == 0) { + return -1; + } + throw 'unexpected end of file./' + _buflen; + } + + var c = _str.charAt(_pos); + _pos += 1; + + if (c == '=') { + _buflen = 0; + return -1; + } else if (c.match(/^\s$/) ) { + // ignore if whitespace. + continue; + } + + _buffer = (_buffer << 6) | decode(c.charCodeAt(0) ); + _buflen += 6; + } + + var n = (_buffer >>> (_buflen - 8) ) & 0xff; + _buflen -= 8; + return n; + }; + + var decode = function(c) { + if (0x41 <= c && c <= 0x5a) { + return c - 0x41; + } else if (0x61 <= c && c <= 0x7a) { + return c - 0x61 + 26; + } else if (0x30 <= c && c <= 0x39) { + return c - 0x30 + 52; + } else if (c == 0x2b) { + return 62; + } else if (c == 0x2f) { + return 63; + } else { + throw 'c:' + c; + } + }; + + return _this; + }; + + //--------------------------------------------------------------------- + // gifImage (B/W) + //--------------------------------------------------------------------- + + var gifImage = function(width, height) { + + var _width = width; + var _height = height; + var _data = new Array(width * height); + + var _this = {}; + + _this.setPixel = function(x, y, pixel) { + _data[y * _width + x] = pixel; + }; + + _this.write = function(out) { + + //--------------------------------- + // GIF Signature + + out.writeString('GIF87a'); + + //--------------------------------- + // Screen Descriptor + + out.writeShort(_width); + out.writeShort(_height); + + out.writeByte(0x80); // 2bit + out.writeByte(0); + out.writeByte(0); + + //--------------------------------- + // Global Color Map + + // black + out.writeByte(0x00); + out.writeByte(0x00); + out.writeByte(0x00); + + // white + out.writeByte(0xff); + out.writeByte(0xff); + out.writeByte(0xff); + + //--------------------------------- + // Image Descriptor + + out.writeString(','); + out.writeShort(0); + out.writeShort(0); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(0); + + //--------------------------------- + // Local Color Map + + //--------------------------------- + // Raster Data + + var lzwMinCodeSize = 2; + var raster = getLZWRaster(lzwMinCodeSize); + + out.writeByte(lzwMinCodeSize); + + var offset = 0; + + while (raster.length - offset > 255) { + out.writeByte(255); + out.writeBytes(raster, offset, 255); + offset += 255; + } + + out.writeByte(raster.length - offset); + out.writeBytes(raster, offset, raster.length - offset); + out.writeByte(0x00); + + //--------------------------------- + // GIF Terminator + out.writeString(';'); + }; + + var bitOutputStream = function(out) { + + var _out = out; + var _bitLength = 0; + var _bitBuffer = 0; + + var _this = {}; + + _this.write = function(data, length) { + + if ( (data >>> length) != 0) { + throw 'length over'; + } + + while (_bitLength + length >= 8) { + _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) ); + length -= (8 - _bitLength); + data >>>= (8 - _bitLength); + _bitBuffer = 0; + _bitLength = 0; + } + + _bitBuffer = (data << _bitLength) | _bitBuffer; + _bitLength = _bitLength + length; + }; + + _this.flush = function() { + if (_bitLength > 0) { + _out.writeByte(_bitBuffer); + } + }; + + return _this; + }; + + var getLZWRaster = function(lzwMinCodeSize) { + + var clearCode = 1 << lzwMinCodeSize; + var endCode = (1 << lzwMinCodeSize) + 1; + var bitLength = lzwMinCodeSize + 1; + + // Setup LZWTable + var table = lzwTable(); + + for (var i = 0; i < clearCode; i += 1) { + table.add(String.fromCharCode(i) ); + } + table.add(String.fromCharCode(clearCode) ); + table.add(String.fromCharCode(endCode) ); + + var byteOut = byteArrayOutputStream(); + var bitOut = bitOutputStream(byteOut); + + // clear code + bitOut.write(clearCode, bitLength); + + var dataIndex = 0; + + var s = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + + while (dataIndex < _data.length) { + + var c = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + + if (table.contains(s + c) ) { + + s = s + c; + + } else { + + bitOut.write(table.indexOf(s), bitLength); + + if (table.size() < 0xfff) { + + if (table.size() == (1 << bitLength) ) { + bitLength += 1; + } + + table.add(s + c); + } + + s = c; + } + } + + bitOut.write(table.indexOf(s), bitLength); + + // end code + bitOut.write(endCode, bitLength); + + bitOut.flush(); + + return byteOut.toByteArray(); + }; + + var lzwTable = function() { + + var _map = {}; + var _size = 0; + + var _this = {}; + + _this.add = function(key) { + if (_this.contains(key) ) { + throw 'dup key:' + key; + } + _map[key] = _size; + _size += 1; + }; + + _this.size = function() { + return _size; + }; + + _this.indexOf = function(key) { + return _map[key]; + }; + + _this.contains = function(key) { + return typeof _map[key] != 'undefined'; + }; + + return _this; + }; + + return _this; + }; + + var createDataURL = function(width, height, getPixel) { + var gif = gifImage(width, height); + for (var y = 0; y < height; y += 1) { + for (var x = 0; x < width; x += 1) { + gif.setPixel(x, y, getPixel(x, y) ); + } + } + + var b = byteArrayOutputStream(); + gif.write(b); + + var base64 = base64EncodeOutputStream(); + var bytes = b.toByteArray(); + for (var i = 0; i < bytes.length; i += 1) { + base64.writeByte(bytes[i]); + } + base64.flush(); + + return 'data:image/gif;base64,' + base64; + }; + + //--------------------------------------------------------------------- + // returns qrcode function. + + return qrcode; +}(); + +// multibyte support +!function() { + + qrcode.stringToBytesFuncs['UTF-8'] = function(s) { + // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array + function toUTF8Array(str) { + var utf8 = []; + for (var i=0; i < str.length; i++) { + var charcode = str.charCodeAt(i); + if (charcode < 0x80) utf8.push(charcode); + else if (charcode < 0x800) { + utf8.push(0xc0 | (charcode >> 6), + 0x80 | (charcode & 0x3f)); + } + else if (charcode < 0xd800 || charcode >= 0xe000) { + utf8.push(0xe0 | (charcode >> 12), + 0x80 | ((charcode>>6) & 0x3f), + 0x80 | (charcode & 0x3f)); + } + // surrogate pair + else { + i++; + // UTF-16 encodes 0x10000-0x10FFFF by + // subtracting 0x10000 and splitting the + // 20 bits of 0x0-0xFFFFF into two halves + charcode = 0x10000 + (((charcode & 0x3ff)<<10) + | (str.charCodeAt(i) & 0x3ff)); + utf8.push(0xf0 | (charcode >>18), + 0x80 | ((charcode>>12) & 0x3f), + 0x80 | ((charcode>>6) & 0x3f), + 0x80 | (charcode & 0x3f)); + } + } + return utf8; + } + return toUTF8Array(s); + }; + +}(); + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define([], factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } +}(function () { + return qrcode; +})); diff --git a/app/vendor/tweetnacl.min.js b/app/vendor/tweetnacl.min.js new file mode 100644 index 0000000..65340cc --- /dev/null +++ b/app/vendor/tweetnacl.min.js @@ -0,0 +1 @@ +!function(i){"use strict";var m=function(r,n){this.hi=0|r,this.lo=0|n},v=function(r){var n,e=new Float64Array(16);if(r)for(n=0;n>>32-n}function b(r,n){var e=255&r[n+3];return(e=(e=e<<8|255&r[n+2])<<8|255&r[n+1])<<8|255&r[n+0]}function B(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new m(e,t)}function p(r,n,e){var t;for(t=0;t<4;t++)r[n+t]=255&e,e>>>=8}function S(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function u(r,n,e,t,o){var i,a=0;for(i=0;i>>8)-1}function A(r,n,e,t){return u(r,n,e,t,16)}function _(r,n,e,t){return u(r,n,e,t,32)}function U(r,n,e,t,o){var i,a,f,u=new Uint32Array(16),c=new Uint32Array(16),w=new Uint32Array(16),y=new Uint32Array(4);for(i=0;i<4;i++)c[5*i]=b(t,4*i),c[1+i]=b(e,4*i),c[6+i]=b(n,4*i),c[11+i]=b(e,16+4*i);for(i=0;i<16;i++)w[i]=c[i];for(i=0;i<20;i++){for(a=0;a<4;a++){for(f=0;f<4;f++)y[f]=c[(5*a+4*f)%16];for(y[1]^=h(y[0]+y[3]|0,7),y[2]^=h(y[1]+y[0]|0,9),y[3]^=h(y[2]+y[1]|0,13),y[0]^=h(y[3]+y[2]|0,18),f=0;f<4;f++)u[4*a+(a+f)%4]=y[f]}for(f=0;f<16;f++)c[f]=u[f]}if(o){for(i=0;i<16;i++)c[i]=c[i]+w[i]|0;for(i=0;i<4;i++)c[5*i]=c[5*i]-b(t,4*i)|0,c[6+i]=c[6+i]-b(n,4*i)|0;for(i=0;i<4;i++)p(r,4*i,c[5*i]),p(r,16+4*i,c[6+i])}else for(i=0;i<16;i++)p(r,4*i,c[i]+w[i]|0)}function E(r,n,e,t){U(r,n,e,t,!1)}function x(r,n,e,t){return U(r,n,e,t,!0),0}var d=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function K(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),w=new Uint8Array(64);if(!o)return 0;for(u=0;u<16;u++)c[u]=0;for(u=0;u<8;u++)c[u]=i[u];for(;64<=o;){for(E(w,c,a,d),u=0;u<64;u++)r[n+u]=(e?e[t+u]:0)^w[u];for(f=1,u=8;u<16;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(0>>=8}var z=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function R(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),l=new Uint32Array(17),s=new Uint32Array(17),h=new Uint32Array(17);for(u=0;u<17;u++)y[u]=l[u]=0;for(u=0;u<16;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;0>>=8;for(c=c+l[16]|0,l[16]=3&c,c=5*(c>>>2)|0,u=0;u<16;u++)c=c+l[u]|0,l[u]=255&c,c>>>=8;c=c+l[16]|0,l[16]=c}for(u=0;u<17;u++)h[u]=l[u];for(k(l,z),a=0|-(l[16]>>>7),u=0;u<17;u++)l[u]^=a&(h[u]^l[u]);for(u=0;u<16;u++)s[u]=i[u+16];for(s[16]=0,k(l,s),u=0;u<16;u++)r[n+u]=l[u];return 0}function P(r,n,e,t,o,i){var a=new Uint8Array(16);return R(a,0,e,t,o,i),A(r,n,a,0)}function M(r,n,e,t,o){var i;if(e<32)return-1;for(T(r,0,n,0,e,t,o),R(r,16,r,32,e-32,r),i=0;i<16;i++)r[i]=0;return 0}function N(r,n,e,t,o){var i,a=new Uint8Array(32);if(e<32)return-1;if(L(a,0,32,t,o),0!==P(n,16,n,32,e-32,a))return-1;for(T(r,0,n,0,e,t,o),i=0;i<32;i++)r[i]=0;return 0}function O(r,n){var e;for(e=0;e<16;e++)r[e]=0|n[e]}function C(r){var n,e;for(e=0;e<16;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(e<15?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function F(r,n,e){for(var t,o=~(e-1),i=0;i<16;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function Z(r,n){var e,t,o,i=v(),a=v();for(e=0;e<16;e++)a[e]=n[e];for(C(a),C(a),C(a),t=0;t<2;t++){for(i[0]=a[0]-65517,e=1;e<15;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,F(a,i,1-o)}for(e=0;e<16;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function G(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return Z(e,r),Z(t,n),_(e,0,t,0)}function q(r){var n=new Uint8Array(32);return Z(n,r),1&n[0]}function D(r,n){var e;for(e=0;e<16;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function I(r,n,e){var t;for(t=0;t<16;t++)r[t]=n[t]+e[t]|0}function V(r,n,e){var t;for(t=0;t<16;t++)r[t]=n[t]-e[t]|0}function X(r,n,e){var t,o,i=new Float64Array(31);for(t=0;t<31;t++)i[t]=0;for(t=0;t<16;t++)for(o=0;o<16;o++)i[t+o]+=n[t]*e[o];for(t=0;t<15;t++)i[t]+=38*i[t+16];for(t=0;t<16;t++)r[t]=i[t];C(r),C(r)}function j(r,n){X(r,n,n)}function H(r,n){var e,t=v();for(e=0;e<16;e++)t[e]=n[e];for(e=253;0<=e;e--)j(t,t),2!==e&&4!==e&&X(t,t,n);for(e=0;e<16;e++)r[e]=t[e]}function J(r,n){var e,t=v();for(e=0;e<16;e++)t[e]=n[e];for(e=250;0<=e;e--)j(t,t),1!==e&&X(t,t,n);for(e=0;e<16;e++)r[e]=t[e]}function Q(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=v(),u=v(),c=v(),w=v(),y=v(),l=v();for(o=0;o<31;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,D(a,e),o=0;o<16;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;0<=o;--o)F(f,u,t=i[o>>>3]>>>(7&o)&1),F(c,w,t),I(y,f,c),V(f,f,c),I(c,u,w),V(u,u,w),j(w,y),j(l,f),X(f,c,f),X(c,u,y),I(y,f,c),V(f,f,c),j(u,f),V(c,w,l),X(f,c,g),I(f,f,w),X(c,c,f),X(f,w,l),X(w,u,a),j(u,y),F(f,u,t),F(c,w,t);for(o=0;o<16;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var s=a.subarray(32),h=a.subarray(16);return H(s,s),X(h,h,s),Z(r,h),0}function W(r,n){return Q(r,n,e)}function $(r,n){return a(n,32),W(r,n)}function rr(r,n,e){var t=new Uint8Array(32);return Q(t,e,n),x(r,o,t,d)}var nr=M,er=N;function tr(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=(n=arguments[e].hi)&f,a+=n>>>16;return new m((i+=(o+=t>>>16)>>>16)&f|(a+=i>>>16)<<16,t&f|o<<16)}function or(r,n){return new m(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function ir(){var r,n=0,e=0;for(r=0;r>>n|r.lo<>>n|r.hi<>>n|r.hi<>>n|r.lo<>(7&o)&1),yr(n,r),yr(r,r),lr(r,n,t)}function vr(r,n){var e=[v(),v(),v(),v()];O(e[0],t),O(e[1],f),O(e[2],w),X(e[3],t,f),hr(r,e,n)}function gr(r,n,e){var t,o=new Uint8Array(64),i=[v(),v(),v(),v()];for(e||a(n,32),wr(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,vr(i,o),sr(r,i),t=0;t<32;t++)n[t+32]=r[t];return 0}var br=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function pr(r,n){var e,t,o,i;for(t=63;32<=t;--t){for(e=0,o=t-32,i=t-12;o>4)*br[o],e=n[o]>>8,n[o]&=255;for(o=0;o<32;o++)n[o]-=e*br[o];for(t=0;t<32;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function Ar(r){var n,e=new Float64Array(64);for(n=0;n<64;n++)e[n]=r[n];for(n=0;n<64;n++)r[n]=0;pr(r,e)}function _r(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[v(),v(),v(),v()];wr(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;o>7&&V(r[0],c,r[0]),X(r[3],r[0],r[1])}(u,t))return-1;for(o=0;o z_&(m!lX9rlr(dhPf^Qyvhg`ng8d#Vf>#!?NF~rpa&9 z@s7;R;%UnA0kIP<@lM{sful|8ZQy>w^U=4tdEMO?mCcP_Dr`x83nKN`A}yN-nm+V+ zPciLae!p5&J@gV+h}>TOdkvub1o%%f{{H=s|K3!^dHm_#Kgst@uKbxY_ma^ppo~o?c~}xPSh?jqLw;3jUAC7{vSlaP$gw^yOk>AcKw^ zj2@`CnL^f3U%bwy3`B?kO7A$Idhc`1nJLVoyBpmls$ z+_+0o!mzfvyb6(3P?J@Vdoo*{9+n#N1~aXHn!jScermO^7nR`}$m>DjVfF1su%% zA|IY%+mSl%QlQT*9M=@IXqRkR- z7gzSd8g+Ko=384^ugC`m`ie^nEke`C(+G*;B-u$wlQ_Jl7-+y84zp{`>r_-!0`>Jp z23lY+SVTlbN$J@m--p+%dhf*L`OiE9?4%qLVX5$_n(`W$s2j~6*Kt!zGb(qw^JhLyNRs%5UGk9i1Xb@bj%x$>edF+#~zu%FXYZ!G9of zOek(8quENs$s{CSq%IY#zk_NM-c+Q%qS?qC9pTbkFAA4tv8{|?j%{a{{^>=6`C`f6 z0n?Aly~9-*6?=sVQ!cTkR)YpT)#__tS!I1|pI%2`w*ODpgqXeG`y(A4y;6#>8jqm= zG>001l9>3{qoy@viW^a9w3)9jZuH}qo*Vu3i`!_Y9omfV&a{tX0*Ok#*7fb|?Cd$) z>Z2O3@bz?cOLWV5+{a~wgoJu~qo{?lDo&(V21iC*W=2CPsi;ayOZo=}>~?K&aU)Jn zPWYUzxEUC9RupWkZG~$#V3(mMLw$*2>PBk6k>XJ0z@>n@oS2v_@2ixtu7QF6X%l(7 zXdDWL+Z`v00CHX~T^@2#6I&Y_CLu**^OM};s$b{l=P>%tMn{yA(m+Q?hg1h0)0Dc` z{vvH}+)~v!s#5s|9l~Z@Gv3h=Zj{Xv;AnIZzMB7*ZRjAW@HM+jJ%5xJ71ciUPN2F- z+jXJlgyIcR&0BNojRM(i+I>q>zHtXcc-EIELzxvB)sa$K)mQ7)dND3(b`%lU%6EZ7 zu;QZgfc4gs+_KwL3!6Raox8Av!u;TJp{Bf_tgpG2qk}5mjet6z`ngXg^S|9#b)-4( zKp03rD&+s2EgSG*xbi$PAQ6^X>TtF`k)jtoVr9mE>DO;0xQ;twemxZ6%y-T&eNW?q z5wY>-4YTT2m}SS1J7>s3{qBvl@e zt)#bw*4K8c5$tfM`DT!YhLRUDj8~gJvr||IwfnqEYl>8JV%>s7+E96B#A_Lve3zfL z5Gl}jQYvGW|7!R;%Y?ep#%g$Sc+Pc;OrPTs;C=XOz@tyt+Wix{$7)MiqS+>QCj3Ej z(16?EXP;6IeoPq?1Fli1uokpyKZ)gg>1aGOGA^1?b?=%`#rQBKAF5yH{5d29Q7}B( z8gzUAfpmYWfZORtso3p}o!@oj(>Y{eoK!i>?y8Dt961`Is;n!#*i2QmXmqs{NQd+6 z*|V*oIlsre{3YO(@_iw%z>`2|4>UU6qr!4v2V-v3iGe}_g2PLfE~_^;{wepewmRl~ zvc2Ub`|-g!#xXF_3<#5Ls?b5k>p`M+T&BG&F?LIXg2Ud*@|MiT8^h2a88HJ(;K`L9 zXoPyhhV&qkztzsDeVqnRX3^B+ETSpz4q~%JwsT=b2`_|8v{6Ty`5WXLC@*#*Y3Mvc z5y~X&0&ZtIg(GEki8YAk;NOc84AK7L##2b?7z7+%Q=W5n^y@XQ+1UBM&~<>DU1a*q zxgD?iPZ7>70Z8qHrqeh(Ew3Fd*pB~t_#>2#AgM)+64Rv*?d%29VFs6kCr}>O(M3Ep1OWL*=}ZMF5f_3 zEE2L)iuhJtG6MbE3&;8$p1XT;eUVWB?Jg(uSq>(%S&<9unxm=;+2MZ5#ApcUX1Mjw zkI(ZuJzW-%EwT?KTkT?G!P~ZJB_PlDZ%`yMOuwIq50zwAiw`P(Lpr=rK`AzxRmyt* z(uh|ufAj>nzj|5&$u@Q&=2biDK|;%Rl~`06iK!!QA=@oXw8pycj#tyNjX9A7#N#4O z)1fby0gD7Ri@s{^XlVQZ-dn2^!}$|TW`#9IuzvP_x9}Ft30MD zuHfLEC&zEyZ1sK3HQl9sVNFf@H&<@J{(%`+9QtTV0T)z1ndf-ttiJ#4)fE;Y^yP~e z*>L*xZ+9QePCIb5vl@ygo*^-O%=lrZ-Iz|DX5Qj;5ylNGN7ky|gxS)6%dLqyE+%gKUt552kHl8EN>ZijWjf5nk1Qwk7JQHr|T1X zmePX<=Oz_FDp!h6DcfbXL1D&71y&_t#-oGl&e2}Yks{axuc&kBR^DvqX!|!>to37k zaulubrhx7P<$#Sgxh7uXf*brA$}6>G`TDeJ_e zp+CL<=Qi6JRXNl$-`{9p?v?r14_z0sj>0Nakwus9Qp03Co*!%Sg*#Nb1V>%D!r1EH$jHe zQhj}(N6ZhAP6OGs%!#&?*T;rvxGE=VS+PRTtG6aN+o%&r07Q@vEpyG^_h0VW6IFRG zi)AOVmMxvu!wchYksgjaE6PqitaY!9-Vpc7&lW$uNTwBSK09*DW~f;xEa1xU0CPQY%*LU+PBJn>gWn`{I zSXls;#GuF~=(`)v5oaxj#fv#oNOpU2{Qg~6#fk8Lxd4!dKCy5#^?5-FAbDGFu0gqp zZngqXyKQc^;W{B5a^-SYkDuGzp}I6X=E5qpXUQ)Q8vB`7S|c&s>Dc8Na2hGsfOyNt zX190L)lqqn55Mu>x?$KmN*EUz0?wE@%+7tavj4cbDl9cfo5Y^KH}A4SQj^9{*JDFt z2>`@X{Dp+y4eNc!N?k%w9-9)LyGbz+^E-E8?E6M+OeQFG*%*nIoWu@8k z*m$p5vUbf{5%_-ip1%Dk!Ya*KivOyU*QmRva$*Lf!@v;s#+0&o-XSTMNW| zryY41+_K`e`6B<1EziabB)`E7zE3z5qi!U~%V1h(%;R&2a?fh8q%RomGt z^cfgCnYpdvsDS3?A~U|W20Z*aJ3D*Wbh@$DL!_nUT7;u$Gu&de-}jxO_Z z0#Gs}PDQHh?5`=7;hmk4oW;;HO~F0zkjiT7BqZuiBZ_1nVPgJ`eh*I4=P8d}K_I(u zCYj*KQ_2;Yz(SktZ};1w9{r=LNdaT8*pjaIYj^WipuT-uN!tO<5&a;t9({&Me&a<0 zL!eKdqeEol^@Bcj{S7C|Vlm((VS#XSo5LZIHx&2}3{#i!G{gHya@cuai5-k{p zQ*-9V@K;Bl6yzJXPZm@p=GJKYPIXmO zxWdFF<@O2+(zrev8D$c~xogEES;z)bQ&JQ%xZawt75t&Fy1~KR#`uEe$2FI6 z-`C@+m5YiT1xNV#5*ybOvSJ9v0;gQxv^V&;y_;8S?j!MM?+{zbA=KGCkDqr36(T|i zrBj<-^jmy0SqjcK@+Kx?4Geu}AJjk5ULtwPp!in?F^QK*aU6>uR%*1lN*xk2Py)H;66 z$vZ+N8H|p1W%W*IQfL*HNZtY0T8K}yCf6C?g`T9^i(7?m9ZSjSG4N4&r`N~H7d!6U z{=DeF-dug;`hY{a^K58xW04=WwKMB_v|STLF?FQiPPxV12dV;VjxSarSe51{G0yVduwOJgepwp44>)oP{mb9{VKa;(XzAC|$-kH#Klg0D1Xh@u!d1iDc@&4x z5O(7zlSiP|0UsNjKB)`;L=G-S=YgDJ$(+*C(iW%LH=>`@(sn;TXrTW_)5WMLd{+X4 z@peij~jXG;6TIcOaXZ&vbW=SHjn z_c*YC7w7a6K6&NO2Kc!WF^Dizc{y86rOV|(9UvLA0(r-)jdcU8_kMN}XNo6Xre z+4PPZ5MQ-Ce6rOXlol~wR751XBALh7S^qk^zFYtRc=g~Z0KaZFbv8YHzIke1-e6{K zaWNCaFyDSO(zeu2yhNv9D}W8rgBgA=Sd;sr1O?yOFQDd@0uN4NO-A)=kvo4WCBAFQkCs1B@b@0P11V-kIR?IF3R-3gbbfM0)hYdR2{HyK z$MtWAQiovE-%u+IBa=d-rm(tk>_)`z)i6RVSaVE)zjQOdde8dMy7_qv-FR7T zaZP>9DR+ctX2e{wF*#^S)7Ej%(Pq!mW-wiJ73qz^bAk+Hh-@Q&lE8_Kh4d zKRJJ4I=b}8S6h5BqQl8~VN{z_T2d9d(P^yYx^b`k`wjlmt45l z4jb1Y_$VecG_BUlssGQx#`)k}8O!Bjl5qe!kMyq6dfA`tqO%EBRn`K& zYpRu^i-(X#pIQKu->}i6dpKIRP0Apdx4lS7Q~F0WNQPZQs-W|wb9jKsl}YLDVfGq> z6fKg0)51t@FAEpSb)m0$ljw3!1=390VM&}9asMne#1um`SiaANznA|=z5@zhTGmVa z+TTWy6!?;+E|F?|J2~8n_wZ|z)neWcHDZ`LJYYMXJz1O(>ca7{+kd2>rRyn*D6-dh zC|s|LkrqhqQSs!5nCIni@Q`xH&HD%C+t-Y7lq3LBGR~hqE#iA99H95(6I;&4$E=Y)}}sGtt)G z4sG|$FqkVXjf^N~EvPgkF5*vtYCL!xrca%lsz5XyxqE^x#}t40U+giOs{3M#?@);> z-?x3-9WZooJ-=9K=m{c_GN4(z6Wl8Kh$TIzD&5mH@N+!d!p#csJODTCafx17pa}vxecoq(wqRmFbzhM`}O5e z9U9@ymT(8*2-?s1we#kJSavJi6%&q3utTqm~J>c?d#3qeT< z!{VB95R>eoI$Js`W(+5Rij^-{BChg?CScvQnph0cP;&Yrq^EbAP4{iJ3Ve zUhyKhi>Zq}AR*Sx_4g%cuR!e3hz!F~wOq4;sko_t5_&od8W9ryv!6$3Cv{W2M-kaA zc;YPkkr?|WAeF>Mf7b>8yuT|vQl$JVBYO{v2wwBEm(Q6t-DX5zHbr2R)7!kFK3}Km zx&XAV-dG8!Hj3&!sWnD(z{a+y$xFPhQ+yE}U`HYU9DN_~iSWa}kGkSxc9HJ=6*xJk zeJhaOIQ=;agZ&R7e*I^zh;4B_Oos%#yV#=73(n z8~k8qHm1~q{xx653M}nXPPR33D28VpuhtqXrU}&M)!SSQwj?(&I-6T-Sx6~shZL-p z=ikOb)4(@d_crkS&VzMuPfyMdZb6zSqs51#EzrQ5nga95c_}tHwQ&F{Gc@V&CRjo2 z`qDwPC4=nw(CcQ2Ml_@2_{gM#bxCniQJ7#LEVu4^ecK~1F&-YS^E0Y|mFeGPl`n43 z`}ng@n&*zsM;7bQ&;bP<;na*2jfbpf_KZ}f8X0hH9nD;N~ke# zF?*ev8NXF-#Bi?m9%dPSzlTv#(nCTva+$bU`uc8fS8Es7CXz50ta|(%{Eny zv}b2#Z0t65we>&Hk?)Yl3q`h&OSD~G34j9b!pXkJyf(Anr}VsOqN80U2e|?TmfJ_Z zh|@}>1g4dy1z2Kx-c$zHv&6=&Y(@LLny&^^0R9-`U;-wD|6sm4TN^u?YqJ)~De>O8 zVW{=^Y^USO8W{|>K}B^_Qu2)!`$AP$Vf|5vw2Iip$*ss7_$EY8clNR1rAv9z5LCdY zj~|7PpU!8t2n7XDiMb%c!}Z+9Q{1eSZFjenp#np*v)WpQO}TYje-`(jJv-w$zLDw^ z5pL=rEz8c{o1$sixyC?)Gs_{r?%CNW^}-}Jqwn5YldbOTLqA{Xzx6Gwfx|e&_;*@U zP^j7F(|o#gK{I${bp`_A>mq0J!Cp~bWv>Vh=LAps3kk{aK07OdoU~zIXvQa1IQeXd zl@0UE&I%5)Ioj^*2&8O>;_Ypm&M7GlWa?huS9)(O#_>)PNl?fXp3OFVPdp1VW{ga! zF`2$}^u7Z`LumA7XL`v~7P|&5yUE*|wxn$L<8+^hGoMHH{)`?AQO}_EW_C^{77HVT z?5y1)zUF}nZbV8qX;aAA(M5Et(C+0v`=!L_INH43DwtA;x`InbgC ziA`*uSkRD>sjY#b+RGorZ{+b86%|EM3edCADiNbAtarykEJN4J)E_)(`}E^EPM=M2 zIm`0iHc{)K@`f+TcU{7(>#TR@8Wmh)Hz8OUC0a{6UhQk=dBWC|S3H7h#)0@HW$!8( z=FK_`>t9lNB%%$N$@l|s9B8$8Cq_qC;@j)KUKWE%hla#{bqrKC$QKoAYsW){1FQie zofbguF%6+uqE%blBI$?UMkmG;7-#Sa=?4he+ZZyB0C7O z-E5(`q{Kl-_~e~bt_DrY>gV)XaGUwM72|*1N1tsmZ zNMcbcAw)}K)mP=RiSco2@Qq%UsyFA3fteX?-iCIG?@9h)^AE=0H#@~TY!yx;sya|! zFBg{>WaUvF3w2)ld10Ik1~WXN$S*Bjm?rwrXZ+HM=8kF1N+wgtW7+_RfOAMmr~C-n`)h7**V;fgc#TBWDs}8z!_tm?l?}4qNQ)?LRJU zZSo6qzII$?Um_<<8_Z}ipTF$sirOnHD@MERhNQT?ctQH2-KeQuS-@n4XQa!=2S0eVSJn;A;Nf59^lOfeVKnBGT9I{*ZRdgB{5x=(Z(x8$9m{c49mRf<(l ziPvQNyLvhteoL@0a@9K@R0Y>deRO`Alq1ji&H6qh=Z!LTo}qRBboeQa{`mk(g|P}2 z=5jnbQCJv`jeh{!gExz+fMoIyKa4iaUhPlvoj2Y4S-ntS$$*uSvC5!q!SJ)ZGDkH( zx9*qFZ45vlCGnh=z*nVT=I&<47Z;TW82e}fZW^3! zRfb0}x+qVoTw&x#|G_IK~h(v;U28M~LxFAlTS^!oanch>i(RE_!WDQV^w&x#Q0heU23ikTlJ-w0BPiFN6#r&_CDEKXN^M$WlcLUm_ z4I=AhuZ%WO!Q~2xrSQ^1K~HnzrFC~Vnh#9#(B`{r7y=?a2B#CdUa`ymB{A4KJu9SY z6!C%mJg+gGRXSDewHf2sb=wrQy!J$1WmkzoumLeQJ?n6Jm3C5bVAMcND2Bf2%W3VT z5}I%Les*?7z<@Ubpu=Z3hCF?WlcnL-t2BcBfN??cx&D`NU)#~x!4-_HkCre-~{Wi8WDK ziyIr9_0-;kn-~SZ1;9CUd~sZ zvdc%R%Yhw$+^Xvqd2_crkz1o<>ejEV`i&T=0TJxsH|U@2Y)K7PQ^tGkex5gSMA0t^ z{5etnEzM?2`vqBW0zu#V)s$2sRY}r?;h%$cevYiJ!i};$?95Gl-FKbp1ya5ltbk9L z81AOy?v77s2qqXd;@?v!$FC+-_GfS3P2b>-X}CO%{KjOgbZzVCcv1TU{7v6hQe@3f zJK!XtPfbw;-;-P8G=^5j7$Q0ZTagNq3HI=Gw_iZw&b81o2(5-!vkyD=@Ks>2w?9Vy zcwZleS|=3DTSU&`Gcz;Sc;e-&P!lL=Btz#$NA0Z+86jp7?I-2DyjpxUc#2*vU7!{< zVhKVShN<~^MYYNJ6^UNm*%<+K0Bfpcf1O<7WKGNMrB?p?VXtK-kS<7L;1S{1SVOvC ztQ~UlT7#E3P9dnsWG?Vv^;&z7=z_bGertM3Gk*mvg@d!(F2+P!$(oo@3%z%FY=K)S7rfo`-qX`lv}!Hp>sMV{n(bKd zX3=EnVa#6?#}M8=pXhs>k3>A&#f$T!$UIC7xY0ONreftt*@%&W-CFM+$3@Hz2^6gPX3F=y#uB=ul$C_aO&nHsQZz7RIe%{}%(I&_Q>65GRy8u_8mia=x` ziefj+R2qmd3L^jusAL=s_SD-^ld~&>vyhbE1jf`|yNu3smv|02Gk zFbe~v9QF%>gDQU8zvd;Io}HbVnouLxBmQ_XG4Hx6w6nd7X-i>GOmPUSz}~yi$$1s# zXrJ#3$)H!s=wSSmy;QzRZ`kOa`KGh8QyQlSrkGY*n!|$gsUt~pFo02ODg4>f$mD>4 zu4bjDsKx^aJK}b#&IgWuXc8NA$_Fm zs<-Lvf1+`rCEbp+2Z??2lgvg!UsrN6S`WtIsR%?tu2bZXD}{%@#@jXY)!!O@I2pWsV78`}u^s%j?#36|&X*h7?f zI-1#8Ozf;K7f6_DwfC41(Q0eeHFjnbvr1pAW(bmb%#o10#+R_WIg_UgoveyzeNk5WsPF=~cRI3zY&YPR&-u5!} zn)*?CdwVmq8=BzGD4*S&Q}74GwaAM!`7@pY5e;dG+2=F3Z=A&9<##t6WQh3rcx5xx z2fgC?TrQfMyr#rfUh|ACWHdAs->-hNKXb-kx$7jZAuse_E`Y^u&W3x_$NS13eTAJ} z!W2QCTY$9|J&!02sn99X+WxzN4$?&sfm)&S6*elIpQFTVtdBGQ zDh%&>ad3h&;$Z#i2?PWl9v&oX>-zdL>K|EeWnwCC1THQjiBnTk^hRguFWd9z7W9}P zlP`dVTHm1*KDY7dDy+P1GNqcSWf zCn6*SCg~$C4v&JvtCbF|)Q%K;Y?;j+A5=?X+@KMENxDJPHv9Lc-XbcpP}$|Y^!h?) zO+i7&hkg=`p^%o|!!1>50HvdR!Qms4lAB(l0* z<2*{dQ1+Ua2bm}LKMGuDX@VKpcIpK@TbgOdtc27BGhB0}>FEiH6p-3m%_uZd4ydGr z2`3JZUPTID);6JiY2#zc$9-QzZ!8YjkI9#Jc1A|$$1k>5f`jYvl-a7VW=0Me5ZlK% zC$1QJOcn4qaO+bsyhzy9`fz;PO-Jn9{)2&{gGY5#CUqVN$XeP9Hy-z0xy;gv7HvY6 zTg4Kt7Bly4zn!)Vb7~KlkP5y!v05zSH~J>JDdaw#$^eaSaILSZk_9P*o+NezUyZ0) zF$Kz|6mS!CZ8aulB)fWn%ZvwPRSHX3p|#Fei-v(u1RrYT4=qFJkZY{{{Q|fROPPtI zgPWjaP%22*2oZnJL7;o7k zuY(8U3d-5|NOSVU<+j&#DClUUDF+z6SSK}{7vbgQnWg~Kh}2C@Puu^N=qod-mo2Vp zDxDbbAH}q;FMTO;FY`uA{$ASB&tDO0q^W7-Az0s#N647UwDTp zJDL*s$IGDJ)djFre&{I-KG{O*ohm5-t(P1fZE9-0+&wOC&brF_fhE?3qj0*Uge2$s zd9^IFqGFa^l>5LBpmHg`NlsfdjmUeGw_0&*CZuC3CrR}!>FEYvq(c&tl1`95;yKb| zgG?^itgf6pjY~g&2)NNeFn}<-l}yaV)<&*;9QPAC1WOSr5Qy=&-iSQ~ybAgY%l)6Y z=rC>yxSV|Z^+%P8%24n%yrd-To3PuN>!F^vh13kjlgi+6@U))Rb)Yirof^4v*OKZ0 zZqAqStEV1Z7`H&Vz^crn2<#%470whkDU58mv2j5E?+k@?_eYI13#-}nS$ zRb1XNAD8Rs!|B2^58qgsY~3UWEr)AZ+S+WZUSWtCCX;Eejraugev(uEP&&Wg!5et0 zzK2Ceb^OEgyq4NqKJa;vUL|S8(7nZ*xoD+Y90I3peb*p3+;O=3Ahb@s?V;2H#!0a+ z*lqfD{^zq{6q9ntKHpES{aBd( z7m1xqMXIKd+2E3v{wZ=Tq`xh{A{Cel?YoKs*V6LRRMqf>My0&-=rqvM($XK=vN3>t}n083va!4GaWj3VPj{vP`w}RvdYkM(iu9==*)SN9vRuFc@9XdZ&8+^ z%&JLv5(new<-<7fuk~lq1x&z3A53Sj#+dU2L7JM*&WCt^J-VF#9E>`s{`6xQgDwKD zX08cIZChK&t0lKipSII@;Hs0oBo{%?_XRpGaQrzK!!XFjh?0vWH#F+30;X5%NG0?M z6AS>Dr-;8iBNHqsC}?P?YZhg;C!OfX<3>d8ofU{P*(z*MYGAZ?65H%Ks<)`hPP1Jz{q7HYy61 zT9{c>PA#J#AtjNJ6GdZ$p;*7OZ`qPQ2F+n6r*SsWE4lFBJ{DSs!RQ0(h~+cPPu-50a74k0opxN z%*mQXaZF*3Zq4yJ!M1cw%{qrEc`d<)=g9kv+$gLqRwqJD-eRGbZa%ZX@GC>A42;S# zPh0oo1>o1ml`Wg?U~i87)~Ix5NB}0J3g?SZgJ4Cm=2uD-_|J|FMj>>L{yUK`g(;(I zYD<5@l~mP-Fy$3h4H!zCrpQhE3Vzr<2K;LJjMx5lN4)s0wKU*f~=cDg+({Wa>|DS(BT~*~cjos5FZY z+3?za{hwo7m?IK^mk*0zs34R!N&S$p`s%h;X1%TpD!ZV4bs`_7JgIM>59S>7T-FSC zowA~N;pyHfatHrh7J53n4h*I%m9k*AEuv-@GYZ)ApBZr@cK2yKG2e4LEOPgl0j8)? zk$`+QVlS?DcTCHw*GO%Irnl;a=$dY^4w~FZi4O&P=dpY7peFGX;M)bQuZmU@6lljI zT<4L8m@yCjJAKa!QjP`f(o%lES7SlXO?YVN*gnH00z1`SZY~my^J`~BbK;!yQ;0DK zo;t>je2(vBnf3V!>$x+Fmg{zITVC|giRA$f$m3^j6FyGGm3OBsO*@T9r}ks?YV(xJ zHa6s!2@Tz}(F4_JX}&P_?r~ zk@6L*V0)J@*K+d)X(b~Ocey!gYv03?tyi9-tODF!@mjmB$yj#X)9L5MJJC>EAEobJ zsFRqUJgD##P+Gm}98)CKsM^#8>E+#__#-Z;r%s)hcdY4~ZUSp>QU`}b`_I^TeJ%EK=3zC^mj3V2<^#UJ2I0%6;<5$3$@Y0p z1YXU}tS`>Q^a!j(_<`|IrfV8(FK97bFqrts7GhcrFt4qjwQH)A

*c>(rU8S2!oT zgc=jxDB_83sDM+LU9aEL<5c~0YD39;>WiIJnp-zW92}=n(c8k}%CY5`E4~OA3EEBd z#!!9gOC4zN^VT#-6e=+hTwD_YD;KBlKuEWNM@7*oAxtP<%AJJUj*!6(?IbJhI^oJ# za{7vZ%P-{Q>SC9f`}dVx=+VWF_Q@v)Q{%U;yJa(9JP$DgnDu?pdyONXH-gak_A5@k zek#@-r9BfXC(eufR=PTfR+_7mi}N zjz3h=dX{6bs*ZvK5Bc#Z^?&YvD!{FJL!s%qN-fgIXVx<{F+W&6jM2gW9JDI^1OOg= zhLG15Yjn?Z{x#4wo+FGM6h$b(g>_&41l&~61hPS;5cf{NoDg$BGWt-*Sb59dmXnG? zw{A6T9qA0=FCkT2x9)C4m-G~vIIL?)3E|lk(^i=`CjsrlHv61XmGhxIuuH_%});xaqo7CF&@|gnSt{z z-8|-B+Z%G>*aT7=?`N5dW=hywvQuYy-Tg!}Oe-N8Bk_y*2Bsa`5j@y!pVAJNC2)9Y7T$b zPvFAvDHeahJNY6OLUinb@l!lyjCnucGsmp%N1t(I)}t2h^oGZKNpOL6g8CT)z=d@n zaAmznP~Rb8L4=vE|{;nf5JBi%sfTF~*K&Fq?-oZ=;q`-_6HcXzA zF3$@I&+1Z$4kxuuCaXQGv|6Cj0A5mX;8-{8V<9qb^T&mn4 zFXZxyBZ>%xN{aH$?z-=bkP1E1FhhkMykQHiuP0OZ{mgfaztrI)an75q>=5q1XqWAu z4fg#s+m`xz!Q%r>!n*1@#kTHG$}>!y3ORzFlMWUOCboVyc`nnD@$oeoT3X{;$Nc2c zN26sy{&wF_b^+wYPNL zX=Y4YO-fI4HKxscAThhJ&T7d7)n;%1{d0@e`OsZeLgH90_4#S2y}-KRjCXR!$fUV% zYi?AhC6J|ZGR^D{TR>>R#?7uSoDZ4s<^ z{xFib&t-gK8s3pAVi=)k=>M59UVUOD@x(HGoq%FjIeCiTvgEFmNhB$zbZ3t)X;X*9 zUa0%@taqWR_&Sp6zPLt2NHAxfv`zdhQ*!3Bfr-)Y=U0X}0ZMw~1K+50fZYanes1EN zrB)ZDQr|}3-|U7=bp3o+H0+S2g3Y- zCP+@c!M7=g!BzC6izsHKgSCOH&7MKPJ;A@{_3JTgSEQgdyVOB;iHMxjq8LQ#ciPDn zZB3%{u&u_YdoyDyon1wlAC0prczI<;hLe)hVjA!V1|l1*oGt>fs9^pUQ_lB!@I(={ zJY{#VCs=1B=s}%=DvcsexLsa#ePWc$XhrVW0*_ruODC4Wrk`oNvdS20ry+ww7#*7$ zRF=TulRra>$|WH&SC4lpu4+*bz@g5f7PYL?&AXD#_*+BEws3LK&dzeV^XQ77GAq26 z49Rg{tvfV@BlUUS);ymGsR^`ODoA!PN#kQ78G&Nwa7ltsWB8>o;f+*KU&wS_51a(QzPm-QbIcUBYvkQB`Vrq!^-dgxps>&TjVnXi$85R9N zr|*UkW>ekt-fCnzkX_*dj1c1ctGq}}RHGr^>dCIp_Q9s2rT_TgK##fGmyK|??YSL0*TrsKa%q_`e*ccnwj_I}c*bSea#3LqXlExF|FbWuW;D$u1qy!H+ zxEx*_ds$INgY7W(WaDacdNi!jMH4Q!MOj{XnAdwkLVKEZh-|AUNWHQ5FwV@1c2$jK z_Bu+*`Z0SYbXHpojiSP3=j2$&H=9vs@y$N$6^$HRtZ1&dVh~-mny`V4$0aB`U)8T~ zS=3BVhnP)S;Wr34)!F#IK^$M~Q%ao44>MgKVJm&Mf7xQ!_qw<$6*g<;q*Ng9U3`Tj zeRFIg@d)X0LZzw!gJ-0_Vo8ozU&8&Ug>#+Y`xdX==(=P~Zd#|~*{Xg!li-J)enHR?m9E9+c3f1wuC=@NW zj@G40d#>r8O9~F^(jq8ld7?q5e#_KEqi%vkHlKt9ggbEM@e(fC7&%u|8Hg}z1YEET zR&C})F5_;hY!nk31Ya?11?(o0DH_Oir9D`XMM<`*30+UcrHnKc)82uXE2Y$}RH3lD zyDL?dxiXA;bU4E||IjC_bqJ<5zIUCD@Sr}2!&}C8d)9)TNl(rfaQ#u*q|yxAGW~Rd z&lgXx=q^{w>HD?2FE*HRNuu=EdTlsom{MVRu(6>*rPPSu$EiV;VkQRkcOVd#Sj>So zA2f*f49wapL(gD1T!X@dIFiNZ#bfa$o@O)hn?I0a@*Nq1Nb&M8Vf1?-i@9rg#lF~% z!)Lx32bJ#Ys%|I&dCzTTypzk=qkn(AScl0X!D(x}^vBFx%|l31}Lq6?CC;UvjGo|=UanJVyYxXXc&;{nSY2t=yin>Vj#=4S?jH#p#Rp68ie3O1Y3AF%tp2f{frYqeLjsHz zAP9-Iu!l_*DwCrf{|!MHtjHqB&B@DAKLDtMS*;hjlJYdG#Q%vv07H=ethl$KX$1PZ z5QOB|w0G->Wo?pZ6aFnGf_0lYU?{3W#h3k*#I!{Fx-x=;gMH9`kz5n!@Qm2JS2a)~ zzLvOER{aMPF`RS#+oMLRe3CG)qRBSLhyjTryhgX}J3&l%>&Q>IQYotUm={Q9vrAqS)nlJUb zm9;rLd)eUdxCzAi9$HC+g8bs(zy~Ol1gtE8^UNfk4fm%~aSZK&{PBZ){zQ~G1&71I z^acax+jxvIE*l@lI}qq~e^iu|ogDl0Z{m30|0*|0yS+I)I&1_n6oC}{7-eTyRw~&5 zOmN6wpL8&?in<_w{5xOLQaCvkGQQe9{WtY+@OaymJ9mBwGiIPgKjrwb*bjh2a2eid zikgPr!h(k0(NAN0+K)W{od``NyV@}wT$%qZ(0n`oC$QVw*z|V%kD1s1{`|jmMkON1 z>e}iCr&-HqJ=KYhg&T8oYvX^X`-|rHh?%C&BA4g|qsfMd1JGD0uPv-)?+G@1K`~!5 z#BoL5-Wmi_^ApW~#>sRcwL{E5eF#v~0g>VGu={&Cq4O>;U2o;6-=W&_R@M}CaJ zbz9z^7fNesOccvlLoH#XId^0oH&XH6YlfV=0RFnKl&EO?;Gj2(pI@^x5|H zIx%A8##jt0bJP8E_v6sgJ_DL(PF`L@4gD!8clRtOF79$&W%F56UHv_yG_eqH^=mN% z|K{|qp!_*Ii|Ufs!XXZ}+;QD?u@3g5FYMb(+wX2L9+49ha1QsicMT8E{uwOE&CRV( z-`uXr5vtl*t2&yhvO%6$NDz-S^X+*R6&G`PYUX5T&u}eR{W`xm;GnlGDAY{a?(3CS zuE`tYfKN@;kW^ho#>8|rx^!pkyUe=>Vw9C1&3{>s8!y+z3u*#}IB6IZ=SAjTneDukj!tnfVev5fpHzmP`FZ1w zbk}17Ne8yZcXA2}F)1n0k+Dryoq}o>aVpyy#Z3r-HpM~OYU0Eav!2Svkr$KYW20?x z7%5%{A(F8MX1XosEade^Le8sip@xM8@!&3Wm~H&aAN=+EFDxLxJTfp>UPQ#e&d$uu z_%u5IV7*^w``XcCj+z|$<-8>AIK&i0=PJp(9;j@cs_$zrov=`+mpWmE+C_QYRyOOh zsSQ$5T3)M71O4$F(HNC`vuCRlLiDU&(*zZwrn)`jJ3?1wff$YzaEj0!L!D&y6R?O$dS>VS6o6w`k3Tk!t72~OQ3$#yQ3@7IMhUz zVja9T@JxDeMtpj%ePQ6ThH(DpmrH{%#;VFP-2hs@k2n2^0wKvH!P=QZ-E74kyJO$l z3=hsWH#e@%cWz2?6{``OODhOnLgHr`xw*d^1)<}3MRaGrVH4#eVWa|^4KAqcqO6Wk zbJLuWIzjh6I1ulgcP`XDZ@>HaELFgOwJry6YS|Zrc+B-_rScu`S>Edr!b)DH?527haxzf!nd@7A@DlL|c);gp z39+;?x;Vl~l}|%3I9HB`6=-g+nBE*(>`C@YyJJ;WRA>j)5VNxWG!`^EtWK`ODO*j0 zp-=fVT!x*vpjsGT!Mw>EFIGB2+j9ObXTOfYBYVll#g)io^?G%7a;X05J(7!o!=QD~ zi|S3rps9&Tc7FbdoRjD=U>j7ZzL6 zpLHV%2%^EihLVufny=~u3ZU^=naRYQwN*C zDH;599;?j|A^DcmvDj1t*hmf{P6#zWH9C4Vx*Yc75g7}w<;rlt8VYU|c0T*2@^9&~ z2@NFca0n(|ipJb9ltC?>4CpP9i4zMKSaoI-kA6%z#T{U2Xl-bi)4jU6u~{-QIW_h1ZgXsLN7L1&^rt3L zJ{+k8ZsVb^Q^r{xyu7@56KwhES1BJ=RVTJ=Jf(*0h4qHcbi7&!6y{I8<#-c?;dy}xtMul@03=K+4Wy0o;@ZjxCPji5`T+f>B8ZFl=4 zEYWM9b`Ey-LXS0k`2udRC|*q|K%|EF_(}rBF`TJF~vgQk0CWvC2!Dr%sQLkLTu_(y4u+p{d}8de5$rlbOk(e=e8Bm;cs%55}~$ zxoLL3j;%rSF4ISiEnDJl&NGdljoZODu0fq6B%GrG5l6?T2NO*_rIFe9nZ52=p$ulg z<}%#82&4YbMs&B?HbCyB+pELjVv?Jj?HaUUFP$%LsM!sLY<4cTaGDy&gP`-ANLVY* zg1f%%uZ6RQ4l4g=ltxDQc-O=4K%9{Cv&F_aJV8T!vT<>fuuzlvE?>>Yw8-uurm@PMtl?)y4GfHvt7ie>oza#z}9->#iZ|4#3PCu8(C;C)Xmk`x<=LykAgL!j4Mnk|Jn81UVTpHuxk@k{l=@`KGxPUQPIW}i{w z_^IEYo+y43Yj_8;U&pZqo|{{m#HFINOA(&T6>pm z&Q%Mlb`)OSJhJH~wC*b|lk|gI{0`YJW3TR?{w|~Y!^5oPuG_8$v9+lS2BV4EyU$Lw zrFwR7ZO&wVvHqMIA0M-tJg1%!pO|p@qZn3re0G$kYx6y}ZWK~oU6IsaJwDTOZP=zp z%*@JOQeGMrS5Q;q*MLg_hsW*D20raxu4FgHB8KxmN)DuBuWv1jO8y}rtC?q0`+X5SZ)&L9{P-@$ zBLhR+({(x^WCXk}j29SxALrMne200Px0m@55EvKNUnMoPkp9>zT34kGCEr+R?Ucbf8SQ?a)l04Fn-rP_jk)hIS@$cxqsPn0`W`3MQBWvCK_%-K<5Od&V*gVGSTGLq^gFIjy}HF>qm8EpA$PXQt=CrkHT?TR_7mg(^b6 z8RaWZ4t1>QIN`qeAj_)rA^d`z-+d`OI@qkx+}xc1Xw>{PzjR;<{q~0C?y@%9a@C*o zXWxIEoKuu*WopU`6+{M_pb}GcGX6qwpGE4pt~Zn<8FE=}MstXb01djic$l*I<# zK_win_%l8_xz1y~(TS;nlK#%@*ckk@Ms;IreGQ*kpz6}?2F7&h93$w!xOpRZ6B-j^ zocJ^Du$3v%^V}8Jf!@q4-tOSjgaVssWz>EqgJ|I+p_|&(>n$9qtdG!*plsB1Wq@FK zgKg|uYFtvS)#W^RZOoXzT(oK(m5;Sfck4Dzb%T0STjmJ0J?S|(BDK@UPR=R?2AcM% z{$&lnnEzQjOLR=nm*D4#CA$ z1Xr)rH7CIm?6wBI=UdR zQ#Q_Y55aA&^Z<5udwVBU^Ri+z*0gV+sd3F@AfANZ{tesYkB|^@wFY&3E9|q7%$`{2 z<@q1C=*`27F2(Ndp68G!xOn`-!`(oE7vcKu;7k2jSdqMnS>yNDVX7&s}PFi>k;9aLtb0hZ+x7ye7*N#@p3P&&Y~}&)1av1O6Z+LlwLN~UhRthF%^h`80H9vlQ?uiT0)xC}Vxji11xZbbo)0d-3V-U2t%a?Yhg#&WkmgMahM8Pi$<4 zWPAJE(%+oILMsy!uU*SMd7w$~3nm~UCIW84G10MhJTE9Hmj8ysCLy2EFK05-ieyF< z*?yPd)8lNY52I$Dtiw!Br6(!M|PuL#!GfQwL!ii#tDe}6Zx%jsMA$*`p3 z3XH%)oSNE+QCR8wK{pj!MVPj@CT)*lq z9~f#Z^z=J*^QJtx@k!%i4w6UkC=1o%wvyEz z)q)?v4GF`zW@n_)nMI9_IVC?g9uu>Xdo6w9gI=y=yg7KdQlNd2irC$K`us&kVWyV4 z`ZGJ$^qQJaOEBFVo0Bj%hQ?Ja=$rY6VZ6FK?x5rgkJ;M=#!$*H{DJWxQ^uCe#)dwy0Z z-rHCA?VLvR#K%WC-EX$e1;;~8E%kxznbSi*%X@F%(hLp{r+2r<^dODOOG<#?j-9P) zaC9)IxR~#Yu9uY+DMcL_Ho0KS@1dd5wu+h>9u}T(>C}k*16-w=+2zi#PozexD~3)F zI$XcF2F_;=EUT%jYuDm2lP4Pj||fT(zk%H=iy07ZzOgkR+p9}0+#)^ zLjF>qqf1FiyX;P@QH>L=bf3Ty?+)1zMkaeuQW;MlZ!A+wT{&zKoHoC)Xn)4rrmCU> z43gSAw1Lex@*x`YtguLZ{Q$tfkV@YoBOSh+f8o88b);oZmcn7-tfe(K&X9=x=ur!` z)Dy2@zf5H@x9LhR6el}-0<&GqA9)HU&FXinc#86Pj>r4q09pF^bI|pO&~mCix4c|2 zT=wevEX2O{oyN>0J3IUEkW&4i*W~w{94tJu5h*IEgbK4|F}ma9LrhFeUZ+jGzVV(B z3*?V@zDle7oPx=6Xw?Vm;laTnJhT)Zrvz;$XZsWuhqch1naS^3-#VB3;y8jIUtFH; zm6ufz3+cVje)p2PLrznbFq!is4u)Z&HV-!)9a&0B01j!o!%KCN5tH7@#vO7s+;Wnt z>Wmdcc z{Yh(eg2Np#WX)*AoCP9IGHK$n@glzvn(}}Ngd^`)Rtm=t=|&on@L6kmdXjNaDI{$m z5Hxts;)(XB=0FE%9#B}6S5{e?Nj_E?Gk$!`evdHlJ)-xABaRD>JY;)yRWx8I{k<9C zU8gzrn4fX)#+=Xh7YUiP4Gqi7Dzn6FhiEuHt*@@e%(>HkyLzGy{4=e8U)>X<>R6gk zVfIjYo1b1k+dX}2Q1A!>`~`h=4eSO9ecJN6B20jF)`tiS? z@Y_cP1xW}C3opcG6lq`3xXP#rt1ERQQi8rSv$4SxdDU=7I>rV^GcX=ZOBop%1wK5e zO1fcCRh3l4^>cVc^R8lJbx-Tl!@wxVOjEUbRYM)T;$bzYlB1HSsH=#G$cMI1oL`Ns z&R0!N-;50m6lYX_mk~)!Ow37seR$<6F+Z#?_d4NlKs=0$mWjz?y=sJ(FR@p?gskh; z7A}!DR2XC<0#^d4w#X<==}n%Tt_vfWA=Nei@I3I#Pl`zDpX#jtO5E6eT?%fOqrzHOoiX3Ab)}P7jBz-gNx|+a85qD)QanZ5LsI6W@mGOQi-(D6^RoP4wPBaS zK}#d{>722bh#%B1U&@L4iSY0nziWBlI;r9RfcI`Jqn2eg&*JQ*Q%0e-#BNtS zgWo6o36fV? z8AuA}@L~)QxoQV^vlk**K;g=`Gx>=X#DT%yFxsHL| zHZMs1s(2Mn=}RfLa92%jY!nH5EJ}Hc#nUEkbo{PUUt@`gdm&wV)}*fmNcZAh3HgE( zd+;}Nf6q&Q8?Y%ZDj*Q83GzTN2!?mm^0w<3VJxkM{nbqEVF2r8>e$#A%ge;qi74d! zSi|&2Tey6joTb0kk0@eM4Q2+0ot4044?%f**jY?Zo;d62lXjt}e^Z`l} zfYiCs70s7YH_uB=6}s0URTxF$t zn+KE?_mko{*th$y$5qb6&cT#6)n~xQz9_7MK+1r|V%93^RR(_=!p8@!H%rC9*T9aa zVMEaTz{&;`Dy__N^0Qk@;??$|fciv4q!oAtis?ng#^8%8*!MO!d&|EQG4KUe3Z|o@ zz4eXM%rLyn^M@W*TBM>U&d#TY>tZGkv#7Y%jE${TbQYRZ*x>LgdHoo$dMJ*JjTzxJ zgNNN1nuJi@+>E{nJRXyhb|bIKDIS1j*cEQuD)n~&IAaWt?-PjljPHY4`zRy?zxOj; zA(*xO^OVB+d-$q46LW#hqXjOvI$1Ldv$Ny^urWjNZ^zo=*h0Mxx`*;h# zvkMI=EJVnH|L<>et#QS3@e9MrrbrJ@8`}4Ncc40^q}&-w(m8)*{NdfZP55q#x&Yym ztT0UM(vp(Vp&=r2u%f^GiDZAThPd0(_8A$SFDmNSQp6}SmHqfNNJ~<*MUu2MfeQEf zIzUZBL-FAVuBF@qJ$r$91RiiKS@QkrJ2y8sHacdul;-K_Ve?mbFEh&n8OrVhgGCna z4Q906J*Di4etv%E9fbu2N{jY$P(~lvyXmQRKZe+*S`hG?#_z4Mg^)k8KV^LQ3|h=R9W^zj zmX@Yh(LmG6X18RRR`G=Q)hlfgkw|SL5fu^=l2gt22u?T$hhnxg8&}n!+=Q*mnJ!m; zf!iAk96h(!?$g)Rd3lGoUmI+p6GS45XcUImW%5o~Bm(}0cE^gAmipb5>|N9Oi5dw` zPL7k3o(Qe}ey&YXSGD+PIR0gXuP-dTLcKS=R;nr8pwmwgzrTCCGc6L|6_u2qND@nN z{ey*zOZBSb3HWX+FxCciJ_?a4^;uc%px^P0d8@^E(tyEF2A$TmFyXR7I%+^KN1hJv z8B?p5rax0uEKf=Tbd_H>!2Jc|clEyQfqdXP`Nv;x#^xKK9bx26mhG5Xmw(*!4x?z( zRe|9k?_JWc0`TW1hw7KMM^X{hv;7dw}s73nS#PXff6sF89AU-Nr;Opsa{uSIu&LO z4-W?l^wvA*9e!ci?y44&7HYXG20v-`xl6njKwd>5c6X3gMpH8hLDj&*5)15*R0V4N zVd>BCo%EihI?!00bYHZ|q%qUdn$2I`b39d4(6mSV73Mi2w3>~^5qh7kxjvALYo*z} zCz{0l^a&of-BKH9v~~XNZd01)wxqpEY+@qR*q93L%{)kcI}be0v=3BelYcx&<bwv(Q*l!pvKoiSe|XiIm6fTew!( z%JwVQ8lKhw9Iwq>c<)K)%P!;xZzv-zOZYUA0b}RKYa$z zSZRS4WT@^nIpRuk?0jYt*NwH_XiNrtA%Mm?9J0`i8m! z6@FjyI+lT8yt}98t)XVVj;7}9^thO?<=&l;=f)GEr2hc`zCbT+m1{ugG$bFcu&}kf zEa~M~Vrpgv67O@6Y4CLN4F!R9F3p(3JhW$EzyKr~vVJB@&E65Em1mab1tz;fj*ZsF z#+5dEWNW*_6BDUby1&Q!67Sm@?=#t-sTRk?oWd-|OMvStGE9LI@8jM~or^9Yg?QIB z&$YJpjqNo1T=&kgf{iC4B0Zz+4aPfSEdgyiPr5tZ8MSYNNk2DvHWZkR7ix4qzE$0g z3=Z1T@~U6aQB{-gf2q$`EqaN(2dPe#N7dA)Ulq+2rS>e2kB`5h&IGl}J6{1d#V=u@b|Ck%ls-he6`M|N$(%Rwu^&6 z$Nmr4_P?a+=;)6i{|@>L4r&4i z?WCs`g@#sE#sFR$(zidF@7(G*JF~F3sHmTOaFHDUiLS038rp85aIP=pj&~!ktp>Md zksM8PDfwULic0nee#uISah~t*-L3Y>@rIm@dvCpLZU$AMne?Kpej6J-$lufb8I4>{ zmg{er5148Goy%uT*xN^#(6pN2MN!@_m@k_548@cE|IYvXF2bntYhC=CLJp}amZW*n zd~G0)hK6yEPU~!Q@xQQu+ec8s`+%8wa_m1(`@h@P?|+DLK6lsgL=CCxpveEhyO1+n z@ZceT(W*{!Il=^x-@kOV1gIDrtq*!fN4Enj?DeH3Pz{fdi7B;QB|hk)k|l03JV57C zjRm%Clhxl+J*VPgV`W!ELr<{?dr4Vl2gb)MYxCCZd&fXapThJqg=4XV^=}UiT=})_ zKC`R3X8H5Qo=7z>&Wr(qi56Ne-e#k^Vhm%X8MUL zE1#q^-1ofn2rg)k(FxvAHZkdp)%G-KKMeTli$1HVsjjXO8Ch&Kdn~T6P}Wue`okdS z`HDx}jeFJF!2GqiB|h?>gT^M~4d;1?;);SKhKZqZ{0F=^FSsM3l3pLglnly~d!5Uu zsPrEOkYE0V$?j}hHeDhePBWXIwgMaF{*++%8(&#iI+Jt)_pa~R!n1~hczD=ABHvLk zQ&TbzbZC`cwdv~0z=ewtWx$S$hYS*y!KulPaN(PU_R-rl6qi zO=bElnG{nC3q>_Gr*lLpU<-uwL(uPtU+wP@?lsV z1HSYpa+v^1im`E)s9*c2zQ+o}&e>YXv#GJMF%9fgZ{K`=xy^5XyfU$HRbq=u;wd)) zMRv{a_2*uxg~f%12HAi+stDfo;jx^mYMnjDDNMF8%v|H8@ff#5lU zjX0||x48HQRcFJ^!!x*FNm{oNmb|?mZs6x9%2WXD0FYNjg_NXXa71g}*$ZyFL-qzF za0d<{#jSLoTH;zjd85fm*qf_0Ke$rQqg^Eq@jO3R2exlK7HjO?ee;3w1)m$a zc_>d}v71JK0q*U5j%9$FUiJ$-i<~PX7_sZ_o!uVIE$4v4vB=b4xh;1^X5U;`;KGvw z1=U4FmPcggZ;V>0TwGK&EP#90UqK+#p0&dhL1LezMH)Ddc6YZd44ffKBe!!vOb>cS zTI;>o2WuT_Y3s3O`?b1_Jo4;`%pEr~#oWXBC&6tBGSZ zESeSAXJot6fWiepI6W7xI`f&D-uYz0;bVL@4Q~5`@FfR7b!#R1C08R#oQ{Sk}{8#lw!i@Y7{e-W=31(LPRdz9vLn z5_`n%HC`lrH9ys=D9VyeuD2Lyl-59DViF$=-M1-(dRl2}E`vm?d-jAB2|k8bY1YL^Fz}U|NE^7xe5aOqkZsA_Uh9#)y$#$yq*_lOS0a&a zv5Y!T8;A)B_jW@cF?-{UdeS|4(4SJ*918L*Lj34Q2Zx9Oek2R7s!8@__1z)U-ssPK z8YC%=DQ$*T1?{81lA@BNhKk!rfDPTTjih97&PpMdHX|*=waJVOcy*0Fx36yW+tnsL zQ(r3ERvo#QUTyKcgz?GI7j~QMmvlyQ3pe{C+uNGNo}lFb4*4XH$Mi}QYF-%jK5f6y zMJQu3%>U-xVWvvQODtf;-(M{7La4$NEU!1@i7f)q)A}rbBuVl0*%4Dy+R&cY`Pf9~ zdSuwVm6b()e(}xmQSnrjX8m&!&{Hx-2<7bHkiz28eSsx!`EV6995A9B^IjnlLEU+0LddA$8cIqdAymcUji6^3y3*;egeZaR?2_n_vT_Ym!xeag zxFKa~7VrD^UpzhwshWpn($Ty{9v_{IiZQz`ox?ioG@j(xU0)EQfEB$o$VqDf->TN| z!W{4yaxh_K&N~K=Agy?Kcpfz;b$#NIco}RgY-AhgXAi0 z*w9jXgvrEpY~h0?OUnY4g3t9ge}|AMwPt`iaWj5$9HBcl#_^nlhz&A$AAU59CSNZr z=ON-7Xm_(2{FN;&Mp1;K6_iTkKUvA%wJ@?$Ua(cvNdrss&!2w{Iw{_)$#%kGb=1Y< z&E-uZT^&sB{dkTV92N&vw9AL+y4A~w9QUQR+)t66h0)Au-8<2?Ku)Un=*4%(%sVy`VXYH(=gCtJ*arrkPscs zz`L%SIF_9BqV3LK4aSu3zP(vxN%d-v`M5Jb;JCOc1fi{sW4wp8H!Fo4 zSG$16g-R4L_TPA1U>^{ImVAw1w{ z>wkU!F@q+vNt^A>X{9qEVYbV{&F63zr-zhbzv*7!cbV0GJKj6m($4xLwa&}pGm0Z%SHFhp8LybhMt~ogw7q2J45b|9v#!?=MzB?u(EUsS=9jh^7OdK z?BY~=2Ds3XoFmn-xsy`}*eU^tF!&R-18p+BfPZQEW*4tEG>$D%>1U2L(LXR*6zbK}+2MzW+51Pvst ztp!7Zv|0ad%*;%cwTg*>Dq@TR6Kj-T8Qf}TC+!t1qtV>J;N(zp;HJ@a>y)%k2)WPD zx)tEy)s#l~8m3>=CV$-HNS=NFi_hzOkn|oq0DKs^?c!&gF9r7W^kiqD0gNNip0~@^ z*%?$Ubj9c9G>=bC4iArrynPOBUFd5(Bj^J1=v3#NvPSZYLy6|7w1k9^w78bs4&Ac^~pDol!fzV~PbPG9@oA4&}9M@8~!)A-j(I zWG{gU&Cv&+UrbEORMmR;mHG?fXD^6c<&PC)k1xH@eRTVl2Vw%ROEg152%C=F4M*F% zyXlC(2Q~fyag!pb#53}EUL8-`!CE^*v)GIe?0KC$&ypwHJ?fK_Nf$gW$3UMUk$|u{ zdutM}Yflg=Ny$1pj${d$3?!i1mh(4$f_~6~M#JCMQ#^t;KoiwvoQ1wV`tyzTkOlWk zMJuZY1eLPd)KqK0#fVze4qFp{RH0&J%>4#rZ? zg~r?3&R1_xoz2a<>oRZL-{p4Y83AH;tbu;2*Dh`9EA3;78)QC{Jd7GzE_OIg&s3`V zccEYELx5zNRVP{AXjrkDsCYbBGDC34DI_|OUvScv<^O)y`!TC7H8$Hha|s&LZr35k z7Q8O!=liW^DzzN<^<%rcx_q?hn3#kdPU{iHWqAn;^BzoY$T?j=r=WH8@vk%7L-~S8 zH|XmySRR67!48rv=zz*5A9vu^3?fUt9OyYY!LCY5jEyx>ciU?(0^FEV;6gNCuNKB% zUyxaoSy8}Wv~E9ZGA_8gV%qd&gN`>w@g;JaWbdlxq>3Y-e7?l)2ylE3HgB{i%a3Fk z0~~nP==^5yKxH=z~dD3XVCvp?0MRCxgEVPbtckN%Oo4eYanQ35BS`$%*-0w#rm7ZV|PhO3pcSf zu>Pe*s%KrwY@mT%446i?hx8DQ3m&~cZtr2=Zw(^>MSg9!10J$4RZXR`-FDSC#Qu<| zkOFnFJ50c52;}mplZn*a{9FYFjmuu%A*TAs$cC(}ajX6hSGKMP`n_8=jW_28VFlXo zua9|!P**cWbC;8`j*jq+FBvY^p@U`Sc3;lpf(|j|xfrR%@2ke{!qz*<8z|KKLz--^ zPcK0yFQA_Jr*oq;u-cm%{XFmp1HczfqOaKGwj(XG`!t)cuu5egd9K2%h`fL6S{lzR z1i2>SKY@IZL&HB9i@j0RmOm)17}xfmVfW^x!5ZsZx3 z4}0DA$O6OGLg=a*2<^^eff3Ky@IaGghS1u=MsD^5u)qOhf6wPufp$CohrR1n@nux@x|$U#-a)&}syEhc-Gb zeSUSyxM)Rsev3#z{@p?W?}I^|2i|(NgJGYcCP2b?h7K-50019AZ}imy2<&dh{~SE= z?+{4l|7NzfnH7{Bw4- z_$7*Bd3l-7VC^l&$}=4Uz^6G{XVTrpWMHsDYTmgcvR3q5NH4tswwxpXDoEwdr_oeGuWqnO)D)ndvCsCelk>QL?^&Imn#MjjRawnT z5%dU32EYR}rx*a#Z||H1WMq7pwk6)&^cNFz^sKRL@4j<+icd&bTI}qMnVhU8)z?eI z8S@3yd`2oZMwXYBXj06~tcFHMSy^i()nHKTy_C7$xz)vu=qEyP@U>m9d*MZlde+*E z_kJ(&3txO+=XXh12CwRRGEt@VwP2Wo0}yml$Btc2^ShJ33|? zNaFEG=tmFv@k2&5DeBKx-nwdxd-p&+9kll_SvL&s?nCspPILkXUJ;S&Eb4_UfTRuS3s*FVo4wAY)LoJ(!$D2GuS)(UQqlXKqg5>iQb{ z5jJS;`D}SvQ6Yko>Q7hK=93>s`-c+Wx9095`BOl1z)Z=ZZPQq}k0jw3hewCc@jKe5 zGV6Y#4C0O}Mi(i>-cVDQrm@aCIGvnqcj%Xu7q_*^N%48Mvg!oz|C&S4u9(CxL?jz{u;)3tEIXp zg#UDrqb*p$1X%yFM}n^pDV@k?L)H+yGv~G{(c6wdgu}#mCi#eoiJYBSj>`#1@o7u> z#YVaH4C5jr>FG-0rPyQ~-IJ4XjidkJ+R44TOjFfooZ;goCVmbgC2ek((63Ut!#@uqt#gUOwrpJV>r}g}|KwKik;^LwmEmB{^p!JDt zF-U3^EJ6}$kp^J`jaD;4QF)m$ot>#)=(xDn5#hU`Bzk%<;3|(p%KPWfq-t&w=k=uB zq7p6f<`!rj_GW$Lk_@)-k?tgiE|kvT4!0xf z>-lpp^S<&aH{}&3`FgrUv#@7K3{6izBPW!V{-zKcga$DJ4r{wnMT{G(i@4OE5%KoQw}b!kqv0TFD{HkHWO=6ql@3Z_ovl0Jls7@`jRgP zbiCvfzHacm7Z(*H6LJRho%a6uSN!}*k2|(M`3BdKP&U#aqlNDCh~32)BytByJpf+5 z)RYExMbRogTUs_KYOAiT#ke1`y^UAGWM(cutKqh>B+84OZj{Ia?HBU8o*FA}tbP$1 z9K021(23ZWWs&;$5dj2QIquulb{7|}PpK(r?t;t}53_FNZA5Tz&!3<2L*eqS7p??r z1h>WI+2N6q_UyFc)cEk-#obq!-VOEj#3Up^n86vn2WzsDAEj(<9bX8#pSK4S5>?-{ zb+j|YH8uZf`y6$cdF^!&kqP+5=@rcR4TaLN{jMh`B*erk1CggvygEYeh$nEjZvkPc zECy?*RyWLZP~+Qbt^+z+6V_a11rf#MJmv zDSmu#+V~tF#8&t(`0ZOVJ|%KmXAm?9)VTzoWjZ=LJD=_UihgJ32M8jiX;E)^le4&h zV0*6rVOVD(ivf6I)be|mI!I2UAC8ZCduA=YWHTTAsbJ@&~o{6+~ zrD`k`Hv_gM{2?}}wB2aDVm3V;eNu9gNpDh(!6j#sRZ;h}YR!w?0=06W z605YHvIP8PK|ORBWQaw5TwZy$SFPMMo7Wy;t7XM-jT*_yelN>Z{Oi{*#cUb*tButS z4v&sr(wWL3>k$_nWy9=ERk+a#Sy{jr*Hk{2)8pI+)YK-(hV*vWxuy&@I>g8~QTI2g zaN1nSV(SKiF&;HG_{&%4AK8p2*+Kk6l3^Gu2qv~LP0SlJc6f1>l(gOQ6`jt});7by zq^&E`kxuN>Bi^d<;n9l9T>&T!EuDhOS%uj_?fLP*cheOC2i+d!pbLv{5ISN6`)@1A{yvh(>NaoFpNaqO!7x zXZ2lOv{}Y$6HRaxH8nK{2i(j#g^0+@lpjGPoR(iSEiK*Lh&|YoBPprgJR(|}b1Ac! zC>kPqxSBaBFN-rUIy%}Ixv_OLJ3ANLhEC0k{U54Y>T6dJ4>`d(j*Ev*7$j*{BjV$U zhzY1zjNCQfQU<7k_$-Z5(zrKib$9obMM{N93Li8^rjND>bibAu8tjLq6$u9x1Bzi( zZ(A4PI=sC?hIE2%FGWs`ubnP_T+~00|Nt(>4l}gtq-Ka?luMl z@KH=KtWhn~f4qjL@n--UV_|Je3wi>{wSs)dWNT~rUI6gE9Rj_!h?pe?W+u3(`4U6X zk0Z5pRM$7DY@l7a9FB1%fXIo4>A}W23>Y)C37M89fw^XOpIlTO)GqUUVZI=Y2*m9) z^N+g9xL#KYb{}C;-;`HQN^TG^ip%xLsIM$Lbi<^(QR$d;mvndMy72!z>s@=T_kH(1j{RXD zn=c;1J?p-&dEH}-^Eb{hrM9?e1fqxB%sq3O8kLiRscu1&;p$Xu$@=xmsHn@Yo+v>= z^+$vVe6N7OCPe8Q7BZZpAk)yzy1+d9!f@{ZOhu{FI(;FZU)USmrIHQ2wiTbsA#rmU zTUuDWYmNJD`{TreFFU8)z;q?#F`}t}v$M0F?rd3E*}CY!&!30A8?4ny{)E^pWh7vx zJyHlFA|e)R$uAd<=Y&|Y9rpY_{5;V)m^@Ubo|pbgb02noi)m{oR2ECbRa8V$$`$1o zW*+(S4CilrcQ6^`WO|B1Am^8k$+f)Z5-w$@y8L^ikSLxvcr_TWab;xp_a6gJ4GaQZk={i_6I23Z1U5UgB>n!sZO) zvm&UCSnA`wiBjW@YuB@W=&VnUy*Slbx?UrQ*kFx~SH$J~N~EKrRY}_7>xA0jUhqH- zDJ>HD*yBRUB zTNF`N45fksykf+8aHouZAxhAuif+SS{;;lA&}m>?0~6905nx$IPp7@k^H z6w?^>6>E8gIqiKJPU_y@n%+IntD%yW9CrWXeFFev!g1+^Mn-SZ?5hNg_B?LJt=0_hy1%1;Ne_T z%UZo&5ivSQV`#Fz*>E79rm3;Hzkkp!E)JklFiY6R(o(DPQi-7&k{rRGSe%pApTa8> zvK8f84sm$;6qU#ASTb}%tjz~E&dFt@yMIRdA3PEE4g-U+n}96{%2vYJnyxk2r8R#< zj2w`jK}sc?^vdgm_R$%h$gkZQ#Ar;d~ba}3JLL6*+;Jb zoP{>;Y#L#S6p;RdVq&h?$l*$>OVb!6J`D4_z3pjh8*LeIIF2h7xw(eyPRzL;J*=p% z&gF(?5(gM}9{-oM;Ozi+b zk}L}5AcG08sfCm)+I_vfK|v@Ud_K}oRgO$IPI^pDcM4?TdIX}sgwq=6AeY1$S;T5> z^F!sFQhAEBjb2mq)L;pePj&OILuS3Be*~sGBO;i7WEf!T1YA)NGK#5K^NH)M4@9nb zO?ab0NJl1-$j;V2>lb-+Nk)4+Wtl*FVd3^+mJCReQ(yH?W?ikyVs&h8Y|x%hh)Aa+ z^YB8UNkA|Xt-k!h8c=o0A=fvTrTiDbR9g_KD>rGUY)@Aj)G+g8Sg-Rup>6wvb)!sB z6>1bRJgF5wsH9ZywoBa!cXo4(VWoh1>$D|Dx$jJ|%hA(Q@%TIc1t8}h2bI|ZZUc*P zbaXt7kUQ|>RWH-sdqDeQ`;--`T3hU$M2$hCM-}INJo6ooMz`PcaI&*+%m$pCcqHKC zSGu|a4+&NCz9Ps-jyMIf^km)q)EI3(dvD)ODK>eIwDKYkH_gU%t+SuaPSZ!*`L$0& zEO9zKqapjx)$$1NRst`*6q|x(E(tsM*PCg8LATYY| z5d{A6P-rD&k9g2P%{98Zy1H;rE1Bj{o4O=@~~MdqWe3R-VQktn94C#am6h8NZwI7vx9b zR?}hr0y6&uIv}LaKRtEh(Rhl6mf>vCO)Q(lrR9F}R&IhO^XLhQ0SSKgquSz>lo9UW zr%zMATH!A^)dDPQo5oAX*B1ou%Xun=Fk5PS5vl|-i7&_e+U4uZWOQ`HeiKYDRfa1@ z=JYk4R^R2I*zMZo=g-bkP|uEVI+ChMJC%XxZbc(LIiRluqGYBt(=#{wS%BI^b)A0i zm1xIy$)K^Ur@RBuB}3$7C*2-vfvzV`CIZuO zVHvD86AreMeX>0Gw)^4&;JuMG(p)7Clve7ULv6aFV4KAZIa6Xrm430>4a>z@0=W<;* zZ^g=ge9inufSN0=DJr3kr_UibB_*Wd2|F0OeQBG?6{2KRAp&M;QczI=E=d2br?+!| zKgxruRPmirvQM$$Hv400!ipl0Oa2(g;GulE3<%*hJnU*RwUL2f90vAGzpZ~c}#vv3s=k~ zGDp@lQWf;Mb$Ht8NT2Ra6JTQU`2G~NwWYTb&3UaNZx|n+{D=Q{eR_lLHJ(h_>hqV* zS`reF(F|+QZKR}xd#V3`8uSC4{1FNGBoTT@usVOQjYy*sphjj$poihHy0vvjk31Ax z;i&E&Q{EPO(f?B{Xfk<-dy-qjc*T`3J2F}%09_e@&-?rvhp&#YNJi4`KwjQBwLp&Q zKK;^u)4%x4Oub`7NF+w3!}<9T9@9<*D0_hM1*F!DA&pL>)6)T9^AFPb5v#CPoUET5 zB>;w((a_ONHd^Pb*C{$eh2JYH4>eq%&gmi&PgCyEj)E zG#d_(a7;|h)qZF}77UskBi=_x812g$B?*flx<(H?0R4C@{4`KH4Wmnez^c4F%eDTU zwD%b#+6|w5>DB|%_aa+FwG$E{cJl(XY%ZrswNarNFK+^MX2)t^Fm`6<_l|J(kP3vT zSu{}J@bx}}L1>QoeYZ8|r$mFmU{LV~2v_^qJh*}-ek9N`Fxu@M9Uqu}eI4(h!O#&* zL{L;vAR%IU}PnIdN}X@NZuygF!0$~a|5p0cD89AcH*th5FT8!+=D zqfklqR^v%MD%za7np541+H*) zJc#stm7hXGix}QKLO@nj`jeZVS72>1EJ)-nz^Vuy^ytIi2dRSxF#;W_em$okBLfD@ z3V-n7Hr06r-Iw6T(sHW+(1S=W=MsoOZ304%m$l;N>lTF6V)Pjt^jJD9WQT2}8X_1y zn(%w7QOfKTz^mGk01>B=ec>K41v+_EZb9DBw9YGp8vg53^?W&5!F#9{`R{WXx&mAl zY%q2x0R^<{>xKY+efrq@KRKqPpw;$|16R!&Qp?U3CNh%4ohEn!p^tw*K_O6`P~F)7 zUuZH5%#seAZ}rL?7C$@SnoEFwr@Py|kjNM2zYTmgzN}HozUo;z2n>=2W3vNL!UvVj z?*(c!qRkyc&>B>PLx>3^XOb3Kps>t&t)Uqh*t@ci9tZbU&)?+cf+W#IT^)x_1Q*xb zny#m!BG?qnYDT!z&JceB)2sp*BdDb>@A*Mx{O;-T&kv5w z@UfQJT8S&zYq*p0@~R)9F_%p_T;Gh2!NCC9yZobQ< z!WHpT|0ASOa*7=Ashq^czph|MCvx0r%@4Q-(U@weJ#*U3;8LYP5E1bQs9kzPgVAj| z_C5Jo^2hfcMi`+H5l3u3>)-l6saB{{NvLNP$CyY1A3BLZJGHm>cJcl`b0xbg*3DdP z7y`oma(CeLKKsR(;(I!J(MkQ?iCzx&1!Z-2&UxW?*D#PBhgH=y7!9g4H)U_nHg)EG z@0{J-c0ZV7GX3;BXSyqHzF?+V(FP7o0VIBQwzhz+tY}g(Gc#?x?oMpJt;z$W_k;6T zUibBN-aVh=aY5e4L_~)2{LH0t#DthLVeG|K-bIHl= z@|@64{47oA;vB1aKP%VcM=d^&Kwq;A;1ZAR^=zTJnMFmd6P z&4F=G#^9ATbybD`G!_mH8jFL_5%9>r7M`OboT1G;M%kq}c$DT&<7{p=)JCoS6aj&W z`jXhR4nqf-WaE-}>B&|uF0nv%dIKppMRaY*(h{JcHx$O!<4S%2W4sB(_BXE(c3*=2 z%tlopP~3qQwr|q^@Kf=(ir$pb*lM12JR{u*j&24(~x+@CDG_(`BH z34J6JrFcO0wS$VB`6lgL7Qjc!YHCERJW)ihE)~_KrGX(K_r^H8!RP1X7#N%YdUA{U zDKF4Ww(4XvPXkuU*9#2nkSBkkB$_&RO%ugX&qa+j7Rc)PD?+T)ygbKUn-S>MQ{cJr z4gnS79~t>;g898~lK|WH=B6yD|Fj&lx$jMt+wUgfy=)HyA%ZV}q?iHeU+c_xRTO~J ze`VbBWKj0{+Iu6!&5c7A{_HWDj<)u(H6=iCzJvuR{JR$LA6SlC6-RONrSf~F0|07I zXmH+M-XNFOTZ9r5Nt3iL;oX<^5N<%(3Vip4!4=*XD9q0`d;ebk(Z_KGs82(HBH}Yb z=3t^|H8s31TV%sW-xeTqo^osy`IywTvtAhc(-(V9H~6FBEg${>K#>p6F@N>aXRr-} zf7)&PfOzrZJV6ZrXGg33_#^^mYejR$@$PCwQ5nhSqqV)T(6C6VFu&Ejjx67Lz}nny z1Qch6h7u9rI8zi=!qmdS4pC$MmuDN!k=JjuLgbYVaJxKfX(h97JbHt6y}$ItD!_N6 zZO#2}b3q-hL05PG`y4Re>_xNSa=C(_K<|7Q(e3r{?pf2>EtS_P(e}8kzVAv1WZw5? zt5{G)Lq!hWse4blw5jUrCtGgdrPByrE&I5-vb(thu70>##k?07KA0oi+Rn`CP5Q(I z6YwV79-<(x_38*`@YGGI3LO`n!J|~vu#3awG(#&xqH_Z3M+Sc^q{`{sVWwyTH%5dRc3QrdNKc}ID;v#KjQLq# zxtzFyvl>+8LwfH>!*P)VHS{Jxm&1w#dAeS9rj*R!MBXo|wz2{{y?w!%^fBuW8 z3AE(@{kivT{r?WO`L6*R@#qIN{6yEFxxf?xg&6PoA`uY$A>5Jv|HRvQmjej$phX&-rzc=;T1-p~$W?cbb?z_j zE;qQgNPP*cobJn#-+xM}WbY$B6i5L`7&dl4D_p?*z3J##)`t%*7e}}yzsj@dyNI%~ zvgA&y9SM5jgXIy0!qR=QTM!ISA|!uhO|_{|xz z=q$M{HAVD{XU-3Rv>EjyI4mq<#??spq1Yb4S6W-iIPEW?K0)Wy0X@%9pSrk0K+_dy zk*ssL_14m|oUeRuW5egBTLZFY5uclt9!_B&Zf6`Yn-}jD7653{^3s$H3?Tb0w}2a> ziReG5=p2}QPY3l?h$YT>ET<T zS6$T2vPXou>-+vUCCflhRCDk&Qi^Je!mnr%-$RjNRnK9(p^Xv)) z5PCe}O9rBrj*gd+FyD^MwoFC4XH!u0yVsynD+syOl~4%q)4D48oy~{s$U;UY626jV znu^fXGB7aK9>byNt?Lb3qvk_Ee8=N9qj_0?&$V*Ay7x%ka;&KK;rUaK=I#BOe|Apn_KnPqUYz&@^yC)mO3W5zlrC_ zrOXWuIs#*uswCf+#QK$i+K;7WWU#N(o`;t&U(|ZMq?9)SUkt;Nzw6iBT;Y$j&5Rnr z$c3V)$_uajz4h@vswJyEv=VX^hdoS?Zu{VZCw8bRJkmzY>RJ-<= zJ$mH7|LkR)FaBR=8vWm0-x#uc1_za>x6_3|e)*5>jWE>=2myqI$T~vtAe*X>uVP+& ze1LVevbF}&ZXIp2`kK1$4-LT+ZYL2U%P+%)aHgI&iQI$|@e3bd47(1?xHQcT3{bnG z6*#HoY5h4bH3rRlz+_t`M`8XJK99zE#*_Wp064bYHTm@Q^>J`i5q(0}`Vu@d`xS?g zmIc5_8Nm2!@kjxf&pdlpSy7Ss;q%6`J8Dobm8rj&?wZjIEM|Z}&N@3$0?>(EoSg7k z8Io3GVq;~}7Ph&Mz|h*eiz`NYIr@a7%n6$!83X?0$K*@t@AimbTl*!b4|91X{CQMrBr}8nKv1gj1|LTG5w*!Pni5KxIh5@Hwh z0A7-vt-ZO@v`9!u2rv{<`Q*&VS^#wg>Qu0?gF4AfZQv)o?p{?5HKnRRC&j3Ww3pJW z>O;yZM@NTKQ`$7BcDB|B`wp?}6i^i&-ueL(m#@+vwM2h+HFa4%v)bI8o12TmrG5L> z!rr>xjs8p7dt%~b%t&r79!1QP-`|(8ekwJD$HjFX1LN|4aRU^MDiM*BM`nLz_jI7a ztLiK1zwo%_%W4ySW1uW-q_3~9p@I7ax`DUBF*b&ukg(07l26adx)kI5L`9HYN!|)?Q4XOj}*buI{@@e{dZewUOr|=eE9JJ{GL4iAOsBhXJQz{Cny?RF*^nZ-l@nO z#ha(RWE@#Lh}*iMweKw{C|LAt&-kll&$hJu=m!JrQzE$2|7_-4aaSL$;O*DtG~d2( z@tr5-)#zneIN&1ekD!ogL)qxnck1W!pQ_UiM3@}>)WAo{7Q7KwSXd|(NvWZxu8a=+ z#Ot%Gvag2GP>BeMDAb9>$U;J9NmSp&5Yf`pr0p%PZi_`H#J4mzU@#`^Ri79O^4hma3$O+qVhvc%VGbUR{!#OP%xMYx)bVFNcuC zZt3`VW{}eEcY?i{X?E6P79gJFlt0Q#O<+Y|1t4(D`7Mk0d;zHM=jBzZj=cOePX*os zR5TqPAvQJ@)66H=$7wb_HI$x3HVG9nNYOAbpxO*q(%1Lx;V!SoxnfK+5x6OU!Q>K^ z4;q!`TVB7lVY~S*P2Jp$-Z@#h9C>MqeP?TF)ilVM&=mFkyA<5%&@-k1Qt5*Hcm$d3 z&UayC4p>5LEpCcq$28S{`LYr}Z2sztAGN4m?J^bu@Oiy=lzydpUuYZ|9jmRapLHrL zVhA)NsJ6L*uX?7_8gYc>bvBNvE zl#Hjv)TPGT>nGml;Ysq4ocdv@x-*|9$oQDWy!*48jXHG^<2#MJE9sRs_kZSInB`N(6v$h}E1=L`1tn+<99!oC3MKfP~-kxPVcEoj_CP5l-T0<=TO92NEjb z>j&;FA0Fh$Cy%T)z-ZX4uWSeWjH9PaE544QT%DXyW`rpeD4>xrdk-ylO;_1QPsK(Z zPz-OP^_?v!BykgtOxZ!b8Nsh46^g~sVcH=C4V7LekyHk4j-BiA$6 z;99m@nBi^w0v~^@P@i6HAf|Y_KYR3+Dr@wM>s@_T+T^8%`Bj32ms#fX#{HolRDJzN zNN6#S)Y?JyM;97MIk5hG@&)SCr-a;|F6Fmf*k5k>=WoD)~-Yb~|H=!j&VBjt7^IlCu3mRY%2cLv-qZ zK9RHeZmvEaZ{z0jOeIuJ1BZkphqLBHNsiw$Q=^zGkCT%8SirOHcw`J~b92iiR&T6j zqc%`=m*y=sDw=Jhsadi9K}Q(Ld^Myv)4=1^Tzkao+M4}*)y}Yjz+9P!O7rc_^ybE` z*>G^1P0Z%mhg)TI66y{tZGFr>wjcq*Zjg5^=BN^yi zv5uzazfL>J6TFiF$}Ew=(9tWgF_Asz=AH7Z6s%Y+9(af-**x|k&9_iHZTbkyUq63V z(0v|_-%Q$zeTsnraWgkD(X_4d?Yen#yjQFTldHWE`?H$VlcQOc^htQP0u|vM6&XUt zy_$ng$i?I{b&QCDgO10-mIm4T^Go7wGLe z^%ZG1@f>*Eix+r!gqSSmySjKX)7af#b2q7mBKYgV}nPU>Q& zl>Za7Lk@hvs!D|7M-LdS3EZgG$$IzCaAR`({PnXVG-bg%A4XFj0iE4oHM8ntxw*L^ zBh9ENY_gx%Cm}J2SD;5FCnuLp<^#zK9RmXcBV$Ulp%4ILkBDKma;Ty^OresO7uj*j-9 zOFIPO*odo>NdKoDVOdq)RevumaqM$Jqh(2&;jGL|^0Pg^{SQmD9Xaw@pvk5e3XxJ& z{9$8U#wuIPI1!Bz7x>_q@k=UB_aX>54K$Dppt>Trh&FH zi_1jG-1qOG&s2GgE7`MfCFGmBcZK)nh@~@Q{Mz0gFvnEa(V5MWrgsl7BuMCstsZ_^Qhc_EeyDy z>S(EHY3RhJ#Eu*F+xEozaY1%x673sDnY+gcaNp{>kJ0dUF}PYtb`EXXF|oyr%O`Wy zT30Uta++q|YYj>>oUP}2Vnm}LMPGVzL`88f7suqdm(0q!VQY?T-E=9fe8zt^N7Yt@ zwlzjor%_feEiB1T>vb`8^I6w+vQCV2zOQ;l*}%TPuS>v{1-7z|8G!S)VI+r{T*m0m zXl2dzMAgoogC1Dv8l7%)i)S26Y&?V(xXryi(>VX=b4C6h9>-i>HspwyaqQCJlZKDK zO+tTXxZ115Ipb13YSab197^6da(G`&JLvSgKC)=aPAysu#t~rG4poqrS!)cp7=!5n7NFuwtlnk~ znzB$U(q40Mh%d7#=6Q^GdgyevA*IiuI@9Kd%%1(QXF_AN-wYweaF;3-}uXLfE^1tijzMKm1#1 zY$1F8Ps1AV$18*k=U1rub93U2t*PVAs^EKsuv3bX*k{B%ZKICp^5!8E&&TS)oK`a! zjHX=sEgG8J{UH@{Im2Ea1R(;qhhc3t>hCn(AY^1L7xWl0$6FO(fddwv(8O!@QeGS# zVQ}Dwn6WU`A;Z)L-+21B+Equ~Pr`B_-n63IaZB7*rcIT3{$cQqxP3-#llpztb*)X; zfT}(Uc^#AOqjh`?X#;7xobyRMrqSnVIfti@+;4?1@A&6H$ z$0dl5dw#T1N91Ct3@} zG5QEPKUDxLU}Ruu9>@UiCUtF5pk*D$=_trq1E;{*Mcx=lqc|&4R$H=k8un_*>_7_%MP=1_OQo~7$D-1>eTHQt~nEk6YQ(RfP5oPZ9dVPhidE-CbW<5JGcvrRmh zkmvPVHp%X^Ne?kzH8EWy zy5&*Qb6g6QZ=uMno?f`IQTEfWHD&qj2g0%N{S#(+d`{Whm9$4gtw&c<&{-#dQLx1KT+agZ{{Y%yT#4- z)_w3(o^|sayVJyn)YpDA?0ZvQBdYeqyiN|@x~h6mOE@^IhIr2xIDL;7a=$UfYb!}z zj1eIfSa0f5mU*53SRNQi?e50cy2I1DcyQZ9KdxWSX*%&^`S<6Ek{_@Ag&2o*8+~&M z-_d;Nxo)WUmMj05qd>f}Wqs|m<7S>BV-^}aNeeUywVdQRd1YpD>P_SDw&Fmf)ayJ$j=U0+bpie1Nba9U5tv?5_`Qs8qnS9&e!sJ4WHfJg8`>ZWcfaZvi5{(FA;|cO z5f$99XQ<8FqoZOSu}nj=`%7VrH`b-M^P@i!c~_a_AJ6>{0+Cdxv8a?URK3)lGJc;B zd7(?N>F3dLQMYt-xF5TlIsCXAh+5uE(B8q$$|?LvywJ=dyQ5bWyw72HfRd~>$U?!yqwA9#{-PJEGQwH#|hpc7DCUaj=!8qMb3mEr7 zs9pdP+B&Q4;TvA-mGJv3UZ)>NdF2fE8;C+mxGL3FYNk zDTs-El}1!!Q4>+U=mrZ_ zlQ`!uolFs6B0HTkMP!8Vx|V?+ZI^5IWRsF^4h>3L1E*kkj@wmnjj+%f(Jwo1bsb2uoP)#HRAg?!KgA94}ib@3qnw`mUO` z5)yNg6s@y-sd^;??gSr*KO!?RaOJ%p8&8Dph`~5?#Ec8{R%*tSevto4jOm3C=^N#j z>nI15>wF4GNeSaM#>P&mr3MW*?}{fR^B8=cV;*K+ZkjUn#tW$XM1~F4H;E-gOr?sx z{(ca#rD{BF=^Fa*+6V1PBRR7<$umQ;05k`IsMl-TF$wuj9^W@Nr+%a&z;vu?!L}9_ z68aSNcv#z7rURU>{3cV==>C8<3hZt)b3J(0irnzXW`$`Eu8?&!{TKBMPI9hyR#Vlp z4tZOm(lYSgV8S>Dw;ngrKk869JN|C0xu^9dw*m3se%+Nf^#fK~GMt>vAWwV*lr{e{KD5EQOQ5D*PLN01T~ zQY|XWAM5B?f2%4zJE{eL%UB#yXCbT`#e=)XrY>gcDy-|$a|=3=F<*OiNTj$TmomRl zR_@>SD@<;`Sj zHO=OFdKR>AE2np~S8b$*oHR8{SgpEkxXcUtmvf<)7aa6oWalqNE*g3JqBK+`#6Kr* z&AKGQ8e?QBkHSZe!S}}RyvtLik(>FAIMkLyTAD5*a`EycgpsazgaLI-)>TeV^gNzZ z!%WB3h6a4nf!XID99yMaqOO^27dsW7HQhFW9n=|zo`BIxjmz?yiKak0DYE&&ji-#X zrQfGDwy~y19Ta8q@l3kuP`+SP3_L+fv3bq>+4{Sh5sUy->BFO=@IneH``-h%^f`*! z+Am(Kgi-ObCr)fHd@E3Pp+NqvN<2Si~BTsj8y;;;(b|!X_YBOPyN8H zX5W}TD~q82B^7=n5t^ona+yW69icQ=d^la3_XV#btwg0j!N&Jzr4c{WmguvQ$j^2c zl))KGtxtQ#R`)Xjjh8|~&$EmCdy_98>c_I?> z{YgC9J!^Mf_R(9KWxh??)gr4$Q*`Eu^f9))7;-6m(q7U|t6%%PB*I>~_qd{LZqXA| z?>fT*Q|9ZJq;W3F)pXi}38}5c7puwDq$2RNJa)oHopx#ktV=abW60qJ?b-*WFXJOD zUCpie=zj&{{i(S=={lZKNBU9y3l4|;{&DMs)#A8Pev_v{6}sN}&*>ffB1%c)9(OK4 zGpc5%_hh3Gq(jok<^7geG_3kwquY93VO471L~v_7HXiN>v><~}c^c=%Z2ikKdFOv; zO+7bnb*c(s?}@$lg<$^3Om)I3bD=sX%h*wm&#$CQOViTc_^;pJHdC!%d>F*ucDu?v z_;u~=BYUzMF%-zCZeKoS1D+TGq3$^dgx=8QFwvQZ2v-lz^@V_6eh9+S`1p4`(tnZz zAq1nBPVev#=>X~wp+8c-I95*@(dAh>3eRu5a!(HeZ18Ib{f36%GMT&&3?Rl2h@&^l z2y4FIPWyuf$LDQ0=>ExJ+!Ez-IL|MT?(>ob!VAR5TTyd%)ikLx4kU&yQEj^RZ1|5p z{p>w)RWGRhsKNz~8eo9x@2!}!U7l~aJPG=8$XJK|;1#sRhGPruN%M#2{vatMxZmFf zIA|`A%WIoj9Tfo2nZJzgco+-lq)5nJQ2Y!%vjc~8j z|M$t#{Q>_=s`&rlDc&itTMVQwFPn^dfXXci9$uE`w`6u;*p9G{4w4i$egEQogF}y1 zwZy5*NORLyqs)ReXHB2y8l$PchXmE%1z@mk;gO^;ISws1GR*-Y>TlZ#Oy@b7m8cP};1I0gmtYNBPDwY< zc~+iYZ4L?Tpbaa#Yu2Qs%$JUgL`A(Rx{38W7gBnkc4!mfW#F~bY-+la9|=xu^TjFw zM}gYO<2C;3+uPgk-+e-fcvrVo>^T?>ZvW(@_(mlATCESf2R7px{073pKSzU#!{Pl? z>;baeEvqP$%}hty5t^Ug;IALN&_KA>zH$cz;FT3HlIdkT+g&k$L!@4vU~2+cA# z>4ow_Izo5)ZVpU^08t)s>ld)DusA_A|gFy-5I|H zg!0Mj=5YfEv|2rf5yO?|#^-Fl+3aK!%nlG07mtpKv74)4<^?8`HUp`x84_XWXeeN8 z%uF+6FHHnVhoN#Vm4wsnx<$zU;iHE^fyigO(-6`f_wx5M@%<55z&NExSVWjKBV9K8 z5_k#h&els@Qk`x%Pp$-w72Sd!^zW^$t&Gjb%8iq3@2@{U@PC4Mj)aAaYkz&Yb$#6s z^D+t>li;NasC&{e^cylINyG+pC(W0%rEs|LSaKaw#bQ^d^IH zGad!~j{CfTlxL&97fR+Gs9KHtwX_I5LOKl$i=|HV-5mLfwq?tqGu$JW%)&*{wy;8R zv%`@%XrWts=xlpa!Ct*v2pndRR8>2Vu=@qj-0G|7fjv4MbaTGguVBv?Ft`;Ptm)|) z^f*V~mn;)G>?@|XS(X<-r8fXQBrxz04BqbRx>)c(tL*CjCBxXPTcyCQS_*;Bfwy3N zGpnnyHCAY8?Py}1!tNE?U}P%RcDggI&0q{{QcZ)3ChE-35D`PgPqgsjySi@BQ|5lcWg8r?CTo4Xx(D9e`rdkY)EfAlsM&@r zk-a1$V)g#*&;?9;nmlT2LBDt&FeP)1v>vk&GPCcl*eLr6Q%9%s} zCApxY2B)=9A{I^E;+oo6T~co8AP*RDRJ+>u$0(}1+ywr0?UP5F1-Q64*xrX-9ocnt zz=z1Gn8l;Td; zxa(5Mv6-yk<|pIlpme(o#w)8&0e*fqGoXxpvNi8_bLm=kMGWTUV9qoc?ykD1E>VkMhbfjNVoawl8$FC_<6*{bD8_tGOk157@qXcyw<@ zH9R~#$izcmF&ky#`2Mc2gu!8n1r!VdO{uBxDzjQmC1W9iOicTrPCnb{ycS!aj`;Wz z$aNlLy_42sg{LP+P*(HMw|e4c*{G2-XT6ABnQ;xqsGd_3MQx>)6h8m`=U8`pJTj|4MFvRYt3`PR~$9zmE5=_6^t( z5ilfPTDUYR&S!^ON^O#8@bVB}Yufg?_&p50aW9`tuk_+`+pfWK140UrMxJ3R6BcpC z%R_l;{qCB;Qp$G@j~dZ9ZKkm3LII6sQrG)OCm~^B!^xGJFw6?zMcfzitkp-^uCKd4 z!YHpd5zEQ{)2Ga}IA-Is?Kyf&iB%3VG9SRdM1&`VP}kpL{^Ycsao=2)`c4sXiC#(F zTFXi#C+`-@N7q&Xgs3E083K+%OQtRj$s|U1St%Q&)DmPC&zVkY?1s#?hxbY50NKjSlry)VCI)#IRX!~Fa;5XadxMqXR;m^ z5AW@b!Xw}^{J;@M4kwccZ2d9(LT z)rTU*Ub9*Lr)%{Bv9Ecksb&b&=xw-e`gx5AazKaKMi!!?mO2uS|2j>SbU3ePRn_VR|HFKk233`UyT;!tc9NICG!#3u#asVsSmXHg{$jfPN zZqD3V7#P?XHt$U7F^uk8qheEis3sqzea2}9581E?)GhjGPMpkQprOfZPFGL5kzV8%7V3)EUX1DVNJ}duNBN^#_O~}uFzA?x ziDjiUH;?VC)>&CQ0@bmnyQd<%jg*yNuQsW|rc$dXsAqX0{IS_uQU&`F;Cv*)2%~=? zIsKsEsEV~Y4ba06(Se1U#(GwEWhR8D7dc<$6&5m$j`zq&)4Q$cTc0@RAh>^B0;c%?)B+F?n!Y0h_b+E@V92Vy zxV5_B&#zDyL(KK5-Q0!1E%8H#U%Y&I)tP);m~6BxdKP zI)D~+?%LXq4{kZ)%p!0E$ctQIwE z6EAxQZnn&5!?oUcf)~ULK`~G$1=*bAn%)zU;kBROt}Z}>SDSW2e@hTFu~}w8(lRCp zOdAm9MZva8S)kYFr9{M_nC45%EgU_XSD>%ty5?Rw2jblbQWK523&?S2cofc#6CEvW zIw=_xBf~g7Yb4v0T&1yV(sOuyXQv@N!UWaaUrI?^9UlwJow!=b*7|Y>jNIJvsq%`C z(NLAl1bM{Pf(x5cxRQBYMmn7iFRZ$-L04Z1owLGQT0QiXid`S3V4+zfgpwOdM=Ulz zKF*7O*8W=>&*3Or4g@HePCtK&xcda{nOO0fUY1ty}zOS z#fw36s1B!wjHA+fiwVv-yB$(Z(0|WvTirlUPZtEXd;;x@DmIuyp^S8Y{q%xXBpgX_$!J|+@ z?!`-0P4}9HlfEfki{+PC*ptVhkC6h-FV8!#NM{>8Po^rZ$4ia#B7CzVNS;4Wop~*T z|B@hMX1KqsB5P8D7;Iz+!Sd>=8D{*&LxEY_8AV=lrb$;&&#$ONo}~1BFJ$EJcIKO# zHFR~~wQxGE-uhf+W^w>XfW%67}na(3cK~Gjfb9=UfEO_+ZdI#l{H8JD*T_88C|jKi`CL&-jR|e ze6nloGAW;|jHB|f9LZJcZ$&5J=L3!NTF;!K-h*xM&70Q0*Rm&1C8y%0I=l;58~S*A zul4CXfAQyA;j?GYBB>O@LvzouJq+^%RomczAQ3;80 z1l+Davo1;YTBCZJv+NILMSPr2@aPNwB_SS0Oh$D0-5L6TyCvL_wsF)W(pVOxkw3zc z34g}1LW;aURXCqeoVBwP*N2AufS~Fedkf zb$f7pbad$dpzf{1qHf!DVL$;zk;gzpN~NTg?ocG8q&t+79BFA01(B9+q`Mo20aUtS zs39c=hK`|U*!TFXcdd7=b?mj*_kG9S$Nv73W9B#h>W=F=uk$>wbx*6f5B7irp#*9L z<%=C4E3U05s3@u7l;A3bKLoBp99lhYTXpJfnp3-r`uDdVNBN+lo!RxOI>!cI>8n?| z4WvHgc-A-qI!CSaLd`(G(Yb3YUhBnS)w}3+!fO;Y)P_ARVKsvaam^Q7 zjm7;sm(QSH(^{0_bnJGTjmaq%$e`hn*aHyP zdwxSXvu_^*gSMm83^l(C>tntRTw`zDB)h$6xVAr=U2tg&AQ_XUAo|jHivS5Q&oGa{ zcG|SmRI!7E9`-xRaeVIm;_j$vi8lY%7ZCiBQ9s#P4A*|lYs7-;Z`|_Po^dmTVADiywX=MXTw|B52JV$p8BhRn%V{y4$W_^(O|s1XxvZ`z;_LUSUjH~f zEaeDERSt7FP*6?ISRU6DSNc-i_-*|YuvUo&zIG9o8f6kfsZvbK7Klr}@j{A>SQN~;` zX)B!a2Q{R)Ir%Gw#*nZo6mKJl{ce;I*u2Ff_FmY$714 zo%~fDzkX+sUoC=}dwd@XKKl@?bV;N^kcyy;nH#Rjmco6n35Qg^Q;kT`PqBWtu}WY^ zkLQ{9?c;T0318eJHMnDjtf_nO9Dnl>_#6;1et%S?Gd9M3b?{DH+$YPp&L3~1z877+ z%y@$D*J^MRM{N;{o;8V}nc5pR=*NB*5xh2~fv;PBg*yF%B=i5*7tTfaczK=9jQ7;z?3fbjjVAKP zLDmgyjeQn1@$6`ql~ZAL!)k(Q@UESOQ^X%NxB=n2G9&_&${OykX@O%U-Lj($b)c=Q zRI7Fe*RF>>X6ZE}yKA3uwMv%f^t6NNdfDWLRw4XNN$q5j7cSCEPl__snskVn(Vh&7 zF`P7l5`%NIwUAym8Ca(H>(>3dz}m&U7V!ttzSLD>tK_1o^S&s}w~U}a0B_?vNSVBp zM#q!>eE*}%-cH9Xd1H|^-SDyr8TrkWx7=`6aFY3qSK9iwDO2)3xZeCA7FlW>0c~aa zd+e1V><$BnjA4?059}syFBjoi5AYiU4RDLKL)!Rui~Mq_oo^3p%ABfk5@!PqGm7!f z<#gcO^C4C4Mu@}mpHI!qDB?(-Ovw^X+@`!vv~_e1H{e4yes_nJfXPAl-zHf7x5v(W zHn^A%*V+dpo;-N+6R~RgqzoCv#GeEnZfSl&USXk@B*kwVpfSgzc=`5yh*4>2sQ_F< zTYz_hd{7R@#_~KNBsx1jiHp0-nqCN2W89ISvW!!dwe{8Qo+in|-Z3KlZGlgn=C@DJ ze`JymYW|^zt$HXTS;urXaAA?OmF(Q2*Jgok+&m#9XTuc56<9z-)f7ZluyrHZ{y%l+i3I48R( zP!Ng=aQW_!rEE9B+6*9ChJ_Hd-Q|iaQNKQjNt3}dB+9aF>{>z zi6IUX-5KeK&Lz1)Vz7(#%~}iTjp|C zj1unbsBG2SF0e=C`z*xNvhaSrLgsl@i_r6& zeNU5!jY(Pes&RXk99QdBNMGY}W2Y)V${y-2Z%`UP7!lE3P!JMQ#2km&AI%SmHJ$Mp zC-dEzK@gK}Y;SMJfj(gy`&`=-)!L`9z29?0WVGp|x9KR>MUUPOAM`BE6_)A<`py>3 zLczxE|MF`OcV)#0Plc9O1!^hZ8Qe(&DTh|EZte0eGuC6w&qa79SvM+WM%zIAXnO$q z+v~7@`$BOciIuI;vJYm2pBe}XZ3$vF)@Ej(#xSEJ1NAw^LmLaaGe;N^d#HK-{`d2} zuDRd~FI1#4*1n^}yN}2Rr4s%k#m7p%X>TV$9~Kv%nGzjRUR%ReZ(0A+MhHWl>d$k{SQ+P5&!w4yx;QW_EF%kJrQJSb(wJiOhEM3!RD z)_(qczqYo%UTF_U4DWVX7N(u9!^}R`&NY~wPeiIlE^xPwnlc-EEN@mth5b0%Us1kT z9@vfxgPm{wI*IFDO`EnvPbqPKUGJ^E$SB$OWu^CQs{@suR$28CqvNBCu&kWw27WVT z`?{@e@u1zC3*WVpHY;On;xL%Gz5uJq%MHFT@ws~QwHCjw3PHx~`=!>|%Y900g@e5Q;@QS?OLlJ@PO*e7fYL6dnCp^BpgU~5nNaKm#NmLkH+%zM; zKK=}tXEe9y<`mYSz!RznHr$h*`1EoJa7BhCPE8>%(5NYNQjSu>&f*!2>fT>Fs{_7X z>oi9_Twm9B)Q&MnJ&KcW(o^&%y}Jk-8#62Go9?V~`oLVTqgmsn6>`B2%!1fl`J`=( z=B;ZkcI=<5eFGU7&0EU8`zt5+hJ<~+$LF}JLU%qpBk{g&*~H003DcKJ_I4&=vi|1l z@0qgKRW0dTv2-dDTS%l0Hym6PT6vW*NV{$4XxlRj2=%DidwSOW&bB)H`vl-g=I*|y zi`!db@9LT|UTXbH_v_-8lzQ!8WmRt~WxJvK{S4G~pSP(P9~YF>NxSq``UJ3vNUeEaq-*NXq+>X&tvon%O01lfzDq_!u@xArLw*??3<7I zq5avc3ZSe_4X}F}Sg-9Pl`no5l1@FTNIR^xG}6QFvKAL{R0l>&Va9x+o5#EAQ$j7^ zCR3e03}HaA^NFn-E@?E5 z*-!8?n5W0ZN!eUUiAsW9v@8ISx%B)^wbLUId*~k=!9@Ary#KntfLrdEkFayMef1md zoqAMD^mtW#ri--@%xR^OfyQ3dSdm&z8ZpQCPl&d*-ximc1#*mc;i%GOW6Jr?NYf~$ zu(h=FP%%=&B=f12Qzpi@G`Qhvc%~rf;(gpIn`YA&WZ2WzS9Ot*J6y?#DQJJ@w%F1T zKam#_VmtoY%=j@slbZ0DH&k=D)SA8Be!59LMJY`@Y^E$?a6Ww2eW?241J*kQU#G}m zxvpAPS-JV}$)iUG_+q4BzB}%jHHA`gX&juK z>NK9JQC*|F=WB*c-oay|!cgU;FYq^-$dbA`=golP5^sRnY;Dx&umL%TQ*gkws zkbd?6Oc#F0OiWZ#Znc=tD)W)}`RZbc?4#;JNs-cp>E?rwjr=HPxelBg(!re3J8#w} z4_e%@K_W#pIb7cUMspkaefqAQY1U0X=-#y`pWU)WhJ@&7Kah7iUsAa!UUO8M(oA>T z6dT2ArUTjYEE|6TJa?rpWr!OuO%c){Hhf@pTU@`MU-0oO1nFRjuBOJQ^Gj`8+bU~O z9{zH-ru9{{g)G4VAYh-~>qD=!U*+FCp%zc9v6x{h7U5->z~uB>daE9R=tsd@N2~Ma z)yyByo@ePjaMx+5wMWcgzfe-vV@?mRl8|`$o>-oQl3P5~+(k`IRW`p($(0U;nk zgBW1w1LLEueDe!~!==UH8Rn-8@C(sOx4G8d4Qh8mcJm#uQ(SD9R^9oCJbhM0&R8^sni&kUo z@79lPZJP+UZHf2N9#hJ6l6>$45OlBlaq2(O$AS`Q2zF15uTp<4_Ljif?egrkuZN?Zg z(8i~d+N~}kl}qfx475sJhj3nO?8DWpV~dVEe;gUPZ7y@?|D1Ke$H$g79hTUfRMA*^ z4>|4qR)AnvhKL{0w;6dXbe(_9C>zABP-A%K-Rs*xMKd)paP-*{3-AE0<)ft~X$V&- zvCnBd4_R$Ca7IWk6J!$JD|oRVKt{tb6OOS@AZTC%PuIF7WarV(;qG|x9pe7A7i_WmGj zdtM5Ytd8|so+6CvjS#=OTi&g@M*8jjNmL*m44q@ctb8wKl(}_$9QiXp#QW?9WV-5k zeKCeYj9Kk-tXatnkv!9z>Pao1@~t9MbBmSfvzAhOm`m5ZU)LUrv|vHbdJ1$Y=BaRu zrZVze#LxjL>SBeC{~2-WW+Hn_t-?QPY*O~GR&8FpaieKDfYCqjx?)IpR72tUJ)o4d zU0m4&@%uBI2UY0xfvSf{V;@6v^Xl-SIv@02j(BiMY0+EZLQ4=()y{c5-=1}N{rWo) zO(svDgV^c@ojm5QHp>~g6m?A9U12LMU|y&D7EXjn?3EI1WVPfFkBC> zdAZ%jvN!%w6yQW$At7PsVCm`YHmbLtv1Ee*_FB3+;{m0PL40nrog=T;N#jK<_jaO- z{uD$h6ryV8T)GirTEKJppD?eZpGGxBePhIA;>YP@QUD~Oc!Z-;)uC?Szu(ooR!uZ8 zi~$?c>APPPB!2=c2W9;DKj2cG;4f)e>ovE{Q;sZSysx;#@Ix?spR1YEmjq9F1jiWz zbO(^R;Qsv&+8s$`B|vUy8WROYQj8##y5xh5$66qn2cO5UL!0VnS^N8Ydh~1V0^Zsm zjgPRgi)MXoZ8$-H`&(WuO|8c`f*Qz-22TLO!QTiUka&e}w-4HA>T#fRtpD*V&M#kw z+X9I6B~8j|hh%dtYj0b29zM|jY)eJzYV$%jlAwWv*#dWU&sexP4$#-GUne2GPQrh0 zVqf}pQlItHq{6~(MHfDj)n{I$;AHaz02t~?Bluwdp$4Z^`TquqHQgBm$t4#Ak~wQK zxGq!xZhx?N@^ha>dAuEeA%W;s9B~e@I$}~eHWsbR5gS0%h+}&cekV(BXDzJib0`{mWBfV^OYek)O@G`(Yo-w{& zj{@MA&PRdW?B!fO&QtVPLf`f_<@+Z3SB#8sKqMnST#l^(N z$X`6ol*J%_S*Bi$D*&UlFqJPo16=QyVGysX-|FtD%J4a`+<5GC9Cf9MCi5Lt07w9A zJ?@KWg?5yztsBD1_)Vy8bYQxtjq8#o_%5wpa}C<%GkwY$9- zG#A}$vp14l+wf?^iOa|d9TR^3o4G$oF^xYvuk3hi+v~^@cI*ONd~d_fz)Asdk>RwF zJ)`c&O&m{ADlAZK#d}NJ=5;>fLDW$%{ybpA&FukEm_24(4UO?wT$vN!&5fiFU}k0( zO7q6}ZWkHWelN?DBNA~um>9MxwRd?WU{Jf%89B%rwCTO|ohM z01<1oQSX&)m169hU#Tfn5{A2}2l8@)P7R%{{(&ho`5j>$9Uaxek;ipL`nB86;s!9E zD5KKtxM^+A_*hq*&B^*K)H3aSJ+T}tCGQ^oya!!*5vZYW=Vugvxb=v95CcY9_9=S( ztk&Fjs>vJyl{oLp%6CEQ?x#dyU*t+?caxm3CzK1!|sXaPvSif%%K*1FSkz1`%Y3> zxn#_aKgq=-#i=ZLx(Sp|1nIz0qxQ9QDk9&-Hs-i=b4RRR%!7g24P#cx!7b|s_abFV z-8v2hRu2^1XnUUOVqLlC6mmTu2-UQ|IU5NQC3L3J05=nsO?w2mR6YFg1gN3@f3Hhk@xqbgex2>rt*WX!xUfuWcHIlxuBv%?YBQ%PO zdC#c#F>i`E8|f+&;Jzr(2s$5^ccdNfUOGD8Xr;T~MC$8)N~eNdb1S)Yeg^uZ{zj6? z$Vi)6m`fZU)77Mj4;}eJn)iJ#wui(-1Pa;_54?AOS<_|ijwL~w&PospJ>6Q~^`~?L z=RHD^Xe$2G)03j(olVeQ#IW&De76IaRp1#s`HYUu76}(vKWQ`-`g$<4I37xGOrM3* z*^dpD!dSK4Pdn*G&F#uUbUI9rq7v`jw6%FVp>I_Dp`^_&0(Y7|lY`xTvXa7L+^wyu zo)dg@c?qda8W3LEszA+R#V>t4e->)wL(|{l;_6vH=}|Bxy-8shf)^525x*WPV=DP7 zzP`ENnor=}O$qQwwv=+mJ>4m@zkVN~WRI=PHCEEHgPyab<180$$M;!4TjweMdh_Jo zfd{UvASqx`i}*BYFlXW>fFYnD261zsSMV4Dg~R3XoV5)ugRS&G#WkRs`JXk(|4YdH z|4bxM=}B1^4pUM40LdHbsr|u${m*;-0g?ZVJtGF({(-bhbqv1L>o76lq+-m&jsQZG zGi!B0$+T_Eae=VRqpHhm(!Oa|jJL(i;Uuf9$t6KIo_bLAp{xHyAW`+r%7?2{bTY%G z(z7Yq@DnDdj*(L9BD|ignmDbs==-hfI2rwOVIrZ=l)e8{UNom)gE%eNh^=vtV^+{I8!urnk8ur4(bQpO~EkBd6lVM ze?l6_@69=Gw6Lp+8V35fe+N|DxW*4kDt)kMX;e3;y5BCcHF<1VG2j(h5*I{+o z1{+-c4bQ;jZ+!s`ABSk3Zkn`2+IwRNp)>Qpe9A34aS>XMp`%Nl-?(jea5@+7(-XkR zk}k5qI=D(gHSW8+hAdPgB16R`YpAQAEyvklPs5Syu{rB(2r`w8Yh0?G38V{*sD z(Fb$YSaEUjqq#HaWTl0)bO3UB1$KnpyMUrgoIaK|AC9f6((8qh-@0|aNH-(ka6VDC zQwD5{E}9OeCoSAo$m22<)A8+5Td zph749P1y8wRMuxVV$xQ((H=LuS_t=%RiYA5Y`^%B4AkC3x-8D9)~sXq?;RibUc6|Y zt$Ts0{q>8HuK4(1QAOLxVL7`$mtjsEi;yTfKHl%3_5BTiKUMlb7TJ^Wy5j=2*^8ab zWjb$GaB8}X>Dr4HQUP{{uG$O(fyjNizRS-(_vFGA?+zySa#&1*4b9Wo>Nq z7qrc1xHPU->LMv~5(J_^P{_$`A}L|%_Og4vEh7W$RIUL7oxN2$MLz;^1kbKhazEx- zXP^6SWyK8I`2k$07(90_9{YiG-d_8m4-T>*3NjDG`9}&j$W^Gyz7rY`pruu8)7X!wX@_o%=kiN~EOV zPCzjBsPtlc6SxLqHonu5lau=%4CQj2pJi8u?HyEDDl&~=j(oTtaf=EtZ|B3#XWXx@ zx{4m`l=|#IMYbFEYmCp&nX?(Q85y&;y~_-6ncYX0qFVMD_a@zeIhr0-NrB93L5gZS zPjTt^o^r6T$Zpu0H+#G@;CWV@s-9{0*FHp}=KjR{x zBgrB3B&k^pur=$(o>&eWn|NY6uUG5y)F$93|GeHH@iN&IljRXWzD2JgN$D|SO044LoIvb!~ViWpi=Jcl;+_jDfrwr>l~yY z1N+c`*B(F!M^IIuP=7*&)xRo#*&gg_gNs^C2x-PzRMul&A4Y2`KwZ z`|U`1rI0H%e7qYRrNB62fnN@H8jB~VKsPoH*J1@fK6vbd-zuD4i|DhYadgvlf%vB3 zOZj}4;ey?;oEL6{PTPuU+GQLDbIRb!$m;f@Wip>Wc-(7XY+0R1RriGsY{o}9BLEf% zQTsKxcKvS8?&R`UP!msvPRL+|0T)Xo0-gOVC6u7l?s!D`in{5fCtTD;Q zFZdEjq@OpxShsV*4J*JG;QRc*u3aUy@tyX;5Gy5%K6mNeP~hAo zrzmYmTdQ1QJW&1?7H{O>v|^ak-&1zeR3_|xu5dd7@fh+oymZbz+;NOWF^$hyf8zL) zIOtyR3TeL-zgu6go2yK%P7z|uTv45OEr0SW_j~uQ=YTE)hgM%;fpFc`evaGYTsj5& z%$#A;!mP(Z+!@fv)}u?MuAca-1=yc>q_9_@SUsSx7nXxPnVISj501!moZ)H-bejUt zfb&I>&^4kP_gRU9H5MsK4?q@^=M-JOnA6<+Wv_A2p&a^~St%i((`av#*J7H%UDoXROBBM` zg>1{#5m}(_6P)BN>+-dg<;QZR>tu$FMIY3;rRC0MCh5VIEtxwlI`msS@pVX=My z4oniY8$)r4SL^h4SAuqj*=dUE6xBr`w_{?K3oadQO_gv8yEbmVN4*A^h(}#T#jO(q z1=_;LT zoFzwPk)}&eq*0On!y^X9bG|JmC-zU1*5N1Jy@HIsCEjWQ*HuJ(cr6$8;P(R1rv+vT`5p=x{rjxVo?q2|SUR zRgzDh#Sv($zHZ*gJv~0Ao~UgsDst}JQ7wO3?!i_1@qGG{ryKC$p)8tfX?1|!`uO}= z_MsQbZ0h?Z&t;RHi0}0D^qB^t4TFcy~WRXe^ z|1Mr2zcaTs&;C`S^7*rD*gYW`6cu;t-rg-s-xCzXMa%HyKBdmsGGbFFbxe&EwFsq zA}XX#2Ve&;S)5{G@5sA>rZibc0}>}KeUu|q*PjQ5MQ8SK2lDa35&Vz{-;@EO%Y=-K zM-r1d2wR&N;n}*6=ktTFxVX3q;RPI@sbjX2HUyt={XlHg3}`iNpJv!86)Y!-oPGNo zMriQ<^En%=v_n0-PFeN_X#Cr8nUGLhQ?pzB=tt+JEo@9L9Cy5`6aFF7`LrUgfbIxN!dEIfcg^ z6?t=LDlzWp&BT|Xg-F#~cX)bzv=#B&~IzScrvWyw?C>` z`kI`qm=M-y9l2bbUlK{+Vq)@2*DA=1S20IeU>wnP8<;EJ2ineI>uNcBO8z&tUe6%G zliy+-SnDrZij&4b)2tfdTIMjCn61vdd-C*Btq-gD;DKbDapv!Q5A_T^)fQviqaL$u zhYhW&KTL}g6Dj7mIn$TZr(sx0Zu)X5Hs+$lN7*=OAG-yJ{Yj*4h-CVA6 zI_-{OZO}G-{R&&v$`Ff0E>~4AcjEPlpDFLflF|wr_=GqM&jeLzP>!RM%IJ9}QKgzD zuf9YV(Jzg+cF5i!^@93TH~HJyUEMQGNfv#=&ThcOSX$?R(e7Je<`g%2`I|A6zQAen z`qCl`oxA(54<97m9~a6scZE|=l`7?4v_!|R>YOZFuOsxkkM|6n+0haFO-(fV{3TJ4 zAd95+p&!JWfs;jJ79HYKedk^rV?CoG3-b8?td zLPOo%g@_NgNJwrdQ}R2OZLDt~7>%cIGpPW=SFtWs&F7&^=!wkj$-KM?CF9Z|YXZ}D zmBYh5U@;se8l6(9YRa@RRj%uLhv)|Nqsh#sUe(^A`>f1NhoslY=ITu=rLRoFcF|6} z0nrDHpTArpc8!aRIaF3m6t!EKg0le)sz~sIp=Yj21#D~vp4~Urv${siAzU0B)!L=U z-+##Va5f%BZ?x7XYXZjxXy}MVKL;o4xd$e$nvd_6XR-<-6BC_qowiSQz;!Ai+vC;Z zBpM0jSsBx*a(eUS>><^1HU9j9lJ1@^YyL|=WI`fSwht+mig=iSw^71m> zUvFy>h(tY+LX8_vwzG9L&9e+ca{6Bn)U7H4EeF?+s%!iasI08R*}Xo)GkEvsIAf^w zatAteD35YdEM^U8x4Wg=L(-~NdIlJz_^22$OIODO_4Fs_=l_~4cB@HtCb>@X%{#Mn z+?(Yr*tA`_NMJlo*rBPIJY$^7tdy6F`K$#y11PDEcMSHvv%lBJ7J*p5DPzwHNNxS@{LsX1l(}itt10Z=VU%qC zvWZ`-R1$xu8I??U%HwN~Z5lBShP7!eErekOrmixDg&A;;Voa%&+s~heQ+2PawMJYo zMn?M^>|CPWSt?r>6fPyb%GhhY>k%Oo=^QmEp$_rF;p;j%&|w+?h09Wyr6ji_4!oIvW>1p1%6>o%DQ6B zsSV#_^Dopivt?Tfx)*!EOITN*LFMJL6S79>ZsChCmMZFWZLbX1CV8Re!DszeJfK?l ztt!V`;oxg@k?NHLv+!Lom1rw)Ot(_=e96fZ4 zRHppCcA=VH+K zv>B@bRLbXJ72QK)W7zTWtf#A8R9bI?UdK(Xlg-_|y;!x6cQVhtFxeg^ zwTLQ`;`0c(N$U^+f+*n=fGxg}W zN2;(xQC;1u8;;0jbEJi(jKJ11ZxX(H0p^#3W&4sGY$?JJAz*`k-t};E!>OwBrTK-5 z$bQ)q39f?!wW>_CeD&c<&35MkX3y2;cI5Bp(q>hT14HzIdRx9%CIch9@9W;pzuHM_ z_pA}A#MfMW_#^PJ3&p|3Cgigr_eO2b^|bMuBHNH2QH0X7*~Izu2q)nIU8eY`gvgW_ z&a=J>0d_Pm(mlSyy|W?aMMS9dtdj0ulPyc;+`}r}4jy*#PKJ;QT85nNicV*<($%8A z^HVfkd`iMryjZ2~u$;28*0#93eZSF}4HtT+H9%(Xp`)dO4LWmF&D6WSTujbE=I{(1 zdKH%9fSB^pvv%n`gb~d=oRjDmT)=|e$;ES)jxjR9omKpyY9p<5ns`_J9+4Kura74Rw!?y} zOZSbnvR008>73ShUp3{`20AX^+-2k3Tw{29he3Vi;?QGs=WE?^wGANb1=QcJuI>o9 z%f`fOAzKu>Z#}i@f^iJx)>ezwXYUZvGrX|RG1d+HPA}7=+GHwwgC#vMogm~I8!xX{ zOZuIYg##PWW}6bX^OnwmCTHF)9l^I8J}HVhIgs;~mIo)=hY1F0XdtVVC&VF&r#M;LC62ZszurvnWlFUL^DcuxEvE%8UQFeM{$O9{Dn;F-oOoj>`9y8Oh;B^kJha$U4{3TA_hf(3Pc87NJ zO?qK>{E+=H(W1~>HnPo*`i{Omk)`YBAE#?lW4yf+EQ|F~?~%e$9KOX2^fY2s#s%-x za|U9IG$Z2ZvyWX1e7`9Y-B3(uG>N3vh>4!9(5#7zYjr#w^}cGm1tCHu(W$tPGwd>f z^fW#tBA$WnwNS|rmP|_DfccEW8f{uKJ+V8;Pm8piw65lxNMd3n?$lUB{?hYYNgvQ{ z{;7ASe5~aYEF#AwYTbLh8gG=uU$pX(WmW1*OI;b*VE~ba@pES46bghQL!sKT(WX&* z>JKIM_1L&3ufBCL5X#{sex>bm__`-R6BnCGO!{v~yxW<$s@{AIT7gf*KCda*?K~P> z$P6H*gPJ0kgghGD29)!;@|7P+_^A$A`m9t}W=*AOGM{*dURy1mrkA%EjSm7XEWTlc zCIwzn3O`DB;Hc)i^vt3~H+ui@Y3h#G!AS+SAs{ORng~uZI&M9c`#N$MWk%SIayb<65E*}GXl1pVLu!+# zlm*6@ljpl ztbv?fR9v35D2rsxU5@fvo>~{Rb(^DiY9iCRo^ykTwzX(gYnBI3+EI&sPN0WWaec;hApNB*Omf{q@j}!0>y9 zGgG^*VP4CwpPJ76?3%~JE=j75V0&W2I5OSf?(g-Z^XZqHneB{dmt@rB zSnLBx)j4HTQ?NR)a`pSa1prm?LQea%KhQlGs` zf0E=!}Joay-%??&d$LpdH zep~)bgLP%j9^Uc}k<@-Qi2J7uj5cCy-84&aI($a-(v8Y$3g1YU^7dDU7OQXHTrT8i z8gpoTFbTbK!(n<@-KX75ML|T7lkoE9k-U+DkEm^^gdwvEbzEWq%y(o?rDZo(Qf(0)AH8@gxyi>B%`&k``s*`c1!9xYllE#* zKjoF{SKjr1pmuc$Q`6O@y-Ar(-GPNtLFDGQLb~n){qa3++bq|pdkMB8wNRmPP3r=l z`hcoRgB=Xr9^E z?U>BV==s9&+(`e2pHyrAnf%gRIy4CqZ{ zQ%by-CF*Q6`?=F zo2G4bC678{9=S@U>+8pZq}=q}Iag@wKZii=8mH)G1DD>o&LZ zoU93E*f?iT_6009ewOWYg3^>DR4q=}+g}l>LOw{UiZ8>A1IH|n@}sPXkG5UKMV(Db z@A%mi7P8;XPP{Vx4=g}IQ`7u?U1mzsIg>r0r2xRD5-D6VlbDvqCZbcU?2bI_!vR=A zo_?93x|-SNdFT$m}yI;E5I~h#=mewnP zzoErpklPAZ8=6b(RXVmb=|$K8UO@NMG2}k0XM0UslR;)UM5GcWTmpYH+2jyPy%E>i z1Z`3X4mMD^WG@rDz7&*M$yHxfk|SeORhQRUxZ8o_i())}ekpHNe+Ev*&7&Ofi8p1z z>D}BG=w7FoDy-mIOtR<5aHC$x^cji_ATdp5*hiD)gC(MqV<9Q)tbN@tRTN)-n`?{J z_Oo|UD{ii@Xr)#V6Lp_rpQNyI4V_EgH~_JCZ*pUcZ9$xno6)VJ<;NvtJUqjQ1Y}}? z^~rMcc{k(TU?F-;)@7lD#EtlF89tER04UIWTlp};>;9YvrNv?ZyrPotVwlamqpG1n z&9z`D#jX&xel0tPHj&pnXM?;eH?ycpS}Sr4mXXox00|FLHx~iPBCD9U6b)rgQ<3w+ zvUXv6p(F+Q-Ho|gr?#woHBnI0n`m-KIqR68F@P`|mSA002WJ<4P*KR{ia48uJEb-D z)pM{#^6|f4?cBYcqf>M@p;n`o3xn#Pa)S5Y9Uha-XFS>Z_A+kc{oT9E+X(1>a=Vzr z`D$H|Ix#6N3QMkqIJs}TUO9c^NJ7c37*WF?R5Lpl%fQlg$g(_GM(XIWr-|t1qu{85aSzDB5c(R9?%cAz6&yfSQ47!1(=g*k%#}<~9C8 zo+Q_C&<-=D*>}4Cber3>U8%dTzk9psk{a^ilgA9q{z=^KvA{CDu!!rQ%>VvSHz>k^ zK=e8B5h*pVw0r7QA}V%`!qDodzj)66l&~MP-2k-$ikJ=d4yDdJc5g z2%YO=(tPqb@1k>r$AeD^>W+7w63+ww30!gE-<7U$AN&WJ<-eyRI7nTmdTOzh=deXa zM|)Gqdrb6C8HD0G{=J!JR`TV27Qw+Pe`qA{UcYBaH+_`(20+PVBscPl^Toa1`U31v zZ4T=lb=IREB;Uo~xLHZQEkYC=LM!V0{@uGgu>nLweH*5dTfwGFp+>5J`{)iec zyQlhQov~4@ojqV1{+0&wHMA=RrDMDg{W8FPLk@<$RLL_^SvkyMQOPiooLmGNy6D}A zjTU{t%)I||Hq&ouZf&oo+E=%l&|D`LaQ=OxQg6$Qc{Rl*0u02-!7V(pn*52me<#F zNlkb5fLAFS2bvztY{6tQR`KO zl5w$jAae~4$DL259zGOat|M`_l8+oh#83O0xN0?YX)tI0Y;V`p(%?;HC`uIjb2~J$ zptc6A=WMYaN|mYToCZE)pRK9fy1e;yG+~K11BY+ZISukh7HH{b(Qz~ywD{*U&g%qE8a`JH|8^;qz!e7Z-nG8F$&UNu|Jh)~y$n2BzyGQR1`hZy z$MgS*|6=0yq%D7naxU)vg1`JjE(>VVcZ20i1#lFv`A3f$>+V*{e`iT)Zw&hojAB|x$DgMOm1XMwcGUat6+(WH<+}U5O%qQsT z>{kN>z#8&W0i|hw>^M0|DxCBUBEJ6-25W$h$PQ9D;Xow;e&iuYM<+4NH4Ql11}mpi zd*9AKw3w7!AqA(VeF=HedBe`#iqrC!`w{~sGM7guyt)z`uYQR z>eUjn4$YT>6~u+qA|;2@y_qEM$nYl?g{Gca9-k84_r`?ENYJI>b!cA&2M-#`Pqx3w z7Z@KOO|r((bo&YM@7>60ur7%w24BzrZvVf|Lf8#?oR$2ohJS_j@*xNABm|( zZ5$kX&nE_l{FM(?^3}$NPPz%V0C{Ww-p6c3- zeXSS<-10WUKg4oqTc#&*z$c_d4l5W*oM59N^z(HiWbJgmqxvzlg*22Dt6BkM3JFi`+CZ>5Rx+0X&a`8fNf6R60Lf2u z&+b-|NV|-PbQtKusN~Hx=WLy3qp;4xF2CGH!?8u!ZCIGQ(Ywq=9WaL8l#cAupb7H%>dX;q^$ku^N;cP5y*HkvuNfBNaq1B4bZ)10H4xidb3lLEW z8!6RmKruzaP0v#b!$Lf7QVD4)#jmeE?$uiH(9|qxHVlRpw)eieTj_Dmx$Gy7ozG5h z$)i=U{M|j>Fef@pD$C1n^MJ70<5$0$lC}_9wi1xJW zM>vlDk}N{-WSV;u*!d92vJA6ukL^;VO^f2uO)VUYNYGFoJ-T~yWOVm*q@bvCsQknU zUOcKY%>`AG zn=@Jb-YfSMr!Rgc*DqSWu4H$-HoOwlyw(_DJJd1^4^> zs!OOSZ5l3z4*D>3=}Fhf-1}me9yscVhDPc&s=-s!%UHH?SB#2AeN~|MW=tA3XmK*| zV(Z=mmvDLsk=SLK4iCVbFDVenFWk~tv|vlp1Vx0zM(NKTd1M#asP$1s1x-arhe@?& zm^{sN4!_UJ`{R~0Y6a$|&@ldiH%Pr|R7%c^iJkJ(y_6dqrT0WeR1ad^_#bQV@e1ddHSSAkDmE?Zr|gvers#%e6b`BB*{zpgAwxxh#|MnMrU5<4k|J6 zZ+*DkX1=>q?!_MRNTFkZ*8L4oy!QukH6M&E$(x>{m5PcAjG(UjFzkMSwJibkH}pcT zg9-u~EuC~9&3PDkTDjM|RLDf1V$xD0eGQrK(NUZQ2l_l=Fpp?WFD>L*UZ&WZ^xT09 zNEAJWn45a9eP)h2V*=*COMYqMOk`a8f}XR?-K( zaimBsJB{EI-MhtERbJy;7_R2MSpL3$Q`b3i&xtUO`;cw_&rO#T? zuJFj^m`i_Y&n)XacK`nMmTaIXRm$KdK^c>nSYb_#mT-}lzOLzm=)@gk?0KP&_t}K) zVNp?XUfvg$sP-`G)V&!`-=U(=s>1E*nyiY7f~JfDZQD_$abuP>kG=+_l1n;8vGlSd zr%dQWG&;Yeq^r9>DwUjE^Wj6O68{&{pGa5Jyf%*IQ-bGnh-G0~J7VG^#Xglwy zCbzcDg9U70K|!e^Akvj0(p3bcNQcltdhay>f})@xAiaj(A@mLb6zRS9BE5x34+O|; zJnuL2y|ZT4n#x~ic}Pf}XFvNc`@Vix2ydHYUmMV|^M{-P;W|KWjO3Jhje!lOUgVNN zg08BkN^1)G9Zd*o^NVC0{#1=-JcCnnepS>%19d_y)taA2bGdQbi8{7AcXRI(<&aZ@ z<0S*+`ja0mldVc>u4X#zs&w_)u6FhjC}fzgfvN^u(>(h&id|nsK>aGWfcY z%BX*O*c)t^X_;R&GFrin@Q|g!YjLcXXHoBFj^@2eqw#9#wv_Qrs?V+PUW=LYYH+&y zdWHQ=@?k_Y_Rx+-ZHn&f$L*tZURKeg!Zcc;g@8;oj#x!W_-dh9OPIju0A@sOeQ=bz zd=_(}gJ5fqh4BljN7o_4?3iq1evF8{ZGJ2mFcWC&!d{Yp>uRH;;!7c74f5U3t#Ojk zCJyKKx-6dt>As5zCj8VdbwrfCC25JopWrY|Sa2s8f9wNp$P*S9YmaDsLC8R%v+zk9 z1_+B+S2l3VdH5?NB=tvrc}Y44ueDVsi{5XLDTq>$Q|=sW^h$5Lj(sQWzF==+vM+M; zL|KR!tD#l1OKp%tUrYM8m@bfrVNxT=)KfA*GzsuV24L?6J{=oVvzF z6`1r~^rha=Jy+3Z%)llOy;?_Hh){kB6&+{31iYupB(!l=Z9K8@w`^4Ui)=+%T3ms#mYQwUv1 zQPrI8XUoYkYGMwCD^RNnWKnmg^bS+l3C!q!EmvF0#Xoh~P>AnMtmv8U2RDYhmip)S zy3++_nq3vm+~6(sq=u9ls`gJTzBsGtNHsMoety1aOngML%gIu2gDXwF{_HQ;%!B=9 z8s%r4oGf_-IV4v}Z(P5ww$d!th+)1tCE~hwMY_Ky5r~iPAUiwQCLU~$ZST#`545%Y z8Pz+^o3`a*<(#fFS#jceA*$uP3k|?Z)ct=mVeT>-e*zyPq;H=m35V zc#x*=fy)euSa|y;x0quuv!#;@h1KSR*3>M+-d%j*>u_*2(&L0`K|Knw7G-ER_$MoV zVSR5ac!Scg*XS-k&BX7wRs}bRq}%~5ms+j6O+#uqn$dHKCV27jtIs#5^QvfY(-!MX|-^$^$`8$7$tVLKQ*pGd)$9WMmA52 z8}^-Tz~3GvoWaeN5=Hx)n4op*YBMtna`K9EYR)`I_d~W&P5^nLo@cX^>k?nF87JU1 z&*YTJ(t34r1|6aS?6+rq8#GI>C1>r@zi+2_L0hHwHL^zW`*iqzqVMi?u1)HrN`MHk zJ6@{6jwZGSdABXlqTKOAdb!)u+ zt_iJGG#=IJz;nUn?GTwr+gEt;*#8h=5OOuhI)Kt{VG0%p_ z*o9e^*vTSTu>8+0X6h##f-CD5AX8^SgzQ20Lzd~&!w8hbWz#DYU{qn#m~ED1v=$t#?Xp`&EIJjJ*HhL^k5dyP}P4po+fW{ zv~_HR;ObS>;;a{O@X0nyt4j-cS5nFpgW5b)<+QXH4}oDfq-bM=VC!T3O&LNA43+w` zqOV?kz;NN&#TwQ=Vb0pUa;?tw8!r{a30lUbr*uyf0V7LNzcr^~XLKOfZD;^S?ea58 z7~SR_7H4>edTrZnRs^@#Ycv&Hrz0y-ZMh;S73B6)XV@&6VNM#YOScW2RWGwMRJ}$nSuwlQzvPd#X1SRKLnR# zxz;-nqo)_E3`^f^b=tYe2{YCm5sWj_u(4)V)?f~U@7;5#c=(u@qHN*1k(uDk_NT?= zEG+qo;Mp)0HDoestik(p2X=X4wQa{wDvwUM;2L)%vN)I~yszxa^vEQpplWAF*3YOuTF>_Y_!}M>RnQ@OSGpz8OA*azyV-@ zgYL9DDW1e$m;>eZy70X?ktnut8nAlFT7n&&I#5uFhCd-<2`?hwmkN%+W*Mc}4$^Wg zb}(#(4MHCC=3-*A6p2Shwzl=ES>fSiC{!IScFm|q7>IEDRBrkFjtWW=uw`MqXMkSj zRXz?Mi;XW(J`}u=IMy((6oV*k3oV=v&v>!C3b#(uCKC&B5ZZA>9%D_^V$kNJ9FfZU zaH$JZsFbx-{W~oIJJf}#<^7Szi!(u%trO~x9Ss5*Zdq2o8sLo2M|@&WtJ@>yJEUxt z?hKPK=~19orc&ocuui?=-i9POrq5O}w*KNTRF(Dxm(=ySMby~Z#>$frDdraiuOhu( z2PHU0S=1l7wIY(zt%bZR7Lb)%y;A|wn-j^B@7xkhH`@lD1#eC}M)klv^4NxRnu0ss zUo=m-LPL*^5WQa@Trt%l*3X?psSlwKnsg`U5!;xcy8tooCsOUk0R#X9?II zh~P*`=mgtVoIN}MD*=Fza-EI;jbm`}_|Qg?L`r!Oq`NVpk!fHHhEo0m)jazBQ{@`P z?VJ%o1>LCoo}*kek(0U`Lp%5<3I`#PX4Q8=gP}Cw`tIF&wa|VPDO&Tq)71l!_Kq7V zwjM93@bmcdgSecOwee*L@H}6|X0ox$Hmg}?m8)5z&qd(`jbN`|-R4$Sn7?bJLMT>qhWR?g2 zpd@(m&&nTM5BpRhy1MNTfVFw@#w{O_AwPx?Z5z|eI?i1qaU}lmh2=&M&77!XO1#fY zFeobDd-xu5-T;{td)lT0K}5TpcbT2(d*Hi@OXbXGM@z}CP~^<5T_GeiG^j z&xm?U+UWzgR`5cftq$ALSdPb_iwcyRst_bWCFqBO_G`$Ot!ZF5IY_mb2iP!@HRtNQ zKHW8A3U#}u$3#%7(+j=~GS_&fo3@JXJ#yNO6}o(% zQqZS*f{^FZCj*x6fB(OIi8dAa17=*+HFFBWF>#4E%yDvmwU1R#hK5JpNHYIrJSr@1 zP#D`4T|Iw^&RxLuM5X)~h ze=((ejsoUof!xW=VHb^bj{g4ZgYo8!3*Qcu2oK&6`F_Bi>ow;dG1OL-q~-ZkDE$>d z{vYX3|EKo4?tewdA_+-wgO>(hD*IavRtaI)e`h)V#fA`wX#YFQQLQrT99Mxlx!~({ za?&Y#9bg)PA@KPnHVE@}5!AJLSKe&Bb$boc=Giedq7IS1LrN0z*MRqY`w)pNgeT7! zWalB3M8dnOfwj~MMe@IxjRer##zw`!YQ249a8Ud3i7HSr13K33uh#tsT#Mf zoZX(L%b*oX5uOAX#yZFTkBjMV#Nc8c*h%I@QAb{Mc{HA$E@M;=emG8{rw-cf&6BGt zD!Lg^?!4hU_wVNa_0(Fq@}D^|*RS8?VB_fR?wqZ2SrNh%f{9qQtmAGjI%)yKn05Nh zcL-kFt}AOV;^HbChbcc7+#{!io(|-t8+BG7biaF_o}4h+h0qGH=P0~>^{PLGp;hk; zqb*SFkqi5d+z$1pGauPq%-JjCw~6O7>fjsI;iMZ&oxgLLU{zr8im8GCrjmoi6&6zE z$j3>lCX+ks&ZOC=7(>qh82>ABx$(BaSru#&D;6n>%PZ6EI@$bI#5cW7O znx&;keY>el&LX-Qr|2l}o793OCuzN48j=Sm}(E=+@*BKM@E|C)jeh~=3gEjFd@301kt0Y_~^ZWucRa-$ozcPCr_Y%CUBRbZ990{#ny#+1o#9NoO+LKF&JaZp#>2 zT(zSB-{`*aw3PQL4m0J7Qms()t$_kEf=-!%c}Mbxi^t6^l9!2yq9UVLmX`~$#*r0@ z1+t9fUGW_70f$xlb=_Hb(Xf*bKxT6AbHu{iyRzHbdElRQR^JB1I_XY;IM{kMR ztfy<+>D>XHA6~}vl3Z2>hK+U;ys!&v+LCN-fj@H6P1kEFV*rmh6onq!ahYHA_w)1I z`Msg1NAy)0!d@@YsfAV$tF{}!>v_owc9C~}6M$HVER6-Yx*qO?K+d*%;nBfKC#$$o zj%t~WQtzhaj8UCuhQGcewcSqFi^VE*)~_x|S&@((Yzp;(D71gle>#iWK5icPExfeP zEOz$8WmJ!ars1eTtnk>tAQSs~?Xxpt$*FxOgHB2N-Ccf?gkYD}jmefS)5BgV! z-uU2WX?{{~K0Vm;3mX`?NE{-3_!AB$waN%}Ac3C71vQ56bqX~!+o|ejjw{Xdc}L@= zZpa>uis9!yt7|d#2^1VOfd%yvR=!0>qxG^BU7^E#9s^Y_RL|J}C;L~iufxK;CJ%G7 zq*Qwo*;;HK#O`D@oNL%aTEz7yU@k!phc@J!n$FpSrDpGfgmqP*>uW3Lc=NIyk=;LM zFiZ_VQz33PHHj}__!~~zWBQxmhyKgaNGPD53dpJfF#C6Z{;6YdO5;=|4Snrd2tV1s z2^xF@h@q^?lOSq7okFYKk`-52lV;X~+qcgK0^yO2EYnAqgJZ#AOjwi$Z@*IL4!`B% z)1$-4(HZ5Hw;hpTwZP_SeUprgh6%oKCNSTtAX0h~&*5%TE_T$4Hxu^qeBZIS&2211 zF$i5;5sMRo#qFky2touC2(k5;S%(b{*QFMj;dcNwbxwZZRBHNkDp_% z7m65yXFN)GQ|hXBDDK|PzHH#JPmu_dQIB@=0XUf*=E)fVgE=Z*VAf^kGa0A?9NTOc zsiQY-zb~Tn4zscnmCT$ru~)A)21hm&S(IbW) zAp-nr3SQ-9hy*|{0F>{5pq$HN27M^qUwXpqw?d@lJ-fMMWM{3!?!`xbXM8x2$-oqMZxaLCdEE0IL z$!?ZH{G#Az+*Y+pAX`|yp4X`jLJz+2PPY8*h#-FfEr4n2=;_h(sH>_zQqylOv7Ta; z^#YUG;aS{Fy|V4c_|tWIk4VfEbQ-P?*Jh2qDRzuKsV?P=6%r?!skg$wFok`lIm2s0 zoHo-j-T+cb+$k1HIkyzu9e#zme2Z=dei)2^IqmEqE_M#IZ-1_w)wM0xfbYzSgnh#8 z%Z8<0tv#eR7cfZ+aX99cQWT3!Jo-h4e|(jr+AitC#c)81gism$#6D9_i2fHhHg`xk z>mO_^8_QvT5*|Auv{hJ;V__vi4V+`qzjDq_k2{3;T)V#L)*f~~g9K_T#_}G-p91sg9ZL3`mx>$Bf)f6@A0D%Huzg>S45kkYa$pt?v?>2>_ z;TU~Ec+_6??+QBBWU6ze^G^lL2t@_#(JD~nl?Qv_ZUPR4UB<#-Z$sF$8`4wIrsJ0> zA+{M`SD^dQaxeS6R+D^=TYH0l2sKY^T#tN&-2jO`zpjS)Jhr$XP4==~%bM^BPK-0W zj)NvPb{r0!AI&xLKEj_RUl#7B$Q$X25%oB$8!vvQ1llReL1p7MdL0k9SwuOX3o$D! z+yDBL8DOhv5$oiq%_Q*}xzJrH+84K60IcqJ-1I`tY349uwo};&cH|$R?Xt8t;LERs-si!4md1f)faG1gx{uGPSg{3XmsY(FrjI&cN_o zI^j;TuYz*a1Po_l6}9Z1(+NOzg4wZ0IO(1nH*Q4S&{5Q23@w4FB){ycQT>hu;b*%gYo}Ao=b~vBT0=gU1}g z$7^gL3*TtGmzo=-TayXfcl?%Dk}Rm{e;>8pJe9E=wHmRj+pftoDaYY(0IiIOhCGR% z1(Zw+-=*byypv!`Ij#h1e}z94BvTz_?F$hLws)D!_Sh^fEgQ5J#`bIGcVxZK&&5Lz z-)Xx(W@_n;duH*caS4yl1@3B)TC9^CiU>{|DRT=7~4!-rCyU_1~&C z?%@>(s9Db|1Rg*qh{>pl%{x%BzC^zJd;IJu$Ax7Y$uuRxX@Cl#35(ZHc6lTDshlUK z^p@MAd0c7Mr&}BZhg&qW)>w|oxB^=>j~d~7L$2QD(jDLUDNqH?%l?4}Nm-`0_vvX~(edwth z{nlunN{7>_8d0Z8MSss7MH1%?mra8 zZRTO7J@QoFFg-at;_B6NUDL5S?fg~lxFzsz_8nj!n~R-R7~wxOX>9;-jNdUo5rn1a zCRJS65c8{n%&3{>EmUx`vy&4m2gjfw@Et~oAf`>S4jHv%Ug$bZmwCWCVSXgEeG0Yf z@%hqdUKe^bH%(XMyb?9K0lzn>Rn=_3_5hsite-u&gnrISOt2^XtUq+e zPEuXIGpnGw!(pTgv?$%r5%W>Fk&WIq2Q`)zPJH%S3@*>k^G}O5ouA*OhQsAuM|=2U z(cMw9==6qk{iPRgaH9(rSuH^{+e38T9>e!`0rppT_XI9>WL9_?cat2}??KM0q)LG|eJ`iE0o z`)qk2*WvE&>FPoxy5ZIPl-Va&)yv%70%T<>t*7aibaGDR?~9o(m$gsK=VOhB*J8!| z*J|sf=zqMj2~tycJqSu)ceYwgPPUUXJ4`&SoLMvv6LD@cKsv(a=5C|(ma*?5}Br4*B8@gyO?pwW=Ja$Z%a&0vHl?jXu*eYsGiKtk=@!Xj8LS-mYj;hfaMo zas26K2eM@`?)&#lO;AcGgJ{P6*Qpfe`t#`;{OWzAMWZ+^O?~dq#a#IVp z=B>ZhZldwrRXMKff-+ezJXo77%Pq3Z<>Q`8 zTCEFM%#THZtDhbPDW@Y?dVzP+&TjH$!Rg%39~BDaO{4x7FCjUY3?r_ znP$}95fxS{+3~GgzQcykwos>BQiue$#uwJgPzJWgclJ)rt1We101QC>2DC0w(jdGt>-DOGq$V z5TxxUZQ}~i{-e6EBO#2?!KE@Mp9Zbc;_Ph3Cr=+1Z$p$11j}B=&$^QqWx6fQ$QO>8 zBRTXOlwvm`N*&`1=(a;v&a@TBoU{3b+2y>A%K=fy_PO@mKEy4bo7Z`Ot;Ro|g8lSi zw-U7udQB8WIj6nukm;TF@_=omtIL&|o%->(p}`IwhgP}cBc@+{JYhxt0EGep{h)Og zzrGQq&HRlHUFW@%m6Wt1ab?o5bi971%;i9?l_Z?j3oG^Y>h^?MpcZLtG$fgiqaN3z z%?N8_7qTmLRtM>cmjBQVGx?;1c*sM4g0hj^f&hieZ!`jqt5f5Hi+?QDT@!a_#0u04 zwDS1sQQLl2jF&PIa{A6kCv8`xxTEiE9Fu6P5}z22(*aPr$K-)7sIjY$F85q;(M6;g zU;$K~Q?stkp}4qnnMOEbVu(|aek-7JS>J2eM63$`-YmkV6Z9TrWII9Of`BmKEcas> z>bKV8e3cWokZJ-Ixk=c5cUE8r&dZ#=d3#21bwIPvqWy1g?2TKE11>YmX6B7118t|YORHO3X!H)FTjeEOoh2C}r{Dqpe zO0~fgMh(zaq?>3i&+xS8ahPM6zpR3tKMn8VUPh6ScM0fSYipkMcUXkCf~xXl1~cp0 z`EGP^d6D_xYhiAF6v4^w0Iu^;s^>KPGiJ3d{TH^e(WmYtmCve2Csrac47$}9LFh;g zvKu(2Uc5l1;7MUb5)z!;fkOKPIeD1f(g+SC?e1$Y*ugI ze&75h8!97YHauKh7H)^y|7}yLmqn>f+AHYw)nM5D8Do1_Zm9^aHyVJc**{nH^?k=- zP_oC=BCfA3y}Apg*qVFW!>J*DUqS*;o11QCw^&^fz%&lkb3qCl&`}$VDVK>aTaJo% zw0CoH6<#?tWmrEYj`L9C&V`qrzdgFz3!$P_iU1SR#527#3 zIrTO;&aBj0`rUZ&)O)JURAghLJFG^{$Q^dnV0StPtGtZGiJjqTqr_Z-(*tnB6C@MU z&XEiG3&#q&1y)PTdt!Lc@`^d5)^Fd%TsZBd@2 z`Xk&D1cx-U39pX67k!I_EQ=U7k0&i3*qvj*fUWCQmL7pe+TJZ2OD zF}RJX!?(}paRz<6F$rH?Rp~q%-myk7N24D8z=n;h6xJK+f!N^SFkT>nXwWBiegvYx z4;Y>2BR-V2tp>MyTjMWmRZPqifFoaAea2#MGd8AL>A9s}NG$K#e1raiuPbga{zVf+1Q>!ebHBRt$NGx&MgLOkv$E1txa zmk;d**Qi*GV>{jp9xZq~6ihdT-_^F&;>L%?DusrE0f!6|li1j5{PAHPF)57_O{pn5 zbFu!b%XMcY%+fPm&xhd!sd0SJAf7-hjHH+)XR%&|m=;sZn zxU|Juig-@1Fy8U~`_T0prDpPj6RPl9ojBn|(exc8n)PLfjyG*EMLIXbUt_UA&_(!D4 z$Gd?K$Kp=Ja^j8ck-bxWh!)#B#d&86wo6n901%*p+d7bp3 z`SXhF!d17bnN5hUJ2-nR;SpTPB?lThfd@25>SQyPcDtJXt`d{Z3CiUk#B@V~d)KP& zgNKs~wzCbI_fQy2LPAo-4-wL zi`z!j-3zn0IimqCFl}Gee~FR;*&g0vv2s`==)StzSy-PjC%s66!Nz;vwv%ril$THJ zPjOu)@UaW+HXU5sBSFtN{1L9IaH{WfhN8Mn)z0mt7Uqr1wfJpkXlcnQAF$v*sjI8q zi;nO*TAJXW)tu?GC*_yAd^eu#oJMxeG)J+|)&=VI&Mz%-$O0nuD}t8hoEdBH)s+yI zWS$}cLV_CPdafhhXO5P}2f$0!GFo*LiDt?FVOm02fw5V)?f&jfRgrN0m&wDHIs9sW z`KsVJ(1$iZwX7)R2l=i0n>Ks>Yp|9rR999PvdhVLT1#m}z-|BH)T_UOp=2|*f8(4( z8)@siP0M4tht*6nYbY-})BlC7_bmW*0yt?jr+AkP-v9qjrva2iJoj(t>CMa#`M&x` zGLdWp^amOol|=J@7}+s#sp*(^*!fWn7-#MvF=n}rx#z>p->#;f&Z|< zm(Vu6!|G~~sB_&#BZ)FMaJp;LSA3fuVn^`czOElQ{h@c<>#@vX{(B@Qtg3cbo5Qpx zMLe1w^bG2PT52X_&X3{}D8^&=4xY1~Gvxc}iF|(;K0iO;nyYK;N&gWDK-gCRm`{8U zdJ%#GM{A89;RtC!+wD~R|8TPQ7h?bK7uY#;CGm8!raW)PdzTOWo6GwQcwcy@oho@B zPU2xZy$ab*ix>9L%tGk3s5vIfn4wJ8+p#kkoJg0rt%36k8IjL(dLhy zbg@f1-0<)??ZKS%i1sdc!e^c26=9tE^@7mNH_LXJc|02L)G~nb*KtQAR-c}eGf^Ga zzTkXLU?m_p>!y54fG_ju^j7Nc*A;ZLohWOctZb&DNwA%*H?kGAS-fIIDb)26e~LR4 zi5S`#&f|C6VmAW%7Kh@9AysW{9PAKN8b15wE4nWQk^SYZjLdppN{y=Y8W35nt}T~B zkVUGais3d4IBa`3(0@X4*plluv-Q*Kk)8MM)?UAMWv0d@KB!B`WwXjK!{lc3mV|^| z9oMn#bcOHVCGCU1cB%1?cHd^kGneBov)+>Bu0#uyYGa^L+u9SUT(0ao>kiX@0wRamL<(}#v3Dj|nA`H6Xx(HShl07k?o^+1AC(*!r|1Py0 zKJGqM)ZOT@Fp^e1Yq@O>do}ULByNJfqnwVsdl;~g-cj!MCOkvX z7$*@PZ0}OszNh&VPP!Cip{S!{ZSeWw`AIui$f#QcO_+_Tqd+7hV1HMC&J zpd21<+MOU7SzXPQC5NDA9_4$)yDI5Cwxv5+>%8{s?;mW0ONh`HSKJtSHc;Xy@%eIB z;lqbd_Si+rA9J|X+V-}&udgn4od_WWmXA zC_qfIB7`45w*5Vy5gXg<&Sp`$Ik9%<{{4KRUvn{|SDBfGEG%*Y1_i-f7$?hf+V>SR z6SifsYfmqp#ud_945WXJi<5cTsCN7I?}(ux0Vi_#gcl-WT=2q4`L9tN)uySbsZOTd zGBq9>ozYx>?`mTM-35bek+85Z6x3qO#(8dKh0Zj&b@&jSx3u9Eyc3%!MaoNYYjJ(D zEL6a;4dECQaUIRc)jCY9b5L4Zejwwocz^9GpPO^h^;+7u7IM+Z9^SU++EoUe z8OoTc0EK#lffXv)^6ot`U84T~=mp$8sIHcj@>5n1KSK{x^X!scC?L|ie#3jWqDtp< zwLcS5NQ67mhn}4rNlIm@haq`k775(Qw7e#eqtYskvV%4i-WKTmRw@lu!%pku-=l=tAL0|c`0F>=M0->KlP~{ggmp}SbYsuRa+8p zB=n}(p}BXYTV5{61wFyU!xPTYz~&+Kz6g*zNwOlNF$WRM%n7lfjTWDR=tv%6T6tjQX@TcgDW8_`c2H2q}(~^~3frtSCQ_@XZ!H&O=(g}pufWY$d z=S)dIA}}zeDhlt1VG?y|gk0as!mV6fXJg5P`fOLf zDkO<1-KA6~$9TQ3|MDf^&+tl`<3P9eJ;)B&aQ5DNlOpkxm3GxX`0Zu_z6P8$mNm~h zRY=&)eED)E+KPddRayDxWagK!8Bb5oBvCIzOCQoV7(J9}uXdYuPI8}@Z#UE}=f)}27kZjnfP}?KP~PzZbelwW8thjGHY8LnWU<^cif}oJ?O8@8?n>zsJm+RRg2u<)I0^Pk~-> z^6qOKsFYTE9TQSmUyDn`#=MnTzs5^ua7OeQe)rlH&!p01pT-TbGwcV8c)lf~`0H2B zlr%I7NYGK4@8a!!Uw40gLR9d6PZoMO;<;OaJwOZT1S$8@Zs87fNULf(hl7yCI;IXw zGL0zQ;or#NgTH0$lM)qkpK7>JA79eI4>3wETv@E!SJSHpZp084j?;ZayMRD-#8|qH zt)3n&Nk>I!j&p@(Z>gyF$(XimZBe#oa+T4F?Qxj}gOR9BE((Q|EUb^PPZVxWNCI;B z2GKlq&3AFU-iL{(x^TI8?)Cvk>E;Zb8fTMsZnjKQ?j%w4Sc-_YE!cU!ed|h-3bA@& z1C^9asz+7-2u28|XU=epK1RQ%G%;ssgYPgRh-#hD38CBHa*AJFB>p7j*?_OM(?@c| z({Slt8!PG$&D$Jp2zk>PwY;q25x0-d7?1wvG2|B~x^L+VVr^8^@_PBk(ju%RiEyIk z!p958P;oBZ`bTVRd3iiv;@Vx%1C_I*f4J6`k+?&;u2>U!lYmcbUcF?}?@$y}(Q|X= zY(uZVu)qSjaWcjN)tuncyq1()1}j#y9{O#y4ODd zD2wlb$)C)mZbgEC(|c4ojUAPs;8X>%zYZ`ukvex*A|SvMUhzqJ{*9X|6rh;4Q@J3! zkC<1W=2h+XX?uI$E(fxcbH=Q!I3@0s{eB;6?aQTK&#qCHE*sqg;XDE$0d`T*l-$@} z{h}8u5?j?g%y;Hf6==l-6>G)Ro-fkp5f zNmlV?3X1652@MTTFBDrMAyKw?qKU{&k`RNxZ@A8Qsgb~?tz9MSpXaXTTJQfj75V$y z1d7ZL3I54*{#UY_Y$mpR_TGdYR*1!mu7`he;cDSu0s}K1Gq<;unVzx6C7kNqtgi70 z_m#6+i&NMD`^?@Gp5-hXr|~W%kyn*R+<(e%p4!1umOqjnRGfKJ+%ZfO4x!zg)(%G| z@jBG`*J^hKJ)Iz5d3T_!tUSdia`zrrf>>n4t%ViX`{at}=cAAW1d*=@Zs60ULg)}8 zZlOm)92FXmnP;6)<+`o%Gzt6y-1tum%<}z$MM>dV@}-ggEtMH{AIXoc@g;^)zu^68 zEeC}z1D*+!Rz*5g>Go}XeK>RJkbgbXJwI|RPf06}l$E2qDPCx4v|M3bErOk<~O8)-6kBnI!1pA;4j^<`JwBy&H zt2Y~H&5ck|7vAQk3-fT8tPM2lwUVmHxK?f)9H1vP3-#YcO5KD#h5P#CeHgvqJ6p%W z2~o%c3B1?A=4WPw0i?}l9G}f&E-r9WXck$1s8{lsCe_UWN=72lM{HQY})x|AuAIWkXwhi<`rQwnmsAj{Ng&ERP zo0=HhR}=;wyVh>GCKyuU-_2#udgfS!_Iy-Ps0wlhXtLM^O0z%5ku3b zPoEqXT9#KD>YY~PtDnns$XHn19N&)sISB9W1AbN>hSK;1>VKBgy@v#Tvp=(X>8N<; zteEJx*LJhqm@rS;HH(A37QdHv_!@+kWEJzouFm~P8_arVdU5Wg?gSK^+27-FJ6qE* z5$F?p!avWWyRCn(4d(M%jj|{%tLg=lv9e zA{|}Buk?5*RGge6LA%gf1OlnFoS0RB#Xt{fnaXl>PAc4o<6I&pmTaCHR`pjsOQT@d z`bk=0-al`%eaP$BAJ2c@;{5wKoG(W2>+S71AY<>AlhP>E-^Ff+BRPctK)kcuVlXo( z-#UJ1k+C4NDEm9dVuN?LT0I<}BC)$XHD?%T0=ZD&;4A1$tgPCe86iF4>mNkPH%}Yq zm3W$PG~A>A$Mkw@FiqCUZbIzxFma=mx~9@Kx16Pb$x6(9DiWun+3(RwbYx`Ucld3) z0+wVUNWESOEJ!9~WMu5a`6+Ilq!oSt*Md4PAq`u5ruQrcC0jfvRADgfAU!WJ_}S0N zhbzs2i;H&$l@?->{>)3*hG)KGWMWDZ;|g+_ED!eryLzda=Dk_I)1}VnT+^Mj%9l=} z@Z(>jMf57j0!Lj=cNh+*&#C)8Z?ccR1_j$Uyf~-H)4kFgkD8en8O7l8N(XtkkN42s zB(9r7^nClA|GM{cOd5Z*zlU$64wVw$l$dp8Y3UwCwDW3TqRqm>3fCjn z5`#19jx=r)IO7`ENqf?y+m>Pln1vBg1!+Y)cH0QVcV&yt=)xUP;;RZ;o?W=Uh3u(I z3h3veqf7c)92yYd*yKl2>%1jwv%dKK`>o7lzB(@{6>;6F&F7|SYWFNG)~Y_eVO2=v z^#-nB_XV4LqT~R6MEzv|eIXaEzmzs1q77^d1nL$|zNz{R4W30xeH6n*cU4tX=3dy|H z*h2;ph9_94qW#ld2J^(-Wv-H9Jt``)vjVKHf&CZMLZ*y1tq9aQe4)ic<#BU!vqFL} z;wbN15XtZ`NWRbHQoIxui#E0j55?l+6|^n4_a#Qkw4V$?)X@@4Bvc9P?Bof8-g0ts zyc`_e6Q&nomAg-P23vxT+_vn0FXxL{V;5RO{t2}6%7GGW5YCX0kR;)8VG)skwWqHA zPr~H+HE7iToTq|)P*^fJ_AxL}R?UW;y}rJgyz=EgH}}6Q!T(;h|IN7f&ujj>s@}5w z8e1oLppK_x0z{nFt76x_$i(Xk!=Y1E&$>c(cLl_t5#veEg*;AHK^Jbk1f+@-JxPLF zE^ppu3#hQUNB3Br)(nTf{{d=poeII--QChi;2CXpcpv95W86D(z5LchbraK{Trst{ zcm-Uk3AZniWvSEK>Tq`uIEHsjNT{A0OI^KoW#CxR#PB4@$xNX@6ZO%wM+p7pc1vC0 zb81t2j>e=(a@UHo2@qtT+c`#rZ~P376SF%of!o=oY@Ct{BSLW zz^dCckHI!X%KF4Pi_*d287pRDt)$z82h#;oh162Sk;E8RPZ(2RRoryJB>&iWk%^YV z3??u;d$s%5KqMEx{~&Wnu}O7-?vyL$ThP@k5zXNPN9Hbs_BQa&G7eP`O@% zpWD)!|NN&>B|)*Z>p!)VZc%jO(8+2x1L;>)E^p}s1qS{3GbU@*Jahw52HFR2J`wd_ zbJu?%PSxxs!X{B07c6Q=f>@PynEa1k0IfE^P=BnG$m05@CQlVq@D{JagvI#|Jj4mw zJFu{DmBmFE=}3RbmoH`In*55jVS!?HbPcs`m}l??SM-DjjZj4Vu46~pgUgrUPw~_N z#Js#i%UoLA-X}xqNJe$!39V4Z3`z?2?NozPzj?Uz*Dns8I$oY#%^-@Od#WRfN*i8( z`ual|f}%M!yVRBEL<|~zPPb@%UH19y##>rjN2~e|H(&vo%UyAi&buSgT>7kttgI{w zrjnP84ovN%lPyXDHfZ)(b8*zHhNjc4GW@K(=CXrC~xGV$Dt_7$vm=zH6 z^3w0qHlX|KHV&>gZU*ihY$HwC%q6yF;RXiDy~Fn(tg3WVEMHeKx@*)M&x31BX%hD% zt%dTLS8kAkpJSRfva5F{20!&)B zkdxob%{hDk67Bs-S>|tHGKJN<_9s!-|kJo>yv`u{400lFAwL=gV7H`~TY1a`#1l{CEM> z+CpwMQIofTf$9{5ftOd9k+%#?qvlY;3I-tgShO}|6m7jCu@8z{;bo6M{b|fRD_vB{ zBJRE@qckECRW-F3I$+39X}Nz4f(y%5#;fC00YU3O+uPS~Tr&krA=#Clz;7Z7^m)MI!IAtVvnKX2?>&XoR{<-M`%+sc}WWhBQV{QVOa@$FKjPcYB^U(g4?&$yF5O z+=M~VbV?6v?uYf zV3B6nd3`KYSv=xlYQ$(*^Yt9RkqFjdt^vO8qsI~|c$LS=Shb~D!313#x4rapJ2iY*b*AMQ8n zNZkOdqqzU!Wh2&HnKI`BlSUJ<4h7|(;b94rl{P6|@rZ6{$6UYJ^0zhXcyF(A&@Jpu zM7^ZisF~!zyPUP%ZpzCsqY-wGAYv&pv-~!&c0grQ2w?w%VFO;9x;G;zbjyE+$@2(~ zPaUF{Yp$*)4?d8M1Znt_!M7WQIVn96iN*Q@0|Ow0qU?Vpi0P(&E$;WQqgyY%FEUX! zKjuq(5FgC@z%*H5LmXFkjAo(}^?WN`Ez2DLxp@b)3-**DX=>MQlCV$q)|dH37F@(w z9IOpy#YGJ>HzI9jz|a$Gmt-Z93<%_YiF}(E?7gqpUnJXI|_179(X3PTTq%QohHtvb=hy zX|;aCa8d^~uTX8Cxp{JUu&r-qBRk8t?whQ~43k>Pgda#8Pp_hAQ@$%&@ z*aMj-6G}?zg7C9Pk)PwPU-s7-<$tPKYzgM>zDZ~n3A)XsN`=sBPg6*Y72>s^Ww*qn|t4`j%dN z-UgLs-FUT(l4?VH`|qytUGe>(gU#^<+iq5-jKrmhGRt8ZC8h2Drq)e^brfu&H7G^n zi=*F?mgUX+4>>p_9vEe|JmE#>VE08=K4BTlOLR2pIFQ6QX>~}dGV}9w3co3b&^{}6 zu;y7ONr^EV`L?FQte{ic68Ekd;YaZEZ9yj<`yzXfz+AQZnom6DNBJtuJwh@L~84xii$`8ii+2|%B3^Y!APo52NnEIv$NeLXOEZ> zBvj{#A^hTbyk12`D+A51T((uz(!5fJ!X z!Y{WbGEg5;n);2&M3t20KvgYgG5Ae@QyKA|KFU;t$%aL&-{SG=l30#|>K;kQ{sR&=RQmxqAK~D5_q^TOQt;8UwZ}~P9UL2=mpp}xsiW)o z!p+y08+qweTXoNmCjAZB>12t?8c#S&jvFH3zwq|fQBk-3zP|+uh!}+QZ4g6u3J3^D zcehBx&>*c+3Ia-ZclR(f(nAkjLw9$>@8b5k_ukLh`?uCPYn^rcM@1Z9<~!f(`n=DE}m)V92@I}ZH~66 zfCM~`#~kiv)3df<1sU7!HN1`aMqF>jzlx!?r2DUQmXqN0KyFCaA*S}@3GbLlb~O0_CUuPTSGmQP2N zmKB98vOnW{FR2MbMeKRkl%|*#>R@Y`6=%h?1U`ofo&S`P-wvpAJ0yNc4((D}mxV>D zqH^7iwDQSZW8`-t&i59fFn1|aSUWaEyyFq+IL^v+qR<@7YMOGYM%?(0&!s=+)cl-8 zwGee08w*=fWjtb;(M3^K5lpvHL`fKd(hqCh-Re}`PmvNS6q+?I^xty9K856b9$5K? z`@@z8cb^gyx1qw5k_$v3=7`sdG?lv3b%PknJ5@>2vBPX@r~4cJSn1C`^ZZcB*E$Dd zBTtauBj>%KMUTZ%oNdKA+}#3=av9^DhG&_*&23ag;n~^8G?%vt(^7lEmD@0#bo;KH zCiM?s{T6(<+}~Knqn)3dgHW>&LKjw7*_Bk6fo)__o8b$zaz!4e)#f^Nzrg36t9^BR zmzoSdLh?31U^jH@jjw;}oB$xavYd(1PZ$Hu1~RaR`i5vmDvPr0E5b@7#l=avKU7Yj zE}I@69Bnxmdz7m>J0BFzz%~kszA;_KMqbBE-93Oz{Y;vnT3xL}ElY%oWGnOkHC5$c zI^OL~wG#O4gv|IzX*h}Db2MuPA<^1EtHP~@FzsL4HWOmx{sRXG_9F#4;h~|`R`q_1 zECIBtcRm^P#3XTLR#tj{^(zq(qbpZ?Z*#||QM1A#Gse5Q8R_b>K9X81vCG66o?1Iq zTYYRe-VT(~pVg4EoK#s1H-G1qcZg0`KD*WfUu+^#5fNJ2Yu%J{!!5~*x0=U1*EpE` zV}gkDa%!v|Fj_~1g^X7=R^{i>k?LX+>3*!w%D9?HS(i6)nN8Woq?JTyC<65$eRTk5 zTYzoBs=fLSHW3Ft*b5X>7j{ETg+XgtX zMrtT$8fE+XwFWwxACsrAOsQ?WI=DDHdONpM)5qX;1RT@E#Kcw>Y*O0V;Z;JT&X4*@ z=@=*-k1R~9*y-rzL}YrX2c8@Sd3yLUp@pWrd}-XHGh=44!66gN!#xusD=v=VU@M<^ zM^lyxDe5O(Gl1^rJ!(~!{OExp#UcogbbMf>LMRzrD%w6v7yylU= z#wF$2(*FWP*Zm;+V_KMbCf4?7EDY*?vNH=cv#ePHm**`SAD~3(64bi;J?e)$>{pbP z9f)ifijxt?I)FSI(8AmfR>ZHb-1A2Y4cDD@2g45Etb_T#w!CbNt0GR8T%ae8-Riue z+Ye_Wk=s~D0x=awz?g&CV@lfkg98jwUp~KO)t#2aBmT$aIg^Ym7<`Q(#q8{HWzG#R z*f4a$5kb?i!wf|f+NtBVO=nec_9^t_&nfdWR)uBKIhmWTQs84zNyQ;}{r7CcR5?jF z^6WB^)rIGW+pqdd(&4Aa9N=`?8&4-YB4}#{yt2iHn1hfFLLQ~e@-n4&A5BTf$P-OI zd{6?h3Y63~cniDIKw=(}PZelS)VeyNYhf+07=)9#2PGCxr-vR^*LOq}prAyDu-0z1&&f+O<;daLmo~?=K zaK^$0WbQ)kQiWV6t2KRnE0;_i;&B}mr=McNWQQ~Dh_ih7EM=?y?2{ViweZj82T#mi zd}OnT8rq`>^E9eg$Lmi~+(u>EmFTCUXFF}Tw6+aMu6RHg-xXwzHsnRj*H{@ zo>l#&Ds&IwQuuMAok`$}OL>p-Cza@rhK4UNz%;$%)Ii_2bI#-0SZ$2c0+eSh9PD|W z!LE_dj4xh%VOWPWvD#K*jGQdy)^L>Q7QTa=`3Fi`TbCJHwJln832aQbdX0^6_xl`v z^^ts;lJe-&#&&Yn%6}+$97B{046U`v;}a8w;c3m2+^k@8meQ=z5`NL4nbh$swM{gL zNq^dn*XBYE!CXQxT*U)sCKtsIKPyD;L~j101$@2Z3-t9+#T+c7Am?}zj;_zPA2$9n z)CKZ5EyqNSA@Qd2=Iy&#HPB5Oe>Ri;uxAIRZ zF=QxHCb4{4uc`J{9x}BzSYPEB=Rgx?;c|I)2yPj<*~=o%^#%!4 zl+q-!i)V+Dz4!vxl7r?Ae8q2!9aj^p;4b+G((+;X;lCiYp-12_fI^+c@UYGMW&$n; z)Pi4-an~2lcGNMoHm`gUVYcLa<6-XBPQIrH5(f2CuEzlZ0R#H^CmJlzo(UsX_7c8? ziIN!_oe><}^-Gz9PF2aoF`-&r=pCf)q3If5g;Z7|Z&fPis>sW8MwQ&JFD*$>T!@y7 zcpL%b0VGnZ){zgkWPgV70CQy>JKv*%O+S&pwm1Gf;R?@$lF2@cVKeUQ2pYJ$koP>u1|+l2BowI7 ze75Y2qFD{k`1Q>Ou30g#O=~h>Z~}O zI;pu`4o07|DsIvD?Gw=TIRA3p>iX_oX=3(9uG$kGt@xn2vO%kf$nak}X2m}-u?V`-5kN{a z>{RVxN{o0+jQ5n}Ex{JhIq+0J7fb;?y2M(4mDY!t!-CBjd6M*5(pbh7n}|zqAS2({ zd5bcCwnD4U-UhxH!k8!!OvK7RWA+y(2Lu0?l;h^+*bO~LLW!R`^<=GKh7$3d+`jkx zY&?(KO$Q=CCW8L*=)M&#-x&!a5*-~)F(mrbCXjfydV50HyspiGmt6PKbii0uSGULG z*lT;bb{Rc1RFNdU!eUadiL4J}zAYa%*6yhPUR;9g_>ENfZt<_MHb<0}3+D#qaz3up z=}8<==T;`OoASo?$C}nw%D7osS?LxufYb?Mf_SR<@ctvf+E0V)osJ}%9wAL=Y1dbs zf51Y{9w08olZm$Ot0?>qY(80;D&X}ce0a!Z{pqZWdvf(SRY*w4BtA4W6keSg3Pq*a zy{g#IHc9OgU07V!tvR{u)s<&#I_$F!Em36yayISxd_%5}h zQfR*QheTccTl(YesoFM6Pq0jxsr-;((!f3nx3DJ>@Vro~3Zc+d1#W`bT$(8x8$>U__$)!D=R+&;k?Br&wO&vk6d@%aWSaMBv=-oWdBG>l56M=_^&s6{Q zb5dXFfzpydph9Yx&HyKq{w*^}3#pUeXp$+2kft5pRJt>MPE{agf&1pgJ+1iPy`RG4 zTk*BDv~tW0^z|F@L4GYO2o&8`+n-R$#NCYbAl$3_=r+^aa3G>qx{PtYWZ44~3Hsmv za<#aFZ}OSO617p{T#9v9Zhdg@oN34EF#$pFc_MIdu0;MX=HdSSivKsn_&*PH6S4b$ z|B%TQt7{K=oG+;HjCx~c^{g~aW3iTH1Bp3(Pi>l{f81d>Xa4g|-B^s{!`jKNwi0Hh z$*wToj_g0)-P?SV1|T4xLT&5nu9SYRj~fP0TnSj#oB5USa{s_fiqcA_=V z?i>RhDtkYocke_uQRTJn=Z?zKJ%2v~4W2|G!AF5sh(%3J%Ic_Kw4_Lrr)fn@L?q+0 zq1w5rOBR>u5;1+MjBOymfLS*c-X zg;;RnLr#vI(}lmk%8u?=&7@=%Q&UsQ*OUr^($W+RFJ@&Y6wjRgTQIjM^@^H$CT4M| z?kOH#HWxf9%0y!Axa|kH(`ZV38*#J!`vFfFLDZmpp$o$3dy*O z$25#DUxuXUIyfkwLbc)Y*hD*H6B7zo z=yMP$ubjH;Ej%6_I#)jx<>P+xHLCtYBc@koUn7O0FNmy9I%WOZ|?rs4( z<^xQN=?W1Eg}wfHD!XNRDM?qg?ti@`{i}#= zussE~7b_D<&jp15H}}ocaUpd51z39bYyUmJ`}aD1^Y8!uKKJ!Z2N93!F6^#<{r6iJ z#4r92QY|-+cc`~L={YKcwbdbJ%f^}e_2IgBU-Tyxa&*;(#py{OXLK^ z%s_qobK{)3zES<{PWOiT4XA9rIyxXA7kPhuMeNr;4YHq{+kDjEoI=`M-kii3_x;s;#m8+^D>!q*% zgka!2nZ5ZtvGHS27B zPs_YVvwqIpB3>^CTbuv<9OxHcPv6u~yY#~+Pkv4A*LrGL!QJrwJc1nSKY{P_@#XrC zq%Y%ap5P7q&vSos3ykKqda}<6Y@3MC?T){{uUks!gnEDe^uPGMe?Iu{m)@VB@&7+M zRsPW@+z{N7-JujM3EU2oUH0z|H}5i>V{V-Odj@I9{W-3R&fz*%kxLRqXC?dWYyt{W)WTKcD zcv!;fnd{~31n;|Qde&oM6w4=w;T&z{ca$e@Y5-}>UP;UTWU>=}qP zR>nA(tA@uS-s%P~k&xnv(u(_80ZCCvsGGJYM?91gB%V|YwR(m|)e3j(tbG#`b+ddP zcb95cBWuO{4i7pEq{=_ZRsioJh=sT#aBV!jlWc^PGo|UJkeA8T7-Ern4*p zRc%bLso>bO+!NhW(J!Z(&RvE}V0`~R4o&>&55j@U=)T)TyhdSuZ8|tkoCP6#>njuT z-9~!}9&v%h7TLBS7Wr37&qnO~vX+-hP1FJB^uji%mOS}sw&ak*I8fCsRf zj+L1X+$D3Zc8W~oGSx6!5OQt!13Z7W^YIXnCB^5sa}tQwdXJC z!&jm~84_EiuDz%^Sj+O21yyD`9~-IZ?+8x$TMA47{u>ueX-n!hWa zlIAK7tL*qy0zIzyg^FLZjzLfBb0iyWdrilI>wf~O1-1&&5$Rv_+5ofWOd-%6^jm3 z`%s)Usn)pk71aHo=jGP7Szdp8LKz`R5NZC__)d#Io-wcI)s0?>M$5>8orTP%%cs*sySFlN7 zaw}hJClw+)p0yFNSrq9dw|o|?ay^F2CcJ5Mxg;`sMv$ncro^T9R>1KownKSWmvIgP zv5{0#5|Z>;@6)>l1fF?SM@JyJKm=g))`iK`bZctmjCJ{ElE>p{SK0Rf)ef|ZZtjQI zG$4mtvAD2QWifqvV5%ZZA(7)yZ%3OzEYjcJc=sGGC?bL;@myj2Crj&K$)wvj%v`|M zo0*f#JcE0Y+Z0;NJZrIbB1tGO4^E24`St)SIFXCu)vM4o$mPn4o*3b4!~^-Qpl;Ev z>FQX8$jQkFI-U1pN=sC@xEIBa@!etK&jyE-A;fWE_5+>k_l97Ww36_?Cr$N~FdS0* z>E$H}A1ng5gF|0io3AxBBqAF?+DK-hCe#4VLF@_3InW(1e8DwIN!XH|}Q}P3Jgwy6~)Mm2PL0Ay?OGa!~rV}1e4+|#iM=(j58kI{E z6UKC)yWYoCB1=n`cYEsa%4mIf6SSUEi^KF&Nyd@s0T5zBLVPK90ATdPaaE{_eF+P6 zT-SE0o~l(P@?xK}dRLtF^QRm@z$_5SSHE`tl(|vG?yyK)*CyQZ*~#^a-0M58vE}S6{sfxWx7N6{SQrQu#MRGO!rjuNS09`~ zP7hWGy3;1s%*-~FfcJeq#TORlTGR%EWuWIPgCT&20;tm(bP2Ll!qasct)jlPDh0`= zxno_nndB5ZBZb=KsBvG!q6`_hj!!QC&61Wl?Dkz*+nDfd===0eRJ64qo*}FuJBLD~ zCzMJ$X%rfh`*PyqyWZl8cAzB@NV>5JbawjkG9q3mOL?+j z&KuAE*sq*hF|o)TevifN!idmyh1JUx<*Dx=GHV0kC$OpN@%HvS9rJD#g~!z{hgIRU zks#S?gQ^+Z9PiM`r|H&}m%J@_yK2igHjst2){ZLrH$6=vw_SyKWRHD1!+=H%i^b__ z;r1k4_|W~_q@}G*HC%aVC`XwVRAIz$>S1XCt{Qf0j74fSe{n6GfpMZ{)0LVAT2_uK zbrKMNnn@jzt^W7lzBd{z{-Q>HohixFXnZR%e?QzpS41jMfEJ`k_jCz*I|jt_;& zFF@-qU*xK2h)YT;F4?tq!4>i~*i9$XJ`h77khO;r(zTl1Zq%{bP1VF<%C7xpie~W& z@isQQUBOA#@sI4)eXnIzO6D*e&yV7jb4TP=B0&24SWsCqd#O4pBZKJi9AwTA!2{=UTANw+ zIo9ds3!rOB#CNMMnos&R1MdI&UMty!7qnebOXe);C(Gv{EHDnx6!pLSp{CQ zv3)q89_TBwhK9e_liT?oYD}FL84?o5>nZP{!>_DxwR>-n=k z32eU5PE{O^L9|!}sOGDSsngNGLM*})5_-BLLi})xuVO7J#W6VRf&v3mM?=h| z`X5*ZfY6>7I*!!Ub;1MxkB%FoLbUU1XP5HgT&=Jn5yT;;|Z-u8}cKiz)K_CA@> zXAaomAd{gbX8c%_k)Hl=&5&%Qt7$49X2eL-htetO^3R{FHJ%2(OeKdsw7I$2F?9VY z3CZul2KYWfX=!OTI48D$RWb8mYya@|tPIE8>Z*viEzL(zhjqF52sZX20g)U8xX%R& z4*1n1WJ+M@Vf$ry#OdW__WLDCXE#=FS!0J-BPA%J0E0luLipOpWCufH*wv0#Ja-yLjyqY{~)~LkgNN!`KuyA*0 zFZha#%if#+X5_dyy4mR^uj_$uvl)t?bsnNg&A{N15Kh0li9hMz-285U>Ue|812*_1?ggTR#*W zK}EGBvHk((quD7dI5&67hnJHx_WNT}>YrM9mzT$So$mwRq%DXL6nPD|CdUR9Gmra!)qhjH&!kF+`ymF?PpXUAjB$Pct56 zfD_{Z+~eD+X#jnMkFQ8n5J_?Khh(8+DA)zCt9STQsfmQk=nOf{Iy*XcTH!R6kU<;fPy0ahc&c=DK8mem#EK`CsM zhMzfkd1IbO@;k=d-&u?x-N&#cEdVZu*hKvuBXJJw!W*Tw>D;fVG*w@{bs z`{^J`%Wh7?WOX%%L(ad$k-Eanb#i9HI?$imW#W{cX}lAZ{uoGEAX>k>eC1hBL5WI9 zV?(=^>Si-VHtVNOWh-VzYG|YjIDe?`Ka!;~eMQ@ZPpwQ1fv9i2POdcXe;HuZ9TOev z=}v47)Oo_vB_u{tUdHK;{`fqV?C3pP5p?vkK`Wu}&27Qtingu`-)5!Cbru%5c&+Fm z&Z@ipV+4%08vBzbQ|Wn)Ab}FL#c+};C%UvwDJLeCDjFC?lq!va8{`@>9+OC;0c`gQ0cP+r-c;Df=uy~F)oe&>loU2+L5z;ZYp|BD}} zlgjGZ_cfmp5fx-*B@I;{gT^F$;_cO*k>f^RvO(LUt#ijxT{j~0S`YT~hXT+qU}`*p zfzJ8$YyTB$JmJVpDfJ2ot8Wb3YNYXkxJWtuwJ>oIB^(hJ%8kJ>{EJHJc^iKh1PCj2 z|MKiO+3giYinf-coL+_F;Yg%Kev!s-lAsqwXP$+{hNWdb z$dcPBYFDoCA)D1i)K?ceShXk?%h}im$INZU*={NhCEuo+=4ax0vtv2N?3jzdnj{^| zmTga9i7E+XfsNlqmve5s;Et(fiz@j%(CT7oBX09yuDb-UR7qJep*R#n_7K!A%S8ZlyqWUxJKlJ^zDUPrm=+6w* z2Uh1)b?3CIlmYvoGCh6d4`S9B7Y1sQ6a)~pemp!h)$Qo)>=z%(HfU3(r7JIU8GslY z)QXmF)Ikjm(+}4rtYQN5cl0*PbH51NqdRRX5FH~SobGF3nlR`-P77NzCgtsvfeQ?pV%n{Sv}yHV-tF@Pw2od#}|^e_!ee)lzCl-IkR zk~|}(qT9O+QrEqf6no?hU?h{Z$9jOApoO3HGIEnw5>>lDTCb|1v1hrf>3S}`__BDw zxTn_ne7GM~px@++J43Ho1+a?Ge$#uivapizxowxeD#owmn1FXA{XKMv;= zkCzzop8L}Hn^8aI2L%g|PCi^8;ba>m=XKnx4sr6hiUbjD`?0k*0Kvks$8EEBu%W&b zmJgT#0kIQcQO3u|k|7mPamjSjh$-*(-Pu7h1q-bMTnav8oafF=oyyaEP|1`E;B{Dv z3wENoP1C)PT%^S!=)rh|k(`&eUa&cs5E22iqUw!e4z7hq&fPheJ-~b2YrK>08P^{0lP!q<&Mpv`aO`L(*CKFetR`!!uJWC+`197hb73B|d0rOTi z5Zi6!@p?ouDs~Dc&jfDE@wv`Y`VE7ou;1>ddwB8BRcKYTYw-^psNRW6$FW(Cu>`og zYKgoPDJdzT_Pl{Tg1&D>M1)S&M;qQT4qTedG*mpVm43@dIyB_wI84BE>oxDmj9|$spxd&enKlyaUChtlfb_q!I#~^HVo>UV?n(ba&=@{7ula;>(L* z%wNJY1hPgy=ZBEcZC_ul)RNP#LeJ0s$Ao&Q%-1xR402T-2csC~s)dvACZD=TO7qK3 zV~wllu`ppFA(i~HAHlLSTM9CuJv#SMf|S+MfmOicto>$t{_hA7fgLL4+!udCK*CQ8 zSCX?nb?ql@$q66fsmldTY{fI`F6OIOC!F%#(>j`%uQ%`9Izcp$NIHSXOM38H8bAPE{{9LYjs~Ge ze`itvQ{;#0nC>;o?>~A*uhBry$PG+!oCd9f=3g4WdC;a0milF6v@$a?qI-~nRd%Dg z54i7@zs*do-W!7D%nQdjT2>GGZ&H_`XqNhvT$;~t z_+pKvUufV*UD@61NlK8Y2g0H`5deh*z!lFHJyM~~OrBI{401UF{4bc_ya_q2l{ao& z>SpMgHU-xU$ShZra~%i=8w16t!3qoZc0{DI;~x0pw>-!zd3+MTX#OE!-MWPUypWrZ z|8HSW{(Rz1*VtF1NEh^0;1}j)o=%^pC=Y=)IpOOm%wPDLhl;!y5;k^os|m zY`}F{il=gStcDuL_LHfZ6}L}s-`PxT-}(7WN36R$b0}A}a0$yl5MyLeF7r3Ml&X{7 zho58E+%(MJzr?Q%mGy01DK)9@@>~K0QMKi(4o0baQ}4ST59iH-74?PjJh~h|upe*yA-gL$M%p%yAl{8`1-!fxsy z>ZX5{o^U0X1OIfzwjZf<82_R7o`;7=h7l2mg^4MA0pJuizx4eyC)h>|UK6 z!p~38J3f||Io~o|>Ke>n#&6GHiCSp)h+ln}9KJxASxag?7HQNYjm!+j=j33a`&9Y; ziRKlSE+&t{`V6NV-qXO@-zbayB6S08WCduY0CO^Og5 z&R*WvC9ikJ!jFsvtIGdW{iYi+f-fTV(a#oXz)Ku(XO%&lXL)(i^Rzv4m;C{yZ2au}d?D{Uzcmq&cW&Si`XAlHdF4=A+Ulv6XeS!>L;el! zB;LW#FpnFdnS|X@2+XdS(CqV6qz`hWu~A>~Z9}>3At|_P3|7 z6B2aTmXlptW8+}Mg}U1dHnPAWqgBmYrKIBYxKOJI9NJ3BN@p6pgU2v5Gi$rZ!An< z8<-f6)Jjg)eJIl@HaW+2;0wZmkj!So;M0>e%jpUqBHg`elaE|K^3ygb*fU-~rEmnn zz4hd*_F=_V)5KWXA-O%v^l%Cv>iwne3?sHCg9N`S`>iex^8wMN_7_e$2m7^s+B!j+ zn~a9k+b#<`x1Z?G?mo)|QbR;Rtel<1nU6M3S_|C5Aww`{vfk+!K;c z;|l;Wm3@;~&dcQdI4re4w4Mh7#3EiW=rq4)BQGZ>Op6s0^6I|}-=M}lQ6Vj9Q*0Zq z+zqn1c9-MI>-m!ViCV+ZLmFD$Z99wBa1QT^_u0lcsBF>bz>RVE{ttCKQykn2`R9a$ zhWvIiwBJ<*GNe+9K?%6M-ED2*qik|{baeI*VhC44{u109$pk#4&@d}>m+Le3B~-w9 z>R+>>9te1*0=Uj}wdb`&Lpg0^Avl}I+8{N>06hK8849ZlX}1_(zYZe?)1fb4G=v^* z5sl`=d)M+weAz~Ek_!W|ti}UQ&F$Z_wXwBSAhJ25}rU0NFYSf)n*mW`2%2LSvl7$`MtzifqeM51yR{(UT zU5^qG5)cb}9vt-0VWM`wPw*JHPb}aau)}#XlHEc$iNF7r`8u=6>pwKt@i46$FoLK{ z>k9KT)dH=FLQnGj5_@bP!l}h-u&a`6MKZolf}ezhKb2HWOze3`zEcq_^ruPrAku83 zvSZK}J$vs$#Huz~_yoY?IKl|_cJ~=!&lVP{lxhwmYhB?vmyWwBg|ke2G;#_49|ljn z-(?s9ZbdTgq>DMPVkwf|*3K@yA$7*#cBB)4Nre=ggOj?Au`Uy0rX9*NusbLujt9l)*u-cukqMxuqqJgrkz2 zD=Nx96!yi4G0?mDT?MVT2$iUklD$=ap_3u79Yu?)FA7K*fDr!lS?H(CbTV?D$@@54 znV&BZL*~l)&*QrqUyNi*$G)q!>3h3bcUcC;_{w5(eve8=dXp|{#SAt|HtbrmtE+iG z7b(+Qvc~gAma$`@W2OW6dC+olYefi$8@m)-v@QX9Qa}- z&Bkh@=*f_rf=UYG-i?GxgotZvd#7-%3c4mV@gK9c^wwBDSzq(>zMs8J6_ah1jS?cy z(7??dD9HG%t{^lw3CB`qPepkr_@~EXMKa#MhmOw64K35DZ*}NJDJ8rHlk<1KwilQx za98F}uqq^D3mBYk-xfqabJ_UoP$i3+HeSH<7YraS`b}6B?~56SK1qH0G*n4BtWtgu zuCj{L63jn!bBoVIfB4oixhSw;BJ1sH*q^XS`a>q{EmUc6?IR9m4mt=!aq-mqMUW>4 zy-WMEvJL=_taG~(DlXQu6O3WXeaPEXIeNonk#8ItvIKh++o>ub7t8!Z4rb9VVtdhL!)oea9;6`K_%&KKHlR@1XC zmoCr4BQ*+=B+b~_hjw-zIMN-8<$>W285J#?SS*XXFCkIc7;Y-IISQ{1|Cn3oq#K!h z@#1_icS=+Y6twIio*842=^qjZx1qT9nj)9e((92Qj{?&dpVIX8CmSerKXm;sk~8vD z^n0UXTQJR`lH1;bc#DHMq@M-kqO|}tgAr(s%@Gi>_@kZVl$75?xq^!^^1(Qk<*3K; zt{fvOy1qa=nDR6LLqOH7{>Zv=p}UwpQP8fw>{OB z-r4v6hToq&CJJUsRf{C8z7gg>9dFgJ$y3hi4zgC=w;f$9C;l9H9Se9s9GR4bWtH}1W%1X6L5iFYb zWfpbjA)Nnc0jA|{rmAp;63g+yLS2_&uc$0);#+o`5c{x*h>}umS#s#3d`-!ES5=`# zdbEcY-LDepZaVv*dn_c>M9p|`y1xv#K1yTB?yGk_7HunV@c@(L^h7%)R}J&C^pA&L zU%#&Yjy%OUM995a@?6~mX}YSayMfZ8{ggWu5SS}mE`kylANuQR0fYBFaa3d?BgL3M zX_`fBC;sx`aD`T(AU9t)`=`o2}- z9g54j5A)z8!M#ko)JsJdN(*~BSTr4G!u+#Pdk6G9OXU{r4cE8et zz;!A$=b7jRdi7yys}%LIJ#+Wu{LC!qD(n6r@mSh$&S1f9=HZ4Wxo!MP)fs$Ms@F(@ zSTDgbP#n3R|AzFqre*{jHDxuL^nxN0eyh?@a#uojX)PFSq`Enbl(!gD^EgxIWBubo z#~hHo%2TVeA6h%qB6yhIo!#k+392*QaeQD>>a~6)yfq4#QjQceMDB%wf!Ls})a~&L znEWka=nbb*f%2nL@+Q?4SSJ0ns`ANvwD}Rrtf7DZ05@mVQa_&Hs~qRU`L&|JSMej2>S-K z7T2RHU5v`s!O=f*f7S^Kg1@PTYS+?`U|AMn@Y%xs0ydf2_t#$Ool~m)hur@GlOFUa zQGq~)31dq02-Gfs_9pPHPvsKqt2%7-eQ~)BTKPuD^+n%`4$p?pC$+|k?UTSs6m>52 z?Fd^8Cs|&v#F{>K&YhE{?Zyq ztawzHGqhgNw+Ti{wr6VxK;PrGT~H&>M=g$@oSt>Z@~)@!UQZdy4RvT;7XP#u@~4GG zM5I_aD$|Odj*4Q}IVK~;hfXHw8$s`hhK6RteH*Vk##Cln*PNJlnq~`ToLFHwnk5f+ z@n3+jyBu%vflX9Yy}u*-ahIhCPn8$g`!o;UYC%R5$`W)XHVr9Vr~mb*ASbUR_cJ1* zZbkdb<7Z8c8w4T_m5W&xGz7{k*j1X}bW*+rC)R(~HpOr0cOVsHjmZMgkTH$R;gyu^1yz zP(#E%EM}C14iEI0%O+;@%u9#6?C+(M7|a9f)^g0A7DyUf-A#mq(ci^6wJR)Ax^Na3 zX$o$|7UZ2|Ul~meRv#}hmW`ThH(xveJt6>8{E+x7LBOg9zzLy~-;&G0?)cS$%Zhxj zfdCsPPOz8LRvL8tW3ToW?cqlM!Nl~^pLFuABW9V++e#~+`r9HAw^a**2n|GkJq?Fw zcXV6&gs11k>|LM*m?s>jG#6(0@`&U}jV0!!e0y2Y8Z4}O@E3ic(=`~=0a_rA+m$RZ zr4%|uBRPTnD56u9!+iKhh~HucpTpV4)cG;!XbjxYHF7~B(z(xIdVj+Lp|iKY4@QWU z`FR3dlCC<{?-d#abZ10{MrIZtM~n1@Zy-!Mg2}Gw#t&#At19mN{CtD<E$$?w0^Z{J|85oQ9gFXgUC|Gtx%43}mVS5d-Jb#?T14MB6tR)+T-Q4c=K31LNKp z{o>}mNoOmRdVhbKVmfF|vE97+1HOGjNApqAN&$tw3CEH##*%2F0XbFnME>wg7X{~& z2dSe`m9~~y!2l2A0pgN)Rh^1Iw41oCz`112*7L2?GUsdcxKd-#)iGfk!~({Ma8so* zHP=;S!OBCT_M^0ioXm65l)&B0LX!InxFbMA3KTmvlV&+XV$W?6gM_qs5hC8`yX+P} ze8ra1)mmZU;aCCwA&Lqp@FJM9A{O!S z@S#(4?`EG-*y=9TY2DQ4B|*Qbq|xy*TrwRJ(^s@p5nh{c40_B~s5*x-Sn6}%moP&~ zf<#_Bp-LZXQKQyWzhL-a1T1(PUDI5GjP={>RX{BD2#Xau-_;js}wm_A}KAD0~HHm29%x}Irt&wmX9E69`n)V9o? zxcyy*%l-V@s&~=up;cH-2#Ia}Nwt5})mWNY0G&Pwpd(YXP|SkdG2bk3RJvn0s;#fC zBZvv{_@>-A@+Y#NC0Jl$aHnf7&924k?w3J#UD?1 z=l!gjn*m{X$&v%m*uzyKfNGw06$9GW{r${GN3kXZ{p$UdHqTt!q%BH2BY};(y*{JI z>DIgwOg=rJ1}HI@-X@okY6W`RS;jWOHBZNj(S4f;7<5<$+{Q&?4?S`5T3cE*^R+ag z%8*pz=eSx0A;bE!Dd}J=v6}wjdRf&lHQ$ipqnmi!(SBU2?Iqm;kPuXm7<$JM&)F}WIDd7935f8K@t z<=#jJv`SZ!k2D~8TMf4L7ST`BfW?q06DxnPlwaIm1Sb0awRGb&*H0u%@ovApZ4MxG zG;Sb-KQ-u@+WJFQ9Nszjkm5Qu1uExxZ{N~Nbw6DXu|=O5Dkf{yeu0LMw=BA>maFnq z?2)V7isY2C&F*(A=OZd`wO(QFK zQK-HAFFg6l`29d2u3zDY3B)lQ&=_J}ivVzM%&YLsIA;|VX>um?&$=IW{<5rKa_pkM zE%-$*p?>*BfUkdiNAI(4q33lS=Q9JM{e4~#^t$2$L1}BCPkhTH*cMK{C5JVfuN@x~ z7xvtElmmjd~4^t0T>()|6X}+{w_y$NAKqM|JIH8 z^TGd(Bz&?8;mSI|g91oplcw{3#@!psZ+R|l6A(Wu$WE5=0qp-Wev3s=x2GBSFBOaW znEw#u%Wy$svnJJrng;3dUgF#Ce(hUxWgCrTd?8+^%6mG8nWjM44<}xn-TG62WU@kS zvs2F(0j6jShKc$j-TN(9OoAj#nqHCLqn_EPtZds4? z^4qufnz0Vy=qUp8Aa7d7@3D_h2WXtG1|u?&4GnrzFVNd+WVpD;Kt@hE?myw_h#}tp zPD%G4P)N&3PUi6J580j1tT3Y}HcK~b;Q)PpP!bbuH8LO8fQ5%oZOwHBn*BplADWD0 zqz46~TDJG9+YOCP`%7KJAexT;wHqw}Ra0JEN)9?*n;J>+`Q-&Yf1%&}Kr>EXZ#_2) zPD}e(s6*sPOiF#p)%CXUtQFAZv;ZSXA;zZo3CJLT#Crxp-slxX5Wz88*?82G|LH~Y zk`fu~_zz^JMJ@1VmwOV@lyd5)(Eym(f}+I=0C(7Ofzk;y)IyJbKo$k`QGWNBAw}_D zA-Vs;F~w0Wa(J@PyR9E>f+f(-&aQKa7@HLkbtmEGIP~M4>&^KS9T~6uBL5AiUS?cY z#D+hBG2;?yB4BX~(XmYUd>7u#q5`ubWC<9}a z>g^F`5`Qa-a_v*vbrZI^LsNLl4M&fCLfXNJftBQJjYVlEx$#TBY>l_kQZ+oZ#Hx&^PnWzY@ReYiHcVF$qm>mGvMF6=KWYKEe zFS6XOQjSr4)jWq)uq8kz~gxF zkrCSgY#wvW5RV?kW-T^j%rol3g~XL;&QH#=bF&rF;-jM86_?%UBL~~x^Q!HLy#SD%^iRtBB+Qd0lTrOx`1JbsS4R)G zhRly@e6+k!?&axeX$QV5Y|wFUg@Kv@%zy{mHd7wwG6)eX@_(+5hfISZK;LX>Y3@nj zlU)SjH37G>?^_V1_;aQpcWO>ueAG(@{aO4~*@Pl5KmY`lV@dIf6k9i;uT?Sr5h~j! z&1voJ)P{KJ;GXpDyT7lG7;+S}t8S`QYVqL@9 z;rgT|EFFFfwM1N!@fRgxV&SX(IU1v$5MY%gsTuNh>#qQ1l7r2X;)Ni$4yH7%WoEX4oDCs!^nqg^dRW21-g*K^Pc#KDN(HIE75txl0<@>DC<_ z9DMLnJ2K$6V-WEQ+YkG7$^!#^R8#4wnB*~r3bhO?Jr+}cZl6Uk7l)hgNJ78J^tP|` z72o9?EmrgcdnLt{bCO!AMX?tM(osq>ivVx$)B;aW&*K_)+uUs! zSaJ#K{{B=PxWe6~9ypD`E>$+&VOh4HgUs0(#*&w7aVnc_^|>9Y0y>9b>J8Aawn+B# zdXGCI!#i2zRA68eJB;j@Ihdpr6-S`OzJp1ooUCwNnP&V>nwX7L#HsoB zBFUsCvDLv+aSNHD?}D%+VA3wlDVH$6^|Imn_o3!tdGY2SZ)kx&?9Qf3S1E#yuC%8vXsqk^4VOtk0W+p!NIGYR}t=d%E3n#gL*TL6gy_t=8NF zHLS^KFb6-|yf9VtDN)i86Cr1f8W3HwlZO_6fVj{#^li=`We?x%ogVK25g9&hIs*B< zM!&P^u;38;ujpHw;SHx@z&sMCC@KIa^x~~}!fs-Di*rWS>YHvjnjE1A3l8XK7f2)+DDaC~*T0u=d+AMpQ$;pW%R`QK>tpWD^d)rAZQ z3kjKN{$1YR%pFV-4ij1#Eir5j!T1Yb|Ft%@qQb5c+s7v>Bg51c?Ju*=2PYN| zj+*Wy0jS!(vfEA1%aZ^cF#vqP{Vmg33}?E(pVj$ww1*6fYN?qh|3j1b|A$w>eFW5C zi;&}x35O4nYxUY4(Uq!ZN7op%-zC+}8CXvm!r2r%3vqE#SM_MjtjzDH5ifTkISF%M zW>HgfqWEFCRsfWV6hpuXG&D9q<)j9~DJg)EV|d803a-j*-T}E2`-Vz@shOLvN^S;1 zSw;bb?Vz`|g5HgBS0^;srnk{b1Hi5#3XNsZ2s{BoK^n%D_OY?C;eBZQN3mIl<|ib; zF}9FiW_I=|1W|t}1TGzlUl=XCBv2DBXvez)tD3dlq5t3o=-M;N&bj%7McgKwTiDnD z5dzduOB^?UI(K(7yW{%r?$s7)`Gv&4);)!l64q%>X$d_eo`9>7Q4XlI4D7QfB4Je2 z&L5yw*he(oZ-zrg}XB437V07n6;f_)Wo~Xp>YeTF^6l0t`Fqpq21smi1TgPSd~o39#r%B;ucRQc zDWK|D6Z}5Qc*nNA*y()h>ZmFNP&=&H5oMAv3!wk?FWroDhYM$OgtY4R_V`c%I69Qx z7T8SvCbi2NO!CXQQ*ScQhXn^ad_FG7WN|`n6LX#yi{M4T?ChbzNKuAop2@(@s@@2! zYxU~+J%qx3={PQ(%fg#q&kNd~-t7HgC9*&0XJQ~gJ|z_pt06^XdUFdrz*}0mlOmH{ zk1`6brOhr+J+1WxC*9pe$yM{Jf8WRYi#Sb}cU_R?Kr?Sc--licY^Z*f!#|ueTtLZh z6TI3ytGMPfGk-OOT&C;lC6l#r5|Ua!6Zgn+~!<&hWB6Ga-8)fw|p1nMrZUf|4J zLew5e_=$CO*-Fs>ODK%hu5Lq=+qK*M{$!l>{?|)l?U^wW+h?@MO^LoP5u|IqH z6F&5-KmU^v{>OY;MrLN$3HZ-aMI(OiDKDLHUa%m21<|8i>irctvG3$0KEjhiPFV zo|&1Z3&+fwMjUKF9sBE{aiEyr1jKn^Q5rOL@XA>H?n@~}$Iz&iPtRGpP#_#m`}$>I z!YLWgW?FYBw4(c*it0)??XSn~yLR#SpOL18`#)?_>a8daPE2(1%Eyq$#K2GxWrvk$ z=dbU()OYEE05DtQu(Y&P3}6tnmETW551sa#%j6Hb+@N}Q+{N1jKhUj~#uWJY$|HYY zBtAsKMWXiee?XD`)Tow|kcj`+_du9(v(v=FET@PAs2cV)2jVNRbH11Y!j~RE0MglE z<)f{3e8P;&AQ3fBOFQZJ_iGRTlNjE<>StQcTo=N}-`B|xEswAMpJXEc>zgbg^h;iW zh^Sa%C#)0b)BK|%{L^a?Uo~r|Ncgc=K!?I;H1>ev0XqF3Rm+_+mEY;ps)k+=5>A45 zYmg_WrP=b`8QOcmxI>xezJ{Kg3-^I%S3HosO+CDh!5x=`auIpFQQ((h=DGf7$(PK` zd)TH3=*18a*yH1`mf^;-PC=iw4Xq=BeP=m@;?6+xjKD>$KlH+s!s9Tu;`vEpM+mPM zBN=0%ka!0)0@6Zd^^c6#I6Kckq7 zv!JTGxzl^%(9wH&E<3^a8iICl^c(uR)p&;^KE>R>@8z|n7ZC}l@?RJkb9|cu@HF%b z*ZZ?h;(z`*pKG^!*gb51U%w|%J)FJL`b~)*qiIi(udfISMHeo^^B1f~Fr05It(VE+ zg5B;J|H&N14LyBhE32W>$$G<$Gh1_QJX}Y#{*RHUR?B_lw4AwcjsQ*Dbbh{aZFQ-q zJK7L{U8w2Y16=veeT6DY+oqG3zf0_8wkvWl>S_(WXwu|YCz-dCT94_-D@z%?s`~KbMvo81W35w&B(09ZCNFOl6!43n>!*GQ=f?y2BqVO%QYw zQJ_Kq{4DxD%gPt#v2t?(kUP{UF<-rUs_z^Ux5H=b4H$egR|aNlYi3=+=B`bX9J7gN zh0Zu_>BIJ5d~&&zrmSgj{_NX8mle`Osfst)_r1J54T>g%Ki#FBtgZ~1yC>dxwO+vY zY}?QaM$$SZ*rdt^`Kv--8ChMn$7ca#$INT}DItFe+-v6+vHiX&NeXZ#>=%R3;-BA~ zYP2dD0Ldvpw52{)nYxO;m+3p)l7=N^VZoP!_eu36^YQ?<-Dw}428W46gt`GEBeprE???evnw|~bF^SX6SL?`|}3!qKGA#cU9V*eCq38$08 zA~R>zmE?Xf_G+GXBdzj(!RZ{x*BYu|;#!0q`EXfeSd)P|=7l^E%F{1rQ!9yQkP0ap znT+8ltzW> z=~J_>8fp$A$+eSiKyjkee40~pL-5Wam+nGL6ieQYIh zItr*3vnlI%^sc99`r)xf7Wgylv`0N6zo}4hM@d*;S9fHTO8ROBtJA1qUAM1H~79Q)sZ~F%~iJ?(L23m&;dPrQrNbkr>Re5pfrg zCm{ffvsxRoZTwRH?a7ntPFVc>{1Khey+VooMdU%@k+vWtv&0pN;;2+TJpx(KS+A`e zC)1NB-NUx}%E~8Tqh)OeJBqYyf}JEChT|DOo7HNK^*IOMxIB%Ttc1j$@*irj%oo~N z5!(;e`qxHFx=KH=z991vj)OyhLPNRSg6%zyCK6}>*muhdLfZ4lTQc{?n$-wipTgIY zM+_#fZFsLK5yX#k((mAA-;61>JK`x9O>G3!%hvie)+q?z9wAl#tVM@6`=%1?kIpZl zS<2qLxfMJcyc~tr-9KD<{vlz@)7RG*Vn5feU(3=H{Jb+Oh`C>Bud`3^T&DBo4!rcM zFJ#`NyM-+zfE(auQ0n}A&3inyp;5s%MT&a5j8|!mY|j!)C%T?sjpiBN_PgzH z(lSZXGU0H{!yGJE)YBrxr=a=Gg&2Z;(sIkg$y*0X%$k~`65Hk{AIW#$>4OKeP_f)@ z8_S%Wyjc`I<#PxCXaJxG>__x|dJCW$osF?nF$ditcxlpHFqbuu!%X)gd1V`Nthi{* zeqLTm#fc1j{0UfdSBE=aw1)IyPRW<}r8sB#TD;k`Ol{;3c%f3Q*Raeu0JaM)eX{$C zZ)JvZoph740o|M+tgP(f?fn96zegfXgvu>gWU0FAZ|7wZdf`GFEfqyO@jzCSMbO54 z{-mEesnD|mFRqr+jmcUzB6f}4a4)R)`zw=ak(J_<{Yf6`z-}=z`T6y7Lc%+edI5IF z==JI8SMg4q!dbEwk7fFU{m{@NdeHCxWyCbF*BdAn)^&&tG-GCAu?&tNR}$~e{Sf~Z z+J?hiBYtpLuhkyTVY&UCQU441faVILeFjpkVtZX>&URI(^KA#5;K8|JD3!|DVz)+) z*$j%l5GRlao!?n2^i#yX!Iq>5XU7bdWt5iMxG3`*#4z5whiSVJ7;h|k5s{=8&2jH3 z?91ZD$4v2Bq>%7F)as#bD2OjQvK@HuMYY_lH!8L-W=0Xx+e`1llOrC*~Y$Y^~8KI<{1yeO5JWINBn0b;K`NFctHyvT|GV zJJ(}pS4bN`!k^cEbVQ42EyydV*1ZK$RCL9aduaRX<PQGB9fP zgt@uXsa;E&MM=d<;+bG~SduG!Hn!#E+jyz+n-wP2dnhfu-TSJW`*chX8;jFoUi(2S zN_VBe+{{1jC7*q#VJ@4d7CIY{wg`jng${#OY{pm z9x#~IA$}tHaQ_)ecQgbHD_gBKgm|bhmMN!3q_Ie!^+mJ44z5aBf50SZ@M4UNjO-&@ z(i;m4k><+4=;-K=-=F13!In{P2owRgN;yZNz$1fbe4&{(39w^uVE0s*hRpY-aUhPq z^a!BX1l*4z&9!+dTbN{JG`T&^$3(2Co0r1d3L~%9Vq4h$uF+6b(b!a5j{4i~+!v4G z@Ijs+KOC!01ZAGc9N1Iq$X6GcbSLx?GiR%0{VuUHtro`QKpDPJdhI6 zwM8n)K-{PNDW`n+TTzk61&SQ3cne|r=Z8vHp6{I@j-ah6q%6a*vm~8!S;f|8r^;~A zcHg{2LRl*CU>RG9hJtGRE**xX)u(&bG)mEfN}~nhOo3;J;vBW}vv_jr@FDR&zXz#T z06zEhX(HAY$=J{=Umw3g329hki`|_2k&cJ8Rb#W2Xl*PCvyH>U+&h<~-*h&~PmUw* zXkwHaS*fd8^Wsjz>CH1zQbN|UT3}Eaw1Ndh!p;wM?GgT}qF|`|yN$`P)Yo`SM`vd) zC}lq34H-hn{p6th%hH-FZG)zu>=bb+A6Mpx^c3fWvU)B$Qgoah%?C ztB6z}+<(4N&aN>KoHVc^f9ZJgtYKN1I0X~R)k^*JIaN(QS7cHPFf)L;m!mgPRo>8( zYy7y?_A?QU+?f&y2}$Vb^mXabsPWqKOM8#UDiHSY_=Fr)ghub*_D7Suv{SEar|ZQU z+~MBSPzXL|SKfdB-Q~Jk9C>{8>}=W8aD$*5CdVZk0rNE{R$WWhGnQwB zs~GQv?(A0LOvVz$$A%q#et9lfDp#<%BN#tZtplDDg)zxo{!ItDJptXOGJUpT6MPOiyjA@ z>W`G@D=m=;ZIl^|<_`~de=pmmYyGmIfJK#|zdPr*Mb_F9%&~0yD^D1T{-CQ?`D6W2 zLM85Gwf$uJx53ALiQgMFn|UgzQmgK&JT2VAvKh=(8@K+%{ko(ppJ!<;HTY^9Vh_3r zEc^)=cv^jT=PJgnHpU7EPhrKM<6e*}pL_iU=Tl}_L4knxj74x1ybXxlS z2$@M(h}{s!l0EHFh$1^mi?9HHB`&F8k>KR2@MPrX~1!nqy;ASw-jd$zJ&?1d-X~b zIShvM?xgD}gv91sP{HCc^lqHYdV|Wy$kk_xCAaUOB?qnb-4svV6_i(7N3PWxOn=-` ztY*~iRQXYD>}%F>5qI49TAc7o8^-jXF(l_wHLq5=`#qFp)gHMEdGw}$I2roR!vb2B zJ&lM0kI?{vEtv3*L;Ghq$lF4GasO=mcy9m?*1K4b?wQU0$mh@$j~aY*`f#^@8L_AM z3AS77G`_U2a&a`y&cE4AcsMun8LM5S?xBp|GB|i}kJ;A7COB(_0E&Xc9;0yK8oMa` zop4{geS#y9MS1BGS=LJpSuWhx)lVv_G%PJp@}2(F0vthbYNhI)Qe;PL<@0xSFZYe> zC2HOjuZprjW_haXop>c0dI^(0P&Glp?DHGrK1t5E)$`mn_u#42`;c&pUd`52xMRSH zj<+xp-c!8<95NCze-6HD*w);uVK1@;(=>S44W=!iroT+jH`C~^Hm?ystPH80RL|6W^L zJenb!Lk$c`ugHETwAdeP)c$D3W!I9aD|MhHcJ#QzoVpj_dGe48P~i!WgQg>9gJrz6 zg<94twGPnMysx8%0qFyOb7+!Bvb(8MjaTM9;0#uClFD@At(GS59&Jw5@8#tI^sP|f zQ^9njyZd0vx+t*{6I)BGb<|5u){Wj;#^C5^7@D&nma(i%v8HUcSJUaWX`!&;_nfK1 zq&q4r87r}28i~jBQj(wU>C^4LrNVtYgP~GN!=Xi90X^`;kHx7=$x658nMby|y+eB&EI{jSKMfkV@I_kOzmP|D)ZZ*8Q2EI6AQ0n?!@NLQ=`c zMPqtzxk#I+W@~@M+zg|HgPta%{O*-6@&TpfRmi8LMSOK*9}1Q zs-vy#Hfnk31E-m@Q~QQjcVgtQFfg!jF&^RJcgP1A_ebu@1R-~aeR0jPYaYb@eHH*m zMWR8{20zywJr7iem&p$nxvFmmC(I#G!GVRy@!;EJqCB|${NTPFW#W)-3)arT#v~!T z*$2ck01MpGFmhn?hXDu!eBKf3vWbLu2E;eb z%v6ZDU5$7>E)dPaVPXdKq)qK{wGLkXWgQ(0TqCZqjHJ_)TzPD`CU@_iBgewIVyxjA zw@+PS;^vBT4qGYk2h7gu4&E|za5z6bndfd7k3Kn?puM&F8xx=JbdYY*z+{NrMfUa( z`-B%n89>+;2w&b^K@sJMF^fQgC8ZZWhYo}|{IU#veFdVt+@$*CPD zY%Le{76YTb?89j}&Jreo@XSt>pHi*Z>KvYr6F;G#&|@|GxIjmHaf*Fr_~~+vPgj$i zB)o3{CFkQ`ldlzH2q%ovN@v5jP0-+D7#9}CsoSy(!3^9F6&H{S(ykj(irZurqO_&{ z>eQw~Ut$IuTDTIFGf}qgS0(=KRK=dH>^|y*masm_V6iY9i^Jx)GlspHfP5mrZ%;9` zu`Gj|C#Ty#@UyN;zG!c%sD?(}1+PbGIA6m9-nvEZa}VvyDycy%UOHcgl!jAq;2~#x zNyq{ILDH8m-~I5Jtt@1|TS8nyNPgpD-n87%!2gJKaY9(dFMF_;P|>u0iKvg;lS4)a zA_$Cy`KpBt!(LHQU`JicUrc|_daFoIUoQ9VJ-zj*{IG!t{oZ83pbxDza8M*$!Erh4 z6p|ryoX#aWa62)uZ4TrsQYk8N9;8_tS?U4O&2njESLBY-2B=z#>Q-SsQLK}+_&t86 z&TtQiqOEI*5bbO`cM`~~J4NsEU>fT&yNQURV468yKFxq`E#!o25cK|99VdFS`1nRV zItySd+{kz8ygUAFY$(&eE{>uUkV7uN=ocv$__Y53<>K3SpXBm<9=#k;Jzm)g_iSp$ zJ%XLi3$L_okOsGUp!1YTm?0aS|3U6wa8I(E4ghBF6@?4igG21Kv^aYE`u@DZXs`Po zjuT^|3;q^*YPN9O33#A!a5%zv=Ynrr{~ckqF|2e_ayVA*(-!a+6osiO|K_#>Z7|c2uM-d0B2}3F73(S1RL*eKABGGAsrULeCOa@8g1@D`=N742b z6cl9JzxDR|$Qhp;LgdA*Qn}R2$47FG_`J0WZ^G$A$Ij|1P(^^4KT&J%boe9R#l^*J zCxPH2n$-Z5iNPC4QEdG;On39&G+09|=$%1`ah@8`9swnZYECgm;~_XyMTgsN3P|eb zIeJ-M1$wkbSv)-TJls6Gh8e0VD*c)(Bp^<+Lute$6~BXqsy!+m!{n-8Yj~VfC2u>( z!xQmP!|8@yrcT+~I2&-mkM#98vX5)V;V36GE1J`Kzrm;G7P}07Omsw?#8O+MWE&nTUq!S2^l`#;gNd@X2Fp&FpN5B~bj z96y*MVHKBH9Og#=mHi>cjbuLdE0L!`<{@!t?Aw~;K^8^bcL=u$z*89zr!1w@%^9j2 zeT4PbAdlqd>@?pk5M*Ssm>*pu=3D8{Vg});9zQ*}T|KW*l;FCF3!s-vr^Iczt#6x+ z={b?}kT?C4a9e0G{xOn`b?AS92Z*|llU~|k1n&n2>}i3^`c^Upv+E~rCwvW#Y;XY)U3^V4T!=$-XT#ZM|*jg zq+$@p(!K$Xh@?J-cIVWTfWfVqzJSN)hNQiE5J}tH+S9(F-4QOf@EV3~uGQ4ixda;q z0s%~-A{DmZMhCwi>g#nhXbK1lHfLg|ylW&8I9_=&6-J|yP%!oUDsWJibb2Dp_uHDy zvLJzm7_o=a!^(hY&KTK9D9D}3iY7M8dESYBhw4ze6#k&ZY^*yOQ;8R%%b9Q;QMC1i#G{Bp#S#NS>2B}t(z0pyu8CBd2mglnva>qbVPz^jf*aUL_611) zHIIrcH}@-I7B~FWzJ&TdU3&6CuIB#JV{7eXZC?U<)47&n0I$(8$MK_Ga2;qS4S|sj z%8cMOuq^x#dug-zb#W1|{$HYEe zpmWhmo#k6geSLg7o11aB);QYW7y_npE-pMnTopg&6|I&|_Ci-ds0tx#irwxWyUm~9 z`akHmw6yHCknJsEVB$3~jm}mTbJe?p%qsDv)!eeB!9)NL;s%~!_QC3SCrZ#4=c_k9 zy1PUAXz$Rp!pCRl!`UfSwjA}_JYHGR;i0a)u}JCX@hSbsQ}qJMXep`C#e3mchjo;k zJSHk8hOepB;-9!E|61bbZbYF>>f!s2)rg!NBN8Hhgw466C|^X>)tF}%V^G_Qd1VQK zvOvEb@=JxvH7#FX8~YRn*$C5(qTvlUQp&$Y0nE&oEb(Rr=F)1B>!2`&1FEfw>Kk** z#YM75B=JKf2eB~`3611OoTddm?5`0t zsP}1;q#HUXCoLD4V8b`}uuBe3Yx8cN>($uxC+#w(94$3DqthXzVQAispIA6C($V+D z0{vHjOYK;*$WFhal8^z9-4V(_{aLkV%6%U{CtTh$y-monJeL(F7YZS795Z&A_=wko zIcl}8@a}i~0i@=TGi6`UD41$vI1CFakDY1bY9)qdChK1S(v*WH}^f_XM%9z)Axbt$t$WrLw<~n zOxYEGdwdR?L$Z`Zn=mqB;$n@a(4U_qMoO#p^69pMr;=SNo19@Boh|o8>uUIqA3Dp) zFZb41ouXQ`N?zmU%~8sk2Q2{JWxNB;?)b1HhQ4*e6w}Rtq~6cPg?k7g%*EkWw(7F@ zcz-ReLG*>$caxeUv?|&ooN98RHzJ9S&VW8hrOGeY-rx`_>5M4-#P+(6z3XoiYE<*b zn=?bOs}q_~7&VH&O}fD(We3?h1kCV8j79n(&ZS!2HiN=GHf|T@=4r7TMpc+t_b-BO zH;ahtn7j0JwYE4PE5oGA0xdq9Wf8bt5ew@cSD!APL~~dQZEz@tozT+1s=YcpkUe?>o#0)~_<-t?yfILt zLtnjHC^wF9Fyh>K(KR?)Q@;ntOBA%l%3S0YjEu7Tx4k@ly}c|11ucl*Sw*%>JS z;zws(u|iYW)H`PJUbNx<;+BTd8J0E8b1rW&{AFq{zzEP%{hbN2#MgjU_RQ5 zQA42Q@YNg=es?aeZ&=xMoKq*Z8z8LK=>Wwr>+T7%ht!O`yIOrtuVT73;z1$27#0== zVjY7YsGmM{*}uw%)j}bJl_(*~t)7_bUg7TkaIVvKrXuRMRdoHFvrS|i?JvM^zMg0~ z6rB7dmTEBms5W-fGmV303{nFPXXuHpWX6IVvgP$#^5X06aLz*=EZN7U!uSl_(xfyQ*Z`n7% zOX|itb4^Yv%Dj~ckBxOaKO5ww+$--I#>2xDOKVw_OzorI&VI+f?9>bf;ika={G8>g zL?`lR{^BBflQrWd_&NPw@bG&-ed_ue|0z3)x&M8Z7xb$xM6NZ&MLRA2Se9egJU(_s zl)Q6w1rhHC{$SDQjoXV(Q!duBE1#Nn_8cM(gr-M{npQVnm#zyHF3`ZL-*mh&hg5$)pvHb1;QN>{MG8a!jt-ccTyO5Ms9((c5+~Wad7*z>CS2=pQzT^_UIY` zpBtZOB-4~s%N$53L(dS6JF~V8NfJQ~TO3#0_-kP;vxy41ncB}_Yh9ckvXDVm5?+)z z?z@Q$ap%P`g+Nh%@Gu-?k&TB|(ldl-E54=lv6Q z6*XzCc1->JuCQTi5q-l_%FM?X6@x#RU7GYtbztYqgg`FjcHJ{ToPmxm@wQ1_T(!El#2xO!)GNKIovD;I^SOyMUcmRgb}h0! zhHZ3okdu?PRz0dm{@wL!4{*_fbcupOLfW;K!wZH4y%+KYmj-(BO}Atg2ePvun}Tr1 zb(rMSN+lX+N0+NWw{TeES#a&ndk1@MiH=uKo_xj=W|=w}ybimO1K1(ZD9Xw<*qugZ zE0q@F)-HEX;DGzm=987^L+Qf`Fp6ej>q|*V$Gs9%E3Yf?yKQZS7%tZ@J?nbn0r(<> z*n$+}LWozsq+0ew(LCIM8%4vVwx*O+fwP-B*F%2FPOLgCR|wmC4>y5VPG`l;-sq>j zX$n=$Lxlm~%w3cCBXD2`v*47GnNs@sw8Hts4+$SNH3w9p@^Z;oc;}&5O!P4O9~oty zFZW+-r{_Fpj1gY-Bj^htdP)_&_bMs_8|ca~X-v)4EU`(i1fn0P%5V$Cm4q=8#IFt5=I;URn(G z8o9b=w=2RK50-XgBk{|ZBL&9kiKqyg=dC|}B+DfK#vQNvh5fG6$oM+eu0NU-2JyA~ z?e49;$~M`37(S9$-nZVWLsr{ml&_69`Bh-xFwu8tRQk1tuc9vurC1~594JW`t@0k)p zblMM}-o4;+Rpm-s#EyGC#iRyS3_5_5=ZK+uel(qdUN&inP~WT`dU z)`#q-!{R5l7#rCb`CaO_#VtKnuC8<2A?=ZjO8LMqOaaFBdpPx3bxbN$2M|5L@#K9g zZAv5gF6;favDPj`+0|7?zfPdX}P; z)A#Uh4}Tk}T5+_1x;qiIUlV)cP8@|8nVhhmTbrr;Heh!UTiupxvebfo%Te)<;>~^J*~_iE>pL*YblBN% zpAirzvkh-H&oWVVsOx&d>gA=jaifEV2LtQa<~<{s~qN=4W!6zC|EPBw9;CoFsdA_|XQS}gv_%xpc; zOy0|3Hhc3H7v<@UAec%M4VW6f5)*Iim#t}Ue5PsA97PB8ttHAGpk`j(tCdieU*D(^ zi+%;Wbj1|PT7-wb;z&}lzMNDr8RQ1Ueujs?9BlDF1kguym6)AB9cgP6r|=gO_WP?@7VYKPT7=L*W15y#RV|m<2WX?}eJq3F)u9Y&kI_=;P(?*kT-|n6 z7*>WO9JtDdw^Ka>VqWUz>m(#6e;>EM1B|HeqOHfbP4<26L+no@X))4a@2n3*ve17y zK8(ix)qgP`SVeN0-{;vILQ9Zdf!nx+?-#i*>egEA0o*AzahFMegft;LI(JcVR@Wa`rGJez`>gO`5$md zrJk4wD-eyAv)ercrPT{rj@(dL`f&eW$M6@Ggw4{QGc!@p`A_M)dwO<*jO<6P(>Vu_ zm3E>MdVRP1*G5XJ6^18yGDROQXTnrQNKEizl5ojUT_z?hDY4kW zmg$lBbj<^L4V;sxMRM3_*m_Tj%sqs`nHM=Q=Ac+E3E*20-hr(Vz@RyLODluf{#%-M^j)6ha5OYQ!=nnAo zEGkxz*L{3M℞$b7h9v_}jGEUJyRw+tgg-#o423&)c_x$I{E$Nn-jzaPVFH5izAO(_*&^kdz>(Ykq|RnI|7rd$k=fXAb=6}TSG5vH zM_WHTi{A6sZ}Kqa!beL)PClF!=047ULx>ZdzALN7wB8*}K07ZtSWDU9Bb@F6&?Cbv zc=(Obrvfx4qr7T!O4T>%EFn$4Oi8Dzg0W`^Wk6|?6T7Ve#xU;!cN-pV^rgwbUi5DTC)10Fy8)2GA7)R5l5 zFVfbD3)cUK`^#6|(pl>Y7DZta>B0>3&zq?WTB*Yp(Yq6ZQ!|EN zKC}S%WnRRUs{OSQ@ZvE-vQ0r@7}AUBUosQ#5yri7i)F`x94DZP9MfyMW7&^^gPD@t z7ql#|sF0bNPV+YJ{d}7(E30c1gOSu}4|x{(FRdr{6KiXvQERrGwY&`7^GC6v`+3U3 zu)z(6pmUsH8Y6K}qaog>R2;7MA*;&1p*@=nMqtk)#PqNzFn%T`!VGYwKB700m zIXb_UM7sKOyz(GDRd_)Rdm%NxD@HEX4u=Yd_7C*(v(@3jVf05`w6CaK^l?CD){agv zCjRXtBx|sxomWPt$dGNA4O`vv;wtdLN$x62yj)+FeCLm@ucJ)?Eeo`E8{>spV64EN z5%hPinb^nA!P=6t&6xAfTXELY%bc3RxI@UXJSsp5J2XCXa9fB&u=Zf5HaRnO^=F=! zB1q!TwnHd`c~c4ka^or@DfmXbyacg?*;rWx_$K4+^rO%??sv*nNZjHb7I67pJPJ^^ zgv?qLlOY8h0qGUA1V=q%+>4EN5T9Qt(&?TyG^JyHyF2ga>1l$NhK-F)PCgY=;#n~5 z;NVbHr%W96gPOvw9v$aI^38b(cZ#qB{3P~ zEsdo3gs1DgwRz@eIIbupDf#UqY4sxv48iVr3G;8Hlk@zN2cWp2RH1QmNKI2h(HEh(BDY9X$=hvsr-6VM5*gO0SdBMP zu!speugJ6|AsL6c0OdUYgSAh-zHPr50I5UarD%KCZ63XHnEiC@^SQn=7+)@x>cGBB z!x-iUF4uAXzFk~$&22&^(N8y#l*s3iDC!avNuNs2|S#sTuM)X;XuPk!{}S5wh| zLSWKUR%)3mV|-}nrFZZ520oA5xDLl++tBaOHCS&A16Fl#{Vc~k{el$38y0cgh+K31 zQMu58j~Td;Yfy|lLLmuC4VQjf)1#+Qj#4{|v$*T)i;mA`;tC56o9$=S?!Bq(BA8fr zll|0hR9@t_B+sZ7Y;F6THx(3edu zVo?hHtc%$7Yyw)VR$F8%!9|81@+Y_83V{Z7NkzrTtihax>7L6Y6<1uY9NFk%-3l8-awisjlaXnVi11$ z;J_a6%3l%_Mch76$~XDaCB2Sp0komE-WTA%d9S1c2l!MzcUuT@J%b;ruUAZKfAV*1 z4>LR3jX-fg^Yy!(F(#~%tm@E`xLbe(xaO z^pdSFKI7PT9k7y?h|oV`sr!gP?tkCXpjF;&rxZrrDN%Uth7E#=ysIvpfP70O9|^x+=YYq6c(^ zckd+a>`>4en~48lykBKX6dL30lCRk+-|;-I@k~**8Unpud5>H+wl5>L*e zu$$_cflDsfJQM2ylq*6!a%$?es$nPy29@3<*GTP2q)JM`m*}T6pO3F%M zFrB;=L>g77G^m`;ay?pIU43K}G`7Dla5B_Wj=GPf;z@vUDce?=!$HPia5=u};=WsaeN;fUUaX|B# zJlmQ=+;qIyQeJ{$zFBLo(vJ_mS^=xMH_#PGzLK z9ME|le0Yd?_ii6SGU?-?=*!T{zV>w!mBFA(Vp0dte6A6M&z_JoN(clX7%V2)Jp zqNzLDv+}rml^V$A6wF5{eD+K)+mBDMShUyOOCuyqE$Ow{ zj~1!0&i2~lpgbJ%;+g6CB#lk83)Sz>G9!(R@rJELuV2$J=5<7FyCH>HEmji~h69`l z>H7Y(@xgi8CVtpNd(+$dmNBmf1$owvV{R6*;L_LHzDYC7KP>%x4JrY?0KY2?0~(n_ zfy-CVQLg9iz*d~LTWWi_@b*Kj`(g3t$9xS+9FDsmP@+(ab^6k~TgRf|eZpQA#@$pp zZ=Sl+cXrhyvRTRr<=wpSZPj~PCH^Cgqvw}6*Vm$$-wo!{UHZi(aC9zNW96_tkr4T!S!sn&S&frC(aV2w z;_&g_Wi;eQ>R6^tEkg>bV(X8d5Ou+=QEhSh^-1A(D^U!(nepjVR22MMZzo#EJU9Q$ zOvbg8UK|!mls!d3Q+=;JE+%xiyF^6H4~_hZ$|w>29+B6Z%bLa$NbAKhS)l^P2FqY; z+Y>Tsq}4qY_x-_vy&aBv#=Dq?wnP*~N61aRks<|aK4J_y(+Uz{r|r#e)qQ4YI`);# z2X`?s(=-uByX53gNLCa`=AN-yE%&4v9s_1;c41*$#Ml0~#B*F24Q~r_>2Xi_y%5=?EISBe}2zl#blF8X_&tj<5 zot;0dc_UgQz2yGGQu^d@3h|!zk0?iS$K(9Nwb9kpT!E_0z2qX*Q7e2h*+XP+Q*`uw za%&@~a@9;9-N!jgNKS;>1%IpE?(^)P8Sa>ap6pTBX=~h|9G`+kOG1)(+RDzCv_AI& zc8d>s_k_AX-pfwrzCvrxxW;CYntLf*)yPOpO8s`s?cm5%DnhnUGr3)3p_XiqgN^MR z5skA(3##==QF5{$xfb(66c3FjYZ6@R{6chy$3<12yxc7CRx~DG8j#tUH^i`1GC|WJ z%*;4&+8!(JmtHTPwNrFq9@sP+C(KO;L9FRsvB--1)Lmiy>AFA1MeMHu9R}fpV@LpOm~zv5fWa5C{czksTcvEw2gOAvBq6--sGkUR;Yx z44ze56~BSd#$zz}-XtHle^0X&K1&J4Ph)PcjaVn=TM#%NoitA#8_4Rb_IJL>J#ui^ z-exDW7O3qvp1>OSyq)4iIedOzt6r6?)Y{`NVHPenLLwT)(b`sKeSj`6UJKCTn_Yjl z`I%VRFWncHpFH$%BskwKjU-=7yDPn#AVR%#+v)Vkev(&~Q=y9D>|Cm!yVVfO&?VVo z1wy}SgIsTm!sO0B2u~D^gsd|ktxMDHoZ2@V*jK+JO045it?i&>9!>YWJJFwX^)#pK zkk5@>E!UBqj}NlzxU%M+A_P$EwCj#EC$ z0-xFzvi2J+4Nbz9JA6$`!2~N41&alg_KMFO08Na0pk% zMV_WWFpXTj7PzbW?tQhx60`}Co7s; zTyyVm=#3S;(YYljxoQ1B#7iu6jFXiiV$|%$$@{p&k@O)Q9`dJ04i?0_C&Rs?rS}ez zQDkHk-F#nzn$GVB0;x{yE$=fLrh?4?&PDDL)1V&v`%6yJ!zK7elVb6dOc6|mjK{la z`lp?7Le`NWwYT>ouhji?cC3A_oubRvpg18UlK7ho z8dNg51PeLTsU90woP%Xe;+sknj9>J46orZsXJ-Q@9EQ^0CBa5f@;&iTRk`v3fl4L$ z*x5itT{dTX;1%Iptrw_-22Js~7GvR{U_DXO7p2u9IiwB7Tltci4;723`(kk(nys0M z4isu=v#`>aZwAodl8;n{U>yi>U0!3ymKB9kv-(!KiI9{~g+6n`PyH|((v3d89E69M z;LZHLXn63H=CSTbko{njd&?W%j@yF~5I}vgd0Ccx&4;0}>i5TyWB!6|ivF9u z%;oBHn;1euOun#i3cW}y)fck*Z%5`nN0}XysE|ud6jvs`FxGY!iL$abBAK1lVkWD6 z5+Nop)RUSrF6wmhrp7*iL^M*S@D7N?g$6%4zFtg=cgrJNJ(Sz+ZC9~O_4Bn254 zGdX1oaGy-P_S{=nxw-ec3t5jc8tHdYzwl(xSt9%J2q+{}R4kF6vF!PP4xg zGAd}gIy6tM$Q!zM&|T8Ym3-;(;mBM93d!X##6-v%>jc}$l4A5eGCTS3K5YRnZ-bp3 z`W$%Ye&+%xviJl(o^1&%8Greh{9fkmA8YKObEz&unN@C1jU)FyM=lT6A`KN}Gj_Gh zmGKxYsh1~{>v?^2Mnpa^c~~1TQtmsoU%O7u<48{z>bO&U^nY>pmQiuF-L@cs00~JT z1Pc%#hPx)X1$Xzt-GWw8nuDsam)<7lGY3(zTwtSGSu z^HFeId=V8KY~)8p3QisUDE*a@ZUWDdNk8>nWMd?`wAJit%-t&V`Z5AaFpV*GpED%N zy<;iPnRJr30m^A?E<{qjeOox(NZ}FzM7mjM!dZ0tFzLLKOVg_-ei%UKnmfizXsk`+ zx$~LSWTn<1TfVVcp-YlPmvC{AvoFB{m1805Y&`z)U_BLQgvlYke z>~UT|HJG6$KtXQ0bIwh9MOD(abE^U5TWc(5N^gx?z?MQJT$yZotmUlUH=!w;ElaaR z)6V@zGvBE!v|td8=eZGGkhxN zWi4-PY(#6+QL5NMxa?sND5|~}1D>hyrwDZs5iz(MadIOCOK)+b_1^u4fB;bElFH4_ z+t|l@kepCSv9dDNl=H)ML)5#~Nunj#0-~HN6Ya>#K_@SPwCw+FDrS1hJ+g4dH>gQ? z@MhtgVld!D(J_%>5UiZOD|)=hZ?$$h{%QmtG?FU=)PrQp5FM!nGpb7R&K@~jf!|r|HAC>E(@@d5%Ru~t4iPV}TSqE~;^I)*J%^ND zU>VRXh@E{$MSB^r6K>CXPBbNSsJxY}~$B(enlRVmfbm;M|7NJCue@(s@6tv4g^G19@?kgGI1vfwcX^h1ox+#gM z2q+PJ&nuD!O_dTUfRg*%s*mcIj*a0X=7Ad`eeBi|_}T*riC|GV^2uamp`)vGo(AT@ zCQiPk`$YE)>SWSKxQiIyL7gC0Q(EKfR2}e-!z^8f2_^N_?5v57tpU}Ro`-_i**RIY zqraZ)@4dL|VAYDSs@|@KG})>65ks%+ygW)>;b-a-O}CA1_Mm3>M3+i&stZv%_{hW3 z6N*avlj08&GSvWTKA>*Sx2|^~_cpWUBZ3VAxk6ik8r76*AB?L;K zNqcwN=%~|08W$ZK~rMo$`BHa=juV zT9JaMp0|_k!$yy9seg}*P#!t+O02*#%*?=96PpGPDXVERvP-f$bL-!ycd>VNZSZ;J zN4jXUK}@IUSs{0kO!Zn=<8<2U!&i4(s~2aQFeND`|8feV+`v^um|ZA>!?{U-%@*dy03l zmy~^O`QV8ZA8LE5ET~R0Viq%F(^@2`4LLS+E^EkrF%y4>q(5XlNm|XK%hptS#*fy< zW=5#{_(R{P+oDensAR$h4|`9{wR9sg+cz6Kn6hAGc+__*wAW}yNX$>S)Jn;!f?*=i zqVe(ZsP-Bwp3;m`>dj-br-KVbkJz(y==eC1~m$VM&@U6y1G59S7fX?mN2U*FT?Z)b8iW)gqF~ zLNf%B?=M4o-DY~7s!vKjXoq*@KcXT!ilO?Pa{p5T4W)(j;m_B2qikldPW3ExJCJ;yoZItfcqz3~jhxX>GF#GRCl(OO?XpfBVqP=OCdk4Q z?sJ%7=<27Tq78*DVcxhkI@Ln0ykDFfC#SAFMsm~gT%$UYjA?p(x^t2tVPP>~QzFEi z38tZy<(9wvtLjqds8EDg{R2=RZE z2X4)aHW6)mF>XE9jRaxkSi}V>^X#T~W@?d2+2P|7Flf>&Ku09>t6abP*DhhS2dQ8u ztE0b*u=+ShaCId|8>l#`3WcODYhXFM6$-M7Nla{8EXe5eOV!SDdJH6iKYl zzPz$b(=RqHf6gZ*1z+Q{eKSa|j7Y;R`I&j@VtmIt5>0mIK%w~SV1q-w1au>+yBn2` znI-_qd>>(!7P-HBBqox7@P}#e>a6)QBu8EBp0C3z+z%#3^`uHkEpC*h4j;+ zX26f`qL0#|L?G#}Rz|6XgB7pB6c=x_?pnko zV|@JXc0)-+LvUfiif7iqLN(Zn?haF?OTl`-g<0fIsGLU3UZuIFH1(_0R;9D1AOBrz z?K~SCvc@AS5mZ+d>itx#20yVft~47b0xoA$AFjVLYpmu8#z=U+3w4VAw80fY2 zi(k-l)lRFcrgOC(;W443ZB>XdxbOt~z9x~jm;~jP^)nVnSGJAT$z%pIZF?vG3jrvD zwK|iVoE`)c4S@P zLxta&{EJiZ`P<{xRidq%&D%SV(7@YAFWk?P5@w;2Y!~nGmzk_v@DKub8Cj zE<#`;{03^%VqWG$Sca|5XW?VQ9hN861*59_AXmk2LuEZ>gLd$rFA2+or0a8PqBLPl9^;MKS92V$vS&Z-mxli zIhYl`uzhjRN^2;C**cX&13GSDc7zL-c-%p7*;Ldg!q-`@Ioatz-}sTBR!6#Hf$UwFDWd?80lOksh=?K}9O|HyQyD7U0U#?lD` zcp~bwXg=C*I%)f0CuJpC4~swq#9wVY z&2=_PjfHP)Y=mXD_X}`ObJ@Vy`>0;1>*FYWRKdC%FXb)BOlN5|qwPGet^Afh^F8)- zCNg82bKA<&y6Ob0tKl2{+0epdl?Ww0f;eaHF~aGEyNm*14)MV(9Mqoct2ZMLGnV7t zyTHBwkR7FHpjD*~Ie#leA@KXgyrf8jISqn5u6LdDjjl^y*~xsU2lD%wP<+ynmGzF6 zaS^gXrO{Qp8%91~TdJJ}Z8O8){?zO(;T=r;AoK0QD3qE~uzoN|ovodqqT*_y(%)V< zf2Ounzeu^-^F-bD2@#XDmqqll*UQC0Z0yyYjg@rF%qOVS)PPewB`vLz!r<$RR|T|! z2Q$D9QDOV0;T03QAc@B_i{Q{eSgCrHfZX}&4Bw5^&2&zGpZ&t;4D`HRnjBuMaa*CS zL=h{WzFswV(mNgr@gUc(J_b6zy0{Z%ao8{K-oE06^v7N z8OiAACOfkw)gLslz#Eoir><7Gz0H~a`6xB5)?Fnr zQ9JQ|;e)iU3NP2VmF38!pvqeJil6L60kJ@8ZQ(?|tx5?MWh@fR_dfYI{R3O$L~ZTa zdbHh)hS@Dhpd-Isy|$J{(Lz_v=cQJddK4a>ezT|ePUmE2mQ}U3Ey8WB6qV7?RrUU= ziu#O{GmEnugnr$k1@_NMi<4GYv!1jRs%YM9MJSL7r?fjjqoGYSU3<6ZhEzOsDK z%x^!fTJlR%X)^{FDUdmIA&7Z(2V1|o5bKiVUNS68nySfM0PW-Bz|X`xs{*YoxNK}> zp1j08Ixi~cZ9dX_7*zAYdWWQB#x+CqYuIT+#0bwFjr& z@_SCG<0g{e@CW=oF=f%sMptF1j3)nvTi1-|C-tIf?|=qi=Er9&7iajF^GPectr~JV z8k0@B?R?BE*gyzIVEeuDDGl)oTWq(K;F(=B%rEX}PbZaV2}SV-&lw5i_He0wDuvtR z6Kyn`X&-^Jx1yKGY2`;uU}9z{jx zUL*-x3pSZijrHVJ&sr6C>B_T1>XD%_D3R}X+#X7%r014g}SgDSkTpp z7fnoXnZ90Gj}s}{W%t+^7H73>PGMnUYAPWfSvv>|7iF=`PbEEOcu)|y$UnJ7>Yubj z(vR|l{`R_~tOEJRKfgyoiAF^=_~!$PBG!M(^@M2uBV&w`^X30vCu$O#nwS7R8h=X^ zy>SukIb?bmUno!wOi$Nj5(};V%Gxh7i!|2h3*@n)+&)L4&tl#JdiyUo|74vP%l;l= z1CF56W({s#>iv0qUs~j-T%F$tKKc@)q;18P)rwD}82;ycluP=dffB4JTEsB=q92N; zRJ)iD0h4m{e;u>6QGJQ_8W+`oGA1E`nDk7%`Lp5QL^V!cDd^!a^P{gQnjR2&g{zlD zTC$=~G=BU!`b97rh_qp%H>?7vS>D2rf>G71@X;iG2(q)#$qBv!v_==$fT*%JeU;^J zn!YiUOhbBUh@9aa!U0Kmv`&lm`YEbG4mA%EPw{8m5D}jsLORt?dd=~hd4Du|0EjMT znFN@M3g&rBE67N7s+9?mJo+O1o{^JSqwk-u{L(_&@vqSS7v=wwR*-)1pYl%{^#6$S zr{h2W|NMzQ-=3nhMRVGKbQ=>R)CojO=-RPJ|4L)G6s?|a#{ZCD4G7D8K@JbC|Aq1> zH`7)z_5o$C+HY7)h%xP4;@={SG^*t`{>h&O0R>A>X^QH);#%of@GWxGr?cG_Ff^Vc zQGqA_lOoX7)Y5Naq>dWxHH!RKb&xt0GD$;A9#0>h%NN8)nsQ3RO3CnMuYaQ~;NRMg zLPcT5z1E!Sz*yFiV&#fYwIWvS+S+AmYP6@9drBBWZ$Tr&NwOhQ214D7_!eCfW@fp$rSL-O2YHyHNRf$m z*XaKYKUKse4!mrFTkw@|0hyd08e-TK)KZ>F~F-$OrK9V{i{9xVDj z{kI(X|KxZCM$Z=%@rLy%Fa7j@pK%%rb<^y}imG~fhU3B7;u!|{J1(`2IUgaDh^gUVO&l z(c%utME6&Y$P1h=^f8uZhPo0WKH4!2ZdQCPLSJ_eqGLQ{JQd5gJ>A$BbYz1IRoSem zGUQyUjovlBqASq<3bC?M^&uapb4EBhScHDm(w#Juu~ysektbp-w#`?m(QcQgo;4GI z?4_C`>DFCqI3=7ETsUP$vXm2YZ=rs#uD<^t?=HDv>%Sa4!rG?Qipk&jT+>sJQbLS>-`HA1P5oOS=K`BaF_;JCI2QzD35Nw!4lV5F6*uG2%a9K zR`JfGGXc)r+AJocs@N=6;_&atdkA!!2uE|-C_~(7(PRh+Vg~h<1*s(9PcNKLfG#-h zgc26>L&lJ|o&jk_@{NO4MeOx;psTUdFdWcFy_0F7vYI0M!PNUc|HvFh_29>uj|cty zlAFmaL^OJ{MccS3&*%y1Gw*3Rnb_{Ga(LUWLj)lD_W# zPVu{mQZY))b8iAW`5pH~W0o2qHa#v=X6@@Qc9YE)f0YrZSze=^oEHvWALr&-B7{2s z)E@yeI|yh}70j3ICh72v5zK*P@0vbP<9w%Ag~5d;?mQcpr9Ir*Ad1*y$Sh6h29MI2 zjb$T-&Yzh{*-iiMGIK0@64S#mJV7J>;5|~m!r7QEW7aG*5e;F(l%dbMGNWO&Fw*Dh z-r3y8Y?N*NOTH-x+9%%>28l#Qp5ypN_>2XPRF3}c%)X%AqL>!pAr!hFwHltJOL0?h z?wby%9TwjG^a`)0Wwjt9 zJMnVSm`SCs*11-%RK5JUobHLkDUN_jZ>86cr%FM#%xJrgybIvTDEVVyi5}0wNO8uN zK>9;wy$S`YKFAcx!ymF+q?rThmj9BMOs?dE) zzjRUTP+5A>mG`gJ6iiGu_Lku``ol*$Mxa8blcerGRYQCsF|lp46G%{lc0~r+9j!_w zkDUIYCgJsb+W)wke1#&H2}0NU-XMZu0`J6g?kycN3|=Jd9vW{(mQrMy7TR9r?kDiF zckSL)_~pd!u0Y6{=m>A=t%{ZF_q35JY8a>Vs-22{V;>A2M{LM-JM)I=O>l%V*wM8N ztH`n(Pi(w;Iv}hYw-3j#YA1M8chg8W!_%<;pllsNu=ykV0yu7wDfvdumCrSzI4{_O z6K;HINyz?c0vZ;PdIc1J4=iYd52m^Q#%u@QfbPUcqGaq`*ExKL9V;p8doY15F5baJ z{9pp6XtJs;Z^66^<4TLqmQ=`IpC?3Tu)9Y0%KZx`H^EzPmV&&Lx%98D=U=9NtV*tH zEc*7wvK9Bqza-T*b)((FY&^Y^k+w?Q9kLj}O5d;r4uGvDZeW?Mm#s(4&p+_*!kbz>Si)v_t>!NkHs z^af5H*KQ|t^dG>oY*Hy7h#hd46_6eMvL>|DtN^tTogE%v$Bch-w{$&U@*p*5uIGpt6kj$#P_!v&w!7?|6XOje;gi<_%AlWSFR~_IN_R zx?;1{)%k-#=A2weu|^KXjq=Z+pxsYyGX$J;u9*QT<~KgxEg~@{Uzy7$N=9VV)T;H+ zZi?nfw`ZQxC~HO!K#2EKfboR~oV{h&7)+%L{xF9%C5ndw;;FbGw9~bn+UdIKz=-Kh z;7HHwE;t&TpUr)|XGCd+?VJ;^v6PCL(lPXD>&3V)Y^DGtiErGvu#gauU}&hEw)eBB zcK+`QzJLlirT8Cq`E}DekcgcDTa&hKt?rxZOfZq=^(|#}ljZkmH2cq#@Gyn_$tk9oSmk6ei?>5q~du(4btlvjghXI02TUM$zzWv*^>radDg>8H&s<*u1gDoxZ_#62&S z^e8l)&axi8Z!8!IhGyQigg~2CiZ?MN?c6@-#E)?f(E_UmFaH!z+K2$?RC8d`Y^bOR zSdY}XtmS)zL7D&I0wkWTKXo*J(gNwNTdjCII71b2ocnBgGj3`;;r(4?Ce9y?89-%5 z7T8>&zvF^oq8c47k1ldAW0e~zUbGG_fFjNNVT0X%WwQPX&r`~hE@=@fzaE&Ejn5Y4 z+4VusCa94o)JL_7Q1{;M(!qK6_wOZ?8shJ~@7A$neteqkAHFOgbrM-v$O;%c&0bWz z;3x8BX$if^GVavP75goaGcaToaQA$BcWrUC+Bf1sjz?|U-pR++>&|RRZ2}l7?M366 zYFORx4=?6jP7$j~7xw|km*;ENp3>T=KBG5GA@2Cgt^eEt&4>Ty2poo&g1_|>gJrV( zLCbmZoPJ5{j^l%NSuq|@501``knkPj6Ci#!~`k$Y0JXC{!KKvg5)FQ$dLL^q(Vpv2>>gnm)Us0#r z0VJmo8F9q9vJ-a-Q%DChNgI?Km1 zmAAm=D2-wKMff>qb!)-`+aE~tQ~x#Xn{yzgfc}KQ3ZPQl43z0K2GVmM z9V{(&;?#9s9vL6o{stUd=bJs*Du*YALA9>cVYQh3VhyfLEvFx_h}XVoJSlc>qV-y00>qclWp{*4gN~W!RgkVXb8;(r96QXRlMc*Yx?Q zvUj}q&zmaC^*?H>3|5JmZ1%tEVw>0OYQksTk1KA89~hTJ#{tDmI3$($bs@O}E94tn(Q*kiP}F*^LDE zMAPP*Vp7}h%y-kk5ly(eeZ3RTKd`TtU3m+XJ)<`raAoPPey zXp;yfWB2^wUU$lzLkr0BJ#Tj$uTpn(#Pk zP#nWxUmy5{s>!eogN(Q4;{3?;pOLbt0GM<_n=dcJc7IPY6Z-(BmW4_vviE5M9>Mfd zSJ7`lKt=NVcS6;LT*jTjg_;E-4)5Mk(LXioefI3x{`J*HzKw-RzJ2=rsuGIEvd<us07T?q#!fvvYm{a|@G&&!=B-X8!Ided`sbF-g9 zqg34aaZsQ|IX^tqZE!b?cqY0u9+A#-H|(`1Ni2F3z(N>CRSEJm$74%8Kbe0 z5kSveX5IeO7j=lR|8~p}HwjV6A=4@HuYezuxY70UyPFaR(c7k(7L@s4N%Jym)$ogz zeb7SCDj^ahd|_TCheZBCVA>`&wx8)V)|16`pZ5WwVMooz$V~meYx3Rmx<`aGpMuo) z;#*RXef6gX|2&&ToUi}Q%KTk<@kKxv*=z6iE)}#oB6^gWrdYEqd;~r47riH|9M_~(jV!fTCEkq@ z`z|DFodY)MkLosL?k{$SLn15yNhzBo)ikch+8Z|9XDZ;(l0EIpHNd%&zuY@4tqd>` zp&!kY&y8fwl1LSFQ*M$|!87)hxpG`P)|F*vXRqm(_+z7u;(-@Oj5JnD5_GD`~!3Myh0ZoM?YM?k-n zs1NKojv;lBbE*jNEvo!%-yH(Vl=J68B<(YaV&ME4Q;TjsC@)u;Sy;M&rFwF|8E}aG zVCzhyG4OVw7HFS-^Pc0!RXxp%nI_AW?`<7`X9Syf9d1^~FpoJ!Qmu{o6WXUVD!I;p z(MT_0e|;k4=5%|cex-06J0z(_x7N;BS(%Lh15atW6ZIN&{d-$&_G{hJu~cZ5*xZVBbSso*ESEqRKEC@ zCNR@@|60ywhKffVu!GYpQfDmf_jIwoxx54t$UgSDQB)xxSh@B`-G%}QiaJ9`^|HiW z{wxwu86d5o)Y>}FpbPt?rZ(O|#cL?WP2BSi>9zaZw02XeSzC>67H*4Ysz)XN(%Q~! zpxNzUUJnrCT1rjjh8SIzzmZiZjCTAU-B#~_+}>8}onpXiHyabVuuI{E*>|pg-kvOJ zgI9<->2N7YF@A2$PIxOj$5YM4QwqGcGr-c=roJYYs(Q=g#y4zo5B+2V2r|E5Nd&(X zr~On)&B5Gb!HSienJGeCIP+l+4B>ks6MVc18FWTqi3bCqZy*36LQ)$rq5x7GQ;CKw23JQaQjh^XnC^t>76$qqhU z7CV{3&`0xb+fc)Wu;Y{?eagc79+OQX5S&3D5rQ1@t(#q?TyXYWrcjO4BZ$^ z$+rF4&9n6#D%-R_o1JrGKIxiRZax03$L|^WDJ!etev{b2ycnO?-K@hXAwsbr`Rz~46!Hp z*&q9~u3_%8Tg!O0j5$VheBevVo&3Y_8l)_1U}=^=6f2<&26V=vSCB~DL=xZ#*=%fPReA_B2z;KP2 z!=kPxbO3l&2^1qRDPw@;V75PKaM>x}D6`tJNQz<9$q@0t8lf4;Qw-OmPNtG0aoGXN z(~>>9(;|KPzRlZNS=}zTJDqQxT1KU|xJyZK(eIGh+3nZw%uI7CNXlYCkE0=0fHfd= z1p(}1%f#z|KJj>|T9g2lG`@~nscevtgP4`Hl~xs7ECD^Bc%)WcL93MMuBrKQ!6-1x zqTa~o7-+^{msWi_p4xm9_KM#Q@E`^(=MCN`3ffNqegN|l;-<|ir*0|VGF_}S$oXBH zoZ>*Z5fRrI)6=^(wmM-ixt!NX`~Uzjt*PU{7+qEFe@R}XqABCiHIgG&AUH8`?}q=g zQaJ|`2en;ByV|C-6h!lS@#}AFwj4P*zh@MqIbLPQYYbGO6f%?>1Nz14fYdgX;-O!tz>uLoCXUz~sesW_Nc$$9R+EX?#1-n=1pDXeR*iOxM&E-4;-ByBanls zKs2vnI9@mbtdqUbb)&k|Bgblz`9HAmx&7eKx#EP)a4cJUKy|=QYva=pYc$f!4dQ<@ zlx5yx$!-R{qU(7)>MN~;+$o>zjb+IE?hLy;jr!vj|I_~Q1D39|kPyzK06iA_{qvMY zON~gc?!AtX6Cx&Ms_=7MrwwxMfdLI*7qqjaMF{SXWi&77-ES7pP6E3`sct*d_F3w^8vE5{kg^=j=eG!4(RnRH=KL@rA)WL`>?6()i)YZ{nim&u8hne z=geT@k_I$P98UZB;O@cHxtV)w35ld`X+3Q%HTcRFWTs6;P0dFxH-?UuCn6rToppsu zK82^P1L4_PcaKUQVniYn$G``urV=?TLBmM+Tu)!`EmVc5z?Hyo86sxz`RUcP)AUBT zxrxc9#m>vk9hFPr0G3jck`L#5Pl)>T8z;UZInc=YbYT{c(O&?HVk832UFF4X#H*ok zA8bXUMd402*T^q7(Yd*;wFmPF@rkOH#qNL-0G)blj&uw-sT#Rj4}iwbu%TDX`g~s7 zeOiIJb;nuvw$rWZBbdVt1ZUulQvT&2Sz%mTB|mHm$o(C^sV`6=*b}RQ z?{+d_+ry-crFzTA)4)?uV7cq;cuXyh|A|-t{PGj)OSv=w7cc_WjgEy+qYvk^-H@GN z^*Pu9OsTGd02J9Oxw;DGq~)gNXGD&eZgj|zC_gq8puoUz*`AHa-I*-Y$d+8PW-5K5 zy?FEbk!g$=T5GeNIkeYc@EMTqWChxZ1?<6x>33sY-*4cj=(^2_uMwBk*U`rT{0w54 zoYFCL?WxVTdpa0oi1agYKe5e2LNZZ9dcPlV=o#I6U>9K7JPL|?(;h^WCxRyW{r8Vg ziRoqJja2P%{(B0RDp8C&wd^l|O?a%ACoWrQ1p}bl&HZv`YOPPsbbOJ;+%V)rbbcd0 z(wD@<3l|EZ`e@8JZvVs~v;eo|z5CL@Q?*R%L#MoxvvYAc zAq`SeNii=plm8O%A=Yb*ZN8b$amst=cRqL4DB2haME!Kx>XIVwFnoOh{SU{+R04Wc z8m+fpuV~xb-bsYe+Z+DUBM;!8jA%3%2p_*>%>{1uwO3dwO~%)F*D zATvLH{06MH^8i_D9QQ7adkO)65D)Yg-$xB!QgNWktp7d~wJ%LD=q;v1=e@Y4GBAdB zC%svGz&0z<6&s+G4{otOJ_*QT58duovEG+dC!52_2Nz&!|FsuYohUO1r7>3TdEN6@ zE;u*}+P8IeAF43)`zS=}SNDizAxxIS~;MkWhUmijL5sLmaUazY_PHu7N z_Rba+rKz{_=?h-}L|m~i4Z}*qyRge&DZjH{Q%B0?@J^lChnG8g`T+f7aNV%91x$cTuq_IcVbtra9l!ZBbD;{(=W8WKRwp@2q|rabo~rl>@l zEAM@IKt)B>2`62~>(AZGS47O*zyytQrF7D*r@J5yt6*gXoG%F%Zf39fN%CgN#GHFI zN{BzW!eU}*a4(p4cKZ{nNk7L}Pjm}#$F|yYa#rWck=9y{URRD1JcitTefl|-CXzNH zruS`bE)`H<91W3HxM2{0ju^Oj@@cY2r%|{KQY<~@;(sc%{P^% zQV9SU%x15%;QPY}P>-FkjLMEz!=)$~%=+w^tG0%MpEWhxadU!}mTLpp<4NESO_CgD z07sCe^ZwLb!^|_DP?bj45{WR1puxGpLGS%rF;PsMXg<}LD{@;ltxh=_m|5PSUY#mH z3?bZU+WT!`fRK?HyzG^>Otfq6OI``Quux3v4cWMBSksh6Sm-xL zI)_#qmJvi%uN7<7ca*wdVlk6)_eYUM$V%4UH$Hc?aGxhtUgj`?_?PL86k#qFY{=WWsI04xMAb78lNSh1j4csw6}0A_B&qoL^Uy_h~rXE!maz9J#9izp2LZsx@2o)7c zvlL8?jO8Y`hvTRb>?al_>FvZK5Zb4m>0XmelU1&8B=VrZq%im;YjEzKb~TN;;nD5% z6FA|ffiTegO_ON)-J@}0ubP81k<(V%yP~NH?0K;-%*|odqBk>f=XSuV^_`E1F}~Jz zCKTXPA8#$~YMtX-VUr3_NuW$;KzOYZu#mU=${;3wMst5VLqkx7hzHM|(C8kbIzz#4 zJC0eSR3Z$}0rOHe?An=hsBq}78jzhB8!A?7q(T?uAUo&jLm&dldT!|6!(_Kc22%xA zbYzdXl}#KE7nd?bF{`LYBLUSO7A@oNfY*rESq~@N6o77Pp}vZ2S}??n^GAo{=*Am4 zTRFyaPZ@r%^F>$GS-UzF4p60u)b-f4|J>WI@jc%ZJsIs0$2ErQ^Su>^&M5UKwyIyl z$S)2i!)nZ#DbiB;8wA~-M`xj(1_1VBUf-tVN{+|idZgM)FcLt;+pP^rr6c)R&E9@t zy2=dP-iShLOyue7UUMfm_Oq54clwzo=SdL~8N92`QVYGH$A6<^ebY%S0N2d8+ zCszLE<`GKrblkgYqsmeqaeXQ26J-HGR@#V4>@j6*LNW8VSoQOxP#~Bi zWK84*Y!$kxO+Rl&<@`RFVtuzD_UZG=$K>R)!XkoYJLli?iXm310uVSL?j$>bTh!oU zmG+UT!FqC?amMkMq%ZO2`^ptSehPuG*ic&Jrz=e-ieKnmsp~Ho>`q0XU0>AiE!EpL z(kRIAHUdL)6tp{LIZf0GVCiYN(?x>eSS$| z$r{A86VdhQzQ<@!I#euLQstKCRUN_P z+|b?4KNd6d4SUNuy))Nd_qA$lDAa=cQb%Yf*4lw6INaS06rZDcGxWSwekm28`Ng=J+aBS zB9}GSH9iAMazjhT(Q#%_(q|-N3$S6slXWt{kS|6TPoMsB4Z2vCQP=gs!@dD*?iiTH zNw;dF0I!m5U+A68WmpqgZ`Y7W{#j+>9p4li6c&EhJA(OUb^PvNLcy{&;YCgfu_etF zsK_z!-~0i}6)C&fDbSW)o`hYzUQ^?Ca7|4~{fuNvkehaEt7_vZcw=pi-*UtmP&kQP zvPSo&*K$2=-+A(Q#DtiORz@(#Rt5AmKb(tzY_amy(r} z(=7#s1_9zP+vT8z(IHYganUeFcz@k|2&usZsP;CzPZ75$h8v8KG8v_pq&**xeZ8vmV) z{^##eR@cqVbP47#J@jTJaaY7lEmc6q9$xAMKQrX72*kOahu`i+iT@Rq@dwwtrF zGfItA_TIbMX*>W*Y~2I9&RS`DX(@DL;*7B0b~?7!#`Uxb(l&E4;p<{8D;L~u4KPP4 z)Ow{n|5W>;c%%NoVQalH^#4W3C$xFie>D)QYQllAJII!iVBA!bq3S- zblR}|l@37T55di?r&sAN?4&dEioo+?8<&jK3+c-%x3jY~4>Yk44dJd($#QWqt(Ci0 zyZ3WfnZ2i^{`Yzx{kdL1a{uX5&(*cH(b*bW4b2*x1R&)zdvd}9-7R-FtJA8Y(nw*R zKWkj6gO<2wMtu{aun(&+7FVK+d6AvORhlPa%P805uPidsxpV&Q$_aqtKhN%MkdhDZZs_b9+?g~qA4m=h2xhh6Vd2i zk%^{xlX3S=OeTM=uC9*X>p~E6-sHNMxLl@OP>S3v3JO5W$Mib;eSkON(mWl@S>u) zY-Vo(Iqx<4$yJNM7fnI23{Tt-!*h|hw;>@ioPX)F9&ro|bS1M&Ia1ylGjVa>&>BE% zR{+_nyd1-rU2h)v&FVVViTfLFlbr{D>l+R?eyXJl z5AeY3lfuK@59T3>aEin7dfU-n`2lgQH`7HLZ){R7a3gkqq?XD%t8(y?QBd43wMiW1 zMn*=x5TN=DWb$(Xvo^kt7(my-keZN5o9naCLYBk@ks@QA+rk~tou+IkD_acYqX7yg zk;~Kwta}T@U2~<4CoWzmv3sWmCMQS6Z;=Wab$UtX9IU1z52d@=Mr7pWC&tFI2S%L% z;oZ&q&CQqa9w{lQ2A&20S!ZJMkB^PWO3HS*5uU6MRF<;<+-|Y^8?usgh3((nqug`= zOt9M_?6l=|ooiSVRnVnLF`Udz?%DiF?QBrQLgRUHp<(Ebq2ar6tvB}G?>_eDUmi=>2*Weab6@BAJI{-AAi(uHsG0ZrgT{R4nIb0nUo-tntessNAFMNvUA17hC{}0<47JFj zQvtT2v)0OybPP(bpm(M_GD1)V3Vz$$)LL(@ZWixTZo^;r2q|N0*SnX;l`d*&tEc#hx2Sa^>51o`QSL5A5JI7`)(*S3+(l3(;H$`BEII~>dLBD z7fPvV1$d@pNcWe4o{gcqxvI~XmRt^jP`P4}_Gf`wwhCCymv$%KW4m-IJDY*)T(4(h_kZmT}$ROTLgaUFY*-OP6W_Inmz;0_L z2QJo(_ybx~i-YmID_Y|xq%?D0bEzuBtd7doRxty&c-1|;q zVrdH)xI&7FjVRiG&v#Br3fMPbx@nurhnsXR=4!H}+j8*GIpzD%X3A$5z0c{$xHIp( zF(x}0rmXB>+8fhnFC#-QeE%o?8Ccfp!J$MYDt5_dGmbewJp`Y4u!m-D(y?=#HtnhGSLmgc@zCO~motL%GYEju0-{eI zc>f~>4ifvn+hVT}r)xio%))P8d%u2EqQBemPBx*NNKEEbY>}x@o&iEhlc6VCV%(5< zuKOuZ$IZk&a}x8b(|b|tj{j7}b^9jCqN{HRjKvK9G06E(m~mc=go9V5ZA?)zuv2}1 zL*Jx&pq$xA_ZS&A8mo`EXye4ZA<(oSNP7lH28wN! zqlp$Hv{LsvEA4ZmyF)0Zyr-vIJ83Ty=Hh>!QG?#8%#Vzy@8*jFbVZvc%jt|z@-DBh9*&B7MT)$pyAv0d3Z`vSoj$3LDtEsrmnvx5e*f`rr8T0HOpT%x!#6*ot-{3 zxq$Wja#6u`oYO?2S6wYQ z+6#Ts{qT1eGLSxrGvwn2z-Ft>!OA7DJI0~zY73^_ymYHX>wsgDK>0(Scdm zXEN{PhKA+~Iwz3{3JUmvT{!OS17L#dnb38d&svJEA9syaS@zFlc!Iz70&VAo%s1z@Msi*t{P3|W%S zPoMtSX^COe8K~DWE3nh<8W-Vo{0A4n??47Zf7_!3oLS0k_cgUvw};6%@ghRX_U1gU zZfOr(Iy52JG@Xx)nTsE{aCKT*<%5q~v}FH$&2=x4|AO7C)Jsmc?d!d{3L`V0E5z*D;D7%AyYY=bh5% zU(g`9LH_>rjhOxR6~6nz+W0{VgCYT3pmQL&>^uw;sqGe|ie9@(ZGj3i5n_iVfDeB^ zTxTx~L)BT;%666vCgZxV^_UhlQR^Gp_=SDD~WYOx2 zQ%%hbp(f_Y(nOx#lS5^d!R9Sh`;81qV3%fYlbsJ|mR|h+Cc*#qpX2&(f4?z5*l0VS z8)$8gGj+P^Ne;ziD$s0^h(&vB%X+Zs+WAvKSUxeIM~=R+`+YpP`Xa9VZy5!SA6I{f zL$mSxjaJJ}2d9)K(ykdWp*aBZ7L)OSK(saum^RLx(B*+*$QTpynS>Z-Kxh8{su-bm z)nYCBfGCv=ghy4RfEVr<%?kC}1rN@Hyk)ymaK`C5Ud3i0dsYZlM;_mx$NN8?K1RRk zePYFEjvBF+7+JyF>d~j?7hNLQZiQtBXr~5P4>@pwr3!m$wu|UWn&v zave^VdX=cKdSm(hSomSPu~F(K@kf7N&g%d00d>vwuE*hF5#Usmz?Tn@Hs=O3hxgCN ze_c(F$c+C2==}n`w6O3g%gb_jp(pZsdPy57Uanmt63WTitru+6)Znkr#B>m+KbERX z+^Y9HXznzLi>X5r0Cq?~ELszJh_gaY`#zLcJ>%CXH9}zboiw(ECDB)QpD;jk^YhD>QYdFdF#7@csC1)hvdRvq>hUs1u|Iyl@HOl!3Y`kaM6=NDPc{y2 z&LO@&?_K)$Ogpq$Wmzb^iUE3+=8 zsEpI3imaF!;9KB8%_f&}yt)@QYOA3&Qq8>fQpWq*g)VrXHT}N^yJ61UVhZZ*BU@X3 zB|dkH=WKFAFwxTf1z%qaC2YCYROr~RG}WQxbFJa z5S6Eut&;gy-r(8;@PnEFbqe7rfxv{7X!vitCmsjzr_paTC9w^a!pkry+8QbKbqOiiQHJu%E46$J5Z=LNWHBg|TL@7sGvSc1tZ zM~epmjALKz?gpN+T}qmON7epQ0asy1Y_;p#hjRtcj^kPIJ>uKx%voVNp)| zG=EYqqF-4rG+|*-Ue4{nw`RBIZdn^mxQJ@-hV-KN%tu%?lT5o}wZFZ%Ug3FMLWjS3 zDvVR-0zRvNZDPOChb6Jm=NDzu4dhj7LHBL&k%o6Jk+CGUV(I|OiWxMfb~)cHih8C% z@l2l;@fhmYISuU*zAgDX7zwZpG325PGImSqwXhbBX9vsYNAl9ne&vzE3-M&@fx zP526!)vb|L7g@Cdg(0o(emvkzVnvB;`6c?uy|0CN>Pu7+ z%5p}^JqiI6pg>MpbuKxpQE2y#6c}e6d&4@FTdt=^oFA2i9NtcE{`ev7u*72QRb$o* z>ANH)y(C*8fA|oP0~^Dor$=^17s7Tq3aDU|^ZEe2Mj&k1>ttxaq$3dUgdL8j{!xrT z1Na=K4>Ze?s9bU$3l6XjCAT9Au8`0bjU@^bu-hF1-1camKA&CV^LA~lBqFCphs=02I2hOULcEiTVbeR@QX)4OeKC) zQHUk0weInEj`{IQTRMQh0zK^~SO#AKo#x+nqNjZHb~mDypl7o7g3o$lAvw$YqRwpV z0xzlNV0oC2m)AL|iE%TN%Z%+c?W70hm7=14>APDxvGL)^dekMQpp1e-z4s;9w{%by z4nR&cViQeuHb>o4|( z2pATg-Q?y-Js;FBCaJ(`sw9c!`0(fz2Fssnz9j%b{GU*9MD&VTYxhPA^Xba^V6l-j z>?E?}G^PIPkaoroQX6TXeCxHU%)bILGDv~M-5t|)hj-}}#YjPh&=XCEU)!mXxplC? zpr=nNU%9b&pz=VjOod|(4T^FAWtFP-3{7>oKBb?lp&-SbBf(viQ5Dvo>|FuW?+LFF ziUJYeq)54pj>w0GdzxSbrLSy4m#hwDOIoPV@b`LVW@LcAcN;4!Dq!#qQ<|EW z{u!RTva))Qg41)Qgrvz2H}$@fSU2EDl&2PfFvj2UOo?K;L1`-}p|Z?;a9LdWN^XG-sc@9_0NmnSI zIzxr)>wxyozPk-lhT)mA8pRdx5%h2fT==q?{v-}{=)IWB zfqd{_{WdI9{PVUSPvqd*Q1vsG0K^B8)77bSEC>QetIixzkjzS{^`_WR!FHPqlUcEW z>hvnsE+4#g%?2T`zhedaMt%g=A-KP-dt)Yi zDGF8Shrj99W8vSd4hJV#%=)l+U2wn}E)kKDgM)HTgI&6mQi`w#pmia9%VYikU%PUj z-VC*Z#ZBBNNB6%{fBJ(sfY)Xua9}<>w;YOc|5cRAH2VA=rAS8$(w|8ba8gQ3B4Tc z;m;kT{CQb{uqD<>pvr>qO}vK(jgym~(+mXf(Lc0+;Cz&0mE*YENm=`P`*2yyuU_nL z`Nw23kSZBBii*0I^)(PKM06=TTqZVm0zB4er7xW9>J=^OL67AyfE6Xa5~_KjSIbB8 zCHRH?d3DOI?2b=+T&xe)M%smwLrVrd51OVw#V~56m1Lq8q+zlE^9hcEb#Gr6lU$A@^0V=J;;R6vCtR%Z-ZL zAeb>;=0?t=nB;l3@M>-3*z-@t9?gjGh=IWYhW8c|88i`5d(?c^hCe^P%hhDv1II*y zTY|qL@zHu@EZPHr?uVV?<5CM4gX1b8h&A znVD1oJ9CIWIacNL6*#|r59Ex-a1Rr7-9V&jr3pst+FM~UPhyyR-Y5z8M|Tv@vIb~S zW-2G}5+u#&Rq9hJu~FYCP2T{~90m8Ts;{c>o}%K4WOhYI>=`T(Y);p{YqGB$is`9q zqgm)FWp$c6V+x%&kxfyeckmSD<@a|m*q*kdc~)`imLp#qEc?^kzzB+RIh%Gh#SuhR zSc52lLBSI+c!~5avFS_H1z>xhvNAGu4E_2vqGZzPpHR8}jZjur^xnO>)k6LG7t=1X zT3Ztb_`Wgxw`Bt#2$#q|7<9W!R;mOVFz8h>zNDto!1(H6=Y)h2v3X@eJY(6V%iq+& ziO8Rr!Lz$L%JPH8O5e|$OFcS~p`mTtT%3fsu8N8m5-E~Vj2dM@z!Uwd`CS!0vha0& zSx!PnP^ZLY`Z}^Gf%{z*Xq2yb(tEvSL<afA%XI#2tC8 z2j-4;h=2;IqxDr0k=ZrY`s0$d!ayrZ{&C zTYIP!&8|o83A_UAYPDCBFvwUpmo(3ziAlh03-;?;>W(xg?&IDICyc1lWT4>WZd>Y* z+BYaB8X|%T!>qesm(;&1jgE9q57fOx)YFyC%+9{jLIA)ZUHVekaapF)I=rAQDlt-i zTzS)?KdpJ}hm@w~(tPW>Isq9Oq^hVUc`C$8Ebsk$tjqQB2CvC?n~g^6_h+ny-D{`o z>K#r=Wr@v_S~A6UrpE7*ogS{yUO2NU6$+GFsyeFGzf<4gXsL!BJrbyXAD$Meks0MY z-d=60(BC&mee}qD9_*%qB32-2>A9Uyv55zx#^d3>pbdlA|8SM-5hrK3N*~yXS?idF z-RCtjL7@P`M86INFHjJ7~cV$HPXoIVqLP{-ATNu@fXwU6T7Vo9{}6{ zqz4WsARr)mDxa@f$wB$@OJHEyS?qVz4z)k5L6$WC6-%+4xavu+W+9bkfv!%Cqg`@L zpoS)!ZmQw2P{&;oL#%tP%`G4!U{4(yro0n7=2>8skr^jUi}O;{^XSn9VZMWG(R8i% zbk{^8!DqsQoLlx66eLV43xjZCXMwqM56t5(`4JgqO3DpB8wo4|`ZHGLy5~9|lO~3B zcX|05gjS50L0dvqd@xOyf2VO~#_TRBOMhSApQ4hNW5qssHi=zTt~Y1W2TjhDaWJehFdA zO8u$0wz^`A22RCukIl1u9V+5dD5|*Dy*y{#sR%$D-O11f)9w>s*f*n64+a6L)>N%X z+sh)r8-1~~yYN|Re0m?`)DD-CCi9E=j(MLD@7GCt81;~j!@HSWrai%J0&*WoNGKIn zTxv%s>7}4!-@IZJlg4%($XL}2biazY2$<7(b+iOpL;!+vM8K-8(vLWCa3>vyq(s#E zx9wkwkJ|??g67VHTen5Gj5R2<3wpx`751&7b8Gb#-%)EO~QKx8q^ z1g$Ouc0m0dEmFxcHi@jnk!PUn1ITlP9nXhzw0ykW7{qdw^W%@?*454E>$3G~7o&17 zgXYq=%MCOA#k}%*Q))pJT?r#^+9^xopgSHrkPqC7Bu=--f{D9BaSmX&fx%X~cy@*& z*w4#z6{4{o&UrO21)hR*U7ITbWJFIDyLY}B6GP6ydIJr5$OSl1b5rgwhXpxBji#nu zs{&I7ar7WgYT4d?c0>Rv1L5`y$6@NbcO5`NUe>k3X4HA8&ERsKL~mtjv0I1ui09oC zfpOREnGX}tAfRuK=4m4wMnwlV%vxKT3$)7>(*p0`D`)S zHRXAv01`ZOQk9OU>Q4!^%|{Cq&fT4|eRt6v2h05%7-&CF1gflCzeBzJTryYyiYiat->uE#YSAJVob=xQW<80VAbohBI5P3fVmb7B<<^1mDL?IU|_5)hsN(R_}06RcaX?!ot&l!z<8wveQqCmU##=f z73?L=1Hh*@S#&Fc=MAz2S(7M*|;4AtS?94q&u zwC%L8wgfFUFIqFsHcy^CrOV1NrtSwa@yy1CpvOpH;e!WM(}mRvYx!oqR2Z(MtgNg> zl=#Ub#T1e0>WF3O_g+M+BiXPyph0As$dMtusTme1NRiJSE+5q$U;5~Ro9A`{ecQD& zVxS`F7JIgrGsUEccwp9><#uA|O?(y{P_loU1}?XwqZ4LpQc{b#BLk%E1OT#P zJlO!3I(R4UcQ0e#2ml}T0gug|uBi;qwzj`*Cdg{vzo>PsXL_i>XiO zPu4?$lW2wIp@{Prp60!O!r8FX;7P3%Bl~$NTq!(i*$*9m+n^1$VeK{e+dzu7vSHwo zTCv6`%5(#@WVC=sp$_k^L-iscy?Nt<{R88L?9M=Hgn^CB_A<5UWS#HibXuo!%5LGy zEPzrxk9W~!E2U#i?cnD&I^19HILj;toGCAhQf0NE;v7a7O;@PW29FkP_( zJz49Ng{9yrdt7EWIPx9~znRMeXCrvQjmn9@bt$k{d!PI903E>q0XYiDpSt47Cw9!mubHcw8CnM?~Mv$sZ&RdvV&$S}$rL_~EQIYi|61FQ>I`6BlRzGJWx;H{sEMcU4XYd`#epzl6Wo zQ&!%#0E|Xr4x>cYJ@_t;g|rMzgwb9As-q7NVER}$lE4hp*ysH*Y6eQBjvE>Jzz^=~ z7ys;E^>)=^nm?N=2mYZ2XuOW@f-{dRN*c=^ugWFx6F-x?trN}Lj0ziNH>KHA|7FGq zJ)JWizim7oea-m)=wAMZ6&~h%mf=b%shg^aEKVN?jzR;(0Ijlrq$CMh(bm_Lj0W95 z8I)^G8+8jjn-77nGb(ob{(=?Y*a2?TH~$xT4o%=OT3A|-Bl5Y8F(bBFBbCT3#|pV*8i#ua+n~sv-~wb zazG)ccGXq_DRr-2<1uq*oQn9%`A8O_g;0ka;8}uH*OOlJzf2NOVpp5f3WaJ2NIl*w zpRUzZy2DatZrzFTA9)oV1MpXA;d@m}9%o|)s;Wec{X>0qpx&gaIK6smAU^dScfIF$ zIM(6$_h+CTXnCss?kF}aZ$BGt&fnXd$ZJCAWCV&)tde}NFny|k>IWP9nDvVcCgUg2 zW&XR&OGYLpukLPok49)Tp1GBdH}aRRTU@tD>bn&7aGYlx+!Ej1@Y8$j{u*|2VBYr) zvB1B0Y%!9niW*-L;+flU3pjz~s4-L|P8MvQOr}=eqv%VS3`!7iOG^mgf|ZX8s6(x8 zP*3CoyZOB5H5!2K#b{upGL=9#-3^jF<_2S*{3n7>RetRq4#_u}@?te0J zI-*M7UU-%T)H#(JeI;!63%VZ_8vEh*dV}jHD8F7h7T#9u6SZu6mn%lnV}Bh3dIkuCLV8 z_CcPCjI45Ej|Ebo8`F~%9=>;MTR3eC56*X)NKCJ@8s`L^0Y_%NQxzM6eh54#-G*qK z>~eJHC=mO{fcce-R7wHF)@4aVskvRUNYZn+cTFu7mKuc#&kYh6#3kKWpF#->^?hFp zNe#BNWZv69u$V(t+H@7Zo@g_lo|-Ha6BBgWVsO8>6`uG)$ zUM-j#r0!97Xv7M(UJRg_4!5xS96>3^p|zfUSFv*XXHW$uI^x~au?NI#QXcoyG@!AS#LG5IyZk&L4fam`9g(Br8+kr%Y)G@R}d_W+M z)8dAvSM$n8*MX?rL@WM$B6k6^ih6ag>}EjU^_dAkTe|!{d{FN1Zw;nA+}<{ZtWIRl zt1kttzq&qgo#5n%KJL{6{*F=gTzwW79}q1qE{B?mI#>hZT3Fb28@oI)9S<$`m(k&7 zY@Cr&=pDrv)eM1-r@5JQ%FfY|vFh*c?)Dr-hj}=I$M;mR<>+WHq?%CnsML-*mAL@W zmc%_ALN(5t`wJ_BpvLaCl18B(BwIz2iAmY)%AY{Y^ACDygQ0_*_g#^3JI-&9Y2f6Q zjEuaDY=%`vP!LH|hz&=&k)gVpn#EuykLP)fpk_*iaEFo#XS7QCXo2pWJ#t??tv4yW zD}byU9ufu0$I|Dd;EEKPLC0;WFx?JrB`|Ny_I&+TsY+`l;6B#(lcS$wZ;>tV%NN(P z=dR}`K~_n(0-`4nuxG5S!5;@eAa}GtFM{Ab!i1~`0`#`~l^Jdq?%;y`%XPXX!2KsV zlYopd2x*+DpXjCWD20G5?ZDuE**=fu2ri{SD1t0Wz!}tgb=BYo2QJUtAR;G|PT=tH z{J>>8wB4zwiJ^Q>OijH7matpw@iOM=z)8=ozmsY7>Ptd(JSMB#O=B(22N~m^8{}2T zRl5rAuf0rZ%ugujjAqTkSzTTIZ9x))i~56r%jOG@4m1>aKIAAPTc^B`{pqc%BQ^tF73kcU!YWb#9u~PrHT_~3TpKAE-th3s3azPW z5@;QP3h36X3&D`a&P%bG%6aC^{v=t7)Eu8N^W(chRL#u8V)EZ4r2|kwvP=SYf*0TL_LU#r#>v4(ceLtM zxI!xnQ1HVG${c#552@Kd;V|U(F2EJ@<5N=$r|a(YDl0NM^na`dm7y6Ky4w*m8#;WY zW{EwqBEBQ5Gc>d#`6#tQ{SAt(w7|Ku>Qa}>(nG*{6Pmj34vm8@ow9Q7?C!q|j^49B z1!lwycyB4r`Er?cXX}oKr%B7w0v!D9ZsZCB1A`|^+YIj4iwC+Rk+hElv6twh} zWC91g?_bAnKjO}h;yo(c3`-Pp| zD~%M{9-dtb0l?jG46qK73*h&NI}9-umnB^>g~6d0+fjE{e9HF1D-;kWkI&s8t3(~ zDO9Vby88ZnuFc!md2jkb4=3ZScGcqC>by(L)6J<`8*7bd7Tx-m4@qOyYblCJNY&u5 zk{4EY=xoSXv|4(CaaTbG)pen*p=>napv4LBG$5Y#k_)(sc8ht{Ww`*}K!Cy0)*&O% z+7}0X;ONxd-A#YlLb^DPUGM(e($PNO>lHbnv>7gG27}j=Jo=6=qzo!=>VAQEAkwI( zl=HN5Ha>tH{gYLYf9XiD*zC|7E)13|MzXDDWmuMGDbQzu^hqXGvrN8rxe#XSPQeWm zJYbvh*|u$a_WnU7^j%bV%;H3TsY}n?+&DHe@|?B9TKR{=`R7yM=%C7>8{TZEb<@D= z1w}1dxl&Fx5K$de*6AU&*X{y?F#TDs;emHMN-|)vKa2oJ=84PvD_dJb!^h}ji}-La zAHU#?JO0L1{Ru(jd>Q*Z3j08kUcT&|Ta1mrA97!$?DCrde+R?01YV<&#b71{ zr8=68`M%1N6gp!e8R*9q@R#s|RzOj&lvXY;V5QQ;l~&^)4TqR|G%ezT znaiwprpMb3sfDT{Nkq5Cs#}kD`H_p+y@A}|Y(hl%gmUfgliPvVzH z(p_w~OPNM>Ee-|-l&PwKRG8kX5ZPC+!4f~cyKURqF-9$5A4s_hlHEzLQ|G1c)l+s{ z=M-0b+an;Azr3K=8LQp;Aq4Rc4kq!IrHMd%xByX1-LIM&d2%lc|3`cbkur6>bBfqn z>IIh2c>jEvMFijvH4$~UHj)Qa%kwU^h}+O(dLw*&>C7C$RpFp8Oif+FOuWdWX#pmY z;d}qnDS>Ikb*Fai+$0*&vA5@sr=H=+`pS^Y<=b&Zg^n5}#bJ zO_a+$!)dN{+G<)b`^z6OYEcLbxqOj&8r@BPazI_@)`{uXx|!;-HR0Sk$Rw>6fdV;J zFhx^7jBiy@y*LJ|d0JXpTdSQJp2+}HGH_B&rk84xQ9Z|2bY?a$ZV)b?M03HK z;{fDdlFpc5a;|sv^G~JXn~fo9`J2&xOHF>4NfZU}!j#0buO1!wo-pBhrIeD+`MEg< z$K<3hK?E>yIZ);Wy(ZsZ2+DG&bN`vdW7ceJb~0*Ftb+xlwJuuO%Axd6gY^Q)A2==d zSzpvu?<-^&(OGqa%kLNm+jV<$qZYV274L>wTdQCK$&!~2W=wtZ5Z_PkZl|^+CBbaj z#>U2p^|r;AhnC@zl9I|_gDZGZmms|`g@_YAJL-ztGgG1l?o39LKqM~au;E#%QH{HM zZ;A;u>Dix`VM*VbGrlDO81>q%CV+CP_HU*i4aP3t@4$D^6iRE|o*f_Ubh1ZqdM=Cw zC)EN9$tvso-kqzDVvY1DD>fhyl~Ypo(%yZO(!zY1?OE3>J!fui%h z^Z{5*I}jBWN`-u^tU<8^n@$;)%xP@Zvl{#<5-GfnxYa(`X_ z)>4^c`HgXDMILT{J2a?cEt!2lCjwht$l)Eic^eNf8?a5y2Cwt@xHzqEGneNa{{F#J z0PTL;m(B~_sA>dP(v_R^>7z=3J=#7}v!X1cFlV9g*&1+?pgJgEC3SVxQ2hW2ZuMO4 zr2;8wCHhaG+$b|i@9t7AYdGrcXx69y&_;q`K79QTllKm14;QLt_`wC!b_=xcMA4^Y zE6W=JD}P&K$I2wHWOFTj#;0!7 zzmTpka)$>~jy+JO7hzwck{f2ID{8L}krSMDSY)-bMn%>eDI^CKvHr_v(OQa^Wd~CX zD6RDub>2XB(i1lKg4&YJC?~#$vRx__9nH;AFpKd4->qrslBMp8`yDgFuoJ73G6s2# z3H1`SI~5bh9X#6UR`ykp1_S{?*oBtnILM^qnYc4-XT`>i+#l`vrzxP(CZ8g7rvS7o zffix&;IiioDJpYMg7LalL7Q~d%?H$TqRjdwjb4koj9>&`{9+(()~&^Ev^epOmlyD2 zGgE{F4=fA~)0mtIX22nzz8jTm<|13Fl*}E>`F)+|2PmI81W!wV=7B8Nq{~d-*>Neo zvMxyO$6*G?-^V>p0SRjc(XKWNj{15S7#PPr@DA4d>)-URvx7zCK_XxLNf`Sa4>$Fi zr^U$YqN0`!m4RXmJ7TBrm5CxDJc*BvuSaO^EneQ*6Lj8WRjqKWEJ(|Z9DEon0>jY} z@rZ``e8&BZOHD+53F#R})_{dM-9e>2hOuGgKV98V7GlG|v9TEkJ>3vun8EEi77E_- zt7=+AEC#f_V4Z-9qfK?~B_MZgfeh1eK+LBysn)HhUkL%orN)9!z&^i)!Tz@bHqrVRDbNzIAMqwZA?-ksOa?= zJ_c3Fx~{ISZ^p>mxh6}^AT6V8wa(ToP)6i+r`k=godJ{hSRifxdur8WlMlq&H&8CN zn|X0wUKgH0p_Ze%WL*j3JNPb?3?jqQ49m(?K9`_E>04>GrRw*Qd09f+fO{*3m-ZxAzKxi72P21432W!VqC2eb zz1MnvtRF5pdSgv`cqHG2g5U5cahwYv8~o4{W^GpO+=JDjl@YE}3gqPFI&>P*J=9Kw zSr>kt?p~fMetX~pICAvq)gG<`REBTu)}ATbkr%bziOOqFRyPiZZ-v8=E0_S%E*${n z!Qp%{GH{Usmx(gVQ4L|eNr$CNHW`m2cH52BD90DiKn=IoqE$iSl>#k6IXWHsD7r%UGbVoTTBefuA z;`P3upcQXYVo0G9#>pzA;;Ts}zj+1@6HJ=A^!Q!d^QYV^cdMohczhA~H*QJ?KWGhR zefnQwc7rr`q+;ivDLRlzy4ckhWNDah#H(jLZDC-@20$q6g!|NZ(P4>IK9M~-*?wtY z&>)y6H<~NWN8vWOH&FC7^aA|{B!35F+4;Bxz4l-C8#ZG$L|?StFgM7q3~#WzIxdni zB5#{Kc+J^j!aSe0Ct9tR`1cl>Par;Ye}i7Ntm%wJG3oiLCwdhSp%0D*`#$)H`-K3J zPqr@f#tLYbUPn5nk)Br{y`eIM{*Ai19Mh>iZ$@oyOK?icmDy}9#-G5{j z$;`>eCrZQnbWbV9=_a`<>)@?xoN09e9-EM@DPbxR*EaCY{OJ7%s%sY7(K!)eVY4j? z324{TX~=hAo&!loPF7LCYp(35`}?&QqzUMiY=}4nIW@It5wJx? z(p-wUwSa)0a^Y7r(h0o1J~G?yD$2hBwm>3x-vzP~{kFd@3Hm0uJVDce=4+<`Tu5VGgf3WkW{#{(z{NS}0 z{Mlb-nR(Ewxb8$kiek zWfk7p^&)3FR0O!w$!^l5fCvd@V-f~J=$-0tePNFx-zGmi#GK>H^w`@9qdDpk_EFK% zBo;MZlLBSQ441E9W3^^x!0U<2Baw?L)T@>_?xhP@I(79Z$_*>@^8^YN1FbBBDs>_1 z?qV;)>u)ba4$8~Fi{v}!G+1vi##2T(^&zLc9+Ie}tPFy&AhJ(f1FVL)+HfGVI)y?l zt@4a2F=WsA(#b}CD-h7Djt&i72Itz=Pa(rO8kxJLORQ9&$_MOt0Sp`#9(8$fcH_v_ zK=mLG*(hj}7lL8d!9)y_KfkxL%qV>Z+)XlwsRX7x&$O)62UPJEvYaa_l3B~%r|BWE zDHM}D071A)zU&Z%dvD)nvStvdZuuw|l}FM9#3Zbc3K_6^O=emb>k+PCC;3oD+_HpLEidJ=p15C-@xrgs-W0Qkw}-0CC<@zGkfn#u3_T@((Xx z?mytMmgvD|O`*Q} zWO#}H))gdXTZ~nBLzrBg5%Jp`AHr>VQ-mwo`O?Gxd#TSCzVO&c$GHWD_$v2dIu_xe zIS$!}e3rLQryI6|cq^N!`Pd!QUD? zKvAIU039#6rSST<3<6x4S$%<%ExQv@=JlYE5SvcYiUCYfxnAzaoLi)9S{I87RkBZFV?~1&%{CFBe^K4%t&~Wwhm2$i2@J&XJ`J7| zz>%O9#mjmVxw}f}9-9C{=(llK3$-_19IN0kFt{MIf+(8`Rhs?FEl1-8T|T6wc&j9DcB=Si z+y_rmpE2H|~6t_#~2-3cy5Sa+X;+ZM<%m5&$*pQ`ET2-49tx3uIqCuz5* zi1hy?qoozUeeFfTr@&)StMY8xBQuF?+S501BXYFv6LWgq$x{}slShT%1k47d{{~5ddw)RtBD)V5p?7?r4AY zYJ%GrlsVtK5-ml8?RIu_Q?DprWzfEjsk{J7KK8xC(tIOC>9__$c||=JyN*lYA*!nb zBNYrLKA_UnjtzDe`$Msh;~J<@vhV=qX*`}`tR7hkeR(0Htw*nogl(gP;cxh+!b`=?aAeSyOHjz4mj~= zYV_`BA~f`^BPg+*aA)9~S?g5{cdYfFo?loV&$GFZ3vEzn%Z zY-g;>bj!}%=wyEGT#J}q_Q0M+c%q)7!;Y*r(AU-#6>c48b$dge?^ zcKtnP6aN4{6S27S3XhiUsH{~u{62*?)NL+fs4(t~z=O9c0I!VAM&_8ByCz!A~pmgxBT4d28 z?O)1WdD<@qv{=-kIlq4WvYx1m$_hz&KAct!O&G}^yB5p2fU1N}m6)7@FhSJ`0jSVR zh%tdPMOJ>>KTxVoBfq*)(BDw}@ENkQ*sT*uWi=$j{nP1 zWZ-k#tXKa}wyo(x{BuZ_{0dlopOmx(Z1c$ z6P^UeVt~>2g4JckcEw=7iy0F!^Ebc=0tX2!>KxW!(PqD~eZbDhSOb90iRxFx*HovR zR_1)yqq+e1@QZEQ#0a{vI44iTr@6a7&eicr>Hjr$=HXE9?H^Yvl~yWSaw0p)p1sIU zL<|i>wn$R;Wzea#SmPieBun;fGTCJdqhy4Pt?Z25jD7jtlRD2i&+}Zr^UPmeqig0n z-}V07_xt^N$DEI6z0h4`%Cac0w5?bC($SF=Rq8(Fv{B++A=m74Gz(U}Uvd$M@;vEb zM{m-Y+gefDL#)C9bn@%hrr67ZT>JysM)`_EYdl>1OQn7@Igr@%M744V+AP5=5@I4^ z$%2It+yt>TzaEVT&NZ;f?1}a!WUJ1c%E7+2BL(G@?3Y_w}d zd8TEyry_M?ZCWbC9N!NN<4&yfleI2yx-3qvK+;ljb%8Z5t1)1eL_Sy_!YY;Mm(YDG zzPo6~YWa%BLPGgkr%aZcNoB`}rJRQganzvC(SreDb?rV&FhO1JGM}6Of+1DWxI>%l zo#ltij%JnU?pG1%#dUrRZ&St3S$z2lqKpqgtm)~m)QLB`_P6$Woixn#*j!)9>Giht zn!vocp|c@lexZ^>HN>F@&5?RNvd-10CD9pROO5`-;U7KS#>TU*owJ z2T^l3?QTN)fCXsB4^Un3t$l19aM=Es-dP731^RyU%A?z`_)#XQ#$jqSAcS$vB-ufA zud-iY6h?t?fF%Rhif!CtsGO>-2~J?(96gBthQ6wKKM+QH9gO$*g*^p!K3 zxBxK*Xt~71%i-dQ2jmu~yBa$vt6=27@b?N(OhFPEW1T$#GY6u^>9w_!Qe|fFadP&gotq*3Mx=Snp&p4zy&9gp_bR0A^jQSE0_Ug2DW_r4Vi^=FH z5mF$n!5rS)!r4a;W2{|Nx)?2C$oq7yO@9)WqD@&eDFSqn^)!yh%J?Da;t9nOPF%qo zwWp49Pq4XTuI#wcv$?BO0Y98MiXXrOud4b1bE`Fu9|LakOr1|^6p<~T+045aD^DqY z@)w)l>q8s&XvBokwT#m#Fr(9J#Egr=PcCxQ_sGS#V!%@;?KSD~_;Rm><)C4<5nu6U zOgq1#qEff(nA7*_VMve6U@&~H`$CZjl&p`)JlolCM-8&FR6?0gTMlxl9&mRmp<|_2 zYWr_S=n-zZnWvb*eUxL|bO4xvW`E0}T7UEDr8LU5q9IiU7g?AXj+8Ww?Ir|t8W(uL zM&Ru3^ZgwV!WYD*@W|-_iScu#0!MUce=jgUW1}PZZd+Z_ftpyx#k@sMAs4C+!x4tp z8Y%jZ4}r7yq%>NLo!w%?>%%IU2qS{~xgxBFZw%XQf@>Zv&GgR@%DH)^iXDg@bj*KS zqy*WtQn;g$3l4E1wqm!xg42v+vTZwJiRa9jF90zwUCYifl@?XF3FtV#S3G-e9&i|FLt zU0um=b1R49HXtN54H|V`n*%AP-64h@;ypb*Oe^WSuVi;ued&hvJpCWx@@anHeQrc_ zHDx$ee|V_4yB)l0$>aqI_9VTO06JzNvrp`@>r;TH<*hzIODihMkBi^2X&J1KC)a*#sau)Y_ULg~RXm^}ANF1U_TI;= z$rLmjRVQqIrQZO^MXyA^x|@QekS~e$F+w7~XXa*RzKjVsEO8lsL?+tV-AqkMVS?Nb zgO0X#b#?8w)>gZoyz9V3!RzUh$*!C(D*slir)Oj^Gcj!%4XQkPcZ z=8wk4gfS{raNt3rO-YGYb11XCg_bC?v}gD&Q7lHpRVAeQq+FPr@D3_p5#xHf{YQR}Zjc;=K|gEG!)Ma&vxI(@C%3%G`ka#tc-oNQ4enEv)*_Op;k(9v<%E>Y@`Tt9;liBRxf3vlj6}ua=p)4$@3fZ@pN(2$_hbr5O%RvG};SEZ7|i z&S$m3uMxT#8WOUSUk^Ru0Z<3=X1a{^^#f89~#@oF>J9D zF06auN>m4&Ixy-StgH^xH(T~SRiFH>60^A|_@Gf59lb#H9qTA{h_k+~&ftyF?=L$# z@L%v90U-hV4;;V?q_!4Yt`TobGK;-2+m6K0_lJ>YKu?LwROD-Jwt>MwJKMar5-;iI zP%lQtk#KW)!M#7f!6rx=KP zeSLd7HzmC_%Wg3xkEieTXDq6N%JeQ|g;6ro2*Vn2xh9#Y?3=?)k+vm2=UGeCA|fI? z+2p4Ca}(A+B2n`4pr`el{p|^#iSyldo>bvm4ZkgxlX7Cj?LR;4KIk4$uNftv-s+lw zl6%3{4p9^2>WR6zIbUCQ%4jjZp2f`6twiMdz?YMuK%7I9b$(Jt?<#Tek53Fwah#$W zeJ34Jxg{sP>oXQ>dy!D&V0yuT+*2IblSxfOa(BLa7Fl!v;WYX6Y5hSKXxp6N(M{a0 zhmR+a0a8~dB+U70?&56`TQd`*M6f-Ccdo(nb*w}5YZ7`l(<(5bHH zuKm5NGVabdXiJNML!X%N{4vk)`CDIk0`Bbm&soX}?zs@@=I7U{AbA)!IBw7$R`a;8 zQb>AAYMYe=ZRb!Xnegz35j7@77UGdIGG^kU{NAL7&6e>5HaV|q*YN7X_YVq$_6wE} zbFrbzFP}NtcNMHa5y4ZTp{;I8{MLYC;@5#_29o)%z^6}HWj$&!>3?))nfMOJ;A+*| zYR$wYB}K947=)O_ZPvBcnEK+e)4i4bj^B=G)Hn&jQkt3NIiJyNr6Y;VG7W_@h@CQ0 z(mmIgpO&v34v;iR39tqeL`86BX6DjVyK`&!u#{It$Mp>e(7G?Fo+5hbYiPA+H>()E_XNsJ=M2S{iEkdR|(SS8m>BGL#FoK0aq*FnYk{H z@F%lYK!WY7XVR2-TcN4dh!g!~R>ld6tGrelwBywG2L7w_;yz3$DC0tWiavI_+`lpf z(y$??%&|WoSL%K=Xnp;H4i(jzKTBWZoF`Nl2vu4Q=#+zdtvz!Ed`GE_t|@k;2`q#o zw)_mJnmc`;;yZ%G@;Wo3sd|C>eW*(P(#5L}2iVQ_=LP{3O0B@RhASPk^ky?djr#M! zzJ6KUl(U9PiozvDK~kA@axLna@w9K^U*3n>b+4U{rvZsK3tzsi-c(v9q7w6U83@YE`Lv$mU+ zcVJNs4R(y!vLYs`I-o-Sx6irwY2@PzCZLGPZC9)PMaH5keG*y7LaVu*zefUCh1i?P z%@GSin)6wvyr_Y@#8u!zb&W&ktDjuj20d<-FiL@pn0)GYc+|JOxj6`h?`XC0Wu2hT zegpBFy_G~C^R0N8(dR>sZ^w1-Px7|3*MDq_?{3J6U-{8+ayN(mvug0ke7o05*i$~J z3UpmV3$$$U3TdL1Gy%Snj@Phm*@MLk3{1);zBRr03<4MzuD#9sxN%cau^N;=3Tb}u zr3Zs8Ad4ef&ix{^s$lL=bnEV|{#W)|S_0*;94vNwsd9ko9^JFfa_1GoF>c(lx^k#~ zNMrxbg&ivZ~gU3Ob2S|RPi z?>kK>(Zf7B&L!x0F1QS!=lOCY&+H~fWBk3=p9t&s*oNs=7XtH>8 zlst5$in5rjF86lRvvzhatP32;XR^!L1WuDlu9SX~)6ypgC=YIZ?-J#Pbk>wCaxf9W zDtR7w^OvqVuQPf%{>*~qI>(#PXtklzmMg|71wqZf0$@4NfyOy;b#Obh3jr*b7kTpi z2|awYNF!9B(yjwzFw-sePcqh}DU9>$V6v`;g)Luf;Ncl-T_v-?^8bnaY8_5YTr4}&Nc6|Ctpp@!;sxlgCQ^HYXt<5^ zh-|N|rNsqn@0%nK79x;|f=}dj)#s$tlpGYdmyEuy@HigYJl)+oGF~L3-c{|Gt|By9 z?)S1AE%HtGQN>PzAA(YKVoB?Dnx#do*;)4Qii->VYgB_?HNm|u@Of6^Q|7l5`NOdE zo#-lzg^=OxgU4#G=HYR!eTFBTw>nWGbQ7$0Ew@_ zV0y5JjL3FNB$=D*!njqHfXS!#qm9(9ii(e)p79Hf2Ue8seS`k0M5Fv9D0RRG5h?THu5xCi2AoUTUcz8vZV1izT*aWkeGg-WivhJUn zH`WffGN-0NNy3ki`8@Yzh4w_}8tNtUhD?Bexl4M@+NH{Gyb-KH-t>N=IX|6{*sB{erf{Hg@402mD zz2?vLX4Wjdyxhl+W4u-&+&#}6h*L%RoKS2X{KFqZJ?l(iUH<-YS4URwZ=9SncZf(8 zl@L1aQGQZh-nj%(`+9ihhf{w8zsBJkdnU%m!A4-a{!SP|^{(VZ`tUA=dH@n3Nf4KQ zS0zt&i>}OXOP){KYb8UR|G5yEH1D;3KH5>(GRczXU|))TZcp$rdKoq&q^gXBL_F6C zfoO(f$1t}y>YwMLT!|eNYta^Ys9W;8pM;4?@3prDg2;N(`ldlOZ)ME0c>Flzznz4>al-EdXAd84p+u@7 zqC~{RY+HK_6*oW$n$K`&|Gs?(eHUfL#S?6^mDb!Q{M$hix3NAA1UPZIsY-hwwAI7) zf4OXaTPbD%!SGh50vY-r4r%#4E`+vo^WugNivNCc$32x>V{d&btDNx+z zwL#|4qE=bSNx>qEV~H4w)PT2=lRiZc+OFneIYToe5YbqknB@5 z!haQ-A&m8voFT7o?A?WsF)TQYv|}YwXHiI`ea|~#n01G3CCt)L&iG|O!PV%9IIL#r z@HQgigmx+TeuHijdc}#3k3rYq1t@9T(epfsN^3=63b4kxPkr?QY9o1~Bj2GTg6pK@ z`MhC4q(tTDs4`j7!3f*&K8&u=L?7axCcmVYFB>E-O?J7D`F&A@Q!7_ z{XrsH*3q=&j>K7s+Z}N$KW`3+Ne;SEJ2)*(>P5~i!&7lqkQU6Y~ML|NRhH~=>#hQ)#DxgGGd7b<|PG2yQP%Vo=}RUike--82IaMbW{ zrhXE}#oeG5l}Yz!#1rKJ{m@qcpA=p{@bR-aphg`XRrvANy4bsebd{KOOh!H?><6NDjda1{@bQJURIL4|nO0E&TrrO2q~zHiX>=)P5#azFg^n zAp zp{d-nWf&(g_%OvmwILdHny5>VZxFFD+G{t%Ac$kMG>+Q+)3^K2d$vl4GuOLjKFrM| zhkbgEf5^8OOXGm)JD?QW+5FnF%el!qOJBNT-QERiFlp3T+c`!tOSYELw;eDp zCwKkY=GhN}NhbS-_uixE)&XYa_)KQcrz`h=jUG1X297#Tdocdk^Hpq0%J;NRp{Jg7 z9u>Ngd}a#0vRc*2#X$`q_0A9s(O7K_f40=4SimQ$NZW3W*MXHv%3`ojw&h9vukea* zxz&=V7@5p}eA(YX;kaS<6yWCGH4k1qul( PWi!;3FJH=0G{66UO<2^` literal 0 HcmV?d00001 diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..02a3681 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,23 @@ +server { + listen 8080; + server_name _; + root /usr/share/nginx/html; + index index.html; + + # Rien ne doit jamais sortir du navigateur : CSP verrouillée, pas de connect-src externe. + add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'none'" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Frame-Options "DENY" always; + add_header Referrer-Policy "no-referrer" always; + add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always; + + location / { + try_files $uri $uri/ =404; + } + + location = /healthz { + access_log off; + return 200 "ok\n"; + add_header Content-Type text/plain; + } +}