From 33b091861b3f46d0c65a31444ef6530704173556 Mon Sep 17 00:00:00 2001 From: ApacheThunder Date: Sat, 4 Apr 2020 15:40:53 -0500 Subject: [PATCH] Add support for TWL carts. Overhaul of old cart loading code courtasy of Robz8. There is however a small regression. This build currently can't boot DS-Xtreme. If you have issues with flashcarts not booting games/homebrew correctly, disable the extended ram option in the ini file. Currently off by default. But it must be on for TWL carts to boot correctly. --- BootLoader/Makefile | 6 +- BootLoader/load.ld | 6 +- BootLoader/source/card.h | 167 +++++ BootLoader/source/clear_cache.arm9.s | 23 + BootLoader/source/common.h | 39 +- BootLoader/source/crt0.arm9.s | 9 +- BootLoader/source/decompress.c | 151 +++++ BootLoader/source/encryption.c | 9 +- BootLoader/source/encryption.h | 2 +- BootLoader/source/find.h | 31 + BootLoader/source/find_arm9.c | 140 +++++ BootLoader/source/find_common.c | 117 ++++ BootLoader/source/key2.h | 350 +++++++++++ BootLoader/source/launch_ds_crt0.s | 41 +- BootLoader/source/main.arm7.c | 902 +++++++++++++++++++++------ BootLoader/source/main.arm9.c | 305 ++++++--- BootLoader/source/module_params.h | 22 + BootLoader/source/ndsheaderbanner.h | 138 ++++ BootLoader/source/patch.h | 48 ++ BootLoader/source/patch_arm9.c | 94 +++ BootLoader/source/read_card.c | 240 +++++-- BootLoader/source/read_card.h | 4 +- BootLoader/source/reset.arm7.s | 81 --- BootLoader/source/reset.arm9.s | 136 ---- BootLoader/source/tonccpy.c | 137 ++++ BootLoader/source/tonccpy.h | 43 ++ NTR_Launcher.ini | 8 +- arm7/source/fifocheck.c | 42 -- arm7/source/fifocheck.h | 34 - arm7/source/main.c | 51 +- arm9/music/dsboot.wav | Bin 234144 -> 0 bytes arm9/music/dsiboot.wav | Bin 266460 -> 0 bytes arm9/source/launch_engine.c | 81 ++- arm9/source/launch_engine.h | 2 +- arm9/source/main.cpp | 85 ++- 35 files changed, 2789 insertions(+), 755 deletions(-) create mode 100644 BootLoader/source/card.h create mode 100644 BootLoader/source/decompress.c create mode 100644 BootLoader/source/find.h create mode 100644 BootLoader/source/find_arm9.c create mode 100644 BootLoader/source/find_common.c create mode 100644 BootLoader/source/key2.h create mode 100644 BootLoader/source/module_params.h create mode 100644 BootLoader/source/ndsheaderbanner.h create mode 100644 BootLoader/source/patch.h create mode 100644 BootLoader/source/patch_arm9.c delete mode 100644 BootLoader/source/reset.arm7.s delete mode 100644 BootLoader/source/reset.arm9.s create mode 100644 BootLoader/source/tonccpy.c create mode 100644 BootLoader/source/tonccpy.h delete mode 100644 arm7/source/fifocheck.c delete mode 100644 arm7/source/fifocheck.h delete mode 100644 arm9/music/dsboot.wav delete mode 100644 arm9/music/dsiboot.wav diff --git a/BootLoader/Makefile b/BootLoader/Makefile index 8a44fd7..9740bf2 100755 --- a/BootLoader/Makefile +++ b/BootLoader/Makefile @@ -21,14 +21,14 @@ SPECS := specs #--------------------------------------------------------------------------------- # options for code generation #--------------------------------------------------------------------------------- -ARCH := -mthumb-interwork -march=armv4t -mtune=arm7tdmi +ARCH := -mthumb-interwork -march=armv4t CFLAGS := -g -Wall -O2\ - -fomit-frame-pointer\ + -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM7 +CFLAGS += $(INCLUDE) -DARM7 -std=gnu99 ASFLAGS := -g $(ARCH) $(INCLUDE) LDFLAGS := -nostartfiles -T$(CURDIR)/../load.ld -g $(ARCH) -Wl,-Map,$(TARGET).map diff --git a/BootLoader/load.ld b/BootLoader/load.ld index 2bbfd69..0ff8efe 100755 --- a/BootLoader/load.ld +++ b/BootLoader/load.ld @@ -4,8 +4,8 @@ ENTRY(_start) MEMORY { - vram : ORIGIN = 0x06000000, LENGTH = 64K /* Reserve last 64K for cheats */ - arm9ram : ORIGIN = 0x027FD800, LENGTH = 2K /* Used for the ARM9's functions */ + vram : ORIGIN = 0x06020000, LENGTH = 128K + arm9ram : ORIGIN = 0x023FE000, LENGTH = 8K /* Used for the ARM9's functions */ } __vram_start = ORIGIN(vram); @@ -15,6 +15,7 @@ __sp_svc = __sp_irq - 0x100; __sp_usr = __sp_svc - 0x100; __irq_flags = __vram_top - 8; +__irq_flagsaux = __vram_top - 0x40; /*__irq_flagsaux = 0x04000000 - 0x40;*/ __irq_vector = __vram_top - 4; @@ -222,3 +223,4 @@ SECTIONS .stack 0x80000 : { _stack = .; *(.stack) } /* These must appear regardless of . */ } + diff --git a/BootLoader/source/card.h b/BootLoader/source/card.h new file mode 100644 index 0000000..66b9bf3 --- /dev/null +++ b/BootLoader/source/card.h @@ -0,0 +1,167 @@ +/*--------------------------------------------------------------------------------- + + Copyright (C) 2005 + Michael Noland (joat) + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + +---------------------------------------------------------------------------------*/ + +#ifndef NDS_CARD_INCLUDE +#define NDS_CARD_INCLUDE + + +#include "ndstypes.h" + +// Card bus +#define REG_CARD_DATA_RD (*(vu32*)0x04100010) + +#define REG_AUXSPICNT (*(vu16*)0x040001A0) +#define REG_AUXSPICNTH (*(vu8*)0x040001A1) +#define REG_AUXSPIDATA (*(vu8*)0x040001A2) +#define REG_ROMCTRL (*(vu32*)0x040001A4) + +#define REG_CARD_COMMAND ((vu8*)0x040001A8) + +#define REG_CARD_1B0 (*(vu32*)0x040001B0) +#define REG_CARD_1B4 (*(vu32*)0x040001B4) +#define REG_CARD_1B8 (*(vu16*)0x040001B8) +#define REG_CARD_1BA (*(vu16*)0x040001BA) + +#define CARD_CR1_ENABLE 0x80 // in byte 1, i.e. 0x8000 +#define CARD_CR1_IRQ 0x40 // in byte 1, i.e. 0x4000 + +// SPI EEPROM COMMANDS +#define SPI_EEPROM_WRSR 0x01 +#define SPI_EEPROM_PP 0x02 // Page Program +#define SPI_EEPROM_READ 0x03 +#define SPI_EEPROM_WRDI 0x04 // Write disable +#define SPI_EEPROM_RDSR 0x05 // Read status register +#define SPI_EEPROM_WREN 0x06 // Write enable +#define SPI_EEPROM_PW 0x0a // Page Write +#define SPI_EEPROM_FAST 0x0b // Fast Read +#define SPI_EEPROM_RDID 0x9f +#define SPI_EEPROM_RDP 0xab // Release from deep power down +#define SPI_EEPROM_DPD 0xb9 // Deep power down + +#define CARD_ACTIVATE (1<<31) // when writing, get the ball rolling +#define CARD_WR (1<<30) // Card write enable +#define CARD_nRESET (1<<29) // value on the /reset pin (1 = high out, not a reset state, 0 = low out = in reset) +#define CARD_SEC_LARGE (1<<28) // Use "other" secure area mode, which tranfers blocks of 0x1000 bytes at a time +#define CARD_CLK_SLOW (1<<27) // Transfer clock rate (0 = 6.7MHz, 1 = 4.2MHz) +#define CARD_BLK_SIZE(n) (((n)&0x7)<<24) // Transfer block size, (0 = None, 1..6 = (0x100 << n) bytes, 7 = 4 bytes) +#define CARD_SEC_CMD (1<<22) // The command transfer will be hardware encrypted (KEY2) +#define CARD_DELAY2(n) (((n)&0x3F)<<16) // Transfer delay length part 2 +#define CARD_SEC_SEED (1<<15) // Apply encryption (KEY2) seed to hardware registers +#define CARD_SEC_EN (1<<14) // Security enable +#define CARD_SEC_DAT (1<<13) // The data transfer will be hardware encrypted (KEY2) +#define CARD_DELAY1(n) ((n)&0x1FFF) // Transfer delay length part 1 + +// 3 bits in b10..b8 indicate something +// read bits +#define CARD_BUSY (1<<31) // when reading, still expecting incomming data? +#define CARD_DATA_READY (1<<23) // when reading, CARD_DATA_RD or CARD_DATA has another word of data and is good to go + +// Card commands +#define CARD_CMD_DUMMY 0x9F +#define CARD_CMD_HEADER_READ 0x00 +#define CARD_CMD_HEADER_CHIPID 0x90 +#define CARD_CMD_ACTIVATE_BF 0x3C // Go into blowfish (KEY1) encryption mode +#define CARD_CMD_ACTIVATE_SEC 0x40 // Go into hardware (KEY2) encryption mode +#define CARD_CMD_SECURE_CHIPID 0x10 +#define CARD_CMD_SECURE_READ 0x20 +#define CARD_CMD_DISABLE_SEC 0x60 // Leave hardware (KEY2) encryption mode +#define CARD_CMD_DATA_MODE 0xA0 +#define CARD_CMD_DATA_READ 0xB7 +#define CARD_CMD_DATA_CHIPID 0xB8 + +//REG_AUXSPICNT +#define CARD_ENABLE (1<<15) +#define CARD_SPI_ENABLE (1<<13) +#define CARD_SPI_BUSY (1<<7) +#define CARD_SPI_HOLD (1<<6) + +#define CARD_SPICNTH_ENABLE (1<<7) // in byte 1, i.e. 0x8000 +#define CARD_SPICNTH_IRQ (1<<6) // in byte 1, i.e. 0x4000 + +#ifdef __cplusplus +extern "C" { +#endif + + +void enableSlot1(); +void disableSlot1(); + +void cardWriteCommand(const u8 *command); +void cardPolledTransfer(u32 flags, u32 *destination, u32 length, const u8 *command); +void cardStartTransfer(const u8 *command, u32 *destination, int channel, u32 flags); +uint32 cardWriteAndRead(const u8 *command, u32 flags); +void cardParamCommand (u8 command, u32 parameter, u32 flags, u32 *destination, u32 length); + +// These commands require the cart to not be initialized yet, which may mean the user +// needs to eject and reinsert the cart or they will return random data. +void cardReadHeader(u8 *header); +u32 cardReadID(u32 flags); +void cardReset(); + +//--------------------------------------------------------------------------------- +static inline void eepromWaitBusy() { +//--------------------------------------------------------------------------------- + while (REG_AUXSPICNT & CARD_SPI_BUSY); +} + +// Reads from the EEPROM +void cardReadEeprom(u32 address, u8 *data, u32 length, u32 addrtype); + +// Writes to the EEPROM. TYPE 3 EEPROM must be erased first (I think?) +void cardWriteEeprom(u32 address, u8 *data, u32 length, u32 addrtype); + +// Returns the ID of the EEPROM chip? Doesn't work well, most chips give ff,ff +// i = 0 or 1 +u32 cardEepromReadID(); + +// Sends a command to the EEPROM +u8 cardEepromCommand(u8 command); + +/* + * -1:no card or no EEPROM + * 0:unknown PassMe? + * 1:TYPE 1 4Kbit(512Byte) EEPROM + * 2:TYPE 2 64Kbit(8KByte)or 512kbit(64Kbyte) EEPROM + * 3:TYPE 3 2Mbit(256KByte) FLASH MEMORY (some rare 4Mbit and 8Mbit chips also) + */ +int cardEepromGetType(void); + +// Returns the size in bytes of EEPROM +u32 cardEepromGetSize(); + +// Erases the entire chip. TYPE 3 chips MUST be erased before writing to them. (I think?) +void cardEepromChipErase(void); + +// Erases a single sector of the TYPE 3 chip +void cardEepromSectorErase(u32 address); + +#ifdef __cplusplus +} +#endif + + +#endif + diff --git a/BootLoader/source/clear_cache.arm9.s b/BootLoader/source/clear_cache.arm9.s index 9d37fe9..49ec8bb 100644 --- a/BootLoader/source/clear_cache.arm9.s +++ b/BootLoader/source/clear_cache.arm9.s @@ -41,5 +41,28 @@ BEGIN_ASM_FUNC arm9_clearCache mcr p15, 0, r3, c7, c6, 0 @ Flush DCache mcr p15, 0, r3, c7, c10, 4 @ empty write buffer + mcr p15, 0, r3, c3, c0, 0 @ disable write buffer (def = 0) + + mcr p15, 0, r3, c2, c0, 0 @ disable DTCM and protection unit + + mcr p15, 0, r3, c6, c0, 0 @ disable protection unit 0 (def = 0) + mcr p15, 0, r3, c6, c1, 0 @ disable protection unit 1 (def = 0) + mcr p15, 0, r3, c6, c2, 0 @ disable protection unit 2 (def = 0) + mcr p15, 0, r3, c6, c3, 0 @ disable protection unit 3 (def = 0) + mcr p15, 0, r3, c6, c4, 0 @ disable protection unit 4 (def = ?) + mcr p15, 0, r3, c6, c5, 0 @ disable protection unit 5 (def = ?) + mcr p15, 0, r3, c6, c6, 0 @ disable protection unit 6 (def = ?) + mcr p15, 0, r3, c6, c7, 0 @ disable protection unit 7 (def = ?) + + mcr p15, 0, r3, c5, c0, 3 @ IAccess + mcr p15, 0, r3, c5, c0, 2 @ DAccess + + mov r3, #0x00800000 + add r3, r3, #0x00A + mcr p15, 0, r3, c9, c1, 0 @ DTCM base (def = 0x0080000A) ??? + + mov r3, #0x0000000C + mcr p15, 0, r3, c9, c1, 1 @ ITCM base (def = 0x0000000C) ??? + bx lr diff --git a/BootLoader/source/common.h b/BootLoader/source/common.h index 6ca2e9d..2005e4d 100755 --- a/BootLoader/source/common.h +++ b/BootLoader/source/common.h @@ -20,7 +20,6 @@ #define _COMMON_H #include -#include #include #define resetCpu() \ @@ -33,28 +32,18 @@ enum { ERR_NONE=0x00, ERR_STS_CLR_MEM=0x01, ERR_STS_LOAD_BIN=0x02, ERR_STS_HOOK_ ERR_NOCHEAT=0x21, ERR_HOOK=0x22, } ERROR_CODES; -// Values fixed so they can be shared with ASM code -enum { - ARM9_BOOT = 0, - ARM9_START = 1, - ARM9_RESET = 2, - ARM9_READY = 3, - ARM9_MEMCLR = 4 - } ARM9_STATE; - -enum { - ARM7_BOOT = 0, - ARM7_START = 1, - ARM7_RESET = 2, - ARM7_READY = 3, - ARM7_MEMCLR = 4, - ARM7_LOADBIN = 5, - ARM7_HOOKBIN = 6, - ARM7_BOOTBIN = 7, - ARM7_ERR = 8 - } ARM7_STATE; +enum {ARM9_BOOT, ARM9_START, ARM9_MEMCLR, ARM9_READY, ARM9_BOOTBIN, ARM9_DISPERR, ARM9_SETSCFG} ARM9_STATE; +extern tNDSHeader* ndsHeader; +extern bool dsiModeConfirmed; +extern bool arm9_dsiModeConfirmed; +extern bool arm9_boostVram; +extern bool arm9_scfgUnlock; +extern bool arm9_TWLClockSpeeds; +extern bool arm9_ExtendRam; +extern volatile int arm9_stateFlag; extern volatile u32 arm9_errorCode; +extern volatile bool arm9_errorClearBG; static inline void dmaFill(const void* src, void* dest, uint32 size) { DMA_SRC(3) = (uint32)src; @@ -69,13 +58,5 @@ static inline void copyLoop (u32* dest, const u32* src, size_t size) { } while (size -= 4); } -static inline void ipcSendState(uint8_t state) { - REG_IPC_SYNC = (state & 0x0f) << 8; -} - -static inline uint8_t ipcRecvState(void) { - return (uint8_t)(REG_IPC_SYNC & 0x0f); -} - #endif // _COMMON_H diff --git a/BootLoader/source/crt0.arm9.s b/BootLoader/source/crt0.arm9.s index fda1931..6d0704a 100755 --- a/BootLoader/source/crt0.arm9.s +++ b/BootLoader/source/crt0.arm9.s @@ -6,11 +6,9 @@ @--------------------------------------------------------------------------------- _arm9_start: @--------------------------------------------------------------------------------- - mov r0, #0x04000000 - mov r1, #0 - str r1, [r0,#0x208] @ REG_IME - str r1, [r0,#0x210] @ REG_IE - str r1, [r0,#0x218] @ REG_AUXIE + mov r0, #0x04000000 @ IME = 0; + add r0, r0, #0x208 + strh r0, [r0] mov r0, #0x12 @ Switch to IRQ Mode msr cpsr, r0 @@ -36,6 +34,7 @@ _arm9_start: @ If the user ever returns, restart b _arm9_start + @--------------------------------------------------------------------------------- _blx_r3_stub: @--------------------------------------------------------------------------------- diff --git a/BootLoader/source/decompress.c b/BootLoader/source/decompress.c new file mode 100644 index 0000000..c9fa427 --- /dev/null +++ b/BootLoader/source/decompress.c @@ -0,0 +1,151 @@ +/* + Copyright (C) 2008 somebody + Copyright (C) 2009 yellow wood goblin + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#include +#include // tNDSHeader +#include +#include "module_params.h" + +/*static void decompressLZ77Backwards(u8* addr, u32 size) { + u32 len = *(u32*)(addr + size - 4) + size; + + if(len == size) { + size -= 12; + } + + len = *(u32*)(addr + size - 4) + size; + + //byte[] Result = new byte[len]; + //Array.Copy(Data, Result, Data.Length); + + u32 end = *(u32*)(addr + size - 8) & 0xFFFFFF; + + u8* result = addr; + + int Offs = (int)(size - (*(u32*)(addr + size - 8) >> 24)); + int dstoffs = (int)len; + while (true) { + u8 header = result[--Offs]; + for (int i = 0; i < 8; i++) { + if ((header & 0x80) == 0) { + result[--dstoffs] = result[--Offs]; + } else { + u8 a = result[--Offs]; + u8 b = result[--Offs]; + int offs = (((a & 0xF) << 8) | b) + 2;//+ 1; + int length = (a >> 4) + 2; + do { + result[dstoffs - 1] = result[dstoffs + offs]; + dstoffs--; + length--; + } while (length >= 0); + } + + if (Offs <= size - end) { + return; + } + + header <<= 1; + } + } +}*/ + +//static u32 iUncompressedSize = 0; +static u32 iFixedAddr = 0; +static u32 iFixedData = 0; + +static u32 decompressBinary(u8 *aMainMemory, u32 aCodeLength, u32 aMemOffset) { + u8 *ADDR1 = NULL; + u8 *ADDR1_END = NULL; + u8 *ADDR2 = NULL; + u8 *ADDR3 = NULL; + + u8 *pBuffer32 = (u8 *)(aMainMemory); + u8 *pBuffer32End = (u8 *)(aMainMemory + aCodeLength); + + while (pBuffer32 < pBuffer32End) { + if (0xDEC00621 == *(u32 *)pBuffer32 && 0x2106C0DE == *(u32 *)(pBuffer32 + 4)) { + ADDR1 = (u8 *)(*(u32 *)(pBuffer32 - 8)); + iFixedAddr = (u32)(pBuffer32 - 8); + iFixedData = *(u32 *)(pBuffer32 - 8); + *(u32 *)(pBuffer32 - 8) = 0; + break; + } + pBuffer32 += 4; + } + if (0 == ADDR1) { + iFixedAddr = 0; + return 0; + } + + u32 A = *(u32 *)(ADDR1 + aMemOffset - 4); + u32 B = *(u32 *)(ADDR1 + aMemOffset - 8); + ADDR1_END = ADDR1 + A; + ADDR2 = ADDR1 - (B >> 24); + B &= ~0xff000000; + ADDR3 = ADDR1 - B; + u32 uncompressEnd = ((u32)ADDR1_END) - ((u32)aMainMemory); + + while (!(ADDR2 <= ADDR3)) { + u32 marku8 = *(--ADDR2 + aMemOffset); + //ADDR2-=1; + int count = 8; + while (true) { + count--; + if (count < 0) + break; + if (0 == (marku8 & 0x80)) { + *(--ADDR1_END + aMemOffset) = *(--ADDR2 + aMemOffset); + } else { + int u8_r12 = *(--ADDR2 + aMemOffset); + int u8_r7 = *(--ADDR2 + aMemOffset); + u8_r7 |= (u8_r12 << 8); + u8_r7 &= ~0xf000; + u8_r7 += 2; + u8_r12 += 0x20; + do + { + u8 realu8 = *(ADDR1_END + aMemOffset + u8_r7); + *(--ADDR1_END + aMemOffset) = realu8; + u8_r12 -= 0x10; + } while (u8_r12 >= 0); + } + marku8 <<= 1; + if (ADDR2 <= ADDR3) { + break; + } + } + } + return uncompressEnd; +} + +void ensureBinaryDecompressed(const tNDSHeader* ndsHeader, module_params_t* moduleParams) { + //const char* romTid = getRomTid(ndsHeader); + + if ( + moduleParams->compressed_static_end + /*|| strcmp(romTid, "YQUJ") == 0 // Chrono Trigger (Japan) + || strcmp(romTid, "YQUE") == 0 // Chrono Trigger (USA) + || strcmp(romTid, "YQUP") == 0 // Chrono Trigger (Europe)*/ + ) { + // Compressed + //dbg_printf("This rom is compressed\n"); + //decompressLZ77Backwards((u8*)ndsHeader->arm9destination, ndsHeader->arm9binarySize); + decompressBinary((u8*)ndsHeader->arm9destination, ndsHeader->arm9binarySize, 0); + moduleParams->compressed_static_end = 0; + }/* else { + // Not compressed + dbg_printf("This rom is not compressed\n"); + }*/ +} diff --git a/BootLoader/source/encryption.c b/BootLoader/source/encryption.c index 88c0deb..0634891 100755 --- a/BootLoader/source/encryption.c +++ b/BootLoader/source/encryption.c @@ -18,8 +18,9 @@ #include #include "encryption.h" -#include "read_bios.h" #include "key1.h" +#include "key2.h" +#include "tonccpy.h" #define KEYSIZE 0x1048 @@ -85,7 +86,7 @@ void apply_keycode (u32 modulo) { crypt_64bit_up (&keycode[1]); crypt_64bit_up (&keycode[0]); - memset (scratch, 0, 8); + toncset (scratch, 0, 8); for (i = 0; i < 0x12; i+=1) { keybuf[i] = keybuf[i] ^ bswap_32bit (keycode[i % modulo]); @@ -97,8 +98,8 @@ void apply_keycode (u32 modulo) { } } -void init_keycode (u32 idcode, u32 level, u32 modulo) { - memcpy ((u8*)keybuf, gEncrData, KEYSIZE); +void init_keycode (u32 idcode, u32 level, u32 modulo, int iCardDevice) { + tonccpy ((u8*)keybuf, (iCardDevice ? gEncrDataTwl : gEncrData), KEYSIZE); keycode[0] = idcode; keycode[1] = idcode/2; keycode[2] = idcode*2; diff --git a/BootLoader/source/encryption.h b/BootLoader/source/encryption.h index 6eb27b4..0b947b3 100755 --- a/BootLoader/source/encryption.h +++ b/BootLoader/source/encryption.h @@ -20,7 +20,7 @@ #define ENCRYPTION_H #include -void init_keycode (u32 idcode, u32 level, u32 modulo); +void init_keycode (u32 idcode, u32 level, u32 modulo, int iCardDevice); void crypt_64bit_down (u32* ptr); void crypt_64bit_up (u32* ptr); diff --git a/BootLoader/source/find.h b/BootLoader/source/find.h new file mode 100644 index 0000000..6d4d897 --- /dev/null +++ b/BootLoader/source/find.h @@ -0,0 +1,31 @@ +#ifndef FIND_H +#define FIND_H + +#include +#include // tNDSHeader +#include "module_params.h" + +// COMMON +//u8* memsearch(const u8* start, u32 dataSize, const u8* find, u32 findSize); +u32* memsearch32(const u32* start, u32 dataSize, const u32* find, u32 findSize, bool forward); +u16* memsearch16(const u16* start, u32 dataSize, const u16* find, u32 findSize, bool forward); + +inline u32* findOffset(const u32* start, u32 dataSize, const u32* find, u32 findLen) { + return memsearch32(start, dataSize, find, findLen*sizeof(u32), true); +} +inline u32* findOffsetBackwards(const u32* start, u32 dataSize, const u32* find, u32 findLen) { + return memsearch32(start, dataSize, find, findLen*sizeof(u32), false); +} +inline u16* findOffsetThumb(const u16* start, u32 dataSize, const u16* find, u32 findLen) { + return memsearch16(start, dataSize, find, findLen*sizeof(u16), true); +} +inline u16* findOffsetBackwardsThumb(const u16* start, u32 dataSize, const u16* find, u32 findLen) { + return memsearch16(start, dataSize, find, findLen*sizeof(u16), false); +} + +const u32* getMpuInitRegionSignature(u32 patchMpuRegion); +u32* findMpuStartOffset(const tNDSHeader* ndsHeader, u32 patchMpuRegion); +u32* findMpuDataOffset(const module_params_t* moduleParams, u32 patchMpuRegion, const u32* mpuStartOffset); +u32* findMpuInitCacheOffset(const u32* mpuStartOffset); + +#endif // FIND_H diff --git a/BootLoader/source/find_arm9.c b/BootLoader/source/find_arm9.c new file mode 100644 index 0000000..253ec43 --- /dev/null +++ b/BootLoader/source/find_arm9.c @@ -0,0 +1,140 @@ +#include // NULL +#include "patch.h" +#include "find.h" + +//#define memset __builtin_memset + +// +// Subroutine function signatures ARM9 +// + +// Mpu cache +static const u32 mpuInitRegion0Signature[1] = {0xEE060F10}; +static const u32 mpuInitRegion0Data[1] = {0x4000033}; +static const u32 mpuInitRegion1Signature[1] = {0xEE060F11}; +static const u32 mpuInitRegion1Data1[1] = {0x200002D}; // SDK <= 3 +static const u32 mpuInitRegion1Data4[1] = {0x200002D}; // SDK >= 4 +//static const u32 mpuInitRegion1DataAlt[1] = {0x200002B}; +static const u32 mpuInitRegion2Signature[1] = {0xEE060F12}; +static const u32 mpuInitRegion2Data1[1] = {0x27C0023}; // SDK != 3 (Previously: SDK <= 2) +static const u32 mpuInitRegion2Data3[1] = {0x27E0021}; // SDK 3 (Previously: SDK >= 3) +static const u32 mpuInitRegion3Signature[1] = {0xEE060F13}; +static const u32 mpuInitRegion3Data[1] = {0x8000035}; + +// Mpu cache init +static const u32 mpuInitCache[1] = {0xE3A00042}; + +const u32* getMpuInitRegionSignature(u32 patchMpuRegion) { + switch (patchMpuRegion) { + case 0: return mpuInitRegion0Signature; + case 1: return mpuInitRegion1Signature; + case 2: return mpuInitRegion2Signature; + case 3: return mpuInitRegion3Signature; + } + return mpuInitRegion1Signature; +} + +u32* findMpuStartOffset(const tNDSHeader* ndsHeader, u32 patchMpuRegion) { + // dbg_printf("findMpuStartOffset:\n"); + + const u32* mpuInitRegionSignature = getMpuInitRegionSignature(patchMpuRegion); + + u32* mpuStartOffset = findOffset( + (u32*)ndsHeader->arm9destination, ndsHeader->arm9binarySize, + mpuInitRegionSignature, 1 + ); + if (mpuStartOffset) { + // dbg_printf("Mpu init found: "); + } else { + // dbg_printf("Mpu init not found\n"); + } + + if (mpuStartOffset) { + // dbg_hexa((u32)mpuStartOffset); + // dbg_printf("\n"); + } + + // dbg_printf("\n"); + return mpuStartOffset; +} + +u32* findMpuDataOffset(const module_params_t* moduleParams, u32 patchMpuRegion, const u32* mpuStartOffset) { + if (!mpuStartOffset) { + return NULL; + } + + // dbg_printf("findMpuDataOffset:\n"); + + const u32* mpuInitRegion1Data = mpuInitRegion1Data1; + const u32* mpuInitRegion2Data = mpuInitRegion2Data1; + if (moduleParams->sdk_version > 0x3000000 && moduleParams->sdk_version < 0x4000000) { + mpuInitRegion2Data = mpuInitRegion2Data3; + } else if (moduleParams->sdk_version > 0x4000000) { + mpuInitRegion1Data = mpuInitRegion1Data4; + } + + const u32* mpuInitRegionData = mpuInitRegion1Data; + switch (patchMpuRegion) { + case 0: + mpuInitRegionData = mpuInitRegion0Data; + break; + case 1: + mpuInitRegionData = mpuInitRegion1Data; + break; + case 2: + mpuInitRegionData = mpuInitRegion2Data; + break; + case 3: + mpuInitRegionData = mpuInitRegion3Data; + break; + } + + u32* mpuDataOffset = findOffset( + mpuStartOffset, 0x100, + mpuInitRegionData, 1 + ); + if (!mpuDataOffset) { + // Try to find it + for (int i = 0; i < 0x100; i++) { + mpuDataOffset += i; + if ((*mpuDataOffset & 0xFFFFFF00) == 0x02000000) { + break; + } + } + } + if (mpuDataOffset) { + // dbg_printf("Mpu data found: "); + } else { + // dbg_printf("Mpu data not found\n"); + } + + if (mpuDataOffset) { + // dbg_hexa((u32)mpuDataOffset); + // dbg_printf("\n"); + } + + // dbg_printf("\n"); + return mpuDataOffset; +} + +u32* findMpuInitCacheOffset(const u32* mpuStartOffset) { + // dbg_printf("findMpuInitCacheOffset:\n"); + + u32* mpuInitCacheOffset = findOffset( + mpuStartOffset, 0x100, + mpuInitCache, 1 + ); + if (mpuInitCacheOffset) { + // dbg_printf("Mpu init cache found: "); + } else { + // dbg_printf("Mpu init cache not found\n"); + } + + if (mpuInitCacheOffset) { + // dbg_hexa((u32)mpuInitCacheOffset); + // dbg_printf("\n"); + } + + // dbg_printf("\n"); + return mpuInitCacheOffset; +} diff --git a/BootLoader/source/find_common.c b/BootLoader/source/find_common.c new file mode 100644 index 0000000..8f02d76 --- /dev/null +++ b/BootLoader/source/find_common.c @@ -0,0 +1,117 @@ +//#include // memcmp +#include // NULL +#include +//#include +#include "find.h" + +// (memcmp is slower) +//#define memcmp __builtin_memcmp + +//#define TABLE_SIZE (UCHAR_MAX + 1) // 256 + +extern inline u32* findOffset(const u32* start, u32 dataLen, const u32* find, u32 findLen); +extern inline u32* findOffsetBackwards(const u32* start, u32 dataLen, const u32* find, u32 findLen); +extern inline u16* findOffsetThumb(const u16* start, u32 dataLen, const u16* find, u32 findLen); +extern inline u16* findOffsetBackwardsThumb(const u16* start, u32 dataLen, const u16* find, u32 findLen); + +/* +* Look for @find and return the position of it. +* Brute Force algorithm +*/ +u32* memsearch32(const u32* start, u32 dataSize, const u32* find, u32 findSize, bool forward) { + u32 dataLen = dataSize/sizeof(u32); + u32 findLen = findSize/sizeof(u32); + + const u32* end = forward ? (start + dataLen) : (start - dataLen); + for (u32* addr = (u32*)start; addr != end; forward ? ++addr : --addr) { + bool found = true; + for (u32 j = 0; j < findLen; ++j) { + if (addr[j] != find[j]) { + found = false; + break; + } + } + if (found) { + return (u32*)addr; + } + } + return NULL; +} +u16* memsearch16(const u16* start, u32 dataSize, const u16* find, u32 findSize, bool forward) { + u32 dataLen = dataSize/sizeof(u16); + u32 findLen = findSize/sizeof(u16); + + const u16* end = forward ? (start + dataLen) : (start - dataLen); + for (u16* addr = (u16*)start; addr != end; forward ? ++addr : --addr) { + bool found = true; + for (u32 j = 0; j < findLen; ++j) { + if (addr[j] != find[j]) { + found = false; + break; + } + } + if (found) { + return (u16*)addr; + } + } + return NULL; +} + +/* +* Boyer-Moore Horspool algorithm +*/ +/*u8* memsearch(const u8* start, u32 dataSize, const u8* find, u32 findSize) { + u32 dataLen = dataSize/sizeof(u8); + u32 findLen = findSize/sizeof(u8); + + u32 table[TABLE_SIZE]; + + // Preprocessing + for (u32 i = 0; i < TABLE_SIZE; ++i) { + table[i] = findLen; + } + for (u32 i = 0; i < findLen - 1; ++i) { + table[find[i]] = findLen - i - 1; + } + + // Searching + u32 j = 0; + while (j <= dataLen - findLen) { + u8 c = start[j + findLen - 1]; + if (find[findLen - 1] == c && memcmp(find, start + j, findLen - 1) == 0) { + return (u8*)start + j; + } + j += table[c]; + } + + return NULL; +}*/ + +/* +* Quick Search algorithm +*/ +/*u8* memsearch(const u8* start, u32 dataSize, const u8* find, u32 findSize) { + u32 dataLen = dataSize/sizeof(u8); + u32 findLen = findSize/sizeof(u8); + + u32 table[TABLE_SIZE]; + + // Preprocessing + for (u32 i = 0; i < TABLE_SIZE; ++i) { + table[i] = findLen + 1; + } + for (u32 i = 0; i < findLen; ++i) { + table[find[i]] = findLen - i; + } + + // Searching + u32 j = 0; + while (j <= dataLen - findLen) { + if (memcmp(find, start + j, findLen) == 0) { + return (u8*)start + j; + } + j += table[start[j + findLen]]; + } + + return NULL; +}*/ diff --git a/BootLoader/source/key2.h b/BootLoader/source/key2.h new file mode 100644 index 0000000..72b8ef2 --- /dev/null +++ b/BootLoader/source/key2.h @@ -0,0 +1,350 @@ +const unsigned char gEncrDataTwl[] = { + 0x59, 0xaa, 0x56, 0x8e, 0x90, 0xd7, 0x11, 0x55, 0x4d, 0xea, 0xbf, 0xfe, + 0xbd, 0x0d, 0x75, 0x91, 0xf7, 0x85, 0x39, 0x98, 0xd0, 0x9c, 0xc3, 0x58, + 0xc4, 0x15, 0x6f, 0xf1, 0x90, 0xf9, 0xe4, 0xc3, 0x8e, 0xc0, 0x9b, 0x0e, + 0x5d, 0xe1, 0x87, 0x94, 0xb9, 0x07, 0x2c, 0xba, 0xa6, 0x4f, 0x75, 0x74, + 0xc1, 0xe3, 0x1c, 0x86, 0xe6, 0xed, 0xf8, 0x09, 0x3b, 0xbb, 0x37, 0x7a, + 0x4e, 0xf0, 0xf0, 0x92, 0xf6, 0x55, 0xfa, 0x47, 0xfb, 0x1b, 0xc5, 0x16, + 0x06, 0x74, 0x4e, 0x56, 0x20, 0xdd, 0xb6, 0xd1, 0x42, 0xcf, 0xcf, 0xf1, + 0x55, 0x7e, 0x17, 0x18, 0xa1, 0x93, 0xff, 0x09, 0xda, 0x36, 0xa6, 0x9a, + 0x43, 0x3d, 0xf4, 0x65, 0xed, 0x40, 0x97, 0x6c, 0xd5, 0xa6, 0xdd, 0x6d, + 0x6c, 0x23, 0xbf, 0x94, 0xe7, 0x51, 0xa6, 0x68, 0x3c, 0xe8, 0xe6, 0x65, + 0xd6, 0xbc, 0x9e, 0x92, 0x78, 0x26, 0x46, 0xa1, 0x73, 0xdc, 0xe5, 0x36, + 0x8e, 0xcd, 0xec, 0xa1, 0xf1, 0xee, 0x8b, 0x68, 0xf4, 0xac, 0xc1, 0xdc, + 0xc8, 0x84, 0x95, 0x31, 0xe8, 0xed, 0xc7, 0x5e, 0xe4, 0x5a, 0x37, 0xca, + 0xec, 0x55, 0xbe, 0x2a, 0xfc, 0xf6, 0x45, 0x67, 0xa9, 0xb4, 0x7d, 0x7d, + 0x9b, 0x6e, 0xe9, 0x2c, 0xff, 0x3f, 0xeb, 0x69, 0xb7, 0x2e, 0x68, 0xa8, + 0x94, 0xef, 0x7b, 0xbd, 0x88, 0x93, 0x15, 0x66, 0x3a, 0xb7, 0x7f, 0xfe, + 0x1d, 0xc3, 0x89, 0x08, 0xd7, 0x74, 0x59, 0xfa, 0xaf, 0x91, 0x41, 0x9e, + 0x57, 0xd5, 0x67, 0x84, 0xba, 0x00, 0xe9, 0x63, 0x58, 0x07, 0x4d, 0xec, + 0xdf, 0xc6, 0xda, 0x1e, 0x62, 0x52, 0xd9, 0x14, 0xbc, 0x03, 0xc3, 0xb0, + 0xa5, 0xfd, 0xb7, 0x27, 0xde, 0xb1, 0x6f, 0x1b, 0x7c, 0x72, 0x4a, 0xcd, + 0x09, 0xe5, 0x82, 0x70, 0xd3, 0x9f, 0xb6, 0xd6, 0xa4, 0x6a, 0x2f, 0xc2, + 0x32, 0xbd, 0xb5, 0x39, 0xe4, 0xea, 0xb9, 0x71, 0x1c, 0x70, 0x67, 0x21, + 0x92, 0x21, 0xac, 0xf4, 0x9e, 0x63, 0xe8, 0x5e, 0x83, 0x02, 0xcc, 0x0c, + 0xf8, 0xf8, 0x9e, 0x87, 0x89, 0xfc, 0x03, 0x85, 0xfa, 0xcc, 0x77, 0x07, + 0x44, 0x5f, 0x4d, 0xe5, 0x19, 0xd3, 0x12, 0xee, 0xca, 0xe1, 0xe0, 0xbf, + 0x1e, 0xbe, 0xe7, 0x12, 0x1f, 0x6a, 0x93, 0x1e, 0x38, 0x4b, 0xa7, 0x9f, + 0x81, 0xa9, 0x77, 0x85, 0x0c, 0xc6, 0x39, 0x02, 0x55, 0xd2, 0x62, 0x56, + 0x19, 0x85, 0xa6, 0x38, 0x85, 0xe1, 0x2d, 0x3c, 0x38, 0x3b, 0x5b, 0xa0, + 0x24, 0x18, 0xe9, 0x29, 0x6c, 0x9f, 0xe4, 0x4d, 0x4e, 0x23, 0x5f, 0xb1, + 0xe2, 0xa0, 0x6f, 0x97, 0xb2, 0x41, 0xd1, 0xea, 0xdb, 0xa7, 0x37, 0x81, + 0xeb, 0x06, 0x8d, 0x77, 0xc2, 0x68, 0xfc, 0x5a, 0x65, 0x97, 0x33, 0x58, + 0xa1, 0xb8, 0x35, 0x0f, 0xf4, 0x25, 0xbc, 0x3b, 0x4f, 0x18, 0x0f, 0x0e, + 0x60, 0x25, 0x3d, 0xd8, 0x77, 0x1a, 0xd0, 0x8a, 0xb0, 0x61, 0x57, 0x16, + 0x0b, 0x55, 0xf2, 0x58, 0xb9, 0x91, 0x52, 0x30, 0x33, 0xab, 0x29, 0x9b, + 0x03, 0x62, 0xe5, 0xcc, 0xdf, 0x6e, 0x62, 0x86, 0x9d, 0x76, 0xe5, 0xdd, + 0x6f, 0xca, 0x3e, 0x75, 0xd8, 0x88, 0x58, 0x06, 0x8d, 0xa4, 0x58, 0xf5, + 0xaa, 0x7c, 0xce, 0x17, 0xdd, 0xde, 0xca, 0x0a, 0x72, 0x87, 0x6f, 0x29, + 0x6c, 0x0c, 0xe9, 0xc0, 0x3d, 0x32, 0x2e, 0x55, 0xf3, 0xa7, 0x27, 0xda, + 0xfc, 0x86, 0x0c, 0x9e, 0x33, 0x83, 0xb5, 0x47, 0xeb, 0xe8, 0xf6, 0xc9, + 0xf4, 0x24, 0x72, 0xee, 0xaf, 0xf8, 0xb5, 0x59, 0x70, 0x06, 0x85, 0x71, + 0xbb, 0x3c, 0xbe, 0xbb, 0x2c, 0x24, 0xad, 0x67, 0xba, 0x42, 0xb9, 0xee, + 0x68, 0xec, 0x0b, 0xe6, 0x5b, 0x26, 0x0f, 0x2b, 0xb6, 0x3a, 0x93, 0x4f, + 0x9f, 0xe6, 0x9f, 0xb9, 0x1a, 0xa0, 0xb9, 0x51, 0x1c, 0x8d, 0x66, 0x37, + 0xd2, 0x50, 0xcc, 0xae, 0x10, 0x30, 0x16, 0x60, 0x56, 0x3b, 0x99, 0x0e, + 0x90, 0x7b, 0x28, 0xde, 0x93, 0xf4, 0x16, 0x87, 0x1f, 0xd0, 0x9b, 0xc2, + 0x33, 0x42, 0x2c, 0x2c, 0xf1, 0x36, 0xc3, 0x39, 0xf8, 0x4f, 0xa4, 0x1e, + 0x00, 0x43, 0xb1, 0xac, 0xdf, 0x08, 0xbb, 0xfe, 0x5e, 0x2a, 0xdc, 0x2a, + 0x10, 0xf3, 0x7b, 0xc5, 0x2f, 0x96, 0xc9, 0x1d, 0x51, 0x4f, 0xc0, 0xde, + 0x6e, 0x93, 0x9a, 0x35, 0x19, 0xb8, 0x58, 0xb5, 0x19, 0xba, 0xaf, 0x2a, + 0xb1, 0xb5, 0xb2, 0xff, 0xc1, 0x89, 0xbc, 0x3f, 0xd8, 0x8f, 0x34, 0x07, + 0x63, 0x60, 0xa5, 0xed, 0xdb, 0xff, 0x9e, 0xf5, 0x5b, 0x23, 0xc0, 0x1b, + 0x13, 0x96, 0xd4, 0x2f, 0x07, 0x51, 0x1b, 0xac, 0x90, 0x72, 0x71, 0x28, + 0x65, 0x98, 0xe1, 0xff, 0x6a, 0x9d, 0xe7, 0x30, 0x6d, 0xb1, 0x2c, 0x21, + 0xfa, 0xcb, 0xbc, 0x6a, 0x3c, 0x25, 0xe8, 0x50, 0x5c, 0x53, 0xd8, 0xd5, + 0xcb, 0xa2, 0x53, 0x53, 0xa5, 0x64, 0x3f, 0x78, 0x61, 0x77, 0x1d, 0x8d, + 0x16, 0xe4, 0xe4, 0xa1, 0x32, 0x9c, 0x00, 0x52, 0x5f, 0x2a, 0xd7, 0xf5, + 0x3c, 0xfd, 0x09, 0xd7, 0x1b, 0x3b, 0x99, 0x01, 0x4d, 0xdc, 0x91, 0xe4, + 0x6d, 0xe8, 0x9e, 0xa3, 0x18, 0xad, 0x43, 0x27, 0xba, 0xc1, 0x5f, 0x37, + 0xa6, 0x12, 0x61, 0xf5, 0x1c, 0x63, 0x0c, 0x25, 0x2d, 0x90, 0xf8, 0x52, + 0xcb, 0x2c, 0x37, 0x4b, 0xde, 0x1e, 0x6c, 0x36, 0x1d, 0x47, 0xf5, 0xdf, + 0x87, 0xca, 0x79, 0x98, 0x80, 0x09, 0x59, 0xd7, 0x14, 0xfd, 0xf7, 0xf9, + 0xf4, 0xce, 0x69, 0x23, 0xd2, 0xf8, 0xc4, 0xee, 0xa0, 0x7e, 0xf8, 0x36, + 0x8e, 0x35, 0x93, 0x45, 0x82, 0xae, 0x0d, 0xfc, 0x65, 0xbc, 0xaa, 0xf5, + 0x58, 0xa9, 0x65, 0xba, 0xc6, 0x08, 0x4b, 0x63, 0xc3, 0x3f, 0xa6, 0x8a, + 0xf4, 0xc1, 0x9b, 0x8f, 0x02, 0x45, 0x1b, 0x13, 0x78, 0x28, 0x9f, 0xd6, + 0x53, 0xb1, 0xc2, 0x7e, 0x4e, 0x71, 0x17, 0xe7, 0x55, 0x09, 0x62, 0xc7, + 0xad, 0xd5, 0x91, 0x1a, 0xc0, 0xfa, 0x49, 0x4a, 0xef, 0x00, 0xd6, 0xf6, + 0xf1, 0xd0, 0xc9, 0x40, 0x1b, 0xb1, 0xfd, 0x0e, 0xd3, 0x95, 0xf1, 0xcd, + 0x95, 0x60, 0x08, 0x73, 0xd2, 0xe0, 0x56, 0xfa, 0xd0, 0x65, 0x51, 0xfd, + 0xc4, 0x48, 0xd1, 0xaa, 0x5a, 0xba, 0xcb, 0x8f, 0x76, 0x22, 0xe3, 0x60, + 0x6f, 0x4a, 0x3c, 0x86, 0x35, 0xee, 0xe9, 0x88, 0x9a, 0x4a, 0x36, 0x34, + 0x74, 0xe3, 0x6d, 0x3f, 0xe4, 0x2a, 0x93, 0x0b, 0xe2, 0xc6, 0x47, 0x4d, + 0xf2, 0xb6, 0x8e, 0x78, 0x14, 0x91, 0x61, 0xcf, 0xfa, 0xb6, 0x1b, 0x39, + 0xca, 0x88, 0x0c, 0x04, 0x65, 0xd3, 0x3b, 0xd1, 0xc6, 0xda, 0xe5, 0xf4, + 0xe9, 0x1a, 0x38, 0x0f, 0xa5, 0xca, 0x32, 0x29, 0x78, 0x6c, 0x91, 0x9d, + 0xd8, 0xc1, 0x8c, 0x3d, 0x6e, 0x82, 0x49, 0x10, 0x38, 0x4c, 0x95, 0xe3, + 0xf1, 0x69, 0x30, 0x2e, 0x3e, 0xbf, 0xaf, 0x7d, 0x5e, 0x51, 0x3c, 0x6a, + 0x15, 0x04, 0xbd, 0x8f, 0xcf, 0xeb, 0x3f, 0xe0, 0xe0, 0xa7, 0xb3, 0x3e, + 0xf3, 0xf7, 0xd8, 0x1d, 0x15, 0x74, 0xef, 0x4e, 0x5b, 0xa0, 0x1e, 0x3a, + 0x45, 0xec, 0x98, 0x8b, 0xe4, 0x0c, 0xfb, 0x77, 0xfd, 0xcf, 0xde, 0x88, + 0x4d, 0x42, 0x18, 0x81, 0x14, 0x0d, 0xe2, 0x20, 0x4e, 0xcf, 0x0d, 0x3b, + 0xc8, 0x41, 0x36, 0x9d, 0x99, 0xab, 0x47, 0xcb, 0x55, 0xf0, 0x79, 0x77, + 0x32, 0x85, 0xa4, 0xe4, 0x11, 0x14, 0x42, 0x8d, 0x03, 0x8c, 0x76, 0xba, + 0x05, 0xcf, 0xe8, 0x40, 0x47, 0xcf, 0xbd, 0xe7, 0x22, 0xe6, 0x72, 0xce, + 0xa0, 0x13, 0xe4, 0x59, 0x5e, 0x68, 0xc2, 0x53, 0x7a, 0x4d, 0x4b, 0x4c, + 0xcd, 0xbf, 0xe2, 0xb0, 0xa3, 0x63, 0x77, 0xf2, 0x1e, 0xc3, 0x21, 0xca, + 0xd2, 0xb6, 0x7b, 0x01, 0x79, 0x02, 0x43, 0xec, 0x6d, 0x98, 0x97, 0x86, + 0x27, 0x41, 0x67, 0xe7, 0x04, 0xcf, 0x71, 0x0e, 0xfc, 0xc8, 0x3d, 0x32, + 0x99, 0x35, 0x4d, 0x2c, 0x94, 0xd7, 0x82, 0xb5, 0x2e, 0x20, 0x73, 0xd8, + 0xa4, 0xf9, 0xae, 0x6c, 0xd6, 0x12, 0x57, 0xe9, 0x44, 0x86, 0x6a, 0x9e, + 0xe0, 0x72, 0x84, 0x97, 0xb3, 0x8d, 0x56, 0x28, 0x66, 0xdb, 0xec, 0x25, + 0xbf, 0x01, 0x11, 0x76, 0x9b, 0xe1, 0x43, 0x8d, 0x6d, 0x0b, 0xfa, 0x3d, + 0x45, 0x15, 0x4a, 0xb4, 0xac, 0x76, 0x2a, 0x4a, 0xfb, 0x8d, 0xa5, 0x03, + 0xe4, 0x36, 0xe6, 0xd9, 0xfd, 0xc1, 0x20, 0x63, 0xe3, 0x5c, 0x9a, 0x0e, + 0x0f, 0x99, 0x49, 0xc6, 0x10, 0x9a, 0x08, 0x47, 0xff, 0x3d, 0xaa, 0x0c, + 0x9f, 0x46, 0x57, 0x5a, 0xe5, 0xc5, 0x24, 0xc5, 0xf1, 0xca, 0x1a, 0xa2, + 0xb0, 0x29, 0x78, 0xdd, 0x7a, 0x72, 0x49, 0x54, 0xac, 0xc4, 0x22, 0x04, + 0x97, 0xa2, 0xa1, 0x1a, 0x2f, 0x57, 0xfd, 0x9b, 0xaf, 0xc9, 0x30, 0x10, + 0x4a, 0xf4, 0x5e, 0x52, 0xf8, 0x25, 0x32, 0x48, 0xcb, 0x02, 0x6c, 0x3b, + 0xa7, 0xe3, 0xbd, 0xe9, 0x54, 0xd5, 0xbe, 0x46, 0x6b, 0xea, 0x0b, 0x43, + 0x13, 0x1d, 0x6f, 0x9c, 0xf5, 0xeb, 0x0e, 0xba, 0x28, 0x4f, 0x98, 0x84, + 0xb2, 0x19, 0x9c, 0xfe, 0xa0, 0x4a, 0xf6, 0x07, 0xcc, 0x0c, 0x8f, 0x75, + 0x6a, 0x16, 0xa1, 0x1c, 0x4e, 0x42, 0x51, 0xdc, 0x17, 0xb0, 0xa4, 0x2c, + 0x86, 0x87, 0x55, 0xf5, 0x7a, 0x5a, 0xd0, 0x0d, 0x4b, 0x9f, 0xb9, 0xcb, + 0xf3, 0x23, 0x5b, 0xaa, 0x81, 0x0e, 0x74, 0x56, 0x96, 0xbb, 0x65, 0x14, + 0x3e, 0xb2, 0x17, 0x53, 0x7e, 0x71, 0xf1, 0x9b, 0xfd, 0x1c, 0x5c, 0xfe, + 0xee, 0x6b, 0x58, 0xc7, 0xb5, 0x82, 0xed, 0x14, 0x47, 0xb0, 0x62, 0xe8, + 0xad, 0x34, 0x9c, 0xe6, 0x12, 0x29, 0x3b, 0x91, 0x2b, 0x83, 0xe6, 0x5c, + 0xd4, 0xf1, 0x5b, 0x7f, 0xe0, 0x58, 0xc8, 0x29, 0xa4, 0x17, 0x76, 0xa0, + 0x95, 0x9d, 0xb1, 0xad, 0xa1, 0x01, 0xa2, 0xce, 0xd0, 0xa3, 0x14, 0x1e, + 0xb7, 0x22, 0x98, 0x9d, 0xcd, 0x7f, 0x8c, 0xb8, 0x0f, 0x5b, 0x5b, 0x36, + 0x3f, 0xce, 0xca, 0xce, 0x5b, 0x54, 0x8b, 0xbd, 0xde, 0x82, 0x7e, 0xf1, + 0xf9, 0xa0, 0x30, 0xfe, 0xbd, 0xe7, 0x35, 0x84, 0x29, 0x1e, 0x41, 0x8e, + 0x55, 0x3f, 0xf7, 0x40, 0x23, 0xaa, 0x2d, 0x5a, 0xe5, 0xc4, 0x32, 0x9e, + 0xbf, 0x22, 0xb0, 0xc1, 0xe7, 0x8c, 0x7d, 0x5d, 0x0b, 0x28, 0xb4, 0x57, + 0x8e, 0xe7, 0x56, 0x3d, 0x1f, 0x35, 0x1e, 0x98, 0xa9, 0x0d, 0xd7, 0xb7, + 0x20, 0xe2, 0x89, 0x90, 0x04, 0xa7, 0x56, 0xea, 0x84, 0x16, 0x6f, 0xff, + 0xa9, 0x38, 0x5e, 0xa0, 0xaf, 0x2d, 0xc1, 0xb6, 0xc1, 0x77, 0x72, 0xe1, + 0x21, 0xc7, 0x2f, 0x3f, 0x85, 0x51, 0x4b, 0x83, 0xca, 0x33, 0x50, 0xb1, + 0x4c, 0x58, 0x0c, 0x54, 0x7c, 0x70, 0xfe, 0x23, 0xef, 0xc7, 0xc7, 0xaf, + 0xaf, 0xbf, 0xe5, 0x7b, 0x05, 0x90, 0x6c, 0x7a, 0x9f, 0x66, 0xb9, 0xc6, + 0x44, 0xd5, 0x99, 0x6c, 0xd5, 0xac, 0x74, 0xce, 0x00, 0x49, 0x4b, 0xcf, + 0x51, 0x01, 0xda, 0x24, 0xc5, 0x42, 0xba, 0x6f, 0x8a, 0x73, 0x20, 0x11, + 0xbc, 0x4a, 0x4f, 0xdb, 0xa6, 0x40, 0x27, 0xbc, 0x93, 0xa3, 0x30, 0xb2, + 0xcc, 0x6e, 0x78, 0xa0, 0x28, 0x7d, 0xe7, 0x34, 0x11, 0x4c, 0x00, 0x8b, + 0x04, 0x3d, 0x93, 0x7f, 0x2a, 0x3c, 0x67, 0x56, 0xad, 0xc5, 0xdd, 0x2a, + 0x75, 0xe1, 0x96, 0x02, 0x8d, 0x66, 0x0e, 0xd8, 0xc1, 0x83, 0xdf, 0x27, + 0x42, 0xc4, 0x47, 0x18, 0x24, 0xac, 0x99, 0x8b, 0x22, 0x28, 0x68, 0x74, + 0xb2, 0x7e, 0x58, 0x19, 0x19, 0xda, 0xd4, 0x96, 0x36, 0x26, 0xc7, 0x53, + 0x37, 0xdb, 0x53, 0xa5, 0xd3, 0x98, 0xb4, 0x65, 0x80, 0xde, 0x73, 0xcb, + 0x97, 0x7e, 0x59, 0x80, 0xf6, 0x25, 0x60, 0x6f, 0x77, 0x20, 0x4c, 0xc7, + 0x35, 0xc6, 0x80, 0xe3, 0x56, 0x2c, 0xba, 0x62, 0xf7, 0x56, 0xf9, 0x63, + 0x3e, 0xf9, 0x91, 0x7b, 0x9c, 0x35, 0x02, 0x04, 0xd8, 0x3d, 0x35, 0xfd, + 0xb7, 0x85, 0xba, 0x04, 0x19, 0x7f, 0xb9, 0xe6, 0x6a, 0x65, 0x51, 0x9e, + 0xde, 0x21, 0xec, 0xf0, 0x6b, 0xfd, 0x41, 0x90, 0xdc, 0x32, 0x08, 0x4d, + 0x9b, 0x43, 0x2a, 0x61, 0x5b, 0x35, 0x61, 0xc1, 0xfd, 0xa2, 0xde, 0x30, + 0xd3, 0x93, 0xc6, 0x0d, 0xad, 0x76, 0xac, 0xfb, 0xb0, 0xee, 0x85, 0x5f, + 0xde, 0x4e, 0x2b, 0xe8, 0x8f, 0x67, 0xa0, 0x12, 0x00, 0x3f, 0xcf, 0x04, + 0xe4, 0xb1, 0x2b, 0xa0, 0xda, 0xbb, 0x33, 0x5a, 0x58, 0x9b, 0x7c, 0x05, + 0xea, 0x2b, 0x7b, 0x40, 0x9c, 0xc3, 0xe0, 0x99, 0x9e, 0xe0, 0x91, 0x67, + 0xa5, 0x63, 0x6b, 0x9f, 0x15, 0xb6, 0x3c, 0xda, 0x17, 0x90, 0x8f, 0x05, + 0x7e, 0x61, 0x7c, 0xc7, 0x25, 0xdf, 0xbb, 0xd6, 0x96, 0xba, 0x45, 0xa8, + 0x84, 0xa0, 0x7d, 0x0f, 0x41, 0xdd, 0xba, 0xe5, 0x5a, 0x09, 0x3d, 0xe7, + 0x20, 0x22, 0xc6, 0x8e, 0x0d, 0xd5, 0xc5, 0x75, 0x38, 0x8c, 0x6e, 0x4f, + 0xa0, 0x42, 0xf7, 0x5e, 0xb1, 0x35, 0xe5, 0xfc, 0x93, 0x13, 0x58, 0x2b, + 0xa7, 0xe0, 0xfe, 0xff, 0x1a, 0xdd, 0x30, 0x27, 0x9e, 0x69, 0xdd, 0x05, + 0x18, 0xf7, 0x23, 0x5d, 0x9c, 0x64, 0xbe, 0x47, 0xf0, 0xa8, 0xe1, 0xf5, + 0xde, 0x67, 0x8a, 0xcc, 0x18, 0xed, 0x4a, 0x76, 0xa0, 0x23, 0x96, 0x55, + 0xd0, 0x84, 0x22, 0xce, 0xe1, 0xe2, 0x11, 0x80, 0x95, 0x61, 0x0d, 0x75, + 0x12, 0x86, 0xb9, 0x3c, 0x10, 0x9d, 0x4d, 0x39, 0x93, 0x42, 0x7d, 0x83, + 0xa5, 0xf4, 0xe4, 0xaa, 0x9b, 0x59, 0x22, 0x5e, 0xd3, 0xfd, 0xad, 0xf9, + 0xa0, 0xf2, 0xb2, 0x70, 0x86, 0x29, 0xcd, 0x71, 0x61, 0x98, 0xb8, 0x21, + 0x15, 0x5d, 0xf5, 0xde, 0x4d, 0x65, 0x27, 0x09, 0x8c, 0xed, 0xd0, 0xc8, + 0xe7, 0xed, 0x0b, 0x0c, 0x13, 0x9e, 0x78, 0xea, 0xf8, 0x3c, 0x10, 0xda, + 0xcd, 0xfc, 0xaf, 0x33, 0x96, 0x62, 0x31, 0x9c, 0xb6, 0x9d, 0xc8, 0x7a, + 0x35, 0xe6, 0xff, 0x75, 0xa8, 0x30, 0x98, 0xd4, 0xaa, 0xcf, 0x9c, 0xef, + 0xda, 0xb9, 0x64, 0xe8, 0x3b, 0xa6, 0x2f, 0xc1, 0xbd, 0x7e, 0x6b, 0xfc, + 0x1a, 0xef, 0x62, 0xad, 0x90, 0x5e, 0x7d, 0x29, 0x12, 0x4d, 0x76, 0x86, + 0x5c, 0x29, 0x7c, 0x61, 0x1d, 0x1e, 0x63, 0x97, 0x21, 0xcd, 0x77, 0xbd, + 0xc2, 0x32, 0x45, 0xca, 0x7a, 0xdc, 0x0b, 0x16, 0xa4, 0x10, 0xac, 0x37, + 0xba, 0xf5, 0xf6, 0xbc, 0x26, 0x66, 0x67, 0x2b, 0xb8, 0x2e, 0x22, 0xc0, + 0xea, 0x90, 0x78, 0xf0, 0x0d, 0x0f, 0x80, 0x69, 0x60, 0xd2, 0x89, 0xa5, + 0x1a, 0xb0, 0xcf, 0x5e, 0x57, 0x6f, 0x79, 0xdc, 0xd8, 0x2c, 0x51, 0x92, + 0xd6, 0x62, 0x41, 0xf9, 0xf7, 0x26, 0xf0, 0x59, 0x93, 0xe2, 0x76, 0x82, + 0x21, 0xf6, 0xab, 0x7a, 0xd2, 0x7b, 0x81, 0xcb, 0x8c, 0xe8, 0x87, 0x77, + 0x76, 0xce, 0xf2, 0xaa, 0x00, 0xdc, 0xec, 0xd1, 0xc1, 0x8d, 0xf8, 0x42, + 0x41, 0x8c, 0x35, 0xd1, 0x70, 0x97, 0xf4, 0x82, 0x2f, 0x3a, 0x2f, 0x4a, + 0x18, 0x8f, 0xac, 0x41, 0xfa, 0x29, 0xc2, 0x9d, 0x0a, 0xfa, 0x0c, 0x44, + 0xdd, 0xea, 0xc6, 0x2b, 0xd3, 0x2e, 0x28, 0xee, 0xca, 0x6e, 0x84, 0x90, + 0xec, 0xaf, 0xf4, 0x8f, 0xbd, 0xc7, 0xd1, 0x2d, 0xf6, 0x9a, 0xd2, 0x00, + 0xaa, 0x5c, 0x38, 0xc5, 0x11, 0x43, 0x7c, 0xf4, 0x0d, 0xbd, 0x57, 0x6d, + 0x42, 0x62, 0xa5, 0xd8, 0x05, 0xa7, 0xe9, 0x30, 0xc0, 0x81, 0x9b, 0xfc, + 0x30, 0xda, 0x16, 0x2f, 0x54, 0x61, 0x08, 0xaa, 0xf7, 0xc0, 0x1e, 0x4d, + 0xf2, 0xd4, 0xed, 0x5c, 0x96, 0x30, 0xad, 0x9f, 0xc5, 0xe3, 0xf0, 0x91, + 0xff, 0xf0, 0xb1, 0xe4, 0x93, 0x7b, 0x67, 0x11, 0xba, 0xef, 0xb7, 0xf4, + 0x29, 0x93, 0x6d, 0x32, 0x1f, 0x88, 0xd1, 0x6c, 0x7c, 0x5a, 0x7e, 0x0a, + 0xef, 0x6a, 0xe9, 0x23, 0x2c, 0xde, 0x4c, 0x68, 0x36, 0xcb, 0xaa, 0x1f, + 0xd3, 0x71, 0xce, 0x31, 0x8b, 0x2b, 0x51, 0x16, 0xe6, 0x65, 0xd1, 0x30, + 0xaf, 0xb8, 0xbe, 0x02, 0x21, 0x61, 0x36, 0xbc, 0x19, 0x7c, 0x0e, 0x9d, + 0x9c, 0xd6, 0xa9, 0xc7, 0x5c, 0x2f, 0xb6, 0x23, 0x4b, 0x64, 0x3b, 0x99, + 0x74, 0x83, 0x51, 0xda, 0x3e, 0xf8, 0xcf, 0x0f, 0xa3, 0x7a, 0xfb, 0xaa, + 0xd1, 0xe2, 0x09, 0x05, 0x3a, 0xf5, 0xa8, 0x61, 0x51, 0x59, 0xf6, 0xb3, + 0x3d, 0xe9, 0xa3, 0xc7, 0x3a, 0xe6, 0xff, 0x2d, 0x96, 0xaf, 0xe4, 0x41, + 0xb8, 0x7d, 0xca, 0xdf, 0x42, 0x16, 0x5c, 0xee, 0xd0, 0x9d, 0xa3, 0x74, + 0xa9, 0xae, 0xfd, 0x6d, 0x3b, 0x15, 0xb9, 0x89, 0x19, 0xa8, 0xf8, 0x48, + 0xfe, 0x3a, 0xf6, 0xd7, 0x44, 0x4b, 0x96, 0x07, 0x37, 0x4b, 0xf9, 0x33, + 0x62, 0x4f, 0x08, 0x38, 0xfc, 0x02, 0xfc, 0x8d, 0x3d, 0x65, 0x83, 0x02, + 0xed, 0xd7, 0x48, 0x40, 0x51, 0x99, 0x0a, 0x20, 0xb2, 0xda, 0x9d, 0xca, + 0xbf, 0xb7, 0xcf, 0xa8, 0x32, 0x67, 0x2f, 0x31, 0xa3, 0x00, 0xe3, 0xcb, + 0x09, 0x7e, 0x0a, 0xb0, 0x7a, 0x34, 0x7b, 0xfc, 0x1d, 0x97, 0x8c, 0xa6, + 0x17, 0xcb, 0x62, 0xc7, 0x28, 0xf4, 0xb8, 0x21, 0xdb, 0x51, 0xc9, 0xef, + 0x69, 0xb6, 0xac, 0x36, 0x90, 0x74, 0x90, 0xb7, 0xdb, 0xcb, 0xfd, 0xdb, + 0x17, 0x81, 0xed, 0x94, 0x4d, 0xe5, 0x4e, 0xe5, 0xf6, 0x01, 0x4a, 0x99, + 0x9f, 0x5e, 0xe0, 0x45, 0x70, 0x41, 0x45, 0xa2, 0x2b, 0x4e, 0xd6, 0xab, + 0xdc, 0x06, 0x15, 0x2d, 0x48, 0x88, 0x17, 0x43, 0x39, 0x94, 0xb4, 0x3a, + 0x23, 0xce, 0xbb, 0xda, 0x0e, 0xb0, 0x5c, 0x1e, 0x0d, 0x0b, 0x31, 0x8e, + 0x9b, 0x04, 0x80, 0x78, 0x75, 0x1c, 0x9b, 0x97, 0xac, 0xc7, 0xad, 0xde, + 0x2b, 0x7f, 0x48, 0xb2, 0x29, 0xae, 0x76, 0x59, 0x27, 0xee, 0x79, 0xb8, + 0x8e, 0x30, 0xe7, 0xf2, 0x84, 0x44, 0x40, 0x79, 0x25, 0xce, 0x13, 0x87, + 0x8e, 0xfa, 0x08, 0x18, 0x8d, 0x71, 0xac, 0xeb, 0xf2, 0x7c, 0xa6, 0x69, + 0x29, 0x1b, 0xd8, 0x02, 0xea, 0x64, 0x40, 0x7d, 0xa1, 0xb2, 0x05, 0xd3, + 0x2b, 0x9d, 0x98, 0xa4, 0x2c, 0xee, 0xc9, 0x2c, 0x52, 0x5a, 0xd9, 0x3e, + 0xd4, 0xcc, 0x6b, 0xf5, 0x11, 0x4a, 0x0a, 0x84, 0x4b, 0x6e, 0xa4, 0xab, + 0x16, 0x46, 0x31, 0xb2, 0x84, 0x32, 0x43, 0x43, 0xe3, 0x21, 0x09, 0x33, + 0x53, 0x9d, 0x93, 0x60, 0xd4, 0x18, 0xef, 0x71, 0xc8, 0xd1, 0x97, 0x2b, + 0x2d, 0xa0, 0xe3, 0xc3, 0xb7, 0x54, 0x5b, 0xa2, 0xbf, 0x92, 0xa0, 0x48, + 0x15, 0xef, 0x8e, 0x25, 0x02, 0x49, 0x35, 0x20, 0x9e, 0x1b, 0x52, 0xfa, + 0xf9, 0x33, 0x99, 0x31, 0x2c, 0x1b, 0x04, 0x92, 0x8d, 0x19, 0xdb, 0x7d, + 0xad, 0x61, 0x29, 0xe3, 0x5c, 0xb7, 0x94, 0xa6, 0x8b, 0x2e, 0xc5, 0x2e, + 0xbd, 0xe0, 0x60, 0xae, 0xea, 0x93, 0x08, 0x64, 0x98, 0x9e, 0x8e, 0xa1, + 0x2e, 0xf1, 0xe0, 0x31, 0x57, 0x87, 0xd4, 0x77, 0x81, 0x6d, 0xf5, 0xa6, + 0x4c, 0x9b, 0x89, 0x8d, 0x08, 0x96, 0xc5, 0x96, 0xbe, 0x59, 0xcc, 0xbd, + 0x58, 0x7b, 0x21, 0x08, 0x19, 0xc0, 0x55, 0x33, 0x80, 0x44, 0x0d, 0x8e, + 0x59, 0xf9, 0xe8, 0x00, 0x50, 0x98, 0xa2, 0x30, 0xa6, 0xfd, 0xa8, 0x46, + 0xc5, 0x05, 0x65, 0x59, 0xe7, 0x25, 0x1a, 0x17, 0x32, 0x8a, 0xc0, 0x2a, + 0x15, 0x7e, 0x69, 0x11, 0xe9, 0x6d, 0xff, 0x96, 0x52, 0x98, 0xa3, 0xfa, + 0x43, 0x7b, 0x33, 0x79, 0x56, 0xc4, 0xe3, 0x27, 0x40, 0xd6, 0x33, 0xea, + 0xac, 0x87, 0x4e, 0x74, 0xbb, 0xe0, 0x52, 0xab, 0x56, 0x8a, 0xed, 0x3e, + 0xd2, 0x25, 0xb2, 0xbe, 0x58, 0x4c, 0xdf, 0x0e, 0x8f, 0xca, 0x57, 0xdc, + 0x00, 0xfa, 0xb0, 0xc0, 0xf3, 0x7b, 0x6e, 0x41, 0x17, 0x07, 0xcb, 0x08, + 0xe3, 0xd8, 0xa5, 0x04, 0xdb, 0x42, 0x99, 0x67, 0x73, 0xd5, 0xd7, 0x1f, + 0x22, 0x9e, 0xea, 0x66, 0x5f, 0x44, 0x7d, 0xf4, 0xbf, 0x50, 0xb2, 0x3e, + 0x2f, 0x9f, 0x7a, 0xca, 0x80, 0x95, 0x59, 0x83, 0x69, 0x05, 0xec, 0x70, + 0x71, 0x12, 0x97, 0xaf, 0xdb, 0xfd, 0xe8, 0x11, 0x44, 0x8a, 0x6e, 0x09, + 0x90, 0xd5, 0x59, 0x8c, 0x6a, 0x65, 0xf9, 0xa9, 0x3d, 0x3c, 0x0c, 0xf3, + 0x2f, 0xa0, 0xb1, 0x8e, 0xf0, 0x3f, 0x16, 0x63, 0xf6, 0xe8, 0x80, 0x27, + 0x64, 0x56, 0x99, 0x94, 0x93, 0xc8, 0x36, 0x00, 0x21, 0xeb, 0x7c, 0x41, + 0x86, 0xae, 0xb2, 0x4b, 0x7d, 0xac, 0xac, 0x90, 0x8b, 0x99, 0x18, 0x25, + 0xa4, 0x0d, 0x9c, 0x96, 0x53, 0x0c, 0xfa, 0x7e, 0x61, 0xba, 0x7f, 0xca, + 0x61, 0x7b, 0xba, 0x2f, 0x96, 0x2f, 0x75, 0x29, 0x84, 0xb7, 0x32, 0xca, + 0x3b, 0x1f, 0xe6, 0x57, 0x34, 0xf3, 0xf1, 0x58, 0x61, 0xc9, 0x04, 0xa2, + 0x20, 0xea, 0x77, 0xa7, 0x83, 0xed, 0x3e, 0x14, 0x87, 0x8f, 0x82, 0x86, + 0x88, 0xc3, 0xf9, 0x10, 0x7e, 0x03, 0xa4, 0x33, 0xe0, 0x4e, 0x97, 0xef, + 0x66, 0x91, 0x9f, 0xce, 0x85, 0xc8, 0xca, 0x04, 0x3a, 0x8b, 0xf6, 0xc7, + 0xdf, 0xeb, 0x75, 0x31, 0xf4, 0x1a, 0x9a, 0x67, 0xc7, 0xb1, 0xd0, 0x33, + 0x97, 0xea, 0xd2, 0x52, 0xc3, 0x81, 0xdb, 0x63, 0x64, 0x31, 0x0f, 0x9e, + 0x75, 0x5f, 0xde, 0xe7, 0x46, 0x01, 0x19, 0x03, 0xe5, 0x0b, 0xf8, 0x9f, + 0xab, 0x4f, 0x1a, 0x1f, 0xe0, 0xb0, 0x75, 0x96, 0xf2, 0x15, 0x49, 0x63, + 0xa7, 0xae, 0x26, 0xe5, 0x41, 0x82, 0x1b, 0x1e, 0xd0, 0x8b, 0x2e, 0xcc, + 0xf7, 0x30, 0xb3, 0xb5, 0x1b, 0xd9, 0xe7, 0x65, 0x1e, 0x60, 0x3b, 0x74, + 0xfa, 0x52, 0x03, 0xe9, 0x0f, 0x45, 0x87, 0x8c, 0x1a, 0x4d, 0x0d, 0xb9, + 0x90, 0xec, 0xa3, 0x59, 0xad, 0xa2, 0x33, 0xfb, 0xd3, 0xac, 0xf0, 0x58, + 0x0c, 0x6f, 0x27, 0xa9, 0x1b, 0x18, 0xcb, 0x5d, 0x70, 0xcd, 0x14, 0xd9, + 0xe3, 0x9f, 0x42, 0xf7, 0x82, 0x3e, 0x47, 0x39, 0xe4, 0xa2, 0x9e, 0x03, + 0x7c, 0x2f, 0x5d, 0x18, 0x55, 0x20, 0x63, 0x68, 0x38, 0xc8, 0x0b, 0x3d, + 0xf3, 0xc7, 0x91, 0x72, 0x70, 0x4c, 0x8a, 0x0d, 0xc0, 0x80, 0x7d, 0xde, + 0xa3, 0x7f, 0x0a, 0x54, 0xb5, 0xd0, 0x49, 0x42, 0xc3, 0x27, 0x69, 0x19, + 0x1c, 0xbc, 0xf9, 0x5e, 0x16, 0x19, 0xab, 0xdb, 0x99, 0x1e, 0x90, 0x8c, + 0x6e, 0xb9, 0x17, 0x95, 0xad, 0xde, 0x70, 0x93, 0x7f, 0x5f, 0x26, 0xb0, + 0x9f, 0x86, 0xb3, 0x82, 0x9d, 0x30, 0x24, 0x19, 0x83, 0x7d, 0x20, 0x70, + 0x29, 0xe1, 0xb3, 0x22, 0x99, 0xb5, 0xef, 0x8f, 0x7a, 0x66, 0xbc, 0x86, + 0x18, 0x85, 0x39, 0x56, 0x9b, 0x5f, 0xf6, 0x63, 0xc8, 0x24, 0xbc, 0x54, + 0xc3, 0xc3, 0xa3, 0x27, 0xad, 0x80, 0xa9, 0x8f, 0x3b, 0x4b, 0xa0, 0x08, + 0xcc, 0xf9, 0xde, 0x0b, 0x92, 0xa3, 0x26, 0x79, 0x42, 0xa2, 0xd0, 0x7c, + 0xd4, 0x2e, 0x8f, 0x63, 0x4b, 0xaf, 0x6b, 0x7a, 0x58, 0x99, 0xb2, 0xb4, + 0x01, 0x55, 0x75, 0x4a, 0xca, 0x9d, 0xd7, 0x85, 0xa8, 0x28, 0x97, 0x3d, + 0xa6, 0x3c, 0xd1, 0xf6, 0x97, 0xd4, 0x15, 0x45, 0xc4, 0x25, 0x48, 0xd5, + 0xa6, 0x10, 0x00, 0xa4, 0x3e, 0xc4, 0xb4, 0x1d, 0x08, 0xf0, 0xf7, 0x6d, + 0x91, 0xc9, 0xc4, 0x4e, 0xb5, 0xd5, 0x45, 0x07, 0x3e, 0x05, 0x34, 0x44, + 0x14, 0xe1, 0x11, 0x1e, 0xa2, 0xba, 0x37, 0x18, 0xea, 0x16, 0x78, 0x58, + 0x83, 0xfd, 0x98, 0x42, 0xd3, 0x83, 0xac, 0x77, 0x65, 0xc9, 0x5b, 0x36, + 0x8b, 0x9d, 0x76, 0x25, 0x5d, 0xfc, 0x80, 0x21, 0x0e, 0xd8, 0xcb, 0xc4, + 0xcc, 0x59, 0x4e, 0x85, 0x51, 0x3b, 0xc0, 0xa8, 0x0b, 0x5d, 0x60, 0xa2, + 0xc3, 0x2f, 0x2e, 0x8a, 0x18, 0x3c, 0x9d, 0x18, 0x0d, 0xd5, 0xa7, 0x32, + 0x72, 0xf0, 0xef, 0xdf, 0xa4, 0x35, 0x09, 0x75, 0x2f, 0xb0, 0xe0, 0xec, + 0xb2, 0x2d, 0x54, 0xeb, 0x22, 0x01, 0x67, 0x73, 0x61, 0x2d, 0x00, 0x8e, + 0x2a, 0x59, 0xc5, 0xa0, 0xf1, 0xb4, 0x20, 0x15, 0xeb, 0xe5, 0x0b, 0x7d, + 0x6b, 0x70, 0x45, 0x64, 0x3a, 0xc6, 0xbf, 0x34, 0x6a, 0x33, 0x35, 0xf2, + 0x88, 0x47, 0x4d, 0x95, 0x3d, 0x76, 0x7c, 0x56, 0x7a, 0x6a, 0x72, 0x48, + 0xa9, 0x28, 0x32, 0xf6, 0x25, 0xf5, 0x2a, 0x52, 0x40, 0x70, 0x46, 0x93, + 0x4e, 0x86, 0x58, 0xde, 0x11, 0x66, 0x2f, 0xa6, 0x75, 0xbd, 0x24, 0x05, + 0x3c, 0x5e, 0xf4, 0xbc, 0x88, 0xda, 0x69, 0xd0, 0x9d, 0x7f, 0xfa, 0x6b, + 0xf4, 0x50, 0x51, 0x03, 0x26, 0xf6, 0xaa, 0x11, 0xa6, 0x3d, 0x2a, 0xa3, + 0x18, 0x0e, 0xb1, 0x0b, 0x8c, 0x5a, 0x3a, 0xc4, 0x14, 0xd3, 0x9b, 0xea, + 0x2f, 0xf9, 0x5f, 0xbc, 0x9a, 0x94, 0x92, 0x2b, 0xaa, 0xf7, 0x62, 0x0c, + 0xf0, 0xf9, 0xcc, 0x20, 0x1b, 0x5b, 0x56, 0xed, 0xe4, 0x5f, 0xef, 0xa0, + 0x5d, 0xe2, 0xe7, 0x50, 0x0d, 0x13, 0x92, 0x7f, 0x70, 0x68, 0x81, 0x3c, + 0x5d, 0x71, 0x12, 0x14, 0xba, 0xe9, 0xf1, 0x24, 0x70, 0xc3, 0xea, 0x3a, + 0x8e, 0x19, 0xab, 0x4f, 0x5f, 0x20, 0x38, 0xcb, 0xd8, 0x91, 0x3d, 0x47, + 0x8a, 0xb8, 0xe0, 0x81, 0x73, 0x57, 0x19, 0xc4, 0xb6, 0xd7, 0x6e, 0x01, + 0xad, 0xb7, 0x80, 0xb2, 0x44, 0xe7, 0x77, 0x3a, 0x55, 0x9f, 0x36, 0x77, + 0x4c, 0x88, 0x69, 0x6b, 0xc6, 0x67, 0x2f, 0xbd, 0x37, 0x0c, 0xf2, 0x9f, + 0x88, 0x6e, 0xa6, 0xa0, 0xd7, 0x5a, 0x53, 0xf3, 0xc0, 0xaa, 0x7b, 0xca, + 0xc3, 0x07, 0xf4, 0x08, 0xc9, 0x84, 0x0c, 0x36, 0x49, 0x15, 0x71, 0x8c, + 0x60, 0x6f, 0xd5, 0x91, 0xc5, 0x3a, 0x33, 0x3b, 0xde, 0x8c, 0xe0, 0xf4, + 0x08, 0x42, 0x6d, 0xf7, 0x3b, 0xae, 0xd0, 0x06, 0xe5, 0x1b, 0x60, 0x24, + 0xc4, 0xaa, 0xcf, 0x54, 0x0e, 0x78, 0xa6, 0xf9, 0x40, 0x3b, 0xca, 0xed, + 0x5f, 0xa4, 0xd3, 0x13, 0x6e, 0x0a, 0x59, 0x3c, 0xda, 0xdb, 0xc6, 0x6f, + 0x8f, 0x89, 0x31, 0x8c, 0x87, 0x1e, 0xfe, 0x01, 0x16, 0x5b, 0xac, 0x1a, + 0x62, 0x85, 0x39, 0x61, 0xe1, 0x4c, 0xae, 0xae, 0x85, 0xd9, 0x5d, 0x9c, + 0x2a, 0x6e, 0x6b, 0xec, 0xef, 0x2b, 0xc6, 0x32, 0xd6, 0x62, 0x7e, 0x46, + 0x67, 0xe8, 0x6f, 0x4a, 0x50, 0x05, 0x75, 0xda, 0xe0, 0x6b, 0x47, 0xb6, + 0x2a, 0x48, 0x56, 0x3e, 0x22, 0x18, 0xfb, 0xf5, 0x66, 0xf1, 0x42, 0xd6, + 0xf3, 0x3d, 0x26, 0xc8, 0x44, 0xea, 0xa7, 0x9f, 0x90, 0xd8, 0x8f, 0xeb, + 0x45, 0x50, 0x99, 0xf8, 0x86, 0x5f, 0x70, 0x03, 0x89, 0x06, 0x08, 0x92, + 0x02, 0x6a, 0x93, 0x90, 0xce, 0xf2, 0xb5, 0x06, 0x78, 0x1e, 0x96, 0x1d, + 0xa2, 0x20, 0x27, 0x90, 0xfc, 0x07, 0x50, 0x84, 0xf8, 0x19, 0xd0, 0xb1, + 0x0c, 0x75, 0xb6, 0x3b, 0xb2, 0xaa, 0x73, 0x34, 0x49, 0xc9, 0xb2, 0xc2, + 0x58, 0x7e, 0x40, 0x19, 0xa6, 0x08, 0x6b, 0x9e, 0x87, 0xce, 0x7a, 0x27, + 0x3d, 0x7e, 0xe3, 0xe4, 0x12, 0x7c, 0x39, 0x24, 0x16, 0x80, 0x97, 0xbb, + 0x94, 0x9e, 0xa6, 0x0f, 0x5f, 0x42, 0xa1, 0xca, 0x37, 0xa0, 0xbe, 0x1c, + 0x4f, 0x62, 0x68, 0x6a, 0x50, 0x1e, 0x77, 0xe2, 0xb6, 0xdf, 0xa8, 0x89, + 0xdf, 0x98, 0x9b, 0x80, 0xc2, 0x00, 0x21, 0x6a, 0xf6, 0x82, 0xb3, 0x5f, + 0x8b, 0x98, 0x68, 0xe1, 0x76, 0xef, 0x06, 0x8c, 0x24, 0x07, 0xd2, 0xe5, + 0x86, 0xc1, 0xc0, 0x26, 0x94, 0x2d, 0x96, 0xb1, 0xa4, 0x77, 0x11, 0xcb, + 0xa9, 0xf9, 0x46, 0xe8, 0xfd, 0x91, 0x61, 0x9d, 0xce, 0xd1, 0x24, 0x27, + 0xbb, 0xae, 0x68, 0x04, 0x44, 0xc9, 0x44, 0x69, 0x52, 0x05, 0x10, 0x4d, + 0x96, 0x56, 0x98, 0x69, 0x46, 0x49, 0xc2, 0x75, 0xb9, 0xd8, 0x1c, 0x46, + 0xdc, 0x71, 0x86, 0x71, 0x07, 0xea, 0x18, 0x5d, 0x7c, 0x3f, 0x81, 0x97, + 0xfc, 0xc8, 0x88, 0xe4, 0xe7, 0x5e, 0xb2, 0xf8, 0x04, 0x17, 0x14, 0xcf, + 0x24, 0x4c, 0x35, 0x1e, 0x0d, 0xba, 0xf6, 0x0d, 0x29, 0x1c, 0x3c, 0x5a, + 0x0f, 0xd0, 0xf8, 0xf8, 0xdb, 0xa6, 0xa5, 0xf2, 0x83, 0x3d, 0xa0, 0x16, + 0x5d, 0xf4, 0xb7, 0xc0, 0xc5, 0xf1, 0x0f, 0x09, 0x7d, 0x6a, 0x24, 0xf0, + 0x94, 0x03, 0x7d, 0xc0, 0x96, 0x61, 0xa7, 0x44, 0xe2, 0xa3, 0x40, 0xa5, + 0x00, 0x06, 0x13, 0x45, 0xba, 0x60, 0xc3, 0x15, 0x75, 0x6a, 0xe6, 0xd9, + 0x21, 0x37, 0x15, 0x80, 0xfd, 0x68, 0xdf, 0xab, 0x9f, 0xde, 0xcf, 0x4a, + 0x98, 0xf8, 0xa9, 0x27, 0xd3, 0x2d, 0x3d, 0x5c, 0xdc, 0xff, 0x8c, 0x61, + 0x4d, 0x25, 0xc8, 0xdf, 0x66, 0xf6, 0xde, 0xf0, 0x21, 0x5a, 0x27, 0x36, + 0x38, 0x1f, 0xfe, 0x89, 0x33, 0x52, 0x4e, 0x99, 0x55, 0x9b, 0xd0, 0x4f, + 0x15, 0xba, 0x91, 0xdd, 0x95, 0xeb, 0x57, 0x18, 0xc4, 0x21, 0x86, 0x24, + 0x67, 0x38, 0xf0, 0x2f, 0xd2, 0x66, 0x0b, 0x92, 0xb9, 0xc3, 0xcb, 0x8e, + 0x7f, 0x6c, 0x44, 0xbc, 0xcb, 0x45, 0x71, 0x51, 0x61, 0x35, 0xf2, 0x9f, + 0xbf, 0xf2, 0x8f, 0x5a, 0xdb, 0xaa, 0x54, 0x20, 0x1d, 0x52, 0xce, 0x89, + 0xd4, 0xe7, 0x79, 0x75, 0xa7, 0xff, 0x1f, 0x6a, 0xfd, 0xb9, 0x56, 0xee, + 0xca, 0x2c, 0x9f, 0xf3, 0x6d, 0xdf, 0xce, 0x96, 0x0c, 0xaf, 0x2c, 0x2c, + 0x7d, 0x35, 0x79, 0x5d, 0x43, 0xbb, 0x27, 0xaf, 0x07, 0x17, 0x9a, 0x67, + 0xde, 0x3b, 0x35, 0xf1, 0xd9, 0x98, 0x92, 0xf8, 0x3d, 0x35, 0xf1, 0x25, + 0xf8, 0x15, 0xcc, 0x6f, 0x49, 0x9e, 0xba, 0x52, 0xd8, 0x76, 0x71, 0x8d, + 0x90, 0x2c, 0x73, 0x3f, 0xef, 0xa2, 0xef, 0x43, 0x19, 0x2d, 0x83, 0xb9, + 0xde, 0xc6, 0x33, 0x00, 0xd9, 0x9d, 0x50, 0x58, 0xa7, 0xaa, 0x07, 0xa6, + 0x81, 0x8c, 0x1b, 0xe7, 0x9a, 0x3f, 0x11, 0x4c, 0xef, 0x96, 0x07, 0xb3, + 0x48, 0x3e, 0x95, 0x2e, 0xb1, 0x27, 0x2d, 0xf9, 0x50, 0x49, 0x91, 0x7e, + 0x91, 0xd2, 0xcc, 0xf0, 0x36, 0xe8, 0xcd, 0x69, 0x05, 0x68, 0x50, 0xe6, + 0x4d, 0xbe, 0xd7, 0x55, 0xd5, 0xd2, 0xe4, 0x96, 0xd0, 0xa8, 0x1b, 0x4b, + 0x28, 0x54, 0xcb, 0x95, 0x4c, 0xb5, 0xe7, 0x1c, 0x95, 0x2e, 0x11, 0xda, + 0x30, 0x0e, 0x87, 0xfe, 0x5e, 0x34, 0x80, 0x59, 0x9d, 0x70, 0x09, 0x48, + 0x9e, 0xe8, 0x31, 0x12, 0x3f, 0xe2, 0x07, 0x35, 0x74, 0x79, 0x43, 0x68, + 0x42, 0x85, 0x09, 0x85, 0x42, 0x99, 0x5a, 0x92, 0x8c, 0xe9, 0x14, 0x6c, + 0xf3, 0x06, 0x50, 0x2a, 0x6d, 0xd8, 0xd5, 0x06, 0xdc, 0x8c, 0x4d, 0x60, + 0x84, 0x98, 0x6a, 0xf6, 0x30, 0xb9, 0x06, 0xe3, 0xcd, 0x75, 0xd7, 0xaa, + 0xbc, 0x56, 0x8d, 0x2f, 0x6b, 0x0d, 0x2e, 0x26, 0x40, 0x86, 0x08, 0xf5, + 0xc6, 0xee, 0x12, 0xd6, 0x06, 0x59, 0x7f, 0xa6, 0xac, 0x3f, 0xef, 0x15, + 0xd6, 0x20, 0x55, 0x21, 0xa9, 0x29, 0xdb, 0xf4, 0x1f, 0xa6, 0x79, 0x3c, + 0x13, 0xf0, 0x32, 0x7f, 0x25, 0x27, 0x7a, 0x64, 0xe1, 0x64, 0x3b, 0x86, + 0x14, 0x4e, 0xfd, 0x29, 0xbc, 0x6e, 0x9f, 0x1b, 0xaa, 0xdf, 0xe3, 0x77, + 0xd7, 0xb8, 0x7f, 0x61, 0x2f, 0xbc, 0xea, 0xfe, 0x18, 0xc6, 0x54, 0x91, + 0x85, 0xaa, 0x55, 0xa7, 0xca, 0x00, 0x8f, 0x56, 0xaf, 0xa8, 0x49, 0x02, + 0xcb, 0xbe, 0x20, 0x5a +}; diff --git a/BootLoader/source/launch_ds_crt0.s b/BootLoader/source/launch_ds_crt0.s index 5622da9..f5ca8bb 100755 --- a/BootLoader/source/launch_ds_crt0.s +++ b/BootLoader/source/launch_ds_crt0.s @@ -1,17 +1,46 @@ @--------------------------------------------------------------------------------- .section ".init" .global _start + .global dsiMode + .global language + .global sdAccess + .global scfgUnlock + .global twlMode + .global twlClock + .global boostVram + .global soundFreq + .global extendRam @--------------------------------------------------------------------------------- .align 4 .arm @--------------------------------------------------------------------------------- _start: @--------------------------------------------------------------------------------- - mov r0, #0x04000000 - mov r1, #0 - str r1, [r0,#0x208] @ REG_IME - str r1, [r0,#0x210] @ REG_IE - str r1, [r0,#0x218] @ REG_AUXIE + b startUp + +dsiMode: + .word 0x00000000 +language: + .word 0x00000000 +sdAccess: + .word 0x00000000 +scfgUnlock: + .word 0x00000000 +twlMode: + .word 0x00000000 +twlClock: + .word 0x00000000 +boostVram: + .word 0x00000000 +soundFreq: + .word 0x00000000 +extendRam: + .word 0x00000000 + +startUp: + mov r0, #0x04000000 @ IME = 0; + add r0, r0, #0x208 + strh r0, [r0] mov r0, #0x12 @ Switch to IRQ Mode msr cpsr, r0 @@ -38,7 +67,7 @@ _start: bl CopyMem @ Start ARM9 binary - ldr r0, =0x027FFE24 + ldr r0, =0x02FFFE24 ldr r1, =_arm9_start str r1, [r0] diff --git a/BootLoader/source/main.arm7.c b/BootLoader/source/main.arm7.c index 5e63f9b..f9cf42c 100755 --- a/BootLoader/source/main.arm7.c +++ b/BootLoader/source/main.arm7.c @@ -1,14 +1,14 @@ -/* - main.arm7.c - - By Michael Chisholm (Chishm) - - All resetMemory and startBinary functions are based - on the MultiNDS loader by Darkain. - Original source available at: - http://cvs.sourceforge.net/viewcvs.py/ndslib/ndslib/examples/loader/boot/main.cpp - - License: +/* + main.arm7.c + + By Michael Chisholm (Chishm) + + All resetMemory and startBinary functions are based + on the MultiNDS loader by Darkain. + Original source available at: + http://cvs.sourceforge.net/viewcvs.py/ndslib/ndslib/examples/loader/boot/main.cpp + + License: NitroHax -- Cheat tool for the Nintendo DS Copyright (C) 2008 Michael "Chishm" Chisholm @@ -23,203 +23,723 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + along with this program. If not, see . +*/ #ifndef ARM7 # define ARM7 -#endif -#include -#include -#include -#include -#include +#endif +#include +#include +#include +#include +#include +#include #include -#include - -// #include -// #include -// #include -// #include - -#ifndef NULL -#define NULL 0 -#endif - -#include "common.h" +#include +#include + +// #include +// #include +// #include +// #include + +#ifndef NULL +#define NULL 0 +#endif + +#include "common.h" +#include "tonccpy.h" #include "read_card.h" - -/*------------------------------------------------------------------------- -External functions ---------------------------------------------------------------------------*/ -extern void arm7_clearmem (void* loc, size_t len); -extern void arm7_reset (void); - -//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// Important things -#define NDS_HEAD 0x027FFE00 -tNDSHeader* ndsHeader = (tNDSHeader*)NDS_HEAD; - -//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// Used for debugging purposes -/* Disabled for now. Re-enable to debug problems -static void errorOutput (u32 code) { -// Set the error code, then set our state to "error" +#include "module_params.h" +// #include "cardengine_arm7_bin.h" +// #include "hook.h" +#include "find.h" + + +extern u32 dsiMode; +extern u32 language; +extern u32 sdAccess; +extern u32 scfgUnlock; +extern u32 twlMode; +extern u32 twlClock; +extern u32 boostVram; +extern u32 soundFreq; +extern u32 extendRam; + +bool useTwlCfg = false; +int twlCfgLang = 0; + +bool gameSoftReset = false; + +void arm7_clearmem (void* loc, size_t len); +extern void ensureBinaryDecompressed(const tNDSHeader* ndsHeader, module_params_t* moduleParams); + +// static const u32 cheatDataEndSignature[2] = {0xCF000000, 0x00000000}; + +// Module params +static const u32 moduleParamsSignature[2] = {0xDEC00621, 0x2106C0DE}; + +static u32 chipID; + +static module_params_t* moduleParams; + +u32* findModuleParamsOffset(const tNDSHeader* ndsHeader) { + //dbg_printf("findModuleParamsOffset:\n"); + + u32* moduleParamsOffset = findOffset( + (u32*)ndsHeader->arm9destination, ndsHeader->arm9binarySize, + moduleParamsSignature, 2 + ); + return moduleParamsOffset; +} + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Important things +#define NDS_HEADER 0x027FFE00 +#define NDS_HEADER_SDK5 0x02FFFE00 // __NDSHeader +#define NDS_HEADER_POKEMON 0x027FF000 + +#define DSI_HEADER 0x027FE000 +#define DSI_HEADER_SDK5 0x02FFE000 // __DSiHeader + +// #define ENGINE_LOCATION_ARM7 0x037C0000 + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Used for debugging purposes +/* Disabled for now. Re-enable to debug problems +static void errorOutput (u32 code) { + // Wait until the ARM9 is ready + while (arm9_stateFlag != ARM9_READY); + // Set the error code, then tell ARM9 to display it arm9_errorCode = code; - ipcSendState(ARM7_ERR); + arm9_errorClearBG = true; + arm9_stateFlag = ARM9_DISPERR; // Stop - while(1); -} -*/ - -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// Firmware stuff - -#define FW_READ 0x03 - -void arm7_readFirmware (uint32 address, uint8 * buffer, uint32 size) { - uint32 index; - - // Read command - while (REG_SPICNT & SPI_BUSY); - REG_SPICNT = SPI_ENABLE | SPI_CONTINUOUS | SPI_DEVICE_NVRAM; - REG_SPIDATA = FW_READ; - while (REG_SPICNT & SPI_BUSY); - - // Set the address - REG_SPIDATA = (address>>16) & 0xFF; - while (REG_SPICNT & SPI_BUSY); - REG_SPIDATA = (address>>8) & 0xFF; - while (REG_SPICNT & SPI_BUSY); - REG_SPIDATA = (address) & 0xFF; - while (REG_SPICNT & SPI_BUSY); - - for (index = 0; index < size; index++) { - REG_SPIDATA = 0; - while (REG_SPICNT & SPI_BUSY); - buffer[index] = REG_SPIDATA & 0xFF; - } - REG_SPICNT = 0; -} - -/*------------------------------------------------------------------------- -arm7_resetMemory -Clears all of the NDS's RAM that is visible to the ARM7 -Written by Darkain. -Modified by Chishm: - * Added STMIA clear mem loop ---------------------------------------------------------------------------*/ -void arm7_resetMemory (void) { - int i; - u8 settings1, settings2; - - REG_IME = 0; - - for (i=0; i<16; i++) { - SCHANNEL_CR(i) = 0; - SCHANNEL_TIMER(i) = 0; - SCHANNEL_SOURCE(i) = 0; - SCHANNEL_LENGTH(i) = 0; - } - REG_SOUNDCNT = 0; - - // Clear out ARM7 DMA channels and timers - for (i=0; i<4; i++) { - DMA_CR(i) = 0; - DMA_SRC(i) = 0; - DMA_DEST(i) = 0; - TIMER_CR(i) = 0; - TIMER_DATA(i) = 0; - } + while(1); +} +*/ + +static void debugOutput (u32 code) { + // Wait until the ARM9 is ready + while (arm9_stateFlag != ARM9_READY); + // Set the error code, then tell ARM9 to display it + arm9_errorCode = code; + arm9_errorClearBG = false; + arm9_stateFlag = ARM9_DISPERR; + // Wait for completion + while (arm9_stateFlag != ARM9_READY); +} + +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Firmware stuff + +static void my_readUserSettings(tNDSHeader* ndsHeader) { + PERSONAL_DATA slot1; + PERSONAL_DATA slot2; + + short slot1count, slot2count; //u8 + short slot1CRC, slot2CRC; + + u32 userSettingsBase; + + // Get settings location + readFirmware(0x20, &userSettingsBase, 2); + + u32 slot1Address = userSettingsBase * 8; + u32 slot2Address = userSettingsBase * 8 + 0x100; + + // Reload DS Firmware settings + readFirmware(slot1Address, &slot1, sizeof(PERSONAL_DATA)); //readFirmware(slot1Address, personalData, 0x70); + readFirmware(slot2Address, &slot2, sizeof(PERSONAL_DATA)); //readFirmware(slot2Address, personalData, 0x70); + readFirmware(slot1Address + 0x70, &slot1count, 2); //readFirmware(slot1Address + 0x70, &slot1count, 1); + readFirmware(slot2Address + 0x70, &slot2count, 2); //readFirmware(slot1Address + 0x70, &slot2count, 1); + readFirmware(slot1Address + 0x72, &slot1CRC, 2); + readFirmware(slot2Address + 0x72, &slot2CRC, 2); + + // Default to slot 1 user settings + void *currentSettings = &slot1; + + short calc1CRC = swiCRC16(0xFFFF, &slot1, sizeof(PERSONAL_DATA)); + short calc2CRC = swiCRC16(0xFFFF, &slot2, sizeof(PERSONAL_DATA)); + + // Bail out if neither slot is valid + if (calc1CRC != slot1CRC && calc2CRC != slot2CRC) { + return; + } + + // If both slots are valid pick the most recent + if (calc1CRC == slot1CRC && calc2CRC == slot2CRC) { + currentSettings = (slot2count == ((slot1count + 1) & 0x7f) ? &slot2 : &slot1); //if ((slot1count & 0x7F) == ((slot2count + 1) & 0x7F)) { + } else { + if (calc2CRC == slot2CRC) { + currentSettings = &slot2; + } + } + + PERSONAL_DATA* personalData = (PERSONAL_DATA*)((u32)__NDSHeader - (u32)ndsHeader + (u32)PersonalData); //(u8*)((u32)ndsHeader - 0x180) + + tonccpy(PersonalData, currentSettings, sizeof(PERSONAL_DATA)); + + if (useTwlCfg && (language == 0xFF || language == -1)) { + language = twlCfgLang; + } + + if (language >= 0 && language <= 7) { + // Change language + personalData->language = language; //*(u8*)((u32)ndsHeader - 0x11C) = language; + } + + if (personalData->language != 6 && ndsHeader->reserved1[8] == 0x80) { + ndsHeader->reserved1[8] = 0; // Patch iQue game to be region-free + ndsHeader->headerCRC16 = swiCRC16(0xFFFF, ndsHeader, 0x15E); // Fix CRC + } +} + +/*------------------------------------------------------------------------- +arm7_resetMemory +Clears all of the NDS's RAM that is visible to the ARM7 +Written by Darkain. +Modified by Chishm: + * Added STMIA clear mem loop +--------------------------------------------------------------------------*/ +void arm7_resetMemory (void) { + int i; + + REG_IME = 0; + + for (i=0; i<16; i++) { + SCHANNEL_CR(i) = 0; + SCHANNEL_TIMER(i) = 0; + SCHANNEL_SOURCE(i) = 0; + SCHANNEL_LENGTH(i) = 0; + } + REG_SOUNDCNT = 0; + + // Clear out ARM7 DMA channels and timers + for (i=0; i<4; i++) { + DMA_CR(i) = 0; + DMA_SRC(i) = 0; + DMA_DEST(i) = 0; + TIMER_CR(i) = 0; + TIMER_DATA(i) = 0; + } // Clear out FIFO REG_IPC_SYNC = 0; REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; REG_IPC_FIFO_CR = 0; - // clear IWRAM - 037F:8000 to 0380:FFFF, total 96KiB - arm7_clearmem ((void*)0x037F8000, 96*1024); - - // clear most of EXRAM - except after 0x023FD800, which has the ARM9 code - arm7_clearmem ((void*)0x02000000, 0x003FD800); - - // clear last part of EXRAM, skipping the ARM9's section - arm7_clearmem ((void*)0x023FE000, 0x2000); - - REG_IE = 0; - REG_IF = ~0; - (*(vu32*)(0x04000000-4)) = 0; //IRQ_HANDLER ARM7 version - (*(vu32*)(0x04000000-8)) = ~0; //VBLANK_INTR_WAIT_FLAGS, ARM7 version - REG_POWERCNT = 1; //turn off power to stuffs - - // Reload DS Firmware settings - arm7_readFirmware((u32)0x03FE70, &settings1, 0x1); - arm7_readFirmware((u32)0x03FF70, &settings2, 0x1); - - if (settings1 > settings2) { - arm7_readFirmware((u32)0x03FE00, (u8*)0x027FFC80, 0x70); - arm7_readFirmware((u32)0x03FF00, (u8*)0x027FFD80, 0x70); - } else { - arm7_readFirmware((u32)0x03FF00, (u8*)0x027FFC80, 0x70); - arm7_readFirmware((u32)0x03FE00, (u8*)0x027FFD80, 0x70); - } - - // Load FW header - arm7_readFirmware((u32)0x000000, (u8*)0x027FF830, 0x20); -} - -int arm7_loadBinary (void) { - u32 chipID; + // clear IWRAM - 037F:8000 to 0380:FFFF, total 96KiB + toncset ((void*)0x037F8000, 0, 96*1024); + // arm7_clearmem ((void*)0x037F8000, 96*1024); + + // clear most of EXRAM - except before 0x023F0000, which has the cheat data + toncset ((void*)0x02004000, 0, 0x3EC000); + + + // clear more of EXRAM, skipping the cheat data section + toncset ((void*)0x023F8000, 0, 0x6000); + + + // clear last part of EXRAM + toncset ((void*)0x02400000, 0, 0xC00000); + + + REG_IE = 0; + REG_IF = ~0; + (*(vu32*)(0x04000000-4)) = 0; //IRQ_HANDLER ARM7 version + (*(vu32*)(0x04000000-8)) = ~0; //VBLANK_INTR_WAIT_FLAGS, ARM7 version + REG_POWERCNT = 1; //turn off power to stuffs + + useTwlCfg = (dsiMode && (*(u8*)0x02000400 & 0x0F) && (*(u8*)0x02000404 == 0)); + twlCfgLang = *(u8*)0x02000406; + + // Load FW header + //arm7_readFirmware((u32)0x000000, (u8*)0x027FF830, 0x20); +} + +static void NDSTouchscreenMode(void) { + //unsigned char * *(unsigned char*)0x40001C0= (unsigned char*)0x40001C0; + //unsigned char * *(unsigned char*)0x40001C0byte2=(unsigned char*)0x40001C1; + //unsigned char * *(unsigned char*)0x40001C2= (unsigned char*)0x40001C2; + //unsigned char * I2C_DATA= (unsigned char*)0x4004500; + //unsigned char * I2C_CNT= (unsigned char*)0x4004501; + + u8 volLevel; + + //if (fifoCheckValue32(FIFO_MAXMOD)) { + // // special setting (when found special gamecode) + // volLevel = 0xAC; + // } else { + // normal setting (for any other gamecodes) + volLevel = 0xA7; + // } + + // Touchscreen + cdcReadReg (0x63, 0x00); + cdcWriteReg(CDC_CONTROL, 0x3A, 0x00); + cdcReadReg (CDC_CONTROL, 0x51); + cdcReadReg (CDC_TOUCHCNT, 0x02); + cdcReadReg (CDC_CONTROL, 0x3F); + cdcReadReg (CDC_SOUND, 0x28); + cdcReadReg (CDC_SOUND, 0x2A); + cdcReadReg (CDC_SOUND, 0x2E); + cdcWriteReg(CDC_CONTROL, 0x52, 0x80); + cdcWriteReg(CDC_CONTROL, 0x40, 0x0C); + cdcWriteReg(CDC_SOUND, 0x24, 0xFF); + cdcWriteReg(CDC_SOUND, 0x25, 0xFF); + cdcWriteReg(CDC_SOUND, 0x26, 0x7F); + cdcWriteReg(CDC_SOUND, 0x27, 0x7F); + cdcWriteReg(CDC_SOUND, 0x28, 0x4A); + cdcWriteReg(CDC_SOUND, 0x29, 0x4A); + cdcWriteReg(CDC_SOUND, 0x2A, 0x10); + cdcWriteReg(CDC_SOUND, 0x2B, 0x10); + cdcWriteReg(CDC_CONTROL, 0x51, 0x00); + cdcReadReg (CDC_TOUCHCNT, 0x02); + cdcWriteReg(CDC_TOUCHCNT, 0x02, 0x98); + cdcWriteReg(CDC_SOUND, 0x23, 0x00); + cdcWriteReg(CDC_SOUND, 0x1F, 0x14); + cdcWriteReg(CDC_SOUND, 0x20, 0x14); + cdcWriteReg(CDC_CONTROL, 0x3F, 0x00); + cdcReadReg (CDC_CONTROL, 0x0B); + cdcWriteReg(CDC_CONTROL, 0x05, 0x00); + cdcWriteReg(CDC_CONTROL, 0x0B, 0x01); + cdcWriteReg(CDC_CONTROL, 0x0C, 0x02); + cdcWriteReg(CDC_CONTROL, 0x12, 0x01); + cdcWriteReg(CDC_CONTROL, 0x13, 0x02); + cdcWriteReg(CDC_SOUND, 0x2E, 0x00); + cdcWriteReg(CDC_CONTROL, 0x3A, 0x60); + cdcWriteReg(CDC_CONTROL, 0x01, 0x01); + cdcWriteReg(CDC_CONTROL, 0x39, 0x66); + cdcReadReg (CDC_SOUND, 0x20); + cdcWriteReg(CDC_SOUND, 0x20, 0x10); + cdcWriteReg(CDC_CONTROL, 0x04, 0x00); + cdcWriteReg(CDC_CONTROL, 0x12, 0x81); + cdcWriteReg(CDC_CONTROL, 0x13, 0x82); + cdcWriteReg(CDC_CONTROL, 0x51, 0x82); + cdcWriteReg(CDC_CONTROL, 0x51, 0x00); + cdcWriteReg(CDC_CONTROL, 0x04, 0x03); + cdcWriteReg(CDC_CONTROL, 0x05, 0xA1); + cdcWriteReg(CDC_CONTROL, 0x06, 0x15); + cdcWriteReg(CDC_CONTROL, 0x0B, 0x87); + cdcWriteReg(CDC_CONTROL, 0x0C, 0x83); + cdcWriteReg(CDC_CONTROL, 0x12, 0x87); + cdcWriteReg(CDC_CONTROL, 0x13, 0x83); + cdcReadReg (CDC_TOUCHCNT, 0x10); + cdcWriteReg(CDC_TOUCHCNT, 0x10, 0x08); + cdcWriteReg(0x04, 0x08, 0x7F); + cdcWriteReg(0x04, 0x09, 0xE1); + cdcWriteReg(0x04, 0x0A, 0x80); + cdcWriteReg(0x04, 0x0B, 0x1F); + cdcWriteReg(0x04, 0x0C, 0x7F); + cdcWriteReg(0x04, 0x0D, 0xC1); + cdcWriteReg(CDC_CONTROL, 0x41, 0x08); + cdcWriteReg(CDC_CONTROL, 0x42, 0x08); + cdcWriteReg(CDC_CONTROL, 0x3A, 0x00); + cdcWriteReg(0x04, 0x08, 0x7F); + cdcWriteReg(0x04, 0x09, 0xE1); + cdcWriteReg(0x04, 0x0A, 0x80); + cdcWriteReg(0x04, 0x0B, 0x1F); + cdcWriteReg(0x04, 0x0C, 0x7F); + cdcWriteReg(0x04, 0x0D, 0xC1); + cdcWriteReg(CDC_SOUND, 0x2F, 0x2B); + cdcWriteReg(CDC_SOUND, 0x30, 0x40); + cdcWriteReg(CDC_SOUND, 0x31, 0x40); + cdcWriteReg(CDC_SOUND, 0x32, 0x60); + cdcReadReg (CDC_CONTROL, 0x74); + cdcWriteReg(CDC_CONTROL, 0x74, 0x02); + cdcReadReg (CDC_CONTROL, 0x74); + cdcWriteReg(CDC_CONTROL, 0x74, 0x10); + cdcReadReg (CDC_CONTROL, 0x74); + cdcWriteReg(CDC_CONTROL, 0x74, 0x40); + cdcWriteReg(CDC_SOUND, 0x21, 0x20); + cdcWriteReg(CDC_SOUND, 0x22, 0xF0); + cdcReadReg (CDC_CONTROL, 0x51); + cdcReadReg (CDC_CONTROL, 0x3F); + cdcWriteReg(CDC_CONTROL, 0x3F, 0xD4); + cdcWriteReg(CDC_SOUND, 0x23, 0x44); + cdcWriteReg(CDC_SOUND, 0x1F, 0xD4); + cdcWriteReg(CDC_SOUND, 0x28, 0x4E); + cdcWriteReg(CDC_SOUND, 0x29, 0x4E); + cdcWriteReg(CDC_SOUND, 0x24, 0x9E); + cdcWriteReg(CDC_SOUND, 0x25, 0x9E); + cdcWriteReg(CDC_SOUND, 0x20, 0xD4); + cdcWriteReg(CDC_SOUND, 0x2A, 0x14); + cdcWriteReg(CDC_SOUND, 0x2B, 0x14); + cdcWriteReg(CDC_SOUND, 0x26, 0xA7); + cdcWriteReg(CDC_SOUND, 0x27, 0xA7); + cdcWriteReg(CDC_CONTROL, 0x40, 0x00); + cdcWriteReg(CDC_CONTROL, 0x3A, 0x60); + cdcWriteReg(CDC_SOUND, 0x26, volLevel); + cdcWriteReg(CDC_SOUND, 0x27, volLevel); + cdcWriteReg(CDC_SOUND, 0x2E, 0x03); + cdcWriteReg(CDC_TOUCHCNT, 0x03, 0x00); + cdcWriteReg(CDC_SOUND, 0x21, 0x20); + cdcWriteReg(CDC_SOUND, 0x22, 0xF0); + cdcReadReg (CDC_SOUND, 0x22); + cdcWriteReg(CDC_SOUND, 0x22, 0x00); + cdcWriteReg(CDC_CONTROL, 0x52, 0x80); + cdcWriteReg(CDC_CONTROL, 0x51, 0x00); + + // Set remaining values + cdcWriteReg(CDC_CONTROL, 0x03, 0x44); + cdcWriteReg(CDC_CONTROL, 0x0D, 0x00); + cdcWriteReg(CDC_CONTROL, 0x0E, 0x80); + cdcWriteReg(CDC_CONTROL, 0x0F, 0x80); + cdcWriteReg(CDC_CONTROL, 0x10, 0x08); + cdcWriteReg(CDC_CONTROL, 0x14, 0x80); + cdcWriteReg(CDC_CONTROL, 0x15, 0x80); + cdcWriteReg(CDC_CONTROL, 0x16, 0x04); + cdcWriteReg(CDC_CONTROL, 0x1A, 0x01); + cdcWriteReg(CDC_CONTROL, 0x1E, 0x01); + cdcWriteReg(CDC_CONTROL, 0x24, 0x80); + cdcWriteReg(CDC_CONTROL, 0x33, 0x34); + cdcWriteReg(CDC_CONTROL, 0x34, 0x32); + cdcWriteReg(CDC_CONTROL, 0x35, 0x12); + cdcWriteReg(CDC_CONTROL, 0x36, 0x03); + cdcWriteReg(CDC_CONTROL, 0x37, 0x02); + cdcWriteReg(CDC_CONTROL, 0x38, 0x03); + cdcWriteReg(CDC_CONTROL, 0x3C, 0x19); + cdcWriteReg(CDC_CONTROL, 0x3D, 0x05); + cdcWriteReg(CDC_CONTROL, 0x44, 0x0F); + cdcWriteReg(CDC_CONTROL, 0x45, 0x38); + cdcWriteReg(CDC_CONTROL, 0x49, 0x00); + cdcWriteReg(CDC_CONTROL, 0x4A, 0x00); + cdcWriteReg(CDC_CONTROL, 0x4B, 0xEE); + cdcWriteReg(CDC_CONTROL, 0x4C, 0x10); + cdcWriteReg(CDC_CONTROL, 0x4D, 0xD8); + cdcWriteReg(CDC_CONTROL, 0x4E, 0x7E); + cdcWriteReg(CDC_CONTROL, 0x4F, 0xE3); + cdcWriteReg(CDC_CONTROL, 0x58, 0x7F); + cdcWriteReg(CDC_CONTROL, 0x74, 0xD2); + cdcWriteReg(CDC_CONTROL, 0x75, 0x2C); + cdcWriteReg(CDC_SOUND, 0x22, 0x70); + cdcWriteReg(CDC_SOUND, 0x2C, 0x20); + + // Finish up! + cdcReadReg (CDC_TOUCHCNT, 0x02); + cdcWriteReg(CDC_TOUCHCNT, 0x02, 0x98); + cdcWriteReg(0xFF, 0x05, 0x00); //writeTSC(0x00, 0xFF); + + // Power management + writePowerManagement(PM_READ_REGISTER, 0x00); //*(unsigned char*)0x40001C2 = 0x80, 0x00; // read PWR[0] ;<-- also part of TSC ! + writePowerManagement(PM_CONTROL_REG, 0x0D); //*(unsigned char*)0x40001C2 = 0x00, 0x0D; // PWR[0]=0Dh ;<-- also part of TSC ! +} + +// SDK 5 +static bool ROMsupportsDsiMode(const tNDSHeader* ndsHeader) { + return (ndsHeader->unitCode > 0); +} + +// SDK 5 +// static bool ROMisDsiEnhanced(const tNDSHeader* ndsHeader) { return (ndsHeader->unitCode == 0x02); } + +// SDK 5 +// static bool ROMisDsiExclusive(const tNDSHeader* ndsHeader) { return (ndsHeader->unitCode == 0x03); } + +int arm7_loadBinary (const tDSiHeader* dsiHeaderTemp) { u32 errorCode; - // Init card - errorCode = cardInit(ndsHeader, &chipID); - if (errorCode) { - return errorCode; + // Init card + errorCode = cardInit((sNDSHeaderExt*)dsiHeaderTemp, &chipID); + if (errorCode) { return errorCode; } + + // Fix Pokemon games needing header data. + tonccpy((u32*)NDS_HEADER_POKEMON, (u32*)NDS_HEADER, 0x170); + + char* romTid = (char*)NDS_HEADER_POKEMON+0xC; + if ( + memcmp(romTid, "ADA", 3) == 0 // Diamond + || memcmp(romTid, "APA", 3) == 0 // Pearl + || memcmp(romTid, "CPU", 3) == 0 // Platinum + || memcmp(romTid, "IPK", 3) == 0 // HG + || memcmp(romTid, "IPG", 3) == 0 // SS + ) { + // Make the Pokemon game code ADAJ. + const char gameCodePokemon[] = { 'A', 'D', 'A', 'J' }; + tonccpy((char*)NDS_HEADER_POKEMON+0xC, gameCodePokemon, 4); } - // Set memory values expected by loaded NDS - *((u32*)0x027ff800) = chipID; // CurrentCardID - *((u32*)0x027ff804) = chipID; // Command10CardID - *((u32*)0x027ffc00) = chipID; // 3rd chip ID - *((u16*)0x027ff808) = ndsHeader->headerCRC16; // Header Checksum, CRC-16 of [000h-15Dh] - *((u16*)0x027ff80a) = ndsHeader->secureCRC16; // Secure Area Checksum, CRC-16 of [ [20h]..7FFFh] - *((u16*)0x027ffc40) = 0x1; // Booted from card -- EXTREMELY IMPORTANT!!! Thanks to cReDiAr - - cardRead(ndsHeader->arm9romOffset, (u32*)ndsHeader->arm9destination, ndsHeader->arm9binarySize); cardRead(ndsHeader->arm7romOffset, (u32*)ndsHeader->arm7destination, ndsHeader->arm7binarySize); + cardRead(dsiHeaderTemp->ndshdr.arm9romOffset, (u32*)dsiHeaderTemp->ndshdr.arm9destination, dsiHeaderTemp->ndshdr.arm9binarySize); + cardRead(dsiHeaderTemp->ndshdr.arm7romOffset, (u32*)dsiHeaderTemp->ndshdr.arm7destination, dsiHeaderTemp->ndshdr.arm7binarySize); + + moduleParams = (module_params_t*)findModuleParamsOffset(&dsiHeaderTemp->ndshdr); + return ERR_NONE; -} - - -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// Main function - -void arm7_main (void) { - +} + +static tNDSHeader* loadHeader(tDSiHeader* dsiHeaderTemp) { + tNDSHeader* ndsHeader = (tNDSHeader*)(isSdk5(moduleParams) ? NDS_HEADER_SDK5 : NDS_HEADER); + + *ndsHeader = dsiHeaderTemp->ndshdr; + + if (dsiModeConfirmed) { + tDSiHeader* dsiHeader = (tDSiHeader*)(isSdk5(moduleParams) ? DSI_HEADER_SDK5 : DSI_HEADER); // __DSiHeader + *dsiHeader = *dsiHeaderTemp; + } + + return ndsHeader; +} + +/*------------------------------------------------------------------------- +arm7_startBinary +Jumps to the ARM7 NDS binary in sync with the display and ARM9 +Written by Darkain, modified by Chishm. +--------------------------------------------------------------------------*/ +void arm7_startBinary (void) { + REG_IME = 0; + + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + + // Get the ARM9 to boot + arm9_stateFlag = ARM9_BOOTBIN; + + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + + // Start ARM7 + VoidFn arm7code = (VoidFn)ndsHeader->arm7executeAddress; + + if (!dsiModeConfirmed) { + REG_SCFG_EXT = 0x92A03000; + if (!scfgUnlock) { REG_SCFG_EXT &= ~(1UL << 31); } + + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + } + + arm7code(); +} + + +void initMBK() { + + if (dsiModeConfirmed) { + // give all DSI WRAM to arm7 at boot + // this function have no effect with ARM7 SCFG locked + + // arm7 is master of WRAM-A, arm9 of WRAM-B & C + REG_MBK9=0x3000000F; + + // WRAM-A fully mapped to arm7 + *((vu32*)REG_MBK1)=0x8185898D; // same as dsiware + + // WRAM-B fully mapped to arm7 // inverted order + *((vu32*)REG_MBK2)=0x9195999D; + *((vu32*)REG_MBK3)=0x8185898D; + + // WRAM-C fully mapped to arm7 // inverted order + *((vu32*)REG_MBK4)=0x9195999D; + *((vu32*)REG_MBK5)=0x8185898D; + + // WRAM mapped to the 0x3700000 - 0x37FFFFF area + // WRAM-A mapped to the 0x37C0000 - 0x37FFFFF area : 256k + REG_MBK6=0x080037C0; // same as dsiware + // WRAM-B mapped to the 0x3740000 - 0x37BFFFF area : 512k // why? only 256k real memory is there + REG_MBK7=0x07C03740; // same as dsiware + // WRAM-C mapped to the 0x3700000 - 0x373FFFF area : 256k + REG_MBK8=0x07403700; // same as dsiware + } else { + REG_MBK6=0x09403900; + REG_MBK7=0x09803940; + REG_MBK8=0x09C03980; + REG_MBK9=0xFCFFFF0F; + } +} + + +/*void fixFlashcardForDSiMode(void) { + if ((memcmp(ndsHeader->gameTitle, "PASS", 4) == 0) + && (memcmp(ndsHeader->gameCode, "ASME", 4) == 0)) // CycloDS Evolution + { + *(u16*)(0x0200197A) = 0xDF02; // LZ77UnCompReadByCallbackWrite16bit + *(u16*)(0x020409FA) = 0xDF02; // LZ77UnCompReadByCallbackWrite16bit + } +}*/ + +void fixDSBrowser(void) { + extern void patchMpu(const tNDSHeader* ndsHeader, const module_params_t* moduleParams); + patchMpu(ndsHeader, moduleParams); + + toncset((char*)0x02400000, 0xFF, 0xC0); + *(u8*)0x024000B2 = 0; + *(u8*)0x024000B3 = 0; + *(u8*)0x024000B4 = 0; + *(u8*)0x024000B5 = 0x24; + *(u8*)0x024000B6 = 0x24; + *(u8*)0x024000B7 = 0x24; + *(u16*)0x024000BE = 0x7FFF; + *(u16*)0x024000CE = 0x7FFF; + + // Opera RAM patch (ARM9) + *(u32*)0x02003D48 = 0x2400000; + *(u32*)0x02003D4C = 0x2400004; + + *(u32*)0x02010FF0 = 0x2400000; + *(u32*)0x02010FF4 = 0x24000CE; + + *(u32*)0x020112AC = 0x2400080; + + *(u32*)0x020402BC = 0x24000C2; + *(u32*)0x020402C0 = 0x24000C0; + *(u32*)0x020402CC = 0x2FFFFFE; + *(u32*)0x020402D0 = 0x2800000; + *(u32*)0x020402D4 = 0x29FFFFF; + *(u32*)0x020402D8 = 0x2BFFFFF; + *(u32*)0x020402DC = 0x2FFFFFF; + *(u32*)0x020402E0 = 0xD7FFFFF; // ??? + toncset((char*)0x2800000, 0xFF, 0x800000); // Fill fake MEP with FFs + + // Opera RAM patch (ARM7) + *(u32*)0x0238C7BC = 0x2400000; + *(u32*)0x0238C7C0 = 0x24000CE; + + //*(u32*)0x0238C950 = 0x2400000; +} + + +static void setMemoryAddress(const tNDSHeader* ndsHeader) { + if (ROMsupportsDsiMode(ndsHeader)) { + // u8* deviceListAddr = (u8*)((u8*)0x02FFE1D4); + // tonccpy(deviceListAddr, deviceList_bin, deviceList_bin_len); + + // const char *ndsPath = "nand:/dsiware.nds"; + // tonccpy(deviceListAddr+0x3C0, ndsPath, sizeof(ndsPath)); + + //tonccpy((u32*)0x02FFC000, (u32*)DSI_HEADER_SDK5, 0x1000); // Make a duplicate of DSi header + tonccpy((u32*)0x02FFFA80, (u32*)NDS_HEADER_SDK5, 0x160); // Make a duplicate of DS header + + *(u32*)(0x02FFA680) = 0x02FD4D80; + *(u32*)(0x02FFA684) = 0x00000000; + *(u32*)(0x02FFA688) = 0x00001980; + + *(u32*)(0x02FFF00C) = 0x0000007F; + *(u32*)(0x02FFF010) = 0x550E25B8; + *(u32*)(0x02FFF014) = 0x02FF4000; + } + + // Set memory values expected by loaded NDS + // from NitroHax, thanks to Chism + *((u32*)(isSdk5(moduleParams) ? 0x02fff800 : 0x027ff800)) = chipID; // CurrentCardID + *((u32*)(isSdk5(moduleParams) ? 0x02fff804 : 0x027ff804)) = chipID; // Command10CardID + *((u16*)(isSdk5(moduleParams) ? 0x02fff808 : 0x027ff808)) = ndsHeader->headerCRC16; // Header Checksum, CRC-16 of [000h-15Dh] + *((u16*)(isSdk5(moduleParams) ? 0x02fff80a : 0x027ff80a)) = ndsHeader->secureCRC16; // Secure Area Checksum, CRC-16 of [ [20h]..7FFFh] + + // Copies of above + *((u32*)(isSdk5(moduleParams) ? 0x02fffc00 : 0x027ffc00)) = chipID; // CurrentCardID + *((u32*)(isSdk5(moduleParams) ? 0x02fffc04 : 0x027ffc04)) = chipID; // Command10CardID + *((u16*)(isSdk5(moduleParams) ? 0x02fffc08 : 0x027ffc08)) = ndsHeader->headerCRC16; // Header Checksum, CRC-16 of [000h-15Dh] + *((u16*)(isSdk5(moduleParams) ? 0x02fffc0a : 0x027ffc0a)) = ndsHeader->secureCRC16; // Secure Area Checksum, CRC-16 of [ [20h]..7FFFh] + + *((u16*)(isSdk5(moduleParams) ? 0x02fffc40 : 0x027ffc40)) = 0x1; // Boot Indicator (Booted from card for SDK5) -- EXTREMELY IMPORTANT!!! Thanks to cReDiAr +} + +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Main function + +void arm7_main (void) { + + initMBK(); + int errorCode; - // Synchronise start - while (ipcRecvState() != ARM9_START); - ipcSendState(ARM7_START); - - // Wait until ARM9 is ready - while (ipcRecvState() != ARM9_READY); - - ipcSendState(ARM7_MEMCLR); - - // Get ARM7 to clear RAM - arm7_resetMemory(); - - ipcSendState(ARM7_LOADBIN); - - // Load the NDS file - errorCode = arm7_loadBinary(); - if (errorCode) { - // errorOutput(errorCode); - } - - ipcSendState(ARM7_BOOTBIN); - - arm7_reset(); -} - + // Wait for ARM9 to at least start + while (arm9_stateFlag < ARM9_START); + + debugOutput (ERR_STS_CLR_MEM); + + // Get ARM7 to clear RAM + arm7_resetMemory(); + + debugOutput (ERR_STS_LOAD_BIN); + + tDSiHeader* dsiHeaderTemp = (tDSiHeader*)0x02FFC000; + + // Load the NDS file + errorCode = arm7_loadBinary(dsiHeaderTemp); + if (errorCode) { + debugOutput(errorCode); + } + + if (dsiMode) { + if (twlMode == 2) { + dsiModeConfirmed = twlMode; + } else { + dsiModeConfirmed = twlMode && ROMsupportsDsiMode(&dsiHeaderTemp->ndshdr); + } + } + + if (dsiModeConfirmed) { + if (dsiHeaderTemp->arm9ibinarySize > 0) { + cardRead(dsiHeaderTemp->arm9iromOffset, (u32*)dsiHeaderTemp->arm9idestination, dsiHeaderTemp->arm9ibinarySize); + } + if (dsiHeaderTemp->arm7ibinarySize > 0) { + cardRead(dsiHeaderTemp->arm7iromOffset, (u32*)dsiHeaderTemp->arm7idestination, dsiHeaderTemp->arm7ibinarySize); + } + } else { + REG_SCFG_ROM = 0x703; + } + + ndsHeader = loadHeader(dsiHeaderTemp); + + my_readUserSettings(ndsHeader); // Header has to be loaded first + + if (dsiMode && !dsiModeConfirmed) { + NDSTouchscreenMode(); + *(u16*)0x4000500 = 0x807F; + + if (twlClock) { + // REG_SCFG_CLK = 0x0181; + REG_SCFG_CLK = 0x0187; + } else { + REG_SCFG_CLK = 0x0180; + } + if (!sdAccess) { + REG_SCFG_EXT = 0x93FBFB06; + } + } + + if (*(u32*)(NDS_HEADER+0xC) == 0x50524255) { + fixDSBrowser(); + } + + if ((*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x52544E // Download Play ROMs + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x4D5341 // Super Mario 64 DS + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x434D41 // Mario Kart DS + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x443241 // New Super Mario Bros. + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x5A5241 // Rockman ZX/MegaMan ZX + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x574B41 // Kirby Squeak Squad/Mouse Attack + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x585A59 // Rockman ZX Advent/MegaMan ZX Advent + || (*(u32*)(NDS_HEADER+0xC) & 0x00FFFFFF) == 0x5A3642) // Rockman Zero Collection/MegaMan Zero Collection + { + gameSoftReset = true; + } + + toncset ((void*)0x023F0000, 0, 0x8000); // Clear cheat data from main memory + + debugOutput (ERR_STS_START); + arm9_TWLClockSpeeds = twlClock; + arm9_boostVram = boostVram; + arm9_scfgUnlock = scfgUnlock; + arm9_dsiModeConfirmed = dsiModeConfirmed; + arm9_ExtendRam = extendRam; + //arm9_isSdk5 = isSdk5(moduleParams); + + if (dsiModeConfirmed) { + REG_SCFG_EXT = 0x93FBFB06; + if (!scfgUnlock) { REG_SCFG_EXT &= ~(1UL << 31); } + } + + while (arm9_stateFlag != ARM9_READY); + arm9_stateFlag = ARM9_SETSCFG; + while (arm9_stateFlag != ARM9_READY); + + setMemoryAddress(ndsHeader); + + arm7_startBinary(); + + while (1); +} + diff --git a/BootLoader/source/main.arm9.c b/BootLoader/source/main.arm9.c index d4543ef..60131c1 100755 --- a/BootLoader/source/main.arm9.c +++ b/BootLoader/source/main.arm9.c @@ -38,10 +38,21 @@ #include #include +#include // NULL #include #include "common.h" +tNDSHeader* ndsHeader = NULL; + +bool arm9_runCardEngine = false; +bool arm9_dsiModeConfirmed = false; +bool dsiModeConfirmed = false; +bool arm9_boostVram = false; +bool arm9_scfgUnlock = false; +bool arm9_TWLClockSpeeds = false; +bool arm9_ExtendRam = false; + volatile int arm9_stateFlag = ARM9_BOOT; volatile u32 arm9_errorCode = 0xFFFFFFFF; volatile bool arm9_errorClearBG = false; @@ -50,20 +61,63 @@ volatile u32 arm9_BLANK_RAM = 0; /*------------------------------------------------------------------------- External functions --------------------------------------------------------------------------*/ -extern void arm9_clearCache(void); -extern void arm9_reset (void); +extern void arm9_clearCache (void); + + +void initMBKARM9() { + + if (arm9_dsiModeConfirmed) { + // default dsiware settings + + // WRAM-B fully mapped to arm7 // inverted order + *((vu32*)REG_MBK2)=0x9195999D; + *((vu32*)REG_MBK3)=0x8185898D; + + // WRAM-C fully mapped to arm7 // inverted order + *((vu32*)REG_MBK4)=0x9195999D; + *((vu32*)REG_MBK5)=0x8185898D; + + // WRAM-A not mapped (reserved to arm7) + REG_MBK6=0x00000000; + // WRAM-B mapped to the 0x3740000 - 0x37BFFFF area : 512k // why? only 256k real memory is there + REG_MBK7=0x07C03740; // same as dsiware + // WRAM-C mapped to the 0x3700000 - 0x373FFFF area : 256k + REG_MBK8=0x07403700; // same as dsiware + } else { + // MBK settings for NTR mode games + *((vu32*)REG_MBK1)=0x8D898581; + *((vu32*)REG_MBK2)=0x91898581; + *((vu32*)REG_MBK3)=0x91999591; + *((vu32*)REG_MBK4)=0x91898581; + *((vu32*)REG_MBK5)=0x91999591; + + REG_MBK6=0x00003000; + REG_MBK7=0x00003000; + REG_MBK8=0x00003000; + } +} + +void SetBrightness(u8 screen, s8 bright) { + + u16 mode = 1 << 14; + + if (bright < 0) { + mode = 2 << 14; + bright = -bright; + } + + if (bright > 31) { bright = 31; } + + *(u16*)(0x0400006C + (0x1000 * screen)) = bright + mode; +} /*------------------------------------------------------------------------- arm9_errorOutput Displays an error code on screen. - -Each box is 2 bits, and left-to-right is most-significant bits to least. -Red = 00, Yellow = 01, Green = 10, Blue = 11 - Written by Chishm --------------------------------------------------------------------------*/ -/* Re-enable for debugging. -static void arm9_errorOutput (u32 code) { +/*static void arm9_errorOutput (u32 code, bool clearBG) { +// Re-enable for debugging int i, j, k; u16 colour; @@ -71,9 +125,11 @@ static void arm9_errorOutput (u32 code) { REG_DISPCNT = MODE_FB0; VRAM_A_CR = VRAM_ENABLE; - // Clear display - for (i = 0; i < 256*192; i++) { - VRAM_A[i] = 0x0000; + if (clearBG) { + // Clear display + for (i = 0; i < 256*192; i++) { + VRAM_A[i] = 0x0000; + } } // Draw boxes of colour, signifying error codes @@ -98,20 +154,40 @@ static void arm9_errorOutput (u32 code) { } } - // Low 16 bits - for (i = 0; i < 8; i++) { // Pair of bits to use - if (((code>>(14-2*i))&3) == 0) { - colour = 0x001F; // Red - } else if (((code>>(14-2*i))&3) == 1) { - colour = 0x03FF; // Yellow - } else if (((code>>(14-2*i))&3) == 2) { - colour = 0x03E0; // Green - } else { - colour = 0x7C00; // Blue + if ((code >> 8) != 0) { + // Low 16 bits + for (i = 0; i < 8; i++) { // Pair of bits to use + if (((code>>(14-2*i))&3) == 0) { + colour = 0x001F; // Red + } else if (((code>>(14-2*i))&3) == 1) { + colour = 0x03FF; // Yellow + } else if (((code>>(14-2*i))&3) == 2) { + colour = 0x03E0; // Green + } else { + colour = 0x7C00; // Blue + } + for (j = 103; j < 119; j++) { // Row + for (k = 32*i+8; k < 32*i+24; k++) { // Column + VRAM_A[j*256+k] = colour; + } + } } - for (j = 103; j < 119; j++) { // Row - for (k = 32*i+8; k < 32*i+24; k++) { // Column - VRAM_A[j*256+k] = colour; + } else { + // Low 8 bits + for (i = 0; i < 4; i++) { // Pair of bits to use + if (((code>>(6-2*i))&3) == 0) { + colour = 0x001F; // Red + } else if (((code>>(6-2*i))&3) == 1) { + colour = 0x03FF; // Yellow + } else if (((code>>(6-2*i))&3) == 2) { + colour = 0x03E0; // Green + } else { + colour = 0x7C00; // Blue + } + for (j = 87; j < 103; j++) { // Row + for (k = 32*i+72; k < 32*i+88; k++) { // Column + VRAM_A[j*256+k] = colour; + } } } } @@ -122,30 +198,26 @@ static void arm9_errorOutput (u32 code) { arm9_main Clears the ARM9's icahce and dcache Clears the ARM9's DMA channels and resets video memory -Jumps to the ARM9 NDS binary in sync with the ARM7 +Jumps to the ARM9 NDS binary in sync with the display and ARM7 Written by Darkain, modified by Chishm --------------------------------------------------------------------------*/ -void arm9_main (void) { - +void __attribute__((target("arm"))) arm9_main (void) { register int i; //set shared ram to ARM7 WRAM_CR = 0x03; REG_EXMEMCNT = 0xE880; - // Disable interrupts + initMBKARM9(); + + arm9_stateFlag = ARM9_START; + REG_IME = 0; REG_IE = 0; REG_IF = ~0; - // Synchronise start - ipcSendState(ARM9_START); - while (ipcRecvState() != ARM7_START); - - ipcSendState(ARM9_MEMCLR); - arm9_clearCache(); - + for (i=0; i<16*1024; i+=4) { //first 16KB (*(vu32*)(i+0x00000000)) = 0x00000000; //clear ITCM (*(vu32*)(i+0x00800000)) = 0x00000000; //clear DTCM @@ -155,40 +227,12 @@ void arm9_main (void) { (*(vu32*)(i+0x00000000)) = 0x00000000; //clear ITCM } + arm9_stateFlag = ARM9_MEMCLR; + (*(vu32*)0x00803FFC) = 0; //IRQ_HANDLER ARM9 version (*(vu32*)0x00803FF8) = ~0; //VBLANK_INTR_WAIT_FLAGS ARM9 version - - // Clear out FIFO - REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; - REG_IPC_FIFO_CR = 0; - - // Blank out VRAM - VRAM_A_CR = 0x80; - VRAM_B_CR = 0x80; - // Don't mess with the VRAM used for execution - // VRAM_C_CR = 0; - VRAM_D_CR = 0x80; - VRAM_E_CR = 0x80; - VRAM_F_CR = 0x80; - VRAM_G_CR = 0x80; - VRAM_H_CR = 0x80; - VRAM_I_CR = 0x80; - BG_PALETTE[0] = 0xFFFF; - dmaFill((void*)&arm9_BLANK_RAM, BG_PALETTE+1, (2*1024)-2); - dmaFill((void*)&arm9_BLANK_RAM, OAM, 2*1024); - dmaFill((void*)&arm9_BLANK_RAM, VRAM_A, 256*1024); // Banks A, B - dmaFill((void*)&arm9_BLANK_RAM, VRAM_D, 272*1024); // Banks D, E, F, G, H, I - - // Clear out display registers - vu16 *mainregs = (vu16*)0x04000000; - vu16 *subregs = (vu16*)0x04001000; - for (i=0; i<43; i++) { - mainregs[i] = 0; - subregs[i] = 0; - } - - // Clear out ARM9 DMA channels + //clear out ARM9 DMA channels for (i=0; i<4; i++) { DMA_CR(i) = 0; DMA_SRC(i) = 0; @@ -196,38 +240,125 @@ void arm9_main (void) { TIMER_CR(i) = 0; TIMER_DATA(i) = 0; } + + // Clear out FIFO + REG_IPC_SYNC = 0; + REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; + REG_IPC_FIFO_CR = 0; + + VRAM_A_CR = 0x80; + VRAM_B_CR = 0x80; + VRAM_C_CR = 0x80; +// Don't mess with the VRAM used for execution +// VRAM_D_CR = 0x80; + VRAM_E_CR = 0x80; + VRAM_F_CR = 0x80; + VRAM_G_CR = 0x80; + VRAM_H_CR = 0x80; + VRAM_I_CR = 0x80; + BG_PALETTE[0] = 0xFFFF; + dmaFill((u16*)&arm9_BLANK_RAM, BG_PALETTE+1, (2*1024)-2); + dmaFill((u16*)&arm9_BLANK_RAM, OAM, 2*1024); + dmaFill((u16*)&arm9_BLANK_RAM, (u16*)0x04000000, 0x56); // Clear main display registers + dmaFill((u16*)&arm9_BLANK_RAM, (u16*)0x04001000, 0x56); // Clear sub display registers + dmaFill((u16*)&arm9_BLANK_RAM, VRAM_A, 0x20000*3); // Banks A, B, C + dmaFill((u16*)&arm9_BLANK_RAM, VRAM_D, 272*1024); // Banks D (excluded), E, F, G, H, I REG_DISPSTAT = 0; - videoSetMode(0); - videoSetModeSub(0); + //videoSetMode(0); + //videoSetModeSub(0); VRAM_A_CR = 0; VRAM_B_CR = 0; -// Don't mess with the VRAM used for execution -// VRAM_C_CR = 0; - VRAM_D_CR = 0; + VRAM_C_CR = 0; + // Don't mess with the ARM7's VRAM + //VRAM_D_CR = 0; VRAM_E_CR = 0; VRAM_F_CR = 0; VRAM_G_CR = 0; VRAM_H_CR = 0; VRAM_I_CR = 0; - REG_POWERCNT = 0x820F; - - - // set ARM9 state to ready and wait for instructions from ARM7 - ipcSendState(ARM9_READY); - // Re-enable for debugging - /* - while (ipcRecvState() != ARM7_BOOTBIN) { - if (ipcRecvState() == ARM7_ERR) { - arm9_errorOutput (arm9_errorCode); - // Halt after displaying error code - while(1); + REG_POWERCNT = 0x820F; + + *(u16*)0x0400006C |= BIT(14); + *(u16*)0x0400006C &= BIT(15); + SetBrightness(0, 0); + SetBrightness(1, 0); + + // set ARM9 state to ready and wait for it to change again + arm9_stateFlag = ARM9_READY; + while ( arm9_stateFlag != ARM9_BOOTBIN ) { + if (arm9_stateFlag == ARM9_DISPERR) { + // Re-enable for debugging + // arm9_errorOutput (arm9_errorCode, arm9_errorClearBG); + if ( arm9_stateFlag == ARM9_DISPERR) { arm9_stateFlag = ARM9_READY; } + } + if (arm9_stateFlag == ARM9_SETSCFG) { + /*if (arm9_dsiModeConfirmed) { + REG_SCFG_EXT = 0x8307F100; + // REG_SCFG_CLK = 0x84; + if (arm9_TWLClockSpeeds) { + REG_SCFG_CLK = 0x85; + } else { + REG_SCFG_CLK = 0x84; + } + } else { + // REG_SCFG_EXT = 0x8300C000; + // REG_SCFG_EXT=0x83000000; + REG_SCFG_EXT=0x83000000; + if (arm9_ExtendRam) { + REG_SCFG_EXT |= BIT(14); + REG_SCFG_EXT |= BIT(15); + } + if (arm9_TWLClockSpeeds) { + // REG_SCFG_EXT=0x8300C000; + } else { + // REG_SCFG_EXT=0x83000000; + } + + if (arm9_boostVram) { + REG_SCFG_EXT |= BIT(13); // Extended VRAM Access + } + + if (!arm9_scfgUnlock) { + // lock SCFG + REG_SCFG_EXT &= ~(1UL << 31); + } + }*/ + arm9_stateFlag = ARM9_READY; } } - */ - + + VoidFn arm9code = (VoidFn)ndsHeader->arm9executeAddress; + + // wait for vblank then boot + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + // arm9_errorOutput (*(u32*)(first), true); - - arm9_reset(); + + if (arm9_dsiModeConfirmed) { + REG_SCFG_EXT = 0x8307F100; + REG_SCFG_CLK = 0x84; + if (arm9_TWLClockSpeeds) { REG_SCFG_CLK |= BIT(0); } + } else { + // REG_SCFG_EXT = 0x8300C000; + REG_SCFG_EXT=0x83000000; + + if (arm9_ExtendRam) { + REG_SCFG_EXT |= BIT(14); + REG_SCFG_EXT |= BIT(15); + } + + // Extended VRAM Access + if (arm9_boostVram) { REG_SCFG_EXT |= BIT(13); } + + // lock SCFG + if (!arm9_scfgUnlock) { REG_SCFG_EXT &= ~(1UL << 31); } + } + + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + + arm9code(); } diff --git a/BootLoader/source/module_params.h b/BootLoader/source/module_params.h new file mode 100644 index 0000000..6b10d39 --- /dev/null +++ b/BootLoader/source/module_params.h @@ -0,0 +1,22 @@ +#ifndef MODULE_PARAMS_H +#define MODULE_PARAMS_H + +#include + +typedef struct { + u32 auto_load_list_offset; + u32 auto_load_list_end; + u32 auto_load_start; + u32 static_bss_start; + u32 static_bss_end; + u32 compressed_static_end; + u32 sdk_version; + u32 nitro_code_be; + u32 nitro_code_le; +} module_params_t; + +inline bool isSdk5(const module_params_t* moduleParams) { + return (moduleParams->sdk_version > 0x5000000); +} + +#endif // MODULE_PARAMS_H diff --git a/BootLoader/source/ndsheaderbanner.h b/BootLoader/source/ndsheaderbanner.h new file mode 100644 index 0000000..7d0c42f --- /dev/null +++ b/BootLoader/source/ndsheaderbanner.h @@ -0,0 +1,138 @@ +/*--------------------------------------------------------------------------------- + + memory.h -- Declaration of memory regions + + + Copyright (C) 2005 Michael Noland (joat) and Jason Rogers (dovoto) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + +---------------------------------------------------------------------------------*/ +/*! \file ndsheaderbanner.h +\brief Defines the Nintendo DS file header and icon/title structs. +*/ + +#ifndef NDS_HEADER2 +#define NDS_HEADER2 + +#include + +/*! + \brief the NDS file header format + See gbatek for more info. +*/ +typedef struct { + char gameTitle[12]; //!< 12 characters for the game title. + char gameCode[4]; //!< 4 characters for the game code. + char makercode[2]; //!< identifies the (commercial) developer. + u8 unitCode; //!< identifies the required hardware. + u8 deviceType; //!< type of device in the game card + u8 deviceSize; //!< capacity of the device (1 << n Mbit) + u8 reserved1[9]; + u8 romversion; //!< version of the ROM. + u8 flags; //!< bit 2: auto-boot flag. + + u32 arm9romOffset; //!< offset of the arm9 binary in the nds file. + u32 arm9executeAddress; //!< adress that should be executed after the binary has been copied. + u32 arm9destination; //!< destination address to where the arm9 binary should be copied. + u32 arm9binarySize; //!< size of the arm9 binary. + + u32 arm7romOffset; //!< offset of the arm7 binary in the nds file. + u32 arm7executeAddress; //!< adress that should be executed after the binary has been copied. + u32 arm7destination; //!< destination address to where the arm7 binary should be copied. + u32 arm7binarySize; //!< size of the arm7 binary. + + u32 filenameOffset; //!< File Name Table (FNT) offset. + u32 filenameSize; //!< File Name Table (FNT) size. + u32 fatOffset; //!< File Allocation Table (FAT) offset. + u32 fatSize; //!< File Allocation Table (FAT) size. + + u32 arm9overlaySource; //!< File arm9 overlay offset. + u32 arm9overlaySize; //!< File arm9 overlay size. + u32 arm7overlaySource; //!< File arm7 overlay offset. + u32 arm7overlaySize; //!< File arm7 overlay size. + + u32 cardControl13; //!< Port 40001A4h setting for normal commands (used in modes 1 and 3) + u32 cardControlBF; //!< Port 40001A4h setting for KEY1 commands (used in mode 2) + u32 bannerOffset; //!< offset to the banner with icon and titles etc. + + u16 secureCRC16; //!< Secure Area Checksum, CRC-16. + + u16 readTimeout; //!< Secure Area Loading Timeout. + + u32 unknownRAM1; //!< ARM9 Auto Load List RAM Address (?) + u32 unknownRAM2; //!< ARM7 Auto Load List RAM Address (?) + + u32 bfPrime1; //!< Secure Area Disable part 1. + u32 bfPrime2; //!< Secure Area Disable part 2. + u32 romSize; //!< total size of the ROM. + + u32 headerSize; //!< ROM header size. + u32 zeros88[14]; + u8 gbaLogo[156]; //!< Nintendo logo needed for booting the game. + u16 logoCRC16; //!< Nintendo Logo Checksum, CRC-16. + u16 headerCRC16; //!< header checksum, CRC-16. + + u32 debugRomSource; //!< debug ROM offset. + u32 debugRomSize; //!< debug size. + u32 debugRomDestination; //!< debug RAM destination. + u32 offset_0x16C; //reserved? + + u8 zero[0x40]; + u32 region; + u32 accessControl; + u32 arm7SCFGSettings; + u16 dsi_unk1; + u8 dsi_unk2; + u8 dsi_flags; + + u32 arm9iromOffset; //!< offset of the arm9 binary in the nds file. + u32 arm9iexecuteAddress; + u32 arm9idestination; //!< destination address to where the arm9 binary should be copied. + u32 arm9ibinarySize; //!< size of the arm9 binary. + + u32 arm7iromOffset; //!< offset of the arm7 binary in the nds file. + u32 deviceListDestination; + u32 arm7idestination; //!< destination address to where the arm7 binary should be copied. + u32 arm7ibinarySize; //!< size of the arm7 binary. + + u8 zero2[0x20]; + + // 0x200 + // TODO: More DSi-specific fields. + u32 dsi1[0x10/4]; + u32 twlRomSize; + u32 dsi_unk3; + u32 dsi_unk4; + u32 dsi_unk5; + u8 dsi2[0x10]; + u32 dsi_tid; + u32 dsi_tid2; + u32 pubSavSize; + u32 prvSavSize; + u8 dsi3[0x174]; +} sNDSHeaderExt; + +//#define __NDSHeader ((tNDSHeader *)0x02FFFE00) + +// Make sure the header size is correct. +//static_assert(sizeof(sNDSHeaderExt) == 0x3B4, "sizeof(sNDSHeaderExt) is not 0x3B4 bytes"); + +#endif // NDS_HEADER2 diff --git a/BootLoader/source/patch.h b/BootLoader/source/patch.h new file mode 100644 index 0000000..3963563 --- /dev/null +++ b/BootLoader/source/patch.h @@ -0,0 +1,48 @@ +/* + NitroHax -- Cheat tool for the Nintendo DS + Copyright (C) 2008 Michael "Chishm" Chisholm + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef PATCH_H +#define PATCH_H + +//#include +#include +#include // tNDSHeader + +#define PAGE_4K (0b01011 << 1) +#define PAGE_8K (0b01100 << 1) +#define PAGE_16K (0b01101 << 1) +#define PAGE_32K (0b01110 << 1) +#define PAGE_64K (0b01111 << 1) +#define PAGE_128K (0b10000 << 1) +#define PAGE_256K (0b10001 << 1) +#define PAGE_512K (0b10010 << 1) +#define PAGE_1M (0b10011 << 1) +#define PAGE_2M (0b10100 << 1) +#define PAGE_4M (0b10101 << 1) +#define PAGE_8M (0b10110 << 1) +#define PAGE_16M (0b10111 << 1) +#define PAGE_32M (0b11000 << 1) +#define PAGE_64M (0b11001 << 1) +#define PAGE_128M (0b11010 << 1) +#define PAGE_256M (0b11011 << 1) +#define PAGE_512M (0b11100 << 1) +#define PAGE_1G (0b11101 << 1) +#define PAGE_2G (0b11110 << 1) +#define PAGE_4G (0b11111 << 1) + +#endif // PATCH_H diff --git a/BootLoader/source/patch_arm9.c b/BootLoader/source/patch_arm9.c new file mode 100644 index 0000000..60db7d7 --- /dev/null +++ b/BootLoader/source/patch_arm9.c @@ -0,0 +1,94 @@ +#include +#include +#include "module_params.h" +#include "patch.h" +#include "find.h" +#include "common.h" + +//#define memcpy __builtin_memcpy // memcpy + +void patchMpu(const tNDSHeader* ndsHeader, const module_params_t* moduleParams) { + u32 patchMpuRegion = 0; + u32 patchMpuSize = 0; + + // Find the mpu init + u32* mpuStartOffset = findMpuStartOffset(ndsHeader, patchMpuRegion); + u32* mpuDataOffset = findMpuDataOffset(moduleParams, patchMpuRegion, mpuStartOffset); + if (mpuDataOffset) { + // Change the region 1 configuration + + u32 mpuInitRegionNewData = PAGE_32M | 0x02000000 | 1; + u32 mpuNewDataAccess = 0; + u32 mpuNewInstrAccess = 0; + int mpuAccessOffset = 0; + switch (patchMpuRegion) { + case 0: + mpuInitRegionNewData = PAGE_128M | 0x00000000 | 1; + break; + case 2: + mpuNewDataAccess = 0x15111111; + mpuNewInstrAccess = 0x5111111; + mpuAccessOffset = 6; + break; + case 3: + mpuInitRegionNewData = PAGE_8M | 0x03000000 | 1; + mpuNewInstrAccess = 0x5111111; + mpuAccessOffset = 5; + break; + } + + *mpuDataOffset = mpuInitRegionNewData; + + if (mpuAccessOffset) { + if (mpuNewInstrAccess) { + mpuDataOffset[mpuAccessOffset] = mpuNewInstrAccess; + } + if (mpuNewDataAccess) { + mpuDataOffset[mpuAccessOffset + 1] = mpuNewDataAccess; + } + } + } + + // Find the mpu cache init + u32* mpuInitCacheOffset = findMpuInitCacheOffset(mpuStartOffset); + if (mpuInitCacheOffset) { + *mpuInitCacheOffset = 0xE3A00046; + } + + // Patch out all further mpu reconfiguration + // dbg_printf("patchMpuSize: "); + // dbg_hexa(patchMpuSize); + // dbg_printf("\n\n"); + const u32* mpuInitRegionSignature = getMpuInitRegionSignature(patchMpuRegion); + u32* mpuInitOffset = mpuStartOffset; + while (mpuInitOffset && patchMpuSize) { + u32 patchSize = ndsHeader->arm9binarySize; + if (patchMpuSize > 1) { + patchSize = patchMpuSize; + } + mpuInitOffset = findOffset( + //(u32*)((u32)mpuStartOffset + 4), patchSize, + mpuInitOffset + 1, patchSize, + mpuInitRegionSignature, 1 + ); + if (mpuInitOffset) { + // dbg_printf("Mpu init: "); + // dbg_hexa((u32)mpuInitOffset); + // dbg_printf("\n\n"); + + *mpuInitOffset = 0xE1A00000; // nop + + // Try to find it + /*for (int i = 0; i < 0x100; i++) { + mpuDataOffset += i; + if ((*mpuDataOffset & 0xFFFFFF00) == 0x02000000) { + *mpuDataOffset = PAGE_32M | 0x02000000 | 1; + break; + } + if (i == 100) { + *mpuStartOffset = 0xE1A00000; + } + }*/ + } + } +} diff --git a/BootLoader/source/read_card.c b/BootLoader/source/read_card.c index 62543d2..7dc38eb 100755 --- a/BootLoader/source/read_card.c +++ b/BootLoader/source/read_card.c @@ -24,17 +24,21 @@ #include #include +#include "tonccpy.h" #include "encryption.h" #include "common.h" -typedef union -{ +typedef union { char title[4]; u32 key; } GameCode; +static bool twlBlowfish = false; + +static bool normalChip = false; // As defined by GBAtek, normal chip secure area is accessed in blocks of 0x200, other chip in blocks of 0x1000 static u32 portFlags = 0; -static u32 secureAreaData[CARD_SECURE_AREA_SIZE/sizeof(u32)]; +static u32 headerData[0x1000/sizeof(u32)] = {0}; +static u32 secureArea[CARD_SECURE_AREA_SIZE/sizeof(u32)]; static const u8 cardSeedBytes[] = {0xE8, 0x4D, 0x5A, 0xB1, 0x17, 0x8F, 0x99, 0xD5}; @@ -43,16 +47,14 @@ static u32 getRandomNumber(void) { // guaranteed to be random. } -static void decryptSecureArea (u32 gameCode, u32* secureArea) +static void decryptSecureArea (u32 gameCode, u32* secureArea, int iCardDevice) { - int i; - - init_keycode (gameCode, 2, 8); + init_keycode (gameCode, 2, 8, iCardDevice); crypt_64bit_down (secureArea); - init_keycode (gameCode, 3, 8); + init_keycode (gameCode, 3, 8, iCardDevice); - for (i = 0; i < 0x200; i+= 2) { + for (int i = 0; i < 0x200; i+= 2) { crypt_64bit_down (secureArea + i); } } @@ -67,7 +69,7 @@ static struct { } key1data; -static void initKey1Encryption (u8* cmdData) { +static void initKey1Encryption (u8* cmdData, int iCardDevice) { key1data.iii = getRandomNumber() & 0x00000fff; key1data.jjj = getRandomNumber() & 0x00000fff; key1data.kkkkk = getRandomNumber() & 0x000fffff; @@ -75,7 +77,11 @@ static void initKey1Encryption (u8* cmdData) { key1data.mmm = getRandomNumber() & 0x00000fff; key1data.nnn = getRandomNumber() & 0x00000fff; - cmdData[7] = CARD_CMD_ACTIVATE_BF; + if(iCardDevice) //DSi + cmdData[7]=0x3D; // CARD_CMD_ACTIVATE_BF2 + else + cmdData[7]=CARD_CMD_ACTIVATE_BF; + cmdData[6] = (u8) (key1data.iii >> 4); cmdData[5] = (u8) ((key1data.iii << 4) | (key1data.jjj >> 8)); cmdData[4] = (u8) key1data.jjj; @@ -86,8 +92,7 @@ static void initKey1Encryption (u8* cmdData) { } // Note: cmdData must be aligned on a word boundary -static void createEncryptedCommand (u8 command, u8* cmdData, u32 block) -{ +static void createEncryptedCommand (u8 command, u8* cmdData, u32 block) { unsigned long iii, jjj; if (command != CARD_CMD_SECURE_READ) { @@ -131,32 +136,142 @@ static void cardDelay (u16 readTimeout) { TIMER_DATA(0) = 0; } +static void switchToTwlBlowfish(sNDSHeaderExt* ndsHeader) { + if (twlBlowfish || ndsHeader->unitCode == 0) return; -int cardInit (tNDSHeader* ndsHeader, u32* chipID) -{ + // Used for dumping the DSi arm9i/7i binaries + + u32 portFlagsKey1, portFlagsSecRead; + int secureBlockNumber; + int i; + u8 cmdData[8] __attribute__ ((aligned)); + GameCode* gameCode; + + // Reset card slot + disableSlot1(); + for(int i = 0; i < 25; i++) { + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + } + enableSlot1(); + for(int i = 0; i < 15; i++) { + while(REG_VCOUNT!=191); + while(REG_VCOUNT==191); + } + + // Dummy command sent after card reset + cardParamCommand (CARD_CMD_DUMMY, 0, CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F), NULL, 0); + + //int iCardDevice = 1; + + // Initialise blowfish encryption for KEY1 commands and decrypting the secure area + gameCode = (GameCode*)ndsHeader->gameCode; + init_keycode (gameCode->key, 1, 8, 1); + + // Port 40001A4h setting for normal reads (command B7) + portFlags = ndsHeader->cardControl13 & ~CARD_BLK_SIZE(7); + // Port 40001A4h setting for KEY1 commands (usually 001808F8h) + portFlagsKey1 = CARD_ACTIVATE | CARD_nRESET | (ndsHeader->cardControl13 & (CARD_WR|CARD_CLK_SLOW)) | ((ndsHeader->cardControlBF & (CARD_CLK_SLOW|CARD_DELAY1(0x1FFF))) + ((ndsHeader->cardControlBF & CARD_DELAY2(0x3F)) >> 16)); + + // Adjust card transfer method depending on the most significant bit of the chip ID + if (!normalChip) { portFlagsKey1 |= CARD_SEC_LARGE; } + + // 3Ciiijjj xkkkkkxx - Activate KEY1 Encryption Mode + initKey1Encryption (cmdData, 1); + cardPolledTransfer((ndsHeader->cardControl13 & (CARD_WR|CARD_nRESET|CARD_CLK_SLOW)) | CARD_ACTIVATE, NULL, 0, cmdData); + + // 4llllmmm nnnkkkkk - Activate KEY2 Encryption Mode + createEncryptedCommand (CARD_CMD_ACTIVATE_SEC, cmdData, 0); + + if (normalChip) { + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); + cardDelay(ndsHeader->readTimeout); + } + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); + + // Set the KEY2 encryption registers + REG_ROMCTRL = 0; + REG_CARD_1B0 = cardSeedBytes[ndsHeader->deviceType & 0x07] | (key1data.nnn << 15) | (key1data.mmm << 27) | 0x6000; + REG_CARD_1B4 = 0x879b9b05; + REG_CARD_1B8 = key1data.mmm >> 5; + REG_CARD_1BA = 0x5c; + REG_ROMCTRL = CARD_nRESET | CARD_SEC_SEED | CARD_SEC_EN | CARD_SEC_DAT; + + // Update the DS card flags to suit KEY2 encryption + portFlagsKey1 |= CARD_SEC_EN | CARD_SEC_DAT; + + // 1lllliii jjjkkkkk - 2nd Get ROM Chip ID / Get KEY2 Stream + createEncryptedCommand (CARD_CMD_SECURE_CHIPID, cmdData, 0); + + if (normalChip) { + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); + cardDelay(ndsHeader->readTimeout); + } + cardPolledTransfer(portFlagsKey1 | CARD_BLK_SIZE(7), NULL, 0, cmdData); + + // 2bbbbiii jjjkkkkk - Get Secure Area Block + portFlagsSecRead = (ndsHeader->cardControlBF & (CARD_CLK_SLOW|CARD_DELAY1(0x1FFF)|CARD_DELAY2(0x3F))) | CARD_ACTIVATE | CARD_nRESET | CARD_SEC_EN | CARD_SEC_DAT; + + int secureAreaOffset = 0; + for (secureBlockNumber = 4; secureBlockNumber < 8; secureBlockNumber++) { + createEncryptedCommand (CARD_CMD_SECURE_READ, cmdData, secureBlockNumber); + + if (normalChip) { + cardPolledTransfer(portFlagsSecRead, NULL, 0, cmdData); + cardDelay(ndsHeader->readTimeout); + for (i = 8; i > 0; i--) { + cardPolledTransfer(portFlagsSecRead | CARD_BLK_SIZE(1), secureArea + secureAreaOffset, 0x200, cmdData); + secureAreaOffset += 0x200/sizeof(u32); + } + } else { + cardPolledTransfer(portFlagsSecRead | CARD_BLK_SIZE(4) | CARD_SEC_LARGE, secureArea + secureAreaOffset, 0x1000, cmdData); + secureAreaOffset += 0x1000/sizeof(u32); + } + } + + // Alllliii jjjkkkkk - Enter Main Data Mode + createEncryptedCommand (CARD_CMD_DATA_MODE, cmdData, 0); + + if (normalChip) { + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); + cardDelay(ndsHeader->readTimeout); + } + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); + + // The 0x800 bytes are modcrypted, so this function isn't ran + //decryptSecureArea (gameCode->key, secureArea, 1); + + twlBlowfish = true; +} + +int cardInit (sNDSHeaderExt* ndsHeader, u32* chipID) { u32 portFlagsKey1, portFlagsSecRead; - bool normalChip; // As defined by GBAtek, normal chip secure area is accessed in blocks of 0x200, other chip in blocks of 0x1000 - u32* secureArea; + normalChip = false; // As defined by GBAtek, normal chip secure area is accessed in blocks of 0x200, other chip in blocks of 0x1000 int secureBlockNumber; int i; u8 cmdData[8] __attribute__ ((aligned)); GameCode* gameCode; // Dummy command sent after card reset - cardParamCommand (CARD_CMD_DUMMY, 0, - CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F), - NULL, 0); + cardParamCommand (CARD_CMD_DUMMY, 0, CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F), NULL, 0); // Read the header - cardParamCommand (CARD_CMD_HEADER_READ, 0, - CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F), - (uint32*)ndsHeader, sizeof(tNDSHeader)); + cardParamCommand (CARD_CMD_HEADER_READ, 0, CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F), (void*)headerData, 0x200/sizeof(u32)); - // Check header CRC - if (ndsHeader->headerCRC16 != swiCRC16(0xFFFF, (void*)ndsHeader, 0x15E)) { - return ERR_HEAD_CRC; + tonccpy(ndsHeader, headerData, 0x200); + + if ((ndsHeader->unitCode != 0) || (ndsHeader->dsi_flags != 0)) { + // Extended header found + cardParamCommand (CARD_CMD_HEADER_READ, 0, CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(4) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F), (void*)headerData, 0x1000/sizeof(u32)); + if (ndsHeader->dsi1[0]==0xFFFFFFFF && ndsHeader->dsi1[1]==0xFFFFFFFF && ndsHeader->dsi1[2]==0xFFFFFFFF && ndsHeader->dsi1[3]==0xFFFFFFFF) { + toncset((u8*)headerData+0x200, 0, 0xE00); // Clear out FFs + } + tonccpy(ndsHeader, headerData, 0x1000); } + // Check header CRC + if (ndsHeader->headerCRC16 != swiCRC16(0xFFFF, (void*)ndsHeader, 0x15E)) { return ERR_HEAD_CRC; } + /* // Check logo CRC if (ndsHeader->logoCRC16 != 0xCF56) { @@ -166,18 +281,15 @@ int cardInit (tNDSHeader* ndsHeader, u32* chipID) // Initialise blowfish encryption for KEY1 commands and decrypting the secure area gameCode = (GameCode*)ndsHeader->gameCode; - init_keycode (gameCode->key, 2, 8); + init_keycode (gameCode->key, 2, 8, 0); // Port 40001A4h setting for normal reads (command B7) portFlags = ndsHeader->cardControl13 & ~CARD_BLK_SIZE(7); // Port 40001A4h setting for KEY1 commands (usually 001808F8h) - portFlagsKey1 = CARD_ACTIVATE | CARD_nRESET | (ndsHeader->cardControl13 & (CARD_WR|CARD_CLK_SLOW)) | - ((ndsHeader->cardControlBF & (CARD_CLK_SLOW|CARD_DELAY1(0x1FFF))) + ((ndsHeader->cardControlBF & CARD_DELAY2(0x3F)) >> 16)); + portFlagsKey1 = CARD_ACTIVATE | CARD_nRESET | (ndsHeader->cardControl13 & (CARD_WR|CARD_CLK_SLOW)) | ((ndsHeader->cardControlBF & (CARD_CLK_SLOW|CARD_DELAY1(0x1FFF))) + ((ndsHeader->cardControlBF & CARD_DELAY2(0x3F)) >> 16)); // 1st Get ROM Chip ID - cardParamCommand (CARD_CMD_HEADER_CHIPID, 0, - (ndsHeader->cardControl13 & (CARD_WR|CARD_nRESET|CARD_CLK_SLOW)) | CARD_ACTIVATE | CARD_BLK_SIZE(7), - chipID, sizeof(u32)); + cardParamCommand (CARD_CMD_HEADER_CHIPID, 0, (ndsHeader->cardControl13 & (CARD_WR|CARD_nRESET|CARD_CLK_SLOW)) | CARD_ACTIVATE | CARD_BLK_SIZE(7), chipID, sizeof(u32)); // Adjust card transfer method depending on the most significant bit of the chip ID normalChip = ((*chipID) & 0x80000000) != 0; // ROM chip ID MSB @@ -186,7 +298,7 @@ int cardInit (tNDSHeader* ndsHeader, u32* chipID) } // 3Ciiijjj xkkkkkxx - Activate KEY1 Encryption Mode - initKey1Encryption (cmdData); + initKey1Encryption (cmdData, 0); cardPolledTransfer((ndsHeader->cardControl13 & (CARD_WR|CARD_nRESET|CARD_CLK_SLOW)) | CARD_ACTIVATE, NULL, 0, cmdData); // 4llllmmm nnnkkkkk - Activate KEY2 Encryption Mode @@ -195,10 +307,8 @@ int cardInit (tNDSHeader* ndsHeader, u32* chipID) if (normalChip) { cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); cardDelay(ndsHeader->readTimeout); - cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); - } else { - cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); } + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); // Set the KEY2 encryption registers REG_ROMCTRL = 0; @@ -217,16 +327,14 @@ int cardInit (tNDSHeader* ndsHeader, u32* chipID) if (normalChip) { cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); cardDelay(ndsHeader->readTimeout); - cardPolledTransfer(portFlagsKey1 | CARD_BLK_SIZE(7), NULL, 0, cmdData); - } else { - cardPolledTransfer(portFlagsKey1 | CARD_BLK_SIZE(7), NULL, 0, cmdData); } + + cardPolledTransfer(portFlagsKey1 | CARD_BLK_SIZE(7), NULL, 0, cmdData); // 2bbbbiii jjjkkkkk - Get Secure Area Block - secureArea = secureAreaData; - portFlagsSecRead = (ndsHeader->cardControlBF & (CARD_CLK_SLOW|CARD_DELAY1(0x1FFF)|CARD_DELAY2(0x3F))) - | CARD_ACTIVATE | CARD_nRESET | CARD_SEC_EN | CARD_SEC_DAT; + portFlagsSecRead = (ndsHeader->cardControlBF & (CARD_CLK_SLOW|CARD_DELAY1(0x1FFF)|CARD_DELAY2(0x3F))) | CARD_ACTIVATE | CARD_nRESET | CARD_SEC_EN | CARD_SEC_DAT; + int secureAreaOffset = 0; for (secureBlockNumber = 4; secureBlockNumber < 8; secureBlockNumber++) { createEncryptedCommand (CARD_CMD_SECURE_READ, cmdData, secureBlockNumber); @@ -234,12 +342,12 @@ int cardInit (tNDSHeader* ndsHeader, u32* chipID) cardPolledTransfer(portFlagsSecRead, NULL, 0, cmdData); cardDelay(ndsHeader->readTimeout); for (i = 8; i > 0; i--) { - cardPolledTransfer(portFlagsSecRead | CARD_BLK_SIZE(1), secureArea, 0x200, cmdData); - secureArea += 0x200/sizeof(u32); + cardPolledTransfer(portFlagsSecRead | CARD_BLK_SIZE(1), secureArea + secureAreaOffset, 0x200, cmdData); + secureAreaOffset += 0x200/sizeof(u32); } } else { - cardPolledTransfer(portFlagsSecRead | CARD_BLK_SIZE(4) | CARD_SEC_LARGE, secureArea, 0x1000, cmdData); - secureArea += 0x1000/sizeof(u32); + cardPolledTransfer(portFlagsSecRead | CARD_BLK_SIZE(4) | CARD_SEC_LARGE, secureArea + secureAreaOffset, 0x1000, cmdData); + secureAreaOffset += 0x1000/sizeof(u32); } } @@ -249,42 +357,50 @@ int cardInit (tNDSHeader* ndsHeader, u32* chipID) if (normalChip) { cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); cardDelay(ndsHeader->readTimeout); - cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); - } else { - cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); - } + } + cardPolledTransfer(portFlagsKey1, NULL, 0, cmdData); - // Now deal with secure area decryption and verification - decryptSecureArea (gameCode->key, secureAreaData); + //CycloDS doesn't like the dsi secure area being decrypted + if((ndsHeader->arm9romOffset != 0x4000) || secureArea[0] || secureArea[1]) { + decryptSecureArea (gameCode->key, secureArea, 0); + } - secureArea = secureAreaData; if (secureArea[0] == 0x72636e65 /*'encr'*/ && secureArea[1] == 0x6a624f79 /*'yObj'*/) { // Secure area exists, so just clear the tag secureArea[0] = 0xe7ffdeff; secureArea[1] = 0xe7ffdeff; } else { // Secure area tag is not there, so destroy the entire secure area - for (i = 0; i < 0x200; i ++) { - *secureArea++ = 0xe7ffdeff; - } + for (i = 0; i < 0x200; i ++) { secureArea[i] = 0xe7ffdeff; } // Disabled error checks on secure area. This was able to boot a DS-Xtreme. May increase flashcart compatiblity drastically. // return normalChip ? ERR_SEC_NORM : ERR_SEC_OTHR; - return normalChip ? ERR_NONE : ERR_NONE; + // return normalChip ? ERR_NONE : ERR_NONE; } return ERR_NONE; } -void cardRead (u32 src, u32* dest, size_t size) -{ +void cardRead (u32 src, u32* dest, size_t size) { + + sNDSHeaderExt* ndsHeader = (sNDSHeaderExt*)headerData; + size_t readSize; + if (src > ndsHeader->romSize) { switchToTwlBlowfish(ndsHeader); } + if (src < CARD_SECURE_AREA_OFFSET) { return; } else if (src < CARD_DATA_OFFSET) { // Read data from secure area readSize = src + size < CARD_DATA_OFFSET ? size : CARD_DATA_OFFSET - src; - memcpy (dest, (u8*)secureAreaData + src - CARD_SECURE_AREA_OFFSET, readSize); + tonccpy (dest, (u8*)secureArea + src - CARD_SECURE_AREA_OFFSET, readSize); + src += readSize; + dest += readSize/sizeof(*dest); + size -= readSize; + } else if ((ndsHeader->unitCode != 0) && (src >= ndsHeader->arm9iromOffset) && (src < ndsHeader->arm9iromOffset+CARD_SECURE_AREA_SIZE)) { + // Read data from secure area + readSize = src + size < (ndsHeader->arm9iromOffset+CARD_SECURE_AREA_SIZE) ? size : (ndsHeader->arm9iromOffset+CARD_SECURE_AREA_SIZE) - src; + tonccpy (dest, (u8*)secureArea + src - ndsHeader->arm9iromOffset, readSize); src += readSize; dest += readSize/sizeof(*dest); size -= readSize; @@ -292,9 +408,7 @@ void cardRead (u32 src, u32* dest, size_t size) while (size > 0) { readSize = size < CARD_DATA_BLOCK_SIZE ? size : CARD_DATA_BLOCK_SIZE; - cardParamCommand (CARD_CMD_DATA_READ, src, - (portFlags &~CARD_BLK_SIZE(7)) | CARD_ACTIVATE | CARD_nRESET | CARD_BLK_SIZE(1), - dest, readSize); + cardParamCommand (CARD_CMD_DATA_READ, src, portFlags | CARD_ACTIVATE | CARD_nRESET | CARD_BLK_SIZE(1), dest, readSize); src += readSize; dest += readSize/sizeof(*dest); size -= readSize; diff --git a/BootLoader/source/read_card.h b/BootLoader/source/read_card.h index 4ca2f39..76a48ed 100755 --- a/BootLoader/source/read_card.h +++ b/BootLoader/source/read_card.h @@ -23,13 +23,15 @@ #include #include +#include "ndsheaderbanner.h" + #define CARD_NDS_HEADER_SIZE (0x200) #define CARD_SECURE_AREA_OFFSET (0x4000) #define CARD_SECURE_AREA_SIZE (0x4000) #define CARD_DATA_OFFSET (0x8000) #define CARD_DATA_BLOCK_SIZE (0x200) -int cardInit (tNDSHeader* ndsHeader, u32* chipID); +int cardInit (sNDSHeaderExt* ndsHeader, u32* chipID); void cardRead (u32 src, u32* dest, size_t size); diff --git a/BootLoader/source/reset.arm7.s b/BootLoader/source/reset.arm7.s deleted file mode 100644 index 344ee8a..0000000 --- a/BootLoader/source/reset.arm7.s +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright 2015 Dave Murphy (WinterMute) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ - .text - .align 4 - - .arm -@--------------------------------------------------------------------------------- - .global arm7_reset - .type arm7_reset STT_FUNC -@--------------------------------------------------------------------------------- -arm7_reset: -@--------------------------------------------------------------------------------- - mrs r0, cpsr @ cpu interrupt disable - orr r0, r0, #0x80 @ (set i flag) - msr cpsr, r0 - - ldr r0, =0x380FFFC @ irq vector - mov r1, #0 - str r1, [r0] - sub r0, r0, #4 @ IRQ1 Check Bits - str r1, [r0] - sub r0, r0, #4 @ IRQ2 Check Bits - str r1, [r0] - - bic r0, r0, #0x7f - - msr cpsr_c, #0xd3 @ svc mode - mov sp, r0 - sub r0, r0, #64 - msr cpsr_c, #0xd2 @ irq mode - mov sp, r0 - sub r0, r0, #512 - msr cpsr_c, #0xdf @ system mode - mov sp, r0 - - mov r12, #0x04000000 - add r12, r12, #0x180 - - @ while (ipcRecvState() != ARM9_RESET); - mov r0, #2 - bl waitsync - @ ipcSendState(ARM7_RESET) - mov r0, #0x200 - strh r0, [r12] - - @ while(ipcRecvState() != ARM9_BOOT); - mov r0, #0 - bl waitsync - @ ipcSendState(ARM7_BOOT) - strh r0, [r12] - - ldr r0,=0x2FFFE34 - - ldr r0,[r0] - bx r0 - - .pool - -@--------------------------------------------------------------------------------- -waitsync: -@--------------------------------------------------------------------------------- - ldrh r1, [r12] - and r1, r1, #0x000f - cmp r0, r1 - bne waitsync - bx lr diff --git a/BootLoader/source/reset.arm9.s b/BootLoader/source/reset.arm9.s deleted file mode 100644 index a0e969d..0000000 --- a/BootLoader/source/reset.arm9.s +++ /dev/null @@ -1,136 +0,0 @@ -/* - Copyright 2006 - 2015 Dave Murphy (WinterMute) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ - -#include - - .text - .align 4 - - .arm - - .arch armv5te - .cpu arm946e-s - -@--------------------------------------------------------------------------------- - .global arm9_reset - .type arm9_reset STT_FUNC -@--------------------------------------------------------------------------------- -arm9_reset: -@--------------------------------------------------------------------------------- - mrs r0, cpsr @ cpu interrupt disable - orr r0, r0, #0x80 @ (set i flag) - msr cpsr, r0 - - @ Switch off MPU - mrc p15, 0, r0, c1, c0, 0 - bic r0, r0, #PROTECT_ENABLE - mcr p15, 0, r0, c1, c0, 0 - - - adr r12, mpu_initial_data - ldmia r12, {r0-r10} - - mcr p15, 0, r0, c2, c0, 0 - mcr p15, 0, r0, c2, c0, 1 - mcr p15, 0, r1, c3, c0, 0 - mcr p15, 0, r2, c5, c0, 2 - mcr p15, 0, r3, c5, c0, 3 - mcr p15, 0, r4, c6, c0, 0 - mcr p15, 0, r5, c6, c1, 0 - mcr p15, 0, r6, c6, c3, 0 - mcr p15, 0, r7, c6, c4, 0 - mcr p15, 0, r8, c6, c6, 0 - mcr p15, 0, r9, c6, c7, 0 - mcr p15, 0, r10, c9, c1, 0 - - mov r0, #0 - mcr p15, 0, r0, c6, c2, 0 @ PU Protection Unit Data/Unified Region 2 - mcr p15, 0, r0, c6, c5, 0 @ PU Protection Unit Data/Unified Region 5 - - mrc p15, 0, r0, c9, c1, 0 @ DTCM - mov r0, r0, lsr #12 @ base - mov r0, r0, lsl #12 @ size - add r0, r0, #0x4000 @ dtcm top - - sub r0, r0, #4 @ irq vector - mov r1, #0 - str r1, [r0] - sub r0, r0, #4 @ IRQ1 Check Bits - str r1, [r0] - - bic r0, r0, #0x7f - - msr cpsr_c, #0xd3 @ svc mode - mov sp, r0 - sub r0, r0, #64 - msr cpsr_c, #0xd2 @ irq mode - mov sp, r0 - sub r0, r0, #4096 - msr cpsr_c, #0xdf @ system mode - mov sp, r0 - - mov r12, #0x04000000 - add r12, r12, #0x180 - - @ ipcSendState(ARM9_RESET) - mov r0, #0x200 - strh r0, [r12] - @ while (ipcRecvState() != ARM7_RESET); - mov r0, #2 - bl waitsync - - @ ipcSendState(ARM9_BOOT) - mov r0, #0 - strh r0, [r12] - @ while (ipcRecvState() != ARM7_BOOT); - bl waitsync - - ldr r10, =0x2FFFE24 - ldr r2, [r10] - - @ Switch MPU to startup default - ldr r0, =0x00012078 - mcr p15, 0, r0, c1, c0, 0 - - bx r2 - - .pool - -@--------------------------------------------------------------------------------- -waitsync: -@--------------------------------------------------------------------------------- - ldrh r1, [r12] - and r1, r1, #0x000f - cmp r0, r1 - bne waitsync - bx lr - -mpu_initial_data: - .word 0x00000042 @ p15,0,c2,c0,0..1,r0 ;PU Cachability Bits for Data/Unified+Instruction Protection Region - .word 0x00000002 @ p15,0,c3,c0,0,r1 ;PU Write-Bufferability Bits for Data Protection Regions - .word 0x15111011 @ p15,0,c5,c0,2,r2 ;PU Extended Access Permission Data/Unified Protection Region - .word 0x05100011 @ p15,0,c5,c0,3,r3 ;PU Extended Access Permission Instruction Protection Region - .word 0x04000033 @ p15,0,c6,c0,0,r4 ;PU Protection Unit Data/Unified Region 0 - .word 0x0200002b @ p15,0,c6,c1,0,r5 ;PU Protection Unit Data/Unified Region 1 4MB - .word 0x08000035 @ p15,0,c6,c3,0,r6 ;PU Protection Unit Data/Unified Region 3 - .word 0x0300001b @ p15,0,c6,c4,0,r7 ;PU Protection Unit Data/Unified Region 4 - .word 0xffff001d @ p15,0,c6,c6,0,r8 ;PU Protection Unit Data/Unified Region 6 - .word 0x027ff017 @ p15,0,c6,c7,0,r9 ;PU Protection Unit Data/Unified Region 7 4KB - .word 0x0300000a @ p15,0,c9,c1,0,r10 ;TCM Data TCM Base and Virtual Size -itcm_reset_code_end: - diff --git a/BootLoader/source/tonccpy.c b/BootLoader/source/tonccpy.c new file mode 100644 index 0000000..5f0816b --- /dev/null +++ b/BootLoader/source/tonccpy.c @@ -0,0 +1,137 @@ +#include +#include "tonccpy.h" +//# tonccpy.c + +//! VRAM-safe cpy. +/*! This version mimics memcpy in functionality, with + the benefit of working for VRAM as well. It is also + slightly faster than the original memcpy, but faster + implementations can be made. + \param dst Destination pointer. + \param src Source pointer. + \param size Fill-length in bytes. + \note The pointers and size need not be word-aligned. +*/ +void tonccpy(void *dst, const void *src, uint size) +{ + if(size==0 || dst==NULL || src==NULL) + return; + + uint count; + u16 *dst16; // hword destination + u8 *src8; // byte source + + // Ideal case: copy by 4x words. Leaves tail for later. + if( ((u32)src|(u32)dst)%4==0 && size>=4) + { + u32 *src32= (u32*)src, *dst32= (u32*)dst; + + count= size/4; + uint tmp= count&3; + count /= 4; + + // Duff's Device, good friend! + switch(tmp) { + do { *dst32++ = *src32++; + case 3: *dst32++ = *src32++; + case 2: *dst32++ = *src32++; + case 1: *dst32++ = *src32++; + case 0: ; } while(count--); + } + + // Check for tail + size &= 3; + if(size == 0) + return; + + src8= (u8*)src32; + dst16= (u16*)dst32; + } + else // Unaligned. + { + uint dstOfs= (u32)dst&1; + src8= (u8*)src; + dst16= (u16*)(dst-dstOfs); + + // Head: 1 byte. + if(dstOfs != 0) + { + *dst16= (*dst16 & 0xFF) | *src8++<<8; + dst16++; + if(--size==0) + return; + } + } + + // Unaligned main: copy by 2x byte. + count= size/2; + while(count--) + { + *dst16++ = src8[0] | src8[1]<<8; + src8 += 2; + } + + // Tail: 1 byte. + if(size&1) + *dst16= (*dst16 &~ 0xFF) | *src8; +} +//# toncset.c + +//! VRAM-safe memset, internal routine. +/*! This version mimics memset in functionality, with + the benefit of working for VRAM as well. It is also + slightly faster than the original memset. + \param dst Destination pointer. + \param fill Word to fill with. + \param size Fill-length in bytes. + \note The \a dst pointer and \a size need not be + word-aligned. In the case of unaligned fills, \a fill + will be masked off to match the situation. +*/ +void __toncset(void *dst, u32 fill, uint size) +{ + if(size==0 || dst==NULL) + return; + + uint left= (u32)dst&3; + u32 *dst32= (u32*)(dst-left); + u32 count, mask; + + // Unaligned head. + if(left != 0) + { + // Adjust for very small stint. + if(left+size<4) + { + mask= BIT_MASK(size*8)<<(left*8); + *dst32= (*dst32 &~ mask) | (fill & mask); + return; + } + + mask= BIT_MASK(left*8); + *dst32= (*dst32 & mask) | (fill&~mask); + dst32++; + size -= 4-left; + } + + // Main stint. + count= size/4; + uint tmp= count&3; + count /= 4; + + switch(tmp) { + do { *dst32++ = fill; + case 3: *dst32++ = fill; + case 2: *dst32++ = fill; + case 1: *dst32++ = fill; + case 0: ; } while(count--); + } + + // Tail + size &= 3; + if(size) + { + mask= BIT_MASK(size*8); + *dst32= (*dst32 &~ mask) | (fill & mask); + } +} \ No newline at end of file diff --git a/BootLoader/source/tonccpy.h b/BootLoader/source/tonccpy.h new file mode 100644 index 0000000..2e86490 --- /dev/null +++ b/BootLoader/source/tonccpy.h @@ -0,0 +1,43 @@ +//# Stuff you may not have yet. + +#ifndef TONCCPY_H +#define TONCCPY_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef unsigned int uint; +#define BIT_MASK(len) ( (1<<(len))-1 ) +static inline u32 quad8(u8 x) { x |= x<<8; return x | x<<16; } + + +//# Declarations and inlines. + +void tonccpy(void *dst, const void *src, uint size); + +void __toncset(void *dst, u32 fill, uint size); +static inline void toncset(void *dst, u8 src, uint size); +static inline void toncset16(void *dst, u16 src, uint size); +static inline void toncset32(void *dst, u32 src, uint size); + + +//! VRAM-safe memset, byte version. Size in bytes. +static inline void toncset(void *dst, u8 src, uint size) +{ __toncset(dst, quad8(src), size); } + +//! VRAM-safe memset, halfword version. Size in hwords. +static inline void toncset16(void *dst, u16 src, uint size) +{ __toncset(dst, src|src<<16, size*2); } + +//! VRAM-safe memset, word version. Size in words. +static inline void toncset32(void *dst, u32 src, uint size) +{ __toncset(dst, src, size*4); } + +#ifdef __cplusplus +} +#endif +#endif diff --git a/NTR_Launcher.ini b/NTR_Launcher.ini index 65a9984..8ee4a48 100644 --- a/NTR_Launcher.ini +++ b/NTR_Launcher.ini @@ -1,3 +1,9 @@ [NTRLAUNCHER] -RESETSLOT1 = 0 +TWLMODE = 0 TWLCLOCK = 0 +TWLVRAM = 0 +TWLEXTRAM = 0 +SCFGUNLOCK = 0 +SOUNDFREQ = 0 +LANGUAGE = -1 +RESETSLOT1 = 0 \ No newline at end of file diff --git a/arm7/source/fifocheck.c b/arm7/source/fifocheck.c deleted file mode 100644 index 412c69a..0000000 --- a/arm7/source/fifocheck.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - NitroHax -- Cheat tool for the Nintendo DS - Copyright (C) 2008 Michael "Chishm" Chisholm - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include - -void fifocheck (void) -{ - if(*((vu32*)0x027FFE24) == (u32)0x027FFE04) - { - REG_SCFG_ROM = 0x703; - - if(fifoCheckValue32(FIFO_USER_01)) { REG_SCFG_CLK = 0x0180; } else { REG_SCFG_CLK = 0x0187; } - - REG_MBK6=0x09403900; - REG_MBK7=0x09803940; - REG_MBK8=0x09C03980; - REG_MBK9=0xFCFFFF0F; - - REG_SCFG_EXT = 0x12A03000; - - irqDisable (IRQ_ALL); - *((vu32*)0x027FFE34) = (u32)0x06000000; - - swiSoftReset(); - } -} - diff --git a/arm7/source/fifocheck.h b/arm7/source/fifocheck.h deleted file mode 100644 index bd32d0f..0000000 --- a/arm7/source/fifocheck.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - NitroHax -- Cheat tool for the Nintendo DS - Copyright (C) 2008 Michael "Chishm" Chisholm - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef FIFOCHECK_H -#define FIFOCHECK_H - - -#ifdef __cplusplus -extern "C" { -#endif - -void fifocheck (void); - -#ifdef __cplusplus -} -#endif - -#endif // FIFOCHECK_H - diff --git a/arm7/source/main.c b/arm7/source/main.c index 81abe68..79e653b 100755 --- a/arm7/source/main.c +++ b/arm7/source/main.c @@ -20,26 +20,45 @@ #include #include -#include "fifocheck.h" +void VcountHandler() { inputGetAndSend(); } +void VblankHandler(void) { } -void VcountHandler() { - inputGetAndSend(); +int PowerOnSlot() { + REG_SCFG_MC = 0x04; // set state=1 + while(REG_SCFG_MC&1); + + REG_SCFG_MC = 0x08; // set state=2 + while(REG_SCFG_MC&1); + + REG_ROMCTRL = 0x20000000; // set ROMCTRL=20000000h + return 0; } -void VblankHandler(void) { +int PowerOffSlot() { + if(REG_SCFG_MC&1) return 1; + + REG_SCFG_MC = 0x0C; // set state=3 + while(REG_SCFG_MC&1); + return 0; } -int main(void) { +int TWL_ResetSlot1() { + PowerOffSlot(); + for (int i = 0; i < 30; i++) { swiWaitForVBlank(); } + PowerOnSlot(); + return 0; +} - irqInit(); - fifoInit(); +int main(void) { // read User Settings from firmware readUserSettings(); + irqInit(); // Start the RTC tracking IRQ initClockIRQ(); - + fifoInit(); + SetYtrigger(80); installSystemFIFO(); @@ -47,14 +66,20 @@ int main(void) { irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); - irqEnable( IRQ_VBLANK | IRQ_VCOUNT ); + irqEnable( IRQ_VBLANK | IRQ_VCOUNT); i2cWriteRegister(0x4A, 0x12, 0x00); // Press power-button for auto-reset i2cWriteRegister(0x4A, 0x70, 0x01); // Bootflag = Warmboot/SkipHealthSafety - while (1) { - fifocheck(); - swiWaitForVBlank(); - } + // Make sure Arm9 had a chance to check slot status + fifoWaitValue32(FIFO_USER_01); + + if(fifoCheckValue32(FIFO_USER_02)) { + if(fifoCheckValue32(FIFO_USER_04)) { TWL_ResetSlot1(); } else { PowerOnSlot(); } + } + + fifoSendValue32(FIFO_USER_03, 1); + + while (1) { swiWaitForVBlank(); } } diff --git a/arm9/music/dsboot.wav b/arm9/music/dsboot.wav deleted file mode 100644 index 0fc94759425e2c34424d893a2b7537c813e08a7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234144 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

SVuV5P2ao8(U>>Uv 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 diff --git a/arm9/music/dsiboot.wav b/arm9/music/dsiboot.wav deleted file mode 100644 index c23579b43fb2027020ccfe4d1ee0e34d6c72660e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266460 zcmYhD1$dN4w6L@8?z`EI8!_BTfFcEom!d(6JEcflw73@w?i6 zC?SR%!;hITZr-@dC=CIjL8Ktqh#W*~L>wX%4Mpt;^f-EgACrt={4bd?nK7LZO%bgS z@VO--8zDg`5pqN%8i{%l@H`1&j2ffxPDTWy!6+|=*N`J8hSTs2e2+!3s09JvvHll& z487qQS_~~F7SRMjM5qyI2#^ilp`12|JcIzDLV%1}2uK6s2c%wg)%_) za5Nl+7nB3vfgDT()C1m~QD+q7gtDzsYeW6unM#Bf0ri6yUY8^aOQ> zXCW=*3o<}?pg+(F)QyS&d7yo`2q^;I0jL+$74!_xh!CJ_kQeF&ZE1_zqB?{yM)?1q z135vSwul4-{0;emKH)o%6J!!2;5jHC^w$glIs`y>Age#>Z_pEb2WjEEBm~F=^#d6| zM^G2AuS5jY0ooxR0qDeF;*eT=#`9U6_XVBZ1=oe&}u7I3CNy`gN-VWS?Qyv9BT zb_->KO~5maz6bIH8KJ$P?IG`a1mp+$0ofYUR7b0$RS3`z^n0)+kO|ryYzE|kdO-P5 z9<(#OgMR|M1zkgXKsiuXNC#zuTu?_y2eLukAYZV9=Ll$P907F!y8xNM|3G^}8qg8w z3i1H|0J1mA6^I5J@&{SrIgkD`It3ZxkqtuqpsShxm*DIYEz*AG8@f3v~fK zg0Ba?!VB~a^#-2><-_h5CU`;RSsf(t{m=T#Y(}IzWGfw2&wGT+l^hyFuH59-uuyH(;Mo z*T(h({|o6s|6n7~PEbx`-)z(Y_)xG_$QQ~3J8blspc{}AfbSr0&=1rLbO|;Eb_sqE z*zr~?A}PoqBIH}IK|FZ5&ZMNlS;8DM|VmM{iGe}%fj z_wXH*4M4uoH^HVrUywJvLz{z)U{{bI=m5TlGN6q>@9;bL6!;$GhCJYTC)@He#EM+DgCD+JgSlnMR`WP#tHUxB_spN;kkzd^l0 z9MxOwE6Z#6s19CtcK>G4% zdGrGUVh*qi@SpHE*a^t>76JN%eBqhK_5^t#?N`JTgb4w1mLXs)g_sg-5T1o{8vP2q zL-~*%`YrTPsBdGtfy`j%U{}x&p-hkiWCNW-o{hSOcnQ+N_h4_JAIPuKz94P@9}9WI zbKuuO5AXu{Ay1G8`T^K7why|4wg7tpokAYame4MsFZdhU z9QqsR1oRAL!r#z;p#ESBARovEb%#8mzk*Jo{*Z5DJOk+mLEJ?^U7+2d-61c?6Xa|3myP}wo`*Ju7sv$pTt|Q|hed})7a@)!HX%U9lZd5= zQwT`+00DIeKeiCj7Xf1xv@6&t$ax8I12G=~{sruGaddGs0WlMC0kIRY4{;m;z6W#) z&w-90W`O#vK!AS0Cg2$;8|F6PJGvmQMXxoqFW3|40OW`KAU1*VWG!M3ViaOpbXtQv zi(?kY%tL@p42lkFs2kYt0)&ttB#e$39djajqQR#^AA@mqe9ZV5CV@$~5Obly$3s5_ z+4>_sMLtDlBfcP@ejtYm(Gk&%(2U?fyheb|CPXGgJ_SDo>wWdU&4_EBYo52xw@#PC z<#_FU?R<#P+O_sJh%L@7&Oz=$?%zGXd-DDHexXn3yW+j#JsUV1xEs0~Iv#U8W-fIu zb%1bykgMP-F32y)ud1%9bchRxCz>akXNk`e(~{DXy2N*h7sZNVx5>B3_i*=cQz@ww zQ^XV*?HcXsXYFU5h0nt0Bl5I)+VSP%%l}1)N=2oszODN9uJm2$#IlKHXAyWUUR!CX zG<3nbV7)E9Ew`<=t@CX2Y~NhpTr(mwBHL)&XzAQ^ZaZ;1@!Qz9u~#%#G}q&<$MKSQ zNj;K#B%et?lYTVgXhyFly_#4uEt%U>wx=i)lnI?xomHu)n4+VktHFR#8l`u6DCh|&?I^v9mx z8fHx*B2XGAZT<=IwfWauWw**k)QqUPp}V1*T|c{?s3mG828m&!aia0D^|5uZXRzl^ z=uT)FZ5nMieK*}CFbT%Sj*VT4=pNrazAa)c;%xfa^rD=ioSrRuwz!7alD;K+0*$oAqWf;s|yG+ppcPC0CKF@KU_AJHlP&E_+q^s`69y zr|Q48e`_ZrE+F>n_v_o6+M7CAJ6S(FK06Y^3E_NFK1s%qF{=1g{F}m?!rzs@D-XvV zj@yv9A@O$l?et%>f6W$UiLzd1zRZlzjn7SNlGtQ_;{L>C%4Nz^qEjLd%|lxpSRA

L$SNq6l*%E9{fOMU+`1Fm6WZT&zv-6NFRjNAs|>3Q zO%dlT=PXm4Q=DymZGABJ+{fC-nk1SevLg60zU-pr3lA9R-&UD^%-VxyuVP|D$<*9^I30G6EroK;qpI(?*nAtqHdG3Jp0qJ*=?)2*&vT|KyRa3!mPRZ&z`RK>1g z*YvCER~4!bRnMrMQJbJm(6*^>Q_n^8LWImAb5CbaXSzS#A0mVZODIbykC=~`w* zD+x-%h~S7|nYYZ_)YjCtt$thmjp`fK6Kf{c9IicF+o!5e)vn52m0(}jYOd8>ti4#< zr>0NMyXtqvmn)Ym!G9d1AES>Vjv~UCtaIz! zr!1!|Wri}t(AuH3$%r&gtN>itcsY>kN8>zNW6G&ROHEaaXykj?^5fK`y_3lwp(s`f9o*-BMw%uxI9z9xQ6{DaH~nH>>}n=EdETz2ZV#BGW8IC~sTK~to~ zrp2~bwpYfB|7y~;>Dr(4Kj|l1CR?^Rwm1sih3@y^_uPFU%tX);Ts=8lAzl!Yg>~b8jx?*+3 z_L}WAw{*93>#_A%iao`?&a=*QCvYbaB}55jq%zWY>Uin|!32Rv>=9qmT++Nqf06!k z#?KjtGY@C3Y_hV+-zk5mbWiM__%Qxqe2zRvzDcl2aFuhFW1t)8?Fj7%ubi)(`^@{y zS4>w-FAOgXHQE~OXhdFJUfqZ457k#|uGXBbJ&UaVaBXo-aZRtfUUi>pKh>t{Qgsus z2^i1Hvr2pt--pnLkS?N&;4yei5uu21ly#JKM{-BSGyG$WV+>}L8GYk^XwdLB$ zwUcW{A^3tEMDt9@20uaVcBK+Lb4Um2;0 zRMeH%l`p7RP%%Y6MNhZTEo!IQdChyxTZae*LV*Ng0`VC682NAJ-%J>bjdG)WSHiA@ z7b!1Nu4Z4&PRvQnk)})2x2A1PTbr^rWp&c(q|C(3M0Pwo{+0Zdd^USF8>iyb>EY?& zi>`|)rzYXE43@NbexV? zTdS>W?Q88#Jxx955VDXgv@*IfT1Tm)aL{YBXtM|nZSmWZwYu64)1RmB zP2HPXom`#VJE?cls)SVuOH@l#kGYSzWz;e%#E{@OFS{?hfAsw5`OE#6dn`5fCI zP9Pp?A8MCXEvxER*{||#`P=gQ756KuYN~2jT9$U9VWA-(&&Lz(iFUKY?0D&X>7;lm z-bMaJeu$IXG21cwN&88YHOZRq6TeS1rW#WT>4fyli0=@13Z6nsrX_bx=$ZgN;~eiC zuNA8mOG#3a)`ixEI=VW#Y-XEzJT@MCgZPT5Gt?Q{)wip^S$nhgRrRZCQWdF6S|hEQ zjL_BUYD@K{`X*Qt3}lKRst`iA(0$T#((^jzbxa&9j-}$O_y)N_-Y%|P+}xzON!4l9 zX-Vlx>8mnUW!yr1O8S&k9akOKTGd+BP25d9f;oZ-bJX$v@%~A+NwyqIj^zvf1^>tV zj~VQjVPF`p)LyAQ1yr7@TvWBFN?0STSyQ{FcB^iy?uhY-@u=;nE!mOmxMjO#>yD^( z)w(|TKlo3EPllh-pV75^Ex%Y^EMKBtqV^^D5?ZFTOu2>Nq;gXIDgKnjX^Yd=B&BL_NS~E4D`PHVZR*<8#FWGo7^ep+1}c__mWW!=TF^d( zKZL*dzxY46Ke#1`8hees+){4YjqS#s>7VJre?x57tEyKOe2&$|Y7HiXX%V&vJBN5< zeq+9ZU%|(_#=9IIhsPGOh2~S{Q$q9*UBnmhf0OsoEUH;ryR>$zajVg1_L)!Nr|`>&?bvn<<{K#Fa6R-r^aWx9 zF+*5GSpV|><*${lm1@u{J0Uv(g%e4AQv0MHM8qKuq#Q_rK5#^KMD|GdNH~i*i`k9Z zjanC}i$HA9$VxEQ?{-A>(3jpN7hqoSy2mVB1HYkb%EqU56FsVP%a zrld_t+nl;N^?J(n6f7Q#cPU(o57H0PmYkNHX~b#7y`jA!PJk0QL==VBSsp zo!)tod66Pg5lO{SHEbyJWIUN9Rua27ZgJcXi9aN+NnexxHSKHK+Jv)7kqCc259PE03SB9_Ri(5jHn<#Ua5j&maO$M`p#{NKZ{qorf5lI5@F`x`R4bk*gTN8^K#oUr$dbr<2dc zoQn}h#E~(9F@Yp+k{6k&?StWi;n(_KA#AS?)rM+2)FHGTv<{s^w^zScKh7}DkY&s= zJ}^8m{AB*gJiSV~kTxI|Y(^VkO>d)$%A|i%}L2MCQAU5pc>EekE#s+W4+>SX!J4CDH)$*Q7o=U7LtLjd| zorIFqlGIv+AWe|AIeByPa?Ns$RcTdT6kHU%XT4`FVlHBCqi&-bNk-Dd@WgPoC)-o$ zsC10M$KbaOw+*xEXVqUtbk}#+AE-Z2FVRc%<8iQY$Y}T(b?G9I7vTA zzgxFkSC2TYKdrxqIEmmJ_=c{Cwx+hGrT|MlGN;%n=5zR* zuk^2Un5$nWTqj%&UJY(?ZE|UB8k@)LF{=?oBhgrDC^ft`zBX<%Z8LpD{9yRO@H=7{ zHVo^5_rPfungwDohQo3}#aJ`VjK9h2Txxs~wg^thW&*p!z zf3Yu!7RDAvI-;e%rT(7op6+4&!}>c2@CE%4JdB53MSg$!4I2eF+H9Cb( zk+Ec~%aY5Io_{8|cyyU#(NePn@4ksQ?%t^>eNL8n*hbV?9w#&B5(DI5f%8T;$ zaQ1K@<}?$`1cr~{yWqOu`rh)rWd*(huQS(~HyJk>6ATH4^Sbj5HeIYQ*0)D&)@{}a z^+J8NA=_ZYj988>$M(15Z^u6OKKBqrelS0HpLCy;!c1Y#6U`HijvXC)BmPD_9*4*6 zOW2n%8qqGkUAzV%Qi)ViX;d07iI+%uQl5wDVM4$CG5BL}zHh!S!JXiqVx3~mFlCrV z8%7&O=|<@oi0k_6`Ynbn1|~wF6=)@OlDb_ryK2B6+`ti*8RX@5JAUCnb@R79tj;EJ#U@Pmk}T>7)6q`mE}q=%KhOzbc2h z&NJ>au8<*QTq0Z|dOXXF{D>Zj@-*FUcROZ%60 zqi&-PZ2cZ~4-=RL<^`q&CKzM5HmO`We$#m z)1A?s(UaJdSQIV_7y1f)a);cp)3Vd@7xov1LT&R*(@ax-eSZCmx)*hY+CuG@`Y-jV z`c(Zf!?6Y(UNc=Y*)cn|72k^YvGuV<91+I{&j-(V!gvB3y(0Vw|AO*@@?q@5*p=#) z>b8k(6R#oGBYsc#J%NmvtD37SLo7!e7akX8bF;ZeDMu+g!aKrqJ##&DC*A3EI2~uL zXJPru`Vf1Fozb1qJ*j(ASC3vW-&~KFWSC^=qwk}CX?SV4X})PbXFX?KXI^K%X}@Xz z!TW>vVd!CqNoUdzvk$Y0VxssT)jz6Sb*{QULLMiNOGLa)c$=^)aaH1Pn%^`qCvGBY zA~JDJ+)8RC^*-@F@j>uGaIJ5x@2vZ*o8e$MX4_`la16(07-tyoYVT^B);C41_E&u- zqOHEI{+;ffuEbDc7>EtTyk@WY4t@uBo89KF)~?oFu3fIuNNMCg<33|JdpNt2U&)^= zoh&`5I;axIiQ_Uf8JYsbL-j*7SHsohBkB}&ir13Y5}8mYyg|P~A4ncZRuj~OhyI8D z&YsSmmd=(=9KEKQrkQGtHOANa*Lv{f5`+ekrO(nsOaSY@hY=&qBhBzyj>xuW+mCsU zd0^e9fLuU^nB@oI55kSIjj~JfOY#n}9by%TbLw;IDovGU83H~dx2uA+G%Z`pj$_6# zA5k7rJP}XipTIwXGGCc*fqQ{l=}utvHq#Q6?2MkijXWKi%^rvcdK@*$ZE3M ztMO`ft9Pq6Xf|kiBIruG64pYq`Pux}%-76%YCZKW@h!1wq-o@rz%PM6U4Oc|JGwiP ztV!0T=B4HwEC=gm>}Kq*>#x)5wR#CA!LFIFnfQbHYLFV7;hW)GSEi9^yoKGu=Go`jhq{Kk-h1DBcSLqXZWC@3${FPhGtbQXRs5?M z$^?BJR3B82iyId=EPh!0Kbn6uHnmNiEzOp`xxDR1eh*)ofR9 zS07OwQN_#RWn0Bt#qas=`FGfN*laqRE+I;YInkWx)ZohZUhlsAoxM zNf!tg2;air!UQkDyTQJ}-pta>G6|c66&s6<5ck45&o>0Bt_l1W=m>>`#=-i*dRW7H zVS8cw!~TbTlVg)35DWw-5GD{T6boe(dldUC?<=oBT+pya{Z9Q(%|UF7+ZH!PJw;7Y zkyI}fFBIVOH}N;|7jqYL1MC3%1nmSZiGTLXNVP0(S)4jSov;m|kJrbCR3X(n#XH3$@g%XE>*h{lO=A^M3MiAKlcSt4 zCwwY!Dqwfp-E2GC{tf$vZ8vT=t}(1Jpdw5VGrcgqFrjIKv8Ar1t{WoW5N}AvlkqHj zmi?ylrqko~c$Ws224GLT548_<5@!+zxk~X3*$vqh48bJboPV$rdrOr}kjy1^mlV~b4<2Qwk|}(TjDKM2($!>e{cNW2=h^x+o5GR!yf$}{UOA!=3mV{tUauQ z?St(tJS{vB*By);j7+3Wr0rzvWT0&WS{r^F{#e;q8T7G)*o4?=nrWJAh?3Zn*cXU4 z@;35HNu{K@pt;~X)_1H}Ml547X)!53oZoQp<*@It4`Rkq&QZ=1TZv6>kz00{|A$|& zU$7#5k=~668A1kF0~I6C(h$yaupGBtw_PLsBmIj)i$Y$am)M8ahc=cymhBWdMT-=R z6iSs+H4O0}_Cc&1F-tW|^%1d5zD%waX+>LwTZIsx!d$u&qZ6ZmSU_AILIhU_r+B7# zmOGa_35cckrS{MGXZ#9w1^dPPi@C^9WLRljX>=oEO|ho$&EKP4Q@weiWue7lv)Gb6 zNuCYi4PhJ6M%2(WG>9LU^Oy4viVup1%7@A?sV=GVGo%a!H2Zoh8tXX$5|iciI_ny;EynO2#=mw%7o8o9=DQ#tY!Kbp{zqG6A5kMRt4 z2FtQ$S^K#9xW;?Od+&wrg7J>(vAYr0tMx{`5!NuW5I2oCjnmE3%@^^DIPSn5d7eDa7{sp7t`M9zDWVop zVXvUQpuM1ts*P$w?1WepTB#<;C&)h`&Z*9+z}Asyii?tq5|W4{DrOcl2ayMnt758R zxa{s+j*ul}X>Dq4(ik7i+othuDQ#KO1mZ*gvMWONxF4Tq$BVm>i7oEn}Jm=oyd>F0T6ePvZx6qW<{0eri8 zyBXFD=OA9{U!qkz6Z-e1zS>Z2$iy-+HLk{6Sz1~4BQAI@c&Jfo6b@evU=3i+=gsFW z5-k#)m7bN3RgP5_Dhd@B5nLr#DMCmUQbn1(O#Zj%Z;^>(;$$(in7e4ZXr+`=%AN3? z@a5p;VADX;z;o|&FLbVMwr;lPmgg3QSz(4fEC%AV?z9eKVu3->VCVlD|24kEUSbTy zV9Q_&!_9CD{X+k?m~Ao3sLQCgShrZvua?M`$YvuBAz*Fsn&O%Q))$u`V4l80utG47 zJB}M>gc+Nuo2j5@IQys%>Vua(mp%9F_w3&z9@rk(7Ficr=UL`i)|%FuW*TQU_-|OZ zJ8wL1tVMur%`wd}JvBcyTW||L%`wd}+CSQVgm{E_f_{SjnfsahxA1Ra0^*$bocM$6 zgUqJ1DKQnMTBKa0T#48v-zDb@`9fHW+QZ(%ZpUcH03TNzDh?I-i~OfN2=^&>H)l8J zB>N=$Hp@0kOLI%}Fw-#821Evyfx#NoY=p&VF+$vDHCl}(%!GZlezk&c+wI-$9UC1R zZA)%Tw$W{LB9F+k@~!*>k^_>7vWc>gJS2aodZ$WPr>ie2FDl>4-^x3PI*8V@*0VaW zJFv$w#xWpf8A%vPSR7g$O7-j)8zb$&zGopw|rd4EK`IlF(7|Q8MiLK1V!ZJYh@{OcLx6?+}lcj+Wk( z-;}RatW^wF4OXEocI6A%3mHqu5+YUcFL5q$lnfv zYrjiq6WVg|TzrdViv|3-AM;~-&3ha6ZQ&dTGArXl1gs^t#9CrW_9T0bFUOY_O^fy? z_9vFp%jtQXJPx!+S6)}%7tt5d9QhnMv|XAiO{G<66+IDMBwZx01g`{`2onw94d6)` zQU=;Oq?8g$2`!^7qi|+xxo^3z%vI)^gJ@@OXBXpQ{FeEa8OGzeh<@gN<|T;lOy8L_ zh+}9SVHvgzo8g$@$aUwsQ$i`Bk1-!(97G2(laa}o#h=B8H33*_X)0?fyDz^lpQDk0 z*-qK|B49rXVg-9f zm>H%SCaR5U>*VU>+U?uzyAZq(gtL7M$P37@jsx?(55f<^Vo9;&mEx7+t?I36jdG3B zs4yzN$iK)(Nk&Qb3HJ#%@iy^xvv#w-qkTtvNq$LgM{Gyz9qt`g`_w*`hvm8KyzK03 z>uiHHInV*v@p=3_KHNOq4DlUL$J2c=d@(FAE-=ot%(P6lPqvr1N?fu2SpR#(>6p_o z6DSiXJDEF~m${d@JU)-VLbO7Jj!w#cSN*QquGp?9Kpc=CkWZ0Lk%G@J=a=*6a_4g2 zG2byK&?nG`5{44$LUo~4{#AZ~N8kZHO|(z654R1sL3slZa7F}Tr|)#%>5A%$>bD!V z8}=i%VcW2UwuQDIT|c_O=cYtcqOi|@gnESPWBQnI&St)NzIdK&o($S*24b~hwc?}v zqkOAkt6~kJL{cI_%hr6ftj1@YSP z+VKt1+|sXhE#dkS(IjcR@o*BUzK{zKhi9CsXiFt|HirOghiko%BZ?vlGaZjamSGP|xgt~d_a4%t@XD{+`t!MF_jLIgcQU#Kh8!Tu~nq)qHi z>;j*_H#Rsncs_DI@|gITD5ME#3@(GaU$kF@T%M$xyqmlgqF7ce`>Ob=@FFfrFG=A{ z+e7|CerI-P_7}z%#s}&L>b>Z_XgC-SPW4aq!`aO;ga`riH>2HXhd%fKdw?A<955_E z6eFw%Skq9O)TZs0?UvsizdK+LZo7ZGzhk&#_-De;1ZV>pQ^p+2AIrZizAVm?W=UbZ zgY{qVnd{{12HOTUw7JwT_KSbz|H}Ww_{0!X#FP?331L=bR-{+7S9EE3X?RIsNg&0W z;!SiXy7#&Exq`N!t%9sC{q zijX3-Bf2As)Ja~*UdTQzI4vj>m5B&qg1DWuowN$kMb<@jTYg(^lp3YrQu3)4mE zqDP!ZoK!|CqXV@A^-|2GhBL*Z!=uAF!JMGgZ}r1kfCw?uG1F0PskR`KH$O8yGeJBh zF-c6TvDH`;a})C`{1uLtx@@p+r}QiRX!s8~!jAAr@<=kQ-?ikm7!vEJBEhy=uR%XG^n`z8By$8^Uf*Cp3b-%y_+Xb5&C zbR|^Ls%U4qXSo4k0Ik0MAY33>Ab~T|X>Y4Yt4IZ;MAhUD>v5TQhqz`#r}!hsk5|tP89Q^e6NuY@ltR zT_s&5fv&#eeaCymf5b;ezlFoa!^KImBv}yx{3z(_hUA81kzkSF4eJf-BmE9}Kr0Ckf+Q4YvXdj#}i+9F5-{J4@5vCEQmxwNi)>v!oG=3T%YaVMh zAa+@ISt&M(t&6*h8`h8DjJ}qtrFLg^XPx1k;lSGETj5*beer$q2H6JL3Hb?mo+3}N zU%p=s@;#P5mgWodg@-tYI2%|SShHxeXagt%D6p3QCh{h-9C0UjCzu_`4lq0n5BTz4 zwqCZA_(>erJMSP0%mwC$hMzlMIuzlC_fcl=qakl(v)(77rFfJo=pboco6ThCPu!kzPlxBX=WpBMl%A zASV-&3Ffdld=McHii1QC(R0*s)N$K(+cpoMhu4^E%(t=I*aPze^DX=q&cv7)*#1@g zDn86Q%nH8zv+uJHVktEJCP1F(C=D~78_%7}o63W@1Z69pDV-^0C>V+-(kD`~kSxsL zW$?PNyRgqP&oa-^&(Zf#_E2UMXA}P*{6WZwBElJAh|#xtw|XIdZ02a@fHGerx+7q| zxfzj!P$IY(7n_C7@&9Z4*9PY}9bSjGTew^JR`gc1DY+@Rl2%DeVWqIHaIbKu@u%^B z6#ppRA>SciiI^*yD;X~yFK&Vk!Vl#Q<-uIxCG92cKgxfUN@69kEvaq8nTSes_bn-$ z6pr{JKAxNBKH)gw7-}7Awc$4WPs9Rj0rs2eH&b7%FQ!AZz+2!ttIoR5xzCBFMV=~G zm1}o!cW@|iC~-3a?k~VRW+P`KXPao7$Sg5Sb|c1@Fesk^wRUv)5G1vz0tYR>9jlT{cZhi7cCbplkv%TCvzt=oF#pY z;No0-l4X*`WB1rcyGOfWJ&GJ5N4k=_l4eq8Quj0VGc0Tin=jxC+DY0;b_;h4Ux{9c zz$dhnx0DBD0a>ZAR5*w?h}VhTi5;OuXaqWeo<+-|{Ym|k+Je%8(ly#O`Z4%12>UwvyXZ+f%_g!rY@*s8{G^;ANoLTkMTEBhCazf&g+BFGo#i_2tX zGFWGgMeG#r6e3k~lQ>Bnw4KN(K)`+nfl8n@qco%JBJ3g*M~Wktf|r8L{LTClkHiD} znF^=E`J4SW`*_RvhW&q`S!k{>RhSA8`RJ_VAC^BXNwy^0_m1x!5a&z}Ob;xKER1X> zY$kjle;{k=TKZP@R<>9m7F>~Bk^CnAO%8k2`z8A&!}!DaWDc2=#!cf!SP@oRM1OjJ z`gF>43i_J7fv|zFJ7#yx$;8Bt;`F^@;IMGV1)V9)XAIIQ~@*a{lfTw?>VfknYZ z!4c6B(axmKqy_W^^dfE%cLaX~|GenD=#2P`__pY_D1?|NoF`l@S}j^DTq_*Q8_RPd z3>*Wel2OU{Nc%{GIP4bb7HJz{8-Ws{gwQcyKV16MI<$_UJ!pqJ4N{BLl3-3S=V5u6 z-{d!a#y(^B@O$_^>pp9(qt*fE$ohEtc&;E|&QKFm6H`blr1@EXRxziTvqP{$uvN5G zv|YMg`c3jp0-u)(mkQy0d;#J&?r&VU_=&bpm?LQ;X$G=^yo#`jfTs8{I}lAnO+%Z! zo4n0j&0ICM8e5({&%O$A3BQD&F`Y4;M=V3kG0!nGtPJZfwqI=Nj&ujjNprq;zjv2} zNYbpeqq5m6*$)dducE?h!@5SPxDUmV15VdLM$GOx0bV()0*9yoy*8& zNN5t;Dat9z&%~dJiP6O9_R#jwW#45V_|8G-uGt#L8pmAQT-zLc4&KY$%RCAJXM(1f zrkJ{!yP07=*u~MsF&{C@JsB53MGfc_1aP}d082pxzGq79-sXpiFu z1X>oBj1rC#-s0avr{2%-tz0Yj1p5RV&Vzqud}jPg`ISN>5DC7ZFZj*(%{SFM)tl;0 zbw77LcP_9kupKlXG(&*0+qm1f0o#CWv~0BG+H!5Z5pedlr=zC>&O$u)JoZ4}gFB>` zNS8<$9iyLPont{CyNF;4nZli-ouZ|Jr2>YCA?hvcEoAfA{I{I9oM8whOUZi0c*W>U z?@T{JIYOxY8djZ~OVg1_F%-^%aJ>&<(?f5AuFLV}UPk-}Mm zS%NA=CL+iUa&I6WavpL%vOcnIGj21^(azD5Dan-Qgy#fum>ez&6b0a1b&fm7{mK5x z4r_&f;eX*$v$SD+VOSWJ6zl)+#`4AjaYU{&*E!WS)wRXH#Si!PUQ=FEdNF!23Ymq> zS=?D%A$q|&LQBM5!Ck>O&Nt2=_8@jwPFKzsM0dnr?7!HHnTweP2%Lt~&^9q)9dRA8 zicm$E6rL2`}|Ha zH-lTrtYo6&XY`Gfjg;ra=O~hzO}r6vBL?n^7DNgng@MArQTI{zZ2N5cEXOPd)lRjq z!`Gn^ZwUV0{NB75+l&2(&Le`|mt*DFWON@U*_LeE?%eLQcr9M=2Rn#6h-LILdIwGi z&O*ULL3>eq5!gE1nShCG7hxBn2cZ#ZM0@#r`5vB!ca(FK182!PAiB}J(S2ke8SbwB z8~8T>W6T%N7Z1fpk$z=PEaQR--M0>3OI;9{675c-0j>uh#FQ6OHP;5 zpHrVx>nZh=3}OaxWz5Q$GvPDg2Z09xg-_w@?Ck7ZZCh>2v*uY>T2@->taaA)w)M7v zC181sm}8w|tw1!lHMhZ-H^@K8e6Gb|sSfR54KNKb z!CB4;_6c^Pi|D%Rz3VLq7lhXk*AQXd=OFta+lYYqmbA~UvFS-h2g;9WjbEi3I&l??cbguEP@ooxl3fB|siQ|~#m;^3? zOXL&zIl>&_9)wry70*D3BqGTs(I!#8AYV|zFX6+P#5hhI=OybUOUjfoXV7QRUr=9A z;r}R*hNPjcfv$l}Z>BfTo#*!0JPq**a>W)nGxZU{MocwNHN!ogLQ|n>AOh|&bg_4_ zqvbx&o6wuk62cO~6Ur0HR_0dbRqj>p0{#O2I>9;t+?P-Y6apgR5(3V!z&ihW#8dWD zHr)Fq@CdvctQ)M8jFXINay1$5baTVp@Ug(Lzyz6O_>WoC%=(ky8fn4_ZW9gbH1R{oix znIUV~8oornM1IA5#e}mOo7tP$uqNIR&xxhtexiP&H^MhUw9L(W$bQJq;pT9&cv(Cj z*T-$eYsJG@7%PvSNAFMWPlh=f+-X+@RY5r4`@#FcyUw-F)!o_M+0N0A?EJO?aS@R@5pb4c+GjuspM7i61WN64eSleZtQOC zIh;8SzUmn580`i51(_e^M{`5Dp#^~jfgb)I{!(A5Z@PE7_k`z!C)=Ox|H=E4cfVu5 zqno{(y#ifUAArs(JvTfz;CftNsjbwG(Tzc;z?aM^dDb_%r)wT?84G&`Pg zJOl2u!=COA?hbB%7NCI-gLBq!-+F7^);eM}u^J7JUz#IKZ%l8{HP07?uL@rkJTG{D z>Di@ct)91f{^{ALXMJAvdG-5$zyEjb+qG|h>i*QVb+>gxyj8+1VHPM0luweLB<;`I zpG9j;YrQdVV;->^vD@eGK7ZG@TinH2sK0-~fCOC~Uje@S2^XH|_OS_SGBX4i-y}jMT z-NU~Wd?^@!*fDy?=-mao3$Bg5Ha2Bw%FxlhM)xA;lk;GE+N5;q){68x<**Dp6?sZnvSxu1{bu9h9^!tv3I}Uy} zvcRprQTlpUiu|v zOUh1tIQ8MnlP^yc_Z0Usu4G*K?d)%7&meq9eMhmA*vUy}CY{N=lzD0Qjomj~cU*Uh z-W0tNRthVZVoNdDtLw+;$9Teh!bMv_(#qV*+;N@9bzabSL0|OWIt=bq(5XN^Rz7z7 zxb5SP|9t#s-f-Su`s|9TqlS*whwpi(koG$-7LtOsaR)yP%Jyl&6%B zeKz)4;r+t<&2Kipx%B+f^Kob6&azLjPklS_?F8i<<=pMdw=Z|S-t~IZdrj|+dNS%s z{`>s*A1Xdnz+JIx#A`%2yR|QKUnbh#Z_5M_qu%V8v^1kJnWSeB0C7LB>#%9K{5?BeFy% zaN>62c7UY_8{Is*`Cj0?z|TIPeWGomZ7k>(^jusn&P>Bh1K#hUzvRitlaWKBLn0NH z3M->Lqx@LGu>y}wk4$1JG1V^4F0Lx3Dn<;n7l@KfNd{Mv9E*I5{IeBjEABPkYgFk{ z>5`a`n1Gz2SGuoso2{Fz-8|epcCOvI_SB|Rn@(;&xqZ*>J-fs9hV3=nX}Hrq)IN0e zhSeL|eA;|8T{K+^ED9{{8s0U0qWMG<`eyWo^@brc0(y(h>&)w(l|3uFP<)~IO~#uH zOe!XIZPMB#Oe`ig=3C6S@3G%wJL5a!ol>1rU*)~Z>n!XnEMu3kzw~_R`QO<8#>}P6 zr5@-!&^byxO02Z4w0-FD&;uY8d<2^Wo4mul!-FD%BICDIzW{v? zeUC-UMavpo4Gyi2R);g-uotooc=>~bLBdt6RV;ClxF{$yDAPU3J!wzep18(ujo)Uz z&U{slR*nvi362Sm3y(8PH%m9pG0u5g^0oxe!E@Nn?B=BYq<-Q&aejx&4i#TRU&BGm zLCXQ}0qCd576h3&mjhW27ZS<4txBt`C*f2oM`+R z{TU5wIKeW(G9l9;(^hR(ZT4Jy?&iwPm0h`Ax$twko_IYGT>E2>MjwrS5c43WC$=Z{ z(f3E+za@Q3D$Xp<+)}=!d`I<;Y5_;UfgZNZ#mq%8qM>vTbq^K92x6RdJnQ(x_lYmC z&Tja<@%Kh(mbck%v;F$E>)RfLJqXJV&JJGmUG&Xz&T_tHam@l82eEBxZEEnW&(Xwb+ zlO>ZSj~gF1&UDUnmW`H;A_1u3w&rb3Gm067VneZc@ABTo%+Jj4PSBkoP{s}CMerhi z?D(<6Y?s-t6WdN~yRzlV7Q$M>+BHsVoFc3utR9gck&BQ;$RmnJ6ye#uYNTqUzrDX* zmLbm@HQd`1PM zVx)Pb*}2EL=fTp0rBeM;eegA)?6BEk11#s>=K{|KMutU(CG1StN!>%;vwH99y>mO~ zcA|hfLpwu{1RMzn_X+p;;PAl#TocS9&=KhWKpz+OYmz3CCPKPHx(!_ZiY zDgXv2XEI?j!3C%*zAJt@b~;w`yXN`!d-HuJW}zaIaBtYlLa zQUP7%Q7yL}*RAZ&l&{y?2II%@z5 z#`&PxK{H9LB=$V&JPMvMpuaC?CTAw3H>7vIalX;H%DL)F;gv%3pXNX1)8x}m#+{5S ziY|(N8}l}1P4t>*utdhkXU1n<&bgc;S0PssQx{Vg-x1%zo?uVhk-Q@b=iexF3cb_0 z(;2jU{Pu6!zbR@<)RvlUHQOS0M(%_^kIV*{4Qm6|1{ix8dr=%Ij_OwGR<9_pD6q)^ z`zpp0#uK%`x2_~q5<*zlrK(F+on@V6lq^aX{EnTAKNqhSqZZ@v&EeZ#Am?c3XhEzX z_DcGd^njdz9Q9iD+SH!Zp0l8a1@AiBbhqh34pFB~r_C4lFYeZBt=EE4j4ii;io%M* zrXr>y{tf##tSzuDaL{Ma2VUg2(YDc?FiseFULBAgkls4Gb#~9do&n1a%MQtU$@&}2 z8%%m0JrA^_l2^s8iX+96Vvj{1i~b6f4RrS#P~6?P!Ck+q+n8TkZ+K0 zs7I)Wz(!zWZE9`054#V0O5>DSnLw$@ zsr`xliPf>yvEK3C@fVXWCXJ+yq*8OJIbqdd)f?+K)?>Oc-OqkK`(+AdKQ-hu=peK{dNcK4tg2#G6b|RB3_2Q49nb{xp`~w)?kc3#{a#?dyhSidmPD@ zWJ~y+h5QMDv_Klx&l*M=MsBphnY5>HV(EAw!iFi z*{3c5D6}qgeB1c8@SQ*r;SndpPKGIMQQBf0XdKw!)!+qx*K7)#0=*+bWubDgM6g8A zY|!lE!N-Gd1#bm5Y#X*`sb{JEPy3%sDN8B93iAE&x5wWOMIVYre?fow@B4q>L$gD( z@rC%prkbXj!Ir_6!+nSQ<`?D{vgNboDY_Kh1V#d*-?`t}e6{)Nje#2j{Wkh-%-fQ; zr7gTId?Iur6dVUOdav_dw`J{?wV__2UN#Ok4&X>)xky+fzeklK)=>Q|`di93m2a9_ zKee9e%kDxEY#=uDi@|8>3F5O3x*c?Tzvlg#fS`b&pP@fP!?uQP%?QZ|L2X2BJhS%9+A^0i7nTFdq1UX} z>@fZ?J^`741Xc^>b<*pkQPZetFdE&{C}4x=pv-{G0K7lmU)M+1r`V;~<-OH=D?ANP3(*VF1LNHav_G^z zTPLNtCz$FwH=M?8irb?#1NqCb$kEh39Ot_c;EJTUmznU?W zJ(L|#6j0>OapzPCssu*|jt&e>4Nc`E@)1}qtX2WG0BdApWCQGQZeG4#zPtclfcyse z4M~AXfvbX61)U2x7jSv)<+VBPIqqOA*L;of8si(N8z^ZtX|*ERBH3f}$L6QTrp7=^ zw(m9nH9x5;scK!tx(a$0J?m-e)6{1P&k`VlV}0WKMBjAZ^i3I?GJu^bFRd!A3XHtg z@9EmpwQh9X=*yLtE9X?tseY=!t;a|35lIV43lAqAPO!RJ-PS^Dp(V$X zlUkWt*-^3F+X8%ZbYY$KSFA&I0GK_^>!>CTZq? z^Z{u&7nE<9ZwRc7Cb>4bHY^vGOP^1l&sgAC;1Qr4pj@DtfSG{1YwxZ#bT@Q2w>7tw zrc2YW5U&vF`gDC6VD?s(R+WzV9rGL3^KSOs>;dELEh<$iRo@D~6;9?(<~~e&nC74C zpS(YQfBf8!xgWbzcc-4oKa+1;VOt@`mE#Iqg{|?u@x7O4FV7y3IUut~bC2delYJ(! zt72Ed_dLii$Zu!B&Vca1@W8?ig&VBbTdyx)Q@$q3E6VHis?)2)W@57s#vhEok-w3R z^o;aiEvZ+oR}S((eh>d1hW=uJvTNGJ*~FPFohkGpjeNmr710vn*Mb^G@?l*S)TL?GD@> z2+wyIpfaG8fRuoXz88JvJmfsqJFIuuX1UFhOW+bvnkdaY**sa>W!q)Q0f9Yr&LC${ zvQ@Gblu3B-ozf`QD9+8!&EAu;C&eh)D0xr(p7^)PZpYU}jK>Tef)3%Yk4>pw3D#6azeT^__r33{5LO8L>ig<}wV63pG*#rE<)3vj z?PS`^jF%Y=i4BQe30(;f5+5YGrMjiA%2}1;TIgCRRV!6H+C194Yhc&FHHm8yG*z1F zg8qU&&6sA~X5D6ubV0hn5Q^M&x$Ejf>O;~trENMCa43N8Pxm+UH1veVkNvj$ZNcb0 z%^&NJEz~H~*e$(V+Gf^f)_K@@_^#-#2#l;YbJ<+BV~JzQ^X%u@7g8^zPQ*{drzNB% z09-)Q*~GJnN3xD&?a$wz4{#y1iA{-3nj%e+^r-ZxU`8+_k`>9`)V`_xg!qIwV>x5# z=j`YF(C?w&u>Y{XC`c5v60i~w9SF28dfgSTD_+35;&PaNn9iYcs5cF78bbf5GI-AX zIrB#_DVT)b?8}170-su++R&=ds?$ZMixhGda*^rC^r)1m6!lc~R97Hw1~((BAgUms zI-uH-@5q1A`=a*%VD+7pIw=Lu)&bN2Dwc+&fvdCmQMaRR7%z-h+}gOcmx3+@m98&c zZx?762#$7ZOIMe!e&X`PCB`PkX2E#D7>mQ=;C%5Bl_M%}p3!;Ec@ECLpXoT$0k-nG z!pg$R%%aR9a2?G6$La*dB*i3vqe!Yuu1p5@`wUo!MOC6Ijp~i+ZF_8cvS+eq9!frx zgtfXk^c*_WB-G@T%_$o{Pd`tz584Ny$O5<y}L`;B_y-S?8WlM@`j>@B33plyCJo)w`;D zRri(RE5#2>AC}U8rTO~+4J*W(!C^y1c!usKv$El zCW$k|8H+`WMZ#)fb!by)6WpI*|EWZ}MEZ%=6Rk_QOE_gyWmB>P*&*ID-ZON4==$2A z+MrVZQvZ$XfYxkWbISXaw}GpHtH?%Vvzoq|?o0M1n;=b)gK~p%kezBfZ95IU>6hCt zx6>QxjsF6js5(*gtmIkAdJ86QMKe#pku<>~TXSH7+^Dl;mJ&56y)NzF-ZO>Rv_ zCLxoKCm&Ca%!$moSa7i*y(+z`j$g-zjH8odC&yf-U8YNvOO&N`q;)8G3ciqDNT0W! zw>I@M^&2Z4uMQdd&%!Ls-3i?Zux$28wMe!2bNo5mi?(F*3V4F473C2miI01mmV)Y(p=MA!4l^< zWz|H;Xo#~x{9NcPgwb-5S&d*`yFk1^-3q^UN zJfm!*Y(csp9oUjnKW2W+#O7fCzE1_b0^Um7N?S^QO8@Zm@HF)Ed{zId{v7`t?_lC! zLb0dV!=EV$2b0(GUDfQ>?7b|!EQ*bbjR8sr3ov|opHx1n zj7X12TS3iR&3_sBGLkAz72g-!7l6?YR!B)m$+^69d8^V_rJu<-1Cb>ehFOMLV0+G8 zDOo82t(hw6dg=O??JwIMhaHE{NuQJcg#3hb#kt}h(H_yB+dQ|abgp#vUG2NN9w^T{ z&l|fMyBgM^u6bSaN^nYW!dv6573d1|>*VX?(}t%FGc+?aVeR$e{Ka`Vqx-w_cjwLK zo6XyJ+jtL{5140xQu9*tvNN+Y3(^YG0+IrfzNUXoZ_H@Sc$5Do|9ScI@)CXt|54AQ zp5s%;ryzUUR>@W=NS93mg3RDl-c* z3nYF@`~;=cba?J`PIFGXlYS?Cf7bpidI7zFTf!|-;wo`R1*3w0`~U5KF!x}NE6J5y zgIt4rPkB#?GmA4@v|h9ZWfJE`*GAW`USGYeJgq#LPE4n_u5Vpk9bFy2*nF|M#<<3q zr_NKYvDVm^dN1|BU#SGMB_Q(_dMd=7;?9|dnFga;qgqY{r{YuIr@WNRl+4<++B7gK zlzcnwcG~9L&ADp}))rXRSk-`QPviNH^Bv?V@>ITTzAW@ZcWZZRL*ASkO^pWM-1pX{`6>A+_1X2=i4}f(Fv<($mtj!Mnk`-Lu^@-z(qi2T+iEkh_ng zkK=vo`_>m27Z^>(O~yJz9U`#Bqftl{5@2zaVg2sX_@!}&L5D$rgJ?U@aG;^BrmY69 zMc6`c~s0&^0lk9s|@N4>aMn3ZBrgn9_n7`UV#2N$h_o} z_#_901H;b2&f$*J9j8%`QIEskhrQc@07_%^c8~2I0Hx@Jv%}eOZMZho=GEpQ)DUV3 zrUc`RbVdfN1gpG|dm#sF@yuV$Uz>V2^@^HB&3;@zu4jd3MOc1VK0pNKJji^IS&~+g zb~yWRwsxL&UO;g`aRM)acewpnpK+Bn$wz-TasI{s&Z9j z6TgWMd585w^+OHI4a-ZaORA8cG)@>N{6qVP2KSh)PFtNMoh6;4+@jn*yMJ~ca2Rkn zXLrsHY?GFt6lZqQ=%msANdF^2wkS)7rQ@&QuK*eC@O*b=;L5_A?&nLE(c!w=%b~``r872i*_4;at^|>W8f za>Db&^Iw#{D1BJ=uq>t`rea^?zQ)eB&NeH+&5D_h`OCeL*OAw`kH3#MGBz^4ZFSqq z%*o8@6A;^l?Gg+m=_Kj21L!}S|7wvP$Fh%QdEfz9?wo+10YB4#_(lApYh^&3YaICQ5xa@q z@8{mn{g(SJSD;>?o{P#weIk7#m6OZKHVhjE!cT@LCk4cYruJ2r7KQG)a+-{fkF6%tYJj*w< zH#AUQqbwRO8p89z5w#3_x>wm13>B@9TvLyME(Iq2L-XfOimgz#D zM4oh>bn;yC9Gp*T>}%`;t>iW^PTye8GH3Ob^_5*Nyj)1gCFGvWI+<1Rv*M>jzC^xb zsbeWMY^niQJU zl55Gj1YH8s0BPW(>7%JBqbbAx&HoMW4EMV3b+MXR%_rF>*`Os*6IC8n{-xkcfkTc% z&SLgrHuER*=bOAYd3!7NR!mn;S6c8ac#!RRdEoK@ocWZMla+&WuWU3M?M`*4LdLNV zVCXaLnf7d3w(ZANA6I1oU3a+daNp*>4cMBk6d8()YbMuBEC?0^J)|B|T3uSb4bg_+ zukcrP%!th4C`dgSoP;rpuZ ztB^KGn_JemtWVKT(ZOF!1*0FtHcT5vs3+7TsuR_3A#NdHt& zG3zLGlu~*r9rmIOEetJMY+FF}V!!QS`@{C|j@Jle1s*wbIrA9P7}HDCOH^2IIf6Wb zOjAlz0{CF*u7$1z+9Yifa-8;w_lc#Nq?)2@qH82eBulR3U&(LGZOqjJMmYFqUWuccp0N6tphLWYb( zyF>fN#*K|k7L%o0p<4k%I*9qi{5wFwg~5d{%3hT1t=U_1yY6tkGzk(FO^>^FO*&= z{a*0B;Bn659Jq$UdR0SNL)jhn9rje?RHOBP^#Em-GK=_w_yfJ4H+667D&drH0KH}O z&g`Ap5%VMF{dWC!`+!P-fW6J;fb{`ucPn?R5A+XoBk+LI0v3E+D266OlcYjY@kV$f zpeH0^CSt~>&!*3y*`V2x=g2DsQmRs_g8PY1sZQz3+?Tm^d3AZ`i_aHJR!CNyVx3~4 z1!zHKcV##9zeA5MWIv8;jcY;99EnUK&l$}b4blhcU^Ku2TuH3*Z1QZzt;Vh3xeg#M zEN{?n(4A?{v?Njz=|Aj$SWr6AeWmtF%}l{eA$Ku%aqQRFua3TszWMg~_D#*3ntixF zTwuXu!o9blprHUqe)v&*Os{K^E`>6Zq>6OzfH{@=}4X6*O zLtY9PUm!XfI~oh<0{R1s2Nt*Kx9Mi_&NnSKExuEA zr|MDtqx#z&w>!LtyoW#=d*;L3hdG2aLi#aaq}l1%>3}ORDa$0wB*`qv42)zmURb`c zgr83$kiLz+jVHsCaoy~?S%YzdaV#;Gh$f&3d6+y*s&1-op?abE8N?X`JWIhjAio~J z9%d`E)u7&>{$usWYM*kSa=RkCB7myPgYP>$hr(W|L%l=&JHb1_qpn9?&=Yxj@${mJ zs)_1;^nSD>$&s|pc$+c&c@i0kj89gdtbA>KZJz@L+XdU*vAtu9v%%STn0uHXHal$g z!03U|FkzUm7O*Po0YmJe@~IIt@>e}4D{kDD=I4{XeMad8QK{tk`zfiW1g|J zg|r2HpQ~)DY`)umw@tK3wAp97&o;y=#Ogi$J>7%mL1R!Dlpn+ ~Y_24K)pk(!a3 zb8>TXWs+r*$&<;GDt#(_yE=Duf-%@;6OIYzNcE9wy%N2WJ%xJ;Wea2r2J!~-Hk5BD z-@)3!5;h1M{5$bC7nB4p0eDkQg4G49 zaGP+ONV`Zofvvz+WF@j%wpg|}PCHJMqsUPpV>C%GNspt&(Smz%kW7$F&2r6h=UnF; zmgSap)^*l1Rx?&F z&0m`5nC6(m{c#FAh4n&vp`o8FKrKMcTgF>v)8eK@

r$d@y|QPV1dkCYQU;yp1++_)~ZXTFCFv$ZNCJmEd22Q+w zygvNy`pWytPc2R@z8QZr4w+l!;&O3Rb5!#;?l-QeLR7&k;?vLUh z#rP_G6}_5X4GmCP?OE+0j$`29(!nKAT9<>o*q2TE9A_A*BJX&=(I#oOZHnt(CJ7zdjMo1QQ`VWtH1fc}6!2?Rg4Y>RA*3EBkh0ObJX0`USd z1D%0>ruR&*PP0xEE02}`vh-yMdWIlZ_*UnwzxhNrc{h3Z8hp)M$y~{$yi0lbVtn!T z^6llHsy|i3^JZR4UQ20rX}8WVonKF8pUj5Ig~_Gsr0aY|eMOzep2vDnJSes%wkE(D zXlh|@VGhb_mQ7YoR?n=TSyx+DTY?dBx*5%kc7u9@iXx#%arij=YSd~JoTs%{wpWHd z8P7S-xy$31$9X-xp8KNvB6dBy{!;m+a`PhdB3Q2;D;O)#DA6dXtEj6Otr@L>Sx*rI z5d$wKUrerBS+}xVZnvCRS*+}=>#X|%^8&MrvWs%v?po6cx7;6dSbc>()hr5T9MoJ?kH6%5@%YB!NlZcam z9&*UVgWQOAVY{%hwz4+2GPm+<>Df}v0?mRxpsJ#(BCk@f(t_%O>IeJ>{P&{wqSW5h z-r2F)v2Ban7D0JY+EB$%g|0)_L19pstCXu0k}=8nt?64+7c&>LF`y{(DDxIZ3xiAN z(jnALWF#`0Bg_#L@CtaC7jj(dxYiBj8_JbZl~RHQ!9p&`blTpty(h9cviT_QC@+8+ zz$`B*FOdgQ1bWPT%+zP;vvS$FY>ftu255?W+x@oN3~*=)<_qSNLEhXAl^ZH0Iwd;W z4YnI3;1lq-DYq%0J!2AQ8fS`RAQ{T2t1Z}M;Qy~W;Q*qeY}l`zRLNqJRyRe+Myyp6hz`VaFTCI~Q><&EWy^-c9nBk7TJ z7lsQ1w5-i(3>uis3u4?eyJrSoPvf7|pVSai2nq5uQQ(0r1L)P{N^_+%e`o%lADkcD z*}k(qzA?VBxu&@W;6E$!i}Q=qiqeWUmuxP%Q+B6}$R%%2diUjuuA)$0oBov^%t; z)T7jghCC2~sz4Rqi&G3!3^to{4c22;kynw^FliVp3X3{!aNJ;x_8M)- z_llK^l}lboUf3|ZVK#6eaNxG!wqRfVzItDlFYE6tTWL(`?vmXl_e<}W+OTX`d-;3$ zPg|e1uIpacZ9HN;5;q+;o$x2&5A5%SYJ_U^q5IHQSSzd@*^Ug)ofWhSn!lO9*(uXg zrV(ZlW=3=)I)}!g#TdmH^-y{!S8-Qy>#^&xI{G^L0OzgoN9B*otmLfZm&q@aX?~-0`s(n?5*oWA$jj@f3EsHHq{Z9R` zHv#i^YGrC=j;S0|F+>_7A%hY`M&Yzc+N2Ol2<0mEDs`LLHZy>rr8k>3n~{Oysqxfs zN;t)n=t=xw_`&eI?swf(tyHZB#Rf%Kk033Q76HO=3}#l03&(|U-z%ytsytSHtUS0h zxb#HXi86p-tsG_!Ge59Cuy!@=YO?9F>4NiBCgUdKkiD`ZxgrVYmR$iW;)(tfeORLh zv5rI@g-3}oi7`27deHPI{U?17V-KT>UPXs}$yTFQBY-sqD`y%pACr#>(GAf>0yd4c zytVuRi31WK-f9Z+ybA;cf^)ocJVX_u3icT$$|lO3ff!5%^HJ@i+Hih2|4GY}mhPVJ z9_TfYnvt3@oj0Ag`D63vo$@Ail-D#huVUp}z{S2Y&*N-93qW5>-=GQ^2|~G}JNF0q?w^ zoXm31!VX;$}`S0W&^<-Jb(-`eF~ILOQ*p+5FN4(`3vz25%RSmmo-#7 zRC}+|UM0v*fb03D(M_YO9jYB*o8k*<1T`<2FPU%#on6c>PAE+%%_+|**Jf+8cQx*6 zd?b1#+BmRrAZsFPLTy290eWYI3PJ^64POn&FRa2<;b8q4t_f}6+&ODDYt{keNAshB zkxdiWD{VGvHqxeQQ=KW!6wvA=?Z)oLzSe)OAEFwfD)mR|PxWl|tmc^JSaWxCH$sFE z74QrA!dhW%Y*lQPNx4Zm0jQv|pwhn9zSfWD$CGK5X@z|f(ApdESn^nE0(l0|7Y7;C zeR_R*Pcct1C<2P0MpdK!H2rD%obj9y4s^!sjM;XR?I!C@*PD(QjTjYD3Mnv9P6wld z$pWlh=y@wuD^-Ji<9d+qr8cKF7u*}%8!3ns%y4J8$?W96wW<8d{K`q@BvS<_uO_c% zxOTV}-HdJqSlO-k?It#6-qp1TuGGmfsl64bx6EMr-Qv0R$ z1N;O0gt~;fyPUh6b(QNXZ&%!|V3)E>cQJP{uh(3!+0WU}S<|$pDWWZ+4YJAEqwLWu zzpwm;+?z0!FqNBtX#;scf!IJSo`5GX$xJdlp8z}^4UCSObQyOU3rq#36VwT+fsug` zJRdy7Kg6>PSO##8zFMVP97B>?^55fmSZg+IUhODpA%UbS=n0NTE44d zR|Th~gn{Bf@qF)m@1c=HBan^AS>`NzD0nE$s?VwmkOCwO{sHkH zL@t?2hIfY`Y7ljav_wKs5R_zUGWD|YWf!~r^hJAi9NwW7${WbJUpa7BMf ze@W6bY1*gPr}skZg;wWA=SDcI-&NUF3E%Zi6`Lxos;#OcxshB@>f@`nskVU;tKO4< zVf%XK^~}A+dyC+oLj0rjkJ53?^v?a-sbO3(<53q7*$kJS`zFNIYzDvGzv2+pED_8fd?%68ZDnc|Nn!a$q zaK~!LY6mL^D`l!=s>m!dtBPC2-O#k5$zAL&9_StD%^ArVc>*%nAo~U~PAAnT)$NdW z$VB}_eHw;_`9b(W7yyF#M8HNsnW9cnzfitVV4m7R%0UXup5s!u6qo~-qL-ovxg0Pr zQhG^x383Q_AS2>A$eLW=xxVwE;Gy6m=OQPkDyIt0lu)WDRoH55HS7^H>KJuJ%|*>% zltr93oHq!*M}9ub0?M{0W36qsecnZ>bdUq#C6f$&zKso_J6E4a^P9 zCgdjMBc(@5(NfV;Ve?`0uEVawoBKBR9S|K5-EO+wB*T;8xmUVZo~$@o!Kh+XLI0cq z$AI&)>19)LOLB`>w^#S`;pf9}_9S3FU>@?>e}ga>=*`})vt7pmWr4bDaMvIcmx*h{ zH{!8GEK!~$PvQY>qilm?6O_Y7hmFiB=9EYHM|glKH(=;6bWW+AQiC~t4Inc+a4v8T z*yD!>+XnykVocel?DN&phSrUz2a&X5WVFLUsXb_n`Zf`_$2e zqYF;bPSS7>U8k{51J+;ROo2JZ920|$!A{|)@GJt0aD;S(1hdNkx`MLNXrmGAEgUpD zXtamChYZ@fL_3rns!zL58`cm)S3*|~&mNwA_3PCyRwt|Tn(&%%vTm|2x;DBtot@5> ztd*?Y&)UzD;mUBw`Q!ZOEzeuby3D#jIir8e*p{(~rHCbP#6etEzN`%SnAeflk!c_U z8jHrF?G5b>+wg7p6T}llWgr@fM!H44MIEDzQ4)+2jFNylNF5{}tPeI66^cUWAaq_U z1IfIWfvjlowV1jxbYxtHX`Tz2-)Lp5A`>{LAouyN&Q@aQhTpwJo+pOEnY-hHs z0-h&joHBlY?*1I)U?D;15bV`^f&4#jq&LzHIW1cl|Br zE$3X#xta~E4Xo?z>+Ct+98a=IvdOQ_ug#~&rzZ|%Zu~Rz&kSlAwY*DVmjcXive2;5 z*ofSSG(s7n9MBGEct!$|0EV^rT09t`Am0Z{G)gquNZClyC+m|zG$kPb9e_TocUBL2 zHyz|1i54HqX zf`hZkhd|EiJ?cG>%B4XaBaM;ZSyK^&lE5q;m?H#P&dLa7#Qw$oi;M}zgh7`WdkP85y4*pLSSr zSOFu^(g5e8%ur{j`)d1YZ`a$dx7%R1K^?jdZHKYLjABQz$^>P?e#(AI5Ksg)f+|Or zBX7fR!^88$733A9r=q7K^n5^GEoAq@Spv@v&kjGKpOD$eY@FrHa==)9t&lBbujj4j zRo7S71FMeUUhBP9k8Y1{>M(WqBFH}nt&A1WN|bDuZSXFXMLk8` zK;J<3VtO%fzAlHDL!^)?WIu`@1p>lMfZ_@9gho^&%1GBpw_2lG!%ogl4zjf%haq(| zbyT%SwMSAYDfDmjZ=~1L>)}}rM3~f8aw<75xi7iz8s9a-JF#T1WbgNp?;~&>`MUgd z`IFSAzkFy56$_OVtrRUwJxje^KnVs31~6x55*X62IeMFyH!uH^`XzN&;jRKo4W;I(<*5bh ziqAmS)>hQkzpQb%rY8}S2v5jQ$RHMrypgn#1V1Aj5WwIQ5m*HFHR?5rrOncIS8`Xn zi@1vrE(jNHPu-r%8_FBXY0qhAHL;q`)t##=Vi&PNBoQl;6Um7KDyu821L&Iu`*!&#T$Qa{P~FZh!~R}lZQOxQq5A$NZm+XYm_z09&L|Kz$Rcn;6C6UkRFh_ zf#BH+X4S&EpXb=;SWqrPeMEjl{!jIPs)kC2AmP+T3A2n@2JN7+RfDSr^}6-CUkY9d z!t2B9U)8;;yUM!CDy}WA6>@|enR=P}t%9wBUU9EDb|7}(>e$sWIJdWLY1`5jxhrxb ziX)2JYT9aL8f6+V=VnTGN>|rF*MN`VV=QnMxHLiWoPV6J%2ox_!eq7|$B!cd z!M(o#gmI!_qCvJzw(U&UnXVInw*+FMXCPa`P})%XDahA@c@XgLCv?^g#)XH%YlHx-9OT z*g0X+W76}X^+PK{fDpXmzv2&Y2e?PrM_`MS%>$1;-=5DBvV?6NZ5=ATD!q#%iz6`i z1wW6U-z>3N0`e}ODm_&SPz_Lhsrgd#H1agkP0vm5J?cG54lReihrfqELpnp+MA<}v z^|7ziuhbi)8zfVlDQ+ER9j0BoT{})GPU(x(7pc;P(uL<^&&Oak%IB`nUH97VwMjHd zG(~ZvxIckjvR|@6EC~Bt{ki%VEiYPLb-e0W>R;;r@aw~`hcgdn076buQchCtwft-O zbh&i7ttwkpUZ}lLyP|zX`;^`(y(yrZn41_dDuabtuqVhT{$}~gQRS%LDBmbBi|#P? zFt$#wP7gAcV8-dDKb!tMoP9VeH!e30KH`C=?N8eS1%ZOS^?U0#a5iw>v){9GI60j6 z-1l7BX4&T5qTM1w522@YymXxUoBA7iK_R~rW}Uz}QyEnmRWMSau~~PsZX!An4Ms^Y z;ChG_U7vv{Daca}8Vwq4 z>}l-TDc&jm(EOn}qAsHDHt#kM!A7vHxz=1<1Fpff*|k|-Brp2d`>_|Eqacg;(%hvv zfG1qZm&=z6QVCM|qV`1%=EG-eXKT~+XnH46CsBAT9-BqXBEq}hC{QI3l8U5e13{KU z1|fqWfsw$}YSwCYD0V2q^MU`e|MDDod`5jnVUBmaC|-1tf03V9n^^0?_F%8!t>L|^ zdshc%e%=Y+2@i@7iXo$Ucx-rV{lfYM$SL7SawN|I?t748kRnDEqxwnXlLlxzA#?R} z^#vFp@HqiQ8DR@)3n`cyO!YDLF>WEZkoV*F<6%Asu)pa2Q2U|wufo3yd`Z3}z!EKh zSj0sz9xyiC1!7qMH1vAY^(N4^uA61gvd4MjymFvqelj1{tiFlAiEs7Y>VpiL$J39e zqkl*LX8vLRfpfGj$}Y-(RR5@6RKKXMsH3Q}Uw6Omb&%l(vz%6ND>%rL2r>#X%BE!h zJ?GhyY)K$C#Bf=ES%1CedQD)RP=H)t-aK#q+}OD>MUV}+U%X!o=c%(Avl`Vo>Ks9> zpf;2f%8B8{@Xj}!Z@4SGEBvqhzxFjfYkH;tt9kd-?x~!GoQ0S_F@G)~E+D=ud{@v> z)=`G68y#&O?OVFHbc+p&4d8nY?=x@?XPi7v9-)p6kpQDJ)4)bKoZOS#^P%NK3!|P<|1bAnE@-jx;GXxa?pYnIT?1RZ;BCj- zj)~rhUdRQwIev58aL#ZJ*d7+)tUu&R?v&dp2YXoY>hbC$S|eJP`j+~;K&~pxG=zZl zf5`ukGbx!AhB3pqo?K53#0TR0FnyS5-DzF;JO8ZsSuuVkeg!hLum8IK3+Ajtk4%gp zMgWj!eE)j?`Z``6FRm`GZlQ6Zk=RCT>l62h!KmRt0pRQMrg&43y}B&5EOlA-vh29h zxY8BXE2;y^1Io)9%NmbBruV$gybjE|f$!8E!W{yf7wM(+Qd+64R5s8*#D9ozJ#f}@ z)-%#D(txbIeUkemix-L)o=iQN`fupJA*&9njp9M2y!xsDDrowu!&% z=1TiY`$*47&*SmO<9lZI%*ZatF2FhC)v~K))fChe{FVKcAwOV6XGLccgcUOlmh%z`C9AxXlxz{??I@QZ^m*w6`zLSLgS(vNp z(CN?#d;aRp>dgoF2l)%!1+FRIl%FI>5(KpdwZhzL$RcNe3pbg3Ko9F5)}LuS)2Jp? z6QV_E5%l^&_8WDQIvMyo@Hc3aFEgYVQnzJq%iaK7QB@UHm7D4})d#c(v;qD>@15a0 zLlIVlg*EF)awPdY?vbFLcjz&wK^h zXo-D^eL5XF9WgC2EwYWWjcfR8_)3jRjm!pSgLI2@%LnlXabHhg&&9!ugW;p$qwrls z%p>MeE2tHM6hR8!WnhMjNKK@csFkP{iVQ{mLj6MB#ooo55=;poc7nKuy5{eCIYXQw zdIS9r`#&tqe$3L&(mtTMgheG9U>ee%%SE`&vl;b#Hh!pLzW=qu)=%; z$WQDZ?jH8-@a;%zN^62=VR&`{R+GB8=D6n0md=)^qNgIqUdLX@q)Qr48V{Qeo32`{ zS`1nWT7s;HkJ2Bdy=A>+-z&dYhCNN8mQV}k$6(MHG#Jaq!gm^ceTkRIm&gm01 zQ_>KA2%m?|!`?yN`Fk%0(csE2Bwk3|o4q${J#Iao-=E)qqVq(jS({ng;ikh)-avs3 zfep${%1tS4DQz?{O)S|X+0zZO)%K0;8+$hMYzAgRZIsw3;ev2MTvNEFFsd}F1iyQb zjR$?Sg}Q~h+GuSw%)<-8hG16_RuP_%oy0dhdqW@gjWPhLrX)ZHd7m5>{ME0 zT4a{MQ#MsLbspqKJ??wlmoLs2?`z%Hx>2xEZ~^ELP^GX^xTAeXyRcK(3H!?W6Z#Xc zXJ604zAQt6ArT33vqxk{WYrba6(AG#fyM(3T|HerSo;EYdrT%a6T2I~8*fLlBZUHi zs{+ZAXh{?iM1&Mv3NF$h(m<#y)P+1mn7JY?BP|0N(c%&D2*6qN+jZG>;Y2u*d5d|= zljbMQ?_1utn0A&igS|$| zFUqf)iJFP03r`o$uAE)jCb>=WvCLzcck=J#!8P;m=L9nlJoP>G3o(Tl=$+U`+(tY} zI!THFnx;%s21o-W6`Tt01NsAclinshRSi{*7UdS@%ZSSe;}zo-#w=rY-O#$B3tbnw zN;*n9Kzwn#bBl8eJQKqiGk{PKM72e=^?@)vA;`l5xX}^Fl19!TXL^74{s!C0GR!4e zmRXiLp>#s2U!`B=z1DlJ9-SVYqo|{(8-_Ow*W=dX?vU<~;Q7FoYDxy@@0s z3EIHJ>|l1loIWs8H^?95kDi-6H_4yj&lD^bEa4^a5}?I^h*F4B*sQWy1)+h^fOCsX zJ*Hk1Itu*<`v;p($S3S1?pk3cO`d$k(Ty?mV%ba=E>$3pum>E7GQ;K10!)_n9FWCY&i`1o&NLw z^RU8wh6&&l>*F{h=GB7NrK+ zZ*bj%3pZnoF(xx0Gw{CaeOG2%W*c9?7kq2^)>0@c6oK-LctiJwZjC;TK7c45{4@Gz z6qH!TyJx#+KQDb=%9Y5KNR~;K*(AS79&%nGxB9jAYi(VWE~*LJgoPdubD$IK^TagNHPjvD9py8nGNquWe)aU~>Da;8!H~|7&Uw+i2pn}< z-GNfuQroK9tJ(n?sS{?N-W$0$!X4#~_D=RrzLYmVFOqnRDjITYnsxr}$IWk=K!djT0xKC!zOD{h9g+m}gkj0R{>}orN9Rge}<={K6p{bz>!_&6uZPNoSGlOtUI7WgXL4apWWwJ8)Fy$}> z*6*TlQ8>7ch3kgv9#=oEzM{CI2&`ukA7(zxpvF*RYlqejfw6#|r#|(myHYCC*QvWqhqhFJ z7K*!jfVcu7AwVGSoM!*=)?4eXRbJ%&?!9O4Z+B*QVh6JXUcI0Od4s&DyQmwx^rjC? zA8^n+=w}$uF!myOkq%lMw15bh&1L(`_L#Sr>@?Zwrt?i_yc-U34{}c!kuc(z$1#s@ z?%&)oKZ-ryZ=BvZt+ZWfiyb__8~$$i@4&wU6I2sa@1VO0M&_M)?Ro8_Hd5P^mMJY@ z|8CQO?Aqp#{`r=3pNhl;)kQxj7Y z%$VYQPbF4~*Yel$W4JNgQ!S_9DlZpC?`XJ*VXMEGq0}whQbi|Oy5S&08 zJ=|Q~TrFHIT-Yo&>onywCCnLunS<}KDO)+ConE<`t?8?FnOr) z%mudjOt9C|F!PRld)$*f7ir`-{q9sDYrD&G{l~}MsOlHO6ZC(@FWmPL=t{}xTZgMeC{}bK7o#1&^W&`b2Eb*pL#dkbJn}oyFOw+ zV&mKt>_3#L)>EwkpG90^u*4u#8>-!=*rvE7yd+HMOz1q`e!P86>zYsgRU?)3pWe=uKSXG$-Ah# zsJ9rm7*E+x+35XCa7}RSb?J3+g%|pRPccq0Txc$|xz=;70XI$%3<-u98ioe@Z5B%x zOMQesLT)Fw^S}20+NoSB7tl)WhdK^*?CRXrd6|Ei?>gV6>fswvfUDPbw0gV;etrpzjbRSvJIucY!W^?XW(O?~ zT4FZ4-=W{(0rdg(3-b%}HTyMtm+LN9hC9Rkn%gzE)$Xg^$GDDhUCCL=xyZQ4h^9nS zCRk6ft~RPRS~IX_09m9byH0i`LoeV8;R@kK-bNnOq;c{4PVJy}%!pe#WagtlUx(P^BY8IqBM(p7WZIh(>VS( zKHkBi&%l%G$vxk8zHK3QAs6iE9p^;nM7TyRg1!c@P<3lnT2)nFRUi5VT83JNRvWA~ zzz&|<=C{ouHf)3E27fUB^)PxEyP3P0xJSUA_&SizMduR03E*VYv+1X(r>L-9u`4qx zGh0GfLa@+T=#Hq5sBzuFP6nMoC%D>iwPPYEnVZZ#)_$y=(n0B1)VZj$9Q?yuMO#Hd z@*w#v60*jLzhWZ=laRQ*(aHX)mE-{ii@4T~EVDK;rKxYv7)oo@8U z^s(%*>>tiQoM&-naj-KUJ$HXF|6s17uA=@y{(~G~0Wu6Q)DP$f&@ z3T=h3T=1^7Uu(zNFn)d?J3n@A=WXW&3Im16Y@aNjEVlukJKnLu@kfJxshXjhp*DS+ z9_Pog#8~23i?J3g2bM#fW1S;*@U%i#d<;8=4Hg_1FIO*D^jzbe28~Xm8#ov^AoF`B zaV9ZKpQXpM`e|S+Z zhxjEOB^}jm)or*YoNPPU#sdl4h3&Xjl=4gYOQEl?Oj0J90UfaIs&}CkM$-2q9N4rPM zAZL(a3~enW3W*vcjS+T>6l;n#gf2qYdEt5CYW`~eQ0Gu55%dCm<_|ovDp}hF2o%HVb&q z9()hJs#Dd;=CZjS9UdJnoi3e&yg^>JAX|Xv3Oe+gZiOD}Hf5Vq-J|XSOih2$V9_9Q zdy(^Z6|(0StS(rsvs-6($?=jSu8)h@i`bUVmd@i{#=FdNp5+WkKGqNV5BfjQWfp85 zY;9;}Xy#AyC+#xaWr+E^IBlF3dufRZqQY71EC$O5e=Bb*&j552gzGte*ADOx@abZ@ z81L_{E3PZB$K++t%bp}nl4fWB&i;U*fT1A6Aj5QGI?>e9)Uv>~z!oqTjz?%mXxEt6 zn1EGd3qg;aA3Njy3;L?CPxp@99lH+}A1v@b`8R{#3=Z`l>W@*ysKD-{1RE(<5=s|~ z7K>mqkl z3>ggh8TuJAOc*8;%_f@7wwi4<&VHP|f~ufm7c@R+pc>oR54488hK=jNbJ}xSG9{Vv zujRj%$i73a<^a6rtLLl1`rjQbkCv~Mtd*Ps61Z97Be>Y3bQg>)Ow9AK=4_`I9YP5*7h!krRYxBeYhkd?dzGEyS zmhqVRn2EW0+^ei(tz+Gw-=OcL?xdPHm^e(ao?;DEcO>-x>>S=X+|bw1H>+z_7v?w4 z0z14^P%4-UYT`HXAMqaX96=SG6`lJ9`voUNCq!}LIPqNBT-jRXS|!v6bYm6;uvMC| z+Ob;B5NGJA;Zs9E>kvIHJS{?OLu`p;BKd~X4W~?YCOgqN(HZwDxHddvK4aR^?dV)b zuHy{b8MY9GF-P8e*-+UK_QZ#)!c`0fLxInKsYohI7k~Bv*0{de$B*A1jyiEa{0=$EqjwPwKxmbZux6 zVG*Ijyu%!>cCC?#hI9M^S^*7b4ajOb$3Dl#e9rGqzXK)qyVKv4zbRrUUf651*X9A~ z0ZC_|GkDeis{g$Dyqej??5dO3$-hXxNUjU73;zaj_#FOn!E%9wFX2xWOcnGBdxZy} z%Xg1-k90Y(*KwUP>@n=YxuvhxSBrh3P(@~V%;cEKTl2T(h*q1UUsc`Lq04 z$3f`-yUM=Gp1_>I^aB42&w=NFnKnEFc@R7ZH->Kvj{|A?HT{^E%j?eTULao}$N6gm zzk&aQ_k%YTgno1um@e?Ue@l2v_)7drJX$hZg1I!Ff~Uyu&hL&=N2w)RiB>tR9KJ)m zL%eBm(*pVWpDCXya;luViLr@+S#2(h%i8X|-MN9)z?$MT#mR(fLWSd`-73pfmdM$E zu79rY9qb*7+eGt(^Mud%&-hRW$A1BmgB*koLOuxBPLh}; zJ|R6J{jT_~xY&KMyA*m5BL*V|@&6<8^k0)+lNMPmvchMK4b_Hv&gq;}Bdd}1(D|YB z9M&Ax8_;IvW+u&v=G05+rNmmtTE7C;In*8-PzR}l+tl0Ccf0R)f02EWwTaur6ND3l zA-oVCiBICs0o?~xgH8xe2sR2g3eCmlVq_;wluwlBDsz>8_x#-hs26pKwnV#RXvq+s zx8WygihDe~*H3axa$HMaOCQf1&-}^y$znURoo}#iu>PR`LC5D$Ka|LPw*G7l)u3k2 zjGh^79o{=@jG$3#c~VGCcGrSBq!1mX{F3kX18;< zGh7FAaJGhftCjSXbQYCGrP@*L=3CFVes22Q^vKYWp$+{T`YU=XdN}}Qx0YGU(nM(@ z7l8|;F|7ojJ3n`7L7#b_c{o49na3H?8Bw?-T#_nFl^J#$cE3`+QsJB(J7!Y!DSEuq z#dY(R^(|{7iV+2WcR0TiF+_|f>?dq|pW--i9A|jp{m^5|W6Iz5f7@GHSz5g|eQoMz z>}QO9Cr7nMwLBH?S1%^^bz6un#G3@01ei_V4Jra17aSLGgdE`|@g*_#g5*eYBzNU^ z<*i+3DXG^Ehbu| zTBlmOIk-9C17R=tNx*)|fGZVe^xEBL+-KliQbLxHXV}fKyK8aR;-~RXW8JWBn5-k~ zHfT0zw)bxD#Wirhe7}5wY=I1a^Pz%JK^i~p*LP}-V2uDG=&%E962ezg^iKRvj6HPE z70(rzlPpn}sQ>8yqd$EpeF!_~Pnn)FMaDnLf#mR%@|2Rx$o=JAM4!YTtUp+9>2K+n z5kQvFdYkn&Gz*%A*hFlCeK3u>M%}-C|Mq#Syj35eV;s3v^`d&wQQ=YHZozH=o@*+3 zmAtE<&HT-Ldx5=xC1eTPMeQQIA0|R+)h6X8B|f8iHN6_RqSoCuzHN-(so9pZEz4}n zY(G1Ec8HJx%Rk?ch@VQoV+tA*?f7XNGq=FbX7}r=6$mr|+kaVU1zk2I09h7PN)Bg=%GQ zW&fx3pVlNZl3BWOy76{{?FQIS($d$`H>r10FZSF}q!j5n$vFwGMYw;-7G}eg?ThdX zXbI@3=&0y}^n(;1&H-HkT?Q%x754XFHx2%lUmCwO&Nt0BEry<%XSUC5vH#(*<6}pE zCx0goh6iIBa~cyryREdXG|a8cahT%(Q4?$YPT_rUr(vhzV%=h$r^fSFKOc5bE&xGX zS5_mg5#w|2JqY>u?SggzoPnjkHF3Onyv0r+ZHK<-W_m`k@o_3Hl$#Ka6(~ zcM-Q)ZL^X>(JsDEP~}GdkNF=H^IjdGFm@RG1M>qDJvN_dpK18{d0Bc{&LYkt@{D*! zc*lHSdtduh{ZzfMXJOBYt`l7sq!*;2nnDdL6CqdqzV^^7Kj`rjuP~` z?Nsbkgg_S-?pwP0y85~Yx(Dj?b$T5^N1$2KEDLQ4Z2;RuUO-(yMb@Pwlw?|hFbkRE zl;c!IsruCedCvNr^%b)#X7fn%NFq~_DRQpSZ-d>p0jdDi=B~|Mo^nq)b{n4;od-hj zM$res2f+;Cj9+^zuyVsEdRDYfyiS}U&5-6oR~K9hbphT>9RcMl>H2j2VZvbo_5(Fq zH(Iybw*x>b#4(N*M>|VDOMk$8z=Z1^#v}S8`W@OG8m{$+?GD>rx43T6Mrb2UGn{4! zNNn9-n!hx1m0b0->uFbqyhHA!a8j(6td?vMZV?6w0tGkuH~CZn72c^J0iIKzf?kMU zh{K^P6FYhCLB}rGKQ*#`SwGJEAaZJafOvq2etXR1Ap`p;{V3gm;lPMyMl(HF9xNlK z5z~+EN5?x?vAQa8P(qm=4+{+9f(8IU}i*Rm!}T-pVrS_-x-`3pLBtoB~eV2U~_T*y!)=yB8xJZoo z@zbDrpv{ual2!6m(1!ene2sFAvb(3dXNP8oX7b?VL5LL(pEf>ie9Qcn`7)bjHW{`V zw%FCFr|2o?9M3sAf_cT1Y0AX8pEJ#wrlcr;b!i{8K4?AJa?dd^APv_>+wZjB=>+`*z0Rr5=|1&7 z^&;isuiqc`y_plui5bQjzn*=`x@6rv?L6&K^-;CHN8b~s3{##~oK}>|N`G}Oua~Ts ztOR*Uy`VubO^VMI{5`DeTG!>)r(V9;hru~5-16Pu4+7cA`|izXjRv$E=!fA z>Vf)!x__{L&~4al7|)T|LGjJvn*}^3?Y*hq)TvHWozUNccZtYboZvRW?JegmXRq^K z=L}W`>mS-bG|ZutSe950m<*U?>NEA|S400ec9zYQ&XiJl)L(P|2aOLJ;b>C_cG=o1 z)mN$kNndrg`fT;lnxi#CbwhQkMpff-?s9ImpjvZg2Fu!De2}BPIKIVVS-%+rm;7;+KVsZt!VoA-C znv+c@n_jiQYIlHgM^TrktEa!G-@?Sggm2C_kEO&?aE{G&;kpES1$#m5i2s4G17SZv z?jS|5BDgKEEfBe{=mjw6m~)muM{A8$ja8LNl}V4TN4HkJR((c#MjFqL=fCE@=8mi# zS^KH%Q`vmb&ElKIi$K>4uNOiUcM;UCSD+vDN$Zo=41NY5mR|Y9o{2pv11SR^j6N7G zH(PEtoid%W+hw;4@{<;OFZOl_atJ~O$Zrw9MYu+~Mk33pGORKTc@kGVuXwUu*e>X& zKo1x`bK;ERjBs9%(4Eko+L7AvsQOWLKxshfKRN&87-bn{T?Zk12XORXG@mt}_kP>^ z4Y`UB%O92})+N?W0EjBCtGLeH9=<)i*=)1fHpVtal4p|VE$H9cAG$wuPt=~M(Xpdr zpCvv^T#~#5TDWSH`HB3*Yw_3Ox5R9Tu?V#Yo#{W*zuLXpJ(ZElfU8uS2SX2rPODC< zuzMZ0+^rt99<}F7&zI)q=H&vq>O1!QkiL?>MrKB4e$4)uU6Nap%YqIw=St_wrHxA) zt0mQvM}3d_$_&a3Mp}=w_IC7kOkyXovplmr2LlHK`=k1!f)axg4<{W?f||Az#c0Lo zZzyOf!;tL zYZhxprBEpk7!MejuR@Lm{?@W$vtnzKYLZIFl#V$u?!-9#82uQ)?j$yhY8cfW)*Y7S zpXQJAqxJUd?Qaur6Za4AA2#kb?!GR#E@-Q7s|VC)DXo}Rd?4pQ4&YV4z&P?NSp2?* zWQJr)en@`I{W|ip%!g; zeD2|XY0z!Z?StCL&u1(nnUQ=c`cgD91;>Vs4THz4 z7tY+t_GEi&Lup;PQg6gvBGVeO?x}Bn(BJ9@0=O}vKezX70p1>lo&?~Y%V0!=@#iECj zhVV)|DQk4r=)|#!V_zh{NDfF0NW@N;%i)*9*ZQpW+2*p%MdPS(Tw}Gy3bT9<`yTdf z19b_zgr^%$Hz2Fwe!=~M$Jvjwkyn=eHT&y7U;Y6a?anXzGWTU-uSRlZa^?8?@%78N z%eVrmKpLtE)hyR9*ZbS}+q`DHX6QV09!G+Y1hvM+lhV$@wlhByZxPZTa|6cR{7mEPz z&H?>LNp?Zm2pmgPJe@}LFU)t*YRibpUq{ZWu^W({yBTT@A;0s5qrMv z!L0~dM!)_2{qOIMxsACC$`+Kl)VkFAH2E~;3Uh_ml-HE_`OP5BAYl(}4kw3$%%nph zhe80W6qOL45U)+rCjCC<_c4c44yUY6UY-0g{$spvq;DiKlo)!;_m(eI!Mk8qxDgnfUq+FXB()&kF??3R25b%SP6Z zghB>&OC~Rq7uglrHOXj_5pq)c9QzzQ8J&#l9@jkpUE;eVd`CF)#6#jj;>IS8P3lMn zC3PenN<5VKHtua)(8!>XQ9)5bn1TF*`Ue%WHroug8DNjEx5QgAnmd}is%}+XL3u$r z#O@1Xa$|Bceq{Ve%}mYYW%05~b4qhWd7?aJnX-)C%5KHG#*@&GoTbgu+8Wv#4q6Rb zSvp!edNMtk{ZP*OCge?sC`J@>G5%sab}K#ywI{bH!}dAl*Rv)jB*r$}Hhf{g!hjcU zFWkx*<%~|7P8%;%FH<+Yn;sc^`?&kKrH!SHhBbyYH%f1mt|?qonEW&O=ffWlf23xm zW=;Ds?FX{mmX|Ltx2vl8sZw_&Vii+o1xpA zEGCN~rr(awGt8+zDtuIkS^qab-u#&KbJ9hgq|gqml~&zj+yOafL1 z)tbRIgT^Fd5+EOJvS?YfAWjgc%d5-FI?OukYxLLX$1#s%&L*BsT%NQ%X>I)4c#}Aj zIH-tYuHgUDM`ds_+s3jfaiJ2xOFAZOY4W#7GXy>rbA%nOiBa=-F^CAo>*bfM!yN1iNCc1V3lJ#u*D z@LaRGWLxSlqEV_ayfud9pltZv5Q%oT!|rj?j+K zmwqq(B1S}vh-O4H8tfYEkU@amnwW382^=KMgZ)+YR~2UHe-!>GJoNL>&u>}ZvOZ*f z$b9zw+4mDUCvy6V`ihFmi^?C>KB{ej7tSG$YmRIBpzpoItivqbA>Dz`v zN5G=cMWL)wtWl?uP9+(EpoS(%7B7q68M8CSA<7}DEx0ZCrRPh}ajbEy42KMdH^eu@ z*rC`V?DX2h-@~8OI;j<|?J9|d#KP}+-}Bsa-E*OS0;rEyzn{!LnGN{joU8d)^JkUM zDi3T3Y(S3f3GoRr_G@Fl0j`P-(Jy@5>9|vZTY{U;Pv;jM9v!|jdS^6VlC4fyop21q zN#rDAR}1z8VSf=+gL&I=>^NU(UuoMcw^^dsFhQH3#VpnJ&g-2i^(pn3nYAgfDS)qC z&Zg{5+4u}z`g7^eV|mB&Sf#8|;tBxfaMC5=lMm#{g0bNr@Jn?^x2GE5jC46yaK^}fQs z!nSaVP{DS7V; z-WPl=`&zcHW?fBOb6j(~r2Q9HX6EqB;bhBX%L+;bK>AGCDbV3`!vBPSY*=hqLrgV^Lc|9Nin-0&VP*FM+2-n`!2+tAxE3;NbW zWuY=$&++raPE$Nj1>^rvyC0?9qo9h=Bjd4H4Qcm zb`m-XyRCOy2hoCPm<@-hyFYAsLz1GCqP^q25j7b9J@I>DR8myZySR68hocWiABi{; zalrq8KY0Xs#7^c;=17N;4uFxfOEgI|!TYJp(#ukuefHJ$)v3xmaZ*WTYxNr zWuWt*w8FH)*Tt`k*Hx^mINWf!;Vbtm_p$J?&|Yh=eMNXhcw+IyVi#=}Ey^Xz1v@u= zgMEVsLI*-^qimxdB|J))0L}GFw+*)qA66e$dk8&*UmCwO?yA{Uv%F$? zMNDx_@$ZGd7tYU{pQp{y<}A-$o|~ATn7^%fTX9-xS}EqVA$r0s5*7)O12WV%)Q5L* zR~)W5^waujv7A_rYJ_UUw18;=Gb3h3tcY9@={m}FR8(SA;<)&6@ue}PF;K-3{V3#7 zNQ_U64|;aTQN~f=+RpT*{^l=EuD#q|j+|0mgRUX2I-`5%nz$a2CQqjY=$7GMmqJc#N zFt(JJwU@PH4>V?=F&lb1?{wbakHH^fa>nGm2B9ha?~=buAnslX6(IHFJI8lk7hf0S zjQ6GPr4D^`$+pS1cqd)uR^_(AZ-XB_gdP$V8WqZk;`~|@{*3=K9*_wMAL2g5?TOhF zgWT1Sppc*y-YdK@7q*VNj=I%ktI6}e=Y8xhcGouHHsRj3y=`D6tPiaSt(aOowfJM+ z$Gq0>t>0^NYjZgToPvLg{w>NZ&nzDTpnpYkMRTvXSA3-RNbl~U-9s16E}CI(cq?@) z^-t$NomYFV_Qd@iF%lF*jKRMpASoaT`RpI!Kg9p)R*Mou0fIYtisuy11MCCrGIALi z`&BWkkKZYVoFO-bfS6Z}R}I!OzAJiHv?6~+KAwXEpf4L4O4y&6R+3f%$HThv*7DZ% z{Pp}DiXDpS>gnnVeT5!5uy5?%*v)3mW`+2K_yCqA5W7Z@znnKJZ!OF z=SJU*yct;(RuqOzF182T1HB~~HW@abp{q=(Q|d?>lBQf-F7E8;?0^cShW}OkuVQuC z>avdfj(oyT!q4Axf6v8dATsB!m0l~IUOBxI887qN=e6Tp_hawJ-tOV<;kkslgjAbU zn?GoO(9mx_)@Q5_#Mc7x{4_syeryV8-Kce=ri0+oJrcWN-vzu2K(@s*$7hb20Kol= z^cN|8IDL3V?~GpLhdyn8+KwEQ1yu{GEQ&3PHxzCt+*`1>K$s`YgDSv${4DV^MgGq0 z#@UUBI}Uf?JcQfL?N;_H`=1y+G2)x?&0-v595-?{a^gqCk9ZL9AmBvEi4g1xW<|52 zVU!gEkJ?y#KDUIlgdF!j?tjelm}fd8oq=9#%#-aM-aA~Ysnz65@+HC+Vaw|J)%9r= zX%)f6!Nq`)EJ-OyDZr5M$AXUqImJ1}ughMSRaaD3?5W>Vf2-wI%R2r#zA^NaeN}x` zr5dCfSX)|Kp0Gb*kKLgs-A=k4@;&6s3T1`94SyS+7nv7n9%~-kAKf2)b>!8NVDk;b zJp@vV&?8GD)5zP+wwtvZwHrNGKUd4(g-qxvZByFj*3YfqSGunhIj^Tdk3lv?Hbqfo zQDqht78S8ou~o?U-P*dfb+l--=mnJMLM7B-jY*A3gmr|q(n@L7;@IMN$?cLGphtXM z0$c)M#1z^Y)ftrqs1N#A3=#~LaIjAS~Q zZlr3YiYO&Ym$fZxGp#kPwX3wNY$c~mu(uGi>__X4)dTNZ zhh1F1fvStDi@Zy{OG#CvDzH-5-)OnflFm!#T~%IHVvafnN}__ygUpEzLA1cQC&ANiRf-|7+h2IPDEHSozZ2i9G zea)xaPq)vO&z3J&FIVIHjlCG_E!SJlqs^mLx>dRz_dM=7GGJuDY{3cWP=3vwYwX4H%_XYR9RM3R`jUgQ2}m%aE}*I7*IIAczkhIX;$g9 zifI)obt!c_xjVUR5nBZI485ChV+IM2Nnmqy1Tmf(0XX-J3VfG+Vfi^-GAye{|{H@Jf zn=zaLqlU8W#oLR+3&RVMDFgqL0{lD2m5(d`v-Zzgej~pzu{p8Xx6`-trTC?|TiLCI z|JwtAcr^Ik>US&5>!NQH`R_;kj`-pCd2z(zh^LWHBL~9=p?RPsJSj9O6tLU=op#+^5~AscqG^XN}Jq<9hI~;$KCoAXR|5ipGYH)+hgNP=ZZp|*vgx^@ zb3-_*n<<|u&+p9dv~RX=PN+_(K2mz5^nWG)D>+$o5)n~FZ6NI2NGnS#yHt0n?iBYF z7rie_k$p{Hye@(&Ht^OT5ax%8g2mN>`SxEUT)is!3}|YuM7dr4_xOo5h>OFO{Hymjm~V z?-_5j+-SLlyoDUh2xcHh=8)$hPl)yhPK4rY`*8d4=V8yo&V-){{}}o)^jOfbpbW1J zuQ$MFHK&`?k&B5Q!6yb!3<@=cnvCv@?teu8h~{_B@1!(R8Z#;~Dq6}~%JNF`N@zv2 zBEZ9ygqMex->bM+QC(YId!yk-!?%ua9XRvTbZLHZMBf{}H!LNV67hcHCgmmtSzLg> z_F5IVDsV=~j1ccI@31SN$Kj8|b3<}N#`%o%f#ZfNX4uBj#?kiL?zJ5Y%+`a$2Z!@D z`I`BP`3meMT2Z&6Zcpu=TI?$eDGn+At>m|oAQ19fa1Yg1*;W}>6IUZ^lr?_fe&DM3 zD*god1og~Nx;5B=g4ZK7?W?cnU-T=lr>G1_PJFRtm0;2XhUI|*loGDEQ^ zdYu0_e?Se6h~z|abWS=axsBZBmC-As_kHjC(C@oMwnR3DH-_iZtLp+%t%0S*D{q1PqaE!yof^)t2CuGh}Q+{7F^ zppl*2243Wk!jHm5EsI*9Qo9;?t5-^|lwL2nUZN^i6;A}=@9$FSrPBR1`)e?(8O@F6 znhDK>5UUlfRIXIoXl=Bxwb!jNTVr;Ke2L72*D|+dZhv|Gb+X<%YgE zS8G>mI)P3&GI(V0O!t}Y$Y^mj18!f5ph)kyc16a1MwwhDL597cy4ScozH5=06*#k^gmGP->Oh8Qn9wB|Hfa*`TmpsmDDNJW|RCrG!#_ zvA%eE$@CJOM@|84tK3%kpzcAPE7z6#o&TNRAZd`i>3!2XLpMYB)#$4c&zxsI!hVFk z72S$H;4$Da=riau-+#V8cC@SuSr@W2bZO|D;5Wf4AC=Eox3O-coJTnybv)`gY&~oZ zIBqjLy`3H&J$;4pLiw|fXC1lCxy=vj9@a%wMO8rsVr5NPP1)(9)407ViYSdJg(~iH zvnsPHux!=lHRUx0wg>meiipE*vyd8SmM>&jgNHIwSffx3+{cU^n7-RMdaQnIqJsWz^0|8dO&X4sU>#tW|uSU+Yuv}O!FOiolEnZq& zR8mxeY?<%X->WawU#M?wX>GwQ22;!wBM%CqzhH2Xb;tato!C(uw($ zDLqqq)Pw3lni0*&(ah0IW+SsfmKx@o@EKz6Y3_N?`=0k5zdL?_SOLQDmB4>N@&57t z$RR(7bh=_=Fz^#AEcX+~+%mFY@klC*MLxqwSR-QjUyE!6&30V^)=l!9gRREpilS~?G_FF_z&D3 zxZ!)W)o-g`Y*1_v9V7v*^jqm?>uC!F)^bl9jtvLBIAD=>NHkA0KSnr4Xwo)mUF0ru z>>&Ko{-wRQv9}Qr@pZ`YhqzUFLS;f_Y1Vr@~p#I2lTvpyLh|c?A621!!I%*G5{IXS3x~KJw6+}H+b*# z*y-_+{gJ(zwwi{Fc|2DEwrD`zukJ@Sf~(9`wn?~2xVmL^%e01R4QFf4*5IBPwr}OQ zSDz1ps<(>6)rYHtYJ+MO&5Gvn{PBGBJ%h!fCt@ICAk84nppVo?!racV%QB4w|vihPvq544xAhqlV?M=zGND zhzH(BWzn$k}GuW(KAPrkMBM zrP`%JpFa9HAtKSy+|=9z*3BB%YS-$_%FN1*6&owwR=%yonIxdW>%KL7Yp`myYQUAFsJ{X|K3=qxM$Rx3HwQ@yHV4_!|*LUCVz6JgT{wV<|0n5CX zc?Sbmc%R!oHxi4)!W_XDyDxSJfdRALXuT0;QtnIdOYaEo2#h+6I(~2Yy#-ld`Wk&r zdR2PW`O5Q^*%jFp>?(GZWu0Z+u7+I=_ge0?7`Gd@PY_HHpg+D`U9OHbh&5;+HW1fa zt+(1v-cE)}wqIO!h9|=l9(lg${^|Zua}f~kAMTI*`rW>}eUS$ZM=Mu|@jFG^MB8BB zz$3#)hHV3F18S98wLrQ+s^M$+pW8mSEooTN0FUx|xT>g$sgA*l)M}ikpQ<@klU<)( z|Dowa)3uIk9hgmtQ^qNg19Eoo?BH{w=SBz;zixNk&Kr6W@ZZDx-u2$=z2$y#zgYiR zf9&jrSdsrqua#bUj-G>lGl-Hi_L29I7h5j2JVQJ~bRBXX5^Ka7%tD{$o#xrL*|y={ zb6MT8IzkPhCZj5&ie5pl*io~iCbcfLZWoB#%x(7OdUOBd{l`O}PIFgt*E;PwZM<>3 z@l5lX=6YMbZ6Ga>7S0N1Vea{}=V#9-|0w^LK`(=D2HXrd>wVT6S>HI5&12*-mQj~c z6}Af7*`(Q|z~R7Q>?u#^O6XcFUo4*{o+iG;y~JJBvZ|%OuD@=4_4w-1pz6x%$~cf| zwP|&5U2xr`#z~C`!!GYA?}(H}N|7be09mQ0`ltE}qzfd7d)VOKHiezSKJ9wi^|se- zuYA9JKkToV956Yc*RR)ak@q5RoR_X}Ug4ZXP9ndudSw+x3?q8#J@ucopR_QNRHC=# zq~N5WprxQ?MAL|-in@wAWI6d%`&56c{D#$7m0?w3RrdAvzgRB1HeK6W-do;g>1OHk zuIF7cjZAZU==RW5)2XI!ZQt5*DO}2Q=5*$7Zoj#099yIQ;2HqiWr`3<;cVy_bB#xP%mh2i-8#Pclj8o^pcYOrmvok5*Jh1zH~vc>=M z{>vMGd+VVG%*D^e@1yreZ)ETYTm`Pjfm<6#iK7Hr1X=7e-DhexY&Hzz!ao0Q|LzPZ zX(IE;ylEZNI+B``nmrpl8*YM%Yl~~)@m5c6BsWGjMK*nE`_zU!3C!JM*5Gc}-L6Va zrDl$Pjvn(juvA#t*xT6G(duaSF7_@5T@Sieji?%d&lG%*jszSDxbA)38<48*9h?ph za<3kfACqaeG+Tk0!0aF6e~d{3q=6)5lCn?IClL$8f@Ph{I*|od*<9H?zHxlxGSKJx z&-D$U=grTXt6HjB#O>mC%s?&@FA^7b6?YA3hqUzu^#*T9Z%8w3XWBk-c;c{`wwY$j zwq*~w54j_!-q6?37b@YP(E=2(HULmW-nZRvyQBZEl3qz)N?uCtH19OW%s6H-=c(tZ z56chBTSP4)z|`?eT1#5Nn$Yau=--IXUi46{YFO1Ut#Mi-c8M=(ThexbcYwD@wn#Qw zIa;|;y-@vT@XesaKw|Kc^pZ5yW~$9}+H~3i&H@hZbw7^yI3n0D*l!*v(>K$X;6v~c zxC`9#o%5YBo5Ce?$&0NPTP?F(W_g)(nFLmtp*C%sc2v)(o)k%nlOdi zFHU@APi4;*?G`OGx$7Z*NPJ`U#;T9pM~1j99doL?J$HKo-p%hM2s>Mr`7ZOd^0M-} z?|$EXD|;*ZJmowEK4x3=17g1L!oY=r$Gwkx6T#n(TnlO^wR1I;1-BtHbJbc zaY5~ZTD-4IZ%A+GY3^x8rUZIS2?By(qI9D4w(_=egL;G7P-m#yNZ3e#I(r-J+ML3e z!r1Pz-DQf$6c3yqukl&qqw&@F7K7S-+I=cURE+R<@pnP~cMGM3a>M3^O}}ZsX{bS{ z0d_tVDT|coRb~Nv(X7*~b79-UHfl4qc~9e>Mtsis*ZbGM1l?-7)r5V<)!b_C6aEu^ zt)x~0TZ|rLX#Y9*=O7?Q2{X)Qm|@2aa)&Utj*K~EoqzKA*=qt;XF{Tlrm=Qqu70?T&WQr=P?u2B@ox#Fesv%Y72mxnG7Wf^A~f3o;wF@iFJ zGTnJP(1c$&JGwc#jrSSvgFc^ufC0GOclq_Z%N&t80_PAUHi-?^I@)Q6(+=28j(*O- zp}-*jf%4O?5HEwRU-#{i%0@73?s;mUC31n~rMMrTGR*p9h- zoA)-~Z@S+!2?SAdyh>?sXmM!iZ0l^(0AT8p=#prkVxJ;Slcr(nm^y|L!{~_F5wmkP z=WI?po_0LNJjKNBg*~2oJSY22hL)6%;23!c%_vj+LcK!0aE(Gnl1A!{5z$N#zf&m|rN zk#uJ!o5{Yr_vF`JlIA=CRi=XVa^nq8haKXG2qSkKr) z+e2$0H;^ybU9j72v)ks1`4#gwrf*Ck&Sd<4`2Fz1frkSZH5WC2yjJ1fYP@2+0vQg6 zWrt;f(m?4=@l7#FN|K5}%jC=C(aLBgKJz+zJA2c#XrBtqnbvBr6g^BmVXt}{6^ImxVK)_jmT!<=!Fc9KRSlgI|Z_8((8#&WUAViOA^ z3nQ?{>URz98r1da`XKVA=~8v6kXx}_xm>wczE(aU8<5E*atWR{+dyw6ZzY#xmti*SX-X*O!t=FW-qz7W*3V*r3 z9M2M%F~W5fGis-Vr-Xk?{+1wr`l8Xzvd4cJOv+uxzk|>m{?b!ybhO5~^gil7>Sg+6 z`Z&foh9TP!n%@W6VBg~4TIou2rM;lMpkR(xVX3e*v@o>5{0`0qSi`Jg$9~8DZ;+kq zRrjh_t5&Nbx+A*rdnA+yC7r-K{UrV*J_!m8B7jCW6S*>myAosHcUcxSa5n9<+J-^h5^-cRZ$A;XYh zL@-L$C+l%Pb-Mp_e}E=HW7})n%jjZs^~!tYD?mmvBiUN%S}9A+5<|VK@SW(L2&%&* zdlY*VNwOqafxJLosw!2bs8iHI13?38hu02oAZ#EESq)hY*bmqv-(#B7G$$=xOTP-; z0{^oAWlv;IWY*Ga=@40@qUY|2%@G^yIa^FxOgd+L&Um8XM8oBS%LkEb0I?1Y&a{tr zAMd`Xyr_&;L@Qp)UdwRJyd%6LL|#I*uv&OZd`jFTYmy=RklI7-!Owhu|NefiA=hvL zX#pu1lx~)87HJ=8kGxr&y}Gg8*!wyAIX%uj&XZY_SvA1JBsvkDE;wFrM1H~&t0h)B zW;tdGBZX0mzD2)(aR1;&?M5y7k2m&i?0w$zyay^3dTN!m%H8takZLlKBO660)xI_HhA^fZ(}@fsV+KeI0;?}> zLm2o>JmqxC>4n1!he@`RY;hk9(H(QXDc>~7Fv$>~?dt~D4Svvk&>)8_yC=KnY}eVY zv7jr8D+=V4{gD2UA}epCc%&H5orgi?0R8{1`?v0BRkR9c{uA^Q^!PV9k(@}ctzTP% zwcDYY)=Vp7lrcs#M>FYcI$On5F)^d|m*ZcKc%FJ^_s%ZUD$}aftkvua@e0ub^u^$d z0bs|6PW7MapP-qb$y8^mH>)FiRy`JY4h>#LL8O*4wO0?Mm(J zY4)^mdN>`K8pyQy&FMF%Mf62!tRkR-_SWhEzkUE8SPR&&bcnsWPhUz4*PD zE8>a@KpQ{=2?5f5X%ftFyZ5;F0NNg?Y8e{j@uv=_4o^3nZWu+3BF?gz^(${|MYW+|OJ`Uq=t6h0-=qHc*D`hV7PGFSW+GY^Z6d=@z3cM#y$g)url? zr}cl5&ND3Svu)#wiUUzZ0a1`8+m+p<+0EW*o5V~rn`Sj>cAMFzY4&W=B+cH<=#$j! zX2-bqKok@KaUx4W5ftC+^5y*UeCTmJM&ZwWU)Op5&cp48d-Is+RdHEd78#TtE^S%b z^2Yeai0s7`#uYHdSZ}=9a#W<<}3p3a`m9?crf!nw~>##9EL0jnrgls|+241ON)JfPFN(|dH!=pO7p zTjpBk!aNbLo!7p%b#E(vcignxw5ZK$Gv;~vH1}!F0~tZHjI)gUO#4iDM+|HYY(-Dt zQP)vdPj^o@W?_-tg89n#Vei9`G2n=FL=KJ~94!U?75P^rSn-)}qTWQkqQ9aqj93`) ziSmgu3OZ5#4fr0R`$A3A^N{M7NOBfuVD#|*#Q;Cbs_Ru3g1T4uuJAPnm;*2$`eVe85liSx=xTzF!b83>;RF|?RoCYU|c9-2lOmJO|H#-nBEA#(m6S@t%rSvTAVQ4DXNK1duk7yZ?n&-RZsaLLJw@B>*4eF#t&6SL z`xs-6F*}S7BYZrY@%(85{c8HPHwXRD{LtLq+TPmxd3En~4@Lhi^0&wrQ7@tfGY2!rGsZKJQJD>$P1aCrXl-z9aB@I$fZ9jx^Va*V z_r$J=UD!{facZ24+ZVSFvJbMKx1G1`vF@?*EIdoHDcQ8zxEhFHSBzGWq(#z#-+8O7 ztE`y!z|TfnS6bJfoeJT~}w*z+*_xk~A!^hwM~%rhW1fEM9nPQM*- zJ7RM9{t8(V>m2JGzqkJ0y27@? z_R8|gQf;m_tF?g*%Z{@)>~K?efF9JbGXm z5sZk7w2QPIkvk&sJ|l`0MG6^0pnhy%K-C{rAF2=iHssro?Sb0^R}ohcvwgCCg1v*i z@o$H`dm-pT(6-QRp_$Z7>KBYJ7}r36D~$Y!`4e+J2>-W(=Adm1 z-x!Yl=uklytR-rR$mzJ|ea(AR_o(hN=$Wf@RyqNP(f$g2Q^Q(^wT`!pw-`(Y6Yg4| z9=%1=q=8n3pPD9sPJ?hB)!owFLbMPqWIMT+wSircgS-cMBfoqLc?_Hu5&U1mUg&=LVQrc^&#X)Q{{(&Irs1gh~kFSH55QVor+H&FbFZ+Tdb#FguV- zxTSSV>l4cpi^ile-EFzsf_$~Rz-%!!m>R}3jcJ+)>S^q09MUqRrQO_a#ytKg$0$cP z04a6yjBu>?9E?2_$dIV&sOqr8Yi{e@);MdNb%bezX=KyL-oMphU^PfV$Zi7MCEW-@Zh_P6eDrM6Mq@EN(UZC@L{pN=_? zIcr_Du1D@i?)skk9`rxiz3twgeLn+<^P}$${~i9Fq)w71L=!>+wS={V5vT+z_BGw4 z-=v?8I2|#YHk*dst)ehd?-}>Ez~2G^`QQ`p74PNk@^%Hb1-2!dlg%Rv}g za-Vgd6)gVEm~q{y->CZnGl@rCt;mFwcVaQ2cIl-TR_{WAK?=uSbWV7PR+6ldO0KbGJCt&Cq8zc+4g-0z9M zCqngEoJ=m0V>Zdnck`WWCp$YTI|_HeQ^`}w;{(SBUhKZueZzjke#mslbgk}M9q!={ zDi12ZEB>x{cHZo~_u22WpQb-e2P{qw_J?DidWpJ3joAvY05wP3qwRLL-Hm)UJewg8 ze-VEXzd_O&s{%vAuB}OEN(8>m+K8xhAQ-apnny6xVL6*&BT{1PnLJT@O~lgV38To zW9l)LwwAWy8G9~qE>T5MQIMBa!Kz@j2wQ|X@j3Cs5{4zrNt}~N?Mv;O5uXviOS(&n zJ95C8inemMaU=w-_S zVb4%eOi|1j_82xk$KkC>Iva4dms6VFncj)_dgP&DR&b_friNBVE5q*34H+9U`04!g z$j_0V!!yD&SlO)Xi}@GxasQ*#DRqk*7dNi9ueLKiOwTg^W&Ymb-r>l;2E0y;6kZfL zMUL<7qP|6a%M!~H&nBHsf-1;_$@0na*|OO(h`b7rZKbBG>HmcN6GjRm1UgW>X$FB0RX=Br-g1-Ck-G`B%Mt%Z3P}a=+nfde*ddUIx z0X1eYIW3$PSTA>O^x5bWA08jx0BqFjg6jgzP7Re0mETFYldv&yW8#dyGy1+rc#(jg z!N>B)@?T?rjn!~8oTbrAqj3&}^VGC}w1A<&fb{S5@1$GlR!%dg`Cje4+Bxbu>RXCi z3ha)|NzX|?mUb-dQs$*hH|Sc{wX8PO{V#U`h|}2ALWl{8N9pUSzoS`>+;q4YD<}=>~ikqT*d=d+a#|AuLam4Rn97BA^)Q(v?+A1-&{XUho(0_C8!tF zqaSUEa)@$6(T1XlITLdRW(~|b`S~Q)^?io%N6y0Bg}GTJStV2zRn?*I&?5^7?=o|| z=Xme%+u?_E!NZYAc|J|enVR#wG)rwOqAmIyIeOHTCHZ>JCbYOo_zb(JJXGX`n1n z_CvxC31HdkgZ!Mo2K+Sua~nHAull~~tBzO4ACw=IpOl=GAXgdra@XkB=zl=>{BFW- zLS%bn`!3@y<6-?_J=8L&mz69l`8WUHe9W0%`*iKo=CsXeV8_i=WGS*B%2kx4Oj3@j z8C8?goYFk4bz19W!eqj$uvcO4Y42&6)dWOh>|y9cMSsluxc6~eWIDkW)1!n!M-r7p z?aS!P7zf>5nAficEs9$dcRk^HLPJtR(o7IknI%7|r-4q%PsxWT z3{Q9~e=DCNn<8^d-O?9vFX9r!31TA%y=@7s1lA7b4(5@NBOx3jhq$eKTQ~ZQzHR!p zX{m0h4(bsqxP{z8WKe*8_7mYF;UjV~(mtkrT$Zsc15l0mA4@-$eyjghKhiwX{HpC$ zTZ&hT*X^L&K^CfoiU8QdusgwyKfatVKN5c={vY{2^78od_+fFw;=<)1S-9+t@Qv_M z?4#Iyf_;Kl{8#*1W-SwE=XjoiM}r@B|HW8hERS`Mb&J)D)enmw7Gtmb!OVl1yVG{3 zjrcU;)AY~NKO>lIfByb_O_`=_d)4+T^hG=~KQl`^q#cKR4*ATa&ZGjGg&~F_+c0sM zSS!=Yt|eScXpyzZpuR`m6xS3-kP@WZW4Fhi1r_iLc*xCv9{D^nEi^6kJJ2^l-vmwY zn&2hrkaWy7&o$%z#9QsH{!a0o;*b14@|S;J{@MJ|j3eKVV14;?{qyzDx-4B*PC-t= zii#B#o!U+<*qALVT`OIGc>m#zhh2A=I}GncBY7iv@S} zS(UBI9#K4^_)W!|it}~n>qbGZI@BS0a1Sv&Yo! zcl*o&O-P!M1Xi%bo$)*4$#Sy%fcSv;NX(HKHJBNZZ92nmhTnS6de1rF_J3&p&>URI$Hce*t!0-^jd?S^v5I^W?P2X{Db_Ki|)|pD{LfY%ZgWQC416UUklJ&d_LX zG>ctg*LCmf-fKu}NdJcY8^&RBn0A3(fLY0>(x=in@;UN;@%`W(esQ z6O0d}j95l&J~y8m5E&4OY)o5_Ey&?ywC%V{pi=~uhp-sT36*$?o*zdmzy^>eQf%Q&nrH|aSK=X>Bx*3TRgUyuAnPM zXhvwT&uzYWz8U!j&z#Skm^%avOwcykHrju{A%r+`%mmQ{kxHx*JEczP2>A&4{P_9t zKA;P67vk_U@Iv@Ph`m-%qMk(MMC3$Z25ybd8lSE1t?tX#%hvxI|7$$0Iju=4Nhz6> zHz{vP_L6L7Ix}68A%Ud)`i#k$lQYq4JEd|;<+Pe?!tZ-PgL6K1!c_ zzkI(-5tkykEG`T0H1oyt#nWZeWdjliB>pM?Q+^wCLv};or{$TU<@}QQCAwT)E=1z87JwkK zkbNWfMlM+2N}$THvTse_nn8_&8tzrMIA?Lrx0&B&o=88D z{xs)l&g_EO1p^BQ7FLv3l<(H=)?RG{fgcj@Xve*edqaJF$dm9V;kYYcaabJe`2-uP z2>V-4%1+AgXWJgPJuW~VAWx7b$WleABJ7Sse<||U0aYAvF!*3Fb_m{g-*->4O|oIH zdXg?l7g-ruIk9A7$@;AISxujtK99;6m9g&gy3cE}*JS@)_;+DcX;dj7imKNb*BCEZ zFIi)pG0s+i(xd-nFJ&*Kh1NpD-P|tDF3vFiF#b`|QBkTiRf>PBr*Ti?&dATm@!t2d z_-FAe!7IU!>>t^WBOgavX;#_~Wsjy`&DQ<8t%m=JDF`TA50wLbl(A{0;fB zIk7n~`ph~H!oOp40n{H<)K}0nG)-%5Ywc6xQzQ1VZ0Xw4HNj_s&+4GnLHOQ)$1nRf z_cnKvaFg(aZt=bleLaz8Tepk_wSjC{a;z#hdL#e*w~G$Sqp65e0MrN*bm zH_4mi=tUd}N|U5XurnO}52wOUg$INNgl70<_#shCqSG$^t9 zG3>{%{ek-f(I>69>aAe0X~@uIXwH|PFGr?{Pk~Rt&D@*0-k`s-{>swkYIARaVvA#o zCsa(RC{>lJCIUC(0&wDy4}*IsgTKN5GO)VtN8FEqs~$5qCO76s;g7;wpx$bl*iGJqkrK1z##|-f*Mhcr~m@?2W1Ckcz;pGDdW~AtW6j%A1|LS zm@dG6v?0JXj$yk8`%52y~P#%RZAKQ?}BoNAkDYqU4oeV|aw;%o8s3ib+~MVmz%7Bwsi z`;CtCj`Nm_my3I(JyLceJMmo7xul&SuLQ4ziSmi^EKs5(Q8Ea0hIfYdRn%8e6=4-& z7YG*!bQj%KZ>zVJHkCG2>8tdBG*Uk=e_lScbZDtxfnNbsl;-X)+FvxJWJpP8d1v{V z>NC}w^_%s$(*Ue=dv14bH*y!8!Or0MVe`WlG8QuM>=Mik=DrcV5utCqZ(QFvJpWEf zoC0b6yu`x^hZAz+bK@oO+Q8euyBl*iW=Q0a$oA0o&{qFee`JTJIno^Op-13l&C8nO zmB%Y%6|o9r2c+kv=lzlMN6xj}Yq?OxRQRyuVTnSeP!-n|*U5}BqnFLgHn4MG=Tfhw zUJU^a0hrfBpWF`C4%S8PMeY;96G648T69=;SoR!*cdXE)(4<`;%rJ_jV(H()zlBg^ z!sSKtqM>e-T1ToQ9rZryy{K(bo5(0KKCXRS`%UFHmE>}A`MBb7#Sd~H9;HNo$jBOv&v$#6!D-{I#Y&PS{ytt8zc+#%d`-F5M8eA~^Y zn@vmgOZCXsdR_FoD61f=pgX5KXF=|Q+*6>@MWc&CDncqUt23+j)a|J=!3%pu(!0{T z@H_No;LX6_D8EtQkr{=Ip9o$A@3ZK$2ryYvh+)eK350}4@sHv!fw*$6Tq#vbOknADZDS0V* zF6e&GEzK>BtBk9BrhTSOZ%l9O5B=GLoP(TDAL%6^3W(5bMoNoFic_Gl%NFD>$p0tjpBz#)Df=J@B5Ao`^DEk`*sBPFKF%w(S88W9 z&uaGT@ay1tc%CDENBod;SWl^^>}Bj__^^H0$oTAv?TV#K=#swDzEaE*$I0X5O|mB0 zM(IXrrYKWH=90M$Q4LWJs)LGMl(=WYO!}MlH|-lO8!eyopY*;eU)5H~4`&u;7HV=d zIp1Y}mo3N@=E_| zsBwz=p8Y*r%9rw=3!e**N{;q=+{@z1;*<%>gg+qfIYc%@29=uP0kH#OKe0Zs&PSe) zObJa1HT#?W0e{l7)wb1!S&@hOhx*;B-KwFAp$g2LF3w$?`%BI*IpaXbfcxiN!p{Vulu6*qV`$iv&IfnhY9-xzW4s#TOFtlRc{TXA991x?0NITpl_8bgx^CT_hC2;cOjk^}5L)h9?xK2A zy{iMN19pb)3`HJ3=9N469emt*;GOSE!j*)(Nq3VjBwk3o8h14g^SYNMmnHc9=VrUv z4`>f)qe4f8_V?@W7w3+1uQRVR?=$Q(0AitfaK+$?7ez0M_7vfU_f_mkE7MHoA=tYldhW*T(%#@S9+W zWQgQ{^8d+qCG1LwPmISSRN~tBweg!}n`IkB8$`*xWFFY=qGm%s7&1Y?hTMgI9=SX0;AmeC_AvFnx_xz-rcBeCwl!@h zI!<)pziXiHK;LZv+XCi?&JR5taX5m(WH5C+9nT?j2ro!4NbyV;k`R)x4-}CUkrW*t z9Um`=m#{=Ekw4d;o6XE-KBPXR_6_PABqoRni=2y`*g-?lQ}oN#%hlDz)y4SyK2&h1 zpgX@ie{#{}BIN7fEVQ}0xjL*itTwMPuTg1HTC{epeNy+NZk)Ys3*HvIF>GTPT=yby z-w5mWm}mTF`~+cwa1L}j{}BH}JaROAKseh^m8Z({M0uj`1>Xz)$NnF?no-S|A2L4# znTr$M6Wu9oDQ)OSxvIaak5WgeHEB#jb!4-(qLTRB4WejCdq9{>RHkG|muu(8aI!6i^Xff`Iq;jbo_gFY* zziDE5R%YDUu#jc=N(D7&b=>O6Gh3AFmZO7XVriE#V)y3-GSG=#tSL7=~i$jYa z6g(*SrSO-+WIZ){ZfbG2U#w*}AcFV<*%`d)@H6;RjfzkcG5` zG#k^#Oy{I?eh~a1SR-B|PLd_bZpGhXBE#X z##fK8zNEdR#r!GyM!;s{z%DxU(3~TkBjGdf0Q~^{T-3R!y_~(A2Z9Fzh}4Lu$)?HR zS{{$@DdaXCi$50ME$f!`m-Lq$791AfT@ik@RGjCQc$awhclUS4wZ^rg9~yI84wXaI zudH7$7Xld?D?#5Ee_xEdhIkn0ebQ(*-`OP@e;`r39N>NiTp(VNzO^mY5Hk; zWoTt+8ZnJH(>c@m*8JAozp;NK_Fk8$N>s-b#}r2jj}+bktpQm<3ls|!e^mZac~^5+ zbHi}M@LTh5%@=GJZ0b&R=P>VK-q@{FA6g%}HezjWrg>e=x|pH-q5Sir^P+RobJAh* zVe&5k+Bh8aK>9%Xr{qt`W5HuV2secL5Az?UDqIyVgmBIl-z~o5J>xz7?fvavn7%Mg zubW;MToqh3MlnVKamnJu!oq;joCn}8^qo%F7t+~n4WJzsL zZAbrMDRcl}W+H=xJ19OVejNKa z7TJI3cdd!2iI@;HA!wuDM!!I>K(8zID|Yl_zps5?i}NtJZYTkLU0hyRUbruBU*7YA z=LLI<_7>?&^dQ4yId>LN@j{?iu8OvzcZ>cN(f!vP@NY9_%JUtRnM@^uuW^4 z*7O_nrz77Q*(Sy^V;Rm3NFZc2-736Q7+n@!b{2%$GoGHOM^BWO-OJw7+0zLqYR^2s zd47w77Y9G5Jf|#XE@om^9@^12s zEF&wP5zn|9dNuS+;F-WnJ(qe0ItMyuL2qnSZB#90I*$V1Z>eIb0vTz47X4YY6f_ZJ zEw&a@loaL5s+U#qx_DhT^l7A6QY=ti(QfIsbW?mNK0VMy9vvPX4lzFlg-v0rcq*Po zpy@pm&y>xS3FHDf#OmTt$xg|zkKwH7tY|TBF;5Y#h^9nPBKidN2?7h57ocD}r&*?1 zu*(OmUo}u;qbg7qC@+;>D%F+g%HUW~47IzZRb^FWJ_;YjimDY==%+Bi3;V-|v=3>= zZl7nq&wSCVemCT9$Rye%+B?QO#%#`P4rV){qDK5d_CdA-1jnhk&7fKGS@J`YLz0*L zm;9EfmMCTfGh!5Z6uH%>)hD7mqMPoZJFvU!Qp2T&f2#kfeq8>zyrZn6OaNL^x}+34 zGNzSJE3Z&hsLpH7Yvvl}8fqGA8es&}49Cm1dF}Js8QqL-WS?Ny@BXm;VUrn?8Kc>w z*&Hs1tB=*k?w0J96ibVx7vvY@9?;~t$#M8xCC8FuDO?H{{gQZZ$Ijd*geQcN?vd_N zbE$cF-SE2Qy5+j#>f`GFDgUR0NJ1Hm)r&urekesw#EYsIRa7li3wZRp%}tw|xK^(9 zN5_wj`Of*yZcn%8sozt-x1_hETuLs*9ASuC~v%`r?A?$%UU3=2`A>}cH4xJmL!au`R-c1m_iR`FKxZb#pa-bmX>18hNXrC+7raL;hh z@%H2Gm8MG5Uc+9)tEyL3DU~Uei^><3=azuruAl_Lbx)C0omB0D@?AKF*Q3{co^_se zTKly28VIT%Bpf8XB)ue|A3G>KsJ9O-g_Xj>>^XL=0FqXiC(Vt_xomzK6JnxVn3Fcd9ehIURZl7emk3ui9U=f2;mhZLHW>Q3fwq z$&`*PA6dS;Vt2)}%4d~108$L84XMTRIj;=_%)S$z6P^IS0Kcz;z7Dz-aw{Y|JiGVv z_d9f3=JE6RrNYwQyG&+WW}GHo6OZ>T2`E$&D&g^Y`~@)!VtOKbB1f4HMD+VeCDimdkGJC1L6cDQA(G}4Zx74@P5R<4K z*F3H{*b;03M1UQ+(}g{SJu!YUevza|(gW%PD)I|nN578l%})tKg=OM0@n-2}=>z!# zInK|H$dAZ9P@c3}v|4n6cY>G7N@c~- zWHnhmNij)rsPs^2nj%eseKBBlu2@jDplWB$&YH({kL%Fuy2i4`!tP{ux}e0G;6v~k z6F4Ri(9xl{!*7S9FO$h;vYYr#{OywMKq)jy=7L7bM#>Z-g$UpKcR=tM;bO-mTwNp3 zEBMauo!>mqJkPkcacwJ`S2iPu6VJm7lndZQ9I4!{*sd^@nab+R>&t(s_@#neO|C|t z!0Y#j0_0|CO!I)jcg;kh+D+P-7L-$(Q|{o zfGk;-4E9grHDvf$C^j;{-pXCp0Yr>0;7adbtrnETf9Cd)y(JZT6 zR+&?lQ^qajmJTZ(R(zu5LFi&+%b)Z)lyZ>?n zasze-?+iW{b}kHTMYMO!cT5_a#y-wJ&hHj>3vrjs1>qhUeK0%$PwxDO%2Y7&(@ble)`(rz7l1?dN7o-+crLr+cgJs8@Uq~ip-)2>(-zaDY$+S+IylD! z#{}a<<3v)4RI&@S1%%8Y^yuJoGYL9hXV7NQekcD7h+^Q8Si-P@z_jBrUbA*(!-#?#ea+E3FZkf_k~%j zALu{OH&ZrK@VlzsUGGlmNa^sHJ?4dt3mdIEs}6JWnAiVb+5gI>lujvq4;oT7r0k0F ziZZz}x$=wZFRB;n7V5C?j?hYI9p@b9yxo1f`y1bHd^>>g^Dg9F2;d;YVcZz`i1UaO zBnlG!3G$KpNKGJ|UxQ^pDuP!oFPArpJ&KL@#D7Bm34zC3&@Jy<-VitGyxDfM4gJPK zolsX@Rb2(OCKV=yN%2AXLHUQ`4@EoZt@5pMDhPA@f9e0y|K9X_(;~<>O?OOpoOYjf z!`09$BOoK7IkY(x=Po!Gp97t;xMRcJ!f@cc;{5^de-Jb5^$Mkw;(JHw4Eoo|TW5HFH0lAs!fDrd+Un0ea+JwpEq{}q-< zN+eG}D`hKXN2Euj<3KpOg3%NotaHpI;Y-3>$*p96KYzajPl5+5!w%$KLgjh`{(nwU zO;O=aZ@zNAa;0LW;;izl@-^sJ)vv02UA|6Vr>{dU8g}u1-Trm^lg=ldfYtP-`Othc z0h)lCu$nNiMn^4EeX6KAk>PH`Og~leaON8O`hU>-G0E z_cXs({$7cnxh~Ka5Hd=UNr>J~+;d%Pyw=FDFf1cmN4DlTbDWR5A9Y_QTqa;A@_O=m zGG-Cb*S?#*n++BP&T0N>zAe@kTP!RVawHrHzQ4xBj*GSP?R;B|Ek+9v`OOiVBOU}l z2p-}$#1B0|6I&;?e&6(c(IT!ii^sN%B59HtGspI zI#|Efsf}u5iLJzTsN+z_&hDMv@G&GXNDNXOHI5oc3#0*NE2^E<&bq_C!=B8W%)>dc zuh>_NGjj$=CYFh>#9oQbFtQwpxU6?RI#ZdL6M-qGt5^NUsWWi6V$jnj<1cc{kiGqCd|nsIg^~Q)^THp`Do&3 zVgfmVObe%lW2Z_PtE~5ZZsA+_a8(g*5^WNl7oQh@Bl$*hQG8Jh=rrLR&K%C#=(W*> zj6%jO$}P&wpqW8~2!jZ07u$8X^>C}X-dz7)^Io$=y+l1tIZcV(3ZgPmSrqI+2P+0E zG)j#U8M#jlPYof>AMCXmL<@Sa{g<$mx-eXh-xC z?h@|d*u$|)g-eC&#OuVbMXyD#K#K*71uuCodDpntxDXkSp2eKS#0=&30L$E`xHnKKyTlBW*hcORhHuE;~-U!|ZCI}}8Z;Eb; zQe#tNcK~1OJm);;3F`@KKYc&_A^9O0@G3-{;Xqwc7iRIxTgqF0Yy7Qok#><*p;oAU zDtsz@%YDlMD^j+jd`EevGE<2hjo&rDYby1X`gmi!5&b03?a%E7m%+8bdx5u+Xe4S$ zS`ub|w$iuKF@qk*j$_-oc5X^+O6+OjY2iegyv;))w)UOq<6*EDzN@kVpDBV%ISGiaDhx!jS z-q)8JmKv@$Uu`~bK5zcX{*%20dP*z3E4^z1Y66f!Q%k9(m}zDjvaxk+9UFfiv4U8^ zRq<7^9XLpG&>G^PYE_Q#i)`|CDY2Lm8F)XmT1Z~<;m(~wFX{;>Ic=^nr+R|ZP9K2bpF$M*z2&@ z7QZci1px&CwqRTE80r}6xX5vlfI5$E=eBe4vkx)R*g2v(B4q8Y2K9~Y8w=L?nA4G` zBY&d(MB7TV}k&mKw#rQ>JY&$dI2hZ-+vFKCfnGp2G(?|w#DCM?sIYD?=% z>PqI7%_}3T$g00;{;J8>=j*XYHNp~M31|ywLo5ZJJx}uZr9$fg~zXEY}ME*>ELbX`m`lwNkTE^S$ufx1A<5-kW@5O$A# zkG?!=dDO2lzs4-&E#zH`y%vklsPU5VlHY*~4;VZCP!0&XyPwjZ(m#iN4tq*^O2XW| zs9V&1tMyi^AB5d^)$Xb#)(~s(XZX3|=ZYVdKPqQ~@aI7f+Pa!`H5s)TwS-1OBRQx^x?C69F0|b>-8BuUA5d@98}&U^Jyjc&8^_l0B8EiVAm1S4&TvD|h91n8 zKes)%bv1T1f~{7IEZiCD8ESKdxnh6i{z{9=g2+-8p8qD-POkl??wh**n*VFQX1Qi* zX=`cw*7dE+=rMY5cX&MLcu+n$pL~yck2--dfe{-W8~vE`m@|<-5z&zR=^z;Q02y~p ztdK9{^Was>s%7Pz7NPNh$!BkK=6oL9J4xH0?~KE976pbl;a z_XBW9euTdD8R0X+{}=qfVDuiR5>g4jb^g}*$@K~-aF#`JQh;R;{Bzh!^RJ@Y+tp}nv--^}u`JWG9+`uynsqkmFxQm`0+ zvZsLAT@NMS3)u_V(>c>Q$3ghs`po&vnG3=_e_b!Dk=5W{W`D*0ip$E& z%4$WmVx4lGa+MmSS*0QC$htv>K?cl6%`nX{DOwe+R~ zx+~p&Jbr|Yhmk&<`d00hh3sw zqD4=7b7ga-3xr(4Aa#&>n|7P_6X<`n|ErzVIIHn=%juSMTe=PJ#{=C1-D5ptJu?V1 z2#eK!S&AQFXG%}5Q>i5*+zM;Olz8W(Ha+O?#4Bmq3g6g-Lw;FOSx%N)| zo%%h^dzyo-!B+ISOmCascCGVT=c1lPJ;*eY21oCHi`!0^T_I`>L@_& za^LXY@Bn2ez@0ztOOfM<@3n{YhxC?^mXM`EO984cBW#6E!aH(?&D(nq-SqW0VRAZ+zN6XQkt~*_azRQ=u{_?bW+8|=ok>X5ozUg|?HO+gP z_jI4>KF5MUlw*{)5pN?FM=p-ciq48&9kV*-E8bVUQ~XnWz_kcWpkKJZaPe+6GiqiO z;721ihineP^Ay#K>V-MFA+{klSWneKJ+#hUo_SkmViqyw~O^pAZ^PUsL z3S#-tedrW;F@hLD&wQTwoa{c?o!XY#cDw0z(*eT)!{0T3*G#UOTve_vSF0=4m0l_@ z)e-d(^_8kCRj|(2A^(oq%xq3Eree?U~P3BGJ6KyBjR&}iE*aqx3?1x$IyWAIh zzse|Olr0fkBF-|-GK4H4Yc6{(8{gMo^S=gH(gZ&4XI}z49G|IABc4XEXe`>6kS!sX zgDwZn^_lDQKj;6Pc+bWC&!D|8|EA4!S=!S748-8uYlP#$#+t(hvPK)G#TDjy$qB(W*xJbQ_T5+{{w#t2&}8I zxL5v~_caeYSk5ueG0#xXP?1SC#CM4A7hPX;3Ee{Xm-a91T9ej<9G@rJCt75v$|_}* zn?cJ#b5wIw%d3`G^?IfZR}Ao|Z(Q55wq+o&%dR-CINo)>>x9Z}&t}4A!c*c?A~Fi$ zxEZ#cww-n$@<8N<=nc_OGr=~+m|_m|4)YrMjeP9m!yS=`DPk6f7l(^NMWGV|CkA52 ztj48r9kU&?oo+tejJc{3ZHe~2=Ducg)#fUEF7&8+R9dxGJ-T{yHPjH-tkbX46YGif z$ZEM`x?_UzXKRWh#Q|??H};mSA+8|~2^tb~n|zx*pE{ok73Z{d%yrBK>;>#3UJ`E{ ze;ofW-d{Wl=*yTdV=hKtj3zNjOq{p8^MB`GNvI@{-DEdhqwNjA+Ji`Q<9x$>!$jRg zU367+)z_-8Rj}d$0`7N}cwZl0J-pgW@1@6?%e|(1O&84<%`gVDQQ9f(H(fVfLwbhv zAiHgZ{|Nu+;OJmxI5S*J*V3^}`z8A&`w-_4CyW;cTbL6(sMF$&<&NbJW({W5)9dMr z!WV`A7yMr^?#8e7T0EBa{lM}&x3mq^h+T75~AA_g3tvjVaLhIoc}8k`Nz9j!ZBk@2;*VQs@E{U-hS zn)5ZYHM2FFt2bA}N?Nn6W?Rh={SZBRfv_JQ^N%N+Pd4jpI@|sB`|Sr^2VL#m?cIY3 zg9(#~lZktR_5^uCJ)x(8&9EzKSJdR_$MR9?c_ZKjpC2uAK)F};oa*=M?x*ef!39o2>bN;W=h}&G?#;`jPqp zh5?3sjr$tWTZW7@RjaBM*`ljmt6gil)^s6*I?q4PKb#a!$_&X2SslJQd=Fy}19#T{ zvj1h{Zs?lenqWDoAFm(JhvUOp7`-qWGnuX7t>MVEK<*DzdwB93d5(M5d)Ar8nZ}&D zoI0FcRBNlXNi|6|%e2e1)AiH!pF#Lt{HpO)W23Rr2vJTmGPy2xTk2ZC#Dk*_Z;qN>TK%l2gS$8*Sy?xxoMAKk0C{$qFs;*02%u5p;adkk}+P zo}v2j`|;m{z_Kp*%>T@v7c(ygxr#X3{(*ldwAb%jgKf6C0pP$H0 z;RJF54-gIzMs|(t+HK!$$Nr3a&|i~Vms|H!?N7CI9bIRrG1LTT1GEm%2i*r9r=C-f zGpP_$h^cRD-&PnI+CMr!I+bpv``4add+zw$@%hsK%ieoCR2_xCV7y@b74=utJ@!5J z4$ck^dS1>5&IlHPCW7!gFo%=F!S7?Q2(O5tAwxrcCjLyk?seS@SxwwFZrgw6|IB9^ z&NO^s_`<_8%?!mXdYJy6-^MhHArL@W&zdb)|Ks^+nr@Hsq}1{TRLfg@i(a z5y}L;$X?{Dl&cgxpMPL{U<{8Q9*ysFoNwy*I*dc`-*Vq_FS9SR$ASQj9EpC_Kx!Zr z?~GkNT|M`l_nfQRR<&Vw6xgnt&^vuwe_KBX1UNbE0NnsxxFOtNskhV@G!`^MOsD0H z`Hb0R1=(HpTh3d~t)8u(g@lEKABjH_X(Sq{A*3P16mAM%z*xY*dlYg(Q+O#nCZEY) z3u@#x_U>qLce9DHiLsBmk2;+^oqR0tSRgXD4!aJ!R<^Hf53&YXao#%#IyL9l&aYjm zU#Z9QQ@y^v_vc$xx2n!r@2vN3_HK4q9G2}CG0>eYY zL%)jnDx!{FNB{?`BWJe#(5#y2GXTq!6SG5pX(U<5-boeZVs)^d44L=*Ohh(5}pb@@SO_|nA zE6&R%bWG?N2;Q3|UQ4|E;3WuY%6W1gRX`OW z6L%NvLvfEgE^1sDD+WiGBKH0;8oz|cDY?V;C>;rYN%@A>qpm!z=pI1QWzoRhn2-L=E@!}T7WM+b3>x`~Yw8<7Que#JS~IaW`r zr*%sEl=l6d`#a5D=B~#+k9{^1Hxn-fUJA?!$?0Xho}-_mKVv>)&W4`X6}%O^K7u|1 z%pA9apt_ceeIA#gkHi#ViU5m!$V%c$;>DheJz$q|s@ha-xM$hhytlb;L*Is}wNq=A zdZm6q?SNW^L192%(BQhkb@E1ePYL?=UwOUqTJO8w7yGP! z4*og#K-ht>Q}k1GtgG~^bbS8%kbFqUV#4?6qK-u!Ikp_zIP*C3*5<9v$qmU3$kj+T zBpbSGyKBSi!|VNl?+VpX&F7$}rqR-9!5-HY9Vts?|PWS%mrQGT;O1?8~LVnP_}k5_+;=+;!UEYN78eu z^Hk?e`%QbaIof=?`F8XC#`%qD^=b8|>P|ru@R~Y2XWANU4Y}v<1>Odf_Rj4^#5o&%jhW6tZSFMYf9oF35`26?ldk5?(Wh! zG&Bx@K;!O&hQ=EvxD#9(NrEKA%H6%{JEz|DW&fC-S+iy!sXWhppR@P1*_b7NE_p7g zlvm2p|Gh79U*i8#|Cc&2V<1||GIG;%(~qPcNo@n{`fNqEqJy-9bUtrBZ!KdjLqHOc zplZQC&^^$7-G1HfGyBYTgWa$|zd&D0TT2@Sf#nHKf71+u&4bNPEKe-^ZToG9orj&s z$7jdgKC3HEECJHlM)%$TY&@iHvBe>d}QRh(k*lg`o{out9=7ffNp>?^_lvE zp!>%A#*dbdmJRj|cKkfu^xgD9jZg@?eUXcNo_e0znAw<#Iex3iDypAQKOs+<7tgBH zgAM^aBj9`(=lmVgJEY?b9iI!xH)jf&Li7$ar8K4B{(rr1y$>uRwvVQdCP<~~@!74d z)>e0^=~7b#Ma!3_6+BOV1BqZy;YFJyCkF?=yJhh9@;Ir3aQ*I(Yh zyn6$C0}a9r!b!2D*k{t`IKK_g=Ys@;1b<8amcB@Mk%0H|{>lB552PGOfk!Uf9E5Po z+8jT3j!}(KCCCzFc*mN@pU2;UZ`!i_c8S`^)mD_)YsM5wbi!O z?$YeiF!fCRJP`g~W?QqZ<80$>E1fHyUbojh)Hl?Z8_W$3j|`7YCQc?^q+g^Lvy0gQ zUVzs`(nQii)3&_yXfDEeUy5_pM+PT{Epq09nx|fER23W<$XRnv+m+Z4# zvs~DF(mK>SG&4Fgx`D8P5GIGow;8t?`#AeJ$hg9DOE2I~A4@!z$V_FXUI9HydzAJt z^DfB#U{A zc`%A%VrKY!;Cx_$dx9Hz?sLp@%(;eKgHo^5<2(7Z=Co!qC|{ee#mo*emxft}Sz!EY zQ#n;m^kozL1pl9rKO^|Q+C<(&oC6XC}l3_MB0h8 zPpO|$AEbbi9wZ%698r7`eGzrxcHtsdn?NFvAl?!k=^yF8=f39_I0TNl=DB8M-y*lT z9|-W~y8HV3`fi49;GVoaOM@LE9U{jF#|Y@h>d)xUz&#fF z7hlU?%QID(s#?jll5xI?^K*Qb7o`-XtVv#zd`opp)koS#N`P=#J5D=}i|V4Ph@h}4 z444^DZF_AyX7w@+nTE-_$yj3!Thdj!8TuJ|vVn~FgZP;RJ+OQ2d+mkJLMPQr_2T_H z2EOk=I1v6$_)fS%zd^_Il#}n|Bik8PwhF*OtGB0YPx&+TPe?q@Os$lNj#iCoR59z*nfiFi__lIUi3<&SW~P$%{|Q;gT~Mqgr2({x*a-vrsH!n%baDt zVZC9UZl7*vJJ=4uG`W%Mdm(rs&JmXpWyHGFy3~J||1fdZG+i`Z)K1Y(aV7CeV)x|k z$(_?Wrws#Tq-LZ-L_N76u^^G8ASsH(MPeae$bZXx%REduOz9o%9qkwB7a(~^o`0c# zZGmZlslr%c%-84ZkLix-=7VtA2iIgnGgC9u7T`f2bsTlP1NM6dPY2H${~AB`7tIdO z4&%?S4y6tS{j6vCXZh9QYB4frv2(pgVvj_9G6;4>cyGY@C(b+`C?6<`q(#y!QI-h1 zQw~xOQfI|x#cF&tzJM#>N_V6?Af95`Y1(Pxf-o171fAu>Ov4b%7-tw~S+lHj>~rif zXUwT{>)au4$XhQ|FZ5gNx7b9&M8ZbOMv9CfW8m|1s9>l7pH+tw4kzFYaZ2)(C8IwXz<|Sz7kogd>`Kz^+)~KPtYUQBQ~2nn~a`3 z%$;=?br<2x6FJZLTtJpgL2^Ozjg%WHn?UH>NPsScS+ZHO8KN1YMVv*P-t^w|v81u2 z51|jCd!Bn9+-D%;16Ch#-upD&G~FisCjFnFRfbiD$EL@o5_5^!Xf;~T+0WURIF~r# zk>?rf8|#A#=HN-fNkT3qmvWnao8F$=o@)>o1P!GPrRY(n18W_u#YwnxmZLfS&w{|Nsh90(l<@gev-(lOFeU@5TR+!|S>J#;M=-q!3a*Cx1>JpEN#ck7|z!eS7%dg9tFcgjEvHW!8(; zi#-fJjC-dVKuP9s({K}vRP;@CO?5QT5bY3chAu;g&#j)up2m0Pcjm^{#@4y^x%TnS z@y@C4sqWRj)jnBB7J5&3Pbj1oQa7?TvTks1aIXok36bxNEODr#Q?5|0Q2Etd=RXZ(4P;ZqQ^d$W9?l-l-b~s|>KyJI9_Jh9gJYKq`O{E2XT~m=M!H5i?8`8M z%5~*B{Bz=rx|z9|`9I5lmTY^rUFZ-xz$)lb1ylj#Qx1;}k1ZoDBejHbcR$O|f@m4P zR8lI@CFl|cD+epJYONZd4Nuiifw(k7eJ#b+mKQ@G zIqor#wf@rl(mVvZOONZ0!;{>od!~J+U9MZMy8}YDN|C9^G{Q2%a>RNh{<#|D8sw_+ z)Oe-^rUg!fPlRPqhKjpde79Z|Tou%p)R*|=KDk+CRw45P|4c8FUMAt*BUPCiX9**G zXeECozXQ7i8=1!VnPLT40rWBNu~j7{^^eSV}9%uq!DRxCajjBWgy1^d90XO0L!Z4llqf-R^qJ0 zhDi;RaCh`U^+7d5F+)L;lBD;z_qf*>*BC!2KPWq5J7Srk%+Or#TyHaHGv^2E2P^U* z@pF!|mr>eLKm>4UN9acA*ao&?H>i!VjS;TRX52LZzQDfPwc7R6`_$Vh*eMu+FZB1l zWV~ds_$+>BQD@O<*=gB?m z`f~1a?j+G9(RAr_sW3qp=bO({%~K&GEMJwcg6aY}<|U5_j|s1Fu5pkb@CW%1G9gNc zA|DOs6!<$Hu|zC@Nj5>xQiC(L_{dyIn(gAIrEhxIyx&Ttj_JdT@= zo1A8+xtX<@HEN66@*Vk(YFD*uw{N$vW2j?jQFu`pFrhIjiAsW)78xwj^p_BZ$35gg z@j$UzVwUui^^>K_Q{@mVO+Zi8OXAZG((17kI1HRVCsA0 zKWvK~iyb(BwR)_casF}s_2KnlIKmQ0@Kr=DqGDeRzFYV3_weDPB-}084cqp_K1x4Id&+ytSA*Jvklm6a&5`B`bA?AaM>&_6mzXo5i$_6F5b(1w-8bEbol);? z?`>nuW6T>&8%*_#^^BVhn++a86FvuP07$$)6&$> z+|S$+GOoC|y=cE^$6W)?JM(?{z94)(k35g8B(5ZOpmd-hC#Dm-6Wb4kRA+@}g^Q$% zq?cuvVZ&A-!&%j1$zus};=2gC2+(`3Vyc)~R1i6fJUcQwQa?~XkmODB;`tVkZq|C{ zdgfWsv4B56yiY-V!r02x%0x5M%vV6=wsITZLw7lMIWg0+#<#{-9jFc*2^|UHc@g^n zZ!&H&JS-3E3hxRpN0=jABVHpuAUyz2Nr4nUTlg8jAiN;N{ttW)BNH!1ijiQ|83Uws zDC&#)YFsrg{7m6&80^31zd^5!uZ{Tmo(nn&>SgW)r@IpKVC!J(Q`=M99LF5TW9MV% zOz%wZ!ob2nb~rmsAy5drNxMl^)GF%l%-@;l&jQPyARq}yK10qZSC%X51%g$zWF!b8 z4Z_>p+uY9J^F~fsMl2(i5KagidYGA*+#vtSomhA{(N2MS|>p}>GY zM_3`463vO`SI}KQ8M@w;PNfsOGVzSQ#J9xvU*Nw$lSq>YRA~{xj!U`4xW&+O^qfLo zA#bi|t_ZuIv7_RN?1>ELRbxbBM0*8$1=vfni@A&0f!2Zcg!qJ*6iJFS4K$5sWdJW} z!>lNFSnV+HFk4MlpymAm)S&LB#-RBioR`&yexGO7XV!1_Z}B_(Hz*sQ?Vas)1RcRG z(Jj%zguw(n_oJ`iHTyODH2*YTB9sWXiMNTrOTSCcf&dvUEtix_ri!MDzVpBHaTcp|*4lG3I0ew==sH@r8zY+<(Wrs$>! zP}AZg(j(IKpk5$k6iwkz;fL8_c4J0k#$fVba)(%l*t*cV&|KeKA9k}s1kQ2Hdd!*% z!uOg8)EhJiv;g$f`qYY9@fRQql#u=H{M$JicsY$cjXYO;SA1^*ZvutU!e|OPg^bU^ zrmUu{ZQO0#iTsIt?9nO_mx!@n4&Q<3M|~oCB9aT`LiFU4S!5Q@-Y>;2#gJ=w+ke|{ zbz9vdoFkl=k-cWQW;t&@Zw^8K8RoF@Io`?A38sl3EnT5o_8h38qoL!3^8_qb#hx?1 zGd^uV8+aIg7_J+w8~u~`ClR?ym{}Uf8OO;KWC}hBKMC0qw&XYIZ_-~u$3a!%Dlz8x z^7wgtd~SB8cBW!KW$S3`=_drXb z7wwDfi|vQwhXeg5%RS3IIA@y^m=nM|AF?2^6DdZCQEUtw<01PY8&-lm^a3OE9G~fV zpe>RulBVLO;yS`Q!dzZ1ZvuNlyaP}|kx(!r+A7p4gxUS&?&a>Aj+>4twkfuNC18<* zj+l>_v5U+Hv*H%k7FG-BgzbcFm}8g&toP2(uFo#O>3Z-UihWOK31xI(@4WSr^^&*Zx8hPksUX6RuoZL#9rx?q2;B(n!tKIf zYYNQw%=cgqC+_a%TIX6nnm?NJK-klSpZoF9-MGcN#d_a%A83&^wj0hH&f4zUZk(6Z z_-p*OB!W5o`w;<}e{lI7K~0tpo7FqwJ$>3*W*&B|Iezii2YO zeVZ(sEL#lPDBURSCg~=bCY&Zj9%3FlkKLQrn|2m@y6#5rM#qN6hIaaQ`m?-QUW$w2 z%5-EpE?X~KO=gq%2Z&%HSeAouK177x%|Ah_?5pg4hu=}?E_65WHSiH37YNqf5Lnrw zfX^d(C?3ik#vKO4Ah>#gUO<6zRD8G0kS66+O|~W53hjmV|NmLf z@ML%{`7Zgo1-k`to>W9CBK4y7qIP6z=*7^*P`hBeV5TqAhv$&7z;J6}Z(*Npn{C72yZ5H|rbgyQ z=DQ&DrQ$nilXa8T2?bM~T%BAv&uZpt<{KRx9n1^og;R(r#6Kv1P$IMlZ7pjpYX^4+ zS0zvhNMe#0JGGGUSzB6L+6(5OErczE5c%UhVm@LXp&p^$B;6#THxN4;;Bg#W>s#yF z;ojk1CI^q5lhBIo3O%VIaKM}&Oe>MyMK2RyaX@ikLLyF z1z|lN2E-vThn7PtWE3*c0DqKsly_fnKYpgd&-)0_SkYL~UBO*}m22hxVEt#_@hK~F$<&T0T^48mOz zAebF%{BC1)%q$_o8i} z@q+OJHCN58#jM3dK1Lz2khn3rF^V3nZoY25)}Gd$=C0PjXK(kw7FYi!6(j2g(B% zeHVSLJgq!9*BR#+=K#c~eWz`wZ39SS)mR~xXPXAXcOQO_u&*r5ndWr6+^&cx;z2)O zZa6oL=j#e`1$hB|0evBBA*&m=Tl`ryRybBTQZ!O@AJkmjTucGOIewq;_khJ_vHzj} zLkBDvWjyfg(4W*j&^>_Pt2LfA9_*}}3B55njvNOMG|WECe$aLh8We9pyWA-odW#1- z20BiGX1iv)c6oMr^w8H=2>jy^e6eHf7(6zJWGb1OP0yy!W6xus=bz^z+mSA!i*N?@ zF9^>EjiDgqC+{Z@xpPezO&A*}8z`fQqlmkryP}xU#cUX|8*rv0bIP1J-^b5+7ZCPo z;jZ`!2>Adr95WnRr`EZ|wZyg3v(od$_r>=Xg!lEIk)M%bVlnX|^&<5a^A__V=OG8@ zV3(n1=&0zZXrpAK2re*8SE^1>PI_EP8}{gzLuY z#`cr;lTMINkik|=-^AL)+Qr$$SuR*E*d^K}Y6t)#4Zl=qb0#NNa!kt-2=CyV`JKhMkaA`=j-b5866IBP#^$K5qP7nXyt)6Q*o+wVE< zIcl6W&i9aMP=`(9=j2PzA$9!$mSl92q3p13Dx=B!+mgsH3o>5bry9KZYm(9lP6pCHzX55}6V~ z4(AmA6n`)1`rHH_?%mGa&af?P8)_eFp9orHTNHmb;rDEpeV6@(^Mw;<8?a*aEcGw- z1$ADP*@Ze^%wRRqHlRFXD$bG z7PuqwkUiw4grH_lkGDXT7JnySaOaYlth?nd|)G_~NJnnL&U|cjUTq zUHjbofHJk({mApk!}hU#$Nk6Sol{Ea#%fDyONvk<)P9V9jGpYC>`%N;ynBLs0vLIT zUWs3cCxP$`+EUO`z~OSZRm>`84hTCF$?!FgFpq$lQ>fGP6?h6fR5#Uq)o~SCmD@OC zwirCUQ*1r#J?sQfJ4ZW5GtfxqNN27)*PRLdS3?3r0-}g0(udH8fY}ecAN6ANVq~y0 z*q9v$^avkTF`{OYW|GI!$I`zff1yoZg8Z!={2hEB$H(c$=*ECL2=We?Z*C234fXW( z^m*W`t*fo;f#ZSWFHpI)-1^?~-r@k^GhhNJ)t(xkN#kcf-<|I+@)UU%_!s!m#)W+E zYtd`bJA^v~Az4V)P&L%C%&|;_FO_mjxgU8SdDwBw6>&vm~{YjjTu5b*Np%+{5;z{8}2)BUI!R% zcdjSbL+}xNErTtC-NN0%n6KYR-AFw}KSc-2AZr$P7B^dvEf_5t4GEZ0@ChF-(us9q z{MWvMzJf>GN8Am}4NUy=%p=Yt7Ke&MBp)e$$3ssN*wQT6yF1P}&e#Qn{qB4d--KO+ zldO}hfOfXmbJTOl+%k79Z!K?ce{cWW(AyAp%-hb@&V~Em+qT=bXXa;S5vZ@Juj!`org5Qpp?Rle zr)7a{fer9aP8WO~_Z;`^^X>CNrB(pvn@wX)V{U?*aGP|S6sCmZ-z$icGaqmsaPZkw zBd8Ia5TAgCfmQfp7pH?@d?nZfn#G&Nd%$|YT0>hy3z0&k^MvyRsK|?$p^W^b4m#<7fbf}}?n(FT@$T^+ z@g4Eu^Gq35hJ_Jf1m6Y7YRISLQ!=O-)IRh+^bH`K|Cl%?4(7s+3yur$eS-Jk`5-bV zpP$dq$MA zI?tL0Lhnc=2=DTrY@ck6U5#CMmO#!1?)tHZ0QU;`JVsx{d+~cQPsWpN0(Dh%Rp5T= z7-)lHgW@}MU1dwNrTA_ZvV<%?jZf2&bR<|!#>gRZ2zO{|x7t0xIlu`PJNp^i8Cx4r zmOab<$??hIa=M%>H_Ls|bJ5es-^Y(N6&6T^Qejh2FVF)JdPazRA|GD+JRXO~!JJ(eMi<61$}$Sz*Gb2t z$D?7u*e;4V+UPQyjR{NVFze@$-app!w$c<~f!*mKW9+)<%$<{>}B9 ztIS*GofDoD#+iYgY$t6pGAlD9ShIp_?{u~ z3H+YIp7`+-{sDqll4z%Jrx0iTX}mNZ_FaxG#AY^#5TkRwLaGMkOBQ^_-VlBLmg8cQ!OaEE47qbeuv&${M>i(ck$!QRZf3yG)Roldpm+3l^uL*ZGi$SIvxFQW2ftr`asJ{2xk2s= z(C^SK4u1sxJl;IsEY2(r)bO$JzrTvMiq?(NjWUrqk(d+C32z8&2&DVd{m0$M-KmaL z2gKKHHnYuq-FV%2*>KtLLjOX4+i=@((seN2aNl+8j#OdVeqP*t6JCPL%T( z_b=`-&0-J(5c(42dbz%}v9)o!Wx56ZITO4SyzfKrLvLblVwto|S}H%4kF%$F zig^lh5;+MwH_#u9tlkzWEmAJ2FR7o&p2_ezn#4)sYyqY;_BxjZ%YrSvExpGa#~e7L zhpUF+U){gD*C5>MpEaE|Wm+?>I3qagJL{VooEjV#85e;uFtHE057`RBPFO9d69_Y* zrzxi?nAsUa8bg{&o=R>5!rZy%zqY?NS`)3Q2b!*#uEFme zAT3Q^=zhmN5zc=0g!hEekBhr1ob!HAeo$ggXI$#I)KlrF(yKrXK*)>Otlq5FO109- z+{s)&-A^wf77@<|&j#`Sd)|KDu7p6%H~lxX{pfK=h5Oi6=2m9hO=+B(xCh_m2SG`F zZ$fWE1+juyk5Z4)huViqrjzOOLBG&`p`q{f4&@F7UJ>MTq;sT&pm)S~#Bm@zXJKE^ zX!>Y6-nAyPC$lR#l^pc^IC)N91auYrpKthY_yybow19K_vih;?CFNMsu_W|;(}XnP8P*xrJjy)E`SAJh8{qa1 zat?A%uuQQ04tdH&`bBz=&ZDa~R2%T$Imp@|qG26~=T zAw-!3dQN#xnM<8ZFsJW=g(q-x3dTCkjUhmfWv_3o!pJSe5;Yn^(*#W*w#-rs3~FYw)t(_TBa!avpMGhA^xNYwA>k zpsR8>NMEI|I;R1Fhe~V{+XCKz_jB}fbTMr)4L_sk=~2NKdT#rq_eoc0sxy(VSSzbm zR#HY%MrCqk@<+u-#dh&_v5jlvHlQ}3`a}LuJ5M{$8v7diZcBqd2p9hVj||kd zlO7Qt5uXsA#QW_}M^8snp#W?YVH9B~2xnjsMudSp@qYY%d^}gFMQV{t;*wy7bg^Wy z#4GlS@m@HCH-lG;U5mYuzLAa{v+0raNOmwgxZAVagZIylrj91`Rv!fZT_LEVvZ9hz z&8ohtxvD|$HReA`{3U)hNlog*=)=I!Co)E4NwTCxX^Yadnc7U`1kTTzpH(ltUi!zB zk16{V`xQ9>MMCm{3FPJWvCfFy~agH!P zI6k;Iyg0lhwj}QLt3|6tLl!u8zT&(PuJ%-@^rfbQFdK6iguUN*he!tDd+TuIaHMIp zX>=uFB>}U|Rir8shsvSKnQ~?iUJu@K(Q?s1kPU!G6XX-*xU=~~^oJ>R zh0uktFSIX&o}H*Q8qZT8uPjTGrMUz0>-~D%!{XirGnQ_@+mBqG9BK|#%n&mOECLHX zG+=vWuVJlWVIHC}wK4TE;W1$_}_-X(^DkcozVZ9q#zVVqAoML9)TOkYfg z#}Y@uQ}85w3EwGliuy_WNuPnxYf>M0H+aqhbSh^wb2Re~=?*DiB=0ab8Tz4t&I=#v9-q5x}JJH6+6H2nSl3;{8)aB9-s&6y6Ub zMZft-!brmP==JD`$cV^25DA2TKRkb#Bj!jUp^(s-*qMlZBLf)&8Bh<)8q68Y$r5G> zaS>c5EtAfW&yY8SGKXuDYmx*}g6K5wG!K33$k|&FToHtEi39J&mo=9)zMsCIBg;pY z=l#h0aRsC+)0G{sI$jks#*AH@U7UDd+(+C;>_h8AYrt#3E0z>X@O#xSrC-Vn=m~}T z>tKmr-wo2CM1%zd`8d z#Cgv@u76x7d?$Rpg1v(HISfz(RGjVh1pQ?HWMhsD{n*&&^&j~^axX$JLUtrOvL&zu zN;50`3xf-TH~csJD?m7B8XXxO_m})j|CjD!yVxgrCwZ%ctAr4(0`mD!_*)c9Od#B6 zVa9$ue>@-iEedIcH1u)2j=qkz^SAS(9}g;wEn}hoxum9~rdw6FDt)=W{KC%*KZjNf ztthE3sa^}Sm=}&04#2MjjuMU%lpG~zpLm~mzH+{DVcNp9ZrREeFJ+(dcIQ=+%4~R`;(|Uk#-_jO@pDFZGL*$eoj)`MOqDP`D!Yjh~ zwIZ?tnr6>Lk|3*+Mo1%=DQ1d*Az(COH)5v=(}aMOm#mhq{y%@7vQl|jaaoZs%a?r> zeHGQ_)aFp>R66=NaE^k$2YWTLwai4~HvHFzy zlz$@sL|S@UdSdpNoonWri}l6&m)e)w6}lC=e)@j;$HvFTmd=(=oSm2X%ly*_(+GVi zeJBeU3mE4(=Q#L&cXB{%CmYW@i|C8!SBY1NxYq*M3TiKUFZuxx^6ttgWt458 z+Mw34)-jxOq0eG(aBpyaV16Lxi}_Z0R(a4|lsHIg+$ zFhek2G+vaPker}Ws1#FFQ&c-at^`*?6Y$Y9I1J7j${GqSObdg3#{+9q>pRUmP5X-W z6*Irj{0=qD&;~gNpyQvuxyoJTY1L`fXMt6;+qK&z2}**uNViCxd7XI=B@ZQHwOEb) z!Zj&1DVgb+>BvG*C99IhE5<8^%ZAIo3cm{f$NC=&)*)2PbK@)mf7dZjIYB=mo*~3e zc0hD!kWD+?G~M*X_QVEJNH^Z|T9I3k@tk~>eU*KHcYwEszlM+VK!^=-@EwL(7I>Y< zkjb{iy~Rz0QbT0et+%eX0{-8|b#NW^fZ>PVCm6jFUQu4f_cXuqe&t;kT^9|N4wask zpO(Loy^*buu8`u{3Rw~=;0a+~2F5v*9ibheR=!rgf1UrvSxVEi)3k9;LK(B{WJh|eYD>0y6TSI|A^ zT#313?qwjn2Nb!B+&-_*+bGZ|09eSNJz|gGY-T%iJF_*nH5c;^-xS{zg~~!D`s8n` zZmaGn?kHwTXG#+U2?8-w%*1y^4_6PDQ}5KrDr1%F%hs1EOOz$FFSIX%K-j-rT~=N8 zU-f_0tIVs+&)v`6j*ugiNK2#15LVl=~@opLq&;l=vudta7Y! zrEH}PcSqf6-D!1*jD$s@_5qNAcUkgVt6YkK%c1D|;(@HGeg~lcE%~^!ti`CsNF*c@cmTY>2g?D&0mJ^9{WWVV)>f?lvHphug#B*wzs~=< zrEE)C!M=! zFOps)trf2oyXY?Z*~r-l&J0;rmNlx6>Ic;fs;OO7yQ(*6gl2^1g7Jb8&sVoyw_SkT z_Ju>?P-9|a;(PLY@>cp*`fKKEW*^X9`dvCiTIuK^N};4s))Chc|Bn70MgK@apdf&A z=B1vc@m%yF?;-D2_f~f*;}RH!n3lovS*3U5|Ph~450Vv@6(5*4oN+kcrx*`^0Ts+ zq?hD7=R0R6b0#y9m`GgYUljM^*R|HQVy+8k2WW6^rER5s2&ysE7-UfJb=`U03CQTc z_U29CO~BeY9{L@+u)46?(Av-@5hoE#f+fMfAiG)&r4zW%{U3Cm zwludims`p$m+hDBb=-B_OMnM}o@+nNPlNhdKJIB=$Y016N`-O^Xc0&P1t1Hh3*(v0 zHJmk^W%OnAY(h2x_mLU?4F4nBBU_#!&(O7|YfZEAX5|mRKm1MtVXxW6?-#$1sT@-Y z$S}>n`hWHK|5-_>B>ckog@Ha1%$#7h5w63v07;&;KYM?6|IGfG$U)dD-zs0kU&Noy zoXtEBeejn&mpsTGjA>$;bCu^RiB-g^!s^26Prxg~*(%;`4!IAx*+F)Y2w!05qUfkP zYBnPqh~2>KrsvSr0H~mYN{A&y^wt!C0>MD=Y~XAFdy^-7Cc`GY7m(=sdCs}cxeQK& zGwP1I6+VUUjsJ}w&kM*Z#P??heg}T8I9H5bGlq(xnyH?t{sua%I;=v5rJL{O|4sXw zhPw=>-|63A-C)JDL4HMk1$Mcd`E=$JUR7UzdHn^uNlsUs21BY<7qvt!MgAiHzvO?( z=num@>>0%w1!i(OCU;E!J>_>G&;FVcP7Eh*Rcux474H>4=RD`EqOYQJNnBDIgvU`ufP@*(;mI&%GSpZrPjNkLcB)m=gNRrgi%74sDXWCLWg__O#p zH|!hi8$>_i7u^@#s-LTVUM{^{dhqkX&xbx9`dA-i{A~OT$Gft}(0RBF80ep%tOU>J zEh#N2bPkMl~`Ej{gsaDoi*H!UjlGQ>D$-0_ zwOh4EE04yxK)rwT{?P!~fq;Mcaj@cG1zbZlE6pp-$6d!=GyOCDxC80Q>B;#^^q1(1 z@{5v`MoN2;{sN{^_0rdZFh9E{VNHTgs1u%Go?s@0lfoPi$Meqq&aO79jeqI>(qTRw zut~c5hWdtoZ2#EU9<~SXpUj7lS0 z{agLNdw=)7gD%k?&K^MK|ILZ}IP|KbuW6QZ79<{aIkj%B8<}6Y_rmA@OX^GNMD9dx z9Z?-oSQ?fh*9_T8&y$`f^#Zk3wN>GK@*DV6aqf<1sqfD3PR#rFEbm#4oe||<%D)tS zEcz(=Ecy&6uabvl56ik~yJ@%Ex7+7JKhCq*v)D1_G3F@2D8XpyXz3Bv5tSj)kXV>h zn1p92sK!z40B+|1$p8uZCi-*wb9Pd9Qb|!#^u7PRzrCxy>#^;z4S7u2rfkzg!$SkI zbf#FQSgu>ITSKmptD&!<@4w)GK|E7t(Xwbo%p&G??shI983iJ~h|l0MxZ7FVS)1vb z>G+wWgeakAo@O50;a&%}JI=aV8(JHV8jl(mfRFyT^SE<|Z-)=_GuX$uj=PSFtcZ~b zBNOg{@>F@M$%&H_S1MO3k)eQd1Oku1Th3U{xJ150eiM2V+Tq#Z$#P~nUzuK+v>L7E zUFEyV>t)x=l71xp=npC_D=iybF}UJ#)#a*UQ?UuNs(5y*rdCr=0z-L}Y?Q2hV*5CM zq!xT_%G{KhpOK%TPt+$)lTDMQKv|23CZZ7{gvfdCc`w0CFsEu#HONG(0)9rZrdYGr zxYyXq*2>nw)xmW;bUXA9=^v7iDx_jx2H5J^XqafpZpqGP<+HSqt$aawL1{s3L9B_@ z#GVA71c&&C_=|nTzH#nx?owx|GtPj4JM3;yvMU)}^XabX?&;aSk6ds93niHK9#r!+wY{pu~TCN$d!4s-Q zJnx0RpIfF|re7f|i0^lZq=)*E`jHya8q(ZMH}ezs6BkfC{A6LW5WRHpYs{$u{`N!S zLt=TjJp9c6%>N#8SlQ-m^F94NeOFCaO>b>)E!YY5IIBRP4$dTC9Yw&O!B);zPD@Ek z33j*trTRILiS0imBZQrWC zRqcMZ`-z;ssby2kc9ric2P}NW8SNP@`qJ?|f~*@4)k7^2m57?DnyIpqvy$JXze|6V z@hBq?RGeCz`d0N;)mGA0@`d?@*@@VR2&?TN_Fd02&NCj>9@W;Wu2sFOYFAZVZC&jE z;{aoUwZMuV#V4UBp@*@Dv4g+>c)@(Z#P`7<&LB9se&;Ay3Ra9Bqhmf}7-<-(d8~Qt zQ}9!8G<1+cO{^O;lX92bwa~fn|2)}_JC2{OpDw&R;k^iI#ez@5Pr{#xpNakG{pdcX zkBPe?%%&jksiC@IJok%yy3LBs3a|!9hw_K=6%+*p{rcYk!u&=1MLV)$WCeCSUjK6a z3-*%0$f)?yk4HZw)spJg=GNx%p79>!nvMrXHQ-XY-2~kPIKz3Re5IVNo~_0?#X{vm zK{O){wzhOsA{j~aN$U8rtc03JG<%zpgyHp`@ zNK9c<*enu@g!8Ws_73(@rcowXC2O%~;1uYc?wxLkWr(H1S>YTJ91*NTs6#kIIYTLB zm9j2yE^vDCdh&4B)Sug*dx3d@NurbJ$QlMp@!sna8o52bG34ZiE7D0bV9Y-A? z+AnaRcecn;*L!;0rKj=T`>v-#US4CGvjpdEyr&Om@ z1Cj~)C04OYS%Sg+}Vb@_7pzL(l%deNW_}1bZ*fgMVZe{5& z&`Z0mY+Kpa>aW$9EAQ*?>%U99OFYRu$&~Zue9Se16-T)!aZw^8iILP=-CEsD(M-`@ z+FiOrxI(y!y^3vtAdmx$zIb;V6&Mx3`!RZV0IWfOb&0RUci3^*!8Wl?c%RqQXllx;%Br%fv#V(!d{4Oy zF2g4CCi80VYVY*u^eFln7IGGHUWi|axeBggLgIu(WbsYSn3{1e^<2Dft4LNPo64KY z!)L*6;%?$F-!R`b+cn!&!&O6xt|ZPxYN>CjPdBHVXW3@iPI^vy&~vbqx|EvD&Sv9Y zx~`zEU>WEz?{Iu(hkJ$})F0GzVmfhjbab>g^xiiJGzk3e`P~EGO0N#egz$Yg$~DUM z6~qOhKOO(v;{)RZ2OBWNRNc$Y!H7w#HbD_Y0>IrzR_k+dRd2z2=lmJgN# z-b*-;Igr^Ia$NfY`vRC*kQrshMpccf!r#K*IG}x?>L1lVu2o;F#?BV>pqD~v3Dh7k za0iS#={w3h%E79^s;s1}q~8;NPrRhM6z6E17M>PvKEYj}FUQaE=R|X&b$|&oi#Cfkls%Nq=ka+L_!s!_ zND~A=<-Bs;JAmahb_~TX~J3HCg7OdFx)V_u)MH9#LE@%2mIc! zH;ntu1?&ZE^f6ymT~&1lzf#xauE`t_avWgfs({KR>1*L@A@Wf%SGFBk+J}9IeP96dwN(Cf8&?c$onHN!!0CDcOQf}w$_feA*0_MyPNDu@(BPBTt3`a_RQTWMP< zpup4+DM~?ZlRwp;`fKv9$(>c5Rmij73Y^K_q~4^2U_!8`r>6%qT-nBKBldQ{`d*K` z+n70KKI1y$>Idwd{^9;%sLUYYxd6|Z_)b7y7W(C`^RDx7FLxh!#P7)O$O~f&W5)u= z0veyjm*dazZv)nw$L(=<@pbX_0%2b9AP9F@UjttQA`n&gG>UzUpQ(@A!Z}N4EbZ`VYMps5dv=9w`ynK~hCC5wEm-H{`V>8BP@IZ^x7N>Pe>Xh^{;bp=V z$rTBDE8$2^dPR6ez~|^V&p6K>2gtI=GTc1e95e=v15E=>OF*qHtu5#!Wk3&$$Sd;p z2=xdZh#rWdCo0Siv*Ak5pDLaz#^>TJP!~xT39?kJJS*=V?HvtXZA3%J5W+Jt&M0t} ziZjk-pjD1l4xCr*0REpPW{JTlla|6vVbYbgjfahgfCatD zxyjkm-_nnJ>W8F3wv9z!Ps?(cRc?o8~J-YZ>MOIfQBIzEP{4Nse$GCSoLa^FjkI&8PSJtl_4;=$Ds%KR11OCV&`y%^l&uULjBqvf#E+$_D zM%({5|Kr32F~L~zSn)g2I}x5aGXxoehR~n!iTR0Xq#0?*^~Y`$Swt53JM=fu#wUe_ z28RZ}1-=Ca1P27aLx=TY(C6UiV7o}W$kXW4s2_x%Nm#cq(C>o%O|OKngiR$)CArdE z=>*U);V>b-Yd^9+vM|F6QPlvl7>4MF=!L+5#+k6Q%vlCki1I}hiz*O?kNb_2{*!)K zO^~9DD5JHgwJ4^HDb-2pcrX0NjE@;$|45&iGBX9)Bj}^f5#$JPj*I8RBe5f~@xJjs zxm)gL*ctX4<{M_0$z{UcALI?;KktDK!=?76cH}FfmlCs6xx`#zA?$4hECH(wibK0V zht(1j$_tgq1)`a0X8b%L)221EH4}Fhm9UG(`^#VHf2HSvki&N(`9$(I z^)@wntbgJD!fnHB!^CIv_3-uZi@=M(NcTwh4f_o{W`(iq75!wpOuI}+EJt998nyi6 z_{Y)6+sHdGFfgz@wmdePGMYl6Q{wz1oLOuZZ5APer5c3!ja&R%e7sYBWPD^G6AE|g zIHT(7>gvMW@4vw1(OGns&bH1rjZ5R|73dWx4V8v)&y3l=DZ(j2i_{{;d*5vN?05#_ zqV%G4ws5u(XSAbfqiOhas|r*F7Wo$W(1Yi(cq~)RQ{(KptGcW4^V%}gGSgPeR*M2M z(pQ~VomKuSKdec@H;FfidX}E05G%yUoJ>|Ht9K{uPO1a_TdpJ*{6?yi7A7oAz^u#` z_7*mi%p|Xitc$euw)G-YV4q>1;g;r>=2_*lI9GY3cBHnev8xd?UlyOmw!Sl{18EHf4Fv_#0%@W;QQaV=K?=lGfCjiG`L+7Bx}Tz-VxD-O7&A@lsOzYs z!B;XmG&(ffGuzYA(b4gT?GM{x%VNt~^IG#A(;cj*H|1J#Etp#`bC0G;fVyzdyfp7${=fW+m?AcnHkEdpd7Igr*PFLfyi<(3VEm7&T|t*h33(0%~&l}kI_INgX$I=p9KUK3g1zeInD z4yF&LBkK?M8HZ(uW#}#2n7A%a*x)a+5+6FK;iA;~Z z`n~$%n&O%+)m^IBftG5QY7>kJ#-J@|L(jm;@X0Wj!i_VO@ptRJ;Jx6D@Qn~>%-C;` z$WP?!*gE!k+IgCkDy5;JE1!v%okR8DVN9T+{Z7hUs$vGv-yA=m*uE))W`ue zBpZ@HCVfo89vQF!%KM4?iE);c3I0@^1;Ds9)X~+^HNi2#fw^kH3YcP`Z6L0NYxxYq z+0j$?)40d>RrpnSUUXhGND7ju3@YRQ(R9`UR+a4*-+5vZW?<-)7LY~(=?0OI5Rh)9 z8|f}-kP@UMq#Nn(PU((eh=~)s?^^rbJHJ1^``ynN&e{8YpIFa&%14xsz$i;h$@C@D zQ!{rQG{W3lY53t%|6j&a#`73roVt2lo!)1SQyZsl`@HQlJw5Y%&i9$m825~R!tT?1 z(mjd#tESl5R08^>Zt>mX2P6zgc#`Q!rbY>k5?aQ!jHBPg(8!^Y$!fCN)M@G<)iIgx z<@l20%htrLiS(W<^RA3rqi^`G;XC>k4NDr9l$xBH+$-EGOdS%gGv%Z2qwhy}yl;-% z99J<@#Z1Mr7RyRc`qp4o_Ep(o=aqF}!oY;v*yS0U*@iWVY;$m;&;{(qH!m4F?vM}Q7y2eUnPOHT|=3>FR)4%ADlm)1YfKaeq$F*Gkc zFU)@E75j>vRmv(YRhO!a&sRpQjNr~E&e8r6_eb1W&P!2j z-4&kL-7!=2=-s1ti(f5%RpModmyn6RDE+eZOM2&4N~)B^IjElDo?)Il^kcZ2{%(5i z2IM}wJ-PPeg6&?OjJY!A>YS}}wv`Dh6Hrb}Ujchl#(Ktjs7YmwlRZh!qVN2$^Fu3u zBQ}v*mdSv_jq_9Hr<@O*4;0sn>zw~*?VLL5&i>ARYB?9hEQ&dv?s&Q+Pz}tFogcd| za$jTxZw2otb(Gp!=q$|F=j&euzY3O0E|q-m(>*8==6-7Pxy@(JcDGDxnKn)vr;QLs z2vPnh|D~8qF)`_5(lgc*RHc!FM!1Ek5mX(&Z%fmgvd5 z;?;^*8D3|2eemtUx2&sk9u=*jz)kz6T~aOS?&0NG(K3C@^gH5r#Qy@+I5n}b0(K}UCltvz`N9UsgHm!;0sg@RSnS#g1SD=#yu7vi>gQU zur9@`fCDltZp9&L;`_DOTa=8DD2n@Gr4JZ+pdj!*MxSJSShu`ayw{mS>r zuajS|dAa5#6W0l^C%jI0pYZ-#(zT>ksjX6v8OMxQ;w!PIucvQN`a$W(XC9xKy_f>I z3*^oM*!NkIZAmtIt@2##7S$~(yPRF-Ue@EG%X*6&#Z~CiP+R!{jSpuE6o>!I#S^ms5Cme>OfFV}-Fo4sQ-`C?XV5 zHl}P$&I~y-T+ett<6v+i!-)(t<7UQ%VnQ*D8?UR^)q&zb@qYMz_;K>%=dghhh%JP_Nk2)6+u_ z=%>O{fwQlS%cFMQ^>N^N-W>b88b&pYVm?FdU%U`6a9_stlKHN%-C{`rQc4o$5Pst{TV|Jzf}Dd(PYPkHWr?&ZBuGqz^z)$~`>pM(D#=eRqj z>zIz-m1W?WMK705PA7+Z$L<901esgJC&ed?NF0&);q8aFYXEG~-bE!wB|c1gm{b{a zzpVeT7Fj|qp;GJ57{C+ni64+X&~-g)%I?46-^hOFtcrmr4dJ^DM(cOK3X zY}2>tvr}fL(4XeFq~DS%Bvwf5@V>+Q#)*v+Cw!Rjq1@+kpZV^k52X)r29zFq`;>hO zeI|-W7LV*7-QS(P>lf1xt|rxDs9$X5YvsG?x#^)!6H-p+vU%BLO|=Oq6)Y7z6F3v# zxitms2=55bz#bOXapp*KBzh0izmGGKoZ(&>yE2yAVK0`Vo{2saJr}zgSeGfGlu*_R zYX!~F4Ax^ez;it+DJp6IyZ!IVzAgK<9f*A&`<^vW_Fj*s9!-TMym?Q)CwKOB_A$ms z8!&E8!kmPTSvqDJpKUz04%N-}XXZaM(*w3pe4%(>j4!67x1^Vv!%5C0XJdF{_!4F( zi+?HpW$nkcA4>pwT{4co^y$*4o+&+3F!B^!s4djaTR=E3%$4WL^v}5*aXI2t~S9~j#l}df7zQpH!pRvy|yv}c&bztT{L0h4xo0}W!m#o&rf^ddtM`0Be>t(Z&GJc*k9OB zU;pQE&*NBEJCylQ=6YG`W!ac{W9Io8=Vzpz<5cXa*j^F6B8qv7c{x`jnUd=@8B7VL z{POXaj}JaPfD^(gH&);bDreSL!2=e@Y-pM_&BC=Up1{t`xxTqR>V6JK9*%q;^*(AG z$cQ~Z)a2ds-t%r!H>s7S%F@52z1@#SV+z8@V^~p68zDC*>z)6?Ur8&&~)Kfge(S zNVx}(H+s|_cz@vi>vyl;^-t`d_;1p`NxQKdk{&n1;a^DayYk-h-e=LzqFCcXpjU_s#K}=;~^yv~hv)_+|8(f7%R z3Gnlu*mL3@0cy)Q3ozasZ(^iG9Ig&mYj|sT_xShtnaErRj6H5d-G~|r513=#W8Ue? zbcMa5Vs!Rq# zq94b68S~{@>a|qr;48sH=KsA>LeZhF{-B?pgsc_O!|f9o3t$!G*0$*z{~_W-gaQ+{f1H1um*z{8zHr=2Ry3t(3bo;N zKGpg3^yAZyFFw8a#5@L)!x4ug z7!!8#ck)MhqCCar;&Lycm$1rOWih_stYqPE;qc7R%n<*1r$VPf|7!ng`OW+$^JA1q z1z6B2)zoS#4Yt_Ty135FOFL!1X|{iXF6 z`e6PApJVm_Isxvk{qp(C=Q?S1+&%0^t)tc*>5jzxS?qJC#HPeDzpR{4IiWNtn6Y5S z{c-!_O2(FSeK}wHUiwbTC*^JSHoK$VQD2Gum1k4Wrd~+CkbLO#A#|e0yS_t^FekIe z#P{V^_*VE=<5%N`eZ%$jSS7ELyLh^I*c+YWpX1LHktc#Z+0kI5XQPK&bb4sfFR3m3 zfXf@@4farWg?EK#hh~TNffnHwVfuY` z>-HleMnv@W_Vxau{Gsd?cZ)pFsT-x1of=#HqyDi4{7ioZ?LW5vnEWaEQ>Nrh$#+uk zq&~o&tl8FVi@iCs_BNr4T+M!~)dc9!1;KS61sX3B!Bv1W36&syre(w9F@0SJGMOZksaO$n#t>A8bw~o<# z`x?CQITNr(U8C||sNk#MV@}KaWP@*mkG?jn4G)k9$dKkc%}k^JB3c``}_2cTt<&4i6-!QIW+=$o_v1*JO!x*Tjr>KWB`acOj2}R5z=8W)+ zFk>eAl2rg7Fa$yk!LYPpX_Eqz0@Nu1D1zML#6UUd7-vl+rDOAGY{$q^~zdh?Hz_Gw`g0mzx2QKQN}2P z-nG<6BrC}ZJ&i{BM){UUERRqzI65eDP-G?00p3g0Bp;RzOFuY2IBm_gW@at377riQ zYS_U*kGGYdR=Qe~T3>2?xu1MLxqVvuG`{Z@^@_S;Db``(uwcS_hcVTqh)WSYqk2Z2 zj6NC7JU>1*K9=+I2cix{{TA_C1m73-%;^uX4SuiJ&Fd!js{RoAA=E6bSz7PZ-l+#t z4shHlr7!q7?dP-?ffs=p@O$SRX))|>*dT5YFUyzZpb}JAgSr5ym%chsWPg zaj3``iJAwrN314h6Kp{*Y0_hF65#wJ=Z4GKyxHf5V~Q@yD|#^EXG zEr`l$7H>IF7Nql}^E{Rx%h6)AcoMsc*{9%lD2Bx_V};A9ms5u(4^3vRzFu-Y+65)w zg5U39cwXew@@Wsvhh}fFx7ZqfQG+4|MGT7?7RAqoGhfAl7OTas!AxOe=oIP6Sw=0R zww2mSd=@L170f;Q9{ou8NcaZ!Gg4dhF6~_!XP&=Ud4KZ2}jS<~o`dk9QPo08Tg*d<7< z8|)1YJ{y(A%3`9Ds8ECYHsWmr{ZLqg+zEKsK8Sn}`9s7H5oNq(yyxU|@-$(Z06Pe4 zhB?DL1poE%+IWpMjPbw%^gd^v{uoTuC!)#})-xHIXq#p11-wTVz!#F1rPS_IuSTEO z!5{(#ZGV6mcqhSj71i-fQfslb$TOJzKUij3e}KZE72xx+&{^m#5Ecl-q+t@hI}WM` z)!g3P-u2)Iz`j*6wV0YFrAdo~MM8JGyWPv^WpoL52}fftY){%AM12L*P!>s@mNqSI zbzpU1A@(1f)KBVTtT7gQZ!N?YBK;@!$a`eISED?mJe>EL@0;(F{F48(@3ZeY;C<55 z+tYgy{%!YPiz}%8{%hpLOY=q zHVPZHtXdZATph-V^vzf(FGSXP4@#tsIJqv%SEMV_IB^`R2>Hc>&OwLy!zqvxbF%{g zb#VN%W)w4uPXIMj)Y#IW{yCTp7#ltW4L}l>E_?&#i}S@SU;z9B`R7iylCAvUv~k*? z_DBn9q0)fbfzg4{fqtM#ut_j~IDZ%xXa>*3woY4Tt-Mxl?rH9+2@fl3e(3YOIBGFY ztYJ|*B6mdo9Px7my}&lA8&&uFMt`?F<~{it{eW4G4f+NhV@Y}}=mM^SpN*f5_23QQ z?=ulF_WT-@2aLVhqeEzHFLRbTHN~1@ajCfUmHd@VPZItN0m*W*%x8sv)<1hz%&RuQL zHfX7#)KD0EGS8=-$CiYpa4(#dMh^%2o8{DUYD0`624|cXJBuA^vkEDNly+)6wE^~1 zM|dN=B|u}qIfHYabDrP89e6u12Ko*RRt78lyq-zVBv|+hc)aXRnA5IgR5H$LXSFHe zDdESV$F6Q?Y}hUp2FuS^QbzEO8bKi-jIy5AhJ-fBp{my>o_rud~`gqh9$N3s_n3m4ZZK>Ij5ylYxHuxJJL4yJ7sn5L6yg5BNJ)9Gvrn)coL*#aHJDsi0R(rEOo|IB1^REJC z0Zaj}Gq->!E6U0OIG>Mpzp((sfk;3v)|wy%tTb1eTdXbC*Us0@L+o&yF9CTzPQ!Du z4T>m56h8AmfhtlJi93|P0qoUzKogKx%*#|n{6YG`?fJ3S)DR2;MFBOI_b}V_v+%QU z+q!L?GtRl6Pi#0gJTo{m_&D%50E_G3BtTtOBxc3#VfQm*DEb&Oui6N2@K4ewiFXdY z67fGN4b_Hfb1)XrONw539Y9zKEBC>C!1MMb_J6b1&3lUb8TMLxt>?ybW52dvyB@wC zz5(t6q>UOqr}_EhG4q(5nVb#3*)7f%mfW4*LT@z_M>9_|56}C5<$v9nkQ$MeprhRpPL{dt6f4E`RiS== zFz5@ifjU+ltDD&k)k4{1{PI$NiBD{RUJ8r{1B?MiUgWF5#KQ+SYVwx->`}B$fsAhU4$fS}Nz}?gG{!mH^JgQ%l7&?v8jzY$LQ0I0r?) zjzUHuBUww~7N2FF^AA9Gqr0&Xe)}h^6IP;~Xb*A*(X!UbE@Vf=sHd<3@EJ`7e7?Gi-Nk%T zK1})Tm(I#(6h!;2b5r9m-(8>kN5@JV+WOF+P0aJaI0;Q-itYbL%-A zg}Yl#K`($&1*k%U_)YJ@jc_;~B&a=hY;%Diz zlvBy6>{fTH)QM2D^U3oGu1do^@74EePVg3kRs4Pbf=?vxTGlyuXZ;9{fF0m(06PgM zr;t-v;jD0ewtu$iD@A{rLB=5CNBu|ru67rvWKVZSy}VvtpJU81_&tAbe{a*@7S@f@ zIC-4BT3PMJMKSPG+N^F?3xVdSlV6dq$a%m|(oYOyTqaACrK5mam&)*lqc0rK`^JFZ zV;}5P%x-75hnPdmvPN0M(kyL5ctf}2EPxmHE4B7ZG?EfvR}WKj@> z_x5|6-yPpKp54{-YH;QK788xX>F>dEW4VDbGE}7Zo0Fg^8Vr61imli$tQS^hJF~qB z@V+Q3lojH{IB^wx-FVM;RlBOKu*dua$c6=m1Hn6Z<(R6eR#qx2{5_c`(}#+&Kt4O4 zUCJtD@ws8VvJNoTJ`PxO;a$@dOakk{7Z3)J%wo#%d+QMB1>N~I;1#`MU3g$Hr%waa zedz?Ma3~=ANZ`H?MOy(0O z!zaTX!28hq5c3Lpdfe6T>Q6Aw)YLTiT7MK2~DR#rjzW za8x)dYy)$|IpSvc_qCDRxN$JQKfbFU<&SvMM#_va7&r2LoNv#!CtH&(SVNnI!DN6E zxG@Wy1}DKMoW7_I_d2Stsk0qZ$#$SKff7rXsT}%T^)^&3MKVVMP67&bF0LoZqXRsZt z2JD$}X5cWWjJ+e&BJlU%=WgS_Egw;iDAbC+P+qv-8PCpM@X_olb(LC*Ek&%t z6;?Z|Q5F8j`3dlIuO?IzmVm?P4M?(tDDVe48(1f;lkUQspYaQQ`V!4VlYStK@n(i+ zhPmg5-zT3d)*<@9kAuJS410#XMc5)#Mqh@p`FYIxF+NEI{{ebx4*|IV`!F*=I>7v8 zG57`Wj`|MRf-OXYhxS9ez17}g>{dW8pg+R?^97*=q5Hx6!ET{$p=04=;oI76jqfJo zx;#Q2VT-gy+9Yq1FDsW76+f&Gbq9mwL2@);?0Z4D;Kp=}MY4i#0PiK%uojDp#b2dg zC2FO4-cACo0BglX!CCB7WS+XnS>$|Ye`izs42yT`ym{VC!`{tnAQ8mDXubrv3qSDr z;0m|{nB$<_V`T?T?WT5pp}wF>s&opw0wK+C?;7?A8N-b6kMXYs--37`_v`~*2aKDt3R&GV zg|Qs-7{>mrY4bhexz4@RF`HaV=9Fz-vy6ZH9*rK8X3G(i6me#eXY7OZ1a z+rmEKlF$-3gsl!W2{#FM)H-Tqu=m6^ZId}D-x0=ajOPZx@39}|?s-n~cli}N^(w;8 z_lS5z{6qLd;5<2NK)(UjpZb9~AEs=)txkT6JK zPjiR8!#%Uu!}$!D-<&ben2b|czkF-FbTfo`xqo9mb1|69@(qwtE`+kp?$GdUu zc6qzJQd;RgPq4`l>4`{P>IJYI@a}C5ZaKGHk7?GB_%3e6zL0F5Y#zpg%%k~E@_lbA zG!gvz)Y;LO3y!Q+AB0eVLKgxw{~by(B9X@l{P4RNIRs_Cx`P+jCXOJ+Rwo_XPnbaXePvq@#1CSvQSto zjEH=;xDPN#=m%~B#v+VMxVI$|+z@ZLIThbo_R{zcPP8Xt164yi2A)~4cyc;JSGZJM zDl+E@DIuj5VnUuLC)JZs{$^BJR~rRQlLSv1=9e3c4MsQ=4s8u?4R*oIBs~u11m*>HYhnk;<)SYy~N z>=qtNkEP4F^LR%rfG^y5uv%TMHU`t6>pCbN6iYj$9e($F0Ap9qFtBd&8gzHMJFE@$ z#UApp%2?c*L4{h~Ii5KlYMly$PD&?*|DMs%74y60yw3#8d~!CQ`AiL?2G1^L@-`a?^5!8X+0+0$s=ziUQ z*L&C71UnR{p?M*^5XxKSt)==>oi*xjF+Y_SN(&tYQdkPJKKFc>?_zJj6YyjJeUv^*OR1$aQWz;rwWeC^)v-?8 zFxW6S341f~>!-LP$;LbQ zgE97h35r|At+IAmn_8xSq<*@95jKZCXuWgpDvo)&)RYFdTYm?s3nDS?!EYMu+|a=i!O|qvuCY0bc>v z$Fy8zxyUu(9N>@QSNt*F81FLp3b0>v(Yff9LQm^Ic#ZM%=^gGJ)}4}IDr1$g{YTLIc5QX936y4tha{oUKaw!8~z>I76H$O_aJ~PXpuhd`dn<{~1tCFQSx` zOUjG^`JUOLEwX07xNr#A11ABm88!cf#zNx>_OtMP$8`i% zLS}6)IIo}AnQyUI)dC*Sim1Rb_LS>i%(#x)f^R`5)TgQG<@3jWePO^qBV$g+=8P|% zVP61iQC*d;Zr$^SaswxJA5^nr71rHY=l%{mVYb*?>|@q3>j4JomjTwI_Cco^0;9}P zCV!XSfHB){KuzOjFcI7U)JsnW+d)mIro-=M5O=UPfFWdS%1#sKE(1>^$qWYiT|ciJWF!lu{S!hYy0 zcpe@EM*;6cK1Y1#ZUUYa)Jw5;F~yoND|8Q^~@EQIfeh_DZ zYtT2zqKrx5=IFYN6}JQC($(Z@sOasJn<`C}x!@~s4LuS*=c~k3B74H8(Chux`qg5; zqX-ZH+T;3IW30jZEE=M7#&@hC@|>sssz1mH_&INf2W|eDe3FQQ@Km}`^Wd6Pfgag79XNr>xKJ(P;v3AbqrXOG}a{xF6 z_5uDieE#^He+@pFpUl(XKFDX~vkn5r-28ne3KIps^M&L>Zao3vx;hUm1vZMd>~TGp8xjm&p;JYdg;HTr>odcT|IP4gW13p_9$xVnV(IAvLn zV(z>EyMy`H=NIz3xdh{L=HOZ6Ebddqp7{v)rnBC~b8$8LeR+W8SWXe4h|nI4M?H3| zG*+UQ6u&4-_z__JJO|)+SOjy2 zd=}a3X58eneAWr$1S%M14DMEJ4T>5?-TGo?>}uzC#8{^ibiS;SZvw2_k@A4g6nhvv z6PSx70X|TxP z4&#oMpx*z%nra@f)!GV&p$Zo3ovfR62CQLUg8p_BU|kerN~Q%WJC&Uz3`|*~B^HDR zg89gFb-G#+d(ygr&+2D2MM=RH>XJ$(>{R(%{98OI925pXOToS#n$%&`hx00V-Q0bsGSvM(+5fwWoizN+`rG~O zz2;uCx>4QW+0;erqU8bG!`s9B31|V0pA*jy_Cl6oc7pvT)YU|;B-c27H|AJdudF^1uD zx7=CoFwVFEz7xNrwE(jBc#*M61YoU@=R0dVKY)^89q8rsa-M-V!W*}~z&woaRtLZ{ zzX@PXWR^4wRZ>+#`P|L%nJYhs;WBG%{A_u*QqRPD*TfIwF2--eFhf%iOw*_7ueH}& zKA3V|1H7|Yv*l-;O~@wXKtJSb`D?j8^v8`ojXkHq8o>I17qB+K&xm;(`&GRAc!%$? zfwc!)71~f9W3e}N1#s^?Yj+<2pC{`6_--};IqV$helNka=1co$=Vz$S*1P%X3E_mW z6)>;j9s3i=3;6R7_7Y-j(U}Zb*WkPPmGhO;5%BlV1Km1nF02nP1>GFv_Ep7tTVdKd%Bp0pTy~zhmt23--FT!oINn zdVifYf!f#;{ypF`#aQ41U<_Qvsp9@S8;Ol@Lf;k3OXc0~e+_o)ECTEWZHDfLb<0Hb zm=^-R$NYU6XR)@=KW|&?zF>SvolFMk5&2H=0?h#qfI|RsMCk}93p$IP-Sf1s)7M## zo;!Pth0#0ujDd3YXD?}&;FkA0wlvq#>I43Fo>_IVN0_l6&(?w1qdra=CmlsU>xuG2 z`3@RJ)_*>O%U~#=Uf~e-QO%NP$%CPrYbmr8_zts|Q2_j5{$U=#%tjSJT~-WWz0SSs za4s;%W;{wA1)l?qx;v~_loQLrrN5`x2{0d~M*?d^V*&TL!urL1ZVTIm?Lwdd;ODjz z@PB8#{0ri6<`B&L4$24J{_RNYF=R~7{F?6ywPqUnkBs{kKns{2GxIl%o5lxt0*=wf zxOK!=&{4Cm9FIEkQ*Z$_t#oEOlXXnisZGap*n?UiEsz$Y4$aT%i~2j8}HqyX-ya zQ}S6%1Fyx`BF_}&=G0%75zB}>g`L7&u-n<~JhmUZ8WqWwY+gXrXg2{ozxIJim<8jR zH&L7@QjfqGfzMPWrIOo^TcNCQH9@RVvc9)R*yHN53fKi~#&!w>)6B~yP11Ot9|yZY z8W^RG(iZ3obk}>w>T2;`t|!(L8%PbLymDT7IQF`(fu4*tWY!wjgS?=kT2W=p&YJKJ zX@}cCz2IDM7?<%Z|Du1PEwTPwd#*8WzoK2iq{hE)U2dnb(`b%8=FhBWR&l4e+t;B! zh4J=sKwT{Fhi!m4ALGX3n87`7pJzB{GjC^)b3FLQ`o@hTS<8%eq8*fsgmz*(@v?MT zVlLAP@Se^LRInO*w^`@EE?yV;`M*Ssq&qa8)VozTtDCFzRr-2uy_SkOuNr{88upHu z6CMRTKTe~c%g>gv8_$Sb&?PaCW8AyMv&4P(s=_1YlIN0V0rphZ0nMSG;CWU7w+ipP z-=XJyg8p=Kqq)&eZ>KNN7HGWz^)@-MSLg^RjsAak^wFo-Q|wYsDP%y%fuLt;E4Fpx zflJ~gQNj=NO2$jM0ed5V!iVUVeGAc7DZ83g&HDd)f-x*(Y2IJFPk4v(%;b5*GxV%- zR>`JjQ>%jSz;4$0ajsAo`8E6u`8-nRLS4&a=yjPRZw_w`7XYlsG{jEfCtxEy#_z-D zZ8iGJ{Jx$7o(;^IUc}714|Kpe;IJ>s{B?>s#k_7@H#P$cun&?R26%a}GfcqGdcYW*HR*}6KKu7Ras2lxi$ zLT{e^c-FI5Ag6z9K6Ym-YohL&gZuhIjc6kqY6b$J8+y$tFj827dOmA>JyE-3>{m=G zCh1_JGEwQF_P|EhF6u%qEWl9S|Wxp+37$L!t~eT!a2 ztD^M?_Xw{AgE0#uT11#S9nUZ|e72!n2Ec0CP*$5_mq1kVnV`lmbc>>_1}9ky?(LV45;bc?hjF z<7mFyjB)QccU(;@`-;pHn0v8*&D>7})5Fultw2-o5eT}V?>F`v*Q{&SR@6p@W8PpV zeD(#8;F;&0=e^~-<>P)=dLYsRYKV7;x3}6`?GL>bbM>n5B4XbrpOMdCpPw z>2&ZKEHRgur#vnxR%z&}SR!1s@R9mXNKp`l{^lIJ&{ zgMR??+j?LOIBFlY<1x!$L@eU!!5AC!KH@vD0(*Q}r#|dC?CGoaRhc8cz_JAD;jUs9 zm+?2>xhbJ3AQoI(8Cb_Jk+D*wsKqFI^Q~d#lB(_sfknowWp%EP4@%F z0@RWm1arXm0N0B;9~#&T@&z}ZW38F*NDMSUJXbH7m)w|>`c1}e`{9RJL95`_5_z{Q zHW!=ULC+D1;d~a(bILj8_Lz$qgc-9|U^8^Bocrl1^^{nL>23FR;~i=-F>dVEjQ>F2 zsV20>J+RL}wN?8*_Ej=hohi?h|5pBXdns}7)aLI#2K=Y|r+kKPmG8=J_z+hF?3dJW z>Nuw{NwN}qIwin9-(~%>zEWGMjfalvI}i=lfoEW`wpe35t+rL$Vy}vIDt=DPi%-G> zj((s~5m6Dn{Js2~(P6)tIo~vCnzYf`==@{-W3e_stsVU#*T8G9pjJ>Tsu$J2HNJIg zy{ttywj0~WoMX&NWl{%QSb`7oQa6Z@DMZ#IE%H+39*MtLrk z1zABJ-~nfpGjJCu;p*QQo8$+4?~h@h2IFnkms-HfZZ~Gk8H@A*wZU948TtvvLI0v( z(FHr2t3q@83B$^efOQ9dAf}sCq7I zJgXiee`Ni+lu$}w-9ML->wkAhW4>S?*aX;XtgKd6*%x8mlYLI=6#l;+F$M9;N9&{8 zTNs2{O7LrtpFba5D(mN3V|1YLbyr>^7n3Cw0DwSiH3l-^J42N#Kj+ID@re$Y5* zP-l9~K4$YXdm+D&x2RiG>M{C)wjeiPJ&rvV*7tgwz0KMBY)ojEb>~CB)4p?c+R>P| zd;=fYE6x?Cjnqau0c|?x$2xgB(E`rXj{6wEA@z`ZPH{ejapH1uxp-B$Doh2VF`vYm z82eYObz}l#j4{SW>~4Oiz0*2?8lXCegf={hs~CN#ub;j8+{_sBQaKi0p_x6U^bJBl8m zN4poAR{lGgYqRFWvvpT+S8y7jukmkSbZB%a9n6o9!WX+0=HZ44LtRZE>tCy(d*YeI zx(aCx_>9d09l$cwd02Nn3t01Hp2j$F6=pPUK|eLz9&S@Zy2aRHT*TZ&dcb^!y^pQN zR^tG?Cm7o@H~oaU7QSG^;VV%G`^F}NtLjx(LrHz^3}J@wtNp7z40~)BVkZN8@h!EM z$RMw{HSQA7JF-`>(pl*+M!hB9lE25UNcOV$e({-_;F;iRZN9>uTlVLu>0zDg0yLSe zoK_C!KG`qYW^J>Mna520D~ya_gg(OU*)pbL&i6H7-G#j*{!V;3eD9R!lshlF z&A-h*KVm+dB>##y?>q0y=gsG3j4~f{KlxyS%05Lo%v3SA8w9EX=183LNHUTP_8+M! zXeG81J78DJ6u>+`8q@%f#79t+3>M!B?=Yp*7w*67gy!HUkPAF^9=ko8na)h-4E%A6 zfce&Z>#6w^Q!X9NL*OGQXO**9qn?7k{1)ih3PWqN&9lw(CuZyD3&V5jq3@xugSUg% z2U9-QKs&)7s1)?+ov>G!efOoor9tktkVdWc-UT)s324)=sOWSJKmA#Z7s3Am(ks{--`j}HM1~viKAX%fF3)puY3n~Kk`1rYx z1?;P32aE+agX(~13-gJP88UByx>j9lf<3{;Oz6kL9cYw}& zEf|G)TE6Q%x1YeHt`?vcX*To;tnKZCU+edvBS;pL#bSVWR2t?s*^^}+JR0*j|LFhd z-N78dXNq;ueCQic`@r~swIZIakFXOU20ETso>!jR>TNX(c5}3lT1cE&!|(M#P5M|eqW`p(i7fi1u^Ge%~#FUz!ditcjtdktEbg?_?DQG zDe}sp{@8dt8wT~Pi6Ob|gTFxkEP@5Z%eUvenk!8=0 z=Me9`DiKv8=pC^vVp&8nz!*J)H-mSLvPR)q&hL0VdYa7bSWBHr4L&HLmC&eBVg9N( zibJgz>;F^bsqT#N8tiXs2CiVn_#g2fOb};upDD)ge*u);opXS3>`?F%$O-tlut&-I z3pFZxKzUFfvjB&opJrWxdG#sfl)^gEIP83bO_A@c|Ezx=;5mEUd)+%0bBZgVhti=1 z;Qhl`s&%k+uza9=AU_xbUIbsb@p%L6Dn$v&^uv^YJ#^+QrZ5&~jJzMT1}KlH{Q&ct z3LqlduldHUMi9f1(%tZzQ!Qz4ZFHxp1G{gvj4!`f4VSTSOu@C!GN{@)6m~_0(=)B z$uZ|+cHk6tC2`K-1Ypd=z8`gz8_W&n5&MWeS)433!#vd(=)^d?ULc}C1Us|Cl(zTpD(r-yV_&U z*6?{4W(~6vuqTW)c>%*sJfj%Xyu<DEh4<)jXc;QQ=YVxG z<|YyF3_l(`9_)sF16ja)a3Odh$QoojcqucM!pAJ|*vAi@r$?(FedL0asvMUSkq!ZhuY5;n4@4{IKPqKID%U6dXO6wH;NlAF~?fX zspfPLJGkc}^$z^^m4$CeUXaO?$;0QD{RZ~`A6bvA!Ny>Ny%L^LEki9sYe7luqfIap zj7C-?s{v-Y9m$c_V?Q6yg|oi1zRCW{{u$t*_o0{ZI{!T@F}un5gf$+fm}MkOcH-syI`#;9W*~bLPt5=H{7?#zsNr} zVk}(6hH@oj1ovl-L#>$oz4Oj_hjC49%poujXAff`;2Bjxui)O{HPI^_Ba9J>NJS*p zP%C3*>mry6*bA6|oR;5hE6m^ZLQj~pKXpMy!1sc^`|N=A@zH?K&KE4>*acWSxDF2) z>Y1uwr)F!+nST;KxpR}$unJzm%Xg3-O}w|$0eS~={$ZE0OJTgtI_We0nNEE*?3II6 z162bn(^jSx3ls~C!Hn%m%+yhD_5{1K3Wx}7XfQvKbk+9*)b=y1M?tt zu%nT&R8zI7${u1#_(L7?9CGu$oytyy8Ylj4&5%1X-}^KCXSjT*d}3oFjQjWL`*hBWcW^p5=frd38R#Av z_jgn~y0h_&H<_1hfOe)0W}CLbW9Y1X*5;p`dW8&_(PZxaBlre>QZ2wQfK7&<0ORVV z=2G)N(AaA1YWVp3$3xG+S~GvgMC{1u;OpStd*dUIyx%>)d$t4CDBm`0QOZt{U65?OM)oPS<0x zL$E`zaj0=7Ew5EtC@p+~XF(VEq4CZe0Jv+cxWBlcae6UNG0!FClES*| zDd7~RC3*`1=+c?z6|@W5AuHs@8@wAzfgQ#U*TaGJ+9F_&wg*+V-B6)~v^qu|gEeP5AkASA-7wqqf55^pyuNld|9YNxD1`f3f~IfQvXsoVZQKFw13-s+iRnF%6ea{5G&-ea#_PMgRnKc zHB7%DiZG6aj)mA`$ZBLYhFC+~cZ2!EUCd4~?l0vj<@Vb~!RLG!d@>3`%QgV>Xt<_? zi}ppkA9RY1?XUsgW5O`s}Fd3(R!0ZISGea;0>T^nZ zN_vLDXJxZ*vu~k)p??-5d*e1}uR-YBID=)cFih2Dlz?V=+TD**6)E-Vc2B z!7R+@l~PNo>>u)<$$B#b&z-@Y!4cTY&K<0rhsZ}?G4wK4!vBTe?+MKP41!+^btcRo zO9P&@_tpC<|6NJ&QJN25q2idUziZz`7p$RsP9;EF&3fPjz<7#zQP>Q-eX(Uw4Dx;G z1o*to02i%`7Uvi_UveA$9qMS9Q>OQ($J9=ucL%5hDxeR0Q@$yOg|N^OesVXkYxV|w zT2=;Ex_&Y11MA({AfC4);ETc-=%jE`;2Aw$9k24ft^ps|8z3|I6Y~!|zZk>v3}=lq z2jINP57rN^2JH*#$kbwA11G^Fz`8l>E$m~mPEyh;>Gt~A_n{tB-tuj|;O{AaDPl#|L+?bg<%_@NJ$VHG0E&)IM9r^zA z`Qe{s2S^2s*{RR%4tR#fK+p0>ek9L;E`&9~9=;yFmzd$_`%XO#=a*C9o3hGYWe+q4 z8m#xzOTTombntB8Y+zJyR4{~}v+!!-xzD=jU(#RFN%(eN#eOlymFK~41l~^v;a$5_ zS}KhaN4fny-uEM|k=C!~ukO3eUd(r3F35s;JbL!WUTcZGK#`&QJs>;*M3)5V;I^(xkA*dq*}=W_#d$|c}ip4pR`ZEUyh`KRYk zw?D?5GdDcEGGl)M_1=T@L3(4<2YGil2lN8KYZJbq-O&0Pecc}4SLkOKK!4>P<`!pp zXYuiKJ>+V`E3^uF`gi0zGM~F*@Hb)&peh&-zlSrJvHk#3{tv}cT8rdt}b9+_&%J z>8|0<67Ya&qf&G!Ja#nc*_M|#Mop5vs_s&E=@Pu52EikU{mFD-9lX6-0N&%QaWUuK19<20 zeq;>KyO+8Set)b#^Z-1kZi+WW>Weli8x_W~9XuU8>}65QyAK-GqtH&}fzCfC=BgOK zus$1sVNhT@7CZDEI^(&~=yRT)NwlghJ+HKK0;XBzpr)JGkZ zF~KJ2>2KS&ZRRJuw^`@!0{9Ly|K|6>oQ`=&8O-qTj#vc#2F2~-?p?$A0LH6BFeAmj z;U>)J_rNZukKirn25!Sw;XGzhm_PE&s}3!1Ijx*_By=Q1Z&1!FmkpH-T?tfRPpl{I_c6JKIz0U{g19dcJ_3i`aIGn%S zq3lq$p)WBBT1uWFr{Q14{!UKh8hn85&VqPILc75K3&l!SQ_DnnhRg)4Tk^i3&X)Re>KAad%WdF4Iu)KQ@4*gWCV?y8~ zb`DF5q;!@#OKqWz+ym_`LT7ijm+$vBW1H*4bJ#dc8IZxdl<^2_vz&|UWA}lx*CjjB ziF9Z6c$Pc@S+N@_9hRn?2dqQ$&#)Pk1L;5%d?Kk$mQnlr*8bLw3qOQEgfoNNq1&NS z;ZorQErF|!HRi@yp-17fLd`^G>^jKf$>aGKFfQbugWnHxO!ksltGw!5b(X`Yf_WeN z+06SMWB%?ksEE0J-sjY?^S(;~%x{|jK8v@&M9f8v#tgjU&?9Vbv^Q7)X1|Zm(`j%ad?8#*ucfz#HzI5F%qOp5PAMn+$!1`# zmgjdTaMW|u!!y0UQeSb<7moncoN)ezz4HO)0P`(;MfQUGAj*tFmv@*+UFuqJ1+X4R z-IL$(JL80Lt}jDo%)L-ELHz)G_0{0<{uki6dssQF978RH&m3c2goCr(0iRe3=NCS2l+a;$?V_9fYR=`wJ4_ zJDe9@eAl5DO$UAXJJp0?vbVvAVcEN}1sk=7q+C{aNah(!+n{B49tE6K0A& zgN^Vsoe!8Nv0lkuett)l@aRH#;g{Ke;~AP%wFls6|v+k(C0_>AZE`x*k!-py%gjUd^oL&a}ON|HdOw z+$`?K9q+L3g0U6r=ZwpFcXNKG3jAZP0KRMcvD_>kOuPqdFGhM$lo`d}NRscufb5#Uf$6V-tm}UMOI_VFXj8-57lj>L$los5f!V`@#RQ66QX5R`cCr%$f!mYczyEDC_ss1+jn6JmIDMQvOl; zQDTqx8s<9(KsWI{v~VZkS9}q>K#BvtBTe1!((oZ+y^;w6&$(RC9cT4q#YXTxt{-1{wY*vwv!R)wKiDL0 z5~m1L1UPLt{4?~1o+$$u1D(-ia1l6w`4QvvJJubGcg9BO8tL=75dBK_swzqq5&75> z-|ww}v0-;m4N!xARyym>fwI^45WR;r=;QwY591U13A`PR^{k)=pbqP(an$Hz^|3f# zbX&MBRK*Pa40uv9mRW$gf)ju_R9R3%so~CHOhLUCUyWPeDFyw15vz!Mcd)j~cW@El z58pZFPs~TwL(}#Ux^2FHRmH04m?w*~Fb6jdGwJv^(Nm+u02|&DzLeZo*TCI%DQBoXfZh|IzY* zpWh4kuCR`f8-A%7t&FZuE6<2D%-Nt?;cAcBUmXNb%c7W>WL(9$1lA8PVyE{p>6pa1 zG}c#+pik1>)7?|RTfohc>6OAEJL*yySMfe%%=k=rCh)GwWM#6xHoi70K(E_9+&z3P zbPXnb8Dfsz|Wia(ssaEN5-G*1@U*N2AGfUf)^b1%bZJK ztS}vZaQuCn0^W_W;3OC?jEB-W-t|vt0T1zcfcZc#Z~;69)WuN;v<#d>U;QWSxer=F zJSBas63|60GnTo2f4R_SJE9$NXKw0Z$Atwrqs05wK#`K7jM4IFnX$}&p8s5Lj`6Qyhvms~G6*8Mlw8*JA5HyNAU-rkDvitwAz8`p}AGI+5-xIJt$$Cgvz}f)y1o7Yi_5kk? zcDVk?9>L@GvfjX}vJf;R)ZVlPPXP1Yy`Teljd?5Hp{xrYgkJ!k?>KmJu>O|=vl#4c z&-%Z9WDJ%~Xb658PuHKoZh~^zP>de&L8Lh6{H6< zeKUQ7y@TDpYc|xudC#&gxe>efcvfVAk3}Kd&@$rLJbJ}tc*=K|9l^;0SiDsz%&0fr~^KVAJLsU=g#0UXJJi=de&Khc@g^z zcQMy^3GlCD-dYIrEbHNAz`VXOU|hg+rV!@z_)amdxu@TA=McYO5hk@JWx@Raq3NvS ztSr|xygFvh3?b6pDAL_6AcBN+Nl6)mbhng9i6TmOmmr-2DlH%=-2xM9&FWcmuKWA# z!}W(}d-jH5t?zr^C+_EdAS=E>uV6rQKvZ{<9va1i^DXlY-?>@T;BPx`8@ses3zp7O z9)lX_&klvjKDOW=q`J~(^j?iK8fRp~AL0n!a@E7t!-v^(*Dl!3@Q77@HUnP4m!U6> zUAXfj^CQZurp2bk+MC)Nv!Wa5!A-PIe88}YyI@IThGYj-bv28!pthRmQi zUoqx4@FOIF&Og=eH2 zla0@*1l|t`p!Y*(oOD6CEV+!&b}D&CBItfs%<+oFSvf&5raq6;q0`1){UN(U*1{9W zju*~rC`(VND7D8u%tiKQK6W^sWzwPQ9IxZ7vMp1Uj%^cRPMh9q_fRj-F8UpdZ-1 zun->}oxcsyULJrC@hlw&PeISrC!qT(*^+GddZ||Bgon(Y=yTWsx*Kz_kD?7Iw$N-z zCTk|cLqX@$4l#rvD#?sV`EdF09d?gZgL$wR-eRVY<&RIm&Zdx(EF(Vlv-%q)vGebT;n73b?WaaUeYu5HS~lnpjXVE<0X79*g(_mBajN%!}@vgC(vLgEMH!RlH zEW`Q0`G7rW5B7kHp^CZKag*!9Tc^{_Z8Kr*m3p}!qn2wkMl`Cwh#^0N029yC-MjLB}-u?oQE9jl>Y%1KwCU3 zRaPwL##@1b*DXI3XrFaKjmgu14>Ce_zed^S{vorzzP>V$E4*(&bTIaJ?KpKAI>qdp})mFnrs;7{gUtJa2DKvaqt^@!M|ZIsLt{q=ONQpn)_LSet5ZKx#L~Drl(k^SlgJ}m?JXQ+}yCutc~- zxHo9dU^_?)lm-- zLj`z=|M+6)2svSmd5y8tM9)?q=m647>6vc^Tm;qb)WdBI z>i1}FLiO|{{Ak_+^*EG^9etd<{DI^%*!5?yRag>BD@&y zv!l_YQO!*DL4TxKr?a5vS}~*ai335k>5k9^^!NT7^t_D(<-DWtbt%Mbmb|Dcfnu>q za37t637+7ir8?RaI1oEvcy;Ya-$8exlA$j+jAz*IpnkD*6sut)?1BxT+(x;0A!e$t zgL)cW(W&ocrbIEY{;Uf0={uw2ZRTvIQigMaYl5pJsBifZek=drYowUs2wuvnv8fNF zJGXDNuW>%=_ioRu-GlIhuxd$5L0SRjviclTL1*b_pkCKiG_2C1cBD`F4t@Zt$!v!% z%sORff8IV&T~E2qJy4ITHs~Bzyrg&Yj`@z^l{X8|Q005|p%m!O`MAx- zzFwUk?rq#Tr2EjBpfgI()nyn)-?Db3c0_uPM%0CMuBm>t+O*o3iPt+`36y(B;0rvv ziZG|q3Dk2^E%F<%!CpMBRaaG9yYwC^w|pFWjC<@HIwunh-y5Cx z$3a?jeMf(@8&x@5OJ--JZ8Ksk?)%rK*K`U_82b~H7d{2W<%*f~PHwhtHtGY4QKy15 z{_5fCT@6}-hBo*mv*z9muc1YYrN?lcDw?i2;(4HYn&Mx@lfqlstCS%8$kVk{haTUTj`Eb-vz0v{SA9LIypNT`iE7{Rn8@jC63k9J-ajGx&+Of zVixtAFUBs${$(Ctf9A@_O5@p4Zk`o#gYtp%Xi!wY;P}Jkp`!8g4U7)tQ$1+hgIVw& zP=2$Uc`}-^B-@Q+lU#eI|OwQ<<~>7E}*x2P>flGl);%Nc2c_H#*oY>`}X(aXrI_w~69d z#V(&QU$47(F(~&M3wJD}ep%N@S7TOG zdOYc!l|y~Qd`1LRe@n#E{v?cvjfqvp2VJ$IqRd$7u2PLt|5UwT7bxD6Mo4E^6TEm7 zmuAB+@+H*6**Rb%+sL$k#rxI zVGpQhtbeNBq3^R842O7XiPBTFqfVoKPG9_1OUq{p4SG9!J9{7c-Ks0(0k6aB_!4R} zXZ|049KW#hMej;a_93Znd7GJL^*-I`Pc#p*5!9zs?^r*JG_qBpI4IY80h(*m&!YE1 z|6S$Ts?`=?ZcO);au?M<^$h(3b!~NRl>xb&v9GJ4wW0N?<*5-bC?C@2sCvR!^H^i9 zUpboU-KuRJz*FNtX~RHqXE*$p+C|z$?uGA>vCL!Qsg~iHQD!2uC@ed#{Vp2}B#|AbsplFdTY;dgT+~Dt=4q zqpE(~8@`9)lgLXD6OOy6@DJ`UF~l8TR8| z(S2D1V&<6PfBObq{R)uIVmvy0oy%ruiS|u*avUh8*#@_ve55>1^Zv+Lb^j#kp47& z_B{9qEix}MPccm~m1T#A;-odqtIvtdi6rB5v<$X_ekRpi)Q>s^(!Sh)PV8cO2F37? zs{?tV4NL{;7oNi`_GIe*SFSgZdF>hObJjC-49cUg%msSRb++m=Q*742)WDeK?t*7; zq4YwAk4;m&!IZWR^;O9=(Gd@ZXUp z>K3SOp!{JsNZ+K-tT8_9dGPbqIiPs60Q(A67n=mqaH_6w4OENPy}KITW8N|!HJR_> z7(_sIZd!-Np4U&9PgEYEXI!6+#1qodtKU%sNNbtS$xe2#Bhr?63w=)m(6T;F2b{|8XhYr(ULB} zS9dve#vSyHhuVj-U2uxwiJ{rxr?#iIdZ75U3VS2FGk2i#q%Z`T|5^-fVLIshI}tl! z{JnLi>U>bGWm&FpV?kplfbuxyFM3|qg3hb1wyvnG z7E^I8W>dnXTwOIR-GkC?nEywAOMlCBW^BsBD*Rkk$CI9*2YZBiMSDd*MC(AlnD!E8Ln%A3m@J6?3w48$F66+T==;rGbz#u<5&+P-=Xsvk;w zI0_Df&iel89hJU8Oo{3AvjNze6KqNv3{I1^U=MW5kdJXH1bCV_h7_dvberl8)VY7~<}&z177LG0I4 z?EVCH5#1HD7Bk|#GVB{uJ~JJpZ~K(}-OArp6H^X&PzNSk&9l&)@;oTi;=}?F>kxChdpr8a>OU;7$4)LucNGxdxqAnsMj@ z_h40QRZO3^>VY-z=*w)$Z0xZ-gv*oOGktfTgPteNSLpNV!48i{cvqGL_1b1YALt0X zK{<&2Zp$E+5u-xTF+&T2MdcgY>TI=P!=Opw4sE6;$JE zioaYfJnc?`;&ZFbYBPbJrvsq#OTF~oAWdH~dHYpROfl3v)bQv07cG)<8pQ>=+m50! zXb9KB*O)556RyOZnBqFcq|d<-gA7MT0H(9=d_Abv>__kY+yBr#qyE_2%zhVz8KCn! zfjwwvLFYtI_!w$~YPhd0uPt^MZ5nOt&^Z`87)xP)^pB7obe32AA3DRn06lZ-VJ1w0 zCZO8B@*2f7Gk_Lj>^E?j9Ht`Zv(*>AX}f7#Y+r0I<|xJ_|38Lq@D$qGj==F}dxrPK zL_F2yBYhoBtzs1A#LDxO!?%H7LBCYbdjT9dC?6AX8h$sX`&jkGv7nz#@8WS#4g3ix zN0ru9F^KA9_u0v%_g{T=#q3L<2S~dRVBezhpCu48#rTx{xYXaJ^AjO@FhWO?sgA%oa)$qccL^r=BV0JgToB2I-bsvzOyh`lEE^A*vlKck5&6!zSO8 zmQL1AOom*wI&2PG6KDqSLUT}Eu`o#2#Up3c|3>FV8OTRRzGX(sjES*{#>}$3sOF)+ zQLX$Da4kh@ZVxia@`V`7R)DQg+)U#IYOn=X#8)$JCy;fod|pfX*hx!dpPklg=sCw5*_f zW?^ir1Mo}H;5eU1z)rKE@%!KdXDPsz|bAs3U4I6`^rC6FK7X}cN>9f!>V)W z`?1EXD*eTlv8!D7LIf_sF<1%>p%7FAy^HD%OHb?r#qI;CZ7ZG`1giJxyH$?S1{521 zL(6yo9m-~WFt;<~E8Q34Y`jU2jB`le?F7(W@-_Sb(?R{LWagh#=STp>pgP<24CuMb z#q9k1%tNfgcT;!YGTSoSZM5qpA|&`VrlrDb`e|!(6}WE45$*bc1ATGEVo0QP-~F zG#GAp3gw^&ubQ&rYt=el;(aIGYdy5ocOrL;XQ?RlsO1mBxy10>*R!W*OP`H$g+sDn_o$nDSoq(RUNsM@gNJ>`aqag>|tGt7f;{4=;fuUb9I0Mx^$ z@LzhS%4ZgVo)y((ln+;g9-y85{pLd}UNW)YW7U1998oz*@>=HRl?`TnEk>S6h z`kn^}i^AhU&y-?h{oQ_IH-tWK-8;AG>7TNkvb1B5&r49RV>?`jf_RB?tXN0Dcc5Oq z>XFhn$g4yBneL|UCcQIrV{>D=`&EzCd#<`cFK7yyH&7qsEIWSxp|+^!MKu!r`O0l| z*Zl*kSDwf?VbmNIV}AkalS#kUjyY+aX(!Al%$F>ej9tq5*`(oU3#vhO0o5aQrmvuG zru&bhJfl8)?{z-j!J9+(UN=y`O*y-2e6`^*bJD6SR)JsejQtWWfX;RgntkaD)lXDk zbFX=?S!d)@G|WZqMUCA3KC_GyAS);~9)NeL>PMRG&IW_f^83(6>ls#Dr9W4(t?CzK zH%5%Rhg|{FL1(^taym1}XU54yIZZj{V+Jb(*s?6Q${n9;`3v};Hf}5as zZ*KbB^h)?VSH*Wm@rq(IoqKvlhJ*APn&nWvPS1|!?6!dNDgC^9_Me05+seTXF@LJq zx|gY!N#Ffayliy;>yA^Nsq;xWP8l@%>XkeJ#WlU~Un!0*MS0&)C<=eDLtV+ipZG3L z`XA~87NG90oJ8@KYS`V`WhAXm1@=j*j=c+RLn5@Ywz4*%4zHe(;>C7&H>syxA5Za; zaF2Pv*PuH{wNCx4>d~u?thl%|=(|h>o#(1s>$}gz?ppQ8Rx%@d0B`pU=0tMSmvq{k zxTNehW;^CHv!^_88yaf8$X-0lr0deXJ~(4=#?Q>mYTioPGTmva$?DHt2&(Vsj#lia z`%N_s-O+lMmCLJ!tX^ClI0hr|N>E%i5I>kt@T>S1-K}DA#V)D?DR4WP3i3seBz>A4{ZKja>uT0&-G6X5l)q ztK%>{2EF&HEnWo0M+MRQ>zP-~r~ju*sm<{!9D^6&nx0gRl+Sj;zc{DkjeNzZ$HaU)PwC%>p~|AJ_dT zU5CyC)u@ItQ&$46;0vkP<1AbQ<>0!XHOulg==)S0qgg-Y2)X>+G5w zn;c69JqHua6O6e4^=gOWMJ|2?^A4JP{bKrvIiC7x>HY+MiaShArjnGfxu31}~e{(l?TL{QFD&eR~If#Fk9o_TUT z-`}AgPmYcH0w()SrV>*eg3J$kZ)O6UG!(Bigyqa()&%A5ip3+a58pX`FS>^n zzg>kj&6_JZECY1V1h*32Z`fFIxizP$Qbb=GTE z#Ut-U`Z~HdbruYVIWP}8fO;GI+3(Q@RG(7JcO0*yYlCY7gh&6ey;73k`)Az1I!M z!>&rzAQczLqeSObDyY|`XG*o=&w$k3I?Xc8(hncy3;0=#W?zirHsv*{@vWtP-UB=^ z5gO7jQGTU9yL!$#^NW!8UkAlmdM<)64bQ$w?8ym33+YGT4b*2YXF2FIQ{3kQ-Fefg z?YF?A-W&58@4D{01L*F)g1MmjfO;Lu*`;ODxv1}0IeCB3eNYxgvH!6!?8ehdf0t^Y zJWOY6f7pPJit7JW*rlV`L4W=_7!SIC*1|Z*3hFBqmvk5F{Zl-(k-f6F@wAdYp(OL6?cp8Jd#8Te zV5#Hi_o*MJ-1@(a|9I=l8h46%1ofZ?D3<#clruC1#mIWL7K5}9I;(R7B`#w>o9@RG zZ~@-Qc!zCnDH*CKybVEmKSNAIjNW2>W^=cJ>WuY4xu@cB>528+=sf5NI#WA<&Q;yj zx;K^U-!$Dc`D9>=7wAva6Hn2n?E(X+?W>RcJxqruFc+Ak^$yOC%#PH9m*JO8L+v#5LWS|@ zy$5>U%EijXs%KQsP#*d{JJ37QgS`#6=&{elhwllzhAW^vz8Brlhv=bIQ%pCdvpK!D zQQO~%{$?T+0o7ae`zkJ1Z~qU_*{M5P&kSXE63A$sod%b`V9453WNF`gtm0C9-?j; zPITdhv^As{huyGv3zgP=llV_w2J+7wttF8TpAo7Bhb0L0>)&F$*>?;RXjfyHiBYjX$SQ0$1+1459%}Mv+4?OLpIQ}s=8Ykr0-CD z{KAoxqJRuVRRJ`k$)Js5Yfqo@!V-;0)}AcR+Vk9CSf9L;pSrtfGzaEuxKPQ8PA zuJlZmHkCG2GgmX}?8}*#nGK4~)JJ;@K4KTD>gW&B9~e1}KJR{@d+HYGZXJeqjh^L3 z)az^GM_18W(U=ds!@eNt_V$7PsXoph)UeBd=ChQvPNc_m22G@DONwdrd+$Uy_zXXW ztgwTbW6iX@2)zhBf(K}zE23q*4$9|$#y?o+vubAg9=5U*Lb{}SaGjq2dXQ$H5~1M{ ztFvJodd%kR3m(Fqq`Q7Cec+X#SXcFD-B&v2AA({fr^#vPJ=BZK2Ax2))?A=xQ!(dw z&>19+(f6SLy?!5^bLU_RNIUcm1mHNkJa$y;}V=z5nO%*U_K1k6kzVGvyh9+&K0HJx^)g6n84d)hzcPpxje>8tKM< z$Is{w_NcziEQ#s@ML|7+a_sY(fDf+fubt4JNk<{wMRRBZ%2QRpQO!noqBOX}*)gE| zPM?oz>C(a7g)n&R9{Xy%!mpse)~^+4!y19&ubMXRsAO~y98^aecg#i-fz$rX4q%g2U0ih%Up0* z@;v1QI+yj`>phVsME$3FpuA6ait@OvpxT#WaphpjNiKqFsnXL*`=L5;O;C*R9w;x= z^K%+bLUvG}@LzZVAy6Ev^Y0G1pw4vFVHB&Y#;?!ndptZfj}h;PcdW9nGWGgwGqi3U!0 z$T?7*x;dz(pqN2-qIB4$LACbX=pB`xDJJ>^??Uy>GebADcRH)|{=Y|0TX&Z3G-+z| z?2bosq}tMU(1mjkjhfEwV0tiJz1%{PLdNXD$k52p_TY9Lh;9Vm3B40Cht0-5%>2~) zbhfMSvKueA`?mYG{~Z50b~|@F$FpB42qoPm-JgT@8+37XF}ya5JBk~=E8n8UJV{?# zKZoLVJ@YT|*zklrA?*iP;$Px#mDVb4zHh!y=6g+jO?|!7dZ(TCpZ0s%-MAm^Rjp{P zXvVb{!4!SnYG~uXclZ1EDz7&uh3s1#qK5s zFcgQWkE3T_Iw-|Wst-4^HL@+nNA0xpw6m(asykC$rnsOx=&le~Ax<;PmtB`#O<Z#7~I- zDDk7j2`~k^!K#E+31{Qa#((1Z#3MiM^{(|U-BXH9uQSVJCtg2;R_J$jTW1Ys4QBFZ z^4Ig#^I=JydN1W(%47H!s(7n-tNE(=_~X--vM)q2yn2LspA<_g&QhOIwU}n0+;bSd zpB2#oEP-n5sZdY179N~0LH@GE+{N4_pby-0-E%E;E;RhGv*9x^ggKAL)P7YXXuvFR z2j-JE1~&$G`gi*GrtM9;;Je^k<6Yw&0pCJ<=l~v{hqqzA@2j-0(y|1z1go+yKxc@4 zM#aM`@ld_tzTsXTzdXJ{rUsd&WSNp>JuHS1nMY*SXZL;l_wf(h58QJca~yZ@_)xt{ zHS>kxh2dq)BNhr23bgjO_OD4>lU5M)&b5KYAiu}TAakEj1D^&cy97Hk58oo(BK(kf zgzxZH&|TEp)Y_yPnskee(4p3F)xeee8rvP-;6(g~Ydgqy^(vl_r$C>d7hfZXe%T%N z-)z4basDs(4=HzbSR9t(?AldM*e=>GdYv5xjRTDX+9{IHo6oxa&C@2nP5jn`tqFw_3nyaVn%E3}OZY9} zRQ#!UCwvz7SzHfS50}1I#i)hQnODiEl5q}A^_1|GaAWqwRq$8vAMhRUT~EE9Ix1yU z$|D$)IwsZab$hq_w)?vHyZC1ZX9qR=uH0E?@MTCdrJ4R_zHYK*vZW~V`k7z=J{dX} zdP6x!Imb2Vh3A$&za(hpZsz_ECO{)sBiHBngX$hq|6&4t`&H;v_1^7c#&uh0TWDx- zXmFo@pTA~W&9vpd<-X3|&R)iUQuBNBdq=}bIPE*_>*Vj`{{eahdj)IYv#*{>7JSS! zi_wl*=@oG+;{HzfJ7IXH;hCOfev0>P`Ms3_?a_Of_K*!Qzongloc^5t!SE$4gx!JNfy}|o!RqW5dl-Hg z)_tH}=6z_0#zXN>V{2pUPk7~Rc5HTZaCLCqa^G@~0PSCE0k2%ITn%B9bCa_yctG(+ z0l31RY@P4>ZToG~WUa?%Pccmy`fbD63EI@()c@4`)cZ}!Hz`|^wJ2uG4oWapX%A@5$+LQ!+z2M{sI1lzJR-8Wxg~1GybB%qQOStM&Uu|+jGi&0WY!_AkCG0E>!EU#;kb+Y^`UE^wdYJ2_xFZ>esOWYCn5%*lzT-Rv!W>2t9uqm%s ztxg)6_V>Q@z4X2IzxLk?+zU9u zj&Q+f!Dw-Mn2MF&INvzk9=B&y!l;B_GyR&$pV^=Jt*mclJ(T58mSvfjWgeM0GEoiw z*Y4Nujm%gdK>H|7ocbL4eH2H{VSmlYz(}0F@%r}P^)G`la1|bbL+cpnrCeq{T|rW)H|W`Pu|mI;>$>&z_XE#{T!(&(hoN$cONe{<^fsn;L9`RGkB zDVS8&Th^P#uff5=LFHmUvJXhPg6e0az0MwSJ>m|=uPk@)PyhM zzlc8`cRWsur*^q^89M`1d(%C<7{4k#+oy5o`ZD-s@OS_3epi|+?Qiej-iN6VQ|G}; z?@Mn(Uqj!Wv^!~fo?eDthH5YiSb@0!)q*s$CGA*Oc#cNqQ&5bnS(^fu0!DqNEc;NN zu-B@utFP-j_jm5vakb+rc`A8U!U@!C9_Sc&9p%Cm6ctg z`o6NIWlQ_j`>VGO{FeG#suR|N1`hOd%Y$1@(qJeU8iRk@GQ7Pf<5zOUa>X(PU*Xp7 z*6#8N;H?0gPCLUnlMc;(23cR)#)3zH!k*1$UUuq)4~%e>w!X8Jwsla-cZ zRd`ic`;$NPedv3d@-$^g(vYOU>%i*~Z$`Ws1>PiY((%;esoIN_i1(3lHEH@)%g(}1 zkxZ^kE_pi?@D%X81U*A9Kyg7)*zVcx(KEHiy~eG3x{|Y!b28rGsxzs!pgg`eUeXES zgz$U8_Y9A8YnnB!xv#meG<1M6X=Tzz_(%AIfncCAo&Yie zxx0D{(p9P7{S{udnQWPi`Asz?j=PS#^nCk0eowRbX7S&`XVApc#N&)}#%Xtko4p1r ztShXFtw|N4mC!hk#Si9r;CY~=zocJ#GJ5)Y`nr3&d(WnxP2CKict7zzfu?Cq)B5@Q z89NX9qJf-*UZsSkgyj@|p!&{UxnH@Tc%FFT6XO$CWm=U9yU@(1GM&maF>zv|;sotR z+ThyYdSriOA8Q?JRlQYnR_eW|Ncc7+rohjjobW$p^tVD2CHys_00VG56ZDiwwApXm5uK9w;gXYRqAEq!#!N0uR5wYtKi)I zw(~XQbmhc(JCAEV`0=j(3Un7PWCmRCp_jSpz09?iz+*w)_Vax6e4nI#lA1R;Z}OTq zYu@}0rISl14@?=Da>;wiJI_DQzbUjSq}*P4z2>oII%Yb8&Y<&e*Wa%D?)&aso?IT~ zGzp#rwMRWw;;O{ug46EP?(?qmMh-aHG1-w5f7EZS-x|K+s;y2&S3E8}F6<0BL%jmM z0@M7{{P|#6+Oo7?L3fVggARE5Ji$*$o=ioeMU1(K+sv~_7k&)tvo~pYY!N6;b9fDhw7j4R?P;yDHPp#%8hd~u(+KXDIp4s-5g#_}t4t9kJ* zRQ+-l9uK)fxk5DqH3Q}S<^2WH3Z$L&p7pi@-Fttf{FM>_#Ry$|U3}g&Z(1Hao4#Q_ zNcvyZJ^SOqG{ZT=sof&Q;)}&kPMDlPs+FlPR0N&v(>>EY^71+FIPX|sTVSit?4;%c z)SsHlZae7$+v2CP4nBp);m6_k*<-RHydm5gYC&=^S*3E^X)6Rb1vVKTWasgB{SZH< z9FZK62k6yQ@7L$0dY^iZnmth6O7&3X!-|y%#SQ=3wRm)X-kCfjX+~1_H{IVfhU2g|d2ez# zUpZgLK*zw~@ZhlOsCKj6*kS%YJ43&6edWp)mo4sVNQH-UvV4SDfMI?1s`#$7Yyq8S?gcxZv!_#fA$vqR`om$ z!&hMg9uzv;^5Uzl&qsamk3m|DOnCU+kKK>W&zPU_1v>;f;0>a<>V@rvZ6`kD%BhaT z9f|wT^PgvF{L=V8p$a_qJoe~b{L%5FVes6lteE!K$ghz%cn9|m_6}}L+nA>P zE7{>z>aEm^&=N+&1n&gzHs3a%eCq!R{uBI`{S>N2YNke-CEb1cOn#03HNIGe^CdGH?#9?r~6_qkJn4 zbe?K|!A6(?dKVR|$A#m1WbTloW4@_wAIo zQw}B_Oj`10$(v5FC}~krsgzPF#l6M7^7`J27p63-n&0b$zqe}G^7gCluI}Cf`n;yW zHPD_r<;{Agr@5xFy|KPa_wy$F(&yXe+de?^ag>?jeCStZF$bnu6y@ILkU1pZ$bwJ< zbT%kv$R5ldTpn5;`iptf;*sK!YRtQ8w(>N5h&MP=?C5ZGaus70jpu7+Y^70WD9N0W zW-p{yn1G)5l^L@CF3(gKWG3tR}Z-lxd%H3J5{G|X=!PRGsT%Q5M(Nr(cOGB zcr>UyL3_t4_$v6m@qXidmijDJ1}BO~>p^>8dtahI(LW?OBsdifr24MX@hYYp<{0MC z_mb#I^t4WBoiHeIP~y#mn+f}1MEr<&hPs>i6`V*#^YEuabfgce?Z z_dh|Jgb|=V{7QVHC^ZJ(1l|Plg5vn%ATiV9z~ewicFA2}&#<)O(zyP>oJd`I*{Xr| zf{E<1DuOpoKUe`%p**|HbnhunmjEx1JCA!6Xzz}mE5%i+*+?6<0ZpHD^uOU}q`hY6 zeCK?cZ{<)!B7+{EOdbP3A{bla?+>?_J$+-EcxEA@mWu zDW>6De-Mq7pn8ONpb&mGU11Sy0@Z(oYFE+~v_MCcWJ$6tr02Dp zonkdzHC-RXeGqrUbHhU^B7Q=`gakcb`{MS+HFr06zi_^Ap0l4bc05YEya{bi9dwjG zhJOqn3myyVJ5n8um7{6Re9e5*z0J%7dj72hbKQNjrLIR4{!-51@oMw}1q5A2F@+M@6M1ihyE{8jMd zT0~Dt=fGW%UP1FKOVJ!pgIm#CQJrCT@jN1}3f>LeH9TD#1{wymSE5L;NboS8jVtg& zQfxK`f03>95Y95!UXz`Xs-d*Cx3w>WzrgCSsvPd9#%_i=pnK*PjCYTBSBg!%HLf+TR_<2roIq&9w#KurI-of22-JkVj=hdW&;$nA z2id>2eQj&V9JBf@b(jrSzMvR#E8Yb?@y%0h{k!0I!8Xu4)H~z@eMeIwQz9c_31|-d z6yCnyfi#bbdvs6z5&a{o-t+3%>ey*|zIV~cBw3TJW!XU0&DG7-IIeNr6wegT-uS)o zKfwmL<+=^DCzR4Dquh=2A81Jsr>_JL(rMk9xws{z*il3S=HDM-1 z;v?~2d%pJQnNl7-%Qnl{gCLK9_tEbTLMw2a8Hd&&J=G3SKS`5^ zTv=QTL3_xGv0L>Ntb#w?f4U36K<7ZGg1DdY4$O--`y%rn?}gqAo%Egb@uQ?XO@5mE zb<)>Kz2FISPU)PYoq&|>gWrX}3#4)C|`QS6h(Jt)43< z++hdk9#DNqHM3sK=c+#S1^!VB*#YK5)7J*SU48#e=r7hoA2c#NGCV6Zi!FF9Ld9Sr zT!PZ<$dYzwI6FzVKnV2D0dNi8g_6)2&+shiSq#m=m5eJHHPPwjwC1#`xA2HPO3Fju zjej@(3a~~Xeip<$F%K(N;%2#Kx&C3Ff_h{Fn4Q)0pgy{4pC&~A@@p*WFY0fS)+DXE zue#6g^?T<-Kgii56J zE@|}~A3){g1J6$_n9i1JGy_l*|Rm7`LabM0* z&QK+PCI95q$*H@NcO}0AbCTvHO--JfoGUd~>OJp0ulh^vL+wM-U}`QWKf3Dc%>VCm z>~qX?&U7|*HFkXi$^+kaz3obIrZ^WvA(+A5#10^z+l_DsC4INouHl{06AGD6M6&8Z+4qk3?|h)W{~t9s%ivJuoU zo!1`n&UY zKVaRD_0TCu-ze`U=^_^5RV&>@L&y(0*Z&3eGo*P_ zFI+u6^>7kFngzuPweSqC7N{0bJ+y3~Y~W|;fp@9;Jf+w+VtByAqTuC`MOqrFdNNrh06p3k@0ygW+rL|+6vV{mxh-b zdLj9rRRPr-`oT4jZbY%ePPgh&&tYi%(D?Sy!qdWY$9>1GoMW3~o8tmIiqkA<7U^Gh;E9;V+}NwotI*-# z;ozvis6bhNS$~hT9%+C2{`9d5Dvfa}-|z4y?M+&xK&60sbLwNsr$TwC{+=!HTvE%d znX8%WC-+ZA{#o8r-m^Gvaa>1tM|VC~KG*k-?;Wdbt85RLX2UUE?9Y&fwI{obkKoxY&1{=c8>8Q?b5*tEoPnHyalvuM?(%3T8rsZ` zOzFrkqBYjp}P5N>G0B8uU&&LA8ZV@XYzlsTfT4A)V{W z8}v*m2B_?->}#9aHnnF;&y)i21z5dS?~t@1Y3&2;12aQ2Lz+X#!S1V-=9NaAew%rx z4;>#m-eT5PjXm|Lj=~S1xJ|jlVkifS0lPvb7|%?uw0ken?RkJ!jOiRZs_QUw^e!`| ziX*>>d|}Lvy%l*YGBZ5W*kAC5y)-(jR)d})JyZG&_53Nv-VJRcZ6f+Er3qGFQ|J2) z%MFWish^!cJC%!0);?fQ*z-~RNAa^E)syPcnXX=7TeLI#=)P;VxiE?<<)!aM--}KR zPYgEsb|pmqwRHcg1$anleK!y=5tT zDf=krDCZH^5!YzrVzybATSur1U3|6L4<3^M%SvoS}h=f4aykovq7 zEBxg6$)S6CbKK@QS9Cuo$a3;+85_2o{>oi-6PjHW#r$}f~Fs)nYz8KJjX-ct$o1bZ7iZMQkM zIh8XlfF_-4^imz= zKE74E@R3!_^bR_uYWSP44y+F3gPHIt`#yAr9mXp|@u>RK(sr(67GAyc$@nBMX6mRF z-p(Z)B^)`NISeg_;!Nq7zJOscAC%i4bscrJa<+1A$L~Nr{Ac+3s;8)Tyj-wcu!p~g zf4y(LucEi2_x;rOQyY65du0@>UyAWIhc<^6;ESfb<0-x&{jB}0I;Uo{r_s!iR##9S z_#E_0+Fog7yZ+C=YLIOZt}88VH9*hQYIaBbW%-LrP)o}K^8)i6b^$!dc!1MsT*ei= zC9JRtpQs1yTh=VR&Z}18R)*d&e>i`54?B+(Ye}D`cTYNiL!dtQ1$6Eo<6Ym989ns@ zH!?%A0?#;UliqT@o$HDTpV^<;HB+qlSMALB8K1*# z`1+j*o(Z;w9)TVK=_DSa4Uo1)aZ~_W2U-WDW73%}?YR050eott131VIT%FU3FZDef z0@YV2OE{yLt`2||?63V8Pa3_i)0iDGgS@wXHT`PLG@it-OtXadAP#R5&D`h?{FC{= z(|A?AMi>2aZUsJvCvY%$(AY1aT1*PmNUxFp19N23zevj{ zUFfIm2CB*)qS}ty#@rlDUku$ASE`RHLl`@`LFDb>JHQ!9Rd>U3u{a9)fSb>hr3BN}H;h zl?7De%gU_nuJEq#B=`&z4=jMs;V)1;pTu4^)n2NzhhZ5^$HQ-Iv{?;zq?C0L7gz-7nqR4ROYK#;G2G-q%|AM!d{;Y51VU;m`Pc z==YHNlF$6l{B0otUZlNXi}UC-^^>Ft=oai2bcJ2vf7pknpT7h%JDL?QiSAOGHY_QO zv%H|QAV0})Lr0?gd5e9EUAjT_NeE|biqjR-so(B|7x-3**-%?M@0tJa2YEofsQ2;z ze#|Vs=I_h1he5gDP&7K~DZhZ_P?BEYPobZT+-DY3f>-f2kEBP^7iBEU(3z~iuim9! znJ?A3&>Stoe=x>1#;7w&bEf|8TGv`vW$4PzRmDDsm|5DytflVdGqE$Vypg<-m%*1t zJwq|(J8;N%2o+p4pZdA#HR$K69j+br;fwt(GpIW|trK|EYp$dns1{og)El0_eCG|k33Z2UpdT|LJR;l) z`h@y~^266q3KoGaYzy1r0my6X6tiBG2V&CuY6doHj+(#3Q{@9ZfR8zjIka0u8me=U z0xv-Imr1Tku42w&PB(qzKFoQQ$Gc-Se%gwurZMY!g56#H*e#efkTo!loz2m-XxdiL z=k~t;eZMqwpN2jStq-pc^G8P8((9kN+L^7b-{n#r2D8lY5iVKhj;O_(1QY zVjbx?RQuBmfMR3CME%qIr+>&!xOt&@Aqk~R1WE*|`K$Rmrgcoq?a%Gs3c~`!0;;!f z2yFaP0xG(-2Tcp)dApE?H`u@hOJ)jAjs)nGk7w*#O&{ESD9^!5ALpY;W7 z0sTFcv;T-6y*{VHaFQKm%5M|lY4mCIA(~G0n(K$_hrbDZ6S@$*5X7P)Af4b1n9a_p zPuX3W4$twFtBRk-2E3t%Fw1$LU7gCCy5j{^-Co^3*D=?jT0tdOC6`Pvq>s%FOVP?+ za$a(V5s6K}V?;kU(kg2yG_4=RK8OurpXe;SH7kTFgf0dy2G07=`Wr$4xSe)8t&hKt zUw5)8WD4mH8iB7}I=?j6RhFGOXW@eNf^|B6hkt3thwnm~9Nl}WMQw%-a1U?2Rq!yvC6L_;c0iB=H9OZy7@Vz~XpF(aZ7bzDhz)m*lBMJhg|KMMsnsE#2qaD!r znj_}O0Z{z28!w&g_?&3Qwm17Sq!l`bhpc)^s&hOC)eaPY?g!P^R9nmE%;zk`UfKTS z6gSbdD}M;ag0WWky}XYOK>eWu!2?0*(a-zO8?~yWw4}6k{&jxUfX0!t$A{y?+alW{ zs<)kBCRh2RmHDA^_&^;1-K(46AJAuY4NnF2B-cU{h=YHv{~DiF8$7fgGTW*5Z!I*2 z;-J}ytEQ`bi=_;ong;j?sX?sYunVjqv zu}AH=J)e!{q9$J|qf|z9{8#egrJ`A=p7x&hY>sRWKP0*mUA|W$@nIlGC`afk zc1y|g=OFXeMcE0snR=Pxs^QGu>)AdCPoa>#kUhLb9q0pOH~>lH~hg2P$U{L=5QN^8-}m3o92Cxrs5`CgLgykhAQE! z6@=H3*O3QkIw(=c)YtzC4d}1tU(F?~C9Het5BEk-tg|YsGpn)tJ>U#DbGdS%-019D z=UnI9?%3{7ZMHGH`dV6BS|7`ofw_*H_+j*AK6)T~p>+SY47LpR4D<|0JJAiKySx^- z78oBKAG{U16;fWIIVsH-xS93SoL^5o##%7@s57V=Gf`VXy~svT4JtxzP||RP*(1G& zW1u~REn#DxvML_-Q`uAYGpuF*%0+zkX%l8#Wwu?t_&&^%4h;`AW{^G(eH;oPJnPN| zvf`lrMCWkl@C;C2>m1tcQg{w2XB^L**&5Rt(<$>QGwG{E8t>z{U`rc6pMB<}yw0Mo zqK5YKg7bn?`Mv5=%KdegPQqJH@!h7_rkHAa(xw|TP{AF+j<7$lpU9w)v13v*Ej5ER zgW*s(RGa-BIx`02S#y(_`X|ihOQ#Tn+{{TO;>}Y6roa-o1*<{NR9mPDdiRHb?g7<} zW`p9E9qcCS2{DH8l;8Y`)=s)$X#?&??;2-SMmQrZeK@kZ(Cgr9zSWk7K2~}`Y114L zM?`sl2YO&@nK_qUT`~GQmUk?wWj};s)HMn_3L87vYoU)+RLF@x3?ubEf$aJ#YxVtr_RXk~C^@Ka_9zW0CcpAFK3YhEN5nr$&RB+?^vm=w(wX#+7xB9G918(GOgt*igH-nrhHUr zY5vkI4UP1%nt7XpH`aXiA*zX{Ue)yA^k82o47EWqg7Rb4XyhwmPB$BVCWY~&$SY4L z;_H(5PBdq(l`%A{a=a6uT1y7xXTSGD=Ffit<*GVcKL+J}yYQ^)1LyHKkd8n(Qg?hW zq(w!h5j&rLK3%<*o$N7|4((UAkt&v27+e?}3EA0={yC`5w=ulYIH&aUon@w9bD!!Z zDR93gq zSq8a5nkvOqlR!C)^k)IskGFZ_Xk)5b_oK&{FZdXR&{XEkZ!#~w41ZMBUbf(czY8BP zeHJ>qM>P2V_YBQf40limm zpf~eA6X6LcPgcyOIlp)?fnuxkmh+ankP}wZk2rxZ+b(#>EPNkO{CSaHxB3pMd**d=Vk$Tb6fT%CMlbtTQNASXGe!>kukByk17ffYONJ4 zq|dTCdz+MJY{9olIsg02*PRCWIUIze@E@pus`{_;C(S78-qB|@5Pkyv%<3&o0Nvqh z&1=n?Z$5~R#8@=c#o$HsMKlvkXJ3|b@3uIpx8*cl{65_Gh2sR zhwcaO8}pjdlF)MHMqC;EJM?#`8hyu6IJiy5E#PSEsIiYwd5!YWFU(&UGZ^~36x-@^ zm;hU$B)+M`;2u;&@1`@p0qDJ)0e>==KGZVQa*G}1ukgxM&gM*arte|D(NB?|*r1#* zV)U@MbF#4GS@C#bP_OhJl%_8;0Tjc$fpvI-HjFil>6co7V4SS8&H19M#mDAWyS{J0{Nat4p=z*u+zu|w4b4oF1 zQPB6P%l05h!!QJIf%?(=~ z-+=T34dFLtBb9s2#2ajkd5pO@bCGkIS(i3T{e+cx7^r@z{PS;6-S{?iL{I4qJHutr z7>azY(b^Ogm+P5QA4|F*)%*SceYdyi zTf9Vvtk_Wh+x_(W4zqL9l5R;a94&0zHA(nMFNLX)&Y*p@a5bjgdf?!(&ggA*iF9Gw z?_~s;U~~hhR-=5TGFmb9@*m&}!|P&Jp1GTy3c6SHbA0ajoK2F;QCI(nVs?VjN1AD$ zX}`}rdN<~}7UBuD+_c>Al&pup#ysX_RU;S;xAC4){`3cAf_Qj?9$ROqViwgsbSGzF zf1Dp4;76cb`+Uavj8pgxtihv4-c#Gytl)W6}2OHRB zT?EE42X)kR)bK;9!A>gmB*)-8dY0XnisvqbE*SBXJ!Dtt7AgxH;Rk%WSFqPgcawA+ zTv>*^ z@jY$I-kW}Snw(@uDq%-NKUYI22D$@velG^aStHRiD&Nz0C%=}RFca_onz5Rkz$atM zA@yAB!^iIryww+?aqG`~hR(@1Al<}j;G<`|)=49`*XO67I~)6kR5N>n|JKj=luC!% z7JvCR>=955um&GCJ@3h&I=|x4_dw^A&d}MQdQr}3PGe?l30_qSkmO5s+6 zOEJ**qBBZ53O&<07xew3?zi614)n~Q0^L2*>zxNZQ~HjV zLmfQbRIBO79KSy6e_%4T!D8(7QGHeYp)u$=bY}Kr4^vi0R=QU2I|e~b(6gqzLOJ{= z?1~y@9%kNS+GA23HW%E%(^<8`W}sSZU$DV;_M(*m_14aVYH2!0^-ib`t2mD%Ha$NI zsQ1yj>ibjuSv}&`cxfqy3PC=5KB9w)_RdffbPnkLkxt=0J1leuDqg>3zGduFR!(yr zO`~F?AEQ4;_o1~^&2@BWG}YM(#xtcph zI+i-dGj)+29?H4Kg6@%qXwj74rN-U>+7957JL3LZ*)tU>bXQ^j+t|+frlfEYX z0ljV2f$oLw(Fq+D>IPHbE~v+S6LjXUh^~mL@AnWE;uV*P*`Af484AUYI;Rx3e~!=d z2z=mFJJ5M_$9~7yt@Rgkfs{y$^Pvbc2#O=j)EKf@vsm@N)z5P-{apIP=)>r7q7v18 zrODOLb{VAQs1T`O>rx^YWEM%XybbRU$bYbUP0{XruumZpDq11WXv*$(er;8nN z_3ibIn!oDBbscpbR&c=>`xrw9euVji07JD2@C>a)Wmtzdjry%R6Dq?mc!|^i!aTNz zd=`1mzVOM=7p8#Dukn%b5s7bup!h|)5}gYY(#Wx#(p4C6y=7h4E-#6qqNohdN(IzKm?lGd-p^x)%S>7i=xpOp)R#(FKlx;y!)w z`k9;KSEgF-VEh2L;TNfU{wOGiSIu5$dJ5<{IS;!3q-9n;RQe{>kCo3%0{widxn(7T zN2+aEj}~hP9_{*^j#A&>gV)hGw1SG)X;XyTf(LC`a`1fGI&9pw(^pbvh<$DuO&m~=NkWmhj! z2=iq)jtARN>rkueWU9aDJ4*&1Tmtz~Jf*%p3Upsj1jQHq&Hc>*Q^3?5dZFt|i=`2< zmx+zR^H8~|YEkMn)&c!&`c5x`&h`3`Et<`kvwI8wXCJ7C??CvXey94MlbBCc9-IPI z(NBC1U&6OA8}y$G!W-Kg+i*ZyLpIpi+T7CI&{VZStFGrmnq_?!Sb~9ZXHs3I02G1;^ssfdcL2qIx{HV>kU}=InCO15tf{AoQgdQr2G9 zUffpPwg)+3N$;V~E}f||g=~(mm||0%op0l1t}{ya zfO_3}*8jiuqGw#^`bX^YP|l$HO?}&z><8A_q5S2Hbq1}19hB3lprQWl0CFYfM5V$3F%Of7EroF zK~YMS?hr%}0qGKyG(bY>5Tro?r9lZnLP2U~_PodE`7!T4{+MBy+53L(d#!7o*LhuQ z-Nu{Rjr`%Xk<&(QuRicbJ-^R(M%G=O3Hfh(kn++G?tJ1ubw1qgu~j$+jc(t%_hwtK z%~j{r@ytHmyJc?+dgZdndKsMMCJ#S7t_)*}wmLK9@VCXrosqvs@D!|v{Kwyp`E6B# z*~h$8-Pn4qc?M1 zKe~LUq&^-ycAoOqz4OI0T)uaa=`G_4eWTumvtx}Z))>5Fy5(wt|>>!4kJ9^w`+^vRIF&?+DAyfXU*#oLWWHyV8}7U+y;=eKRq zndYy?3&SrAG|Zj#e(uvdq2w>d(WhdTu=c2p=nFeKrV8G&n#i%8b^eK1eQ5O|9;5y) zpZnt8(IaQsHy#`J*kD{e_2E;4^KSKs%Omb?kA%6pXXoo}HM-U4IuqBKxO`{Gnm=^6 z^`)cm2k-xUFwd@Kt}gb)2Kj>6Wc`~x=$12M>Nufu*5%ea^}er9b_U`by;t(g_CJf& z=9`%QM7^H7#AV^@*3Q)Xb!UXDq4GB9&2gc}^Pq5lmg&3~KF3$$8?j3KA!cn)&C2ng z*ra|q^(&h6ouJV#2n~YQbhf|RpFD&opf-GId)I%}dryoj*Wmf-$9^&P?wukx#&q?4 zi)kCg)A6fbMMmPU$4^pwe(rd8FF|rjCZz0?>w=W zm?mDiJv1BkuEt$Ei+{Z^zy270ov%HR=f%CTbUg@1hPC+ics_Qm=lJSqyW`-@WO_lK z^jU9ZG-q{_1k5F ze|=QQ2gQf2Li{%G&WNRBx>z>cza83VZtoLM{k1Un=IpEi`SG&#%NkQ(iR;4H`TR${ z>0-f`!?+T^#InUgT}z&2EPStXY@MI^Z0|jEPo|9B>J5IeGp}z7dGo5BLAXHYCoC{w zfx)|c)FB^k50-WFV{I_zZHVR12c2+3JQsYuFU3*uRP5DRgv>nJYRbu`99)xo=h}9t z9>ClBRQ&+6bPlS01=jjG;yV+*qqH-@eONr?RC~oQ;+^<>=h2H*Uy74MUl;vCug_m? z>%!nIe1G`+!z+$iam=QjySc<^SGUQO%PUG=PAK63fU>h(ztWi-%p zd<6L)9js4%i?ENzvzskWYVQRP>4V`9dduj_gZJ&d(%HT*^{$nDIwN0RFn{QyIytPt z|Bg4uy*W-l+Dx74A+CAm^2Yt*wV1YZoaT;2!+S~>=)Hd%#{R+QvEDAwexzCu$NYQj zzX$P?r_KwVJm_Zi!b?Xk9r4-D?5x1Q^PK@6U zybgZCNxjGJg_wI}?skHnTc^zngEfb?Qm>gI&aZFjtWYzdNk>OUNA3#GoUgDztTepR zFwcY^uut_;y@NByT%G@{9(YW>rhoqM&x5@M*L1d~eFv-eJ|y$uhOz%us zzy77w>&sbm+@j;IYtPJ2V&7PN+~R|E`9Jkn|E)dVKb`Q?2^V%Q{^FhI%1f8iULE(w zP+!*OUE{v^Qu|5Y3Vy5jC`UgamZ?8(>(J{zVeEuLi07&q|0%53e+YTlvb|S%+c3^~XitRL`9Npoe!KTWo!vRV*0o>8a_uGH zz34fy?ipKZsK1EG!uaDsSPQm`e^lo=FdpfQ@W)0U8+8xV;H`UN>E-oMtPu;vXM!&( z&b!{P^sW=RpFW2N@?!5Ax@*W7eKNk?`zPKA`8e(J^Efr`jk$ZLo!$<43@_`w-jmCx z^7WT`KGlzY)mi`NcmDXVCj4sfzRxMfPci<0aR&^1m_N3sVV2IoIXv`rxkvH^e#>O- z*%iyLiobjW%}--uIOf`0@ z!G0QJj7RgCu$FIJ56yO+Lt!po)BA$n?u@aQ@>o6{<31eMPL?ZjL4W%p-F|v3(b>=L zpSVtg(d)knIn6e4YxuHXj?W-Bxi9nuF4cQG7U?`)d7gg4?5N2e@BPMf-b^t~?_GVY z8jpP|JM_M+A9p6Y&uv_}2fQJ52>0vekXxB+r-vT3KLiaUPT3>noRkPaS^l58`Vv zedz5tF?ibQ65YObtUNHNABnN6b{_6Og1@lr=(3~MDz%^aI(wBrux0ydrWiBD;60)0 zfUk%3Z_S{kE{?_G+EK-~OZC2%OT+UUuF2~&F?$>xw2bxUfmpOYxzERWp(b(on8ODisWGn~ zz}jp*Uw?T0;Vp-@9I}q7mu}rVAlw&P!Fs%193MBtqP_S0%{Z!aGj0p9Q!VAvFfL~c zwdtEfeZ;t5xbuYQx7#{rTa0`s>>0i{)N3XS*T&a6tDdE+hprx)I685Zcm4ICQGOiO zfBqPM)|fso_?({4dhy+m8!r&9i!WpiG;ECQBqc%xn?a|(c z!$RG`*K%W)8^d!us`rdrW4;~#>MWb};&X9v?@*9qx`v+wE%#D&qJx8mcz4{p?O6MN zSa1CKvmr;NOZn>jGkK1_k(*+T&Lg-ko{J~q!=T@v?j5E(gc`_tVXp#DLVmnm+}s&z zo5Vt4{ogCp7HEUt#)I)*$Y*ws>*CYxCs-xSk=5H5L?hFkuIcNY6SqOE7^lZy;|IOp z=iQLos}0h3`tyDr55;$*usde&-hJ@;@auzK{+Wkn9$IMPLKBzj{guq0|Fuc%#yBiC z2|4NgG57en2k(^IyYr~{`^%3m-OR{3m~5xA@D*Uq*Z_Q!Qktp`C`lH}QKD*X$ipa=xLUi+>n&fHA#B?`wHDR;@=| zoV+ehjuT?1SUtoNG0HVg+dE#2IU4rd_OPqj%sxE(z*FP%om+p-ts(DHo8Y;e(jFvn zgU3O8y0702^TmC-y)*yU2=4))F>k1!>B9JKxJPn|(~Ipq5ISDHFzGm9Vq8?u+K+mF z-w%7&J>99MtcS^2YjftSFCVm(-0SiBc6W{o^O5zbtrqw8j)w)~sQiQRqvHqf)tY{E z`qASj9N%m|YT##x4SLY;jFW;s)pI&qd?siMzMHx6NX%7D<>Rq%h%dj74?`aIbS&N( zaQ6nE==_+c_hau8#{9`)4nEoW;2XwPy$kD+dinKz&M|S0L9Zph>aOv3l{tLV(JbTb zy*)E{jsJ+{s?pGa_E26_f6zC37utj2I=+3%|qs^4$2q2geIR-|<0>C$+&j zI@9kvy-)d;-nGL=|3aM8d$C@e@M1eP?-;y8h0f*E(a67v(O9c<`wxoK+-1QEg z6VHUY*3Ge9OdY?iU$?T(z*juE{nFMb^)X|6&zLX%T+i-PL944PydLsj=nHf&_@noP zdB{7H$N2Z#2j7&pcUU;IXq5&r~kGXYgcp3-_01ch7ylQ-)6&-lg~V zoD~zpvwAzkNx!!a{;z)Yp9gPo*AQoaSKr!dVT|k?Q^hUSMd&?a{rsSt+(R1T_i<{d z=jitouV^v99ueEb&*Jisclp|_GpGI;#{QHYigkS~P|it1+3)bDSYhl6gPO<}$9!?1 zKldNmf8?g>nlr^3Lu(AQg1LTZ`8cmfE~@6YOn3lOhMv#cf|l`jmY=ZvV7<0h?LKk$ z!8>qil~;l$em>+fKZ$?FzvG(tN~m>B9G=+B`_3>QVus*J{jqm{zuP+`&22dVZFytx zKBpL+Vw4BkEAGW#!u|Pb91!BVbzC3zW^q!8=}*UI?F*F8^NcR(%rH5^l zJ3Y(!#?Cj0rw@*Ka8NT5*I(`&({+NTzNK@87ePMVx}CWwp7UPJxqV`#STWqUQ)8X_ zV=szpCtN#WyUxxN59qrG<7dM^8>W%$joCQpO}%>Jl-xo7e02SIZ?rFAlen{UlIiCo z>MiGYy6@)n+VREUWztJN_ln^@h)-99vE=vuKA*#VJ~oUezaAXcMX^-8mp?C8@7O_c zXuT&}biNs1`|y#&2RZbQI?uyBa;;AXUvJ(xsJ_Ezs&0PRVOf9eU7E(H`t9HAi=QXx z&KW{Z^VbjmI`Coi2*~T@ho|%ox=Huxx4qTeTB=U-z4k8{Q+g-vk8if8)6aY=tSkEI z#d8|{7xgs@SknznH?--*O((w9`*~-3Az19Ie9Lx0&c@vSl68q-#foT5z!@5iB;7l>o?fvkIKD%QT+f(LzN7!SOiJL3;w z932xE1nfu(%eLw)wMBc+C%wH$`>p7KgX$TcC8mj4W38YYw(kAdlXQa5B*)S- zK^NI`;u+AK7sPw9Pv;EV>$_;sdJD#D_0{uRcxD&2r|ZoQT3jX6edu$~>$LcJ{56az z^G`4DTA`*+hrb{8866P2gnKE5@RC-EeS%lZpAql%m|JK0v@5jdfAW#YyW>@Tv3*J6 zglEh1S1X)9wrx+``JJ1icC=flog3E&wyxaUK3_F|_vGKbGf_{kIJIWT3GInrd;Ho1 z-`KixV0+jW>%DV6_YX#XFf!Yi+1eR>pKmvYCSM?)Y)_9mggC!NTv%=AhM^m(^n7iI zZe2T!EB=>wB4&N6cQw$CVyOE5OCRxW`+me|+!sFyam!c}kN9rJncAQDrC)4~-r2ot zY!dGCY@IQsC+X#4jW=9@6z!1IvLxW@I{r|^f6yImLZ${!B@uu*-%@MyGv3Yw=8HUh;C?^RI;YtoFWSXX)Ym*nMdC6zVO59x{0wjmw8{zj;2i zxtM?Xgv$p$+a|rIZQ@&zN8oaZLKeTqZR&kMzyS4M^7LB*Yzcqf{prv@A3x(P;eY#`4LTYTrr19Z%i|5vp zcY;=-b$1Nw2T$7?Z5)rp2NOS-czc`^7loWb&0&*xILzr+V*1`k{+rIn5Zg|P_2Zom zMU^Wq7zXh7I`f?8Nt<3W;gW$4n}5Rm6Rgv(#@zYf`Udz{wDxrEX_=*c*&B7ni(2zj z!E<@EzNT5~5m49FQ^dRC_w$m}aCy9HTXIYqX63lQ^NJ_SV^=ehd)*VX%AY<$ytD>c zx2(PYiG?~-?Mv~^xG2=P=qBFdli>ypa<05i*LdF0d4qQzid8GdRPn#OOSO$7!#sI6 zX#Z!!dUbG!!}6hRhPN4LLOIJGy?;?1{`UG)&x_^a!@joZJVd$czvA&cKlgRl>LU*i zKRoEe7Dq3OU1PJjIMgn$tDpG$@#PTH%)gmK?R=T=d{+o#OYh!U6V9qLVU7uxbO!NJ zv46;)yYKNwVslCgY z_FEv9nXt^D=Td%pM##Zz%%Y8_t_S&$FjtL#dg`X2Rm7V`+C%SixGybNgK=eS9TgA8 zzA<`r+TCP zJ#)qHs(#Uf>&2^~2CQBnA2bK{9ol!0dmY#NZS|U=J9 z<>&RB^JQrXpUE0De~2$L#TP@2r9ahojBoWCG1QnGc>g0Ck9;Dgh&zYx9MrAP89Has zPwSbz-g~-lip7KW6hG)4<7t|3-TLLk6wjSs`k9HJnK=E>^wPDVV>)||t= zJQ-t_=f6fwJ7(H3dYF#v9dznYa?~HyQ}*73_u8ray$QpyKyB8i*T~$RI{uNr@%j4k<&OeedWr|;So1z zV0o6lpt)k&c)Y$3vHgRPf65Uq?;O5A5B+&a3=#MAy8bw5wtYg4k+;H+rW=h_p27a{ z=b(?&SAWtwchp1l`dL54ZMx7JDp#au#q=G6XT%dwOOT84BKYup7qRuB&J5B*7RECXYxui!g)#D8XR}#L=`?>w z47@9z4Do5I@cW;K_1;?Te#?`88N5L~ZECo32f-bc&zh+--sYX6g7i%%Cym04zoe+F$UfRB)Myj{T^SNjE zo~j~e4bG^N+wLFs{QM|9d;10s>3u=G#?OcKW9|4;$nn+EcAmI%Z<2j-(5t(1d88t= z*vBi7*Zd@&Z*QCXAzqs!d}uupUky2$byiK={nU3Yc3YQU3fC*%*|#oVysg@bn0j}6 zfHn))dv-iopD%A+{rJiWS9Y4;CY@He`Jk8J-1eB5d)99I+{{6_%?0&x?%f_=8rE9< z$1#5#b65Khji)2y`=OSk4xujbSar#t4*hiC_w%n8@4d5hxO`^SuwL-2c|h_@y6}Ra z3qOb(Lmp*}=|wvuZj3oQ$H23bXYCdD#INF_pdpPlpLO$iY~o`R4-21Ju0HM1w5{Hk z5B(+1?48_V`i%7zsPFP`uMOV!M!jp`u;IgoSLwXT*XqZU+C;+=V6@C_Uc#impMD1&-Y(5EC}1iU~YGRd8=|axi0-G zw=mzg>b>apvz}3}wY>GJIHj}CjU#<&p9(z=#@0G<_wd~Vuhc!aR*O+|%QfxYHcp=% zRJyBmhx)kK^vU>GSf}(dcP7zD3WUG3wH>sz1 zjn2m5E$vXPd+E`oNBKcN40`J3pb<{=4#&>2mb2TBuuGV$Z-!^DcC~X%5&xa|-y-+F z8eI=p6@F{tYQ0zTu%KUP0AuOnp=WJSudMcEE#l{2{ZXG0ePyiDm~X|C)k*kAcf|if z4fE^yx#x_WGxCDY+zIkhu+=B31;~l?W_li;zj})Q zzh^ZIe_xEcCFadN@*i-e%dEU#mcUj&2OV!vv*E?)334Q+8$5&$iY7y4qFXesH*K`zLPCad<5W`ms z_h+BceMVR9Ji=E)3^_YK(^>WUSby7j6*Pd_{gg3lSbMEsPlTAuuUj?5t(LJtUjz+$ zL+7^tG~B1Ff>zM`OULTZlgrSX>Vw`9^LX4IR|hZk%#kw(^*A-+DJD)aQC??_d#wKT z6=IdpxA%0&=XdBmj*GVsf+m`(GaJ-prtci8O=IU+Gyc||YI_jW;ht#!ww&tpSS0Su z%jSI^82oUb&lue<^bc8AdDUtXbA{MNV{aek&n2BBrN+WzvF6f)^z04Qk>w%#RgdKL zTjz|SBjS*_Ak;NI-~A@;H_#q(>Fw%gwL&^^sroz~iAm4HebI+D*VwrRz4BXij@8HGFP)J} ze_F?33e|LKyjHz#Yv?u9+@du1olUB<)s#>)*dzQ{xG*)T;l|mg- zf5P>_L(?}wv%K9t;&Vf;c77Za#+7HpH}e^%3H8}igFkJ4>W5VW;X~3=yp?~2`zJ=} znG#HCHGZ4*)SNY@X!1AeZWnj|7_WtR$LDtct{=L7$T;Wu(U@}7r9MdjG$j zNwHo$HT2YA-4iFR)$Xx8PR&9bRRs0i>8eeGFJ&!MV|5LeR|k}H(fWI~mvgty6jX12 zJJ#%cfMw#wYDptuuJDI=YP8JJqeqYW-fDiv)j2^&c~)|7x#Z(Z%|KuG!EOT7!dZ3<6&&1qQ8=AfMm~0;332US}lZ8buulRms zh*9T-9=n@6SL>IZ>ncuI`}BBN=QbO+*|-;axAP+PufH68N6+T;YF_*jeHqtu){1*@ zWvJE4DG!U!hS)S`{AuV_cG*%M0Z>LX?CuOe5m+5X}NBpKUH;@1I&T`%z z%|0f~-LKWB$vdsBVGuiSZO_oZ;*%3UIauTP1$3EOlCicdxR+5BPJu5$2;cPmXiO$QgBD%s3)fGPfriootjI_-vfrSs0&=P;hc z7~@NBbx-&^_r$vO;Qc4oug6c`AYw3 z!*8wE@E4tV$m^4n+RrsddxDn;@z&>9G2|{URG&AN@0@sNZ?4&R;G2qdmsJa-lb`FI zllmEUjaA~SG3jTXUw^|2o%gRk!8hWW@t64@4~D$vSD}V$P974k)k|!xH9vUP#?)G! zLotpfxzu0-}2h|Vy zqv}cggo|U2-qUeY=*>|(wTAl~{2_G^UZeWR*0FG;_y=nSZNvAno*y38Z`XEi_*JZO z{mTZQoA%`=@eO=#wJtTYn?t@wfAC7ZF-HUhi=+L7%_LC1ClGn+T`g>T*cur%2 zmQq)^JB%TD@qY0{%s4vZpf}Au^LdRaI>UPX>)w@Toi)F=4|>7ZG@Ti0y`sIp+?kK& zhWujT5N{8Qc}M3Rc=+O!ew1fpr}k1_8)CM);sPP(H-E(+^~|rgS9#&sC1}e7@@J@b6zlKd6*0{1|S<7aJD%~emd z>%KemmFsQOW4c^DDCV4X$aA3e)#OhObAnD(oADX+imC4$6h6cEN54PNdFpS*(?3F9 z#?QV#u8s#|hW5Wq8=J>_L0j-n)Mn@&_ulyme~IIRn4*1OY(K009Q60Y^_lWgr-+|+ z-o}+NdtUvY!gcUV79Lu75IZ)``8zZo2ysMyZJkQ$4Ll}u;e_BnSdV#Y?(y*<*ATZn z8@-sb2CsGLpuw!e>f(0!3{W_`2jGWrAdh^t~` z{K)tz>mj6>{}yx{zf)~Q?k84lAM!7~Z%YU7pNGpglP4LoA69R(rsKBY56lw$sa?Wc zaqT>p@uTBM#i*ae&qGWTt7tzujTYTLW{uz1JI(Xu{pnp0H^hsPkjK6fbk4=0$574w zkh}rk=XbF}`|OOTKZe@8-Z{_Lmz+xeZS9ybtj`MsAI;CXE3AL_g=ej1?Ei@|YH)YP zGQHQrT7SaO2}6qwFE)7Yhow7Dji1II@ztQE_}UZudZ-@mNpt*#&U<+xUJiR6-i$#W z)3fFY$RXq{JQj5(xd)xjOP70{*BLbK^R?9zjB)w&e4(~vZQ?i5{OSzvhdkS_>YC;s zZGKnin^W)6udr=i;B%qoc3RNp8;01f_lwq%TbaY})u+CGI1lE$xHcAVZ?5@1&*6 z88-*FEOT(3j2X2Z_vD$lB4~w&h962TZZ^#G5d-xz&?9<*E)05R?vPK?nRL2mt)44C zSUR85-=%FmceRm&!Z?=mf2#e^yw(dsEr@5UzGq#xM#{VHZ9l4Us`hE$JAFt?$@}gI zTAJT2k2pJK9hr6HmHIhpO}ffG@-tmK?^HavA!sW7GkRR*9Da^o6La3ZkrSymSg*&2 zdd`>Yt-UVPmX7T#h2O@s)!MfTHE}-QO5p*@5xx-Hlph~bZAAZ_Ik8qO6n;H7XsIvO z3+eg0$0PLteh}ZupBKOF(YhvRb~O$8usO%mq;tg87e`+l^aaqYllr=!7=2>YvoeOn zB{AuWFt;8IagH~tAICb!ix%VMH)5rjNN@9ituH^V7iOXOZGPiiVO;SecMJZ!c)Uk@ z-#*>>9>%?A@ow;=tbh6_XwQ#_dqi7i|HhCw#sAo-W7X z?vMLI&*ID>?_Mk9f9{WG;2!85pU{`JN&V}aVLsBbbgAcH94;}mL>(FDR1Ll?m+|dE z?O1N3*UCI_udG#mZ{6aBj|n~xVZ9=t-5=}s zbe%O!r&&wa4m~564_`j$|9-D?v9=2u_m@HQsolw+{ObA8qViSiwzGG5aSw&OVUsXF zeiu)My7^om;ktPsKMFNtGdN*@@RJ6K$kfxI>m?vVc8k<_KHG8e$wFY%h zV?ez1D^KHd@z45TX&~BAZ2NCLm3%PIobK5^z7upBonRk@ypON5)bLWdp63k4D{oLu zK`tl{F(;mBPn~>euAtZd5q#wzhx@|IHqWgmyex5&ANoqrWa`;`mBrgHwOtsyb5?Kt zaQMSIuO95Q&ReQbt}*;XXXpMn9b%@}f=2iK^fk!?zaOWDx|ADb}1!}qmkjke+mJl{J5t(AL*wMHD*8^b$r-NRu%$|H?A-~Y3{Pt*6)Py15HU*#J1 z0O&~&%U>OSb#TsyJ{S4b(Rm@f9&7dG`3ZFLK|$-z65Gbv;m_$)bKTml{x4VkLOn-v z3(w%$csbq;W58OzLWom~g=gZ~8pCQ<@;qA5-Y>ervl4fFe?1l&4d`<*&{*}k_gTv=>UPO5S&FxIfcW&yd3$6MD>iZfie(__LkcBu4!w^f-x6^Ta!y zE%c{YCFpbO@sz=TnKPcvJKZMCKmBIzmGzrGurI*h6L;j|;skF~{z_xYDg6vO(Pz`| zWo@OQ)h79Phs7i>O1$!X+#fNF&aqD38=kpZ3q9bon8$n(v6WVn%hFf8y{`uURBs<& zhgTs6%9D98G^syZGw;;c<4d?t@)!C{Z>Jj7k}-cQ7rbD(AAeOHYTLN1x+H&jv@dJK z;jv5beav^7T#OV$JU8p{{Au&=hqapyF`oYZ5qEWN&efrQC8mhI`_?C*)^Kv~s|W1WyE$;adY>Y&z*b;CS7Ip{Ud!S}wYn!sKm=P>WY z-*1O|CT4ji#v&aeAF!6X&M${Ctk=Y|HV%w8Uch`YZRp85x0;+>(S2AX<_$GPn%|!v z9@ZLt6z_*;>iOzhTQaQQ>T%W!203hlT0 zZOHS#6t||?Xm&MMy`Sc-GmgYteW-LBeK1qZ8uBq~IDbK{_2p1o5_5U!bc1nhEi`tV zm1AAHG33hX6R&xP+v0NxhzFtKS;4Cl|t z`OITuYVBAlRtxt`Zf=cVyjlcp&QqJav!<*M?i1~QQOL>U0=y)il6lT2p;N>W|5k0r z+WJhnvGsxmk$ceYw}-qy9Y_o?{;m!AvigzQwj9d%G%tML$%Y57^&Rv;@<1;PW5Jj) zhRr`-%EQQe5_Y%x`gg&k*xy+iha?STz<5>(qr|?G>xG4*49+%Jr&If92}-k%xb zJ-^CYXiV6HVBg10VP2@`((XPFpK!PEcf=s`)!50dsoU-ogI>QChE}M;w(g)W#a!k$ zUK!$<{?W67*6_V}+58K=Zoa2yWZqsE`nq@!;*o22uV_wVi#I6tde%Opo=c;?!y#e6xQynAjfoh7V!HwN#KE|o7Eb6*cyT~0tBs!=Z; zONIGB$C(?(mwLHpad+^;{A#YsNqtr^UB8I>ezssyYURQH6zhz8!CPq)m{ZfGVp$zACL_jQuqk!zV(bU%ND zMx+a9X0>5aO@(Yr%N7`kHxqXvl%-Y1+m- z7N>Z#?&XeQT9lodsy)Aj3>{P&!Tp&cTBvXYxf9RP2NGPZ4{86IbNvo`HTDdd;2+{iNcQc&di!ny(1=&gWN$qLqws`R-4`ICAgg zzT!76;kg(?^nw0Oafi3h&s2|;13VElptby*kSEaz*1q$C2kV;kZqN$93O?S3eq{tZ{UU z`t`*jPo}->12AU%KWjWqrB27wP)Aa`rJv0YJ(uQ)`)D5iF~l#|{Z9J^)fv=5j2-zs z-EZxayZXH~TRygJ*l$30T1&)7>bSFYmDaEKq%pk88|`ng08|`c?e@ABVcNy4v00?}**v zlh|x9i}Z#FFKcwJ_uyL^GwzXi zre5lvF+DGD@c)jkmxKGEJqsArOt4~Zn3BSzx=Q{j7 z_s(;5|7gv7)w4ohi&}%2p;yPe@mb{q#*7{WeNyVZd=R;@{#gEtJcj-eA9%&avUskC znjbGO_uO0q9eqXk|9-~)p{GOcFBdef_-4i$@5jC7eObrpfD3{ioo;x#VLHJ6ALER^ zF#dV8?w?pMe$lIHEwrJ3C*QMf8kduF7@cxpxF^;=&yuDxjyzKyrEyLJnkTMFz16yG zEitCVLovYkrf29Jc@tmSnkzQZ@mmBfC%?7s`1{rbaZmrM{trD>`a|ejv5{tQpFCUn z%rlYAH0TL6mc$Kx$(}83VNLRR^u-tl_NvkmatU*bzqD%Tt8^}kywR6fuD8&dXU!Df z_)6lDG5TnDhUU@SVO+_zjb;6)at&IUZZ@7S4fzhg%Ci*b+%xyYT;m7Q1iT%+rTnBH z1pkws5cenL8P*b?T_1p-Ni(b%VlU5&9=NaGQrbWawVu#=`dH`{eQt7j-l%!!zR~T* z6fI!w5^L1Hj4^8=9Vu2?3l9l?uzZ^Cq`|C1)*Js#KbQxu*V-yql`rr%jqB@!CZJ`^ zIdu!;p578`UAxa)L!pk4SzytR|USaY5Gh1l%#^Bukx`vHpcv2J~_|M9s#v=wLj~hb=!RWe9%O`=svkP zAIw~nH}MALFN+4P={buHFox+2KUd6keKe!z$0w23`Ty2P*TK`58}i<74l)1AP%nBS zXfFDY9`L<9yJJIN+QDI6lOOss`ij@&XW7r>?-*}lx-lqkq^IPK$A>xN`+82|1OJYf zpl?GjlUOBYsJ-!OjVaHGr)FK@`-#Kmj5%nmncKeKd_(gMd`0nFer6tsl{AcTkm0RZY$I+$6?HM6Pxh8t}kgx_?4~-||%6KxaX)1kAQ^nn*cMo*c zCGE?mugneCCMPpK7ww!{G2MDGYq|GiVa{2T#U|sQKIL0X8o$%FCyB-ro8%8PjkwF> z*e52f+3vkKtrmMr`Oc}q*Wms6y;$K(40BKEMB|h$ke}=ne(xIiyT*^bmg1q@MU3z~ zc~HhZeIvfR23`p*V(y8lo}cwsGOZ8jll6!%7{(ZHgodXt^zFND^+Poo>n5G5hrrro zo|xO#4ELP3DR-g!JU92wz89L9o;NSt4`a`IW1NcL))GEF-AQNhhs7hfXE5&MgLJ)h zQvE>A3iH8r)9Z3X_ktGRy7#9X8z;qCacI~(M&Hn<=B*xU`q%m)pE8bpCim&@VF37C z#)h0*4al>RyVJ;X1kL_leUNn3^TAtE5BG0rPchs&B|VeSfi* zh7t#88PCxibr0>!RSWewJsa1$V$d-(gf&K{=a-iu6$KY@=NI~d6Lg*-B7Et-qKFul(8j-dUof8du(lz1IZaYEB9Ai zqOWL2UWi;v%rnm9OvWzFxBCw#(yg4V)4W{IXA>7 z_dxC?53|<$J911~&9gZ%{5)}rA9;Vg7CZ*|w7qcdiSe;ghy$Jn-=207tNB9a7VRKE z^fR1krD$d;3m3Cox`Z zaNp%><~HqQOpAx0ldZqTi?d?ng2tJjFGl$cVx^eo-|-*lf4WvovTsPtoICU*h+AT$ zduo2s0(ubq9QT&*cT>nu_5Fz(Ft+>~xr#Ny9CI&>Z8}Pfw+Di*QD>4Tx+Zg9F2e`1 z4q8vGJ=Q*BN}TZjJYR9qS|W}f zQNBlm7*poBS_4nTpBeLFg*?l6q6g(h)>mVUo-p3k|J?tL!+kXl4 z@ioSlgUVfLDmjMSj1J>h`Mzob@C?N*_gSnG+i58IAnyg@6W`t06ukel!pj9@KL_g6~M9%Uj$lF~ZNZXNMoH=TwZb{#w^vhtD%-$i+Pixx8`3!=Sx9FLTVl z5ldm-nqy+RaUvemNa{p%ljq@n`g5P(df=I>iC9mpdGw3;AdlvYt`_oETHjj0r+B8E zm>#v>$T`;wdP<$^q_FGSe6RCEZ1?Ar@-5!E^+r8RZPeJd?pkNW zSogy`Fz>8Y;t>tN3sMK5b*+g$7aeZA(uUSu`KSA8-IGU~*EGbV_5aCp?BDae%}Y90 zU4W*t=F<)06EA=Mm{i-Ow_LyRDmRwL$hF*CK9uhv-pJ#41hm^E%|ko=IK=n0V$HC3 z+&z@%_eO65r+xIkk9tTc{7Hcc~BR)%|e7hl4Y3zdPZ(gZG~4ue>z=9qNbT zjXa6A;s;r`C&oAGvHNvA5qHOpv0><`=5rZ)KBt~v;U$m(EDF?JSfycE~=c4Ww^6M+&ym&39t#|T; z_O(6X{qDh^(+{U!#Dkz;d6dp%_*G|RZWvQXl4$(%@$vSTZWj-R*eeDayK*IC)iv=+ z^>$r6d~qG$w+(ulf8TrZ9*jjglVr76AXbj4!@b)f{@FY0b`M^KHC$eCRp+AW`+2z@ z*jGa@{f%)=To>=f8}Ufo8UD@-aaX(&laEe5=#h1u)-dzlyj`iY-PY`!mDxKZ?|}Ga z{4@Nze|$Bb?aY^Nhgy_*Z2a<1<%*txXQ3v(X}nwS%eZj8;5P)%S3KbJty6#e+?{{$_4q}c8hgfG@lxjlZ55vg_jJKfLvfEiH?>b^ ziWw8;kTu@5@juMT-_^UgP1xu4bmvIF5Ff_J+EaK)Tov|gx!?4-xk}sc{&);42m`LGA@SMBTFDyEF7W8wHx z91!zPn0N4uzuH+ee+==^x+f!!v92*D6vaxRL@DcU_9TWG29?ES)tmRp__xh*wDR0pG z!e{I3)?MTJn7Q|+zSS8GcgK41pU!(kpkZo;@hT>5nT zyPs(P#dqQhVNC57|BTfqtUfqXQ|zz?)6#MrpWD3qW_vSFh@Hc@cE8?e@AP{ihWWa= zy$6?udBI20d%zdaLneONpGZ4A(|Pl!#M1Ha&eXgmwhY&ERQxAC*Lz9F$DW-v|G(fZ z$ysRirRz!ebHs)JtDk$Z*gbBK8{%IvYiD$PK3?wZhDXC^SUEg*-ZOvGTI72#7yEY> zoNF=HJ|1Jjn7SxVjcGe0PXD)b9^ zb{?d8B}VQUONN+qXsi^Q#}@Iu5bIB?*V$ON7lfYRchC@OIr^J_-r4(K>1_G6V#ZiJ zd_CD-TF-OuuqHm*{sTG5YN2OJe5dE+Kk|OP6vuZS$?S1SXP13D_6pB)gE%vujP-lB z+{y8&(N7KPz+x~DfTob|oDgbFFUR)nJ=r;a5_7cAe!*BJ#HojRSEwGJuf&bRH@1s? z;bGcNF8@k?mg^abpSIW9HTl_R#5r+8Og>@q!8?$?(4H>Wb9or=->Fahf#3Yj=DuD{4V5~ps8zr^ctWh@#ejhr;-BP}f*wzth%Bky>ly>$D9XJJhi%Z;0b<1?{H zi0xw5m*P_~Q}}zv+1SysgMKmImwZajPBUFQa_z{Ry{q`J_*48jt_kO!`4V3z3{M!; zet3iCuv|`l!GD!s(=76O>x`dsQfDxU58{>k^@CVGHj8h?Ut-7Bz&nB${%CPeo@EUj z7uJ~P;^SjJ-bpS?4$fa&Vay7H`!jxI{NVgX@nX?9tg{l9jp>5dB-i4b@Uv+8X@gdo zBK|u5uY;fO3;^S5+qfWJjZHh}h0da*c_h3veF??|okTMkEA)$VK>iZ?S;dI^L!2_! zSBcNY`JD+aSJGEt4vP)eKY7=JF=O1``I+Y67BNS-Un_*`6))UJ@x$Mh=c;4KvF55z zM}DI(*u2`McVv7J2X@x|b1`l2_L@Gf>pV8k)qS)#@^ir>@Neb$@=iX?3)Q-O|L5CB z`}g=p&@a|udwH*kN5XTX9gL}8hxO0>Qs0!1e!8;?Y2Qsc>x~}v>@J8)OE5D z(VxK^866%S?C-y|zT?F@*M6(mI93m9%tG;M?}ND|Xqz9z8Zk#Wi)bYH2XdGt;urN& z&`R=!(M;2;V#D}y{3tFBTKU8YCl2;cou6hGqtq#UucJe++;sJ^8du_@b?>UUEcCMO z8{!v?yIDiL-6PaF)cMtm+$UbpL+xFbtIQj>cK+wlu|XJ9pO59je_tFDss9V-C((!h z3E#st^7{Fa@5L$YYyCp+rrI#hjdAf|h*`&mIBLv4-1*bibh)Y85$|@ddM)KEZ+8X& zy>vpztHi09Bb#TCQ!LsU=F0@#HBIN5=pR$3n=+4*=RHUJIB8FPt2c$1M7xOP0`%i? zNX#Af0or%7OUQxr_U#`$10ED#Pu${F@R9TZ8&}rC6@zAZtMk;akNaZmgt3El`Ssqb zsQm{?R+*LNN=CM%%6vQv1I#pXewGHKMbckB4Scz@{qfo~%A@ku>L^T=FZEj%Cdf7>vwo==}!fBqKqs2uQ{VZW~XtAA78 z%^#98xhDHt?K$4J^O5C)wBBQJT$q1vj=VX@Blty?-v;%Ir>eE-vwdpxsllF{sXEV$ z?_w?fcDOI*98E_%h^3c=m?3XaOVkg->rk%{uk<K~9h=*6TN=qui%*#7?T`-44bd>OIzs^AUD zN%gsYCFBwJw@=i*2^vkF%2Sr-+*E%w4JXgJzW22q8P3!(j@w_yhxtP+)%la=+!b+WoE|iwxJu*L?`3^5u9gZlRsELz=R|!mJWlz!cqC^& zDEw@>#ChTW(Gzk%HALF*@Zg<@Q}gC&(=P52ABMJ~n`Q}l#RuWuS%d8p;)lu?`NrFZ zo=JUV)(8H*XQ1}Ui+;8m>Ni6EC8mm3a>9M%oOn6r>wIkcg3Z74!kWN4w_dnUhjso8 z{VSK*J$@AC-FL#D@%WAiTETT574jN;i_}Nu@#fL5>$zMtc$~)7{{>%RsqpJz!SAEL zP7eF1{9C!`kK?hRyO)b2gHJ~{og2=3dMtP|yyAyK-N*g(cZ@Ipy=ABm+3&?Cv{tB% z-qRil8crT~M(;?FSIrRj_U^2UW%s^@VOx$1zssjA!z!?vG!D>-uAyAM*AwqhkizSq}TxpnK$` zw4=JVIVAq@^nVh5Ca>(D@nFyq7lggV@+&dKm~vh2??FLtd_MkHUz8fQ8u@PZsO&qs z?z7h$Nr1BEPfTPRV?#acwOSlU*h(m+lM?KaZ|3h<(Mr8xhda8oRSOjLFg`8 zNA9l2hcEHhYMfsVW9qChzkPqT89C{6oyBfE{Vkpdxr{%f>G??VMg3yd1U*02DDv@$cS0c57S|Qwz@?>#} z&+$t8&&`XuLT%c5tha%t6${Kkb5DM-M|?513~@`oW8eFhoxS;|aDPq<`i}n5n?|pz zm5N(Og<7lnvsiC^+cV^c_AM;ZUTogOdNDTS{SU-3K`ZKknm62kwM=#Uv%}uTXFK!6 znnS0*+j|rK5a-2HAs3|ASL}?j(}TwNLVYl5yVi|mJ0s!s;B(OE55&bWO}x`PLJkc& zK}-;%KCD;upiuL*_B~vW)v=++%AvLn`@`oBWA1Y?bEr{U1N8am>*Oub{kx~u z=Bd|zy^urD3&xFlsW>6N8{6jD_riQQ`J-NH9v6MDE_hA&bNB4cdJcXVo~bp^HPGq1 zbWYEwV*Xe+tby_i{_HYl2Xu|@8(qIr{TlA|ZSh3#E_s-ICi&I@aYXQ+ zK8#uGJ>g}Tdw-4@Ix}bWphanz&%_iV?i+Vs3;U+G4m$Z;;kno^+}7cyGDB& zQ`d*s#rqJ?cIaGpHFEX$32{efE3Va9*kU)Ga9i+Y&xzfF2YOKOr;P2_>Qkoi{d}IR zoM!8g1M1K5EZi^S?DF_t*hj?!64TYd#j~#kA8EPj(T9fnY<*AHEzGyIpp$N#OA^C^z-HUCx-P|pWP|3Y3Px$ zhViU!Z2zu2>#5F8w%(4<&o`Fm%~RVk?9sEgLJq3#ASaS@xL3F#u8W()87=Dv4MA^h z&>rvIzF3YPg+Lbj~cpKwcZ2IkLM_6ilsFA8@Wxo?d8k%PGi?}R z!F}QWs12BlYVykjpUXUyPx52*!kGW^J9=v6;P<~d?#*%kiWSDMF#d#4i`&2RjaK<+ zFZevwmT5gd|JeF{XKruh(!mGXD6A_R$D|xy40vkzsX?6BxP4#dtu@%XKyS#s?JLu_ zAZ9NX;=yxaY<)hC4s%nlpL~qQ&=0KFR{cKd)y{#JN9~=XwKk8t!<^KAB|giijBS1b zZ$>@NxZ<WjAC>r2)Pqff#fIBT$&#aEz- zJ!8*R+~AG!Yy7#j(Y#fE^IT5re5wCV`0pTRH-5eni^QTqOFb8S5WPfV>>=j3bSo}g<5j5^5 zK|dT9#*docJDuw+ujf^5AGEq&2l`B(+x+#hZWm(Ib)ipShHA|`^OZs#EnlGDc`=@) z_1pTx`&&5{2y?~S#}Cy%bbWmSe(n*yCxzE?%=lvlXW*~Zxtel6xy-pCR>=MA2@o^Y z_Gv1f(DN}q=u2ZsToMx}c^|aPhxxKUi!a41y{}b0+I=gn9h{YDO%;D=cJbzs_+K;> z2WS2mQ^w8o_0aLB^or_@yf^6f^TRw;Z}mO&b^ar)uYCVC+lM1(HrMDDwRgJj`S@{I z3)NCi4|>Kty&!+~)1eoM$3v6o1rkf|?tF3@^rhaL$Ah^gXe)`0{Nl0rQTv|fZ||BO zh_yPe?$+3|_thBBJWhQtV%F*5`P|UiO`fHilRB0$Wj$95c`WSDQ^)lyFIx=e9~-yw z7J8hHvqqnhzi>?Of{cH;nDKU7SU2s>xi8FXUZ`<(YpCh{C#LR91R6kn*S-L`n6;aS z?cRy4zYZE_DEN=o>x=5Y6Epb<^Z_4ztC%%b4c?3T!!N@%(R%y0M^v1Wk4`Z>#h`|y zo2g<<6jo`9NZryvq4g{1Er|gP{)w`v~Z1{m+-jfniUL^-bS_JX74E8N~Ow z>bn)AjI-zJ&Ac$a8ykk)N6h_MSf}S{fA5Xq1M92hJzg5`hMYma&X3~qI5CVV^N^ON zA$b10rA>mSnj`cw(Y*48-v|GC^7vbRI=%ky&_|(`v_$XQq7SX>*3eJ2$4wmn`pDM@ zYpz-;{dqtv7-A^D`uX+&__^B#@70`}Ja}>Pns0}^*1iR6>iZMlAJmiNI@UzK@Z!Pi z<1y&{nB;F5YwnZyZvLuwj}JP?-akLj_cxd1%yYK?lm;F%GG>s|&`|W?v++RO62{rH zow2l9SQFH9XkeUxhjn!x8Q5=`^8i})8@u5@pk(WsPs{J|_M%-60p?&*_JueJ|*}S3DRs$!FrfF>*gxn4|Ls1BrToR0hh84s7i)>Jr1zJn=X+S6tfMrS8Y*3SZ>Rb23FsuA zuysyu^XK4$emB&2=_~h3-9lWq2GVGJCC|Y6vr+IKdDHR=@j))SRmf$GrN=^EA>S9{ z-{>q-*R)l2J34Rgdd1b!R*Z+L-O^Ai#Mi>ylN+lq(Gb>YddBlt8}mKHO8%UEf#bvX z7Qg8dW9hsQ$Mo&;(P_|?gQhz)=$0LV7S)4hJ(k<>Q_S&2L;tK?&-nUy*rP5M%@Vw8 zN<|uBTV6i(Y&@tUZ3Fc*#3BJ3a`$>|{aHh*dO=+~%g?n+CZw&9_vDcXYqC zSZs993a!00@wPfqe^6C)tK63L2bz7odSCcz$AG#6gW}Q=SuzyDUuqVb?8tzLRwLa5+Vm)DCeCSyfH8W@hyyX>#m%SPNro(Ip&jN_-apuF{PeL6Y>+}JSzr2-ngfS`DpayGo6XY z4|=a2`h!2}d47HT>*E)ju-Kp%MSb__*e)OU!%#=E*Fe4c{P;rkY<2Fbg5Uc4SSMbn zH+|1oFzhoGGiV*-N#4lcpmW?;b3{yAAs$af$lZ9fV!Sa$52*jEL8=WJQ#@sV=Koy~ z<|p0h`e+Y2VUG|Ots`nma%H)dK1}QOZNc|=CH#K(m_MvZ&*p<$M`;!Pvi2V6&6z3a zDt*P1^rq)#Owq(VH|H!_i--C$7Wmlmb>ozetrqde;Fp_Q4~4qpJMm0dQ~nm#BjfMP z;3b)l=8G?Dj^FENGN$yP$m!_-YoPT{{m*q@7wUoPyT1+^dat0l_*m}MAwkEz6?_%F zu{VZ!c2V$VtwCb_zM(IRC-~E_cB+^0!|WA)p#E3ui@Mt*`Lp{3ji9EiXGh$heRTH0 z89dgbtAjq``>1{JpdSzQD&Ef4;s054_?+{F{NmN%rHdW33U8ek`i0Ik`Uz_d^-64)@yZ9W9pD_ zkJNY1nsC;jheB8p3rlsF}LJF|p3 zqx)rSScB-OiG6v#;+6lWr}bN5T+)W(scRLl%$aH9sCxL`Y`^s-K?94IJgOfDFZQMQ zOnbR_pw_=NIxCl-$~Q5VKOgos^R+Jw&q!Z_I7R>65&w#};+i-$77N$Jk8sV#DgTEy zIiviOF8OlM1)h)Vp-)Z-J-=eVacvwKL*mO9!&q1|XqTUdeb)R2I%}?Kd^DC=YCYjm z(Oa8_{}wZ?-|o5jp%;dCvQn6*G_G9Q-s)XrzIdlS33QG8##*C~NUY#T-Vn3(KE}Jl z91!=6^UXS+<+q_n=cmD&a!=&o|}4w=S5S|Kx#j9C4H$Tq91|}ZJl-h)N`ysyd%0?E#TsC|I~1K9oD0B zgV!xDqU+^_`g-RKwPWM@x%8#+WZcumx5wn8lMmKEo}2YgT-i3{NVK185Tkj&>&AH@ zw_7!z|H=^Ce;IV?_Mx7uPeq@C=k6MK8$6!RhTO@|<{!`}>NfH#&u6jrtLnQrJoG=& zW1bfsxkS+HbR|znUyZS0j93fRuf>UZ!uVP>{GO*Ej;RaK?X;)AFQ2A^d{1lQ^Yw1g zGb@IiP_1OEm@CAE{bQG~4(Y4EIp`VlKz{p+dVOdQaeT(kBL7<0pT$r3LF^o3;>Pxg zs6`m}a%pjvmqs&-m*Uh`@tNTD@MLF=tj|GSb#7iB?@G^^pD$L*H_i(2_tGHdd5a^l zOZZYF5wGcp>B6&>_xW!z_KJ`@SUPwMW~}QA?k7&tfdo>DCf)+n5^ZYn8C(UGWioHuqEgeeK{eO%ZzZ^lhEd`Ne*g*vKE# z+dofz0%QE0%OW16r&^Y_d{`^o5LT7u@02Z^cHFEvW*pEz#( zs4<9B`^2PJr4IOEp1*!jKAy8Q#85iNT2HHQ6V@~PAg*e+;o-4Li1T`(#jW+i|1)1t z4z(3}VZHcfSO;$n`LdiveQ}jAuIQo}!|&w?Z-yAZckpDN3_(tR1#ie2=$=|T-G6Hs z&-mGRKclOx&(@$7s+k@XJ|CTKeK5{F)Gb5ZNmNNqR~ScfWLiTErNQ*bSr^4RvC3LYgIfE<0QtNa zZk^sS#C5U$xOgzc-Lt}4@LKR)=(`=$a^{u3;zjDE61#Z_d~W@EG?zNk`oW{2pT!Gv z`1CNRd0%3X9MF8%SGaZIzt#ik)Mb=y)mmW z=v8}(G0AT~u-;6ulpkX*i&JuCeu6n@ZmBnaFyVuNe;`*@v!ti|Dv#Z)vzf(LW6&HB zJFWNXqQ;FJ@YVQawe?wI&fqnu^}2tqVc~eR-W>H1*I*7C+vkNkk~)Oiy7^};nUDIG zmX3|Wn6kd8dGjLV8MGnam`~~6&>zlHp=Hd==fbZv>h@s|fO#kvowZ&tbHY5N{diky zPW&O`pYEc^XapVd9kA#*RFe7ozsY$91o08J>u|hL-j@Rt~vR;=|)?wcA z+gu0T^Gx+IW9!;*|HN`V0`476v1?e*PSLJgg!y}RXS}>q z&UZ*`9kiZxPu?Y_(^dC`wU35ZqvXf)=ly#>n@79M@G=A4BxdUkqIK0OJ)3OJ<_=0uO1V7gt2a4o;7iQJCA zVSb>CR=~k!&0DgwJD~8n5@%Yhx`2zfmpC{4=K1 z`}8yLtBpZtVbKeon|m%Mn0M-J{9WreYK=KDt_}2d<{vNPu9&Yg+G!X07M z$pu1=YfDH@Ife^s$2eV(NK6?1zh(bxulHiD^{wxF-{%VSmGZhG#_8_3R~gcsA{uP2Y?;K|fCnveR!Fa~W)!H;zv8OrGak*bfAh?NJ)J$XxH>3fGVEJD?{Q_ueHpK0*t6_4e^FE+32PW`@{<};2saC1MO|pI_AMI;>NRbV$HJct!x8OQp$j+J}h&Au9^h*vx(uC1+R z@%)sU{J4x`GW7P`ms2bIjjhNpPCVfK*=MMK^cd8WbXGH|wLEj8PG=|2=cyy)AlQ<47X7tMH)O~|e2U-T9B-22vkdXGcZNNkXDr^#;5$8Z zF^}ivzCnijx3GsdJUhK2gWqx0Oa@HBm;2UojvV4y9eo7vdSx)A#`+@zuGBl8vv-XB zJi{uE)url3H9X(&)7JTaTUKVMm)B(IoBGan_ySj~&%cv#e8y23+h>pqKU*Kp)p+`` z_VV_8dTM%9muBc2*-zu!)fws-eWDE+dX1-LcoszuR)1BG<>d^urso6nA7M(K*8jl) zp0Cq~5x~8R_}7Ey z8@^J{h&O#tJv_C7Ua0%sc+B5ryRYiGMlr-+dc|L6z_tFKntffy^BMMgV$*X3o*Q-l zTWwDcc*3J{H2v)1(zsH-`hRURT=J4*;6dd-$s$aJwtVk`+SCb z6G;(cU&`kfXY8M$M`*uvPlkJH?(MOeeb&Pn{tn83G55OcE%e)9Pt59_0>1pG52LTI zR)7=Z)eQN=zEHl?m&Nnmz4RCL7Th24j0(Orhdquu2xsXZ>&b|D`+0v$DHoE1UGTU1 zSzc0iid%hm^@coZ=rgE8j>yo{V=w=Ph8UD@@YGy}dcm{CaHWQjv!BcVrGVGf*w5r| zBh<6)QW#EM~ zGw_1vE7YOtSNq5vGV}@DSA=(ZKat^nKYYn~YAU%v)S)+JJd%Oar!$5baw8Do z1@UJOsIJl@VxLPg+)r4WVGVnC`<(kT)LZfi+u8TPmi>Y~yEw(|e1|__)IP-i1lIY; z-bNl&Q+Zd{s3H6Yb85WS>+ECyY~Lqmt;-P8trg(bb1t3(f^W6Ubs6@220y~P`=jzX zEV|Zw`uR9f%;Qab1ylG5#?^heLEeV3tux?{obWFvJdj}z=l+_#ultMLKWw>p%W;4D z(D@#k{IV=Vt`>KXXLx>q-_$PZMwqn+wy*PSuF-nbUKLNt#b0IME1!SMP+!QIc*=7h z?`POA@qv4&xJSK<5AcUH-BEQy+T{$xALfDns3i-}OH9i_}u; zbljj;fN}ZS-@55(%PaOa>QFgQ?XTB>r`;RzJP__ykJ`hyKLYz?RL4(b=x>uv9kwFF z9?;(c!V4V9ck&DV^gILK8S=1tKz+qF&i8zd;aM@*;zKnkUeyPY^YOdfyLs-}TH8L} zy>@#(&xY#x!@53=8eP4I6XX@xu#blmxfj2)2N~RNmroqCpK%VZkgH(~9__*8b~1@) z+zGq(f;d2}qSr?zeq$s1KhG43(_=IAMd%=h!U6unTjB}s@g!To7tX>_uV$!8)#^+HdK#z%w7h5iVsnd78ZL zVd#s%_-+|6;NC4xVgp#l1?qL*J=-iNdJe!dR`RhrLjTH8U#MTz>gtcrGu+F8`SUW^ zO8$dwdB*)x^|3lepB?_)19tyVO)Ph@kLQW?gHFic6ZM|j#a;n-+Sj|^M{d}YV_=KT z)MRWXe(mA?TLS73HJ-cLQF7S>ajxAEp48ET)6|85-bzxfXrvzb`J z?_`7<_h`f=JmFJ+4`gr3etK8>?R+kdm!_w#=ZOnp%KwL@_O(w?AM3@!lN=-F-0xN| z+s~-KJflMwIa)oW57T@jmh!ml_<7GK)8BqAgIwQbuo29upK-Z582{=U%UPcJ!RvbM za0S2Yfv4nQ{UMm*OSaQ@a9lpLFLkeN=ZsHtj~LGJp*Xi!5pS^VIU=>Dzx(7zIQP5- z-t-Ke*i#d`UM-{65YMd_9!#HB-kr;UE4>3TXdjQ~mt=@d^2p;jm+$F#cZOOUF4)V! zk@j7Bh~$AO`z@TtPI{nfcRZzT=yL=3U0h$D;eOCB8F;`wHoYOa56*nIZ)YQ1ZqGuXnY^}$4I0}dAAL#`e^iXqdwrI2QzgGkk;tdDLFZQMOS8V0E z1`CQe7?YDdE40<(t;T^7`o(n(N@8EpccRx@s2F~46P(#Wi>fx6%*hXz2 z{yf_t|KUnCg=ek!SU*tSvnMjg*BPS>we9&Ca)>>t+$YcBDZN>}1+u`oA^@k$-D)sB zN4d)1#>@Bc1sk_yh^rei)bMI^`vsf{>oBFJf`9(Ry|~j}&^;2I4jXz_d}d!G?p9~u za`M3zU-Bc4fOqvVY}v=lSK?Sai*NZ4FUrH}^N%ys=Xx>z78b^Fytth5fqw66!sDMmVz%)Rz~7yJWz)-if+EP02U- z8)vEe@RuG7KEM??O`i&%%K?V#`CUHLkNY`8&8Ak++pwpSkJX-X4bC+1ygdyLkuT+` zw=?YD=-W`|8f$AK*;5s^~`PoX0+eeA5rSpS7?IUm% zj^abHAb0bdIzjHir)n8?R%gK}pB$3`>-M1PDEA-Sv%NjT^8tJ+Kg-K{vV4DU1`N|1 z#_c=Bp8b?#uuVRGv%hc;3qQb>=ic3~!Mk^4sHNmTJruI&_sApoTfM?QWH97De4*EN za)#$f^*(>k-)gyk088q#e=^*Yoy)M769e$epD^PYY0nbFz8;O-t)9mZp0UuM6?>jt zQX`3_aur`0@||Z?$*6v?zw%s`n9$pkXST~wuj{evU%|P3inY~GpJb?C^cR1~fH7Rb zj%>w7df0649w(ksx9AVRtQf=z@}k@}%+P0nZ@p1i@@xQ3gZ1eQvgudqGwTl&=k$hk ze*7u_F0MYZ`dF;-BmThe@(-W0p_)ORrSGK$LN`RrdQn}x7f4$yH59;-J4g7 zibH(r`3b({LwHcDz=*tyr`W>_=B*1~FeP7GUtdJ6tWLJ?f-`lHyrAY&i}IiQ9`dog zqR+vH_Rsvrw`{~d?*FdL(DT=4=0Ch;zwEPqn*1vF<0<)1URE#YBfJ0iREGOo_OI|I z|JYaPQFzwG8q*nY%uf0l>L|}q81l5*KrJu#;DQG;)T_9G@73)3U+y2^9(Kc1>IMCC z`y2HYtl=#+9&X30u()fUqlG2@($n#*4veWM>CGqdq5Uu%xo>N4)%(3_K61;2?5oGb z)@nWb2iS!fdjp(g@2)mi+o%idf8-;39)9IRT(1YI#>ZXij0ZBj4$uD7-)mY^eQQKT9UH@ID#xAlu+}&nMtkwq)C*Gd!Ct*RZ!91Dlak-grGjO$F2NEXTl= z=bWz1xGlpz8h6+)%8%s5c{qk#?sx0|>YwQs@0$BI`c|!naTOo(C$3T-!ht$Sp9I(F zH?j?T$g}EUSjGu&WW11}zG~l74dZWvoYFQP|wJJ>OFR4E4-;b68msuUh?22m}d{`$T^-Zk$c6b_#+!^ z@tt0~{e+r>|Md;=PVd932h_iK-M^tM2a82@1pctUmJ`$n@&KEvJJ`$K&Av%5MgDU? z#=7=^`v3Mhk7f8JHQ9QzC0Mh-nZ`)-?p4|5+$&q~Y~a^OV9RT=7a zva0j++x6Dmv&5x%)*b?a*ffZ)SK-()|q_04H*wJma&TA3xf=t4Z~Q#08%^ z2e$BwT%cB0f8ZVU3QUnfu7M|cP;WtR2#1ORf1?0XatXp+E1Swuc_P3r>~%AVGpk^@oxhR77xZU?3lk-(s!{hRNwFwpSl0! zv;8|=&du=7?&egl+w0<<$qccG8{W^5bA}meDf@UFrv4LmdLF-I*vs1k(p&GvT54kU zP&bK3*pgq||MR>D4pY-~&!uj_3-Ta4nIER~U)=*_7kfT?E_(%B-nxMe_0#q9=mAq| zAu(;}Il8Yd@4L4r);wckAIM&627DzCiATTbo8oc33iGOk)R1x@el+wx@D#kjk~-5K zL+-}q?!D}6FY&uN0cVmM-@3QOUwTb2L~r<- z%@F4>YcFg~SjL_9TIxQZ@q&GX-|ZdLqj<%$6lzH|mDsn})BDluSe9YmJe%P@7Te${ zxlsJ!Co=N=z8U^b#xoj*XX9aBJ%At7$grfIai7p0M@-tws9W_02g##+rI+U(mwPYj zZoH^wQVX~zswUMN(%;5YWW-(gOl-JEz=wEGj<+XKPx6^q7guayeRVJSCNkhop22JK z06R}-@W0%^cj`#-#BTPUd<9EvrKe`B$k2lnpZ=!Hd14RO$;r5LZAR~1tNU;PJLqBQ zA9&Y`RSV-Ya^rixZJ)tCN;zTAJafqh>J#}*{i080z?a_fHW}itf4jnOd?t6QS?nYA z*yU&blk?$=oa$YFw`*;@Bp%fc?(5oDDIS>{D7;-Ob2^MTr98RWthNQ-sK)x(+74hKuzOa z{*jBtr`(L6$V*Ojv)}AV@F$$Kma&f^gL@=uJaVWf#GHH3o{Ll$d-lnmNUXq;`-*&M z|4UXf+3&y>o9ThrkLm~MJK!z(26wO*`Sq97Ft8y9;&OF@o{&8Z?!pJSj2!UfeuW;O zzdaxed#kV2{P4L`hCUcBw1ymFJwBCNtgjwWBiJ80uI7Y8JuvZXE_I8&ul(#eD{ITc z@U1q6A$XDtJ-Y)-dZzpgbN;Tvy+Jj*JTD&Y>F|%(@7~yc$G%HHMoq(a@}*usn~Dv( z*aPBFv831Ic@x9_uDyNx1_OWLP5VB38+#!+M}NYzk@5}Bl6%AwZ1uj9&-xDXooCeT z`SFz4#AWWc(LrBNpIJ_&qn;!C@Rd9Q%W4Mq-u*ioo->h)aT)u;A3WK2*~j87T&(|y z|M*QFv<6J!M>!eKt4r0Sd@1+gRDC3My4ppLAI9x9t!bYQOYW8Om+$HqJr|s%rdOll zDttm0Jq4Vnx9eTMLVVNL{)Bw)f9Pe%(R`-<>pT>(prW?-LpD1S{gq z^AxayALKr=>9N_{;C2J%3!la@18e=JHO!ovMEw`4>;{ojM1$VBKEUyJsL^QZE%|@w9qDZ8Dpo?jwubtiLV})#$hZ zXH`a+q8sjmQ?;bp7^c(*a-o{o{@vc)-oa=4Wcvp^N=8^$)5?FIXVFXWoD`eDwP)kx z8f&Zd|4uMVu0`Uu;FSl10U*P$bV`R`*}RBpFk!Y!MAX&22(?`nH(to@QV5Dm2d)%;t#y2 zHv?BNg)iBRJmga|%h7m3Uebr4lYA&Y<7M?4p5R9q$Eo;0F6Kjd2G^@4P;Nwo|yaaCcWF21uL!7p-! zK98QZy%o;Z$Af#=QhVxu_$)Tn5@Jsd6f-y-M(z8=x16Fru&1#;Ke3IzHM@yPT;&}1 zli648V-CCk8?eO}u!4*5y8e$nx;(A6v7g2t>N$LA|A4>cEwP4|JvS+Lz!7}-%$NF7 zaxz)u9D7oGFT?#eJ!5gfmSPg`iJ$re=E>6<3&!Lhxlr8kH9ogL!{=gGFO+}P9qMCs z3EbjJT*Nl^FSs37v6(&tt`etgs|MmTe1muRL41ircEVrsEg$+f6yRT-ieue(VpBaq za@4+i=Wjh=Y}*WT%g<~CPxgW^ukLjJ#CJ8a`@7^+-}uc?1M1(%KjPUCi}n=cSUW%9 zr~lT0{D)KZYwT(GSKP7}F5pM=@`0GrbJ5dRce0fll>hJoK2yuf+59E`#0R}R56BMk zta?eT;YNFS_H+MFZ0ae9RnORxSq;VKt{0PhILHt)a=m>7f5I+&3^VYNy}G@$+E{)T z6MSfIhSy?BY6J7zv7qZ*lxoD z+Z(V2cXG5IllakRzz^~aJE#@dMf|PLAe(v+kJ+2K*Cq$ji9UQvM*A5tWqx@CZ~nFE zukrH%e{TA7lm4js9aoA&=h=^`oB7{!NVrDrVh^B~V(+Vtw?Bs!+%2BG%PBaiy)9T{ zTfIscgE_Ua=XKy+y+B5FrP@!7+0&4Tt@LE%BKw<}3^-I<$e(Ik@$KJG#0_}d-d!yt z_Ur@o)ZofJF#OJ+WRWw~F66Km?;aDb;8&dS6MK;ffAS&O>?Pbk6r<`2*Q zzy+JxJL@~bkbONr!M{2|uC!051G{-=JJ-dQ z1{rY#j)W=vjjud|O*XlQjc|w9gL|=OkHf}%(H;?bgwlC#3GO($*fCG7fUi>Ck=#8-nJn8A-0GQ@C*m7LYK@OJx*qUwB z{9?}D#!GI;GvW(Z(G^Ggz4tNMPrZPva2Y$=>yTB>WJ~AEe{@!V%YF7T_Acxs-;h(j z(IZkb+e5&ZbL4V)K-}tEkVkCeR9IFwc#gsz%pQmR3_PaS@89ba`|4sj%#c&?6gkMG z@1w?2x4@izwA?5E+Sixc*b8Us>FEuyhtF^#*2JQkT+FeBV|Y@n%0BXu{Nfz8!@J!} zh(qV`rFyh`X#E561>^RlYIL^YSA(y`X!|$t4paI=Y9;*@eGYX3yU2xlQ$DMo$jMLY z3VfwbU^9Bk!}d$!ulsa9fno8d7Ctirp4dr0M2#*U+(#mdy$x*QEjTkb{lq36^^N3O zIa}PZfjv8{vy=QNKHy3ms?*>eHr2>*tk;06`411YUVtM!#ZI_EZN=yE;4njv2>$Vv zHTh4jv4_D+_V0QL>P@l8UT`PBhzWU=zVwDu-_^HzWcbs&Jp;^pZb9wGSMVn9!IwRm z&+KQP);=o!6E}M0@;=-TGQ^%-qW&ZY9I*-hCL6rr2Qle){6JQ=Q(N(kwd7y9wUwVE?orWjv7x;%=;L4uVJ1p62iA(+>6B%%anooXKFQ^~Ycka)~ zEjY@Bg7$mi#4)~3$>2g*dCis z&V_wEsAmBi_Nj6lIp7?Q$fvflU)7IfH#I!YAh+wtiTA`Id#E+#XF1T&`|NYG>IIyx zCbYg7&{M#_`T_LA>vAiM8*ozW>DR(D?8`rR%U;kq?xo1#wU?M_F2mbu(biUCj4jky z?8PSPC-LVTwY~UYLp*`=)bHX~tmA04jC+xuOLPCo{YgE4eOkZaD)Q@};uk!L_vB-~ zP`}`Fbrk+Ka2J26J=sz1huhSkayg&t?~50E6PU&2YD=+>tN0GqaJ@Yk8_6fG!9nb! z*9A{(4)2b$7tX?0a3R)UTFqcD%6Ize@(!Nu^L%uf%)qPa2foCEuwgHS8}t|WOCHh- zGStdy8~ZVNP#vSctTx7>C@=->nXsS{s?Trn4Bmt!vfpLb800xQg8Ax+u4sft~SL__`zP$ z{Tw|&J#IBBOv>+gPmSc>slAK7qvxQ1&)+bLJuz2)ut%kb7;+y;j)f06;fp@^?R`4K zo=^W17r>bNTX5!F^2y8iQ>?%#PB!dM)Oj$3v&9@c=|RE|8yYwke(-Jijt}H3?_?F@ zVo2_R6S%gIpUqJJ@g+a%eRy|Vf0E2>EFZ9ux(06T5nx4qV-HG3c?VbNAIm%T5@Ho! zl9B)U3|7>i?h{$t{Th24&w9;e=zo&Ko`GN0Rs5t@Q3vt893wy3@6rv2+Bb zn|y6=4Abl;e~Mq&6le5Oui-&)1H*E&-Ul4158#Llau7a(CAD+?x<31RImy1mZ)#r;zmr%t6UH}tWu#Pjf?&eOl(6WAB;=5Q@p$=M!^-nIB~PgjiyKi*-$8Zb*{ z@gle5I(c0#hiO~{Z{)=jbWl6USFkB(lZ71g#kKXXeh3Z`r)mf}oj>Jgv5ZH_LN?#k zf_MXl*`1&475HP6;j{e$o0)@6%I)e&dRR*yG~j{_$%bFeL2mdIQ}Psl;2e3EUNFJF zbWls1r!_T9ig$RlE;(K68eGNpFjGF4Kgr7nWLKMsAALCkM(M1cu%?>AT52vB(*MBe zaN)gv=U;X=hxn3f@q@a--og6r`G^_z5EJGkzkVLP@-4jZ2M(1R;aYzKF75TnM<%}E zCow`7cz`1{5&2#3Ts{#4WEbCZs(MI2ns0C;J@{Dcsu{$FSi?_r@m+poJGDvgW6^^z zVbpx^svb3;b>&L6kh$%@$%be7s(Va2`K*3`E&9NjoFab2msk^v_Ez$k9Dyrg*?lek zH?RFY+~N!I3|C^qy*qsY{3q|qW4I4K_!j5syOEtg%r8fWbdOfNxz8XL&Br!y>b|RU%r8daOP!=XFdrP-FToT(kx$)6 zq+_`fmi5Zj$>8}Xp_U|)H)dvCsgA2pU5 zM(o1_Kg&;SpypAR=vVMVeT@fwwjO_oNxpz9`kIISa;yPIxPxuX52tWaJE#$HwmL^X zSMyjy4mUpzr-M32ogwz%UM#RVY{3oNIo|q$PV|qyAa2x>@))eZxw!L=zi<$)U^_fSW_WU} z-{H@i;v6pF1qZ4X)f-|2zUX0XSjGi-TOWxJU`b4fZ~IAphY9w?Q*=@16;EuBcj1g4 zYF5}6!)yTG=I2wKg< z;v~6Go#;1w;#zSmCiEWUKEA-`^kOTxk`L%$UYyF#_73EcJM1C&ng7M1oalEx;Tw8+ z;SqjN2hc&E$bcidv}T51bvo?29*4MZgmdLnI>0gPvI9(rCAmVa-#!I@;BpwlDSQUg zxC-{^!``sQPu9YV>RrFlg^%P8Iv8YvWAVes@|>DYz2hC0@k2BQ{}saYrZEG@m+%4(!jLuES4oBJSi;cDD|0q%#ho8(yZT^X(g4!%ujb z4a5l_zych=RBgszup|cS54l6`lRw0YeT@804_rwXT&=EzEtpcf(+`HtBaXzlnjCi6 zUYy`ralr@VRrk=9KYVvSxqXL0=dmx|#ci;_7jOg{^b#BLEcw`89jAX`FEh+g>+(Ap z%!{MQX|MyXAv?~3O>_G0xIr$tvs}kVcoYZmKg{t%dr4&BOUDeh!5j8q*0VmJ!}XVPi*i%e9=h_&BpAaZjjf=%NH<(-^t*2HY2aN;^W3IyL!Qn-_;&s zK?6>W~ zeb$e(4z7he>$``*rgZZzufZA2(}|6pE3Vmq?aAb`W6tr;Klrr!CbcJ-+0GD;=3xVK z%NulnFZoXmB4^-y@dG1tQ9qdrUisW-KEZ=*$e#FL48bc7VpA{I!xi89&3bS^c6{g@ zI=hD4^@lZJnO|@`8{jOtOZ_VrVFs3PlG+WXa0R{at~uF;EyaKslT+0u=2PDo)>V_r z=XAGsk#pD-cF1ggbHW~Z*{`& z`AME-A9`3*42fNPNn8$}Fa>LHE^ctW{L6M?52omZpA2i#i7#-Gb77Y+!~~gPh#t7X zZ+xz9!cTHAJDML?s(o-b?28GuH>dhQF1L^66C6kfHt1dsZ;O$s41Eed61#9jPMA^K zi#PV7zwct3zWh%&cv8=?IefDlU7Qbp>}_3`!)szeO)7uWjh)Qnd@tCyHoxO}^QoOm#;A!=gex|3F1{tRc=p_k-k1CbS8^V`#I~5lJ?0TteV)kP#eP5zQumO(eFHH-cD4|E ze86Tf#V>4aurb}p&#(B3-{D7nfLG-S^#>lo_3ULW`l-?7dDypx_z;)!9X!yJ{N&jMC#dmY6ANiL){4K}vi8-vnx1$Vmixt1a z8Cl_njxZz64Or!4v5nuYPZwBLn_Aa-e1Z=QJOTr19Q!}_ksT9*t<7*L->Re3m;7z- zN*DfNGq!~b`uGgf{J>6Pg0IMro7ms{Fh&O$YmW`q#IRvry3osavCOV8sxHSxWEO+C zS3KBf_{}=(gd6K$m|<&u1vrLZHsV{y$bol#X9M;TTXL$Lp%%pJc+ftI&EQ$h3x{G| zj(}k}#V2AwOp8l4F*jX&XBW2ePG+3zU2o7jVgm+n3BQR!oPw+P5Le4ZVg+|w6FA*&05tDFk4z?I%kXL+*M+2tW(fqK%C*oJV#NXuRllJWGU)8uU z4A1OoEqRCE*}`YJi2SfEpOKdw*1(l~BA4=(Va2ifVwH|)vI^peZvA9jOPa(J;J z9FdLP$xb#lp@Vo=_uzH9$a(4p_7g8;gD0`4?!hPS$-t3(<=rv7NG|aQKX^m_R^O`8 z#5oQWjo5@g`NlD_i)#Z<(ho1oOR!HD9Lwi?gD=SMxIAJ_dcXtuV8A@UqrFZd;swb@NfmglT5 zW@~rrS>N^Sf&2J_?fFA&kjFaggcrpq+1Uc#$;LUp$CEa<~p&#T6XNE#(vTmuLCd_2LVMkcU2OD^|?M z_TokUaGshG?#u!22He>rv!OZ632*YA`~<^%C06*GK5WS^{6S}SAcJ}6=>30h|KHQ$ ze>RdYwb|528a4k9Tw%?k6VS>zf5WanGjFZuE_;4-R&6C2Xa_tt!L<8yX} zRk-&~W_EO3Jm7jd!3E#q3$>Jdfm3lT|KeSo0^80N_pl*mtZzLpzu|Ff`^{&v(F?9& z4$skvjW9cWh23Hozg)hFLr% z7G2M7)`Sh%!zp64HC^#fe%F~t9m~#igHid)x^PDyyupTS>N5$4d0o3+G?Yw)5vr}pzM&iRS0t&cBYN36jVfAKH-S)^1*D?S(6>hp)*m=UH1UzzqAaAD?;g6&qNGzuBr>F2>n&RLvNqOGy95V_G4EvlE-?kWeN)dqg28+*btzq1EkB@>>; zqwEBubmtSl+v~fIuIdu=vIV=a8@uz{o5wMH;vDwJ@$502&vkgz zi!J*Z4qZ!jcBvlpgDEy8t9k&>n%A{_p(da!o#^Izd{u7Z7uceg<1ob5;en)H@BB#e8Yy~S{{HA zzl(8xu%7GSjGf8H?>Ly;>|{@FpUH=?4VRUf4lpj({0ahwLy# zR`F3zV9(l=KVY<+!Vj)@4cq(f-TKzzALo+A=VHn4?CG7atnGaIvn3n2242V{zQhY$ z-~jSk%Zom))zhHB7LZd2tPF^O?Se{Kl>@Tz!0Yu3Q2SjT!T^H~Dc4jEXby z0ekc}uQl1M|LqJZuo{DTcd~%ekV76W;1h<*_!l# z5xyY{f0)DC?9Yde!vZ_8pLytFZRfHjU&18W)CPFKwRqUIYAEMaMr-q-^XT9Gj`PJn zIpke7w!S&x%s$3%{K3!kvA)lA;eT_Q-@Ih<8-1GR*vmCy4W6v+H*>YOCg$+4->pXu z`mhsQnvWg%S z^NIfcFav(fXD#u`CUj|@wYF=_%ihlSyM3p=9{zW(Sn+}}{)cz?atvO{#~<`@K75#) z{PYknxCNi#8!;s&tZ5!P;Rx56i>=Jd2lR5D8US_-`tT_}aIQ6~lh1x9E8XbNx2}gt z?{b*A>1#bQd7008j>D>LLiKbSMO>tNEk&f`ZMAwJ0qLu8lx z$i(hycQz&$e6fS;*^$g-7-hJx=UnsaiHi$!@iT5Ax0lawh10BUZrFiGamkL>hH1LF zUi>sqvWb{7A8z3rb|jPYyy)t)K^}RQKfTL?bn#stm+Q%6K6);4}Rct>zR-2;!AwsIb4Br#VPsu1OE7v4$dzg$Sco_2{v@SdDI8$ z1;3Ncb?i=ec}`D8ZB4$(4E+^$@kqqvSe1{ri5 zalxPTfip7Ek1pyT&mXvtWL;c9R%^jD8O+-kUBw|=JD^Yz9$j$HMW@jK9C;e8?i`VdXR;W%|(7PS%dCAJ0{M=IU6{a&gQq4_!0NyWe3-=sq4)n z#>nqDpVx=%Xf8J4Q}&h%*uZ)8@te4yyZPvEZnk%gbIqaN@GK0>JCB_3qmO}STu*mg zK~8dsAKx7}pPUEF;@NSw_hKux4V~H7{9ca1p*UqjYtxY*$A^n^$EaquX+lu!8!kFlfc*^*9dJ(&TcVh9e{mk)6c zAG^jnj(aYIOk`s#y3>R0U`h>!>*OBmvj?6v9~taf#5Z5DFL}wqCiXG*1vm~jS(`s$ z%sen-9zLbNYg}(W+<+J5F6Wwq?&hGAwfKYHUOv~y_G$EEd%m#WvnF4Og>sZ*u6NAZ z=710Lv6Xmf{uSFWMFu*+HUEkg_Axh{iCs1nyLgaY*_$40=$Py6ndnCszq5t4VUApE zXl-lYHqTx8+jljcdu;Y>Y|8HZz>elMADz@dxXN*BlGpmKWnb5l-DfzHpRMgXJ=uT` z%vYJvwwb1s%kqID|XD$suCVIrMZbU--_()}hyAhTrLBE|?%I z*_=y%=ZhWZkcFIhhhM}zeSL->*daH(Thlex@mw08vpf6p3;Vz-JhHt3U*yLR&gp(c zu5#S^23_dQ=6DsqmJj&SZ`SddPsnU-`jCnLU`CufW?yGc`m>{$;VZVrhpvY==lczx z3^M8y>#&6TSI3s*=O6K*o`)s=6bEuXez7JU_`+vH+`<<-ki!~$=sY|@KQS-HaGkZqh4thS zwX$3U(`rN5go9xQnO!f=$YXxzk;id1bv_^Qm%72aWN;0c;Lcjkheg<-Cz;9VxbwZt z?K*gMtv;Fa&1o(DeKzGcFSccOHL2go4?lFm6^@z53;%iNM=v(OUwlPR^TTQR5x1Jh zJ#BTF8p_&a;Um7$|A%vUAO}5bd+QqHhgUCtbv^EZD|TR0HYB^_u9xdQGv$2PU>`jS zJ|P2H=%z+vFEXcFa03c?u5m(j`XX-e%gN^pF#JBi|MK|zWS`55*bHxK{7h}fnF**jp~I<8Uk!#(-nhMtZ)mtA2?&SMXlGQ5ffK4nKa4qo`0jL!3K>3B|&KK{)R*Ta^445!X# zW5?i`?chXwkwtEEuaOO$O9yr(6B+1AUVQ4f!LE%bbFiaz#jgD*8?dz)6XRmed9GnU zKJ*(5k)!#KPIP52y1}n&*bxrJ8cq@uFi94Au`&6?d3l4buCpGFv6lHAqYt^nDBd9p zuJD;J*$oGp&vnih>(+IRco*l5bvC5GwaLQIu*05ew(_X?)MIj#_#!hs#G`ok{Ek`^ zHt>MG9Im7zn~6u;TW8lhwbDU^EkFJC-J*n zLT5S7oG=ILavlGx!}vv>HMdwaPhWmlv%?x0;G=^N%-MTN@|C}*^tUwRpoiz>+yi4P z_Vzbs{=FSO^n4BZ{GGMGN%Fhv-H(PnFTQ~}zxgaS=mKNb_0Ct`*_0h!$1mh{K3t1& zdiq^l@F^eC&sx6ow|QWl4(tXW^o1e*bG`N0u9$%rF=8Ef^xZQ%WF|Y@!h-7u8Eox5 z^7#xe#V^i<3o`OMpPP>?zSE0c?UC__ydXa6GjYQ%^tPro_}n_hKQ6)Hbn)uD{3G7k zPwe3x>%%np=;$2r3ny$Mz8vp&YtgrR1mD?E4X568zO~IqZ@Tge+xd+?)}tewvY(hB zCvN3q$Jm6<)^&Y-KoxnPl>F#%Y;#@kb4f{6|^rr(X;14;89bHErHjv*Px4!xP z#&@_x{xtBh^Zafe+-z=ou>qan!m-+&E#Q_t*#XuK+)4&|kQqMB!N$(>avly4KeeaW z5$EEM?y%rDc4s%SXD#c(s^8g_Zw>L{H#yb%d`4!!nU8Pl8^6N{nb?Ir93yM-0&{c_ z1N_6z=2jE3tvIs=U(wSsKBvEH+1K23Wmm`8kNx3W4Fm(~QvDD$0K3DTI*ecVqS&(6 zG>3J_}Nf;5yReLoBi1Vjw>gB>F?-~IHu3a24tYWwY=9Je9>4j zH(RhZ->?b&=)ynzA#TZ|R;M#L%^?=-!}W*kdB}t}UC;MEvn!vmI~$q93r?-gw)C{N zcesNM>w1S>=hDT?J0F>g-s~wS%Q?=+t#D`_T<4tD#f>*MH>cm|AvWqG^Rgd($OilL z;aBtY8gsF+b&5su@ey6=?cLnuVvA7*{rQ*g`D2h+^qrn?AYO|HwTNqBgKd1b249hb zk6;ZZ?6LS*Ov-2C(_jy}S)YyBmB0BDR``i7-t9Bkqq4E1oJD`W!VU5}o!Jm4Imdtr z^P9_nb@H$c8@iTF#IxFsjmhm?vav6F<4io^Ga2pY>}lz2KCw;~YvO9>!Lm8Th&Y3H zwict}!uplpoMO50L}oVR19cO7;ZJ_BhL<(XR~h)wy5?jr_NE^l$Ve~qnFpu(45Mts z7v|kU@N~tCw?OfQ?}q7U7bgoNEnnDPOB=*?>HbS=XSq^I?lFFfCuf5j*J- z>ASK4>^RqTZ0;JrTZe7bF63k%eCcT`=Q~@9U+ee`Gx(xDgMIek3v)V$K7QvTzIQGC z;e>wH<3lgU`9j>f)|xnter!*l<{vS^cH%+(z(!)6JTM2_)-VTun45flvnE?RhkbB_ zb;xXe{33?v?izAB*V?$xnq;AW;~cJPOKV!sFehL3-*JHvF^3PzkB;#XE-|-xt;25c z#CH7VIv8gwdBN|_#Y^}>9`n7j7dz(1pX}jx!)Gscqcgi%Q@-bK=kNpl47ytr*OJLO z-o*(_@VoD9=QlDnPg;j9%tL4Av5~>A)Zsg({-`NGm9ItHF zA_tqOp`A-czVLzvdX6&a#qO?Q6ZITC;C6CYi@c6Irp9sKPOS%nbn>zeOtHCn=|NZe zi6=Vxon6@)=GmR>_)Pp7@Me8_yS_E9^T{F>%moX$5awXmxsH>A4EzGOcoe_jATiHg zes?_|HD2M_Z{&48?jyHjY(qxpurq(K33=I*uHuUQ$><)Q>m6eYIyj_Fvxw3iA8^kF0ZqAR?R ziB5dN_pY@b{u4)ZBZv9uOOL+Tp1kztTXV3f7aiIIgCFb3V|?ke^Td$r>27T=_M!{^ zfIoV&4_T}OV`4X`WCKlWl{_TVS;(}T_7)vy-d@d-|#KmN8pZnkgg zxqMFt=h2^k$xTKwz&6|2i;$u7)eh|KGZ}p5H$F5kS?T2^M)|+7;yf|R=X4Mke8s2q zWnbsOCtYBUOpcM!aW#~fWP78StUuY6580JJe1>Cku)n#;=sZ5+S8)x`Yylhi()I9W zeH`KcCejlzj~qDeSAVGGtOGmdWGB9{KEJaS j|2R$tdRm9h@+B;gQIFF9W1>IFp60R!J=us3<;4F04%e;8 diff --git a/arm9/source/launch_engine.c b/arm9/source/launch_engine.c index 476438f..ebbe143 100644 --- a/arm9/source/launch_engine.c +++ b/arm9/source/launch_engine.c @@ -22,10 +22,26 @@ #include "load_bin.h" #include "launch_engine.h" -#define LCDC_BANK_C (u16*)0x06840000 +#define LCDC_BANK_D (u16*)0x06860000 + +#define DSIMODE_OFFSET 4 +#define LANGUAGE_OFFSET 8 +#define SDACCESS_OFFSET 12 +#define SCFGUNLOCK_OFFSET 16 +#define TWLMODE_OFFSET 20 +#define TWLCLOCK_OFFSET 24 +#define BOOSTVRAM_OFFSET 28 +#define SOUNDFREQ_OFFSET 32 +#define EXTENDRAM_OFFSET 36 + +typedef signed int addr_t; +typedef unsigned char data_t; + +static void writeAddr (data_t *mem, addr_t offset, addr_t value) { + ((addr_t*)mem)[offset/sizeof(addr_t)] = value; +} -void vramcpy (void* dst, const void* src, int len) -{ +void vramcpy (void* dst, const void* src, int len) { u16* dst16 = (u16*)dst; u16* src16 = (u16*)src; @@ -34,43 +50,54 @@ void vramcpy (void* dst, const void* src, int len) } } -// Basic engine with no cheat related code. -// void runLaunchEngine (bool TWLCLOCK, bool EnableSD) -void runLaunchEngine(bool TWLCLOCK) -{ +void runLaunchEngine (bool EnableSD, int language, bool scfgUnlock, bool TWLMODE, bool TWLCLK, bool TWLVRAM, bool soundFreq, bool extendRam) { + // nocashMessage("runLaunchEngine"); irqDisable(IRQ_ALL); - // Direct CPU access to VRAM bank C - VRAM_C_CR = VRAM_ENABLE | VRAM_C_LCD; + // Direct CPU access to VRAM bank D + VRAM_D_CR = VRAM_ENABLE | VRAM_D_LCD; // Clear VRAM - memset (LCDC_BANK_C, 0x00, 128 * 1024); + memset (LCDC_BANK_D, 0x00, 128 * 1024); // Load the loader/patcher into the correct address - vramcpy (LCDC_BANK_C, load_bin, load_bin_size); + vramcpy (LCDC_BANK_D, load_bin, load_bin_size); + + // Set the parameters for the loader + writeAddr ((data_t*) LCDC_BANK_D, DSIMODE_OFFSET, isDSiMode()); + writeAddr ((data_t*) LCDC_BANK_D, LANGUAGE_OFFSET, language); + writeAddr ((data_t*) LCDC_BANK_D, SDACCESS_OFFSET, EnableSD); + writeAddr ((data_t*) LCDC_BANK_D, SCFGUNLOCK_OFFSET, scfgUnlock); + writeAddr ((data_t*) LCDC_BANK_D, TWLMODE_OFFSET, TWLMODE); + writeAddr ((data_t*) LCDC_BANK_D, TWLCLOCK_OFFSET, TWLCLK); + writeAddr ((data_t*) LCDC_BANK_D, BOOSTVRAM_OFFSET, TWLVRAM); + writeAddr ((data_t*) LCDC_BANK_D, SOUNDFREQ_OFFSET, soundFreq); + writeAddr ((data_t*) LCDC_BANK_D, EXTENDRAM_OFFSET, extendRam); + + // nocashMessage("irqDisable(IRQ_ALL);"); + irqDisable(IRQ_ALL); // Give the VRAM to the ARM7 - VRAM_C_CR = VRAM_ENABLE | VRAM_C_ARM7_0x06000000; + // nocashMessage("Give the VRAM to the ARM7"); + VRAM_D_CR = VRAM_ENABLE | VRAM_D_ARM7_0x06020000; // Reset into a passme loop + nocashMessage("Reset into a passme loop"); REG_EXMEMCNT |= ARM7_OWNS_ROM | ARM7_OWNS_CARD; + + *(vu32*)0x02FFFFFC = 0; - *((vu32*)REG_MBK1)=0x8D898581; - *((vu32*)REG_MBK2)=0x91898581; - *((vu32*)REG_MBK3)=0x91999591; - *((vu32*)REG_MBK4)=0x91898581; - *((vu32*)REG_MBK5)=0x91999591; - - REG_MBK6=0x00003000; - REG_MBK7=0x00003000; - REG_MBK8=0x00003000; - - if( TWLCLOCK ) { REG_SCFG_EXT=0x03002000; } else { REG_SCFG_EXT=0x03000000; } + // Return to passme loop + *(vu32*)0x02FFFE04 = (u32)0xE59FF018; // ldr pc, 0x02FFFE24 + *(vu32*)0x02FFFE24 = (u32)0x02FFFE04; // Set ARM9 Loop address --> resetARM9(0x02FFFE04); + + // Reset ARM7 + // nocashMessage("resetARM7"); + resetARM7(0x06020000); - *((vu32*)0x027FFFFC) = 0; - *((vu32*)0x027FFE04) = (u32)0xE59FF018; - *((vu32*)0x027FFE24) = (u32)0x027FFE04; - swiSoftReset(); + // swi soft reset + // nocashMessage("swiSoftReset"); + swiSoftReset(); } diff --git a/arm9/source/launch_engine.h b/arm9/source/launch_engine.h index f317bc9..a65a56c 100644 --- a/arm9/source/launch_engine.h +++ b/arm9/source/launch_engine.h @@ -25,7 +25,7 @@ extern "C" { #endif -void runLaunchEngine(bool TWLCLOCK); +void runLaunchEngine (bool EnableSD, int language, bool scfgUnlock, bool TWLMODE, bool TWLCLK, bool TWLVRAM, bool soundFreq, bool extendRam); #ifdef __cplusplus } diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index ceed301..2d62101 100755 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -27,81 +27,110 @@ #include "inifile.h" #include "bootsplash.h" -#include "nds_card.h" #include "launch_engine.h" #include "crc.h" #include "version.h" +sNDSHeader ndsHeader; + +off_t getFileSize(const char *fileName) +{ + FILE* fp = fopen(fileName, "rb"); + off_t fsize = 0; + if (fp) { + fseek(fp, 0, SEEK_END); + fsize = ftell(fp); // Get source file's size + fseek(fp, 0, SEEK_SET); + } + fclose(fp); + + return fsize; +} + +bool consoleOn = false; + int main() { defaultExceptionHandler(); - bool TWLCLOCK = false; + // bool consoleInited = false; + bool scfgUnlock = false; + bool TWLMODE = false; + bool TWLEXTRAM = false; + bool TWLCLK = false; // false == NTR, true == TWL + bool TWLVRAM = false; + bool soundFreq = false; + bool EnableSD = false; + bool slot1Init = false; + + int language = -1; u32 ndsHeader[0x80]; - char gameid[4]; BootSplashInit(); if (REG_SCFG_MC == 0x11) { do { CartridgePrompt(); } while (REG_SCFG_MC == 0x11); - disableSlot1(); + fifoSendValue32(FIFO_USER_02, 1); for (int i = 0; i < 25; i++) { swiWaitForVBlank(); } - enableSlot1(); } if (fatInitDefault()) { CIniFile ntrlauncher_config( "sd:/nds/NTR_Launcher.ini" ); - if(ntrlauncher_config.GetInt("NTRLAUNCHER","RESETSLOT1",0) == 0) { /* */ } else { - disableSlot1(); + TWLCLK = ntrlauncher_config.GetInt("NTRLAUNCHER","TWLCLOCK",0); + TWLVRAM = ntrlauncher_config.GetInt("NTRLAUNCHER","TWLVRAM",0); + TWLEXTRAM = ntrlauncher_config.GetInt("NTRLAUNCHER","TWLEXTRAM",0); + TWLMODE = ntrlauncher_config.GetInt("NTRLAUNCHER","TWLMODE",0); + soundFreq = ntrlauncher_config.GetInt("NTRLAUNCHER","SOUNDFREQ",0); + scfgUnlock = ntrlauncher_config.GetInt("NTRLAUNCHER","SCFGUNLOCK",0); + language = ntrlauncher_config.GetInt("NTRLAUNCHER", "LANGUAGE", -1); + slot1Init = ntrlauncher_config.GetInt("NTRLAUNCHER","RESETSLOT1",0); + + if(slot1Init) { + fifoSendValue32(FIFO_USER_04, 1); + // disableSlot1(); for (int i = 0; i < 25; i++) { swiWaitForVBlank(); } - enableSlot1(); + // enableSlot1(); } - - if(ntrlauncher_config.GetInt("NTRLAUNCHER","TWLCLOCK",0) == 0) { - fifoSendValue32(FIFO_USER_01, 1); - REG_SCFG_CLK = 0x80; - swiWaitForVBlank(); - } else { REG_SCFG_CLK = 0x85; TWLCLOCK = true; } - } else { - disableSlot1(); - for (int i = 0; i < 25; i++) { swiWaitForVBlank(); } - enableSlot1(); + fifoSendValue32(FIFO_USER_04, 1); } // If card is inserted but slot is powered off, turn slot-1 back on. This can happen with certain flashcarts that do not show up // in DSi's System Menu. The console will always boot with the slot powered off for these type of cards. // This is not an issue on 3DS however. TWL_FIRM doesn't care and will still power slot-1 as long as some kind of valid cart is // inserted. - if(REG_SCFG_MC == 0x10) { - disableSlot1(); - for (int i = 0; i < 25; i++) { swiWaitForVBlank(); } - enableSlot1(); + if(REG_SCFG_MC == 0x10) { fifoSendValue32(FIFO_USER_02, 1); } + + if( TWLCLK == false ) { + REG_SCFG_CLK = 0x80; + swiWaitForVBlank(); } + fifoSendValue32(FIFO_USER_01, 1); + fifoWaitValue32(FIFO_USER_03); + for (int i = 0; i < 30; i++) { swiWaitForVBlank(); } sysSetCardOwner (BUS_OWNER_ARM9); - getHeader (ndsHeader); + cardReadHeader((uint8*)&ndsHeader); for (int i = 0; i < 30; i++) { swiWaitForVBlank(); } - memcpy (gameid, ((const char*)ndsHeader) + 12, 4); - - for (int i = 0; i < 15; i++) { swiWaitForVBlank(); } + // memcpy (gameid, ((const char*)ndsHeader) + 12, 4); + // for (int i = 0; i < 15; i++) { swiWaitForVBlank(); } while(1) { // If SCFG_MC is returning as zero/null, this means SCFG_EXT registers are locked on arm9 or user attempted to run this while in NTR mode. - if(REG_SCFG_MC == 0x00) { + if((REG_SCFG_MC == 0x00) | (REG_SCFG_MC == 0x11) | (REG_SCFG_MC == 0x10)) { ErrorScreen(); for (int i = 0; i < 300; i++) { swiWaitForVBlank(); } break; } else { - runLaunchEngine(TWLCLOCK); + runLaunchEngine (EnableSD, language, scfgUnlock, TWLMODE, TWLCLK, TWLVRAM, soundFreq, TWLEXTRAM); } } return 0;