From 8fd3eeae03330663b083411e11f01ac9349f8537 Mon Sep 17 00:00:00 2001 From: Myx Date: Sat, 21 Oct 2023 05:09:38 +0200 Subject: [PATCH] Larger refactoring and added avoidlist --- avoid-list.json | 3 + bot.ts | 130 +++++++----------- client/handlers/addUserToAvoidList.ts | 20 +++ client/handlers/deleteSoundFile.ts | 19 +++ client/handlers/deleteUserFromAvoidList.ts | 20 +++ client/handlers/getSoundFiles.ts | 18 +++ client/handlers/index.ts | 15 ++ client/handlers/joinChannel.ts | 11 ++ client/handlers/uploadYouTubeFile.ts | 60 ++++++++ client/web/assets/favicon.ico | Bin 0 -> 15406 bytes client/web/{ => assets}/logo.svg | 0 client/web/client.js | 77 +++++++++++ client/web/index.html | 86 +++++++----- client/web/scripts/avoid-form.js | 48 +++++++ client/web/scripts/avoid-list.js | 39 ++++++ client/web/scripts/file-list.js | 67 +++++++++ client/web/scripts/index.js | 8 ++ client/web/scripts/join.js | 18 +++ client/web/scripts/upload.js | 100 ++++++++++++++ client/webserver.ts | 127 ++++------------- helpers/converters.ts | 7 + helpers/generate-file-name.ts | 18 +++ helpers/get-random-sound-file-path.ts | 11 ++ helpers/load-avoid-list.ts | 10 ++ helpers/logger-colors.ts | 7 + helpers/logger.ts | 24 ++++ helpers/setup-discord-client.ts | 18 +++ models/avoid-list.ts | 3 + readme.md | 2 +- sounds/1697309103654-Rev Up Those Fryers!.mp3 | Bin 160633 -> 0 bytes 30 files changed, 753 insertions(+), 213 deletions(-) create mode 100644 avoid-list.json create mode 100644 client/handlers/addUserToAvoidList.ts create mode 100644 client/handlers/deleteSoundFile.ts create mode 100644 client/handlers/deleteUserFromAvoidList.ts create mode 100644 client/handlers/getSoundFiles.ts create mode 100644 client/handlers/index.ts create mode 100644 client/handlers/joinChannel.ts create mode 100644 client/handlers/uploadYouTubeFile.ts create mode 100644 client/web/assets/favicon.ico rename client/web/{ => assets}/logo.svg (100%) create mode 100644 client/web/scripts/avoid-form.js create mode 100644 client/web/scripts/avoid-list.js create mode 100644 client/web/scripts/file-list.js create mode 100644 client/web/scripts/index.js create mode 100644 client/web/scripts/join.js create mode 100644 client/web/scripts/upload.js create mode 100644 helpers/converters.ts create mode 100644 helpers/generate-file-name.ts create mode 100644 helpers/get-random-sound-file-path.ts create mode 100644 helpers/load-avoid-list.ts create mode 100644 helpers/logger-colors.ts create mode 100644 helpers/logger.ts create mode 100644 helpers/setup-discord-client.ts create mode 100644 models/avoid-list.ts delete mode 100644 sounds/1697309103654-Rev Up Those Fryers!.mp3 diff --git a/avoid-list.json b/avoid-list.json new file mode 100644 index 0000000..41d8c96 --- /dev/null +++ b/avoid-list.json @@ -0,0 +1,3 @@ +{ + "avoidUsers": [] +} \ No newline at end of file diff --git a/bot.ts b/bot.ts index 47197b9..4f9025d 100644 --- a/bot.ts +++ b/bot.ts @@ -14,11 +14,17 @@ import { VoiceConnectionStatus, VoiceConnection } from '@discordjs/voice'; -import { ChannelType, Client, GatewayIntentBits, GuildBasedChannel } from 'discord.js'; +import { ChannelType, Collection, GuildBasedChannel, Snowflake, VoiceChannel, VoiceState } from 'discord.js'; import * as dotenv from 'dotenv'; -import * as fileSystem from 'fs'; import { startServer as startWebServer } from './client/webserver'; import * as schedule from 'node-schedule'; +import { loadAvoidList } from './helpers/load-avoid-list'; +import { LoggerColors } from './helpers/logger-colors'; +import { getRandomSoundFilePath } from './helpers/get-random-sound-file-path'; +import { logger } from './helpers/logger'; +import { SetupDiscordCLient } from './helpers/setup-discord-client'; +import { convertHoursToMinutes, dateToString } from './helpers/converters'; +import { AvoidList } from './models/avoid-list'; dotenv.config(); @@ -26,28 +32,7 @@ export var nextPlayBackTime: string = ''; // Export so it can be used in the web const minTimeInterval = parseInt(process.env.INTERVALMIN_MINUTES!, 10); // Minimum interval in minutes. const maxTimeInterval = convertHoursToMinutes(parseFloat(process.env.INTERVALMAX_HOURS!)); // Maximum interval in minutes. const voiceChannelRetries = parseInt(process.env.VOICECHANNELRETRIES!, 10); // Number of retries to find a voice channel with members in it. - -const discordApplicationToken = process.env.TOKEN; // Discord bot token from .env file (required) More info: https://discordgsm.com/guide/how-to-get-a-discord-bot-token -const soundsDirectory = './sounds/'; -const discordClient = new Client({ - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.MessageContent, - GatewayIntentBits.GuildVoiceStates, - GatewayIntentBits.GuildIntegrations, - ], -}); - -export class LoggerColors { - public static readonly Green: string = "\x1b[32m%s\x1b[0m"; - public static readonly Yellow: string = "\x1b[33m%s\x1b[0m"; - public static readonly Cyan: string = "\x1b[36m%s\x1b[0m"; - public static readonly Red: string = "\x1b[31m%s\x1b[0m"; - public static readonly Teal: string = "\x1b[35m%s\x1b[0m"; -} - -discordClient.login(discordApplicationToken); +const discordClient = SetupDiscordCLient(); discordClient.on('ready', async () => { console.log(LoggerColors.Green, `Add to server by: https://discord.com/oauth2/authorize?client_id=${discordClient.application?.id}&permissions=70379584&scope=bot`); @@ -56,7 +41,7 @@ discordClient.on('ready', async () => { joinRandomChannel(voiceChannelRetries); startWebServer(); }); - + /** * Joins a random voice channel in a random guild and plays a random sound file. * @param retries - The number of retries to attempt if no voice channels are found. @@ -89,29 +74,31 @@ export async function joinRandomChannel(retries = 12) { } const randomlyPickedVoiceChannel = accessableVoiceChannels.random(); - try { // Join the voice channel - const voiceChannelConnection = joinVoiceChannel({ - channelId: randomlyPickedVoiceChannel!.id, - guildId: randomlyPickedVoiceChannel!.guild.id, - adapterCreator: randomlyPickedVoiceChannel!.guild.voiceAdapterCreator, - }); + if(isUserFromAvoidListNotInVoiceChannel(randomlyPickedVoiceChannel!)) { + + const voiceChannelConnection = joinVoiceChannel({ + channelId: randomlyPickedVoiceChannel!.id, + guildId: randomlyPickedVoiceChannel!.guild.id, + adapterCreator: randomlyPickedVoiceChannel!.guild.voiceAdapterCreator, + }); - await entersState(voiceChannelConnection, VoiceConnectionStatus.Ready, 30e3); - const soundFilePath = getRandomSoundFilePath(); + await entersState(voiceChannelConnection, VoiceConnectionStatus.Ready, 30e3); + const soundFilePath = getRandomSoundFilePath(); - if(!soundFilePath) { - console.log(LoggerColors.Red, 'No sound files found'); - scheduleNextJoin(); - return; + if(!soundFilePath) { + console.log(LoggerColors.Red, 'No sound files found'); + scheduleNextJoin(); + return; + } + + await playSoundFile( + soundFilePath, + randomlyPickedVoiceChannel, + voiceChannelConnection); } - await playSoundFile( - soundFilePath, - randomlyPickedVoiceChannel, - voiceChannelConnection); - } catch (error) { console.error(error); } @@ -143,15 +130,6 @@ async function playSoundFile( voiceChannelConnection.destroy(); } -/** - * Returns a random sound file from the sounds directory. - * @returns string - The path to a random sound file. - */ -function getRandomSoundFilePath(): string { - const allSoundFilesAsArray = fileSystem.readdirSync(soundsDirectory).filter(file => file.endsWith('.mp3')); - return soundsDirectory + allSoundFilesAsArray[Math.floor(Math.random() * allSoundFilesAsArray.length)]; -} - /** * Schedules the next join to a random channel. Using a random interval between minTime and maxTime. * It clears the previous schedule before scheduling the next join, to avoid multiple schedules. @@ -172,36 +150,34 @@ function scheduleNextJoin(): void { let nextPlaybackDate = schedule.scheduledJobs[jobName].nextInvocation(); nextPlayBackTime = dateToString(nextPlaybackDate) ?? ''; - log(nextPlaybackDate, hours, minutes); + logger(nextPlaybackDate, hours, minutes); }); } -function convertHoursToMinutes(hours: number): number { - return hours * 60; -} -/** - * Logs the wait time, current time, next join time, and cron schedule in the console. - * @param waitTime - The time to wait until the next join. - * @param hour - The hour of the cron schedule. - * @param minute - The minute of the cron schedule. - */ -function log( - waitTime: Date, - hour: number, - minute: number -){ - const currentTime = new Date(); +function isUserFromAvoidListNotInVoiceChannel(channel: GuildBasedChannel): boolean { + const avoidList: AvoidList = loadAvoidList(); + const voiceChannel = channel as VoiceChannel; + const voiceStates: Collection = voiceChannel.guild.voiceStates.cache; + const membersInVoiceChannel = voiceStates.filter(voiceState => voiceState.channelId === voiceChannel.id); - console.log( - LoggerColors.Cyan, ` - Wait time: ${(waitTime.getTime() - currentTime.getTime()) / 60000} minutes, - Current time: ${dateToString(currentTime)}, - Next join time: ${dateToString(waitTime)}, - Cron: ${Math.floor(minute)} ${Math.floor(hour) == 0 ? '*' : Math.floor(hour) } * * *` - ); -} + if(avoidList.avoidUsers.length === 0) + return true; + + if (channel.type !== ChannelType.GuildVoice) + return true; -function dateToString(date: Date): string { - return date.toLocaleString('sv-SE', { timeZone: 'Europe/Stockholm' }); + // Check if any member from the avoid list is in the voice channel + for (const voiceState of membersInVoiceChannel.values()) { + if(!voiceState.member) + continue; + + if (avoidList.avoidUsers.includes(voiceState.member.user.username)) { + console.log(LoggerColors.Yellow, `${voiceState.member.user.username} is in the avoid list, skipping...`); + return false; + } + } + + // No member from the avoid list is in the voice channel + return true; } diff --git a/client/handlers/addUserToAvoidList.ts b/client/handlers/addUserToAvoidList.ts new file mode 100644 index 0000000..de35e79 --- /dev/null +++ b/client/handlers/addUserToAvoidList.ts @@ -0,0 +1,20 @@ +import * as fileSystem from 'fs'; +import express from 'express'; +import { loadAvoidList } from '../../helpers/load-avoid-list'; + +/** + * Adds a user to the avoid list. + * @param user - The user to add to the avoid list. + * @returns void + */ +export function AddUserToAvoidList(response: express.Response, request: express.Request) { + const avoidList = loadAvoidList(); + + if (avoidList.avoidUsers.includes(request.body.user)) { + response.send('User already in avoid list.'); + } else { + avoidList.avoidUsers.push(request.body.user); + fileSystem.writeFileSync('avoid-list.json', JSON.stringify(avoidList, null, "\t")); + response.send('User added to avoid list.'); + } +} \ No newline at end of file diff --git a/client/handlers/deleteSoundFile.ts b/client/handlers/deleteSoundFile.ts new file mode 100644 index 0000000..cfec11b --- /dev/null +++ b/client/handlers/deleteSoundFile.ts @@ -0,0 +1,19 @@ +import express from 'express'; +import path from 'path'; +import * as fileSystem from 'fs'; +import { LoggerColors } from '../../helpers/logger-colors'; + +/** + * Deletes a file from the sounds folder by filename + */ +export function DeleteSoundFile(response: express.Response, request: express.Request) { + const directoryPath = path.join(__dirname, '../../sounds'); + const filePath = directoryPath + '/' + request.params.filename; + + fileSystem.unlink(filePath, (err: any) => { + if (err) { + return console.log(LoggerColors.Red, 'Unable to delete file: ' + err); + } + response.send('File deleted successfully.'); + }); +} \ No newline at end of file diff --git a/client/handlers/deleteUserFromAvoidList.ts b/client/handlers/deleteUserFromAvoidList.ts new file mode 100644 index 0000000..99382a0 --- /dev/null +++ b/client/handlers/deleteUserFromAvoidList.ts @@ -0,0 +1,20 @@ +import express from 'express'; +import fs from 'fs'; +import { loadAvoidList } from '../../helpers/load-avoid-list'; + +/** + * Removes a user from the avoid list. + * @param user - The user to remove from the avoid list. + * @returns void + */ +export function DeleteUserFromAvoidList(response: express.Response, request: express.Request) { + const avoidList = loadAvoidList(); + + if (avoidList.avoidUsers.includes(request.params.user)) { + avoidList.avoidUsers = avoidList.avoidUsers.filter(user => user !== request.params.user); + fs.writeFileSync('avoid-list.json', JSON.stringify(avoidList, null, "\t")); + response.send('User removed from avoid list.'); + } else { + response.send('User not in avoid list.'); + } +} \ No newline at end of file diff --git a/client/handlers/getSoundFiles.ts b/client/handlers/getSoundFiles.ts new file mode 100644 index 0000000..357a83c --- /dev/null +++ b/client/handlers/getSoundFiles.ts @@ -0,0 +1,18 @@ +import express from 'express'; +import path from 'path'; +import * as fileSystem from 'fs'; +import { LoggerColors } from '../../helpers/logger-colors'; + +/** + * Returns a list of all sound files in the sounds directory. + * @returns string[] - An array of all sound files in the sounds directory. + */ +export function GetSoundFiles(response: express.Response) { + const directoryPath = path.join(__dirname, '../../sounds'); + fileSystem.readdir(directoryPath, function (error: any, files: any[]) { + if (error) { + return console.log(LoggerColors.Red, 'Unable to scan directory: ' + error); + } + response.send(files); + }); +} \ No newline at end of file diff --git a/client/handlers/index.ts b/client/handlers/index.ts new file mode 100644 index 0000000..31a0b54 --- /dev/null +++ b/client/handlers/index.ts @@ -0,0 +1,15 @@ +import { AddUserToAvoidList } from './addUserToAvoidList'; +import { DeleteSoundFile } from './deleteSoundFile'; +import { GetSoundFiles } from './getSoundFiles'; +import { UploadYouTubeFile } from './uploadYouTubeFile'; +import { DeleteUserFromAvoidList } from './deleteUserFromAvoidList'; +import { JoinChannel } from './joinChannel'; + +export class Handlers { + public static AddUserToAvoidList = AddUserToAvoidList; + public static DeleteSoundFile = DeleteSoundFile; + public static GetSoundFiles = GetSoundFiles; + public static UploadYouTubeFile = UploadYouTubeFile; + public static DeleteUserFromAvoidList = DeleteUserFromAvoidList; + public static JoinChannel = JoinChannel; +} \ No newline at end of file diff --git a/client/handlers/joinChannel.ts b/client/handlers/joinChannel.ts new file mode 100644 index 0000000..7314c33 --- /dev/null +++ b/client/handlers/joinChannel.ts @@ -0,0 +1,11 @@ +import { joinRandomChannel } from "../../bot"; +import express from 'express'; + +/** + * Joins a random channel and plays a random sound file. + * @returns void + */ +export function JoinChannel(response: express.Response) { + joinRandomChannel(); + response.send('Joining random channel.'); +} \ No newline at end of file diff --git a/client/handlers/uploadYouTubeFile.ts b/client/handlers/uploadYouTubeFile.ts new file mode 100644 index 0000000..0d14ca4 --- /dev/null +++ b/client/handlers/uploadYouTubeFile.ts @@ -0,0 +1,60 @@ +import express from 'express'; +import path from 'path'; +import ytdl from 'ytdl-core'; +import * as fileSystem from 'fs'; +import ffmpeg from 'fluent-ffmpeg'; +import { generateFileName } from '../../helpers/generate-file-name'; + +/** +* Uploads a YouTube video as an mp3 file to the sounds folder. +* The video must be shorter than 10 seconds. +* @Body url - The YouTube video url. +*/ +export async function UploadYouTubeFile(response: express.Response, request: express.Request) { + const url = request.body.url; + + if (ytdl.validateURL(url)) { + const info = await ytdl.getInfo(url); + // remove special characters from the title and white spaces + const title = info.videoDetails.title.replace(/[^a-zA-Z ]/g, "").replace(/\s+/g, '-').toLowerCase(); + + // Create a temporary directory to store the uploaded file so validation can be done + const tempDir = fileSystem.mkdtempSync('temp'); + const outputFilePath = path.resolve(tempDir, generateFileName(title)); + + const videoReadableStream = ytdl(url, { filter: 'audioonly' }); + const fileWritableStream = fileSystem.createWriteStream(outputFilePath); + + videoReadableStream.pipe(fileWritableStream); + + fileWritableStream.on('finish', () => { + ffmpeg.ffprobe(outputFilePath, function (err, metadata) { + if (err) { + fileSystem.rmSync(tempDir, { recursive: true, force: true }); + return response.status(500).send('Error occurred during processing.'); + } + const duration = metadata.format.duration; + + if (duration == undefined) { + fileSystem.rmSync(tempDir, { recursive: true, force: true }); + return response.status(400).send('Something went wrong.'); + } + if (duration > 10) { + fileSystem.rmSync(tempDir, { recursive: true, force: true }); + return response.status(400).send('File is longer than 10 seconds.'); + } else { + // Move the file from the temporary directory to its final destination + const finalFilePath = path.resolve(__dirname, '../../sounds/', generateFileName(title)); + fileSystem.renameSync(outputFilePath, finalFilePath); + + response.send('File uploaded successfully.'); + } + + // Remove the temporary directory and its contents once done + fileSystem.rmSync(tempDir, { recursive: true, force: true }); + }); + }); + } else { + response.status(400).send('Invalid url provided.'); + } +} \ No newline at end of file diff --git a/client/web/assets/favicon.ico b/client/web/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e62c11201cec98b08439b4e9a8c087ed4958f6c5 GIT binary patch literal 15406 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 response.text()) + .then((data) => { + updateAvoidList(); + document.getElementById('avoidUser').value = ''; + }) + .catch((error) => { + console.error('Error:', error); + }); +}); + +document.getElementById('removeUser').addEventListener('click', function() { + const user = document.getElementById('avoidUser').value; + + fetch(`/avoidlist/${user}`, { + method: 'DELETE', + }) + .then(_ => { + updateAvoidList(); + }) + .catch((error) => { + console.error('Error:', error); + }); +}); + +function updateAvoidList() { + fetch('/avoidlist') + .then(response => response.json()) + .then(data => { + const avoidListElement = document.getElementById('avoidList'); + + // Clear the avoid list. + avoidListElement.innerHTML = ''; + + // Add each user in the avoid list to the UI. + data.avoidUsers.forEach(user => { + const listItem = document.createElement('li'); + listItem.textContent = user; + listItem.className = 'list-group-item list-group-item-action d-flex justify-content-between align-items-center'; + + // Add a button to remove the user from the avoid list. + const removeButton = document.createElement('button'); + removeButton.textContent = 'Remove'; + removeButton.className = 'btn btn-success'; + removeButton.addEventListener('click', function() { + fetch(`/avoidlist/${user}`, { + method: 'DELETE', + }) + .then(_ => { + updateAvoidList(); + }) + .catch((error) => { + console.error('Error:', error); + }); + }); + + listItem.appendChild(removeButton); + avoidListElement.appendChild(listItem); + }); + }) + .catch((error) => { + console.error('Error:', error); + }); +} \ No newline at end of file diff --git a/client/web/index.html b/client/web/index.html index dd29967..e6c0050 100644 --- a/client/web/index.html +++ b/client/web/index.html @@ -1,46 +1,66 @@ - - - - RandomMemer upload sounds - - - -
-
-
- Logo -
-

Upload a sound

-
-
-
- - + + + + RandomMemer upload sounds + + + + +
+
+
+ Logo + +

Upload a sound

+
+
+
+ + +
+
-
+ + + + + +
+ Endpoint not loading!?
- - - +
+

Avoid list

+

A list of users the bot should never be around

+
+
+ +
+ +
+
    +
    -
    - Endpoint not loading!? -
    +
    -
    -

    Uploaded Files

    -
      +
      +

      Uploaded Files

      +
        +
        -
        - - - - + + + + + + + + + \ No newline at end of file diff --git a/client/web/scripts/avoid-form.js b/client/web/scripts/avoid-form.js new file mode 100644 index 0000000..c3886e1 --- /dev/null +++ b/client/web/scripts/avoid-form.js @@ -0,0 +1,48 @@ +import { updateAvoidList } from './avoid-list.js'; + +const avoidForm = document.getElementById('avoidForm'); +if (avoidForm) { + avoidForm.addEventListener('submit', function (event) { + event.preventDefault(); + + const user = document.getElementById('avoidUser').value; + + if(!user) + return; + + fetch('/avoidlist', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + user + }), + }) + .then(response => response.text()) + .then((data) => { + updateAvoidList(); + document.getElementById('avoidUser').value = ''; + }) + .catch((error) => { + console.error('Error:', error); + }); + }); + + const removeUser = document.getElementById('removeUser'); + if(removeUser){ + document.getElementById('removeUser').addEventListener('click', function () { + const user = document.getElementById('avoidUser').value; + + fetch(`/avoidlist/${user}`, { + method: 'DELETE', + }) + .then(_ => { + updateAvoidList(); + }) + .catch((error) => { + console.error('Error:', error); + }); + }) + } +}; \ No newline at end of file diff --git a/client/web/scripts/avoid-list.js b/client/web/scripts/avoid-list.js new file mode 100644 index 0000000..4b5ff84 --- /dev/null +++ b/client/web/scripts/avoid-list.js @@ -0,0 +1,39 @@ +export function updateAvoidList() { + fetch('/avoidlist') + .then(response => response.json()) + .then(data => { + const avoidListElement = document.getElementById('avoidList'); + + // Clear the avoid list. + avoidListElement.innerHTML = ''; + + // Add each user in the avoid list to the UI. + data.avoidUsers.forEach(user => { + const listItem = document.createElement('li'); + listItem.textContent = user; + listItem.className = 'list-group-item list-group-item-action d-flex justify-content-between align-items-center'; + + // Add a button to remove the user from the avoid list. + const removeButton = document.createElement('button'); + removeButton.textContent = 'Remove'; + removeButton.className = 'btn btn-success'; + removeButton.addEventListener('click', function () { + fetch(`/avoidlist/${user}`, { + method: 'DELETE', + }) + .then(_ => { + updateAvoidList(); + }) + .catch((error) => { + console.error('Error:', error); + }); + }); + + listItem.appendChild(removeButton); + avoidListElement.appendChild(listItem); + }); + }) + .catch((error) => { + console.error('Error:', error); + }); +} \ No newline at end of file diff --git a/client/web/scripts/file-list.js b/client/web/scripts/file-list.js new file mode 100644 index 0000000..b37b86f --- /dev/null +++ b/client/web/scripts/file-list.js @@ -0,0 +1,67 @@ +export function loadFiles() { + // Fetch the JSON data from the /sounds endpoint + fetch('/sounds') + .then(response => response.json()) + .then(data => { + // Get the fileList element + const fileList = document.getElementById('fileList'); + + // Clear the current list + fileList.innerHTML = ''; + + // Add each file to the list + data.forEach(file => { + // Create a new list item + const li = document.createElement('li'); + li.className = 'list-group-item list-group-item-action d-flex justify-content-between align-items-center' + + // Create a div for the file name and add it to the list item + const fileNameDiv = document.createElement('div'); + fileNameDiv.textContent = file; + li.appendChild(fileNameDiv); + + // Create a div for the icons and add it to the list item + const iconDiv = document.createElement('div'); + li.appendChild(iconDiv); + + // Create a div for the play icon and add it to the icon div + const playIconDiv = document.createElement('span'); + playIconDiv.style.cursor = 'pointer'; + playIconDiv.textContent = '▶️'; + iconDiv.appendChild(playIconDiv); + + // Attach a click event listener to the play icon div + playIconDiv.addEventListener('click', () => { + // Create a new audio object and play the file + let audio = new Audio('/sounds/' + file); + audio.play(); + }); + + // Create a div for the trash icon and add it to the icon div + const trashIconDiv = document.createElement('span'); + trashIconDiv.style.cursor = 'pointer'; + trashIconDiv.textContent = '🗑️'; + iconDiv.appendChild(trashIconDiv); + + // Attach a click event listener to the trash icon div + trashIconDiv.addEventListener('click', () => { + // Send a DELETE request to the server to remove the file + fetch('/sounds/' + file, { + method: 'DELETE' + }) + .then(response => response.text()) + .then(message => { + console.log(message); + + // Remove the list item from the fileList element + fileList.removeChild(li); + }) + .catch(error => console.error('Error:', error)); + }); + + // Add the list item to the fileList element + fileList.appendChild(li); + }); + }) + .catch(error => console.error('Error:', error)); +} \ No newline at end of file diff --git a/client/web/scripts/index.js b/client/web/scripts/index.js new file mode 100644 index 0000000..79738bf --- /dev/null +++ b/client/web/scripts/index.js @@ -0,0 +1,8 @@ +import { loadFiles } from './file-list.js'; +import { updateAvoidList } from './avoid-list.js'; +import { loadNextPlaybackTime } from './upload.js'; + +// Call loadFiles when the script is loaded +loadFiles(); +loadNextPlaybackTime(); +updateAvoidList(); \ No newline at end of file diff --git a/client/web/scripts/join.js b/client/web/scripts/join.js new file mode 100644 index 0000000..fe9f289 --- /dev/null +++ b/client/web/scripts/join.js @@ -0,0 +1,18 @@ +document.getElementById('joinButton').addEventListener('click', function() { + this.disabled = true; + + fetch('/join') + .then(response => response.text()) + .then(data => { + console.log(data); + setTimeout(() => { + this.disabled = false; + }, 40000); + }) + .catch((error) => { + console.error('Error:', error); + setTimeout(() => { + this.disabled = false; + }, 1000); + }); +}); \ No newline at end of file diff --git a/client/web/scripts/upload.js b/client/web/scripts/upload.js new file mode 100644 index 0000000..28399dc --- /dev/null +++ b/client/web/scripts/upload.js @@ -0,0 +1,100 @@ +import { loadFiles } from "./file-list.js"; + +document.addEventListener('DOMContentLoaded', (event) => { + document.querySelector('#myFile').addEventListener('change', function(e) { + var fileName = e.target.files[0].name; + var nextSibling = e.target.nextElementSibling + nextSibling.innerText = fileName + }) +}); + +export function loadNextPlaybackTime() { + fetch('/nextplaybacktime') + .then(response => response.text()) + .then(data => { + const nextPlaybackTime = document.getElementById('nextPlaybackTime'); + nextPlaybackTime.textContent = `Playing next time: ${data}`; + }) + .catch(error => console.error('Error:', error)); +} + +document.getElementById('uploadForm').addEventListener('submit', function (event) { + event.preventDefault(); + + var fileInput = document.getElementById('myFile'); + var file = fileInput.files[0]; + var youtubeLink = document.getElementById('youtubeLink').value; + + if (file) { + var objectURL = URL.createObjectURL(file); + var audio = new Audio(objectURL); + + audio.addEventListener('loadedmetadata', function () { + var duration = audio.duration; + console.log(duration); + + if (duration > 10) { + alert('File is longer than 10 seconds.'); + return; + } + + if (file.size > 1024 * 1024) { + alert('File is larger than 1MB.'); + return; + } + + if (file.name.split('.').pop().toLowerCase() !== 'mp3') { + alert('Only .mp3 files are allowed.'); + return; + } + + var formData = new FormData(); + formData.append('myFile', file); + + fetch('/upload', { + method: 'POST', + body: formData + }) + .then(response => response.text()) + .then(data => { + console.log(data); + }) + .catch(error => { + console.error(error); + alert('An error occurred while uploading the file.'); + }).finally(() => { + fileInput.value = ''; + loadFiles(); + alert('File uploaded successfully.'); + }); + }); + } else if (youtubeLink) { + console.log(youtubeLink); + fetch('/upload-youtube', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + url: youtubeLink + }), + }) + .then(response => response.text()) + .then(data => { + console.log(data); + // if response is not ok, alert + if (data !== 'ok') { + alert(data); + return; + } + alert('File uploaded successfully.'); + loadFiles(); + }) + .catch(error => { + console.error(error); + alert('An error occurred while uploading the file.'); + }); + } else { + alert('Please select a file or paste a YouTube link.'); + } +}); \ No newline at end of file diff --git a/client/webserver.ts b/client/webserver.ts index b418d0e..8077b03 100644 --- a/client/webserver.ts +++ b/client/webserver.ts @@ -1,15 +1,17 @@ -import { joinRandomChannel, nextPlayBackTime } from './../bot'; +import { nextPlayBackTime } from './../bot'; import express from 'express'; import multer, { diskStorage } from 'multer'; import path from 'path'; -import { LoggerColors } from '../bot'; -import ytdl from 'ytdl-core'; import fs from 'fs'; import bodyParser from 'body-parser'; -import ffmpeg from 'fluent-ffmpeg'; import https from 'https'; import ip from 'ip'; +import { Handlers } from "./handlers/index" +import { loadAvoidList } from '../helpers/load-avoid-list'; +import { LoggerColors } from '../helpers/logger-colors'; +import { generateFileName } from '../helpers/generate-file-name'; + const app = express(); const storage = diskStorage({ destination: 'sounds/', @@ -48,58 +50,8 @@ app.post('/upload', upload.single('myFile'), async (req, res) => { res.send('File uploaded successfully.'); }); -/** -* Uploads a YouTube video as an mp3 file to the sounds folder. -* The video must be shorter than 10 seconds. -* @Body url - The YouTube video url. -*/ app.post('/upload-youtube', async (req, res) => { - const url = req.body.url; - - if (ytdl.validateURL(url)) { - const info = await ytdl.getInfo(url); - // remove special characters from the title and white spaces - const title = info.videoDetails.title.replace(/[^a-zA-Z ]/g, "").replace(/\s+/g, '-').toLowerCase(); - - // Create a temporary directory to store the uploaded file so validation can be done - const tempDir = fs.mkdtempSync('temp'); - const outputFilePath = path.resolve(tempDir, generateFileName(title)); - - const videoReadableStream = ytdl(url, { filter: 'audioonly' }); - const fileWritableStream = fs.createWriteStream(outputFilePath); - - videoReadableStream.pipe(fileWritableStream); - - fileWritableStream.on('finish', () => { - ffmpeg.ffprobe(outputFilePath, function(err, metadata) { - if (err) { - fs.rmSync(tempDir, { recursive: true, force: true }); - return res.status(500).send('Error occurred during processing.'); - } - const duration = metadata.format.duration; - - if (duration == undefined) { - fs.rmSync(tempDir, { recursive: true, force: true }); - return res.status(400).send('Something went wrong.'); - } - if (duration > 10) { - fs.rmSync(tempDir, { recursive: true, force: true }); - return res.status(400).send('File is longer than 10 seconds.'); - } else { - // Move the file from the temporary directory to its final destination - const finalFilePath = path.resolve(__dirname, '../sounds/', generateFileName(title)); - fs.renameSync(outputFilePath, finalFilePath); - - res.send('File uploaded successfully.'); - } - - // Remove the temporary directory and its contents once done - fs.rmSync(tempDir, { recursive: true, force: true }); - }); - }); - } else { - res.status(400).send('Invalid url provided.'); - } + await Handlers.UploadYouTubeFile(res, req); }); /** @@ -109,19 +61,8 @@ app.post('/upload-youtube', async (req, res) => { */ app.use('/sounds', express.static(path.join(__dirname, '../sounds'))); -/** - * Returns a list of all sound files in the sounds directory. - * @returns string[] - An array of all sound files in the sounds directory. - */ -app.get('/sounds', (_req, res) => { - const fs = require('fs'); - const directoryPath = path.join(__dirname, '../sounds'); - fs.readdir(directoryPath, function (err: any, files: any[]) { - if (err) { - return console.log(LoggerColors.Red, 'Unable to scan directory: ' + err); - } - res.send(files); - }); +app.get('/sounds', (_req, res: express.Response) => { + return Handlers.GetSoundFiles(res); }); /** @@ -132,26 +73,26 @@ app.get('/nextplaybacktime', (_req, res) => { res.send(nextPlayBackTime); }); -/** - * Deletes a file from the sounds folder by filename - */ -app.delete('/sounds/:filename', (req, res) => { - const fs = require('fs'); - const directoryPath = path.join(__dirname, '../sounds'); - const filePath = directoryPath + '/' + req.params.filename; - fs.unlink(filePath, (err: any) => { - if (err) { - return console.log(LoggerColors.Red, 'Unable to delete file: ' + err); - } - res.send('File deleted successfully.'); - }); +app.delete('/sounds/:filename', (_req, res) => { + Handlers.DeleteSoundFile(res, _req); }); app.use(express.static(path.join(__dirname, "web"))); app.get('/join', (_req, res) => { - joinRandomChannel(); - res.send('Joining random channel.'); + Handlers.JoinChannel(res); +}); + +app.post('/avoidlist', (req, res) => { + Handlers.AddUserToAvoidList(res, req); +}); + +app.delete('/avoidlist/:user', (req, res) => { + Handlers.DeleteUserFromAvoidList(res, req); +}); + +app.get('/avoidlist', (_req, res) => { + res.send(loadAvoidList()); }); /** @@ -182,22 +123,4 @@ export function startServer() { server.listen(port, () => { console.log(`Server started at ${ssl}://${ip.address()}:${port}`); }); -} - -/** - * Generates a random file name based on the provided name. - * @param name - The name to generate a file name for. - * @returns string - The generated file name. - */ -function generateFileName(name: string) { - const randomHex = [...Array(3)].map(() => Math.floor(Math.random() * 16).toString(16)).join(''); - - const formattedName = name - .replace(/\(.*?\)|\[.*?\]/g, '') - .split(' ') - .filter(word => /^[a-zA-Z0-9]/.test(word)) - .join(' ') - .replace(/\s+/g, ' '); - - return `${formattedName}-${randomHex}.mp3`; -} +} \ No newline at end of file diff --git a/helpers/converters.ts b/helpers/converters.ts new file mode 100644 index 0000000..d125542 --- /dev/null +++ b/helpers/converters.ts @@ -0,0 +1,7 @@ +export function dateToString(date: Date): string { + return date.toLocaleString('sv-SE', { timeZone: 'Europe/Stockholm' }); +} + +export function convertHoursToMinutes(hours: number): number { + return hours * 60; +} \ No newline at end of file diff --git a/helpers/generate-file-name.ts b/helpers/generate-file-name.ts new file mode 100644 index 0000000..8025848 --- /dev/null +++ b/helpers/generate-file-name.ts @@ -0,0 +1,18 @@ +/** + * Formats a name into a file name with random generated value at the end. + * @param name - The name to generate a file name for. + * @returns string - The generated file name. + */ +export function generateFileName(name: string): string { + const randomHex = [...Array(3)].map(() => Math.floor(Math.random() * 16).toString(16)).join(''); + + const formattedName = name + .replace(/\(.*?\)|\[.*?\]/g, '') + .split(' ') + .filter(word => /^[a-zA-Z0-9]/.test(word)) + .join(' ') + .replace(/\s+/g, ' ') + .replace('.mp3', ''); + + return `${formattedName}-${randomHex}.mp3`; +} \ No newline at end of file diff --git a/helpers/get-random-sound-file-path.ts b/helpers/get-random-sound-file-path.ts new file mode 100644 index 0000000..8dc746c --- /dev/null +++ b/helpers/get-random-sound-file-path.ts @@ -0,0 +1,11 @@ +import * as fileSystem from 'fs'; + +export const soundsDirectory = './sounds/'; +/** + * Returns a random sound file from the sounds directory. + * @returns string - The path to a random sound file. + */ +export function getRandomSoundFilePath(): string { + const allSoundFilesAsArray = fileSystem.readdirSync(soundsDirectory).filter(file => file.endsWith('.mp3')); + return soundsDirectory + allSoundFilesAsArray[Math.floor(Math.random() * allSoundFilesAsArray.length)]; +} \ No newline at end of file diff --git a/helpers/load-avoid-list.ts b/helpers/load-avoid-list.ts new file mode 100644 index 0000000..133cd61 --- /dev/null +++ b/helpers/load-avoid-list.ts @@ -0,0 +1,10 @@ +import * as fileSystem from 'fs'; +import { AvoidList } from '../models/avoid-list'; + +/** + * Returns a list of users that the bot should avoid being in same channel as. + * @returns avoidList + */ +export function loadAvoidList(): AvoidList { + return JSON.parse(fileSystem.readFileSync("avoid-list.json", 'utf-8')); +} \ No newline at end of file diff --git a/helpers/logger-colors.ts b/helpers/logger-colors.ts new file mode 100644 index 0000000..db5303c --- /dev/null +++ b/helpers/logger-colors.ts @@ -0,0 +1,7 @@ +export class LoggerColors { + public static readonly Green: string = "\x1b[32m%s\x1b[0m"; + public static readonly Yellow: string = "\x1b[33m%s\x1b[0m"; + public static readonly Cyan: string = "\x1b[36m%s\x1b[0m"; + public static readonly Red: string = "\x1b[31m%s\x1b[0m"; + public static readonly Teal: string = "\x1b[35m%s\x1b[0m"; +} \ No newline at end of file diff --git a/helpers/logger.ts b/helpers/logger.ts new file mode 100644 index 0000000..2c91d65 --- /dev/null +++ b/helpers/logger.ts @@ -0,0 +1,24 @@ +import { dateToString } from "./converters"; +import { LoggerColors } from "./logger-colors"; + +/** + * Logs the wait time, current time, next join time, and cron schedule in the console. + * @param waitTime - The time to wait until the next join. + * @param hour - The hour of the cron schedule. + * @param minute - The minute of the cron schedule. + */ +export function logger( + waitTime: Date, + hour: number, + minute: number +){ + const currentTime = new Date(); + + console.log( + LoggerColors.Cyan, ` + Wait time: ${(waitTime.getTime() - currentTime.getTime()) / 60000} minutes, + Current time: ${dateToString(currentTime)}, + Next join time: ${dateToString(waitTime)}, + Cron: ${Math.floor(minute)} ${Math.floor(hour) == 0 ? '*' : Math.floor(hour) } * * *` + ); +} \ No newline at end of file diff --git a/helpers/setup-discord-client.ts b/helpers/setup-discord-client.ts new file mode 100644 index 0000000..beb5854 --- /dev/null +++ b/helpers/setup-discord-client.ts @@ -0,0 +1,18 @@ +import { Client, GatewayIntentBits } from "discord.js"; + +export function SetupDiscordCLient(): Client{ + const discordClient = new Client({ + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.MessageContent, + GatewayIntentBits.GuildVoiceStates, + GatewayIntentBits.GuildIntegrations, + ], + }); + const discordApplicationToken = process.env.TOKEN; // Discord bot token from .env file (required) More info: https://discordgsm.com/guide/how-to-get-a-discord-bot-token + + discordClient.login(discordApplicationToken); + + return discordClient; +} \ No newline at end of file diff --git a/models/avoid-list.ts b/models/avoid-list.ts new file mode 100644 index 0000000..2d8fe0a --- /dev/null +++ b/models/avoid-list.ts @@ -0,0 +1,3 @@ +export interface AvoidList { + avoidUsers: string[]; +} \ No newline at end of file diff --git a/readme.md b/readme.md index c731dc0..8429f5b 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -![randommemer discord bot logotype](/client/web/logo.svg) +![randommemer discord bot logotype](/client/web/assets/logo.svg) # What is this!? this is a discord bot that joins a random voice channel in a random guild and plays a random sound file (mp3). it uses the `@discordjs/voice` library for voice connections and the `node-schedule` library for scheduling the next join. the bot also starts a web server using the `startserver` function from the `webserver` module. diff --git a/sounds/1697309103654-Rev Up Those Fryers!.mp3 b/sounds/1697309103654-Rev Up Those Fryers!.mp3 deleted file mode 100644 index 25d1415b9d17717c1055abece6ae457e9b1819c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160633 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 ydipB5bv-29Fl%CE z{YN*kfMjLg$EmeTFntT}!lz#%Y}7u>rBqq!gZeS)gvN?$SH``lfv1z z0s%7PO4kc;{oh}kmX9(;7)5w`Eu4P92Y6gF66EE66sTrpicU`yb!!J6L`}EMuK#xY zbC%&W$mA`ZE~>s!lytC6#pXV!s=7#}Qu%N7d1LOOM@oYEH;yEi5&vVz*IfU&CD{n1 z&VA*9vd~_cO4{Q>I@^Dff=49Zj$e$W(m~&dIgO@|4x6JKGe}7oeTwJQAK_~#o z5U9s7`PiA({X!;`w_HU(S||#d19?iuO{I6tGpjr)UC0fITjdZEwa!-Jsi~b$0k*7h*1FFd2a{E8*G^|OEj^=FOEMIcPCzTJU zo+&qfyZSl5b!>;#-LBLBrqhJ^RHc-9hC?SxZz_JFoL9_{LvzB5PCWT0*WRzy5C)b$ zHSp7mKNwO!(wZ#Py1-uu!@ty=*{F;(VWoaElNn>F=MG>tNpb*^#PhW}jYgCh?*e7xkUPt!7TabP93mR4=mXzMVLV1%@6T#!CYNGI*;Kx@5ae*J*3e-h@-bk{k?}TDga=Z%lU>V z?FB_TRjH^^xRHaUyn<+kqa-=suXrNtQtN+QiHmjfWM+_pacRi9IJ8DwT(P=ed3KdC z?{ydv<76fv?H?1@g{{z^k#B-u#@@f9xgx~^gMqC|b(njnY1d0?50FwdKU<$@W$dw9 zt9qPtb>3cSI$i92fUP?wW%9kmgE)1{Q(JD)eT)9i&is1sX=nRqSoX@S&zLO*`9||?ep5NB*17Yg)j{W6yuA#n z6SwZqN}`VM_S@%b?IBFjxEP8dc@yCo?zc32e2ye{4N_?AYpKuS9ij*FVU)`$ zxrCN!rQu)GS)j|CU#QP(5h{Ktgo;O0Nk)KZC3~bnyiu1?m4Ay1vqnWH2dC0B1O;IR zNsTM|*q;%B?7oOjRmlQ8{4Sx6JDs0u=6p%4FA%yf8+%~x>r}`$mFJCPdhEl@W`ogH z2;Alj_Eh!@9Hm0kD7iGW$#WB)udX@j%The&TI#lDUnAf62bx)Y$t{0baYcbWn8)dP zj2!KF@xP!d)@#o%ds^syH4qC)zzX$MWb-?=&s6z|a#3smgb5pE`#RafmF09gER-K1 zVJkh<23)kXgl5v;3XEm+Wd)d+9dejC204OI^5^FRw;l)vz?~AN%yBXVR&M zD?(VL5!`T4V=}>4pZBDUkL~_}hlNB1!4e{EqIOc$v*Q@5k8u6=?C}DBwP;R#wy9I< z%UX~N@L3qlQ>rdk!^|+z1Ery>B6_<-zUM>C#N*nb@^_ZqixD`6DF9Wu2hhveMB^>( z=pyia&o{-}5;me-sU^2U;$G-#wE1`@IrWAD{4C{Q%#Ge35O$;ff%E3DyJz&-iCnY3 z60405$pRYwk*d*ytV7e=vV4NvmVng?LQ2^5c42g*gTA}oF{+)?Y2UOrP* zyMV}Oa%**%^858hQ@YK1v6hr9)}UCVh-VaP^L8hf;G`9HzR_&3Tf3sms;zl>Dgu{gN%sUa=1;_~#aYHjh^%g@hv1^c{n`?;$+L;>(% z0247ElZYIxrOiahjo0IJzS}ggf8wkdX^T(Sw*9m2ZgnI%3bby<*TUS%Bg9z5=p)0* z3AWwD2M1-sf5(?LeBS7%RY{M(&wD{9eKS4GJJYALb?T5&Z*%xN=J5UD^52L2e^em($_+)k_ zoVD`qi9_GE^^0Uqn>%I((a(D?qio$Jo0?8W$?_ED!_FheP3zAWG|d*?(R90ABh_%~ z(y-m4f3Gr6xBWnya`b2I!@`!wUsgW_%+5dQD7<)_^)6=mmv>xAcYPkIp`FnG`E=)Z zNiocw<3w+vs7-ej6d<8Ad98Z*(mA{iPFbtEUioi&N3_17S}+VE9=EHlm#ZqIltrRa z=ytI_{}Wy@=yX}&SbJh-tD*oDC<2P63Sjva;c=jF5~2zm@gl%(hEqpghd-4S!^=t4 zFsJGXVwNiT#TARDOa;qNP{Ra^STu9msN$SY7|CmynwI!nqCpZEr-D1{({c+BX6@j` zfLIjtF7f4=_?I-KD}#kWg|f^$pVI!iz5VF@HEQ7F$a#?*;8_uPDn}f6ZZIPK0I@vdE5LwA723|-9hsj9TKLOa zZszJLD!tSVu{mJRArm8Lp=27(@wsySAUT9i=wyGGlJrgiUPavM^ID)W)Ey+KbBte+ zbW0!z-q*pDECvDqGRT1ZTzP>MMNHtalrl7vB&%O=VjXtM$GFOXqLvK@ zMg-<%DKb~u#nIm~V)gG@<0AkarNIPdu+_7K6f+KR^2w2cW*f;wb?%zxm?-)Ex)!_i zHFY2HKLjRFz#t3M<++YLc)c)^t}EAMC*Po0<;2b0nmE)if?YY7PXL=b?HpL|t!$t* zqI9`OKHqP;8|9X;mwzU9b!WNO$?5NjXqS6h&wS3`OTJKaCCbKMF6`F1<+D(G=R@-V zh<{Tcn^i1|Fr!9!8GQ-DCjuZjZ=gikfZiz$WVaac&%0XMl&qA-&G5PsI%z1phM?+qBRt7nDf=zHQw0AjSdAvb`P8Uwd=-Qn>dbTWz}L)! zMBS})7TWBvd~u1{tDRqvVnxin9aNh~=RNvob%)o!2&FNDxZ-+pLIKxHIho9|H}6IE zXX|tS2&YWhU=W zUDic9#(o{@sLh{rdwTj|-n7Y0&j)H%!~_GhC|g!Ll+qo&vsNqe-q1&%F;9Y!e2T#G z^u=bSnJVIvwxcFh;bC zOTNBIiC)yug0Sj|n%D>6+n4THcWJhMc|Bp9y!M$r_U=qQ^NDOSzY^05c|$ffUKb0~ z&0fLQc(0H#N|aW1R%s>>N{xjXurb;FFIxYVN(o5-8&$9fPx z#G>}LbrGhca=Coyew)X*ZJK4)DNglZMg)(Y)mkBa=Rw-i0L? z;hWXw^ov8Md^~!^S+{%Y3-Y5_jG}Ub?jjD$XP-M}EnU#4I3PMF^hUAd(cBE&S}JirvCm1mZOHUv#U@|#PO6SfHtSb-z4w& zx)DSd&-%6(BC4zBZWE&PZ~6`tR0d=et-OY??#}RGDkZ! z;S91eexBj#~ZY zELXUF6cLu)UrE0`d*g+B4d%h4MyX}7n6bj2O)rcx&2$qn?nbyDx&pi8KBTC+3*{bu{t-DD^9x_3x!%cVKj}`}mKw7L0 zaIk({LRRezG2m%-y|PR^FH@|hLJt^0D%%L*L4-4zor7L+O#|6Y9S9N!0VrBRMlXzh zoO;{GA;<9htDI)18 z8r)~U+@PGsQ=htR00fcy6W5JRyja%BUsRSf2~VEX&o^g_2RX9@j5*!0Q+e)It=&De z6x1MY${u83AAtU?9L-qsBAeNV`ZW=9>%doJ(Ny}+9_KafWbryy%N(=HnH|iQd|=qq zdQyUrq)?>`I>K*bjjZ-ApA|LX(OhuMS{tc!&G>ZnWxjS^H--Gm`zOCN7lli|D!dka zzkAufQ$kbrw(2>j^s(K0w;d4(AX?mv#89bEf(;Ygzl z$t5T4H~CuHMtgdg2Y#q<Hz2ZQG~=wzIzFO>J~JhJWT#NBs1Cve zcrwT9!;-#Hyx#5h4-g~z+DJ3xgnB0ouL7nf>X;o@0syih(L%&Sqhd5yzq+4~M~KVUkC8*1yxmF+#9c$)nNHw7kJl4e>H96b9O z-esR*QHbWTP}z+9faqn$+{tJ&ec(Iy#peEpi#es9D+9s58m>OoPO7!}_VV|!kKY_R z%sOtGeupuZatVlt65U-vH*npQ5Do~Gl7F9I*3)dxo-GAZItaV2}7bR?GH+Rpo^%VcO zkk4It`+J6v*`a1{^Dt!_YqdR>+oOeoSugz6&pS=L)s4#WDfsere-JJ7D(#8&_}zfw z*H81s9L|6GZA}bOmcL1x?oNQ}VbtG-WQ%Tg#2o&4C2p+@We2Qc{}R<{up`Oc%=l5` zI28YCQPdduBa0z9;XQBc@e8J=Si6{4Dzq@#$X5r35ThSSP3Dq1A&toM#i}lcYr|G{tIlS z2KbN>X7d8Fs8t_UfEAzZDaPSJrm5wCaD=HVFzZ$DjD3CgxZpcALv7NyK0bQp0G>rO z7-5$NOo&M2fVM!CcNo8w{CG;giU{ymDMjG9e8cyQ)1&?(HZFHl8)=!MT8V=h!jW9v zDUuwuw+jj}&8)jiCbmwgM$Wb=)SZn#mch5>Miib|ncP!+nBVfz<@7VFf!g%)8*fLO zd5X>59y?qff2E+}TzuWy;r*<|1z)orP=SZS{sK@XNB}=QYzekdb%=l5@Y@)p66>^f{qegI*V-ddM zmYbjG>`KRUr;MU=%RkKpgq=!bc!Csc0T!=^Kz{AmcZ-*?&eb$-v&ll6t3{BK{M*J3 z%NQ_!sU$^&#jo+S8O)`8{2#b~A|TQ^a%pf#FGV+ZjRqA|9vje9>B9Frs-0jaV8ih> zMg-zXad95CciOJ__)>-^oAiIae(NR8jadeO$k zxu$Jul`NTW2%WMlF+BI+rK#-I_O{yB^|uSS+TKOxr-kcw6}}Hp>08toKUG z!Z8{2ZoBl$2BAU4O}RxX|0=!Di~psF+6#;JM+rSaUYYD{RSvDBh?D6BAQFfv4FX!2 zCJW++tW_VG5PUe5t-`pD8OOq#)ih)N<6%7&my+TStN$N3hx1}0>1xgeUW#EB4B;v1 zpyQz7ET!S%G+RaK-4`c;8@RsAtM7AE#^ZqFd33I8`Yi4kE^5^xbK_JVuG8XLG?`GyxV46@NCpj<%n4L1Y0;r3^$*Wl@?vqknyc$zbEe zw~v>nA7&|sWKO6qa@$3%aoZREKTMr>P!nC)_BSC30Ro2JG4u|hcL}}sBAw7XQl;1u zdhcC8dQm_+D59Zvq^pPu(gYMKHn8x8=Y7AK_snFH$;|$-*Z%hG?%DgkE~PMD&d%B` zB-$3&NK)`W9UGteg&dsb*xpg)Vz@*uB;)5}B63d$ zgD{^HmxGYy58ku~N zgCPjNmqQ4tZ&Q-N7#Q5gV~hd}Uwftfr9;)U@{lV^l2l`oA#_l1KBkFMAwNzYYeKxU zq$U#_zj*v>IRDQBSEOk$W%{W#J&E7KBY#Ex^5gWhbr z%If!q&%;>CKHE*2WtHA|(Y@OlF)97Fj&Ch<85%`jC+rH{>`!Iz4TDPb(q+&43*x}G z(;byDFrrfu4ZsATiWs#Y2u-KMT?rKFqFtH)N%pU{Vv#2>hvEr;E}|3@PYoMxu=^M0gZem>#USdF zWNp@q)@0(vB~hr`ZRs*2?qk+J&U@V?yUtdnxVBW9_JeIvu3Pt6nV#_ zqYuRoYdF)YU21&xI!4LzP-k&NY8hDg5db2^V`6p<=WqdyEfoT=+yKCm6rDx)iylBA zOpj2JOj){g4MDDro|a55SW<91j0E!yR>w~J$4(2=yQCc@o&=Z~ZA8CT*#*_vW{hoo zUe{eJfCO#31OX^DRB>D`1#B>1vps1J0YE7T%{9^1Z%}-_D-6?|w?;}}SS;PBl}_@H zM^{uBE%chE3d!9b!(mP8Oa)pl3MLJP)J5xLQgF0&I!(Gt=h#D6hN4)ZY7sD(6>{Tt zjB;XZwO-eU)@frE$o(WHW-goJ$($l}CVIR&!3HiO@!afM`d1Q)9Z(D(1P3Dnt~f&9 z-8lR3e z6>p3hEFCV*jKrW8P^M-my740GPza~$>vjlcgbPLBA3V0#;6ojl$Y7_}I}oVIMgA9D zH;E|{)N$N*Fa(UoyD)y~&bWK23A;l`{~LMz=|d7eNm1GcrgRVlT!^m7)P<)|{TMX} zcs$k}v9`_VAiv()Ei&y{HDhk$RCPwm;~t3MxIibxLJU1dnP|vdre;>1DLpy$bo&Ih zza7aP`gL|)BIgDBIbdTzad%!)ttp}+j5OLQ*+o3#D@8IbH5-22ms4=p!*n>OQ22i3 z=+2!fHlcUvFJF35^m+Ul>`(oDDARTQ{*d^Gf3~)-|6YZx-6!WQQYTA?0w^}Zdc)X* z&IuTHv`u-yG;Fj2K-ah)r6|1{n$rX@S-~&FD}^&Jut zSolZM(<|C=&<+^pnaK_Vz%X*KS3V)jm2-|$u#S-onh%)KbPhTd0~V&5+*BwJ+FHDY z5Qk`G_CpTyiTaext0jKuHWIMwd_5N%klIdi13#+T&+~Dx#*10{2uLMNRYaeyetjJ) zGU}L*2%|WZk*v@ru}gHD8QCm(r2S`d_u4bRoHGY&MpUB5yTN7ATb)0`O;F8t_U~@m zKkQsV4@Lf{bAEo{@b#4C=PHR@r;QZjR)&Nk2?nV|N-_}JK*7vu-S|<$rN}PU4BvW{ z8k!x8WzPU;bz%j4ufKfor$;1l4MWgA%lbp`w&0`uSlpyfAfCuDTmlK+d)keOAPE69 zEyy2LuVzb;;8EyEUjr7`1~D)>!VUV8EXqiXoD0QNW=_Q*2cZTf9eb8wTla52s%VHD z&>sYM-($qZVea5H=zEm`?OHSkFnwsuNY+b`8a#pZk zG{y!R&!${8;&d=!{r=7>cf>RH7?T;Pozxb;L`k#BLFBHB_JLvy!zo-IEl2A(UvCe7 z<4!sI%;mZ?+-Jojn=iU9M<5_!yjFbijs$x|xuMAO1#(-%_PaBP8_M2$4?{}+EK`O1 zf5@2hiEH6NxSLU3Ir@>7E%p*gngM~UL#ru>=4cwUh$>nHWhl)!HwB2BS-nP&1IqLa z#b&x|LIm=!oOvK%>w)PV|Ag`WMNCDb&zyC(#=$|;Dj-Y+o8b`1Q9nsNmt=ED$1qD5 z?Gj1ugTav#+rYqyCQ_pP)jT*aqPg8|I@3y&CO8{DRT+~5yRjzXPKx&D3N$$*gOSs} z&c+}-T%KVCI41Oo&D3f=X~EiC_Ac{@k-}2g%Cuz&jOb>WoHjnHMJ*XOQA?vxVlO`3 zY*%SUQ=!gtV&kqY<}jlNp>%O(YNn@yb4)}{l==g2atRx04-n}i~PAxm{?$V<50DoiCSOk+VXRgYY zb7+%F`$*)fnjd~s`gjdAEwnK}${eQw&k7TP7a7yDc_$Q~Ab5s?=)eO6`PWMqsM6f0(Vy7*K7Ss=^W8Fbp4)f}1W%)BGu4MR zPuw~TC_sqS9yCfXEZ#U!aC{#E$a{5RU*Ayb?##H*Ur+rdnk(XIs>3-77sjYO`-)h(^oG)Xl ze>*zTWV9P}Y!zsBxJoc9_Fb!0S^jacn;fgdHxfGI8W@}ErzxxOzBNL=BQuMVZAKCu zb(ZjPRLzOoeddhf=+27+ZenL5_8m?I&Kg!BtvnzVufvIp6F^*%RQ_^t-twGbzt2cY zFs^tlh3XCnjKIK7z;MtcVibHuG>Z&cS!4=#rJ49@2qPgc5>WJEmhavch}qUyOgFSc zXor#*;Vs+NOGYH0@ER@^#WC>sIZQX;Iz^=8lM?te+4x*9BnJL0L0<<&#L3cGdi8mMad z2&PX9db3t3T7G-gT%-3eM@s$i^9=UX1?2`WI_Op-AaVWy^72i-;I|}{GGvcA6LJbE zlI4q!ygU)le%J8@b{1Rk&rlCUdV=uXF6GB) z^nK&xaGS?>w|^H1f4Dq#C%IZ)SHd>N+Nb6f@bc~J)E_6s9}z9X8pwoxCX+z&)eS0( zZp_`y7&_{BVS@(%uU>*$EE0}zkfuQ}IJj52SD~d@^eO2|is*zY6G+L5kJh<>T8yKm zmz!EN^%2^&74B}Rrj{)sly5kPw4k|QCVhAZ6eEF>=facM7*bv$CkT_X@-ogXaSzjk z>1paB3HBrR^_n-b^>~Wv=H(u%$#t0tt?V4>vBn-Srl*uyet9a@s+}>rAj7sfh-{22 zuhK-q5b&yp?o9$KkIVu(wRE8q_nf-~;FMG!%UVMJb(3M#juMP)^dzS-FVsT@UFxu|KF?cqt+I@Pc`Ty{yyb6Yp#1s&i_e%eA3&N5&rm6|O~p*Rl=x$9tL=n{p@2JSBA(S&u1trLcx z4>t4t5evMoWv9Ha>d%4C9DRMC)S?EANe|Ti+PU*Yn0>60fEi@fhRpx{ss8%#CW^!I z*KtB6UO~CjMT|+zCTQn+{rlQitwCGx=X%_I0S*m8PFGp42Pj!$Jr{-&sV4vFvYzDh z4UbeQJPnl)h2U&L7`NSxonQZ8RSywukL@^#EYyI?w{tIe9G*GaZuVfS4Q^J^B&4PC!wHA{h#O}O~Z74=U@av|ZPg!UOFe;DO#g`uD7 zxKyI>#Xp--vtt-m3D_LxK-Lozgo%R~t4{14Y2Y%1I`bgOZFuQ4IOsAZ+|vNc%>uH| z5-tkQlxAa|Gq{QsDkS5ZKvLAu@N~Jl?ilSh>P}S`3PCO_u;nFkya^0jp5_PgZYR14 ztHv_Bb4=;!MxR^P^ki8Deyz!2vXd7i-S<+v@|vF38+GLDOVFi?>JJHi<1`5OXR)81 zVx+zMUc0Kv$Z_}`)80Y-$J*rrp9I6YfpT2fEypxYN4c1U z0XPh?m9Q9tBzDzD&T_tMpO{Tyj0Y2+V3#Jq`cbBSxKAamNWee&deMSr)KQ8`$za<*f#W14bai_a$| zq`${2;r_*ye8lt(;gj&%$rz{TVMGTIh$DxGJLsViolcwfRb34)#tjnM0H*tEJLaE@*spB zY3070uK9I<;g!8jf!2CbpVjq!rrEdl<_YVsnB8A67w-7l&XZsF;Vx3|yFWm7v>1H-<3p-lSu)Uvu}V)h+v$tLn|mDhA|h9>0vE+;3Y zwiNfp#jhH6GTo}hv4j!rL3EQ{&{1#X4|!5RfCWv*T%4AU;*wNoEe)=XJ#wE^Ewa-wtpzkCoFu2 zEfFRo94W^V`7Tc;@r$`efYXSIZnUSf9Cdx#RLi`{kLkxH>|y9*e82XKmAU}^yN3a+ zdOW^slj`Q4;-LcjPD^6HZ;TINyEI-+{60mWbX+Wh04gAcXf`B0xMDEHH}Q8V7UAty z@!jB2dmJt)xrpi`qxt+*Zmh8&Mf+Gjiv1>CqRGdR#ugof^4(#MG>L zFIyyGE+;h(mGoaI@7(tJIva0H$W5nCLm&%7A_8Jct>(DzrasbSNB!E!8jD1;A@it_ zpHQalB@FW_vCw#R{^{mXdRPjEt8wxLcly>%st`8PhfN2Bzg(Bdi6+SUdRe#`Ud=KZ zwiWQS8D!>+)k}N!hD?yUMy+BKNSVi@!r8F~CG0qB21o4{MkSFvdCI=O?4BKzk9cv; z9a7*?M?Ks8I!I+U69QnGvu0`0w=<{QOnYPIzkKWZQ@;B#JXLdwPl$yS9w_W*E{Bb9 z2S|37Yu)e%&Y!bou5m>jcoGuN6j%eCd9I;6LM@5748vtWzPa>NKtX1uXUbpX^Z1$` z%}NXV#n*qeW(!wIaa8UrBT_sOk1T*VD1&kwr5H6;pscb8#DR10<-bncYm7kdJ3tuA z>;-k+uK=p!T1WXHdR!Qp?sfrJKf{V%Ym$WTd_|L7uja#jh8Bf^fN}5ETy?IzAXFm9 zZ3Pb*&&I9CxusJQIkhog#QXwr+f~bYBx(!(RPE}4Pxz*e2CR}o=&+;+*Q`@k!a6Sj zuU(@jSQ1=R`-Uc+7TD8g(n%$64JjMhlZwNK2Stx3ns%4f3$7GT+Z5ls_NGii!LV|L z_nwo7etG5MJ@X_ZmsIR^>NH-2C2U6gW`nd(2c6djEpt8;5HyhM znl`%k@7xRdf&bP;dmTYdkz>qiYV>k81A4O)OwF?dy{f(c#c*v1h0QwyreulK3D0wR z74p;3Wf4B7v@x;)3zA$5Z+E6>oUvf&dlw&$fNUQ(eauJsIm)`eP`%rqSPDCqG|Ka%REo7k*&Bz`4 zK&cxvPqLa5SbhsgjoR1gkJ2=&l}!0T6%T5kwp**`w`{uMc|Uu?(v?h@JQDu@aLEdyF(~;4wD-BEub_!I3NDc3;ZU+F9N{ z=s|?5EQIAwDjr}IB7LxXSD(_(T}>nKfCAR8;EyoJ;!=WLw>oayLeY6KaH}DZ%5}y@3JI7;M?{ z;XBi|W+oDT(@N;PADINRLCb_SfVMujFU8 zL=K>Julct-R%`1SZK71XW!@Hz-y+4!l3Q?X8U)ny{F=U;<@6G6!rkVH$kCV#$sc(| zb1^lis~E1&59lK{tyiu`7@?+go+YF1kIgHMld9+Eo*i zB|I=jcW|ZS!9xa!zK4)Yi3n~Nw&^(}c~fQ=tSB#;OThEPi_|R04W}v~SE%9z|9&NF zTSz_rB%^Pd@=EovsB(kgdZ^0+1asrzGJ6GBzr>ffpD!=a9E70(7zId5R6Z1HDv9}2 zm$bK1R%@Z{XfL*ZTV5~v-7rY>8{e3n9=#z{&VMlU8Z_+&M%iN$Bq%}g8Fs6c3H+B_ z^ra9q#H415$9gM1m{wFgkdORROi^BNuF{^v@~iCZwCMpHwaOwZ!_>+DzKLC%Ic`U!Dp) zW7mB6@DZO;@$9#I@>yH%lV``erF}U8cMRnN{hpa=HLfhId6GVeU)kn(UJXy zb5|R{C*_t0gaP(9##4T&QSIpU4TT!NLhq`>rR!W0sxQms9AbWOdCVG!T+Ol~(G9xs zl;0diiRVJ7doI`ZKs@y`_{v}5@wp*@SW_~DN#sM95@`%S|xYI*f}^5K}P!ef73^6?|7CXQ1&#lerGC&L=yZ;Z^pNdO=93EXDe%=tZcL*WakndqQ8|fAM?fHMx6t*IX-GhR*WN#_mK8?avg{g);f{E5v zf#w1ws!4crH;l#{qEclo=`A#&@^xI@mD`0MsoEpVdLpmNvp95C4FI&1qP8=^Um^+w zr{6c4h^00906Xy(g?5tbK}&eQiUR$oxRy{54*(44BUX(G%{diP(b*Q0^N ze|C2ky;Z(HqP*H($clVAC@xVA# z*UD=>FFgA3$JSGA_g0O+*N!y(HAHG8%$ORt-V{5?uwtaUwX~<=vr#;#Jf4bUHFa&2 ziX*2CGyRql&(ouZ%G+<-a2k|8M`w3(jQ*H`$&fpukO}k83(^Rv8C0&Etms0GChU>R z^GwH5kKQ){*rcj_>MildZ=Dr5-Slo$UWr$CeORRAy-{2%_O4O?rFmh%t>0evZGyZl z&0mxThqA_Xa3Xb7krd=^_b2eTZ))!wH^y?8P>f;*Y|hDsZN(Y_cIRGjfAW{o(SZ8M zKIG1ol4Gov*C0_m-lUfm7a*f6(rbw!o2lrw_;7L97fmX_#=%X^TgExrs!q%nZ)(fu z93G<>(CG~OuJrU)0dL4riWM3O5KY-aV_37-xZ>4fFpO$!M$|y7Z+et?Hi-OStOJj$&At46;hgsviPZoz`_Cq=dkse1 ztF=mBTwK`4(xBq_%oETg@)_%PrXEKnwsMvjx}w)3XB-;7@7t z)n4?S)5ZNTTLpzL+mBR49mBUjKO1t4dA#D*J}aVhKHP$R7)49jZO$hWbe2>#DhMX7 zmlEsUtT1&*iZ@MZX-p-N%rnwOMFv`GY!q_Tv^U~Te_O^`pc}mSFM9v&Cv)OD-T`xXXrUZLRnr=AFVr7SG_VpGqq6ar!M%ssmB6YAB}sH zeI#&!2?(a6-h6Q=#Ep|c7lyWJm3b7rR45CbF1#Z=)H-b?VB_mj7&Vke?>@~bxF z{*|3wDC9BJfvHQD_uU>hR_cI28gOL#RfwegfE0WFJ<+ZV=ikeraOIOIamkwyt`-a+ zxV9uODTL!jv`Oi5#KNOjh_Se28q{Dt%~3Ks=3)Ir3p&yn88fAnyb%vtf#UeQjU)|b z>gnDqQb}P$u0tZ(X+_C$9~)L67FS^;McOhOcW1H|WoK?NbNPLGE5MA6=De>|VL7N% zt1U1mjX6=@F2WADjnhaxoaPMMvbKyvLL>p?eXCyueOcsko!&ktxc4QQ$|)=k(`9$H z9)Osb?vs+or)V@2lk~oX?`B;S+vG6aO%R$se6jKlZeV2eYf+s13I(? zEPmPaUC)qaE#c`!FTS|xLs_=HPPvQfrlBuuC-CY3awSg*u`W?%S1;WuVG8~eE9z8{ z5}rZb!~XW;1+L#$rCQIr^*DP+Tx#cz`}GIniB6mXl3$`__s12PM$wjR=xI3!ZsO#? zIE9!2aq3nG;gQYGf06UlGSEU=5M$0NB1Kbp`+tyyYMqb)vEZQ{F&02fg4?3=SUIb` zk<8R#l16QKZ%JO3S_me|Atlutn`XhmXlRDybJ2TkgP27C2zPZ*mD#rIj3gseD9a#= z1?}Q3FiFRh)srV6n6eSmEah&rjC~=Typ5`9wptCUx#?jgbEQvwlD%xg{z7s5%^$09 zb$7|6I%U#i5-wW2)VhszJcPR878+bbGP9}|&iOyc;l6jh_F5)&jh@kj6 zVNZDD0nvJFRj~L?+I1uwwZoS4YGICr_fjV)eOAB|f_;0yXno zUT?u@Kx{9Wi%B#jC!RwX#^0D@?wv`-kNLP$Ng*DEN@QNkUsU(E=o2yf>Eo|Z)935i zy=+#|tF_`Q-k0#Pv#!G|U-jG4+_cMDN=dTpXqDu9cismsPCZTK1 zZS@Ydp@GWb&m4+4A2%CtmwF&R4UCYpl5xEXR@TmUPx76Re$qkiu!!JYuWJ{ydtxK; z(R5X<$VEHmwSGYtcPnv$_Tu6w?|vjLb)DP8uPL$P4KBW~pK^|7xyX~>2roaqbJim! z_Ph58Vs6Inkz=bOd?jj6P;6EY2LO>JalvzB<<_72L|ryuxB8p6e%zXACQA>C$Xsb@fb+7tj1%KlG8-5 zM{3*N)B@F#>cJuQ)HRO2cXX;amKX)Jg*ZN=$lOx9(cRY1F()ZMBP?mRM zvx-ol+RMiC6niWkZA6k}eE)H0pRaGFwqkO%ut4xyu}px@rig^^X$NcKSN7hnKI^Ni zGdtJ}@59|MyHY;)_BV%lF~nL`)};wLcPVerZ-(dpqvrP2&hN63jB=9{E<%>CcRd~k zVvvIL_~^n*pSzb2-*N6vBWpK(A13(63=3ZTkwOg6iJ3clsy}oKqBBUX%J-^xticcoS;jg^;Wy1QFw~e zlKcYu&MMf=KR8a@`pnYFQBk}&>|C?^X#(!?GF(O zV~01S%P$_CJZ=BJvS7s)^x#cbcW{+C??Gn4^F}v)PW)#44YON$FDK3(yMLbEdO52S zSAkoRUU527Vi)iE_u&$|@BHafjm_G$TB68;B>y+&GL|fNQ?8ZcxCK)rwQjxqcR?5M z+ed^!x(M+OQL|+E!!4j{rUGkvQ=iD*ph|JJJGxSV!5%b6wo^mj5ocxt$==c#+-eZ|+wEJ8`_%Q1+e z_<`CSZ$o>-bc?-cViuCx+@BV-p(|VL;l?wLxH4ax&o1)Iz1I4rw(x7{RNa=gE1Dnu zM1h768b4tvDyVLtBRr|PH~Q3&?_%oPgFOaUu7quv7w10pa4hzn|2-CBLi5G?NGG?n z4DX0~nRdKsCJsiv&L7u{v}4nX+zoNPbL|;pcRXTSOhTB+1QV=P9Wen9X?p$7w2cR4 zM-dMo(VE!Tbl9Mz${`eU0iFzQCD2svi_ z2$vjWYagxhiyRaEYSUGB>UqAudV1ln_oB!z+_Sy9t^tm9!C#w(fYR(EGKaY0;-sZL z5Yrg==w%(}*26%}CjOiWBXSe<_12`cq0^A-!FK*l<@&;WLvMV{Csl=TmpJkvaQY$% z2@nz(GMSHw1jus0kTO$+aD0+4DkTNSv?BQ^buosn{7fhS3LPrWZN;^SvHC+Rtf?qZp!_Q%nCg3HN& zDet;cd>0)joAB4XZ};*NIrW5JQ2Uv;Pw!NyR`L<<6-#o?xJfrhc+DNgt>XXI%zan- zlxaTh|IZgOxW4KLN9w&E1EE1rgigZtjl{kYr1Q}y^_FG9zRe7SN8@Yd>i!L48skT! z*eg&H*L9N=>wFe;LFs-^TXI!~vh;rQAGcp;8a%rBNsez{yAq}uzf4XpFKV(16uiH| z&~oSAu;Je1S(lpy>+phKSX(g{D609JdT}g-EE%^0vc>pgHr9mlxT+M?303NUj^KoK&t2=UNhdw#gOK;#{59i*N z3JQXNcyx_Y=pb0z_+hmq5LtH^b^G9Y92L6P5W$Ej<(TG$Ofv%x++ek8k%8k1N^$T2 zXO5p*soF*iz)C6}>G(Ps#Nt~7H&rZQ&uwZo5WElLJ2^)$Xt*TsX=T-rfLC{Jv4dEkQEDwJ(F05(rJ!}$C-Mx`26KI&72#F^ zF-<2tpVpa+5b^$&5Ud!3uOozL8Xi=|dgYZ&Ul&!M*eM_2|Qh z-*0W5UtR2jb)_Gu1WCQ^BPRg~X%bVOKHa*| zdQiQ;T)((@{=(qyK@qATv;Z_rd$Kl~qGDdGqh}Pj%iZ|0HF8@8E9P>gHW{ zKcLrxU)1{O%=+UmlYv)x#qTXWw~RA4^_y(o)<>XsYeL9??f_F+hLZu9U)aYL$%|*& zG6`4F=DIWw{|wxY*)k^czkOb$0ccKQ?}FDW_$54Mlx05tmMKl>{|Ppb%Bh^&yJ7=5HWN|1DzP#FEZ~GH=B?xeA;}2@$dR2-f;!24X){eE8}ll$>ENU~2#Ur*AZ$QGrQ($HO%4a? z58xO(DI{Qq)Ocd&;J#M->0e#u{&@Q67dfjtd25E&!Bw=>7#bu7VqRu5{;J`#mwa(C z+_my})Oq5KxO8R5gPjtQ(=J71sRG%6JSVjElY3|xKBsNR-#vSC6b4T_{!p1RN}4xB zGO2pK@_1c2lF+0v8_ufo^|of_?V-E>SkJaI*Cic)|G25S;mcaY^y*?GUy zMflTxU1RDDeJzq;e^iXOIvn*4nUGYIrZKEs*tdNA*o68If3_^F_A!1e3WJ_d#D-Of zx>5rK5eX1foGa%)`fO#5;<#|P*HzMRBgr5zz7=>&2KEmf85dIvp~wn_bJFosBy4=I z!4OY!K=~|cYVZL*2o{$LCs((9MIo4s11A7E8Kee90ur~&c&`o6GM6b1qb`wSjQL6F zvg8&;wBV;G!dTL^*wN=|wfIm^P>DPMVP&7R+P*gxpcQhQEC%Ugs5?#fE>YF z;tIF7uOJMpgsDyG1B{lEZ9EJsCg>XTB@bPu_a-77tb6~xXff=%xL5niagDvmOYSbM zfkB$>s>@`tg_4Awfvua}5>NGR{~~>T%Tu1BqGpww%}O+{f)DK8Iyr>hesa(m=6?H0 z_>0s137+BM?{CF=HciAFtqYmO9D2v|DD|rJlD`_=(&K{Xppvh)#5GC~iS0cbml5~pRoRuu zm;@`g&)d~H9#*^8?Xx{aHh4ahu*7akp4+1}z|l9x9(<#;&$BB@)e`ixFtHmebZ30Z z2M8>tpjeYmVoc}LL~K&#ELnVMR;e@!Tn;9uo~vZ*J>_{_w(GRJQ`PrLt1?lMe1eaR z$5KlfJMXC=NUpGzrzVFPs)Uf}dek7&3vuWq5O`#u3m`DjlaQ#HBGgL=Dy?le0)Z1i zIWP?C3`uIHJKnogN|UvMD{h)xz&`ObsiwAqC<*}FasT$58|ec=P`iPzTPWp!;}v=#Dok+6_s{#MZA_OKhhWqbSEo%YIe9+IV-d_k z-s)0tUKSXGKy~oy{wK3#&QwW_M|Ah@KdN|PF_AE2l&sGFi*nprI>qg6;`I=RPR8VS zEwB7Fd66P@#?f)O%{yVIM*GBG~$8#P;6a>C+p@)e1Iacvlj!=mr&|;DiR2?U?(DM}giguTJ8p zwcLo)C`*`*JUI3Zy3gf16;rZXHvMmaDLS&X*SB}TiyjYlOYFHp5)3x^(+(&+_P3j!MUSD);Vdw?orMx39gn)W7*xJVUkHwR_5U zis!!h<2I|Lh+og9tsfXmNPkIRNN*$0%)}O^rCa&^Ql z6F|n9=@Qdz3hcnii<9z)6{IK&HB6o=<7&X6-t|kjE1SLnVZjEq3Ormdj2M`>8#1+y z^%Dq6rYW5{pB9zj`ksqYa}=U!hE}cLEVPT#y52S{+uIuDE7_Af{Kcf_YgKqH6P5F&RRlJy7H7_3vLMnuwk=_rT*NMalS_>SXZa`Kr91J7b{3o;t~i) zV5LB&E)=C`f3U!zYa3vWjljDHlhyFHA3k2~iL28v(J4PVj9xCkr*P)y z9P;;_SGkQ_#LeUP*Jb`L?N}D}+_T#WDt`Ozq>lle@n&~B@Qdi%wLc1vqA&WalQ49j zC-E8ZwI#x|Kl`A>$51F46%Bx+h7L)JgzWye=gFy+5CGVCd2w`G^+@f*SrCTU3$9%K z{7O6?jQe%h0S>?8wIzZA6jmOcfjr{5;80Rxs(?#1le;IPF`di9gb7tAxRIgG6ZWu| z9l52=cS0vmr<@Oi_)Ktl#4}wY$A%-NH=XYG!vMCXHb*mb0CTXK;#ofcib8vMp(_9^ zrqcg2)Y4Mg5Z1bsuG1Q1N&N&}OQKm|eUtzL!No&@g!2wv58Cus6pLEFOS@sP9`zmq zx+Zb4rqI?x|F#MLE7L=3>)PxD!j%y&)t2t%XvNSVo*3z0#?#l97Ee$g)s4Dt+#6! zy^Bu|&JVtwk#Q?H-gH}-`u(u`s-p2H?Prr42aL7tDU*v~z2z4-gj9*!U4A$KI8HBM zOgIb7%^?v)P;<$OB~M{y@`>dsEnc^o8%ZC+oBh#?BTs-q%Z;T+(dUU9a2SNa-f~de z?sT;TURvT%^?pIdw6F>VuP0OMpa$D zfx~zEvR#*&zd9P;Z&CbFAL4mnWOzq3*|1#D$aOYk@8KPcBopi>Z%(P;SEKin-^4=f zZ(dET7uE{zcQbfvd*i5d>Q;SEL8R3o-7ottyYhGR(W)PIul~m4F!MAxVwo%P;S&r{ zjz9H|gaBz(ob62Pvd;C|p)W385_k5`WM58hMVvGeRB`8L#P@sO<$nA!i*>fR`}mAY zkae8G^h>r~@{8Zo{M;d1h`0wA|2{|s8sE{gIekIgwhGlN!F8NuNyo+lC|YRUWJ0#p zCC8cB7|`kRCLp$+2Yf8LM2;GOp*@UYUI5_Uc=mUK4Pg9oOXo=;jx46mt4}%zcy@!N zKw8VPpyQ0RGgo&)KUgTcN5Z(?f0dU>d-PnhjrX|G?UA{tV62c$xO*^tVg#Sy*Nw7U zr)xWw*-tb{rI+?Ubd@u7Y~QkP3>mE#tfk8sd2{aY?}bc6?}wG|?>FC1e%&SSPitA` z|L5@ctMkh#k+btdOetuJm4*&(HF_Lk!QS!bhL9gB6!cWxN0-0b@ltt)Hscl@w% zEq=ZmREWHf$8g%GHvr3dYYFy<(@nu+V@x59Y0InR%F_zx%>L@u)phz1LupiJap;(Pb+Dj>0Yh8 zADY8SC8Jj^E*{)pjLJUm@fS|){?{`q=kH}zD;l6~IV3AuOP3Ub{4W52NE`-2OF}mb zQh2ASF~fzit}hU#3>ClVA}V?Dmy(@>j=S9VolafKkj^I=rMA%z-%U#XHY|&rOL`a_ z9K5wXu8e;mXFL8?XTen1Mv_dGyW%US&qKlRhwehA0H99x(6dF!$z9)+o9k^VM(^`R zH^`+Ptag%|L~HiLRp$~pS^y^MW;W}x4t6v2bsjARY=Vo8`qKb133`vyaumQ?wY775 zHeY>KF*mo0^M>+{M&@EyK(m7ba=UvAJ*J2piI;4Cq8m{-RP#jewdI&v#f_1S_jP7v zL4I-BQ+2t`vx;qZtc%@ap__;AXLRO2T+7DzR0?ftsNcQDY5VUBm>#?DeHhFWk~a5G zcTNh-bJKS7tC{FJ=9#eKkT8YCjvwJ&_|J!)_g_8xKKn?o@v52Ie({A|PFAHWCGXUk zAdd@*s3LKoka~hW0YhrZn!li?d~R{e3Za)GUi7>@mAeQF{QK^=u|l8f-LF2~ZrN#a zenoEIoN2_^iG9CSqb0z-TdOEhoDA^^euoC%nEz8}Y6;khPKN z2QbX6@kBu(&n+~!Gk@c^RCNI{1CJp5Mfu;|EDn{%3`VS z-m~{nA0|J%+C8AiD|VRTSa8vcH+XVT^lIh%RKe+=sAqC#|BtKh3~Q=u)=mNmEkNj9 zL+D5ep(ARj(mO~e^p5ndgx--}1?ke86hV-VNbg0ZD@apNP!J_we4cZ@_nb37cGmil zT-melYxY`e?zw00aw}TPd$(yx`kJA3W6v3RZB`8p8$0muAs^x6qLn_R91wY0Q}Nbb zjXyKLxoQyKaCrsL2cSc&LyI{mDxD@810FuX&4=Orb2iaq-dT;Vv#Bg~plw0ec?nv+ z^IS;Nh3U|NaoHqYn zaYG!yG;dx>Iu;8wkIGlSi_f0eF~#xPfvL)4L>QcZU{sSjGqTE?jH4bQjp)8%v<_Q` z^5zE7YyMX69F?rC@=a4FI}L{Jh^iCzHXgBwsPnyWCGnFm*7#6XnR8q3w^y=Ky;_CI zSK+**A4TWl4=dkv29UOPRaR8Ic<^*u(7!;y+1c5vZOm2g^WtURL+K>t>|t^7#x@1M zp5J3_&YA+1+1b-VT_Uws*%D41M$Mmsmk(C+zs{|6zB8RWRJKMq(k{o+%0OnGDiX$&@Rl1I#&5X~RaImj-CAxN@o`ytHFCFYf8W?e!nBDu(~Ty0#OQ&pV1Cc9k={wc z*p0vU_^;i>eZs>906i4CIXY4(?lwBef?fAx0<7Feway9i!e_}j%7=Z4rN+u`VTNXj z-KK4o%-^D!k$n#UvuqP!7=Q>%h|~uZASuwWwfX=4Row6CPVr6r&mO-h(a{qG41kpM zjC@j0w`i)QW@i%X5K#7!Tydn3RU{fOywqez6ZON`QC-r06Qm~a!1GHh!1Pa!VErfI zw@?vGf0Kd}HwWQ9)k#Wp2I`ZJJ)`osczb)qZge4!?wR)!-)`R>l$v2+K1~^1HJP>+ z5lq9sPog(5|H9rlONU>V?=6SCU~`6t+ZPl22Q8MM@s|^`+MoP3S~}YYyu&Q}-Yq68 zw6VI=J6C5DHEk+Q)jl(N$xzUh>^@2VE9kChoS|#Xk16Eijd?4h;Zjq_#l!%nf)@-1 zk!oQpW-i}oD3|QRgD1(4pQGN_-X4UC)wxK345W~^kbo={`dnH^S>)=bRIx7dvmDZi zk^}p#y7UGQUpV2e8K|2eakC45sgOsCL+_smPIzP#a|e%5o^G7UbG(xfrv3hm^Hpo?enZqrX-H0x#1j~&y~Y;cO%SI z;5Dn>k9bj|#}<^K;_h?t(yd6AX`Z7}K8k+2H9<5*jZ(|=tr!{4v%J0BM;leXNOm#C zD8oj+0(mX{`z;>?(6> zr?7eFb`4%3jnqU#+3=$)^HjY8@-%iCrYv^^Iar*1o=QMM&Q_sJ1VD3-T+D_*RYaT) zPD6U|^y@#4*y^soO_d{LeyufseWjn?B{@43-%Kj-uanN7Y<2AS;js!x;)IR^0mI71 z5(0N^Vq%2s;PIjaFDz_O&=&)5Zug1$NZ;N5n1kBQ@TL>l{_Y_u3Z@3{1W4(#6JI6+ zBL`yt1~~+FDbGr6JWy;~Q$wZ6{zQwhI-XDPlVHCQLpix-wz0lre+IL{gnH(rP?rq@ zT|{;kMbwm#Ge+}OorV2%C7<3mjR#Mpbz`zl2Cm}t6@(WWVuJN%F`NTort=Poy>ofy zN5isI?5+lxZ63ypg5-1>f>TSWximzn+O!mPS1;NXvwmoisVEH1ciQb5XR+Pp4&i7@ zd~O1kCz^j)dl_(T7E`N4sm-$+Hr;M9Nsl6$vn`!Xyu&AU%If*DxSZ&qOYrX^Hm5x;5_%}W(ZCC-T~9`>ZP1#pO*d0PI>f< zkl3ggWVSdH%^RPFFODO&rZ4j`>RNm|Z$d*-K0p7o#+@p#bTWNRoWh06THoapE872E zTC_pisHvgU7{s7u@_xw&_T-NDH>Wa%tOk&$JZICa0BU@@T;L?A4DwmxE-<3+O%uSM zz|O`DxBT4Roo|dHNr2>DKD#a$<`zI7ei`Df5j zV0iD9?F;~GVT+L!AbIgq?B1A9NI>O_D>x~?W9*^)&Pu|FE8=m1ZT02Uc zOXP}nyq5^Ib>{8+d@9gX0;*Z@Fq{t!wV?^8=?3m&241xCKc*Y_&h??zM!g|viaNV$ z6n#82zNv*v|1)P~QDp+Wjcf9w#^8ilDZ7qiicTV4!_@TIXBj38cngvDo!XjkjDE&| zhFw&Nw^W-x{0K`UZLP1d060mV&Gc2A@%_-A1(Wa2dqtDYgk%C0=T5_DE}ZmTk`91s->xC{DsY3uXfF^RvgdwKJQsy++-}6sYsn?cT)LKTq6a9 z(F)_8{&xd@^!g6%hu=0P$(MG+2N#~fp1yK`7>X3PQ{U1WXHi2$?~LvWRpfu%@^|!? zMe!dCIkYL(G3_S=fd9rWJTbJ)mOwOys#o1<M()j<0jj3P8IN#7w1$MZ)M2M-+x@8e(u;I1RGCabH|vf(rj)yK`3$u3|!36Y;E zH4z9Su)ZYA6I3=R8~GP*sR7QR81x{ab8TM?Ku6^+nS>1Nm#5`A$C6YxGQpvt zR0JAPeUktr(rHBo`H+{MfSAIN+e92OyeFlVy5pVZPFSR*NgqEpp^K704~vc#2wc`w ztqd=lEgVG(9I_zN?^7ubb!p{zr}?pIxwXwI4%3>@rnKBTSWUAt;Y@Q;iOm8){Tyi($dXDP~f8CJR~A|>i)WiVDp)ZgF+-fjkPBnp**YE z`yWr@M}N{y3oCC4WvbekxX8G8$Rt@mRlaZg3`NtoN4Q`Ng>jZSWzmwwLgVCZ%$ej( zgBEaq4Dl3jJlX07k~jLd3ZUB5qQXuPKG&Bd&2(FVf~n2Fg$(Ol-O3vknP@GZ^BZ-6 z%2zhiwHR_ASTl@uI3?Oj7j*O+alEDWBsWE|RiWvd94Co=Qu6 zMT{x=$06#X7(bXtQ!>4Yok_3S1Q6hpp3gcx+yDa(Dilj}tc^F{;I8BCMD$!$?R@Cy zo~qUwWXg?((;xSK=v(y*GisQ>e&ZNzT#@(Z(Z;1%qfq;9duN(3?srCqS+C1zI{wB< z`1mck^r;z#WZ#M@0}LWr%cIExeTo6C+Yq1@nim)?xml7VlEdo8%j__yb5=d`EZFiL z$sIA|d-0`@(dz9wX9L_PMz_JKlksqZZ3+f&PDl&vp75>(DFeq#EsIjV;kXaf^5K=w zo*`cSg`5=D&)q@mkWX1&Z=84+12(6t&y%jZ!vmC~zbV&8-bDZOtL)8MmpZm!#J64Z zK{8_A?WHb<*4={}5?5X|EqC}Gj$YJ;RE_$O!XT9N5(E637Gs-!_>yw-SkjkpC;&h; zZqQU3gMCK*BOIe6oqvg&nJSsJNJuGJLd9VR7DNvm$IL4wBBs(0tZwNHEb={5aC(w! zG9i8@5u+yU$JfPdjc9!x?W|<}WGpJYRFgjg4FdwQV6>nXKQN(XnitSO8zV@>4=n^& z84~wh3)uHzQdQ?{(q8gw=x%mQPwuX$##a50oRf(3sp_rVNx1Z!78fELXBulFZH* zvz03K7jo8sbC9vd4ph8FIcZPFm;AM%U>Lq<_A)zj>pEVx^#UMN5KfcZ7{i8Jr}2~z zhzO6q6dh(@j@DWBqK)OE4g#b)31kO~z>K>BE zqg-C?GPl;Jc=o_Jppb9~$TBmSL?x`AuhPU^pZ;77T6#ziv5%R|5O`S+q9{|z&z~3w zd~;vZRX?y80(xVoo+Kz)l86W_Q*Nc!bF-Vgx(X56D z&bdBOHh&K$>=I@_L`QPWL@a&Defvx2-g{xGv_hjaD9f94NAPNbn!~`0o6ehFm7OJa zkOUMn>lar5$;Jn6II-F*{GI)tCiQOu-i%D=wWg|kBlyp~)+;*zZUfp>q`e3ym;;tb zJR$GuCo`A?z9}{7E4?7`&LIVPjeAGL{f<_nA7o0uhoV2aVBjOo)4R^=7+2PwOTF25 zIa(k5v3s;W=xtv0J9(!}JI$bN;|s^!bxE_zf}_T%`i<=5DD=YBX{Ji90{@MLmHzgc zTX4xtEjdm8t_*3$R2ieg$-80vX0jW?KLb$tDU%7cm=`&=cLRHrLpf?tp0D2HrSvV@ z2~W-jbDrREQ&gzcti@fNMZQ3}d!*d+!OHObyybQ$DXQrLU;tAV)26LVs_O|@@NVPW zgEpHYUGkbilW?=7MZw>acxB{&lM!cVb7BHJ@lX&NfAHzPsZt>(5)O;Z*Ft9#hUUsj zF(LD$-LM%J9)Y0#Lw&X}>kDjztKJFXzC{zNqL?R-h7gB(S_iE$2yHp5R z)U=yB6wvsrdbGFcNjqV%m?kM6izRUsEs5!b1M?-U^gUg3FCV$~B|3Gq((@V>6@gz^ zS-i&|v3>3Q-nGm$KiQun+@>j?7}vhe_snf?{qiDxJ!}1Y*U~pz@eerDWT9%eJ;OBjUFv^Mrl;6PjxN2c32$$gNXlm`8DcPtd>}d#@GA< zhykp-1e8&UF)W~Xf@p%>N4J=QB`_6vZ&o16V$8-4_PQboqm^amTZ)tk>4_ysc z!TW-omUa#AV&!Sp&Q*Bse8(2vpB(aI8dE^RoxrYs7QE`3CP-Uo@=JdHP3b3BG%2?! z-UIxsv#vk&w)kt!+f$Ak2XBp28%MIoSdi?8R+ogjFL;$e8`x6tjdolEJZl3FNGh;9 z9i=Clmk+<_dlb0{P3-Slzx91^oAr8_FANv#iGQ&I0cgx$PXTT>&G|%>=?uKuhvAbC8oVmTQG@q&jd|g#qHItnjgprn*l^ueI}XM;1fe_UTcA)=lTy zbKc;pEH^@7C@(E*rP@1PaSJBE8`f^)0kD{y@_jzjAqqwTRsDEM5zM^YyW!a41HV~$ zym}-^?!4M_GG0&*z>I|vyo3|7B3nLPqFD!Rls_qtH?F>=VLJEr7zf!%(S7kT(Ljac39Si z_BLc0?f#O#`O{Ws(AX8aRe)L;v^y$$f8UmDBZ*QHPcRJUwqAW+d2AYjI!N!>qT<KHBVmq8fK4g!^_jfp>H<6axT|;sdV=0nm9vU%p8C9O6 z=P^FiNS^JlP!Nx^#y;xB{R+EOP@cxMZCqL4`@dY!q5oM!0*0M4*s+nI7;$n&PC^*1 zh^Ma*HL}S7^V?cZH?_DAv8tmLShAYbze^mzI2!7vc*`j%_j~H+-A;Ix=nYm~&sIfK zN{A*WKt-(+%P+4;7lp3o&vRK;0QJfD&FG3XvC%tHL^CrfZ!Ra;)z6+UC~CUNgR`U% z#Y1g0AaS=O4bdA;iiF+H=9>ubeaA5|S*A=by~$)oK)Kw69!v~`DV-*(n^`swC8fd& ze0=Ok4xGeR=6%blN%SAn_)uGwPLxEDrX`kh8EA3{c?@SHW%V++0k%A&;=V~|5zi@0 z_f)dtT5xH%;?1h%l(81NoN=1kGib_&+$ZmQ!+6KJ z+iccULs9#RmwFE3>JZ)k^~45y{@1iZ?3O~=_^*A`y1@Ju(DF7vr_Te_hIo^5q`GdH zSOzux$OkoHVe9yf6A1<=Au#>~k!WV?T;Rt(&Jfb~%8H}WiWptyPaY#;@a-ZLQu83a z$_FSlxQa4{wxb5OQ!tT4KQ4-WBvyP$1B3yJq#sVn1va=oqe)(afKTg4fp)*zS)CJJ zGM!NA@F&m*k`n4E_I$8Mz7)gQ0I_1gO_M85-%ZB0YH@oss~J<)3&vNqnGQhzs;v(B zmUa!n8uDI5KO=kX!Nk~_5&6k&TyTM%A zLT)LqJwJWqM1bxx{JFD^(Sf2^Ey;n;M4$6V_d6mN7)XkXI*lHv+AJ1&*I&9Z(7d8e z8Xeb(i7U=^DZ1&)yi=xkBl$i;WV(lALA2NP_Ig-Oh^V%e?5&B#J=_@X4<7&Q5HKjb zZ!;8_>5@`FOD@vy63kpPtlLza4zXrGmA{uenru?_oi8^ZDEFL1fl(p)G(43#`yxDtS};E3O0gMH{z{Z_{w|Ar4pePhZrlu&XdUPZ45GS`38!J;0=M(O0-7MhXC($sjQTic#rr;p(Hu`X z+R!S%R4af{FiTw;pJGjHDI&O|gKw0~)Larik`@_`$fVvt#RO26+hp?lHzbE}Q-%cs{S9ekYvV;nV^685KKEi3Ic>Rcf?8fN9?*;WOwQjDZybgLlC%g;M( zuA6cUYLg`-oG)t`1RiOwJ*&MF9X9fzGCwSbYuTsXO4@y+VoBt64 z#>~Q2ctn(gRa9!&_D1E7X0if-9LG__4w>@&gFSsgfIL?Ik@Rk46tDLGg8x60@6^<| z-=P5JWZX3k+=KFAPp~%L+4y=sh`udKO_MbaEHNjT5EzB8o}%LGNmLL8>J9O5><9sT zp)<)h0DQo{dbS8Rr22{c2Bk7vBk#GRyHO3QgECnUiz%y(9 zuU&Am5LhMyVLZ4&qwpRwn?2kK2|cht9lL`1OVxxZCF++hz88PxqH~M0;`))Un+j;y zTcPF=skmm>ezEY8^O+2{GUya=vYN_HjHU|G|$ zMYZ?w@2#p6uNGb3Fv4_pS01w0?6md-Zaxu9tfnxHdxHJ*{X)B|f#uhRo)N)Mb&p#5 zrek9rM%zHtd!~4n$Dw8{Z5~&Hg<~DT*Mh<-8TU?`zvs_Acoo}wEqi1+wr^V8J@H+7 z3P)EvHeJ=BptJeXNu=l``#{GUlb5wuDN7HGhe(h|Pb*n3`e;%(lK$_&`j0Pv6GQr@ zKj|QO2{&*lsS?(|2?}jadruJ51Y#xFH*j##iVhsVKc@Cr>sKPB(@??Yso2cP(aQkq zky)GX6ixIQ9?pycfDhHH6TQPZFS8pTs7Y{2TYfk4PA;6dtj@}k_2J_XC^M&;NG(tM z&FmU9443uDmwBHJx5-!fDwvR3r~7I8XhVeK5a#N3C70t_63`W&7&;X0a{ohN z!-T%g2QQWHBWbEmurS{uQlZrSI5aV+ z52Q?X-$gl)O!o!1C`5j^M8GW(vX|33B*1S2yG@l{26y}mIWEYLc>DP)6Ps^xn+%?WqYgN6~FypZc>@Oi@mC4wDU}6 zj0xr<7^0-7I=f)EMBBF1vKVup$58*fxc}Ut&h(qw+?0lmwtU6;FFV~`I8n!NRmS&K zx;W3q0#pin6k4g^WsK)#h0>aTneamNuX|@

        OJ|ubxTD|Ea_U-xRU6H>E8pJXXUw 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 Z?&&~P*s&Q~-9YXC)Ufvd